16 Commits

Author SHA1 Message Date
roman a22a179eff Added nested blocks support (inner_blocks). ACF Only. 2025-05-12 17:28:39 -06:00
roman 95e0cae3ed Merge with latest. 2025-05-11 17:29:57 -06:00
roman 92e4f1ea2d version upgrade 2025-03-29 20:27:56 -06:00
roman 0062bb4506 1.0.33 2025-03-29 20:21:32 -06:00
roman 5dd326be0f Pass $args parameter to content hook. 2025-03-29 20:20:51 -06:00
roman 00efc1677d 1.0.33 2024-12-08 18:44:15 -07:00
roman 38c49a64ad Make sure all images are updated on Global Blocks. 2024-12-08 18:43:39 -07:00
roman 044f721d34 Updated logic of mobile/tablet sizes & scrollbars. 2024-06-23 20:24:57 -06:00
roman 74f4b11ad6 Updated logic of mobile/tablet sizes & scrollbars. 2024-06-23 20:21:44 -06:00
roman 1b2cf2697f Updated logic of mobile/tablet sizes & scrollbars. 2024-06-23 20:18:16 -06:00
roman bcad45d1e8 Temporary disabled ngrok (share live URL option) 2024-06-23 01:26:14 -06:00
roman 3daa725309 Updated logic of Elementor's build. Support Elementor_Widget Trait. 2024-05-24 15:34:12 -06:00
roman 438619c4d9 Added axeweb-block classNames to blocks in Elementor 2024-05-21 12:50:58 -06:00
roman 1b2795fa40 Merge pull request 'Update path to static files of ACF block.' (#13) from wordpress-build into master
Reviewed-on: AXE-WEB/block-dev-tool#13
2024-05-21 09:44:13 +00:00
roman e25f1aa4f1 Merge pull request '1.0.32' (#12) from wordpress-build into master
Reviewed-on: AXE-WEB/block-dev-tool#12
2024-05-21 09:05:32 +00:00
roman d6b0ff866b Merge pull request 'Updated the bundle of WordPress block.' (#11) from wordpress-build into master
Reviewed-on: AXE-WEB/block-dev-tool#11
2024-05-21 09:02:22 +00:00
12 changed files with 32 additions and 31 deletions
+1 -1
View File
@@ -248,7 +248,7 @@ export async function isFileEmpty(filePath, ignoreComments = false) {
export function replaceNames(content, images, uploadedImages) { export function replaceNames(content, images, uploadedImages) {
images.forEach((image, index) => { images.forEach((image, index) => {
content = content.replace(image, uploadedImages[index].fileName); content = content.replaceAll(image, uploadedImages[index].fileName);
}); });
return content; return content;
+1 -1
View File
@@ -1 +1 @@
let e;window.initBlock=function(e="",n="",r){t=function(){document.querySelectorAll(n).forEach((e=>r(e)))},t()};let t,n={};function r(r={}){r.template&&(e=r.template),r.data&&(n=r.data),e&&function(e,n,r){const a=Handlebars.compile(e);let o;Handlebars.registerHelper("esc_attr",(function(e){return e})),Handlebars.registerHelper("esc_url",(function(e){return e})),Handlebars.registerHelper("esc_html",(function(e){return e})),Handlebars.registerHelper("base_url",(function(){return"/"}));try{o=a(n)}catch(e){o=`<div style="max-width: 1280px; margin: 1rem auto;">\n <h1 style="all: unset; font-size: 1.5rem; font-weight: bold; display: block;">Syntax Error:</h1>\n <pre style="all: unset; padding: 10px 15px; background-color: #ffe6e6; border: 1px solid red; border-radius: 0.25rem; overflow: auto; display: block; white-space: pre;">${e.toString()}</pre>\n </div>`}r.innerHTML=o,t&&t()}(e,n||{},document.getElementById("hbs-container"))}!function(){function e(){const e=new URLSearchParams(window.location.search),t={};for(const[n,r]of e)t[n]=r;return t}!function(){const t=new URLSearchParams({name:e().data||"default"});fetch(`/data?${t}`).then((e=>e.json())).then((e=>{n=e.data,r({data:n})}))}(),window.addEventListener("message",(function(e){const t=e.data,a="dataUpdate:";if("string"==typeof t&&t.startsWith(a))try{n=JSON.parse(t.substring(a.length)),r({data:n})}catch(e){console.log("Error parsing incoming data.",e)}}))}(),function(){const e=window.io.connect();e.on("error",(function(e){console.log(e)})),e.on("templateUpdate",(function(e){r({template:e.template})}))}(); let e;window.initBlock=function(e="",n="",r){t=function(){document.querySelectorAll(n).forEach((e=>r(e)))},t()};let t,n={};function r(r={}){r.template&&(e=r.template),r.data&&(n=r.data),e&&function(e,n,r){const a=Handlebars.compile(e);let o;Handlebars.registerHelper("esc_attr",(function(e){return e})),Handlebars.registerHelper("esc_url",(function(e){return e})),Handlebars.registerHelper("esc_html",(function(e){return e})),Handlebars.registerHelper("base_url",(function(){return"/"})),Handlebars.registerHelper("inner_blocks",(function(e){const t=e.data.root.inner_blocks;return t?new Handlebars.SafeString(t):""}));try{o=a(n)}catch(e){o=`<div style="max-width: 1280px; margin: 1rem auto;">\n <h1 style="all: unset; font-size: 1.5rem; font-weight: bold; display: block;">Syntax Error:</h1>\n <pre style="all: unset; padding: 10px 15px; background-color: #ffe6e6; border: 1px solid red; border-radius: 0.25rem; overflow: auto; display: block; white-space: pre;">${e.toString()}</pre>\n </div>`}r.innerHTML=o,t&&t()}(e,n||{},document.getElementById("hbs-container"))}!function(){function e(){const e=new URLSearchParams(window.location.search),t={};for(const[n,r]of e)t[n]=r;return t}!function(){const t=new URLSearchParams({name:e().data||"default"});fetch(`/data?${t}`).then((e=>e.json())).then((e=>{n=e.data,r({data:n})}))}(),window.addEventListener("message",(function(e){const t=e.data,a="dataUpdate:";if("string"==typeof t&&t.startsWith(a))try{n=JSON.parse(t.substring(a.length)),r({data:n})}catch(e){console.log("Error parsing incoming data.",e)}}))}(),function(){const e=window.io.connect();e.on("error",(function(e){console.log(e)})),e.on("templateUpdate",(function(e){r({template:e.template})}))}();
+2 -2
View File
File diff suppressed because one or more lines are too long
+9
View File
@@ -119,6 +119,15 @@ function renderBlock(templateHbs, jsonData, target) {
return '/'; return '/';
}); });
Handlebars.registerHelper('inner_blocks', function (options) {
const content = options.data.root['inner_blocks'];
if (!content) {
return '';
}
return new Handlebars.SafeString(content);
});
let html; let html;
try { try {
@@ -130,7 +130,8 @@ export function DesignPreview({previewOption = {widthDimension: 0}}) {
return 0; return 0;
} }
const scrollbarOffset = 7; // const scrollbarOffset = 7; // Looks like browser scrollbar is not included in the width calculation anymore.
const scrollbarOffset = 0;
return window.innerWidth / 2 - previewOption.widthDimension / 2 - scrollbarOffset; return window.innerWidth / 2 - previewOption.widthDimension / 2 - scrollbarOffset;
} }
+2 -1
View File
@@ -65,7 +65,8 @@ function Responsive(props = {}) {
function updateController() { function updateController() {
let frameBreakpoint = breakpoint; let frameBreakpoint = breakpoint;
if (typeof frameBreakpoint !== 'string') { if (typeof frameBreakpoint !== 'string') {
const scrollbarWidth = 15; // const scrollbarWidth = 15; // Looks like browser's logic was changed and now scrollbar is not included in the width.
const scrollbarWidth = 0;
frameBreakpoint = (scrollbarWidth + frameBreakpoint) + 'px'; frameBreakpoint = (scrollbarWidth + frameBreakpoint) + 'px';
} }
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "@axe-web/block-dev-tool", "name": "@axe-web/block-dev-tool",
"version": "1.0.32", "version": "1.0.36",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@axe-web/block-dev-tool", "name": "@axe-web/block-dev-tool",
"version": "1.0.32", "version": "1.0.36",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@axe-web/create-block": "^1.1.30", "@axe-web/create-block": "^1.1.30",
+4 -4
View File
@@ -1,15 +1,15 @@
{ {
"name": "@axe-web/block-dev-tool", "name": "@axe-web/block-dev-tool",
"version": "1.0.32", "version": "1.0.36",
"author": { "author": {
"name": "AXE-WEB", "name": "AXE-WEB",
"email": "office@axe-web.com", "email": "office@axe-web.com",
"url": "https://axe-web.com/" "url": "https://axe-web.com/"
}, },
"scripts": { "scripts": {
"info": "BLOCK_NAME=icon-text-columns MODULE_PATH= node debug.js", "info": "BLOCK_NAME=ebooks-resources MODULE_PATH= node debug.js",
"dev": "BLOCK_NAME=icon-text-columns MODULE_PATH= node server.js", "dev": "BLOCK_NAME=ebooks-resources MODULE_PATH= node server.js",
"build-platform": "BLOCK_NAME=icon-text-columns MODULE_PATH= node ./build.js", "build-platform": "BLOCK_NAME=ebooks-resources MODULE_PATH= node ./build.js",
"dev-dev-tool": "rollup --config rollup.config.js --watch", "dev-dev-tool": "rollup --config rollup.config.js --watch",
"build-dev-tool": "rollup --config rollup.config.js" "build-dev-tool": "rollup --config rollup.config.js"
}, },
+2 -8
View File
@@ -35,14 +35,6 @@ trait Custom_Handlebars {
return $context; return $context;
} ); } );
$this->add_handlebar( 'safe_html', function ( $context ) {
if ( function_exists( 'wp_kses_post' ) ) {
return wp_kses_post( $context );
}
return $context;
} );
} }
public function add_handlebar( $key, $func ): void { public function add_handlebar( $key, $func ): void {
@@ -91,6 +83,8 @@ class Component_Builder {
private function get_handlebars_template( $path = '' ): string { private function get_handlebars_template( $path = '' ): string {
$template = file_get_contents( $path ); $template = file_get_contents( $path );
$template = preg_replace( '/{{inner_blocks}}/', '<InnerBlocks/>', $template );
$phpStr = LightnCandy::compile( $template, $phpStr = LightnCandy::compile( $template,
[ [
'flags' => Flags::FLAG_NOESCAPE | Flags::FLAG_PARENT | Flags::FLAG_SPVARS | Flags::FLAG_ELSE | Flags::FLAG_JSLENGTH | Flags::FLAG_JSTRUE | Flags::FLAG_THIS, 'flags' => Flags::FLAG_NOESCAPE | Flags::FLAG_PARENT | Flags::FLAG_SPVARS | Flags::FLAG_ELSE | Flags::FLAG_JSLENGTH | Flags::FLAG_JSTRUE | Flags::FLAG_THIS,
@@ -33,7 +33,7 @@ class <%= blockClassModel %>_Component extends \Core\Component {
$output = ( include( __DIR__ . '/templates/<%= blockFilename %>.template.php' ) )( $args, self::class ); $output = ( include( __DIR__ . '/templates/<%= blockFilename %>.template.php' ) )( $args, self::class );
return apply_filters( 'axeweb_blocks/<%= ownerFilename %>/<%= blockFilename %>::content', $output ); return apply_filters( 'axeweb_blocks/<%= ownerFilename %>/<%= blockFilename %>::content', $output, $args );
} }
function register_custom_logic(): void { function register_custom_logic(): void {
@@ -3,6 +3,8 @@
namespace AXEWEB_Blocks\Blocks\<%= ownerClass %>\<%= blockClassModel %>\Helpers; namespace AXEWEB_Blocks\Blocks\<%= ownerClass %>\<%= blockClassModel %>\Helpers;
class <%= blockClassModel %>_Elementor_Widget extends \Elementor\Widget_Base { class <%= blockClassModel %>_Elementor_Widget extends \Elementor\Widget_Base {
use \Core\Traits\Elementor_Widget;
const PLUGIN_NAME = '<%= blockFilename %>'; const PLUGIN_NAME = '<%= blockFilename %>';
public function get_name() { public function get_name() {
@@ -35,12 +37,8 @@ class <%= blockClassModel %>_Elementor_Widget extends \Elementor\Widget_Base {
$component = new \AXEWEB_Blocks\Blocks\<%= ownerClass %>\<%= blockClassModel %>\<%= blockClassModel %>_Component(); $component = new \AXEWEB_Blocks\Blocks\<%= ownerClass %>\<%= blockClassModel %>\<%= blockClassModel %>_Component();
$args = self::prepare( $settings ); $args = $this->prepare( $settings );
$component->render( $args ); $component->render( $args );
} }
public static function prepare( $args ): array {
// Prepare $args for render function.
return $args;
}
} }
+3 -5
View File
@@ -38,7 +38,7 @@ import {
import PluginError from 'plugin-error'; import PluginError from 'plugin-error';
import {Server} from "socket.io"; import {Server} from "socket.io";
import {createServer} from 'http'; import {createServer} from 'http';
import {authtoken, connect} from "ngrok"; // import {authtoken, connect} from "ngrok";
import bodyParser from "body-parser"; import bodyParser from "body-parser";
/** /**
@@ -89,8 +89,6 @@ const hbs = create({
}, esc_html(html) { }, esc_html(html) {
// TODO: Check if we can remove this helper. // TODO: Check if we can remove this helper.
return html; return html;
}, safe_html(html) {
return sanitizeHtml(html);
} }
} }
}); });
@@ -569,8 +567,8 @@ async function getShareableUrl() {
let url; let url;
try { try {
await authtoken(data.ngrokApiToken); // await authtoken(data.ngrokApiToken);
url = await connect(port); // url = await connect(port);
} catch (e) { } catch (e) {
console.log('Error:', `Can't connect to ngrok, probably wrong token.`); console.log('Error:', `Can't connect to ngrok, probably wrong token.`);
} }