PluginProbe
Tiered Pricing Table for WooCommerce / 8.0.2
Tiered Pricing Table for WooCommerce v8.0.2
8.0.2 7.1.7 7.1.5 7.1.4 7.1.1 6.5.0 6.4.0 6.1.0 trunk 1.0 1.1 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.2.0 2.2.1 2.2.2 2.2.3 2.3.0 2.3.1 2.3.2 2.3.3 All 91 releases
← All changes | src/Addons/Tools/build/index.js +1 -1 7.1.7 → 8.0.2 View file →
@@ -1 +1 @@
1 -(()=>{"use strict";var e={n:t=>{var a=t&&t.__esModule?()=>t.default:()=>t;return e.d(a,{a}),a},d:(t,a)=>{for(var l in a)e.o(a,l)&&!e.o(t,l)&&Object.defineProperty(t,l,{enumerable:!0,get:a[l]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,a=window.wp.element,l=window.wp.components,n=window.wp.i18n,i=window.wp.primitives,r=(0,t.createElement)(i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,t.createElement)(i.Path,{d:"M15.5 9.5a1 1 0 100-2 1 1 0 000 2zm0 1.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm-2.25 6v-2a2.75 2.75 0 00-2.75-2.75h-4A2.75 2.75 0 003.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0120.25 15zM9.5 8.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z",fillRule:"evenodd"})),o=(0,t.createElement)(i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,t.createElement)(i.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 5.5A2.25 2.25 0 0 0 9.878 7h4.244A2.251 2.251 0 0 0 12 5.5ZM12 4a3.751 3.751 0 0 0-3.675 3H5v1.5h1.27l.818 8.997a2.75 2.75 0 0 0 2.739 2.501h4.347a2.75 2.75 0 0 0 2.738-2.5L17.73 8.5H19V7h-3.325A3.751 3.751 0 0 0 12 4Zm4.224 4.5H7.776l.806 8.861a1.25 1.25 0 0 0 1.245 1.137h4.347a1.25 1.25 0 0 0 1.245-1.137l.805-8.861Z"})),s=window.wp.apiFetch;var c=e.n(s);const p=({label:e,type:i,selectedElements:r,onElementsChange:o})=>{const[s,p]=(0,a.useState)([]),[m,d]=(0,a.useState)(!1),[g,u]=(0,a.useState)({}),[b,h]=(0,a.useState)(null);return(0,a.useEffect)(()=>{const e={...g};r.forEach(t=>{const a=`${t.name} (#${t.id})`;e[a]=t}),u(e)},[]),(0,t.createElement)("div",{style:{marginBottom:"20px"}},(0,t.createElement)(l.FormTokenField,{label:e,value:r.map(e=>`${e.name} (#${e.id})`),suggestions:s,onInputChange:e=>{if(b&&clearTimeout(b),!e||e.length<3)return void p([]);const t=setTimeout(()=>{d(!0);const t="product"===i?`/wc/v3/products?search=${encodeURIComponent(e)}&per_page=10`:`/wc/v3/products/categories?search=${encodeURIComponent(e)}&per_page=10`;c()({path:t}).then(e=>{const t=[],a={...g};e.forEach(e=>{const l=`${e.name} (#${e.id})`;t.push(l),a[l]=e}),p(t),u(a),d(!1)}).catch(()=>d(!1))},500);h(t)},onChange:e=>{const t=e.map(e=>g[e]||null).filter(Boolean);o(t)},maxLength:100,__experimentalShowHowTo:!1,messages:{added:(0,n.__)("Item added","tier-pricing-table"),removed:(0,n.__)("Item removed","tier-pricing-table"),remove:(0,n.__)("Remove item","tier-pricing-table")}}),m&&(0,t.createElement)(l.Spinner,{style:{marginTop:"-10px",display:"block"}}))};function m(){const[e,i]=(0,a.useState)(!1),[r,s]=(0,a.useState)(!1),[m,d]=(0,a.useState)("none"),[g,u]=(0,a.useState)([]),[b,h]=(0,a.useState)([]),[y,_]=(0,a.useState)([]),[E,f]=(0,a.useState)(!1),[x,v]=(0,a.useState)(!1),[C,w]=(0,a.useState)(!1),[S,k]=(0,a.useState)([]),[T,B]=(0,a.useState)(!0),[R,P]=(0,a.useState)(null);(0,a.useEffect)(()=>{c()({path:"/tier-pricing-table/features/tools/v1/roles_capabilities"}).then(e=>{if(e.roles){const t=e.roles.map(e=>({label:e.name,value:e.key}));k(t)}B(!1)}).catch(()=>{B(!1)})},[]);const N=e||"all"===m||"specific"===m&&g.length>0||r||E||x;return(0,t.createElement)("div",{className:"tpt-tools-app"},R&&(0,t.createElement)(l.Notice,{status:R.type,onRemove:()=>P(null)},R.message),(0,t.createElement)(l.Card,null,(0,t.createElement)(l.CardHeader,null,(0,t.createElement)("h3",{style:{margin:0}},(0,n.__)("Clean Up & Reset Options","tier-pricing-table"))),(0,t.createElement)(l.CardBody,null,(0,t.createElement)("p",{style:{backgroundColor:"#fcf0f1",color:"#d63638",padding:"12px 16px",borderLeft:"4px solid #d63638",borderRadius:"4px",marginTop:"0",marginBottom:"20px"}},(0,t.createElement)("strong",null,(0,n.__)("Warning:","tier-pricing-table"))," ",(0,n.__)("The actions below will permanently delete data from your database. Please make a backup before proceeding.","tier-pricing-table")),(0,t.createElement)(l.Panel,{className:"tpt-cleanup-panel",style:{marginBottom:"20px"}},(0,t.createElement)(l.PanelBody,{title:(0,n.__)("1. Product Level Data","tier-pricing-table"),initialOpen:!0},(0,t.createElement)("p",{style:{color:"#64748b",marginTop:0,marginBottom:"15px"}},(0,n.__)("Remove tiered pricing rules directly attached to individual products.","tier-pricing-table")),(0,t.createElement)(l.CheckboxControl,{label:(0,n.__)("Clean Standard Tiered Pricing Data","tier-pricing-table"),checked:e,onChange:i}),(0,t.createElement)("h4",{style:{marginTop:"15px",marginBottom:"10px"}},(0,n.__)("Customer Based Data","tier-pricing-table")),(0,t.createElement)(l.CheckboxControl,{label:(0,n.__)("Clean All Customer Based Pricing Data","tier-pricing-table"),checked:r,onChange:s}),(0,t.createElement)("h4",{style:{marginTop:"15px",marginBottom:"10px"}},(0,n.__)("Role Based Data","tier-pricing-table")),(0,t.createElement)(l.RadioControl,{selected:m,options:[{label:(0,n.__)("Do not clean role based data","tier-pricing-table"),value:"none"},{label:(0,n.__)("Clean all roles","tier-pricing-table"),value:"all"},{label:(0,n.__)("Select specific roles to clean","tier-pricing-table"),value:"specific"}],onChange:e=>d(e)}),"specific"===m&&(T?(0,t.createElement)(l.Spinner,{style:{marginTop:"10px"}}):(0,t.createElement)("div",{style:{display:"flex",flexDirection:"column",gap:"8px",marginTop:"10px",marginLeft:"25px",paddingLeft:"15px",borderLeft:"2px solid #e2e8f0"}},S.map(e=>(0,t.createElement)(l.CheckboxControl,{key:e.value,label:e.label,checked:g.includes(e.value),onChange:()=>{return t=e.value,void u(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t]);var t}})))),(e||"none"!==m||r)&&(0,t.createElement)("div",{style:{marginTop:"20px",padding:"15px",background:"#f8fafc",borderRadius:"4px",border:"1px solid #e2e8f0"}},(0,t.createElement)("h4",{style:{marginTop:0,marginBottom:"5px"}},(0,n.__)("Filters (Optional)","tier-pricing-table")),(0,t.createElement)("p",{style:{color:"#64748b",fontSize:"0.9em",marginTop:0,marginBottom:"15px"}},(0,n.__)("Leave blank to apply the cleanup to all products. Otherwise, select specific categories or products.","tier-pricing-table")),(0,t.createElement)(p,{label:(0,n.__)("Select Categories","tier-pricing-table"),type:"category",selectedElements:b,onElementsChange:h}),(0,t.createElement)(p,{label:(0,n.__)("Select Products","tier-pricing-table"),type:"product",selectedElements:y,onElementsChange:_})))),(0,t.createElement)(l.Panel,{className:"tpt-cleanup-panel",style:{marginBottom:"20px"}},(0,t.createElement)(l.PanelBody,{title:(0,n.__)("2. Global Pricing Rules","tier-pricing-table"),initialOpen:!0},(0,t.createElement)("p",{style:{color:"#64748b",marginTop:0,marginBottom:"15px"}},(0,n.__)("Global pricing rules apply to multiple products at once.","tier-pricing-table")),(0,t.createElement)(l.CheckboxControl,{label:(0,t.createElement)("span",{style:{color:"#d63638",fontWeight:"500"}},(0,n.__)("Delete all Global Pricing Rules","tier-pricing-table")),checked:E,onChange:f}))),(0,t.createElement)(l.Panel,{className:"tpt-cleanup-panel",style:{marginBottom:"20px"}},(0,t.createElement)(l.PanelBody,{title:(0,n.__)("3. Plugin Settings","tier-pricing-table"),initialOpen:!0},(0,t.createElement)("p",{style:{color:"#64748b",marginTop:0,marginBottom:"15px"}},(0,n.__)("Reset general settings, labels, and table column configurations.","tier-pricing-table")),(0,t.createElement)(l.CheckboxControl,{label:(0,t.createElement)("span",{style:{color:"#d63638",fontWeight:"500"}},(0,n.__)("Reset all plugin settings to defaults","tier-pricing-table")),checked:x,onChange:v}))),(0,t.createElement)("div",{style:{marginTop:"30px",borderTop:"1px solid #e2e8f0",paddingTop:"20px",display:"flex",alignItems:"center"}},(0,t.createElement)(l.Button,{isPrimary:!0,isDestructive:!0,icon:o,isBusy:C,disabled:C||!N,onClick:async()=>{if(!confirm((0,n.__)("Are you sure you want to delete the selected data? This action cannot be undone.","tier-pricing-table")))return;w(!0),P(null);const t=[];let a=[],l=!1;if(e||"none"!==m||r){const i={clean_standard:e,clean_users:r,clean_all_roles:"all"===m,roles:"specific"===m?g:[],categories:b.map(e=>e.id),products:y.map(e=>e.id)};t.push(c()({path:"/tier-pricing-table/features/tools/v1/cleanup",method:"POST",data:i}).then(e=>{e.success?a.push(e.message||(0,n.__)("Product data cleaned up.","tier-pricing-table")):(l=!0,a.push(e.message))}).catch(e=>{l=!0,a.push(e.message)}))}if(E&&t.push(c()({path:"/tier-pricing-table/features/tools/v1/delete_global_rules",method:"POST"}).then(e=>{e.success?a.push(e.message||(0,n.__)("Global rules deleted.","tier-pricing-table")):(l=!0,a.push(e.message))}).catch(e=>{l=!0,a.push(e.message)})),x&&t.push(c()({path:"/tier-pricing-table/features/tools/v1/reset_settings",method:"POST"}).then(e=>{e.success?a.push(e.message||(0,n.__)("Settings reset to default.","tier-pricing-table")):(l=!0,a.push(e.message))}).catch(e=>{l=!0,a.push(e.message)})),0!==t.length){try{await Promise.all(t),l?P({type:"error",message:a.join(" ")}):(P({type:"success",message:a.join(" ")}),i(!1),s(!1),d("none"),u([]),h([]),_([]),f(!1),v(!1))}catch(e){P({type:"error",message:(0,n.__)("An unexpected error occurred.","tier-pricing-table")})}w(!1)}else w(!1)},style:{padding:"8px 24px"}},C?(0,n.__)("Processing...","tier-pricing-table"):(0,n.__)("Execute Cleanup","tier-pricing-table")),!N&&(0,t.createElement)("span",{style:{marginLeft:"15px",color:"#64748b",fontSize:"0.9em"}},(0,n.__)("Select at least one option above to proceed.","tier-pricing-table"))))))}const d=(0,t.createElement)(i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,t.createElement)(i.Path,{d:"M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z"})),g=(0,t.createElement)(i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,t.createElement)(i.Path,{d:"m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z"}));function u(){const[e,i]=(0,a.useState)([]),[r,s]=(0,a.useState)([]),[p,m]=(0,a.useState)(!0),[u,b]=(0,a.useState)(null),[h,y]=(0,a.useState)(!1),[_,E]=(0,a.useState)(null),[f,x]=(0,a.useState)({key:"",name:"",capabilities:{}}),[v,C]=(0,a.useState)(!1),[w,S]=(0,a.useState)(""),[k,T]=(0,a.useState)(""),B=()=>{m(!0),c()({path:"/tier-pricing-table/features/tools/v1/roles_capabilities"}).then(e=>{i(e.roles),s(e.all_capabilities),m(!1)}).catch(e=>{b({type:"error",message:e.message||"Failed to load roles."}),m(!1)})};(0,a.useEffect)(()=>{B()},[]);const R=["administrator","editor","author","contributor","subscriber"],P=r.filter(e=>e.toLowerCase().includes(k.toLowerCase()));return(0,t.createElement)("div",{className:"tpt-roles-management"},u&&(0,t.createElement)(l.Notice,{status:u.type,onRemove:()=>b(null)},u.message),(0,t.createElement)(l.Card,null,(0,t.createElement)(l.CardHeader,{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"15px 20px"}},(0,t.createElement)("h3",{style:{margin:0}},(0,n.__)("Roles and Capabilities","tier-pricing-table")),(0,t.createElement)(l.Button,{isPrimary:!0,icon:d,onClick:()=>{E(null),x({key:"",name:"",capabilities:{}}),S(""),y(!0)}},(0,n.__)("Add New Role","tier-pricing-table"))),(0,t.createElement)(l.CardBody,{style:{padding:"0"}},p?(0,t.createElement)(l.Spinner,null):(0,t.createElement)("div",{className:"tpt-modern-table",style:{borderRadius:"4px",border:"none",overflow:"hidden",boxShadow:"0 1px 2px rgba(0,0,0,0.05)"}},(0,t.createElement)("div",{style:{display:"grid",gridTemplateColumns:"2fr 2fr 1fr 1fr",padding:"12px 20px",background:"#f8f9fa",borderBottom:"1px solid #e2e4e7",fontWeight:600,color:"#1e1e1e",fontSize:"13px",textTransform:"uppercase",letterSpacing:"0.5px"}},(0,t.createElement)("div",null,(0,n.__)("Role Name","tier-pricing-table")),(0,t.createElement)("div",null,(0,n.__)("Role Key","tier-pricing-table")),(0,t.createElement)("div",null,(0,n.__)("Capabilities Count","tier-pricing-table")),(0,t.createElement)("div",null,(0,n.__)("Actions","tier-pricing-table"))),(0,t.createElement)("div",{style:{display:"flex",flexDirection:"column"}},e.map((a,i)=>(0,t.createElement)("div",{key:a.key,style:{display:"grid",gridTemplateColumns:"2fr 2fr 1fr 1fr",padding:"15px 20px",alignItems:"center",borderBottom:i<e.length-1?"1px solid #e2e4e7":"none",background:"#fff",transition:"background 0.2s"},onMouseEnter:e=>e.currentTarget.style.background="#fafafa",onMouseLeave:e=>e.currentTarget.style.background="#fff"},(0,t.createElement)("div",null,(0,t.createElement)("strong",{style:{fontSize:"14px",color:"#1d2327"}},a.name)),(0,t.createElement)("div",null,(0,t.createElement)("code",{style:{background:"#f0f0f1",padding:"4px 8px",borderRadius:"4px",color:"#2271b1",fontSize:"13px"}},a.key)),(0,t.createElement)("div",null,(0,t.createElement)("span",{style:{background:"#e4f0f6",color:"#006ea6",padding:"4px 10px",borderRadius:"20px",fontSize:"12px",fontWeight:600}},a.capabilities?Object.keys(a.capabilities).filter(e=>a.capabilities[e]).length:0)),(0,t.createElement)("div",null,(0,t.createElement)(l.Flex,{gap:2},(0,t.createElement)(l.FlexItem,null,(0,t.createElement)(l.Button,{isSecondary:!0,variant:"tertiary",icon:g,onClick:()=>(e=>{E(e);const t={};e.capabilities&&Object.keys(e.capabilities).forEach(a=>{e.capabilities[a]&&(t[a]=!0)}),x({key:e.key,name:e.name,capabilities:t}),y(!0)})(a)},(0,n.__)("Edit","tier-pricing-table"))),!R.includes(a.key)&&(0,t.createElement)(l.FlexItem,null,(0,t.createElement)(l.Button,{isDestructive:!0,variant:"tertiary",icon:o,onClick:()=>(e=>{confirm(`Are you sure you want to delete the role "${e.name}"?`)&&c()({path:"/tier-pricing-table/features/tools/v1/roles_capabilities",method:"DELETE",data:{key:e.key}}).then(e=>{e.success?(b({type:"success",message:e.message}),B()):b({type:"error",message:e.message})}).catch(e=>{b({type:"error",message:e.message})})})(a)},(0,n.__)("Delete","tier-pricing-table"))))))))))),h&&(0,t.createElement)(l.Modal,{title:_?(0,n.__)("Edit Role Capabilities","tier-pricing-table"):(0,n.__)("Create New Role","tier-pricing-table"),onRequestClose:()=>y(!1),style:{width:"800px",maxWidth:"90vw"}},(0,t.createElement)("div",{style:{marginBottom:"20px"}},(0,t.createElement)(l.TextControl,{label:(0,n.__)("Role Name","tier-pricing-table"),value:f.name,onChange:e=>x(t=>({...t,name:e})),disabled:!!_}),(0,t.createElement)(l.TextControl,{label:(0,n.__)("Role Key (e.g., custom_role)","tier-pricing-table"),value:f.key,onChange:e=>x(t=>({...t,key:e.toLowerCase().replace(/[^a-z0-9_]/g,"")})),disabled:!!_}),!_&&(0,t.createElement)("div",{style:{marginTop:"15px"}},(0,t.createElement)(l.SelectControl,{label:(0,n.__)("Copy capabilities from existing role","tier-pricing-table"),value:w,options:[{label:(0,n.__)("Select a role...","tier-pricing-table"),value:""},...e.map(e=>({label:e.name,value:e.key}))],onChange:t=>{if(S(t),!t)return void x(e=>({...e,capabilities:{}}));const a=e.find(e=>e.key===t);if(a){const e={};a.capabilities&&Object.keys(a.capabilities).forEach(t=>{a.capabilities[t]&&(e[t]=!0)}),x(t=>({...t,capabilities:e}))}}}))),(0,t.createElement)("hr",null),(0,t.createElement)("h3",null,(0,n.__)("Capabilities","tier-pricing-table")),(0,t.createElement)("div",{style:{marginBottom:"15px"}},(0,t.createElement)(l.SearchControl,{value:k,onChange:T,placeholder:(0,n.__)("Search capabilities...","tier-pricing-table")})),(0,t.createElement)("div",{style:{maxHeight:"300px",overflowY:"auto",border:"1px solid #ddd",padding:"10px"}},P.map(e=>(0,t.createElement)(l.CheckboxControl,{key:e,label:e,style:{marginBottom:"5px"},checked:!!f.capabilities[e],onChange:()=>(e=>{x(t=>({...t,capabilities:{...t.capabilities,[e]:!t.capabilities[e]}}))})(e)}))),(0,t.createElement)("div",{style:{marginTop:"20px",display:"flex",justifyContent:"flex-end",gap:"10px"}},(0,t.createElement)(l.Button,{isSecondary:!0,onClick:()=>y(!1)},(0,n.__)("Cancel","tier-pricing-table")),(0,t.createElement)(l.Button,{isPrimary:!0,isBusy:v,disabled:v,onClick:()=>{if(!f.key||!f.name)return void alert("Key and Name are required.");C(!0);const e=Object.keys(f.capabilities).filter(e=>f.capabilities[e]),t={key:f.key,name:f.name,capabilities:e},a=_?"PUT":"POST";c()({path:"/tier-pricing-table/features/tools/v1/roles_capabilities",method:a,data:t}).then(e=>{e.success?(b({type:"success",message:e.message}),y(!1),B()):b({type:"error",message:e.message}),C(!1)}).catch(e=>{b({type:"error",message:e.message}),C(!1)})}},(0,n.__)("Save Role","tier-pricing-table")))))}function b(){const e=window.location.hash?window.location.hash.replace("#",""):"roles";return(0,t.createElement)("div",{className:"tpt-tools-app",style:{background:"#fff",padding:"20px",borderRadius:"4px",margin:"15px 0"}},(0,t.createElement)(l.TabPanel,{className:"tpt-tools-tabs",activeClass:"is-active",initialTabName:e,onSelect:e=>{window.location.hash=e},tabs:[{name:"roles",title:(0,t.createElement)("span",{style:{display:"flex",alignItems:"center",gap:"8px"}},(0,t.createElement)(l.Icon,{icon:r,size:18})," ",(0,n.__)("Roles Management","tier-pricing-table")),className:"tpt-tab-roles"},{name:"cleanup",title:(0,t.createElement)("span",{style:{display:"flex",alignItems:"center",gap:"8px"}},(0,t.createElement)(l.Icon,{icon:o,size:18})," ",(0,n.__)("Data Clean Up","tier-pricing-table")),className:"tpt-tab-cleanup"}]},e=>(0,t.createElement)("div",{style:{marginTop:"20px"}},"cleanup"===e.name&&(0,t.createElement)(m,null),"roles"===e.name&&(0,t.createElement)(u,null))))}document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("tiered-pricing__feature__tools");e&&(0,a.createRoot)(e).render((0,t.createElement)(b,null))})})();
1 +(()=>{"use strict";var e={n:t=>{var a=t&&t.__esModule?()=>t.default:()=>t;return e.d(a,{a}),a},d:(t,a)=>{for(var l in a)e.o(a,l)&&!e.o(t,l)&&Object.defineProperty(t,l,{enumerable:!0,get:a[l]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,a=window.wp.element,l=window.wp.components,n=window.wp.i18n,i=window.wp.primitives,r=(0,t.createElement)(i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,t.createElement)(i.Path,{d:"M15.5 9.5a1 1 0 100-2 1 1 0 000 2zm0 1.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm-2.25 6v-2a2.75 2.75 0 00-2.75-2.75h-4A2.75 2.75 0 003.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0120.25 15zM9.5 8.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z",fillRule:"evenodd"})),o=(0,t.createElement)(i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,t.createElement)(i.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 5.5A2.25 2.25 0 0 0 9.878 7h4.244A2.251 2.251 0 0 0 12 5.5ZM12 4a3.751 3.751 0 0 0-3.675 3H5v1.5h1.27l.818 8.997a2.75 2.75 0 0 0 2.739 2.501h4.347a2.75 2.75 0 0 0 2.738-2.5L17.73 8.5H19V7h-3.325A3.751 3.751 0 0 0 12 4Zm4.224 4.5H7.776l.806 8.861a1.25 1.25 0 0 0 1.245 1.137h4.347a1.25 1.25 0 0 0 1.245-1.137l.805-8.861Z"})),s=window.wp.apiFetch;var c=e.n(s);const p=({label:e,type:i,selectedElements:r,onElementsChange:o})=>{const[s,p]=(0,a.useState)([]),[m,d]=(0,a.useState)(!1),[g,u]=(0,a.useState)({}),[b,h]=(0,a.useState)(null);return(0,a.useEffect)(()=>{const e={...g};r.forEach(t=>{const a=`${t.name} (#${t.id})`;e[a]=t}),u(e)},[]),(0,t.createElement)("div",{style:{marginBottom:"20px"}},(0,t.createElement)(l.FormTokenField,{label:e,value:r.map(e=>`${e.name} (#${e.id})`),suggestions:s,onInputChange:e=>{if(b&&clearTimeout(b),!e||e.length<3)return void p([]);const t=setTimeout(()=>{d(!0);const t="product"===i?`/wc/v3/products?search=${encodeURIComponent(e)}&per_page=10`:`/wc/v3/products/categories?search=${encodeURIComponent(e)}&per_page=10`;c()({path:t}).then(e=>{const t=[],a={...g};e.forEach(e=>{const l=`${e.name} (#${e.id})`;t.push(l),a[l]=e}),p(t),u(a),d(!1)}).catch(()=>d(!1))},500);h(t)},onChange:e=>{const t=e.map(e=>g[e]||null).filter(Boolean);o(t)},maxLength:100,__experimentalShowHowTo:!1,messages:{added:(0,n.__)("Item added","tier-pricing-table"),removed:(0,n.__)("Item removed","tier-pricing-table"),remove:(0,n.__)("Remove item","tier-pricing-table")}}),m&&(0,t.createElement)(l.Spinner,{style:{marginTop:"-10px",display:"block"}}))};function m(){const[e,i]=(0,a.useState)(!1),[r,s]=(0,a.useState)(!1),[m,d]=(0,a.useState)("none"),[g,u]=(0,a.useState)([]),[b,h]=(0,a.useState)([]),[y,_]=(0,a.useState)([]),[E,f]=(0,a.useState)(!1),[x,v]=(0,a.useState)(!1),[C,w]=(0,a.useState)(!1),[S,k]=(0,a.useState)([]),[T,B]=(0,a.useState)(!0),[R,P]=(0,a.useState)(null);(0,a.useEffect)(()=>{c()({path:"/tier-pricing-table/features/tools/v1/roles_capabilities"}).then(e=>{if(e.roles){const t=e.roles.map(e=>({label:e.name,value:e.key}));k(t)}B(!1)}).catch(()=>{B(!1)})},[]);const N=e||"all"===m||"specific"===m&&g.length>0||r||E||x;return(0,t.createElement)("div",{className:"tpt-tools-app"},R&&(0,t.createElement)(l.Notice,{status:R.type,onRemove:()=>P(null)},R.message),(0,t.createElement)(l.Card,null,(0,t.createElement)(l.CardHeader,null,(0,t.createElement)("h3",{style:{margin:0}},(0,n.__)("Clean Up & Reset Options","tier-pricing-table"))),(0,t.createElement)(l.CardBody,null,(0,t.createElement)("p",{style:{backgroundColor:"#fcf0f1",color:"#d63638",padding:"12px 16px",borderLeft:"4px solid #d63638",borderRadius:"4px",marginTop:"0",marginBottom:"20px"}},(0,t.createElement)("strong",null,(0,n.__)("Warning:","tier-pricing-table"))," ",(0,n.__)("The actions below will permanently delete data from your database. Please make a backup before proceeding.","tier-pricing-table")),(0,t.createElement)(l.Panel,{className:"tpt-cleanup-panel",style:{marginBottom:"20px"}},(0,t.createElement)(l.PanelBody,{title:(0,n.__)("1. Product Level Data","tier-pricing-table"),initialOpen:!0},(0,t.createElement)("p",{style:{color:"#64748b",marginTop:0,marginBottom:"15px"}},(0,n.__)("Remove tiered pricing rules directly attached to individual products.","tier-pricing-table")),(0,t.createElement)(l.CheckboxControl,{label:(0,n.__)("Clean Standard Tiered Pricing Data","tier-pricing-table"),checked:e,onChange:i}),(0,t.createElement)("h4",{style:{marginTop:"15px",marginBottom:"10px"}},(0,n.__)("Customer Based Data","tier-pricing-table")),(0,t.createElement)(l.CheckboxControl,{label:(0,n.__)("Clean All Customer Based Pricing Data","tier-pricing-table"),checked:r,onChange:s}),(0,t.createElement)("h4",{style:{marginTop:"15px",marginBottom:"10px"}},(0,n.__)("Role Based Data","tier-pricing-table")),(0,t.createElement)(l.RadioControl,{selected:m,options:[{label:(0,n.__)("Do not clean role based data","tier-pricing-table"),value:"none"},{label:(0,n.__)("Clean all roles","tier-pricing-table"),value:"all"},{label:(0,n.__)("Select specific roles to clean","tier-pricing-table"),value:"specific"}],onChange:e=>d(e)}),"specific"===m&&(T?(0,t.createElement)(l.Spinner,{style:{marginTop:"10px"}}):(0,t.createElement)("div",{style:{display:"flex",flexDirection:"column",gap:"8px",marginTop:"10px",marginLeft:"25px",paddingLeft:"15px",borderLeft:"2px solid #e2e8f0"}},S.map(e=>(0,t.createElement)(l.CheckboxControl,{key:e.value,label:e.label,checked:g.includes(e.value),onChange:()=>{return t=e.value,void u(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t]);var t}})))),(e||"none"!==m||r)&&(0,t.createElement)("div",{style:{marginTop:"20px",padding:"15px",background:"#f8fafc",borderRadius:"4px",border:"1px solid #e2e8f0"}},(0,t.createElement)("h4",{style:{marginTop:0,marginBottom:"5px"}},(0,n.__)("Filters (Optional)","tier-pricing-table")),(0,t.createElement)("p",{style:{color:"#64748b",fontSize:"0.9em",marginTop:0,marginBottom:"15px"}},(0,n.__)("Leave blank to apply the cleanup to all products. Otherwise, select specific categories or products.","tier-pricing-table")),(0,t.createElement)(p,{label:(0,n.__)("Select Categories","tier-pricing-table"),type:"category",selectedElements:b,onElementsChange:h}),(0,t.createElement)(p,{label:(0,n.__)("Select Products","tier-pricing-table"),type:"product",selectedElements:y,onElementsChange:_})))),(0,t.createElement)(l.Panel,{className:"tpt-cleanup-panel",style:{marginBottom:"20px"}},(0,t.createElement)(l.PanelBody,{title:(0,n.__)("2. Global Pricing Rules","tier-pricing-table"),initialOpen:!0},(0,t.createElement)("p",{style:{color:"#64748b",marginTop:0,marginBottom:"15px"}},(0,n.__)("Global pricing rules apply to multiple products at once.","tier-pricing-table")),(0,t.createElement)(l.CheckboxControl,{label:(0,t.createElement)("span",{style:{color:"#d63638",fontWeight:"500"}},(0,n.__)("Delete all Global Pricing Rules","tier-pricing-table")),checked:E,onChange:f}))),(0,t.createElement)(l.Panel,{className:"tpt-cleanup-panel",style:{marginBottom:"20px"}},(0,t.createElement)(l.PanelBody,{title:(0,n.__)("3. Plugin Settings","tier-pricing-table"),initialOpen:!0},(0,t.createElement)("p",{style:{color:"#64748b",marginTop:0,marginBottom:"15px"}},(0,n.__)("Reset general settings, labels, and table column configurations.","tier-pricing-table")),(0,t.createElement)(l.CheckboxControl,{label:(0,t.createElement)("span",{style:{color:"#d63638",fontWeight:"500"}},(0,n.__)("Reset all plugin settings to defaults","tier-pricing-table")),checked:x,onChange:v}))),(0,t.createElement)("div",{style:{marginTop:"30px",borderTop:"1px solid #e2e8f0",paddingTop:"20px",display:"flex",alignItems:"center"}},(0,t.createElement)(l.Button,{isPrimary:!0,isDestructive:!0,icon:o,isBusy:C,disabled:C||!N,onClick:async()=>{if(!confirm((0,n.__)("Are you sure you want to delete the selected data? This action cannot be undone.","tier-pricing-table")))return;w(!0),P(null);const t=[];let a=[],l=!1;if(e||"none"!==m||r){const i={clean_standard:e,clean_users:r,clean_all_roles:"all"===m,roles:"specific"===m?g:[],categories:b.map(e=>e.id),products:y.map(e=>e.id)};t.push(c()({path:"/tier-pricing-table/features/tools/v1/cleanup",method:"POST",data:i}).then(e=>{e.success?a.push(e.message||(0,n.__)("Product data cleaned up.","tier-pricing-table")):(l=!0,a.push(e.message))}).catch(e=>{l=!0,a.push(e.message)}))}if(E&&t.push(c()({path:"/tier-pricing-table/features/tools/v1/delete_global_rules",method:"POST"}).then(e=>{e.success?a.push(e.message||(0,n.__)("Global rules deleted.","tier-pricing-table")):(l=!0,a.push(e.message))}).catch(e=>{l=!0,a.push(e.message)})),x&&t.push(c()({path:"/tier-pricing-table/features/tools/v1/reset_settings",method:"POST"}).then(e=>{e.success?a.push(e.message||(0,n.__)("Settings reset to default.","tier-pricing-table")):(l=!0,a.push(e.message))}).catch(e=>{l=!0,a.push(e.message)})),0!==t.length){try{await Promise.all(t),l?P({type:"error",message:a.join(" ")}):(P({type:"success",message:a.join(" ")}),i(!1),s(!1),d("none"),u([]),h([]),_([]),f(!1),v(!1))}catch(e){P({type:"error",message:(0,n.__)("An unexpected error occurred.","tier-pricing-table")})}w(!1)}else w(!1)},style:{padding:"8px 24px"}},C?(0,n.__)("Processing...","tier-pricing-table"):(0,n.__)("Execute Cleanup","tier-pricing-table")),!N&&(0,t.createElement)("span",{style:{marginLeft:"15px",color:"#64748b",fontSize:"0.9em"}},(0,n.__)("Select at least one option above to proceed.","tier-pricing-table"))))))}const d=(0,t.createElement)(i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,t.createElement)(i.Path,{d:"M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z"})),g=(0,t.createElement)(i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,t.createElement)(i.Path,{d:"m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z"}));function u(){const[e,i]=(0,a.useState)([]),[r,s]=(0,a.useState)([]),[p,m]=(0,a.useState)(!0),[u,b]=(0,a.useState)(null),[h,y]=(0,a.useState)(!1),[_,E]=(0,a.useState)(null),[f,x]=(0,a.useState)({key:"",name:"",capabilities:{}}),[v,C]=(0,a.useState)(!1),[w,S]=(0,a.useState)(""),[k,T]=(0,a.useState)(""),B=()=>{m(!0),c()({path:"/tier-pricing-table/features/tools/v1/roles_capabilities"}).then(e=>{i(e.roles),s(e.all_capabilities),m(!1)}).catch(e=>{b({type:"error",message:e.message||"Failed to load roles."}),m(!1)})};(0,a.useEffect)(()=>{B()},[]);const R=["administrator","editor","author","contributor","subscriber"],P=r.filter(e=>e.toLowerCase().includes(k.toLowerCase()));return(0,t.createElement)("div",{className:"tpt-roles-management"},u&&(0,t.createElement)(l.Notice,{status:u.type,onRemove:()=>b(null)},u.message),(0,t.createElement)(l.Card,null,(0,t.createElement)(l.CardHeader,{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"15px 20px"}},(0,t.createElement)("h3",{style:{margin:0}},(0,n.__)("Roles and Capabilities","tier-pricing-table")),(0,t.createElement)(l.Button,{isPrimary:!0,icon:d,onClick:()=>{E(null),x({key:"",name:"",capabilities:{}}),S(""),y(!0)}},(0,n.__)("Add New Role","tier-pricing-table"))),(0,t.createElement)(l.CardBody,{style:{padding:"0"}},p?(0,t.createElement)(l.Spinner,null):(0,t.createElement)("div",{className:"tpt-modern-table",style:{borderRadius:"4px",border:"none",overflow:"hidden",boxShadow:"0 1px 2px rgba(0,0,0,0.05)"}},(0,t.createElement)("div",{style:{display:"grid",gridTemplateColumns:"2fr 2fr 1fr 1fr",padding:"12px 20px",background:"#f8f9fa",borderBottom:"1px solid #e2e4e7",fontWeight:600,color:"#1e1e1e",fontSize:"13px",textTransform:"uppercase",letterSpacing:"0.5px"}},(0,t.createElement)("div",null,(0,n.__)("Role Name","tier-pricing-table")),(0,t.createElement)("div",null,(0,n.__)("Role Key","tier-pricing-table")),(0,t.createElement)("div",null,(0,n.__)("Capabilities Count","tier-pricing-table")),(0,t.createElement)("div",null,(0,n.__)("Actions","tier-pricing-table"))),(0,t.createElement)("div",{style:{display:"flex",flexDirection:"column"}},e.map((a,i)=>(0,t.createElement)("div",{key:a.key,style:{display:"grid",gridTemplateColumns:"2fr 2fr 1fr 1fr",padding:"15px 20px",alignItems:"center",borderBottom:i<e.length-1?"1px solid #e2e4e7":"none",background:"#fff",transition:"background 0.2s"},onMouseEnter:e=>e.currentTarget.style.background="#fafafa",onMouseLeave:e=>e.currentTarget.style.background="#fff"},(0,t.createElement)("div",null,(0,t.createElement)("strong",{style:{fontSize:"14px",color:"#1d2327"}},a.name)),(0,t.createElement)("div",null,(0,t.createElement)("code",{style:{background:"#f0f0f1",padding:"4px 8px",borderRadius:"4px",color:"#2271b1",fontSize:"13px"}},a.key)),(0,t.createElement)("div",null,(0,t.createElement)("span",{style:{background:"#e4f0f6",color:"#006ea6",padding:"4px 10px",borderRadius:"20px",fontSize:"12px",fontWeight:600}},a.capabilities?Object.keys(a.capabilities).filter(e=>a.capabilities[e]).length:0)),(0,t.createElement)("div",null,(0,t.createElement)(l.Flex,{gap:2},(0,t.createElement)(l.FlexItem,null,(0,t.createElement)(l.Button,{isSecondary:!0,variant:"tertiary",icon:g,onClick:()=>(e=>{E(e);const t={};e.capabilities&&Object.keys(e.capabilities).forEach(a=>{e.capabilities[a]&&(t[a]=!0)}),x({key:e.key,name:e.name,capabilities:t}),y(!0)})(a)},(0,n.__)("Edit","tier-pricing-table"))),!R.includes(a.key)&&(0,t.createElement)(l.FlexItem,null,(0,t.createElement)(l.Button,{isDestructive:!0,variant:"tertiary",icon:o,onClick:()=>(e=>{confirm(`Are you sure you want to delete the role "${e.name}"?`)&&c()({path:"/tier-pricing-table/features/tools/v1/roles_capabilities",method:"DELETE",data:{key:e.key}}).then(e=>{e.success?(b({type:"success",message:e.message}),B()):b({type:"error",message:e.message})}).catch(e=>{b({type:"error",message:e.message})})})(a)},(0,n.__)("Delete","tier-pricing-table"))))))))))),h&&(0,t.createElement)(l.Modal,{title:_?(0,n.__)("Edit Role Capabilities","tier-pricing-table"):(0,n.__)("Create New Role","tier-pricing-table"),onRequestClose:()=>y(!1),style:{width:"800px",maxWidth:"90vw"}},(0,t.createElement)("div",{style:{marginBottom:"20px"}},(0,t.createElement)(l.TextControl,{label:(0,n.__)("Role Name","tier-pricing-table"),value:f.name,onChange:e=>x(t=>({...t,name:e})),disabled:!!_}),(0,t.createElement)(l.TextControl,{label:(0,n.__)("Role Key (e.g., custom_role)","tier-pricing-table"),value:f.key,onChange:e=>x(t=>({...t,key:e.toLowerCase().replace(/[^a-z0-9_]/g,"")})),disabled:!!_}),!_&&(0,t.createElement)("div",{style:{marginTop:"15px"}},(0,t.createElement)(l.SelectControl,{label:(0,n.__)("Copy capabilities from existing role","tier-pricing-table"),value:w,options:[{label:(0,n.__)("Select a role...","tier-pricing-table"),value:""},...e.map(e=>({label:e.name,value:e.key}))],onChange:t=>{if(S(t),!t)return void x(e=>({...e,capabilities:{}}));const a=e.find(e=>e.key===t);if(a){const e={};a.capabilities&&Object.keys(a.capabilities).forEach(t=>{a.capabilities[t]&&(e[t]=!0)}),x(t=>({...t,capabilities:e}))}}}))),(0,t.createElement)("hr",null),(0,t.createElement)("h3",null,(0,n.__)("Capabilities","tier-pricing-table")),(0,t.createElement)("div",{style:{marginBottom:"15px"}},(0,t.createElement)(l.SearchControl,{value:k,onChange:T,placeholder:(0,n.__)("Search capabilities...","tier-pricing-table")})),(0,t.createElement)("div",{style:{maxHeight:"300px",overflowY:"auto",border:"1px solid #ddd",padding:"10px"}},P.map(e=>(0,t.createElement)(l.CheckboxControl,{key:e,label:e,style:{marginBottom:"5px"},checked:!!f.capabilities[e],onChange:()=>(e=>{x(t=>({...t,capabilities:{...t.capabilities,[e]:!t.capabilities[e]}}))})(e)}))),(0,t.createElement)("div",{style:{marginTop:"20px",display:"flex",justifyContent:"flex-end",gap:"10px"}},(0,t.createElement)(l.Button,{isSecondary:!0,onClick:()=>y(!1)},(0,n.__)("Cancel","tier-pricing-table")),(0,t.createElement)(l.Button,{isPrimary:!0,isBusy:v,disabled:v,onClick:()=>{if(!f.key||!f.name)return void alert("Key and Name are required.");C(!0);const e=Object.keys(f.capabilities).filter(e=>f.capabilities[e]),t={key:f.key,name:f.name,capabilities:e},a=_?"PUT":"POST";c()({path:"/tier-pricing-table/features/tools/v1/roles_capabilities",method:a,data:t}).then(e=>{e.success?(b({type:"success",message:e.message}),y(!1),B()):b({type:"error",message:e.message}),C(!1)}).catch(e=>{b({type:"error",message:e.message}),C(!1)})}},(0,n.__)("Save Role","tier-pricing-table")))))}function b(){const e=window.location.hash?window.location.hash.replace("#",""):"roles";return(0,t.createElement)("div",{className:"tpt-tools-app",style:{background:"#fff",padding:"20px",borderRadius:"4px",margin:"15px 0"}},(0,t.createElement)(l.TabPanel,{className:"tpt-tools-tabs",activeClass:"is-active",initialTabName:e,onSelect:e=>{const t="#"+e;window.location.hash===t||!window.location.hash&&"roles"===e||window.history.replaceState(null,"",t)},tabs:[{name:"roles",title:(0,t.createElement)("span",{style:{display:"flex",alignItems:"center",gap:"8px"}},(0,t.createElement)(l.Icon,{icon:r,size:18})," ",(0,n.__)("Roles Management","tier-pricing-table")),className:"tpt-tab-roles"},{name:"cleanup",title:(0,t.createElement)("span",{style:{display:"flex",alignItems:"center",gap:"8px"}},(0,t.createElement)(l.Icon,{icon:o,size:18})," ",(0,n.__)("Data Clean Up","tier-pricing-table")),className:"tpt-tab-cleanup"}]},e=>(0,t.createElement)("div",{style:{marginTop:"20px"}},"cleanup"===e.name&&(0,t.createElement)(m,null),"roles"===e.name&&(0,t.createElement)(u,null))))}document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("tiered-pricing__feature__tools");e&&(0,a.createRoot)(e).render((0,t.createElement)(b,null))})})();