Plugin Directory

Changeset 3385207


Ignore:
Timestamp:
10/27/2025 12:08:22 PM (4 months ago)
Author:
specia1ne
Message:

Prepare 1.1.1: bump version, changelog, build assets, misc fixes

Location:
responsive-columns/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • responsive-columns/trunk/blocks/editor.css

    r3293306 r3385207  
    1818.s1-rc-gap-control input {
    1919    padding-right: 20px !important;
     20}
     21
     22.s1-rc-masonry-toggle__notice {
     23    margin-top: 8px;
     24    font-size: 12px;
     25    line-height: 1.4;
     26    color: var(--wp-components-color-foreground, #1e1e1e);
     27}
     28
     29.s1-rc-masonry-toggle__notice.is-disabled {
     30    color: var(--wp-components-color-foreground-muted, #6c6f7d);
    2031}
    2132
  • responsive-columns/trunk/build/index.asset.php

    r3384657 r3385207  
    1 <?php return array('dependencies' => array('wp-block-editor', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-hooks', 'wp-i18n'), 'version' => '41cd6decf2285ef08189');
     1<?php return array('dependencies' => array('wp-block-editor', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-hooks', 'wp-i18n'), 'version' => '1e02c20be99f1086f5ef');
  • responsive-columns/trunk/build/index.js

    r3384657 r3385207  
    1 (()=>{"use strict";const e=window.wp.hooks,t=window.wp.compose,n=window.wp.element,r=window.wp.data,o=window.wp.blockEditor,a=window.wp.components,l=window.wp.i18n;var i="core/columns",c="core/post-template",s=[i,c],u={enableResponsiveColumns:!1,enableMasonry:!1,columnsMobilePortrait:1,columnsMobileLandscape:1,columnsTabletPortrait:2,columnsTabletLandscape:2,gapX:null,gapYSplit:!1,gapY:null},p={enableResponsiveColumns:{type:"boolean",default:u.enableResponsiveColumns},enableMasonry:{type:"boolean",default:u.enableMasonry},columnsMobilePortrait:{type:"number",default:u.columnsMobilePortrait},columnsMobileLandscape:{type:"number",default:u.columnsMobileLandscape},columnsTabletPortrait:{type:"number",default:u.columnsTabletPortrait},columnsTabletLandscape:{type:"number",default:u.columnsTabletLandscape},gapX:{type:"number",default:u.gapX},gapYSplit:{type:"boolean",default:u.gapYSplit},gapY:{type:"number",default:u.gapY}},m=["columnsTabletLandscape","columnsTabletPortrait","columnsMobileLandscape","columnsMobilePortrait"],b={columnsTabletLandscape:{icon:"tablet",rotation:90},columnsTabletPortrait:{icon:"tablet",rotation:0},columnsMobileLandscape:{icon:"smartphone",rotation:90},columnsMobilePortrait:{icon:"smartphone",rotation:0}},d={columnsTabletLandscape:(0,l.__)("Columns – Tablet landscape","responsive-columns"),columnsTabletPortrait:(0,l.__)("Columns – Tablet portrait","responsive-columns"),columnsMobileLandscape:(0,l.__)("Columns – Mobile landscape","responsive-columns"),columnsMobilePortrait:(0,l.__)("Columns – Mobile portrait","responsive-columns")};const f=(0,n.memo)(function(e){var t=e.attributes,r=e.onChange,o=(0,n.useMemo)(function(){return m.map(function(e){var t=b[e],n=t.icon,r=t.rotation,o=d[e];return{name:e,title:React.createElement("span",{className:"s1-rc-breakpoint-tab",title:o},React.createElement("span",{className:"dashicons dashicons-".concat(n),style:{transform:"rotate(".concat(r,"deg)")},"aria-hidden":"true"}),React.createElement(a.VisuallyHidden,null,o))}})},[]),l=(0,n.useCallback)(function(e){var n,o=d[e.name];return React.createElement(a.RangeControl,{label:o,hideLabelFromVision:!0,"aria-label":o,value:null!==(n=null==t?void 0:t[e.name])&&void 0!==n?n:1,min:1,max:6,onChange:function(t){return r(e.name,t)}})},[t,r]);return React.createElement("div",{className:"s1-rc-breakpoints"},React.createElement(a.TabPanel,{activeClass:"is-active",tabs:o},l))});var v=(0,l.__)("px","responsive-columns");const y=(0,n.memo)(function e(r){var o=r.gapX,i=r.gapY,c=r.gapYSplit,s=r.onGapChange,u=r.onToggleRowGap,p=(0,t.useInstanceId)(e),m="s1-rc-gap-x-".concat(p),b="s1-rc-gap-y-".concat(p),d=(0,n.useMemo)(function(){return{columns:(0,l.__)("Gap between columns","responsive-columns"),columnsAria:(0,l.__)("Gap between columns in pixels","responsive-columns"),columnsDescription:(0,l.__)("Controls the horizontal spacing used on the front end.","responsive-columns"),rows:(0,l.__)("Gap between rows","responsive-columns"),rowsAria:(0,l.__)("Gap between rows in pixels","responsive-columns"),rowsDescription:(0,l.__)("Controls the vertical spacing used on the front end.","responsive-columns"),toggle:(0,l.__)("Custom row gap","responsive-columns"),toggleDescription:(0,l.__)("Enable to adjust the row gap separately from columns.","responsive-columns")}},[]),f="s1-rc-gap-x-description-".concat(p),y="s1-rc-gap-toggle-description-".concat(p),g="s1-rc-gap-y-description-".concat(p),w=(0,n.useCallback)(function(e){return(0,l.sprintf)((0,l._x)("%d pixels","gap value for sliders","responsive-columns"),e)},[]),h=(0,n.useCallback)(function(){return React.createElement("span",{className:"components-input-control__suffix","aria-hidden":"true"},v)},[]);return React.createElement("div",{className:"s1-rc-gap-controls"},React.createElement(a.VisuallyHidden,{id:y},d.toggleDescription),React.createElement("div",{className:"s1-rc-gap-control"},React.createElement(a.VisuallyHidden,{id:f},d.columnsDescription),React.createElement(a.RangeControl,{id:m,label:d.columns,"aria-label":d.columnsAria,"aria-describedby":f,"aria-valuetext":w(null!=o?o:0),value:null!=o?o:0,min:0,max:96,onChange:function(e){return s("gapX",e)}}),h()),React.createElement(a.ToggleControl,{label:d.toggle,checked:c,onChange:u,"aria-describedby":y,"aria-controls":b,"aria-expanded":c}),c&&React.createElement("div",{className:"s1-rc-gap-control"},React.createElement(a.VisuallyHidden,{id:g},d.rowsDescription),React.createElement(a.RangeControl,{id:b,label:d.rows,"aria-label":d.rowsAria,"aria-describedby":g,"aria-valuetext":w(null!=i?i:0),value:null!=i?i:0,min:0,max:96,onChange:function(e){return s("gapY",e)}}),h()))}),g=(0,n.memo)(function(e){var t=e.checked,r=e.onChange,o=e.help,i=(0,n.useMemo)(function(){return(0,l.__)("Enable masonry layout","responsive-columns")},[]);return React.createElement(a.ToggleControl,{label:i,checked:t,onChange:r,help:o})});function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function h(e,t){var n=t.min,r=t.max,o=t.fallback,a=Number(e);return Number.isFinite(a)?function(e,t,n){return Math.min(Math.max(Number(e),t),n)}(a,n,r):o}function R(e){var t={};return Object.entries(e).forEach(function(e){var n,r,o,a=(o=2,function(e){if(Array.isArray(e))return e}(r=e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,l,i=[],c=!0,s=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(i.push(r.value),i.length!==t);c=!0);}catch(e){s=!0,o=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw o}}return i}}(r,o)||function(e,t){if(e){if("string"==typeof e)return w(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?w(e,t):void 0}}(r,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=a[0],i=a[1];switch(l){case"enableResponsiveColumns":case"enableMasonry":case"gapYSplit":t[l]=function(e){return void 0!==e&&Boolean(e)}(i);break;case"columnsMobilePortrait":case"columnsMobileLandscape":case"columnsTabletPortrait":case"columnsTabletLandscape":t[l]=h(i,{min:1,max:6,fallback:u[l]});break;case"gapX":case"gapY":if(null==i){t[l]=null;break}t[l]=h(i,{min:0,max:96,fallback:""===i?0:null!==(n=u[l])&&void 0!==n?n:0});break;default:t[l]=i}}),t}function P(e){return Boolean(e.enableResponsiveColumns&&e.enableMasonry)}function C(e){return C="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},C(e)}function O(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function E(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?O(Object(n),!0).forEach(function(t){S(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):O(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function S(e,t,n){return(t=function(e){var t=function(e){if("object"!=C(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=C(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==C(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j(e){var t,n,r,o,a={"--s1-rc-columns-mobile-portrait":String(null!==(t=e.columnsMobilePortrait)&&void 0!==t?t:u.columnsMobilePortrait),"--s1-rc-columns-mobile-landscape":String(null!==(n=e.columnsMobileLandscape)&&void 0!==n?n:u.columnsMobileLandscape),"--s1-rc-columns-tablet-portrait":String(null!==(r=e.columnsTabletPortrait)&&void 0!==r?r:u.columnsTabletPortrait),"--s1-rc-columns-tablet-landscape":String(null!==(o=e.columnsTabletLandscape)&&void 0!==o?o:u.columnsTabletLandscape)};return null!==e.gapX&&void 0!==e.gapX&&(a["--s1-rc-gap-x"]="".concat(e.gapX,"px")),e.gapYSplit&&null!==e.gapY&&void 0!==e.gapY&&(a["--s1-rc-gap-y"]="".concat(e.gapY,"px")),a}function k(e,t){if(!t.enableResponsiveColumns)return e;var n=[e.className||"","has-s1-rc-columns"];return P(t)&&n.push("has-s1-rc-masonry"),E(E({},e),{},{className:n.join(" ").trim(),style:E(E({},e.style||{}),j(t))},P(t)?{"data-s1-rc-masonry":"1"}:{})}function _(e){return _="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_(e)}function M(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function T(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?M(Object(n),!0).forEach(function(t){N(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):M(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function N(e,t,n){return(t=function(e){var t=function(e){if("object"!=_(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=_(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==_(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Y(e){var t=e.attributes,i=e.setAttributes,c=e.blockName,s=e.clientId,p=(0,n.useCallback)(function(e){var t,n,r;return null!==(t=null===(n=e("core/block-editor"))||void 0===n||null===(r=n.getSettings)||void 0===r?void 0:r.call(n))&&void 0!==t?t:{}},[]),m=(0,r.useSelect)(p,[p]),b=(0,n.useRef)(),d=(0,n.useCallback)(function(e){i(R(e))},[i]),v=(0,n.useCallback)(function(e){return function(t){d(N({},e,t))}},[d]),w=(0,n.useCallback)(function(){return void 0===b.current&&(b.current=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"undefined"!=typeof document?document:void 0,n=function(e){var t,n=null==e||null===(t=e.spacing)||void 0===t?void 0:t.blockGap,r="object"===C(n)?null==n?void 0:n.value:n;if("number"==typeof r&&Number.isFinite(r))return r;if("string"==typeof r&&r.trim()){var o=r.trim();if(o.endsWith("px"))return Number.parseFloat(o.slice(0,-2));var a=Number.parseFloat(o);if(Number.isFinite(a))return a}return null}(e);return null!==n?n:function(e){var t;if(!e)return 24;var n=e.createElement("div");n.className="is-layout-grid",n.style.display="grid",(e.querySelector(".editor-styles-wrapper")||e.body).appendChild(n);var r=null===(t=e.defaultView)||void 0===t||null===(t=t.getComputedStyle(n))||void 0===t||null===(t=t.gap)||void 0===t?void 0:t.trim();if(n.remove(),!r||"normal"===r)for(var o=0;o<=12;o+=1){var a;if(r=null===(a=e.defaultView)||void 0===a||null===(a=a.getComputedStyle(e.documentElement))||void 0===a||null===(a=a.getPropertyValue("--wp--preset--spacing--".concat(o)))||void 0===a?void 0:a.trim())break}var l=Number.parseFloat(r||"");return Number.isFinite(l)?Math.round(l):24}(t)}(m)),b.current},[m]);(0,n.useEffect)(function(){if(null===t.gapX||void 0===t.gapX){var e=w();d({gapX:e,gapY:e})}},[t.gapX,w,d]);var h=(0,n.useMemo)(function(){return v("enableResponsiveColumns")},[v]),P=(0,n.useCallback)(function(e,t){v(e)(t)},[v]),O=(0,n.useCallback)(function(e,t){v(e)(t)},[v]),E=(0,n.useCallback)(function(e){if(e){var n,r,o=null!==(n=null!==(r=t.gapY)&&void 0!==r?r:t.gapX)&&void 0!==n?n:w();d({gapYSplit:!0,gapY:o})}else d({gapYSplit:!1,gapY:null})},[t.gapY,t.gapX,w,d]),S=(0,n.useMemo)(function(){return v("enableMasonry")},[v]),j=(0,n.useCallback)(function(){var e=w();d(T(T({},u),{},{enableResponsiveColumns:t.enableResponsiveColumns,gapX:e,gapY:e}))},[t.enableResponsiveColumns,w,d]),k=(0,n.useMemo)(function(){return function(e,t){var n,r,o=Number(null==t||null===(n=t.layout)||void 0===n?void 0:n.columnCount);return"core/post-template"===e&&"grid"===(null==t||null===(r=t.layout)||void 0===r?void 0:r.type)&&Number.isFinite(o)&&o>0}(c,t)},[c,t]),_=(0,n.useMemo)(function(){return"s1-rc-reset-description-".concat(s)},[s]);return React.createElement(o.InspectorControls,null,React.createElement(a.PanelBody,{className:"s1-rc-panel",title:(0,l.__)("Responsive Columns","responsive-columns"),initialOpen:!0},React.createElement(a.PanelRow,null,React.createElement(a.ToggleControl,{label:(0,l.__)("Enable responsive layout","responsive-columns"),checked:t.enableResponsiveColumns,onChange:h})),t.enableResponsiveColumns&&React.createElement(React.Fragment,null,React.createElement(a.PanelRow,null,React.createElement(f,{attributes:t,onChange:P})),React.createElement(a.PanelRow,null,React.createElement(y,{gapX:t.gapX,gapY:t.gapY,gapYSplit:t.gapYSplit,onGapChange:O,onToggleRowGap:E})),k&&React.createElement(a.PanelRow,null,React.createElement(g,{checked:t.enableMasonry,onChange:S,help:(0,l.__)("Works with queries that use a fixed number of columns.","responsive-columns")})),React.createElement(a.PanelRow,null,React.createElement(a.Button,{variant:"secondary",size:"small",onClick:j,"aria-describedby":_},(0,l.__)("Reset responsive settings","responsive-columns")),React.createElement(a.VisuallyHidden,{id:_},(0,l.__)("Restore default breakpoint and gap values.","responsive-columns"))))))}function x(e){return x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},x(e)}function L(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function D(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?L(Object(n),!0).forEach(function(t){X(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):L(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function X(e,t,n){return(t=function(e){var t=function(e){if("object"!=x(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=x(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==x(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var F=new Set(s);(0,e.addFilter)("blocks.registerBlockType","responsive-columns/attributes",function(e,t){return F.has(t)?D(D({},e),{},{attributes:D(D({},null==e?void 0:e.attributes),p)}):e});var A=function(e){var t,n=e.name,o=e.attributes,a=e.clientId;return(0,r.useSelect)(function(e){var t;return n===i||n===c&&"grid"===(null==o||null===(t=o.layout)||void 0===t?void 0:t.type)&&(0,e("core/block-editor").getBlockParentsByBlockName)(a,"core/query").length>0},[n,a,null==o||null===(t=o.layout)||void 0===t?void 0:t.type])},I=(0,t.createHigherOrderComponent)(function(e){return function(t){var r=A(t),o=(0,n.useMemo)(function(){return r?React.createElement(Y,{attributes:t.attributes,setAttributes:t.setAttributes,blockName:t.name,clientId:t.clientId}):null},[r,t.attributes,t.setAttributes,t.name,t.clientId]);return o?React.createElement(n.Fragment,null,React.createElement(e,t),o):React.createElement(e,t)}},"withResponsiveColumnsInspector");(0,e.addFilter)("editor.BlockEdit","responsive-columns/inspector",I);var B=(0,t.createHigherOrderComponent)(function(e){return function(t){return A(t)?React.createElement(e,function(e,t){if(!t.enableResponsiveColumns)return e;var n=e.wrapperProps||{},r=[n.className||"","has-s1-rc-columns"];return P(t)&&r.push("has-s1-rc-masonry"),E(E({},e),{},{wrapperProps:E(E({},n),{},{className:r.join(" ").trim(),style:E(E({},n.style||{}),j(t))})})}(t,t.attributes)):React.createElement(e,t)}},"withResponsiveColumnsPreview");(0,e.addFilter)("editor.BlockListBlock","responsive-columns/preview",B),(0,e.addFilter)("blocks.getSaveContent.extraProps","responsive-columns/save",function(e,t,n){return t.name!==i?e:k(e,n)}),(0,e.addFilter)("blocks.getServerSideWrapperProps","responsive-columns/server-wrapper",function(e,t,n){var r;return t.name!==c||"grid"!==(null==n||null===(r=n.layout)||void 0===r?void 0:r.type)?e:k(e,n)})})();
     1(()=>{"use strict";const e=window.wp.hooks,t=window.wp.compose,n=window.wp.element,r=window.wp.data,o=window.wp.blockEditor,a=window.wp.components,i=window.wp.i18n;var l="core/columns",u="core/post-template",c=[l,u],s={enableResponsiveColumns:!1,enableMasonry:!1,columnsMobilePortrait:1,columnsMobileLandscape:1,columnsTabletPortrait:2,columnsTabletLandscape:2,gapX:null,gapYSplit:!1,gapY:null},p={enableResponsiveColumns:{type:"boolean",default:s.enableResponsiveColumns},enableMasonry:{type:"boolean",default:s.enableMasonry},columnsMobilePortrait:{type:"number",default:s.columnsMobilePortrait},columnsMobileLandscape:{type:"number",default:s.columnsMobileLandscape},columnsTabletPortrait:{type:"number",default:s.columnsTabletPortrait},columnsTabletLandscape:{type:"number",default:s.columnsTabletLandscape},gapX:{type:"string",default:s.gapX},gapYSplit:{type:"boolean",default:s.gapYSplit},gapY:{type:"string",default:s.gapY}},f=["columnsTabletLandscape","columnsTabletPortrait","columnsMobileLandscape","columnsMobilePortrait"],m={columnsTabletLandscape:{icon:"tablet",rotation:90},columnsTabletPortrait:{icon:"tablet",rotation:0},columnsMobileLandscape:{icon:"smartphone",rotation:90},columnsMobilePortrait:{icon:"smartphone",rotation:0}},b={columnsTabletLandscape:(0,i.__)("Columns – Tablet landscape","responsive-columns"),columnsTabletPortrait:(0,i.__)("Columns – Tablet portrait","responsive-columns"),columnsMobileLandscape:(0,i.__)("Columns – Mobile landscape","responsive-columns"),columnsMobilePortrait:(0,i.__)("Columns – Mobile portrait","responsive-columns")};const d=(0,n.memo)(function(e){var t=e.attributes,r=e.onChange,o=(0,n.useMemo)(function(){return f.map(function(e){var t=m[e],n=t.icon,r=t.rotation,o=b[e];return{name:e,title:React.createElement("span",{className:"s1-rc-breakpoint-tab",title:o},React.createElement("span",{className:"dashicons dashicons-".concat(n),style:{transform:"rotate(".concat(r,"deg)")},"aria-hidden":"true"}),React.createElement(a.VisuallyHidden,null,o))}})},[]),i=(0,n.useCallback)(function(e){var n,o=b[e.name];return React.createElement(a.RangeControl,{label:o,hideLabelFromVision:!0,"aria-label":o,value:null!==(n=null==t?void 0:t[e.name])&&void 0!==n?n:1,min:1,max:6,onChange:function(t){return r(e.name,t)}})},[t,r]);return React.createElement("div",{className:"s1-rc-breakpoints"},React.createElement(a.TabPanel,{activeClass:"is-active",tabs:o},i))});function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?v(Object(n),!0).forEach(function(t){g(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function g(e,t,n){return(t=function(e){var t=function(e){if("object"!=S(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=S(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==S(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function w(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return h(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var _n=0,r=function(){};return{s:r,n:function(){return _n>=e.length?{done:!0}:{done:!1,value:e[_n++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){i=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(i)throw o}}}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function S(e){return S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},S(e)}var k=/^-?\d*\.?\d+$/,C=/^-?\d*\.?\d+(?:[a-z%]+)?$/i;function P(e){if(null==e)return null;if("object"===S(e))return Object.prototype.hasOwnProperty.call(e,"value")?P(e.value):Object.prototype.hasOwnProperty.call(e,"default")?P(e.default):Object.prototype.hasOwnProperty.call(e,"top")?P(e.top):Object.prototype.hasOwnProperty.call(e,"left")?P(e.left):null;if("number"==typeof e&&Number.isFinite(e))return"".concat(e,"px");if("string"==typeof e){var t=e.trim();return""===t||"normal"===t?null:t}return null}function O(e){var t,n;return function(e){var t,n;if(!e)return null;var r=null==e||null===(t=e.styles)||void 0===t||null===(t=t.spacing)||void 0===t?void 0:t.blockGap,o=null==e||null===(n=e.spacing)||void 0===n?void 0:n.blockGap,a=P(r),i=P(o);return null!==a?a:null!==i?i:null}(null!=e?e:null===(t=(0,r.select)("core/block-editor"))||void 0===t||null===(n=t.getSettings)||void 0===n?void 0:n.call(t))}function E(e,t){if("string"==typeof e)return e.trim();if(null!=e)return"number"==typeof e&&Number.isFinite(e)?"".concat(e,"px"):"";var n=O(t);return"string"==typeof n?n:""}function R(e){if("number"==typeof e)return Number.isFinite(e);if("string"!=typeof e)return!1;var t=e.trim();if(""===t)return!1;var n=t.toLowerCase();return!n.includes("var(")&&!n.includes("clamp(")&&C.test(t)}function j(e){if(null==e)return"";if("number"==typeof e)return Number.isFinite(e)?"".concat(e,"px"):"";if("string"!=typeof e)return e;var t=e.trim();if(""===t)return"";var n=t.toLowerCase();if(n.includes("var(")||n.includes("clamp("))return t;if(C.test(t)&&!k.test(t))return t;if(k.test(t)){var r=Number(t);return Number.isFinite(r)?"".concat(r,"px"):t}return t}var _=["var(--wp--style--block-gap)","var(--wp--custom--block-gap)","var(--wp--preset--spacing--block-gap)"],M=['iframe[name="editor-canvas"]','iframe[aria-label="Editor canvas"]',"iframe.editor-canvas","iframe.edit-site-visual-editor__editor-canvas","iframe.edit-site-iframe"],x=[".block-editor-block-list__layout",".edit-site-visual-editor__content-area",".is-root-container",".wp-site-blocks",".wp-block-post-content"];function T(e){if(!e||!e.body)return!1;var t,n=w(x);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(e.body.querySelector(r))return!0}}catch(e){n.e(e)}finally{n.f()}return e.body.childElementCount>0}function N(e){if(!e||"undefined"==typeof window)return null;var t=function(){if("undefined"==typeof document)return null;var e,t=[],n=w(M);try{for(n.s();!(e=n.n()).done;){var r,o=e.value,a=w(document.querySelectorAll(o));try{for(a.s();!(r=a.n()).done;){var i,l=r.value;if(l&&"iframe"===(null===(i=l.tagName)||void 0===i?void 0:i.toLowerCase())){var u=l.contentDocument;if(u&&u.body){if(T(u))return u;t.push(u)}}}}catch(e){a.e(e)}finally{a.f()}}}catch(e){n.e(e)}finally{n.f()}var c,s=w(document.querySelectorAll("iframe"));try{for(s.s();!(c=s.n()).done;){var p,f=c.value;if(f&&"iframe"===(null===(p=f.tagName)||void 0===p?void 0:p.toLowerCase())){var m=f.contentDocument;if(m&&T(m))return m;m&&m.body&&t.push(m)}}}catch(e){s.e(e)}finally{s.f()}var b=document.body;if(b){var d,v=w(x);try{for(v.s();!(d=v.n()).done;){var y=d.value;if(b.querySelector(y))return document}}catch(e){v.e(e)}finally{v.f()}}return t.length>0?t[0]:null}();if(!t)return null;var n=function(e,t){var n,r=null==e?void 0:e.body,o=null!==(n=null==e?void 0:e.defaultView)&&void 0!==n?n:window;if(!r||!o||"function"!=typeof o.getComputedStyle)return null;var a=e.createElement("div");a.style.position="absolute",a.style.visibility="hidden",a.style.pointerEvents="none",a.style.display="grid",a.style.gridTemplateColumns="1fr 1fr",a.style.gap=String(t),r.appendChild(a);try{var i,l,u=o.getComputedStyle(a),c=null!==(i=null==u?void 0:u.columnGap)&&void 0!==i?i:"",s=null!==(l=null==u?void 0:u.rowGap)&&void 0!==l?l:"",p="string"==typeof c?c.trim():"",f="string"==typeof s?s.trim():"",m=function(e){return"string"==typeof e&&/^\d*\.?\d+px$/i.test(e)};if(m(p)&&m(f))return{col:p,row:f};if(m(p))return{col:p,row:p};if(m(f))return{col:f,row:f}}catch(e){}finally{r.removeChild(a)}return null}(t,e);return n}function Y(){var e,t=w(_);try{for(t.s();!(e=t.n()).done;){var n=N(e.value);if(null!=n&&n.col&&null!=n&&n.row)return n}}catch(e){t.e(e)}finally{t.f()}return null}var A=(0,i.__)("px","responsive-columns");const L=(0,n.memo)(function e(r){var o=r.gapX,l=r.gapY,u=r.gapYSplit,c=r.onGapChange,s=r.onToggleRowGap,p=r.themeGap,f=r.defaultGap,m=(0,t.useInstanceId)(e),b="s1-rc-gap-x-".concat(m),d="s1-rc-gap-y-".concat(m),v=(0,n.useMemo)(function(){return{columns:(0,i.__)("Gap between columns","responsive-columns"),columnsAria:(0,i.__)("Gap between columns in pixels","responsive-columns"),columnsDescription:(0,i.__)("Controls the horizontal spacing used on the front end.","responsive-columns"),rows:(0,i.__)("Gap between rows","responsive-columns"),rowsAria:(0,i.__)("Gap between rows in pixels","responsive-columns"),rowsDescription:(0,i.__)("Controls the vertical spacing used on the front end.","responsive-columns"),toggle:(0,i.__)("Custom row gap","responsive-columns"),toggleDescription:(0,i.__)("Enable to adjust the row gap separately from columns.","responsive-columns")}},[]),y="s1-rc-gap-x-description-".concat(m),g="s1-rc-gap-toggle-description-".concat(m),w="s1-rc-gap-y-description-".concat(m),h=(0,n.useCallback)(function(e){return(0,i.sprintf)((0,i._x)("%d pixels","gap value for sliders","responsive-columns"),e)},[]),S=(0,n.useCallback)(function(){return React.createElement("span",{className:"components-input-control__suffix","aria-hidden":"true"},A)},[]),k=(0,n.useMemo)(function(){if("number"==typeof f&&Number.isFinite(f))return f;if("string"==typeof f&&R(f)){var e=Number.parseFloat(f);if(Number.isFinite(e))return e}return 0},[f]),C=(0,n.useCallback)(function(e){if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){var t=e.trim();if(""===t)return k;if(R(t)){var n=Number.parseFloat(t);if(Number.isFinite(n))return n}}return k},[k]),P=C(o),O=C(l),E="string"==typeof f?f.trim():"",_="string"==typeof p?p.trim():"",M=(0,n.useMemo)(function(){return"string"==typeof o&&""!==o.trim()?o.trim():""!==E?E:""!==_?_:h(P)},[o,E,_,P,h]),x=(0,n.useMemo)(function(){return"string"==typeof l&&""!==l.trim()?l.trim():""!==E?E:""!==_?_:h(O)},[l,E,_,O,h]);return React.createElement("div",{className:"s1-rc-gap-controls"},React.createElement(a.VisuallyHidden,{id:g},v.toggleDescription),React.createElement("div",{className:"s1-rc-gap-control"},React.createElement(a.VisuallyHidden,{id:y},v.columnsDescription),React.createElement(a.RangeControl,{id:b,label:v.columns,"aria-label":v.columnsAria,"aria-describedby":y,"aria-valuetext":M,value:P,min:0,max:96,onChange:function(e){return c("gapX",j(e))}}),S()),React.createElement(a.ToggleControl,{label:v.toggle,checked:u,onChange:s,"aria-describedby":g,"aria-controls":d,"aria-expanded":u}),u&&React.createElement("div",{className:"s1-rc-gap-control"},React.createElement(a.VisuallyHidden,{id:w},v.rowsDescription),React.createElement(a.RangeControl,{id:d,label:v.rows,"aria-label":v.rowsAria,"aria-describedby":w,"aria-valuetext":x,value:O,min:0,max:96,onChange:function(e){return c("gapY",j(e))}}),S()))}),D=(0,n.memo)(function(e){var t=e.checked,r=e.onChange,o=e.help,l=e.disabled,u=e.notice,c=(0,n.useMemo)(function(){return(0,i.__)("Enable masonry layout","responsive-columns")},[]);return React.createElement("div",{className:"s1-rc-masonry-toggle"},React.createElement(a.ToggleControl,{label:c,checked:t,onChange:r,help:o,disabled:l}),u&&React.createElement("div",{className:"s1-rc-masonry-toggle__notice".concat(l?" is-disabled":""),"aria-live":"polite"},u))});function X(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function F(e,t){var n=t.min,r=t.max,o=t.fallback,a=Number(e);return Number.isFinite(a)?function(e,t,n){return Math.min(Math.max(Number(e),t),n)}(a,n,r):o}function I(e){var t={};return Object.entries(e).forEach(function(e){var n,r,o=(r=2,function(e){if(Array.isArray(e))return e}(n=e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],u=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);u=!0);}catch(e){c=!0,o=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw o}}return l}}(n,r)||function(e,t){if(e){if("string"==typeof e)return X(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?X(e,t):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),a=o[0],i=o[1];switch(a){case"enableResponsiveColumns":case"enableMasonry":case"gapYSplit":t[a]=function(e){return void 0!==e&&Boolean(e)}(i);break;case"columnsMobilePortrait":case"columnsMobileLandscape":case"columnsTabletPortrait":case"columnsTabletLandscape":t[a]=F(i,{min:1,max:6,fallback:s[a]});break;case"gapX":case"gapY":if(null==i){t[a]=null;break}if("number"==typeof i){var l=F(i,{min:0,max:96,fallback:0});t[a]="".concat(l,"px");break}if("string"==typeof i){var u=j(i);if(""===u){t[a]="";break}if("string"==typeof u){var c=u.trim();if(c.endsWith("px")){var p=Number.parseFloat(c);if(Number.isFinite(p)){var f=F(p,{min:0,max:96,fallback:p});t[a]="".concat(f,"px");break}}t[a]=c;break}t[a]=u;break}t[a]="";break;default:t[a]=i}}),t}function G(e){return G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},G(e)}function B(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var $={desktop:["desktop","large","default","base",""],tablet:["tablet","medium"],mobile:["mobile","small"]};function H(e){if("number"==typeof e)return Number.isFinite(e)?e:void 0;if("string"==typeof e){var t=e.trim().toLowerCase();if(""===t)return;var n=Number(t);return Number.isFinite(n)?n:void 0}}function U(e,t){if(e){var n=e.columnCount;if(null!=n)return"object"===G(n)?function(e,t){var n,r=(t||"desktop").toLowerCase(),o=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return B(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?B(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var _n=0,r=function(){};return{s:r,n:function(){return _n>=e.length?{done:!0}:{done:!1,value:e[_n++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){i=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(i)throw o}}}}($[r]||$.desktop);try{for(o.s();!(n=o.n()).done;){var a=n.value;if(""===a&&void 0!==e.columnCount){var i=H(e.columnCount);if(i)return i}if(void 0!==e[a]){var l=H(e[a]);if(l)return l}var u=a?"columnCount".concat(a.charAt(0).toUpperCase()).concat(a.slice(1)):"columnCount";if(void 0!==e[u]){var c=H(e[u]);if(c)return c}var s=a?"".concat(a.charAt(0).toUpperCase()).concat(a.slice(1)):"Desktop";if(void 0!==e[s]){var p=H(e[s]);if(p)return p}}}catch(e){o.e(e)}finally{o.f()}}(n,t):H(n)}}function V(e){return Boolean(e.enableResponsiveColumns&&e.enableMasonry)}function q(e){return q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},q(e)}function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Q(e){var t,l,u,c,p,f=e.attributes,m=e.setAttributes,b=e.blockName,v=e.clientId,g=(0,n.useCallback)(function(e){var t,n,r;return null!==(t=null===(n=e("core/block-editor"))||void 0===n||null===(r=n.getSettings)||void 0===r?void 0:r.call(n))&&void 0!==t?t:{}},[]),w=(0,r.useSelect)(g,[g]),h=(0,r.useSelect)(function(e){var t=function(t){var n=e(t);if(n)return"function"==typeof n.__experimentalGetPreviewDeviceType?n.__experimentalGetPreviewDeviceType():"function"==typeof n.getPreviewDeviceType?n.getPreviewDeviceType():void 0};return t("core/edit-site")||t("core/edit-post")||t("core/edit-widgets")||t("core/customize-widgets")||"Desktop"},[]),S=(0,r.useDispatch)("core/notices").createNotice,k=(0,n.useCallback)(function(){return function(e){var t=null;"number"==typeof(t="string"==typeof e||"number"==typeof e||null==e?e:O(e))&&Number.isFinite(t)&&(t="".concat(t,"px")),"string"!=typeof t&&(t="");var n=t.trim(),r=/^-?\d*\.?\d+px$/i.test(n);if(""===n){var o=Y();return o?y(y({},o),{},{source:"css-variable"}):{col:"24px",row:"24px",source:"fallback"}}if(r)return{col:n,row:n,source:"settings"};var a=N(n);if(null!=a&&a.col&&null!=a&&a.row)return y(y({},a),{},{source:"measure"});var i=Y();return i?y(y({},i),{},{source:"css-variable"}):{col:"24px",row:"24px",source:"fallback"}}(w)},[w]),C=(c=(0,n.useState)(function(){return k()}),p=2,function(e){if(Array.isArray(e))return e}(c)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],u=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);u=!0);}catch(e){c=!0,o=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw o}}return l}}(c,p)||function(e,t){if(e){if("string"==typeof e)return z(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?z(e,t):void 0}}(c,p)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),P=C[0],R=C[1],j=null!==(t=null==P?void 0:P.source)&&void 0!==t?t:"fallback",_=null!==(l=null==P?void 0:P.col)&&void 0!==l?l:"",M=null!==(u=null==P?void 0:P.row)&&void 0!==u?u:"",x=(0,n.useRef)(0);(0,n.useEffect)(function(){R(function(e){var t,n,r=k();return(t=e)===(n=r)||t&&n&&t.col===n.col&&t.row===n.row&&t.source===n.source?e:r})},[k]),(0,n.useEffect)(function(){if("fallback"===j){if(!(x.current>=5)){var e=setTimeout(function(){x.current+=1,R(function(){return k()})},200);return function(){return clearTimeout(e)}}}else x.current=0},[k,j]);var T=(0,n.useMemo)(function(){return E(_,w)},[_,w]),A=(0,n.useMemo)(function(){return E(M,w)},[M,w]),X=(0,n.useCallback)(function(e){m(I(e))},[m]),F=(0,n.useCallback)(function(e){return function(t){X(function(e,t,n){return(t=function(e){var t=function(e){if("object"!=q(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=q(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==q(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},e,t))}},[X]);(0,n.useEffect)(function(){null!==f.gapX&&void 0!==f.gapX||X({gapX:"fallback"===j?T:_,gapY:"fallback"===j?A:M})},[f.gapX,T,A,j,_,M,X]),(0,n.useEffect)(function(){f.gapYSplit||null!==f.gapX&&void 0!==f.gapX&&f.gapY!==f.gapX&&X({gapY:f.gapX})},[f.gapYSplit,f.gapX,f.gapY,X]);var G=(0,n.useMemo)(function(){return F("enableResponsiveColumns")},[F]),B=(0,n.useCallback)(function(e,t){F(e)(t)},[F]),$=(0,n.useCallback)(function(e,t){"gapX"!==e||f.gapYSplit?F(e)(t):X({gapX:t,gapY:t})},[f.gapYSplit,X,F]),H=(0,n.useCallback)(function(e){var t;if(e){var n,r,o,a=null!==(n=null!==(r=null!==(o=f.gapY)&&void 0!==o?o:f.gapX)&&void 0!==r?r:A)&&void 0!==n?n:T;X({gapYSplit:!0,gapY:a})}else{var i=null!==(t=f.gapX)&&void 0!==t?t:T;X({gapYSplit:!1,gapY:i})}},[f.gapY,f.gapX,T,A,X]),V=(0,n.useMemo)(function(){return F("enableMasonry")},[F]),Q=(0,n.useCallback)(function(){var e=k(),t="fallback"===e.source&&"fallback"!==j?{col:_,row:M,source:j}:e;X({columnsMobilePortrait:s.columnsMobilePortrait,columnsMobileLandscape:s.columnsMobileLandscape,columnsTabletPortrait:s.columnsTabletPortrait,columnsTabletLandscape:s.columnsTabletLandscape,gapX:t.col,gapY:t.row,gapYSplit:!1})},[k,X,_,M,j]),W=(0,n.useMemo)(function(){return function(e,t){return"core/post-template"===e&&(null==t?void 0:t.layout)}(b,f)},[b,f]),J=(0,n.useMemo)(function(){return function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("grid"!==(null==e||null===(t=e.layout)||void 0===t?void 0:t.type))return{ready:!1,reason:"not-grid"};var r=U(null==e?void 0:e.layout,n.previewDeviceType);return!r||r<=0?{ready:!1,reason:"no-fixed-columns"}:{ready:!0,reason:"ok"}}(f,{previewDeviceType:h})},[f,h]),K=(0,n.useMemo)(function(){return!W||J.ready?null:"not-grid"===J.reason?(0,i.__)("Masonry is disabled for this layout mode.","responsive-columns"):"no-fixed-columns"===J.reason?(0,i.__)("Masonry is disabled until a fixed column count is set on this breakpoint.","responsive-columns"):null},[J,W]),Z=!J.ready,ee=(0,n.useRef)();(0,n.useEffect)(function(){if(W)if(J.ready)ee.current=void 0;else if(f.enableMasonry){if(X({enableMasonry:!1}),ee.current!==J.reason){ee.current=J.reason;var e="not-grid"===J.reason?(0,i.__)("Masonry disabled: switch the Query Loop to the grid layout.","responsive-columns"):(0,i.__)("Masonry disabled: set a fixed column count on the active breakpoint.","responsive-columns");S("info",e,{type:"snackbar"})}}else ee.current=J.reason;else ee.current=void 0},[f.enableMasonry,S,J,X,W]),(0,n.useEffect)(function(){if(W&&!J.ready&&("undefined"!=typeof window&&window.SCRIPT_DEBUG||("undefined"!=typeof process&&process.env,0))){var e="not-grid"===J.reason?"Query Loop must use the grid layout.":"A fixed column count is required on the active breakpoint.";console.info("[responsive-columns] Masonry unavailable: ".concat(e))}},[J,W]);var te=(0,n.useMemo)(function(){return"s1-rc-reset-description-".concat(v)},[v]);return React.createElement(o.InspectorControls,null,React.createElement(a.PanelBody,{className:"s1-rc-panel",title:(0,i.__)("Responsive Columns","responsive-columns"),initialOpen:!0},React.createElement(a.PanelRow,null,React.createElement(a.ToggleControl,{label:(0,i.__)("Enable responsive layout","responsive-columns"),checked:f.enableResponsiveColumns,onChange:G})),f.enableResponsiveColumns&&React.createElement(React.Fragment,null,React.createElement(a.PanelRow,null,React.createElement(d,{attributes:f,onChange:B})),React.createElement(a.PanelRow,null,React.createElement(L,{gapX:f.gapX,gapY:f.gapY,gapYSplit:f.gapYSplit,onGapChange:$,onToggleRowGap:H,themeGap:T,defaultGap:T})),W&&React.createElement(a.PanelRow,null,React.createElement(D,{checked:f.enableMasonry,onChange:V,disabled:Z,notice:K})),React.createElement(a.PanelRow,null,React.createElement(a.Button,{variant:"secondary",size:"small",onClick:Q,"aria-describedby":te,title:(0,i.__)("Reset gaps and breakpoints to the theme defaults.","responsive-columns")},(0,i.__)("Reset responsive settings","responsive-columns")),React.createElement(a.VisuallyHidden,{id:te},(0,i.__)("Restore the breakpoint and gap values provided by the current theme.","responsive-columns"))))))}function W(e){return W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},W(e)}function J(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function K(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?J(Object(n),!0).forEach(function(t){Z(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):J(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Z(e,t,n){return(t=function(e){var t=function(e){if("object"!=W(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=W(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==W(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ee(e){var t,n,r,o,a={"--s1-rc-columns-mobile-portrait":String(null!==(t=e.columnsMobilePortrait)&&void 0!==t?t:s.columnsMobilePortrait),"--s1-rc-columns-mobile-landscape":String(null!==(n=e.columnsMobileLandscape)&&void 0!==n?n:s.columnsMobileLandscape),"--s1-rc-columns-tablet-portrait":String(null!==(r=e.columnsTabletPortrait)&&void 0!==r?r:s.columnsTabletPortrait),"--s1-rc-columns-tablet-landscape":String(null!==(o=e.columnsTabletLandscape)&&void 0!==o?o:s.columnsTabletLandscape)};if(null!==e.gapX&&void 0!==e.gapX)if("string"==typeof e.gapX){var i=e.gapX.trim();""!==i&&(a["--s1-rc-gap-x"]=i)}else"number"==typeof e.gapX&&Number.isFinite(e.gapX)&&(a["--s1-rc-gap-x"]="".concat(e.gapX,"px"));if(e.gapYSplit&&null!==e.gapY&&void 0!==e.gapY)if("string"==typeof e.gapY){var l=e.gapY.trim();""!==l&&(a["--s1-rc-gap-y"]=l)}else"number"==typeof e.gapY&&Number.isFinite(e.gapY)&&(a["--s1-rc-gap-y"]="".concat(e.gapY,"px"));return a}function te(e,t){if(!t.enableResponsiveColumns)return e;var n=[e.className||"","has-s1-rc-columns"];return V(t)&&n.push("has-s1-rc-masonry"),K(K({},e),{},{className:n.join(" ").trim(),style:K(K({},e.style||{}),ee(t))},V(t)?{"data-s1-rc-masonry":"1"}:{})}function ne(e){return ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ne(e)}function re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function oe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?re(Object(n),!0).forEach(function(t){ae(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):re(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function ae(e,t,n){return(t=function(e){var t=function(e){if("object"!=ne(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ne(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ne(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ie=new Set(c);(0,e.addFilter)("blocks.registerBlockType","responsive-columns/attributes",function(e,t){return ie.has(t)?oe(oe({},e),{},{attributes:oe(oe({},null==e?void 0:e.attributes),p)}):e});var le=function(e){var t,n=e.name,o=e.attributes,a=e.clientId;return(0,r.useSelect)(function(e){var t;return n===l||n===u&&"grid"===(null==o||null===(t=o.layout)||void 0===t?void 0:t.type)&&(0,e("core/block-editor").getBlockParentsByBlockName)(a,"core/query").length>0},[n,a,null==o||null===(t=o.layout)||void 0===t?void 0:t.type])},ue=(0,t.createHigherOrderComponent)(function(e){return function(t){var r=le(t),o=(0,n.useMemo)(function(){return r?React.createElement(Q,{attributes:t.attributes,setAttributes:t.setAttributes,blockName:t.name,clientId:t.clientId}):null},[r,t.attributes,t.setAttributes,t.name,t.clientId]);return o?React.createElement(n.Fragment,null,React.createElement(e,t),o):React.createElement(e,t)}},"withResponsiveColumnsInspector");(0,e.addFilter)("editor.BlockEdit","responsive-columns/inspector",ue);var ce=(0,t.createHigherOrderComponent)(function(e){return function(t){return le(t)?React.createElement(e,function(e,t){if(!t.enableResponsiveColumns)return e;var n=e.wrapperProps||{},r=[n.className||"","has-s1-rc-columns"];return V(t)&&r.push("has-s1-rc-masonry"),K(K({},e),{},{wrapperProps:K(K({},n),{},{className:r.join(" ").trim(),style:K(K({},n.style||{}),ee(t))})})}(t,t.attributes)):React.createElement(e,t)}},"withResponsiveColumnsPreview");(0,e.addFilter)("editor.BlockListBlock","responsive-columns/preview",ce),(0,e.addFilter)("blocks.getSaveContent.extraProps","responsive-columns/save",function(e,t,n){return t.name!==l?e:te(e,n)}),(0,e.addFilter)("blocks.getServerSideWrapperProps","responsive-columns/server-wrapper",function(e,t,n){var r;return t.name!==u||"grid"!==(null==n||null===(r=n.layout)||void 0===r?void 0:r.type)?e:te(e,n)})})();
  • responsive-columns/trunk/languages/responsive-columns.pot

    r3384652 r3385207  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: Responsive Columns 1.1.0\n"
     5"Project-Id-Version: Responsive Columns 1.1.1\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/responsive-columns\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2025-10-26T07:49:16+00:00\n"
     12"POT-Creation-Date: 2025-10-27T11:44:12+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.11.0\n"
     
    103103
    104104#: build/index.js:1
     105msgid "Masonry is disabled for this layout mode."
     106msgstr ""
     107
     108#: build/index.js:1
     109msgid "Masonry is disabled until a fixed column count is set on this breakpoint."
     110msgstr ""
     111
     112#: build/index.js:1
     113msgid "Masonry disabled: switch the Query Loop to the grid layout."
     114msgstr ""
     115
     116#: build/index.js:1
     117msgid "Masonry disabled: set a fixed column count on the active breakpoint."
     118msgstr ""
     119
     120#: build/index.js:1
    105121msgid "Enable responsive layout"
    106122msgstr ""
    107123
    108124#: build/index.js:1
    109 msgid "Works with queries that use a fixed number of columns."
     125msgid "Reset gaps and breakpoints to the theme defaults."
    110126msgstr ""
    111127
     
    115131
    116132#: build/index.js:1
    117 msgid "Restore default breakpoint and gap values."
     133msgid "Restore the breakpoint and gap values provided by the current theme."
    118134msgstr ""
  • responsive-columns/trunk/readme.txt

    r3384648 r3385207  
    66Tested up to:       6.8
    77Requires PHP:       7.4
    8 Stable tag:         1.1.0
     8Stable tag:         1.1.1
    99License:            GPL-2.0-or-later
    1010License URI:        https://www.gnu.org/licenses/gpl-2.0.html
    1111
    12 Adds per-device column counts, Gap X/Y and optional Masonry to core Columns & Query Loop — no extra blocks or CSS.
     12Adaptive column counts, gap controls, and Masonry layouts for core Columns and Query Loop blocks — no custom blocks required.
    1313
    1414== Description ==
    1515
    16 > **Stop guessing how many columns will show on a phone.** 
    17 > Responsive Columns lets you set an exact column count for **four breakpoints** right inside the core block inspector.
     16> **See exactly how many columns appear on every device.** Responsive Columns extends the core Columns block and the Query Loop (grid) template with precise controls for four breakpoints, X/Y gap management, and an optional Masonry layout.
    1817
    1918### Key features
    2019
    21 * **Desktop / Tablet-Landscape / Tablet-Portrait / Mobile** 
    22   Pick **1 – 6 columns** for each breakpoint.
    23 * **Theme-aware gaps** 
    24   Reads `--wp--style--block-gap`, lets you tweak **Gap X** and **Gap Y** without hard-coding pixels.
    25 * **Masonry layout for Query Loop (Grid)** — one click, zero jQuery.
    26 * Works with **core/Columns** _and_ **core/Post Template (Query Loop Grid)**.
    27 * **Lightweight** — one helper class, pure CSS variables; editor JS ≈ 3 kB.
     20* **Four responsive breakpoints.** Fine-tune Desktop, Tablet landscape, Tablet portrait, and Mobile column counts (1–6 columns).
     21* **Theme-aware gaps.** Uses your theme's block gap as a starting point and lets you override horizontal and vertical spacing independently.
     22* **One-click Masonry for Query Loop (Grid).** No jQuery, automatically reflows posts as your content changes.
     23* **Native block experience.** Works directly inside core/Columns and core/Post Template (grid) so patterns, reusable blocks, and theme.json continue to work.
     24* **Lightweight.** Modern ES modules (~4 kB compressed) and CSS custom properties. Editor assets load only when needed.
    2825
    2926### How it works
    3027
    31 The plugin adds one class `has-s1-rc-columns` and these CSS variables:
     28The plugin adds a `has-s1-rc-columns` class and a handful of CSS custom properties:
    3229
    3330    --s1-rc-columns-mobile-portrait
     
    3936    --s1-rc-gap-y / vertical, falls back to X */
    4037
    41 Your theme keeps its own `display:grid` / `flex` rules — 
    42 only `grid-template-columns` and gaps are overridden inside media queries. 
     38Your theme's layout styles stay in control — Responsive Columns only adjusts `grid-template-columns` and gap values inside media queries. Disable or uninstall the plugin and the columns fall back to WordPress defaults without leaving orphan styles behind.
    4339
    44 Deactivate the plugin and everything gracefully falls back to the default block behaviour.
     40### Editor experience
     41
     42* Inspector panel with device icons, tooltips, and numeric inputs for precise values.
     43* Theme gap detection with a reset button to restore defaults in one click.
     44* Gap linking lets you mirror vertical spacing or split it into a custom row gap.
     45* Masonry toggle explains prerequisites (Query Loop + Grid layout with a desktop column count).
     46
     47### Accessibility & localisation
     48
     49* All UI controls are keyboard accessible and include human-readable labels.
     50* Strings are translation ready via the `responsive-columns` text domain and JSON translation support.
    4551
    4652== Installation ==
    4753
    48 1. Upload the folder to `/wp-content/plugins/` **or** search “Responsive Columns” in *Plugins → Add New*. 
    49 2. Activate the plugin. 
    50 3. Select any **Columns** block (or **Query Loop → Grid**), open the sidebar and find the **“Responsive Columns”** panel.
     541. Upload the plugin folder to `/wp-content/plugins/` or search “Responsive Columns” in *Plugins → Add New*.
     552. Activate the plugin.
     563. Select a **Columns** block or **Query Loop → Grid**, open the sidebar, and expand the **Responsive Columns** panel.
    5157
    5258== Frequently Asked Questions ==
    5359
    54 = Does it work with Reusable Blocks and Patterns? = 
    55 Yes. Settings are stored as native block attributes, so patterns and reusable blocks keep their responsive values.
     60= Does it work with Reusable Blocks and Patterns? =
     61Yes. Responsive settings are saved as native block attributes and persist across reusable blocks, synced patterns, and template parts.
    5662
    57 = Will my layout break if I uninstall the plugin? = 
    58 No. The extra attributes are simply ignored and columns revert to the default “stack on mobile”.
     63= Will my layout break if I uninstall the plugin? =
     64No. Extra attributes are ignored by core blocks once the plugin is removed. Your content reverts to the default responsive behaviour (stacking on smaller screens).
    5965
    6066== Screenshots ==
     
    6571
    6672== Changelog ==
     73
     74= 1.1.1 =
     75* **Fixes & Defaults:** 
     76  “Reset responsive settings” now restores gap values directly from the active theme (`theme.json`). 
     77  New blocks initialize with the correct default gap from the theme or a reliable fallback (`24px`). 
     78
     79* **UX Improvements:** 
     80  Column and row gaps now stay synchronized consistently when linked (X ↔ Y). 
     81  Editor controls always display real pixel values based on the theme rather than placeholders. 
     82
     83* **Masonry Guard:** 
     84  Added a responsive validation layer that only enables Masonry for valid Query Loop grid layouts. 
     85  The toggle now includes clear inline guidance and automatic reset behavior when prerequisites are not met.
    6786
    6887= 1.1.0 =
     
    8099
    81100= 1.0.0 =
    82 * Initial public release — breakpoints, Gap X / Y and Masonry option.
     101* Initial public release — breakpoints, gap controls, and Masonry option.
    83102
    84103== Upgrade Notice ==
    85104
     105= 1.1.1 =
     106This patch improves theme gap detection, default handling, and Masonry reliability while keeping existing layouts visually unchanged.
     107
    86108= 1.1.0 =
    87109This update improves code safety, performance, accessibility, and build stability without changing any existing functionality.
  • responsive-columns/trunk/responsive-columns.php

    r3384648 r3385207  
    44 * Plugin URI:        https://wordpress.org/plugins/responsive-columns/
    55 * Description:       Adaptive column counts, X/Y gaps and optional Masonry layout for core/Columns and Query Loop (Grid).
    6  * Version:           1.1.0
     6 * Version:           1.1.1
    77 * Requires at least: 6.4
    88 * Requires PHP:      7.4
     
    2121    final class S1_Responsive_Columns {
    2222
    23         public const VERSION = '1.1.0';
     23        public const VERSION = '1.1.1';
    2424        private const SLUG   = 'responsive-columns';
    2525        private const HANDLE = 's1-rc';
     
    4040            $this->url  = plugin_dir_url(  $this->file );
    4141
    42             add_action( 'enqueue_block_editor_assets', [ $this, 'enqueue_editor_assets' ] );
    43             add_action( 'wp_enqueue_scripts',          [ $this, 'enqueue_front_styles' ] );
    44             add_action( 'init',                        [ $this, 'register_front_assets' ] );
    45             add_filter( 'render_block',                [ $this, 'filter_post_template' ], 10, 2 );
     42            add_action( 'enqueue_block_editor_assets', [ $this, 'enqueue_editor_assets' ] );
     43            add_action( 'wp_enqueue_scripts',          [ $this, 'enqueue_front_styles' ] );
     44            add_action( 'init',                        [ $this, 'register_block_styles' ] );
     45            add_action( 'init',                        [ $this, 'register_front_assets' ] );
     46            add_filter( 'render_block',                [ $this, 'filter_post_template' ], 10, 2 );
    4647        }
    4748
     
    101102            if ( function_exists( 'wp_set_script_translations' ) ) {
    102103                wp_set_script_translations( $handle, self::SLUG, $this->dir . 'languages' );
    103             }
    104 
    105             $editor_rel  = 'blocks/editor.css';
    106             $editor_path = $this->dir . $editor_rel;
    107             if ( file_exists( $editor_path ) ) {
    108                 wp_enqueue_style(
    109                     $handle,
    110                     $this->url . $editor_rel,
    111                     [ 'wp-edit-blocks' ],
    112                     filemtime( $editor_path )
    113                 );
    114             }
    115         }
     104            }
     105        }
     106
     107
     108        public function register_block_styles(): void {
     109            if ( ! function_exists( 'wp_enqueue_block_style' ) ) {
     110                return;
     111            }
     112
     113            $style_rel  = 'blocks/editor.css';
     114            $style_path = $this->dir . $style_rel;
     115
     116            if ( ! file_exists( $style_path ) ) {
     117                return;
     118            }
     119
     120            $version = filemtime( $style_path );
     121            $version = $version ? (string) $version : self::VERSION;
     122
     123            $args = [
     124                'handle' => self::HANDLE . '-editor-style',
     125                'src'    => $this->url . $style_rel,
     126                'path'   => $style_path,
     127                'deps'   => [ 'wp-block-library' ],
     128                'ver'    => $version,
     129            ];
     130
     131            foreach ( [ 'core/post-template', 'core/columns' ] as $block ) {
     132                wp_enqueue_block_style( $block, $args );
     133            }
     134        }
    116135
    117136
     
    182201            }
    183202
    184             if ( array_key_exists( 'gapX', $attrs ) && null !== $attrs['gapX'] ) {
    185                 $vars .= '--s1-rc-gap-x:' . intval( $attrs['gapX'] ) . 'px;';
    186             }
    187             if (
    188                 ! empty( $attrs['gapYSplit'] ) &&
    189                 array_key_exists( 'gapY', $attrs ) &&
    190                 null !== $attrs['gapY']
    191             ) {
    192                 $vars .= '--s1-rc-gap-y:' . intval( $attrs['gapY'] ) . 'px;';
    193             }
     203            if ( array_key_exists( 'gapX', $attrs ) && null !== $attrs['gapX'] ) {
     204                if ( is_string( $attrs['gapX'] ) ) {
     205                    $gap_x = trim( $attrs['gapX'] );
     206                    if ( '' !== $gap_x ) {
     207                        $vars .= '--s1-rc-gap-x:' . sanitize_text_field( $gap_x ) . ';';
     208                    }
     209                } elseif ( is_numeric( $attrs['gapX'] ) ) {
     210                    $gap_x = max( 0, floatval( $attrs['gapX'] ) );
     211                    $vars .= '--s1-rc-gap-x:' . $gap_x . 'px;';
     212                }
     213            }
     214            if (
     215                ! empty( $attrs['gapYSplit'] ) &&
     216                array_key_exists( 'gapY', $attrs ) &&
     217                null !== $attrs['gapY']
     218            ) {
     219                if ( is_string( $attrs['gapY'] ) ) {
     220                    $gap_y = trim( $attrs['gapY'] );
     221                    if ( '' !== $gap_y ) {
     222                        $vars .= '--s1-rc-gap-y:' . sanitize_text_field( $gap_y ) . ';';
     223                    }
     224                } elseif ( is_numeric( $attrs['gapY'] ) ) {
     225                    $gap_y = max( 0, floatval( $attrs['gapY'] ) );
     226                    $vars .= '--s1-rc-gap-y:' . $gap_y . 'px;';
     227                }
     228            }
    194229
    195230            if ( ! class_exists( 'WP_HTML_Tag_Processor' ) ) {
Note: See TracChangeset for help on using the changeset viewer.