diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index 2450b9a1c..847176891 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -1,7 +1,13 @@ name: ESLint run-name: '[ESLint] ${{ github.event.head_commit.message }}' -on: push +on: + push: + # pull_request: + +# permissions: +# contents: write +# pull-requests: write jobs: run-linters: @@ -31,6 +37,15 @@ jobs: env: BUN_AUTH_TOKEN: ${{ secrets.GH_BOT_TOKEN }} + - name: Build Kadence workspace packages (for ESLint import resolution) + run: | + for pkg in helpers icons components; do + dir="node_modules/@kadence/${pkg}" + if [ -f "$dir/package.json" ]; then + (cd "$dir" && npm install && npm run build) + fi + done + - name: Run linters uses: wearerequired/lint-action@v2 with: diff --git a/.gitignore b/.gitignore index 708242e8c..e489205a0 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ bin/wp-cli.phar /.env # Remove this when fully transitioning to bun. /bun.lock* +/.kadence-packages-root diff --git a/includes/assets/js/kb-header-block.min.js b/includes/assets/js/kb-header-block.min.js index 5a1174340..14410e410 100644 --- a/includes/assets/js/kb-header-block.min.js +++ b/includes/assets/js/kb-header-block.min.js @@ -1 +1 @@ -class KBHeader{components={};_state;root;rootID;autoTransparentSpacing;sticky;stickyTablet;stickyMobile;transparent;transparentTablet;transparentMobile;stickySection;stickySectionTablet;stickySectionMobile;activeSize="mobile";lastScrollTop=0;activeOffsetTop=0;shrinkMain=!1;shrinkMainHeight=0;shrinkMainHeightTablet=0;shrinkMainHeightMobile=0;shrinkStartHeight=0;mobileBreakpoint=0;currentTopPosition=0;anchorOffset=0;placeholderWrapper;stickyWrapper;isSticking=!1;isTransparent=!1;activeHeaderContainer;constructor(a,b={}){this.root="string"==typeof a?document.querySelector(a):a,this.activeHeaderContainer=this.root.querySelector(".wp-block-kadence-header-desktop"),this.rootID="aaa",this.autoTransparentSpacing="1"===this.root.dataset?.autoTransparentSpacing,this.sticky="1"==this.root.dataset?.sticky,this.stickyTablet="1"==this.root.dataset?.stickyTablet,this.stickyMobile="1"==this.root.dataset?.stickyMobile,this.transparent="1"==this.root.dataset?.transparent,this.transparentTablet="1"==this.root.dataset?.transparentTablet,this.transparentMobile="1"==this.root.dataset?.transparentMobile,this.stickySection=this.root.dataset?.stickySection,this.stickySectionTablet=this.root.dataset?.stickySectionTablet,this.stickySectionMobile=this.root.dataset?.stickySectionMobile,this.shrinkMain="1"===this.root.dataset?.shrinkMain,this.shrinkMainHeight=this.root.dataset?.shrinkMainHeight,this.shrinkMainHeightTablet=this.root.dataset?.shrinkMainHeightTablet,this.shrinkMainHeightMobile=this.root.dataset?.shrinkMainHeightMobile,this.revealScrollUp="1"===this.root.dataset?.revealScrollUp,this.mobileBreakpoint=this.root.dataset?.mobileBreakpoint,this._state="CREATED",(this.sticky||this.stickyTablet||this.stickyMobile)&&this.initStickyHeader(),this.mobileBreakpoint&&0!==this.mobileBreakpoint&&this.initMobileBreakpoint();var c=new Event("MOUNTED",{bubbles:!0});c.ID=this.rootID,this.root.dispatchEvent(c),this._state="IDLE"}initMobileBreakpoint(){this.mobileBreakpoint&&0!==this.mobileBreakpoint&&(window.addEventListener("resize",this.updateMobileBreakpoint.bind(this),!1),window.addEventListener("hashchange",this.updateMobileBreakpoint.bind(this),!1),window.addEventListener("scroll",this.updateMobileBreakpoint.bind(this),!1),window.addEventListener("load",this.updateMobileBreakpoint.bind(this),!1),window.addEventListener("orientationchange",this.updateMobileBreakpoint.bind(this)))}updateMobileBreakpoint(){this.setActiveSize(),"desktop"==this.activeSize?(this.root.querySelector(".wp-block-kadence-header-tablet").style.display="none",this.root.querySelector(".wp-block-kadence-header-desktop").style.display="block"):(this.root.querySelector(".wp-block-kadence-header-desktop").style.display="none",this.root.querySelector(".wp-block-kadence-header-tablet").style.display="block")}initStickyHeader(){this.sticky&&this.createAndSetPlaceholderAndStickyWrappers("desktop"),(this.stickyTablet||this.stickyMobile)&&this.createAndSetPlaceholderAndStickyWrappers("tablet"),this.placeholderWrapper&&this.stickyWrapper&&(this.setActiveSize(),this.updatePlaceholderAndStickyWrappers(),"desktop"==this.activeSize?this.sticky&&(this.activeOffsetTop=this.getOffset(this.placeholderWrapper).top):"tablet"==this.activeSize?this.stickyTablet&&(this.activeOffsetTop=this.getOffset(this.placeholderWrapper).top):this.stickyMobile&&(this.activeOffsetTop=this.getOffset(this.placeholderWrapper).top),window.addEventListener("resize",this.updateSticky.bind(this),!1),window.addEventListener("hashchange",this.updateSticky.bind(this),!1),window.addEventListener("scroll",this.updateSticky.bind(this),!1),window.addEventListener("load",this.updateSticky.bind(this),!1),window.addEventListener("orientationchange",this.updateSticky.bind(this)),"complete"===document.readyState&&this.updateSticky("updateActive"),document.body.classList.contains("woocommerce-demo-store")&&document.body.classList.contains("kadence-store-notice-placement-above")&&this.respondToVisibility(document.querySelector(".woocommerce-store-notice"),()=>{this.updateSticky("updateActive").bind(this)}))}setActiveSize(){const a=this.mobileBreakpoint&&0!==this.mobileBreakpoint?this.mobileBreakpoint:kadenceHeaderConfig.breakPoints.desktop;this.activeSize=parseInt(a){b.appendChild(a)})),b}respondToVisibility(a,b){var c={root:document.documentElement},d=new IntersectionObserver(a=>{a.forEach(a=>{b(0 .kb-nav-sub-menu");if(p.length){var q=this.getOffset(p[0]).top;this.stickyWrapper.style.setProperty("--kb-sticky-mega-overflow-header-offset",q-d+"px")}const r=c,s=c-e,t=this.currentTopPosition+e;var u=this.stickyWrapper.parentNode;if(this.shrinkMain){const b="mobile"===this.activeSize?this.shrinkMainHeightMobile:"tablet"===this.activeSize?this.shrinkMainHeightTablet:this.shrinkMainHeight;if(b){const c=this.activeHeaderContainer.querySelectorAll(".kb-img, .wp-block-kadence-identity img, .wp-block-image img"),d=this.activeHeaderContainer.querySelector(".wp-block-kadence-header-row-center .kadence-header-row-inner");(!this.shrinkStartHeight||a&&void 0!==a.type&&"orientationchange"===a.type)&&(this.shrinkStartHeight=d.offsetHeight);const e=Math.max(b,this.shrinkStartHeight-window.scrollY);if(d.style.height=e+"px",d.style.minHeight=e+"px",d.style.maxHeight=e+"px",0==window.scrollY){if(c)for(let a=0;athis.lastScrollTop,w=Math.floor(this.anchorOffset+e);d<=this.anchorOffset-c?(this.currentTopPosition=0,this.setStickyChanged(!1)):d<=w?v?(this.currentTopPosition=0,this.setStickyChanged(!1)):(this.stickyWrapper.classList.remove("item-hidden-above"),this.currentTopPosition=r,this.setStickyChanged(!0)):d>=this.currentTopPosition&&d<=t?this.setStickyChanged(!1):(v?(this.stickyWrapper.classList.add("item-hidden-above"),this.stickyWrapper.style.top=s+"px",this.currentTopPosition=s):(this.stickyWrapper.classList.remove("item-hidden-above"),this.currentTopPosition=r),this.setStickyChanged(!0))}else{var w=Math.floor(this.anchorOffset-c);d<=w?(this.currentTopPosition=0,this.setStickyChanged(!1)):(this.currentTopPosition=r,this.setStickyChanged(!0))}this.lastScrollTop=d,window.scrollY==w?(this.stickyWrapper.classList.add("item-is-fixed"),this.stickyWrapper.classList.add("item-at-start"),this.stickyWrapper.classList.remove("item-is-stuck"),u.classList.add("child-is-fixed"),document.body.classList.add("header-is-fixed")):window.scrollY>w?this.revealScrollUp?window.scrollY{window.KBHeaderBlocks=[];var a=document.querySelectorAll(".wp-block-kadence-header");for(let c=0;c{this.updateSticky("updateActive").bind(this)}))}setActiveSize(){const a=this.mobileBreakpoint&&0!==this.mobileBreakpoint?this.mobileBreakpoint:kadenceHeaderConfig.breakPoints.desktop;this.activeSize=parseInt(a){b.appendChild(a)})),b}respondToVisibility(a,b){var c={root:document.documentElement},d=new IntersectionObserver(a=>{a.forEach(a=>{b(0 .kb-nav-sub-menu");if(p.length){var q=this.getOffset(p[0]).top;this.stickyWrapper.style.setProperty("--kb-sticky-mega-overflow-header-offset",q-d+"px")}const r=c,s=c-e,t=this.currentTopPosition+e;var u=this.stickyWrapper.parentNode;if(this.shrinkMain){const b="mobile"===this.activeSize?this.shrinkMainHeightMobile:"tablet"===this.activeSize?this.shrinkMainHeightTablet:this.shrinkMainHeight;if(b){const c=this.activeHeaderContainer.querySelectorAll(".kb-img, .wp-block-kadence-identity img, .wp-block-image img"),d=this.activeHeaderContainer.querySelector(".wp-block-kadence-header-row-center .kadence-header-row-inner");(!this.shrinkStartHeight||a&&void 0!==a.type&&"orientationchange"===a.type)&&(this.shrinkStartHeight=d.offsetHeight);const e=Math.max(b,this.shrinkStartHeight-window.scrollY);if(d.style.height=e+"px",d.style.minHeight=e+"px",d.style.maxHeight=e+"px",0==window.scrollY){if(c)for(let a=0;athis.lastScrollTop,w=Math.floor(this.anchorOffset+e);d<=this.anchorOffset-c?(this.currentTopPosition=0,this.setStickyChanged(!1)):d<=w?v?(this.currentTopPosition=0,this.setStickyChanged(!1)):(this.stickyWrapper.classList.remove("item-hidden-above"),this.currentTopPosition=r,this.setStickyChanged(!0)):d>=this.currentTopPosition&&d<=t?this.setStickyChanged(!1):(v?(this.stickyWrapper.classList.add("item-hidden-above"),this.stickyWrapper.style.top=s+"px",this.currentTopPosition=s):(this.stickyWrapper.classList.remove("item-hidden-above"),this.currentTopPosition=r),this.setStickyChanged(!0))}else{var w=Math.floor(this.anchorOffset-c);d<=w?(this.currentTopPosition=0,this.setStickyChanged(!1)):(this.currentTopPosition=r,this.setStickyChanged(!0))}this.lastScrollTop=d,window.scrollY==w?(this.stickyWrapper.classList.add("item-is-fixed"),this.stickyWrapper.classList.add("item-at-start"),this.stickyWrapper.classList.remove("item-is-stuck"),u.classList.add("child-is-fixed"),document.body.classList.add("header-is-fixed")):window.scrollY>w?this.revealScrollUp?window.scrollY{window.KBHeaderBlocks=[];var a=document.querySelectorAll(".wp-block-kadence-header");for(let c=0;c]+)>/g,function(a,t){return"$"+s[t]}))}if("function"==typeof r){var i=this;return o[Symbol.replace].call(this,e,function(){var e=arguments;return"object"!=typeof e[e.length-1]&&(e=[].slice.call(e)).push(a(e,i)),r.apply(this,e)})}return o[Symbol.replace].call(this,e,r)},_wrapRegExp.apply(this,arguments)}function _AwaitValue(e){this.wrapped=e}function _AsyncGenerator(l){function p(s,e){try{var r=l[s](e),t=r.value,a=t instanceof _AwaitValue;Promise.resolve(a?t.wrapped:t).then(function(e){a?p("return"===s?"return":"next",e):n(r.done?"return":"normal",e)},function(e){p("throw",e)})}catch(e){n("throw",e)}}function n(e,t){"return"===e?i.resolve({value:t,done:!0}):"throw"===e?i.reject(t):i.resolve({value:t,done:!1});(i=i.next)?p(i.key,i.arg):d=null}var i,d;this._invoke=function(e,t){return new Promise(function(r,a){var n={key:e,arg:t,resolve:r,reject:a,next:null};d?d=d.next=n:(i=d=n,p(e,t))})},"function"!=typeof l.return&&(this.return=void 0)}function _wrapAsyncGenerator(e){return function(){return new _AsyncGenerator(e.apply(this,arguments))}}function _awaitAsyncGenerator(e){return new _AwaitValue(e)}function _asyncGeneratorDelegate(a,t){function e(n,r){return o=!0,r=new Promise(function(t){t(a[n](r))}),{done:!1,value:t(r)}}var n={},o=!1;return n["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},n.next=function(a){return o?(o=!1,a):e("next",a)},"function"==typeof a.throw&&(n.throw=function(a){if(o)throw o=!1,a;return e("throw",a)}),"function"==typeof a.return&&(n.return=function(a){return o?(o=!1,a):e("return",a)}),n}function asyncGeneratorStep(l,t,e,r,i,s,a){try{var n=l[s](a),o=n.value}catch(a){return void e(a)}n.done?t(o):Promise.resolve(o).then(r,i)}function _asyncToGenerator(l){return function(){var t=this,e=arguments;return new Promise(function(r,i){function s(e){asyncGeneratorStep(o,r,i,s,n,"next",e)}function n(e){asyncGeneratorStep(o,r,i,s,n,"throw",e)}var o=l.apply(t,e);s(void 0)})}}function _classCallCheck(a,t){if(!(a instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,t){for(var e=0,n;earguments.length?a:e):n.value}},_get.apply(this,arguments)}function set(a,t,e,r){return set="undefined"!=typeof Reflect&&Reflect.set?Reflect.set:function(n,t,e,r){var o=_superPropBase(n,t),a;if(o){if((a=Object.getOwnPropertyDescriptor(o,t)).set)return a.set.call(r,e),!0;if(!a.writable)return!1}if(a=Object.getOwnPropertyDescriptor(r,t)){if(!a.writable)return!1;a.value=e,Object.defineProperty(r,t,a)}else _defineProperty(r,t,e);return!0},set(a,t,e,r)}function _set(a,t,e,r,n){if(!set(a,t,e,r||a)&&n)throw new Error("failed to set property");return e}function _taggedTemplateLiteral(a,t){return t||(t=a.slice(0)),Object.freeze(Object.defineProperties(a,{raw:{value:Object.freeze(t)}}))}function _taggedTemplateLiteralLoose(a,t){return t||(t=a.slice(0)),a.raw=t,a}function _readOnlyError(e){throw new TypeError("\""+e+"\" is read-only")}function _writeOnlyError(e){throw new TypeError("\""+e+"\" is write-only")}function _classNameTDZError(e){throw new Error("Class \""+e+"\" cannot be referenced in computed property keys.")}function _temporalUndefined(){}function _tdz(e){throw new ReferenceError(e+" is not defined - temporal dead zone")}function _temporalRef(a,t){return a===_temporalUndefined?_tdz(t):a}function _slicedToArray(a,t){return _arrayWithHoles(a)||_iterableToArrayLimit(a,t)||_unsupportedIterableToArray(a,t)||_nonIterableRest()}function _slicedToArrayLoose(a,t){return _arrayWithHoles(a)||_iterableToArrayLimitLoose(a,t)||_unsupportedIterableToArray(a,t)||_nonIterableRest()}function _toArray(e){return _arrayWithHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableRest()}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _maybeArrayLike(a,t,e){if(t&&!Array.isArray(t)&&"number"==typeof t.length){var r=t.length;return _arrayLikeToArray(t,void 0!==e&&ea.length)&&(t=a.length);for(var n=0,o=Array(t);n=l.length?{done:!0}:{done:!1,value:l[d++]}},e:function(e){throw e},f:m}}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 s=!0,c=!1,f;return{s:function(){e=e.call(l)},n:function(){var a=e.next();return s=a.done,a},e:function(e){c=!0,f=e},f:function(){try{s||null==e.return||e.return()}finally{if(c)throw f}}}}function _createForOfIteratorHelperLoose(a,n){var e="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(e)return(e=e.call(a)).next.bind(e);if(Array.isArray(a)||(e=_unsupportedIterableToArray(a))||n&&a&&"number"==typeof a.length){e&&(a=e);var o=0;return function(){return o>=a.length?{done:!0}:{done:!1,value:a[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _skipFirstGeneratorNext(a){return function(){var t=a.apply(this,arguments);return t.next(),t}}function _toPrimitive(a,t){if("object"!=typeof a||null===a)return a;var e=a[Symbol.toPrimitive];if(void 0!==e){var r=e.call(a,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(a)}function _toPropertyKey(a){var t=_toPrimitive(a,"string");return"symbol"==typeof t?t:t+""}function _initializerWarningHelper(){throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform.")}function _initializerDefineProperty(a,t,e,r){e&&Object.defineProperty(a,t,{enumerable:e.enumerable,configurable:e.configurable,writable:e.writable,value:e.initializer?e.initializer.call(r):void 0})}function _applyDecoratedDescriptor(n,t,e,r,o){var s={};return Object.keys(r).forEach(function(e){s[e]=r[e]}),s.enumerable=!!s.enumerable,s.configurable=!!s.configurable,("value"in s||s.initializer)&&(s.writable=!0),s=e.slice().reverse().reduce(function(e,a){return a(n,t,e)||e},s),o&&void 0!==s.initializer&&(s.value=s.initializer?s.initializer.call(o):void 0,s.initializer=void 0),void 0===s.initializer&&(Object.defineProperty(n,t,s),s=null),s}function _classPrivateFieldLooseKey(e){return"__private_"+id++ +"_"+e}function _classPrivateFieldLooseBase(a,t){if(!Object.prototype.hasOwnProperty.call(a,t))throw new TypeError("attempted to use private field on non-instance");return a}function _classPrivateFieldGet(a,t){return _classApplyDescriptorGet(a,_classExtractFieldDescriptor(a,t,"get"))}function _classPrivateFieldSet(a,t,e){return _classApplyDescriptorSet(a,_classExtractFieldDescriptor(a,t,"set"),e),e}function _classPrivateFieldDestructureSet(a,t){return _classApplyDescriptorDestructureSet(a,_classExtractFieldDescriptor(a,t,"set"))}function _classExtractFieldDescriptor(a,t,e){if(!t.has(a))throw new TypeError("attempted to "+e+" private field on non-instance");return t.get(a)}function _classStaticPrivateFieldSpecGet(a,t,e){return _classCheckPrivateStaticAccess(a,t),_classCheckPrivateStaticFieldDescriptor(e,"get"),_classApplyDescriptorGet(a,e)}function _classStaticPrivateFieldSpecSet(a,t,e,r){return _classCheckPrivateStaticAccess(a,t),_classCheckPrivateStaticFieldDescriptor(e,"set"),_classApplyDescriptorSet(a,e,r),r}function _classStaticPrivateMethodGet(a,t,e){return _classCheckPrivateStaticAccess(a,t),e}function _classStaticPrivateMethodSet(){throw new TypeError("attempted to set read only static private field")}function _classApplyDescriptorGet(a,t){return t.get?t.get.call(a):t.value}function _classApplyDescriptorSet(a,t,e){if(t.set)t.set.call(a,e);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=e}}function _classApplyDescriptorDestructureSet(a,t){if(t.set)return"__destrObj"in t||(t.__destrObj={set value(e){t.set.call(a,e)}}),t.__destrObj;if(!t.writable)throw new TypeError("attempted to set read only private field");return t}function _classStaticPrivateFieldDestructureSet(a,t,e){return _classCheckPrivateStaticAccess(a,t),_classCheckPrivateStaticFieldDescriptor(e,"set"),_classApplyDescriptorDestructureSet(a,e)}function _classCheckPrivateStaticAccess(a,t){if(a!==t)throw new TypeError("Private static access of wrong provenance")}function _classCheckPrivateStaticFieldDescriptor(a,t){if(void 0===a)throw new TypeError("attempted to "+t+" private static field before its declaration")}function _decorate(l,t,e,r){var i=_getDecoratorsApi();if(r)for(var p=0;p]+)>/g,function(a,t){return"$"+s[t]}))}if("function"==typeof r){var i=this;return o[Symbol.replace].call(this,e,function(){var e=arguments;return"object"!=typeof e[e.length-1]&&(e=[].slice.call(e)).push(a(e,i)),r.apply(this,e)})}return o[Symbol.replace].call(this,e,r)},_wrapRegExp.apply(this,arguments)}function _AwaitValue(e){this.wrapped=e}function _AsyncGenerator(l){function p(s,e){try{var r=l[s](e),t=r.value,a=t instanceof _AwaitValue;Promise.resolve(a?t.wrapped:t).then(function(e){a?p("return"===s?"return":"next",e):n(r.done?"return":"normal",e)},function(e){p("throw",e)})}catch(e){n("throw",e)}}function n(e,t){"return"===e?i.resolve({value:t,done:!0}):"throw"===e?i.reject(t):i.resolve({value:t,done:!1});(i=i.next)?p(i.key,i.arg):d=null}var i,d;this._invoke=function(e,t){return new Promise(function(r,a){var n={key:e,arg:t,resolve:r,reject:a,next:null};d?d=d.next=n:(i=d=n,p(e,t))})},"function"!=typeof l.return&&(this.return=void 0)}function _wrapAsyncGenerator(e){return function(){return new _AsyncGenerator(e.apply(this,arguments))}}function _awaitAsyncGenerator(e){return new _AwaitValue(e)}function _asyncGeneratorDelegate(a,t){function e(n,r){return o=!0,r=new Promise(function(t){t(a[n](r))}),{done:!1,value:t(r)}}var n={},o=!1;return n["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},n.next=function(a){return o?(o=!1,a):e("next",a)},"function"==typeof a.throw&&(n.throw=function(a){if(o)throw o=!1,a;return e("throw",a)}),"function"==typeof a.return&&(n.return=function(a){return o?(o=!1,a):e("return",a)}),n}function asyncGeneratorStep(l,t,e,r,i,s,a){try{var n=l[s](a),o=n.value}catch(a){return void e(a)}n.done?t(o):Promise.resolve(o).then(r,i)}function _asyncToGenerator(l){return function(){var t=this,e=arguments;return new Promise(function(r,i){function s(e){asyncGeneratorStep(o,r,i,s,n,"next",e)}function n(e){asyncGeneratorStep(o,r,i,s,n,"throw",e)}var o=l.apply(t,e);s(void 0)})}}function _classCallCheck(a,t){if(!(a instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,t){for(var e=0,n;earguments.length?a:e):n.value}},_get.apply(this,arguments)}function set(a,t,e,r){return set="undefined"!=typeof Reflect&&Reflect.set?Reflect.set:function(n,t,e,r){var o=_superPropBase(n,t),a;if(o){if((a=Object.getOwnPropertyDescriptor(o,t)).set)return a.set.call(r,e),!0;if(!a.writable)return!1}if(a=Object.getOwnPropertyDescriptor(r,t)){if(!a.writable)return!1;a.value=e,Object.defineProperty(r,t,a)}else _defineProperty(r,t,e);return!0},set(a,t,e,r)}function _set(a,t,e,r,n){if(!set(a,t,e,r||a)&&n)throw new Error("failed to set property");return e}function _taggedTemplateLiteral(a,t){return t||(t=a.slice(0)),Object.freeze(Object.defineProperties(a,{raw:{value:Object.freeze(t)}}))}function _taggedTemplateLiteralLoose(a,t){return t||(t=a.slice(0)),a.raw=t,a}function _readOnlyError(e){throw new TypeError("\""+e+"\" is read-only")}function _writeOnlyError(e){throw new TypeError("\""+e+"\" is write-only")}function _classNameTDZError(e){throw new Error("Class \""+e+"\" cannot be referenced in computed property keys.")}function _temporalUndefined(){}function _tdz(e){throw new ReferenceError(e+" is not defined - temporal dead zone")}function _temporalRef(a,t){return a===_temporalUndefined?_tdz(t):a}function _slicedToArray(a,t){return _arrayWithHoles(a)||_iterableToArrayLimit(a,t)||_unsupportedIterableToArray(a,t)||_nonIterableRest()}function _slicedToArrayLoose(a,t){return _arrayWithHoles(a)||_iterableToArrayLimitLoose(a,t)||_unsupportedIterableToArray(a,t)||_nonIterableRest()}function _toArray(e){return _arrayWithHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableRest()}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _maybeArrayLike(a,t,e){if(t&&!Array.isArray(t)&&"number"==typeof t.length){var r=t.length;return _arrayLikeToArray(t,void 0!==e&&ea.length)&&(t=a.length);for(var n=0,o=Array(t);n=l.length?{done:!0}:{done:!1,value:l[d++]}},e:function(e){throw e},f:m}}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 s=!0,c=!1,f;return{s:function(){e=e.call(l)},n:function(){var a=e.next();return s=a.done,a},e:function(e){c=!0,f=e},f:function(){try{s||null==e.return||e.return()}finally{if(c)throw f}}}}function _createForOfIteratorHelperLoose(a,n){var e="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(e)return(e=e.call(a)).next.bind(e);if(Array.isArray(a)||(e=_unsupportedIterableToArray(a))||n&&a&&"number"==typeof a.length){e&&(a=e);var o=0;return function(){return o>=a.length?{done:!0}:{done:!1,value:a[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _skipFirstGeneratorNext(a){return function(){var t=a.apply(this,arguments);return t.next(),t}}function _toPrimitive(a,t){if("object"!=typeof a||null===a)return a;var e=a[Symbol.toPrimitive];if(void 0!==e){var r=e.call(a,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(a)}function _toPropertyKey(a){var t=_toPrimitive(a,"string");return"symbol"==typeof t?t:t+""}function _initializerWarningHelper(){throw new Error("Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform.")}function _initializerDefineProperty(a,t,e,r){e&&Object.defineProperty(a,t,{enumerable:e.enumerable,configurable:e.configurable,writable:e.writable,value:e.initializer?e.initializer.call(r):void 0})}function _applyDecoratedDescriptor(n,t,e,r,o){var s={};return Object.keys(r).forEach(function(e){s[e]=r[e]}),s.enumerable=!!s.enumerable,s.configurable=!!s.configurable,("value"in s||s.initializer)&&(s.writable=!0),s=e.slice().reverse().reduce(function(e,a){return a(n,t,e)||e},s),o&&void 0!==s.initializer&&(s.value=s.initializer?s.initializer.call(o):void 0,s.initializer=void 0),void 0===s.initializer&&(Object.defineProperty(n,t,s),s=null),s}function _classPrivateFieldLooseKey(e){return"__private_"+id+++"_"+e}function _classPrivateFieldLooseBase(a,t){if(!Object.prototype.hasOwnProperty.call(a,t))throw new TypeError("attempted to use private field on non-instance");return a}function _classPrivateFieldGet(a,t){return _classApplyDescriptorGet(a,_classExtractFieldDescriptor(a,t,"get"))}function _classPrivateFieldSet(a,t,e){return _classApplyDescriptorSet(a,_classExtractFieldDescriptor(a,t,"set"),e),e}function _classPrivateFieldDestructureSet(a,t){return _classApplyDescriptorDestructureSet(a,_classExtractFieldDescriptor(a,t,"set"))}function _classExtractFieldDescriptor(a,t,e){if(!t.has(a))throw new TypeError("attempted to "+e+" private field on non-instance");return t.get(a)}function _classStaticPrivateFieldSpecGet(a,t,e){return _classCheckPrivateStaticAccess(a,t),_classCheckPrivateStaticFieldDescriptor(e,"get"),_classApplyDescriptorGet(a,e)}function _classStaticPrivateFieldSpecSet(a,t,e,r){return _classCheckPrivateStaticAccess(a,t),_classCheckPrivateStaticFieldDescriptor(e,"set"),_classApplyDescriptorSet(a,e,r),r}function _classStaticPrivateMethodGet(a,t,e){return _classCheckPrivateStaticAccess(a,t),e}function _classStaticPrivateMethodSet(){throw new TypeError("attempted to set read only static private field")}function _classApplyDescriptorGet(a,t){return t.get?t.get.call(a):t.value}function _classApplyDescriptorSet(a,t,e){if(t.set)t.set.call(a,e);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=e}}function _classApplyDescriptorDestructureSet(a,t){if(t.set)return"__destrObj"in t||(t.__destrObj={set value(e){t.set.call(a,e)}}),t.__destrObj;if(!t.writable)throw new TypeError("attempted to set read only private field");return t}function _classStaticPrivateFieldDestructureSet(a,t,e){return _classCheckPrivateStaticAccess(a,t),_classCheckPrivateStaticFieldDescriptor(e,"set"),_classApplyDescriptorDestructureSet(a,e)}function _classCheckPrivateStaticAccess(a,t){if(a!==t)throw new TypeError("Private static access of wrong provenance")}function _classCheckPrivateStaticFieldDescriptor(a,t){if(void 0===a)throw new TypeError("attempted to "+t+" private static field before its declaration")}function _decorate(l,t,e,r){var i=_getDecoratorsApi();if(r)for(var p=0;p= 14.0.0" + } + }, "node_modules/@algolia/autocomplete-core": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz", - "integrity": "sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==", + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.8.tgz", + "integrity": "sha512-3YEorYg44niXcm7gkft3nXYItHd44e8tmh4D33CTszPgP0QWkaLEaFywiNyJBo7UL/mqObA/G9RYuU7R8tN1IA==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-plugin-algolia-insights": "1.19.2", - "@algolia/autocomplete-shared": "1.19.2" + "@algolia/autocomplete-plugin-algolia-insights": "1.19.8", + "@algolia/autocomplete-shared": "1.19.8" } }, "node_modules/@algolia/autocomplete-js": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-js/-/autocomplete-js-1.19.2.tgz", - "integrity": "sha512-pUElPLQypSGwewihADgV/g57EWepn/jHoArnbtyJNvn4onJCDwmJGelCm5+dN/3dAYZq7QO2ExFEjGsoiG/nUg==", + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-js/-/autocomplete-js-1.19.8.tgz", + "integrity": "sha512-9Sfr9Un3vObdtnj6IqzxoD9XisjFJxA9WAyVxmOkwTD9aVluyNwDeEWeGLy12xhRyILjA5C7byto159cZcdEEA==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-core": "1.19.2", - "@algolia/autocomplete-preset-algolia": "1.19.2", - "@algolia/autocomplete-shared": "1.19.2", + "@algolia/autocomplete-core": "1.19.8", + "@algolia/autocomplete-preset-algolia": "1.19.8", + "@algolia/autocomplete-shared": "1.19.8", "htm": "^3.1.1", "preact": "^10.13.2" }, @@ -96,24 +114,24 @@ } }, "node_modules/@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz", - "integrity": "sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==", + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.8.tgz", + "integrity": "sha512-ZvJWO8ZZJDpc1LNM2TTBdmQsZBLMR4rU5iNR2OYvEeFBiaf/0ESnRSSLQbryarJY4SVxtoz6A2ZtDMNM+iQEAA==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-shared": "1.19.2" + "@algolia/autocomplete-shared": "1.19.8" }, "peerDependencies": { "search-insights": ">= 1 < 3" } }, "node_modules/@algolia/autocomplete-preset-algolia": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.19.2.tgz", - "integrity": "sha512-/Z9tDn84fnyUyjajvWRskOX7p/BDKK5PidEA4Y/aAl0c6VfHu5dMkTDG090CIiskLUgpkHacLbz+A10gMBP++Q==", + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.19.8.tgz", + "integrity": "sha512-5XhJe5uXXLrt+C1MjIv1/BfGNHZyD1xkAYMVANTjdY+PXwO4o+3YIK2XGU0MxHTGryy70G6+xVO9TB7xA+3hGQ==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-shared": "1.19.2" + "@algolia/autocomplete-shared": "1.19.8" }, "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", @@ -121,9 +139,9 @@ } }, "node_modules/@algolia/autocomplete-shared": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz", - "integrity": "sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==", + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.8.tgz", + "integrity": "sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ==", "license": "MIT", "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", @@ -131,180 +149,180 @@ } }, "node_modules/@algolia/client-abtesting": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.34.1.tgz", - "integrity": "sha512-M4zb6J7q+pg9V9Xk0k1WDgvupfCtXcxjKGTrNVYemiredLVGOmvVIPAUjg2rx4QmK7DWNApWLsieYwk7PAaOXw==", + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.50.2.tgz", + "integrity": "sha512-52iq0vHy1sphgnwoZyx5PmbEt8hsh+m7jD123LmBs6qy4GK7LbYZIeKd+nSnSipN2zvKRZ2zScS6h9PW3J7SXg==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.34.1", - "@algolia/requester-browser-xhr": "5.34.1", - "@algolia/requester-fetch": "5.34.1", - "@algolia/requester-node-http": "5.34.1" + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-analytics": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.34.1.tgz", - "integrity": "sha512-h18zlL+bVUlbNE92olo1d/r6HQPkxhmP7yCpA1osERwpgC6F058kWm0O0aYdrHJIHtWBcs9aRqq7IkQSkpjPJg==", + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.50.2.tgz", + "integrity": "sha512-WpPIUg+cSG2aPUG0gS8Ko9DwRgbRPUZxJkolhL2aCsmSlcEEZT65dILrfg5ovcxtx0Kvr+xtBVsTMtsQWRtPDQ==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.34.1", - "@algolia/requester-browser-xhr": "5.34.1", - "@algolia/requester-fetch": "5.34.1", - "@algolia/requester-node-http": "5.34.1" + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.34.1.tgz", - "integrity": "sha512-otPWALs72KvmVuP0CN0DI6sqVx1jQWKi+/DgAiP8DysVMgiNlva3GDKTtAK6XVGlT08f4h32FNuL0yQODuCfKA==", + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.50.2.tgz", + "integrity": "sha512-Gj2MgtArGcsr82kIqRlo6/dCAFjrs2gLByEqyRENuT7ugrSMFuqg1vDzeBjRL1t3EJEJCFtT0PLX3gB8A6Hq4Q==", "license": "MIT", "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-insights": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.34.1.tgz", - "integrity": "sha512-SNDb5wuEpQFM6S5Shk2iytLMusvGycm9uTuYh7cGa1h3U7O65OjjjIgQ0lLY5HPybHNtmXr4Zh/EZ23pZvAJHg==", + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.50.2.tgz", + "integrity": "sha512-CUqoid5jDpmrc0oK3/xuZXFt6kwT0P9Lw7/nsM14YTr6puvmi+OUKmURpmebQF22S2vCG8L1DAoXXujxQUi/ug==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.34.1", - "@algolia/requester-browser-xhr": "5.34.1", - "@algolia/requester-fetch": "5.34.1", - "@algolia/requester-node-http": "5.34.1" + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-personalization": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.34.1.tgz", - "integrity": "sha512-T8z9KqYJOup83Hw0mgICYWfJoLh//FNWbf4roFd95ZJzZ4v1cN/hvr7Eqml1qWMoCkJb4y/XQjrXsJ6Y9XnMLw==", + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.50.2.tgz", + "integrity": "sha512-AndZWFoc0gbP5901OeQJ73BazgGgSGiBEba4ohdoJuZwHTO2Gio8Q4L1VLmytMBYcviVigB0iICToMvEJxI4ug==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.34.1", - "@algolia/requester-browser-xhr": "5.34.1", - "@algolia/requester-fetch": "5.34.1", - "@algolia/requester-node-http": "5.34.1" + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.34.1.tgz", - "integrity": "sha512-YA0kC4CwO1mc1dliNgbFgToweRa7Uihjz3izEaV4cXninF1v4SaOrPkQUsiFPprAffjMzOUoT7vahQZ/HZyiKQ==", + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.50.2.tgz", + "integrity": "sha512-NWoL+psEkz5dIzweaByVXuEB45wS8/rk0E0AhMMnaVJdVs7TcACPH2/OURm+N0xRDITkTHqCna823rd6Uqntdg==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.34.1", - "@algolia/requester-browser-xhr": "5.34.1", - "@algolia/requester-fetch": "5.34.1", - "@algolia/requester-node-http": "5.34.1" + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.34.1.tgz", - "integrity": "sha512-bt5hC9vvjaKvdvsgzfXJ42Sl3qjQqoi/FD8V7HOQgtNFhwSauZOlgLwFoUiw67sM+r7ehF7QDk5WRDgY7fAkIg==", + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.50.2.tgz", + "integrity": "sha512-ypSboUJ3XJoQz5DeDo82hCnrRuwq3q9ZdFhVKAik9TnZh1DvLqoQsrbBjXg7C7zQOtV/Qbge/HmyoV6V5L7MhQ==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.34.1", - "@algolia/requester-browser-xhr": "5.34.1", - "@algolia/requester-fetch": "5.34.1", - "@algolia/requester-node-http": "5.34.1" + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/ingestion": { - "version": "1.34.1", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.34.1.tgz", - "integrity": "sha512-QLxiBskQxFGzPqKZvBNEvNN95kgDCbBd2X29ZGfh6Sr2QOSU34US6Z9x2duiF4o9FwsB0i6eQ2c9vHfuH0lAQg==", + "version": "1.50.2", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.50.2.tgz", + "integrity": "sha512-VlR2FRXLw2bCB94SQo6zxg/Qi+547aOji6Pb+dKE7h1DMCCY317St+OpjpmgzE+bT2O9ALIc0V4nVIBOd7Gy+Q==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.34.1", - "@algolia/requester-browser-xhr": "5.34.1", - "@algolia/requester-fetch": "5.34.1", - "@algolia/requester-node-http": "5.34.1" + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/monitoring": { - "version": "1.34.1", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.34.1.tgz", - "integrity": "sha512-NteCvWcWXXdnPGyZH8rXHslcf2pM1WGDNMGNZFXLFtOt1Gf1Tjy2t0NZLp+Mxap3JMV4mbYmactbXrvpQf/lLA==", + "version": "1.50.2", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.50.2.tgz", + "integrity": "sha512-Cmvfp2+qopzQt8OilU97rhLhosq7ZrB6uieok3EwFUqG/aalPg6DgfCmu0yJMrYe+KMC1qRVt1MTRAUwLknUMQ==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.34.1", - "@algolia/requester-browser-xhr": "5.34.1", - "@algolia/requester-fetch": "5.34.1", - "@algolia/requester-node-http": "5.34.1" + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/recommend": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.34.1.tgz", - "integrity": "sha512-UdgDSrunLIBAAAxQlYLXYLnYFN4wkzkrAYx+wMLEk/pzASWyza3BkecbUFVqoYOBIgwo7Mt4iymzVtFkzL2uCQ==", + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.50.2.tgz", + "integrity": "sha512-jrkuyKoOM7dFWQ/6Y4hQAse2SC3L/RldG6GnPjMvAj65h+7Ubb51S0pKk4ofSStF0xm4LCNe0C4T6XX4nOFDiQ==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.34.1", - "@algolia/requester-browser-xhr": "5.34.1", - "@algolia/requester-fetch": "5.34.1", - "@algolia/requester-node-http": "5.34.1" + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.34.1.tgz", - "integrity": "sha512-567LfFTc9VOiPtuySQohoqaWMeohYWbXK71aMSin+SLMgeKX7hz5LrVmkmMQj9udwWK6/mtHEYZGPYHSuXpLQg==", + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.50.2.tgz", + "integrity": "sha512-4107YLJqCudPiBUlwnk6oTSUVwU7ab+qL1SfQGEDYI8DZH5gsf1ekPt9JykXRKYXf2IfouFL5GiCY/PHTFIjYw==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.34.1" + "@algolia/client-common": "5.50.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-fetch": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.34.1.tgz", - "integrity": "sha512-YRbygPgGBEik5U593JvyjgxFjcsyZMR25eIQxNHvSQumdAzt5A4E4Idw3yXnwhrmMdjML54ZXT7EAjnTjWy8Xw==", + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.50.2.tgz", + "integrity": "sha512-vOrd3MQpLgmf6wXAueTuZ/cA0W4uRwIHHaxNy3h+a6YcNn6bCV/gFdZuv3F13v593zRU2k5R75NmvRWLenvMrw==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.34.1" + "@algolia/client-common": "5.50.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.34.1.tgz", - "integrity": "sha512-o0mqRYbS82Rt4DE02Od7RL6pNtV7oSxScPuIw8LW4aqO2V5eCF05Pry/SnUgcI/Vb2QCYC66hytBCqzyC/toZA==", + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.50.2.tgz", + "integrity": "sha512-Mu9BFtgzGqDUy5Bcs2nMyoILIFSN13GKQaklKAFIsd0K3/9CpNyfeBc+/+Qs6mFZLlxG9qzullO7h+bjcTBuGQ==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.34.1" + "@algolia/client-common": "5.50.2" }, "engines": { "node": ">= 14.0.0" @@ -325,12 +343,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -339,9 +357,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", - "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, "license": "MIT", "engines": { @@ -380,9 +398,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.0.tgz", - "integrity": "sha512-N4ntErOlKvcbTt01rr5wj3y55xnIdx1ymrfIr8C2WnM1Y9glFgWaGDEULJIazOX3XM9NRzhfJ6zZnQ1sBNWU+w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz", + "integrity": "sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==", "dev": true, "license": "MIT", "dependencies": { @@ -399,13 +417,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", - "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.0", - "@babel/types": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -428,13 +446,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", + "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -445,18 +463,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", - "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.27.1", + "@babel/traverse": "^7.28.6", "semver": "^6.3.1" }, "engines": { @@ -467,14 +485,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", - "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "regexpu-core": "^6.2.0", + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", "semver": "^6.3.1" }, "engines": { @@ -485,17 +503,17 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", - "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "debug": "^4.4.1", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", "lodash.debounce": "^4.0.8", - "resolve": "^1.22.10" + "resolve": "^1.22.11" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -511,42 +529,42 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", - "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", - "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.3" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -569,9 +587,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, "license": "MIT", "engines": { @@ -597,15 +615,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", - "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -638,9 +656,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -657,41 +675,41 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", - "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.1", - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", - "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.27.6" + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", - "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.0" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -701,14 +719,14 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", - "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -768,14 +786,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", - "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -879,13 +897,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", - "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -895,13 +913,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -937,13 +955,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1063,13 +1081,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1112,15 +1130,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", - "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.28.0" + "@babel/traverse": "^7.29.0" }, "engines": { "node": ">=6.9.0" @@ -1130,14 +1148,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", - "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { @@ -1164,13 +1182,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz", - "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1180,14 +1198,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", - "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1197,14 +1215,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", - "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1214,18 +1232,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz", - "integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-globals": "^7.28.0", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.28.0" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1235,14 +1253,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", - "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/template": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1252,14 +1270,14 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", - "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.0" + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1269,14 +1287,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", - "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1302,14 +1320,14 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1335,13 +1353,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", - "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1402,13 +1420,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", - "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1434,13 +1452,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", - "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1483,14 +1501,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", - "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1500,16 +1518,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", - "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" }, "engines": { "node": ">=6.9.0" @@ -1536,14 +1554,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1569,13 +1587,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", - "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1585,13 +1603,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", - "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1601,17 +1619,17 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz", - "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/traverse": "^7.28.0" + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1638,13 +1656,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", - "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1654,13 +1672,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", - "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { @@ -1687,14 +1705,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", - "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1704,15 +1722,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", - "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1806,17 +1824,17 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development/node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", - "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", + "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-jsx": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1843,13 +1861,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.28.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.1.tgz", - "integrity": "sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1912,13 +1930,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", - "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { @@ -1977,17 +1995,17 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz", - "integrity": "sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1" + "@babel/plugin-syntax-typescript": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2013,14 +2031,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", - "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2047,14 +2065,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", - "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2177,15 +2195,15 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz", - "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-transform-react-display-name": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", "@babel/plugin-transform-react-jsx": "^7.27.1", "@babel/plugin-transform-react-jsx-development": "^7.27.1", "@babel/plugin-transform-react-pure-annotations": "^7.27.1" @@ -2198,17 +2216,17 @@ } }, "node_modules/@babel/preset-react/node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", - "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", + "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-jsx": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2238,40 +2256,40 @@ } }, "node_modules/@babel/runtime": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", - "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", - "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", "debug": "^4.3.1" }, "engines": { @@ -2279,13 +2297,13 @@ } }, "node_modules/@babel/types": { - "version": "7.28.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz", - "integrity": "sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -2298,6 +2316,50 @@ "dev": true, "license": "MIT" }, + "node_modules/@cacheable/memory": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.8.tgz", + "integrity": "sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cacheable/utils": "^2.4.0", + "@keyv/bigmap": "^1.3.1", + "hookified": "^1.15.1", + "keyv": "^5.6.0" + } + }, + "node_modules/@cacheable/memory/node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/@cacheable/utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.4.1.tgz", + "integrity": "sha512-eiFgzCbIneyMlLOmNG4g9xzF7Hv3Mga4LjxjcSC/ues6VYq2+gUbQI8JqNuw/ZM8tJIeIaBGpswAsqV2V7ApgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hashery": "^1.5.1", + "keyv": "^5.6.0" + } + }, + "node_modules/@cacheable/utils/node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, "node_modules/@csstools/css-parser-algorithms": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", @@ -2321,6 +2383,31 @@ "@csstools/css-tokenizer": "^3.0.4" } }, + "node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.3.tgz", + "integrity": "sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "peerDependencies": { + "css-tree": "^3.2.1" + }, + "peerDependenciesMeta": { + "css-tree": { + "optional": true + } + } + }, "node_modules/@csstools/css-tokenizer": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", @@ -2452,14 +2539,48 @@ } }, "node_modules/@dual-bundle/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz", + "integrity": "sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==", "dev": true, "license": "MIT", "funding": { "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/JounQin" + } + }, + "node_modules/@emnapi/core": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz", + "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz", + "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" } }, "node_modules/@emotion/babel-plugin": { @@ -2607,9 +2728,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2639,9 +2760,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { @@ -2673,9 +2794,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -2697,9 +2818,9 @@ "license": "Python-2.0" }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -2708,9 +2829,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -2728,9 +2849,9 @@ "license": "MIT" }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -2751,32 +2872,32 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.2.tgz", - "integrity": "sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", "license": "MIT", "dependencies": { - "@floating-ui/utils": "^0.2.10" + "@floating-ui/utils": "^0.2.11" } }, "node_modules/@floating-ui/dom": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.2.tgz", - "integrity": "sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", "license": "MIT", "dependencies": { - "@floating-ui/core": "^1.7.2", - "@floating-ui/utils": "^0.2.10" + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" } }, "node_modules/@floating-ui/react": { - "version": "0.27.13", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.13.tgz", - "integrity": "sha512-Qmj6t9TjgWAvbygNEu1hj4dbHI9CY0ziCMIJrmYoDIn9TUAH5lRmiIeZmRd4c6QEZkzdoH7jNnoNyoY1AIESiA==", + "version": "0.27.19", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.19.tgz", + "integrity": "sha512-31B8h5mm8YxotlE7/AU/PhNAl8eWxAmjL/v2QOxroDNkTFLk3Uu82u63N3b6TXa4EGJeeZLVcd/9AlNlVqzeog==", "license": "MIT", "dependencies": { - "@floating-ui/react-dom": "^2.1.4", - "@floating-ui/utils": "^0.2.10", + "@floating-ui/react-dom": "^2.1.8", + "@floating-ui/utils": "^0.2.11", "tabbable": "^6.0.0" }, "peerDependencies": { @@ -2785,12 +2906,12 @@ } }, "node_modules/@floating-ui/react-dom": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.4.tgz", - "integrity": "sha512-JbbpPhp38UmXDDAu60RJmbeme37Jbgsm7NrHGgzYYFKmblzRUh6Pa641dII6LsjwF4XlScDrde2UAzDo/b9KPw==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz", + "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==", "license": "MIT", "dependencies": { - "@floating-ui/dom": "^1.7.2" + "@floating-ui/dom": "^1.7.6" }, "peerDependencies": { "react": ">=16.8.0", @@ -2798,20 +2919,20 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", - "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", "license": "MIT" }, "node_modules/@formatjs/ecma402-abstract": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.4.tgz", - "integrity": "sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.6.tgz", + "integrity": "sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==", "dev": true, "license": "MIT", "dependencies": { "@formatjs/fast-memoize": "2.2.7", - "@formatjs/intl-localematcher": "0.6.1", + "@formatjs/intl-localematcher": "0.6.2", "decimal.js": "^10.4.3", "tslib": "^2.8.0" } @@ -2827,32 +2948,32 @@ } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.2.tgz", - "integrity": "sha512-AfiMi5NOSo2TQImsYAg8UYddsNJ/vUEv/HaNqiFjnI3ZFfWihUtD5QtuX6kHl8+H+d3qvnE/3HZrfzgdWpsLNA==", + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.4.tgz", + "integrity": "sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw==", "dev": true, "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.4", - "@formatjs/icu-skeleton-parser": "1.8.14", + "@formatjs/ecma402-abstract": "2.3.6", + "@formatjs/icu-skeleton-parser": "1.8.16", "tslib": "^2.8.0" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.14", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.14.tgz", - "integrity": "sha512-i4q4V4qslThK4Ig8SxyD76cp3+QJ3sAqr7f6q9VVfeGtxG9OhiAk3y9XF6Q41OymsKzsGQ6OQQoJNY4/lI8TcQ==", + "version": "1.8.16", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.16.tgz", + "integrity": "sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ==", "dev": true, "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/ecma402-abstract": "2.3.6", "tslib": "^2.8.0" } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.1.tgz", - "integrity": "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.2.tgz", + "integrity": "sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==", "dev": true, "license": "MIT", "dependencies": { @@ -2898,37 +3019,74 @@ "node": ">=10.13.0" } }, + "node_modules/@hapi/address": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-5.1.1.tgz", + "integrity": "sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/formula": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-3.0.2.tgz", + "integrity": "sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.7.tgz", + "integrity": "sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/pinpoint": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz", + "integrity": "sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==", "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@hapi/tlds": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@hapi/tlds/-/tlds-1.1.6.tgz", + "integrity": "sha512-xdi7A/4NZokvV0ewovme3aUO5kQhW9pQ2YD1hRqZGhhSi5rBv4usHYidVocXSi9eihYsznZxLtAiEYYUL6VBGw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@hapi/hoek": "^9.0.0" + "@hapi/hoek": "^11.0.2" } }, "node_modules/@hcaptcha/loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hcaptcha/loader/-/loader-2.0.0.tgz", - "integrity": "sha512-fFQH6ApU/zCCl6Y1bnbsxsp1Er/lKX+qlgljrpWDeFcenpEtoP68hExlKSXECospzKLeSWcr06cbTjlR/x3IJA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@hcaptcha/loader/-/loader-2.3.0.tgz", + "integrity": "sha512-i4lnNxKBe+COf3R1nFZEWaZoHIoJjvDgWqvcNrdZq8ehoSNMN6KVZ56dcQ02qKie2h3+BkbkwlJA9DOIuLlK/g==", "license": "MIT" }, "node_modules/@hcaptcha/react-hcaptcha": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@hcaptcha/react-hcaptcha/-/react-hcaptcha-1.12.0.tgz", - "integrity": "sha512-QiHnQQ52k8SJJSHkc3cq4TlYzag7oPd4f5ZqnjVSe4fJDSlZaOQFtu5F5AYisVslwaitdDELPVLRsRJxiiI0Aw==", + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/@hcaptcha/react-hcaptcha/-/react-hcaptcha-1.17.4.tgz", + "integrity": "sha512-rIvgesG1N7SS9sAYYHFoWm+nXqRrxq7RcA9z2pKkDWV+S1GdfmrTNYA1aPyVWVe3eowphTCwyDJvl97Swwy0mw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.17.9", - "@hcaptcha/loader": "^2.0.0" + "@hcaptcha/loader": "^2.3.0" }, "peerDependencies": { "react": ">= 16.3.0", @@ -2952,9 +3110,9 @@ } }, "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -2963,9 +3121,9 @@ } }, "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -3034,9 +3192,9 @@ } }, "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", + "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", "dev": true, "license": "MIT", "engines": { @@ -3248,9 +3406,9 @@ } }, "node_modules/@jest/reporters/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -3366,9 +3524,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", - "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", @@ -3385,9 +3543,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.10.tgz", - "integrity": "sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==", + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "dev": true, "license": "MIT", "dependencies": { @@ -3396,41 +3554,201 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", - "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", - "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@keyv/serialize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.0.tgz", - "integrity": "sha512-RlDgexML7Z63Q8BSaqhXdCYNBy/JQnqYIwxofUrNLGCblOMHp+xux2Q8nLMLlPpgHQPoU0Do8Z6btCpRBEqZ8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@lottiefiles/dotlottie-react": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-react/-/dotlottie-react-0.15.2.tgz", - "integrity": "sha512-eShVwCALLC0ew+FPzAW8iW/yhsO7yNTuUqZ9iN4y6To6oVmh3bMFZQBHnmwgDUOIZJBJADRwZ6g97TyzP8H3sg==", + "node_modules/@kadence/components": { + "version": "1.1.8", + "resolved": "git+ssh://git@github.com/stellarwp/kadence-components.git#04a8b1389bbd7f8eb79882eff303b641fbf3782d", + "license": "ISC", "dependencies": { - "@lottiefiles/dotlottie-web": "0.50.2" + "@floating-ui/react": "^0.26.16", + "@wordpress/icons": "^9.49.0", + "classnames": "^2.2.6", + "colord": "^2.9.3", + "react-color": "^2.18.0", + "react-select": "^5.10.2" + }, + "peerDependencies": { + "@kadence/helpers": "*", + "@kadence/icons": "*", + "react": ">=17 <19", + "react-dom": ">=17 <19" + }, + "peerDependenciesMeta": { + "@kadence/helpers": { + "optional": true + }, + "@kadence/icons": { + "optional": true + } + } + }, + "node_modules/@kadence/components/node_modules/@floating-ui/react": { + "version": "0.26.28", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz", + "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.1.2", + "@floating-ui/utils": "^0.2.8", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@kadence/components/node_modules/@wordpress/element": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-5.35.0.tgz", + "integrity": "sha512-puswpGcIdS+0A2g28uHriMkZqqRCmzFczue5Tk99VNtzBdehyk7Ae+DZ4xw5yT6GqYai8NTqv6MRwCB78uh5Mw==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", + "@wordpress/escape-html": "^2.58.0", + "change-case": "^4.1.2", + "is-plain-object": "^5.0.0", + "react": "^18.3.0", + "react-dom": "^18.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@kadence/components/node_modules/@wordpress/escape-html": { + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.58.0.tgz", + "integrity": "sha512-9YJXMNfzkrhHEVP1jFEhgijbZqW8Mt3NHIMZjIQoWtBf7QE86umpYpGGBXzYC0YlpGTRGzZTBwYaqFKxjeaSgA==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@kadence/components/node_modules/@wordpress/icons": { + "version": "9.49.0", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-9.49.0.tgz", + "integrity": "sha512-Z8F+ledkfkcKDuS1c/RkM0dEWdfv2AXs6bCgey89p0atJSscf7qYbMJR9zE5rZ5aqXyFfV0DAFKJEgayNqneNQ==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/element": "^5.35.0", + "@wordpress/primitives": "^3.56.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@kadence/components/node_modules/@wordpress/primitives": { + "version": "3.56.0", + "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.56.0.tgz", + "integrity": "sha512-NXBq1ODjl6inMWx/l7KCbATcjdoeIOqYeL9i9alqdAfWeKx1EH9PIvKWylIkqZk7erXxCxldiRkuyjTtwjNBxw==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/element": "^5.35.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@kadence/components/node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/@kadence/helpers": { + "version": "1.1.0", + "resolved": "git+ssh://git@github.com/stellarwp/kadence-helpers.git#64f9b4f742bc4e15449769a5871931c0e7791dc3", + "license": "ISC", + "dependencies": { + "@kadence/icons": "git+https://github.com/stellarwp/kadence-icons.git#package" + }, + "peerDependencies": { + "react": ">=17 <19", + "react-dom": ">=17 <19" + } + }, + "node_modules/@kadence/icons": { + "version": "1.1.2", + "resolved": "git+ssh://git@github.com/stellarwp/kadence-icons.git#568e2a957a886dadb9509d4d0286759cac2947cf", + "license": "ISC", + "peerDependencies": { + "react": ">=17 <19", + "react-dom": ">=17 <19" + } + }, + "node_modules/@keyv/bigmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.1.tgz", + "integrity": "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hashery": "^1.4.0", + "hookified": "^1.15.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "keyv": "^5.6.0" + } + }, + "node_modules/@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@lottiefiles/dotlottie-react": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-react/-/dotlottie-react-0.15.2.tgz", + "integrity": "sha512-eShVwCALLC0ew+FPzAW8iW/yhsO7yNTuUqZ9iN4y6To6oVmh3bMFZQBHnmwgDUOIZJBJADRwZ6g97TyzP8H3sg==", + "license": "MIT", + "dependencies": { + "@lottiefiles/dotlottie-web": "0.50.2" }, "peerDependencies": { "react": "^17 || ^18 || ^19" @@ -3442,6 +3760,19 @@ "integrity": "sha512-CKABl0kI9yY48FamEMDsYWKQQWP4VgInhwOSG/1Q2I7gOSHGv6YalNiOkiYRjVznEjavuRvfarX6cMKhcbZKew==", "license": "MIT" }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -3491,9 +3822,9 @@ } }, "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz", + "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3742,9 +4073,9 @@ } }, "node_modules/@opentelemetry/instrumentation-http/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -3986,9 +4317,9 @@ } }, "node_modules/@opentelemetry/instrumentation/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -4064,9 +4395,9 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.36.0.tgz", - "integrity": "sha512-TtxJSRD8Ohxp6bKkhrm27JRHAxPczQA7idtcTOMYI+wQRRrfgqxHv1cFbCApcSnNjtXkmzFozn6jQtFrOmbjPQ==", + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.40.0.tgz", + "integrity": "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -4090,18 +4421,18 @@ } }, "node_modules/@parcel/watcher": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", - "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, "dependencies": { - "detect-libc": "^1.0.3", + "detect-libc": "^2.0.3", "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">= 10.0.0" @@ -4111,25 +4442,25 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.1", - "@parcel/watcher-darwin-arm64": "2.5.1", - "@parcel/watcher-darwin-x64": "2.5.1", - "@parcel/watcher-freebsd-x64": "2.5.1", - "@parcel/watcher-linux-arm-glibc": "2.5.1", - "@parcel/watcher-linux-arm-musl": "2.5.1", - "@parcel/watcher-linux-arm64-glibc": "2.5.1", - "@parcel/watcher-linux-arm64-musl": "2.5.1", - "@parcel/watcher-linux-x64-glibc": "2.5.1", - "@parcel/watcher-linux-x64-musl": "2.5.1", - "@parcel/watcher-win32-arm64": "2.5.1", - "@parcel/watcher-win32-ia32": "2.5.1", - "@parcel/watcher-win32-x64": "2.5.1" + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" } }, "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", - "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", "cpu": [ "arm64" ], @@ -4148,9 +4479,9 @@ } }, "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", - "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", "cpu": [ "arm64" ], @@ -4169,9 +4500,9 @@ } }, "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", - "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", "cpu": [ "x64" ], @@ -4190,9 +4521,9 @@ } }, "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", - "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", "cpu": [ "x64" ], @@ -4211,13 +4542,16 @@ } }, "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", - "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", "cpu": [ "arm" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4232,13 +4566,16 @@ } }, "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", - "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", "cpu": [ "arm" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4253,13 +4590,16 @@ } }, "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", - "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4274,13 +4614,16 @@ } }, "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", - "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4295,13 +4638,16 @@ } }, "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", - "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4316,13 +4662,16 @@ } }, "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", - "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4337,9 +4686,9 @@ } }, "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", - "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", "cpu": [ "arm64" ], @@ -4358,9 +4707,9 @@ } }, "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", - "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", "cpu": [ "ia32" ], @@ -4379,9 +4728,9 @@ } }, "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", - "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", "cpu": [ "x64" ], @@ -4399,10 +4748,24 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/@parcel/watcher/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@paulirish/trace_engine": { - "version": "0.0.57", - "resolved": "https://registry.npmjs.org/@paulirish/trace_engine/-/trace_engine-0.0.57.tgz", - "integrity": "sha512-s+JNJ53B1MiEqCOD2hnK96wFTRRStxFmtm6QaIe2jiNI+lkS9mYEgnHOH2caQ/dEPn6wY+f2u5dW6aFYjmbaiw==", + "version": "0.0.59", + "resolved": "https://registry.npmjs.org/@paulirish/trace_engine/-/trace_engine-0.0.59.tgz", + "integrity": "sha512-439NUzQGmH+9Y017/xCchBP9571J4bzhpcNhrxorf7r37wcyJZkgUfrUsRL3xl+JDcZ6ORhoFCzCw98c6S3YHw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4516,9 +4879,9 @@ } }, "node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -4529,9 +4892,9 @@ } }, "node_modules/@react-google-maps/api": { - "version": "2.20.7", - "resolved": "https://registry.npmjs.org/@react-google-maps/api/-/api-2.20.7.tgz", - "integrity": "sha512-ys7uri3V6gjhYZUI43srHzSKDC6/jiKTwHNlwXFTvjeaJE3M3OaYBt9FZKvJs8qnOhL6i6nD1BKJoi1KrnkCkg==", + "version": "2.20.8", + "resolved": "https://registry.npmjs.org/@react-google-maps/api/-/api-2.20.8.tgz", + "integrity": "sha512-wtLYFtCGXK3qbIz1H5to3JxbosPnKsvjDKhqGylXUb859EskhzR7OpuNt0LqdLarXUtZCJTKzPn3BNaekNIahg==", "license": "MIT", "dependencies": { "@googlemaps/js-api-loader": "1.16.8", @@ -4566,9 +4929,9 @@ "license": "MIT" }, "node_modules/@sentry/core": { - "version": "9.40.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.40.0.tgz", - "integrity": "sha512-cZkuz6BDna6VXSqvlWnrRsaDx4QBKq1PcfQrqhVz8ljs0M7Gcl+Mtj8dCzUxx12fkYM62hQXG72DEGNlAQpH/Q==", + "version": "9.47.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.47.1.tgz", + "integrity": "sha512-KX62+qIt4xgy8eHKHiikfhz2p5fOciXd0Cl+dNzhgPFq8klq4MGMNaf148GB3M/vBqP4nw/eFvRMAayFCgdRQw==", "dev": true, "license": "MIT", "engines": { @@ -4576,9 +4939,9 @@ } }, "node_modules/@sentry/node": { - "version": "9.40.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-9.40.0.tgz", - "integrity": "sha512-8bVWChXzGH4QmbVw+H/yiJ6zxqPDhnx11fEAP+vpL1UBm1cAV67CoB4eS7OqQdPC8gF/BQb2sqF0TvY/12NPpA==", + "version": "9.47.1", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-9.47.1.tgz", + "integrity": "sha512-CDbkasBz3fnWRKSFs6mmaRepM2pa+tbZkrqhPWifFfIkJDidtVW40p6OnquTvPXyPAszCnDZRnZT14xyvNmKPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4612,9 +4975,9 @@ "@opentelemetry/sdk-trace-base": "^1.30.1", "@opentelemetry/semantic-conventions": "^1.34.0", "@prisma/instrumentation": "6.11.1", - "@sentry/core": "9.40.0", - "@sentry/node-core": "9.40.0", - "@sentry/opentelemetry": "9.40.0", + "@sentry/core": "9.47.1", + "@sentry/node-core": "9.47.1", + "@sentry/opentelemetry": "9.47.1", "import-in-the-middle": "^1.14.2", "minimatch": "^9.0.0" }, @@ -4623,14 +4986,14 @@ } }, "node_modules/@sentry/node-core": { - "version": "9.40.0", - "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-9.40.0.tgz", - "integrity": "sha512-97JONDa8NxItX0Cz5WQPMd1gQjzodt38qQ0OzZNFvYg2Cpvxob8rxwsNA08Liu7B97rlvsvqMt+Wbgw8SAMfgQ==", + "version": "9.47.1", + "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-9.47.1.tgz", + "integrity": "sha512-7TEOiCGkyShJ8CKtsri9lbgMCbB+qNts2Xq37itiMPN2m+lIukK3OX//L8DC5nfKYZlgikrefS63/vJtm669hQ==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/core": "9.40.0", - "@sentry/opentelemetry": "9.40.0", + "@sentry/core": "9.47.1", + "@sentry/opentelemetry": "9.47.1", "import-in-the-middle": "^1.14.2" }, "engines": { @@ -4647,13 +5010,13 @@ } }, "node_modules/@sentry/opentelemetry": { - "version": "9.40.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-9.40.0.tgz", - "integrity": "sha512-POQ/ZFmBbi15z3EO9gmTExpxCfW0Ug+WooA8QZPJaizo24gcF5AMOgwuGFwT2YLw/2HdPWjPUPujNNGdCWM6hw==", + "version": "9.47.1", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-9.47.1.tgz", + "integrity": "sha512-STtFpjF7lwzeoedDJV+5XA6P89BfmFwFftmHSGSe3UTI8z8IoiR5yB6X2vCjSPvXlfeOs13qCNNCEZyznxM8Xw==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/core": "9.40.0" + "@sentry/core": "9.47.1" }, "engines": { "node": ">=18" @@ -4666,34 +5029,10 @@ "@opentelemetry/semantic-conventions": "^1.34.0" } }, - "node_modules/@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", "dev": true, "license": "MIT" }, @@ -4745,54 +5084,61 @@ "integrity": "sha512-5I30evTJcAJQXt6vJ26g2xEkG+l1nXcpEw4xpKh0/FWQ8ozmAeTbtniVtVmz2sH1Es3vgfC4SS8B2X4o5JMptA==", "license": "MIT" }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, "node_modules/@stellarwp/perf-adapter-iframe": { - "version": "1.0.0-beta.9", - "resolved": "https://npm.pkg.github.com/download/@stellarwp/perf-adapter-iframe/1.0.0-beta.9/4772d9ef882fa2489e96830013a13a523044bccc", - "integrity": "sha512-6J2JCKzJ+RQfBaPBFu9rY9X1Okp5IZ2sUPtaUw6pk+iu4gC9umw9gYW6/g4IJaOIOkYXJbKu/dg25dew6XNOzA==", + "version": "1.0.0-beta.19", + "resolved": "https://npm.pkg.github.com/download/@stellarwp/perf-adapter-iframe/1.0.0-beta.19/c849cd03c44bc2b7629549e7995dddf92fcbdae1", + "integrity": "sha512-VvfDavwb2EhEFZyBeLkpjLSkJTeZCKcRXNrVZ/QaZgVnYJZc6V4YC03Oz6yl0qt3XijBPZ76cPrN6YK/c/fDnw==", "dependencies": { - "@stellarwp/perf-analyzer": "1.0.0-beta.9", - "@stellarwp/perf-logger-browser": "1.0.0-beta.9" + "@stellarwp/perf-analyzer": "1.0.0-beta.19", + "@stellarwp/perf-logger-browser": "1.0.0-beta.19" } }, "node_modules/@stellarwp/perf-analyzer": { - "version": "1.0.0-beta.9", - "resolved": "https://npm.pkg.github.com/download/@stellarwp/perf-analyzer/1.0.0-beta.9/136ce030f07ec7660f07a1cef449d8718f895a58", - "integrity": "sha512-PZLfpfEblIVfDnZFjPMbAxhYFBY4bZByq6uOPL6vJ0CumZleytAmXRucr0eqj9OHDAGo2mIxPh5aBVKoMxNceg==", + "version": "1.0.0-beta.19", + "resolved": "https://npm.pkg.github.com/download/@stellarwp/perf-analyzer/1.0.0-beta.19/e19ba8d7d1e09a1f2cda9f12f303a665750c0b46", + "integrity": "sha512-e8tBkyjf4yPo5sEr0eGIh5XAFG0ICmiZxh7K9lArUE7wFjobgSuPXX9KgiMOQPUa5KqVvppYMT7WLDiZ1MSUug==", "dependencies": { - "@stellarwp/perf-logger": "1.0.0-beta.9" + "@stellarwp/perf-logger": "1.0.0-beta.19" } }, "node_modules/@stellarwp/perf-analyzer-client": { - "version": "1.0.0-beta.18", - "resolved": "https://npm.pkg.github.com/download/@stellarwp/perf-analyzer-client/1.0.0-beta.18/ecb318331a806f214b84eff181360d46d94a822d", - "integrity": "sha512-SiEH+D693ENGvD/hxSe+srGqeXO8r4OAUAjOTym0bxFLcDuasb6UtQoAExIfd3YS7XY/lxxNfwDqubjDNRmnRQ==", + "version": "1.0.0-beta.19", + "resolved": "https://npm.pkg.github.com/download/@stellarwp/perf-analyzer-client/1.0.0-beta.19/32c0aa0cc1ec30c8534cb23dcebb80c7ccfac5d3", + "integrity": "sha512-nLJEkzTbmK/aHOLxwYtv+UjETmSfYX2h1s7CQFjIj7fgHpazqwDiRqgkYIpkHLXR/g5Bzcldtcz/6jFPNtmM5g==", "dependencies": { - "@stellarwp/perf-adapter-iframe": "1.0.0-beta.9", - "@stellarwp/perf-analyzer": "1.0.0-beta.9", - "@stellarwp/perf-logger-browser": "1.0.0-beta.9" + "@stellarwp/perf-adapter-iframe": "1.0.0-beta.19", + "@stellarwp/perf-analyzer": "1.0.0-beta.19", + "@stellarwp/perf-logger-browser": "1.0.0-beta.19" } }, "node_modules/@stellarwp/perf-logger": { - "version": "1.0.0-beta.9", - "resolved": "https://npm.pkg.github.com/download/@stellarwp/perf-logger/1.0.0-beta.9/f11f959ed0d838603486ac8e2d715152a22e3d0e", - "integrity": "sha512-kGRANQ6PtUnGSROZxbJvcf8mH9YrxVLDmTXPaIootQ02xhvi7i4JEefoVx7f00PBVJuOqENrvtbZJ8+dSaMZ9A==", + "version": "1.0.0-beta.19", + "resolved": "https://npm.pkg.github.com/download/@stellarwp/perf-logger/1.0.0-beta.19/e105e8059743e9483ddaf279990cc404b907cbd0", + "integrity": "sha512-gF/BohBMl8e8aIql9hy8Tp1u0Sy49IgwZKKlkBsaPlB3YMJC/spDCH04c/h967r5zGGR5N8zs+i+TIbph0Kn0Q==", "dependencies": { - "@stellarwp/perf-logger-types": "1.0.0-beta.9", + "@stellarwp/perf-logger-types": "1.0.0-beta.19", "pino": "^8.21.0" } }, "node_modules/@stellarwp/perf-logger-browser": { - "version": "1.0.0-beta.9", - "resolved": "https://npm.pkg.github.com/download/@stellarwp/perf-logger-browser/1.0.0-beta.9/f31560de00d3fdd483d0c4d59c728cd54c923880", - "integrity": "sha512-kieoypoZijFNW6H7gv+rOJBJCBUFphDZzKBbUGQxUdXCr01kEJC+4DH6IemtYntsDH1aOhP0rhwOOc/HAnyyfQ==", + "version": "1.0.0-beta.19", + "resolved": "https://npm.pkg.github.com/download/@stellarwp/perf-logger-browser/1.0.0-beta.19/7181cecc576b48a2fddeeb59dcb26bdb6a83d8d6", + "integrity": "sha512-yV/6h4Fj4hTx6C2IIIPvrADlgi/DQiM8I4p0TKofu2bqL5qRjxlMVm19IPGaYG/EB8XO0wKrimzGpjd7mcsq6Q==", "dependencies": { - "@stellarwp/perf-logger-types": "1.0.0-beta.9" + "@stellarwp/perf-logger-types": "1.0.0-beta.19" } }, "node_modules/@stellarwp/perf-logger-types": { - "version": "1.0.0-beta.9", - "resolved": "https://npm.pkg.github.com/download/@stellarwp/perf-logger-types/1.0.0-beta.9/0da080f86565d7da25900cac2a79eebe9b7a4767", - "integrity": "sha512-UaVOIAD9Dz5VKd8rgNrkonodiOSxdAdcTNpGH+YHC8bx7qaYuGlx9Lwr2o8rzjlw4W4MT+fBb8CUJiFkIphpJA==" + "version": "1.0.0-beta.19", + "resolved": "https://npm.pkg.github.com/download/@stellarwp/perf-logger-types/1.0.0-beta.19/da39c81f92635c9da692dc9c70ea46adf63e1703", + "integrity": "sha512-SyO5XK6+imjlfKnSAJ4U3b4pLThXy7REC2jEl878Kau3uhzNCoVCaUXgZsXaU9bsXZgm+smpvoKJydb3fMGLUQ==" }, "node_modules/@stylistic/stylelint-plugin": { "version": "3.1.3", @@ -5036,9 +5382,9 @@ } }, "node_modules/@svgr/core/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -5146,9 +5492,9 @@ } }, "node_modules/@svgr/plugin-svgo/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -5234,14 +5580,15 @@ "dev": true, "license": "MIT" }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=10.13.0" + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" } }, "node_modules/@types/babel__core": { @@ -5280,13 +5627,13 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", - "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.20.7" + "@babel/types": "^7.28.2" } }, "node_modules/@types/body-parser": { @@ -5361,22 +5708,22 @@ "license": "MIT" }, "node_modules/@types/express": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", - "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "dev": true, "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", - "@types/serve-static": "*" + "@types/serve-static": "^1" } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz", - "integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", "dev": true, "license": "MIT", "dependencies": { @@ -5387,9 +5734,9 @@ } }, "node_modules/@types/express/node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", "dev": true, "license": "MIT", "dependencies": { @@ -5399,17 +5746,6 @@ "@types/send": "*" } }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, "node_modules/@types/google.maps": { "version": "3.58.1", "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.58.1.tgz", @@ -5434,9 +5770,9 @@ "license": "MIT" }, "node_modules/@types/http-proxy": { - "version": "1.17.16", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", - "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", "dev": true, "license": "MIT", "dependencies": { @@ -5503,13 +5839,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", @@ -5528,19 +5857,19 @@ } }, "node_modules/@types/node": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz", - "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==", + "version": "25.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", + "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.8.0" + "undici-types": "~7.19.0" } }, "node_modules/@types/node-forge": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.13.tgz", - "integrity": "sha512-zePQJSW5QkwSHKRApqWCVKeKoSOt4xvEnLENZPjyvm9Ezdf/EyDeJM7jqLzOwjVICQQzvLZ63T55MKdJB5H6ww==", + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", "dev": true, "license": "MIT", "dependencies": { @@ -5589,9 +5918,9 @@ "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", "dev": true, "license": "MIT" }, @@ -5603,13 +5932,13 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "18.3.23", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz", - "integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==", + "version": "18.3.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.28.tgz", + "integrity": "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==", "license": "MIT", "dependencies": { "@types/prop-types": "*", - "csstype": "^3.0.2" + "csstype": "^3.2.2" } }, "node_modules/@types/react-dom": { @@ -5638,20 +5967,19 @@ "license": "MIT" }, "node_modules/@types/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", "dev": true, "license": "MIT" }, "node_modules/@types/send": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", - "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/mime": "^1", "@types/node": "*" } }, @@ -5666,15 +5994,26 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", - "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", "dev": true, "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", - "@types/send": "*" + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" } }, "node_modules/@types/shimmer": { @@ -5694,13 +6033,6 @@ "@types/node": "*" } }, - "node_modules/@types/source-list-map": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.6.tgz", - "integrity": "sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", @@ -5708,13 +6040,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/tapable": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.12.tgz", - "integrity": "sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/tedious": { "version": "4.0.14", "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz", @@ -5732,105 +6057,48 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/uglify-js": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.5.tgz", - "integrity": "sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==", + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, "license": "MIT", "dependencies": { - "source-map": "^0.6.1" + "@types/node": "*" } }, - "node_modules/@types/uglify-js/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" } }, - "node_modules/@types/webpack": { - "version": "4.41.40", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.40.tgz", - "integrity": "sha512-u6kMFSBM9HcoTpUXnL6mt2HSzftqb3JgYV6oxIgL2dl6sX6aCa5k6SOkzv5DuZjBTPUE/dJltKtwwuqrkZHpfw==", + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@types/node": "*", - "@types/tapable": "^1", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "anymatch": "^3.0.0", - "source-map": "^0.6.0" + "@types/node": "*" } }, - "node_modules/@types/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" - } - }, - "node_modules/@types/webpack/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", "dev": true, "license": "MIT", "dependencies": { @@ -5864,9 +6132,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -5995,9 +6263,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -6034,9 +6302,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -6084,6 +6352,299 @@ "dev": true, "license": "ISC" }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", @@ -6293,20 +6854,20 @@ } }, "node_modules/@wordpress/babel-preset-default": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-8.27.0.tgz", - "integrity": "sha512-FzfXQL/DAlNrOeiz88p0ReV1TLofo0vWZfQOdd7OswwzfYsMlXue7ms7Qo23z8tag+nNYnqQp71atUD5vox+fg==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-8.43.0.tgz", + "integrity": "sha512-L2EOVoc0EXlz/QJRW1KuJxiKtVntD5bqFzMTizPmNdwr6BIyVOWs7mDOCldTTCKcYcLSGMbTFj7F24rKNC4Cmw==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { "@babel/core": "7.25.7", + "@babel/plugin-syntax-import-attributes": "7.26.0", "@babel/plugin-transform-react-jsx": "7.25.7", "@babel/plugin-transform-runtime": "7.25.7", "@babel/preset-env": "7.25.7", "@babel/preset-typescript": "7.25.7", - "@babel/runtime": "7.25.7", - "@wordpress/browserslist-config": "^6.27.0", - "@wordpress/warning": "^3.27.0", + "@wordpress/browserslist-config": "^6.43.0", + "@wordpress/warning": "^3.43.0", "browserslist": "^4.21.10", "core-js": "^3.31.0", "react": "^18.3.0" @@ -6316,23 +6877,10 @@ "npm": ">=8.19.2" } }, - "node_modules/@wordpress/babel-preset-default/node_modules/@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@wordpress/base-styles": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-6.3.0.tgz", - "integrity": "sha512-Xu7hDd95c96zOk/gAvANlSWFRl6YEduyjc2sN4pSwCM7zHIgwBELdLg9CyzgwuR7Y3XDNdBgptsS9OUHBiC22Q==", + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-6.19.0.tgz", + "integrity": "sha512-SAZA6dhfC5X00s9PRrL9diY59WegiF0MuAWupkoKnYk3a2IAQbRUUTrh3j3wRyr08ljqefmifX5GR3hz/VwQaw==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -6341,9 +6889,9 @@ } }, "node_modules/@wordpress/browserslist-config": { - "version": "6.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-6.27.0.tgz", - "integrity": "sha512-lBl7ggE05IF3jp3USh2xaz/OnaO1dj4HaySGXXD56Z9ikRcmneyjiux3UmzeHYPPp00XXOcjZ7xGIMXQJOq2BQ==", + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-6.43.0.tgz", + "integrity": "sha512-W6Htq0S8g9RE02zwIB4HgbxwFeL9tijIleAIjp3pMuodP6ReRcWjvOX9O3DyfaRKrhl7JCFhT/M1RkKK3hQnYg==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -6352,9 +6900,9 @@ } }, "node_modules/@wordpress/dependency-extraction-webpack-plugin": { - "version": "6.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-6.27.0.tgz", - "integrity": "sha512-bCj39UT+jIJOm8lCQEXjz4SdADl1jVfccWs3nlZHbW5fxc+1Mh+lApnXKgmge9Ap+cuxvg9ewg+Hr3k8HC6dQg==", + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-6.43.0.tgz", + "integrity": "sha512-4u7AvCEISGv9Q/sLHnV1+msZMKvHrDJ+R52Ezn3x2chIiOWFZWvr109BctwyUxvcn6SZgz9l0Ag88ffzdsjbqA==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -6369,14 +6917,13 @@ } }, "node_modules/@wordpress/e2e-test-utils-playwright": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-1.27.0.tgz", - "integrity": "sha512-UYjpPeI6vMZKWuZxegUoYu1zU+KumhUTm4EgRbo2TVxwkxeMrOX6XX7DP+NzaPj/DjkfVzfeRz9Ygby7lr6/LA==", + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-1.43.0.tgz", + "integrity": "sha512-suQCgtDVLRnGhdD7yWUVOTCGefW5perb0vTwQqWUbc/JyCdGnEztvGvpINXs7LV36U3YX7MYPEimCCcJc5frJA==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { "change-case": "^4.1.2", - "form-data": "^4.0.0", "get-port": "^5.1.1", "lighthouse": "^12.2.2", "mime": "^3.0.0", @@ -6387,7 +6934,8 @@ "npm": ">=8.19.2" }, "peerDependencies": { - "@playwright/test": ">=1" + "@playwright/test": ">=1", + "@types/node": "^20.17.10" } }, "node_modules/@wordpress/e2e-test-utils-playwright/node_modules/change-case": { @@ -6412,15 +6960,14 @@ } }, "node_modules/@wordpress/element": { - "version": "6.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.27.0.tgz", - "integrity": "sha512-gHk4B0J0f7bEsDoUBdTm22vPQwmEWLZxyaojgRyx1ncE2IyktfmubD/q2NIcMEKh7p+Jq3ZUwzPcpchpvkH2mA==", + "version": "6.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.43.0.tgz", + "integrity": "sha512-eUWSBXnwO2y6ejg0RsZUnAk0E+tnuuCbCReZsZAgGJZykqek1Rt2hqxtvLZXPyuqzOR2XcR7k4hSf5l5BAJbhA==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "7.25.7", - "@types/react": "^18.2.79", - "@types/react-dom": "^18.2.25", - "@wordpress/escape-html": "^3.27.0", + "@types/react": "^18.3.27", + "@types/react-dom": "^18.3.1", + "@wordpress/escape-html": "^3.43.0", "change-case": "^4.1.2", "is-plain-object": "^5.0.0", "react": "^18.3.0", @@ -6431,18 +6978,6 @@ "npm": ">=8.19.2" } }, - "node_modules/@wordpress/element/node_modules/@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@wordpress/element/node_modules/change-case": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", @@ -6464,44 +6999,30 @@ } }, "node_modules/@wordpress/escape-html": { - "version": "3.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.27.0.tgz", - "integrity": "sha512-1LBB/xOFBUySSmVpd2nFwIZ8fVnP8dLNFl0wLprHVLtW6ZcdykO2ITY9bkaHu2lZ9HLRgHL7A/3R7MsJ1azYkg==", + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.43.0.tgz", + "integrity": "sha512-Mo6b0y1vEnj/x7MVp+pe5IYYLs2X5ke5spuncrReO2Qb+iXw/d7694kpMGHyIVzBPj3ekwxEYezirW5OQrppOw==", "license": "GPL-2.0-or-later", - "dependencies": { - "@babel/runtime": "7.25.7" - }, "engines": { "node": ">=18.12.0", "npm": ">=8.19.2" } }, - "node_modules/@wordpress/escape-html/node_modules/@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@wordpress/eslint-plugin": { - "version": "22.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-22.13.0.tgz", - "integrity": "sha512-cD7NpkCwH3bPhNcS16P0SEvlXrlx5XN5yCT7CZo3DReRTFlOMKswIg/csqFgvypIW8L2Qla5Rzva1qVsWnQEvg==", + "version": "22.22.0", + "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-22.22.0.tgz", + "integrity": "sha512-DLGm5i8Gn0vjkZGKF49U2pYME5Jl9AvmoMJB2G508d+sB/oTSkPmM0baUP7G5zxbd1aqfNTaD0KjdyGyWFFKOA==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { "@babel/eslint-parser": "7.25.7", "@typescript-eslint/eslint-plugin": "^6.4.1", "@typescript-eslint/parser": "^6.4.1", - "@wordpress/babel-preset-default": "^8.27.0", - "@wordpress/prettier-config": "^4.27.0", + "@wordpress/babel-preset-default": "^8.36.0", + "@wordpress/prettier-config": "^4.36.0", "cosmiconfig": "^7.0.0", "eslint-config-prettier": "^8.3.0", + "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-import": "^2.25.2", "eslint-plugin-jest": "^27.4.3", "eslint-plugin-jsdoc": "^46.4.6", @@ -6552,32 +7073,16 @@ } }, "node_modules/@wordpress/hooks": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.27.0.tgz", - "integrity": "sha512-sGaNVZKMxwnhGSge0tZZsGfImLPimiulUkM7hivQ2CSCgibTpgxFRBJ1r7gbNLDF+qHQK9a26K8fGfKnAal6Cg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.43.0.tgz", + "integrity": "sha512-BY7GPjEwhOlgkavVak40E3RtA8Z9ehydqTZckRoesMRjXYfxKSzr1C1FT4wAPS5uXM1pNlWivfofMaJjVNQu5w==", "dev": true, "license": "GPL-2.0-or-later", - "dependencies": { - "@babel/runtime": "7.25.7" - }, "engines": { "node": ">=18.12.0", "npm": ">=8.19.2" } }, - "node_modules/@wordpress/hooks/node_modules/@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@wordpress/i18n": { "version": "5.26.0", "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-5.26.0.tgz", @@ -6614,14 +7119,14 @@ } }, "node_modules/@wordpress/icons": { - "version": "10.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-10.27.0.tgz", - "integrity": "sha512-KeOz3aLtd7p+cA287gmGzpC9kIO1lxPBn/lDPkXfc8oz482XqNJKohdW/7ZMlEWx1uEcZUI+g3vfSA+gKDgjUQ==", + "version": "10.32.0", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-10.32.0.tgz", + "integrity": "sha512-1WvJdT361X1LnetYBpBWUjAVXZzl+pBdIwHbYRAp8ej47EI/igPmNxmq81nFd40s8fer/9qtipielcqSI6H2rA==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/element": "^6.27.0", - "@wordpress/primitives": "^4.27.0" + "@wordpress/element": "^6.32.0", + "@wordpress/primitives": "^4.32.0" }, "engines": { "node": ">=18.12.0", @@ -6641,14 +7146,14 @@ } }, "node_modules/@wordpress/jest-console": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-8.27.0.tgz", - "integrity": "sha512-MTKc5oWkmzVqSP0SxH5XCxZEpFUgd+uBn2byEjtbSPqTi3n6uou+LybtRWHSKeCAHVBcq3Bsng1V14oJRyl7Pg==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-8.43.0.tgz", + "integrity": "sha512-cKkbZGXAwRc9GkQ6U0QQs3aa6N/dV/F6QZdMdcObb3cg+jXSw1N6k86Q5ZFSlpzYXrBgqNl3I59xq1cRifAA4Q==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "7.25.7", - "jest-matcher-utils": "^29.6.2" + "jest-matcher-utils": "^29.6.2", + "jest-mock": "^29.6.2" }, "engines": { "node": ">=18.12.0", @@ -6658,27 +7163,14 @@ "jest": ">=29" } }, - "node_modules/@wordpress/jest-console/node_modules/@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@wordpress/jest-preset-default": { - "version": "12.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-12.27.0.tgz", - "integrity": "sha512-J2sYHUB5fdmJ9IVnb5AJkFUMusVAQCZdFvphYSZZ+wq9qvyEp8SrTcIT1uj5zE/S/HdpkTQKRaJ56x0RZI9lFQ==", + "version": "12.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-12.43.0.tgz", + "integrity": "sha512-PY5HoTa5oQ+oIzxh6f4J9h0P1mqNDC0MoJuLGaw4/Yu+zBSvQuW67B9D29pQcSuLsLMtaR6R1Um/HmU+M//3rw==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { - "@wordpress/jest-console": "^8.27.0", + "@wordpress/jest-console": "^8.43.0", "babel-jest": "29.7.0" }, "engines": { @@ -6691,9 +7183,9 @@ } }, "node_modules/@wordpress/npm-package-json-lint-config": { - "version": "5.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-5.27.0.tgz", - "integrity": "sha512-BEumv8etwMVgz1xvO1TOuSbOVB4dBwhtM6dSHchd4m5RPfmt/FpX+NWToSbF06+l+Ha6PVry72TiQpdFok9c8w==", + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-5.43.0.tgz", + "integrity": "sha512-W98SP/WpGaQ9VziO1Ez88J5Lhr7l63d44RWtANueHvAndCMm2E6PgVSQTMEKUzimWI+RqQlY8AcHBx1DPyacxA==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -6705,14 +7197,15 @@ } }, "node_modules/@wordpress/postcss-plugins-preset": { - "version": "5.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-5.27.0.tgz", - "integrity": "sha512-iIhl8fc4zeN1rehf/bvC2+oIFSTiFfnZf2aTDCzErQTgvGZ33cUlfx7CrpJPcVYCQcbvp4IdaYgaVaw/lnpmuQ==", + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-5.43.0.tgz", + "integrity": "sha512-BlyQK1nb5TK0wLqnBiHpaz1ENngpZR8vf6gv3g2KCLstXJPl9WkM2g6GvKaDBOjodzVnGM2xs6tqlBlvfjKYxw==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { - "@wordpress/base-styles": "^6.3.0", - "autoprefixer": "^10.4.20" + "@wordpress/base-styles": "^6.19.0", + "autoprefixer": "^10.4.20", + "postcss-import": "^16.1.1" }, "engines": { "node": ">=18.12.0", @@ -6723,9 +7216,9 @@ } }, "node_modules/@wordpress/prettier-config": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-4.27.0.tgz", - "integrity": "sha512-G9sNZ13tgoCwYxZ49jvWMROcRw4JuQjlcct275CAz5wc+blTyob8YPlWAyAJY1h1Q0Nr8cuclS+kdzwD8HCUkg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-4.43.0.tgz", + "integrity": "sha512-l52vxzgp61vfWq6fLIbAZl2efFMbEQ+BLGoekcyHw7h0rmg3u6YWTPdRRnzIfKAkSiArF8K80uvJ1eHYWiTMUg==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -6737,13 +7230,12 @@ } }, "node_modules/@wordpress/primitives": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-4.27.0.tgz", - "integrity": "sha512-ZIhpB4ZmZwMSsrELx4mzhRvxAoqgk8sSE3PaRt/ue4GXFoRRQgI3RVCwEdiNPcsQXId9lOQIhAJNDt5Wa0Fbgg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-4.43.0.tgz", + "integrity": "sha512-lU1vBSDyRkAYFEfbLyzjophDvIVCeQ7uuEXv5dBAbxkSLSsCcX6oLbWSwjkCEHp1R+9UtukLvbmXDdAbDYiEOA==", "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "7.25.7", - "@wordpress/element": "^6.27.0", + "@wordpress/element": "^6.43.0", "clsx": "^2.1.1" }, "engines": { @@ -6754,45 +7246,43 @@ "react": "^18.0.0" } }, - "node_modules/@wordpress/primitives/node_modules/@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, + "node_modules/@wordpress/private-apis": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.43.0.tgz", + "integrity": "sha512-ADZB20UjyQgdL43uFkFE9tm49URMRphydi+ngaxbAJnT/3n5x7WSzfXMBqrdQOuBpdy44O9yHz7JtzLXRapkjQ==", + "dev": true, + "license": "GPL-2.0-or-later", "engines": { - "node": ">=6.9.0" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, "node_modules/@wordpress/scripts": { - "version": "30.20.0", - "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-30.20.0.tgz", - "integrity": "sha512-LV3WG1UR7QeE4zE6nkWi6r3bmPn+MyjWOA0Ycpy23kOoabeurSob/hurfPUjzg4/i4wipJZ9MQyV4uWSEGHt4w==", + "version": "30.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-30.27.0.tgz", + "integrity": "sha512-gXGptazCxAaR7g8kcN5joj7B5fCm0VeBHOmnDBs2dbQ4W4F3tfzdg6CTEj8LonF9bWQXlSy3ku8EqWCdkSG9Xw==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { "@babel/core": "7.25.7", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", "@svgr/webpack": "^8.0.1", - "@wordpress/babel-preset-default": "^8.27.0", - "@wordpress/browserslist-config": "^6.27.0", - "@wordpress/dependency-extraction-webpack-plugin": "^6.27.0", - "@wordpress/e2e-test-utils-playwright": "^1.27.0", - "@wordpress/eslint-plugin": "^22.13.0", - "@wordpress/jest-preset-default": "^12.27.0", - "@wordpress/npm-package-json-lint-config": "^5.27.0", - "@wordpress/postcss-plugins-preset": "^5.27.0", - "@wordpress/prettier-config": "^4.27.0", - "@wordpress/stylelint-config": "^23.19.0", + "@wordpress/babel-preset-default": "^8.34.0", + "@wordpress/browserslist-config": "^6.34.0", + "@wordpress/dependency-extraction-webpack-plugin": "^6.34.0", + "@wordpress/e2e-test-utils-playwright": "^1.34.0", + "@wordpress/eslint-plugin": "^22.20.0", + "@wordpress/jest-preset-default": "^12.34.0", + "@wordpress/npm-package-json-lint-config": "^5.34.0", + "@wordpress/postcss-plugins-preset": "^5.34.0", + "@wordpress/prettier-config": "^4.34.0", + "@wordpress/stylelint-config": "^23.26.0", "adm-zip": "^0.5.9", "babel-jest": "29.7.0", "babel-loader": "9.2.1", "browserslist": "^4.21.10", "chalk": "^4.0.0", "check-node-version": "^4.1.0", - "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^10.2.0", "cross-spawn": "^7.0.6", "css-loader": "^6.2.0", @@ -6842,9 +7332,15 @@ "npm": ">=8.19.2" }, "peerDependencies": { - "@playwright/test": "^1.51.1", + "@playwright/test": "^1.56.1", + "@wordpress/env": "^10.0.0", "react": "^18.0.0", "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@wordpress/env": { + "optional": true + } } }, "node_modules/@wordpress/scripts/node_modules/json2php": { @@ -6872,13 +7368,14 @@ } }, "node_modules/@wordpress/stylelint-config": { - "version": "23.19.0", - "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-23.19.0.tgz", - "integrity": "sha512-qriyn7AVc+h18yCh7oK/XY776THnENL7kuZi9IEM08k2dVmBt4hOeJlEKqumkBCBqtA/+JFPT38GlJpaV1+cHg==", + "version": "23.35.0", + "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-23.35.0.tgz", + "integrity": "sha512-rBgpD6St0tJZpX5OSipeZ8oAFRU3hQZAfF1BT+DTU+O821YWtwYYiUsIA/z7jCCfL4gUuNA9/ndIAffKMQZOtg==", "dev": true, "license": "MIT", "dependencies": { "@stylistic/stylelint-plugin": "^3.0.1", + "@wordpress/theme": "^0.10.0", "stylelint-config-recommended": "^14.0.1", "stylelint-config-recommended-scss": "^14.1.0" }, @@ -6891,36 +7388,50 @@ "stylelint-scss": "^6.4.0" } }, - "node_modules/@wordpress/url": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-4.27.0.tgz", - "integrity": "sha512-7+WJ2g5xvfRjsnLRixXDVZzEg7jQUYRNPOBbjO95D9kJ3Sm63Lu4xc3FOikeojOUJv5/Z9c2zKOsaotNkWHexg==", + "node_modules/@wordpress/theme": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@wordpress/theme/-/theme-0.10.0.tgz", + "integrity": "sha512-U8CaRvGzeQtFfGQFsKarcbzPEH+jfXJmpOlIpt4bq2goW9CgeWFlDC29p0oyzoMn1Ga9hX+c8ay3nUgSbhmSSA==", + "dev": true, "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "7.25.7", - "remove-accents": "^0.5.0" + "@wordpress/element": "^6.43.0", + "@wordpress/private-apis": "^1.43.0", + "colorjs.io": "^0.6.0", + "memize": "^2.1.0" }, "engines": { "node": ">=18.12.0", "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0", + "stylelint": "^16.8.2" + }, + "peerDependenciesMeta": { + "stylelint": { + "optional": true + } } }, - "node_modules/@wordpress/url/node_modules/@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", - "license": "MIT", + "node_modules/@wordpress/url": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-4.43.0.tgz", + "integrity": "sha512-FFq/KZUlhAszI9y232BpQ83+58CtRV5M0SFuv7pQq+DxNDuWNHp8gjdX9WOnHkO/MrKAyVTI0jX9YoWF2RNEZw==", + "license": "GPL-2.0-or-later", "dependencies": { - "regenerator-runtime": "^0.14.0" + "remove-accents": "^0.5.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, "node_modules/@wordpress/warning": { - "version": "3.27.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.27.0.tgz", - "integrity": "sha512-AGcCLU2urtV7C4i4Oji8tL9froFPDie+99A2N3tqjZU1v7Csw4UgDrptYRyENjhXLBe9ZzVlf1mZmgH/MQPAHA==", + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.43.0.tgz", + "integrity": "sha512-hZn++Njsops73oG2DHpjgriUkHTgk1ykvZtHEDllPSNx5Zf6S8KJ00kcToHjIj/4p1iiDjag2zSX5Yi9ySJHvg==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -6987,15 +7498,15 @@ } }, "node_modules/ace-builds": { - "version": "1.43.2", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.43.2.tgz", - "integrity": "sha512-3wzJUJX0RpMc03jo0V8Q3bSb/cKPnS7Nqqw8fVHsCCHweKMiTIxT3fP46EhjmVy6MCuxwP801ere+RW245phGw==", + "version": "1.43.6", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.43.6.tgz", + "integrity": "sha512-L1ddibQ7F3vyXR2k2fg+I8TQTPWVA6CKeDQr/h2+8CeyTp3W6EQL8xNFZRTztuP8xNOAqL3IYPqdzs31GCjDvg==", "license": "BSD-3-Clause" }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", "bin": { @@ -7050,9 +7561,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", "dev": true, "license": "MIT", "dependencies": { @@ -7063,9 +7574,9 @@ } }, "node_modules/adm-zip": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", - "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.17.tgz", + "integrity": "sha512-+Ut8d9LLqwEvHHJl1+PIHqoyDxFgVN847JTVM3Izi3xHDWPE4UtzzXysMZQs64DMcrJfBeS/uoEP4AD3HQHnQQ==", "dev": true, "license": "MIT", "engines": { @@ -7086,9 +7597,9 @@ } }, "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { @@ -7144,24 +7655,25 @@ } }, "node_modules/algoliasearch": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.34.1.tgz", - "integrity": "sha512-s70HlfBgswgEdmCYkUJG8i/ULYhbkk8N9+N8JsWUwszcp7eauPEr5tIX4BY0qDGeKWQ/qZvmt4mxwTusYY23sg==", - "license": "MIT", - "dependencies": { - "@algolia/client-abtesting": "5.34.1", - "@algolia/client-analytics": "5.34.1", - "@algolia/client-common": "5.34.1", - "@algolia/client-insights": "5.34.1", - "@algolia/client-personalization": "5.34.1", - "@algolia/client-query-suggestions": "5.34.1", - "@algolia/client-search": "5.34.1", - "@algolia/ingestion": "1.34.1", - "@algolia/monitoring": "1.34.1", - "@algolia/recommend": "5.34.1", - "@algolia/requester-browser-xhr": "5.34.1", - "@algolia/requester-fetch": "5.34.1", - "@algolia/requester-node-http": "5.34.1" + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.50.2.tgz", + "integrity": "sha512-Tfp26yoNWurUjfgK4GOrVJQhSNXu9tJtHfFFNosgT2YClG+vPyUjX/gbC8rG39qLncnZg8Fj34iarQWpMkqefw==", + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.16.2", + "@algolia/client-abtesting": "5.50.2", + "@algolia/client-analytics": "5.50.2", + "@algolia/client-common": "5.50.2", + "@algolia/client-insights": "5.50.2", + "@algolia/client-personalization": "5.50.2", + "@algolia/client-query-suggestions": "5.50.2", + "@algolia/client-search": "5.50.2", + "@algolia/ingestion": "1.50.2", + "@algolia/monitoring": "1.50.2", + "@algolia/recommend": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" }, "engines": { "node": ">= 14.0.0" @@ -7455,16 +7967,6 @@ "node": ">=8" } }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array.prototype.findlast": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", @@ -7690,19 +8192,20 @@ } }, "node_modules/atomically": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.0.3.tgz", - "integrity": "sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.1.1.tgz", + "integrity": "sha512-P4w9o2dqARji6P7MHprklbfiArZAWvo07yW7qs3pdljb3BWr12FIB7W+p0zJiuiVsUpRO0iZn1kFFcpPegg0tQ==", "dev": true, + "license": "MIT", "dependencies": { - "stubborn-fs": "^1.2.5", - "when-exit": "^2.1.1" + "stubborn-fs": "^2.0.0", + "when-exit": "^2.1.4" } }, "node_modules/autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz", + "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==", "dev": true, "funding": [ { @@ -7720,10 +8223,9 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", + "browserslist": "^4.28.2", + "caniuse-lite": "^1.0.30001787", + "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, @@ -7754,9 +8256,9 @@ } }, "node_modules/axe-core": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", - "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.3.tgz", + "integrity": "sha512-zBQouZixDTbo3jMGqHKyePxYxr1e5W8UdTmBQ7sNtaA9M2bE32daxxPLS/jojhKOHxQ7LWwPjfiwf/fhaJWzlg==", "dev": true, "license": "MPL-2.0", "engines": { @@ -7764,15 +8266,25 @@ } }, "node_modules/axios": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", - "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz", + "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", "dev": true, "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^2.1.0" + } + }, + "node_modules/axios/node_modules/proxy-from-env": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" } }, "node_modules/axobject-query": { @@ -7786,11 +8298,19 @@ } }, "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz", + "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==", "dev": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } }, "node_modules/babel-helper-evaluate-path": { "version": "0.5.0", @@ -8035,14 +8555,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", - "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.7", - "@babel/helper-define-polyfill-provider": "^0.6.5", + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", "semver": "^6.3.1" }, "peerDependencies": { @@ -8064,13 +8584,13 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", - "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5" + "@babel/helper-define-polyfill-provider": "^0.6.8" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -8160,9 +8680,9 @@ "license": "MIT" }, "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", "dependencies": { @@ -8183,7 +8703,7 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, "node_modules/babel-preset-jest": { @@ -8258,24 +8778,32 @@ "license": "MIT" }, "node_modules/bare-events": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.0.tgz", - "integrity": "sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "dev": true, "license": "Apache-2.0", - "optional": true + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } }, "node_modules/bare-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.6.tgz", - "integrity": "sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.1.tgz", + "integrity": "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==", "dev": true, "license": "Apache-2.0", - "optional": true, "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", - "bare-stream": "^2.6.4" + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" }, "engines": { "bare": ">=1.16.0" @@ -8290,12 +8818,11 @@ } }, "node_modules/bare-os": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", - "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.8.7.tgz", + "integrity": "sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==", "dev": true, "license": "Apache-2.0", - "optional": true, "engines": { "bare": ">=1.14.0" } @@ -8306,26 +8833,29 @@ "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", "dev": true, "license": "Apache-2.0", - "optional": true, "dependencies": { "bare-os": "^3.0.1" } }, "node_modules/bare-stream": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", - "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.0.tgz", + "integrity": "sha512-3zAJRZMDFGjdn+RVnNpF9kuELw+0Fl3lpndM4NcEOhb9zwtSo/deETfuIwMSE5BXanA0FrN1qVjffGwAg2Y7EA==", "dev": true, "license": "Apache-2.0", - "optional": true, "dependencies": { - "streamx": "^2.21.0" + "streamx": "^2.25.0", + "teex": "^1.0.1" }, "peerDependencies": { + "bare-abort-controller": "*", "bare-buffer": "*", "bare-events": "*" }, "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + }, "bare-buffer": { "optional": true }, @@ -8334,6 +8864,16 @@ } } }, + "node_modules/bare-url": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz", + "integrity": "sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-path": "^3.0.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -8354,10 +8894,23 @@ ], "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.19.tgz", + "integrity": "sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/basic-ftp": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", - "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.2.tgz", + "integrity": "sha512-1tDrzKsdCg70WGvbFss/ulVAxupNauGnOlgpyjKzeQxzyllBLS0CGLV7tjIXTK3ZQA9/FBEm9qyFFN1bciA6pw==", "dev": true, "license": "MIT", "engines": { @@ -8422,24 +8975,24 @@ } }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", @@ -8495,9 +9048,9 @@ "license": "ISC" }, "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -8518,9 +9071,9 @@ } }, "node_modules/browserslist": { - "version": "4.25.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", - "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, "funding": [ { @@ -8538,10 +9091,11 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001726", - "electron-to-chromium": "^1.5.173", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -8625,36 +9179,39 @@ } }, "node_modules/cacheable": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.10.2.tgz", - "integrity": "sha512-hMkETCRV4hwBAvjQY1/xGw15tlPj+7cM4d5HOlYJJFftLQVRCboVX+mT6AJ6eL0fsqUhSUwDiF+pgfTR2r2Hxg==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.3.4.tgz", + "integrity": "sha512-djgxybDbw9fL/ZWMI3+CE8ZilNxcwFkVtDc1gJ+IlOSSWkSMPQabhV/XCHTQ6pwwN6aivXPZ43omTooZiX06Ew==", "dev": true, "license": "MIT", "dependencies": { - "hookified": "^1.10.0", - "keyv": "^5.3.4" + "@cacheable/memory": "^2.0.8", + "@cacheable/utils": "^2.4.0", + "hookified": "^1.15.0", + "keyv": "^5.6.0", + "qified": "^0.9.0" } }, "node_modules/cacheable/node_modules/keyv": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.4.0.tgz", - "integrity": "sha512-TMckyVjEoacG5IteUpUrOBsFORtheqziVyyY2dLUwg1jwTb8u48LX4TgmtogkNl9Y9unaEJ1luj10fGyjMGFOQ==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", "dev": true, "license": "MIT", "dependencies": { - "@keyv/serialize": "^1.1.0" + "@keyv/serialize": "^1.1.1" } }, "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", "set-function-length": "^1.2.2" }, "engines": { @@ -8769,9 +9326,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001727", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", - "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", + "version": "1.0.30001788", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001788.tgz", + "integrity": "sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==", "dev": true, "funding": [ { @@ -8907,9 +9464,9 @@ } }, "node_modules/chrome-launcher": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-1.2.0.tgz", - "integrity": "sha512-JbuGuBNss258bvGil7FT4HKdC3SC2K7UAEUqiPy3ACS3Yxo3hAW6bvFpCu2HsIJLgTqxgEX6BkujvzZfLpUD0Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-1.2.1.tgz", + "integrity": "sha512-qmFR5PLMzHyuNJHwOloHPAHhbaNglkfeV/xDtt5b7xiFFyU1I+AZZX0PYseMuhenJSSirgxELYIbswcoc+5H4A==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -9001,116 +9558,6 @@ "node": ">=0.10.0" } }, - "node_modules/clean-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/webpack": "^4.4.31", - "del": "^4.1.1" - }, - "engines": { - "node": ">=8.9.0" - }, - "peerDependencies": { - "webpack": "*" - } - }, - "node_modules/clean-webpack-plugin/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clean-webpack-plugin/node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clean-webpack-plugin/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clean-webpack-plugin/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clean-webpack-plugin/node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/clean-webpack-plugin/node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/clean-webpack-plugin/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -9256,9 +9703,9 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "dev": true, "license": "MIT" }, @@ -9295,6 +9742,17 @@ "dev": true, "license": "MIT" }, + "node_modules/colorjs.io": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.6.1.tgz", + "integrity": "sha512-8lyR2wHzuIykCpqHKgluGsqQi5iDm3/a2IgP2GBZrasn2sBRkE4NOGsglZxWLs/jZQoNkmA/KM/8NV16rLUdBg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/color" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -9392,19 +9850,18 @@ "license": "MIT" }, "node_modules/concurrently": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.0.tgz", - "integrity": "sha512-IsB/fiXTupmagMW4MNp2lx2cdSN2FfZq78vF90LBB+zZHArbIQZjQtzXCiXnvTxCZSvXanTqFLWBjw2UkLx1SQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz", + "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.2", - "lodash": "^4.17.21", - "rxjs": "^7.8.1", - "shell-quote": "^1.8.1", - "supports-color": "^8.1.1", - "tree-kill": "^1.2.2", - "yargs": "^17.7.2" + "chalk": "4.1.2", + "rxjs": "7.8.2", + "shell-quote": "1.8.3", + "supports-color": "8.1.1", + "tree-kill": "1.2.2", + "yargs": "17.7.2" }, "bin": { "conc": "dist/bin/concurrently.js", @@ -9434,9 +9891,9 @@ } }, "node_modules/configstore": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-7.0.0.tgz", - "integrity": "sha512-yk7/5PN5im4qwz0WFZW3PXnzHgPu9mX29Y8uZ3aefe2lBPC1FYttWZRcaW9fKkT0pBCJyuQ2HfbmPVaODi9jcQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-7.1.0.tgz", + "integrity": "sha512-N4oog6YJWbR9kGyXvS7jEykLDXIE2C0ILYqNBZBp9iwiJpoCBWYsuAdW6PPFn6w06jjnC+3JstVvWHO4cZqvRg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -9449,7 +9906,7 @@ "node": ">=18" }, "funding": { - "url": "https://github.com/yeoman/configstore?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/connect-history-api-fallback": { @@ -9504,9 +9961,9 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "license": "MIT", "engines": { @@ -9514,9 +9971,9 @@ } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", "dev": true, "license": "MIT" }, @@ -9607,9 +10064,9 @@ } }, "node_modules/core-js": { - "version": "3.44.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.44.0.tgz", - "integrity": "sha512-aFCtd4l6GvAXwVEh3XbbVqJGHDJt0OZRa+5ePGx3LLwi12WfexqQxcsohb2wgsa/92xtl19Hd66G/L+TaAxDMw==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz", + "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -9619,13 +10076,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.44.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.44.0.tgz", - "integrity": "sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.25.1" + "browserslist": "^4.28.1" }, "funding": { "type": "opencollective", @@ -9633,9 +10090,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.44.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.44.0.tgz", - "integrity": "sha512-gvMQAGB4dfVUxpYD0k3Fq8J+n5bB6Ytl15lqlZrOIXFzxOhtPaObfkQGHtMRdyjIf7z2IeNULwi1jEwyS+ltKQ==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.49.0.tgz", + "integrity": "sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -9668,9 +10125,9 @@ } }, "node_modules/countup.js": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.9.0.tgz", - "integrity": "sha512-llqrvyXztRFPp6+i8jx25phHWcVWhrHO4Nlt0uAOSKHB8778zzQswa4MU3qKBvkXfJKftRYFJuVHez67lyKdHg==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.10.0.tgz", + "integrity": "sha512-QQpZx7oYxsR+OeITlZe46fY/OQjV11oBqjY8wgIXzLU2jIz8GzOrbMhqKLysGY8bWI3T1ZNrYkwGzKb4JNgyzg==", "license": "MIT" }, "node_modules/create-jest": { @@ -9724,9 +10181,9 @@ "license": "Apache-2.0" }, "node_modules/css-declaration-sorter": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", - "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz", + "integrity": "sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==", "dev": true, "license": "ISC", "engines": { @@ -9737,13 +10194,13 @@ } }, "node_modules/css-functions-list": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", - "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.3.3.tgz", + "integrity": "sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==", "dev": true, "license": "MIT", "engines": { - "node": ">=12 || >=16" + "node": ">=12" } }, "node_modules/css-loader": { @@ -9783,9 +10240,9 @@ } }, "node_modules/css-loader/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -9813,14 +10270,14 @@ } }, "node_modules/css-tree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" @@ -9995,9 +10452,9 @@ "license": "MIT" }, "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "license": "MIT" }, "node_modules/cwd": { @@ -10108,9 +10565,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -10169,9 +10626,9 @@ "license": "MIT" }, "node_modules/dedent": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", - "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -10285,9 +10742,9 @@ } }, "node_modules/del": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-8.0.0.tgz", - "integrity": "sha512-R6ep6JJ+eOBZsBr9esiNN1gxFbZE4Q2cULkUSFumGYecAiS6qodDvcPx/sFuWHMNul7DWmrtoEOpYSm7o6tbSA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/del/-/del-8.0.1.tgz", + "integrity": "sha512-gPqh0mKTPvaUZGAuHbrBUYKZWBNAeHG7TU3QH5EhVwPMyKvmfJaNXhcD2jTcXsJRRcffuho4vaYweu80dRrMGA==", "dev": true, "license": "MIT", "dependencies": { @@ -10296,6 +10753,7 @@ "is-path-cwd": "^3.0.0", "is-path-inside": "^4.0.0", "p-map": "^7.0.2", + "presentable-error": "^0.0.1", "slash": "^5.1.0" }, "engines": { @@ -10404,17 +10862,14 @@ } }, "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, "license": "Apache-2.0", "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, "engines": { - "node": ">=0.10" + "node": ">=8" } }, "node_modules/detect-newline": { @@ -10435,9 +10890,9 @@ "license": "MIT" }, "node_modules/devtools-protocol": { - "version": "0.0.1478340", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1478340.tgz", - "integrity": "sha512-EqhRVWo+j3O1a5LEvZi5fFlBRhvciqYoCHpsEfPcIpA/Abh0W1LF+V3AIvQD9Z4Apj0+p3U07vb7uXfn2hm3HQ==", + "version": "0.0.1507524", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1507524.tgz", + "integrity": "sha512-OjaNE7qpk6GRTXtqQjAE5bGx6+c4F1zZH0YXtpZQLM92HNXx4zMAaqlKhP4T52DosG6hDW8gPMNhGOF8xbwk/w==", "dev": true, "license": "BSD-3-Clause" }, @@ -10662,9 +11117,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.190", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.190.tgz", - "integrity": "sha512-k4McmnB2091YIsdCgkS0fMVMPOJgxl93ltFzaryXqwip1AaxeDqKCGLxkXODDA5Ab/D+tV5EL5+aTx76RvLRxw==", + "version": "1.5.336", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.336.tgz", + "integrity": "sha512-AbH9q9J455r/nLmdNZes0G0ZKcRX73FicwowalLs6ijwOmCJSRRrLX63lcAlzy9ux3dWK1w1+1nsBJEWN11hcQ==", "dev": true, "license": "ISC" }, @@ -10790,9 +11245,9 @@ } }, "node_modules/envinfo": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", - "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", + "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", "dev": true, "license": "MIT", "bin": { @@ -10803,9 +11258,9 @@ } }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -10822,9 +11277,9 @@ } }, "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", "dev": true, "license": "MIT", "dependencies": { @@ -10904,44 +11359,43 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.2.tgz", + "integrity": "sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", + "es-abstract": "^1.24.2", "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", + "es-set-tostringtag": "^2.1.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", + "get-intrinsic": "^1.3.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" + "iterator.prototype": "^1.1.5", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "dev": true, "license": "MIT" }, @@ -11137,6 +11591,31 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-import-context": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", + "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-context" + }, + "peerDependencies": { + "unrs-resolver": "^1.0.0" + }, + "peerDependenciesMeta": { + "unrs-resolver": { + "optional": true + } + } + }, "node_modules/eslint-import-resolver-alias": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/eslint-import-resolver-alias/-/eslint-import-resolver-alias-1.1.2.tgz", @@ -11151,15 +11630,15 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz", + "integrity": "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==", "dev": true, "license": "MIT", "dependencies": { "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "is-core-module": "^2.16.1", + "resolve": "^2.0.0-next.6" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -11167,15 +11646,74 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/resolve": { + "version": "2.0.0-next.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", + "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.4.tgz", + "integrity": "sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==", + "dev": true, + "license": "ISC", "dependencies": { - "ms": "^2.1.1" + "debug": "^4.4.1", + "eslint-import-context": "^0.1.8", + "get-tsconfig": "^4.10.1", + "is-bun-module": "^2.0.0", + "stable-hash-x": "^0.2.0", + "tinyglobby": "^0.2.14", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^16.17.0 || >=18.6.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } } }, "node_modules/eslint-import-resolver-webpack": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.10.tgz", - "integrity": "sha512-ciVTEg7sA56wRMR772PyjcBRmyBMLS46xgzQZqt6cWBEKc7cK65ZSSLCTLVRu2gGtKyXUb5stwf4xxLBfERLFA==", + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.11.tgz", + "integrity": "sha512-RGFDrCHSmCKGuaoI1zmZT028weIFIEyfSy0nAwzp5rplutWDC+BBjvZS2l4bEgSOfjc+ILkSLxeszkslyNO6fQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11184,10 +11722,10 @@ "find-root": "^1.1.0", "hasown": "^2.0.2", "interpret": "^1.4.0", - "is-core-module": "^2.15.1", - "is-regex": "^1.2.0", - "lodash": "^4.17.21", - "resolve": "^2.0.0-next.5", + "is-core-module": "^2.16.1", + "is-regex": "^1.2.1", + "lodash": "^4.18.1", + "resolve": "^2.0.0-next.6", "semver": "^5.7.2" }, "engines": { @@ -11209,19 +11747,25 @@ } }, "node_modules/eslint-import-resolver-webpack/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "version": "2.0.0-next.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", + "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11299,9 +11843,9 @@ } }, "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -11333,9 +11877,9 @@ } }, "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -11490,9 +12034,9 @@ } }, "node_modules/eslint-plugin-jest/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -11527,9 +12071,9 @@ } }, "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -11570,9 +12114,9 @@ } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -11581,9 +12125,9 @@ } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -11610,14 +12154,14 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.3.tgz", - "integrity": "sha512-NAdMYww51ehKfDyDhv59/eIItUVzU0Io9H2E8nHNGKEeeqlnci+1gCvrHib6EmZdf6GxF+LCV5K7UC65Ezvw7w==", + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", "dev": true, "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -11687,9 +12231,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -11711,9 +12255,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -11724,19 +12268,25 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "version": "2.0.0-next.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", + "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11776,9 +12326,9 @@ } }, "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -11800,9 +12350,9 @@ "license": "Python-2.0" }, "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -11868,9 +12418,9 @@ } }, "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -11904,9 +12454,9 @@ } }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -11978,9 +12528,9 @@ } }, "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -12058,6 +12608,16 @@ "node": ">=0.8.x" } }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -12129,40 +12689,40 @@ "license": "MIT" }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "dev": true, "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.13.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -12324,9 +12884,9 @@ } }, "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, "funding": [ { @@ -12351,9 +12911,9 @@ } }, "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "dev": true, "license": "ISC", "dependencies": { @@ -12393,6 +12953,24 @@ "pend": "~1.2.0" } }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -12448,18 +13026,18 @@ } }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" }, "engines": { @@ -12697,16 +13275,16 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "dev": true, "funding": [ { @@ -12764,9 +13342,9 @@ } }, "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "dev": true, "license": "MIT", "dependencies": { @@ -12798,16 +13376,16 @@ "license": "MIT" }, "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "dev": true, "license": "MIT", "engines": { "node": "*" }, "funding": { - "type": "patreon", + "type": "github", "url": "https://github.com/sponsors/rawify" } }, @@ -12913,6 +13491,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -13039,6 +13627,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/get-uri": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", @@ -13069,7 +13670,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -13142,9 +13743,9 @@ } }, "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -13153,9 +13754,9 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -13323,9 +13924,9 @@ "license": "ISC" }, "node_modules/gradient-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/gradient-parser/-/gradient-parser-1.1.1.tgz", - "integrity": "sha512-Hu0YfNU+38EsTmnUfLXUKFMXq9yz7htGYpF4x+dlbBhUCvIvzLt0yVLT/gJRmvLKFJdqNFrz4eKkIUjIXSr7Tw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gradient-parser/-/gradient-parser-1.2.0.tgz", + "integrity": "sha512-6ABGa9CR7WR/0pAJicBy5SJkiikbFM6kf/JjykwX7x+t+s8ORWVnlbi6FkHeFFb36yWsjUpHqSYrygd7ofEUqA==", "engines": { "node": ">=0.10.0" } @@ -13536,9 +14137,9 @@ } }, "node_modules/gulp-minify/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -13570,9 +14171,9 @@ } }, "node_modules/gulp-minify/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -13754,6 +14355,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hashery": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.5.1.tgz", + "integrity": "sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.15.0" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -13805,9 +14419,9 @@ } }, "node_modules/hookified": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.10.0.tgz", - "integrity": "sha512-dJw0492Iddsj56U1JsSTm9E/0B/29a1AuoSLRAte8vQg/kaTGF3IgjEWT8c8yG4cC10+HisE1x5QAwR0Xwc+DA==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz", + "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==", "dev": true, "license": "MIT" }, @@ -13961,20 +14575,24 @@ "license": "MIT" }, "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "dev": true, "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/http-link-header": { @@ -14149,9 +14767,9 @@ } }, "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -14160,9 +14778,9 @@ } }, "node_modules/ignore-walk/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -14180,9 +14798,9 @@ "license": "MIT" }, "node_modules/immutable": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", - "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", "dev": true, "license": "MIT" }, @@ -14212,9 +14830,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.14.2.tgz", - "integrity": "sha512-5tCuY9BV8ujfOpwtAGgsTx9CGUapcFMEEyByLv1B+v2+6DhAcw+Zr0nhQT7uwaZ7DiourxFEscghOR8e1aPLQw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.15.0.tgz", + "integrity": "sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -14342,18 +14960,19 @@ "version": "0.10.0", "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.10.0.tgz", "integrity": "sha512-fn4bQ0Xq8FTej09YC/jqKZwtijpvARlRp6wxL5WTA6yPe2YWSJ5RJh7Nm79rK2qB0wr6iDQzH60XGq5V/7u8YQ==", + "deprecated": "The Intersection Observer polyfill is no longer needed and can safely be removed. Intersection Observer has been Baseline since 2019.", "license": "W3C-20150513" }, "node_modules/intl-messageformat": { - "version": "10.7.16", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.16.tgz", - "integrity": "sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==", + "version": "10.7.18", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.18.tgz", + "integrity": "sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/ecma402-abstract": "2.3.6", "@formatjs/fast-memoize": "2.2.7", - "@formatjs/icu-messageformat-parser": "2.11.2", + "@formatjs/icu-messageformat-parser": "2.11.4", "tslib": "^2.8.0" } }, @@ -14367,23 +14986,19 @@ } }, "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, "engines": { "node": ">= 12" } }, "node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", "dev": true, "license": "MIT", "engines": { @@ -14527,6 +15142,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -14679,14 +15317,15 @@ } }, "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" }, @@ -14786,32 +15425,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-path-inside": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd/node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/is-path-inside": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", @@ -15176,9 +15789,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -15737,9 +16350,9 @@ } }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -15838,17 +16451,22 @@ } }, "node_modules/joi": { - "version": "17.13.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", - "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "version": "18.1.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-18.1.2.tgz", + "integrity": "sha512-rF5MAmps5esSlhCA+N1b6IYHDw9j/btzGaqfgie522jS02Ju/HXBxamlXVlKEHAxoMKQL77HWI8jlqWsFuekZA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" + "@hapi/address": "^5.1.1", + "@hapi/formula": "^3.0.2", + "@hapi/hoek": "^11.0.7", + "@hapi/pinpoint": "^2.0.1", + "@hapi/tlds": "^1.1.1", + "@hapi/topo": "^6.0.2", + "@standard-schema/spec": "^1.1.0" + }, + "engines": { + "node": ">= 20" } }, "node_modules/jpeg-js": { @@ -15875,9 +16493,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -15888,13 +16506,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true, - "license": "MIT" - }, "node_modules/jsdoc-type-pratt-parser": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", @@ -16120,14 +16731,14 @@ } }, "node_modules/launch-editor": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", - "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.2.tgz", + "integrity": "sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.8.1" + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" } }, "node_modules/lazy-cache": { @@ -16201,37 +16812,36 @@ } }, "node_modules/lighthouse": { - "version": "12.8.0", - "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-12.8.0.tgz", - "integrity": "sha512-MNmHLGRsaApxrigFl6M4FSvat8opl6K4MnBRWdU3yEaTH5pzrDSWjdIL2cBdCoV7OgAD1Cy/cdBiXR+ZzdsBNw==", + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-12.8.2.tgz", + "integrity": "sha512-+5SKYzVaTFj22MgoYDPNrP9tlD2/Ay7j3SxPSFD9FpPyVxGr4UtOQGKyrdZ7wCmcnBaFk0mCkPfARU3CsE0nvA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@paulirish/trace_engine": "0.0.57", + "@paulirish/trace_engine": "0.0.59", "@sentry/node": "^9.28.1", "axe-core": "^4.10.3", "chrome-launcher": "^1.2.0", "configstore": "^7.0.0", "csp_evaluator": "1.1.5", - "devtools-protocol": "0.0.1478340", + "devtools-protocol": "0.0.1507524", "enquirer": "^2.3.6", "http-link-header": "^1.1.1", "intl-messageformat": "^10.5.3", "jpeg-js": "^0.4.4", "js-library-detector": "^6.7.0", - "lighthouse-logger": "^2.0.1", + "lighthouse-logger": "^2.0.2", "lighthouse-stack-packs": "1.12.2", "lodash-es": "^4.17.21", "lookup-closest-locale": "6.2.0", "metaviewport-parser": "0.3.0", "open": "^8.4.0", "parse-cache-control": "1.0.1", - "puppeteer-core": "^24.10.2", + "puppeteer-core": "^24.17.1", "robots-parser": "^3.0.1", - "semver": "^5.3.0", "speedline-core": "^1.4.3", "third-party-web": "^0.27.0", - "tldts-icann": "^6.1.16", + "tldts-icann": "^7.0.12", "ws": "^7.0.0", "yargs": "^17.3.1", "yargs-parser": "^21.0.0" @@ -16242,37 +16852,20 @@ "smokehouse": "cli/test/smokehouse/frontends/smokehouse-bin.js" }, "engines": { - "node": ">=18.20" + "node": ">=18.16" } }, "node_modules/lighthouse-logger": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-2.0.1.tgz", - "integrity": "sha512-ioBrW3s2i97noEmnXxmUq7cjIcVRjT5HBpAYy8zE11CxU9HqlWHHeRxfeN1tn8F7OEMVPIC9x1f8t3Z7US9ehQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-2.0.2.tgz", + "integrity": "sha512-vWl2+u5jgOQuZR55Z1WM0XDdrJT6mzMP8zHUct7xTlWhuQs+eV0g+QL0RQdFjT54zVmbhLCP8vIVpy1wGn/gCg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "debug": "^2.6.9", + "debug": "^4.4.1", "marky": "^1.2.2" } }, - "node_modules/lighthouse-logger/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/lighthouse-logger/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/lighthouse-stack-packs": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.12.2.tgz", @@ -16281,18 +16874,18 @@ "license": "Apache-2.0" }, "node_modules/lighthouse/node_modules/@puppeteer/browsers": { - "version": "2.10.6", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.6.tgz", - "integrity": "sha512-pHUn6ZRt39bP3698HFQlu2ZHCkS/lPcpv7fVQcGBSzNNygw171UXAKrCUhy+TEMw4lEttOKDgNpb04hwUAJeiQ==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.0.tgz", + "integrity": "sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "debug": "^4.4.1", + "debug": "^4.4.3", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", - "semver": "^7.7.2", - "tar-fs": "^3.1.0", + "semver": "^7.7.4", + "tar-fs": "^3.1.1", "yargs": "^17.7.2" }, "bin": { @@ -16302,23 +16895,10 @@ "node": ">=18" } }, - "node_modules/lighthouse/node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/lighthouse/node_modules/chromium-bidi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-7.2.0.tgz", - "integrity": "sha512-gREyhyBstermK+0RbcJLbFhcQctg92AGgDe/h/taMJEOLRdtSswBAO9KmvltFSQWgM2LrwWu5SIuEUbdm3JsyQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz", + "integrity": "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -16330,34 +16910,35 @@ } }, "node_modules/lighthouse/node_modules/puppeteer-core": { - "version": "24.15.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.15.0.tgz", - "integrity": "sha512-2iy0iBeWbNyhgiCGd/wvGrDSo73emNFjSxYOcyAqYiagkYt5q4cPfVXaVDKBsukgc2fIIfLAalBZlaxldxdDYg==", + "version": "24.40.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.40.0.tgz", + "integrity": "sha512-MWL3XbUCfVgGR0gRsidzT6oKJT2QydPLhMITU6HoVWiiv4gkb6gJi3pcdAa8q4HwjBTbqISOWVP4aJiiyUJvag==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.10.6", - "chromium-bidi": "7.2.0", - "debug": "^4.4.1", - "devtools-protocol": "0.0.1464554", - "typed-query-selector": "^2.12.0", - "ws": "^8.18.3" + "@puppeteer/browsers": "2.13.0", + "chromium-bidi": "14.0.0", + "debug": "^4.4.3", + "devtools-protocol": "0.0.1581282", + "typed-query-selector": "^2.12.1", + "webdriver-bidi-protocol": "0.4.1", + "ws": "^8.19.0" }, "engines": { "node": ">=18" } }, "node_modules/lighthouse/node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.1464554", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1464554.tgz", - "integrity": "sha512-CAoP3lYfwAGQTaAXYvA6JZR0fjGUb7qec1qf4mToyoH2TZgUFeIqYcjh6f9jNuhHfuZiEdH+PONHYrLhRQX6aw==", + "version": "0.0.1581282", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1581282.tgz", + "integrity": "sha512-nv7iKtNZQshSW2hKzYNr46nM/Cfh5SEvE2oV0/SEGgc9XupIY5ggf84Cz8eJIkBce7S3bmTAauFD6aysMpnqsQ==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/lighthouse/node_modules/puppeteer-core/node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", "dev": true, "license": "MIT", "engines": { @@ -16377,13 +16958,16 @@ } }, "node_modules/lighthouse/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/lighthouse/node_modules/ws": { @@ -16448,13 +17032,17 @@ } }, "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "dev": true, "license": "MIT", "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/loader-utils": { @@ -16486,15 +17074,15 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz", + "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", "license": "MIT" }, "node_modules/lodash.clonedeep": { @@ -16638,9 +17226,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -16770,9 +17358,9 @@ "license": "Python-2.0" }, "node_modules/markdownlint-cli/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -16801,9 +17389,9 @@ } }, "node_modules/markdownlint-cli/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -16868,9 +17456,9 @@ } }, "node_modules/mdn-data": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", - "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", "dev": true, "license": "CC0-1.0" }, @@ -16905,9 +17493,9 @@ } }, "node_modules/memize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/memize/-/memize-2.1.0.tgz", - "integrity": "sha512-yywVJy8ctVlN5lNPxsep5urnZ6TTclwPEyigM9M3Bi8vseJBOfqNrGWN/r8NzuIt3PovM323W04blJfGQfQSVg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/memize/-/memize-2.1.1.tgz", + "integrity": "sha512-8Nl+i9S5D6KXnruM03Jgjb+LwSupvR13WBr4hJegaaEyobvowCVupi79y2WSiWvO1mzBWxPwEYE5feCe8vyA5w==", "license": "MIT" }, "node_modules/memoize-one": { @@ -17103,9 +17691,9 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", - "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz", + "integrity": "sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==", "dev": true, "license": "MIT", "dependencies": { @@ -17124,13 +17712,17 @@ } }, "node_modules/mini-css-extract-plugin/node_modules/tapable": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", - "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", "dev": true, "license": "MIT", "engines": { "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/minimalistic-assert": { @@ -17308,6 +17900,22 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -17333,9 +17941,9 @@ "license": "MIT" }, "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.1.1.tgz", + "integrity": "sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==", "dev": true, "license": "MIT", "engines": { @@ -17360,10 +17968,29 @@ "license": "MIT", "optional": true }, + "node_modules/node-exports-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", + "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.flatmap": "^1.3.3", + "es-errors": "^1.3.0", + "object.entries": "^1.1.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", "dev": true, "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { @@ -17378,9 +18005,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", "dev": true, "license": "MIT" }, @@ -17401,9 +18028,9 @@ } }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -17423,16 +18050,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/now-and-later": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz", @@ -17497,9 +18114,9 @@ } }, "node_modules/npm-package-json-lint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -17548,9 +18165,9 @@ } }, "node_modules/npm-package-json-lint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -17575,9 +18192,9 @@ "license": "MIT" }, "node_modules/npm-package-json-lint/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -17646,9 +18263,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", - "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", + "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", "dev": true, "license": "MIT" }, @@ -18008,9 +18625,9 @@ } }, "node_modules/p-map": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", - "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", + "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", "dev": true, "license": "MIT", "engines": { @@ -18263,13 +18880,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true, - "license": "(WTFPL OR MIT)" - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -18310,9 +18920,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", "dev": true, "license": "MIT" }, @@ -18343,9 +18953,9 @@ } }, "node_modules/pg-protocol": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", - "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", + "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", "dev": true, "license": "MIT" }, @@ -18373,9 +18983,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -18386,34 +18996,11 @@ } }, "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "license": "MIT", - "dependencies": { - "pinkie": "^2.0.0" - }, "engines": { "node": ">=0.10.0" } @@ -18558,9 +19145,9 @@ } }, "node_modules/pkg-dir/node_modules/yocto-queue": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", - "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", "dev": true, "license": "MIT", "engines": { @@ -18613,9 +19200,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.9.tgz", + "integrity": "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==", "dev": true, "funding": [ { @@ -18746,6 +19333,24 @@ "postcss": "^8.4.31" } }, + "node_modules/postcss-import": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-16.1.1.tgz", + "integrity": "sha512-2xVS1NCZAfjtVdvXiyegxzJ447GyqCeEI5V7ApgQVOWnros1p5lGNovJNapwPpMombyFBfqDwt7AD3n2l0KOfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, "node_modules/postcss-loader": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", @@ -18770,9 +19375,9 @@ } }, "node_modules/postcss-loader/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -18925,9 +19530,9 @@ } }, "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "dev": true, "license": "MIT", "dependencies": { @@ -18955,9 +19560,9 @@ } }, "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "dev": true, "license": "MIT", "dependencies": { @@ -19302,9 +19907,9 @@ } }, "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", "dev": true, "license": "MIT", "engines": { @@ -19335,9 +19940,9 @@ } }, "node_modules/preact": { - "version": "10.26.9", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.9.tgz", - "integrity": "sha512-SSjF9vcnF27mJK1XyFMNJzFd5u3pQiATFqoaDy03XuN00u4ziveVVEGt5RKJrDR8MHE/wJo9Nnad56RLzS2RMA==", + "version": "10.29.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.1.tgz", + "integrity": "sha512-gQCLc/vWroE8lIpleXtdJhTFDogTdZG9AjMUpVkDf2iTCNwYNWA+u16dL41TqUDJO4gm2IgrcMv3uTpjd4Pwmg==", "license": "MIT", "funding": { "type": "opencollective", @@ -19354,10 +19959,23 @@ "node": ">= 0.8.0" } }, + "node_modules/presentable-error": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/presentable-error/-/presentable-error-0.0.1.tgz", + "integrity": "sha512-E6rsNU1QNJgB3sjj7OANinGncFKuK+164sLXw1/CqBjj/EkXSoSdHCtWQGBNlREIGLnL7IEUEGa08YFVUbrhVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/prettier": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true, "license": "MIT", "bin": { @@ -19371,9 +19989,9 @@ } }, "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", "dev": true, "license": "MIT", "dependencies": { @@ -19597,9 +20215,9 @@ } }, "node_modules/pump": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", "dev": true, "license": "MIT", "dependencies": { @@ -19659,14 +20277,34 @@ ], "license": "MIT" }, + "node_modules/qified": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/qified/-/qified-0.9.1.tgz", + "integrity": "sha512-n7mar4T0xQ+39dE2vGTAlbxUEpndwPANH0kDef1/MYsB8Bba9wshkybIRx74qgcvKQPEWErf9AqAdYjhzY2Ilg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^2.1.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/qified/node_modules/hookified": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-2.1.1.tgz", + "integrity": "sha512-AHb76R16GB5EsPBE2J7Ko5kiEyXwviB9P5SMrAKcuAu4vJPZttViAbj9+tZeaQE5zjDme+1vcHP78Yj/WoAveA==", + "dev": true, + "license": "MIT" + }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -19740,16 +20378,16 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" @@ -20017,9 +20655,9 @@ } }, "node_modules/react-turnstile": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/react-turnstile/-/react-turnstile-1.1.4.tgz", - "integrity": "sha512-oluyRWADdsufCt5eMqacW4gfw8/csr6Tk+fmuaMx0PWMKP1SX1iCviLvD2D5w92eAzIYDHi/krUWGHhlfzxTpQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/react-turnstile/-/react-turnstile-1.1.5.tgz", + "integrity": "sha512-VTL5OeHAatzCEVQxAZox70/TPmhKxEbNgtr++dg+8zm9QrWKuoU9E0+7gqmycOSCDZuJFzvMMLKQb5PVUPLV6w==", "license": "MIT", "peerDependencies": { "react": ">= 16.13.1", @@ -20035,6 +20673,16 @@ "lodash": "^4.0.1" } }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -20215,9 +20863,9 @@ "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", - "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", "dev": true, "license": "MIT", "dependencies": { @@ -20255,18 +20903,18 @@ } }, "node_modules/regexpu-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", - "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", + "regenerate-unicode-properties": "^10.2.2", "regjsgen": "^0.8.0", - "regjsparser": "^0.12.0", + "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "unicode-match-property-value-ecmascript": "^2.2.1" }, "engines": { "node": ">=4" @@ -20280,31 +20928,18 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.1.tgz", + "integrity": "sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~3.0.2" + "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/remove-accents": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", @@ -20391,12 +21026,13 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -20483,6 +21119,16 @@ "node": ">= 10.13.0" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/resolve.exports": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", @@ -20712,14 +21358,14 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.89.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.2.tgz", - "integrity": "sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==", + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.99.0.tgz", + "integrity": "sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==", "dev": true, "license": "MIT", "dependencies": { "chokidar": "^4.0.0", - "immutable": "^5.0.2", + "immutable": "^5.1.5", "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { @@ -20733,9 +21379,9 @@ } }, "node_modules/sass-loader": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz", - "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==", + "version": "16.0.7", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.7.tgz", + "integrity": "sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA==", "dev": true, "license": "MIT", "dependencies": { @@ -20749,7 +21395,7 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@rspack/core": "0.x || 1.x", + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "sass-embedded": "*", @@ -20803,6 +21449,16 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", @@ -20826,9 +21482,9 @@ } }, "node_modules/schema-utils": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", - "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, "license": "MIT", "dependencies": { @@ -20890,25 +21546,25 @@ } }, "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "engines": { "node": ">= 0.8.0" @@ -20931,16 +21587,6 @@ "dev": true, "license": "MIT" }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -20976,22 +21622,26 @@ } }, "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.4", + "accepts": "~1.3.8", "batch": "0.6.1", "debug": "2.6.9", "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "http-errors": "~1.8.0", + "mime-types": "~2.1.35", + "parseurl": "~1.3.3" }, "engines": { "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/serve-index/node_modules/debug": { @@ -21015,28 +21665,22 @@ } }, "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "license": "MIT", "dependencies": { "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, "engines": { "node": ">= 0.6" } }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "license": "ISC" - }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -21044,13 +21688,6 @@ "dev": true, "license": "MIT" }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true, - "license": "ISC" - }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -21062,16 +21699,16 @@ } }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "dev": true, "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.19.0" + "send": "~0.19.1" }, "engines": { "node": ">= 0.8.0" @@ -21255,14 +21892,14 @@ } }, "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "object-inspect": "^1.13.4" }, "engines": { "node": ">= 0.4" @@ -21401,13 +22038,13 @@ } }, "node_modules/socks": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.6.tgz", - "integrity": "sha512-pe4Y2yzru68lXCb38aAqRf5gvN8YdjP1lok5o0J7BOHljkyCGKVz7H3vpVIXKD27rj2giOJ7DwVyk/GWrPHDWA==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "dev": true, "license": "MIT", "dependencies": { - "ip-address": "^9.0.5", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" }, "engines": { @@ -21450,13 +22087,13 @@ } }, "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "dev": true, "license": "BSD-3-Clause", "engines": { - "node": ">= 8" + "node": ">= 12" } }, "node_modules/source-map-js": { @@ -21590,9 +22227,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.21", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", - "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", "dev": true, "license": "CC0-1.0" }, @@ -21674,6 +22311,16 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/stable-hash-x": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", + "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -21705,9 +22352,9 @@ "license": "MIT" }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, "license": "MIT", "engines": { @@ -21746,17 +22393,15 @@ "license": "MIT" }, "node_modules/streamx": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", - "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.25.0.tgz", + "integrity": "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==", "dev": true, "license": "MIT", "dependencies": { + "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" } }, "node_modules/string_decoder": { @@ -22000,10 +22645,21 @@ } }, "node_modules/stubborn-fs": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-1.2.5.tgz", - "integrity": "sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-2.0.0.tgz", + "integrity": "sha512-Y0AvSwDw8y+nlSNFXMm2g6L51rBGdAQT20J3YSOqxC53Lo3bjWRtr2BKcfYoAf352WYpsZSTURrA0tqhfgudPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "stubborn-utils": "^1.0.1" + } + }, + "node_modules/stubborn-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stubborn-utils/-/stubborn-utils-1.0.2.tgz", + "integrity": "sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg==", + "dev": true, + "license": "MIT" }, "node_modules/style-search": { "version": "0.1.0", @@ -22030,9 +22686,9 @@ } }, "node_modules/stylelint": { - "version": "16.22.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.22.0.tgz", - "integrity": "sha512-SVEMTdjKNV4ollUrIY9ordZ36zHv2/PHzPjfPMau370MlL2VYXeLgSNMMiEbLGRO8RmD2R8/BVUeF2DfnfkC0w==", + "version": "16.26.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.26.1.tgz", + "integrity": "sha512-v20V59/crfc8sVTAtge0mdafI3AdnzQ2KsWe6v523L4OA1bJO02S7MO2oyXDCS6iWb9ckIPnqAFVItqSBQr7jw==", "dev": true, "funding": [ { @@ -22047,19 +22703,20 @@ "license": "MIT", "dependencies": { "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-syntax-patches-for-csstree": "^1.0.19", "@csstools/css-tokenizer": "^3.0.4", "@csstools/media-query-list-parser": "^4.0.3", "@csstools/selector-specificity": "^5.0.0", - "@dual-bundle/import-meta-resolve": "^4.1.0", + "@dual-bundle/import-meta-resolve": "^4.2.1", "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", "css-tree": "^3.1.0", - "debug": "^4.4.1", + "debug": "^4.4.3", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^10.1.1", + "file-entry-cache": "^11.1.1", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", @@ -22140,46 +22797,32 @@ } }, "node_modules/stylelint-scss": { - "version": "6.12.1", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.12.1.tgz", - "integrity": "sha512-UJUfBFIvXfly8WKIgmqfmkGKPilKB4L5j38JfsDd+OCg2GBdU0vGUV08Uw82tsRZzd4TbsUURVVNGeOhJVF7pA==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.14.0.tgz", + "integrity": "sha512-ZKmHMZolxeuYsnB+PCYrTpFce0/QWX9i9gh0hPXzp73WjuIMqUpzdQaBCrKoLWh6XtCFSaNDErkMPqdjy1/8aA==", "dev": true, "license": "MIT", "dependencies": { "css-tree": "^3.0.1", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.36.0", - "mdn-data": "^2.21.0", + "known-css-properties": "^0.37.0", + "mdn-data": "^2.25.0", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.6", - "postcss-selector-parser": "^7.1.0", + "postcss-selector-parser": "^7.1.1", "postcss-value-parser": "^4.2.0" }, "engines": { "node": ">=18.12.0" }, "peerDependencies": { - "stylelint": "^16.0.2" + "stylelint": "^16.8.2" } }, - "node_modules/stylelint-scss/node_modules/known-css-properties": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz", - "integrity": "sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/stylelint-scss/node_modules/mdn-data": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.23.0.tgz", - "integrity": "sha512-786vq1+4079JSeu2XdcDjrhi/Ry7BWtjDl9WtGPWLiIHb2T66GvIVflZTBoSNZ5JqTtJGYEVMuFA/lbQlMOyDQ==", - "dev": true, - "license": "CC0-1.0" - }, "node_modules/stylelint-scss/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "dev": true, "license": "MIT", "dependencies": { @@ -22229,9 +22872,9 @@ "license": "MIT" }, "node_modules/stylelint/node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -22256,25 +22899,25 @@ } }, "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.1.tgz", - "integrity": "sha512-zcmsHjg2B2zjuBgjdnB+9q0+cWcgWfykIcsDkWDB4GTPtl1eXUA+gTI6sO0u01AqK3cliHryTU55/b2Ow1hfZg==", + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.2.tgz", + "integrity": "sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^6.1.10" + "flat-cache": "^6.1.20" } }, "node_modules/stylelint/node_modules/flat-cache": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.11.tgz", - "integrity": "sha512-zfOAns94mp7bHG/vCn9Ru2eDCmIxVQ5dELUHKjHfDEOJmHNzE+uGa6208kfkgmtym4a0FFjEuFksCXFacbVhSg==", + "version": "6.1.22", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.22.tgz", + "integrity": "sha512-N2dnzVJIphnNsjHcrxGW7DePckJ6haPrSFqpsBUhHYgwtKGVq4JrBGielEGD2fCVnsGm1zlBVZ8wGhkyuetgug==", "dev": true, "license": "MIT", "dependencies": { - "cacheable": "^1.10.1", - "flatted": "^3.3.3", - "hookified": "^1.10.0" + "cacheable": "^2.3.4", + "flatted": "^3.4.2", + "hookified": "^1.15.0" } }, "node_modules/stylelint/node_modules/global-modules": { @@ -22316,9 +22959,9 @@ } }, "node_modules/stylelint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -22352,9 +22995,9 @@ } }, "node_modules/stylelint/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "dev": true, "license": "MIT", "dependencies": { @@ -22486,19 +23129,19 @@ "dev": true }, "node_modules/svgo": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", - "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.3.tgz", + "integrity": "sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==", "dev": true, "license": "MIT", "dependencies": { - "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", "css-tree": "^2.3.1", "css-what": "^6.1.0", "csso": "^5.0.5", - "picocolors": "^1.0.0" + "picocolors": "^1.0.0", + "sax": "^1.5.0" }, "bin": { "svgo": "bin/svgo" @@ -22550,9 +23193,9 @@ "license": "MIT" }, "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -22566,9 +23209,9 @@ } }, "node_modules/tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz", + "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==", "license": "MIT" }, "node_modules/table": { @@ -22609,9 +23252,9 @@ } }, "node_modules/tar-fs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", - "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.2.tgz", + "integrity": "sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==", "dev": true, "license": "MIT", "dependencies": { @@ -22624,13 +23267,14 @@ } }, "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz", + "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==", "dev": true, "license": "MIT", "dependencies": { "b4a": "^1.6.4", + "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } @@ -22664,16 +23308,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", - "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { @@ -22758,14 +23401,14 @@ } }, "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.43.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", - "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", + "version": "5.46.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", + "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.14.0", + "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -22809,9 +23452,9 @@ } }, "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -22820,9 +23463,9 @@ } }, "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -22833,9 +23476,9 @@ } }, "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -22936,21 +23579,51 @@ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", "license": "MIT" }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tldts-core": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", - "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "version": "7.0.28", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.28.tgz", + "integrity": "sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ==", "dev": true, "license": "MIT" }, "node_modules/tldts-icann": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts-icann/-/tldts-icann-6.1.86.tgz", - "integrity": "sha512-NFxmRT2lAEMcCOBgeZ0NuM0zsK/xgmNajnY6n4S1mwAKocft2s2ise1O3nQxrH3c+uY6hgHUV9GGNVp7tUE4Sg==", + "version": "7.0.28", + "resolved": "https://registry.npmjs.org/tldts-icann/-/tldts-icann-7.0.28.tgz", + "integrity": "sha512-brkN3yIgYTzBpSxB71XYBwUMDgutmKmA+6TWzgGD/EPcvCc6LHMTRaYj9ik1u3BxhSW53qIK/7cgjA2rF7BgbA==", "dev": true, "license": "MIT", "dependencies": { - "tldts-core": "^6.1.86" + "tldts-core": "^7.0.28" } }, "node_modules/tmpl": { @@ -23285,9 +23958,9 @@ } }, "node_modules/typed-query-selector": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", - "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.1.tgz", + "integrity": "sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA==", "dev": true, "license": "MIT" }, @@ -23406,9 +24079,9 @@ } }, "node_modules/undici-types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", - "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", "dev": true, "license": "MIT" }, @@ -23437,9 +24110,9 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", - "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "dev": true, "license": "MIT", "engines": { @@ -23447,9 +24120,9 @@ } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "dev": true, "license": "MIT", "engines": { @@ -23489,10 +24162,45 @@ "node": ">= 0.8" } }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -23577,9 +24285,9 @@ } }, "node_modules/url-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -23926,14 +24634,14 @@ } }, "node_modules/wait-on": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.3.tgz", - "integrity": "sha512-nQFqAFzZDeRxsu7S3C7LbuxslHhk+gnJZHyethuGKAn2IVleIbTB9I3vJSQiSR+DifUqmdzfPMoMPJfLqMF2vw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.5.tgz", + "integrity": "sha512-J3WlS0txVHkhLRb2FsmRg3dkMTCV1+M6Xra3Ho7HzZDHpE7DCOnoSoCJsZotrmW3uRMhvIJGSKUKrh/MeF4iag==", "dev": true, "license": "MIT", "dependencies": { - "axios": "^1.8.2", - "joi": "^17.13.3", + "axios": "^1.12.1", + "joi": "^18.0.1", "lodash": "^4.17.21", "minimist": "^1.2.8", "rxjs": "^7.8.2" @@ -23956,9 +24664,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", - "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", "dev": true, "license": "MIT", "dependencies": { @@ -23986,6 +24694,13 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/webdriver-bidi-protocol": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz", + "integrity": "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -23997,9 +24712,9 @@ } }, "node_modules/webpack": { - "version": "5.100.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.100.2.tgz", - "integrity": "sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==", + "version": "5.106.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.1.tgz", + "integrity": "sha512-EW8af29ak8Oaf4T8k8YsajjrDBDYgnKZ5er6ljWFJsXABfTNowQfvHLftwcepVgdz+IoLSdEAbBiM9DFXoll9w==", "dev": true, "license": "MIT", "dependencies": { @@ -24009,25 +24724,25 @@ "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.15.0", + "acorn": "^8.16.0", "acorn-import-phases": "^1.0.3", - "browserslist": "^4.24.0", + "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.2", - "es-module-lexer": "^1.2.1", + "enhanced-resolve": "^5.20.0", + "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", + "loader-runner": "^4.3.1", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^4.3.2", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.11", - "watchpack": "^2.4.1", - "webpack-sources": "^3.3.3" + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.17", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.4" }, "bin": { "webpack": "bin/webpack.js" @@ -24321,9 +25036,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", - "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", + "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", "dev": true, "license": "MIT", "engines": { @@ -24331,27 +25046,31 @@ } }, "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "5.18.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", - "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "tapable": "^2.3.0" }, "engines": { "node": ">=10.13.0" } }, "node_modules/webpack/node_modules/tapable": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", - "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", "dev": true, "license": "MIT", "engines": { "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/websocket-driver": { @@ -24383,6 +25102,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", "dev": true, "license": "MIT", "dependencies": { @@ -24417,9 +25137,9 @@ } }, "node_modules/when-exit": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/when-exit/-/when-exit-2.1.4.tgz", - "integrity": "sha512-4rnvd3A1t16PWzrBUcSDZqcAmsUIy4minDXT/CZ8F2mVDgd65i4Aalimgz1aQkRGU0iH5eT5+6Rx2TK8o443Pg==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/when-exit/-/when-exit-2.1.5.tgz", + "integrity": "sha512-VGkKJ564kzt6Ms1dbgPP/yuIoQCrsFAnRbptpC5wOEsDaNsbCB2bnfnaA8i/vRs5tjUSEOtIuvl9/MyVsvQZCg==", "dev": true, "license": "MIT" }, @@ -24507,9 +25227,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -24585,9 +25305,9 @@ } }, "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", "dev": true, "license": "MIT", "engines": { @@ -24664,9 +25384,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "license": "ISC", "engines": { "node": ">= 6" diff --git a/package.json b/package.json index 0ac8dff0d..0e75dc538 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,9 @@ "build:custom": "wp-scripts build --webpack-bundle-analyzer", "lint-js": "wp-scripts lint-js", "lint-js-fix": "wp-scripts lint-js --fix", - "format": "wp-scripts format" + "format": "wp-scripts format", + "link-kadence-packages": "node node_modules/@kadence/components/scripts/npm/link-kadence-packages.js", + "unlink-kadence-packages": "node node_modules/@kadence/components/scripts/npm/unlink-kadence-packages.js" }, "dependencies": { "@algolia/autocomplete-js": "^1.10.0", @@ -21,6 +23,9 @@ "@dnd-kit/sortable": "^10.0.0", "@floating-ui/react": "^0.27.12", "@hcaptcha/react-hcaptcha": "^1.8.1", + "@kadence/components": "github:stellarwp/kadence-components#1.1.8", + "@kadence/helpers": "github:stellarwp/kadence-helpers#1.1.0", + "@kadence/icons": "github:stellarwp/kadence-icons#1.1.4", "@lottiefiles/dotlottie-react": "^0.15.2", "@react-google-maps/api": "^2.12.0", "@splidejs/react-splide": "^0.7.12", diff --git a/src/assets/js/kb-table-of-contents.js b/src/assets/js/kb-table-of-contents.js index 2d866f54c..af26cabd3 100644 --- a/src/assets/js/kb-table-of-contents.js +++ b/src/assets/js/kb-table-of-contents.js @@ -125,7 +125,6 @@ ; o !== t.body && !1 === ((e = p((l = o), 'Y') && a(l, 'Y')), (r = p(l, 'X') && a(l, 'X')), e || r); - ) { o = o.parentNode || o.host; } diff --git a/src/blocks/advanced-form/fields/accept/edit.js b/src/blocks/advanced-form/fields/accept/edit.js index fe541510d..02abf78e2 100644 --- a/src/blocks/advanced-form/fields/accept/edit.js +++ b/src/blocks/advanced-form/fields/accept/edit.js @@ -17,7 +17,7 @@ import { SelectParentBlock, } from '@kadence/components'; import { useEffect, useState, useMemo } from '@wordpress/element'; -import { getUniqueId, getPreviewSize } from '@kadence/helpers'; +import { getPreviewSize } from '@kadence/helpers'; import classNames from 'classnames'; import { DuplicateField, FieldBlockAppender, FieldName, getUniqueFieldId } from '../../components'; diff --git a/src/blocks/advanced-form/fields/captcha/edit.js b/src/blocks/advanced-form/fields/captcha/edit.js index 52f59e567..4bccc1bc4 100644 --- a/src/blocks/advanced-form/fields/captcha/edit.js +++ b/src/blocks/advanced-form/fields/captcha/edit.js @@ -20,7 +20,7 @@ import { SelectParentBlock, } from '@kadence/components'; import { useEffect, useState } from '@wordpress/element'; -import { getUniqueId, getPreviewSize } from '@kadence/helpers'; +import { getPreviewSize } from '@kadence/helpers'; import apiFetch from '@wordpress/api-fetch'; import { addQueryArgs } from '@wordpress/url'; import classNames from 'classnames'; diff --git a/src/blocks/advanced-form/fields/checkbox/edit.js b/src/blocks/advanced-form/fields/checkbox/edit.js index 126d2a6a5..bf0e88b21 100644 --- a/src/blocks/advanced-form/fields/checkbox/edit.js +++ b/src/blocks/advanced-form/fields/checkbox/edit.js @@ -19,7 +19,7 @@ import { } from '@kadence/components'; import { useEffect, useState, useMemo } from '@wordpress/element'; import { ENTER } from '@wordpress/keycodes'; -import { getUniqueId, getPreviewSize } from '@kadence/helpers'; +import { getPreviewSize } from '@kadence/helpers'; import classNames from 'classnames'; import { DuplicateField, FieldBlockAppender, FieldName, getUniqueFieldId } from '../../components'; import { times, filter } from 'lodash'; diff --git a/src/blocks/advanced-form/fields/date/edit.js b/src/blocks/advanced-form/fields/date/edit.js index e11dc2052..580a75dce 100644 --- a/src/blocks/advanced-form/fields/date/edit.js +++ b/src/blocks/advanced-form/fields/date/edit.js @@ -19,7 +19,7 @@ import { SelectParentBlock, } from '@kadence/components'; import { useEffect, useState, useMemo } from '@wordpress/element'; -import { getUniqueId, getPreviewSize } from '@kadence/helpers'; +import { getPreviewSize } from '@kadence/helpers'; import classNames from 'classnames'; import { DuplicateField, FieldBlockAppender, FieldName, getUniqueFieldId } from '../../components'; import { fieldAutoFillOptions } from '../../constants'; diff --git a/src/blocks/advanced-form/fields/file/edit.js b/src/blocks/advanced-form/fields/file/edit.js index 3c4cd69de..98e86af47 100644 --- a/src/blocks/advanced-form/fields/file/edit.js +++ b/src/blocks/advanced-form/fields/file/edit.js @@ -18,7 +18,7 @@ import { } from '@kadence/components'; import { useEffect, useState } from '@wordpress/element'; import { without } from 'lodash'; -import { getUniqueId, getPreviewSize } from '@kadence/helpers'; +import { getPreviewSize } from '@kadence/helpers'; import classNames from 'classnames'; import { DuplicateField, FieldBlockAppender, FieldName, getUniqueFieldId } from '../../components'; diff --git a/src/blocks/advanced-form/fields/hidden/edit.js b/src/blocks/advanced-form/fields/hidden/edit.js index 49cbad756..42f2c3da4 100644 --- a/src/blocks/advanced-form/fields/hidden/edit.js +++ b/src/blocks/advanced-form/fields/hidden/edit.js @@ -16,7 +16,6 @@ import { SelectParentBlock, } from '@kadence/components'; import { useEffect, useState, useMemo } from '@wordpress/element'; -import { getUniqueId } from '@kadence/helpers'; import classNames from 'classnames'; import { DuplicateField, FieldBlockAppender, FieldName, getUniqueFieldId } from '../../components'; diff --git a/src/blocks/advanced-form/fields/number/edit.js b/src/blocks/advanced-form/fields/number/edit.js index aca834bb1..f4b6c6908 100644 --- a/src/blocks/advanced-form/fields/number/edit.js +++ b/src/blocks/advanced-form/fields/number/edit.js @@ -24,7 +24,7 @@ import { SelectParentBlock, } from '@kadence/components'; import { useEffect, useState, useMemo } from '@wordpress/element'; -import { getUniqueId, getPreviewSize } from '@kadence/helpers'; +import { getPreviewSize } from '@kadence/helpers'; import classNames from 'classnames'; import { DuplicateField, FieldBlockAppender, FieldName, getUniqueFieldId } from '../../components'; import { fieldAutoFillOptions } from '../../constants'; diff --git a/src/blocks/advanced-form/fields/radio/edit.js b/src/blocks/advanced-form/fields/radio/edit.js index 3ff88cb27..ff6bd4c3e 100644 --- a/src/blocks/advanced-form/fields/radio/edit.js +++ b/src/blocks/advanced-form/fields/radio/edit.js @@ -18,7 +18,7 @@ import { SelectParentBlock, } from '@kadence/components'; import { useEffect, useState, useMemo } from '@wordpress/element'; -import { getUniqueId, getPreviewSize } from '@kadence/helpers'; +import { getPreviewSize } from '@kadence/helpers'; import classNames from 'classnames'; import { DuplicateField, FieldBlockAppender, FieldName, getUniqueFieldId } from '../../components'; import { fieldAutoFillOptions } from '../../constants'; diff --git a/src/blocks/advanced-form/fields/select/edit.js b/src/blocks/advanced-form/fields/select/edit.js index 7c8bbf097..f03d00a97 100644 --- a/src/blocks/advanced-form/fields/select/edit.js +++ b/src/blocks/advanced-form/fields/select/edit.js @@ -18,7 +18,7 @@ import { SelectParentBlock, } from '@kadence/components'; import { useEffect, useState, useMemo } from '@wordpress/element'; -import { getUniqueId, getPreviewSize } from '@kadence/helpers'; +import { getPreviewSize } from '@kadence/helpers'; import classNames from 'classnames'; import { DuplicateField, FieldBlockAppender, FieldName, getUniqueFieldId } from '../../components'; import { times, get, filter } from 'lodash'; diff --git a/src/blocks/advanced-form/fields/submit/edit.js b/src/blocks/advanced-form/fields/submit/edit.js index 12630fe16..cd127a44a 100644 --- a/src/blocks/advanced-form/fields/submit/edit.js +++ b/src/blocks/advanced-form/fields/submit/edit.js @@ -14,7 +14,6 @@ import { getBorderStyle, setBlockDefaults, getBorderColor, - getUniqueId, } from '@kadence/helpers'; import { getUniqueFieldId } from '../../components'; diff --git a/src/blocks/advanced-form/fields/telephone/edit.js b/src/blocks/advanced-form/fields/telephone/edit.js index 21324e8f1..46a8a14a3 100644 --- a/src/blocks/advanced-form/fields/telephone/edit.js +++ b/src/blocks/advanced-form/fields/telephone/edit.js @@ -18,7 +18,7 @@ import { SelectParentBlock, } from '@kadence/components'; import { useEffect, useState, useMemo } from '@wordpress/element'; -import { getUniqueId, getPreviewSize } from '@kadence/helpers'; +import { getPreviewSize } from '@kadence/helpers'; import classNames from 'classnames'; import { DuplicateField, FieldBlockAppender, FieldName, getUniqueFieldId } from '../../components'; import { fieldAutoFillOptions } from '../../constants'; diff --git a/src/blocks/advanced-form/fields/text/edit.js b/src/blocks/advanced-form/fields/text/edit.js index 863745cf3..eead29cce 100644 --- a/src/blocks/advanced-form/fields/text/edit.js +++ b/src/blocks/advanced-form/fields/text/edit.js @@ -18,7 +18,7 @@ import { SelectParentBlock, } from '@kadence/components'; import { useEffect, useState, useMemo } from '@wordpress/element'; -import { getUniqueId, getPreviewSize } from '@kadence/helpers'; +import { getPreviewSize } from '@kadence/helpers'; import classNames from 'classnames'; import { DuplicateField, FieldBlockAppender, FieldName, getUniqueFieldId } from '../../components'; import { fieldAutoFillOptions } from '../../constants'; diff --git a/src/blocks/advanced-form/fields/textarea/edit.js b/src/blocks/advanced-form/fields/textarea/edit.js index bcc368841..c579e1646 100644 --- a/src/blocks/advanced-form/fields/textarea/edit.js +++ b/src/blocks/advanced-form/fields/textarea/edit.js @@ -18,7 +18,7 @@ import { SelectParentBlock, } from '@kadence/components'; import { useEffect, useState, useMemo } from '@wordpress/element'; -import { getUniqueId, getPreviewSize } from '@kadence/helpers'; +import { getPreviewSize } from '@kadence/helpers'; import classNames from 'classnames'; import { DuplicateField, FieldBlockAppender, FieldName, getUniqueFieldId } from '../../components'; import { fieldAutoFillOptions } from '../../constants'; diff --git a/src/blocks/advanced-form/fields/time/edit.js b/src/blocks/advanced-form/fields/time/edit.js index e87e356d0..28e0cc751 100644 --- a/src/blocks/advanced-form/fields/time/edit.js +++ b/src/blocks/advanced-form/fields/time/edit.js @@ -18,7 +18,7 @@ import { SelectParentBlock, } from '@kadence/components'; import { useEffect, useState, useMemo } from '@wordpress/element'; -import { getUniqueId, getPreviewSize } from '@kadence/helpers'; +import { getPreviewSize } from '@kadence/helpers'; import classNames from 'classnames'; import { DuplicateField, FieldBlockAppender, FieldName, getUniqueFieldId } from '../../components'; import { fieldAutoFillOptions } from '../../constants'; diff --git a/src/config/split-chunk-name.js b/src/config/split-chunk-name.js deleted file mode 100644 index 8d55e1b85..000000000 --- a/src/config/split-chunk-name.js +++ /dev/null @@ -1,92 +0,0 @@ -const crypto = require('crypto'); - -class SplitChunksName { - constructor() { - this.cache = new WeakMap(); - } - - name(module, chunks, cacheGroup) { - const automaticNamePrefix = cacheGroup === 'vendors' ? 'vendors' : '', - automaticNameDelimiter = '-'; - - let cacheEntry = this.cache.get(chunks); - if (cacheEntry === undefined) { - cacheEntry = {}; - this.cache.set(chunks, cacheEntry); - } else if (cacheGroup in cacheEntry) { - return cacheEntry[cacheGroup]; - } - const names = chunks.filter((c) => !!c.name).map((c) => c.name.split('/')); - if (!names.length || !names.every(Boolean)) { - cacheEntry[cacheGroup] = undefined; - return; - } - names.sort((a, b) => b.length - a.length); - const prefix = typeof automaticNamePrefix === 'string' ? automaticNamePrefix : cacheGroup; - const namePrefix = prefix ? prefix + '/' : ''; - - /* - [ - [ 'dashboard', 'dashboard' ] - [ 'dashboard', 'widget' ], - ] - -> 'dashboard/dashboard~widget' - - [ - [ 'dashboard', 'dashboard' ] - [ 'fingerprinting', 'manager' ], - ] - -> 'dist/dashboard-dist-dashboard~fingerprinting-dist-manager' - */ - - let name = ''; - const max = names[0].length; - - for (let i = 0; i < max; i++) { - if (this.allAtPosSame(names, i)) { - name += names[0][i] + '/'; - } else { - name = ''; - name += names[0].slice(0, i).join('/') + '/'; - name += - names - .map((parts) => parts[i]) - .filter((part) => typeof part === 'string') - .join(automaticNameDelimiter) + '/'; - } - } - - name = namePrefix + name; - - if ('/' === name.charAt(name.length - 1)) { - name = name.substring(0, name.length - 1); - } - - if (name.length > 100) { - name = name.slice(0, 100) + automaticNameDelimiter + this.hashFilename(name); - } - - cacheEntry[cacheGroup] = name; - return name; - } - - allAtPosSame(list, pos) { - let prev = null; - - for (const item of list) { - if (prev === null) { - prev = item[pos]; - } else if (prev !== item[pos]) { - return false; - } - } - - return true; - } - - hashFilename(name) { - return crypto.createHash('md4').update(name).digest('hex').slice(0, 8); - } -} - -module.exports = SplitChunksName; diff --git a/src/config/style-only-entry-plugin.js b/src/config/style-only-entry-plugin.js deleted file mode 100644 index 5875fc459..000000000 --- a/src/config/style-only-entry-plugin.js +++ /dev/null @@ -1,46 +0,0 @@ -function StyleOnlyEntryPlugin(styleTests) { - let list = []; - - if (styleTests instanceof RegExp) { - list.push(styleTests); - } else if (Array.isArray(styleTests) && styleTests.length) { - list = styleTests; - } else { - list = [/\.s?css$/]; - } - - Object.assign(this, { - styleTests: list, - }); -} - -StyleOnlyEntryPlugin.prototype.isFileStyle = function (file) { - for (const test of this.styleTests) { - if (test.test(file)) { - return true; - } - } - - return false; -}; - -StyleOnlyEntryPlugin.prototype.apply = function (compiler) { - compiler.hooks.emit.tap('style-only-entry-plugin', (compilation) => { - const chunkGraph = compilation.chunkGraph; - - for (const chunk of compilation.chunks) { - const entryModules = chunkGraph.getChunkEntryModulesIterable(chunk); - for (const entryModule of entryModules) { - if (entryModule && entryModule.userRequest && this.isFileStyle(entryModule.userRequest)) { - for (const file of chunk.files) { - if (!this.isFileStyle(file)) { - delete compilation.assets[file]; - } - } - } - } - } - }); -}; - -module.exports = StyleOnlyEntryPlugin; diff --git a/src/extension/image-picker/constants/API.js b/src/extension/image-picker/constants/API.js index 118fba30d..9250b66aa 100755 --- a/src/extension/image-picker/constants/API.js +++ b/src/extension/image-picker/constants/API.js @@ -1,4 +1,4 @@ -import { PexelsIcon } from '@kadence/icons'; +// import { PexelsIcon } from '@kadence/icons'; export const API = { proxy: 'https://content.startertemplatecloud.com/', @@ -17,6 +17,9 @@ export const API = { requires_key: true, new: false, api_var: 'key', - icon: PexelsIcon, + // icon: PexelsIcon, }, }; + +// PexelsIcon is currently not being used and we did not find implementation for it, so we commented it out to avoid build errors. +// slack discussion - https://lw.slack.com/archives/C0A32QSRQUS/p1773298378121059?thread_ts=1773238529.242199&cid=C0A32QSRQUS diff --git a/src/packages/components/src/background-control/editor.scss b/src/packages/components/src/background-control/editor.scss deleted file mode 100644 index 9205bc041..000000000 --- a/src/packages/components/src/background-control/editor.scss +++ /dev/null @@ -1,69 +0,0 @@ -.kadence-image-background-control{ - .kadence-image-upload { - margin: 0; - min-height: 0; - border: 1px solid var(--kb-border-color, #859CB6 ); - border-radius: 2px; - box-shadow: none; - .components-placeholder__fieldset { - flex-direction: row; - flex-wrap: wrap; - } - .components-button.is-primary { - height: 100px; - width: 100%; - justify-content: center; - background: rgba(0,0,0,.04); - color: var(--wp-admin-theme-color); - &:hover:not(:disabled) { - background: var(--wp-admin-theme-color-darker-10); - color: #fff; - } - } - } - .kb-dynamic-background-sidebar-wrap { - display: inline-block; - } - > .kb-dynamic-background-sidebar-wrap .kb-dynamic-background-sidebar.has-icon, > .kb-dynamic-background-sidebar-top .kb-dynamic-background-sidebar.has-icon { - border: 1px solid var(--kb-border-color, #859CB6 ); - margin-bottom: 10px; - margin-left: 5px; - color: #1e1e1e; - border-radius: 4px; - &.is-pressed { - color:white; - } - svg { - max-width: 14px; - } - } - > .kb-dynamic-background-sidebar-top .kb-dynamic-background-sidebar.has-icon { - margin-left: 0; - } - .components-kadence-image-background__label { - margin-bottom: 6px; - } - .block-editor-media-placeholder__dynamic-input-container { - margin-left: auto; - margin-right: 0; - } -} -.kadence-image-background-control .block-editor-media-placeholder__dynamic-input-container .kb-dynamic-background-sidebar { - margin-bottom: 0; -} -.kadence-image-background-control .block-editor-media-placeholder__dynamic-input-container .kb-dynamic-background-sidebar svg { - max-width: 16px; -} -.kadence-image-background-control .kadence-image-upload .components-placeholder__label:empty { - padding: 0; - margin: 0; -} -.block-editor-media-placeholder__dynamic-input-container { - margin-left: 12px; -} -.block-editor-media-placeholder__dynamic-input-container svg { - max-width: 14px; -} -.kadence-image-upload { - margin-bottom: 24px; -} \ No newline at end of file diff --git a/src/packages/components/src/background-control/index.js b/src/packages/components/src/background-control/index.js deleted file mode 100644 index b179118fd..000000000 --- a/src/packages/components/src/background-control/index.js +++ /dev/null @@ -1,188 +0,0 @@ -/** - * Basic Background Control. - */ - -/** - * Import Css - */ -import './editor.scss'; -/** - * Import Kadence Components - */ -import DynamicBackgroundControl from '../dynamic-background-control'; -import ImageSizeControl from '../common/image-size-controls'; -import KadenceMediaPlaceholder from '../common/media-placeholder'; -import KadenceRadioButtons from '../common/radio-buttons'; -import KadenceFocalPicker from '../focal-picker'; -/** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n'; -import { Fragment } from '@wordpress/element'; -import { MediaUpload } from '@wordpress/block-editor'; -import { Button, ToggleControl } from '@wordpress/components'; -import { - image, - closeSmall, - plusCircleFilled, -} from '@wordpress/icons'; -import BackgroundSizeControl from '../background-size-control'; -const ALLOWED_MEDIA_TYPES = [ 'image' ]; -/** - * Basic Background Control. - */ -const BackgroundControl = ( props ) => { - const { - label, - hasImage, - onSaveImage, - onRemoveImage, - onSaveURL, - onSavePosition, - onSaveSize, - onSaveRepeat, - onSaveAttachment, - disableMediaButtons, - imageURL, - imageID, - imagePosition, - imageSize, - imageRepeat, - imageAttachment, - imageAttachmentParallax = false, - imageAttachmentFixed = true, - inlineImage, - onSaveInlineImage, - dynamicAttribute = '', - attributes - } = props; - - const attachmentOptions = [ - { value: 'scroll', label: __( 'Scroll', 'kadence-blocks' ) } - ]; - if ( imageAttachmentFixed ) { - attachmentOptions.push({ value: 'fixed', label: __( 'Fixed', 'kadence-blocks' ) }); - } - if ( imageAttachmentParallax ) { - attachmentOptions.push({ value: 'parallax', label: __( 'Parallax', 'kadence-blocks' ) }); - } - return ( -
- { ! hasImage && ( - - { label && ( -
{ label }
- ) } - onSaveImage( img ) } - onSelectURL={ ( newURL ) => onSaveURL( newURL) } - accept="image/*" - className={ 'kadence-image-upload' } - allowedTypes={ ALLOWED_MEDIA_TYPES } - disableMediaButtons={ disableMediaButtons } - dynamicControl={ ( dynamicAttribute && kadence_blocks_params.dynamic_enabled ? : undefined ) } - /> -
- ) } - { hasImage && ( - - { label && ( -
{ label }
- ) } - { dynamicAttribute && kadence_blocks_params.dynamic_enabled && attributes.kadenceDynamic && attributes.kadenceDynamic[ dynamicAttribute ] && attributes.kadenceDynamic[ dynamicAttribute ].enable ? ( -
- -
- ) : ( - - onSaveImage( img ) } - type="image" - value={ ( imageID ? imageID : '' ) } - render={ ( { open } ) => ( - - ) } - /> -
- ); -} - -export default BackgroundControl; diff --git a/src/packages/components/src/background-size-control/editor.scss b/src/packages/components/src/background-size-control/editor.scss deleted file mode 100644 index 431932e85..000000000 --- a/src/packages/components/src/background-size-control/editor.scss +++ /dev/null @@ -1,30 +0,0 @@ -.kadence-background-size-control .kadence-controls-content .kadence-radio-container-control { - width: 100%; -} -.kadence-small-radio-container { - max-width: 40px; -} -.kadence-background-size-control { - .kadence-radio-container-control .components-button.radio-custom.only-icon svg { - width: 20px; - margin: 0; - } - .kadence-radio-control-label { - display: block; - margin-bottom: 6px; - } - .kadence-controls-content { - gap: 12px; - align-items: end; - .components-unit-control-wrapper { - flex-grow: 1; - margin: 0; - .components-input-control__label { - font-size: 11px; - font-weight: 500; - text-transform: uppercase; - margin: 0 0 3px; - } - } - } -} \ No newline at end of file diff --git a/src/packages/components/src/background-size-control/index.js b/src/packages/components/src/background-size-control/index.js deleted file mode 100644 index 583d50f3b..000000000 --- a/src/packages/components/src/background-size-control/index.js +++ /dev/null @@ -1,163 +0,0 @@ -/** - * Basic Background Control. - */ - -/** - * Import External - */ -import { get, map } from 'lodash'; -import classnames from 'classnames'; -/** - * WordPress dependencies - */ - import { useInstanceId } from '@wordpress/compose'; - import { useState, useEffect } from '@wordpress/element'; -/** - * Import Css - */ -import './editor.scss'; -/** - * Import Kadence Icons - */ - import { settings } from '@wordpress/icons'; -/** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n'; -import { Button, ButtonGroup, Icon, __experimentalUnitControl as UnitControl } from '@wordpress/components'; -function isCustomOption( optionsArray, value ) { - if ( ! value ) { - return false; - } - if ( ! optionsArray ) { - return false; - } - return ( - ! optionsArray.find( ( option ) => option.value === value ) - ); -} - -/** - * Tabs for Background Control. - */ - export default function BackgroundSizeControl( { - label, - value, - onChange, - options = [ - { value: 'cover', label: __( 'Cover', 'kadence-blocks' ) }, - { value: 'contain', label: __( 'Contain', 'kadence-blocks' ) }, - { value: 'auto', label: __( 'Auto', 'kadence-blocks' ) }, - ], - allowCustom = true, -} ) { - const instanceId = useInstanceId( BackgroundSizeControl ); - const id = `inspector-background-size-control-${ instanceId }`; - const [ isCustom, setIsCustom ] = useState( false ); - useEffect( () => { - setIsCustom( isCustomOption( options, value ) ); - }, [] ); - let width = 'auto'; - let height = 'auto'; - const sizeArray = value.split( ' ' ); - if ( undefined !== sizeArray[0] ) { - width = ( undefined !== sizeArray[0] && sizeArray[0] ? sizeArray[0] : 'auto' ); - height = ( undefined !== sizeArray[1] && sizeArray[1] ? sizeArray[1] : 'auto' ); - } - const onWidthChange = ( newWidth ) => { - const sizeArray = value.split( ' ' ); - let newHeight = 'auto'; - if ( undefined !== sizeArray[0] ) { - newHeight = ( undefined !== sizeArray[1] && sizeArray[1] ? sizeArray[1] : 'auto' ); - } - onChange( newWidth + ' ' + newHeight ); - } - const onHeightChange = ( newHeight ) => { - const sizeArray = value.split( ' ' ); - let newWidth = 'auto'; - if ( undefined !== sizeArray[0] ) { - newWidth = ( undefined !== sizeArray[0] && sizeArray[0] ? sizeArray[0] : 'auto' ); - } - onChange( newWidth + ' ' + newHeight ); - } - return ( -
- { label && ( - - ) } - { ! isCustom && ( -
- - { options.map( ( option, index ) => - - )} - { allowCustom && ( -
- ) } - { isCustom && ( -
- - - { allowCustom && ( - -
- ) } -
- ) -} diff --git a/src/packages/components/src/background-type-control/editor.scss b/src/packages/components/src/background-type-control/editor.scss deleted file mode 100644 index b857f0ad8..000000000 --- a/src/packages/components/src/background-type-control/editor.scss +++ /dev/null @@ -1,46 +0,0 @@ -.kadence-background-type-container{ - display:flex; - align-items: center; - .components-background-type-control__label { - flex: 1; - } - .kadence-background-type-radio-container { - display: flex; - .components-button { - height: 32px; - flex: 1 1 0; - display: flex; - align-items: center; - justify-content: center; - font-size: 14px; - font-weight: 600; - font-style: normal; - text-transform: uppercase; - line-height: 1.2; - border: 1px solid var(--kb-border-color, #859CB6 ); - border-radius: 2px; - background: transparent; - color: #4A5568; - padding: 4px; - box-shadow: none; - white-space: normal; - } - .components-button.is-primary { - border-color: var(--wp-admin-theme-color, #00669b); - background: var(--wp-admin-theme-color, #00669b); - color: #fff; - box-shadow: none; - } - .components-button:not(:first-child) { - margin-left: 4px; - } - } -} -.kadence-background-type-control .kadence-background-type-container .kadence-background-type-radio-container { - margin-bottom: 0; -} - -.kadence-background-type-radio-container .components-button svg { - width: 1em; - height: 1em; -} diff --git a/src/packages/components/src/background-type-control/index.js b/src/packages/components/src/background-type-control/index.js deleted file mode 100644 index 26ef089da..000000000 --- a/src/packages/components/src/background-type-control/index.js +++ /dev/null @@ -1,104 +0,0 @@ -/** - * Basic Background Control. - */ - -/** - * Import External - */ -import { get, map } from 'lodash'; -import classnames from 'classnames'; -/** - * WordPress dependencies - */ - import { useInstanceId } from '@wordpress/compose'; -/** - * Import Css - */ -import './editor.scss'; -/** - * Import Kadence Icons - */ -import { - slider, - brush, - video, - gradient, -} from '@kadence/icons'; -/** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n'; -import { Button, ButtonGroup, Icon } from '@wordpress/components'; - -/** - * Tabs for Background Control. - */ - export default function BackgroundTypeControl( { - label, - type, - onChange, - allowedTypes = null, - types = null, -} ) { - const defaultTabs = [ - { - key : 'normal', - title: __( 'Classic', 'kadence-blocks' ), - icon : brush, - }, - { - key : 'gradient', - title: __( 'Gradient', 'kadence-blocks' ), - icon : gradient, - }, - { - key : 'slider', - title: __( 'Slider', 'kadence-blocks' ), - icon : slider, - }, - { - key : 'video', - title: __( 'Video', 'kadence-blocks' ), - icon : video, - }, - ]; - const typeKeys = [ 'normal', 'gradient', 'slider', 'video' ]; - const allowedTypeKeys = allowedTypes ? allowedTypes : typeKeys; - const typesMap = types ? types : defaultTabs; - const instanceId = useInstanceId( BackgroundTypeControl ); - const id = `inspector-background-type-control-${ instanceId }`; - return ( -
-
- { label && ( - - ) } - - { typesMap.map( ( { - key, title, icon, - }, i ) => { - if ( allowedTypeKeys.includes( key ) ) { - return ( -
-
- ) -} diff --git a/src/packages/components/src/block-defaults/index.js b/src/packages/components/src/block-defaults/index.js deleted file mode 100644 index e4be5444a..000000000 --- a/src/packages/components/src/block-defaults/index.js +++ /dev/null @@ -1,215 +0,0 @@ -import {useEffect, useState} from '@wordpress/element'; -import { useSelect, useDispatch } from '@wordpress/data'; -import KadencePanelBody from '../panel-body/index.js'; -import {__} from "@wordpress/i18n"; -import {omit, head, get, isEqual} from 'lodash'; -import {store as noticesStore} from '@wordpress/notices'; -import { - Button, - Modal, - __experimentalConfirmDialog as ConfirmDialog -} from '@wordpress/components'; -import apiFetch from '@wordpress/api-fetch'; -import { - SafeParseJSON, - getTransferableAttributes -} from '@kadence/helpers' -/** - * Display Kadence Block Default settings -- intended for use in Inspector Controls. - * - * @param {object} attributes Block attributes. - * @param {object} defaultAttributes The blocks default attributs for comparison on what is new. - * @param {string} blockSlug Block slug. - * @param {object} attributeNamePair Key value pair of attribute name and attribute label. - * @param {array} excludedAttrs Keys to exclude from saved block defaults. An array of strings. - * @param {array} preventMultiple Keys that should not have more than one subitem. An array of strings. - * - * @public - */ -export default function KadenceBlockDefaults( { - attributes, - defaultAttributes = {}, - blockSlug, - excludedAttrs = [], - preventMultiple = [] -} ) { - - const [ user, setUser ] = useState( ( kadence_blocks_params.userrole ? kadence_blocks_params.userrole : 'admin' ) ); - if( user !== 'admin' ) { - return null; - } - - const {createErrorNotice, createSuccessNotice} = useDispatch(noticesStore); - - const [isOpenResetConfirm, setIsOpenResetConfirm] = useState(false); - const [isOpenSaveConfirm, setIsOpenSaveConfirm] = useState(false); - const [isOpenModify, setIsOpenModify] = useState(false); - - const currentDefaults = SafeParseJSON(get(kadence_blocks_params, ['configuration'], {}), true ); - const currentBlockDefaults = get(currentDefaults, blockSlug, {}); - - const [tmpDefaults, setTmpDefaults] = useState(currentBlockDefaults); - const hasConfig = Object.keys(currentBlockDefaults).length !== 0; - - const calculate = () => { - //grab all block attributes, minus the exclusions - return getTransferableAttributes( attributes, defaultAttributes, excludedAttrs, preventMultiple ); - } - - const reset = () => { - let config = (kadence_blocks_params.configuration ? SafeParseJSON(kadence_blocks_params.configuration, true) : {}); - config = omit(config, blockSlug); - - apiFetch( { - path: '/wp/v2/settings', - method: 'POST', - data: { kadence_blocks_config_blocks: JSON.stringify(config)}, - } ).then( () => { - createSuccessNotice(__('Block default saved', 'kadence-blocks'), { - type: 'snackbar', - }) - setIsOpenResetConfirm(false); - kadence_blocks_params.configuration = JSON.stringify(config); - setTmpDefaults({}); - }); - - } - - const saveAll = () => { - - const newConfig = calculate(); - - const config = (kadence_blocks_params.configuration ? SafeParseJSON(kadence_blocks_params.configuration, true) : {}); - config[blockSlug] = newConfig; - apiFetch( { - path: '/wp/v2/settings', - method: 'POST', - data: { kadence_blocks_config_blocks: JSON.stringify(config)}, - } ).then( () => { - createSuccessNotice(__('Block default saved', 'kadence-blocks'), { - type: 'snackbar', - }) - setIsOpenSaveConfirm(false); - kadence_blocks_params.configuration = JSON.stringify(config); - setTmpDefaults(newConfig); - }); - } - - const saveModified = () => { - - const config = (kadence_blocks_params.configuration ? SafeParseJSON(kadence_blocks_params.configuration, true) : {}); - config[blockSlug] = tmpDefaults; - apiFetch( { - path: '/wp/v2/settings', - method: 'POST', - data: { kadence_blocks_config_blocks: JSON.stringify(config)}, - } ).then( () => { - createSuccessNotice(__('Block default saved', 'kadence-blocks'), { - type: 'snackbar', - }) - kadence_blocks_params.configuration = JSON.stringify(config); - }); - } - - return ( - <> - - {__('This will set the current block attributes as the default styles for this block type.', 'kadence-blocks')}  - {__('This will not modify any blocks that have already been created.', 'kadence-blocks')}  - {__('Block content is not included.', 'kadence-blocks')}  - -

- - - - {hasConfig && ( - <> -

- - - - - - )} - -
- - reset()} - onCancel={() => setIsOpenResetConfirm(false)} - > - {__('Are you sure you\'d like to reset this blocks default attributes?', 'kadence-blocks')} - - - saveAll()} - onCancel={() => setIsOpenSaveConfirm(false)} - > - {__('Are you sure you\'d like to save this as the blocks default attributes?', 'kadence-blocks')} - - - {isOpenModify ? - { - setTmpDefaults(currentBlockDefaults); - setIsOpenModify(false); - }}> - - { - Object.keys(tmpDefaults).map((key, i) => { - - return ( - <> -
- - {key} -
- - ) - }) - } - -
- - - -
-
- : null} - - ); -} diff --git a/src/packages/components/src/border/border-control/editor.scss b/src/packages/components/src/border/border-control/editor.scss deleted file mode 100644 index 324d2620a..000000000 --- a/src/packages/components/src/border/border-control/editor.scss +++ /dev/null @@ -1,182 +0,0 @@ -.kadence-border-control__header { - display: flex; - justify-content: space-between; - margin-bottom: 8px; - color: #1e1e1e; - font-size: 13px; - font-weight: 500; - gap: 2px; - align-items: center; - .components-button.border-control-toggle.has-icon { - background: transparent; - height: auto; - border: 0; - box-shadow: none; - padding: 2px 4px; - margin-bottom: 0; - outline: 0; - color: #a0aec0; - width: auto; - font-size: 18px; - min-width: 0; - svg { - width: 1em; - height: 1em; - } - &.is-pressed { - background: var(--wp-admin-theme-color, #00669b); - color: white; - } - } -} -.kadence-border-control > .kadence-controls-content { - display: block; - position: relative; -} -.kadence-single-border-control-wrap { - display: flex; - align-items: center; - border-radius: 2px; - border: 1px solid var(--kb-border-color, #859cb6); - background: white; -} -.kadence-single-border-control-wrap .components-base-control { - margin-bottom: 0; -} -.kadence-single-border-control-wrap > .kadence-single-unit-control .components-unit-control-wrapper { - width: 100%; -} -.kadence-single-border-control-wrap > .kadence-single-unit-control { - flex-grow: 1; -} -.kadence-single-border-control-wrap { - .kadence-pop-color-control { - padding: 0 2px; - .kadence-pop-color-icon-indicate .kadence-pop-color-indicate { - width: 24px; - height: 24px; - } - } -} - -.kadence-border-control - .kadence-single-border-control-wrap - .kadence-measure-control-select.components-unit-control__select { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - background: transparent; - border-radius: 0px 2px 2px 0px; - display: block; - outline: none; - margin: 0px; - min-height: auto; - font-family: inherit; - box-sizing: border-box; - padding: 2px 1px; - width: 20px; - color: rgb(47, 47, 47); - font-size: 10px; - line-height: 1; - letter-spacing: -0.5px; - text-transform: uppercase; - -moz-text-align-last: center; - text-align-last: center; - height: 100%; - border: 0; - transition: box-shadow 0.1s linear 0s, border 0.1s linear 0s; - cursor: pointer; - &:hover { - background-color: #f8f9fb; - } -} - -.kadence-border-control .kadence-single-border-control-wrap .components-dropdown-menu__toggle { - min-width: auto; - height: 30px; - border-radius: 0px; - display: block; - outline: none; - margin: 0px; - min-height: auto; - box-sizing: border-box; - padding: 2px 2px; - color: rgb(47, 47, 47); - font-size: 10px; - line-height: 1; - border: 0; - border-right: 1px solid var(--kb-border-color, #859cb6); - border-left: 1px solid var(--kb-border-color, #859cb6); - transition: box-shadow 0.1s linear 0s, border 0.1s linear 0s; - cursor: pointer; -} - -.kadence-border-control .kadence-single-border-control-wrap .border-control-style-select { - display: block; -} -.kadence-border-control .components-base-control.kadence-single-border-control { - margin-bottom: 0; -} - -.kadence-border-control .kadence-single-border-control-wrap .components-dropdown-menu__toggle svg { - width: 12px; -} -.border-control-style-select__popover .components-menu-item__button .components-menu-item__item { - display: none; -} -.border-control-style-select__popover .components-menu-item__button .components-menu-items__item-icon.has-icon-right { - margin: 0; - display: block; -} -.kadence-border-control .kadence-single-border-control-wrap .kadence-single-unit-control { - border: 0; - border-radius: 0px; - .components-input-control__backdrop { - display: none; - } - input::-webkit-outer-spin-button, - input::-webkit-inner-spin-button { - /* display: none; <- Crashes Chrome on hover */ - -webkit-appearance: none; - margin: 0; /* <-- Apparently some margin are still there even though it's hidden */ - } - - input[type="number"] { - -moz-appearance: textfield; /* Firefox */ - } -} -.kadence-border-controls-grid-wrap { - display: grid; - gap: calc(16px); - grid-template-columns: repeat(2, 1fr); - position: relative; -} -.kadence-border-controls-grid-wrap .kadence-single-border-control:nth-child(2) { - border: 0px; - padding: 0px; - box-sizing: border-box; - grid-column: span 2 / auto; - margin: 0px auto; -} -.kadence-border-controls-grid-wrap .kadence-single-border-control:nth-child(4) { - margin: 0 0 0 auto; -} -.kadence-border-controls-grid-wrap .kadence-single-border-control:nth-child(5) { - grid-column: span 2 / auto; - margin: 0px auto; -} -.kadence-border-control-grid-visualizer { - position: absolute; - inset: 15px 15px; - border-width: 0px; - border-style: solid; - border-color: transparent; -} -.kadence-border-controls-grid-wrap .kadence-single-border-control { - position: relative; -} -.kadence-single-border-control-wrap span.color-indicator-icon .dashicons-admin-site { - left: 50%; - top: 50%; - transform: translate(-50%, -50%); -} diff --git a/src/packages/components/src/border/border-control/index.js b/src/packages/components/src/border/border-control/index.js deleted file mode 100644 index 0cd4b81b1..000000000 --- a/src/packages/components/src/border/border-control/index.js +++ /dev/null @@ -1,290 +0,0 @@ -/** - * Border control Component - * - */ - -/** - * Internal block libraries - */ -import { useState, useRef } from '@wordpress/element'; -import { map, isEqual } from 'lodash'; -import { __ } from '@wordpress/i18n'; -import { UnitControl, DropdownMenu, Flex, FlexItem, Button } from '@wordpress/components'; -import { undo, settings, link, linkOff } from '@wordpress/icons'; -import { KadenceColorOutput } from '@kadence/helpers'; -/** - * WordPress dependencies - */ -import { useInstanceId } from '@wordpress/compose'; -/** - * Import Css - */ -import './editor.scss'; -import { - pxIcon, - emIcon, - remIcon, - vhIcon, - vwIcon, - percentIcon, - outlineTopIcon, - outlineRightIcon, - outlineBottomIcon, - outlineLeftIcon, - individualIcon, - linkedIcon, - topLeftIcon, - topRightIcon, - bottomRightIcon, - bottomLeftIcon, - radiusLinkedIcon, - radiusIndividualIcon, -} from '@kadence/icons'; -import SingleBorderControl from '../single-border-control'; -/** - * Build the Border controls - * @returns {object} Border Control. - */ -export default function BorderControl({ - label, - onChange, - onControl, - value = '', - className = '', - help = '', - defaultValue = { - top: { - color: '', - style: 'solid', - width: '', - }, - right: { - color: '', - style: 'solid', - width: '', - }, - bottom: { - color: '', - style: 'solid', - width: '', - }, - left: { - color: '', - style: 'solid', - width: '', - }, - unit: '', - }, - control = 'individual', - units = ['px', 'em', 'rem'], - firstIcon = outlineTopIcon, - secondIcon = outlineRightIcon, - thirdIcon = outlineBottomIcon, - fourthIcon = outlineLeftIcon, - linkIcon = link, - unlinkIcon = linkOff, - styles = ['solid', 'dashed', 'dotted', 'double'], - reset, -}) { - const instanceId = useInstanceId(BorderControl); - const [theControl, setTheControl] = useState(control); - const realControl = onControl ? control : theControl; - const realSetOnControl = onControl ? onControl : setTheControl; - const measureIcons = { - first: firstIcon, - second: secondIcon, - third: thirdIcon, - fourth: fourthIcon, - link: linkIcon, - unlink: unlinkIcon, - }; - const containerRef = useRef(); - const currentObject = value?.[0] || defaultValue; - const step = currentObject.unit !== 'px' ? 0.1 : 1; - const max = currentObject.unit !== 'px' && currentObject.unit !== '' ? 12 : 200; - const min = 0; - const onChangeAll = (newBorder) => { - currentObject.top = newBorder; - currentObject.bottom = newBorder; - currentObject.right = newBorder; - currentObject.left = newBorder; - const newVal = JSON.parse(JSON.stringify(currentObject)); - onChange([newVal]); - }; - const onChangeSide = (newBorder, side) => { - currentObject[side] = newBorder; - const newVal = JSON.parse(JSON.stringify(currentObject)); - onChange([newVal]); - }; - const onChangeUnit = (newUnit) => { - currentObject.unit = newUnit; - const newVal = JSON.parse(JSON.stringify(currentObject)); - onChange([newVal]); - }; - const onReset = () => { - if (typeof reset === 'function') { - reset(); - } else { - onChange([defaultValue]); - } - }; - return [ - onChange && ( -
- {label && ( -
- {label && ( -
- - {reset && ( -
-
- )} -
- )} - {realSetOnControl && ( -
- )} -
- {realControl !== 'individual' && ( - <> - onChangeAll(newVal)} - min={min} - max={max} - step={step} - help={help} - styles={styles} - unit={currentObject?.unit || 'px'} - units={units} - onUnit={(unit) => onChangeUnit(unit)} - defaultValue={defaultValue.top} - allowReset={false} - /> - - )} - {realControl === 'individual' && ( -
-
- onChangeSide(newVal, 'top')} - min={min} - max={max} - step={step} - help={help} - styles={styles} - unit={currentObject?.unit || 'px'} - units={units} - onUnit={(unit) => onChangeUnit(unit)} - defaultValue={defaultValue.top} - allowReset={false} - /> - onChangeSide(newVal, 'left')} - min={min} - max={max} - step={step} - help={help} - styles={styles} - unit={currentObject?.unit || 'px'} - units={units} - onUnit={(unit) => onChangeUnit(unit)} - defaultValue={defaultValue.left} - allowReset={false} - /> - onChangeSide(newVal, 'right')} - min={min} - max={max} - step={step} - help={help} - styles={styles} - unit={currentObject?.unit || 'px'} - units={units} - onUnit={(unit) => onChangeUnit(unit)} - defaultValue={defaultValue.right} - allowReset={false} - /> - onChangeSide(newVal, 'bottom')} - min={min} - max={max} - step={step} - help={help} - styles={styles} - unit={currentObject?.unit || 'px'} - units={units} - onUnit={(unit) => onChangeUnit(unit)} - defaultValue={defaultValue.bottom} - allowReset={false} - /> -
- )} -
-
- ), - ]; -} diff --git a/src/packages/components/src/border/responsive-border-control/index.js b/src/packages/components/src/border/responsive-border-control/index.js deleted file mode 100644 index 739066c34..000000000 --- a/src/packages/components/src/border/responsive-border-control/index.js +++ /dev/null @@ -1,290 +0,0 @@ -/** - * Responsive Border Control Component - * - */ - -/** - * Internal block libraries - */ -import { useSelect, useDispatch } from '@wordpress/data'; -import { useState, useRef, useEffect } from '@wordpress/element'; -import { __ } from '@wordpress/i18n'; -import { map, isEqual } from 'lodash'; -import BorderControl from '../border-control'; -import { capitalizeFirstLetter } from '@kadence/helpers'; -import { undo, settings, link, linkOff } from '@wordpress/icons'; -/** - * WordPress dependencies - */ -import { useInstanceId } from '@wordpress/compose'; -import { Dashicon, Button, ButtonGroup } from '@wordpress/components'; -import { outlineTopIcon, outlineRightIcon, outlineBottomIcon, outlineLeftIcon } from '@kadence/icons'; -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function ResponsiveBorderControl({ - label, - onChange, - onChangeTablet, - onChangeMobile, - onControl, - mobileValue = '', - tabletValue = '', - value = '', - control = 'individual', - units = ['px', 'em', 'rem'], - firstIcon = outlineTopIcon, - secondIcon = outlineRightIcon, - thirdIcon = outlineBottomIcon, - fourthIcon = outlineLeftIcon, - linkIcon = link, - unlinkIcon = linkOff, - styles = ['solid', 'dashed', 'dotted', 'double'], - deskDefault = { - top: ['', '', ''], - right: ['', '', ''], - bottom: ['', '', ''], - left: ['', '', ''], - unit: 'px', - }, - tabletDefault = { - top: ['', '', ''], - right: ['', '', ''], - bottom: ['', '', ''], - left: ['', '', ''], - unit: '', - }, - mobileDefault = { - top: ['', '', ''], - right: ['', '', ''], - bottom: ['', '', ''], - left: ['', '', ''], - unit: '', - }, - reset = true, - defaultLinked = true, -}) { - const instanceId = useInstanceId(ResponsiveBorderControl); - const measureIcons = { - first: firstIcon, - second: secondIcon, - third: thirdIcon, - fourth: fourthIcon, - link: linkIcon, - unlink: unlinkIcon, - }; - const [theControl, setTheControl] = useState(control); - const realControl = onControl ? control : theControl; - const realSetOnControl = onControl ? onControl : setTheControl; - const [deviceType, setDeviceType] = useState('Desktop'); - const theDevice = useSelect((select) => { - return select('kadenceblocks/data').getPreviewDeviceType(); - }, []); - if (theDevice !== deviceType) { - setDeviceType(theDevice); - } - useEffect(() => { - if (defaultLinked) { - if (theDevice === 'Mobile') { - if ( - isEqual(mobileValue?.[0]?.top, mobileValue?.[0]?.bottom) && - isEqual(mobileValue?.[0]?.top, mobileValue?.[0]?.bottom) && - isEqual(mobileValue?.[0]?.top, mobileValue?.[0]?.right) && - isEqual(mobileValue?.[0]?.top, mobileValue?.[0]?.left) - ) { - realSetOnControl('linked'); - } - } else if (theDevice === 'Tablet') { - if ( - isEqual(tabletValue?.[0]?.top, tabletValue?.[0]?.bottom) && - isEqual(tabletValue?.[0]?.top, tabletValue?.[0]?.bottom) && - isEqual(tabletValue?.[0]?.top, tabletValue?.[0]?.right) && - isEqual(tabletValue?.[0]?.top, tabletValue?.[0]?.left) - ) { - realSetOnControl('linked'); - } - } else if ( - isEqual(value?.[0]?.top, value?.[0]?.bottom) && - isEqual(value?.[0]?.top, value?.[0]?.bottom) && - isEqual(value?.[0]?.top, value?.[0]?.right) && - isEqual(value?.[0]?.top, value?.[0]?.left) - ) { - realSetOnControl('linked'); - } - } - - //if the mobile or tablet units are the same as desktop, unset them so they now inherit / follow desktop. - if (mobileValue && isEqual(value?.[0]?.unit, mobileValue?.[0]?.unit)) { - mobileValue[0].unit = ''; - onChangeMobile(mobileValue); - } - if (tabletValue && isEqual(value?.[0]?.unit, tabletValue?.[0]?.unit)) { - tabletValue[0].unit = ''; - onChangeTablet(tabletValue); - } - }, []); - const { setPreviewDeviceType } = useDispatch('kadenceblocks/data'); - const customSetPreviewDeviceType = (device) => { - setPreviewDeviceType(capitalizeFirstLetter(device)); - setDeviceType(capitalizeFirstLetter(device)); - }; - const devices = [ - { - name: 'Desktop', - title: , - itemClass: 'kb-desk-tab', - }, - { - name: 'Tablet', - title: , - itemClass: 'kb-tablet-tab', - }, - { - name: 'Mobile', - key: 'mobile', - title: , - itemClass: 'kb-mobile-tab', - }, - ]; - let liveValue = value?.[0] ? value[0] : deskDefault; - if (deviceType === 'Tablet') { - liveValue = tabletValue?.[0] ? tabletValue[0] : tabletDefault; - } else if (deviceType === 'Mobile') { - liveValue = mobileValue?.[0] ? mobileValue[0] : mobileDefault; - } - const onReset = () => { - if (deviceType === 'Tablet') { - onChangeTablet([tabletDefault]); - } else if (deviceType === 'Mobile') { - onChangeMobile([mobileDefault]); - } else { - onChange([deskDefault]); - } - }; - const output = {}; - const mobileUnit = mobileValue?.[0]?.unit ? mobileValue[0].unit : value?.[0]?.unit ? value[0].unit : 'px'; - const tabletUnit = tabletValue?.[0]?.unit ? tabletValue[0].unit : value?.[0]?.unit ? value[0].unit : 'px'; - - output.Mobile = ( - onChangeMobile(size)} - control={realControl} - onControl={(value) => realSetOnControl(value)} - defaultValue={mobileDefault} - styles={styles} - units={[mobileUnit]} - firstIcon={firstIcon} - secondIcon={secondIcon} - thirdIcon={thirdIcon} - fourthIcon={fourthIcon} - linkIcon={linkIcon} - unlinkIcon={unlinkIcon} - /> - ); - output.Tablet = ( - onChangeTablet(size)} - control={realControl} - onControl={(value) => realSetOnControl(value)} - defaultValue={tabletDefault} - styles={styles} - units={[tabletUnit]} - firstIcon={firstIcon} - secondIcon={secondIcon} - thirdIcon={thirdIcon} - fourthIcon={fourthIcon} - linkIcon={linkIcon} - unlinkIcon={unlinkIcon} - /> - ); - output.Desktop = ( - onChange(size)} - control={realControl} - onControl={(value) => realSetOnControl(value)} - defaultValue={deskDefault} - styles={styles} - units={units} - firstIcon={firstIcon} - secondIcon={secondIcon} - thirdIcon={thirdIcon} - fourthIcon={fourthIcon} - linkIcon={linkIcon} - unlinkIcon={unlinkIcon} - /> - ); - let currentDefault = deskDefault; - if ('Mobile' === deviceType) { - currentDefault = mobileDefault; - } else if ('Mobile' === deviceType) { - currentDefault = tabletDefault; - } - return [ - onChange && onChangeTablet && onChangeMobile && ( -
-
- {label && ( -
- - {reset && ( -
-
- )} -
- )} - - {map(devices, ({ name, key, title, itemClass }) => ( - - ))} - - {realSetOnControl && ( -
-
- {output[deviceType] ? output[deviceType] : output.Desktop} -
-
- ), - ]; -} diff --git a/src/packages/components/src/border/responsive-single-border-control/index.js b/src/packages/components/src/border/responsive-single-border-control/index.js deleted file mode 100644 index ce9129647..000000000 --- a/src/packages/components/src/border/responsive-single-border-control/index.js +++ /dev/null @@ -1,268 +0,0 @@ -/** - * Responsive Single Border Control Component - * - */ - -/** - * Internal block libraries - */ -import { useSelect, useDispatch } from '@wordpress/data'; -import { useState, useRef, useEffect } from '@wordpress/element'; -import { __ } from '@wordpress/i18n'; -import { map, isEqual } from 'lodash'; -import SingleBorderControl from '../single-border-control'; -import { capitalizeFirstLetter } from '@kadence/helpers'; -import { undo, settings, link, linkOff } from '@wordpress/icons'; -/** - * WordPress dependencies - */ -import { useInstanceId } from '@wordpress/compose'; -import { Dashicon, Button, ButtonGroup } from '@wordpress/components'; -import { outlineTopIcon, outlineRightIcon, outlineBottomIcon, outlineLeftIcon } from '@kadence/icons'; -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function ResponsiveSingleBorderControl({ - label, - onChange, - onChangeTablet, - onChangeMobile, - onControl, - value = '', - tabletValue = '', - mobileValue = '', - control = 'individual', - units = ['px', 'em', 'rem'], - firstIcon = outlineTopIcon, - secondIcon = outlineRightIcon, - thirdIcon = outlineBottomIcon, - fourthIcon = outlineLeftIcon, - linkIcon = link, - unlinkIcon = linkOff, - styles = ['solid', 'dashed', 'dotted', 'double'], - deskDefault = { - top: ['', '', ''], - right: ['', '', ''], - bottom: ['', '', ''], - left: ['', '', ''], - unit: 'px', - }, - tabletDefault = { - top: ['', '', ''], - right: ['', '', ''], - bottom: ['', '', ''], - left: ['', '', ''], - unit: '', - }, - mobileDefault = { - top: ['', '', ''], - right: ['', '', ''], - bottom: ['', '', ''], - left: ['', '', ''], - unit: '', - }, - reset = true, - defaultLinked = true, -}) { - const instanceId = useInstanceId(ResponsiveSingleBorderControl); - const measureIcons = { - first: firstIcon, - second: secondIcon, - third: thirdIcon, - fourth: fourthIcon, - link: linkIcon, - unlink: unlinkIcon, - }; - - const currentDesktopObject = value?.[0] || deskDefault; - const currentTabletObject = tabletValue?.[0] || tabletDefault; - const currentMobileObject = mobileValue?.[0] || mobileDefault; - const [theControl, setTheControl] = useState(control); - const realControl = onControl ? control : theControl; - const realSetOnControl = onControl ? onControl : setTheControl; - const [deviceType, setDeviceType] = useState('Desktop'); - const theDevice = useSelect((select) => { - return select('kadenceblocks/data').getPreviewDeviceType(); - }, []); - if (theDevice !== deviceType) { - setDeviceType(theDevice); - } - useEffect(() => { - //if the mobile or tablet units are the same as desktop, unset them so they now inherit / follow desktop. - if (currentMobileObject && isEqual(currentDesktopObject.unit, currentMobileObject?.unit)) { - currentMobileObject.unit = ''; - handleOnChangeMobile('', 'unit'); - } - if (currentTabletObject && isEqual(currentDesktopObject.unit, currentTabletObject?.unit)) { - currentTabletObject.unit = ''; - handleOnChangeTablet('', 'unit'); - } - }, []); - const { setPreviewDeviceType } = useDispatch('kadenceblocks/data'); - const customSetPreviewDeviceType = (device) => { - setPreviewDeviceType(capitalizeFirstLetter(device)); - setDeviceType(capitalizeFirstLetter(device)); - }; - const devices = [ - { - name: 'Desktop', - title: , - itemClass: 'kb-desk-tab', - }, - { - name: 'Tablet', - title: , - itemClass: 'kb-tablet-tab', - }, - { - name: 'Mobile', - key: 'mobile', - title: , - itemClass: 'kb-mobile-tab', - }, - ]; - let liveValue = currentDesktopObject; - if (deviceType === 'Tablet') { - liveValue = currentTabletObject; - } else if (deviceType === 'Mobile') { - liveValue = currentMobileObject; - } - const onReset = () => { - if (deviceType === 'Tablet') { - onChangeTablet([tabletDefault]); - } else if (deviceType === 'Mobile') { - onChangeMobile([mobileDefault]); - } else { - onChange([deskDefault]); - } - }; - const output = {}; - const mobileUnit = currentMobileObject?.unit - ? currentMobileObject.unit - : currentDesktopObject?.unit - ? currentDesktopObject.unit - : 'px'; - const tabletUnit = currentTabletObject?.unit - ? currentTabletObject.unit - : currentDesktopObject?.unit - ? currentDesktopObject.unit - : 'px'; - - const handleOnChangeDesktop = (size, attr) => { - const newVal = JSON.parse(JSON.stringify(value)); - newVal[0][attr] = size; - onChange(newVal); - }; - const handleOnChangeTablet = (size, attr) => { - const newVal = JSON.parse(JSON.stringify(tabletValue)); - newVal[0][attr] = size; - onChangeTablet(newVal); - }; - const handleOnChangeMobile = (size, attr) => { - const newVal = JSON.parse(JSON.stringify(mobileValue)); - newVal[0][attr] = size; - onChangeMobile(newVal); - }; - - output.Mobile = ( - handleOnChangeMobile(size, 'bottom')} - onUnit={(unit) => handleOnChangeMobile(unit, 'unit')} - defaultValue={mobileDefault?.bottom} - styles={styles} - units={[mobileUnit]} - firstIcon={firstIcon} - secondIcon={secondIcon} - thirdIcon={thirdIcon} - fourthIcon={fourthIcon} - /> - ); - output.Tablet = ( - handleOnChangeTablet(size, 'bottom')} - onUnit={(unit) => handleOnChangeTablet(unit, 'unit')} - defaultValue={tabletDefault?.bottom} - styles={styles} - units={[tabletUnit]} - firstIcon={firstIcon} - secondIcon={secondIcon} - thirdIcon={thirdIcon} - fourthIcon={fourthIcon} - /> - ); - output.Desktop = ( - handleOnChangeDesktop(size, 'bottom')} - onUnit={(unit) => handleOnChangeDesktop(unit, 'unit')} - defaultValue={deskDefault?.bottom} - styles={styles} - units={units} - firstIcon={firstIcon} - secondIcon={secondIcon} - thirdIcon={thirdIcon} - fourthIcon={fourthIcon} - /> - ); - let currentDefault = deskDefault; - if ('Mobile' === deviceType) { - currentDefault = mobileDefault; - } else if ('Mobile' === deviceType) { - currentDefault = tabletDefault; - } - return [ - onChange && onChangeTablet && onChangeMobile && ( -
-
- {label && ( -
- - {reset && ( -
-
- )} -
- )} - - {map(devices, ({ name, key, title, itemClass }) => ( - - ))} - -
-
- {output[deviceType] ? output[deviceType] : output.Desktop} -
-
- ), - ]; -} diff --git a/src/packages/components/src/border/single-border-control/index.js b/src/packages/components/src/border/single-border-control/index.js deleted file mode 100644 index 96259172a..000000000 --- a/src/packages/components/src/border/single-border-control/index.js +++ /dev/null @@ -1,236 +0,0 @@ -/** - * Single Border Component - * - */ -import { - pxIcon, - emIcon, - remIcon, - vhIcon, - vwIcon, - percentIcon, - outlineTopIcon, - outlineRightIcon, - outlineBottomIcon, - outlineLeftIcon, - individualIcon, - linkedIcon, - topLeftIcon, - topRightIcon, - bottomRightIcon, - bottomLeftIcon, - radiusLinkedIcon, - radiusIndividualIcon, -} from '@kadence/icons'; -import { settings, link, linkOff } from '@wordpress/icons'; -import { flow } from 'lodash'; -/** - * WordPress dependencies - */ -import { useInstanceId } from '@wordpress/compose'; -/** - * Import Externals - */ -import PopColorControl from '../../pop-color-control'; -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import { - __experimentalUnitControl as UnitControl, - DropdownMenu, - Flex, - FlexItem, - MenuGroup, - MenuItem, -} from '@wordpress/components'; -/** - * Build the Border controls - * @returns {object} Border Control. - */ -export default function SingleBorderControl({ - label, - onChange, - value = '', - className = '', - step = 1, - max = 200, - min = 0, - unit = 'px', - onUnit, - units = ['px', 'em', 'rem'], - styles = ['solid', 'dashed', 'dotted', 'double'], - defaultLinked = true, -}) { - const instanceId = useInstanceId(SingleBorderControl); - const onChangeStyle = (style) => { - const newVal = [...value]; - newVal[1] = style; - onChange(newVal); - }; - const currentStyle = value?.[1] || 'solid'; - const onChangeColor = (color) => { - const newVal = [...value]; - newVal[0] = color; - onChange(newVal); - }; - const currentColor = value?.[0] || ''; - const currentSize = undefined !== value?.[2] && '' !== value?.[2] ? value[2] : ''; - const onChangeSize = (size) => { - const isNumeric = !isNaN(parseFloat(size)); - const nextValue = isNumeric ? parseFloat(size) : ''; - const newVal = [...value]; - newVal[2] = nextValue; - onChange(newVal); - }; - - const styleIcons = { - solid: ( - - - - ), - dashed: ( - - - - ), - dotted: ( - - - - - - - ), - double: ( - - - - ), - }; - const styleLabels = { - solid: __('Solid', 'kadence-blocks'), - dashed: __('Dashed', 'kadence-blocks'), - dotted: __('Dotted', 'kadence-blocks'), - double: __('Double', 'kadence-blocks'), - }; - const controlUnits = units.map((unitItem) => ({ - value: unitItem, - label: unitItem, - })); - return [ - onChange && ( -
- {label && ( - - - - - - )} -
- onChangeColor(value)} - /> - - {({ onClose }) => ( - <> - - {styles.map((style) => ( - { - onClose(); - onChangeStyle(style); - }} - label={styleLabels[style]} - /> - ))} - - - )} - -
- onChangeSize(newVal)} - /> -
- -
-
-
-
- ), - ]; -} diff --git a/src/packages/components/src/box-shadow-control/editor.scss b/src/packages/components/src/box-shadow-control/editor.scss deleted file mode 100644 index 94f81a107..000000000 --- a/src/packages/components/src/box-shadow-control/editor.scss +++ /dev/null @@ -1,74 +0,0 @@ -.kt-box-shadow-label .components-base-control.components-toggle-control, .kt-box-shadow-label .components-toggle-control .components-base-control__field { - margin-bottom: 0 !important; -} -.kt-box-shadow-label h2.kt-beside-color-label { - flex-grow: 1; - margin: 12px 0; - font-weight: 400; -} -.kt-box-shadow-label { - display: flex; - align-items: center; -} -.kt-inner-sub-section-row { - display: flex; - margin-bottom: 10px; -} -.kt-inner-sub-section { - border: 1px solid var(--kb-border-color, #859CB6 ); - border-top: 0; - padding: 25px 10px 10px 10px; - margin-bottom: 15px; - margin-top: -12px; -} -.kt-box-shadow-subset { - padding: 0 2px; - text-align: center; -} -.kt-box-shadow-subset .kt-box-shadow-title { - font-size:12px; -} - -.kt-box-shadow-subset .kt-advanced-color-settings-container { - flex-direction: column-reverse; -} -.kt-box-shadow-subset input.components-text-control__input { - padding: 0 1px; - border: 1px solid var(--kb-border-color, #859CB6 ); -} - -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label.radio-soft-inner-glow:before { - box-shadow: 0 0 5px 3px #a1afc1 inset; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label.radio-soft-outer-glow:before { - box-shadow: 0 0 5px 3px #a1afc1; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label.radio-right-offset-glow:before { - box-shadow: 4px 4px 3px 0 #a1afc1; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label.radio-bottom-offset-glow:before { - box-shadow: 0 4px 3px 0 #a1afc1; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label.radio-inner-solid:before { - box-shadow: 0 0 0 5px #a1afc1 inset; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label.radio-right-bottom-solid:before { - box-shadow: 4px 4px 0 0 #a1afc1 ; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label.radio-top-left-solid:before { - box-shadow: -4px -4px 0 0 #a1afc1 ; -} - -.kt-box-shadow-container .kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label:not(.radio-none):before { - content: "."; - display: block; - width: 28px; - height: 28px; - color: white; - margin: 0 auto; - border: 1px solid gray; -} - -.kt-box-shadow-container .kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label span { - display: none; -} diff --git a/src/packages/components/src/box-shadow-control/index.js b/src/packages/components/src/box-shadow-control/index.js deleted file mode 100644 index c0b5ceb22..000000000 --- a/src/packages/components/src/box-shadow-control/index.js +++ /dev/null @@ -1,203 +0,0 @@ -/** - * BoxShadow Component - * - */ - -/** - * Import Externals - */ -import PopColorControl from '../pop-color-control'; -import KadenceRadioButtons from '../common/radio-buttons'; - -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import { Component } from '@wordpress/element'; -import { - ToggleControl, -} from '@wordpress/components'; -/** - * Import Css - */ -import './editor.scss'; -import { - shadowPresetNone, -} from "../../../icons/src"; - -/** - * Build the BoxShadow controls - * @returns {object} BoxShadow settings. - */ -class BoxShadowControl extends Component { - constructor( - label, - enable = true, - color, colorDefault, - opacity, - spread, - blur, - hOffset, - vOffset, - inset, - onColorChange, - onOpacityChange, - onSpreadChange, - onBlurChange, - onHOffsetChange, - onVOffsetChange, - onInsetChange, - onEnableChange, - ) { - super( ...arguments ); - } - render() { - - const presetOptions = [ - { value: 'none', label: __('None', 'kadence-blocks'), icon: shadowPresetNone }, - { value: 'soft-inner-glow', label: __('Soft Inner Glow', 'kadence-blocks'), icon: 'soft-inner-glow' }, - { value: 'soft-outer-glow', label: __('Soft Outer Glow', 'kadence-blocks'), icon: 'soft-outer-glow' }, - { value: 'right-offset-glow', label: __('Right Offset Glow', 'kadence-blocks'), icon: 'right-offset-glow' }, - { value: 'bottom-offset-glow', label: __('Bottom Offset Glow', 'kadence-blocks'), icon: 'bottom-offset-glow' }, - { value: 'inner-solid', label: __('Inner Solid', 'kadence-blocks'), icon: 'inner-solid' }, - { value: 'right-bottom-solid', label: __('Right Bottom Solid', 'kadence-blocks'), icon: 'right-bottom-solid' }, - { value: 'top-left-solid', label: __('Top Left Solid', 'kadence-blocks'), icon: 'top-left-solid' }, - ]; - const presetSettings = { - 'none': {hOffset: 0, vOffset: 0, blur: 0, spread: 0, inset: false}, - 'soft-inner-glow': {hOffset: 0, vOffset: 0, blur: 60, spread: -15, inset: true}, - 'soft-outer-glow': {hOffset: 0, vOffset: 0, blur: 60, spread: 5, inset: false}, - 'right-offset-glow': {hOffset: 20, vOffset: 20, blur: 30, spread: 0, inset: false}, - 'bottom-offset-glow': {hOffset: 0, vOffset: 35, blur: 30, spread: -5, inset: false}, - 'inner-solid': {hOffset: 0, vOffset: 0, blur: 0, spread: 15, inset: true}, - 'right-bottom-solid': {hOffset: 15, vOffset: 15, blur: 0, spread: 0, inset: false}, - 'top-left-solid': {hOffset: -15, vOffset: -15, blur: 0, spread: 0, inset: false}, - }; - - const applyPreset = (value) => { - Promise.resolve() - .then(() => this.props.onHOffsetChange(presetSettings[value].hOffset)) - .then(() => this.props.onVOffsetChange(presetSettings[value].vOffset)) - .then(() => this.props.onBlurChange(presetSettings[value].blur)) - .then(() => this.props.onSpreadChange(presetSettings[value].spread)) - .then(() => this.props.onInsetChange(presetSettings[value].inset)); - }; - - return ( -
- { this.props.label && ( -
-

{ this.props.label }

- { this.props.onEnableChange && ( - this.props.onEnableChange( value ) } - /> - ) } -
- ) } - { this.props.enable && ( -
- { - applyPreset(value); - }} - /> -
-
-

{ __( 'Color' ) }

- this.props.onColorChange( value ) } - opacityValue={ this.props.opacity } - onOpacityChange={ value => this.props.onOpacityChange( value ) } - onArrayChange={ this.props.onArrayChange ? ( color, opacity ) => this.props.onArrayChange( color, opacity ) : undefined } - /> -
-
-

{ __( 'X' ) }

-
-
- this.props.onHOffsetChange( Number( event.target.value ) ) } - min={ -200 } - max={ 200 } - step={ 1 } - type="number" - className="components-text-control__input" - /> -
-
-
-
-

{ __( 'Y' ) }

-
-
- this.props.onVOffsetChange( Number( event.target.value ) ) } - min={ -200 } - max={ 200 } - step={ 1 } - type="number" - className="components-text-control__input" - /> -
-
-
-
-

{ __( 'Blur' ) }

-
-
- this.props.onBlurChange( Number( event.target.value ) ) } - min={ 0 } - max={ 200 } - step={ 1 } - type="number" - className="components-text-control__input" - /> -
-
-
-
-

{ __( 'Spread' ) }

-
-
- this.props.onSpreadChange( Number( event.target.value ) ) } - min={ -200 } - max={ 200 } - step={ 1 } - type="number" - className="components-text-control__input" - /> -
-
-
-
- { this.props.onInsetChange && ( -
- this.props.onInsetChange( value ) } - /> -
- ) } -
- ) } -
- ); - } -} -export default ( BoxShadowControl ); diff --git a/src/packages/components/src/color-control-with-states/index.js b/src/packages/components/src/color-control-with-states/index.js deleted file mode 100644 index a492e7d54..000000000 --- a/src/packages/components/src/color-control-with-states/index.js +++ /dev/null @@ -1,93 +0,0 @@ -import { HoverToggleControl, PopColorControl } from '../'; -import { __ } from '@wordpress/i18n'; - -//a group of color controls for displaying background and/or color controls with hover and active states -export default function ColorControlWithStates({ - colorBase = 'color', - backgroundBase = 'background', - colorLabel = 'Color', - backgroundLabel = 'Background', - size = '', - suffix = '', - includeBackground = true, - includeActive = true, - setAttributes, - setMetaAttributes, - attributes, -}) { - const colorValue = attributes[colorBase + suffix + size]; - const backgroundValue = attributes[backgroundBase + suffix + size]; - const colorValueHover = attributes[colorBase + suffix + 'Hover' + size]; - const backgroundValueHover = attributes[backgroundBase + suffix + 'Hover' + size]; - const colorValueActive = attributes[colorBase + suffix + 'Active' + size]; - const backgroundValueActive = attributes[backgroundBase + suffix + 'Active' + size]; - - const normalComponents = ( - <> - setAttributes({ [colorBase + suffix + size]: value })} - key={'normal'} - /> - {includeBackground && ( - setAttributes({ [backgroundBase + suffix + size]: value })} - key={'normalb'} - /> - )} - - ); - - const hoverComponents = ( - <> - setAttributes({ [colorBase + suffix + 'Hover' + size]: value })} - key={'hover'} - /> - {includeBackground && ( - setAttributes({ [backgroundBase + suffix + 'Hover' + size]: value })} - key={'hoverb'} - /> - )} - - ); - - const activeComponents = includeActive ? ( - <> - setAttributes({ [colorBase + suffix + 'Active' + size]: value })} - key={'active'} - /> - {includeBackground && ( - setAttributes({ [backgroundBase + suffix + 'Active' + size]: value })} - key={'activeb'} - /> - )} - - ) : null; - - return ( - <> - - - ); -} diff --git a/src/packages/components/src/color-fields/index.js b/src/packages/components/src/color-fields/index.js deleted file mode 100644 index a32d83fc1..000000000 --- a/src/packages/components/src/color-fields/index.js +++ /dev/null @@ -1,207 +0,0 @@ -import { isValidHex } from 'react-color/lib/helpers/color' -import { EditableInput } from 'react-color/lib/components/common'; - -import { Component, Fragment } from '@wordpress/element'; -import { Dashicon } from '@wordpress/components'; - -class ColorFields extends Component { - constructor( props ) { - super( props ); - this.toggleViews = this.toggleViews.bind( this ); - this.handleChange = this.handleChange.bind( this ); - this.state = { - view: 'rgb', - }; - } - toggleViews() { - if ( this.state.view === 'hsl' ) { - this.setState( { view: 'rgb' } ); - } else if ( this.state.view === 'rgb' ) { - this.setState( { view: 'hsl' } ); - } - } - handleChange( data, e ) { - if ( data.hex && isValidHex( data.hex ) ) { - this.props.onChange( { - hex: data.hex, - source: 'hex', - }, e ); - } else if ( data.r || data.g || data.b ) { - this.props.onChange( { - r: data.r || this.props.rgb.r, - g: data.g || this.props.rgb.g, - b: data.b || this.props.rgb.b, - a: this.props.rgb.a, - source: 'rgb', - }, e ); - } else if ( data.a ) { - if ( data.a < 0 ) { - data.a = 0; - } else if ( data.a > 1 ) { - data.a = 1; - } - - this.props.onChange( { - h: this.props.hsl.h, - s: this.props.hsl.s, - l: this.props.hsl.l, - a: Math.round( data.a * 100 ) / 100, - source: 'rgb', - }, e ); - } else if ( data.h || data.s || data.l ) { - // Remove any occurances of '%'. - if ( typeof( data.s ) === 'string' ) { data.s = data.s.replace( '%', '' ); } - if ( typeof( data.l ) === 'string' ) { data.l = data.l.replace( '%', '' ); } - this.props.onChange( { - h: data.h || this.props.hsl.h || 0, - s: Number( ( data.s && data.s / 100 ) || this.props.hsl.s || 0.0 ), - l: Number( ( data.l && data.l / 100 ) || this.props.hsl.l || 0.0 ), - a: Math.round( data.a * 100 ) / 100 || this.props.rgb.a || 1, - source: 'hsl', - }, e ); - } - } - render() { - const styles = { - fields: { - display: 'flex', - paddingTop: '4px', - }, - single: { - flex: '1', - paddingLeft: '6px', - }, - alpha: { - flex: '1', - paddingLeft: '6px', - }, - double: { - flex: '2', - }, - input: { - width: '100%', - padding: '4px 10% 3px', - border: 'none', - borderRadius: '2px', - boxShadow: 'rgb(218, 218, 218) 0px 0px 0px 1px inset', - fontSize: '11px', - }, - label: { - display: 'block', - textAlign: 'center', - fontSize: '11px', - color: '#222', - paddingTop: '3px', - paddingBottom: '4px', - textTransform: 'capitalize', - }, - toggle: { - width: '32px', - textAlign: 'right', - position: 'relative', - }, - }; - return ( -
-
- -
- { this.state.view === 'rgb' && ( - -
- -
-
- -
-
- -
-
- -
-
- ) } - { this.state.view === 'hsl' && ( - -
- -
-
- -
-
- -
-
- -
-
- ) } -
-
this.icon = icon }> - - -
-
-
- ); - } -} - -export default ColorFields; diff --git a/src/packages/components/src/color-icons/index.js b/src/packages/components/src/color-icons/index.js deleted file mode 100644 index 255a1843d..000000000 --- a/src/packages/components/src/color-icons/index.js +++ /dev/null @@ -1,53 +0,0 @@ -const ColorIcons = { - inherit: - - - - - - -}; -export default ColorIcons; diff --git a/src/packages/components/src/color-picker/index.js b/src/packages/components/src/color-picker/index.js deleted file mode 100644 index 07a57289e..000000000 --- a/src/packages/components/src/color-picker/index.js +++ /dev/null @@ -1,127 +0,0 @@ -import { CustomPicker } from 'react-color'; -import { Hue, Saturation, Alpha, Checkboard } from 'react-color/lib/components/common'; -import { ChromePointerCircle } from 'react-color/lib/components/chrome/ChromePointerCircle'; -import { ChromePointer } from 'react-color/lib/components/chrome/ChromePointer'; -import ColorFields from '../color-fields'; - -const ColorPicker = ( { rgb, hex, hsv, hsl, onChange, renderers } ) => { - const styles = { - picker: { - width: 300, - position: 'relative', - marginBottom: 10, - }, - hue: { - height: 10, - position: 'relative', - marginBottom: '8px', - }, - Hue: { - radius: '2px', - }, - alpha: { - height: '10px', - position: 'relative', - }, - Alpha: { - radius: '2px', - }, - input: { - height: 34, - border: `1px solid ${ hex }`, - paddingLeft: 10, - }, - body: { - padding: '10px 0', - }, - controls: { - display: 'flex', - }, - color: { - width: '30px', - height: '30px', - position: 'relative', - marginTop: '3px', - marginLeft: '10px', - borderRadius: '50%', - overflow: 'hidden', - }, - activeColor: { - position: 'absolute', - left: 0, - right: 0, - top: 0, - bottom: 0, - borderRadius: '50%', - background: `rgba(${ rgb.r },${ rgb.g },${ rgb.b },${ rgb.a })`, - boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.1)', - }, - swatch: { - width: 54, - height: 38, - background: hex, - }, - sliders: { - padding: '4px 0', - flex: '1', - }, - saturation: { - width: '100%', - paddingBottom: '50%', - position: 'relative', - overflow: 'hidden', - }, - Saturation: { - radius: '2px 2px 0 0', - shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)', - }, - }; - return ( -
-
- -
-
-
-
-
- -
-
- -
-
-
- -
-
-
-
- -
- ); -}; -export default CustomPicker( ColorPicker ); diff --git a/src/packages/components/src/color/advanced-color-control-palette/index.js b/src/packages/components/src/color/advanced-color-control-palette/index.js deleted file mode 100644 index 6c49ca520..000000000 --- a/src/packages/components/src/color/advanced-color-control-palette/index.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Measure Component - * - */ - -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import { Component } from '@wordpress/element'; -import { - Button, - Popover, - ColorIndicator, - ColorPicker, - TextControl, - Tooltip, -} from '@wordpress/components'; - -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -class AdvancedColorControlPalette extends Component { - constructor( label, colorValue, onSave ) { - super( ...arguments ); - this.state = { - isVisible: false, - color: '', - name: '', - }; - } - componentDidMount() { - this.setState( { color: this.props.colorValue } ); - this.setState( { name: this.props.nameValue } ); - } - render() { - const toggleVisible = () => { - this.setState( { isVisible: true } ); - }; - const toggleClose = () => { - if ( this.state.isVisible === true ) { - this.setState( { isVisible: false } ); - this.props.onSave( this.state.color, this.state.name ); - } - }; - const changeColor = ( value ) => { - this.setState( { color: value } ); - }; - return ( -
- { this.state.isVisible && ( - - changeColor( color.hex ) } - disableAlpha - /> - this.setState( { name: value } ) } - /> - - ) } - { this.state.isVisible && ( - - - - ) } - { ! this.state.isVisible && ( - - - - ) } -
- ); - } -} -export default ( AdvancedColorControlPalette ); diff --git a/src/packages/components/src/color/border-color-control/editor.scss b/src/packages/components/src/color/border-color-control/editor.scss deleted file mode 100644 index a8485a5df..000000000 --- a/src/packages/components/src/color/border-color-control/editor.scss +++ /dev/null @@ -1,8 +0,0 @@ -.kadence-controls-content-border .components-base-control.kadence-pop-color-control { - margin-bottom:0; -} -.kadence-controls-content-border .kadence-pop-color-control .kadence-beside-label { - margin: 0.7em 0; - align-items: center; - display: flex; -} \ No newline at end of file diff --git a/src/packages/components/src/color/border-color-control/index.js b/src/packages/components/src/color/border-color-control/index.js deleted file mode 100644 index 0ecb98efe..000000000 --- a/src/packages/components/src/color/border-color-control/index.js +++ /dev/null @@ -1,211 +0,0 @@ -/** - * Measure Component - * - */ - -import PopColorControl from '../../pop-color-control'; - -/** - * Import External - */ -import { map } from 'lodash'; - - -/** - * Import Css - */ - import './editor.scss'; - -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import { Fragment, useState, useRef } from '@wordpress/element'; -import { - Button, - ButtonGroup, - Tooltip, -} from '@wordpress/components'; -import { useSelect, useDispatch } from '@wordpress/data'; - -import { - outlineTopIcon, - outlineRightIcon, - outlineBottomIcon, - outlineLeftIcon, - pxIcon, - emIcon, - remIcon, - vhIcon, - vwIcon, - percentIcon, - individualIcon, - linkedIcon, - topLeftIcon, - topRightIcon, - bottomRightIcon, - bottomLeftIcon, - radiusLinkedIcon, - radiusIndividualIcon -} from '@kadence/icons'; -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function BorderColorControls( { - label, - swatchLabel = '', - value, - onChange, - defaultColor = '', - value2, - swatchLabel2 = '', - onChange2, - defaultColor2 = '', - value3, - swatchLabel3 = '', - onChange3, - defaultColor3 = '', - control, - onControl, - firstIcon = outlineTopIcon, - secondIcon = outlineRightIcon, - thirdIcon = outlineBottomIcon, - fourthIcon = outlineLeftIcon, - linkIcon = linkedIcon, - unlinkIcon = individualIcon, - className = '', - reset = false, - } ) { - const measureIcons = { - first: firstIcon, - second: secondIcon, - third: thirdIcon, - fourth: fourthIcon, - link: linkIcon, - unlink: unlinkIcon, - } - const [ localControl, setLocalControl ] = useState( 'individual' ); - const realControl = control ? control : localControl; - const realOnChangeControl = onControl ? onControl : setLocalControl; - const containerRef = useRef(); - return ( -
-
- { label && ( - { label } - ) } - { realOnChangeControl && ( -
- { realControl !== 'individual' ? ( - - - - ) : ( - - - - ) } -
- ) } -
-
- { realControl !== 'individual' && ( - - onChange( [ update, update, update, update ] ) } - swatchLabel2={ swatchLabel2 ? swatchLabel2 : '' } - value2={ ( value2 && value2[ 0 ] ? value2[ 0 ] : '' ) } - default2={ defaultColor2 ? defaultColor2 : '' } - onChange2={ onChange2 ? update => onChange2( [ update, update, update, update ] ) : undefined } - swatchLabel3={ swatchLabel3 ? swatchLabel3 : '' } - value3={ ( value3 && value3[ 0 ] ? value3[ 0 ] : '' ) } - default3={ defaultColor3 ? defaultColor3 : '' } - onChange3={ onChange3 ? update => onChange3( [ update, update, update, update ] ) : undefined } - /> - - ) } - { realControl === 'individual' && ( -
- onChange( [ update, value[ 1 ], value[ 2 ], value[ 3 ] ] ) } - swatchLabel2={ swatchLabel2 ? swatchLabel2 : '' } - value2={ ( value2 && value2[ 0 ] ? value2[ 0 ] : '' ) } - default2={ defaultColor2 ? defaultColor2 : '' } - onChange2={ onChange2 ? update => onChange2( [ update, value2[ 1 ], value2[ 2 ], value2[ 3 ] ] ) : undefined } - value3={ ( value3 && value3[ 0 ] ? value3[ 0 ] : '' ) } - swatchLabel3={ swatchLabel3 ? swatchLabel3 : '' } - default3={ defaultColor3 ? defaultColor3 : '' } - onChange3={ onChange3 ? update => onChange3( [ update, value3[ 1 ], value3[ 2 ], value3[ 3 ] ] ) : undefined } - /> - onChange( [ value[ 0 ], update, value[ 2 ], value[ 3 ] ] ) } - swatchLabel2={ swatchLabel2 ? swatchLabel2 : '' } - value2={ ( value2 && value2[ 1 ] ? value2[ 1 ] : '' ) } - default2={ defaultColor2 ? defaultColor2 : '' } - onChange2={ onChange2 ? update => onChange2( [ value2[ 0 ], update, value2[ 2 ], value2[ 3 ] ] ) : undefined } - value3={ ( value3 && value3[ 1 ] ? value3[ 1 ] : '' ) } - swatchLabel3={ swatchLabel3 ? swatchLabel3 : '' } - default3={ defaultColor3 ? defaultColor3 : '' } - onChange3={ onChange3 ? update => onChange3( [ value3[ 0 ], update, value3[ 2 ], value3[ 3 ] ] ) : undefined } - /> - onChange( [ value[ 0 ], value[ 1 ], update, value[ 3 ] ] ) } - value2={ ( value2 && value2[ 2 ] ? value2[ 2 ] : '' ) } - swatchLabel2={ swatchLabel2 ? swatchLabel2 : '' } - default2={ defaultColor2 ? defaultColor2 : '' } - onChange2={ onChange2 ? update => onChange2( [ value2[ 0 ], value2[ 1 ], update, value2[ 3 ] ] ) : undefined } - value3={ ( value3 && value3[ 2 ] ? value3[ 2 ] : '' ) } - swatchLabel3={ swatchLabel3 ? swatchLabel3 : '' } - default3={ defaultColor3 ? defaultColor3 : '' } - onChange3={ onChange3 ? update => onChange3( [ value3[ 0 ], value3[ 1 ], update, value3[ 3 ] ] ) : undefined } - /> - onChange( [ value[ 0 ], value[ 1 ], value[ 2 ], update ] ) } - value2={ ( value2 && value2[ 3 ] ? value2[ 3 ] : '' ) } - swatchLabel2={ swatchLabel2 ? swatchLabel2 : '' } - default2={ defaultColor2 ? defaultColor2 : '' } - onChange2={ onChange2 ? update => onChange2( [ value2[ 0 ], value2[ 1 ], value2[ 2 ], update ] ) : undefined } - value3={ ( value3 && value3[ 3 ] ? value3[ 3 ] : '' ) } - swatchLabel3={ swatchLabel3 ? swatchLabel3 : '' } - default3={ defaultColor3 ? defaultColor3 : '' } - onChange3={ onChange3 ? update => onChange3( [ value3[ 0 ], value3[ 1 ], value3[ 2 ], update ] ) : undefined } - /> -
- ) } -
-
- ); -} diff --git a/src/packages/components/src/color/css/editor.css b/src/packages/components/src/color/css/editor.css deleted file mode 100644 index fe374c124..000000000 --- a/src/packages/components/src/color/css/editor.css +++ /dev/null @@ -1,7 +0,0 @@ -.kadence-controls-content-border .components-base-control.kadence-pop-color-control { - margin-bottom: 0; } - -.kadence-controls-content-border .kadence-pop-color-control .kadence-beside-label { - margin: 0.7em 0; - align-items: center; - display: flex; } diff --git a/src/packages/components/src/column-drag-resizer/constants.js b/src/packages/components/src/column-drag-resizer/constants.js deleted file mode 100644 index 99e853860..000000000 --- a/src/packages/components/src/column-drag-resizer/constants.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; - -export const SPACING_SIZES_MAP = [ - { - value: '0', - label: __('None', 'kadence-blocks'), - size: 0, - name: __('None', 'kadence-blocks'), - }, - { - value: 'xxs', - output: 'var(--global-kb-spacing-xxs, 0.5rem)', - size: 8, - label: __('XXS', 'kadence-blocks'), - name: __('2X Small', 'kadence-blocks'), - }, - { - value: 'xs', - output: 'var(--global-kb-spacing-xs, 1rem)', - size: 16, - label: __('XS', 'kadence-blocks'), - name: __('X Small', 'kadence-blocks'), - }, - { - value: 'sm', - output: 'var(--global-kb-spacing-sm, 1.5rem)', - size: 24, - label: __('SM', 'kadence-blocks'), - name: __('Small', 'kadence-blocks'), - }, - { - value: 'md', - output: 'var(--global-kb-spacing-md, 2rem)', - size: 32, - label: __('MD', 'kadence-blocks'), - name: __('Medium', 'kadence-blocks'), - }, - { - value: 'lg', - output: 'var(--global-kb-spacing-lg, 3rem)', - size: 48, - label: __('LG', 'kadence-blocks'), - name: __('Large', 'kadence-blocks'), - }, - { - value: 'xl', - output: 'var(--global-kb-spacing-xl, 4rem)', - size: 64, - label: __('XL', 'kadence-blocks'), - name: __('X Large', 'kadence-blocks'), - }, - { - value: 'xxl', - output: 'var(--global-kb-spacing-xxl, 5rem)', - size: 80, - label: __('XXL', 'kadence-blocks'), - name: __('2X Large', 'kadence-blocks'), - }, - { - value: '3xl', - output: 'var(--global-kb-spacing-3xl, 6.5rem)', - size: 104, - label: __('3XL', 'kadence-blocks'), - name: __('3X Large', 'kadence-blocks'), - }, - { - value: '4xl', - output: 'var(--global-kb-spacing-4xl, 8rem)', - size: 128, - label: __('4XL', 'kadence-blocks'), - name: __('4X Large', 'kadence-blocks'), - }, - { - value: '5xl', - output: 'var(--global-kb-spacing-5xl, 10rem)', - size: 160, - label: __('5XL', 'kadence-blocks'), - name: __('5X Large', 'kadence-blocks'), - }, -]; - -export const PADDING_RESIZE_MAP = [0, 8, 16, 24, 32, 48, 64, 80, 104, 128, 160]; diff --git a/src/packages/components/src/column-drag-resizer/editor.scss b/src/packages/components/src/column-drag-resizer/editor.scss deleted file mode 100644 index 667cebee5..000000000 --- a/src/packages/components/src/column-drag-resizer/editor.scss +++ /dev/null @@ -1,262 +0,0 @@ -.block-editor-block-list__block.is-selected[data-type="kadence/rowlayout"] { - > .innerblocks-wrap > .kt-resizeable-column-container .components-resizable-box__container { - .components-button.kt-fluid-grid-btn { - opacity: 1; - } - .left-column-width-size { - z-index: 100; - opacity: 1; - } - .right-column-width-size { - z-index: 100; - opacity: 1; - } - .components-resizable-box__handle { - display: block; - } - &:hover .editor-row-controls-container.kadence-resize-extra-controls { - opacity: 1; - } - } -} -.kt-resizeable-column-container .components-button.kt-fluid-grid-btn { - position: absolute; - opacity: 0; - right: -12px; - top: 0; - text-align: center; - background: var(--wp-admin-theme-color); - border: 0; - height: 20px; - line-height: 20px; - padding: 0; - width: 24px; - color: white; - z-index: 1010; - box-shadow: none; - padding: 2px; - border-radius: 2px; - svg { - fill: currentColor; - circle { - stroke: currentColor; - } - } -} -.editor-row-column__resizer { - position: absolute !important; - left: 0; - height: 100% !important; - background: transparent; - top: 0; - .components-resizable-box__handle { - z-index: 1000; - &:after { - display: block; - content: ""; - width: 15px; - height: 15px; - border-radius: 50%; - background: #fff; - cursor: inherit; - position: absolute; - top: calc(50% - 8px); - right: calc(50% - 8px); - box-shadow: inset 0 0 0 3px; - color: var(--wp-admin-theme-color); - outline: 2px solid transparent; - left: 50%; - transform: translateX(-50%); - } - &:before { - display: block; - border-radius: 2px; - content: ""; - width: 3px; - height: 10%; - background: var(--wp-admin-theme-color); - cursor: inherit; - position: absolute; - top: 0; - transition: transform 0.1s ease-in; - opacity: 1; - left: 50%; - transform: translate(-50%, -50%); - top: 50%; - transition: height 0.1s ease; - } - } -} -.block-editor-block-list__block.is-selected[data-type="kadence/rowlayout"] { - > .innerblocks-wrap - > .kt-resizeable-column-container - > .components-resizable-box__container - > .editor-row-controls-container - > .components-resizable-box__handle:hover:before { - height: 100%; - } -} -.kt-resizeable-column-container, -.kb-inner-resize-row { - margin-left: 0px; - margin-right: 0px; - position: absolute !important; - height: auto; - width: auto; - left: 0px; - right: 0px; - top: 0px; - bottom: 0px; -} -.editor-row-controls-container { - position: absolute; - right: 0; - height: 100%; - .column-width-size-handle { - opacity: 0; - position: absolute; - top: 50%; - font-size: 11px; - background: rgba(255, 255, 255, 0.9); - z-index: -1; - width: 50px; - height: 30px; - color: black; - text-align: center; - line-height: 30px; - margin-top: -15px; - &.right-column-width-size { - left: 100%; - padding-left: 2px; - margin-left: 0px; - } - &.left-column-width-size { - right: 0; - padding-right: 2px; - margin-left: 0; - } - } -} -.editor-row-controls-container.kadence-resize-extra-controls { - opacity: 0; - transition: opacity 0.2s ease; -} -.block-editor-block-list__block[data-type="kadence/rowlayout"] - .kt-resizeable-column-container - .components-resizable-box__container - .components-resizable-box__handle { - height: 100%; - top: 0px; - display: none; -} -// spacing controls: -.kt-padding-resize-box { - z-index: -1; -} -.kt-row-padding { - display: flex; - width: 100%; - height: 100%; - justify-content: center; - align-items: center; - color: #000; - opacity: 0; - transition: opacity 0.3s ease; - background: rgba(190, 228, 174, 0.7); - span { - padding: 0 6px; - font-size: 11px; - } -} -.block-editor-block-list__block.is-selected[data-type="kadence/rowlayout"] - > .kt-padding-resize-box:hover - .kt-row-padding { - opacity: 1; -} -.wp-block-kadence-rowlayout-handler-top { - top: 0px !important; -} -.wp-block-kadence-rowlayout-handler-top, -.wp-block-kadence-rowlayout-handler-bottom { - display: none; - border-radius: 0; - border: 0; - min-height: 20px; - width: 100%; - height: 100% !important; - position: absolute; - background: transparent; - padding: 0; - z-index: 1000; - cursor: se-resize; - left: 0px; - margin-left: 0px; -} -.wp-block-kadence-rowlayout-handler-bottom { - bottom: 0px !important; -} -.block-editor-block-list__block[data-type="kadence/rowlayout"].is-selected > .kt-padding-resize-box { - z-index: 10; - .wp-block-kadence-rowlayout-handler-top, - .wp-block-kadence-rowlayout-handler-bottom { - display: block; - } -} - -.rtl { - .editor-row-column__resizer { - left: auto; - right: 0; - } - .kt-resizeable-column-container .components-button.kt-fluid-grid-btn { - left: -12px; - right: auto; - } - .editor-row-column__resizer .components-resizable-box__handle:after { - left: 50; - right: auto; - } - .editor-row-controls-container { - .editor-row-controls-container { - right: auto; - } - .column-width-size-handle.left-column-width-size { - right: auto; - left: 0; - padding-right: 0; - padding-left: 2px; - margin-left: auto; - margin-right: 0; - } - .column-width-size-handle.right-column-width-size { - right: 100%; - left: auto; - padding-left: 0; - padding-right: 2px; - margin-left: auto; - margin-right: 0; - } - } -} - -.kt-resizeable-column-inactive { - &.kt-resizeable-column-container .components-button.kt-fluid-grid-btn { - background: gray; - } - - .components-resizable-box__handle { - &:after { - color: gray; - } - &:before { - background: gray; - } - } -} - -//fix for max width image blocks breaking out of their columns -.block-editor-block-list__block[data-type="kadence/rowlayout"] - .kb-image-max-width-set - .components-resizable-box__container { - max-width: 100% !important; -} diff --git a/src/packages/components/src/column-drag-resizer/index.js b/src/packages/components/src/column-drag-resizer/index.js deleted file mode 100644 index c4b064a29..000000000 --- a/src/packages/components/src/column-drag-resizer/index.js +++ /dev/null @@ -1,311 +0,0 @@ -import { Button, Tooltip, ResizableBox } from '@wordpress/components'; -import { isRTL, getPreviewSize } from '@kadence/helpers'; -import classnames from 'classnames'; -import { debounce, throttle } from 'lodash'; - -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import { useState, useEffect, useRef, cloneElement } from '@wordpress/element'; -import { getPreviewGutterSize, getGutterTotal } from './utils'; -/* global ResizeObserver */ - -const ContainerDimensions = ({ children }) => { - const [dimensions, setDimensions] = useState(null); - const parentRef = useRef(null); - - useEffect(() => { - if (!parentRef.current?.parentElement) {return;} - - const getDimensions = (element) => { - const { top, right, bottom, left, width, height } = element.getBoundingClientRect(); - return { top, right, bottom, left, width, height }; - }; - - const updateDimensions = () => { - if (parentRef.current?.parentElement) { - setDimensions(getDimensions(parentRef.current.parentElement)); - } - }; - - // Initial dimensions - updateDimensions(); - - // Set up ResizeObserver - const resizeObserver = new ResizeObserver(() => { - updateDimensions(); - }); - - resizeObserver.observe(parentRef.current.parentElement); - - // Cleanup - return () => { - if (parentRef.current?.parentElement) { - resizeObserver.unobserve(parentRef.current.parentElement); - } - resizeObserver.disconnect(); - }; - }, []); - - if (!dimensions) { - return
; - } - - if (typeof children === 'function') { - const renderedChildren = children(dimensions); - return renderedChildren ?
{renderedChildren}
: null; - } - - return cloneElement(children, { - ...dimensions, - ref: (node) => { - parentRef.current = node; - const { ref } = children; - if (typeof ref === 'function') { - ref(node); - } else if (ref) { - ref.current = node; - } - }, - }); -}; - -/** - * Import Css - */ -import './editor.scss'; - -export default function ColumnDragResizer(props) { - //columns a number of columns - //column widths and array of - const { - attributes, - setAttributes, - previewDevice, - columns, - columnWidths, - columnGap, - columnsUnlocked, - onColumnsUnlocked, - onResize, - onResizeStop, - onResizeTablet, - onResizeStopTablet, - onResizeMobile, - onResizeStopMobile, - active, - } = props; - const { uniqueID, columnGutter, customGutter, gutterType } = attributes; - // const currentGutter = getPreviewGutterSize(previewDevice, columnGutter, customGutter, gutterType); - // const currentGutterTotal = getGutterTotal(currentGutter, columns); - // const gutterAdjuster = `calc( -1 * ( ${currentGutter} / 3 ) / 2)`; - - //TODO use actual mobile values - const previewColumnWidths = getPreviewSize(previewDevice, columnWidths, columnWidths, columnWidths); - - const localOnResizeStop = (event, direction, elt) => { - const newColumnWidths = packageWidths(event, direction, elt); - if (onResizeStopMobile && previewDevice == 'Mobile') { - onResizeStopMobile(newColumnWidths); - } else if (onResizeStopTablet && previewDevice == 'Tablet') { - onResizeStopTablet(newColumnWidths); - } else { - onResizeStop(newColumnWidths); - } - }; - const localOnResize = (event, direction, elt) => { - const newColumnWidths = packageWidths(event, direction, elt); - if (onResizeMobile && previewDevice == 'Mobile') { - onResizeMobile(newColumnWidths); - } else if (onResizeTablet && previewDevice == 'Tablet') { - onResizeTablet(newColumnWidths); - } else { - onResize(newColumnWidths); - } - }; - - const packageWidths = (event, direction, elt) => { - let tempColumnW; - let tempChange; - let tempNextColumnW; - const currentElementWidth = elt.style.width; - const currentColumn = parseInt(elt.dataset?.column); - const currentColumnWidth = previewColumnWidths[currentColumn]; - const nextColumn = currentColumn + 1; - const nextColumnWidth = previewColumnWidths[nextColumn]; - const sumPreviousColumnWidths = - currentColumn == 0 - ? 0 - : previewColumnWidths.slice(0, currentColumn).reduce((partialSum, a) => partialSum + a, 0); - - //calculate width changes depending on unlocked status - if (columnsUnlocked) { - tempColumnW = Math.round(parseFloat(currentElementWidth) * 10) / 10 - sumPreviousColumnWidths; - tempChange = tempColumnW - (!currentColumnWidth ? 10 : currentColumnWidth); - tempNextColumnW = Math.round(Math.abs((!nextColumnWidth ? 10 : nextColumnWidth) - tempChange) * 10) / 10; - } else { - tempColumnW = Math.round(parseInt(currentElementWidth) / 5) * 5 - sumPreviousColumnWidths; - tempChange = tempColumnW - (!currentColumnWidth ? 10 : currentColumnWidth); - tempNextColumnW = Math.round(Math.abs((!nextColumnWidth ? 10 : nextColumnWidth) - tempChange) / 5) * 5; - } - - //package new widths to be dispatched - let newColumnWidths = [...previewColumnWidths]; - newColumnWidths[currentColumn] = tempColumnW; - newColumnWidths[nextColumn] = tempNextColumnW; - - //if this row had previously assumed column widths like 33.33%, than moving this column may have made it so the whole thing doesn't add up to 100% anymore. - //For instance now the columns are [30,35,33.33] - //this ensures the grid adds up to 100% and is in 5% incriments if it was set to snap - if (columns > 2) { - //make sure all column values are rounded - newColumnWidths = newColumnWidths.map((x) => - columnsUnlocked ? Math.round(parseFloat(x) * 10) / 10 : Math.round(parseInt(x) / 5) * 5 - ); - - //if we don't add to one hundred, add that to the last other column - const sumAllColumnWidths = newColumnWidths.reduce((partialSum, a) => partialSum + a, 0); - const needToAddToLast = 100 - sumAllColumnWidths; - - //need to add some to a column not just adjusted to make us equal 100 - const columnToAddTo = currentColumn == columns - 2 ? 0 : newColumnWidths.length - 1; - newColumnWidths[columnToAddTo] = newColumnWidths[columnToAddTo] + needToAddToLast; - } - - return newColumnWidths; - }; - - const innerResizeClasses = classnames({ - 'kt-resizeable-column-container': true, - [`kt-resizeable-column-container${uniqueID}`]: uniqueID, - 'kt-resizeable-column-inactive': !active, - }); - - const resizableBoxes = (width) => { - const resizableBoxArray = []; - for (let column = 0; column < columns - 1; column++) { - const columnWidth = previewColumnWidths?.[column]; - const nextColumnWidth = previewColumnWidths?.[column + 1]; - const sumPreviousColumnWidths = - column == 0 ? 0 : previewColumnWidths.slice(0, column).reduce((partialSum, a) => partialSum + a, 0); - const minWidth = 10; - //This takes out the column's portion of the gap from the overall percent width. - //the preset columns aren't actually displayed as percents on the frontend for the row layout. They use fr's. - //This also adjusts for the difference in how gaps are potioned out between fr's and % grids. - //The same calculation is run for the row layout grid. - //It's in the form of a left offset because I can't calc() the width of a ResizableBox - //It attempts to place the edge of the resizable box right in the middle of the joint. - const gutterAdjustment = - 'calc(((((' + - columnGap + - ' * ' + - (columns - 1) + - ')) / ' + - columns + - ') * ' + - -1 * (column + 1) + - ') + ( (' + - columnGap + - ' * ' + - column + - ') + (' + - columnGap + - ' / 2 ) ) )'; - - const columnBox = ( - - - {columnsUnlocked && ( - - - - )} - {!columnsUnlocked && ( - - - - )} - - {columnWidth + '%'} - - - {nextColumnWidth + '%'} - - - - ); - resizableBoxArray.push(columnBox); - } - return resizableBoxArray; - }; - - return ( -
- {({ width }) => <>{resizableBoxes(width)}} -
- ); -} diff --git a/src/packages/components/src/column-drag-resizer/utils.js b/src/packages/components/src/column-drag-resizer/utils.js deleted file mode 100644 index 0fb6f4185..000000000 --- a/src/packages/components/src/column-drag-resizer/utils.js +++ /dev/null @@ -1,145 +0,0 @@ -import { __ } from '@wordpress/i18n'; - -import { SPACING_SIZES_MAP } from './constants'; -export function getGutterPercentUnit(columnGutter, customGutter, gutterType) { - const columnGutterString = undefined !== columnGutter ? columnGutter : 'default'; - let gutter = parseFloat(30 / 100); - switch (columnGutterString) { - case 'none': - gutter = 0; - break; - case 'skinny': - gutter = parseFloat(10 / 100); - break; - case 'wider': - gutter = parseFloat(60 / 100); - break; - case 'custom': - let custom = undefined !== customGutter && undefined !== customGutter[0] ? customGutter[0] : 30; - const gutterUnit = undefined !== gutterType && gutterType ? gutterType : 'px'; - if ('px' !== gutterUnit) { - custom = parseFloat(custom * 16); - } - gutter = parseFloat(custom / 100); - break; - } - return gutter; -} -export function getGutterTotal(gutter, columns) { - if (gutter && columns > 1) { - return `(${gutter} * ${columns - 1})`; - } - return 0; -} -export function getPreviewGutterSize(previewDevice, columnGutter, customGutter, gutterType) { - const columnGutterString = undefined !== columnGutter ? columnGutter : 'default'; - let gutter = 'var(--global-row-gutter-md, 2rem)'; - switch (columnGutterString) { - case 'none': - gutter = 0; - break; - case 'skinny': - gutter = 'var(--global-row-gutter-sm, 1rem)'; - break; - case 'wider': - gutter = 'var(--global-row-gutter-lg, 4rem)'; - break; - case 'custom': - const gutterUnit = undefined !== gutterType && gutterType ? gutterType : 'px'; - let custom = undefined !== customGutter && undefined !== customGutter[0] ? customGutter[0] : 30; - if ('Tablet' === previewDevice) { - custom = - undefined !== customGutter && undefined !== customGutter[1] && '' !== customGutter[1] - ? customGutter[1] - : custom; - } else if ('Mobile' === previewDevice) { - custom = - undefined !== customGutter && undefined !== customGutter[2] && '' !== customGutter[2] - ? customGutter[2] - : custom; - } - if (custom) { - custom = custom + gutterUnit; - } - gutter = custom; - break; - } - return gutter; -} -export function getSpacingOptionName(value, unit) { - if (!value) { - return __('None', 'kadence-blocks'); - } - if (!SPACING_SIZES_MAP) { - return __('Unset', 'kadence-blocks'); - } - if (value === '0') { - return __('None', 'kadence-blocks'); - } - const found = SPACING_SIZES_MAP.find((option) => option.value === value); - if (!found) { - return value + unit; - } - return found.name; -} -export function getSpacingOptionOutput(value, unit) { - if (undefined === value) { - return ''; - } - if (!SPACING_SIZES_MAP) { - return value; - } - if (value === '0') { - return '0' + unit; - } - if (value === 0) { - return '0' + unit; - } - const found = SPACING_SIZES_MAP.find((option) => option.value === value); - if (!found) { - return value + unit; - } - return found.output; -} -export function getSpacingOptionSize(value) { - if (!value) { - return 0; - } - if (!SPACING_SIZES_MAP) { - return value; - } - if (value === '0') { - return 0; - } - const found = SPACING_SIZES_MAP.find((option) => option.value === value); - if (!found) { - return value; - } - return found.size; -} -export function getSpacingNameFromSize(value) { - if (!value) { - return ''; - } - if (value === '0') { - return '0'; - } - const found = SPACING_SIZES_MAP.find((option) => option.size === value); - if (!found) { - return value + 'px'; - } - return found.name; -} -export function getSpacingValueFromSize(value) { - if (!value) { - return ''; - } - if (value === '0') { - return '0'; - } - const found = SPACING_SIZES_MAP.find((option) => option.size === value); - if (!found) { - return value; - } - return found.value; -} diff --git a/src/packages/components/src/common/image-controls/editor.scss b/src/packages/components/src/common/image-controls/editor.scss deleted file mode 100644 index ab09839f9..000000000 --- a/src/packages/components/src/common/image-controls/editor.scss +++ /dev/null @@ -1,19 +0,0 @@ -button.components-button.kb-sidebar-image { - width: 144px; - margin-right: 5px; - background-position: center; - color: white; - text-shadow: 1px 1px 1px #000; - position: relative; - z-index: 1; -} -button.components-button.kb-sidebar-image:before { - content: ''; - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - background: rgba(0,0,0,.3); - z-index: -1; -} \ No newline at end of file diff --git a/src/packages/components/src/common/image-controls/index.js b/src/packages/components/src/common/image-controls/index.js deleted file mode 100644 index df594996f..000000000 --- a/src/packages/components/src/common/image-controls/index.js +++ /dev/null @@ -1,110 +0,0 @@ -/** - * Basic Image Control. - */ - -/** - * Import Kadence Components - */ -import KadenceMediaPlaceholder from '../media-placeholder'; -import DynamicImageControl from '../../dynamic-image-control'; -/** - * Import Css - */ - import './editor.scss'; -/** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n'; -import { Fragment, Component } from '@wordpress/element'; -import { - MediaUpload, -} from '@wordpress/block-editor'; -import { Button } from '@wordpress/components'; -import { - image, - closeSmall, - plusCircleFilled, -} from '@wordpress/icons'; -const ALLOWED_MEDIA_TYPES = [ 'image' ]; -/** - * Basic Image Control. - */ -class KadenceImageControl extends Component { - render() { - const { - label, - hasImage, - onSaveImage, - onRemoveImage, - disableMediaButtons, - imageURL, - imageID, - kadenceDynamic, - dynamicAttribute = '' } = this.props; - return ( -
- { ! hasImage && ( - - { label && ( -
{ label }
- ) } - onSaveImage( img ) } - accept="image/*" - className={ 'kadence-image-upload' } - allowedTypes={ ALLOWED_MEDIA_TYPES } - disableMediaButtons={ disableMediaButtons } - dynamicControl={ ( dynamicAttribute && kadence_blocks_params.dynamic_enabled ? : undefined ) } - /> -
- ) } - { hasImage && ( - - { label && ( -
{ label }
- ) } - { dynamicAttribute && kadence_blocks_params.dynamic_enabled && kadenceDynamic && kadenceDynamic[ dynamicAttribute ] && kadenceDynamic[ dynamicAttribute ].enable ? ( -
- -
- ) : ( - - onSaveImage( img ) } - type="image" - value={ ( imageID ? imageID : '' ) } - render={ ( { open } ) => ( - - ) } - /> -
- ); - } -} -export default KadenceImageControl; diff --git a/src/packages/components/src/common/image-size-controls/index.js b/src/packages/components/src/common/image-size-controls/index.js deleted file mode 100644 index b91b148ca..000000000 --- a/src/packages/components/src/common/image-size-controls/index.js +++ /dev/null @@ -1,161 +0,0 @@ -/** - * Measure Component - * - */ - -/** - * Import Icons - */ -import { isEmpty, compact, get, map } from 'lodash'; -import Select from 'react-select'; -/** - * Internal block libraries - */ -import { useState, useEffect } from '@wordpress/element'; -import { useSelect } from '@wordpress/data'; - -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -const ImageSizeControl = (props) => { - const [imageSizeOptions, setImageSizeOptions] = useState({}); - const { label, id, url, slug, onChange, fullSelection = true, selectByValue = true } = props; - const { image } = useSelect( - (select) => { - const { getMedia } = select('core'); - return { - image: id ? getMedia(id, { context: 'view' }) : null, - }; - }, - [id] - ); - const getImageSizeOptions = () => { - if (image) { - const sizes = undefined !== image.media_details.sizes ? image.media_details.sizes : []; - const imgSizes = Object.keys(sizes).map((item) => { - return { slug: item, name: item }; - }); - return compact( - map(imgSizes, ({ name, slug }) => { - const type = get(image, ['mime_type']); - if ('image/svg+xml' === type) { - return null; - } - const sizeUrl = get(image, ['media_details', 'sizes', slug, 'source_url']); - if (!sizeUrl) { - return null; - } - const sizeWidth = get(image, ['media_details', 'sizes', slug, 'width']); - if (!sizeWidth) { - return null; - } - const sizeHeight = get(image, ['media_details', 'sizes', slug, 'height']); - if (!sizeHeight) { - return null; - } - return { - value: sizeUrl, - label: name + ' (' + sizeWidth + 'x' + sizeHeight + ')', - slug, - width: sizeWidth, - height: sizeHeight, - }; - }) - ); - } - return null; - }; - const getSmallImageSizeOptions = () => { - if (image) { - const sizes = undefined !== image.media_details.sizes ? image.media_details.sizes : []; - const standardSizes = []; - for (let i = 0; i < Object.keys(sizes).length; i++) { - const item = Object.keys(sizes)[i]; - if ( - 'thumbnail' === item || - 'medium' === item || - 'medium_large' === item || - 'large' === item || - 'full' === item - ) { - standardSizes.push({ slug: item, name: item }); - } - } - return compact( - map(standardSizes, ({ name, slug }) => { - const type = get(image, ['mime_type']); - if ('image/svg+xml' === type) { - return null; - } - const sizeUrl = get(image, ['media_details', 'sizes', slug, 'source_url']); - if (!sizeUrl) { - return null; - } - const sizeWidth = get(image, ['media_details', 'sizes', slug, 'width']); - if (!sizeWidth) { - return null; - } - const sizeHeight = get(image, ['media_details', 'sizes', slug, 'height']); - if (!sizeHeight) { - return null; - } - return { - value: sizeUrl, - label: name + ('full' === slug ? '' : ' (' + sizeWidth + 'x' + sizeHeight + ')'), - slug, - width: sizeWidth, - height: sizeHeight, - }; - }) - ); - } - return null; - }; - - useEffect(() => { - if (undefined === fullSelection || true === fullSelection) { - setImageSizeOptions(getImageSizeOptions()); - } else { - setImageSizeOptions(getSmallImageSizeOptions()); - } - }, [image]); - return ( -
- {!isEmpty(imageSizeOptions) && (undefined === selectByValue || true === selectByValue) && ( - <> -

{label}

-
- imgSize.slug === slug)} - isMulti={false} - maxMenuHeight={250} - isClearable={false} - placeholder={''} - onChange={onChange} - /> -
- - )} -
- ); -}; - -export default ImageSizeControl; diff --git a/src/packages/components/src/common/media-placeholder/index.js b/src/packages/components/src/common/media-placeholder/index.js deleted file mode 100644 index 22f987ad6..000000000 --- a/src/packages/components/src/common/media-placeholder/index.js +++ /dev/null @@ -1,443 +0,0 @@ -/** - * Focal Point control. - * - */ -import classnames from 'classnames'; -import { every, get, isArray, noop, startsWith } from 'lodash'; - -import { keyboardReturn } from '@wordpress/icons'; -import { Component, Fragment } from '@wordpress/element'; -import { - MediaUpload, - URLPopover, - MediaUploadCheck, -} from '@wordpress/block-editor'; -import { - Button, - FormFileUpload, - Placeholder, - DropZone, -} from '@wordpress/components'; - -import { withSelect } from '@wordpress/data'; -import { __ } from '@wordpress/i18n'; -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -const InsertFromURLPopover = ( { src, onChange, onSubmit, onClose } ) => ( - -
- -
- ) - ); - } - - renderUrlSelectionUI() { - const { onSelectURL } = this.props; - if ( ! onSelectURL ) { - return null; - } - const { isURLInputVisible, src } = this.state; - return ( -
- - { isURLInputVisible && ( - - ) } -
- ); - } - renderDynamicSelectionUI() { - const { dynamicControl } = this.props; - if ( ! dynamicControl ) { - return null; - } - return ( -
- { dynamicControl } -
- ); - } - - renderMediaUploadChecked() { - const { - selectLabel = __( 'Select Image', 'kadence-blocks' ), - selectIcon, - accept, - addToGallery, - allowedTypes = [], - isAppender, - mediaUpload, - multiple = false, - onSelect, - value = {}, - } = this.props; - - const mediaLibraryButton = ( - id ) : value.id - } - render={ ( { open } ) => { - return ( - - ); - } } - /> - ); - - if ( mediaUpload && isAppender ) { - return ( - - { this.renderDropZone() } - { - const content = ( - - { mediaLibraryButton } - { this.renderUrlSelectionUI() } - { this.renderCancelLink() } - { this.renderDynamicSelectionUI() } - - ); - return this.renderPlaceholder( - content, - openFileDialog - ); - } } - /> - - ); - } - - if ( mediaUpload ) { - const content = ( - - { this.renderDropZone() } - { mediaLibraryButton } - { this.renderUrlSelectionUI() } - { this.renderCancelLink() } - { this.renderDynamicSelectionUI() } - - ); - return this.renderPlaceholder( content ); - } - - return this.renderPlaceholder( mediaLibraryButton ); - } - - render() { - const { disableMediaButtons, dropZoneUIOnly } = this.props; - - if ( dropZoneUIOnly || disableMediaButtons ) { - return ( - { this.renderDropZone() } - ); - } - - return ( - - { this.renderMediaUploadChecked() } - - ); - } -} -export default withSelect( ( select ) => { - const { getSettings } = select( 'core/block-editor' ); - return { - mediaUpload: getSettings().mediaUpload, - }; -} )( KadenceMediaPlaceholder ); diff --git a/src/packages/components/src/common/radio-buttons/editor.scss b/src/packages/components/src/common/radio-buttons/editor.scss deleted file mode 100644 index 0c4d72c3b..000000000 --- a/src/packages/components/src/common/radio-buttons/editor.scss +++ /dev/null @@ -1,74 +0,0 @@ -.kadence-radio-container-control { - display: flex; - flex-wrap: wrap; - gap: 4px; - position: relative; - z-index: 0; -} -.kadence-radio-container-control.components-button-group .components-button { - flex: 1 1 0; - display: inline-flex; - align-items: center; - justify-content: center; - font-size: 10px; - font-weight: 600; - font-style: normal; - text-transform: uppercase; - height: 40px; - line-height: 1.2; - border: 1px solid var(--kb-border-color, #859cb6); - border-radius: 2px; - background: transparent; - color: #4a5568; - padding: 4px; - box-shadow: none; - white-space: normal; - max-width: 100%; - word-wrap: break-word; -} - -//make two rows for the inherit style control if it's going to have 4 options -.kadence-radio-buttons-wrap.button-style-inherit-control - .kadence-radio-container-control.components-button-group - .components-button { - &:first-child:nth-last-child(4), - &:first-child:nth-last-child(4) ~ .components-button { - flex-basis: 45%; - margin-left: 0; - } -} - -.kadence-radio-container-control.components-button-group .components-button.is-primary { - border-color: var(--wp-admin-theme-color, #00669b); - background: var(--wp-admin-theme-color, #00669b); - color: #fff; - box-shadow: none; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon { - flex-direction: column; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon svg { - margin: 0 0 8px 0; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label svg { - margin: 0; - * { - fill: currentColor !important; - } -} -.kadence-radio-control-flexwrap { - flex-wrap: wrap; - gap: 4px; -} -.kadence-radio-container-control.components-button-group.kadence-radio-control-flexwrap .components-button { - flex: 0 1 calc(33.33% - (8px / 3)); - margin: 0; - svg { - width: 100%; - } -} -.kadence-radio-container-control.components-button-group .components-button.kb-disabled-btn { - opacity: 0.6; - box-shadow: none !important; - color: #4a5568 !important; -} diff --git a/src/packages/components/src/common/radio-buttons/index.js b/src/packages/components/src/common/radio-buttons/index.js deleted file mode 100644 index 639820d88..000000000 --- a/src/packages/components/src/common/radio-buttons/index.js +++ /dev/null @@ -1,79 +0,0 @@ -/** - * Radio Buttons control. - * - */ -/** - * Import Css - */ -import './editor.scss'; - -import { Button, ButtonGroup } from '@wordpress/components'; -/** - * WordPress dependencies - */ -import { useInstanceId } from '@wordpress/compose'; -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function KadenceRadioButtons({ - label, - value, - onChange, - options = [], - className, - hideLabel = false, - wrap = false, - allowClear = false, - help = '', - ...props -}) { - const instanceId = useInstanceId(KadenceRadioButtons); - const id = `inspector-radio-control-${instanceId}`; - return ( -
- {label && ( -
- -
- )} - - {options.map((option, index) => ( - - ))} - - {help != '' &&

{help}

} -
- ); -} diff --git a/src/packages/components/src/common/subsection-wrap/editor.scss b/src/packages/components/src/common/subsection-wrap/editor.scss deleted file mode 100644 index cfbf3f7fc..000000000 --- a/src/packages/components/src/common/subsection-wrap/editor.scss +++ /dev/null @@ -1,9 +0,0 @@ -.kadence-subsection-wrap .subsection-wrap-title { - font-weight: 500; - margin: 0 0 6px; -} -.kadence-subsection-wrap .kt-inner-subsection { - border: 1px solid var(--kb-border-color, #859CB6 ); - padding: 10px; - border-radius: 2px; -} \ No newline at end of file diff --git a/src/packages/components/src/common/subsection-wrap/index.js b/src/packages/components/src/common/subsection-wrap/index.js deleted file mode 100644 index e60ac2323..000000000 --- a/src/packages/components/src/common/subsection-wrap/index.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Radio Buttons control. - * - */ -/** - * Import Css - */ - import './editor.scss'; -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function SubsectionWrap( { - label, - className, - children, - } ) { - return ( -
- { label && ( -

{ label }

- ) } -
- { children } -
-
- ); -} diff --git a/src/packages/components/src/common/vertical-align-icon/index.js b/src/packages/components/src/common/vertical-align-icon/index.js deleted file mode 100644 index cc8324380..000000000 --- a/src/packages/components/src/common/vertical-align-icon/index.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * WordPress dependencies - */ -import { Path, SVG } from '@wordpress/components'; - -export default function VerticalAlignmentIcon( { value, isPressed = false } ) { - const iconToPath = { - top: 'M19.5 19.5H.5V.5h19v19zM1.607 18.392h16.786V1.608H1.607v16.784zM17.178 2.888H2.822v3.275h14.356V2.888z', - middle: 'M19.5 19.482H.5V.5h19v18.982zM1.607 18.375h16.786V1.607H1.607v16.768zm15.571-10.02H2.822v3.272h14.356V8.355z', - bottom: 'M19.518 19.5H.5V.5h19.018v19zm-17.91-1.108H18.41V1.608H1.608v16.784zm15.586-4.739H2.824v3.275h14.37v-3.275z', - }; - if ( ! iconToPath.hasOwnProperty( value ) ) { - return null; - } - - return ( - - - - ); -} diff --git a/src/packages/components/src/common/video-control/editor.scss b/src/packages/components/src/common/video-control/editor.scss deleted file mode 100644 index cca6750bc..000000000 --- a/src/packages/components/src/common/video-control/editor.scss +++ /dev/null @@ -1,19 +0,0 @@ -.kb-video-edit svg { - width: 1em; - height: 1em; -} -.components-kadence-video-btns { - display: flex; - align-items: center; -} -.components-kadence-video-btns .kb-cta-upload-btn { - border: 1px solid var(--kb-border-color, #859CB6 ); - border-radius: 2px; -} -.components-kadence-video-background__label { - display: block; - margin-bottom: 6px; -} -.kb-remove-video.kb-cta-upload-btn { - margin-left: 5px; -} \ No newline at end of file diff --git a/src/packages/components/src/common/video-control/index.js b/src/packages/components/src/common/video-control/index.js deleted file mode 100644 index 424e47683..000000000 --- a/src/packages/components/src/common/video-control/index.js +++ /dev/null @@ -1,99 +0,0 @@ -/** - * Basic Image Control. - */ - -/** - * Import Kadence Components - */ -import KadenceMediaPlaceholder from '../media-placeholder'; -/** - * Import Css - */ - import './editor.scss'; -/** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n'; -import { Fragment, Component } from '@wordpress/element'; -import { - MediaUpload, -} from '@wordpress/block-editor'; -import { Button } from '@wordpress/components'; -/** - * Import Icons - */ - import { - video -} from '@kadence/icons'; -import { - image, - closeSmall, - plusCircleFilled, -} from '@wordpress/icons'; -const ALLOWED_MEDIA_TYPES = [ 'video' ]; -/** - * Basic Video Control. - */ -class KadenceVideoControl extends Component { - render() { - const { - label, - hasVideo, - onSaveVideo, - onRemoveVideo, - disableMediaButtons, - videoURL, - videoID } = this.props; - return ( -
- { ! hasVideo && ( - - { label && ( -
{ label }
- ) } - onSaveVideo( img ) } - accept="video/*" - className={ 'kadence-image-upload' } - allowedTypes={ ALLOWED_MEDIA_TYPES } - disableMediaButtons={ disableMediaButtons } - /> -
- ) } - { hasVideo && ( - - { label && ( -
{ label }
- ) } -
- onSaveVideo( video ) } - type="video" - value={ ( videoID ? videoID : '' ) } - render={ ( { open } ) => ( - - ) } - /> -
-
- ) } -
- ); - } -} -export default KadenceVideoControl; diff --git a/src/packages/components/src/copy-paste-attributes/index.js b/src/packages/components/src/copy-paste-attributes/index.js deleted file mode 100644 index ee71b5578..000000000 --- a/src/packages/components/src/copy-paste-attributes/index.js +++ /dev/null @@ -1,112 +0,0 @@ -/** - * Copy and Paste Block Styles Component - * - */ -import { flow } from 'lodash'; -import { __ } from '@wordpress/i18n'; -import { - MenuGroup, - MenuItem, - ToolbarDropdownMenu, -} from '@wordpress/components'; - -import { - getTransferableAttributes, -} from '@kadence/helpers'; - -/** - * Import Icons - */ - import { - copy, - paste, - copyStyles, -} from '@kadence/icons'; - - -const { - localStorage, -} = window; - -/** - * Build the copy and paste controls - * @returns {object} The copy and paste controls. - */ -export default function CopyPasteAttributes ( { - attributes, - defaultAttributes = {}, - blockSlug, - excludedAttrs = [], - preventMultiple = [], - onPaste, -} ) { - - const storageKey = blockSlug + '-style'; - const currentCopiedStyles = JSON.parse( localStorage.getItem( storageKey ) ); - - const copyAction = () => { - //grab all block attributes, minus the exclusions - //store the attributes to be pasted later - localStorage.setItem( storageKey, JSON.stringify( getTransferableAttributes( attributes, defaultAttributes, excludedAttrs, preventMultiple, true ) ) ); - }; - - const pasteAction = () => { - const pasteItem = JSON.parse( localStorage.getItem( storageKey ) ); - - if ( pasteItem ) { - // Filter out default values for regular paste - const filteredPasteItem = getTransferableAttributes( pasteItem, defaultAttributes, [], [], false ); - onPaste( filteredPasteItem ); - } - }; - - const pasteAndReplaceAction = () => { - const pasteItem = JSON.parse( localStorage.getItem( storageKey ) ); - - if ( pasteItem ) { - // Include all values including defaults for paste and replace - onPaste( pasteItem ); - } - }; - - return ( - - { ( { onClose } ) => ( - <> - - - { __( 'Copy Styles', 'kadence-blocks' ) } - - - { __( 'Paste Styles', 'kadence-blocks' ) } - - - { __( 'Paste and Replace', 'kadence-blocks' ) } - - - - ) } - - ); -} diff --git a/src/packages/components/src/divider-select-control/editor.scss b/src/packages/components/src/divider-select-control/editor.scss deleted file mode 100644 index 60f152a89..000000000 --- a/src/packages/components/src/divider-select-control/editor.scss +++ /dev/null @@ -1,145 +0,0 @@ -// Button -.rfipbtn.rfipbtn--dividers { - background-color: #fff; - border: 1px solid #e0e0e0; - width: 96%; - &:active, - &:focus { - border: 1px solid #bdbdbd; - } - // dropdown button - .rfipbtn__current { - flex: 100%; - justify-content: flex-start; - padding: 0; - svg.top-icon { - transform: rotate(180deg) !important; - } - .rfipbtn__icon { - width: 100%; - .rfipbtn__elm { - width: 100%; - } - } - } - .rfipbtn__button { - border: 0 none transparent; - border-left: 1px solid #e0e0e0; - background-color: #f5f5f5; - color: #424242; - - &:hover { - background-color: #bdbdbd; - } - - &:active { - box-shadow: inset 0 0 10px 0 #e0e0e0; - } - } - - // icon - .rfipbtn__icon { - border: 0; - color: #424242; - - // empty - &--empty { - color: #555d66; - text-transform: none; - text-align: left; - } - } - - // del - .rfipbtn__del { - background-color: #eee; - - &:hover { - background-color: #e0e0e0; - } - - &:focus, - &:active { - outline: 1px solid #e0e0e0; - } - } -} -.rfipdropdown.rfipdropdown--dividers { - max-height: 240px; - overflow: scroll; -} -.rfipdropdown.rfipdropdown--dividers { - background-color: #fff; - border: 1px solid #e0e0e0; - .rfipdropdown__selector { - overflow: hidden; - padding: 8px; - } - .rfipicons__pager { - display: none; - } - // Icons box - .rfipicons { - // current page - &__cp { - border-bottom:1px solid #bdbdbd; - &:focus { - border-bottom-color: #9e9e9e; - } - } - - &__left, - &__right { - background-color: #eee; - border: 1px solid #eee; - color: #424242; - &:hover { - background-color: #bdbdbd; - border: 1px solid #bdbdbd; - } - &:focus, - &:active { - border: 1px solid #bdbdbd; - } - } - - // Individual icon box - &__ibox { - background-color: #f5f5f5; - border: 1px solid #f5f5f5; - color: #424242; - &:hover { - background-color: #bdbdbd; - border: 1px solid #bdbdbd; - } - &:focus, - &:active { - border: 1px solid #bdbdbd; - } - &--error { - color: red; - } - } - - // Invidual icons - &__icon { - width:100%; - height: 50px; - margin: 2px 0; - svg { - fill: #000; - width: 100%; - transform: scale(1); - } - svg.top-icon { - transform: rotate(180deg) !important; - } - // selected - &--selected { - .rfipicons__ibox { - background-color: #eee; - } - } - } - } -} \ No newline at end of file diff --git a/src/packages/components/src/drop-shadow-control/index.js b/src/packages/components/src/drop-shadow-control/index.js deleted file mode 100644 index 4739ff059..000000000 --- a/src/packages/components/src/drop-shadow-control/index.js +++ /dev/null @@ -1,108 +0,0 @@ -/** - * DropShadow Component - * - */ - -/** - * Import Externals - */ -import PopColorControl from '../pop-color-control'; - -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import { Component } from '@wordpress/element'; -import { ToggleControl } from '@wordpress/components'; -/** - * Build the DropShadow controls - * @returns {object} DropShadow settings. - */ -class DropShadowControl extends Component { - constructor( label, enable = true, color, colorDefault, opacity, blur, hOffset, vOffset, onColorChange, onOpacityChange, onBlurChange, onHOffsetChange, onVOffsetChange, onEnableChange ) { - super( ...arguments ); - } - render() { - return ( -
- { this.props.label && ( -
-

{ this.props.label }

- { this.props.onEnableChange && ( - this.props.onEnableChange( value ) } - /> - ) } -
- ) } - { this.props.enable && ( -
-
-
-

{ __( 'Color' ) }

- this.props.onColorChange( value ) } - opacityValue={ this.props.opacity } - onOpacityChange={ value => this.props.onOpacityChange( value ) } - onArrayChange={ this.props.onArrayChange ? ( color, opacity ) => this.props.onArrayChange( color, opacity ) : undefined } - /> -
-
-

{ __( 'X' ) }

-
-
- this.props.onHOffsetChange( Number( event.target.value ) ) } - min={ -200 } - max={ 200 } - step={ 1 } - type="number" - className="components-text-control__input" - /> -
-
-
-
-

{ __( 'Y' ) }

-
-
- this.props.onVOffsetChange( Number( event.target.value ) ) } - min={ -200 } - max={ 200 } - step={ 1 } - type="number" - className="components-text-control__input" - /> -
-
-
-
-

{ __( 'Blur' ) }

-
-
- this.props.onBlurChange( Number( event.target.value ) ) } - min={ 0 } - max={ 200 } - step={ 1 } - type="number" - className="components-text-control__input" - /> -
-
-
-
-
- ) } -
- ); - } -} -export default ( DropShadowControl ); diff --git a/src/packages/components/src/dynamic-background-control/index.js b/src/packages/components/src/dynamic-background-control/index.js deleted file mode 100644 index f050e58d8..000000000 --- a/src/packages/components/src/dynamic-background-control/index.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * External Dependencies - */ -import { debounce } from 'lodash'; - -/** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n'; -import { Component, createRef } from '@wordpress/element'; -import { Button, withFilters, Popover, ExternalLink } from '@wordpress/components'; - -/** - * Internal Dependencies - */ - -/** - * Build the Dynamic Background controls - */ -class DynamicBackgroundControl extends Component { - constructor() { - super( ...arguments ); - - this.toggle = this.toggle.bind( this ); - this.state = { - open: false, - }; - this.popRef = createRef(); - this.debouncedToggle = debounce( this.toggle.bind( this ), 100 ); - } - toggle() { - this.setState( { open: ! this.state.open } ); - } - render() { - const { open } = this.state; - - // @todo: Replace with icon from @kadence/icons once created - const icons = {}; - icons.dynamic = - - ; - - return ( -
-
- ); - } -}; - -export default withFilters( 'kadence.BackgroundDynamicControl' )( DynamicBackgroundControl ); diff --git a/src/packages/components/src/dynamic-gallery-control/index.js b/src/packages/components/src/dynamic-gallery-control/index.js deleted file mode 100644 index 4201c0024..000000000 --- a/src/packages/components/src/dynamic-gallery-control/index.js +++ /dev/null @@ -1,79 +0,0 @@ - /** - * External Dependencies - */ - import { debounce } from 'lodash'; - - /** - * WordPress dependencies - */ - import { __ } from '@wordpress/i18n'; - import { Component, createRef } from '@wordpress/element'; - import { Button, withFilters, Popover, ExternalLink } from '@wordpress/components'; - - /** - * Build the Dynamic Image controls - */ -class DynamicGalleryControl extends Component { - constructor() { - super( ...arguments ); - - this.toggle = this.toggle.bind( this ); - this.state = { - open: false, - }; - this.popRef = createRef(); - this.debouncedToggle = debounce( this.toggle.bind( this ), 100 ); - } - toggle() { - this.setState( { open: ! this.state.open } ); - } - render() { - const { open } = this.state; - // @todo: Replace with icon from @kadence/icons once created - const icons = {}; - icons.dynamic = - - ; - return ( -
-
- ); - } - }; - - export default withFilters( 'kadence.GalleryDynamicControl' )( DynamicGalleryControl ); - diff --git a/src/packages/components/src/dynamic-image-control/index.js b/src/packages/components/src/dynamic-image-control/index.js deleted file mode 100644 index d763f80bc..000000000 --- a/src/packages/components/src/dynamic-image-control/index.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - * External Dependencies - */ - import { debounce } from 'lodash'; - -/** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n'; -import { Button, withFilters, Popover, ExternalLink } from '@wordpress/components'; -import { createRef, Component } from '@wordpress/element'; - -/** - * Internal Dependencies - */ - - -/** - * Build the Dynamic Image controls - */ -class DynamicImageControl extends Component { - constructor() { - super( ...arguments ); - - this.toggle = this.toggle.bind( this ); - this.state = { - open: false, - }; - this.popRef = createRef(); - this.debouncedToggle = debounce( this.toggle.bind( this ), 100 ); - } - toggle() { - this.setState( { open: ! this.state.open } ); - } - render() { - const { open } = this.state; - - // @todo: Replace with icon from @kadence/icons once created - const icons = {}; - icons.dynamic = - - ; - - return ( -
-
- ); - } -}; - -export default withFilters( 'kadence.ImageDynamicControl' )( DynamicImageControl ); diff --git a/src/packages/components/src/dynamic-inline-replace-control/index.js b/src/packages/components/src/dynamic-inline-replace-control/index.js deleted file mode 100644 index 68c1fafb2..000000000 --- a/src/packages/components/src/dynamic-inline-replace-control/index.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * WordPress dependencies - */ -import { Component } from '@wordpress/element'; -import { withFilters } from '@wordpress/components'; - -/** - * Build the Dynamic Inline Replace controls (all replaced by Pro) - */ -class DynamicInlineReplaceControl extends Component { - render() { - return null; - } -}; - -export default withFilters( 'kadence.InlineReplaceDynamicControl' )( DynamicInlineReplaceControl ); diff --git a/src/packages/components/src/dynamic-text-control/index.js b/src/packages/components/src/dynamic-text-control/index.js deleted file mode 100644 index ac2907564..000000000 --- a/src/packages/components/src/dynamic-text-control/index.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - * External Dependencies - */ - import { debounce } from 'lodash'; - - - /** - * WordPress dependencies - */ - import { __ } from '@wordpress/i18n'; - import { Component, createRef } from '@wordpress/element'; - import { Button, withFilters, Popover, ExternalLink, ToolbarGroup, ToolbarButton } from '@wordpress/components'; - -/** - * Internal Dependencies - */ - - -/** - * Build the Dynamic Link controls - */ -class DynamicTextControl extends Component { - constructor() { - super( ...arguments ); - - this.toggle = this.toggle.bind( this ); - this.state = { - open: false, - }; - this.popRef = createRef(); - this.debouncedToggle = debounce( this.toggle.bind( this ), 100 ); - } - toggle() { - this.setState( { open: ! this.state.open } ); - } - render() { - const { open } = this.state; - - // @todo: Replace with icon from @kadence/icons once created - const icons = {}; - icons.dynamic = - - ; - - return ( - - this.debouncedToggle() } - isPressed={ false } - aria-haspopup="true" - aria-expanded={ open } - label={ __( 'Dynamic Content', 'kadence-blocks' ) } - showTooltip={ true } - /> - { open && ( - {} } - expandOnMobile={ true } - onClose={ () => this.debouncedToggle() } - ref={ this.popRef } - > -
-
-

{ __( 'Dynamic Content', 'kadence-blocks' ) }

-

{ __( 'Create dynamic sites by populating content from various sources.', 'kadence-blocks' ) }

- { __( 'Upgrade to Pro', 'kadence-blocks' ) } -
-
-
- ) } -
- ); - } -}; - -export default withFilters( 'kadence.TextDynamicControl' )( DynamicTextControl ); diff --git a/src/packages/components/src/dynamic-text-input-control/editor.scss b/src/packages/components/src/dynamic-text-input-control/editor.scss deleted file mode 100644 index f95c42ae2..000000000 --- a/src/packages/components/src/dynamic-text-input-control/editor.scss +++ /dev/null @@ -1,46 +0,0 @@ -.components-base-control.kadence-form-input-control - .kadence-controls-content - .components-button.kb-dynamic-form-input-sidebar.has-icon { - border: 1px solid var(--kb-border-color, #859cb6); - height: 30px; - border-radius: 0; - height: 100%; - - svg { - height: 16px; - width: 16px; - } -} -.kadence-form-input-control__title { - font-weight: 500; - line-height: 1.4; - display: inline-block; - margin-bottom: calc(8px); - padding: 0px; -} -.components-base-control.kadence-form-input-control .kadence-controls-content { - width: 100%; - display: flex; -} -.components-base-control.kadence-form-input-control .kadence-controls-content .components-base-control__field { - margin: 0; -} -.components-base-control.kadence-form-input-control .kadence-controls-content .components-base-control { - margin: 0; - width: 100%; -} -.kadence-form-input-control__dynamic__label { - border: 1px solid #949494; - border-radius: 0px; - border-right: 0; - padding: 6px 8px; - width: 100%; - background-color: #f0f0f1; - min-height: 30px; - font-size: 13px; - line-height: normal; -} -.kadence-form-input-control__dynamic__label .kb-dynamic-link-label svg { - height: 13px; - max-width: 13px; -} diff --git a/src/packages/components/src/dynamic-text-input-control/index.js b/src/packages/components/src/dynamic-text-input-control/index.js deleted file mode 100644 index ceb0ebc34..000000000 --- a/src/packages/components/src/dynamic-text-input-control/index.js +++ /dev/null @@ -1,97 +0,0 @@ -/** - * WordPress dependencies - */ -import DynamicTextPopover from '../dynamic-text-popover'; - -import { __ } from '@wordpress/i18n'; -import { Button, TextControl } from '@wordpress/components'; -import { map, isEqual } from 'lodash'; -import { undo } from '@wordpress/icons'; -/** - * WordPress dependencies - */ -import { useInstanceId } from '@wordpress/compose'; -import { applyFilters } from '@wordpress/hooks'; - -/** - * Import Css - */ -import './editor.scss'; -export default function DynamicTextInputControl({ - value, - onChange, - label, - className, - reset, - defaultValue = '', - dynamicAttribute, - isSelected, - attributes, - setAttributes, - name, - clientId, - context, -}) { - const instanceId = useInstanceId(DynamicTextInputControl); - const onReset = () => { - if (typeof reset === 'function') { - reset(); - } else { - onChange(defaultValue); - } - }; - const { kadenceDynamic } = attributes; - const hasDynamic = - undefined !== kadenceDynamic && - undefined !== kadenceDynamic[dynamicAttribute] && - undefined !== kadenceDynamic[dynamicAttribute].enable && - '' !== kadenceDynamic[dynamicAttribute].enable - ? kadenceDynamic[dynamicAttribute].enable - : false; - return ( -
- {label && ( -
- {label && ( -
- - {reset && ( -
-
- )} -
- )} -
- )} -
- {hasDynamic && ( -
- {applyFilters('kadence.formInputDisplay', value, attributes, dynamicAttribute)} -
- )} - {!hasDynamic && onChange(value)} />} - -
-
- ); -} diff --git a/src/packages/components/src/dynamic-text-popover/index.js b/src/packages/components/src/dynamic-text-popover/index.js deleted file mode 100644 index 79e178029..000000000 --- a/src/packages/components/src/dynamic-text-popover/index.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n'; -import { Button, withFilters, Popover, ExternalLink } from '@wordpress/components'; -import { createRef, Fragment, Component, useState } from '@wordpress/element'; -import { debounce } from 'lodash'; -import { applyFilters } from '@wordpress/hooks'; - -/** - * External dependencies - */ -import { dynamic } from '@kadence/icons'; - -function DynamicTextPopover() { - const [popoverAnchor, setPopoverAnchor] = useState(); - const [isVisible, setIsVisible] = useState(false); - const toggleVisible = () => { - setIsVisible(!isVisible); - }; - const debounceToggle = debounce(toggleVisible, 100); - return ( -
-
- ); -} -export default withFilters('kadence.FormInputDynamicControl')(DynamicTextPopover); diff --git a/src/packages/components/src/editor.scss b/src/packages/components/src/editor.scss deleted file mode 100644 index 1d865f929..000000000 --- a/src/packages/components/src/editor.scss +++ /dev/null @@ -1,105 +0,0 @@ -svg { - --kadence-color: #0058b0; - --kadence-color-white: #fff; -} -.block-editor-list-view-leaf.is-selected .block-editor-list-view-block-contents svg, -.components-button.is-pressed .block-editor-block-icon svg, .components-button.is-primary svg { - --kadence-color: currentColor; - --kadence-color-white: var(--wp-admin-theme-color); -} -// Kadence Custom CSS -.components-modal__frame.kadence-css-modal { - width: 80%; - max-width: 1200px; - height: 80%; - max-height: 800px; -} - -.components-modal__frame.kadence-css-modal .components-button.is-secondary { - position: absolute; - bottom: 20px; - right: 32px; -} -.components-modal__frame.kadence-css-modal .components-modal__content { - padding-bottom: 50px; -} -.components-button.kadence-css-modal-open.has-text.has-icon { - box-shadow: none !important; -} -// Kadence Range CSS -.kadence-range-control-inner { - box-sizing: border-box; - align-items: flex-start; - display: flex; - -webkit-box-pack: start; - justify-content: flex-start; - padding: 0px; - position: relative; - width: 100%; -} -.kadence-controls-content .kadence-range-control-inner .components-base-control { - margin-bottom: 0; -} - -.kadence-range-control-inner div.components-range-control.kadence-range-control-range { - flex-grow: 1; - margin-bottom: 0; -} -.kadence-range-control-inner - .components-flex.components-input-control.components-number-control.components-range-control__number { - display: flex; -} -.kadence-range-control-inner .components-base-control.kt-range-number-input { - margin-left: 16px; - margin-bottom: 0; - flex: 0 1 65px; -} -// link. -.kb-side-link-control .components-base-control__label { - margin-bottom: 6px; - display: block; -} -.kb-letter-case .kadence-radio-container-control.components-button-group .components-button { - height: 32px; - text-transform: none; -} -.kadence-two-column-group .components-base-control > .kadence-component__header, -.kadence-font-size-control.components-base-control > .kadence-component__header { - font-size: 11px; - font-weight: 500; - text-transform: uppercase; -} -// Copy Paste Styles -.kb-copy-paste-styles__popover .components-menu-item__button svg { - width: 16px; - height: 16px; -} -// Vertical Align -.components-toolbar-group.kb-vertical-align .components-button svg { - width: 18px; - height: 18px; - min-width: 0; -} - -/// Old size type, needs to be updated to new radio component. -.kt-btn-size-settings-container .kt-button-size-type-options { - margin-bottom: 0; - display: flex; -} -.kt-btn-size-settings-container { - display: flex; - align-items: center; - margin: 20px 0; -} -.kt-btn-size-settings-container .kt-beside-btn-group { - flex-grow: 1; - margin: 0; -} -.kt-button-size-type-options .dashicon { - width: 14px; - height: 14px; - font-size: 14px; -} -.kt-btn-size-settings-container .components-button-group .components-button.is-primary svg { - fill: white; -} diff --git a/src/packages/components/src/focal-picker/editor.scss b/src/packages/components/src/focal-picker/editor.scss deleted file mode 100644 index 37b8dba11..000000000 --- a/src/packages/components/src/focal-picker/editor.scss +++ /dev/null @@ -1,63 +0,0 @@ -.kadence-image-background-control{ - .kadence-image-upload { - margin: 0; - min-height: 0; - .components-placeholder__fieldset { - flex-direction: row; - flex-wrap: wrap; - } - .components-button.is-primary { - height: 100px; - width: 100%; - justify-content: center; - background: rgba(0,0,0,.04); - color: var(--wp-admin-theme-color); - &:hover:not(:disabled) { - background: var(--wp-admin-theme-color-darker-10); - color: #fff; - } - } - } - .kb-dynamic-background-sidebar-wrap { - display: inline-block; - } - > .kb-dynamic-background-sidebar-wrap .kb-dynamic-background-sidebar.has-icon, > .kb-dynamic-background-sidebar-top .kb-dynamic-background-sidebar.has-icon { - border: 1px solid var(--kb-border-color, #859CB6 ); - margin-bottom: 10px; - margin-left: 5px; - color: #1e1e1e; - border-radius: 4px; - &.is-pressed { - color:white; - } - svg { - max-width: 14px; - } - } - > .kb-dynamic-background-sidebar-top .kb-dynamic-background-sidebar.has-icon { - margin-left: 0; - } - .components-kadence-image-background__label { - margin-bottom: 6px; - } - .block-editor-media-placeholder__dynamic-input-container { - margin-left: auto; - margin-right: 0; - } -} -.kadence-image-background-control .block-editor-media-placeholder__dynamic-input-container .kb-dynamic-background-sidebar { - margin-bottom: 0; -} -.kadence-image-background-control .block-editor-media-placeholder__dynamic-input-container .kb-dynamic-background-sidebar svg { - max-width: 16px; -} -.kadence-image-background-control .kadence-image-upload .components-placeholder__label:empty { - padding: 0; - margin: 0; -} -.block-editor-media-placeholder__dynamic-input-container { - margin-left: 12px; -} -.block-editor-media-placeholder__dynamic-input-container svg { - max-width: 14px; -} \ No newline at end of file diff --git a/src/packages/components/src/focal-picker/index.js b/src/packages/components/src/focal-picker/index.js deleted file mode 100644 index bafe887de..000000000 --- a/src/packages/components/src/focal-picker/index.js +++ /dev/null @@ -1,78 +0,0 @@ -/** - * Focal Point control. - */ -import { Component } from '@wordpress/element'; -import { FocalPointPicker } from '@wordpress/components'; -/** - * Focal Point control - */ -class KadenceFocalPicker extends Component { - constructor() { - super( ...arguments ); - this.onPositionChange = this.onPositionChange.bind( this ); - this.convertPosition = this.convertPosition.bind( this ); - this.state = { - position: null, - }; - } - convertPosition( position ) { - if ( ! position ) { - return { x: 0.5, y: 0.5 }; - } - let positionX = 0.5; - let positionY = 0.5; - const positionArray = position.split( ' ' ); - if ( positionArray && positionArray[ 0 ] ) { - switch ( positionArray[ 0 ] ) { - case 'left': - positionX = 0; - break; - case 'right': - positionX = 1; - break; - case 'center': - positionX = 0.5; - break; - default: - positionX = parseInt( positionArray[ 0 ], 10 ) / 100; - break; - } - } - if ( positionArray && positionArray[ 1 ] ) { - switch ( positionArray[ 1 ] ) { - case 'top': - positionY = 0; - break; - case 'bottom': - positionY = 1; - break; - case 'center': - positionY = 0.5; - break; - default: - positionY = parseInt( positionArray[ 1 ], 10 ) / 100; - break; - } - } - return { x: positionX, y: positionY }; - } - onPositionChange( position ) { - this.setState( { position } ); - let focalPoint; - if ( position && undefined !== position.x && '' !== position.x ) { - focalPoint = ( position.x * 100 ) + '% ' + ( position.y * 100 ) + '%'; - } - this.props.onChange( focalPoint ); - } - render() { - const imagePosition = this.state.position ? this.state.position : this.convertPosition( this.props.value ); - return ( - this.onPositionChange( focalPoint ) } - /> - ); - } -} -export default ( KadenceFocalPicker ); diff --git a/src/packages/components/src/font-size/constants.js b/src/packages/components/src/font-size/constants.js deleted file mode 100644 index 01f916bb6..000000000 --- a/src/packages/components/src/font-size/constants.js +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Internal block libraries - */ - import { __ } from '@wordpress/i18n'; -export const OPTIONS_MAP = [ - { - value: 'sm', - output: 'var(--global-kb-font-size-sm, 0.9rem)', - size: 14, - label: __( 'SM', 'kadence-blocks' ), - name: __( 'Small', 'kadence-blocks' ), - }, - { - value: 'md', - output: 'var(--global-kb-font-size-md, 1.2rem)', - size: 32, - label: __( 'MD', 'kadence-blocks' ), - name: __( 'Medium', 'kadence-blocks' ), - }, - { - value: 'lg', - output: 'var(--global-kb-font-size-lg, 3rem)', - size: 48, - label: __( 'LG', 'kadence-blocks' ), - name: __( 'Large', 'kadence-blocks' ), - }, - { - value: 'xl', - output: 'var(--global-kb-font-size-xl, 4rem)', - size: 64, - label: __( 'XL', 'kadence-blocks' ), - name: __( 'X Large', 'kadence-blocks' ), - }, - { - value: 'xxl', - output: 'var(--global-kb-font-size-xxl, 5rem)', - size: 80, - label: __( 'XXL', 'kadence-blocks' ), - name: __( '2X Large', 'kadence-blocks' ), - }, -]; \ No newline at end of file diff --git a/src/packages/components/src/font-size/editor.scss b/src/packages/components/src/font-size/editor.scss deleted file mode 100644 index f0f0998d8..000000000 --- a/src/packages/components/src/font-size/editor.scss +++ /dev/null @@ -1,79 +0,0 @@ -.kadence-font-size-control .components-button-group.kadence-radio-container-control { - flex: 1; -} -.kadence-font-size-control .kadence-single-unit-control .components-button-group.kadence-radio-container-control { - flex:0; -} -.kadence-font-size-control .kadence-radio-container-control.components-button-group .components-button { - height: 32px; - min-width: 20px; -} -.kadence-font-size-control .kadence-radio-container-control.components-button-group .components-button.has-icon.only-icon svg { - margin: 0; - width: 1em; - height: 1em; - font-size: 18px; -} -.kadence-font-size-control .kadence-single-unit-control .components-unit-control-wrapper { - flex-grow: 2; -} -.kadence-font-size-control .kadence-single-unit-control { - gap: 0; -} -.kadence-controls-content.kadence-single-unit-control { - > .components-base-control { - margin-bottom: 0; - } -} -.kadence-font-size-control .kadence-single-unit-control .components-unit-control-wrapper .components-input-control__backdrop { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border: 1px solid var(--kb-border-color, #859CB6 ) !important; - border-right: 0 !important; -} -.kb-responsive-unit-control .kadence-component__header__title.kadence-unit__title { - white-space: nowrap; - overflow: hidden; -} -.kadence-font-size-control .kadence-single-unit-control .components-input-control__input:not(.specific) { - height: 32px; -} -.kadence-font-size-control .kadence-single-unit-control .kadence-measure-control-select { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - background: transparent; - border-radius: 0px 2px 2px 0px; - display: block; - outline: none; - margin: 0px; - min-height: auto; - font-family: inherit; - box-sizing: border-box; - padding: 2px 1px; - width: 20px; - color: rgb(47, 47, 47); - font-size: 10px; - line-height: 1; - letter-spacing: -0.5px; - text-transform: uppercase; - -moz-text-align-last: center; - text-align-last: center; - height: 100%; - border: 1px solid var(--kb-border-color, #859CB6 ); - border-left: 0; - border-top-left-radius: 0; - border-bottom-left-radius: 0; - transition: box-shadow 0.1s linear 0s, border 0.1s linear 0s; - cursor: pointer; - &:hover { - background-color: #F8F9FB; - } - &[disabled] { - cursor: not-allowed; - background: transparent; - &:hover { - background: transparent; - } - } -} \ No newline at end of file diff --git a/src/packages/components/src/font-size/index.js b/src/packages/components/src/font-size/index.js deleted file mode 100644 index 3c9141f26..000000000 --- a/src/packages/components/src/font-size/index.js +++ /dev/null @@ -1,299 +0,0 @@ -/** - * Range Control - * - */ -/** - * WordPress dependencies - */ - import { useState, useEffect } from '@wordpress/element'; - import { map, isEqual } from 'lodash'; - -/** - * Import Css - */ -import './editor.scss'; -/** - * Internal block libraries - */ - import { __ } from '@wordpress/i18n'; -import { - Flex, - FlexBlock, - FlexItem, - Button, - DropdownMenu, - Popover, - SelectControl, - ButtonGroup, - __experimentalUnitControl as UnitControl -} from '@wordpress/components'; -import { settings, link, linkOff, undo } from '@wordpress/icons'; -import { FONT_SIZES_MAP } from '@kadence/helpers'; -function isCustomOption( optionsArray, value ) { - if ( ! value ) { - return false; - } - if ( ! optionsArray ) { - return false; - } - return ( - ! optionsArray.find( ( option ) => option.value === value ) - ); -} -function getOptionSize( optionsArray, value ) { - if ( ! value ) { - return ''; - } - if ( ! optionsArray ) { - return ''; - } - if ( value === '0' ) { - return 0; - } - const found = optionsArray.find( ( option ) => option.value === value ); - if ( ! found ) { - return ''; - } - return found.size; -} -function getOptionFromSize( optionsArray, size ) { - if ( ! size ) { - return ''; - } - if ( ! optionsArray ) { - return ''; - } - if ( size === '0' ) { - return ''; - } - const found = optionsArray.find( ( option ) => option.size === size ); - if ( ! found ) { - return ''; - } - return found.value; -} -function getOptionValue( optionsArray, value ) { - if ( ! value ) { - return ''; - } - if ( ! optionsArray ) { - return ''; - } - if ( value === '0' ) { - return 0; - } - const found = optionsArray.find( ( option ) => option.value === value ); - if ( ! found ) { - return ''; - } - return found.value; -} -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function FontSizeControl( { - label, - onChange, - value = '', - className = '', - options = FONT_SIZES_MAP, - step = 1, - max = 200, - min = 0, - defaultValue = '', - unit = 'px', - onUnit, - units = [ 'px', 'em', 'rem' ], - disableCustomSizes = false, - customControl = false, - setCustomControl = null, - parentLabel = null, - reset = true, - radio = true, - preventUnitSelection = false, -} ) { - const [ isCustom, setIsCustom ] = useState( false ); - useEffect( () => { - setIsCustom( isCustomOption( options, value ) ); - }, [] ); - const realIsCustomControl = setCustomControl ? customControl : isCustom; - const realSetIsCustom = setCustomControl ? setCustomControl : setIsCustom; - const onChangeCustom = ( newSize ) => { - const isNumeric = ! isNaN( parseFloat( newSize ) ); - const nextValue = isNumeric ? parseFloat( newSize ) : undefined; - onChange( nextValue ); - }; - const controlUnits = units.map( ( unitItem ) => ( { - value: unitItem, - label: unitItem, - } ) ); - const currentValue = ! realIsCustomControl ? getOptionValue( options, value ) : value; - const onReset = () => { - if ( typeof reset === 'function' ){ - reset(); - } else { - onChange( defaultValue ); - } - } - const selectOptions = [ { - value: '', - output: '', - size: '', - label: __( 'Inherit', 'kadence-blocks' ), - name: __( 'Inherit', 'kadence-blocks' ), - }, ...options ];; - return [ - onChange && ( -
- { ! setCustomControl && label && ( -
-
- - { reset && ( -
-
- ) } -
-
- ) } - { ! realIsCustomControl && radio && ( -
- - { options.map( ( option, index ) => - - )} - { ! disableCustomSizes && ( -
- ) } - { ! realIsCustomControl && ! radio && ( -
- { - if ( currentValue == value && defaultValue == '' ) { - onChange( '' ); - } else { - onChange( value )} - } - } - /> - { ! disableCustomSizes && ( - -
- ) } - { realIsCustomControl && ( -
- onChangeCustom( newVal ) } - /> -
- -
- { ! disableCustomSizes && ( - -
- ) } -
- ), - ]; -} diff --git a/src/packages/components/src/font-size/responsive.js b/src/packages/components/src/font-size/responsive.js deleted file mode 100644 index 18f6ab506..000000000 --- a/src/packages/components/src/font-size/responsive.js +++ /dev/null @@ -1,208 +0,0 @@ -/** - * Responsive Range Component - * - */ - -/** - * Internal block libraries - */ - import { useSelect, useDispatch } from '@wordpress/data'; - import { useState, useRef } from '@wordpress/element'; - import { __ } from '@wordpress/i18n'; - import { map, isEqual } from 'lodash'; - import FontSizeControl from './index'; - import { capitalizeFirstLetter, FONT_SIZES_MAP } from '@kadence/helpers'; - import { undo, settings, link, linkOff } from '@wordpress/icons'; - import { - Dashicon, - Button, - DropdownMenu, - ButtonGroup, - } from '@wordpress/components'; - /** - * Build the Measure controls - * @returns {object} Measure settings. - */ - export default function ResponsiveFontSizeControl( { - label, - onChange, - onChangeTablet, - onChangeMobile, - mobileValue, - tabletValue, - value, - units = [ 'px', 'em', 'rem' ], - onUnit, - options = FONT_SIZES_MAP, - step = 1, - max = 200, - min = 0, - unit = 'px', - defaultValue = [ '', '', '' ], - reset = true, - radio = true, - compressedDevice = false, - } ) { - const ref = useRef(); - const [ deviceType, setDeviceType ] = useState( 'Desktop' ); - const theDevice = useSelect( ( select ) => { - return select( 'kadenceblocks/data' ).getPreviewDeviceType(); - }, [] ); - if ( theDevice !== deviceType ) { - setDeviceType( theDevice ); - } - const { - setPreviewDeviceType, - } = useDispatch( 'kadenceblocks/data' ); - const customSetPreviewDeviceType = ( device ) => { - setPreviewDeviceType( capitalizeFirstLetter( device ) ); - setDeviceType( capitalizeFirstLetter( device ) ); - }; - const devices = [ - { - name: 'Desktop', - title: , - itemClass: 'kb-desk-tab', - }, - { - name: 'Tablet', - title: , - itemClass: 'kb-tablet-tab', - }, - { - name: 'Mobile', - key: 'mobile', - title: , - itemClass: 'kb-mobile-tab', - }, - ]; - const currentValue = [ value, tabletValue, mobileValue ]; - const onReset = () => { - if ( typeof reset === 'function' ){ - reset(); - } else if ( deviceType === 'Mobile' ) { - onChangeMobile( defaultValue[2] ); - } else if ( deviceType === 'Tablet' ) { - onChangeTablet( defaultValue[1] ); - } else { - onChange( defaultValue[0] ); - } - } - const output = {}; - output.Mobile = ( - onChangeMobile( size ) } - options={ options } - onUnit={ onUnit } - defaultValue={ defaultValue[2] } - units={ units } - step={ step } - max={ max } - min={ min } - unit={ unit } - radio={ radio } - preventUnitSelection={ true } - /> - ); - output.Tablet = ( - onChangeTablet( size ) } - options={ options } - onUnit={ onUnit } - defaultValue={ defaultValue[1] } - units={ units } - step={ step } - max={ max } - min={ min } - unit={ unit } - radio={ radio } - preventUnitSelection={ true } - /> - ); - output.Desktop = ( - onChange( size ) } - options={ options } - onUnit={ onUnit } - defaultValue={ defaultValue[0] } - units={ units } - step={ step } - max={ max } - min={ min } - unit={ unit } - radio={ radio } - /> - ); - const icons = { - Desktop: , - Tablet: , - Mobile: , - } - const createLevelControlToolbar = ( mappedDevice ) => { - return [ { - title: mappedDevice.name, - icon: mappedDevice.title, - isActive: deviceType === mappedDevice.name, - onClick: () => { - customSetPreviewDeviceType( mappedDevice.name ); - }, - } ]; - }; - return [ - onChange && onChangeTablet && onChangeMobile && ( -
-
- { label && ( -
- - { reset && ( -
-
- ) } -
- ) } - { ! compressedDevice && ( - - { map( devices, ( { name, key, title, itemClass } ) => ( - - ) ) } - - )} - { compressedDevice && ( - createLevelControlToolbar( singleDevice ) ) } - /> - ) } -
-
- { ( output[ deviceType ] ? output[ deviceType ] : output.Desktop ) } -
-
- ), - ]; - } - diff --git a/src/packages/components/src/form-conditionals/index.js b/src/packages/components/src/form-conditionals/index.js deleted file mode 100644 index 0434af985..000000000 --- a/src/packages/components/src/form-conditionals/index.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * External Dependencies - */ - import { debounce } from 'lodash'; - -/** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n'; -import { Button, withFilters, Popover, ExternalLink } from '@wordpress/components'; -import { createRef, Component } from '@wordpress/element'; - -/** - * Internal Dependencies - */ - - -/** - * Build the Dynamic Image controls - */ -function KadenceFormConditionals ( props ) { - return ( - <> - ); -} -export default withFilters( 'kadence.FormConditionals' )( KadenceFormConditionals ); diff --git a/src/packages/components/src/gap-controls/editor.scss b/src/packages/components/src/gap-controls/editor.scss deleted file mode 100644 index a95a0f241..000000000 --- a/src/packages/components/src/gap-controls/editor.scss +++ /dev/null @@ -1,54 +0,0 @@ -.kadence-gap-size-control .components-button-group.kadence-radio-container-control { - flex: 1; -} -.kadence-gap-size-control .kadence-single-unit-control .components-button-group.kadence-radio-container-control { - flex:0; -} -.kadence-gap-size-control .kadence-radio-container-control.components-button-group .components-button { - height: 32px; - min-width: 20px; -} -.kadence-gap-size-control .kadence-radio-container-control.components-button-group .components-button.has-icon.only-icon svg { - margin: 0; - width: 1em; - height: 1em; - font-size: 18px; -} -.kadence-gap-size-control .kadence-single-unit-control .components-unit-control-wrapper { - flex-grow: 2; -} -.kadence-gap-size-control .kadence-single-unit-control { - gap: 2px; -} -.kadence-gap-size-control .kadence-single-unit-control .kadence-measure-control-select { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - background: transparent; - border-radius: 0px 2px 2px 0px; - display: block; - outline: none; - margin: 0px; - min-height: auto; - font-family: inherit; - box-sizing: border-box; - padding: 2px 1px; - width: 20px; - color: rgb(47, 47, 47); - font-size: 10px; - line-height: 1; - letter-spacing: -0.5px; - text-transform: uppercase; - -moz-text-align-last: center; - text-align-last: center; - height: 100%; - border: 1px solid var(--kb-border-color, #859CB6 ); - border-left: 0; - border-top-left-radius: 0; - border-bottom-left-radius: 0; - transition: box-shadow 0.1s linear 0s, border 0.1s linear 0s; - cursor: pointer; - &:hover { - background-color: #F8F9FB; - } -} \ No newline at end of file diff --git a/src/packages/components/src/gap-controls/index.js b/src/packages/components/src/gap-controls/index.js deleted file mode 100644 index c37af55a4..000000000 --- a/src/packages/components/src/gap-controls/index.js +++ /dev/null @@ -1,290 +0,0 @@ -/** - * Range Control - * - */ -/** - * WordPress dependencies - */ -import { useState, useEffect } from '@wordpress/element'; -import { map, isEqual } from 'lodash'; - -/** - * Import Css - */ -import './editor.scss'; -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import { - Flex, - FlexBlock, - FlexItem, - Button, - DropdownMenu, - Popover, - SelectControl, - ButtonGroup, - __experimentalUnitControl as UnitControl -} from '@wordpress/components'; -import { settings, link, linkOff, undo } from '@wordpress/icons'; -import { GAP_SIZES_MAP } from '@kadence/helpers'; -function isCustomOption( optionsArray, value ) { - if ( ! value ) { - return false; - } - if ( ! optionsArray ) { - return false; - } - return ( - ! optionsArray.find( ( option ) => option.value === value ) - ); -} -function getOptionSize( optionsArray, value ) { - if ( ! value ) { - return ''; - } - if ( ! optionsArray ) { - return ''; - } - if ( value === '0' ) { - return 0; - } - const found = optionsArray.find( ( option ) => option.value === value ); - if ( ! found ) { - return ''; - } - return found.size; -} -function getOptionFromSize( optionsArray, size ) { - if ( ! size ) { - return ''; - } - if ( ! optionsArray ) { - return ''; - } - if ( size === '0' ) { - return ''; - } - const found = optionsArray.find( ( option ) => option.size === size ); - if ( ! found ) { - return ''; - } - return found.value; -} -function getOptionValue( optionsArray, value ) { - if ( ! value ) { - return ''; - } - if ( ! optionsArray ) { - return ''; - } - if ( value === '0' ) { - return 0; - } - const found = optionsArray.find( ( option ) => option.value === value ); - if ( ! found ) { - return ''; - } - return found.value; -} -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function GapSizeControl( { - label, - onChange, - value = '', - className = '', - options = GAP_SIZES_MAP, - step = 1, - max = 200, - min = 0, - defaultValue = '', - unit = 'px', - onUnit, - units = [ 'px', 'em', 'rem' ], - disableCustomSizes = false, - customControl = false, - setCustomControl = null, - parentLabel = null, - reset = true, - radio = true, -} ) { - const [ isCustom, setIsCustom ] = useState( false ); - useEffect( () => { - setIsCustom( isCustomOption( options, value ) ); - }, [] ); - const realIsCustomControl = setCustomControl ? customControl : isCustom; - const realSetIsCustom = setCustomControl ? setCustomControl : setIsCustom; - const onChangeCustom = ( newSize ) => { - const isNumeric = ! isNaN( parseFloat( newSize ) ); - const nextValue = isNumeric ? parseFloat( newSize ) : undefined; - onChange( nextValue ); - }; - const controlUnits = units.map( ( unitItem ) => ( { - value: unitItem, - label: unitItem, - } ) ); - const currentValue = ! realIsCustomControl ? getOptionValue( options, value ) : value; - const onReset = () => { - if ( typeof reset === 'function' ){ - reset(); - } else { - onChange( defaultValue ); - } - } - const selectOptions = [ { - value: '', - output: '', - size: '', - label: __( 'Inherit', 'kadence-blocks' ), - name: __( 'Inherit', 'kadence-blocks' ), - }, ...options ];; - return [ - onChange && ( -
- { ! setCustomControl && label && ( -
-
- - { reset && ( -
-
- ) } -
-
- ) } - { ! realIsCustomControl && radio && ( -
- - { options.map( ( option, index ) => - - )} - { ! disableCustomSizes && ( -
- ) } - { ! realIsCustomControl && ! radio && ( -
- { - if ( currentValue == value && defaultValue == '' ) { - onChange( '' ); - } else { - onChange( value )} - } - } - /> - { ! disableCustomSizes && ( - -
- ) } - { realIsCustomControl && ( -
- onChangeCustom( newVal ) } - /> -
- -
- { ! disableCustomSizes && ( - -
- ) } -
- ), - ]; -} diff --git a/src/packages/components/src/gap-controls/responsive.js b/src/packages/components/src/gap-controls/responsive.js deleted file mode 100644 index f511f9d13..000000000 --- a/src/packages/components/src/gap-controls/responsive.js +++ /dev/null @@ -1,205 +0,0 @@ -/** - * Responsive Range Component - * - */ - -/** - * Internal block libraries - */ -import { useSelect, useDispatch } from '@wordpress/data'; -import { useState, useRef } from '@wordpress/element'; -import { __ } from '@wordpress/i18n'; -import { map, isEqual } from 'lodash'; -import GapSizeControl from './index'; -import { capitalizeFirstLetter, GAP_SIZES_MAP } from '@kadence/helpers'; -import { undo, settings, link, linkOff } from '@wordpress/icons'; -import { - Dashicon, - Button, - DropdownMenu, - ButtonGroup, -} from '@wordpress/components'; -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function ResponsiveGapSizeControl( { - label, - onChange, - onChangeTablet, - onChangeMobile, - mobileValue, - tabletValue, - value, - units = [ 'px', 'em', 'rem' ], - onUnit, - options = GAP_SIZES_MAP, - step = 1, - max = 200, - min = 0, - unit = 'px', - defaultValue = [ '', '', '' ], - reset = true, - radio = true, - compressedDevice = false, - } ) { - const ref = useRef(); - const [ deviceType, setDeviceType ] = useState( 'Desktop' ); - const theDevice = useSelect( ( select ) => { - return select( 'kadenceblocks/data' ).getPreviewDeviceType(); - }, [] ); - if ( theDevice !== deviceType ) { - setDeviceType( theDevice ); - } - const { - setPreviewDeviceType, - } = useDispatch( 'kadenceblocks/data' ); - const customSetPreviewDeviceType = ( device ) => { - setPreviewDeviceType( capitalizeFirstLetter( device ) ); - setDeviceType( capitalizeFirstLetter( device ) ); - }; - const devices = [ - { - name: 'Desktop', - title: , - itemClass: 'kb-desk-tab', - }, - { - name: 'Tablet', - title: , - itemClass: 'kb-tablet-tab', - }, - { - name: 'Mobile', - key: 'mobile', - title: , - itemClass: 'kb-mobile-tab', - }, - ]; - const currentValue = [ value, tabletValue, mobileValue ]; - const onReset = () => { - if ( typeof reset === 'function' ){ - reset(); - } else if ( deviceType === 'Mobile' ) { - onChangeMobile( defaultValue[2] ); - } else if ( deviceType === 'Tablet' ) { - onChangeTablet( defaultValue[1] ); - } else { - onChange( defaultValue[0] ); - } - } - const output = {}; - output.Mobile = ( - onChangeMobile( size ) } - options={ options } - onUnit={ onUnit } - defaultValue={ defaultValue[2] } - units={ units } - step={ step } - max={ max } - min={ min } - unit={ unit } - radio={ radio } - /> - ); - output.Tablet = ( - onChangeTablet( size ) } - options={ options } - onUnit={ onUnit } - defaultValue={ defaultValue[1] } - units={ units } - step={ step } - max={ max } - min={ min } - unit={ unit } - radio={ radio } - /> - ); - output.Desktop = ( - onChange( size ) } - options={ options } - onUnit={ onUnit } - defaultValue={ defaultValue[0] } - units={ units } - step={ step } - max={ max } - min={ min } - unit={ unit } - radio={ radio } - /> - ); - const icons = { - Desktop: , - Tablet: , - Mobile: , - } - const createLevelControlToolbar = ( mappedDevice ) => { - return [ { - title: mappedDevice.name, - icon: mappedDevice.title, - isActive: deviceType === mappedDevice.name, - onClick: () => { - customSetPreviewDeviceType( mappedDevice.name ); - }, - } ]; - }; - return [ - onChange && onChangeTablet && onChangeMobile && ( -
-
- { label && ( -
- - { reset && ( -
-
- ) } -
- ) } - { ! compressedDevice && ( - - { map( devices, ( { name, key, title, itemClass } ) => ( - - ) ) } - - )} - { compressedDevice && ( - createLevelControlToolbar( singleDevice ) ) } - /> - ) } -
-
- { ( output[ deviceType ] ? output[ deviceType ] : output.Desktop ) } -
-
- ), - ]; -} diff --git a/src/packages/components/src/gradient-control/constants.js b/src/packages/components/src/gradient-control/constants.js deleted file mode 100644 index b696927ec..000000000 --- a/src/packages/components/src/gradient-control/constants.js +++ /dev/null @@ -1,66 +0,0 @@ -/** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n'; - -export const DEFAULT_GRADIENT = - 'linear-gradient(135deg, rgb(6, 147, 227) 0%, rgb(20, 39, 109) 100%)'; - -export const DEFAULT_LINEAR_GRADIENT_ANGLE = 180; - -export const HORIZONTAL_GRADIENT_ORIENTATION = { - type: 'angular', - value: 90, -}; -export const DEFAULT_RADIAL_GRADIENT_POSITION = 'center center'; - -export const RADIAL_GRADIENT_ORIENTATION = [ { - type: 'shape', - value: 'ellipse', - at: { - type: 'position', - value: { - x: { - type: 'position-keyword', - value: 'center' - }, - y: { - type: 'position-keyword', - value: 'center' - } - } - } -} ]; - -export const DEFAULT_RADIAL_GRADIENT_SHAPE = 'ellipse'; -export const GRADIENT_OPTIONS = [ - { value: 'linear-gradient', label: __( 'Linear', 'kadence-blocks' ) }, - { value: 'radial-gradient', label: __( 'Radial', 'kadence-blocks' ) }, -]; - -export const GRADIENT_POSITION_OPTIONS = [ - { value: 'center top', label: __( 'Center Top', 'kadence-blocks' ) }, - { value: 'center center', label: __( 'Center Center', 'kadence-blocks' ) }, - { value: 'center bottom', label: __( 'Center Bottom', 'kadence-blocks' ) }, - { value: 'left top', label: __( 'Left Top', 'kadence-blocks' ) }, - { value: 'left center', label: __( 'Left Center', 'kadence-blocks' ) }, - { value: 'left bottom', label: __( 'Left Bottom', 'kadence-blocks' ) }, - { value: 'right top', label: __( 'Right Top', 'kadence-blocks' ) }, - { value: 'right center', label: __( 'Right Center', 'kadence-blocks' ) }, - { value: 'right bottom', label: __( 'Right Bottom', 'kadence-blocks' ) }, -]; - -export const DIRECTIONAL_ORIENTATION_ANGLE_MAP = { - top: 0, - 'top right': 45, - 'right top': 45, - right: 90, - 'right bottom': 135, - 'bottom right': 135, - bottom: 180, - 'bottom left': 225, - 'left bottom': 225, - left: 270, - 'top left': 315, - 'left top': 315, -}; diff --git a/src/packages/components/src/gradient-control/editor.scss b/src/packages/components/src/gradient-control/editor.scss deleted file mode 100644 index 4b4055f69..000000000 --- a/src/packages/components/src/gradient-control/editor.scss +++ /dev/null @@ -1,224 +0,0 @@ -.components-custom-gradient-picker__item { - display: block; - flex:5 1 0%; - max-height: 100%; - max-width: 100%; - min-height: 0px; - min-width: 0px; - .kadence-controls-content { - gap: 12px; - } - .kadence-controls-content .components-base-control { - margin-bottom: 0; - flex: 10 0 0; - } - .kadence-pop-gradient-color-picker { - padding-bottom: 10px; - } - .kadence-control-toggle-advanced.only-icon { - flex: 0; - display: flex; - align-items: center; - justify-content: center; - font-size: 10px; - font-weight: 600; - font-style: normal; - text-transform: uppercase; - height: 30px; - line-height: 1.2; - border: 1px solid var(--kb-border-color, #859CB6 ); - border-radius: 2px; - background: transparent; - color: #4A5568; - padding: 4px; - box-shadow: none; - white-space: normal; - svg { - width: 20px; - } - &.is-primary { - border-color: var(--wp-admin-theme-color, #00669b); - background: var(--wp-admin-theme-color, #00669b); - color: #fff; - box-shadow: none; - } - } -} -.block-editor-block-inspector .components-custom-gradient-picker__item .kadence-select-large .components-select-control__input { - height: 40px; - min-height: 40px; -} -.kadence-gradient-position-control .kadence-gradient-position_header .kadence-gradient-position__label { - margin: 0px 0px 8px; - display:block; -} -.kadence-gradient-position-control .components-unit-control-wrapper { - flex-grow: 1; -} -// .kadence-gradient-control .components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__control-point-button { -// border-radius: 50%; -// width: 30px; -// height: 30px; -// bottom: 100%; -// top: auto; -// margin-left: -15px; -// } -.kadence-gradient-control .components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__control-point-dropdown { - position: absolute; - height: 16px; - width: 16px; - top: 16px; - display: flex; -} -.kadence-gradient-control .components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__control-point-button { - height: inherit; - width: inherit; - border-radius: 50%; - padding: 0; - box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) #fff,0 0 1px 0 rgba(0, 0, 0, 0.25); - outline: 2px solid transparent; - position: static; - top: auto; - filter: drop-shadow(0px 0px 2px rgba(0, 0, 0, 0.3)); -} -// $grid-unit-20: 20px; -// $grid-unit-60: 40px; -// $radius-block-ui: 4px; -// $grid-unit-15: 15px; -// $grid-unit-30: 30px; -// $grid-unit-10: 10px; -// $border-width-tab: 1px; -// $components-custom-gradient-picker__padding: $grid-unit-20; // 48px container, 16px handles inside, that leaves 32px padding, half of which is 1Ã¥6. - -// .components-custom-gradient-picker { -// &:not(.is-next-has-no-margin) { -// margin-top: $grid-unit-15; -// margin-bottom: $grid-unit-30; -// } -// } - -// .components-custom-gradient-picker__gradient-bar:not(.has-gradient) { -// opacity: 0.4; -// } -.kadence-gradient-control .components-custom-gradient-picker__gradient-bar:not(.has-gradient) { - opacity: 0.4; -} -.kadence-select-no-margin-after { - -} -.kadence-gradient-control { - .components-custom-gradient-picker__ui-line .components-base-control { - margin-bottom: 0; - } - .components-custom-gradient-picker__ui-line .components-base-control .components-base-control__field { - margin-bottom: 0; - } -} -.kadence-gradient-control .components-custom-gradient-picker__gradient-bar { - border-radius: 2px; - width: 100%; - height: 48px; - margin-bottom: 16px; - padding-right: 0; - - .components-custom-gradient-picker__markers-container { - position: relative; - width: calc(100% - 48px); - margin-left: auto; - margin-right: auto; - } - - .components-custom-gradient-picker__control-point-dropdown { - position: absolute; - height: 16px; - width: 16px; - top: 16px; - display: flex; - } - - .components-custom-gradient-picker__insert-point-dropdown { - position: relative; - - // Same size as the .components-custom-gradient-picker__control-point-dropdown parent - height: inherit; - width: inherit; - min-width: 16px; - border-radius: 50%; - - background: #fff; - padding: 2px; - - color: #111; - - svg { - height: 100%; - width: 100%; - } - } -} -.kadence-gradient-control .components-angle-picker-control .components-input-control__container .components-input-control__input { - height: 32px; - padding-left: 8px; - padding-right: 8px; -} -// .components-custom-gradient-picker__control-point-button { -// // Same size as the .components-custom-gradient-picker__control-point-dropdown parent -// height: inherit; -// width: inherit; -// border-radius: 50%; -// padding: 0; - -// // Shadow and stroke. -// box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) #fff, 0 0 4px 0 rgba(#000, 0.25); - -// // Windows High Contrast mode will show this outline, but not the box-shadow. -// outline: 2px solid transparent; - -// &:focus, -// &.is-active { -// box-shadow: inset 0 0 0 calc(var(--wp-admin-border-width-focus) * 2) #fff, 0 0 4px 0 rgba(#000, 0.25); - -// // Windows High Contrast mode will show this outline, but not the box-shadow. -// outline: $border-width-tab solid transparent; -// } -// } -// } - -// .components-custom-gradient-picker__remove-control-point-wrapper { -// padding-bottom: $grid-unit-10; -// } - -// .components-custom-gradient-picker__inserter { -// /*rtl:ignore*/ -// direction: ltr; -// } - -// .components-custom-gradient-picker__liner-gradient-indicator { -// display: inline-block; -// flex: 0 auto; -// width: 20px; -// height: 20px; -// } - -// .components-custom-gradient-picker .components-custom-gradient-picker__toolbar { -// border: none; - -// // Work-around to target the inner button containers rendered by -// > div + div { -// margin-left: 1px; -// } - -// button { -// &.is-pressed { -// > svg { -// background: #fff; -// border: 1px solid #565656; -// border-radius: 2px; -// } -// } -// } -// } - -.kadence-gradient-control .components-custom-gradient-picker__item.components-custom-gradient-picker-position { - margin-top: 12px; -} \ No newline at end of file diff --git a/src/packages/components/src/gradient-control/gradient-bar/constants.js b/src/packages/components/src/gradient-control/gradient-bar/constants.js deleted file mode 100644 index 0e7dd7d0b..000000000 --- a/src/packages/components/src/gradient-control/gradient-bar/constants.js +++ /dev/null @@ -1,10 +0,0 @@ -export const GRADIENT_MARKERS_WIDTH = 16; -export const INSERT_POINT_WIDTH = 16; -export const MINIMUM_DISTANCE_BETWEEN_INSERTER_AND_POINT = 10; -export const MINIMUM_DISTANCE_BETWEEN_POINTS = 0; -export const MINIMUM_SIGNIFICANT_MOVE = 5; - -export const KEYBOARD_CONTROL_POINT_VARIATION = - MINIMUM_DISTANCE_BETWEEN_INSERTER_AND_POINT; -export const MINIMUM_DISTANCE_BETWEEN_INSERTER_AND_MARKER = - ( INSERT_POINT_WIDTH + GRADIENT_MARKERS_WIDTH ) / 2; diff --git a/src/packages/components/src/gradient-control/gradient-bar/control-points.js b/src/packages/components/src/gradient-control/gradient-bar/control-points.js deleted file mode 100644 index da72d7ba2..000000000 --- a/src/packages/components/src/gradient-control/gradient-bar/control-points.js +++ /dev/null @@ -1,772 +0,0 @@ -/** - * External dependencies - */ -import classnames from 'classnames'; -import { colord } from 'colord'; -import { map } from 'lodash'; - -/** - * WordPress dependencies - */ - import { useSetting } from '@wordpress/block-editor'; -import { useInstanceId, useMergeRefs } from '@wordpress/compose'; -import { useEffect, useRef, useState, useMemo } from '@wordpress/element'; -import { __, sprintf } from '@wordpress/i18n'; -import { plus } from '@wordpress/icons'; - -/** - * Internal dependencies - */ -// import { HStack } from '../../h-stack'; -// import { ColorPicker } from '../../color-picker'; -// import { VisuallyHidden } from '../../visually-hidden'; -import ColorPicker from '../../color-picker'; -import { __experimentalHStack as HStack, Button, VisuallyHidden, Popover, Dashicon, Tooltip, __experimentalNumberControl as NumberControl } from '@wordpress/components'; -import { - addControlPoint, - clampPercent, - removeControlPoint, - updateControlPointColor, - updateControlPointColorByPosition, - updateControlPointPosition, - getHorizontalRelativeGradientPosition, -} from './utils'; -import { - MINIMUM_SIGNIFICANT_MOVE, - KEYBOARD_CONTROL_POINT_VARIATION, -} from './constants'; - -function useObservableState( initialState, onStateChange ) { - const [ state, setState ] = useState( initialState ); - return [ - state, - ( value ) => { - setState( value ); - if ( onStateChange ) { - onStateChange( value ); - } - }, - ]; -} - -function CustomDropdown( props ) { - const { - renderContent, - renderToggle, - className, - contentClassName, - expandOnMobile, - headerTitle, - focusOnMount, - position, - popoverProps, - onClose, - onToggle, - style, - } = props; - // Use internal state instead of a ref to make sure that the component - // re-renders when the popover's anchor updates. - const [ fallbackPopoverAnchor, setFallbackPopoverAnchor ] = - useState( null ); - const containerRef = useRef(); - const [ isOpen, setIsOpen ] = useObservableState( false, onToggle ); - - useEffect( - () => () => { - if ( onToggle && isOpen ) { - onToggle( false ); - } - }, - [ onToggle, isOpen ] - ); - - function toggle() { - setIsOpen( ! isOpen ); - } - - /** - * Closes the popover when focus leaves it unless the toggle was pressed or - * focus has moved to a separate dialog. The former is to let the toggle - * handle closing the popover and the latter is to preserve presence in - * case a dialog has opened, allowing focus to return when it's dismissed. - */ - function closeIfFocusOutside() { - const { ownerDocument } = containerRef.current; - const dialog = ownerDocument.activeElement.closest( '[role="dialog"]' ); - if ( - ! containerRef.current.contains( ownerDocument.activeElement ) && - ( ! dialog || dialog.contains( containerRef.current ) ) - ) { - close(); - } - } - - function close() { - if ( onClose ) { - onClose(); - } - setIsOpen( false ); - } - - const args = { isOpen, onToggle: toggle, onClose: close }; - const popoverPropsHaveAnchor = - !! popoverProps?.anchor || - // Note: `anchorRef`, `getAnchorRect` and `anchorRect` are deprecated and - // be removed from `Popover` from WordPress 6.3 - !! popoverProps?.anchorRef || - !! popoverProps?.getAnchorRect || - !! popoverProps?.anchorRect; - - return ( -
- { renderToggle( args ) } - { isOpen && ( - - { renderContent( args ) } - - ) } -
- ); -} - -function CustomColorPickerDropdown( { - isRenderedInSidebar, - popoverProps: receivedPopoverProps, - ...props -} ) { - const popoverProps = useMemo( - () => ( { - shift: true, - ...( isRenderedInSidebar - ? { - // When in the sidebar: open to the left (stacking), - // leaving the same gap as the parent popover. - placement: 'left-start', - offset: 34, - } - : { - // Default behavior: open below the anchor - placement: 'bottom', - offset: 8, - } ), - ...receivedPopoverProps, - } ), - [ isRenderedInSidebar, receivedPopoverProps ] - ); - - return ( - - ); -} - -function ControlPointButton( { isOpen, position, color, ...additionalProps } ) { - const instanceId = useInstanceId( ControlPointButton ); - const descriptionId = `components-custom-gradient-picker__control-point-button-description-${ instanceId }`; - return ( - <> -
- ); - } ) } -
- ) } - { point?.position !== undefined && ( - { - onChange( - updateControlPointPosition( - controlPoints, - index, - clampPercent( - parseFloat( value ) - ) - ) - ); - }} - min={0} - step={0.01} - max={100} - style={{ paddingBottom: '10px' }} - /> - ) } - { ! disableRemove && controlPoints.length > 2 && ( - - - - ) } - - ) } - style={ { - left: `${ point.position }%`, - transform: 'translateX( -50% )', - } } - /> - ) - ); - } ); -} - -function InsertPoint( { - value: controlPoints, - onChange, - onOpenInserter, - onCloseInserter, - insertPosition, - isRenderedInSidebar, -} ) { - const [ alreadyInsertedPoint, setAlreadyInsertedPoint ] = useState( false ); - const disableCustomColors = ! useSetting( 'color.custom' ); - const colors = useSetting( 'color.palette' ); - const [ tempColor, setTempColor ] = useState( '' ); - const pointColor = getReadableColor( tempColor, colors ); - return ( - { - onCloseInserter(); - } } - renderToggle={ ( { isOpen, onToggle } ) => ( - - )} - {active} - - ); - } - return <>{normal}; - - } - }} - - , - ]; - } - return [ -
-
- {hover && ( - - )} - {active && ( - - )} -
-
- {isHover &&
{hover}
} - {isActive &&
{active}
} - {!isHover && !isActive && <>{normal}} -
-
, - ]; -} diff --git a/src/packages/components/src/icon-picker/editor.scss b/src/packages/components/src/icon-picker/editor.scss deleted file mode 100644 index 1d2ad16de..000000000 --- a/src/packages/components/src/icon-picker/editor.scss +++ /dev/null @@ -1,363 +0,0 @@ -.kadence-icon-picker { - margin-bottom: 24px; -} - -.kadence-icon-picker-selection { - display: block; -} - -.kadence-icon-picker-search { - position: fixed; - z-index: 999; - background-color: #fff; - padding: 10px 10px 5px 10px; - width: 350px; - border-bottom: 1px solid #e0e0e0; -} - -.kadence-icon-picker-content.has-search { - padding-top: 91px; -} - -.kadence-icon-picker-container { - min-width: 350px; - height: 50vh; - max-height: 400px; -} - -.kadence-icon-grid-wrap { - display: grid; - grid-template-columns: repeat(5, minmax(0, 1fr) ); - gap: 2px; -} - -.kadence-icon-picker-link { - display: flex; - align-items: center; - justify-content: center; - background: #f5f5f5; - color: #424242; - border: 0; - padding: 8px; - min-height: 60px; - min-width: 60px; - margin: 0; - font-size: 24px; - box-shadow: none; - text-align: center; - - &:hover { - background: #e5e5e5; - cursor: pointer; - } - - > * { - transform: scale(1); - transition: transform .25s; - transform-origin: center; - } - - &:hover > * { - transform: scale(1.3); - } - - svg { - width: 1em; - height: 1em; - } - - &.add-custom-svg { - background: #FFF; - border: 2px dashed #f5f5f5; - color: #f5f5f5; - } -} - -.kadence-icon-picker-link.kadence-icon-picker-selection-toggle { - padding-right: 40px; - padding-left: 12px; - position: relative; - background: white; - width: 100%; - justify-content: flex-start; - border: 1px solid var(--kb-border-color, #859CB6); - - .kadence-icon-picker-selection-value { - display: flex; - transform: scale(1) rotate(0) !important; - } - - .kadence-icon-picker-selection-arrow { - position: absolute; - top: 0; - bottom: 0; - right: 0; - display: flex; - align-items: center; - width: 34px; - background: #F8F9FB; - justify-content: center; - transform: scale(1) rotate(0) !important; - transition: background .25s; - border-left: 1px solid var(--kb-border-color, #859CB6); - } - - &:hover .kadence-icon-picker-selection-arrow { - background: #EBEFF3; - } -} - -.kadence-icon-picker-link.kadence-icon-picker-selection-toggle .kadence-icon-picker-selection-value.kadence-icon-picker-placeholder { - font-size: 14px; - color: #6280A1; -} - -.kadence-icon-picker-toggle-wrap { - display: block; - width: 100%; - position: relative; -} - -.kadence-icon-picker-toggle-wrap .kadence-icon-picker-clear { - position: absolute; - top: 50%; - right: 40px; - transform: translate(0px, -50%); - border: 0; - padding: 0; - background: #EBEFF3; - display: flex; - - &:hover { - background: #D2DAE4; - cursor: pointer; - } -} - -.kadence-icon-picker-pop-theme-dividers .kadence-icon-picker-content { - padding: 12px; -} - -.kadence-icon-picker-pop-theme-dividers .kadence-icon-grid-wrap { - grid-template-columns: minmax(0, 1fr); - gap: 6px; -} - -.kadence-icon-picker-pop-theme-dividers .kadence-icon-picker-link { - overflow: hidden; - min-height: 40px; -} - -.kadence-icon-picker-pop-theme-dividers .kadence-icon-picker-link svg { - width: auto; - height: auto; - max-height: 30px; - transform: scale(1) !important; -} - -.kadence-icon-picker-theme-dividers .kadence-icon-picker-link.kadence-icon-picker-selection-toggle .kadence-icon-picker-selection-value { - flex-grow: 1; -} - -.kadence-icon-picker-theme-dividers .kadence-icon-picker-link.kadence-icon-picker-selection-toggle .kadence-icon-picker-selection-value svg { - max-width: calc(100% - 30px); - width: auto; - max-height: 30px; - height: auto; -} - -.kadence-icon-picker-pop-theme-dividers .kadence-icon-picker-link svg.kadence-row-divider-top { - transform: rotate(180deg) !important; -} - -.kadence-icon-picker-theme-dividers .kadence-icon-picker-selection-value svg.kadence-row-divider-top { - transform: rotate(180deg) !important; -} - -.upload-svg-modal { - .modal-body { - padding-left: 16px !important; - padding-right: 16px !important; - } - - .security-notice { - border: 1px solid #AD9D08; - background-color: #FDF9D3; - color: #000; - padding: 10px 20px; - border-radius: 5px; - margin-bottom: 25px; - - h4 { - margin-bottom: 5px; - } - - p { - margin: 0; - } - } - - .drag-drop-container { - text-align: center; - margin-bottom: 25px; - - .drag-drop-target { - border: 4px dashed #f5f5f5; - padding: 20px 15px 15px 15px; - } - } - - .paste-container { - text-align: center; - margin-bottom: 25px; - - } - - .footer { - display: flex; - justify-content: space-between; - border-top: 1px solid #e0e0e0; - padding: 10px 20px; - } - - .components-modal__content{ - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - } - - .error-message{ - text-align: center; - padding: 15px; - font-size: 15px; - } -} - -.kb-custom-svg { - position: relative; - - .custom-svg-delete { - position: absolute; - top: -10px; - right: 0; - background-color: #ff0000; - border-radius: 10px; - width: 20px; - height: 20px; - display: none; - z-index: 2; - - svg { - display: none; - fill: #FFF; - } - } - - .custom-svg-delete:hover { - display: block; - cursor: pointer; - - svg { - display: block !important; - } - } - - .kadence-icon-picker-link { - - } - -} - -.kb-custom-svg:hover { - .custom-svg-delete { - display: block !important; - } - - svg { - display: block !important; - } -} - -.components-modal__header { - padding-left: 16px; - padding-right: 16px; -} -.kb-icon-block__add-icon-modal-tabs .active-tab { - border-bottom: 2px solid #007cba; -} -.kb-icon-block__add-icon-modal-tabs .components-tab-panel__tabs { - border-bottom: 1px solid #ddd; - margin-bottom: 10px; -} - -.svg-search-modal { - min-height: 300px; - - .svg-search-modal__input_row { - display: flex; - gap: 10px; - width: 100%; - } - - .svg-search-modal__input_row .components-base-control { - flex: 2; - min-width: 300px; - - .components-text-control__input { - height: 35px; - } - } - - .svg-search-modal__input_row .components-button { - flex-shrink: 0; - height: 35px; - } - - .svg-search-modal__results { - display: grid; - grid-template-columns: repeat(5, 1fr); - grid-template-rows: repeat(4, auto); - gap: 10px; - list-style-type: none; - padding: 0; - margin: 0; - - li { - justify-content: center; - align-items: center; - border-radius: 4px; - cursor: pointer; - display: inline-block; - - img { - max-width: 100%; - height: auto; - padding: 25%; - } - } - } - - .svg-search-modal__error { - color: red; - } - - /* Center the spinner within the container */ - .svg-search-modal__loading { - display: flex; /* Use Flexbox for centering */ - justify-content: center; /* Horizontally center */ - align-items: center; /* Vertically center */ - height: 100px; /* Set height for the loading area */ - } - - /* Spinner animation to rotate */ - @keyframes spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } - } - -} - diff --git a/src/packages/components/src/icon-picker/index.js b/src/packages/components/src/icon-picker/index.js deleted file mode 100644 index eef6abc64..000000000 --- a/src/packages/components/src/icon-picker/index.js +++ /dev/null @@ -1,348 +0,0 @@ -import { - Popover, - TextControl, - PanelBody, - SelectControl, - Icon -} from '@wordpress/components'; -import {__} from '@wordpress/i18n' -import { debounce, isEqual, has, get } from 'lodash'; -import {applyFilters} from '@wordpress/hooks' -import { useState, useMemo, useEffect, useCallback } from '@wordpress/element'; -import {default as GenIcon} from '../icons/gen-icon'; -import { plus, chevronDown, closeSmall } from '@wordpress/icons'; -import './editor.scss'; -import SvgAddModal from './svg-add-modal'; -import SvgDeleteModal from './svg-delete-modal'; -import { compareVersions } from '@kadence/helpers'; -import { default as IconRender } from '../icons/icon-render'; -export default function KadenceIconPicker({ - value, - onChange, - label, - placeholder = __( 'Select Icon', 'kadence-blocks' ), - showSearch = true, - renderFunc = null, - className, - theme = 'default', - allowClear = false, - icons = null - }) { - const [ popoverAnchor, setPopoverAnchor ] = useState(); - const [ isVisible, setIsVisible ] = useState( false ); - const [ search, setSearch ] = useState( '' ); - const [ filter, setFilter ] = useState( 'all' ); - const [ isOpen, setIsOpen ] = useState( false ); - const [ isDeleteOpen, setIsDeleteOpen ] = useState( false ); - const [ deleteId, setDeleteId ] = useState( null ); - const [ customSvgs, setCustomSvgs ] = useState( false ); - const [ customSvgTitles, setCustomSvgTitles ] = useState( [] ); - const [ isLoading, setIsLoading ] = useState( false ); - // Make sure user has pro and the appropriate version that has the rest endpoint to accept SVGs - const hasPro = kadence_blocks_params.pro && kadence_blocks_params.pro === 'true' ? true : false; - const proVersion = window?.kbpData ? get( window.kbpData, ['pVersion'], '1.0.0' ) : '1.0.0'; - const isSupportedProVersion = compareVersions(proVersion, '2.4.0') >= 0; - const toggleVisible = () => { - setIsVisible( !isVisible ); - } - const debounceToggle = debounce( toggleVisible, 100 ); - - const getCustomSvgs = async ( force = false) => { - if ( force || ( hasPro && isSupportedProVersion && customSvgs === false && !isLoading ) ) { - try { - setIsLoading( true ); - const response = await fetchCustomSvgs( force ); - - if( response.length > 0 ) { - const svgIds = response.map( svg => svg.id.toString() ); - const svgTitles = {}; - response.forEach( item => { - svgTitles[ item.id.toString() ] = item.title.rendered.toLowerCase(); - }); - - if ( !isEqual( svgIds, customSvgs ) && svgIds.length > 0 ) { - setCustomSvgs( svgIds ); - setCustomSvgTitles( svgTitles ); - } - } else { - setCustomSvgs( [] ); - } - } catch ( error ) { - setCustomSvgs( [] ); - console.error( 'Failed to fetch custom SVGs (picker):', error ); - } - setIsLoading( false ); - } - }; - useEffect( () => { getCustomSvgs(), [] } ); - - const deleteCallback = () => { - getCustomSvgs( true ); - setDeleteId( null ); - }; - - const addCallback = ( postId ) => { - onChange('kb-custom-' + postId.toString() ); - getCustomSvgs( true ); - }; - - const translatedCustomSvgString = __( 'My Icons', 'kadence-blocks' ); - - const iconNames = useMemo( () => { - - if ( icons ) { - const iconNames = icons.map( ( slug ) => { - return { value: slug, label: slug } - } ); - - if ( customSvgs.length > 0 ) { - return { [translatedCustomSvgString]: customSvgs, ...iconNames }; - } else if( hasPro && isSupportedProVersion ) { - return { [translatedCustomSvgString]: [ 'placeholder' ], ...iconNames }; - } - return iconNames; - - } - const svgs = applyFilters( 'kadence.icon_options_names', kadence_blocks_params.icon_names ); - - if ( customSvgs.length > 0 ) { - return { [translatedCustomSvgString]: customSvgs, ...svgs }; - } else if( hasPro && isSupportedProVersion ) { - return { [translatedCustomSvgString]: [ 'placeholder' ], ...svgs }; - } - - return svgs; - }, [ kadence_blocks_params.icon_names, icons, customSvgs ] ); - - const iconOptions = useMemo( () => { - return applyFilters( 'kadence.icon_options', { ...kadence_blocks_params_ico.icons, ...kadence_blocks_params_fa.icons, ...kadence_blocks_params_kbcustomicons.icons } ) - }, [ kadence_blocks_params_ico.icons, kadence_blocks_params_fa.icons, kadence_blocks_params_kbcustomicons.icons, customSvgs ] ) - const iconFilterOptions = useMemo( () => { - const options = Object.keys( iconNames ).map( ( label, index ) => { - return { value: index, label } - } ) - - return [ { value: 'all', label: __( 'Show All', 'kadence-blocks' ) }, ...options ] - }, [ kadence_blocks_params.icon_names, iconNames ] ) - - const iconRenderFunc = useCallback( ( iconSlug ) => { - // Using GenIcon directly is less overhead, but IconRender allows for custom SVGs to be fetched and rendered - if( iconSlug.startsWith( 'kb-custom' ) ) { - return ; - } - - return ; - }, [ iconOptions ] ); - - const iconRenderFunction = renderFunc ? renderFunc : iconRenderFunc; - - const results = useMemo( () => { - let results = {} - if ( !icons ) { - const searchLower = search.toLowerCase(); - Object.keys( iconNames ).map( ( label, groupIndex ) => { - if ( filter === 'all' || groupIndex === parseInt( filter ) ) { - { - iconNames[ label ].map( ( icon, iconIndex ) => { - const iconLower = icon.toLowerCase(); - - if ( search === '' || iconLower.includes( searchLower ) || ( groupIndex === 0 && has(customSvgTitles, iconLower.toString()) && customSvgTitles[iconLower.toString() ].includes( searchLower ) ) ) { - - results = { - ...results, [ groupIndex ]: { - label, - icons: { ...results[ groupIndex ]?.icons, [ icon ]: iconOptions[ icon ] } - } - } - - return icon - } - } ) - } - } - } ) - } - return results - }, [ search, filter, iconNames ] ); - - return ( -
- - -
- {label && ( -
- -
- )} -
- - {value && allowClear && ( - - )} -
-
- - {isVisible && - -
- {showSearch && ( -
- setSearch( value )} - /> - -
- )} -
- {icons && ( -
- {( icons ).map( ( iconKey ) => { - return ( - - ) - } )} -
- )} - {!icons && ( - <> - {Object.keys( results ).length === 0 && -
-

{__( 'No icons found', 'kadence-blocks' )}

-
- } - {Object.keys( results ).map( ( groupKey ) => { - return ( - -
- {results[ groupKey ].label === translatedCustomSvgString && search === '' && isSupportedProVersion && hasPro && ( - - )} - {Object.keys( results[ groupKey ].icons ).map( ( iconKey ) => { - if ( results[ groupKey ].label === translatedCustomSvgString ) { - if( iconKey === 'placeholder'){ - return; - } - - return ( -
- { hasPro && isSupportedProVersion && (
{ - setDeleteId( iconKey ); - setIsDeleteOpen( true ); - }}> - -
) } - -
- ); - } - return ( - - ); - - } ) - } -
- -
- ) - } )} - - )} -
-
-
- } -
- ) -} - -const fetchCustomSvgs = async ( cacheBust = false ) => { - const params = { - per_page: 100, - }; - - if ( cacheBust ) { - params.cache_bust = new Date().getTime(); - } - - const urlParams = new URLSearchParams( params ); - - const response = await fetch( kadence_blocks_params.rest_url + `wp/v2/kadence_custom_svg?${ urlParams.toString() }`, { - method: 'GET', - } ); - - if ( ! response.ok ) { - throw new Error( 'Network response was not ok' ); - } - - return response.json(); -}; diff --git a/src/packages/components/src/icon-picker/svg-add-modal.js b/src/packages/components/src/icon-picker/svg-add-modal.js deleted file mode 100644 index b1df9e18c..000000000 --- a/src/packages/components/src/icon-picker/svg-add-modal.js +++ /dev/null @@ -1,240 +0,0 @@ -import { __ } from '@wordpress/i18n'; -import { useState, useCallback } from '@wordpress/element'; -import { Button, Modal, TextareaControl, DropZone, FormFileUpload, TextControl, TabPanel } from '@wordpress/components'; -import { has, get, debounce } from 'lodash'; -import apiFetch from '@wordpress/api-fetch'; -import { useDispatch } from '@wordpress/data'; -import { store as noticesStore } from '@wordpress/notices'; -import SvgSearchModal from './svg-search-modal'; -import { compareVersions } from '@kadence/helpers'; - -export default function SvgAddModal( { isOpen, setIsOpen, callback, proVersion } ) { - const [ uploadView, setUploadView ] = useState( 'upload' ); - const [ pastedSVG, setPastedSVG ] = useState( '' ); - const [ error, setError ] = useState( '' ); - const [ file, setFile ] = useState( null ); - const [ title, setTitle ] = useState( '' ); - const { createSuccessNotice } = useDispatch( noticesStore ); - const supportsSearchTab = compareVersions(proVersion, '2.7.0') >= 0; - - function parseAndUpload() { - const fileread = new FileReader(); - const source = file !== null ? 'upload' : 'paste'; - - let fileBlob; - if ( source === 'upload' ) { - if ( !file || file.length === 0 ) { - setError( __( 'No file selected', 'kadence-blocks' ) ); - return; - } - fileBlob = file[ 0 ]; - - // Check MIME type - if ( fileBlob.type !== 'image/svg+xml' ) { - setError( __( 'The selected file is not an SVG', 'kadence-blocks' ) ); - return; - } - } else { - if ( !pastedSVG.trim() ) { - setError( __( 'No SVG content pasted', 'kadence-blocks' ) ); - return; - } - fileBlob = new Blob( [ pastedSVG ], { type: 'image/svg+xml' } ); - } - - fileread.onload = function( e ) { - const fileContent = e.target.result; - - if ( fileContent !== '' ) { - apiFetch( { - path : '/kb-custom-svg/v1/manage', - data : { file: fileContent, title }, - method: 'POST', - } ).then( ( response ) => { - if ( has( response, 'value' ) && has( response, 'label' ) ) { - createSuccessNotice( __( 'SVG Saved.', 'kadence-blocks' ), { - type: 'snackbar', - } ); - callback( response.value ); - setIsOpen( false ); - } else if ( has( response, 'error' ) && has( response, 'message' ) ) { - setError( response.message ); - } else { - setError( __( 'An error occurred when uploading your file', 'kadence-blocks' ) ); - } - } ); - } - }; - - fileread.readAsText( fileBlob ); - } - - return ( - <> - {isOpen && ( - setIsOpen( false )} - > - - { ( tab ) => ( -
- { tab.name === 'upload' && ( - <> -
-

{__( 'Important: SVG Safety', 'kadence-blocks' )}

-

- {__( - 'SVGs can contain malicious code. For your security, we suggest sanitizing your files before uploading.', - 'kadence-blocks', - )} -   - - {__( 'Learn more about SVG security and supported SVG formatting.', 'kadence-blocks' )} - -

-
- - {error !== '' &&
{error}
} - - {uploadView === 'upload' && ( -
- setTitle( value )} - /> - { - setFile( event.currentTarget.files ); - if ( title === '' ) { - setTitle( - get( event.currentTarget.files, [ '0', 'name' ], '' ).replace( - '.svg', - '', - ), - ); - } - }} - render={( { openFileDialog } ) => ( -
- { - setFile( file ); - if ( title === '' ) { - setTitle( - get( file, [ '0', 'name' ], '' ).replace( '.svg', '' ), - ); - } - }} - /> - {file === null || file.length === 0 ? ( - <> -

{__( 'Select a file or drop it here', 'kadence-blocks' )}

-

{__( 'SVG dimensions: 24px by 24px', 'kadence-blocks' )}

- - ) : ( - <> -

{__( 'File Selected', 'kadence-blocks' )}

-

{get( file, [ '0', 'name' ], '' )}

- - )} - - -
- )} - /> - - -
- )} - - {uploadView === 'paste' && ( -
-

{__( 'Paste your SVG', 'kadence-blocks' )}

- setTitle( value )} - /> - setPastedSVG( value )}/> - - -
- )} -
- - - -
- - - )} - { tab.name === 'search' && supportsSearchTab && ( - - )} -
- )} -
-
- )} - - ); -} diff --git a/src/packages/components/src/icon-picker/svg-delete-modal.js b/src/packages/components/src/icon-picker/svg-delete-modal.js deleted file mode 100644 index b3bc0662a..000000000 --- a/src/packages/components/src/icon-picker/svg-delete-modal.js +++ /dev/null @@ -1,59 +0,0 @@ -import { __ } from '@wordpress/i18n'; -import { useState } from '@wordpress/element'; -import { - Button, - Modal, -} from '@wordpress/components'; -import { has, get } from 'lodash'; -import { useDispatch } from '@wordpress/data'; -import { store as noticesStore } from '@wordpress/notices'; -import apiFetch from '@wordpress/api-fetch'; - -export default function SvgDeleteModal( { isOpen, setIsOpen, id, callback } ) { - const { createSuccessNotice, createErrorNotice } = useDispatch(noticesStore); - - const deleteFailedSnacbkar = () => { - createErrorNotice(__('There was an error deleting the SVG.', 'kadence-blocks'), { - type: 'snackbar', - }); - }; - - const handleDelete = ( id ) => { - apiFetch({ - path: `/wp/v2/kadence_custom_svg/${id}`, - method: 'DELETE', - }).then((response) => { - if ( get( response, 'id', false ) ) { - createSuccessNotice(__('SVG Deleted.', 'kadence-blocks'), { - type: 'snackbar', - }); - callback(); - } else if (has(response, 'error') && has(response, 'message')) { - console.log(response.message); - deleteFailedSnacbkar(); - } else { - console.log('An error occurred when delete your svg'); - deleteFailedSnacbkar(); - } - }).catch((error) => { - console.log(error); - deleteFailedSnacbkar(); - }); - }; - - return ( - <> - {isOpen && id !== null && ( - setIsOpen( false )}> - - - - - )} - - ); - -} diff --git a/src/packages/components/src/icon-picker/svg-search-modal.js b/src/packages/components/src/icon-picker/svg-search-modal.js deleted file mode 100644 index 7255ed917..000000000 --- a/src/packages/components/src/icon-picker/svg-search-modal.js +++ /dev/null @@ -1,231 +0,0 @@ -import { useState, useEffect, useRef } from "@wordpress/element"; -import { __ } from "@wordpress/i18n"; -import { Button, TextControl, Spinner } from "@wordpress/components"; // Import Spinner -import apiFetch from "@wordpress/api-fetch"; -import { addQueryArgs } from "@wordpress/url"; -import { store as noticesStore } from '@wordpress/notices'; -import { useDispatch } from '@wordpress/data'; - -export default function SvgSearchModal( {isOpen, setIsOpen, callback} ) { - const [inputValue, setInputValue] = useState(""); - const [results, setResults] = useState([]); - const [allIcons, setAllIcons] = useState([]) - const [error, setError] = useState(null); - const [isLoading, setIsLoading] = useState(false); - const [isLoadingMore, setIsLoadingMore] = useState(false); - const [isAddingIcon, setIsAddingIcon] = useState(false); - const [selectedIndex, setSelectedIndex] = useState(0); - const { createSuccessNotice } = useDispatch( noticesStore ); - const [currentPage, setCurrentPage] = useState(1); - const [hasMore, setHasMore] = useState(false); - const searchInputRef = useRef(null); - - useEffect(() => { - if (isOpen && searchInputRef.current) { - searchInputRef.current.focus(); - } - }, [isOpen]); - - const handleInputChange = (value) => { - setInputValue(value); - }; - - const performSearch = async () => { - setResults([]); - setAllIcons([]); - setError(null); - setIsLoading(true); - setCurrentPage(1); - setSelectedIndex(0); - - if (!inputValue) { - setIsLoading(false); - return; - } - - try { - const response = await apiFetch({ - path: addQueryArgs(`/kb-custom-svg/v1/search`, { search: inputValue, page: 1 }), - method: "GET", - }); - - if (response.success) { - setResults(response); - setAllIcons(response.svgs.icons); - setHasMore(response.svgs.has_more); - } else { - setError( - `Error ${response.code}: ${response.message || "Unexpected error occurred."}` - ); - } - } catch (error) { - setError( - `Error ${error.code || "unknown"}: ${error.message || "An unexpected error occurred."}` - ); - } finally { - setIsLoading(false); - } - }; - - const handleItemClick = (index) => { - setSelectedIndex(index); - }; - - const handleAddSvg = async () => { - if (allIcons && selectedIndex >= 0) { - const selectedIcon = allIcons[selectedIndex]; - - if (!selectedIcon || !selectedIcon.url) { - setError(__("Selected SVG is invalid. Please try again.", "kadence-blocks")); - return; - } - - const selectedSvgUrl = selectedIcon.url; - setIsAddingIcon(true); - - try { - const response = await apiFetch({ - path: '/kb-custom-svg/v1/search/add', - method: 'POST', - data: { - svgUrl: selectedSvgUrl, - title: selectedIcon.title || '', - id: selectedIcon.id || '', - }, - }); - - if (response?.value && response?.label) { - createSuccessNotice(__('SVG Saved.', 'kadence-blocks'), { - type: 'snackbar', - }); - callback(response.value); - setIsOpen(false); - } else { - throw new Error(__('Invalid response from the server.', 'kadence-blocks')); - } - } catch (error) { - setError(__('Failed to add the SVG. Please try again.', 'kadence-blocks')); - } finally { - setIsAddingIcon(false); - } - } else { - setError(__("No SVG selected", "kadence-blocks")); - } - }; - - const loadMoreIcons = async () => { - if (!hasMore) {return;} - - setError(null); - setIsLoadingMore(true); - - try { - const nextPage = currentPage + 1; - const response = await apiFetch({ - path: addQueryArgs(`/kb-custom-svg/v1/search`, { search: inputValue, page: nextPage }), - method: "GET", - }); - - if (response.svgs && response.svgs.icons) { - setAllIcons((prevIcons) => [...prevIcons, ...response.svgs.icons]); - setCurrentPage(nextPage); - setHasMore(response.svgs.has_more); - } else { - setError("No further results found."); - } - } catch (error) { - setError("Failed to load more icons, please try again."); - } finally { - setIsLoadingMore(false); - } - }; - - return ( -
-
- { - if (event.key === "Enter") { - performSearch(); - } - }} - ref={searchInputRef} - /> - -
- {isLoading && ( -
- -
- )} - {!isLoading && allIcons.length > 0 && ( - <> -
    - {allIcons.map((icon, index) => ( -
  • - -
  • - ))} -
-
- - -
- - )} - {error && ( -

- {error} -

- )} - {!isLoading && !error && (!results || (results.svgs && results.svgs.icons.length === 0)) && ( -

- {__("No results found. Please try a different search.", "kadence-blocks")} -

- )} - {!isLoading && !results.svgs && !error && ( -

- {__("Start Search…", "kadence-blocks")} -

- )} -
- ); -} diff --git a/src/packages/components/src/icons/gen-icon/index.js b/src/packages/components/src/icons/gen-icon/index.js deleted file mode 100644 index d6f9d3c40..000000000 --- a/src/packages/components/src/icons/gen-icon/index.js +++ /dev/null @@ -1,66 +0,0 @@ -import PropTypes from 'prop-types'; - -import { createElement } from '@wordpress/element'; - -const walkChildren = ( children ) => { - return children.map( ( child, idx ) => { - const { nE, aBs: attribsMap, children: gchildren = null } = child; - - //fill, stroke - const attribs = Object.keys( attribsMap ) - .filter( key => key !== 'fill' && key !== 'stroke' && attribsMap[ key ] !== 'none' ) - .reduce( ( partial, key ) => { - - //partial[camelcase(key)] = attribsMap[key]; - partial[ key ] = attribsMap[ key ]; - return partial; - }, {} ); - //special case, it has fill and stroke at the same time - let merge = {}; - if ( attribsMap.fill === 'none' && attribsMap.stroke ) { - merge = { fill: 'none', stroke: 'currentColor' }; - } - return createElement( nE, { key: idx, ...attribs, ...merge }, gchildren === null ? gchildren : walkChildren( gchildren ) ); - } ); -}; - -export const GenIcon = ( props ) => { - const { style, className, icon, name, htmltag, ...others } = props; - const type = name.substring( 0, 2 ); - const typeL = name.substring( 0, 3 ); - const lineIcon = ( type && 'fe' == type ? true : false ); - const fill = ( lineIcon ? 'none' : 'currentColor' ); - const strokeWidth = ( lineIcon ? props.strokeWidth : undefined ); - const stroke = ( lineIcon ? 'currentColor' : undefined ); - const strokeLinecap = ( lineIcon ? 'round' : undefined ); - const strokeLinejoin = ( lineIcon ? 'round' : undefined ); - const ariaHidden = ( props.ariaHidden ? 'true' : undefined ); - const HtmlTagOut = ( htmltag ? htmltag : 'div' ); - const viewB = ( props.icon && props.icon.vB ? props.icon.vB.split( ' ' ) : false ); - return ( - - - { props.title ? { props.title } : null } - { props.icon && ( - walkChildren( props.icon.cD ) - ) } - - - ); -}; - -GenIcon.defaultProps = { - size: 24, - xmlns: 'http://www.w3.org/2000/svg', - strokeWidth: 2, - htmltag: 'div', -}; - -GenIcon.propTypes = { - icon: PropTypes.object.isRequired, - size: PropTypes.oneOfType( [ PropTypes.number, PropTypes.string ] ), - style: PropTypes.object, - className: PropTypes.string, -}; - -export default GenIcon; diff --git a/src/packages/components/src/icons/icon-render/index.js b/src/packages/components/src/icons/icon-render/index.js deleted file mode 100644 index f5d566058..000000000 --- a/src/packages/components/src/icons/icon-render/index.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Icon Render Component - * - */ -import GenIcon from '../gen-icon'; -import { applyFilters } from '@wordpress/hooks'; -import { Spinner } from '@wordpress/components'; - -import { Fragment, Component, useEffect, useState } from '@wordpress/element'; - -const fetchCustomSvg = async ( id ) => { - const response = await fetch(kadence_blocks_params.rest_url + `wp/v2/kadence_custom_svg/${id}`, { - method: 'GET' - }); - - if (!response.ok) { - throw new Error('Network response was not ok'); - } - - return response.json(); -}; - - - -/** - * Build the typography controls - * @returns {object} typography settings. - */ -class IconRender extends Component { - constructor() { - super( ...arguments ); - this.updateIcons = this.updateIcons.bind( this ); - this.getCustomSvg = this.getCustomSvg.bind( this ); - this.state = { - iconOptions: undefined, - isLoading: false, - customSvg: '', - }; - } - componentDidMount() { - const icons = { ...kadence_blocks_params_ico.icons, ...kadence_blocks_params_fa.icons, ...kadence_blocks_params_kbcustomicons.icons }; - this.setState( { iconOptions: applyFilters( 'kadence.icon_options', icons ) } ); - if( this.props.name.startsWith('kb-custom') ) { - this.getCustomSvg( this.props.name.replace('kb-custom-', '') ); - } - } - - componentDidUpdate( prevProps, prevState, snapshot ) { - if ( this.props.name !== prevProps.name && this.props.name.startsWith( 'kb-custom' ) ) { - this.getCustomSvg( this.props.name.replace( 'kb-custom-', '' ) ); - } - } - - getCustomSvg = async ( id ) => { - try { - // Check if the SVG is in localStorage - const cachedSvg = localStorage.getItem(`kb-custom-${id}`); - if (cachedSvg) { - this.setState( { customSvg: JSON.parse(cachedSvg) }); - return; - } - this.setState( { isLoading: true }); - const response = await fetchCustomSvg( id ); - - if ( response ) { - const svgContent = response.content.rendered - .replace( '

', '' ) - .replace( '

', '' ) - .replace( /“/g, '"' ) - .replace( /”/g, '"' ) - .replace( /„/g, '"' ) - .replace( /″/g, '"' ); - - const jsonObject = JSON.parse(svgContent); - - // Save the fetched SVG to localStorage - localStorage.setItem(`kb-custom-${id}`, JSON.stringify(jsonObject)); - this.setState( { customSvg:jsonObject }); - - } else { - this.setState( { customSvg:'' }); - } - } catch ( error ) { - this.setState( { customSvg:'' }); - console.error( 'Failed to fetch custom SVGs:', error ); - } - this.setState( { isLoading:false }); - }; - updateIcons() { - const icons = { ...kadence_blocks_params_ico.icons, ...kadence_blocks_params_fa.icons, ...kadence_blocks_params_kbcustomicons.icons }; - const filteredIcons = applyFilters( 'kadence.icon_options', icons ); - return filteredIcons; - } - render() { - const { - name, - } = this.props; - let { iconOptions, isLoading, customSvg } = this.state; - if ( ! iconOptions ) { - iconOptions = this.updateIcons(); - } - if( name.startsWith('kb-custom') && isLoading ) { - return ; - } else if ( name.startsWith('kb-custom') && customSvg !== '' ) { - return ; - } - return ; - } -} -export default ( IconRender ); - diff --git a/src/packages/components/src/icons/icon-span-tag/index.js b/src/packages/components/src/icons/icon-span-tag/index.js deleted file mode 100644 index aa0b23e91..000000000 --- a/src/packages/components/src/icons/icon-span-tag/index.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Icon Span Tag Component - * - */ - -export default function IconSpanTag( { - name, - title, - extraClass, - strokeWidth = false, - tooltipID = '', - tooltipPlacement = '', - } ) { - return ( - - ); -} diff --git a/src/packages/components/src/index.js b/src/packages/components/src/index.js deleted file mode 100644 index b7c694884..000000000 --- a/src/packages/components/src/index.js +++ /dev/null @@ -1,126 +0,0 @@ -/** - * Import General Editor CSS - */ -import './editor.scss'; - -export { default as PopColorControl } from './pop-color-control'; -export { default as ResponsivePopColorControl } from './responsive-pop-color-control'; -export { default as SinglePopColorControl } from './single-pop-color-control'; -export { default as ColorControlWithStates } from './color-control-with-states'; -export { default as ResponsiveButtonStyleControlsWithStates } from './responsive-button-style-controls-with-states'; -export { default as ColorIcons } from './color-icons'; -export { default as ColorPicker } from './color-picker'; -export { default as ColorFields } from './color-fields'; -export { default as InlinePopColorControl } from './inline-pop-color'; -export { default as ResponsiveAlignControls } from './responsive-align-control'; -export { default as KadenceSelectPosts } from './select-posts-controls'; -export { default as WebfontLoader } from './simple-web-font-loader'; -export { default as KadenceWebfontLoader } from './simple-webfont-loader'; -export { default as KadenceFormConditionals } from './form-conditionals'; -export { default as HeadingLevelIcon } from './heading-level-icon'; -export { default as BoxShadowControl } from './box-shadow-control'; -export { default as DynamicImageControl } from './dynamic-image-control'; -export { default as DynamicTextControl } from './dynamic-text-control'; -export { default as DynamicInlineReplaceControl } from './dynamic-inline-replace-control'; -export { default as DynamicBackgroundControl } from './dynamic-background-control'; -export { default as DynamicGalleryControl } from './dynamic-gallery-control'; -export { default as DropShadowControl } from './drop-shadow-control'; -export { default as BackgroundSizeControl } from './background-size-control'; -export { default as BackgroundControl } from './background-control'; -export { default as BackgroundTypeControl } from './background-type-control'; -export { default as GradientControl } from './gradient-control'; -export { default as MeasureRangeControl } from './measurement-range-control'; -export { default as ResponsiveMeasureRangeControl } from './measurement-range-control/responsive'; -export { default as SpacingVisualizer } from './visualizer/spacing'; -export { default as KadenceFocalPicker } from './focal-picker'; -export { default as KadenceRadioButtons } from './common/radio-buttons'; -export { default as ResponsiveKadenceRadioButtons } from './responsive-radio-buttons'; -export { default as KadenceMediaPlaceholder } from './common/media-placeholder'; -export { default as ImageSizeControl } from './common/image-size-controls'; -export { default as VerticalAlignmentIcon } from './common/vertical-align-icon'; -export { default as KadenceImageControl } from './common/image-controls'; -export { default as KadenceVideoControl } from './common/video-control'; -export { default as SubsectionWrap } from './common/subsection-wrap'; -export { default as KadencePanelBody } from './panel-body'; -export { default as KadenceSubPanelBody } from './sub-panel-body'; -export { default as KadenceInspectorControls } from './inspector-controls'; -export { default as KadenceSelectTerms } from './select-terms-control'; -export { default as KadencePostSelectTerms } from './post-select-terms-control'; -export { default as SmallResponsiveControl } from './small-responsive-control'; -export { default as ResponsiveControl } from './responsive-control'; -export { default as ResponsiveSelectControl } from './responsive-select-control'; -export { default as StepControls } from './step-control'; -export { default as OpacityControl } from './opacity-control'; -export { default as SingleBorderControl } from './border/single-border-control'; -export { default as ResponsiveSingleBorderControl } from './border/responsive-single-border-control'; -export { default as BorderControl } from './border/border-control'; -export { default as ResponsiveBorderControl } from './border/responsive-border-control'; -export { default as FontSizeControl } from './font-size'; -export { default as ResponsiveFontSizeControl } from './font-size/responsive'; -export { default as ResponsiveUnitControl } from './unit/responsive'; -export { default as InspectorControlTabs } from './inspector-control-tabs'; -export { default as HoverToggleControl } from './hover-toggle'; -export { default as TagSelect } from './tag-select'; -export { default as GapSizeControl } from './gap-controls'; -export { default as ResponsiveGapSizeControl } from './gap-controls/responsive'; -export { default as CopyPasteAttributes } from './copy-paste-attributes'; -export { default as DynamicTextInputControl } from './dynamic-text-input-control'; -export { default as SelectPostFromPostType } from './select-post-from-post-type'; -export { default as Tooltip } from './tooltip'; - -/* Panels */ -export { default as ColorGroup } from './panels/color-group'; -export { default as TwoColumn } from './panels/two-column'; - -/* Links */ -export { default as DynamicLinkControl } from './links/dynamic-link-control'; -export { default as fetchSearchResults } from './links/get-post-search-results'; -export { default as KadenceImageURLInputUI } from './links/image-url-input-link-controls'; -export { default as URLInputInline } from './links/inline-link-control'; -export { default as InputSearch } from './links/input-search'; -export { default as URLInputControl } from './links/link-control'; -export { default as TextHighlight } from './links/text-highlight'; - -/* Icons */ -export { default as GenIcon } from './icons/gen-icon'; -export { default as IconRender } from './icons/icon-render'; -export { default as IconSpanTag } from './icons/icon-span-tag'; - -/* Typography */ -export { default as TypographyControls } from './typography/typography-control'; -export { default as InlineTypographyControls } from './typography/inline-typography-control'; -export { default as TextShadowControl } from './typography/text-shadow-control'; - -/* Range */ -export { default as RangeControl } from './range/range-control'; -export { default as RadioRangeControl } from './range/radio-range-control'; -export { default as ResponsiveRangeControls } from './range/responsive-range-control'; -export { default as ResponsiveRadioRangeControls } from './range/responsive-radio-range-control'; -export { default as ResponsiveSingleRangeControl } from './range/single-range-control'; - -/* Measurement */ -export { default as ResponsiveMeasurementControls } from './measurement/responsive-measurement-control'; -export { default as MeasurementControls } from './measurement/measurement-control'; -export { default as MeasurementSingleControl } from './measurement/single-input-control'; - -/* Color */ -export { default as AdvancedColorControlPalette } from './color/advanced-color-control-palette'; -export { default as BorderColorControls } from './color/border-color-control'; -export { default as ShadowControl } from './shadow/shadow-control'; -export { default as ResponsiveShadowControl } from './shadow/responsive-shadow-control'; - -/* Block Defaults */ -export { default as KadenceBlockDefaults } from './block-defaults'; - -export { default as KadenceIconPicker } from './icon-picker'; - -export { default as TaxonomySelect } from './taxonomy-select'; - -export { default as SelectParentBlock } from './select-parent-block'; -export { default as SelectChildBlock } from './select-child-block'; -export { default as ObfuscateTextControl } from './obfuscate-text-control'; - -export { default as PostSelectorCheckbox } from './post-selector-checkbox'; -export { default as ColumnDragResizer } from './column-drag-resizer'; - -export { default as OnboardingModal } from './onboarding-modal'; diff --git a/src/packages/components/src/inline-pop-color/index.js b/src/packages/components/src/inline-pop-color/index.js deleted file mode 100644 index 1f545f5d8..000000000 --- a/src/packages/components/src/inline-pop-color/index.js +++ /dev/null @@ -1,380 +0,0 @@ -/** - * Advanced Color Control. - * - */ - -/** - * Import Icons - */ -import ColorPicker from '../color-picker'; -import { hexToRGBA } from '@kadence/helpers'; -import { map } from 'lodash'; -import { useSetting } from '@wordpress/block-editor'; -import { useState, useMemo } from '@wordpress/element'; - -/** - * Internal block libraries - */ -import { __, sprintf } from '@wordpress/i18n'; -import { Button, ToolbarGroup, Tooltip, Dashicon, SVG, Dropdown, Path } from '@wordpress/components'; -import { DOWN } from '@wordpress/keycodes'; -function unConvertOpacity(value) { - let val = 100; - if (value) { - val = value * 100; - } - return val; -} -// eslint-disable-next-line camelcase -const ColorSelectorSVGIcon = () => ( - - - -); -export default function InlinePopColorControl({ - label, - opacityValue = '', - opacityUnit = '', - onOpacityChange = null, - value, - onChange, - reload, - reloaded, - defaultValue, - onClassChange, - onArrayChange = null, -}) { - const [classSat, setClassSat] = useState('first'); - const [currentColor, setCurrentColor] = useState(''); - const [currentOpacity, setCurrentOpacity] = useState(opacityValue !== '' ? opacityValue : 1); - const [isPalette, setIsPalette] = useState(value && value.startsWith('palette') ? true : false); - const allColors = useSetting('color.palette'); - - // Get Kadence Blocks color configuration - const kadenceColors = useMemo(() => { - if (typeof kadence_blocks_params !== 'undefined' && kadence_blocks_params.colors) { - try { - return JSON.parse(kadence_blocks_params.colors); - } catch (e) { - return { palette: [], override: false }; - } - } - return { palette: [], override: false }; - }, []); - - // Filter colors based on override setting - const colors = useMemo(() => { - if (!allColors || !Array.isArray(allColors)) { - return []; - } - - // If override is enabled, only show custom colors (kb-palette colors) - if (kadenceColors.override === true) { - return allColors.filter((color) => color.slug && color.slug.startsWith('kb-palette')); - } - - // If override is disabled, show all colors (theme + custom) - return allColors; - }, [allColors, kadenceColors.override]); - if (reload) { - reloaded(true); - setTimeout(() => { - setCurrentColor(''); - setCurrentOpacity(''); - setIsPalette(false); - }, 100); - } - const convertOpacity = (value) => { - let val = 1; - if (value) { - val = value / 100; - } - return val; - }; - const convertedOpacityValue = 100 === opacityUnit ? convertOpacity(currentOpacity) : currentOpacity; - const colorVal = currentColor ? currentColor : value; - const paletteIndex = isPalette && colors && colorVal ? colorVal.match(/\d+$/)?.[0] - 1 : null; - let currentColorString = paletteIndex !== null && colors[paletteIndex] ? colors[paletteIndex].color : colorVal; - if (!isPalette && currentColorString && currentColorString.startsWith('var(')) { - currentColorString = window - .getComputedStyle(document.documentElement) - .getPropertyValue(value.replace('var(', '').split(',')[0].replace(')', '')); - } - if (currentColorString && currentColorString.startsWith('var(')) { - let temp_currentColorString = window - .getComputedStyle(document.documentElement) - .getPropertyValue(currentColorString.replace('var(', '').replace(' ', '').replace(')', '')); - if ('' === temp_currentColorString) { - temp_currentColorString = window - .getComputedStyle(document.documentElement) - .getPropertyValue( - currentColorString.replace('var(', '').replace(' ', '').split(',')[0].replace(')', '') - ); - } - currentColorString = temp_currentColorString; - } - if ('' === currentColorString) { - currentColorString = defaultValue; - } - // if ( '' !== currentColorString && this.props.onOpacityChange && ! this.state.isPalette ) { - // currentColorString = hexToRGBA( ( undefined === currentColorString ? '' : currentColorString ), ( convertedOpacityValue !== undefined && convertedOpacityValue !== '' ? convertedOpacityValue : 1 ) ); - // } - if (onOpacityChange && !isPalette) { - if ( - Number(convertedOpacityValue !== undefined && convertedOpacityValue !== '' ? convertedOpacityValue : 1) !== - 1 - ) { - currentColorString = hexToRGBA( - undefined === currentColorString ? '' : currentColorString, - convertedOpacityValue !== undefined && convertedOpacityValue !== '' ? convertedOpacityValue : 1 - ); - } - } - let previewColorString = currentColorString; - if (isPalette && colorVal) { - switch (colorVal) { - case 'palette1': - previewColorString = 'var(--global-palette1,#2B6CB0)'; - break; - case 'palette2': - previewColorString = 'var(--global-palette2,#215387)'; - break; - case 'palette3': - previewColorString = 'var(--global-palette3,#1A202C)'; - break; - case 'palette4': - previewColorString = 'var(--global-palette4,#2D3748)'; - break; - case 'palette5': - previewColorString = 'var(--global-palette5,#4A5568)'; - break; - case 'palette6': - previewColorString = 'var(--global-palette6,#718096)'; - break; - case 'palette7': - previewColorString = 'var(--global-palette7,#EDF2F7)'; - break; - case 'palette8': - previewColorString = 'var(--global-palette8,#F7FAFC)'; - break; - case 'palette9': - previewColorString = 'var(--global-palette9,#ffffff)'; - break; - } - } - const onChangeState = (tempColor, tempPalette) => { - let newColor; - let opacity = 100 === opacityUnit ? 100 : 1; - if (tempPalette) { - newColor = tempPalette; - } else if (undefined !== tempColor.rgb && undefined !== tempColor.rgb.a && 1 !== tempColor.rgb.a) { - if (onOpacityChange) { - if (tempColor.hex === 'transparent') { - newColor = '#000000'; - } else { - newColor = tempColor.hex; - } - opacity = 100 === opacityUnit ? unConvertOpacity(tempColor.rgb.a) : tempColor.rgb.a; - } else { - newColor = - 'rgba(' + - tempColor.rgb.r + - ',' + - tempColor.rgb.g + - ',' + - tempColor.rgb.b + - ',' + - tempColor.rgb.a + - ')'; - } - } else if (undefined !== tempColor.hex) { - newColor = tempColor.hex; - } else { - newColor = tempColor; - } - setCurrentColor(newColor); - setCurrentOpacity(opacity); - setIsPalette(tempPalette ? true : false); - }; - const onChangeComplete = (tempColorCom, tempPalettCom) => { - let newColor; - let opacity = 100 === opacityUnit ? 100 : 1; - if (tempPalettCom) { - newColor = tempPalettCom; - } else if (undefined !== tempColorCom.rgb && undefined !== tempColorCom.rgb.a && 1 !== tempColorCom.rgb.a) { - if (onOpacityChange) { - if (tempColorCom.hex === 'transparent') { - newColor = '#000000'; - } else { - newColor = tempColorCom.hex; - } - opacity = 100 === opacityUnit ? unConvertOpacity(tempColorCom.rgb.a) : tempColorCom.rgb.a; - } else { - newColor = - 'rgba(' + - tempColorCom.rgb.r + - ',' + - tempColorCom.rgb.g + - ',' + - tempColorCom.rgb.b + - ',' + - tempColorCom.rgb.a + - ')'; - } - } else if (undefined !== tempColorCom.hex) { - newColor = tempColorCom.hex; - } else { - newColor = tempColorCom; - } - setCurrentColor(newColor); - setCurrentOpacity(opacity); - setIsPalette(tempPalettCom ? true : false); - if (null !== onArrayChange) { - onArrayChange(newColor, opacity); - } else { - onChange(newColor); - if (null !== onOpacityChange) { - setTimeout(() => { - onOpacityChange(opacity); - }, 50); - } - } - }; - const renderToggleComponent = - () => - ({ onToggle, isOpen }) => { - const openOnArrowDown = (event) => { - if (!isOpen && event.keyCode === DOWN) { - event.preventDefault(); - event.stopPropagation(); - onToggle(); - } - }; - return ( - - - - )} - renderContent={() => ( -
- {classSat === 'first' && ( - onChangeState(color, '')} - onChangeComplete={(color) => { - onChangeComplete(color, ''); - if (onClassChange) { - onClassChange(''); - } - }} - /> - )} - {classSat !== 'first' && ( - onChangeState(color, '')} - onChangeComplete={(color) => { - onChangeComplete(color, ''); - if (onClassChange) { - onClassChange(''); - } - }} - /> - )} - {colors && ( -
- {map(colors, ({ color, slug, name }) => { - const style = { color }; - const palette = slug.replace('theme-', ''); - const isActive = - palette === value || (!slug.startsWith('theme-palette') && value === color); - return ( -
- -
- ); - })} -
- )} -
- )} - /> - ); -} diff --git a/src/packages/components/src/inspector-control-tabs/editor.scss b/src/packages/components/src/inspector-control-tabs/editor.scss deleted file mode 100644 index 44a026be0..000000000 --- a/src/packages/components/src/inspector-control-tabs/editor.scss +++ /dev/null @@ -1,112 +0,0 @@ -$color-gray-200: #edf2f7; -$color-gray-300: #e2e8f0; -$color-gray-400: #cbd5e0; -$color-gray-500: #a0aec0; -$color-gray-600: #718096; -$color-gray-700: #4a5568; -$color-gray-800: #2d3748; -.kadence-blocks-inspector-tabs { - display: flex; - //margin-bottom: -1px; - div { - background: #efefef; - border: 1px solid #333; - } - - button { - display: flex; - flex: 1; - flex-direction: column; - align-items: center; - justify-content: center; - background-color: #fff; - height: 75px; - color: #4a5568; - line-height: 1.8; - border: 0; - background: #edf2f7; - border-top: 1px solid #cbd5e0; - //border-bottom: 1px solid #e0e0e0; - svg { - fill: currentColor; - } - &:hover { - color: #2d3748; - } - } - - .is-active { - box-shadow: inset 0 -3px 0px 0px var(--wp-admin-theme-color, #00669b); - //background-color: #f0f0f0; - color: #2d3748; - background: white; - //border-bottom: 3px solid var(--wp-admin-theme-color, #00669b); - svg { - // color: var(--wp-admin-theme-color, #00669b); - } - } -} - -[data-kadence-hide-advanced="true"] { - .block-editor-block-inspector__advanced { - display: none; - } -} -.components-panel[data-kadence-hide-advanced] .block-editor-block-card__description { - display: none; -} -.components-panel[data-kadence-hide-advanced] .block-editor-block-card__content .block-editor-block-card__title { - margin: 0; -} -.components-panel[data-kadence-hide-advanced] .block-editor-block-card__content { - margin: 0; -} -.components-panel[data-kadence-hide-advanced] .block-editor-block-inspector .components-panel__body { - border-color: #cbd5e0; -} -.components-panel[data-kadence-hide-advanced] .components-base-control__label { - font-size: inherit; - text-transform: inherit; -} - -// Hover Tab Styles -.components-panel__body { - .kt-hover-tabs { - padding-top: 0; - } - .kt-hover-tabs .components-tab-panel__tabs { - margin-bottom: 15px; - border: 0; - } - .kt-hover-tabs .components-tab-panel__tabs button { - border: 1px solid #cbd5e0; - height: 34px; - padding: 4px 5px 4px; - color: #575757; - font-weight: normal; - margin: 0; - width: 50%; - background: transparent; - box-shadow: none !important; - color: #4a5568; - } - .kt-hover-tabs .components-tab-panel__tabs button.active-tab { - box-shadow: none; - color: #2d3748; - background: rgba(0, 0, 0, 0.04); - background: #edf2f7; - border-color: var(--wp-admin-theme-color, #00669b); - } -} - -//extra highlighting for panels opened within panels -.components-panel__body .components-panel__body.is-opened { - border-bottom-right-radius: 10px; - border-bottom-left-radius: 10px; - overflow: auto; - background: #efefef; - - .components-panel__body-title:hover { - background-color: #d5d5d5; - } -} diff --git a/src/packages/components/src/inspector-control-tabs/index.js b/src/packages/components/src/inspector-control-tabs/index.js deleted file mode 100644 index 0ad0d885c..000000000 --- a/src/packages/components/src/inspector-control-tabs/index.js +++ /dev/null @@ -1,128 +0,0 @@ -/** - * Inspector Controls - * - */ - -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import classnames from 'classnames'; -import { Icon } from '@wordpress/components'; -import { compose } from '@wordpress/compose'; -import { withSelect, withDispatch } from '@wordpress/data'; -import { createRef, useEffect } from '@wordpress/element'; -import { - blockDefault, - brush, - settings, -} from '@wordpress/icons'; -import './editor.scss'; - -function InspectorControlTabs( { allowedTabs = null, activeTab, setActiveTab, openedTab, toggleOpened, tabs = null } ) { - - const defaultTabs = [ - { - key : 'general', - title: __( 'General', 'kadence-blocks' ), - icon : blockDefault, - }, - { - key : 'style', - title: __( 'Style', 'kadence-blocks' ), - icon : brush, - }, - { - key : 'advanced', - title: __( 'Advanced', 'kadence-blocks' ), - icon : settings, - }, - ]; - - const tabKeys = [ 'general', 'style', 'advanced' ]; - const allowedTabKeys = allowedTabs ? allowedTabs : tabKeys; - const tabsMap = tabs ? tabs : defaultTabs; - const tabsContainer = createRef(); - - let componentsPanel; - - useEffect( () => { - componentsPanel = tabsContainer.current.closest( '.components-panel' ); - } ); - - if ( activeTab !== openedTab ) { - setActiveTab( openedTab ); - } - - const setDataAttr = ( key ) => { - if ( componentsPanel ) { - componentsPanel.setAttribute( 'data-kadence-hide-advanced', ( key !== 'advanced' ) ); - componentsPanel.setAttribute( 'data-kadence-active-tab', key ); - } - }; - - const switchTab = ( key ) => { - toggleOpened( key ); - setActiveTab( key ); - }; - - useEffect( () => { - setDataAttr( activeTab ); - return () => { - - if( componentsPanel ) { - const kadenceInspectorTabs = componentsPanel.querySelector( - '.kadence-blocks-inspector-tabs' - ); - - if( ! kadenceInspectorTabs || null === kadenceInspectorTabs ) { - componentsPanel.removeAttribute( 'data-kadence-hide-advanced' ); - componentsPanel.removeAttribute( 'data-kadence-active-tab' ); - } - } - }; - - - }, [ activeTab ] ); - - return ( -
- {tabsMap.map( ( { - key, title, icon, - }, i ) => { - if ( allowedTabKeys.includes( key ) ) { - return ( - - ); - } - } )} -
- ); -} - -export default compose( [ - withSelect( ( select, ownProps ) => { - const initialOpen = ( undefined !== ownProps.initialOpen ? ownProps.initialOpen : 'general' ); - return { - openedTab: select( 'kadenceblocks/data' ).getOpenSidebarTabKey( ownProps.panelName + select( 'core/block-editor' ).getSelectedBlockClientId(), initialOpen ), - }; - } ), - withDispatch( ( dispatch, ownProps, { select } ) => { - const { getSelectedBlockClientId } = select( 'core/block-editor' ); - - return { - toggleOpened: ( key ) => { - dispatch( 'kadenceblocks/data' ).switchEditorTabOpened( ownProps.panelName + getSelectedBlockClientId(), key ); - }, - }; - } ), -] )( InspectorControlTabs ); diff --git a/src/packages/components/src/inspector-controls/index.js b/src/packages/components/src/inspector-controls/index.js deleted file mode 100644 index 2895c0f8b..000000000 --- a/src/packages/components/src/inspector-controls/index.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * WordPress dependencies - */ -import {InspectorControls} from '@wordpress/block-editor'; -import {showSettings} from '@kadence/helpers'; - -function KadenceInspectorControls({ - children, - blockSlug = false, - settingSlug = 'allSettings' - } ) { - - /* If the block slug is set, check the panel name against the allowed settings for the user */ - if ( blockSlug !== false && ! showSettings( settingSlug, blockSlug ) ) { - return null; - } - - return ( - - {children} - - ) -} - -export default KadenceInspectorControls; - diff --git a/src/packages/components/src/links/dynamic-link-control/index.js b/src/packages/components/src/links/dynamic-link-control/index.js deleted file mode 100644 index 1bccf545e..000000000 --- a/src/packages/components/src/links/dynamic-link-control/index.js +++ /dev/null @@ -1,83 +0,0 @@ - /** - * External Dependencies - */ - import { debounce } from 'lodash'; - - /** - * WordPress dependencies - */ - import { __ } from '@wordpress/i18n'; - import { Fragment, Component, createRef } from '@wordpress/element'; - import { Button, withFilters, Popover, ExternalLink } from '@wordpress/components'; - - /** - * Internal Dependencies - */ - - /** - * Build the Dynamic Link controls - */ -class DynamicLinkControl extends Component { - constructor() { - super( ...arguments ); - - this.toggle = this.toggle.bind( this ); - this.state = { - open: false, - }; - this.popRef = createRef(); - this.debouncedToggle = debounce( this.toggle.bind( this ), 100 ); - } - toggle() { - this.setState( { open: ! this.state.open } ); - } - render() { - const { open } = this.state; - - // @todo: Replace with icon from @kadence/icons once created - const icons = {}; - icons.dynamic = - - ; - - return ( - - - ) ) } - - - ); - } - return null; - } - } - - export default compose( - withSafeTimeout, - withInstanceId - )( InputSearch ); diff --git a/src/packages/components/src/links/link-control/editor.scss b/src/packages/components/src/links/link-control/editor.scss deleted file mode 100644 index 2f7c6fd53..000000000 --- a/src/packages/components/src/links/link-control/editor.scss +++ /dev/null @@ -1,186 +0,0 @@ -.kb-dynamic-popover-inner-wrap { - min-width: 280px; - padding: 20px; - h2 { - font-size: 13px; - margin-top: 1em; - margin-bottom: 0.3em; - } -} -.kb-dynamic-menu.has-icon svg { - width: 20px; -} -.kb-side-link-control .kb-search-selection-name .kb-search-url-clear.has-icon { - position: absolute; - top: 0; - right: 28px; - z-index: 1; - display: block; -} -.block-editor-block-toolbar .components-toolbar .components-button.kb-dynamic-menu.has-icon svg { - width: 20px; - min-width: 20px; -} -.block-editor-block-toolbar .components-toolbar .components-button.kb-dynamic-menu:first-child, -.block-editor-block-toolbar .components-toolbar .components-button.kb-dynamic-menu:last-child { - min-width: 48px; - padding-left: 12px; - padding-right: 12px; -} -.block-editor-block-toolbar .components-toolbar .components-button.kb-dynamic-menu:first-child:before, -.block-editor-block-toolbar .components-toolbar .components-button.kb-dynamic-menu:last-child:before { - left: 8px; - right: 8px; -} -.kb-pro-notice { - padding: 12px; -} -.kb-pro-notice h2 { - margin-top: 0; -} -.kb-side-link-control { - .components-base-control { - margin: 0; - } - .kb-search-selection-name { - display: flex; - flex-grow: 1; - max-width: calc(100% - 30px); - .components-base-control__field { - margin: 0; - display: flex; - flex-grow: 1; - border: 1px solid var(--kb-border-color, #859cb6); - max-width: 100%; - position: relative; - .components-spinner { - position: absolute; - right: 30px; - top: 9px; - margin: 0; - } - } - } - .kb-search-url-input { - display: flex; - width: 100%; - input { - border: 0; - border-radius: 0; - padding-right: 30px; - width: 100%; - } - } - .kb-search-selection-name .kb-search-url-submit.has-icon { - position: absolute; - top: 0; - right: 0; - z-index: 1; - display: block; - } - .kb-side-link-control-inner-row .kb-search-selection-name .components-button.has-icon { - border: 0; - height: 36px; - } - &.has-dynamic-support .kb-search-selection-name { - flex-grow: 1; - } - .kb-side-link-control-inner-row { - display: flex; - max-width: 100%; - .components-button.has-icon { - border: 1px solid var(--kb-border-color, #859cb6); - border-left: 0; - height: 38px; - border-radius: 0; - } - .components-button.has-icon { - min-width: 28px; - padding: 6px; - } - .components-button svg { - height: 16px; - width: 16px; - } - } - .components-external-link { - margin: 7px; - flex-grow: 1; - flex-shrink: 1; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - min-width: 50px; - max-width: 500px; - } - .block-editor-format-toolbar__link-container-content { - display: flex; - flex-grow: 1; - border: 1px solid var(--kb-border-color, #859cb6); - max-width: 100%; - } - .kb-search-selection-suggestions { - margin: 0; - padding: 0px 0px; - max-height: 200px; - overflow-y: auto; - .kb-search-selection-suggestion { - position: relative; - display: flex; - align-items: center; - font-size: 13px; - cursor: pointer; - background: #fff; - width: 100%; - border: none; - text-align: left; - padding: 8px 6px; - border-radius: 0px; - height: auto; - &:focus, - &:hover { - background-color: #eee; - } - } - .kb-search-selection-search-item-header { - display: block; - margin-right: 8px; - overflow: hidden; - white-space: nowrap; - } - .kb-search-selection-search-item-title { - overflow: hidden; - text-overflow: ellipsis; - padding-right: 24px; - display: block; - margin-bottom: 0.2em; - font-weight: 500; - position: relative; - mark { - font-weight: 700; - color: #000; - background-color: transparent; - } - } - .kb-search-selection-search-item-info { - display: block; - color: #757575; - font-size: 0.9em; - line-height: 1.3; - } - .kb-search-selection-search-item-type { - display: block; - padding: 3px 8px; - margin-left: auto; - font-size: 0.9em; - background-color: #f0f0f0; - border-radius: 2px; - } - } -} -.kb-side-link-control .kb-side-link-control-inner-row .components-button.kb-dynamic-url-sidebar.has-icon { - border-left: 0; -} -.components-toolbar-group .components-button.kb-dynamic-menu.has-icon svg { - min-width: 18px; -} diff --git a/src/packages/components/src/links/link-control/index.js b/src/packages/components/src/links/link-control/index.js deleted file mode 100644 index 6c332d6c8..000000000 --- a/src/packages/components/src/links/link-control/index.js +++ /dev/null @@ -1,192 +0,0 @@ -/** - * External dependencies - */ - import classnames from 'classnames'; - /** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n'; -import { Fragment, Component } from '@wordpress/element'; -import { ToggleControl, TextControl, SelectControl } from '@wordpress/components'; -import { LEFT, RIGHT, UP, DOWN, BACKSPACE, ENTER } from '@wordpress/keycodes'; - /** - * Import Css - */ - import './editor.scss'; - /** - * Internal dependencies - */ -import InputSearch from '../input-search'; - - /** - * Build the typography controls - * @returns {object} typography settings. - */ -class URLInputControl extends Component { - constructor() { - super( ...arguments ); - this.state = { - isEditingLink: false, - isSettingsExpanded: false, - urlInput: null, - }; - } - render() { - const { label, - onChangeUrl, - url, - additionalControls = true, - opensInNewTab, - onChangeTarget, - linkNoFollow, - onChangeFollow, - linkSponsored, - onChangeSponsored, - linkDownload, - onChangeDownload, - linkTitle, - onChangeTitle, - onChangeLinkClass, - linkClass, - changeTargetType = false, - allowClear = false, - dynamicAttribute = '' } = this.props; - const { urlInput, isEditingLink, isSettingsExpanded } = this.state; - const stopPropagation = ( event ) => { - event.stopPropagation(); - }; - - const stopPropagationRelevantKeys = ( event ) => { - if ( [ LEFT, DOWN, RIGHT, UP, BACKSPACE, ENTER ].indexOf( event.keyCode ) > -1 ) { - // Stop the key event from propagating up to ObserveTyping.startTypingInTextField. - event.stopPropagation(); - } - }; - - const stopEditLink = () => { - this.setState( { isEditingLink: false } ); - }; - const setUrlInput = ( value ) => { - this.setState( { urlInput: value } ); - }; - const toggleSettingsVisibility = () => { - this.setState( { isSettingsExpanded: ! isSettingsExpanded } ); - }; - - const onSubmitLinkChange = ( url ) => { - onChangeUrl( url ); - }; - const onSetNewTab = ( value ) => { - onChangeTarget( value ); - }; - - const onSetLinkNoFollow = ( value ) => { - onChangeFollow( value ); - }; - - const onSetLinkSponsored = ( value ) => { - onChangeSponsored( value ); - }; - - const onSetLinkDownload = ( value ) => { - onChangeDownload( value ); - }; - const onSetLinkTitle = ( value ) => { - onChangeTitle( value ); - }; - const onSetLinkClass = ( value ) => { - onChangeLinkClass( value ); - }; - - const advancedOptions = ( - - { onChangeTarget && ( - - { changeTargetType && ( - - - { opensInNewTab === 'video' && ( -

{ __( 'NOTE: Video popup only works with youtube and vimeo links.', 'kadence-blocks' ) }

- ) } -
- ) } - { ! changeTargetType && ( - - ) } -
- ) } - { onChangeFollow && ( - - ) } - { onChangeSponsored && ( - - ) } - { onChangeDownload && ( - - ) } - { onChangeLinkClass && ( - - ) } -
- ); - const linkEditorValue = urlInput !== null ? urlInput : url; - return ( -
- { label && ( - - ) } - onSubmitLinkChange( url ) } - attributes={ this.props.attributes } - dynamicAttribute={ dynamicAttribute } - additionalControls={ additionalControls } - advancedOptions={ advancedOptions } - isSettingsExpanded={ isSettingsExpanded } - onExpandSettings={ toggleSettingsVisibility } - allowClear={ allowClear } - { ...this.props } - /> - { onChangeTitle && ( - - ) } -
- ); - } - }; - export default URLInputControl; diff --git a/src/packages/components/src/links/text-highlight/index.js b/src/packages/components/src/links/text-highlight/index.js deleted file mode 100644 index 5eac801e9..000000000 --- a/src/packages/components/src/links/text-highlight/index.js +++ /dev/null @@ -1,29 +0,0 @@ - -/** - * External dependencies - */ -import { escapeRegExp } from 'lodash'; - - /** - * WordPress dependencies - */ - import { createInterpolateElement } from '@wordpress/element'; - - const TextHighlight = ( { text = '', highlight = '' } ) => { - const trimmedHighlightText = highlight.trim(); - - if ( ! trimmedHighlightText ) { - return text; - } - - const regex = new RegExp( - `(${ escapeRegExp( trimmedHighlightText ) })`, - 'gi' - ); - - return createInterpolateElement( text.replace( regex, '$&' ), { - mark: , - } ); - }; - - export default TextHighlight; \ No newline at end of file diff --git a/src/packages/components/src/measurement-range-control/constants.js b/src/packages/components/src/measurement-range-control/constants.js deleted file mode 100644 index f008eca57..000000000 --- a/src/packages/components/src/measurement-range-control/constants.js +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Internal block libraries - */ - import { __ } from '@wordpress/i18n'; -export const OPTIONS_MAP = [ - { - value: '0', - label: __( 'None', 'kadence-blocks' ), - size: 0, - name: __( 'None', 'kadence-blocks' ), - }, - { - value: 'xxs', - output: 'var(--global-kb-spacing-xxs, 0.5rem)', - size: 8, - label: __( 'XXS', 'kadence-blocks' ), - name: __( '2X Small', 'kadence-blocks' ), - }, - { - value: 'xs', - output: 'var(--global-kb-spacing-xs, 1rem)', - size: 16, - label: __( 'XS', 'kadence-blocks' ), - name: __( 'X Small', 'kadence-blocks' ), - }, - { - value: 'sm', - output: 'var(--global-kb-spacing-sm, 1.5rem)', - size: 24, - label: __( 'SM', 'kadence-blocks' ), - name: __( 'Small', 'kadence-blocks' ), - }, - { - value: 'md', - output: 'var(--global-kb-spacing-md, 2rem)', - size: 32, - label: __( 'MD', 'kadence-blocks' ), - name: __( 'Medium', 'kadence-blocks' ), - }, - { - value: 'lg', - output: 'var(--global-kb-spacing-lg, 3rem)', - size: 48, - label: __( 'LG', 'kadence-blocks' ), - name: __( 'Large', 'kadence-blocks' ), - }, - { - value: 'xl', - output: 'var(--global-kb-spacing-xl, 4rem)', - size: 64, - label: __( 'XL', 'kadence-blocks' ), - name: __( 'X Large', 'kadence-blocks' ), - }, - { - value: 'xxl', - output: 'var(--global-kb-spacing-xxl, 5rem)', - size: 80, - label: __( 'XXL', 'kadence-blocks' ), - name: __( '2X Large', 'kadence-blocks' ), - }, - { - value: '3xl', - output: 'var(--global-kb-spacing-3xl, 6.5rem)', - size: 104, - label: __( '3XL', 'kadence-blocks' ), - name: __( '3X Large', 'kadence-blocks' ), - }, - { - value: '4xl', - output: 'var(--global-kb-spacing-4xl, 8rem)', - size: 128, - label: __( '4XL', 'kadence-blocks' ), - name: __( '4X Large', 'kadence-blocks' ), - }, - { - value: '5xl', - output: 'var(--global-kb-spacing-5xl, 10rem)', - size: 160, - label: __( '5XL', 'kadence-blocks' ), - name: __( '5X Large', 'kadence-blocks' ), - }, -]; \ No newline at end of file diff --git a/src/packages/components/src/measurement-range-control/editor.scss b/src/packages/components/src/measurement-range-control/editor.scss deleted file mode 100644 index 3a249c4ad..000000000 --- a/src/packages/components/src/measurement-range-control/editor.scss +++ /dev/null @@ -1,259 +0,0 @@ -.components-base-control > .kadence-component__header { - margin-bottom: 6px; - color: #1e1e1e; - font-size: 13px; - font-weight: 400; - gap: 2px; - display:flex; - .kadence-component__header__title { - flex-grow: 1; - display: flex; - align-items: center; - } - .title-reset-wrap { - width: 20px; - overflow: hidden; - } - .components-button.is-small.has-icon.is-reset { - background: transparent; - height: auto; - border: 0; - box-shadow: none; - padding: 2px 4px; - outline: 0; - color: #A0AEC0; - font-size: 18px; - width: 20px; - min-width: 20px; - padding: 0; - margin: 0 0 0 -20px; - display: flex; - height: 18px; - } - .kadence-component__header__title:hover { - .components-button.is-small.has-icon.is-reset { - margin: 0 0px 0 0px; - } - } - .components-button.has-icon.kadence-control-toggle { - background: transparent; - height: auto; - border: 0; - box-shadow: none; - padding: 2px 4px; - margin-bottom: 0; - outline: 0; - color: #A0AEC0; - width: auto; - font-size: 18px; - min-width: 0; - svg { - width: 1em; - height: 1em; - } - } -} - -.kadence-controls-content .components-spacing-sizes-control__range-control { - flex-grow: 1; -} -.component-spacing-sizes-control.kadence-measure-range-control { - display: block; - padding: 0; -} -.component-spacing-sizes-control .kadence-controls-content .components-spacing-sizes-control__range-control { - flex-grow: 1; -} -.kadence-measure-range-control .kadence-single-measure-range-control { - flex: 1; - display: block; - margin: 0; - padding: 0; -} -.kadence-measure-range-control .kadence-single-measure-range-control .kadence-controls-content { - display: block; - margin: 0; - padding: 0; - align-items: center; -} -.kadence-measure-range-control .kadence-single-measure-range-control .kadence-controls-content .kadence-popover-spacing-btn { - border: 1px solid var(--kb-border-color, #859CB6 ); - background: transparent; - color: inherit; - padding: 0px; - text-align: left; - width: 100%; - box-shadow: none; - display: block; - height: auto; - .kadence-spacing-btn-val { - display: block; - height: 30px; - line-height: 22px; - padding: 4px; - } -} -.kadence-measure-range-control > .kadence-controls-content { - gap:2px; -} -.kadence-measure-range-control > .kadence-radio-range__header .components-flex-item { - flex-grow: 1; -} -.kadence-measure-range-control > .kadence-radio-range__header .components-button.is-small.has-icon { - background: transparent; - height: auto; - border: 0; - box-shadow: none; - padding: 2px 4px; - margin-bottom: 0; - outline: 0; - color: #A0AEC0; - width: auto; - font-size: 18px; - min-width: 0; - svg { - width: 1em; - height: 1em; - } - &.is-pressed { - background:var(--wp-admin-theme-color, #00669b); - color:white; - } -} - -.kadence-measure-range-control { - .kadence-spacing-btn-placeholder { - opacity: .4; - } - .kadence-range-popover-settings .components-base-control__field { - margin-bottom: 0; - } - .kadence-range-popover-settings .components-range-control__wrapper { - margin-bottom: 0; - } - .components-unit-control-wrapper .components-input-control .components-input-control__label, .kadence-placement-label { - width: 100%; - height: 16px; - padding: 0; - line-height: 15px; - font-size: 7px !important; - margin: 0; - font-weight: 500; - display: block; - border: 0; - border-bottom: 1px solid var(--kb-border-color, #859CB6 ); - border-radius: 0; - text-align: center; - text-transform: uppercase; - } - .components-unit-control-wrapper > .components-input-control { - gap: 0; - .components-input-control__input { - padding-left: 4px; - padding-right: 4px; - } - } - .components-unit-control-wrapper .components-input-control > .components-flex-item { - max-width: 100%; - } - .components-unit-control-wrapper { - border: 1px solid var(--kb-border-color, #859CB6 ); - border-radius: 2px; - .components-input-control__container { - .components-input-control__backdrop { - border: 0; - border-radius: 0; - } - } - } - .kadence-single-measure-range-control.kb-measure-box-left { - .components-unit-control-wrapper .components-input-control__backdrop, .kadence-spacing-btn-val { - box-shadow: inset 2px 0 var(--kb-border-color, #859CB6 ); - } - } - .kadence-single-measure-range-control.kb-measure-box-top{ - .components-unit-control-wrapper .components-input-control__backdrop, .kadence-spacing-btn-val { - box-shadow: inset 0px 2px var(--kb-border-color, #859CB6 ); - } - } - .kadence-single-measure-range-control.kb-measure-box-right { - .components-unit-control-wrapper .components-input-control__backdrop, .kadence-spacing-btn-val { - box-shadow: inset -2px 0px var(--kb-border-color, #859CB6 ); - } - } - .kadence-single-measure-range-control.kb-measure-box-bottom { - .components-unit-control-wrapper .components-input-control__backdrop, .kadence-spacing-btn-val { - box-shadow: inset 0px -2px var(--kb-border-color, #859CB6 ); - } - } - .kadence-measure-control-select { - appearance: none; - background: transparent; - border-radius: 0px 2px 2px 0px; - display: block; - outline: none; - margin: 0px; - min-height: auto; - font-family: inherit; - box-sizing: border-box; - padding: 2px 1px; - width: 20px; - color: rgb(47, 47, 47); - font-size: 10px; - line-height: 1; - letter-spacing: -0.5px; - text-transform: uppercase; - text-align-last: center; - height: 100%; - border: 1px solid var(--kb-border-color, #859CB6 ); - transition: box-shadow 0.1s linear 0s, border 0.1s linear 0s; - cursor: pointer; - &:not(:disabled):hover { - background-color: #EDF2F7; - } - &:focus { - border: 1px solid var( --wp-admin-theme-color-darker-10, #006ba1); - box-shadow: inset 0 0 0 1px var( --wp-admin-theme-color-darker-10, #006ba1); - outline-offset: 0px; - outline: transparent solid 2px; - z-index: 1; - } - &:disabled { - background-image: none; - } - } -} -.kadence-measure-range-control .kadence-single-measure-range-control.kb-measure-input-all-inputs .kadence-single-unit-control { - display: flex; - .components-unit-control-wrapper { - flex: 1; - } -} -.kadence-range-popover-settings-inner { - display: flex; - flex-direction: row; - align-items: flex-end; - gap: 8px; -} - -.kadence-range-popover-settings-inner .components-base-control.components-range-control.components-spacing-sizes-control__range-control { - flex-grow: 1; -} - -.kadence-range-popover-settings-inner .components-button.is-secondary { - height:30px; - min-height:30px; - margin-bottom:8px -} -.kadence-measure-range-control .kadence-single-measure-range-control.kb-measure-input-all-inputs .kadence-measure-control-select-wrapper { - height: 32px; -} -.kadence-range-popover-settings-inner .components-range-control .components-range-control__wrapper { - margin-bottom: 0; -} -.kadence-range-popover-settings-inner .components-range-control .components-base-control__field { - margin-bottom: 0; -} -.kadence-measure-range-control .kadence-single-measure-range-control.kb-measure-input-all-inputs .kadence-measure-control-select-wrapper .kadence-measure-control-select { - width: 26px; -} \ No newline at end of file diff --git a/src/packages/components/src/measurement-range-control/index.js b/src/packages/components/src/measurement-range-control/index.js deleted file mode 100644 index da3e99ff4..000000000 --- a/src/packages/components/src/measurement-range-control/index.js +++ /dev/null @@ -1,350 +0,0 @@ -/** - * Range Control - * - */ -/** - * WordPress dependencies - */ - import { useInstanceId } from '@wordpress/compose'; - import { useState, useEffect } from '@wordpress/element'; - import SingleMeasureRangeControl from './single-control'; - import { map, isEqual } from 'lodash'; - import { undo, settings, link, linkOff } from '@wordpress/icons'; -/** - * Import Css - */ -import './editor.scss'; -/** - * Internal block libraries - */ - import { __ } from '@wordpress/i18n'; -import { - Flex, - FlexBlock, - FlexItem, - Button, - DropdownMenu, - ButtonGroup, - RangeControl as CoreRangeControl, - __experimentalUnitControl as UnitControl -} from '@wordpress/components'; -import { - pxIcon, - emIcon, - remIcon, - vhIcon, - vwIcon, - percentIcon, - outlineTopIcon, - outlineRightIcon, - outlineBottomIcon, - outlineLeftIcon, - individualIcon, - linkedIcon, - topLeftIcon, - topRightIcon, - bottomRightIcon, - bottomLeftIcon, - radiusLinkedIcon, - radiusIndividualIcon -} from '@kadence/icons'; -import { OPTIONS_MAP } from './constants'; -import { isCustomOption, getOptionIndex, getOptionFromSize, getOptionSize } from './utils'; - -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function MeasureRangeControl( { - label, - onChange, - onControl, - value = '', - className = '', - options = OPTIONS_MAP, - step = 1, - max = 200, - min = 0, - beforeIcon = '', - help = '', - placeholder = [ '', '', '', '' ], - defaultValue = [ '', '', '', '' ], - control = 'individual', - unit = '', - onUnit, - units = [ 'px', 'em', 'rem' ], - disableCustomSizes = false, - isBorderRadius= false, - firstIcon = outlineTopIcon, - secondIcon = outlineRightIcon, - thirdIcon = outlineBottomIcon, - fourthIcon = outlineLeftIcon, - linkIcon = link, - unlinkIcon = linkOff, - customControl = false, - setCustomControl = null, - parentLabel = null, - reset, - onMouseOver, - onMouseOut, - allowAuto = false, -} ) { - const measureIcons = { - first: isBorderRadius ? topLeftIcon : firstIcon, - second: isBorderRadius ? topRightIcon : secondIcon, - third: isBorderRadius ? bottomRightIcon : thirdIcon, - fourth: isBorderRadius ? bottomLeftIcon : fourthIcon, - link: isBorderRadius ? radiusLinkedIcon : linkIcon, - unlink: isBorderRadius ? radiusIndividualIcon : unlinkIcon, - } - const [ isCustom, setIsCustom ] = useState( false ); - const [ theControl, setTheControl ] = useState( control ); - const reviewOptions = JSON.parse(JSON.stringify(options)); - reviewOptions.push( { - value: 'ss-auto', - output: 'var(--global-kb-spacing-auto, auto)', - label: __( 'Auto', 'kadence-blocks' ), - size: 0, - name: __( 'Auto', 'kadence-blocks' ), - } ); - useEffect( () => { - setIsCustom( isCustomOption( reviewOptions, value ) ); - }, [] ); - const realIsCustomControl = setCustomControl ? customControl : isCustom; - const realSetIsCustom = setCustomControl ? setCustomControl : setIsCustom; - const onReset = () => { - if ( typeof reset === 'function' ){ - reset(); - } else { - onChange( defaultValue ); - } - } - const onSetIsCustom = () => { - if ( ! realIsCustomControl ) { - const newValue = [ - getOptionSize( options, ( value ? value[ 0 ] : '' ), unit ), - getOptionSize( options, ( value ? value[ 1 ] : '' ), unit ), - getOptionSize( options, ( value ? value[ 2 ] : '' ), unit ), - getOptionSize( options, ( value ? value[ 3 ] : '' ), unit ), - ]; - onChange( newValue ); - } else { - const newValue = [ - getOptionFromSize( options, ( value ? value[ 0 ] : '' ), unit ), - getOptionFromSize( options, ( value ? value[ 1 ] : '' ), unit ), - getOptionFromSize( options, ( value ? value[ 2 ] : '' ), unit ), - getOptionFromSize( options, ( value ? value[ 3 ] : '' ), unit ), - ]; - onChange( newValue ); - } - realSetIsCustom( ! realIsCustomControl ); - } - const realControl = onControl ? control : theControl; - const realSetOnControl = onControl ? onControl : setTheControl; - return [ - onChange && ( -
- { label && ( - - { label && ( -
- - { reset && ( -
-
- ) } -
- ) } - { ! disableCustomSizes && ( -
- ), - ]; -} diff --git a/src/packages/components/src/measurement-range-control/responsive.js b/src/packages/components/src/measurement-range-control/responsive.js deleted file mode 100644 index f3ac7d020..000000000 --- a/src/packages/components/src/measurement-range-control/responsive.js +++ /dev/null @@ -1,397 +0,0 @@ -/** - * Responsive Range Component - * - */ - -/** - * Internal block libraries - */ -import { useSelect, useDispatch } from '@wordpress/data'; -import { useState, useRef, useEffect } from '@wordpress/element'; -import { __ } from '@wordpress/i18n'; -import { map, isEqual } from 'lodash'; -import MeasureRangeControl from './index'; -import { capitalizeFirstLetter, objectSameFill, clearNonMatchingValues } from '@kadence/helpers'; -import { undo, settings, link, linkOff } from '@wordpress/icons'; -/** - * Import Css - */ - import './editor.scss'; -import { - Dashicon, - Button, - ButtonGroup, - Flex, -} from '@wordpress/components'; -import { - outlineTopIcon, - outlineRightIcon, - outlineBottomIcon, - outlineLeftIcon, - topLeftIcon, - topRightIcon, - bottomRightIcon, - bottomLeftIcon, - radiusLinkedIcon, - radiusIndividualIcon, -} from '@kadence/icons'; -import { OPTIONS_MAP } from './constants'; -import { isCustomOption, getOptionIndex, getOptionFromSize, getOptionSize } from './utils'; -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function ResponsiveMeasureRangeControl( { - label, - subLabel, - onChange, - onChangeTablet, - onChangeMobile, - mobileValue, - tabletValue, - value, - onControl, - customControl = false, - control = 'individual', - options = OPTIONS_MAP, - step = 1, - max = 100, - min = 0, - unit = '', - onUnit, - showUnit = false, - units = [ 'px', 'em', 'rem' ], - isBorderRadius = false, - disableCustomSizes = false, - firstIcon = outlineTopIcon, - secondIcon = outlineRightIcon, - thirdIcon = outlineBottomIcon, - fourthIcon = outlineLeftIcon, - linkIcon = link, - unlinkIcon = linkOff, - deskDefault = [ '', '', '', '' ], - tabletDefault = [ '', '', '', '' ], - mobileDefault = [ '', '', '', '' ], - ghostDefault = [ '', '', '', '' ], - reset = true, - setCustomControl = null, - onMouseOver, - onMouseOut, - allowAuto = false, - } ) { - const ref = useRef(); - const measureIcons = { - first: isBorderRadius ? topLeftIcon : firstIcon, - second: isBorderRadius ? topRightIcon : secondIcon, - third: isBorderRadius ? bottomRightIcon : thirdIcon, - fourth: isBorderRadius ? bottomLeftIcon : fourthIcon, - link: isBorderRadius ? radiusLinkedIcon : linkIcon, - unlink: isBorderRadius ? radiusIndividualIcon : unlinkIcon, - } - const [ isCustom, setIsCustom ] = useState( false ); - const [ theControl, setTheControl ] = useState( control ); - const realIsCustomControl = setCustomControl ? customControl : isCustom; - const realSetIsCustom = setCustomControl ? setCustomControl : setIsCustom; - const reviewOptions = JSON.parse(JSON.stringify(options)); - reviewOptions.push( { - value: 'ss-auto', - output: 'var(--global-kb-spacing-auto, auto)', - label: __( 'Auto', 'kadence-blocks' ), - size: 0, - name: __( 'Auto', 'kadence-blocks' ), - } ); - const onSetIsCustom = () => { - convertValueToFromCustomByDeviceType() - - realSetIsCustom( ! realIsCustomControl ); - } - - const convertValueToFromCustomByDeviceType = () => { - if ( deviceType == 'Mobile' ) { - const newValue = convertValueToFromCustom( mobileValue ); - if ( objectSameFill( mobileValue, newValue ) ) { - onChangeMobile( newValue ); - } - } else if ( deviceType == 'Tablet' ) { - const newValue = convertValueToFromCustom( tabletValue ); - if ( objectSameFill( tabletValue, newValue ) ) { - onChangeTablet( newValue ); - } - } else { - const newValue = convertValueToFromCustom( value ); - if ( objectSameFill( value, newValue ) ) { - onChange( newValue ); - } - } - } - - const convertValueToFromCustom = ( valueToConvert ) => { - let convertedValue = []; - //convert to custom - if ( ! realIsCustomControl ) { - convertedValue = [ - getOptionSize( options, ( valueToConvert ? valueToConvert[ 0 ] : '' ), unit ), - getOptionSize( options, ( valueToConvert ? valueToConvert[ 1 ] : '' ), unit ), - getOptionSize( options, ( valueToConvert ? valueToConvert[ 2 ] : '' ), unit ), - getOptionSize( options, ( valueToConvert ? valueToConvert[ 3 ] : '' ), unit ), - ]; - //convert to option - } else { - convertedValue = [ - getOptionFromSize( options, ( valueToConvert ? valueToConvert[ 0 ] : '' ), unit ), - getOptionFromSize( options, ( valueToConvert ? valueToConvert[ 1 ] : '' ), unit ), - getOptionFromSize( options, ( valueToConvert ? valueToConvert[ 2 ] : '' ), unit ), - getOptionFromSize( options, ( valueToConvert ? valueToConvert[ 3 ] : '' ), unit ), - ]; - } - return convertedValue; - } - - const realControl = onControl ? control : theControl; - const realSetOnControl = onControl ? onControl : setTheControl; - const [ deviceType, setDeviceType ] = useState( 'Desktop' ); - const theDevice = useSelect( ( select ) => { - return select( 'kadenceblocks/data' ).getPreviewDeviceType(); - }, [] ); - if ( theDevice !== deviceType ) { - setDeviceType( theDevice ); - } - useEffect( () => { - let valueToCheck = value; - if ( theDevice == 'Tablet' ) { - valueToCheck = tabletValue; - }else if ( theDevice == 'Mobile' ) { - valueToCheck = mobileValue; - } - setIsCustom( isCustomOption( reviewOptions, valueToCheck ) ); - }, [theDevice] ); - - const { - setPreviewDeviceType, - } = useDispatch( 'kadenceblocks/data' ); - const customSetPreviewDeviceType = ( device ) => { - setPreviewDeviceType( capitalizeFirstLetter( device ) ); - setDeviceType( capitalizeFirstLetter( device ) ); - }; - const devices = [ - { - name: 'Desktop', - title: , - itemClass: 'kb-desk-tab', - }, - { - name: 'Tablet', - title: , - itemClass: 'kb-tablet-tab', - }, - { - name: 'Mobile', - key: 'mobile', - title: , - itemClass: 'kb-mobile-tab', - }, - ]; - let liveValue = ( value ? value : [ '', '', '', '' ] ); - if ( deviceType === 'Tablet' ) { - liveValue = ( tabletValue ? tabletValue : [ '', '', '', '' ] ); - } else if ( deviceType === 'Mobile' ) { - liveValue = ( mobileValue ? mobileValue : [ '', '', '', '' ] ); - } - const onReset = () => { - if ( deviceType === 'Tablet' ) { - onChangeTablet( tabletDefault ); - } else if ( deviceType === 'Mobile' ) { - onChangeMobile( mobileDefault ); - } else { - onChange( deskDefault ); - } - } - const mobilePlaceholder = tabletValue ? JSON.parse( JSON.stringify( tabletValue ) ) : [ '', '', '', '' ]; - if ( ! mobilePlaceholder?.[0] ) { - mobilePlaceholder[0] = value?.[0] ? value[0] : ''; - } - if ( ! mobilePlaceholder?.[1] ) { - mobilePlaceholder[1] = value?.[1] ? value[1] : ''; - } - if ( ! mobilePlaceholder?.[2] ) { - mobilePlaceholder[2] = value?.[2] ? value[2] : ''; - } - if ( ! mobilePlaceholder?.[3] ) { - mobilePlaceholder[3] = value?.[3] ? value[3] : ''; - } - const output = {}; - output.Mobile = ( - onChangeMobile( clearNonMatchingValues( mobileValue, size ) ) } - control={ realControl } - onControl={ ( value ) => realSetOnControl( value ) } - setCustomControl={ realSetIsCustom } - customControl={ realIsCustomControl } - options={ options } - defaultValue={ mobileDefault } - min={ min } - max={ max } - step={ step } - unit={ unit } - onUnit={ ( onUnit ? onUnit : undefined ) } - showUnit={ true } - units={ [ unit ] } - isBorderRadius={ isBorderRadius } - firstIcon={ firstIcon } - secondIcon={ secondIcon } - thirdIcon={ thirdIcon } - fourthIcon={ fourthIcon } - linkIcon={ linkIcon } - unlinkIcon={ unlinkIcon } - onMouseOver={ onMouseOver } - onMouseOut={ onMouseOut } - allowAuto={ allowAuto } - /> - ); - output.Tablet = ( - onChangeTablet( clearNonMatchingValues( tabletValue, size ) ) } - control={ realControl } - onControl={ ( value ) => realSetOnControl( value ) } - setCustomControl={ realSetIsCustom } - customControl={ realIsCustomControl } - options={ options } - defaultValue={ tabletDefault } - min={ min } - max={ max } - step={ step } - unit={ unit } - onUnit={ ( onUnit ? onUnit : undefined ) } - showUnit={ true } - units={ [ unit ] } - isBorderRadius={ isBorderRadius } - firstIcon={ firstIcon } - secondIcon={ secondIcon } - thirdIcon={ thirdIcon } - fourthIcon={ fourthIcon } - linkIcon={ linkIcon } - unlinkIcon={ unlinkIcon } - onMouseOver={ onMouseOver } - onMouseOut={ onMouseOut } - allowAuto={ allowAuto } - /> - ); - output.Desktop = ( - onChange( clearNonMatchingValues( value, size ) ) } - control={ realControl } - onControl={ ( value ) => realSetOnControl( value ) } - setCustomControl={ realSetIsCustom } - customControl={ realIsCustomControl } - options={ options } - defaultValue={ deskDefault } - min={ min } - max={ max } - step={ step } - unit={ unit } - onUnit={ ( onUnit ? onUnit : undefined ) } - showUnit={ showUnit } - units={ units } - isBorderRadius={ isBorderRadius } - firstIcon={ firstIcon } - secondIcon={ secondIcon } - thirdIcon={ thirdIcon } - fourthIcon={ fourthIcon } - linkIcon={ linkIcon } - unlinkIcon={ unlinkIcon } - onMouseOver={ onMouseOver } - onMouseOut={ onMouseOut } - allowAuto={ allowAuto } - /> - ); - let currentDefault = deskDefault; - if ( 'Mobile' === deviceType ) { - currentDefault = mobileDefault; - } else if ( 'Mobile' === deviceType ) { - currentDefault = tabletDefault; - } - return [ - onChange && onChangeTablet && onChangeMobile && ( -
- - { label && ( -
- - { reset === true && (realControl !== 'linked' || (realControl === 'linked' && realIsCustomControl === true)) && ( -
-
- ) } -
- ) } - - { map( devices, ( { name, key, title, itemClass } ) => ( - - ) ) } - - { ! disableCustomSizes && ! subLabel && ( -
- ), - ]; -} diff --git a/src/packages/components/src/measurement-range-control/single-control.js b/src/packages/components/src/measurement-range-control/single-control.js deleted file mode 100644 index 21b986a6b..000000000 --- a/src/packages/components/src/measurement-range-control/single-control.js +++ /dev/null @@ -1,343 +0,0 @@ -/** - * Range Control - * - */ -/** - * WordPress dependencies - */ - import { useInstanceId } from '@wordpress/compose'; - import { useState, useEffect } from '@wordpress/element'; -/** - * Import Css - */ -import './editor.scss'; -/** - * Internal block libraries - */ - import { __ } from '@wordpress/i18n'; -import { - Flex, - FlexBlock, - FlexItem, - Button, - DropdownMenu, - Popover, - ButtonGroup, - RangeControl as CoreRangeControl, - __experimentalUnitControl as UnitControl -} from '@wordpress/components'; -import { - pxIcon, - emIcon, - remIcon, - vhIcon, - vwIcon, - percentIcon, -} from '@kadence/icons'; -import { settings, link, linkOff } from '@wordpress/icons'; -import { OPTIONS_MAP } from './constants'; -const icons = { - px: pxIcon, - em: emIcon, - rem: remIcon, - vh: vhIcon, - vw: vwIcon, - percent: percentIcon, -}; -function isCustomOption( optionsArray, value ) { - if ( ! value ) { - return false; - } - if ( ! optionsArray ) { - return false; - } - return ( - ! optionsArray.find( ( option ) => option.value === value ) - ); -} -function getOptionIndex( optionsArray, value ) { - if ( ! value ) { - return; - } - if ( ! optionsArray ) { - return; - } - if ( value === '0' || value === 'default' ) { - return 0; - } - const found = optionsArray.findIndex( ( option ) => option.value === value ); - if ( ! found ) { - return; - } - return found; -} -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function SingleMeasureRangeControl( { - label, - onChange, - value = '', - placeholder = '', - className = '', - options = OPTIONS_MAP, - step = 1, - max = 200, - min = 0, - beforeIcon = '', - help = '', - defaultValue = 0, - unit = '', - onUnit, - units = [ 'px', 'em', 'rem' ], - disableCustomSizes = false, - customControl = false, - setCustomControl = null, - isPopover = false, - isSingle = false, - parentLabel = null, - onMouseOver, - onMouseOut, - allowAuto = false, -} ) { - const [ isCustom, setIsCustom ] = useState( false ); - const [ isOpen, setIsOpen ] = useState( false ); - const reviewOptions = JSON.parse(JSON.stringify(options)); - reviewOptions.push( { - value: 'ss-auto', - output: 'var(--global-kb-spacing-auto, auto)', - label: __( 'Auto', 'kadence-blocks' ), - size: 0, - name: __( 'Auto', 'kadence-blocks' ), - } ); - useEffect( () => { - setIsCustom( isCustomOption( reviewOptions, value ) ); - }, [] ); - const realIsCustomControl = setCustomControl ? customControl : isCustom; - const realSetIsCustom = setCustomControl ? setCustomControl : setIsCustom; - function toggle() { - setIsOpen( ! isOpen ); - } - function close() { - setIsOpen( false ); - } - const getNewPresetValue = ( newSize ) => { - if ( undefined === newSize ) { - return ''; - } - const size = parseInt( newSize, 10 ); - if ( size === 0 ) { - return '0'; - } - return `${ options[ newSize ]?.value }`; - }; - const onChangeCustom = ( newSize ) => { - const isNumeric = ! isNaN( parseFloat( newSize ) ); - const nextValue = isNumeric ? parseFloat( newSize ) : undefined; - // if ( onUnit && ! parentLabel ) { - // const newUnit = newSize.replace(/[0-9]/g, ''); - // if ( newUnit !== unit ) { - // onUnit( newUnit ); - // } - // } - onChange( nextValue ); - }; - const marks = options.map( ( newValue, index ) => ( { - value: index, - label: undefined, - } ) ); - const controlUnits = units.map( ( unitItem ) => ( { - value: unitItem, - label: unitItem, - } ) ); - const currentValue = ! realIsCustomControl ? getOptionIndex( reviewOptions, value ) : Number( value ); - const currentPlaceholder = ! realIsCustomControl ? getOptionIndex( reviewOptions, placeholder ) : Number( placeholder ) - const setInitialValue = () => { - if ( value === undefined ) { - onChange( '0' ); - } - }; - const customTooltipContent = ( newValue ) => { - return reviewOptions[ newValue ]?.label; - } - const currentValueLabel = reviewOptions[ currentValue ]?.label ? reviewOptions[ currentValue ]?.label : __( 'Unset', 'kadence-blocks' ); - const currentValueName = reviewOptions[ currentValue ]?.name ? reviewOptions[ currentValue ]?.name + ' ' + reviewOptions[ currentValue ]?.size + 'px' : __( 'Unset', 'kadence-blocks' ); - const addParent = parentLabel ? parentLabel + ' ' : ''; - let rangeLabel = label; - if ( isSingle ) { - rangeLabel = currentValueName; - } else if ( label && addParent ) { - rangeLabel = addParent + label + ' ' + currentValueLabel - } - const customRange = ( - <> - { - if ( undefined === newVal ) { - onChange( defaultValue ); - } else { - onChange( getNewPresetValue( newVal ) ) - } - }} - min={ 0 } - max={ options.length - 1 } - marks={ marks } - step={ 1 } - help={ help } - withInputField={ false } - aria-valuenow={ currentValue } - aria-valuetext={ options[ currentValue ]?.label } - renderTooltipContent={ customTooltipContent } - initialPosition={ defaultValue ? defaultValue : 0 } - allowReset={ isSingle ? true : false } - hideLabelFromVision={ ( isPopover || isSingle ) ? false : true } - onMouseOver={ onMouseOver } - onMouseOut={ onMouseOut } - onMouseDown={ ( event ) => { - // If mouse down is near start of range set initial value to 0, which - // prevents the user have to drag right then left to get 0 setting. - if ( event?.nativeEvent?.offsetX < 35 ) { - setInitialValue(); - } - } } - /> - { ! disableCustomSizes && ( - - { isOpen && ( - - -
- { customRange } - { allowAuto && ( -
-
- ) } - - )} - { ! isPopover && ( - <>{ customRange } - ) } - - ) } - { realIsCustomControl && ( -
- onChangeCustom( newVal ) } - onMouseOver={ onMouseOver } - onMouseOut={ onMouseOut } - /> - { ! parentLabel && ( -
- -
- ) } - { ! disableCustomSizes && ( - -
- ) } - - ), - ]; -} diff --git a/src/packages/components/src/measurement-range-control/utils.js b/src/packages/components/src/measurement-range-control/utils.js deleted file mode 100644 index 960659eed..000000000 --- a/src/packages/components/src/measurement-range-control/utils.js +++ /dev/null @@ -1,92 +0,0 @@ -import { __ } from '@wordpress/i18n'; - -import { OPTIONS_MAP } from "./constants"; -export function isCustomOption( optionsArray, value ) { - if ( ! value ) { - return false; - } - if ( ! optionsArray ) { - return false; - } - // If empty lets default to options instead of custom. - if ( undefined !== value[0] && '' === value[0] && undefined !== value[1] && ( '' === value[1] || 'auto' === value[1] ) && undefined !== value[2] && '' === value[2] && undefined !== value[3] && ( '' === value[3] || 'auto' === value[3] ) ) { - return false; - } - if ( undefined !== value[0] && '' !== value[0] ) { - return ( - ! optionsArray.find( ( option ) => option.value === value[0] ) - ); - } - if ( undefined !== value[1] && '' !== value[1] && 'auto' !== value[1] ) { - return ( - ! optionsArray.find( ( option ) => option.value === value[1] ) - ); - } - if ( undefined !== value[2] && '' !== value[2] ) { - return ( - ! optionsArray.find( ( option ) => option.value === value[2] ) - ); - } - if ( undefined !== value[3] && '' !== value[3] && 'auto' !== value[3] ) { - return ( - ! optionsArray.find( ( option ) => option.value === value[3] ) - ); - } - return ( - ! optionsArray.find( ( option ) => option.value === value ) - ); -} -export function getOptionIndex( optionsArray, value ) { - if ( ! value ) { - return; - } - if ( ! optionsArray ) { - return; - } - if ( value === '0' || value === 'default' ) { - return 0; - } - const found = optionsArray.findIndex( ( option ) => option.value === value ); - if ( ! found ) { - return; - } - return found; -} -export function getOptionSize( optionsArray, value, unit ) { - if ( ! value ) { - return ''; - } - if ( ! optionsArray ) { - return ''; - } - if ( value === '0') { - return 0; - } - if ( unit !== 'px' ) { - return ''; - } - const found = optionsArray.find( ( option ) => option.value === value ); - if ( ! found ) { - return ''; - } - return found.size; -} -export function getOptionFromSize( optionsArray, value, unit ) { - if ( ! value ) { - return ''; - } - if ( ! optionsArray ) { - return ''; - } - if ( value === 0 ) { - return '0'; - } - if ( unit !== 'px' ) { - return ''; - } - const found = optionsArray.find( ( option ) => option.size.toString() === value.toString() ); - if ( ! found ) { - return ''; - } - return found.value; -} \ No newline at end of file diff --git a/src/packages/components/src/measurement/measurement-control/editor.scss b/src/packages/components/src/measurement/measurement-control/editor.scss deleted file mode 100644 index 396fafc7c..000000000 --- a/src/packages/components/src/measurement/measurement-control/editor.scss +++ /dev/null @@ -1,336 +0,0 @@ -/* Measurements */ -.kadence-title-bar { - margin-bottom: 8px; - display: flex; - align-items: center; - .kadence-control-title { - flex-grow: 1; - display: flex; - align-items: center; - } - button.components-button.has-icon.is-reset { - width: 20px; - min-width: 20px; - padding: 0 3px; - margin: 0 5px 0 0; - } - .kadence-control-title button.components-button.is-reset.has-icon { - margin: 0 0 0 5px; - } -} -.kadence-range-control-range .components-range-control__root svg { - margin-top: 2px; -} -.kadence-range-control-inner { - .components-base-control__field { - margin: 0; - display: flex; - } - .components-range-control__wrapper { - height: 32px; - } - .components-input-control__input { - height: 32px; - } -} -.kadence-range-control-inner .components-base-control__field > .components-flex { - width: 100%; -} -.kadence-range-control-inner .components-base-control__field > .components-flex .components-input-control__input { - height: 32px; -} -.kadence-controls-content .measure-input-wrap .input-setting-toggle { - height: 14px; - .components-button.input-setting-toggle-btn { - width:100%; - height:14px; - padding:0; - line-height: 12px; - font-size: 7px !important; - margin: 0; - display: block; - border: 1px solid var(--kb-border-color, #859CB6 ); - border-bottom:0; - border-radius: 0; - border-top-right-radius: 2px; - border-top-left-radius: 2px; - text-transform: uppercase; - background-color: #fff; - } -} -.kb-measure-control .kadence-controls-content { - align-items: flex-end; -} -.components-popover.kadence-range-popover-settings .components-popover__content>div { - padding: 30px 20px; - min-width: 280px; -} -.components-button-group.kb-preset-size-options { - display: flex; - flex-flow: wrap; - margin: -1%; -} -.components-button-group.kb-preset-size-options button.components-button.kb-preset-sizes { - flex-basis:18%; - width:auto; - min-width:auto; - margin:1%; - border-radius:0; - text-align: center; - padding: 0 2px; - justify-content: center; -} -.components-button-group.kb-measure-responsive-options { - .components-button.kb-responsive-btn { - background: transparent; - height: auto; - border: 0; - box-shadow: none; - padding: 2px 4px; - margin-bottom: 0; - outline: 0; - color: #A0AEC0; - width: auto; - font-size: 10px; - &:hover { - color: #718096; - } - &.is-active { - color: var(--wp-admin-theme-color, #00669b); - background: transparent; - } - .dashicon { - width: 15px; - height: 15px; - font-size: 15px; - } - } -} -.kadence-controls-content { - display: flex; - .kadence-range-control { - flex-grow: 1; - margin-right: 2px; - margin-bottom: 0; - .components-base-control__field { - margin-bottom: 0; - display: flex; - } - } - .measure-input-wrap { - margin-right: 2px; - flex-grow: 1; - .components-base-control.measure-inputs { - margin:0; - position: relative; - .components-base-control__field{ - margin-bottom: 0; - } - input[type=number] { - padding: 0 5px; - margin:0; - border: 1px solid var(--kb-border-color, #859CB6 ); - border-top-right-radius: 0; - border-top-left-radius: 0; - -moz-appearance: textfield; - &::-webkit-outer-spin-button, - &::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; - } - &[disabled] { - background: #e4e7ea; - } - } - } - } - - .measure-label { - display: none; - font-size: 11px; - line-height: 16px; - padding: 3px 0; - text-align: center; - svg { - height: 16px; - width: 16px; - } - } -} -.kb-measure-control { - .measure-input-top .measure-inputs .components-base-control__field:before { - content: ''; - display: block; - border-top:3px solid var(--kb-border-dark-color, #6F8094 ); - width: 100%; - border-top-left-radius: 2px; - border-top-right-radius: 2px; - position: absolute; - left: 0; - top: 0; - } - &.kb-measure-corners-control .measure-input-top .measure-inputs .components-base-control__field:before { - width: 15px; - height: 15px; - border-left: 3px solid var(--kb-border-dark-color, #6F8094 ); - border-top: 3px solid var(--kb-border-dark-color, #6F8094 ); - border-top-right-radius: 0px; - } - .measure-input-right .measure-inputs .components-base-control__field:before { - content: ''; - display: block; - border-right:3px solid var(--kb-border-dark-color, #6F8094 ); - width: 0; - height: 100%; - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; - position: absolute; - right: 0; - top: 0; - } - &.kb-measure-corners-control .measure-input-right .measure-inputs .components-base-control__field:before { - width: 15px; - height: 15px; - border-right: 3px solid var(--kb-border-dark-color, #6F8094 ); - border-top: 3px solid var(--kb-border-dark-color, #6F8094 ); - border-bottom-right-radius: 0px; - } - .measure-input-bottom .measure-inputs .components-base-control__field:before { - content: ''; - display: block; - border-bottom:3px solid var(--kb-border-dark-color, #6F8094 ); - width: 100%; - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; - position: absolute; - right: 0; - bottom: 0; - } - &.kb-measure-corners-control .measure-input-bottom .measure-inputs .components-base-control__field:before { - width: 15px; - height: 15px; - border-right: 3px solid var(--kb-border-dark-color, #6F8094 ); - border-bottom: 3px solid var(--kb-border-dark-color, #6F8094 ); - border-bottom-left-radius: 0px; - } - .measure-input-left .measure-inputs .components-base-control__field:before { - content: ''; - display: block; - border-left:3px solid var(--kb-border-dark-color, #6F8094 ); - height: 100%; - width:0; - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; - position: absolute; - left: 0; - bottom: 0; - } - &.kb-measure-corners-control .measure-input-left .measure-inputs .components-base-control__field:before { - width: 15px; - height: 15px; - border-left: 3px solid var(--kb-border-dark-color, #6F8094 ); - border-bottom: 3px solid var(--kb-border-dark-color, #6F8094 ); - border-top-left-radius: 0px; - } -} -.kadence-units { - max-width: 60px; - display: flex; - .components-button { - padding-top: 2px; - padding-bottom: 2px; - svg { - width: 16px; - } - } -} -.kadence-units button.components-button.is-active.is-single.is-small { - min-width: 20px; - height: 30px; - border: 1px solid #e2e4e7; - background-color: #fff; - display: flex; - margin-right: 2px; -} -.kadence-units .kadence-units-group .components-button { - min-width: 20px; - height: 32px; - border: 1px solid #e2e4e7; - background-color: #fff; - display: flex; - margin-right: 2px; -} -.kadence-units .components-dropdown.components-dropdown-menu.components-toolbar { - background-color: transparent; - display: flex; - height: 30px; - min-height: 30px; - border: 1px solid #e2e4e7; - .components-button { - height: 30px; - min-width: 10px; - padding-top: 2px; - padding-left: 4px; - padding-right: 4px; - padding-bottom: 2px; - margin-left: 2px; - &:before { - display: none; - } - } -} -.kadence-locked .components-button.is-single { - border: 1px solid #e2e4e7; - background-color: #fff; - display: flex; - height: 30px; -} -.components-dropdown__content.kadence-units-popover .components-popover__content { - min-width: 48px; - width: 48px; - .components-button.components-dropdown-menu__menu-item { - min-width: 30px; - } - >div { - padding:5px - } -} -.kadence-range-control-inner .components-range-control__reset { - display: none; -} -.kb-measure-control .kadence-measure-control-select-wrapper { - align-self: normal; -} -.kadence-measure-control-select-wrapper .kadence-measure-control-select { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - background: transparent; - border-radius: 0px 2px 2px 0px; - display: block; - outline: none; - margin: 0px; - min-height: auto; - font-family: inherit; - box-sizing: border-box; - padding: 2px 1px; - width: 20px; - color: rgb(47, 47, 47); - font-size: 10px; - line-height: 1; - letter-spacing: -0.5px; - text-transform: uppercase; - -moz-text-align-last: center; - text-align-last: center; - height: 100%; - border: 1px solid var(--kb-border-color, #859CB6 ); - transition: box-shadow 0.1s linear 0s, border 0.1s linear 0s; - cursor: pointer; - &:hover { - background-color: #f0f0f0; - } - - &:disabled { - background-image: none; - } -} \ No newline at end of file diff --git a/src/packages/components/src/measurement/measurement-control/index.js b/src/packages/components/src/measurement/measurement-control/index.js deleted file mode 100644 index f96c48e29..000000000 --- a/src/packages/components/src/measurement/measurement-control/index.js +++ /dev/null @@ -1,228 +0,0 @@ -/** - * Measure Component - * - */ - -/** - * Import Css - */ -import './editor.scss'; - -/** - * Import External - */ -import { isEqual } from 'lodash'; -import MeasurementSingleControl from '../single-input-control'; -import RangeControl from '../../range/range-control'; -import { undo, settings, link, linkOff } from '@wordpress/icons'; - -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import { useState, Fragment } from '@wordpress/element'; -import { - Button, - DropdownMenu, - ButtonGroup, - Tooltip, -} from '@wordpress/components'; - -import { - outlineTopIcon, - outlineRightIcon, - outlineBottomIcon, - outlineLeftIcon, - pxIcon, - emIcon, - remIcon, - vhIcon, - vwIcon, - percentIcon, - individualIcon, - linkedIcon, - topLeftIcon, - topRightIcon, - bottomRightIcon, - bottomLeftIcon, -radiusLinkedIcon, -radiusIndividualIcon -} from '@kadence/icons'; - -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function MeasurementControls( { - label, - measurement, - control = 'individual', - onChange, - onControl = false, - step = 1, - max = 100, - min = 0, - firstIcon = outlineTopIcon, - secondIcon = outlineRightIcon, - thirdIcon = outlineBottomIcon, - fourthIcon = outlineLeftIcon, - linkIcon = link, - unlinkIcon = linkOff, - isBorderRadius = false, - unit = '', - onUnit, - showUnit = false, - units = [ 'px', 'em', 'rem' ], - allowEmpty = false, - key, - className = '', - reset, - preset = '', -} ) { - const measureIcons = { - first: isBorderRadius ? topLeftIcon : firstIcon, - second: isBorderRadius ? topRightIcon : secondIcon, - third: isBorderRadius ? bottomRightIcon : thirdIcon, - fourth: isBorderRadius ? bottomLeftIcon : fourthIcon, - link: isBorderRadius ? radiusLinkedIcon : linkIcon, - unlink: isBorderRadius ? radiusIndividualIcon : unlinkIcon, - } - const liveValue = ( measurement ? measurement : [ '', '', '', '' ] ); - const zero = ( allowEmpty ? '' : 0 ); - const [ localControl, setLocalControl ] = useState( control ); - const realControl = onControl ? control : localControl; - const realSetOnControl = onControl ? onControl : setLocalControl; - const onReset = () => { - if ( typeof reset === 'function' ){ - reset(); - } else { - onChange( [ '', '', '', '' ] ); - } - } - return ( - <> - { onChange && ( -
- { label && ( -
- { label && ( -
- - { reset && ( -
-
- ) } -
- ) } - { realSetOnControl && ( -
- ) } -
- { realControl !== 'individual' && ( - onChange( [ value, value, value, value ] ) } - min={ min } - max={ max } - step={ step } - /> - ) } - { realControl === 'individual' && ( - - onChange( [ ( value ? Number( value ) : value ), ( measurement && undefined !== measurement[ 1 ] && '' !== measurement[ 1 ] ? measurement[ 1 ] : zero ), ( measurement && undefined !== measurement[ 2 ] && '' !== measurement[ 2 ] ? measurement[ 2 ] : zero ), ( measurement && undefined !== measurement[ 3 ] && '' !== measurement[ 3 ] ? measurement[ 3 ] : zero ) ] ) } - min={ min } - max={ max } - step={ step } - icon={ measureIcons.first } - unit={ unit } - allowEmpty={ allowEmpty } - preset={ preset } - /> - onChange( [ ( measurement && undefined !== measurement[ 0 ] && '' !== measurement[ 0 ] ? measurement[ 0 ] : zero ), ( value ? Number( value ) : value ), ( measurement && undefined !== measurement[ 2 ] && '' !== measurement[ 2 ] ? measurement[ 2 ] : zero ), ( measurement && undefined !== measurement[ 3 ] && '' !== measurement[ 3 ] ? measurement[ 3 ] : zero ) ] ) } - min={ min } - max={ max } - step={ step } - icon={ measureIcons.second } - unit={ unit } - allowEmpty={ allowEmpty } - preset={ preset } - /> - onChange( [ ( measurement && undefined !== measurement[ 0 ] && '' !== measurement[ 0 ] ? measurement[ 0 ] : zero ), ( measurement && undefined !== measurement[ 1 ] && '' !== measurement[ 1 ] ? measurement[ 1 ] : zero ), ( value ? Number( value ) : value ), ( measurement && undefined !== measurement[ 3 ] && '' !== measurement[ 3 ] ? measurement[ 3 ] : zero ) ] ) } - min={ min } - max={ max } - step={ step } - icon={ measureIcons.third } - unit={ unit } - allowEmpty={ allowEmpty } - preset={ preset } - /> - onChange( [ ( measurement && undefined !== measurement[ 0 ] && '' !== measurement[ 0 ] ? measurement[ 0 ] : zero ), ( measurement && undefined !== measurement[ 1 ] && '' !== measurement[ 1 ] ? measurement[ 1 ] : zero ), ( measurement && undefined !== measurement[ 2 ] && '' !== measurement[ 2 ] ? measurement[ 2 ] : zero ), ( value ? Number( value ) : value ) ] ) } - min={ min } - max={ max } - step={ step } - icon={ measureIcons.fourth } - unit={ unit } - allowEmpty={ allowEmpty } - preset={ preset } - /> - - ) } - { ( onUnit || showUnit ) && ( -
- -
- ) } -
-
- ) } - - ); -} diff --git a/src/packages/components/src/measurement/responsive-measurement-control/index.js b/src/packages/components/src/measurement/responsive-measurement-control/index.js deleted file mode 100644 index 85f3df46c..000000000 --- a/src/packages/components/src/measurement/responsive-measurement-control/index.js +++ /dev/null @@ -1,246 +0,0 @@ -/** - * Responsive Range Component - * - */ - -/** - * Internal block libraries - */ -import { useSelect, useDispatch } from '@wordpress/data'; -import { useState, useRef } from '@wordpress/element'; -import { __ } from '@wordpress/i18n'; -import { map, isEqual } from 'lodash'; -import MeasurementControls from '../measurement-control'; -import { capitalizeFirstLetter } from '@kadence/helpers'; -import { undo, settings, link, linkOff } from '@wordpress/icons'; -import { - Dashicon, - Button, - ButtonGroup, -} from '@wordpress/components'; -import { - outlineTopIcon, - outlineRightIcon, - outlineBottomIcon, - outlineLeftIcon, - individualIcon, - linkedIcon, -} from '@kadence/icons'; -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function ResponsiveMeasurementControls( { - label, - subLabel, - onChange, - onChangeTablet, - onChangeMobile, - mobileValue, - tabletValue, - value, - onChangeControl = false, - control = 'individual', - step = 1, - max = 100, - min = 0, - unit = '', - onUnit, - showUnit = false, - units = [ 'px', 'em', 'rem' ], - allowEmpty = true, - preset = '', - isBorderRadius = false, - firstIcon = outlineTopIcon, - secondIcon = outlineRightIcon, - thirdIcon = outlineBottomIcon, - fourthIcon = outlineLeftIcon, - linkIcon = link, - unlinkIcon = linkOff, - reset = true, - } ) { - const ref = useRef(); - const [ localControl, setLocalControl ] = useState( control ); - const realControl = onChangeControl ? control : localControl; - const realSetOnControl = onChangeControl ? onChangeControl : setLocalControl; - const zero = ( allowEmpty ? true : false ); - const [ deviceType, setDeviceType ] = useState( 'Desktop' ); - const theDevice = useSelect( ( select ) => { - return select( 'kadenceblocks/data' ).getPreviewDeviceType(); - }, [] ); - if ( theDevice !== deviceType ) { - setDeviceType( theDevice ); - } - const { - setPreviewDeviceType, - } = useDispatch( 'kadenceblocks/data' ); - const customSetPreviewDeviceType = ( device ) => { - setPreviewDeviceType( capitalizeFirstLetter( device ) ); - setDeviceType( capitalizeFirstLetter( device ) ); - }; - const devices = [ - { - name: 'Desktop', - title: , - itemClass: 'kb-desk-tab', - }, - { - name: 'Tablet', - title: , - itemClass: 'kb-tablet-tab', - }, - { - name: 'Mobile', - key: 'mobile', - title: , - itemClass: 'kb-mobile-tab', - }, - ]; - let liveValue = ( value ? value : [ '', '', '', '' ] ); - if ( deviceType === 'Tablet' ) { - liveValue = ( tabletValue ? tabletValue : [ '', '', '', '' ] ); - } else if ( deviceType === 'Mobile' ) { - liveValue = ( mobileValue ? mobileValue : [ '', '', '', '' ] ); - } - const onReset = () => { - if ( deviceType === 'Tablet' ) { - onChangeTablet( [ '', '', '', '' ] ); - } else if ( deviceType === 'Mobile' ) { - onChangeMobile( [ '', '', '', '' ] ); - } else { - onChange( [ '', '', '', '' ] ); - } - } - const output = {}; - output.Mobile = ( - onChangeMobile( size ) } - onControl={ ( sizeControl ) => realSetOnControl( sizeControl ) } - min={ min } - max={ max } - step={ step } - allowEmpty={ zero } - unit={ unit } - showUnit={ true } - units={ [ unit ] } - preset={ preset } - isBorderRadius={ isBorderRadius } - firstIcon={ firstIcon } - secondIcon={ secondIcon } - thirdIcon={ thirdIcon } - fourthIcon={ fourthIcon } - linkIcon={ linkIcon } - unlinkIcon={ unlinkIcon } - /> - ); - output.Tablet = ( - onChangeTablet( size ) } - onControl={ ( sizeControl ) => realSetOnControl( sizeControl ) } - min={ min } - max={ max } - step={ step } - allowEmpty={ zero } - unit={ unit } - showUnit={ true } - units={ [ unit ] } - preset={ preset } - isBorderRadius={ isBorderRadius } - firstIcon={ firstIcon } - secondIcon={ secondIcon } - thirdIcon={ thirdIcon } - fourthIcon={ fourthIcon } - linkIcon={ linkIcon } - unlinkIcon={ unlinkIcon } - /> - ); - output.Desktop = ( - onChange( size ) } - onControl={ ( sizeControl ) => realSetOnControl( sizeControl ) } - min={ min } - max={ max } - step={ step } - allowEmpty={ zero } - unit={ unit } - onUnit={ ( onUnit ? onUnit : undefined ) } - showUnit={ showUnit } - units={ units } - preset={ preset } - isBorderRadius={ isBorderRadius } - firstIcon={ firstIcon } - secondIcon={ secondIcon } - thirdIcon={ thirdIcon } - fourthIcon={ fourthIcon } - linkIcon={ linkIcon } - unlinkIcon={ unlinkIcon } - /> - ); - return [ - onChange && onChangeTablet && onChangeMobile && ( -
-
- { label && ( -
- - { reset && ( -
-
- ) } -
- ) } - - { map( devices, ( { name, key, title, itemClass } ) => ( - - ) ) } - - { realSetOnControl && ( -
-
- { ( output[ deviceType ] ? output[ deviceType ] : output.Desktop ) } -
-
- ), - ]; -} diff --git a/src/packages/components/src/measurement/single-input-control/index.js b/src/packages/components/src/measurement/single-input-control/index.js deleted file mode 100644 index 69010fad8..000000000 --- a/src/packages/components/src/measurement/single-input-control/index.js +++ /dev/null @@ -1,122 +0,0 @@ -/** - * Measure Single Component - * - */ - -/** - * Import External - */ -import { map } from 'lodash'; -import RangeControl from '../../range/range-control'; - -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import { useState } from '@wordpress/element'; -import { - Button, - Popover, - TextControl, - ButtonGroup, -} from '@wordpress/components'; - -function useObservableState( initialState ) { - const [ state, setState ] = useState( initialState ); - return [ - state, - ( value ) => { - setState( value ); - }, - ]; -} -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function MeasurementSingleControl( { - label, - placement = 'top', - measurement, - onChange, - step = 1, - max = 100, - min = 0, - icon, - unit = '', - allowEmpty = false, - className = '', - preset = '', - } ) { - const zero = ( allowEmpty ? '' : 0 ); - const [ isOpen, setIsOpen ] = useObservableState( false ); - - function toggle() { - setIsOpen( ! isOpen ); - } - function close() { - setIsOpen( false ); - } - const presetSizes = { - px: [ 0, 10, 20, 40, 60, 80, 100, 140, 160, 200 ], - em: [ 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5 ], - rem: [ 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5 ], - '%': [ 0, 2, 5, 8, 10, 20, 30, 40, 50, 60 ], - vh: [ 0, 2, 5, 8, 10, 20, 30, 40, 50, 60 ], - vw: [ 0, 2, 5, 8, 10, 20, 30, 40, 50, 60 ], - }; - return ( -
-
- - { isOpen && ( - - onChange( ( value ? parseFloat( value ) : value ) ) } - min={ min } - max={ max } - step={ step } - /> - { unit !== '' || ( preset && Array.isArray( preset ) && preset.length > 1 ) && ( - - { map( ( preset && Array.isArray( preset ) && preset.length > 1 ? preset : presetSizes[ unit ] ), ( size ) => ( - - ) ) } - - ) } - - ) } -
- onChange( ( value ? Number( value ) : value ) ) } - min={ min } - max={ max } - step={ step } - /> - { icon } -
- ); -} diff --git a/src/packages/components/src/obfuscate-text-control/editor.scss b/src/packages/components/src/obfuscate-text-control/editor.scss deleted file mode 100644 index 438907f76..000000000 --- a/src/packages/components/src/obfuscate-text-control/editor.scss +++ /dev/null @@ -1,20 +0,0 @@ -.kadence-obfuscate-text-control-inner { - display: flex; - gap:8px -} -.kadence-obfuscate-text-control-inner .components-base-control, .kadence-obfuscate-text-control-inner .components-base-control .components-base-control__field { - margin-bottom:0; -} -.kadence-obfuscate-text-control .components-background-obfuscate-text-control__label { - margin-bottom: 8px; - display: block; -} -.kadence-obfuscate-text-control-inner .kb-obfuscate-save { - min-width:90px; - justify-content: center; - min-height: 30px; - &.components-button svg { - margin-top: 0; - margin-right: 0; - } -} \ No newline at end of file diff --git a/src/packages/components/src/obfuscate-text-control/index.js b/src/packages/components/src/obfuscate-text-control/index.js deleted file mode 100644 index 64f5261c1..000000000 --- a/src/packages/components/src/obfuscate-text-control/index.js +++ /dev/null @@ -1,108 +0,0 @@ -/** - * Range Control - * - */ - -/** - * Internal block libraries - */ -import { - Spinner, - TextControl, - Button, -} from '@wordpress/components'; -import { useInstanceId } from '@wordpress/compose'; -import { useEffect, useState, Fragment } from '@wordpress/element'; -import { __ } from '@wordpress/i18n'; -import './editor.scss'; - -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function ObfuscateTextControl( { - label, - onChange, - isSaving, - value = '', - placeholder = null, - className = '', - obfuscate = true, - help = '', -} ) { - const [ tempValue, setTempValue ] = useState( '' ); - const instanceId = useInstanceId( ObfuscateTextControl ); - const id = `inspector-obfuscate-text-control-${instanceId}`; - return [ - onChange && ( -
- {label && ( - - )} -
- {!value && ( - <> - setTempValue( value )} - /> - - - )} - {value && obfuscate && ( - <> - - - - )} - {value && !obfuscate && ( - <> - - - - )} -
-
- ), - ]; -} \ No newline at end of file diff --git a/src/packages/components/src/onboarding-modal/editor.scss b/src/packages/components/src/onboarding-modal/editor.scss deleted file mode 100644 index ce1c6398f..000000000 --- a/src/packages/components/src/onboarding-modal/editor.scss +++ /dev/null @@ -1,234 +0,0 @@ -.kadence-onboarding-modal { - - .components-modal__content { - padding: 0; - } - - .header { - display: flex; - justify-content: space-between; - padding: 20px; - top: 0; - position: sticky; - z-index: 100; - background: #FFF; - - img { - width: 40px; - } - - .close { - padding: 10px; - cursor: pointer; - } - } - - .body { - display: flex; - justify-content: center; - padding: 0 30px 30px 30px; - } - - .body-name { - display: flex; - } - - .width-m { - max-width: 600px; - width: 100%; - } - - .width-l { - max-width: 850px; - width: 100%; - padding-bottom: 50px; - } - - .form-container { - flex: 1; - padding: 20px; - display: flex; - flex-direction: column; - margin-left: 25px; - } - - // desktop and tablet only - @media (min-width: 769px) { - .form-container { - min-width: 400px; - } - } - - .form-container input, .form-container textarea { - margin-bottom: 20px; - padding: 20px 10px; - font-size: 16px; - border: 1px solid #ccc; - border-radius: 4px; - width: 100%; - } - - @media (max-width: 768px) { - .image { - display: none !important; - } - - .form-container { - width: 100%; - padding: 20px; - } - } - - .width-f { - display: flex; - flex: 1; - - .image { - margin-top: -80px; - margin-left: -30px; - background-color: #011227; - //flex: 1; - height: calc(100vh - 80px); /* Adjust height to span to footer */ - - display: flex; - align-items: center; - justify-content: center; - - img { - max-height: 86vh; - max-width: 100%; - } - } - - } - - .type-selection { - display: flex; - border-bottom: 1px solid #d9d9d9; - .components-button { - margin-bottom: -1px; - border-radius: 0; - border-bottom: 2px solid transparent; - } - .components-button.is-pressed { - border-bottom: 2px solid #3c434a; - background: #FFF; - color: #3c434a; - font-weight: bold; - &:hover { - background: #FFF; - color: #3c434a; - } - } - } - - .options { - display: flex; - flex-wrap: wrap; - justify-content: space-between; - margin-top: 20px; - text-align: center; - - &.options-mobile .option:not(.blank) { - width: 48%; - } - - .blank { - padding: 20px; - border: 2px dashed #d9d9d9; - border-radius: 5px; - cursor: pointer; - - .components-button:focus { - outline: none; - box-shadow: none; - } - - &:hover { - border: 2px dashed #0073e6; - } - - &.is-selected { - border: 2px dashed #0073e6; - } - } - - .option { - width: 100%; - margin-bottom: 25px; - } - - .option-mobile { - width: 48%; - margin-bottom: 20px; - } - - .option-image { - margin-bottom: 10px; - border: 3px solid #d9d9d9; - border-radius: 5px; - cursor: pointer; - &:hover { - border: 3px solid #0073e6; - } - - &.is-selected { - border: 3px solid #0073e6; - } - svg { - display: block; - } - } - } - - .footer { - position: fixed; - bottom: 0; - display: flex; - justify-content: space-between; - align-items: center; - height: 70px; - border-top: 1px solid #d9d9d9; - width: 100%; - padding: 0 35px; - font-weight: bold; - background: #FFF; - - .next .is-primary { - background-color: #0073e6; - } - - .step-indicator { - display: flex; - cursor: default; - - .step { - margin-right: 20px; - color: #3c434a; - font-weight: 500; - - .number { - display: inline-flex; - background-color: #3c434a; - color: #fff; - border-radius: 50%; - line-height: 10px; - width: 20px; - height: 20px; - padding: 5px 5px 0px 6px; - margin-right: 5px; - font-weight: 400; - } - - &.active { - color: #0073e6; - - .number { - background-color: #0073e6; - color: #FFF; - } - } - } - } - } -} diff --git a/src/packages/components/src/onboarding-modal/index.js b/src/packages/components/src/onboarding-modal/index.js deleted file mode 100644 index 9e6f8f3fd..000000000 --- a/src/packages/components/src/onboarding-modal/index.js +++ /dev/null @@ -1,125 +0,0 @@ -import { __, sprintf } from '@wordpress/i18n'; -import { useEffect, useState, createElement } from '@wordpress/element'; -import { Button, Modal, Dashicon } from '@wordpress/components'; - -import './editor.scss'; - -const OnboardingModal = ({ steps, isOpen, onRequestClose, onSubmit }) => { - const [currentStep, setCurrentStep] = useState(0); - const [formData, setFormData] = useState({ meta: { isValid: true } }); - - const handleNextStep = () => { - if (currentStep < steps.length - 1) { - setCurrentStep(currentStep + 1); - } - }; - - const handlePreviousStep = () => { - if (currentStep > 0) { - setCurrentStep(currentStep - 1); - } - }; - - const handleChange = (data) => { - setFormData((prevData) => ({ ...prevData, ...data })); - }; - - const handleFinish = () => { - delete formData.meta; - onSubmit(formData); - onRequestClose({ complete: true }); - }; - - const handleClose = () => { - delete formData.meta; - onRequestClose({ complete: false }); - }; - - useEffect(() => { - if ( - Number.isInteger(formData?.meta?.exitAndCallbackStep) && - formData?.meta?.exitAndCallbackStep === currentStep - ) { - handleFinish(); - } - }, [formData, currentStep]); - - // Scroll to top on step change - useEffect(() => { - const elements = document.getElementsByClassName('has-scrolled-content'); - for (let i = 0; i < elements.length; i++) { - elements[i].scrollTo(0, 0); - } - }, [currentStep]); - - if (!isOpen) { - return; - } - - return ( - -
- {'Kadence -
- -
-
-
- {createElement(steps[currentStep].component, { - data: formData, - componentData: steps[currentStep].componentData, - onChange: (data) => handleChange(data), - handleNextStep, - handlePreviousStep, - handleFinish, - })} -
-
-
- -
- -
- {steps[currentStep]?.hideSteps - ? null - : steps.map((step, index) => { - if (!step?.hideSteps) { - return ( -
-
{step.visualNumber}
- {step.name} -
- ); - } - return null; - })} -
- -
- {currentStep < steps.length - 1 ? ( - - ) : ( - - )} -
-
-
- ); -}; - -export default OnboardingModal; diff --git a/src/packages/components/src/opacity-control/index.js b/src/packages/components/src/opacity-control/index.js deleted file mode 100644 index 35148a9b1..000000000 --- a/src/packages/components/src/opacity-control/index.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - * Measure Component - * - */ - -/** - * Internal block libraries - */ -import { Component } from '@wordpress/element'; -import { - Button, - Popover, - RangeControl, - Tooltip, -} from '@wordpress/components'; -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -class OpacityControl extends Component { - constructor( label, value, onChanged ) { - super( ...arguments ); - this.state = { - isVisible: false, - }; - } - - render() { - const toggleVisible = () => { - this.setState( { isVisible: true } ); - }; - const toggleClose = () => { - this.setState( { isVisible: false } ); - }; - - // @todo: Replace with icon from @kadence/icons once created - const icons = {}; - icons.opacity = - - - - - - - - - - - - ; - - return ( -
- { this.state.isVisible && ( - - - - ) } - - { ! this.state.isVisible && ( - - ) } - { this.state.isVisible && ( - - ) } - -
- ); - } -} -export default ( OpacityControl ); diff --git a/src/packages/components/src/panel-body/index.js b/src/packages/components/src/panel-body/index.js deleted file mode 100644 index 2737773b8..000000000 --- a/src/packages/components/src/panel-body/index.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * WordPress dependencies - */ -import { PanelBody } from '@wordpress/components'; -import { compose } from '@wordpress/compose'; -import { withSelect, withDispatch } from '@wordpress/data'; -import { showSettings } from '@kadence/helpers'; -import { get } from 'lodash'; -import { proIcon } from '@kadence/icons'; - -function KadencePanelBody({ - children, - title, - initialOpen = true, - isOpened, - toggleOpened, - className = '', - icon = '', - buttonProps = {}, - blockSlug = false, - index = false, - proTag = false, - panelName, -}) { - /* If the block slug is set, check the panel name against the allowed settings for the user */ - if (blockSlug !== false && !showSettings(panelName, blockSlug)) { - return null; - } - - if (proTag) { - buttonProps.icon = proIcon; - buttonProps.iconPosition = 'right'; - } - - return ( - - {children} - - ); -} - -export default compose([ - withSelect((select, ownProps) => { - const initialOpen = undefined !== ownProps.initialOpen ? ownProps.initialOpen : true; - const index = get(ownProps, ['index'], ''); - - return { - isOpened: select('kadenceblocks/data').isEditorPanelOpened( - ownProps.panelName + index + select('core/block-editor').getSelectedBlockClientId(), - initialOpen - ), - }; - }), - withDispatch((dispatch, ownProps, { select }) => { - const { getSelectedBlockClientId } = select('core/block-editor'); - const initialOpen = undefined !== ownProps.initialOpen ? ownProps.initialOpen : true; - const index = get(ownProps, ['index'], ''); - - return { - toggleOpened: () => { - dispatch('kadenceblocks/data').toggleEditorPanelOpened( - ownProps.panelName + index + getSelectedBlockClientId(), - initialOpen - ); - }, - }; - }), -])(KadencePanelBody); diff --git a/src/packages/components/src/panels/color-group.js b/src/packages/components/src/panels/color-group.js deleted file mode 100644 index 72618b36c..000000000 --- a/src/packages/components/src/panels/color-group.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Import Css - */ - import './editor.scss'; - -export default function ColorGroup({ - children, - }) { - return ( -
- { children } -
- ) -} - - diff --git a/src/packages/components/src/panels/editor.scss b/src/packages/components/src/panels/editor.scss deleted file mode 100644 index a670d182d..000000000 --- a/src/packages/components/src/panels/editor.scss +++ /dev/null @@ -1,31 +0,0 @@ -// Colors -.kadence-color-group .components-base-control.kadence-pop-color-control { - margin-bottom:0; - border:1px solid var(--kb-border-color, #859CB6 ); - border-bottom:0; - padding:4px 8px; -} -.kadence-color-group .components-base-control.kadence-pop-color-control:last-child { - border-bottom:1px solid var(--kb-border-color, #859CB6 ); -} -.kadence-color-group .kadence-pop-color-control .kadence-pop-color-icon-indicate .kadence-pop-color-indicate { - width: 24px; - height: 24px; -} -.kadence-color-group .kadence-pop-color-control .kadence-pop-color-clear span.dashicon { - width: 14px; - font-size: 14px; - height: 14px; -} -.kadence-color-group .kadence-pop-color-control .color-indicator-icon .dashicons-admin-site { - left: 4px; - top: 4px; -} -.components-base-control.kadence-two-column-group { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 12px; -} -.components-base-control.kadence-two-column-group > .components-base-control { - margin-bottom:0 -} \ No newline at end of file diff --git a/src/packages/components/src/panels/two-column.js b/src/packages/components/src/panels/two-column.js deleted file mode 100644 index c2e3283a4..000000000 --- a/src/packages/components/src/panels/two-column.js +++ /dev/null @@ -1,12 +0,0 @@ - -export default function TwoColumn({ - children, - }) { - return ( -
- { children } -
- ) -} - - diff --git a/src/packages/components/src/pop-color-control/editor.scss b/src/packages/components/src/pop-color-control/editor.scss deleted file mode 100644 index ee320286d..000000000 --- a/src/packages/components/src/pop-color-control/editor.scss +++ /dev/null @@ -1,165 +0,0 @@ -/** - * #.# Editor Styles - * - * CSS for just Backend enqueued after style.scss - * which makes it higher in priority. - */ - .kadence-pop-color-control { - .kadence-pop-color-container { - display: flex; - align-items: center; - } - .kadence-beside-label { - flex-grow: 1; - font-weight: 400; - } - .kadence-pop-color-clear { - background: transparent; - padding: 4px; - height: auto; - box-shadow: none; - border: 1px solid transparent; - margin-right: 4px; - line-height: 1; - span.dashicon { - font-size: 16px; - width: 16px; - height: 16px; - } - } - .kadence-pop-color-popovers { - display: flex; - align-items: center; - } - .single-pop-color { - margin-left: 8px; - display: flex; - } - .single-pop-color:first-child { - margin-left: 0; - } - .kadence-pop-color-icon-indicate { - height: auto; - position: relative; - transform: scale(1); - transition: transform .1s ease; - border-radius: 50%; - padding: 0; - &.kadence-has-alpha { - background-image: linear-gradient( - 45deg, #ddd 25%, transparent 0),linear-gradient( - -45deg, #ddd 25%, transparent 0),linear-gradient( - 45deg, transparent 75%, #ddd 0),linear-gradient( - -45deg, transparent 75%, #ddd 0); - background-size: 10px 10px; - background-position: 0 0,0 5px,5px -5px,-5px 0; - } - .kadence-pop-color-indicate { - width: 28px; - height: 28px; - border-radius: 50%; - margin: 0; - } - } -} -.components-popover.kadence-pop-color-popover { - .components-popover__content { - padding: 10px 10px 0; - } - .kadence-pop-color-palette-swatches { - padding: 2px 0 10px; - display: flex; - justify-content: flex-start; - flex-wrap: wrap; - min-width: 290px; - .kadence-color-palette__item-wrapper { - margin-right: 2px; - margin-left: 2px; - margin-bottom: 4px; - transform: scale(1); - display: inline-block; - height: 28px; - width: 28px; - transition: transform .1s ease; - background-image: linear-gradient( - 45deg, #ddd 25%, transparent 0), linear-gradient( - -45deg, #ddd 25%, transparent 0), linear-gradient( - 45deg, transparent 75%, #ddd 0), linear-gradient( - -45deg, transparent 75%, #ddd 0); - background-size: 10px 10px; - background-position: 0 0, 0 5px, 5px -5px, -5px 0; - border-radius: 50%; - &:hover { - transform: scale(1.1); - } - .kadence-color-palette__item { - display: inline-block; - vertical-align: top; - height: 100%; - width: 100%; - border: none; - border-radius: 50%; - background: transparent; - box-shadow: inset 0 0 0 14px; - transition: box-shadow .1s ease; - cursor: pointer; - &.is-active { - box-shadow: inset 0 0 0 4px; - position: relative; - z-index: 1; - } - &.is-active + .dashicons-admin-site { - position: absolute; - left: 6px; - top: 6px; - width: 18px; - font-size: 18px; - height: 18px; - z-index: 1; - } - &.is-active + .dashicons-saved { - position: absolute; - left: 5px; - top: 5px; - width: 18px; - font-size: 18px; - height: 18px; - z-index: 1; - } - &:after { - content: ""; - position: absolute; - top: -1px; - left: -1px; - bottom: -1px; - right: -1px; - border-radius: 50%; - box-shadow: inset 0 0 0 1px rgba(0,0,0,.2); - border: 1px solid transparent; - } - } - } - } -} -span.color-indicator-icon { - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - .dashicons-admin-site { - position: absolute; - left: 6px; - top: 6px; - color: #444; - background: #fff; - width: 16px; - font-size: 14px; - height: 16px; - border: 1px solid #fff; - border-radius: 100%; - box-sizing: border-box; - padding-left: 1px; - padding-top: 1px; - } -} diff --git a/src/packages/components/src/pop-color-control/index.js b/src/packages/components/src/pop-color-control/index.js deleted file mode 100644 index 31b94c573..000000000 --- a/src/packages/components/src/pop-color-control/index.js +++ /dev/null @@ -1,138 +0,0 @@ -/** - * Advanced Color Control. - * - */ - -/** - * Import Icons - */ -import SinglePopColorControl from '../single-pop-color-control'; - -/** - * Import Css - */ -import './editor.scss'; - -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import { Component } from '@wordpress/element'; -import { Button, Dashicon } from '@wordpress/components'; - -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default class extends Component { - constructor() { - super( ...arguments ); - this.state = { - reload: false, - } - } - render() { - let showClear = false; - // Adds backward compatablity. - const defaultColor = ( this.props.colorDefault ? this.props.colorDefault : this.props.default ); - const defaultColor2 = ( this.props.colorDefault2 ? this.props.colorDefault2 : this.props.default2 ); - const defaultColor3 = ( this.props.colorDefault3 ? this.props.colorDefault3 : this.props.default3 ); - const valueColor = ( this.props.colorValue ? this.props.colorValue : this.props.value ); - const valueColor2 = ( this.props.colorValue2 ? this.props.colorValue2 : this.props.value2 ); - const valueColor3 = ( this.props.colorValue3 ? this.props.colorValue3 : this.props.value3 ); - const onChange = ( this.props.onColorChange ? this.props.onColorChange : this.props.onChange ); - const onChange2 = ( this.props.onColorChange2 ? this.props.onColorChange2 : this.props.onChange2 ); - const onChange3 = ( this.props.onColorChange3 ? this.props.onColorChange3 : this.props.onChange3 ); - if ( valueColor && valueColor !== defaultColor ) { - showClear = true; - } - if ( valueColor2 && valueColor2 !== defaultColor2 ) { - showClear = true; - } - if ( valueColor3 && valueColor3 !== defaultColor3 ) { - showClear = true; - } - return ( -
-
- { this.props.label && ( - - ) } - { showClear && ! this.props.hideClear && ( - - ) } -
- onChange( value ) } - onOpacityChange={ this.props.onOpacityChange ? value => this.props.onOpacityChange( value ) : undefined } - onArrayChange={ this.props.onArrayChange ? ( value, opacity ) => this.props.onArrayChange( value, opacity ) : undefined } - onClassChange={ this.props.onClassChange ? value => this.props.onClassChange( value ) : undefined } - value={ valueColor } - opacityValue={ undefined !== this.props?.opacityValue && '' !== this.props?.opacityValue ? this.props.opacityValue : undefined } - opacityUnit={ this.props.opacityUnit ? this.props.opacityUnit : undefined } - defaultValue={ defaultColor ? defaultColor : '' } - reload={ this.state.reload } - reloaded={ value => this.setState( { reload: false } ) } - /> - { onChange2 && ( - onChange2( value ) } - onOpacityChange={ this.props.onOpacityChange2 ? value => this.props.onOpacityChange2( value ) : undefined } - onArrayChange={ this.props.onArrayChange2 ? ( value, opacity ) => this.props.onArrayChange2( value, opacity ) : undefined } - onClassChange={ this.props.onClassChange2 ? value => this.props.onClassChange2( value ) : undefined } - value={ valueColor2 } - opacityValue={ this.props.opacityValue2 ? this.props.opacityValue2 : undefined } - opacityUnit={ this.props.opacityUnit2 ? this.props.opacityUnit2 : undefined } - defaultValue={ defaultColor2 ? defaultColor2 : '' } - reload={ this.state.reload } - reloaded={ value => this.setState( { reload: false } ) } - /> - ) } - { onChange3 && ( - onChange3( value ) } - onOpacityChange={ this.props.onOpacityChange3 ? value => this.props.onOpacityChange3( value ) : undefined } - onArrayChange={ this.props.onArrayChange3 ? ( value, opacity ) => this.props.onArrayChange3( value, opacity ) : undefined } - onClassChange={ this.props.onClassChange3 ? value => this.props.onClassChange3( value ) : undefined } - value={ valueColor3 } - opacityValue={ this.props.opacityValue3 ? this.props.opacityValue3 : undefined } - opacityUnit={ this.props.opacityUnit3 ? this.props.opacityUnit3 : undefined } - defaultValue={ defaultColor3 ? defaultColor3 : '' } - reload={ this.state.reload } - reloaded={ value => this.setState( { reload: false } ) } - /> - ) } -
-
-
- ); - } -} diff --git a/src/packages/components/src/post-select-terms-control/index.js b/src/packages/components/src/post-select-terms-control/index.js deleted file mode 100644 index 5b4c80834..000000000 --- a/src/packages/components/src/post-select-terms-control/index.js +++ /dev/null @@ -1,94 +0,0 @@ -/* global wp */ -/** - * External dependencies - */ -import Select from 'react-select'; -import { __ } from '@wordpress/i18n'; -import { useState, useRef, useEffect } from '@wordpress/element'; -import { Spinner } from '@wordpress/components'; -import { addQueryArgs } from '@wordpress/url'; -import apiFetch from '@wordpress/api-fetch'; - -export default function KadencePostSelectTerms( { - value, - onChange, - source, - isMulti = false, - } ) { - const [ isLoading, setIsLoading ] = useState( true ); - const [ terms, setTerms ] = useState( [] ); - const [ page, setPage ] = useState( 1 ); - const [ hasMore, setHasMore ] = useState( false ); - const theValue = value; - useEffect( () => { - if( source && typeof(window.kadence_blocks_params.taxonomies[source]) != 'undefined' && window.kadence_blocks_params.taxonomies[source] ){ - setTerms( Array.from(window.kadence_blocks_params.taxonomies[source]) ); - setIsLoading( false ); - } else { - const options = { - source, - page, - per_page: 50, - }; - setIsLoading( true ); - apiFetch( { - path: addQueryArgs( - window.kadence_blocks_params.termEndpoint, - options - ), - } ) - .then( ( taxonomyItems ) => { - if ( ! taxonomyItems ) { - setTerms( [] ); - window.kadence_blocks_params.taxonomies[source] = []; - } else { - setTerms( taxonomyItems ); - window.kadence_blocks_params.taxonomies[source] = taxonomyItems; - } - setIsLoading( false ); - } ) - .catch( () => { - setIsLoading( false ); - setTerms( [] ); - window.kadence_blocks_params.taxonomies[source] = []; - } ); - } - }, [ source ] ); - if ( isLoading ) { - return ( - - ); - } - const customStyles = { - menuPortal: (provided) => ({ - ...provided, - zIndex: 99999999, - }) - } - return ( -
- { - if ( onUnit ) { - onUnit( event.target.value ); - } - } } - value={ unit } - disabled={ units.length === 1 } - > - { units.map( ( option, index ) => ( - - ) ) } - -
- ) } - { ! disableCustomSizes && ( - - - )} - } - {/*{reset && (*/} - {/* {*/} - {/* if (typeof reset === 'function') {*/} - {/* reset();*/} - {/* } else {*/} - {/* onReset();*/} - {/* }*/} - {/* }}*/} - {/* >*/} - {/*)}*/} - -
-
- onChange(newVal)} - min={min} - max={max} - step={step} - help={help} - allowReset={true} - initialPosition={initialPosition} - /> -
- {(onUnit || showUnit) && ( -
- -
- )} -
- - ), - ]; -} diff --git a/src/packages/components/src/range/responsive-radio-range-control/editor.scss b/src/packages/components/src/range/responsive-radio-range-control/editor.scss deleted file mode 100644 index 815c73b7d..000000000 --- a/src/packages/components/src/range/responsive-radio-range-control/editor.scss +++ /dev/null @@ -1,54 +0,0 @@ -.kadence-radio-range-control .kadence-radio-container-control.components-button-group .components-button { - flex: 0 1 1; -} -.kadence-radio-range-control .kadence-radio-container-control { - flex-grow: 1; -} -.kadence-radio-range-control .kadence-radio-container-control.components-button-group .components-button.has-icon.only-icon svg { - margin: 0; - width: 1em; - height: 1em; - font-size: 18px; -} -.kadence-radio-range-control .kadence-radio-container-control.components-button-group .components-button { - height: 32px; -} -.kadence-range-control-range .components-range-control__number .components-input-control__backdrop { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border: 1px solid var(--kb-border-color, #859CB6 ); -} -.kadence-range-control-range .components-range-control__root > span:nth-child(3) { - margin: 0; -} -.kadence-range-control .kadence-measure-control-select-wrapper .kadence-measure-control-select { - border-left: 0; -} -.kadence-radio-range-control .kadence-units.kadence-measure-control-select-wrapper { - display: block; - min-width: 24px; -} -.kadence-radio-range-control .kadence-units.kadence-measure-control-select-wrapper select { - min-width: 24px; -} -.kadence-controls-content.kadence-single-unit-control > .components-base-control .components-flex { - gap:0; -} -.kadence-controls-content.kadence-single-unit-control > .components-base-control .components-flex .components-input-control__label { - width: 100%; - height: 16px; - padding: 0; - line-height: 15px; - font-size: 7px !important; - margin: 0; - font-weight: 500; - display: block; - border: 0; - border-bottom: 1px solid var(--kb-border-color, #859CB6); - border-radius: 0; - text-align: center; - text-transform: uppercase; -} -.kadence-controls-content.kadence-single-unit-control > .components-base-control .components-flex .components-flex-item { - max-width: 100%; -} \ No newline at end of file diff --git a/src/packages/components/src/range/responsive-radio-range-control/index.js b/src/packages/components/src/range/responsive-radio-range-control/index.js deleted file mode 100644 index c59d99b7c..000000000 --- a/src/packages/components/src/range/responsive-radio-range-control/index.js +++ /dev/null @@ -1,181 +0,0 @@ -/** - * Responsive Range Component - * - */ -/** - * Internal block libraries - */ -import { useSelect, useDispatch } from '@wordpress/data'; -import { useState } from '@wordpress/element'; -import { __ } from '@wordpress/i18n'; -import { map, isEqual } from 'lodash'; -import { capitalizeFirstLetter } from '@kadence/helpers' -import RadioRangeControl from '../radio-range-control'; -import { undo, settings } from '@wordpress/icons'; -import './editor.scss'; -import { - Dashicon, - Button, - ButtonGroup, -} from '@wordpress/components'; -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function ResponsiveRadioRangeControls( { - label, - onChange, - onChangeTablet, - onChangeMobile, - mobileValue, - tabletValue, - value, - options = [], - step = 1, - max = 100, - min = 0, - unit = '', - onUnit, - defaultValue = 'default', - defaultTablet = '', - defaultMobile = '', - showUnit = false, - units = [ 'px', 'em', 'rem' ], - allowEmpty = true, - className = '', - disableCustomSizes = false, - reset, -} ) { - const [ deviceType, setDeviceType ] = useState( 'Desktop' ); - const theDevice = useSelect( ( select ) => { - return select( 'kadenceblocks/data' ).getPreviewDeviceType(); - }, [] ); - if ( theDevice !== deviceType ) { - setDeviceType( theDevice ); - } - const { - setPreviewDeviceType, - } = useDispatch( 'kadenceblocks/data' ); - const customSetPreviewDeviceType = ( device ) => { - setPreviewDeviceType( capitalizeFirstLetter( device ) ); - setDeviceType( capitalizeFirstLetter( device ) ); - }; - const onReset = () => { - if ( deviceType === 'Tablet' ) { - onChangeTablet( defaultTablet ); - } else if ( deviceType === 'Mobile' ) { - onChangeMobile( defaultMobile ); - } else { - onChange( defaultValue ); - } - } - const devices = [ - { - name: 'Desktop', - key: 'desktop', - title: , - itemClass: 'kb-desk-tab', - }, - { - name: 'Tablet', - key: 'tablet', - title: , - itemClass: 'kb-tablet-tab', - }, - { - name: 'Mobile', - key: 'mobile', - title: , - itemClass: 'kb-mobile-tab', - }, - ]; - const output = {}; - output.Mobile = ( - onChangeMobile( value, size ) } - options={ options } - defaultValue={ defaultMobile } - min={ min } - max={ max } - step={ step } - unit={ unit } - onUnit={ onUnit } - showUnit={ showUnit } - units={ units } - disableCustomSizes={ disableCustomSizes } - /> - ); - output.Tablet = ( - onChangeTablet( value, size ) } - options={ options } - defaultValue ={ defaultTablet } - min={ min } - max={ max } - step={ step } - unit={ unit } - onUnit={ onUnit } - showUnit={ showUnit } - units={ units } - disableCustomSizes={ disableCustomSizes } - /> - ); - output.Desktop = ( - onChange( value, size ) } - options={ options } - defaultValue={ defaultValue } - min={ min } - max={ max } - step={ step } - unit={ unit } - onUnit={ onUnit } - showUnit={ showUnit } - units={ units } - disableCustomSizes={ disableCustomSizes } - /> - ); - return [ - onChange && onChangeTablet && onChangeMobile && ( -
-
- { label && ( - { label } - ) } - { reset && ( - - ) } - - { map( devices, ( { name, key, title, itemClass } ) => ( - - ) ) } - -
- { ( output[ deviceType ] ? output[ deviceType ] : output.Desktop ) } -
- ), - ]; -} diff --git a/src/packages/components/src/range/responsive-range-control/index.js b/src/packages/components/src/range/responsive-range-control/index.js deleted file mode 100644 index acb62d1b6..000000000 --- a/src/packages/components/src/range/responsive-range-control/index.js +++ /dev/null @@ -1,178 +0,0 @@ -/** - * Responsive Range Component - * - */ -/** - * Internal block libraries - */ -import { useSelect, useDispatch } from '@wordpress/data'; -import { useState } from '@wordpress/element'; -import { __ } from '@wordpress/i18n'; -import { map, isEqual } from 'lodash'; -import { undo } from '@wordpress/icons'; -import { capitalizeFirstLetter } from '@kadence/helpers'; -import RangeControl from '../range-control'; - -import { Dashicon, Button, ButtonGroup } from '@wordpress/components'; - -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function ResponsiveRangeControls({ - label, - onChange, - onChangeTablet, - onChangeMobile, - mobileValue, - tabletValue, - value, - defaultValue = '', - defaultTablet = '', - defaultMobile = '', - step = 1, - max = 100, - min = 0, - unit = '', - onUnit, - allowResponsiveUnitChange = false, - showUnit = false, - units = ['px', 'em', 'rem'], - allowEmpty = true, - className = '', - initialPosition = undefined, - reset, -}) { - const [deviceType, setDeviceType] = useState('Desktop'); - const theDevice = useSelect((select) => { - return select('kadenceblocks/data').getPreviewDeviceType(); - }, []); - if (theDevice !== deviceType) { - setDeviceType(theDevice); - } - const { setPreviewDeviceType } = useDispatch('kadenceblocks/data'); - const customSetPreviewDeviceType = (device) => { - setPreviewDeviceType(capitalizeFirstLetter(device)); - setDeviceType(capitalizeFirstLetter(device)); - }; - const onReset = () => { - if ( deviceType === 'Tablet' ) { - onChangeTablet( defaultTablet ); - } else if ( deviceType === 'Mobile' ) { - onChangeMobile( defaultMobile ); - } else { - onChange( defaultValue ); - } - } - const devices = [ - { - name: 'Desktop', - key: 'desktop', - title: , - itemClass: 'kb-desk-tab', - }, - { - name: 'Tablet', - key: 'tablet', - title: , - itemClass: 'kb-tablet-tab', - }, - { - name: 'Mobile', - key: 'mobile', - title: , - itemClass: 'kb-mobile-tab', - }, - ]; - const output = {}; - output.Mobile = ( - onChangeMobile(size)} - min={min} - max={max} - step={step} - unit={unit} - onUnit={onUnit} - showUnit={showUnit} - units={units} - lockUnits={allowResponsiveUnitChange ? false : true} - initialPosition={initialPosition} - /> - ); - output.Tablet = ( - onChangeTablet(size)} - min={min} - max={max} - step={step} - unit={unit} - onUnit={onUnit} - showUnit={showUnit} - units={units} - lockUnits={allowResponsiveUnitChange ? false : true} - initialPosition={initialPosition} - /> - ); - output.Desktop = ( - onChange(size)} - min={min} - max={max} - step={step} - unit={unit} - onUnit={onUnit} - showUnit={showUnit} - units={units} - initialPosition={initialPosition} - /> - ); - return [ - onChange && onChangeTablet && onChangeMobile && ( -
-
- {label && ( - - {label} - {reset && ( - - )} - - )} - - {map(devices, ({ name, key, title, itemClass }) => ( - - ))} - -
- {output[deviceType] ? output[deviceType] : output.Desktop} -
- ), - ]; -} diff --git a/src/packages/components/src/range/single-range-control/index.js b/src/packages/components/src/range/single-range-control/index.js deleted file mode 100644 index cac8d179a..000000000 --- a/src/packages/components/src/range/single-range-control/index.js +++ /dev/null @@ -1,103 +0,0 @@ -/** - * Responsive Range Component - * - */ - -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import RangeControl from '../range-control'; -import { - Button, - DropdownMenu, -} from '@wordpress/components'; - -import { - pxIcon, - emIcon, - remIcon, - vhIcon, - vwIcon, - percentIcon, -} from '@kadence/icons'; - -const icons = { - px: pxIcon, - em: emIcon, - rem: remIcon, - vh: vhIcon, - vw: vwIcon, - percent: percentIcon, -}; - -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function ResponsiveSingleRangeControl( { - device = 'device', - onChange, - value, - step = 1, - max = 100, - min = 0, - unit = '', - onUnit, - showUnit = false, - units = [ 'px', 'em', 'rem' ], - lockUnits = false, - className = '', - } ) { - /** - * Build Toolbar Items. - * - * @param {string} mappedUnit the unit. - * @returns {array} the unit array. - */ - const createLevelControlToolbar = ( mappedUnit ) => { - return [ { - icon: ( mappedUnit === '%' ? icons.percent : icons[ mappedUnit ] ), - isActive: unit === mappedUnit, - onClick: () => { - onUnit( mappedUnit ); - }, - } ]; - }; - const POPOVER_PROPS = { - className: 'kadence-units-popover', - }; - - return [ - onChange && ( -
- onChange( size ) } - min={ min } - max={ max } - step={ step } - /> - { ( onUnit || showUnit ) && ( -
- { ( units.length === 1 || lockUnits ) ? ( - - ) : ( - createLevelControlToolbar( singleUnit ) ) } - className={ 'kadence-units-group' } - popoverProps={ POPOVER_PROPS } - /> - ) } -
- ) } -
- ), - ]; -} diff --git a/src/packages/components/src/responsive-align-control/editor.scss b/src/packages/components/src/responsive-align-control/editor.scss deleted file mode 100644 index 40d01476d..000000000 --- a/src/packages/components/src/responsive-align-control/editor.scss +++ /dev/null @@ -1,27 +0,0 @@ -.kb-responsive-align-control-inner { - position: relative; - z-index: 0; - .components-toolbar { - border: 1px solid var(--kb-border-color, #859CB6 ); - min-height: 38px; - .components-button { - height: 36px; - padding-top: 4px; - padding-bottom: 4px; - color: #4A5568; - &.is-pressed { - color: white; - &:before { - background: var(--wp-admin-theme-color, #00669b); - } - } - } - } -} -.kb-responsive-align-justify-column .components-toolbar .components-button.has-icon, .kb-responsive-align-justify-vertical .components-toolbar .components-button.has-icon { - min-width: 28px; - &:before { - left:4px; - right:4px; - } -} \ No newline at end of file diff --git a/src/packages/components/src/responsive-align-control/index.js b/src/packages/components/src/responsive-align-control/index.js deleted file mode 100644 index 677e445cc..000000000 --- a/src/packages/components/src/responsive-align-control/index.js +++ /dev/null @@ -1,465 +0,0 @@ -/** - * Responsive Range Component - * - */ - -/** - * Internal block libraries - */ -import { useSelect, useDispatch } from '@wordpress/data'; -import { useState } from '@wordpress/element'; -import { __ } from '@wordpress/i18n'; -import { map } from 'lodash'; -import { capitalizeFirstLetter } from '@kadence/helpers' -const alignBottom = ( - - - -); - -const alignCenter = ( - - - -); - -const alignTop = ( - - - -); - -const alignStretch = ( - - - -); - -const verticalSpaceBetween = ( - - - -); -const verticalSpaceEvenly = ( - - - -); -const verticalSpaceAround = ( - - - -); -const spaceAround = ( - - - - - -); - -const spaceEvenly = ( - - - - - -); - -import { - arrowUp, - arrowLeft, - arrowRight, - arrowDown, - justifyLeft, - justifyCenter, - justifyRight, - justifySpaceBetween, - justifyStretch, -} from '@wordpress/icons'; -import { - Dashicon, - Button, - ButtonGroup, - Path, SVG -} from '@wordpress/components'; -import { AlignmentToolbar, JustifyToolbar, BlockVerticalAlignmentToolbar } from '@wordpress/blockEditor'; -import './editor.scss'; -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function ResponsiveAlignControls( { - label, - onChange, - onChangeTablet, - onChangeMobile, - mobileValue, - tabletValue, - value, - isCollapsed = false, - type = 'textAlign', - reverse = false, -} ) { - const [ deviceType, setDeviceType ] = useState( 'Desktop' ); - const theDevice = useSelect( ( select ) => { - return select( 'kadenceblocks/data' ).getPreviewDeviceType(); - }, [] ); - if ( theDevice !== deviceType ) { - setDeviceType( theDevice ); - } - const { - setPreviewDeviceType, - } = useDispatch( 'kadenceblocks/data' ); - const customSetPreviewDeviceType = ( device ) => { - setPreviewDeviceType( capitalizeFirstLetter( device ) ); - setDeviceType( capitalizeFirstLetter( device ) ); - }; - let alignmentControls = ''; - let UIComponent = AlignmentToolbar; - if ( type === 'justify' ) { - UIComponent = JustifyToolbar; - } else if ( type === 'vertical' ) { - UIComponent = BlockVerticalAlignmentToolbar; - } else if ( type === 'orientation' ) { - alignmentControls = [ - { - icon: arrowRight, - title: __( 'Horizontal Direction', 'kadence-blocks' ), - align: 'row', - }, - { - icon: arrowDown, - title: __( 'Vertical Direction', 'kadence-blocks' ), - align: 'column', - }, - { - icon: arrowLeft, - title: __( 'Horizontal Reverse', 'kadence-blocks' ), - align: 'row-reverse', - }, - { - icon: arrowUp, - title: __( 'Vertical Reverse', 'kadence-blocks' ), - align: 'column-reverse', - }, - ] - } else if ( type === 'vertical-column' ) { - alignmentControls = [ - { - icon: alignTop, - title: __( 'Top', 'kadence-blocks' ), - align: 'top', - }, - { - icon: alignCenter, - title: __( 'Middle', 'kadence-blocks' ), - align: 'middle', - }, - { - icon: alignBottom, - title: __( 'Bottom', 'kadence-blocks' ), - align: 'bottom', - }, - { - icon: alignStretch, - title: __( 'Stretch', 'kadence-blocks' ), - align: 'stretch', - }, - ] - } else if ( type === 'orientation-column' ) { - alignmentControls = [ - { - icon: arrowDown, - title: __( 'Vertical Direction', 'kadence-blocks' ), - align: 'vertical', - }, - { - icon: arrowRight, - title: __( 'Horizontal Direction', 'kadence-blocks' ), - align: 'horizontal', - }, - { - icon: arrowUp, - title: __( 'Vertical Reverse', 'kadence-blocks' ), - align: 'vertical-reverse', - }, - { - icon: arrowLeft, - title: __( 'Horizontal Reverse', 'kadence-blocks' ), - align: 'horizontal-reverse', - }, - ] - } else if ( type === 'justify-align' ) { - if ( reverse ) { - alignmentControls = [ - { - icon: justifyRight, - title: __( 'Start', 'kadence-blocks' ), - align: 'flex-start', - }, - { - icon: justifyCenter, - title: __( 'Center', 'kadence-blocks' ), - align: 'center', - }, - { - icon: justifyLeft, - title: __( 'End', 'kadence-blocks' ), - align: 'flex-end', - }, - { - icon: justifyStretch, - title: __( 'Stretch', 'kadence-blocks' ), - align: 'stretch', - }, - ] - } else { - alignmentControls = [ - { - icon: justifyLeft, - title: __( 'Start', 'kadence-blocks' ), - align: 'flex-start', - }, - { - icon: justifyCenter, - title: __( 'Center', 'kadence-blocks' ), - align: 'center', - }, - { - icon: justifyRight, - title: __( 'End', 'kadence-blocks' ), - align: 'flex-end', - }, - { - icon: justifyStretch, - title: __( 'Stretch', 'kadence-blocks' ), - align: 'stretch', - }, - ] - } - } else if ( type === 'justify-column' ) { - if ( reverse ) { - alignmentControls = [ - { - icon: justifyRight, - title: __( 'Start', 'kadence-blocks' ), - align: 'flex-start', - }, - { - icon: justifyCenter, - title: __( 'Center', 'kadence-blocks' ), - align: 'center', - }, - { - icon: justifyLeft, - title: __( 'End', 'kadence-blocks' ), - align: 'flex-end', - }, - { - icon: justifySpaceBetween, - title: __( 'Space Between', 'kadence-blocks' ), - align: 'space-between', - }, - { - icon: spaceAround, - title: __( 'Space Around', 'kadence-blocks' ), - align: 'space-around', - }, - { - icon: spaceEvenly, - title: __( 'Space Evenly', 'kadence-blocks' ), - align: 'space-evenly', - }, - ] - } else { - alignmentControls = [ - { - icon: justifyLeft, - title: __( 'Start', 'kadence-blocks' ), - align: 'flex-start', - }, - { - icon: justifyCenter, - title: __( 'Center', 'kadence-blocks' ), - align: 'center', - }, - { - icon: justifyRight, - title: __( 'End', 'kadence-blocks' ), - align: 'flex-end', - }, - { - icon: justifySpaceBetween, - title: __( 'Space Between', 'kadence-blocks' ), - align: 'space-between', - }, - { - icon: spaceAround, - title: __( 'Space Around', 'kadence-blocks' ), - align: 'space-around', - }, - { - icon: spaceEvenly, - title: __( 'Space Evenly', 'kadence-blocks' ), - align: 'space-evenly', - }, - ] - } - } else if ( type === 'justify-vertical' ) { - if ( reverse ) { - alignmentControls = [ - { - icon: alignBottom, - title: __( 'Bottom', 'kadence-blocks' ), - align: 'top', - }, - { - icon: alignCenter, - title: __( 'Middle', 'kadence-blocks' ), - align: 'middle', - }, - { - icon: alignTop, - title: __( 'Top', 'kadence-blocks' ), - align: 'bottom', - }, - { - icon: verticalSpaceBetween, - title: __( 'Space Between', 'kadence-blocks' ), - align: 'space-between', - }, - { - icon: verticalSpaceAround, - title: __( 'Space Around', 'kadence-blocks' ), - align: 'space-around', - }, - { - icon: verticalSpaceEvenly, - title: __( 'Space Evenly', 'kadence-blocks' ), - align: 'space-evenly', - }, - ] - } else { - alignmentControls = [ - { - icon: alignTop, - title: __( 'Top', 'kadence-blocks' ), - align: 'top', - }, - { - icon: alignCenter, - title: __( 'Middle', 'kadence-blocks' ), - align: 'middle', - }, - { - icon: alignBottom, - title: __( 'Bottom', 'kadence-blocks' ), - align: 'bottom', - }, - { - icon: verticalSpaceBetween, - title: __( 'Space Between', 'kadence-blocks' ), - align: 'space-between', - }, - { - icon: verticalSpaceAround, - title: __( 'Space Around', 'kadence-blocks' ), - align: 'space-around', - }, - { - icon: verticalSpaceEvenly, - title: __( 'Space Evenly', 'kadence-blocks' ), - align: 'space-evenly', - }, - ] - } - } - - const devices = [ - { - name: 'Desktop', - key: 'desktop', - title: , - itemClass: 'kb-desk-tab', - }, - { - name: 'Tablet', - key: 'tablet', - title: , - itemClass: 'kb-tablet-tab', - }, - { - name: 'Mobile', - key: 'mobile', - title: , - itemClass: 'kb-mobile-tab', - }, - ]; - const output = {}; - output.Mobile = ( - onChangeMobile( align ) } - alignmentControls={ alignmentControls ? alignmentControls : undefined } - /> - ); - output.Tablet = ( - onChangeTablet( align ) } - alignmentControls={ alignmentControls ? alignmentControls : undefined } - /> - ); - output.Desktop = ( - onChange( align ) } - alignmentControls={ alignmentControls ? alignmentControls : undefined } - /> - ); - return [ - onChange && onChangeTablet && onChangeMobile && ( -
-
- { label && ( - { label } - ) } - - { map( devices, ( { name, key, title, itemClass } ) => ( - - ) ) } - -
-
- { ( output[ deviceType ] ? output[ deviceType ] : output.Desktop ) } -
-
- ), - ]; -} diff --git a/src/packages/components/src/responsive-button-style-controls-with-states/index.js b/src/packages/components/src/responsive-button-style-controls-with-states/index.js deleted file mode 100644 index 822dc8fca..000000000 --- a/src/packages/components/src/responsive-button-style-controls-with-states/index.js +++ /dev/null @@ -1,651 +0,0 @@ -import { - HoverToggleControl, - ResponsivePopColorControl, - ResponsiveBorderControl, - ResponsiveMeasurementControls, - BoxShadowControl, - BackgroundTypeControl, - GradientControl, -} from '../'; -import { __ } from '@wordpress/i18n'; - -//a group of color controls for displaying background and/or color controls with hover and active states -export default function ResponsiveButtonStyleControlsWithStates({ - colorBase = 'color', - colorLabel = __('Color', 'kadence-blocks'), - backgroundBase = '', - backgroundLabel = __('Background', 'kadence-blocks'), - backgroundTypeBase = '', - backgroundTypeLabel = __('Type', 'kadence-blocks'), - backgroundGradientBase = '', - backgroundGradientLabel = __('Gradient', 'kadence-blocks'), - borderBase = '', - borderLabel = __('Border', 'kadence-blocks'), - borderRadiusBase = '', - borderRadiusUnitBase = '', - borderRadiusLabel = __('Border Radius', 'kadence-blocks'), - shadowBase = '', - shadowLabel = __('Box Shadow', 'kadence-blocks'), - includeActive = true, - setAttributes, - setMetaAttribute, - attributes, - setActivePreview, - activePreview, -}) { - const colorValue = attributes[colorBase]; - const colorValueTablet = attributes[colorBase + 'Tablet']; - const colorValueMobile = attributes[colorBase + 'Mobile']; - const colorValueHover = attributes[colorBase + 'Hover']; - const colorValueHoverTablet = attributes[colorBase + 'HoverTablet']; - const colorValueHoverMobile = attributes[colorBase + 'HoverMobile']; - const colorValueActive = attributes[colorBase + 'Active']; - const colorValueActiveTablet = attributes[colorBase + 'ActiveTablet']; - const colorValueActiveMobile = attributes[colorBase + 'ActiveMobile']; - const backgroundTypeValue = attributes[backgroundTypeBase]; - const backgroundTypeValueHover = attributes[backgroundTypeBase + 'Hover']; - const backgroundTypeValueActive = attributes[backgroundTypeBase + 'Active']; - const backgroundGradientValue = attributes[backgroundGradientBase]; - const backgroundGradientValueHover = attributes[backgroundGradientBase + 'Hover']; - const backgroundGradientValueActive = attributes[backgroundGradientBase + 'Active']; - const backgroundValue = attributes[backgroundBase]; - const backgroundValueTablet = attributes[backgroundBase + 'Tablet']; - const backgroundValueMobile = attributes[backgroundBase + 'Mobile']; - const backgroundValueHover = attributes[backgroundBase + 'Hover']; - const backgroundValueHoverTablet = attributes[backgroundBase + 'HoverTablet']; - const backgroundValueHoverMobile = attributes[backgroundBase + 'HoverMobile']; - const backgroundValueActive = attributes[backgroundBase + 'Active']; - const backgroundValueActiveTablet = attributes[backgroundBase + 'ActiveTablet']; - const backgroundValueActiveMobile = attributes[backgroundBase + 'ActiveMobile']; - const borderValue = attributes[borderBase]; - const borderValueTablet = attributes[borderBase + 'Tablet']; - const borderValueMobile = attributes[borderBase + 'Mobile']; - const borderValueHover = attributes[borderBase + 'Hover']; - const borderValueHoverTablet = attributes[borderBase + 'HoverTablet']; - const borderValueHoverMobile = attributes[borderBase + 'HoverMobile']; - const borderValueActive = attributes[borderBase + 'Active']; - const borderValueActiveTablet = attributes[borderBase + 'ActiveTablet']; - const borderValueActiveMobile = attributes[borderBase + 'ActiveMobile']; - const borderRadiusValue = attributes[borderRadiusBase]; - const borderRadiusValueTablet = attributes[borderRadiusBase + 'Tablet']; - const borderRadiusValueMobile = attributes[borderRadiusBase + 'Mobile']; - const borderRadiusValueHover = attributes[borderRadiusBase + 'Hover']; - const borderRadiusValueHoverTablet = attributes[borderRadiusBase + 'HoverTablet']; - const borderRadiusValueHoverMobile = attributes[borderRadiusBase + 'HoverMobile']; - const borderRadiusValueActive = attributes[borderRadiusBase + 'Active']; - const borderRadiusValueActiveTablet = attributes[borderRadiusBase + 'ActiveTablet']; - const borderRadiusValueActiveMobile = attributes[borderRadiusBase + 'ActiveMobile']; - const borderRadiusUnitValue = attributes[borderRadiusUnitBase]; - const borderRadiusUnitValueHover = attributes[borderRadiusUnitBase + 'Hover']; - const borderRadiusUnitValueActive = attributes[borderRadiusUnitBase + 'Active']; - const shadowValue = attributes[shadowBase]; - const shadowValueHover = attributes[shadowBase + 'Hover']; - const shadowValueActive = attributes[shadowBase + 'Active']; - - const saveFunction = (attributeName, value) => { - if (setMetaAttribute) { - setMetaAttribute(value, attributeName); - } else { - setAttributes({ [attributeName]: value }); - } - }; - - const saveObjectAttribute = (value, attributeName, attributes) => { - const newUpdate = attributes[attributeName].map((item, index) => { - if (0 === index) { - item = { ...item, ...value }; - } - return item; - }); - saveFunction(attributeName, newUpdate); - }; - - const normalComponents = ( - <> - saveFunction(colorBase, value)} - onChangeTablet={(value) => saveFunction(colorBase + 'Tablet', value)} - onChangeMobile={(value) => saveFunction(colorBase + 'Mobile', value)} - key={'normal'} - /> - - {backgroundBase && backgroundTypeBase && backgroundGradientBase && ( - <> - saveFunction(backgroundTypeBase, value)} - allowedTypes={['normal', 'gradient']} - /> - {'gradient' === backgroundTypeValue && ( - saveFunction(backgroundGradientBase, value)} - gradients={[]} - /> - )} - {'normal' === backgroundTypeValue && ( - saveFunction(backgroundBase, value)} - onChangeTablet={(value) => saveFunction(backgroundBase + 'Tablet', value)} - onChangeMobile={(value) => saveFunction(backgroundBase + 'Mobile', value)} - key={'normalb'} - /> - )} - - )} - {backgroundBase && !backgroundTypeBase && ( - saveFunction(backgroundBase, value)} - onChangeTablet={(value) => saveFunction(backgroundBase + 'Tablet', value)} - onChangeMobile={(value) => saveFunction(backgroundBase + 'Mobile', value)} - key={'normalb'} - /> - )} - - {borderBase && ( - saveFunction(borderBase, value)} - onChangeTablet={(value) => saveFunction(borderBase + 'Tablet', value)} - onChangeMobile={(value) => saveFunction(borderBase + 'Mobile', value)} - /> - )} - {borderRadiusBase && ( - saveFunction(borderRadiusBase, value.map(String))} - onChangeTablet={(value) => saveFunction(borderRadiusBase + 'Tablet', value.map(String))} - onChangeMobile={(value) => saveFunction(borderRadiusBase + 'Mobile', value.map(String))} - min={0} - max={borderRadiusUnitValue === 'em' || borderRadiusUnitValue === 'rem' ? 24 : 100} - step={borderRadiusUnitValue === 'em' || borderRadiusUnitValue === 'rem' ? 0.1 : 1} - unit={borderRadiusUnitValue} - units={['px', 'em', 'rem', '%']} - onUnit={(value) => saveFunction(borderRadiusUnitBase, value)} - isBorderRadius={true} - allowEmpty={true} - /> - )} - {shadowBase && ( - { - saveObjectAttribute({ color, opacity }, shadowBase, attributes); - }} - opacity={ - undefined !== shadowValue && - undefined !== shadowValue[0] && - undefined !== shadowValue[0].opacity - ? shadowValue[0].opacity - : 0.2 - } - hOffset={ - undefined !== shadowValue && - undefined !== shadowValue[0] && - undefined !== shadowValue[0].hOffset - ? shadowValue[0].hOffset - : 0 - } - vOffset={ - undefined !== shadowValue && - undefined !== shadowValue[0] && - undefined !== shadowValue[0].vOffset - ? shadowValue[0].vOffset - : 0 - } - blur={ - undefined !== shadowValue && undefined !== shadowValue[0] && undefined !== shadowValue[0].blur - ? shadowValue[0].blur - : 14 - } - spread={ - undefined !== shadowValue && undefined !== shadowValue[0] && undefined !== shadowValue[0].spread - ? shadowValue[0].spread - : 0 - } - inset={ - undefined !== shadowValue && undefined !== shadowValue[0] && undefined !== shadowValue[0].inset - ? shadowValue[0].inset - : false - } - onEnableChange={(value) => { - saveObjectAttribute({ enable: value }, shadowBase, attributes); - }} - onColorChange={(value) => { - saveObjectAttribute({ color: value }, shadowBase, attributes); - }} - onOpacityChange={(value) => { - saveObjectAttribute({ opacity: value }, shadowBase, attributes); - }} - onHOffsetChange={(value) => { - saveObjectAttribute({ hOffset: value }, shadowBase, attributes); - }} - onVOffsetChange={(value) => { - saveObjectAttribute({ vOffset: value }, shadowBase, attributes); - }} - onBlurChange={(value) => { - saveObjectAttribute({ blur: value }, shadowBase, attributes); - }} - onSpreadChange={(value) => { - saveObjectAttribute({ spread: value }, shadowBase, attributes); - }} - onInsetChange={(value) => { - saveObjectAttribute({ inset: value }, shadowBase, attributes); - }} - /> - )} - - ); - - const hoverComponents = ( - <> - saveFunction(colorBase + 'Hover', value)} - onChangeTablet={(value) => saveFunction(colorBase + 'HoverTablet', value)} - onChangeMobile={(value) => saveFunction(colorBase + 'HoverMobile', value)} - key={'hover'} - /> - - {backgroundBase && backgroundTypeBase && backgroundGradientBase && ( - <> - saveFunction(backgroundTypeBase + 'Hover', value)} - allowedTypes={['normal', 'gradient']} - /> - {'gradient' === backgroundTypeValueHover && ( - saveFunction(backgroundGradientBase + 'Hover', value)} - gradients={[]} - /> - )} - {'normal' === backgroundTypeValueHover && ( - saveFunction(backgroundBase + 'Hover', value)} - onChangeTablet={(value) => saveFunction(backgroundBase + 'HoverTablet', value)} - onChangeMobile={(value) => saveFunction(backgroundBase + 'HoverMobile', value)} - key={'hoverb'} - /> - )} - - )} - {backgroundBase && !backgroundTypeBase && ( - saveFunction(backgroundBase + 'Hover', value)} - onChangeTablet={(value) => saveFunction(backgroundBase + 'HoverTablet', value)} - onChangeMobile={(value) => saveFunction(backgroundBase + 'HoverMobile', value)} - key={'hoverb'} - /> - )} - {borderBase && ( - saveFunction(borderBase + 'Hover', value)} - onChangeTablet={(value) => saveFunction(borderBase + 'HoverTablet', value)} - onChangeMobile={(value) => saveFunction(borderBase + 'HoverMobile', value)} - /> - )} - {borderRadiusBase && ( - saveFunction(borderRadiusBase + 'Hover', value.map(String))} - onChangeTablet={(value) => saveFunction(borderRadiusBase + 'HoverTablet', value.map(String))} - onChangeMobile={(value) => saveFunction(borderRadiusBase + 'HoverMobile', value.map(String))} - min={0} - max={borderRadiusUnitValueHover === 'em' || borderRadiusUnitValueHover === 'rem' ? 24 : 100} - step={borderRadiusUnitValueHover === 'em' || borderRadiusUnitValueHover === 'rem' ? 0.1 : 1} - unit={borderRadiusUnitValueHover} - units={['px', 'em', 'rem', '%']} - onUnit={(value) => saveFunction(borderRadiusUnitBase + 'Hover', value)} - isBorderRadius={true} - allowEmpty={true} - /> - )} - {shadowBase && ( - { - saveObjectAttribute({ color, opacity }, shadowBase + 'Hover', attributes); - }} - opacity={ - undefined !== shadowValueHover && - undefined !== shadowValueHover[0] && - undefined !== shadowValueHover[0].opacity - ? shadowValueHover[0].opacity - : 0.2 - } - hOffset={ - undefined !== shadowValueHover && - undefined !== shadowValueHover[0] && - undefined !== shadowValueHover[0].hOffset - ? shadowValueHover[0].hOffset - : 0 - } - vOffset={ - undefined !== shadowValueHover && - undefined !== shadowValueHover[0] && - undefined !== shadowValueHover[0].vOffset - ? shadowValueHover[0].vOffset - : 0 - } - blur={ - undefined !== shadowValueHover && - undefined !== shadowValueHover[0] && - undefined !== shadowValueHover[0].blur - ? shadowValueHover[0].blur - : 14 - } - spread={ - undefined !== shadowValueHover && - undefined !== shadowValueHover[0] && - undefined !== shadowValueHover[0].spread - ? shadowValueHover[0].spread - : 0 - } - inset={ - undefined !== shadowValueHover && - undefined !== shadowValueHover[0] && - undefined !== shadowValueHover[0].inset - ? shadowValueHover[0].inset - : false - } - onEnableChange={(value) => { - saveObjectAttribute({ enable: value }, shadowBase + 'Hover', attributes); - }} - onColorChange={(value) => { - saveObjectAttribute({ color: value }, shadowBase + 'Hover', attributes); - }} - onOpacityChange={(value) => { - saveObjectAttribute({ opacity: value }, shadowBase + 'Hover', attributes); - }} - onHOffsetChange={(value) => { - saveObjectAttribute({ hOffset: value }, shadowBase + 'Hover', attributes); - }} - onVOffsetChange={(value) => { - saveObjectAttribute({ vOffset: value }, shadowBase + 'Hover', attributes); - }} - onBlurChange={(value) => { - saveObjectAttribute({ blur: value }, shadowBase + 'Hover', attributes); - }} - onSpreadChange={(value) => { - saveObjectAttribute({ spread: value }, shadowBase + 'Hover', attributes); - }} - onInsetChange={(value) => { - saveObjectAttribute({ inset: value }, shadowBase + 'Hover', attributes); - }} - /> - )} - - ); - - const activeComponents = includeActive ? ( - <> - saveFunction(colorBase + 'Active', value)} - onChangeTablet={(value) => saveFunction(colorBase + 'ActiveTablet', value)} - onChangeMobile={(value) => saveFunction(colorBase + 'ActiveMobile', value)} - key={'active'} - /> - - {backgroundBase && backgroundTypeBase && backgroundGradientBase && ( - <> - saveFunction(backgroundTypeBase + 'Active', value)} - allowedTypes={['normal', 'gradient']} - /> - {'gradient' === backgroundTypeValueActive && ( - saveFunction(backgroundGradientBase + 'Active', value)} - gradients={[]} - /> - )} - {'normal' === backgroundTypeValueActive && ( - saveFunction(backgroundBase + 'Active', value)} - onChangeTablet={(value) => saveFunction(backgroundBase + 'ActiveTablet', value)} - onChangeMobile={(value) => saveFunction(backgroundBase + 'ActiveMobile', value)} - key={'activeb'} - /> - )} - - )} - {backgroundBase && !backgroundTypeBase && ( - saveFunction(backgroundBase + 'Active', value)} - onChangeTablet={(value) => saveFunction(backgroundBase + 'ActiveTablet', value)} - onChangeMobile={(value) => saveFunction(backgroundBase + 'ActiveMobile', value)} - key={'activeb'} - /> - )} - {borderBase && ( - saveFunction(borderBase + 'Active', value)} - onChangeTablet={(value) => saveFunction(borderBase + 'ActiveTablet', value)} - onChangeMobile={(value) => saveFunction(borderBase + 'ActiveMobile', value)} - /> - )} - {borderRadiusBase && ( - saveFunction(borderRadiusBase + 'Active', value.map(String))} - onChangeTablet={(value) => saveFunction(borderRadiusBase + 'ActiveTablet', value.map(String))} - onChangeMobile={(value) => saveFunction(borderRadiusBase + 'ActiveMobile', value.map(String))} - min={0} - max={borderRadiusUnitValueActive === 'em' || borderRadiusUnitValueActive === 'rem' ? 24 : 100} - step={borderRadiusUnitValueActive === 'em' || borderRadiusUnitValueActive === 'rem' ? 0.1 : 1} - unit={borderRadiusUnitValueActive} - units={['px', 'em', 'rem', '%']} - onUnit={(value) => saveFunction(borderRadiusUnitBase + 'Active', value)} - isBorderRadius={true} - allowEmpty={true} - /> - )} - {shadowBase && ( - { - saveObjectAttribute({ color, opacity }, shadowBase + 'Active', attributes); - }} - opacity={ - undefined !== shadowValueActive && - undefined !== shadowValueActive[0] && - undefined !== shadowValueActive[0].opacity - ? shadowValueActive[0].opacity - : 0.2 - } - hOffset={ - undefined !== shadowValueActive && - undefined !== shadowValueActive[0] && - undefined !== shadowValueActive[0].hOffset - ? shadowValueActive[0].hOffset - : 0 - } - vOffset={ - undefined !== shadowValueActive && - undefined !== shadowValueActive[0] && - undefined !== shadowValueActive[0].vOffset - ? shadowValueActive[0].vOffset - : 0 - } - blur={ - undefined !== shadowValueActive && - undefined !== shadowValueActive[0] && - undefined !== shadowValueActive[0].blur - ? shadowValueActive[0].blur - : 14 - } - spread={ - undefined !== shadowValueActive && - undefined !== shadowValueActive[0] && - undefined !== shadowValueActive[0].spread - ? shadowValueActive[0].spread - : 0 - } - inset={ - undefined !== shadowValueActive && - undefined !== shadowValueActive[0] && - undefined !== shadowValueActive[0].inset - ? shadowValueActive[0].inset - : false - } - onEnableChange={(value) => { - saveObjectAttribute({ enable: value }, shadowBase + 'Active', attributes); - }} - onColorChange={(value) => { - saveObjectAttribute({ color: value }, shadowBase + 'Active', attributes); - }} - onOpacityChange={(value) => { - saveObjectAttribute({ opacity: value }, shadowBase + 'Active', attributes); - }} - onHOffsetChange={(value) => { - saveObjectAttribute({ hOffset: value }, shadowBase + 'Active', attributes); - }} - onVOffsetChange={(value) => { - saveObjectAttribute({ vOffset: value }, shadowBase + 'Active', attributes); - }} - onBlurChange={(value) => { - saveObjectAttribute({ blur: value }, shadowBase + 'Active', attributes); - }} - onSpreadChange={(value) => { - saveObjectAttribute({ spread: value }, shadowBase + 'Active', attributes); - }} - onInsetChange={(value) => { - saveObjectAttribute({ inset: value }, shadowBase + 'Active', attributes); - }} - /> - )} - - ) : null; - - return ( - <> - - - ); -} diff --git a/src/packages/components/src/responsive-control/editor.scss b/src/packages/components/src/responsive-control/editor.scss deleted file mode 100644 index 13b3ad8f1..000000000 --- a/src/packages/components/src/responsive-control/editor.scss +++ /dev/null @@ -1,3 +0,0 @@ -.kb-responsive-control-inner .components-select-control { - max-height: 60px; -} \ No newline at end of file diff --git a/src/packages/components/src/responsive-control/index.js b/src/packages/components/src/responsive-control/index.js deleted file mode 100644 index a5f2d3173..000000000 --- a/src/packages/components/src/responsive-control/index.js +++ /dev/null @@ -1,101 +0,0 @@ -/** - * Responsive Range Component - * - */ - -/** - * Internal block libraries - */ -import { useSelect, useDispatch } from '@wordpress/data'; -import { useState } from '@wordpress/element'; -import { __ } from '@wordpress/i18n'; -import { map } from 'lodash'; -import { capitalizeFirstLetter } from '@kadence/helpers' -import { - Dashicon, - Button, - ButtonGroup, -} from '@wordpress/components'; -/** - * Import Css - */ - import './editor.scss'; -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function ResponsiveControl( { - desktopChildren, - tabletChildren, - mobileChildren, - } ) { - const [ deviceType, setDeviceType ] = useState( 'Desktop' ); - const theDevice = useSelect( ( select ) => { - return select( 'kadenceblocks/data' ).getPreviewDeviceType(); - }, [] ); - if ( theDevice !== deviceType ) { - setDeviceType( theDevice ); - } - const { - setPreviewDeviceType, - } = useDispatch( 'kadenceblocks/data' ); - const customSetPreviewDeviceType = ( device ) => { - setPreviewDeviceType( capitalizeFirstLetter( device ) ); - setDeviceType( capitalizeFirstLetter( device ) ); - }; - const devices = [ - { - name: 'Desktop', - key: 'desktop', - label: __( 'Desktop', 'kadence-blocks' ), - title: , - itemClass: 'kb-desk-tab', - }, - { - name: 'Tablet', - key: 'tablet', - label: __( 'Tablet', 'kadence-blocks' ), - title: , - itemClass: 'kb-tablet-tab', - }, - { - name: 'Mobile', - key: 'mobile', - label: __( 'Mobile', 'kadence-blocks' ), - title: , - itemClass: 'kb-mobile-tab', - }, - ]; - const output = {}; - output.Mobile = ( - mobileChildren - ); - output.Tablet = ( - tabletChildren - ); - output.Desktop = ( - desktopChildren - ); - return ( -
-
- - { map( devices, ( { name, key, title, itemClass, label } ) => ( - - ) ) } - -
-
- { ( output[ deviceType ] ? output[ deviceType ] : output.Desktop ) } -
-
- ); -} diff --git a/src/packages/components/src/responsive-pop-color-control/index.js b/src/packages/components/src/responsive-pop-color-control/index.js deleted file mode 100644 index 1cccc414d..000000000 --- a/src/packages/components/src/responsive-pop-color-control/index.js +++ /dev/null @@ -1,78 +0,0 @@ -import SmallResponsiveControl from '../small-responsive-control'; -import PopColorControl from '../pop-color-control'; - -export default function ResponsivePopColorControl( { - label, - onChange, - onChange2, - onChange3, - onChangeTablet, - onChange2Tablet, - onChange3Tablet, - onChangeMobile, - onChange2Mobile, - onChange3Mobile, - value, - value2, - value3, - mobileValue, - mobileValue2, - mobileValue3, - tabletValue, - tabletValue2, - tabletValue3, - colorDefault, - colorDefault2, - colorDefault3, - colorDefaultTablet, - colorDefault2Tablet, - colorDefault3Tablet, - colorDefaultMobile, - colorDefault2Mobile, - colorDefault3Mobile, -} ) { - return ( - onChange( value ) } - onChange2={ onChange2 ? ( value ) => onChange2( value ) : null } - onChange3={ onChange3 ? ( value ) => onChange3( value ) : null } - colorDefault={ colorDefault } - colorDefault2={ colorDefault2 } - colorDefault3={ colorDefault3 } - /> - } - tabletChildren={ - onChangeTablet( value ) } - onChange2={ onChange2Tablet ? ( value ) => onChange2Tablet( value ) : null } - onChange3={ onChange3Tablet ? ( value ) => onChange3Tablet( value ) : null } - colorDefault={ colorDefaultTablet } - colorDefault2={ colorDefault2Tablet } - colorDefault3={ colorDefault3Tablet } - /> - } - mobileChildren={ - onChangeMobile( value ) } - onChange2={ onChange2Mobile ? ( value ) => onChange2Mobile( value ) : null } - onChange3={ onChange3Mobile ? ( value ) => onChange3Mobile( value ) : null } - colorDefault={ colorDefaultMobile } - colorDefault2={ colorDefault2Mobile } - colorDefault3={ colorDefault3Mobile } - /> - } - > - ); -} diff --git a/src/packages/components/src/responsive-radio-buttons/index.js b/src/packages/components/src/responsive-radio-buttons/index.js deleted file mode 100644 index 829fdf6c7..000000000 --- a/src/packages/components/src/responsive-radio-buttons/index.js +++ /dev/null @@ -1,78 +0,0 @@ -/** - * Radio Buttons control. - * - */ -/** - * Import Css - */ - -import SmallResponsiveControl from '../small-responsive-control'; -import KadenceRadioButtons from '../common/radio-buttons'; - -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function ResponsiveKadenceRadioButtons({ - label, - className, - hideLabel = false, - wrap = false, - allowClear = false, - help = '', - onChange, - onChangeTablet, - onChangeMobile, - value, - mobileValue, - tabletValue, - options = [], - tabletOptions = options, - mobileOptions = tabletOptions, - ...props -}) { - return ( - - } - tabletChildren={ - - } - mobileChildren={ - - } - /> - ); -} diff --git a/src/packages/components/src/responsive-select-control/index.js b/src/packages/components/src/responsive-select-control/index.js deleted file mode 100644 index 33235d042..000000000 --- a/src/packages/components/src/responsive-select-control/index.js +++ /dev/null @@ -1,41 +0,0 @@ -import SmallResponsiveControl from '../small-responsive-control'; -import { SelectControl } from '@wordpress/components'; - -export default function ResponsiveSelectControl({ - label, - onChange, - onChangeTablet, - onChangeMobile, - value, - mobileValue, - tabletValue, - options, - tabletOptions = options, - mobileOptions = tabletOptions, - help, -}) { - return ( - onChange(value)} help={help} /> - } - tabletChildren={ - onChangeTablet(value)} - help={help} - /> - } - mobileChildren={ - onChangeMobile(value)} - help={help} - /> - } - > - ); -} diff --git a/src/packages/components/src/select-child-block/editor.scss b/src/packages/components/src/select-child-block/editor.scss deleted file mode 100644 index 62b06a1f4..000000000 --- a/src/packages/components/src/select-child-block/editor.scss +++ /dev/null @@ -1,11 +0,0 @@ -.kadence-blocks-block-child-selector { - border-top: 1px solid #CBD5E0; -} -.kadence-blocks-block-child-selector .kadence-blocks-block-child-selector__button.components-button { - width: 100%; - padding: 0 16px; - height: 44px; -} -.kadence-blocks-block-child-selector .kadence-blocks-block-child-selector__button.components-button:hover { - background: rgba(237,242, 247, .4); -} diff --git a/src/packages/components/src/select-child-block/index.js b/src/packages/components/src/select-child-block/index.js deleted file mode 100644 index 6076ee0aa..000000000 --- a/src/packages/components/src/select-child-block/index.js +++ /dev/null @@ -1,59 +0,0 @@ -import { __ } from '@wordpress/i18n'; -import { Button } from '@wordpress/components'; -import { useBlockDisplayInformation, store as blockEditorStore, BlockIcon } from '@wordpress/block-editor'; -import { useSelect, useDispatch } from '@wordpress/data'; -import './editor.scss'; - -export default function SelectChildBlock({ clientId, label = null, childSlug = null }) { - const { selectBlock } = useDispatch(blockEditorStore); - const { childClientId } = useSelect((select) => { - const { getBlocksByClientId, getBlock } = select(blockEditorStore); - - const findChildRecursively = (blockId, targetSlug) => { - const block = getBlock(blockId); - if (!block) {return null;} - - for (const child of block.innerBlocks) { - if (child.name === targetSlug) { - return child.clientId; - } - const nestedResult = findChildRecursively(child.clientId, targetSlug); - if (nestedResult) { - return nestedResult; - } - } - return null; - }; - - let childId; - - if (childSlug !== null) { - childId = findChildRecursively(clientId, childSlug); - } else { - const childBlock = getBlocksByClientId(clientId)[0]?.innerBlocks[0] || null; - childId = childBlock?.clientId; - } - - return { - childClientId: childId, - }; - }, [clientId, childSlug]); - - if (childClientId === undefined) { - return null; - } - - const blockInformation = useBlockDisplayInformation(childClientId); - - return ( -
- -
- ); -} diff --git a/src/packages/components/src/select-parent-block/editor.scss b/src/packages/components/src/select-parent-block/editor.scss deleted file mode 100644 index ec14c28ac..000000000 --- a/src/packages/components/src/select-parent-block/editor.scss +++ /dev/null @@ -1,11 +0,0 @@ -.kadence-blocks-block-parent-selector { - border-top: 1px solid #CBD5E0; -} -.kadence-blocks-block-parent-selector .kadence-blocks-block-parent-selector__button.components-button { - width: 100%; - padding: 0 16px; - height: 44px; -} -.kadence-blocks-block-parent-selector .kadence-blocks-block-parent-selector__button.components-button:hover { - background: rgba(237,242, 247, .4); -} \ No newline at end of file diff --git a/src/packages/components/src/select-parent-block/index.js b/src/packages/components/src/select-parent-block/index.js deleted file mode 100644 index 048d1c88a..000000000 --- a/src/packages/components/src/select-parent-block/index.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n'; -import { Button } from '@wordpress/components'; -import { useBlockDisplayInformation, store as blockEditorStore, BlockIcon } from '@wordpress/block-editor'; -import { useSelect, useDispatch } from '@wordpress/data'; -/** - * Import Css - */ -import './editor.scss'; - -/** - * Supplying only a client ID will select the first parent block. - * - * Supplying a parentSlug will select the first parent with that slug for the given client ID. - * - * @param clientId - * @param label - * @param parentSlug - * @returns {JSX.Element|null} - * @constructor - */ -export default function SelectParentBlock({ clientId, label = null, parentSlug = null }) { - const { selectBlock } = useDispatch(blockEditorStore); - const { firstParentClientId } = useSelect((select) => { - const { getBlockParents, getBlockParentsByBlockName } = select(blockEditorStore); - - const parents = parentSlug !== null ? getBlockParentsByBlockName(clientId, parentSlug) : getBlockParents(clientId); - const parentClientId = parents[parents.length - 1]; - - return { - firstParentClientId: parentClientId, - }; - }, []); - if (firstParentClientId === undefined) { - return null; - } - const blockInformation = useBlockDisplayInformation(firstParentClientId); - return ( -
- -
- ); -} diff --git a/src/packages/components/src/select-post-from-post-type/index.js b/src/packages/components/src/select-post-from-post-type/index.js deleted file mode 100644 index be6dcbe3c..000000000 --- a/src/packages/components/src/select-post-from-post-type/index.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * WordPress dependencies - */ -import { useSelect } from '@wordpress/data'; -import { __ } from '@wordpress/i18n'; -import { SelectControl } from '@wordpress/components'; - -export default function SelectPostFromPostType(props) { - const { label, onChange, value, postType = 'post', hideLabelFromVision = false, overrideLabel = null } = props; - const { posts } = useSelect( - (selectData) => ({ - posts: selectData('core').getEntityRecords('postType', postType, { - per_page: -1, - orderby: 'title', - order: 'asc', - }), - }), - [postType] - ); - const options = [ - ...(posts || []).map((post) => ({ - label: ( overrideLabel !== null && value === post.id ) ? overrideLabel : stripTags(post.title.raw), - value: post.id, - })), - ]; - const hasSelected = value && options.some((option) => option.value === value); - if (!hasSelected && value) { - options.push({ - label: overrideLabel !== null ? overrideLabel : __('Unknown Selection', 'kadence-blocks'), - value, - }); - } - return ( - - ); -} - -// From wp-sanitize.js -function stripTags(text) { - text = text || ''; - - // Do the replacement. - const _text = text - .replace(/|$)/g, '') - .replace(/<(script|style)[^>]*>[\s\S]*?(<\/\1>|$)/gi, '') - .replace(/<\/?[a-z][\s\S]*?(>|$)/gi, ''); - - // If the initial text is not equal to the modified text, - // do the search-replace again, until there is nothing to be replaced. - if (_text !== text) { - return stripTags(_text); - } - - // Return the text with stripped tags. - return _text; -} diff --git a/src/packages/components/src/select-posts-controls/index.js b/src/packages/components/src/select-posts-controls/index.js deleted file mode 100644 index 06d90385e..000000000 --- a/src/packages/components/src/select-posts-controls/index.js +++ /dev/null @@ -1,122 +0,0 @@ -/* global wp */ - -import PropTypes from 'prop-types'; - -import { uniqBy } from 'lodash'; -import Select from 'react-select'; -import { fetchJson } from '@kadence/helpers'; - -import { addQueryArgs } from '@wordpress/url'; -import { Component } from '@wordpress/element'; - -class KadenceSelectPosts extends Component { - constructor() { - super( ...arguments ); - this.state = { - options: [], - isLoading: false, - page: 1, - hasMore: false, - }; - } - componentDidMount() { - this.fetchPostAbortController = new AbortController(); - this.fetchTerms(); - } - - componentWillUnmount() { - this.fetchPostAbortController && this.fetchPostAbortController.abort(); - } - - fetchTerms() { - const { restBase } = this.props; - const { page, options, search } = this.state; - - const query = { - page, - per_page: 10, - }; - - if ( search && search.length >= 3 ) { - query.search = search; - } - - this.setState( { isLoading: true } ); - - fetchJson( { - path: addQueryArgs( `${ restBase }/`, query ), - signal: this.fetchPostAbortController.signal, - } ).then( ( [ terms, headers ] ) => { - const newOptions = uniqBy( [ ...options, ...terms.map( term => ( { - value: term.id, - label: term.title.rendered, - } ) ) ], 'value' ); - - this.setState( { - options: newOptions, - hasMore: parseInt( headers[ 'x-wp-totalpages' ], 10 ) > page, - isLoading: false, - } ); - } ); - } - - fetchMoreTerms() { - const { page, hasMore, isLoading } = this.state; - - if ( ! hasMore || isLoading ) { - return; - } - - this.setState( { page: page + 1 }, () => this.fetchTerms() ); - } - - updateSearch( search ) { - if ( search.length >= 3 ) { - this.setState( { - search, - page: 1, - }, () => this.fetchTerms() ); - } - } - - handleChange( value ) { - const { onChange } = this.props; - this.setState( { - search: null, - page: 1, - } ); - onChange( value ); - } - - render() { - return ( -
- - this.handleChange( value ) } - id={ this.props.fieldId } - options={ this.state.options } - isMulti={ true } - classNamePrefix="kt-tax-select" - isLoading={ this.state.isLoading } - onMenuScrollToBottom={ () => this.fetchMoreTerms() } - onInputChange={ s => this.updateSearch( s ) } - maxMenuHeight={ 300 } - placeholder={ this.props.placeholder } - /> -
- ); - } -} - -KadenceSelectTerms.propTypes = { - fieldId: PropTypes.string.isRequired, - label: PropTypes.string.isRequired, - restBase: PropTypes.string.isRequired, - onChange: PropTypes.func.isRequired, -} - -export default KadenceSelectTerms; diff --git a/src/packages/components/src/shadow/responsive-shadow-control/editor.scss b/src/packages/components/src/shadow/responsive-shadow-control/editor.scss deleted file mode 100644 index 8bd93ff36..000000000 --- a/src/packages/components/src/shadow/responsive-shadow-control/editor.scss +++ /dev/null @@ -1,32 +0,0 @@ - -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label.radio-soft-inner-glow:before { - box-shadow: 0 0 5px 3px #a1afc1 inset; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label.radio-soft-outer-glow:before { - box-shadow: 0 0 5px 3px #a1afc1; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label.radio-right-offset-glow:before { - box-shadow: 4px 4px 3px 0 #a1afc1; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label.radio-bottom-offset-glow:before { - box-shadow: 0 4px 3px 0 #a1afc1; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label.radio-inner-solid:before { - box-shadow: 0 0 0 5px #a1afc1 inset; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label.radio-right-bottom-solid:before { - box-shadow: 4px 4px 0 0 #a1afc1 ; -} -.kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label.radio-top-left-solid:before { - box-shadow: -4px -4px 0 0 #a1afc1 ; -} - -.kt-box-shadow-container .kadence-radio-container-control.components-button-group .components-button.has-icon.radio-no-label:not(.radio-none):before { - content: "."; - display: block; - width: 28px; - height: 28px; - color: white; - margin: 0 auto; - border: 1px solid gray; -} diff --git a/src/packages/components/src/shadow/responsive-shadow-control/index.js b/src/packages/components/src/shadow/responsive-shadow-control/index.js deleted file mode 100644 index 182504d1b..000000000 --- a/src/packages/components/src/shadow/responsive-shadow-control/index.js +++ /dev/null @@ -1,265 +0,0 @@ -/** - * Import Externals - */ -import PopColorControl from '../../pop-color-control'; - -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import {Component, useState} from '@wordpress/element'; -import { map, isEqual } from 'lodash'; -import { useSelect, useDispatch } from '@wordpress/data'; -import { default as ShadowControl } from '../shadow-control'; -import './editor.scss'; - -import { - Dashicon, - Button, - ButtonGroup, -} from '@wordpress/components'; -import {capitalizeFirstLetter} from '@kadence/helpers'; -import RangeControl from "../../range/range-control"; -import {undo} from "@wordpress/icons"; -import KadenceRadioButtons from "../../common/radio-buttons"; -import { - shadowPresetNone, -} from "../../../../icons/src"; - -/** - * Build the BoxShadow controls - * @returns {object} BoxShadow settings. - */ -export default function ResponsiveShadowControl ( { - label, - enable = true, - color, - colorDefault, - opacity, - blur, - spread, - inset, - hOffset, - vOffset, - onColorChange, - onOpacityChange, - onBlurChange, - onHOffsetChange, - onVOffsetChange, - onEnableChange, - onSpreadChange, - onInsetChange, - className = '', - shadowType, - onArrayChange, - onApplyShadowPreset, - reset = true, -} ) { - const [ deviceType, setDeviceType ] = useState( 'Desktop' ); - const previewDevice = useSelect( ( select ) => { - return select( 'kadenceblocks/data' ).getPreviewDeviceType(); - }, [] ); - if ( previewDevice !== deviceType ) { - setDeviceType( previewDevice ); - } - const { - setPreviewDeviceType, - } = useDispatch( 'kadenceblocks/data' ); - const customSetPreviewDeviceType = ( device ) => { - setPreviewDeviceType( capitalizeFirstLetter( device ) ); - setDeviceType( capitalizeFirstLetter( device ) ); - }; - - const onReset = () => { - onEnableChange('reset'); - } - const devices = [ - { - name: 'Desktop', - key: 'desktop', - title: , - itemClass: 'kb-desk-tab', - }, - { - name: 'Tablet', - key: 'tablet', - title: , - itemClass: 'kb-tablet-tab', - }, - { - name: 'Mobile', - key: 'mobile', - title: , - itemClass: 'kb-mobile-tab', - }, - ]; - const output = {}; - output.Mobile = ( - - ); - output.Tablet = ( - - ); - output.Desktop = ( - - ); - - const presetOptions = [ - { value: 'none', label: __('None', 'kadence-blocks'), icon: shadowPresetNone }, - { value: 'soft-inner-glow', label: __('Soft Inner Glow', 'kadence-blocks'), icon: 'soft-inner-glow' }, - { value: 'soft-outer-glow', label: __('Soft Outer Glow', 'kadence-blocks'), icon: 'soft-outer-glow' }, - { value: 'right-offset-glow', label: __('Right Offset Glow', 'kadence-blocks'), icon: 'right-offset-glow' }, - { value: 'bottom-offset-glow', label: __('Bottom Offset Glow', 'kadence-blocks'), icon: 'bottom-offset-glow' }, - { value: 'inner-solid', label: __('Inner Solid', 'kadence-blocks'), icon: 'inner-solid' }, - { value: 'right-bottom-solid', label: __('Right Bottom Solid', 'kadence-blocks'), icon: 'right-bottom-solid' }, - { value: 'top-left-solid', label: __('Top Left Solid', 'kadence-blocks'), icon: 'top-left-solid' }, - ]; - const presetSettings = { - 'none': {hOffset: 0, vOffset: 0, blur: 0, spread: 0, inset: false}, - 'soft-inner-glow': {hOffset: 0, vOffset: 0, blur: 60, spread: -15, inset: true}, - 'soft-outer-glow': {hOffset: 0, vOffset: 0, blur: 60, spread: 5, inset: false}, - 'right-offset-glow': {hOffset: 20, vOffset: 20, blur: 30, spread: 0, inset: false}, - 'bottom-offset-glow': {hOffset: 0, vOffset: 35, blur: 30, spread: -5, inset: false}, - 'inner-solid': {hOffset: 0, vOffset: 0, blur: 0, spread: 15, inset: true}, - 'right-bottom-solid': {hOffset: 15, vOffset: 15, blur: 0, spread: 0, inset: false}, - 'top-left-solid': {hOffset: -15, vOffset: -15, blur: 0, spread: 0, inset: false}, - }; - - const applyPreset = (value) => { - onApplyShadowPreset({ - hOffset: presetSettings[value].hOffset, - vOffset: presetSettings[value].vOffset, - blur: presetSettings[value].blur, - spread: presetSettings[value].spread, - inset: presetSettings[value].inset, - }); - }; - - return [ - onEnableChange && ( -
-
- { label && ( - - { label } - { reset && ( - - ) } - - ) } - - { map( devices, ( { name, key, title, itemClass } ) => ( - - ) ) } - -
-
- { shadowType === 'box' && ( - { - applyPreset(value); - }} - /> - )} - - { ( output[ deviceType ] ? output[ deviceType ] : output.Desktop ) } -
- -
- ) - ]; -} diff --git a/src/packages/components/src/shadow/shadow-control/editor.scss b/src/packages/components/src/shadow/shadow-control/editor.scss deleted file mode 100644 index 70d2025da..000000000 --- a/src/packages/components/src/shadow/shadow-control/editor.scss +++ /dev/null @@ -1,38 +0,0 @@ -.kt-box-shadow-label .components-base-control.components-toggle-control, .kt-box-shadow-label .components-toggle-control .components-base-control__field { - margin-bottom: 0 !important; -} -.kt-box-shadow-label h2.kt-beside-color-label { - flex-grow: 1; - margin: 12px 0; - font-weight: 400; -} -.kt-box-shadow-label { - display: flex; - align-items: center; -} -.kt-inner-sub-section-row { - display: flex; - margin-bottom: 10px; -} -.kt-inner-sub-section { - border: 1px solid var(--kb-border-color, #859CB6 ); - border-top: 0; - padding: 25px 10px 10px 10px; - margin-bottom: 15px; - margin-top: -12px; -} -.kt-box-shadow-subset { - padding: 0 2px; - text-align: center; -} -.kt-box-shadow-subset .kt-box-shadow-title { - font-size:12px; -} - -.kt-box-shadow-subset .kt-advanced-color-settings-container { - flex-direction: column-reverse; -} -.kt-box-shadow-subset input.components-text-control__input { - padding: 0 1px; - border: 1px solid var(--kb-border-color, #859CB6 ); -} diff --git a/src/packages/components/src/shadow/shadow-control/index.js b/src/packages/components/src/shadow/shadow-control/index.js deleted file mode 100644 index 4dbc6232c..000000000 --- a/src/packages/components/src/shadow/shadow-control/index.js +++ /dev/null @@ -1,144 +0,0 @@ -/** - * BoxShadow Component - * - */ - -/** - * Import Externals - */ -import PopColorControl from '../../pop-color-control'; -/** - * Import Css - */ -import './editor.scss'; -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import { Component } from '@wordpress/element'; -import { ToggleControl } from '@wordpress/components'; -/** - * Build the Shadow controls - * @returns {object} Shadow settings. - */ -const ShadowControl = ( { - label, - enable = true, - color, - colorDefault, - opacity, - blur, - spread, - hOffset, - vOffset, - inset, - onColorChange, - onOpacityChange, - onBlurChange, - onHOffsetChange, - onVOffsetChange, - onEnableChange, - onSpreadChange, - onInsetChange, - shadowType, - onArrayChange -} ) => ( -
- { label && ( -
-

{ label }

-
- ) } -
-
-
-

{ __( 'Color', 'kadence-blocks' ) }

- onColorChange( value ) } - opacityValue={ opacity } - onOpacityChange={ value => onOpacityChange( value ) } - onArrayChange={ onArrayChange ? ( color, opacity ) => onArrayChange( color, opacity ) : undefined } - /> -
-
-

{ 'X' }

-
-
- onHOffsetChange( Number( event.target.value ) ) } - min={ -200 } - max={ 200 } - step={ 1 } - type="number" - className="components-text-control__input" - /> -
-
-
-
-

{ 'Y' }

-
-
- onVOffsetChange( Number( event.target.value ) ) } - min={ -200 } - max={ 200 } - step={ 1 } - type="number" - className="components-text-control__input" - /> -
-
-
-
-

{ 'Blur' }

-
-
- onBlurChange( Number( event.target.value ) ) } - min={ 0 } - max={ 200 } - step={ 1 } - type="number" - className="components-text-control__input" - /> -
-
-
- { shadowType === 'box' && ( -
-

{__('Spread')}

-
-
- onSpreadChange(Number(event.target.value))} - min={-200} - max={200} - step={1} - type="number" - className="components-text-control__input" - /> -
-
-
- )} -
- { shadowType === 'box' && onInsetChange && ( -
- onInsetChange( value ) } - /> -
- ) } -
-
-); -export default ShadowControl; diff --git a/src/packages/components/src/simple-web-font-loader/index.js b/src/packages/components/src/simple-web-font-loader/index.js deleted file mode 100644 index 1ba781ee6..000000000 --- a/src/packages/components/src/simple-web-font-loader/index.js +++ /dev/null @@ -1,137 +0,0 @@ -import { useState, useEffect, useRef, useCallback } from '@wordpress/element'; -import { useSelect } from '@wordpress/data'; -import PropTypes from 'prop-types'; - -if ( typeof ktgooglefonts === 'undefined' ) { - global.ktgooglefonts = []; -} - -const statuses = { - inactive: 'inactive', - active: 'active', - loading: 'loading', -}; - -const noop = () => {}; - -function WebfontLoader({ config, children, onStatus = noop }) { - const [status, setStatus] = useState(undefined); - const [mounted, setMounted] = useState(false); - const [device, setDevice] = useState(null); - const linkRef = useRef(null); - - const getPreviewDevice = useSelect( - (select) => select('kadenceblocks/data').getPreviewDeviceType(), - [] - ); - - const addFont = useCallback((font) => { - if (!ktgooglefonts.includes(font)) { - ktgooglefonts.push(font); - } - }, []); - - const handleLoading = useCallback(() => { - setStatus(statuses.loading); - }, []); - - const handleActive = useCallback(() => { - setStatus(statuses.active); - }, []); - - const handleInactive = useCallback(() => { - setStatus(statuses.inactive); - }, []); - - const loadFonts = useCallback(() => { - if (mounted && config?.google?.families?.[0]) { - const fontFamily = config.google.families[0]; - const { frames } = window; - - if (!ktgooglefonts.includes(fontFamily)) { - handleLoading(); - - const context = frames['editor-canvas']?.document || document; - - // Parse font family and variants - const fontParts = fontFamily.split(':'); - const family = fontParts[0]; - const variants = fontParts[1] ? fontParts[1].split(',') : []; - - // Build Google Fonts URL - let url = `https://fonts.googleapis.com/css?family=${family.replace(/\s+/g, '+')}`; - if (variants.length > 0) { - url += `:${variants.join(',')}`; - } - - // Check if font link already exists - const existingLink = context.querySelector(`link[href="${url}"]`); - if (existingLink) { - handleActive(); - addFont(fontFamily); - return; - } - - // Create and append link element - const link = document.createElement('link'); - link.rel = 'stylesheet'; - link.href = url; - - // Set up load/error handlers - link.onload = () => { - handleActive(); - }; - - link.onerror = () => { - handleInactive(); - }; - - context.head.appendChild(link); - linkRef.current = link; - - addFont(fontFamily); - } - } - }, [mounted, config, addFont, handleLoading, handleActive, handleInactive]); - - // Initial mount - useEffect(() => { - ktgooglefonts = []; - setMounted(true); - setDevice(getPreviewDevice); - return () => { - setMounted(false); - }; - }, []); - - // Load fonts on mount and when config changes - useEffect(() => { - loadFonts(); - }, [loadFonts]); - - // Handle status changes - useEffect(() => { - if (status !== undefined) { - onStatus(status); - } - }, [status, onStatus]); - - // Handle device changes - useEffect(() => { - if (device !== null && device !== getPreviewDevice) { - ktgooglefonts = []; - setDevice(getPreviewDevice); - loadFonts(); - } - }, [getPreviewDevice, device, loadFonts]); - - return children || null; -} - -WebfontLoader.propTypes = { - config: PropTypes.object.isRequired, - children: PropTypes.element, - onStatus: PropTypes.func, -}; - -export default WebfontLoader; diff --git a/src/packages/components/src/simple-webfont-loader/index.js b/src/packages/components/src/simple-webfont-loader/index.js deleted file mode 100644 index 1bd3c0472..000000000 --- a/src/packages/components/src/simple-webfont-loader/index.js +++ /dev/null @@ -1,59 +0,0 @@ -import { useEffect, useRef, useCallback } from '@wordpress/element'; -import { useSelect, useDispatch } from '@wordpress/data'; - -export default function SimpleWebfontLoader({ typography, children }) { - const { addWebFont } = useDispatch('kadenceblocks/data'); - const { previewDevice, isUniqueFont } = useSelect( - (select) => ({ - isUniqueFont: (value, frame) => select('kadenceblocks/data').isUniqueFont(value, frame), - previewDevice: select('kadenceblocks/data').getPreviewDeviceType(), - }), - [] - ); - - const loadFont = useCallback((fontFamily) => { - const { frames } = window; - const context = frames['editor-canvas']?.document || document; - const url = `https://fonts.googleapis.com/css?family=${fontFamily.replace(/\s+/g, '+')}`; - - const link = document.createElement('link'); - link.rel = 'stylesheet'; - link.href = url; - - context.head.appendChild(link); - return link; - }, []); - - const loadFonts = useCallback(() => { - setTimeout(() => { - if (!typography || typography.length === 0) { - return; - } - const { frames } = window; - const fontFamily = typography[0].family + (typography[0]?.variant ? ':' + typography[0].variant : ''); - const frame = frames['editor-canvas'] ? 'Desktop' : 'iframe'; - - if (fontFamily && isUniqueFont(fontFamily, frame)) { - loadFont(fontFamily); - addWebFont(fontFamily, frame); - } - }, 50); - }, [typography, isUniqueFont, addWebFont, loadFont]); - - const isInitialMount = useRef(true); - - useEffect(() => { - // Don't run on mount - if (isInitialMount.current) { - isInitialMount.current = false; - } else { - loadFonts(); - } - }, [previewDevice, loadFonts]); - - useEffect(() => { - loadFonts(); - }, [loadFonts]); - - return children || null; -} diff --git a/src/packages/components/src/single-pop-color-control/index.js b/src/packages/components/src/single-pop-color-control/index.js deleted file mode 100644 index 2108a9bcb..000000000 --- a/src/packages/components/src/single-pop-color-control/index.js +++ /dev/null @@ -1,343 +0,0 @@ -/** - * Advanced Color Control. - * - */ - -/** - * Import Icons - */ -import ColorPicker from '../color-picker'; -import ColorIcons from '../color-icons'; -import { hexToRGBA } from '@kadence/helpers'; - -import { get, map } from 'lodash'; -import { useSetting } from '@wordpress/block-editor'; -import { useState, useMemo } from '@wordpress/element'; -/** - * Internal block libraries - */ -import { __, sprintf } from '@wordpress/i18n'; -import { withSelect } from '@wordpress/data'; -import { Button, Popover, ColorIndicator, Tooltip, Dashicon } from '@wordpress/components'; - -function unConvertOpacity(value) { - let val = 100; - if (value) { - val = value * 100; - } - return val; -} - -export default function SinglePopColorControl({ - label, - alpha = true, - opacityValue = '', - opacityUnit = '', - onOpacityChange = null, - value, - onChange, - reload, - reloaded, - defaultValue, - onClassChange, - onArrayChange = null, - disableCustomColors = false, -}) { - const [isVisible, setIsVisible] = useState(false); - const [currentColor, setCurrentColor] = useState(''); - const [currentOpacity, setCurrentOpacity] = useState(opacityValue !== '' ? opacityValue : 1); - const [isPalette, setIsPalette] = useState(value && value.startsWith('palette') ? true : false); - const allColors = useSetting('color.palette'); - - // Get Kadence Blocks color configuration - const kadenceColors = useMemo(() => { - if (typeof kadence_blocks_params !== 'undefined' && kadence_blocks_params.colors) { - try { - return JSON.parse(kadence_blocks_params.colors); - } catch (e) { - return { palette: [], override: false }; - } - } - return { palette: [], override: false }; - }, []); - - // Filter colors based on override setting - const colors = useMemo(() => { - if (!allColors || !Array.isArray(allColors)) { - return []; - } - - // If override is enabled, only show custom colors (kb-palette colors) - if (kadenceColors.override === true) { - return allColors.filter((color) => color.slug && color.slug.startsWith('kb-palette')); - } - - // If override is disabled, show all colors (theme + custom) - return allColors; - }, [allColors, kadenceColors.override]); - const toggleVisible = () => { - setIsVisible(true); - }; - const toggleClose = () => { - if (isVisible === true) { - setIsVisible(false); - } - }; - if (reload) { - reloaded(true); - setTimeout(() => { - setCurrentColor(''); - setCurrentOpacity(''); - setIsPalette(false); - }, 100); - } - const convertOpacity = (value) => { - let val = 1; - if (value) { - val = value / 100; - } - return val; - }; - const convertedOpacityValue = 100 === opacityUnit ? convertOpacity(currentOpacity) : currentOpacity; - const colorVal = currentColor ? currentColor : value; - const paletteIndex = isPalette && colors && colorVal ? colorVal.match(/\d+$/)?.[0] - 1 : null; - let currentColorString = paletteIndex !== null && colors[paletteIndex] ? colors[paletteIndex].color : colorVal; - if (!isPalette && currentColorString && currentColorString.startsWith('var(')) { - currentColorString = window - .getComputedStyle(document.documentElement) - .getPropertyValue(value.replace('var(', '').split(',')[0].replace(')', '')); - } - if (currentColorString && currentColorString.startsWith('var(')) { - let temp_currentColorString = window - .getComputedStyle(document.documentElement) - .getPropertyValue(currentColorString.replace('var(', '').replace(' ', '').replace(')', '')); - if ('' === temp_currentColorString) { - temp_currentColorString = window - .getComputedStyle(document.documentElement) - .getPropertyValue( - currentColorString.replace('var(', '').replace(' ', '').split(',')[0].replace(')', '') - ); - } - currentColorString = temp_currentColorString; - } - if ('' === currentColorString) { - currentColorString = defaultValue; - } - // if ( '' !== currentColorString && this.props.onOpacityChange && ! this.state.isPalette ) { - // currentColorString = hexToRGBA( ( undefined === currentColorString ? '' : currentColorString ), ( convertedOpacityValue !== undefined && convertedOpacityValue !== '' ? convertedOpacityValue : 1 ) ); - // } - if (onOpacityChange && !isPalette) { - if ( - Number(convertedOpacityValue !== undefined && convertedOpacityValue !== '' ? convertedOpacityValue : 1) !== - 1 - ) { - currentColorString = hexToRGBA( - undefined === currentColorString ? '' : currentColorString, - convertedOpacityValue !== undefined && convertedOpacityValue !== '' ? convertedOpacityValue : 1 - ); - } - } - let previewColorString = currentColorString; - if (isPalette && colorVal) { - switch (colorVal) { - case 'palette1': - previewColorString = 'var(--global-palette1,#2B6CB0)'; - break; - case 'palette2': - previewColorString = 'var(--global-palette2,#215387)'; - break; - case 'palette3': - previewColorString = 'var(--global-palette3,#1A202C)'; - break; - case 'palette4': - previewColorString = 'var(--global-palette4,#2D3748)'; - break; - case 'palette5': - previewColorString = 'var(--global-palette5,#4A5568)'; - break; - case 'palette6': - previewColorString = 'var(--global-palette6,#718096)'; - break; - case 'palette7': - previewColorString = 'var(--global-palette7,#EDF2F7)'; - break; - case 'palette8': - previewColorString = 'var(--global-palette8,#F7FAFC)'; - break; - case 'palette9': - previewColorString = 'var(--global-palette9,#ffffff)'; - break; - } - } - const onChangeState = (tempColor, tempPalette) => { - let newColor; - let opacity = 100 === opacityUnit ? 100 : 1; - if (tempPalette) { - newColor = tempPalette; - } else if (undefined !== tempColor.rgb && undefined !== tempColor.rgb.a && 1 !== tempColor.rgb.a) { - if (onOpacityChange) { - if (tempColor.hex === 'transparent') { - newColor = '#000000'; - } else { - newColor = tempColor.hex; - } - opacity = 100 === opacityUnit ? unConvertOpacity(tempColor.rgb.a) : tempColor.rgb.a; - } else { - newColor = - 'rgba(' + - tempColor.rgb.r + - ',' + - tempColor.rgb.g + - ',' + - tempColor.rgb.b + - ',' + - tempColor.rgb.a + - ')'; - } - } else if (undefined !== tempColor.hex) { - newColor = tempColor.hex; - } else { - newColor = tempColor; - } - setCurrentColor(newColor); - setCurrentOpacity(opacity); - setIsPalette(tempPalette ? true : false); - }; - const onChangeComplete = (tempColorCom, tempPalettCom) => { - let newColor; - let opacity = 100 === opacityUnit ? 100 : 1; - if (tempPalettCom) { - newColor = tempPalettCom; - } else if (undefined !== tempColorCom.rgb && undefined !== tempColorCom.rgb.a && 1 !== tempColorCom.rgb.a) { - if (onOpacityChange) { - if (tempColorCom.hex === 'transparent') { - newColor = '#000000'; - } else { - newColor = tempColorCom.hex; - } - opacity = 100 === opacityUnit ? unConvertOpacity(tempColorCom.rgb.a) : tempColorCom.rgb.a; - } else { - newColor = - 'rgba(' + - tempColorCom.rgb.r + - ',' + - tempColorCom.rgb.g + - ',' + - tempColorCom.rgb.b + - ',' + - tempColorCom.rgb.a + - ')'; - } - } else if (undefined !== tempColorCom.hex) { - newColor = tempColorCom.hex; - } else { - newColor = tempColorCom; - } - setCurrentColor(newColor); - setCurrentOpacity(opacity); - setIsPalette(tempPalettCom ? true : false); - if (null !== onArrayChange) { - onArrayChange(newColor, opacity); - } else { - onChange(newColor); - if (null !== onOpacityChange) { - setTimeout(() => { - onOpacityChange(opacity); - }, 50); - } - } - }; - return ( -
- {isVisible && ( - - onChangeState(color, '')} - onChangeComplete={(color) => { - onChangeComplete(color, ''); - if (onClassChange) { - onClassChange(''); - } - }} - /> - {colors && ( -
- {map(colors, ({ color, slug, name }) => { - const style = { color }; - const palette = slug.replace('theme-', ''); - const isActive = - palette === value || (!slug.startsWith('theme-palette') && value === color); - return ( -
- -
- ); - })} -
- )} -
- )} - {isVisible && ( - - )} - {!isVisible && ( - - )} -
- ); -} diff --git a/src/packages/components/src/small-responsive-control/editor.scss b/src/packages/components/src/small-responsive-control/editor.scss deleted file mode 100644 index c50234730..000000000 --- a/src/packages/components/src/small-responsive-control/editor.scss +++ /dev/null @@ -1,45 +0,0 @@ -.kb-small-responsive-control .kb-small-responsive-options { - margin-bottom: 0px; - .kb-responsive-btn { - background: transparent; - border: 0; - height: auto; - border-bottom: 0; - padding: 2px 4px; - margin-bottom: 0; - outline: 0; - color: #A0AEC0; - width: auto; - font-size: 10px; - box-shadow: none; - &.is-active { - color: var( --wp-admin-theme-color, #007cba ); - background: transparent; - } - .dashicon { - width: 15px; - height: 15px; - font-size: 15px; - } - } -} -.components-button-group.kb-measure-responsive-options, .components-button-group.kb-small-responsive-options { - min-width: 68px; -} - -.kb-small-responsive-control.responsive-title-area-spacing .kadence-title-bar { - margin-bottom: 24px; -} -.kb-small-responsive-control .kb-small-responsive-options .kb-responsive-btn { - background: transparent; - border: 0; - height: auto; - border-bottom: 0; - padding: 2px 4px; - margin-bottom: 0; - outline: 0; - color: #A0AEC0; - width: auto; - font-size: 10px; - box-shadow: none; -} \ No newline at end of file diff --git a/src/packages/components/src/small-responsive-control/index.js b/src/packages/components/src/small-responsive-control/index.js deleted file mode 100644 index 00bf420eb..000000000 --- a/src/packages/components/src/small-responsive-control/index.js +++ /dev/null @@ -1,99 +0,0 @@ -/** - * Responsive Range Component - * - */ - -/** - * Internal block libraries - */ -import { useSelect, useDispatch } from '@wordpress/data'; -import { useState } from '@wordpress/element'; -import { __ } from '@wordpress/i18n'; -import { map } from 'lodash'; -import { capitalizeFirstLetter } from '@kadence/helpers' -import { - Dashicon, - Button, - ButtonGroup, -} from '@wordpress/components'; -import './editor.scss'; - -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function SmallResponsiveControl( { - label, - desktopChildren, - tabletChildren, - mobileChildren, - hasPadding = false, - } ) { - const [ deviceType, setDeviceType ] = useState( 'Desktop' ); - const theDevice = useSelect( ( select ) => { - return select( 'kadenceblocks/data' ).getPreviewDeviceType(); - }, [] ); - if ( theDevice !== deviceType ) { - setDeviceType( theDevice ); - } - const { - setPreviewDeviceType, - } = useDispatch( 'kadenceblocks/data' ); - const customSetPreviewDeviceType = ( device ) => { - setPreviewDeviceType( capitalizeFirstLetter( device ) ); - setDeviceType( capitalizeFirstLetter( device ) ); - }; - const devices = [ - { - name: 'Desktop', - title: , - itemClass: 'kb-desk-tab', - }, - { - name: 'Tablet', - title: , - itemClass: 'kb-tablet-tab', - }, - { - name: 'Mobile', - key: 'mobile', - title: , - itemClass: 'kb-mobile-tab', - }, - ]; - const output = {}; - output.Mobile = ( - mobileChildren - ); - output.Tablet = ( - tabletChildren - ); - output.Desktop = ( - desktopChildren - ); - return ( -
-
- { label && ( - { label } - ) } - - { map( devices, ( { name, key, title, itemClass } ) => ( - - ) ) } - -
-
- { ( output[ deviceType ] ? output[ deviceType ] : output.Desktop ) } -
-
- ); -} diff --git a/src/packages/components/src/step-control/editor.scss b/src/packages/components/src/step-control/editor.scss deleted file mode 100644 index 0060cd081..000000000 --- a/src/packages/components/src/step-control/editor.scss +++ /dev/null @@ -1,18 +0,0 @@ -.kb-step-control input.components-step-control__number { - height:36px; - flex-grow: 1; - text-align: center; -} -.kb-flex-center { - display: flex; - align-items: center; -} -.kb-step-control { - gap: 3px; -} -.kb-step-control .components-button.kb-step-btn { - color: #4A5568; -} -.kb-step-control .components-button.kb-step-btn:not(:hover) { - box-shadow: none; -} \ No newline at end of file diff --git a/src/packages/components/src/step-control/index.js b/src/packages/components/src/step-control/index.js deleted file mode 100644 index 9a1211694..000000000 --- a/src/packages/components/src/step-control/index.js +++ /dev/null @@ -1,72 +0,0 @@ -/** - * Step Component - * - */ - -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import { - Button, - Dashicon, -} from '@wordpress/components'; -import './editor.scss'; -import { - chevronLeftSmall, - chevronRightSmall, -} from '@wordpress/icons'; -/** - * Build the Step controls - * @returns {object} Step settings. - */ -export default function StepControls( { - label, - value, - onChange, - min, - max, - step = 1, - } ) { - const onMinus = () => { - if ( value > min ) { - onChange( value - step ); - } - }; - const onPlus = () => { - if ( value < max ) { - onChange( value + step ); - } - }; - return [ - onChange && ( -
-

{ label }

-
-
-
- ), - ]; -} diff --git a/src/packages/components/src/sub-panel-body/editor.scss b/src/packages/components/src/sub-panel-body/editor.scss deleted file mode 100644 index 9db2d4e61..000000000 --- a/src/packages/components/src/sub-panel-body/editor.scss +++ /dev/null @@ -1,23 +0,0 @@ -.kb-sub-panel { - border-radius: 0; - margin-left: -16px; - margin-right: -16px; - padding: 0 6px; - margin-bottom: 12px; - .kb-sub-panel-title { - padding: 10px; - background: #EDF2F7; - margin: 0; - border: 1px solid #CBD5E0; - border-bottom:0px; - } - .kb-inner-sub-panel { - padding: 10px 10px 0; - border: 1px solid #CBD5E0; - border-top:0px; - } -} -.components-panel__body .kb-sub-panel .kb-hover-toggle-control-tab-ui .kt-hover-tabs .components-tab-panel__tabs { - margin-left: -10px; - margin-right: -10px; -} \ No newline at end of file diff --git a/src/packages/components/src/sub-panel-body/index.js b/src/packages/components/src/sub-panel-body/index.js deleted file mode 100644 index 3897eaaca..000000000 --- a/src/packages/components/src/sub-panel-body/index.js +++ /dev/null @@ -1,17 +0,0 @@ - -import './editor.scss'; -export default function KadenceSubPanelBody( { - children, - title, -} ) { - return ( -
- { title && ( -

{ title }

- )} -
- { children } -
-
- ) -} diff --git a/src/packages/components/src/tag-select/editor.scss b/src/packages/components/src/tag-select/editor.scss deleted file mode 100644 index 952085f3b..000000000 --- a/src/packages/components/src/tag-select/editor.scss +++ /dev/null @@ -1,78 +0,0 @@ -.kb-tag-level-control .components-toolbar__control.components-button[data-subscript]:after { - line-height: 15px; - font-size: 12px; -} -.kb-tag-level-control .components-icon-button:not(:disabled).is-active:hover:after, .kb-tag-level-control .components-button:not(:disabled).is-active:hover:after { - color:#191e23; -} -.kb-tag-level-control .components-toolbar__control.components-button:before { - left: -1px; - right: 0px; -} -.kb-tag-level-control .components-icon-button.is-active, .kb-tag-level-control .components-button.is-active { - outline: none; - color: #fff; - box-shadow: none; - background: #555d66; -} -.kb-tag-level-control .components-toolbar { - width: 100%; - display: grid; - padding:0 1px; - /* autoprefixer: ignore next */ - grid-template-columns: repeat(auto-fit, minmax(20px, 1fr)); - min-height: 40px; -} -.kb-tag-level-control div.has-left-divider .components-toolbar__control.components-button[aria-label="Paragraph"] svg { - max-height: 14px; -} -.kb-tag-level-control div.has-left-divider .components-toolbar__control.components-button[aria-label="Paragraph"] svg path { - transform: translate(-2px, -1px); -} -.kb-tag-level-control .components-toolbar > div { - flex: 1; - justify-content: center; - align-items: center; -} -.kb-tag-level-control .components-toolbar>div+div.has-left-divider { - margin-left: 0; -} -.kb-tag-level-control .components-toolbar>div+div.has-left-divider:before { - top: 9px; - left: -1px; -} -.kb-tag-level-control .components-toolbar__control.components-button { - width: 100%; - min-width: 20px !important; - height: 34px; - border-radius: 2px; - padding-left: 0 !important; - padding-right: 0 !important; - svg { - width: 16px; - height: 16px; - } - &:focus:before { - box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color),inset 0 0 0 2px #fff; - outline: 2px solid transparent; - } -} -.kb-tag-level-control .kb-tag-select-control-inner { - position: relative; - z-index: 0; - .components-toolbar { - border: 1px solid var(--kb-border-color, #859CB6 ); - .components-button { - color: #4A5568; - &.is-pressed { - color: white; - &:before { - background: var(--wp-admin-theme-color, #00669b); - } - } - } - > div+div.has-left-divider:before { - background-color: var(--kb-border-color, #859CB6 ); - } - } -} \ No newline at end of file diff --git a/src/packages/components/src/tag-select/index.js b/src/packages/components/src/tag-select/index.js deleted file mode 100644 index 06aab09dd..000000000 --- a/src/packages/components/src/tag-select/index.js +++ /dev/null @@ -1,183 +0,0 @@ -/** - * Range Control - * - */ - -/** - * Internal block libraries - */ -import { __, sprintf } from '@wordpress/i18n'; -import { useInstanceId } from '@wordpress/compose'; -import { range, isEqual } from 'lodash'; -import { - Button, - ToolbarGroup, - ToolbarDropdownMenu, -} from '@wordpress/components'; -import { undo } from '@wordpress/icons'; -/** - * Import Css - */ - import './editor.scss'; -import HeadingLevelIcon from './../heading-level-icon' -import { - pxIcon, - emIcon, - remIcon, - vhIcon, - vwIcon, - percentIcon, -} from '@kadence/icons'; - -const icons = { - px: pxIcon, - em: emIcon, - rem: remIcon, - vh: vhIcon, - vw: vwIcon, - percent: percentIcon, -}; -/** - * Build the Measure controls - * @returns {object} Measure settings. - */ -export default function tagSelect( { - label, - onChange, - value = '', - className = '', - isCollapsed = false, - ariaLabel = __( 'Change HTML Tag', 'kadence-blocks' ), - reset = false, - headingOnly = false, - tagLowLevel = 1, - tagHighLevel = 7, - defaultValue = '', - onReset = () => {}, -} ) { - const level = ( value !== 'span' && value !== 'div' && value !== 'p' ? value : 2 ); - const htmlTag = ( value === 'span' || value === 'div' || value === 'p' ? value : 'heading' ); - const headingOptions = [ - [ - { - icon : , - title : __( 'Heading 1', 'kadence-blocks' ), - isActive: ( 1 === level && htmlTag && htmlTag === 'heading' ? true : false ), - onClick : () => onChange( 1 ), - }, - ], - [ - { - icon : , - title : __( 'Heading 2', 'kadence-blocks' ), - isActive: ( 2 === level && htmlTag && htmlTag === 'heading' ? true : false ), - onClick : () => onChange( 2 ), - }, - ], - [ - { - icon : , - title : __( 'Heading 3', 'kadence-blocks' ), - isActive: ( 3 === level && htmlTag && htmlTag === 'heading' ? true : false ), - onClick : () => onChange( 3 ), - }, - ], - [ - { - icon : , - title : __( 'Heading 4', 'kadence-blocks' ), - isActive: ( 4 === level && htmlTag && htmlTag === 'heading' ? true : false ), - onClick : () => onChange( 4 ), - }, - ], - [ - { - icon : , - title : __( 'Heading 5', 'kadence-blocks' ), - isActive: ( 5 === level && htmlTag && htmlTag === 'heading' ? true : false ), - onClick : () => onChange( 5 ), - }, - ], - [ - { - icon : , - title : __( 'Heading 6', 'kadence-blocks' ), - isActive: ( 6 === level && htmlTag && htmlTag === 'heading' ? true : false ), - onClick : () => onChange( 6 ), - }, - ], - [ - { - icon : , - title : __( 'Paragraph', 'kadence-blocks' ), - isActive: ( htmlTag && htmlTag === 'p' ? true : false ), - onClick : () => onChange( 'p' ), - }, - ], - [ - { - icon : , - title : __( 'Span', 'kadence-blocks' ), - isActive: ( htmlTag && htmlTag === 'span' ? true : false ), - onClick : () => onChange( 'span' ), - }, - ], - [ - { - icon : , - title : __( 'div', 'kadence-blocks' ), - isActive: ( htmlTag && htmlTag === 'div' ? true : false ), - onClick : () => onChange( 'div' ), - }, - ], - ]; - const createhtmlTagControl = ( targetLevel ) => { - return [ { - icon: , - title: sprintf( - /* translators: %d: heading level e.g: "1", "2", "3" */ - __( 'Heading %d', 'kadence-blocks' ), - targetLevel - ), - isActive: ( targetLevel === level && htmlTag && htmlTag === 'heading' ? true : false ), - onClick: () => onChange( targetLevel ), - } ]; - }; - const headingOnlyOptions = range( tagLowLevel, tagHighLevel ).map( createhtmlTagControl ); - const UIComponent = isCollapsed ? ToolbarDropdownMenu : ToolbarGroup; - return [ - onChange && ( -
- { label && ( -
- { label && ( -
- - { reset && ( -
-
- ) } -
- ) } -
- ) } -
- -
-
- ), - ]; -} diff --git a/src/packages/components/src/taxonomy-select/index.js b/src/packages/components/src/taxonomy-select/index.js deleted file mode 100644 index 502719796..000000000 --- a/src/packages/components/src/taxonomy-select/index.js +++ /dev/null @@ -1,143 +0,0 @@ -/* global wp, kadenceElementParams */ -/** - * External dependencies - */ -import Select from 'react-select'; -import { __ } from '@wordpress/i18n'; -import { useState, useEffect } from '@wordpress/element'; -import { Spinner } from '@wordpress/components'; -import { addQueryArgs } from '@wordpress/url'; -import apiFetch from '@wordpress/api-fetch'; -import KadencePostSelectTerms from '../post-select-terms-control'; -import { useInstanceId } from '@wordpress/compose'; -import { isArrayLike, has, isEmpty } from 'lodash'; -import { tryParseJSON } from '@kadence/helpers'; - -export default function TaxonomySelect( { - label, - value, - onChange, - source, - contextPost = null, - className = null, - termIsMulti = false, - taxOnly = false, - termIsOptional = false, - } ) { - const instanceId = useInstanceId( TaxonomySelect ); - const id = `inspector-taxonomy-select-control-${ instanceId }`; - const [ isLoading, setIsLoading ] = useState( true ); - const [ taxonomies, setTaxonomies ] = useState( [] ); - let taxStart = ''; - if( taxOnly || ( termIsOptional && typeof(value) == 'string' ) ) { - taxStart = value; - } else if( isArrayLike(value) && has(value, [0, 'value']) && !isEmpty(value) ) { - taxStart = value[0].value.split('|'); - } else if ( value && !isEmpty(value) ) { - taxStart = value.split('|'); - } else { - taxStart = ['']; - } - const [ tax, setTax ] = useState( typeof(taxStart) == 'object' ? taxStart[0] : taxStart ); - useEffect( () => { - let theSource = source ? source : contextPost; - if ( wp.data.select( 'core/editor' ) && ! theSource ) { - if ( kadence_blocks_params.isKadenceE && kadenceElementParams.previewPostID ) { - const postId = tryParseJSON( kadenceElementParams.previewPostID ); - theSource = postId && postId.id ? postId.id : ''; - } else { - theSource = wp.data.select( 'core/editor' ).getCurrentPostId(); - } - } - const options = { - source: theSource, - }; - setIsLoading( true ); - apiFetch( { - path: addQueryArgs( - window.kadence_blocks_params.taxonomiesEndpoint, - options - ), - } ) - .then( ( taxonomyItems ) => { - if ( ! taxonomyItems ) { - setTaxonomies( [] ); - } else { - setTaxonomies( taxonomyItems ); - } - setIsLoading( false ); - } ) - .catch( () => { - setIsLoading( false ); - setTaxonomies( [] ); - } ); - }, [ source ] ); - if ( isLoading ) { - return ( - - ); - } - const customStyles = { - menuPortal: (provided) => ({ - ...provided, - zIndex: 99999999, - }) - } - return ( -
- { label && ( - - ) } - -
-
- ) } -
- { onFontWeight && ( - - ) } - { onTextTransform && ( - onTextTransform( value ) } - /> - ) } - { fontFamily && onFontStyle && ( - - ) } -
-
- { onLetterSpacing && ( -
-
-
- - -
-
- { __( 'px' ) } -
- ) } - { fontFamily && googleFont && onFontSubset && ( - onFontSubset( value ) } - /> - ) } - { fontFamily && googleFont && onLoadGoogleFont && ( - - ) } -
-
- { onFontSize && onFontSizeType && ! fontSizeArray && ( -
- { onFontSize && ( -
- onFontSize( value ) } - tabletValue={ ( tabSize ? tabSize : '' ) } - onChangeTablet={ ( value ) => onTabSize( value ) } - mobileValue={ ( mobileSize ? mobileSize : '' ) } - onChangeMobile={ ( value ) => onMobileSize( value ) } - min={ 0 } - max={ fontSizeType !== 'px' ? 12 : 300 } - step={ fontSizeType !== 'px' ? 0.001 : 1 } - unit={ ( fontSizeType ? fontSizeType : 'px' ) } - onUnit={ ( value ) => onFontSizeType( value ) } - units={[ 'px', 'em', 'rem', 'vw' ]} - radio={ false } - compressedDevice={ true } - /> -
- ) } -
- ) } - { onLineHeight && onLineHeightType && ! fontSizeArray && ( -
-
- onLineHeight( value )} - tabletValue={( tabLineHeight ? tabLineHeight : '' )} - onChangeTablet={( value ) => onTabLineHeight( value )} - mobileValue={( mobileLineHeight ? mobileLineHeight : '' )} - onChangeMobile={( value ) => onMobileLineHeight( value )} - min={0} - max={( lineHeightType === 'px' ? 300 : 12 )} - step={( lineHeightType === 'px' ? 1 : 0.1 )} - unit={ lineHeightType ? lineHeightType : '' } - onUnit={( value ) => onLineHeightType( value )} - units={[ '-', 'px', 'em', 'rem' ]} - compressedDevice={ true } - /> -
-
- ) } -
- - ) } - /> - - ); - } -} -export default ( InlineTypographyControls ); diff --git a/src/packages/components/src/typography/text-shadow-control/index.js b/src/packages/components/src/typography/text-shadow-control/index.js deleted file mode 100644 index 97901b0ac..000000000 --- a/src/packages/components/src/typography/text-shadow-control/index.js +++ /dev/null @@ -1,98 +0,0 @@ -/** - * BoxShadow Component - * - */ - -/** - * Import Externals - */ -import PopColorControl from '../../pop-color-control'; - -/** - * Internal block libraries - */ -import { __ } from '@wordpress/i18n'; -import { Component } from '@wordpress/element'; -import { ToggleControl } from '@wordpress/components'; -/** - * Build the BoxShadow controls - * @returns {object} BoxShadow settings. - */ -const TextShadowControl = ( { label, enable = true, color, colorDefault, blur, hOffset, vOffset, onColorChange, onBlurChange, onHOffsetChange, onVOffsetChange, onEnableChange } ) => ( -
- { label && ( -
-

{ label }

- { onEnableChange && ( - onEnableChange( value ) } - /> - ) } -
- ) } - { enable && ( -
-
-
-

{ __( 'Color', 'kadence-blocks' ) }

- onColorChange( value ) } - /> -
-
-

{ 'X' }

-
-
- onHOffsetChange( Number( event.target.value ) ) } - min={ -200 } - max={ 200 } - step={ 1 } - type="number" - className="components-text-control__input" - /> -
-
-
-
-

{ 'Y' }

-
-
- onVOffsetChange( Number( event.target.value ) ) } - min={ -200 } - max={ 200 } - step={ 1 } - type="number" - className="components-text-control__input" - /> -
-
-
-
-

{ 'Blur' }

-
-
- onBlurChange( Number( event.target.value ) ) } - min={ 0 } - max={ 200 } - step={ 1 } - type="number" - className="components-text-control__input" - /> -
-
-
-
-
- ) } -
-); -export default TextShadowControl; diff --git a/src/packages/components/src/typography/typography-control/editor.scss b/src/packages/components/src/typography/typography-control/editor.scss deleted file mode 100644 index fbb110f39..000000000 --- a/src/packages/components/src/typography/typography-control/editor.scss +++ /dev/null @@ -1,55 +0,0 @@ -.typography-family-select-form-row { - z-index: 200; - position: relative; - .kt-typography__control input { - min-height: 18px; - } - .kb-react-select__indicator { - svg{ - width: 16px; - height: 16px; - } - } - .kb-react-select__input input { - min-height: 24px; - border-radius:0; - } - .kb-react-select__value-container { - padding: 0px 8px 0px 4px; - } -} -.kb-typography-control .components-base-control > .kadence-component__header, .kb-typography-control .components-base-control > .components-base-control__label { - font-size: 11px; - font-weight: 500; - text-transform: uppercase; -} -.typography-family-select-form-row { - .kb-react-select__control { - border-color: var(--kb-border-color, #859CB6 ); - min-height: 32px; - &:hover{ - border-color: var(--kb-border-dark-color, #6F8094 ); - } - } - .kb-react-select__indicator-separator { - width: 0; - } - .kb-react-select__dropdown-indicator { - color: var(--kb-border-color, #859CB6 ); - } -} - -.kb-select-style .components-input-control__backdrop:not(.specific):not(.more-specific) { - border-color: var(--kb-border-color, #859CB6 ); -} -.kb-textbox-style { - .components-base-control__label { - font-weight: 400; - } - .components-text-control__input { - border-color: var(--kb-border-color, #859CB6 ); - } - .components-input-control__backdrop:not(.specific):not(.more-specific) { - border-color: var(--kb-border-color, #859CB6 ); - } -} \ No newline at end of file diff --git a/src/packages/components/src/typography/typography-control/index.js b/src/packages/components/src/typography/typography-control/index.js deleted file mode 100644 index db3820a3c..000000000 --- a/src/packages/components/src/typography/typography-control/index.js +++ /dev/null @@ -1,738 +0,0 @@ -/** - * Typography Component - * - */ - -/** - * Internal block libraries - */ -import { __, sprintf } from '@wordpress/i18n'; -import './editor.scss'; -/** - * Import External - */ -import { capitalizeFirstLetter } from '@kadence/helpers' -import RangeControl from '../../range/range-control'; -import ResponsiveFontSizeControl from '../../font-size/responsive'; -import KadenceRadioButtons from '../../common/radio-buttons'; -import MeasurementControls from '../../measurement/measurement-control'; -import ResponsiveUnitControl from '../../unit/responsive'; -import TwoColumn from '../../panels/two-column'; -import TagSelect from '../../tag-select'; - -import Select from 'react-select'; -import { range, isEqual } from 'lodash'; -import HeadingLevelIcon from '../../heading-level-icon'; - -import { applyFilters } from '@wordpress/hooks'; - -import { Component } from '@wordpress/element'; -import { - ToolbarGroup, - ToggleControl, - SelectControl, - Button, -} from '@wordpress/components'; -import { undo } from '@wordpress/icons'; - -/** - * Build the typography controls - * @returns {object} typography settings. - */ -class TypographyControls extends Component { - constructor() { - super( ...arguments ); - this.state = { - typographyOptions: [], - typographySelectOptions: [], - typographyWeights: [], - typographyStyles: [], - typographySubsets: '', - }; - } - componentDidMount() { - const fontsarray = typeof kadence_blocks_params !== 'undefined' && kadence_blocks_params.g_font_names ? kadence_blocks_params.g_font_names.map( ( name ) => { - return { label: name, value: name, google: true }; - } ) : {}; - let options = [ - { - type: 'group', - label: __( 'Standard Fonts', 'kadence-blocks' ), - options: [ - { label: 'System Default', value: '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"', google: false }, - { label: 'Arial, Helvetica, sans-serif', value: 'Arial, Helvetica, sans-serif', google: false }, - { label: '"Arial Black", Gadget, sans-serif', value: '"Arial Black", Gadget, sans-serif', google: false }, - { label: 'Helvetica, sans-serif', value: 'Helvetica, sans-serif', google: false }, - { label: '"Comic Sans MS", cursive, sans-serif', value: '"Comic Sans MS", cursive, sans-serif', google: false }, - { label: 'Impact, Charcoal, sans-serif', value: 'Impact, Charcoal, sans-serif', google: false }, - { label: '"Lucida Sans Unicode", "Lucida Grande", sans-serif', value: '"Lucida Sans Unicode", "Lucida Grande", sans-serif', google: false }, - { label: 'Tahoma, Geneva, sans-serif', value: 'Tahoma, Geneva, sans-serif', google: false }, - { label: '"Trebuchet MS", Helvetica, sans-serif', value: '"Trebuchet MS", Helvetica, sans-serif', google: false }, - { label: 'Verdana, Geneva, sans-serif', value: 'Verdana, Geneva, sans-serif', google: false }, - { label: 'Georgia, serif', value: 'Georgia, serif', google: false }, - { label: '"Palatino Linotype", "Book Antiqua", Palatino, serif', value: '"Palatino Linotype", "Book Antiqua", Palatino, serif', google: false }, - { label: '"Times New Roman", Times, serif', value: '"Times New Roman", Times, serif', google: false }, - { label: 'Courier, monospace', value: 'Courier, monospace', google: false }, - { label: '"Lucida Console", Monaco, monospace', value: '"Lucida Console", Monaco, monospace', google: false }, - ], - }, - { - type: 'group', - label: __( 'Google Fonts', 'kadence-blocks' ), - options: fontsarray, - }, - ]; - if ( typeof kadence_blocks_params !== 'undefined' && kadence_blocks_params.c_fonts ) { - const newOptions = []; - Object.keys( kadence_blocks_params.c_fonts ).forEach(function ( font ) { - const name = kadence_blocks_params.c_fonts[font].name; - const label = kadence_blocks_params.c_fonts[font].label ? kadence_blocks_params.c_fonts[font].label : name; - const weights = []; - Object.keys( kadence_blocks_params.c_fonts[font].weights ).forEach(function ( weight ) { - weights.push( { - value: kadence_blocks_params.c_fonts[font].weights[weight], - label: kadence_blocks_params.c_fonts[font].weights[weight], - } ); - } ); - const styles = []; - Object.keys( kadence_blocks_params.c_fonts[font].styles ).forEach(function ( style ) { - styles.push( { - value: kadence_blocks_params.c_fonts[font].weights[style], - label: kadence_blocks_params.c_fonts[font].weights[style], - } ); - } ); - newOptions.push( { - label, - value: name, - google: false, - weights, - styles, - } ); - } ); - const custom_fonts = [ - { - type: 'group', - label: __( 'Custom Fonts', 'kadence-blocks' ), - options: newOptions, - }, - ]; - options = custom_fonts.concat( options ); - } - if ( typeof kadence_blocks_params !== 'undefined' && kadence_blocks_params?.isKadenceT ) { - const themeOptions = [ - { label: 'Inherit Heading Font Family', value: 'var( --global-heading-font-family, inherit )', google: false }, - { label: 'Inherit Body Font Family', value: 'var( --global-body-font-family, inherit )', google: false }, - ]; - const theme_fonts = [ - { - type: 'group', - label: __( 'Theme Global Fonts', 'kadence-blocks' ), - options: themeOptions, - }, - ]; - options = theme_fonts.concat( options ); - } - let typographyOptions = applyFilters( 'kadence.typography_options', options ); - let typographySelectOptions = [].concat.apply( [], typographyOptions.map( option => option.options ) ); - const blockConfigObject = ( kadence_blocks_params.configuration ? JSON.parse( kadence_blocks_params.configuration ) : [] ); - if ( blockConfigObject[ 'kadence/typography' ] !== undefined && typeof blockConfigObject[ 'kadence/typography' ] === 'object' ) { - if ( blockConfigObject[ 'kadence/typography' ].showAll !== undefined && ! blockConfigObject[ 'kadence/typography' ].showAll ) { - typographyOptions = blockConfigObject[ 'kadence/typography' ].choiceArray; - typographySelectOptions = blockConfigObject[ 'kadence/typography' ].choiceArray; - } - } - this.setState( { typographyOptions } ); - this.setState( { typographySelectOptions } ); - this.setTypographyOptions( typographySelectOptions ); - } - componentDidUpdate( prevProps ) { - if ( this.props.fontFamily !== prevProps.fontFamily ) { - this.setTypographyOptions( this.state.typographySelectOptions ); - } - } - setTypographyOptions( typographySelectOptions ) { - let standardWeights = [ - { value: 'inherit', label: __( 'Inherit', 'kadence-blocks' ) }, - { value: '400', label: __( 'Normal', 'kadence-blocks' ) }, - { value: 'bold', label: __( 'Bold', 'kadence-blocks' ) }, - ]; - const systemWeights = [ - { value: 'inherit', label: __( 'Inherit', 'kadence-blocks' ) }, - { value: '100', label: __( 'Thin 100', 'kadence-blocks' ) }, - { value: '200', label: __( 'Extra-Light 200', 'kadence-blocks' ) }, - { value: '300', label: __( 'Light 300', 'kadence-blocks' ) }, - { value: '400', label: __( 'Regular', 'kadence-blocks' ) }, - { value: '500', label: __( 'Medium 500', 'kadence-blocks' ) }, - { value: '600', label: __( 'Semi-Bold 600', 'kadence-blocks' ) }, - { value: '700', label: __( 'Bold 700', 'kadence-blocks' ) }, - { value: '800', label: __( 'Extra-Bold 800', 'kadence-blocks' ) }, - { value: '900', label: __( 'Ultra-Bold 900', 'kadence-blocks' ) }, - ]; - const isKadenceT = ( typeof kadence_blocks_params !== 'undefined' && kadence_blocks_params.isKadenceT ? true : false ); - const headingWeights = ( typeof kadence_blocks_params !== 'undefined' && kadence_blocks_params.headingWeights ? kadence_blocks_params.headingWeights : [] ); - const bodyWeights = ( typeof kadence_blocks_params !== 'undefined' && kadence_blocks_params.bodyWeights ? kadence_blocks_params.bodyWeights : [] ); - const buttonWeights = ( typeof kadence_blocks_params !== 'undefined' && kadence_blocks_params.buttonWeights ? kadence_blocks_params.buttonWeights : [] ); - if ( isKadenceT && this.props.fontGroup === 'heading' && headingWeights && Array.isArray( headingWeights ) && headingWeights.length ) { - standardWeights = headingWeights; - } - if ( isKadenceT && this.props.fontGroup === 'body' && bodyWeights && Array.isArray( bodyWeights ) && bodyWeights.length ) { - standardWeights = bodyWeights; - } - if ( isKadenceT && this.props.fontGroup === 'button' && buttonWeights && Array.isArray( buttonWeights ) && buttonWeights.length ) { - standardWeights = buttonWeights; - } - const standardStyles = [ - { value: 'normal', label: __( 'Normal', 'kadence-blocks' ) }, - { value: 'italic', label: __( 'Italic', 'kadence-blocks' ) }, - ]; - const activeFont = ( typographySelectOptions ? typographySelectOptions.filter( ( { value } ) => value === this.props.fontFamily ) : '' ); - let fontStandardWeights = standardWeights; - let fontStandardStyles = standardStyles; - let typographySubsets = ''; - if ( activeFont && activeFont[ 0 ] ) { - if ( undefined !== activeFont[ 0 ].weights ) { - fontStandardWeights = activeFont[ 0 ].weights; - } - if ( undefined !== activeFont[ 0 ].styles ) { - fontStandardStyles = activeFont[ 0 ].styles; - } - } - if ( this.props.fontFamily === '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"' ) { - fontStandardWeights = systemWeights; - } else if ( this.props.fontFamily === 'var( --global-heading-font-family, inherit )' ) { - fontStandardWeights = headingWeights; - } else if ( this.props.fontFamily === 'var( --global-body-font-family, inherit )' ) { - fontStandardWeights = bodyWeights; - } else if ( this.props.googleFont && this.props.fontFamily && typeof kadence_blocks_params !== 'undefined' && kadence_blocks_params.g_fonts && kadence_blocks_params.g_fonts[ this.props.fontFamily ] ) { - fontStandardWeights = kadence_blocks_params.g_fonts[ this.props.fontFamily ].w.map( opt => ( { label: capitalizeFirstLetter( opt ), value: opt } ) ); - fontStandardStyles = kadence_blocks_params.g_fonts[ this.props.fontFamily ].i.map( opt => ( { label: capitalizeFirstLetter( opt ), value: opt } ) ); - typographySubsets = kadence_blocks_params.g_fonts[ this.props.fontFamily ].s.map( opt => ( { label: capitalizeFirstLetter( opt ), value: opt } ) ); - } - this.setState( { typographyWeights: fontStandardWeights } ); - this.setState( { typographyStyles: fontStandardStyles } ); - this.setState( { typographySubsets } ); - this.setState( { fontFamilyValue: activeFont } ); - } - render() { - const { tagLevel, - label, - htmlTag = 'heading', - tagLowLevel = 1, - tagHighLevel = 7, - lineHeight, - lineHeightType = '', - fontSize, - fontSizeType = 'px', - googleFont, - loadGoogleFont, - fontFamily, - fontVariant, - fontWeight, - fontStyle, - fontSubset, - letterSpacing, - margin, - marginControl, - padding, - paddingControl, - onTagLevel, - onTagLevelHTML, - onLineHeight, - onFontSize, - onFontFamily, - onFontVariant, - onFontWeight, - onFontStyle, - onFontSubset, - onFontChange, - onFontArrayChange, - onLoadGoogleFont, - onGoogleFont, - onLetterSpacing, - onFontSizeType, - onLineHeightType, - onPadding, - onPaddingControl, - onMargin, - onMarginControl, - loadItalic, - onLoadItalic, - textTransform, - onTextTransform, - reLetterSpacing = false, - letterSpacingType = 'px', - otherTags = [], - onLetterSpacingType, - reset, - defaultValue = { - size: [ '', '', '' ], - sizeType: 'px', - lineHeight: [ '', '', '' ], - lineType: 'px', - letterSpacing: [ '', '', '' ], - letterType: 'px', - textTransform: '', - family: '', - google: false, - style: '', - weight: '', - variant: '', - subset: '', - loadGoogle: true, - } - } = this.props; - const { controlSize, typographySelectOptions, typographyOptions, typographySubsets, typographyStyles, typographyWeights, fontFamilyValue } = this.state; - const createhtmlTagControl = ( targetLevel ) => { - return [ { - icon: , - title: sprintf( - /* translators: %d: heading level e.g: "1", "2", "3" */ - __( 'Heading %d', 'kadence-blocks' ), - targetLevel - ), - isActive: ( targetLevel === tagLevel && htmlTag && htmlTag === 'heading' ? true : false ), - onClick: () => onTagLevelHTML( targetLevel, 'heading' ), - } ]; - }; - const onReset = () => { - if ( typeof reset === 'function' ){ - reset(); - } else { - onFontArrayChange( defaultValue ); - } - } - const currentValue = { - size: fontSize, - sizeType: fontSizeType, - lineHeight, - lineType: lineHeightType, - letterSpacing, - letterType: letterSpacingType, - textTransform, - family: fontFamily, - google: googleFont, - style: fontStyle, - weight: fontWeight, - variant: fontVariant, - subset: fontSubset, - loadGoogle: loadGoogleFont, - }; - const headingOptions = range( tagLowLevel, tagHighLevel ).map( createhtmlTagControl ); - if ( otherTags.p ) { - headingOptions.push( [ - { - icon: , - title: __( 'Paragraph', 'kadence-blocks' ), - isActive: ( htmlTag && htmlTag === 'p' ? true : false ), - onClick: () => onTagLevelHTML( 2, 'p' ), - }, - ] ); - } - if ( otherTags.span ) { - headingOptions.push( [ - { - icon: , - title: __( 'Span', 'kadence-blocks' ), - isActive: ( htmlTag && htmlTag === 'span' ? true : false ), - onClick: () => onTagLevelHTML( 2, 'span' ), - }, - ] ); - } - if ( otherTags.div ) { - headingOptions.push( [ - { - icon: , - title: __( 'Div', 'kadence-blocks' ), - isActive: ( htmlTag && htmlTag === 'div' ? true : false ), - onClick: () => onTagLevelHTML( 2, 'div' ), - }, - ] ); - } - - const onTypoFontChange = ( select ) => { - if ( select === null ) { - onTypoFontClear(); - } else { - let variant; - let weight; - let subset; - if ( select.google ) { - if ( typeof kadence_blocks_params !== 'undefined' && kadence_blocks_params.g_fonts && ! kadence_blocks_params.g_fonts[ select.value ].v.includes( 'regular' ) ) { - variant = kadence_blocks_params.g_fonts[ select.value ].v[ 0 ]; - } else { - variant = 'regular'; - } - if ( typeof kadence_blocks_params !== 'undefined' && kadence_blocks_params.g_fonts && ! kadence_blocks_params.g_fonts[ select.value ].w.includes( 'regular' ) ) { - weight = kadence_blocks_params.g_fonts[ select.value ].w[ 0 ]; - } else { - weight = '400'; - } - if ( typeof kadence_blocks_params !== 'undefined' && kadence_blocks_params.g_fonts && kadence_blocks_params.g_fonts[ select.value ].s.length > 1 ) { - subset = 'latin'; - } else { - subset = ''; - } - } else { - subset = ''; - variant = ''; - weight = undefined !== select.weights?.[0]?.value ? select.weights[0].value : 'inherit'; - } - if ( onFontArrayChange ) { - onFontArrayChange( { google: select.google, family: select.value, variant, weight, style: 'normal', subset } ); - } else { - onFontChange( select ); - onFontVariant( variant ); - onFontWeight( weight ); - onFontStyle( 'normal' ); - onFontSubset( subset ); - } - } - }; - const onTypoFontClear = () => { - if ( onFontArrayChange ) { - onFontArrayChange( { google: false, family: '', variant: '', weight: 'inherit', style: 'normal', subset: '' } ); - } else { - onGoogleFont( false ); - onFontFamily( '' ); - onFontVariant( '' ); - onFontWeight( 'inherit' ); - onFontStyle( 'normal' ); - onFontSubset( '' ); - } - }; - const onTypoFontWeightChange = ( select ) => { - if ( googleFont ) { - let variant; - if ( 'italic' === fontStyle ) { - if ( 'regular' === select ) { - variant = 'italic'; - } else { - variant = select + 'italic'; - } - } else { - variant = select; - } - if ( onFontArrayChange ) { - onFontArrayChange( { variant, weight: ( 'regular' === select ? '400' : select ) } ); - } else { - onFontVariant( variant ); - onFontWeight( ( 'regular' === select ? '400' : select ) ); - } - } else if ( onFontArrayChange ) { - onFontArrayChange( { variant: '', weight: ( 'regular' === select ? '400' : select ) } ); - } else { - onFontVariant( '' ); - onFontWeight( ( 'regular' === select ? '400' : select ) ); - } - }; - const onTypoFontStyleChange = ( select ) => { - if ( googleFont ) { - let variant; - if ( 'italic' === select ) { - if ( ! fontWeight || 'regular' === fontWeight ) { - variant = 'italic'; - } else { - variant = fontWeight + 'italic'; - } - } else { - variant = ( fontWeight ? fontWeight : 'regular' ); - } - if ( onFontArrayChange ) { - onFontArrayChange( { variant, style: select } ); - } else { - onFontVariant( variant ); - onFontStyle( select ); - } - } else if ( onFontArrayChange ) { - onFontArrayChange( { variant: '', style: select } ); - } else { - onFontVariant( '' ); - onFontStyle( select ); - } - }; - const createLevelControl = ( targetLevel ) => { - return [ { - icon: , - title: sprintf( - /* translators: %d: heading level e.g: "1", "2", "3" */ - __( 'Heading %d', 'kadence-blocks' ), - targetLevel - ), - isActive: targetLevel === tagLevel, - onClick: () => onTagLevel( targetLevel ), - } ]; - }; - const textTransformOptions = [ - { value: 'none', label: __( '-', 'kadence-blocks' ), tooltip: __( 'None', 'kadence-blocks' ) }, - { value: 'uppercase', label: __( 'AB', 'kadence-blocks' ), tooltip: __( 'Uppercase', 'kadence-blocks' ) }, - { value: 'lowercase', label: __( 'ab', 'kadence-blocks' ), tooltip: __( 'Lowercase', 'kadence-blocks' ) }, - { value: 'capitalize', label: __( 'Ab', 'kadence-blocks' ), tooltip: __( 'Capitalize', 'kadence-blocks' ) }, - ]; - const fontMin = ( fontSizeType !== 'px' ? 0.2 : 5 ); - const fontMax = ( fontSizeType !== 'px' ? 120 : 3000 ); - const fontStep = ( fontSizeType !== 'px' ? 0.001 : 1 ); - const lineMin = ( lineHeightType !== 'px' ? 0.2 : 5 ); - const lineMax = ( lineHeightType !== 'px' ? 120 : 3000 ); - const lineStep = ( lineHeightType !== 'px' ? 0.001 : 1 ); - const usingReg = typographyWeights.some(function(el) { - return el.value === 'regular'; - }); - - return ( - <> -
- { label && ( -
- -
- ) } -
- { label && ( -

{ label }

- // { label } - ) } - { reset && ( - - ) } -
- { onTagLevel && ( - <> - { onTagLevelHTML && ( - { - if ( 'div' === value || 'p' === value || 'span' === value ) { - onTagLevelHTML( 2, value ); - } else { - onTagLevelHTML( value, 'heading' ); - } - } } - /> - ) } - { ! onTagLevelHTML && ( - { - onTagLevel( value); - } } - /> - ) } - - ) } - { onFontSize && onFontSizeType && ( - onFontSize( [ value, ( fontSize && undefined !== fontSize[ 1 ] ? fontSize[ 1 ] : '' ), ( fontSize && undefined !== fontSize[ 2 ] ? fontSize[ 2 ] : '' ) ] ) } - tabletValue={ ( fontSize && undefined !== fontSize[ 1 ] ? fontSize[ 1 ] : '' ) } - onChangeTablet={ ( value ) => onFontSize( [ ( fontSize && undefined !== fontSize[ 0 ] ? fontSize[ 0 ] : '' ), value, ( fontSize && undefined !== fontSize[ 2 ] ? fontSize[ 2 ] : '' ) ] ) } - mobileValue={ ( fontSize && undefined !== fontSize[ 2 ] ? fontSize[ 2 ] : '' ) } - onChangeMobile={ ( value ) => onFontSize( [ ( fontSize && undefined !== fontSize[ 0 ] ? fontSize[ 0 ] : '' ), ( fontSize && undefined !== fontSize[ 1 ] ? fontSize[ 1 ] : '' ), value ] ) } - min={ 0 } - max={ fontMax } - step={ fontStep } - unit={ ( fontSizeType ? fontSizeType : 'px' ) } - onUnit={ ( value ) => onFontSizeType( value ) } - units={[ 'px', 'em', 'rem', 'vw' ]} - /> - ) } - { ! onTextTransform && onLineHeight && onLineHeightType && ( - onLineHeight( [ value, ( lineHeight && undefined !== lineHeight[ 1 ] ? lineHeight[ 1 ] : '' ), ( lineHeight && undefined !== lineHeight[ 2 ] ? lineHeight[ 2 ] : '' ) ] ) } - tabletValue={ ( lineHeight && undefined !== lineHeight[ 1 ] ? lineHeight[ 1 ] : '' ) } - onChangeTablet={ ( value ) => onLineHeight( [ ( lineHeight && undefined !== lineHeight[ 0 ] ? lineHeight[ 0 ] : '' ), value, ( lineHeight && undefined !== lineHeight[ 2 ] ? lineHeight[ 2 ] : '' ) ] ) } - mobileValue={ ( lineHeight && undefined !== lineHeight[ 2 ] ? lineHeight[ 2 ] : '' ) } - onChangeMobile={ ( value ) => onLineHeight( [ ( lineHeight && undefined !== lineHeight[ 0 ] ? lineHeight[ 0 ] : '' ), ( lineHeight && undefined !== lineHeight[ 1 ] ? lineHeight[ 1 ] : '' ), value ] ) } - min={ lineMin } - max={ lineMax } - step={ lineStep } - unit={ ( lineHeightType ? lineHeightType : '-' ) } - onUnit={ ( value ) => onLineHeightType( value ) } - units={ [ '-', 'px', 'em', 'rem' ] } - /> - )} - { onTextTransform && onLineHeight && onLineHeightType && ( - - onLineHeight( [ value, ( lineHeight && undefined !== lineHeight[ 1 ] ? lineHeight[ 1 ] : '' ), ( lineHeight && undefined !== lineHeight[ 2 ] ? lineHeight[ 2 ] : '' ) ] ) } - tabletValue={ ( lineHeight && undefined !== lineHeight[ 1 ] ? lineHeight[ 1 ] : '' ) } - onChangeTablet={ ( value ) => onLineHeight( [ ( lineHeight && undefined !== lineHeight[ 0 ] ? lineHeight[ 0 ] : '' ), value, ( lineHeight && undefined !== lineHeight[ 2 ] ? lineHeight[ 2 ] : '' ) ] ) } - mobileValue={ ( lineHeight && undefined !== lineHeight[ 2 ] ? lineHeight[ 2 ] : '' ) } - onChangeMobile={ ( value ) => onLineHeight( [ ( lineHeight && undefined !== lineHeight[ 0 ] ? lineHeight[ 0 ] : '' ), ( lineHeight && undefined !== lineHeight[ 1 ] ? lineHeight[ 1 ] : '' ), value ] ) } - min={ lineMin } - max={ lineMax } - step={ lineStep } - unit={ ( lineHeightType ? lineHeightType : '-' ) } - onUnit={ ( value ) => onLineHeightType( value ) } - units={ [ '-', 'px', 'em', 'rem' ] } - compressedDevice={ true } - /> - onTextTransform( value ) } - /> - - )} - { onTextTransform && ( ! onLineHeight || ! onLineHeightType ) && ( - onTextTransform( value ) } - /> - )} - { onFontFamily && onTypoFontClear && ( - <> -
-
- -
-
- { - if ( '-' === event.target.value ) { - onUnit( '' ); - } else { - onUnit( event.target.value ); - } - } } - value={ unit } - disabled={ preventUnitSelection ? true : false } - > - { units.map( ( option ) => ( - !preventUnitSelection - ? - - : - unit === option && - - ) ) } - -
-
-
- ), - ]; -} diff --git a/src/packages/components/src/unit/responsive.js b/src/packages/components/src/unit/responsive.js deleted file mode 100644 index acc5b12db..000000000 --- a/src/packages/components/src/unit/responsive.js +++ /dev/null @@ -1,200 +0,0 @@ -/** - * Responsive Range Component - * - */ - -/** - * Internal block libraries - */ - import { useSelect, useDispatch } from '@wordpress/data'; - import { useState, useRef } from '@wordpress/element'; - import { __ } from '@wordpress/i18n'; - import { map, isEqual } from 'lodash'; - import UnitControl from './index'; - import { capitalizeFirstLetter } from '@kadence/helpers'; - import { undo } from '@wordpress/icons'; - import { - Dashicon, - Button, - ButtonGroup, - DropdownMenu, - } from '@wordpress/components'; - /** - * Build the Measure controls - * @returns {object} Measure settings. - */ - export default function ResponsiveUnitControl( { - label, - onChange, - onChangeTablet, - onChangeMobile, - mobileValue, - tabletValue, - value, - units = [ 'px', 'em', 'rem' ], - onUnit, - step = 1, - max = 200, - min = 0, - unit = '', - defaultValue = [ '', '', '' ], - compressedDevice = false, - reset = true, - } ) { - const ref = useRef(); - const [ deviceType, setDeviceType ] = useState( 'Desktop' ); - const theDevice = useSelect( ( select ) => { - return select( 'kadenceblocks/data' ).getPreviewDeviceType(); - }, [] ); - if ( theDevice !== deviceType ) { - setDeviceType( theDevice ); - } - const { - setPreviewDeviceType, - } = useDispatch( 'kadenceblocks/data' ); - const customSetPreviewDeviceType = ( device ) => { - setPreviewDeviceType( capitalizeFirstLetter( device ) ); - setDeviceType( capitalizeFirstLetter( device ) ); - }; - const devices = [ - { - name: 'Desktop', - title: , - itemClass: 'kb-desk-tab', - }, - { - name: 'Tablet', - title: , - itemClass: 'kb-tablet-tab', - }, - { - name: 'Mobile', - key: 'mobile', - title: , - itemClass: 'kb-mobile-tab', - }, - ]; - const icons = { - Desktop: , - Tablet: , - Mobile: , - } - const createLevelControlToolbar = ( mappedDevice ) => { - return [ { - title: mappedDevice.name, - icon: mappedDevice.title, - isActive: deviceType === mappedDevice.name, - onClick: () => { - customSetPreviewDeviceType( mappedDevice.name ); - }, - } ]; - }; - const currentValue = [ value, tabletValue, mobileValue ]; - const onReset = () => { - if ( typeof reset === 'function' ){ - reset(); - } else if ( deviceType === 'Mobile' ) { - onChangeMobile( defaultValue[2] ); - } else if ( deviceType === 'Tablet' ) { - onChangeTablet( defaultValue[1] ); - } else { - onChange( defaultValue[0] ); - } - } - const output = {}; - output.Mobile = ( - onChangeMobile( size ) } - onUnit={ onUnit } - defaultValue={ defaultValue[2] } - units={ units } - step={ step } - max={ max } - min={ min } - unit={ unit } - preventUnitSelection={ true } - /> - ); - output.Tablet = ( - onChangeTablet( size ) } - onUnit={ onUnit } - defaultValue={ defaultValue[1] } - units={ units } - step={ step } - max={ max } - min={ min } - unit={ unit } - preventUnitSelection={ true } - /> - ); - output.Desktop = ( - onChange( size ) } - onUnit={ onUnit } - defaultValue={ defaultValue[0] } - units={ units } - step={ step } - max={ max } - min={ min } - unit={ unit } - /> - ); - return [ - onChange && onChangeTablet && onChangeMobile && ( -
-
- { label && ( -
- - { reset && ( -
-
- ) } -
- ) } - { ! compressedDevice && ( - - { map( devices, ( { name, key, title, itemClass } ) => ( - - ) ) } - - )} - { compressedDevice && ( - createLevelControlToolbar( singleDevice ) ) } - /> - ) } -
-
- { ( output[ deviceType ] ? output[ deviceType ] : output.Desktop ) } -
-
- ), - ]; - } - \ No newline at end of file diff --git a/src/packages/components/src/visualizer/block-popover.js b/src/packages/components/src/visualizer/block-popover.js deleted file mode 100644 index d2e09d8dd..000000000 --- a/src/packages/components/src/visualizer/block-popover.js +++ /dev/null @@ -1,199 +0,0 @@ -/** - * External dependencies - */ - import classnames from 'classnames'; - - /** - * WordPress dependencies - */ - import { useMergeRefs, useRefEffect } from '@wordpress/compose'; - import { Popover } from '@wordpress/components'; - import { - useContext, - createContext, - forwardRef, - useMemo, - useReducer, - useState, - useLayoutEffect, - useRef, - } from '@wordpress/element'; - export const BlockRefs = createContext( { - refs: new Map(), - callbacks: new Map(), -} ); -/** - * Allow scrolling "through" popovers over the canvas. This is only called for - * as long as the pointer is over a popover. Do not use React events because it - * will bubble through portals. - * - * @param {Object} scrollableRef - */ - function usePopoverScroll( scrollableRef ) { - return useRefEffect( - ( node ) => { - if ( ! scrollableRef ) { - return; - } - - function onWheel( event ) { - const { deltaX, deltaY } = event; - scrollableRef.current.scrollBy( deltaX, deltaY ); - } - // Tell the browser that we do not call event.preventDefault - // See https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#improving_scrolling_performance_with_passive_listeners - const options = { passive: true }; - node.addEventListener( 'wheel', onWheel, options ); - return () => { - node.removeEventListener( 'wheel', onWheel, options ); - }; - }, - [ scrollableRef ] - ); -} - - const MAX_POPOVER_RECOMPUTE_COUNTER = Number.MAX_SAFE_INTEGER; - - function BlockPopover( - { - selectedElementRef, - children, - __unstableRefreshSize, - __unstableCoverTarget = false, - __unstablePopoverSlot, - __unstableContentRef, - shift = true, - ...props - }, - ref - ) { - const selectedElement = selectedElementRef.current; - const mergedRefs = useMergeRefs( [ - ref, - usePopoverScroll( __unstableContentRef ), - ] ); - - const [ - popoverDimensionsRecomputeCounter, - forceRecomputePopoverDimensions, - ] = useReducer( - // Module is there to make sure that the counter doesn't overflow. - ( s ) => ( s + 1 ) % MAX_POPOVER_RECOMPUTE_COUNTER, - 0 - ); - - // When blocks are moved up/down, they are animated to their new position by - // updating the `transform` property manually (i.e. without using CSS - // transitions or animations). The animation, which can also scroll the block - // editor, can sometimes cause the position of the Popover to get out of sync. - // A MutationObserver is therefore used to make sure that changes to the - // selectedElement's attribute (i.e. `transform`) can be tracked and used to - // trigger the Popover to rerender. - useLayoutEffect( () => { - if ( ! selectedElement ) { - return; - } - - const observer = new window.MutationObserver( - forceRecomputePopoverDimensions - ); - observer.observe( selectedElement, { attributes: true } ); - - return () => { - observer.disconnect(); - }; - }, [ selectedElement ] ); - - const style = useMemo( () => { - if ( - // popoverDimensionsRecomputeCounter is by definition always equal or greater - // than 0. This check is only there to satisfy the correctness of the - // exhaustive-deps rule for the `useMemo` hook. - popoverDimensionsRecomputeCounter < 0 || - ! selectedElement - ) { - return {}; - } - - return { - position: 'absolute', - width: selectedElement.offsetWidth, - height: selectedElement.offsetHeight, - }; - }, [ - selectedElement, - __unstableRefreshSize, - popoverDimensionsRecomputeCounter, - ] ); - - const popoverAnchor = useMemo( () => { - if ( - // popoverDimensionsRecomputeCounter is by definition always equal or greater - // than 0. This check is only there to satisfy the correctness of the - // exhaustive-deps rule for the `useMemo` hook. - popoverDimensionsRecomputeCounter < 0 || - ! selectedElement - ) { - return undefined; - } - - return { - getBoundingClientRect() { - const selectedBCR = selectedElement.getBoundingClientRect(); - - // Get the biggest rectangle that encompasses completely the currently - // selected element and the last selected element: - // - for top/left coordinates, use the smaller numbers - // - for the bottom/right coordinates, use the largest numbers - const left = Math.min( - selectedBCR.left ?? Infinity - ); - const top = Math.min( - selectedBCR.top ?? Infinity - ); - const right = Math.max( - selectedBCR.right ?? -Infinity - ); - const bottom = Math.max( - selectedBCR.bottom ?? -Infinity - ); - const width = right - left; - const height = bottom - top; - - return new window.DOMRect( left, top, width, height ); - }, - ownerDocument: selectedElement.ownerDocument, - }; - }, [ - selectedElement, - popoverDimensionsRecomputeCounter, - ] ); - if ( ! selectedElement ) { - return null; - } - return ( - - { __unstableCoverTarget &&
{ children }
} - { ! __unstableCoverTarget && children } -
- ); - } - - export default forwardRef( BlockPopover ); \ No newline at end of file diff --git a/src/packages/components/src/visualizer/editor.scss b/src/packages/components/src/visualizer/editor.scss deleted file mode 100644 index 741e27043..000000000 --- a/src/packages/components/src/visualizer/editor.scss +++ /dev/null @@ -1,23 +0,0 @@ -.kb__spacing-visualizer { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - margin: 0 auto; - pointer-events: none; - box-sizing: border-box; -} -.kb__spacing-visualizer { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - opacity: 0.5; - border-color: var(--wp-admin-theme-color); - border-color: #bee4ae; - border-style: solid; - pointer-events: none; - box-sizing: border-box; -} \ No newline at end of file diff --git a/src/packages/components/src/visualizer/spacing.js b/src/packages/components/src/visualizer/spacing.js deleted file mode 100644 index 9f6c30baa..000000000 --- a/src/packages/components/src/visualizer/spacing.js +++ /dev/null @@ -1,136 +0,0 @@ -/** - * WordPress dependencies - */ - import { __ } from '@wordpress/i18n'; - import { - useState, - useRef, - useEffect, - useMemo, - } from '@wordpress/element'; - import { isShallowEqualArrays } from '@wordpress/is-shallow-equal'; -/** - * Import Css - */ - import './editor.scss'; - -export default function SpacingVisualizer( { style, type = 'inside', spacing, forceShow = false, forceHide = false, offset= true } ) { - const outputSpacing = { - top: spacing[0], - right: spacing[1], - bottom: spacing[2], - left: spacing[3], - } - const outputStyling = useMemo( () => { - - if ( type === 'outside' ) { - const spacingTop = outputSpacing?.top - ? outputSpacing?.top - : 0; - const spacingRight = outputSpacing?.right - ? outputSpacing?.right - : 0; - const spacingBottom = outputSpacing?.bottom - ? outputSpacing?.bottom - : 0; - const spacingLeft = outputSpacing?.left - ? outputSpacing?.left - : 0; - - return { - borderTopWidth: spacingTop, - borderRightWidth: spacingRight, - borderBottomWidth: spacingBottom, - borderLeftWidth: spacingLeft, - top: offset && spacingTop ? `calc(${ spacingTop } * -1)` : 0, - right: offset && spacingRight ? `calc(${ spacingRight } * -1)` : 0, - bottom: offset && spacingBottom ? `calc(${ spacingBottom } * -1)` : 0, - left: offset && spacingLeft ? `calc(${ spacingLeft } * -1)` : 0, - }; - } else if ( type === 'outsideVertical' ) { - const spacingTop = outputSpacing?.top - ? outputSpacing?.top - : 0; - const spacingRight = outputSpacing?.right - ? outputSpacing?.right - : 0; - const spacingBottom = outputSpacing?.bottom - ? outputSpacing?.bottom - : 0; - const spacingLeft = outputSpacing?.left - ? outputSpacing?.left - : 0; - - return { - borderTopWidth: spacingTop, - borderRightWidth: spacingRight, - borderBottomWidth: spacingBottom, - borderLeftWidth: spacingLeft, - top: offset && spacingTop ? `calc(${ spacingTop } * -1)` : 0, - //right: offset && spacingRight ? `calc(${ spacingRight } * -1)` : 0, - bottom: offset && spacingBottom ? `calc(${ spacingBottom } * -1)` : 0, - //left: offset && spacingLeft ? `calc(${ spacingLeft } * -1)` : 0, - }; - } - return { - borderTopWidth: outputSpacing?.top - ? outputSpacing?.top - : 0, - borderRightWidth: outputSpacing?.right - ? outputSpacing?.right - : 0, - borderBottomWidth: outputSpacing?.bottom - ? outputSpacing?.bottom - : 0, - borderLeftWidth: outputSpacing?.left - ? outputSpacing?.left - : 0, - marginLeft: style?.marginLeft - ? style.marginLeft - : 0, - marginRight: style?.marginRight - ? style.marginRight - : 0, - }; - - }, [ spacing ] ); - - const [ isActive, setIsActive ] = useState( false ); - const valueRef = useRef( spacing ); - const timeoutRef = useRef(); - - const clearTimer = () => { - if ( timeoutRef.current ) { - window.clearTimeout( timeoutRef.current ); - } - }; - useMemo( () => { - if ( forceHide ) { - valueRef.current = spacing; - } - if ( ! isShallowEqualArrays( spacing, valueRef.current ) && ! forceShow && ! forceHide ) { - setIsActive( true ); - valueRef.current = spacing; - - clearTimer(); - timeoutRef.current = setTimeout( () => { - setIsActive( false ); - }, 400 ); - } - - return () => clearTimer(); - }, [ spacing, forceShow, forceHide ] ); - - if ( ( ! isActive && ! forceShow ) || forceHide ) { - return null; - } - - return ( -
-
-
- ); -} \ No newline at end of file diff --git a/src/packages/helpers/src/advanced-get-preview-size/index.js b/src/packages/helpers/src/advanced-get-preview-size/index.js deleted file mode 100644 index 3a12c9938..000000000 --- a/src/packages/helpers/src/advanced-get-preview-size/index.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Return the proper preview size, given the current preview device - */ -export default ( device, index, desktopData, tabletData, mobileData ) => { - const desktopSize = ( undefined !== desktopData[ index ] ? desktopData[ index ] : '' ); - const tabletSize = ( undefined !== tabletData[ index ] ? tabletData[ index ] : '' ); - const mobileSize = ( undefined !== mobileData[ index ] ? mobileData[ index ] : '' ); - if ( device === 'Mobile' ) { - if ( undefined !== mobileSize && '' !== mobileSize && null !== mobileSize ) { - return mobileSize; - } else if ( undefined !== tabletSize && '' !== tabletSize && null !== tabletSize ) { - return tabletSize; - } - } else if ( device === 'Tablet' ) { - if ( undefined !== tabletSize && '' !== tabletSize && null !== tabletSize ) { - return tabletSize; - } - } - return desktopSize; -}; diff --git a/src/packages/helpers/src/allow-one-block-of-type/index.js b/src/packages/helpers/src/allow-one-block-of-type/index.js deleted file mode 100644 index 9b15d3984..000000000 --- a/src/packages/helpers/src/allow-one-block-of-type/index.js +++ /dev/null @@ -1,71 +0,0 @@ -import { dispatch, select } from '@wordpress/data'; -import { useCallback } from '@wordpress/element'; -import { __, sprintf } from '@wordpress/i18n'; - -export const allowOneBlockOfType = () => { - return useCallback(function filterDuplicateBlocks(innerBlocks = [], blockName, blockTitle) { - const foundBlocks = []; - - const isBlockEmpty = (block) => { - if (block.name === 'kadence/advanced-form-submit') { - return !block.attributes?.text || block.attributes.text === ''; - } - if (block.name === 'kadence/advanced-form-captcha') { - return block.attributes?.recaptchaSiteKey === '-' || - block.attributes?.hCaptchaSiteKey === '-' || - block.attributes?.turnstileSiteKey === '-'; - } - return false; - }; - - const findBlocks = (blocks) => { - blocks.forEach(block => { - if (block.name === blockName) { - foundBlocks.push({ - clientId: block.clientId, - isEmpty: isBlockEmpty(block) - }); - } - - if (block.innerBlocks && block.innerBlocks.length > 0) { - findBlocks(block.innerBlocks); - } - }); - }; - - findBlocks(innerBlocks); - - if (foundBlocks.length > 1) { - // Sort blocks: empty/unconfigured blocks first, then by order found - foundBlocks.sort((a, b) => { - if (a.isEmpty && !b.isEmpty) {return -1;} - if (!a.isEmpty && b.isEmpty) {return 1;} - return 0; - }); - - // Keep the first non-empty block if possible, otherwise keep the first block - const blockToKeep = foundBlocks.find(block => !block.isEmpty) || foundBlocks[0]; - - const blocksToRemove = foundBlocks.filter(block => block.clientId !== blockToKeep.clientId); - - if (blocksToRemove.length > 0) { - dispatch('core/notices').createNotice( - 'warning', - sprintf( - /* translators: %s: block title */ - __('Only one %s block is allowed.', 'kadence-blocks'), - blockTitle - ), - { - type: 'snackbar', - isDismissible: true, - } - ); - - blocksToRemove.forEach(block => { - dispatch('core/block-editor').removeBlock(block.clientId, false); - }); - } - } - }, []); -}; diff --git a/src/packages/helpers/src/array-string-to-int/index.js b/src/packages/helpers/src/array-string-to-int/index.js deleted file mode 100644 index fe619499b..000000000 --- a/src/packages/helpers/src/array-string-to-int/index.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Convert number with the type of string, into integers. - * @param {array} array of strings. - * @returns {array} with numbers as integers. - */ -export default ( array ) => { - const result = array.map(function (x) { - const parsedValue = parseInt(x); - if( isNaN( parsedValue ) ) { - return x; - } - return parsedValue; - }); - - return result; -} diff --git a/src/packages/helpers/src/block-exists/index.js b/src/packages/helpers/src/block-exists/index.js deleted file mode 100644 index 95600d1a9..000000000 --- a/src/packages/helpers/src/block-exists/index.js +++ /dev/null @@ -1,16 +0,0 @@ -export function blockExists (blocks, blockName, maxDepth = 50, depth = 0) { - for (const block of blocks) { - if (block.name === blockName) { - return true; - } - if ( - block.innerBlocks && - block.innerBlocks.length > 0 && - depth < maxDepth && - blockExists(block.innerBlocks, blockName, maxDepth, depth + 1) - ) { - return true; - } - } - return false; -}; diff --git a/src/packages/helpers/src/capital-first/index.js b/src/packages/helpers/src/capital-first/index.js deleted file mode 100644 index 3c3131dc8..000000000 --- a/src/packages/helpers/src/capital-first/index.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * function to return string with capital letter. - * @param {string} string the word string. - * @returns {string} with capital letter. - */ -export default ( string ) => { - return string.charAt( 0 ).toUpperCase() + string.slice( 1 ); -} diff --git a/src/packages/helpers/src/compare-versions/index.js b/src/packages/helpers/src/compare-versions/index.js deleted file mode 100644 index 74990e49f..000000000 --- a/src/packages/helpers/src/compare-versions/index.js +++ /dev/null @@ -1,28 +0,0 @@ -export const compareVersions = (v1, v2) => { - // Split version into parts and remove any non-numeric parts (e.g., "-RC1") - const v1parts = v1.split('.').map((part) => (isNaN(parseInt(part)) ? part : parseInt(part))).filter(n => !isNaN(n)); - const v2parts = v2.split('.').map((part) => (isNaN(parseInt(part)) ? part : parseInt(part))).filter(n => !isNaN(n)); - - // Start from the beginning of both versions and compare each part - for (let i = 0; i < Math.max(v1parts.length, v2parts.length); i++) { - // If part position is not present in v1 but is in v2 - if (i >= v1parts.length) { - // If the missing part is 0 in v2, they are equivalent in this position, continue to next part - if (v2parts[i] === 0) {continue;} - else {return -1;} // Otherwise v2 is greater here - } - // If part position is not present in v2 but is in v1 - if (i >= v2parts.length) { - // If the missing part is 0 in v1, they are equivalent in this position, continue to next part - if (v1parts[i] === 0) {continue;} - else {return 1;} // Otherwise v1 is greater - } - - // If neither version is missing a part (yet) in this position, carry out a normal comparison - if (v1parts[i] > v2parts[i]) {return 1;} - if (v1parts[i] < v2parts[i]) {return -1;} - } - - // If we made it through the loop without returning, the versions are equivalent - return 0; -} diff --git a/src/packages/helpers/src/constants/index.js b/src/packages/helpers/src/constants/index.js deleted file mode 100644 index 138aa7b1e..000000000 --- a/src/packages/helpers/src/constants/index.js +++ /dev/null @@ -1,169 +0,0 @@ -import { __ } from '@wordpress/i18n'; -export const SPACING_SIZES_MAP = [ - { - value: 'ss-auto', - output: 'var(--global-kb-spacing-auto, auto)', - label: __( 'Auto', 'kadence-blocks' ), - size: 0, - name: __( 'Auto', 'kadence-blocks' ), - }, - { - value: '0', - output: '0', - label: __( 'None', 'kadence-blocks' ), - size: 0, - name: __( 'None', 'kadence-blocks' ), - }, - { - value: 'xxs', - output: 'var(--global-kb-spacing-xxs, 0.5rem)', - size: 8, - label: __( 'XXS', 'kadence-blocks' ), - name: __( '2X Small', 'kadence-blocks' ), - }, - { - value: 'xs', - output: 'var(--global-kb-spacing-xs, 1rem)', - size: 16, - label: __( 'XS', 'kadence-blocks' ), - name: __( 'X Small', 'kadence-blocks' ), - }, - { - value: 'sm', - output: 'var(--global-kb-spacing-sm, 1.5rem)', - size: 24, - label: __( 'SM', 'kadence-blocks' ), - name: __( 'Small', 'kadence-blocks' ), - }, - { - value: 'md', - output: 'var(--global-kb-spacing-md, 2rem)', - size: 32, - label: __( 'MD', 'kadence-blocks' ), - name: __( 'Medium', 'kadence-blocks' ), - }, - { - value: 'lg', - output: 'var(--global-kb-spacing-lg, 3rem)', - size: 48, - label: __( 'LG', 'kadence-blocks' ), - name: __( 'Large', 'kadence-blocks' ), - }, - { - value: 'xl', - output: 'var(--global-kb-spacing-xl, 4rem)', - size: 64, - label: __( 'XL', 'kadence-blocks' ), - name: __( 'X Large', 'kadence-blocks' ), - }, - { - value: 'xxl', - output: 'var(--global-kb-spacing-xxl, 5rem)', - size: 80, - label: __( 'XXL', 'kadence-blocks' ), - name: __( '2X Large', 'kadence-blocks' ), - }, - { - value: '3xl', - output: 'var(--global-kb-spacing-3xl, 6.5rem)', - size: 104, - label: __( '3XL', 'kadence-blocks' ), - name: __( '3X Large', 'kadence-blocks' ), - }, - { - value: '4xl', - output: 'var(--global-kb-spacing-4xl, 8rem)', - size: 128, - label: __( '4XL', 'kadence-blocks' ), - name: __( '4X Large', 'kadence-blocks' ), - }, - { - value: '5xl', - output: 'var(--global-kb-spacing-5xl, 10rem)', - size: 160, - label: __( '5XL', 'kadence-blocks' ), - name: __( '5X Large', 'kadence-blocks' ), - }, -]; -export const FONT_SIZES_MAP = [ - { - value: 'sm', - output: 'var(--global-kb-font-size-sm, 0.9rem)', - size: 14, - label: __( 'SM', 'kadence-blocks' ), - name: __( 'Small', 'kadence-blocks' ), - }, - { - value: 'md', - output: 'var(--global-kb-font-size-md, 1.25rem)', - size: 20, - label: __( 'MD', 'kadence-blocks' ), - name: __( 'Medium', 'kadence-blocks' ), - }, - { - value: 'lg', - output: 'var(--global-kb-font-size-lg, 2rem)', - size: 32, - label: __( 'LG', 'kadence-blocks' ), - name: __( 'Large', 'kadence-blocks' ), - }, - { - value: 'xl', - output: 'var(--global-kb-font-size-xl, 3rem)', - size: 48, - label: __( 'XL', 'kadence-blocks' ), - name: __( 'X Large', 'kadence-blocks' ), - }, - { - value: 'xxl', - output: 'var(--global-kb-font-size-xxl, 4rem)', - size: 64, - label: __( '2XL', 'kadence-blocks' ), - name: __( '2X Large', 'kadence-blocks' ), - }, - { - value: '3xl', - output: 'var(--global-kb-font-size-xxxl, 5rem)', - size: 80, - label: __( '3XL', 'kadence-blocks' ), - name: __( '3X Large', 'kadence-blocks' ), - }, -]; -export const GAP_SIZES_MAP = [ - { - value: 'none', - output: 'var(--global-kb-gap-none, 0px)', - size: 0, - label: __( 'None', 'kadence-blocks' ), - name: __( 'None', 'kadence-blocks' ), - }, - { - value: 'xs', - output: 'var(--global-kb-gap-xs, 0.5rem)', - size: 8, - label: __( 'XS', 'kadence-blocks' ), - name: __( 'X Small', 'kadence-blocks' ), - }, - { - value: 'sm', - output: 'var(--global-kb-gap-sm, 1rem)', - size: 16, - label: __( 'SM', 'kadence-blocks' ), - name: __( 'Small', 'kadence-blocks' ), - }, - { - value: 'md', - output: 'var(--global-kb-gap-md, 2rem)', - size: 32, - label: __( 'MD', 'kadence-blocks' ), - name: __( 'Medium', 'kadence-blocks' ), - }, - { - value: 'lg', - output: 'var(--global-kb-gap-lg, 4rem)', - size: 64, - label: __( 'LG', 'kadence-blocks' ), - name: __( 'Large', 'kadence-blocks' ), - }, -]; -export const isRTL = (document.body && document.body.classList.contains('rtl')); diff --git a/src/packages/helpers/src/convert-color/index.js b/src/packages/helpers/src/convert-color/index.js deleted file mode 100644 index 0616cc999..000000000 --- a/src/packages/helpers/src/convert-color/index.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * function to return string with var if needed. - * @param {string} string the word string. - * @returns {string} with var if needed. - */ -import hexToRGBA from '../hex-to-rgba'; - -// eslint-disable-next-line camelcase -export default function ConvertColor( string, opacity = null ) { - if ( string && string.startsWith( 'palette' ) ) { - string = string; - } else if ( opacity !== null && ! isNaN( opacity ) && 1 !== Number( opacity ) && undefined !== string && '' !== string ) { - string = hexToRGBA( string, opacity ); - } - return string; -} diff --git a/src/packages/helpers/src/css/index.js b/src/packages/helpers/src/css/index.js deleted file mode 100644 index d0bc6fe90..000000000 --- a/src/packages/helpers/src/css/index.js +++ /dev/null @@ -1,852 +0,0 @@ -import KadenceColorOutput from '../kadence-color-output'; -import typographyStyle from '../typography-style'; -import getBorderStyle from '../get-border-style'; -import getPreviewSize from '../get-preview-size'; - -/** - * A Class that can generate css output for a