oont-contents/plugins/woocommerce/assets/client/blocks/add-to-cart-with-options-quantity-selector.js
2025-04-06 08:34:48 +02:00

1 line
No EOL
17 KiB
JavaScript

(()=>{var e,t,o,r={6911:(e,t,o)=>{"use strict";o.d(t,{yM:()=>i});var r=o(4922),n=o.n(r),s=o(5114);o(3044);const c=n()("wc-admin:tracks");function i(e,t){return c("recordevent %s %o","wcadmin_"+e,t,{_tqk:window._tkq,shouldRecord:!(s.D||!window._tkq||!window.wcTracks||!window.wcTracks.isEnabled)}),!(!window.wcTracks||"function"!=typeof window.wcTracks.recordEvent)&&(s.D?(window.wcTracks.validateEvent(e,t),!1):void window.wcTracks.recordEvent(e,t))}},3044:(e,t,o)=>{"use strict";var r=o(4922);o.n(r)()("wc-admin:tracks:stats")},5114:(e,t,o)=>{"use strict";o.d(t,{D:()=>r});const r=!1},6921:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});var r=o(7143);const n=({blockClientId:e})=>{const{isDescendentOfSingleProductBlock:t}=(0,r.useSelect)((t=>{const{getBlockParentsByBlockName:o}=t("core/block-editor");return{isDescendentOfSingleProductBlock:o(null==e?void 0:e.replace("block-",""),["woocommerce/single-product"]).length>0}}),[e]);return{isDescendentOfSingleProductBlock:t}}},7157:(e,t,o)=>{"use strict";o.d(t,{W:()=>l});var r=o(2294),n=o(4997),s=o(7143),c=o(3993);class i{constructor(){(0,r.A)(this,"blocks",new Map),(0,r.A)(this,"currentTemplateId",void 0),(0,r.A)(this,"initialized",!1),(0,r.A)(this,"attemptedRegisteredBlocks",new Set),this.initializeSubscriptions()}static getInstance(){return i.instance||(i.instance=new i),i.instance}parseTemplateId(e){const t=(0,c.isNumber)(e)?void 0:e;return null==t?void 0:t.split("//")[1]}initializeSubscriptions(){if(this.initialized)return;const e=(0,s.subscribe)((()=>{const t=(0,s.select)("core/edit-site"),o=(0,s.select)("core/edit-post");if(t||o)if(t){const o=t.getEditedPostId();e(),this.currentTemplateId="string"==typeof o?this.parseTemplateId(o):void 0,(0,s.subscribe)((()=>{const e=this.currentTemplateId;this.currentTemplateId=this.parseTemplateId(t.getEditedPostId()),e!==this.currentTemplateId&&this.handleTemplateChange(e)}),"core/edit-site"),this.initialized=!0}else o&&(e(),this.blocks.forEach((e=>{if(e.isAvailableOnPostEditor){const t=e.variationName||e.blockName;this.hasAttemptedRegistration(t)||this.registerBlock(e)}})),this.initialized=!0)}))}handleTemplateChange(e){var t;((null===(t=this.currentTemplateId)||void 0===t?void 0:t.includes("single-product"))||(null==e?void 0:e.includes("single-product")))&&this.blocks.forEach((e=>{this.unregisterBlock(e),this.registerBlock(e)}))}hasAttemptedRegistration(e){return this.attemptedRegisteredBlocks.has(e)}unregisterBlock(e){const{blockName:t,isVariationBlock:o,variationName:r}=e;try{o&&r?((0,n.unregisterBlockVariation)(t,r),this.attemptedRegisteredBlocks.delete(r)):((0,n.unregisterBlockType)(t),this.attemptedRegisteredBlocks.delete(t))}catch(e){console.debug(`Failed to unregister block ${t}:`,e)}}registerBlock(e){const{blockName:t,settings:o,isVariationBlock:r,variationName:i,isAvailableOnPostEditor:l}=e;try{const e=i||t;if(this.hasAttemptedRegistration(e))return;const u=(0,s.select)("core/edit-site");if(!u&&!l)return;if(r)(0,n.registerBlockVariation)(t,o);else{var a;const e=(0,c.isEmpty)(null==o?void 0:o.ancestor)?["woocommerce/single-product"]:null==o?void 0:o.ancestor,r=u&&(null===(a=this.currentTemplateId)||void 0===a?void 0:a.includes("single-product"));(0,n.registerBlockType)(t,{...o,ancestor:r?void 0:e})}this.attemptedRegisteredBlocks.add(e)}catch(e){console.error(`Failed to register block ${t}:`,e)}}registerBlockConfig(e){const t=e.variationName||e.blockName;this.blocks.set(t,e),this.registerBlock(e)}}(0,r.A)(i,"instance",void 0);const l=(e,t)=>{const o="string"==typeof e?e:e.name;if(!o)return void console.error("registerProductBlockType: Block name is required for registration");const r="string"==typeof e?{}:(({name:e,...t})=>t)(e),{isVariationBlock:n,variationName:s,isAvailableOnPostEditor:c,...l}={...r,...t||{}},a={blockName:o,settings:{...l},isVariationBlock:null!=n&&n,variationName:null!=s?s:void 0,isAvailableOnPostEditor:null!=c&&c};i.getInstance().registerBlockConfig(a)}},4154:(e,t,o)=>{"use strict";o.d(t,{A:()=>g});var r=o(7143);const n="woocommerce/product-type-template-state",s="SWITCH_PRODUCT_TYPE",c="SET_PRODUCT_TYPES",i="REGISTER_LISTENER",l="UNREGISTER_LISTENER",a=(0,o(5703).getSetting)("productTypes",{});var u;const d=Object.keys(a).map((e=>({slug:e,label:a[e]}))),p={productTypes:{list:d,current:null===(u=d[0])||void 0===u?void 0:u.slug},listeners:[]},m={switchProductType:e=>({type:s,current:e}),setProductTypes:e=>({type:c,productTypes:e}),registerListener:e=>({type:i,listener:e}),unregisterListener:e=>({type:l,listener:e})},w=(0,r.createReduxStore)(n,{reducer:(e=p,t)=>{switch(t.type){case c:return{...e,productTypes:{...e.productTypes,list:t.productTypes||[]}};case s:return{...e,productTypes:{...e.productTypes,current:t.current}};case i:return{...e,listeners:[...e.listeners,t.listener||""]};case l:return{...e,listeners:e.listeners.filter((e=>e!==t.listener))};default:return e}},actions:m,selectors:{getProductTypes:e=>e.productTypes.list,getCurrentProductType:e=>e.productTypes.list.find((t=>t.slug===e.productTypes.current)),getRegisteredListeners:e=>e.listeners}});function g(){const{productTypes:e,current:t,registeredListeners:o}=(0,r.useSelect)((e=>{const{getProductTypes:t,getCurrentProductType:o,getRegisteredListeners:r}=e(w);return{productTypes:t(),current:o(),registeredListeners:r()}}),[]),{switchProductType:n,registerListener:s,unregisterListener:c}=(0,r.useDispatch)(w);return{productTypes:e,current:t,set:n,registeredListeners:o,registerListener:s,unregisterListener:c}}(0,r.select)(n)||(0,r.register)(w)},8138:(e,t,o)=>{"use strict";o.d(t,{shouldBlockifiedAddToCartWithOptionsBeRegistered:()=>N});var r=o(498);const n=window.wp.plugins;var s=o(5703),c=o(3993),i=o(7157),l=o(1609),a=o(7723),u=o(7143),d=o(6427),p=o(6911);const m=window.wp.editor;var w=o(4154);function g(){const{productTypes:e,current:t,set:o}=(0,w.A)();return(0,l.createElement)(d.SelectControl,{label:(0,a.__)("Type switcher","woocommerce"),value:null==t?void 0:t.slug,options:e.map((e=>({label:e.label,value:e.slug}))),onChange:e=>{o(e),(0,p.yM)("blocks_add_to_cart_with_options_product_type_switched",{context:"inspector",from:null==t?void 0:t.slug,to:e})},help:(0,a.__)("Switch product type to see how the template adapts to each one.","woocommerce")})}const b=JSON.parse('{"name":"woocommerce/add-to-cart-with-options","version":"1.0.0","title":"Add to Cart with Options (Experimental)","description":"Create an \\"Add To Cart\\" composition by using blocks","category":"woocommerce-product-elements","attributes":{"isDescendentOfSingleProductBlock":{"type":"boolean","default":false}},"usesContext":["postId"],"textdomain":"woocommerce","supports":{"interactivity":true},"apiVersion":3,"$schema":"https://schemas.wp.org/trunk/block.json"}');var k=o(6087),h=o(4715),y=o(6921);const v=({features:e})=>{const{isBlockifiedAddToCart:t}=e;if(!t)return null;const o=Object.keys(e).filter((t=>e[t]));return(0,l.createElement)(h.InspectorControls,null,(0,l.createElement)(d.PanelBody,{title:"Development"},(0,l.createElement)(d.Flex,{gap:3,direction:"column"},(0,l.createElement)(d.Notice,{status:"warning",isDismissible:!1},(0,a.__)("Development features enabled.","woocommerce")),o.map((e=>(0,l.createElement)(d.FlexItem,{key:e},e))))))};var f=o(5573);const _=(0,l.createElement)(f.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,l.createElement)("path",{fill:"none",d:"M0 0h24v24H0V0z"}),(0,l.createElement)("path",{d:"M12 6a9.77 9.77 0 0 1 8.82 5.5C19.17 14.87 15.79 17 12 17s-7.17-2.13-8.82-5.5A9.77 9.77 0 0 1 12 6m0-2C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4zm0 5a2.5 2.5 0 0 1 0 5 2.5 2.5 0 0 1 0-5m0-2c-2.48 0-4.5 2.02-4.5 4.5S9.52 16 12 16s4.5-2.02 4.5-4.5S14.48 7 12 7z"}));var E=o(2796);function T(){const{current:e,productTypes:t,set:o}=(0,w.A)(),{product:r}=(0,E.useProductDataContext)();return null!=r&&r.id||(null==t?void 0:t.length)<2?null:(0,l.createElement)(d.ToolbarGroup,null,(0,l.createElement)(d.ToolbarDropdownMenu,{icon:(0,l.createElement)(d.Icon,{icon:_}),text:(null==e?void 0:e.label)||(0,a.__)("Switch product type","woocommerce"),value:null==e?void 0:e.slug,controls:t.map((t=>({title:t.label,onClick:()=>{o(t.slug),(null==e?void 0:e.slug)!==t.slug&&(0,p.yM)("blocks_add_to_cart_with_options_product_type_switched",{context:"toolbar",from:null==e?void 0:e.slug,to:t.slug})}})))}))}var S=o(4997),B=o(4187),C=o(5050);const P=({blockClientId:e})=>{const t=(0,a.__)("Switch back to the classic Add to Cart with Options block.","woocommerce"),o=(0,a.__)("Switch back","woocommerce");return(0,l.createElement)(B.u,{isDismissible:!1,actionLabel:o,onActionClick:async()=>{const t=await(e=>{var t;const o=(0,u.select)("core/block-editor").getBlocks(),r=(0,C.P)({blocks:o,findCondition:t=>t.name===b.name&&t.clientId===e});if(!r)return!1;const n=(0,C.P)({blocks:o,findCondition:e=>"woocommerce/add-to-cart-with-options-quantity-selector"===e.name}),s=(0,S.createBlock)("woocommerce/add-to-cart-form",{quantitySelectorStyle:(null==n||null===(t=n.attributes)||void 0===t?void 0:t.quantitySelectorStyle)||"input"});return(0,u.dispatch)("core/block-editor").replaceBlock(r.clientId,s),!0})(e);t&&(0,p.yM)("blocks_add_to_cart_with_options_migration",{transform_to:"legacy"})}},t)};var O=o(3605);const x=e=>{const{setAttributes:t}=e,o=(0,h.useBlockProps)(),r=null==o?void 0:o.id,{isDescendentOfSingleProductBlock:n}=(0,y.A)({blockClientId:r}),{registerListener:s,unregisterListener:c}=(0,w.A)();(0,k.useEffect)((()=>(t({isDescendentOfSingleProductBlock:n}),s(r),()=>{c(r)})),[t,n,r,s,c]);const i=(0,O.A)();return(0,l.createElement)(l.Fragment,null,(0,l.createElement)(h.InspectorControls,null,(0,l.createElement)(P,{blockClientId:null==e?void 0:e.clientId})),(0,l.createElement)(h.BlockControls,null,(0,l.createElement)(T,null)),(0,l.createElement)(v,{features:{isBlockifiedAddToCart:!0}}),(0,l.createElement)("div",{...o},(0,l.createElement)(h.InnerBlocks,{template:i})))},I=()=>{const e=h.useBlockProps.save(),t=h.useInnerBlocksProps.save(e);return(0,l.createElement)("div",{...t})};o(4690);const A=(0,s.getSettingWithCoercion)("isBlockifiedAddToCart",!1,c.isBoolean),N=(()=>{const{experimentalBlocksEnabled:e}=(0,s.getSetting)("wcBlocksConfig",{experimentalBlocksEnabled:!1});return e})()&&A;if(N){const e="document-settings-template-selector-pane";(0,n.getPlugin)(e)||(0,n.registerPlugin)(e,{render:function(){const{slug:e,type:t}=(0,u.useSelect)((e=>{const{slug:t,type:o}=e("core/editor").getCurrentPost();return{slug:t,type:o}}),[]),{registeredListeners:o}=(0,w.A)();return"wp_template"===t&&"single-product"===e&&o.length>0?(0,l.createElement)(m.PluginDocumentSettingPanel,{name:"woocommerce/product-type-selector",title:(0,a.__)("Product Type","woocommerce")},(0,l.createElement)(g,null)):null}}),(0,i.W)({...b,icon:{src:r.A},edit:x,save:I,ancestor:["woocommerce/single-product"]},{isAvailableOnPostEditor:!0})}},1950:(e,t,o)=>{"use strict";o.r(t);var r=o(1609),n=o(4997),s=o(7104),c=o(498);const i=JSON.parse('{"name":"woocommerce/add-to-cart-with-options-quantity-selector","version":"1.0.0","title":"Quantity Selector (Experimental)","description":"Display an input field to select the number of products to add to cart.","category":"woocommerce-product-elements","attributes":{"quantitySelectorStyle":{"type":"string","enum":["input","stepper"],"default":"input"}},"keywords":["WooCommerce"],"usesContext":["postId"],"ancestor":["woocommerce/add-to-cart-with-options"],"textdomain":"woocommerce","apiVersion":3,"$schema":"https://schemas.wp.org/trunk/block.json"}');var l=o(4715),a=o(7723),u=o(7143);var d=o(6427),p=function(e){return e.Input="input",e.Stepper="stepper",e}(p||{});const m=e=>e===p.Input?(0,a.__)("Shoppers can enter a number of items to add to cart.","woocommerce"):e===p.Stepper?(0,a.__)("Shoppers can use buttons to change the number of items to add to cart.","woocommerce"):void 0;var w=o(8138);o(5193),o(4140),o(6218),w.shouldBlockifiedAddToCartWithOptionsBeRegistered&&(0,n.registerBlockType)(i,{edit:e=>{const{setAttributes:t}=e,{quantitySelectorStyle:o}=e.attributes,n=o===p.Input?"wc-block-add-to-cart-with-options__quantity-selector--input":"wc-block-add-to-cart-with-options__quantity-selector--stepper",s=(0,l.useBlockProps)({className:`wc-block-add-to-cart-with-options__quantity-selector ${n}`}),c=(0,u.useSelect)((e=>(e=>{if(!(e=>null===e)(t=e)&&t instanceof Object&&t.constructor===Object){const t=e.getEditedPostType();return"wp_template"===t||"wp_template_part"===t}var t;return!1})(e("core/edit-site"))),[]);return(0,r.createElement)(r.Fragment,null,(0,r.createElement)(l.InspectorControls,null,(0,r.createElement)(d.PanelBody,{title:(0,a.__)("Settings","woocommerce")},(0,r.createElement)(d.__experimentalToggleGroupControl,{className:"wc-block-editor-add-to-cart-with-options__quantity-selector",__nextHasNoMarginBottom:!0,value:o,isBlock:!0,onChange:e=>{t({quantitySelectorStyle:e})},help:m(o)},(0,r.createElement)(d.__experimentalToggleGroupControlOption,{label:(0,a.__)("Input","woocommerce"),value:p.Input}),(0,r.createElement)(d.__experimentalToggleGroupControlOption,{label:(0,a.__)("Stepper","woocommerce"),value:p.Stepper})))),(0,r.createElement)("div",{...s},(0,r.createElement)(d.Disabled,null,o===p.Input&&(0,r.createElement)("div",{className:"quantity"},(0,r.createElement)("input",{style:c?{}:{backgroundColor:"#ffffff",lineHeight:"normal",minHeight:"unset",boxSizing:"unset",borderRadius:"unset"},type:"number",value:"1",className:"input-text qty text",readOnly:!0})),o===p.Stepper&&(0,r.createElement)("div",{className:"quantity wc-block-components-quantity-selector"},(0,r.createElement)("button",{className:"wc-block-components-quantity-selector__button wc-block-components-quantity-selector__button--minus"},"-"),(0,r.createElement)("input",{style:c?{}:{backgroundColor:"#ffffff",lineHeight:"normal",minHeight:"unset",boxSizing:"unset",borderRadius:"unset"},type:"number",value:"1",className:"input-text qty text",readOnly:!0}),(0,r.createElement)("button",{className:"wc-block-components-quantity-selector__button wc-block-components-quantity-selector__button--plus"},"+")))))},attributes:i.attributes,icon:{src:(0,r.createElement)(s.A,{icon:c.A,className:"wc-block-editor-components-block-icon"})},save:()=>null})},3605:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});var r=o(7723);const n=(e="input")=>[["core/heading",{level:2,content:(0,r.__)("Add to Cart","woocommerce")}],["woocommerce/add-to-cart-with-options-variation-selector"],["woocommerce/product-stock-indicator"],["woocommerce/add-to-cart-with-options-quantity-selector",{quantitySelectorStyle:e}],["woocommerce/product-button",{textAlign:"center",fontSize:"small"}]]},4187:(e,t,o)=>{"use strict";o.d(t,{u:()=>c});var r=o(1609),n=o(6427),s=o(851);function c({children:e,className:t,actionLabel:o,onActionClick:c,...i}){return(0,r.createElement)(n.Notice,{...i,className:(0,s.$)("wc-block-editor-components-upgrade-downgrade-notice",t),actions:[{label:o,onClick:c,noDefaultClasses:!0,variant:"link"}]},(0,r.createElement)("div",{className:"wc-block-editor-components-upgrade-downgrade-notice__text"},e))}o(2615)},5050:(e,t,o)=>{"use strict";o.d(t,{P:()=>r});const r=({blocks:e,findCondition:t})=>{for(const o of e){if(t(o))return o;if(o.innerBlocks){const e=r({blocks:o.innerBlocks,findCondition:t});if(e)return e}}}},5193:()=>{},6218:()=>{},4140:()=>{},4690:()=>{},2615:()=>{},1609:e=>{"use strict";e.exports=window.React},2796:e=>{"use strict";e.exports=window.wc.wcBlocksSharedContext},5703:e=>{"use strict";e.exports=window.wc.wcSettings},3993:e=>{"use strict";e.exports=window.wc.wcTypes},4715:e=>{"use strict";e.exports=window.wp.blockEditor},4997:e=>{"use strict";e.exports=window.wp.blocks},6427:e=>{"use strict";e.exports=window.wp.components},7143:e=>{"use strict";e.exports=window.wp.data},6087:e=>{"use strict";e.exports=window.wp.element},7723:e=>{"use strict";e.exports=window.wp.i18n},5573:e=>{"use strict";e.exports=window.wp.primitives}},n={};function s(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e].call(o.exports,o,o.exports,s),o.exports}s.m=r,e=[],s.O=(t,o,r,n)=>{if(!o){var c=1/0;for(u=0;u<e.length;u++){for(var[o,r,n]=e[u],i=!0,l=0;l<o.length;l++)(!1&n||c>=n)&&Object.keys(s.O).every((e=>s.O[e](o[l])))?o.splice(l--,1):(i=!1,n<c&&(c=n));if(i){e.splice(u--,1);var a=r();void 0!==a&&(t=a)}}return t}n=n||0;for(var u=e.length;u>0&&e[u-1][2]>n;u--)e[u]=e[u-1];e[u]=[o,r,n]},s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},o=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,s.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var n=Object.create(null);s.r(n);var c={};t=t||[null,o({}),o([]),o(o)];for(var i=2&r&&e;"object"==typeof i&&!~t.indexOf(i);i=o(i))Object.getOwnPropertyNames(i).forEach((t=>c[t]=()=>e[t]));return c.default=()=>e,s.d(n,c),n},s.d=(e,t)=>{for(var o in t)s.o(t,o)&&!s.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.j=8851,(()=>{var e={8851:0,7435:0};s.O.j=t=>0===e[t];var t=(t,o)=>{var r,n,[c,i,l]=o,a=0;if(c.some((t=>0!==e[t]))){for(r in i)s.o(i,r)&&(s.m[r]=i[r]);if(l)var u=l(s)}for(t&&t(o);a<c.length;a++)n=c[a],s.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return s.O(u)},o=self.webpackChunkwebpackWcBlocksMainJsonp=self.webpackChunkwebpackWcBlocksMainJsonp||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})();var c=s.O(void 0,[94],(()=>s(1950)));c=s.O(c),((this.wc=this.wc||{}).blocks=this.wc.blocks||{})["add-to-cart-with-options-quantity-selector"]=c})();