product-query.js 17.9 KB
this.wc=this.wc||{},this.wc.blocks=this.wc.blocks||{},this.wc.blocks["product-query"]=function(e){function t(t){for(var r,u,i=t[0],s=t[1],a=t[2],b=0,d=[];b<i.length;b++)u=i[b],Object.prototype.hasOwnProperty.call(c,u)&&c[u]&&d.push(c[u][0]),c[u]=0;for(r in s)Object.prototype.hasOwnProperty.call(s,r)&&(e[r]=s[r]);for(l&&l(t);d.length;)d.shift()();return n.push.apply(n,a||[]),o()}function o(){for(var e,t=0;t<n.length;t++){for(var o=n[t],r=!0,i=1;i<o.length;i++){var s=o[i];0!==c[s]&&(r=!1)}r&&(n.splice(t--,1),e=u(u.s=o[0]))}return e}var r={},c={29:0},n=[];function u(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,u),o.l=!0,o.exports}u.m=e,u.c=r,u.d=function(e,t,o){u.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,t){if(1&t&&(e=u(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(u.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)u.d(o,r,function(t){return e[t]}.bind(null,r));return o},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,"a",t),t},u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},u.p="";var i=window.webpackWcBlocksJsonp=window.webpackWcBlocksJsonp||[],s=i.push.bind(i);i.push=t,i=i.slice();for(var a=0;a<i.length;a++)t(i[a]);var l=s;return n.push([471,0]),o()}({0:function(e,t){e.exports=window.wp.element},1:function(e,t){e.exports=window.wp.i18n},114:function(e,t,o){"use strict";o.d(t,"c",(function(){return i})),o.d(t,"b",(function(){return s})),o.d(t,"a",(function(){return a}));var r=o(0),c=o(1),n=o(79),u=o(350);const i=Object(c.__)("Product Summary","woocommerce"),s=Object(r.createElement)(n.a,{icon:u.a,className:"wc-block-editor-components-block-icon"}),a=Object(c.__)("Display a short description about a product.","woocommerce")},116:function(e,t,o){"use strict";o.d(t,"c",(function(){return i})),o.d(t,"b",(function(){return s})),o.d(t,"a",(function(){return a}));var r=o(0),c=o(1),n=o(79),u=o(349);const i=Object(c.__)("Product Title","woocommerce"),s=Object(r.createElement)(n.a,{icon:u.a,className:"wc-block-editor-components-block-icon"}),a=Object(c.__)("Display the title of a product.","woocommerce")},12:function(e,t){e.exports=window.wp.primitives},130:function(e,t,o){"use strict";o.d(t,"a",(function(){return a})),o.d(t,"b",(function(){return l}));var r=o(0),c=o(1),n=o(79),u=o(309),i=o(234);o(207);const s=e=>{let{text:t,title:o=Object(c.__)("Feedback?","woocommerce"),url:s="https://ideas.woocommerce.com/forums/133476-woocommerce?category_id=384565"}=e;const[a,l]=Object(r.useState)(!1);return Object(r.useEffect)(()=>{l(!0)},[]),a&&Object(r.createElement)("div",{className:"wc-block-feedback-prompt"},Object(r.createElement)(n.a,{icon:u.a}),Object(r.createElement)("h2",{className:"wc-block-feedback-prompt__title"},o),Object(r.createElement)("p",{className:"wc-block-feedback-prompt__text"},t),Object(r.createElement)("a",{href:s,className:"wc-block-feedback-prompt__link",rel:"noreferrer noopener",target:"_blank"},Object(c.__)("Give us your feedback.","woocommerce"),Object(r.createElement)(n.a,{icon:i.a,size:16})))},a=()=>Object(r.createElement)(s,{text:Object(c.__)("We are currently working on improving our cart and checkout blocks to provide merchants with the tools and customization options they need.","woocommerce"),url:"https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?template=--cart-checkout-feedback.md"}),l=()=>Object(r.createElement)(s,{text:Object(c.__)("Thanks for trying out the Products block! Help us make it better by sharing your feedback.","woocommerce"),title:Object(c.__)("Share your feedback!","woocommerce"),url:"https://airtable.com/shrFX5FAqmCY6hVYI"})},14:function(e,t){e.exports=window.wp.apiFetch},17:function(e,t){e.exports=window.wp.url},2:function(e,t){e.exports=window.wc.wcSettings},20:function(e,t,o){"use strict";o.d(t,"o",(function(){return n})),o.d(t,"m",(function(){return u})),o.d(t,"l",(function(){return i})),o.d(t,"n",(function(){return s})),o.d(t,"j",(function(){return a})),o.d(t,"e",(function(){return l})),o.d(t,"f",(function(){return b})),o.d(t,"g",(function(){return d})),o.d(t,"k",(function(){return p})),o.d(t,"c",(function(){return m})),o.d(t,"d",(function(){return g})),o.d(t,"h",(function(){return w})),o.d(t,"a",(function(){return f})),o.d(t,"i",(function(){return _})),o.d(t,"b",(function(){return O}));var r,c=o(2);const n=Object(c.getSetting)("wcBlocksConfig",{buildPhase:1,pluginUrl:"",productCount:0,defaultAvatar:"",restApiRoutes:{},wordCountType:"words"}),u=n.pluginUrl+"images/",i=n.pluginUrl+"build/",s=n.buildPhase,a=null===(r=c.STORE_PAGES.shop)||void 0===r?void 0:r.permalink,l=c.STORE_PAGES.checkout.id,b=c.STORE_PAGES.checkout.permalink,d=c.STORE_PAGES.privacy.permalink,p=(c.STORE_PAGES.privacy.title,c.STORE_PAGES.terms.permalink),m=(c.STORE_PAGES.terms.title,c.STORE_PAGES.cart.id),g=c.STORE_PAGES.cart.permalink,w=(c.STORE_PAGES.myaccount.permalink?c.STORE_PAGES.myaccount.permalink:Object(c.getSetting)("wpLoginUrl","/wp-login.php"),Object(c.getSetting)("shippingCountries",{})),f=Object(c.getSetting)("allowedCountries",{}),_=Object(c.getSetting)("shippingStates",{}),O=Object(c.getSetting)("allowedStates",{})},207:function(e,t){},27:function(e,t,o){"use strict";o.d(t,"h",(function(){return a})),o.d(t,"e",(function(){return l})),o.d(t,"b",(function(){return b})),o.d(t,"i",(function(){return d})),o.d(t,"f",(function(){return p})),o.d(t,"c",(function(){return m})),o.d(t,"d",(function(){return g})),o.d(t,"g",(function(){return w})),o.d(t,"a",(function(){return f}));var r=o(17),c=o(14),n=o.n(c),u=o(8),i=o(2),s=o(20);const a=e=>{let{selected:t=[],search:o="",queryArgs:c={}}=e;const i=(e=>{let{selected:t=[],search:o="",queryArgs:c={}}=e;const n=s.o.productCount>100,u={per_page:n?100:0,catalog_visibility:"any",search:o,orderby:"title",order:"asc"},i=[Object(r.addQueryArgs)("/wc/store/v1/products",{...u,...c})];return n&&t.length&&i.push(Object(r.addQueryArgs)("/wc/store/v1/products",{catalog_visibility:"any",include:t,per_page:0})),i})({selected:t,search:o,queryArgs:c});return Promise.all(i.map(e=>n()({path:e}))).then(e=>Object(u.uniqBy)(Object(u.flatten)(e),"id").map(e=>({...e,parent:0}))).catch(e=>{throw e})},l=e=>n()({path:"/wc/store/v1/products/"+e}),b=()=>n()({path:"wc/store/v1/products/attributes"}),d=e=>n()({path:`wc/store/v1/products/attributes/${e}/terms`}),p=e=>{let{selected:t=[],search:o}=e;const c=(e=>{let{selected:t=[],search:o}=e;const c=Object(i.getSetting)("limitTags",!1),n=[Object(r.addQueryArgs)("wc/store/v1/products/tags",{per_page:c?100:0,orderby:c?"count":"name",order:c?"desc":"asc",search:o})];return c&&t.length&&n.push(Object(r.addQueryArgs)("wc/store/v1/products/tags",{include:t})),n})({selected:t,search:o});return Promise.all(c.map(e=>n()({path:e}))).then(e=>Object(u.uniqBy)(Object(u.flatten)(e),"id"))},m=e=>n()({path:Object(r.addQueryArgs)("wc/store/v1/products/categories",{per_page:0,...e})}),g=e=>n()({path:"wc/store/v1/products/categories/"+e}),w=e=>n()({path:Object(r.addQueryArgs)("wc/store/v1/products",{per_page:0,type:"variation",parent:e})}),f=(e,t)=>{if(!e.title.raw)return e.slug;const o=1===t.filter(t=>t.title.raw===e.title.raw).length;return e.title.raw+(o?"":" - "+e.slug)}},3:function(e,t){e.exports=window.wp.components},45:function(e,t){e.exports=window.wp.hooks},471:function(e,t,o){e.exports=o(479)},472:function(e,t){},473:function(e,t){},479:function(e,t,o){"use strict";o.r(t);var r=o(45),c=o(2),n=o(55),u=o(116),i=o(9);function s(e,t){let{blockDescription:o,blockIcon:r,blockTitle:c,variationName:n}=t;Object(i.registerBlockVariation)(e,{description:o,name:n,title:c,isActive:e=>e.__woocommerceNamespace===n,icon:{src:r},attributes:{__woocommerceNamespace:n},scope:["block","inserter"]})}Object(n.b)()&&s("core/post-title",{blockDescription:u.a,blockIcon:u.b,blockTitle:u.c,variationName:"woocommerce/product-query/product-title"});var a=o(114);Object(n.b)()&&s("core/post-excerpt",{blockDescription:a.a,blockIcon:a.b,blockTitle:a.c,variationName:"woocommerce/product-query/product-summary"});var l=o(6),b=o.n(l),d=o(0),p=o(1),m=o(5),g=o(7),w=o(130),f=o(3);const _=["attributes","presets","onSale","stockStatus","wooInherit"],O=["taxQuery","search",..._],k=Object(c.getSetting)("stockStatusOptions",[]),y={allowedControls:O,displayLayout:{type:"flex",columns:3},query:{perPage:9,pages:0,offset:0,postType:"product",order:"asc",orderBy:"title",author:"",search:"",exclude:[],sticky:"",inherit:!1,__woocommerceAttributes:[],__woocommerceStockStatus:Object(c.getSetting)("hideOutOfStockItems",!1)?Object.keys(function(e,t){const{[t]:o,...r}=e;return r}(k,"outofstock")):Object.keys(k)}},j=[["core/post-template",{},[["woocommerce/product-image"],["core/post-title",{textAlign:"center",level:3,fontSize:"medium",__woocommerceNamespace:"woocommerce/product-query/product-title"},[]],["woocommerce/product-price",{textAlign:"center",fontSize:"small"},[]],["woocommerce/product-button",{textAlign:"center",fontSize:"small"},[]]]],["core/query-pagination",{layout:{type:"flex",justifyContent:"center"}},[]],["core/query-no-results"]];let h;function v(e,t){const{query:o}=e.attributes;e.setAttributes({query:{...o,...t}})}!function(e){e.PRODUCT_QUERY="woocommerce/product-query",e.PRODUCTS_ON_SALE="woocommerce/query-products-on-sale"}(h||(h={}));const S=[{key:"title/asc",name:Object(p.__)("Sorted by title","woocommerce")},{key:"date/desc",name:Object(p.__)("Newest","woocommerce")},{key:"popularity/desc",name:Object(p.__)("Best Selling","woocommerce")},{key:"rating/desc",name:Object(p.__)("Top Rated","woocommerce")}];function E(e){const{query:t}=e.attributes;return Object(d.createElement)(f.PanelBody,{className:"woocommerce-product-query-panel__sort",title:Object(p.__)("Popular Filters","woocommerce"),initialOpen:!0},Object(d.createElement)("p",null,Object(p.__)("Arrange products by popular pre-sets.","woocommerce")),Object(d.createElement)(f.CustomSelectControl,{hideLabelFromVision:!0,label:Object(p.__)("Choose among these pre-sets","woocommerce"),onChange:t=>{var o,r,c;if(null===(o=t.selectedItem)||void 0===o||!o.key)return;const[n,u]=null===(r=t.selectedItem)||void 0===r||null===(c=r.key)||void 0===c?void 0:c.split("/");v(e,{order:u,orderBy:n})},options:S,value:S.find(e=>e.key===`${t.orderBy}/${t.order}`)}))}var x=o(27);o(472);const A=_.map(e=>`__woocommerce${e[0].toUpperCase()}${e.slice(1)}`);function q(e){var t;const o="string"==typeof e?e:e.value;return null===(t=Object.entries(k).find(e=>{let[,t]=e;return t===o}))||void 0===t?void 0:t[0]}const P={attributes:e=>{const{query:t}=e.attributes,{isLoadingAttributes:o,productsAttributes:r}=function(e){const t=Object(c.getSetting)("attributes",[]),[o,r]=Object(d.useState)(!1),[n,u]=Object(d.useState)([]),i=Object(d.useRef)(!1);return Object(d.useEffect)(()=>{if(!o&&!i.current)return async function(){r(!0);for(const e of t){const t=await Object(x.i)(Number(e.attribute_id));u(o=>[...o,{...e,terms:t}])}i.current=!0,r(!1)}(),()=>{i.current=!0}},[t,o,!0]),{isLoadingAttributes:o,productsAttributes:n}}(),n=r.reduce((e,t)=>[...e,...t.terms.map(e=>`${t.attribute_label}: ${e.name}`)],[]);return Object(d.createElement)(f.__experimentalToolsPanelItem,{label:Object(p.__)("Product Attributes","woocommerce"),hasValue:()=>{var e;return null===(e=t.__woocommerceAttributes)||void 0===e?void 0:e.length}},Object(d.createElement)(f.FormTokenField,{disabled:o,label:Object(p.__)("Product Attributes","woocommerce"),onChange:t=>{let o;try{o=t.map(e=>function(e,t){const[o,r]=e.split(": "),c=t.find(e=>e.attribute_label===o);if(!c)throw new Error("Product Query Filter: Invalid attribute label");const n=c.terms.find(e=>e.name===r);if(!n)throw new Error("Product Query Filter: Invalid term name");return{taxonomy:"pa_"+c.attribute_name,termId:n.id}}(e="string"==typeof e?e:e.value,r)),v(e,{__woocommerceAttributes:o})}catch(e){}},suggestions:n,validateInput:e=>n.includes(e),value:o?[Object(p.__)("Loading…","woocommerce")]:(u=t.__woocommerceAttributes,i=r,(null==u?void 0:u.map(e=>{const{taxonomy:t,term:o}=function(e,t){const o=t.find(t=>t.attribute_name===e.taxonomy.slice(3));return{taxonomy:o,term:null==o?void 0:o.terms.find(t=>t.id===e.termId)}}(e,i);return t&&o?`${t.attribute_label}: ${o.name}`:{title:Object(p.__)("Saved taxonomy was perhaps deleted or the slug was changed.","woocommerce"),value:Object(p.__)("Error with saved taxonomy","woocommerce"),status:"error"}}))||[]),__experimentalExpandOnFocus:!0}));var u,i},onSale:e=>{const{query:t}=e.attributes;return Object(d.createElement)(f.__experimentalToolsPanelItem,{label:Object(p.__)("Sale status","woocommerce"),hasValue:()=>t.__woocommerceOnSale},Object(d.createElement)(f.ToggleControl,{label:Object(p.__)("Show only products on sale","woocommerce"),checked:t.__woocommerceOnSale||!1,onChange:t=>{v(e,{__woocommerceOnSale:t})}}))},stockStatus:e=>{var t;const{query:o}=e.attributes;return Object(d.createElement)(f.__experimentalToolsPanelItem,{label:Object(p.__)("Stock status","woocommerce"),hasValue:()=>o.__woocommerceStockStatus},Object(d.createElement)(f.FormTokenField,{label:Object(p.__)("Stock status","woocommerce"),onChange:t=>{const o=t.map(q).filter(Boolean);v(e,{__woocommerceStockStatus:o})},suggestions:Object.values(k),validateInput:e=>Object.values(k).includes(e),value:(null==o||null===(t=o.__woocommerceStockStatus)||void 0===t?void 0:t.map(e=>k[e]))||[],__experimentalExpandOnFocus:!0}))},wooInherit:e=>Object(d.createElement)(f.ToggleControl,{className:"woo-inherit-query-toggle",label:Object(p.__)("Inherit query from template","woocommerce"),help:Object(p.__)("Toggle to use the global query context that is set with the current template, such as variations of the product catalog or search. Disable to customize the filtering independently.","woocommerce"),checked:e.attributes.query.inherit||!1,onChange:t=>v(e,{inherit:t})})},C=e=>{const t=function(e){const t=void 0!==Object(g.useSelect)("core/edit-site"),o=Object(g.useSelect)(t=>{var o;return null===(o=t(i.store).getActiveBlockVariation("core/query",e))||void 0===o?void 0:o.allowedControls},[e]);return t?function(e){return e.query.inherit}(e)?o.filter(e=>"wooInherit"===e):o:o.filter(e=>"wooInherit"!==e)}(e.attributes),o=function(e){const t=Object(g.useSelect)(t=>{var o;return null===(o=t("core/blocks").getBlockVariations("core/query").find(t=>t.name===e))||void 0===o?void 0:o.attributes});return t?Object.assign({},...A.map(e=>({[e]:t.query[e]}))):{}}(e.attributes.namespace);return Object(d.createElement)(d.Fragment,null,Object(d.createElement)(m.InspectorControls,null,(null==t?void 0:t.includes("presets"))&&Object(d.createElement)(E,e),Object(d.createElement)(f.__experimentalToolsPanel,{className:"woocommerce-product-query-toolspanel",label:Object(p.__)("Advanced Filters","woocommerce"),resetAll:()=>{v(e,o)}},Object.entries(P).map(o=>{let[r,c]=o;return null!=t&&t.includes(r)?Object(d.createElement)(c,b()({},e,{key:r})):null}))),Object(d.createElement)(m.InspectorControls,{__experimentalGroup:"color"},Object(d.createElement)(w.b,null)))};Object(r.addFilter)("editor.BlockEdit","core/query",e=>t=>{return"core/query"===(o=t).name&&Object.values(h).includes(o.attributes.namespace)?Object(d.createElement)(d.Fragment,null,Object(d.createElement)(C,t),Object(d.createElement)(e,t)):Object(d.createElement)(e,t);var o}),o(473);var T=o(12),I=Object(d.createElement)(T.SVG,{xmlns:"http://www.w3.org/2000/SVG",viewBox:"0 0 24 24"},Object(d.createElement)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.5 19.375L4.5 7.625C4.5 7.55596 4.55596 7.5 4.625 7.5L16.375 7.5C16.444 7.5 16.5 7.55596 16.5 7.625L16.5 19.375C16.5 19.444 16.444 19.5 16.375 19.5L4.625 19.5C4.55596 19.5 4.5 19.444 4.5 19.375ZM4.625 21C3.72754 21 3 20.2725 3 19.375L3 7.625C3 6.72754 3.72754 6 4.625 6L16.375 6C17.2725 6 18 6.72754 18 7.625L18 19.375C18 20.2725 17.2725 21 16.375 21L4.625 21ZM19 3.75L8 3.75L8 2.25L19 2.25C20.5183 2.25 21.75 3.4796 21.75 4.99891L21.75 18L20.25 18L20.25 4.99891C20.25 4.30909 19.6909 3.75 19 3.75Z"}));Object(c.isWpVersion)("6.1",">=")&&Object(i.registerBlockVariation)("core/query",{description:Object(p.__)("A block that displays a selection of products in your store.","woocommerce"),name:"woocommerce/product-query",
/* translators: “Products“ is the name of the block. */
title:Object(p.__)("Products (Beta)","woocommerce"),isActive:e=>"woocommerce/product-query"===e.namespace,icon:Object(d.createElement)(f.Icon,{icon:I,className:"wc-block-editor-components-block-icon wc-block-editor-components-block-icon--stacks"}),attributes:{...y,namespace:"woocommerce/product-query"},allowedControls:O,innerBlocks:j,scope:["inserter"]});var B=o(527);var L,N;Object(n.a)()&&Object(i.registerBlockVariation)("core/query",{name:"woocommerce/query-products-on-sale",title:Object(p.__)("Products on Sale","woocommerce"),isActive:e=>{var t;return"woocommerce/query-products-on-sale"===e.namespace||!0===(null===(t=e.query)||void 0===t?void 0:t.__woocommerceOnSale)},icon:Object(d.createElement)(f.Icon,{icon:B.a,className:"wc-block-editor-components-block-icon wc-block-editor-components-block-icon--percent"}),attributes:{...y,namespace:"woocommerce/query-products-on-sale",query:{...y.query,__woocommerceOnSale:!0}},allowedControls:(L=O,N=["onSale"],L.filter(e=>!N.includes(e))),innerBlocks:j,scope:["inserter"]});const F=["core/post-excerpt","core/post-title"];Object(c.isWpVersion)("6.1",">=")&&Object(r.addFilter)("blocks.registerBlockType","core/custom-class-name/attribute",(function(e,t){return F.includes(t)&&(e.attributes={...e.attributes,__woocommerceNamespace:{type:"string"}}),e}))},5:function(e,t){e.exports=window.wp.blockEditor},55:function(e,t,o){"use strict";o.d(t,"c",(function(){return n})),o.d(t,"a",(function(){return u})),o.d(t,"b",(function(){return i}));var r=o(9),c=o(20);const n=(e,t)=>{if(c.n>2)return Object(r.registerBlockType)(e,t)},u=()=>c.n>2,i=()=>c.n>1},7:function(e,t){e.exports=window.wp.data},8:function(e,t){e.exports=window.lodash},9:function(e,t){e.exports=window.wp.blocks}});