{"translation-revision-date":"2026-04-14 06:42+0000","generator":"WP-CLI\/2.12.0","source":"gutenberg\/edit-pages-panel\/src\/components\/PageForm.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"tr_TR","plural-forms":"nplurals=2; plural=n != 1;"},"Cancel":["\u0130ptal "],"Error:":["Hata:"],"Page title:":["Sayfa ba\u015fl\u0131\u011f\u0131:"],"Save":["Kaydet"],"Saving":["Kaydediliyor"]}}}!function(){"use strict";var e={d:function(t,n){for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{init:function(){return kn}});var n=window.elementorV2.licenseApi;const o="overridable-prop",r="atomic-components",i="elementor_component",a="Elementor Editor Components MCP - Tools for creating and managing reusable components.\n Components are reusable blocks of content that can be used multiple times across the pages, its a widget which contains a set of elements and styles.\n\t\t\n\t\tBefore using the tools, you must fetch the list of components from the resource (as mentioned in the required resources), if you see something that might fit, get the component instance.\n\t\tThen you can save the component instance as a new component (Name is unique so do not repeat it).\n\n\t\tIf you see that there is a component that might match the needs of the user, get the component, see if it's published and suggest the user to use it (but only if you are 100% sure on that).\n\t\tIgnore this If statement when the users asks to create a new component, you can only suggest it after the work is done.";var s=window.elementorV2.editor,l=window.elementorV2.editorComponents,c=window.elementorV2.editorControls,p=window.elementorV2.editorDocuments,m=window.elementorV2.editorEditingPanel,d=window.elementorV2.editorElementsPanel,u=window.elementorV2.editorMcp,g=window.elementorV2.editorPanels,f=window.elementorV2.editorV1Adapters,y=window.wp.i18n,h=window.React,v=window.elementorV2.editorCurrentUser,b=window.elementorV2.editorUi,E=window.elementorV2.icons,w=window.elementorV2.store,_=window.elementorV2.ui;function C(){const e=(0,w.__useSelector)(l.selectPath),t=(0,p.getV1DocumentsManager)();return(0,h.useCallback)(()=>{const{componentId:n,instanceId:o}=e.at(-2)??{};n&&o?(0,l.switchToComponent)(n,o):(0,l.switchToComponent)(t.getInitialId())},[e,t])}const x=({anchorRef:e,shouldShowIntroduction:t,onClose:n})=>e.current&&t?h.createElement(_.Popover,{anchorEl:e.current,open:t,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:-30},onClose:n},h.createElement(_.Box,{sx:{width:"296px"}},h.createElement(b.PopoverHeader,{title:(0,y.__)("Add your first property","elementor-pro"),onClose:n}),h.createElement(_.Image,{sx:{width:"296px",height:"160px"},src:"https://assets.elementor.com/packages/v1/images/components-properties-intro.png",alt:""}),h.createElement(c.PopoverContent,null,h.createElement(_.Stack,{sx:{p:2}},h.createElement(_.Typography,{variant:"body2"},(0,y.__)("Properties make instances flexible.","elementor-pro")),h.createElement(_.Typography,{variant:"body2"},(0,y.__)("Select any Element, then in the General tab, click next to any setting you want users to customize - like text, images, or links.","elementor-pro")),h.createElement(_.Typography,{variant:"body2",sx:{mt:2}},(0,y.__)("Your properties will appear in the Properties panel, where you can organize and manage them anytime.","elementor-pro")),h.createElement(_.Link,{href:"http://go.elementor.com/components-guide",target:"_blank",sx:{mt:2},color:"info.main",variant:"body2"},(0,y.__)("Learn more","elementor-pro")),h.createElement(_.Stack,{direction:"row",alignItems:"center",justifyContent:"flex-end",sx:{pt:1}},h.createElement(_.Button,{size:"medium",variant:"contained",onClick:n},(0,y.__)("Got it","elementor-pro"))))))):null;var I=window.elementorV2.utils,P=window.elementorV2.editorElements;function S(e,t,n,o){const r=(0,P.getContainer)(e);r&&((0,l.isComponentInstance)(r.model.toJSON())?function(e,t){const n=(0,P.getElementSetting)(e,"component_instance"),o=l.componentInstancePropTypeUtil.extract(n),r=l.componentInstanceOverridesPropTypeUtil.extract(o?.overrides);if(!r?.length)return;const i=T(r,t),a=l.componentInstancePropTypeUtil.create({...o,overrides:l.componentInstanceOverridesPropTypeUtil.create(i)});(0,P.updateElementSettings)({id:e,props:{component_instance:a},withHistory:!1})}(e,o):(0,P.updateElementSettings)({id:e,props:{[t]:n??null},withHistory:!1}))}function T(e,t){return e.map(e=>l.componentOverridablePropTypeUtil.isValid(e)?l.componentInstanceOverridePropTypeUtil.isValid(e.value.origin_value)?t&&e.value.override_key!==t?e:e.value.origin_value:null:e).filter(e=>null!==e)}function O(e){let t=!1;const n={};for(const[o,r]of Object.entries(e))l.componentOverridablePropTypeUtil.isValid(r)?(n[o]=r.value.origin_value,t=!0):n[o]=r;return{hasChanges:t,settings:n}}function k(e){const t={...e};if((0,l.isComponentInstance)({widgetType:e.widgetType,elType:e.elType}))t.settings=function(e){if(!e?.component_instance)return e;const t=l.componentInstancePropTypeUtil.extract(e.component_instance),n=l.componentInstanceOverridesPropTypeUtil.extract(t?.overrides);if(!n?.length)return e;const o=T(n);return{...e,component_instance:l.componentInstancePropTypeUtil.create({...t,overrides:l.componentInstanceOverridesPropTypeUtil.create(o)})}}(e.settings);else if(t.settings){const{settings:e}=O(t.settings);t.settings=e}return t.elements&&(t.elements=t.elements.map(k)),t}function D(e,t,n){const o=e.items[t];return o?o.props.includes(n)?e:{...e,items:{...e.items,[t]:{...o,props:[...o.props,n]}}}:e}function A({componentId:e,propKey:t,executedBy:n,revertElementOverridable:o=!0}){const r=l.componentsSelectors.getOverridableProps(e);if(!r||0===Object.keys(r.props).length)return;const i=Array.isArray(t)?t:[t],a=[];for(const e of i){const t=r.props[e];t&&(a.push(t),o&&S(t.elementId,t.propKey,t.originValue,e))}if(0===a.length)return;const s=Object.fromEntries(Object.entries(r.props).filter(([e])=>!i.includes(e))),c=function(e,t){const n=Array.isArray(t)?t:[t];return{...e,items:Object.fromEntries(Object.entries(e.items).map(([e,t])=>[e,{...t,props:t.props.filter(e=>!n.includes(e))}]))}}(r.groups,t);l.componentsActions.setOverridableProps(e,{...r,props:s,groups:c});const p=l.componentsSelectors.getCurrentComponent();for(const e of a)(0,l.trackComponentEvent)({action:"propertyRemoved",source:n,executedBy:n,component_uid:p?.uid,property_id:e.overrideKey,property_path:e.propKey,property_name:e.label,element_type:e.widgetType??e.elType})}function L({componentId:e,overrideKey:t,label:n,groupId:o}){const r=l.componentsSelectors.getOverridableProps(e);if(!r)return;const i=r.props[t];if(!i)return;const a=i.groupId,s=o??a,c={...i,label:n,groupId:s},p=function(e,t,n,o){if(n===o)return e;const r=function(e,t,n){const o=e.items[t];return o?{...e,items:{...e.items,[t]:{...o,props:o.props.filter(e=>e!==n)}}}:e}(e,n,t);return D(r,o,t)}(r.groups,t,a,s);return l.componentsActions.setOverridableProps(e,{...r,props:{...r.props,[t]:c},groups:p}),c}const R="__cpPropGroupHeaders__",M={EMPTY_NAME:(0,y.__)("Property name is required","elementor-pro"),DUPLICATE_NAME:(0,y.__)("Property name already exists","elementor-pro")};function U(e,t,n){const o=e.trim();if(!o)return{isValid:!1,errorMessage:M.EMPTY_NAME};const r=o.toLowerCase(),i=n?.trim().toLowerCase();return t.some(e=>{const t=e.trim().toLowerCase();return(!i||t!==i)&&t===r})?{isValid:!1,errorMessage:M.DUPLICATE_NAME}:{isValid:!0,errorMessage:null}}function z(){return z=Object.assign?Object.assign.bind():function(e){for(var t=1;t{const t=U(a??"",o,n?.label);t.isValid?e({label:a??"",group:l}):m(t.errorMessage)},"data-testid":"overridable-prop-form"},h.createElement(_.Stack,{alignItems:"start",sx:{width:"268px",...r}},h.createElement(_.Stack,{direction:"row",alignItems:"center",py:1,px:1.5,sx:{columnGap:.5,borderBottom:"1px solid",borderColor:"divider",width:"100%",mb:1.5}},h.createElement(_.Typography,{variant:"caption",sx:{color:"text.primary",fontWeight:"500",lineHeight:1}},f)),h.createElement(_.Grid,{container:!0,gap:.75,alignItems:"start",px:1.5,mb:1.5},h.createElement(_.Grid,{item:!0,xs:12},h.createElement(_.FormLabel,{size:"tiny"},d)),h.createElement(_.Grid,{item:!0,xs:12},h.createElement(_.TextField,{name:d,size:B,fullWidth:!0,autoFocus:!0,placeholder:(0,y.__)("Enter value","elementor-pro"),value:a??"",onChange:e=>{const t=e.target.value;s(t);const r=U(t,o,n?.label);m(r.errorMessage)},error:Boolean(p),helperText:p}))),h.createElement(_.Grid,{container:!0,gap:.75,alignItems:"start",px:1.5,mb:1.5},h.createElement(_.Grid,{item:!0,xs:12},h.createElement(_.FormLabel,{size:"tiny"},u)),h.createElement(_.Grid,{item:!0,xs:12},h.createElement(_.Select,{name:u,size:B,fullWidth:!0,value:l??null,onChange:e=>c(e.target.value),displayEmpty:!0,renderValue:e=>e?i.find(({value:t})=>t===e)?.label??e:i[0].label},i.map(({label:e,...t})=>h.createElement(b.MenuListItem,z({key:t.value},t,{value:t.value??""}),e))))),h.createElement(_.Stack,{direction:"row",justifyContent:"flex-end",alignSelf:"end",mt:1.5,py:1,px:1.5},h.createElement(_.Button,{type:"submit",disabled:!a||Boolean(p),variant:"contained",color:"primary",size:"small"},v))))}var N=window.elementorV2.coreAdapterUtils;function $(){return $=Object.assign?Object.assign.bind():function(e){for(var t=1;th.createElement(_.UnstableSortableProvider,$({restrictAxis:!0,variant:"static",dragPlaceholderStyle:{opacity:"1"}},e)),K=({triggerClassName:e,...t})=>h.createElement(J,$({},t,{role:"button",className:`sortable-trigger ${e??""}`.trim(),"aria-label":"sort"}),h.createElement(E.GripVerticalIcon,{fontSize:"tiny"})),F=({children:e,id:t})=>h.createElement(_.UnstableSortableItem,{id:t,render:({itemProps:t,isDragged:n,triggerProps:o,itemStyle:r,triggerStyle:i,dropIndicationStyle:a,showDropIndication:s,isDragOverlay:l,isDragPlaceholder:c})=>h.createElement(_.Box,$({},t,{style:r,component:"div",role:"listitem",sx:{backgroundColor:l?"background.paper":void 0}}),e({isDragged:n,isDragPlaceholder:c,triggerProps:o,triggerStyle:i}),s&&h.createElement(X,{style:a}))}),H=(0,N.isCoreAtLeast)("4.1.0");function q({children:e,value:t,onChange:n}){return h.createElement(_.UnstableSortable,{mode:"multiple",restrictAxis:!0,dragPlaceholderStyle:{opacity:"1"},value:t,onChange:n},e)}function W({groupId:e,children:t}){return h.createElement(_.UnstableSortableGroup,{groupId:e},t)}function Y({id:e,children:t}){return h.createElement(_.UnstableSortableItem,{id:e},t)}const J=(0,_.styled)("div")(({theme:e})=>({position:"absolute",left:"-2px",top:"50%",transform:`translate( -${e.spacing(1.5)}, -50% )`,color:e.palette.action.active,cursor:"grab"})),X=(0,_.styled)(_.Box)` width: 100%; height: 1px; background-color: ${({theme:e})=>e.palette.text.primary}; `;function Z(){return Z=Object.assign?Object.assign.bind():function(e){for(var t=1;t{t.stopPropagation(),s(e.overrideKey)},"aria-label":(0,y.__)("Delete property","elementor-pro"),sx:{p:.25}},h.createElement(E.XIcon,{fontSize:"tiny"}))),h.createElement(_.Popover,Z({},m,{anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},PaperProps:{sx:{width:c.anchorEl?.getBoundingClientRect().width}}}),h.createElement(j,{onSubmit:e=>{l(e),c.close()},currentValue:e,groups:i,existingLabels:a,sx:{width:"100%"}})))}function ee(){return ee=Object.assign?Object.assign.bind():function(e){for(var t=1;t0,x=u&&w===e.id;return h.createElement(_.Box,ee({},o,{style:r,sx:{opacity:a?.5:1}}),h.createElement(_.Stack,{gap:1},h.createElement(_.Box,{className:"group-header",sx:{position:"relative","&:hover .group-sortable-trigger":{visibility:"visible"},"& .group-sortable-trigger":{visibility:"hidden"},"&:hover .group-menu":{visibility:"visible"},"& .group-menu":{visibility:"hidden"}}},h.createElement(K,ee({triggerClassName:"group-sortable-trigger"},i)),h.createElement(_.Stack,{direction:"row",alignItems:"center",justifyContent:"space-between",gap:2},x?h.createElement(_.Box,{sx:{height:28,display:"flex",alignItems:"center",border:2,borderColor:"text.secondary",borderRadius:1,pl:.5,flexGrow:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",width:"100%"}},h.createElement(b.EditableField,ee({ref:d,as:_.Typography,variant:"caption",error:g??void 0,sx:{color:"text.primary",fontWeight:400,lineHeight:1.66}},f()))):h.createElement(b.EllipsisWithTooltip,{title:e.label,as:_.Typography,variant:"caption",sx:{color:"text.primary",fontWeight:400,lineHeight:1.66}}),h.createElement(_.IconButton,ee({className:"group-menu",size:"tiny",sx:{p:.25,visibility:x?"visible":void 0},"aria-label":(0,y.__)("Group actions","elementor-pro")},(0,_.bindTrigger)(m)),h.createElement(E.DotsVerticalIcon,{fontSize:"tiny"})))),h.createElement(W,{groupId:e.id},({setDroppableRef:e,isEmpty:o,items:r})=>h.createElement(_.List,{ref:e,sx:{p:0,display:"flex",flexDirection:"column",gap:1,...o&&{minHeight:40,backgroundColor:"action.hover",borderRadius:1}}},r.map(e=>{const o=t[String(e)];return o?h.createElement(Y,{key:String(e),id:e},({itemProps:e,itemStyle:r,triggerProps:i,triggerStyle:a,isDragPlaceholder:c})=>h.createElement(Q,{sortableItemProps:e,sortableItemStyle:r,prop:o,sortableTriggerProps:{...i,style:a},isDragPlaceholder:c,groups:n,existingLabels:Object.values(t).map(e=>e.label),onDelete:s,onUpdate:e=>l(o.overrideKey,e)})):null})))),h.createElement(_.Menu,ee({},(0,_.bindMenu)(m),{anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"}}),h.createElement(b.MenuListItem,{sx:{minWidth:"160px"},onClick:()=>{m.close(),v(e.id)}},h.createElement(_.Typography,{variant:"caption",sx:{color:"text.primary"}},(0,y.__)("Rename","elementor-pro"))),C?h.createElement(_.Tooltip,{title:(0,y.__)("To delete the group, first remove all the properties","elementor-pro"),placement:"right"},h.createElement("span",null,h.createElement(b.MenuListItem,{disabled:!0},h.createElement(_.Typography,{variant:"caption",sx:{color:"text.disabled"}},(0,y.__)("Delete","elementor-pro"))))):h.createElement(b.MenuListItem,{onClick:()=>{m.close(),c(e.id)}},h.createElement(_.Typography,{variant:"caption",sx:{color:"error.light"}},(0,y.__)("Delete","elementor-pro")))))}function ne({introductionRef:e}){const[t,n]=(0,h.useState)(!1);return h.createElement(h.Fragment,null,h.createElement(_.Stack,{alignItems:"center",justifyContent:"flex-start",height:"100%",color:"text.secondary",sx:{px:2.5,pt:10,pb:5.5},gap:1},h.createElement(E.ComponentPropListIcon,{fontSize:"large"}),h.createElement(_.Typography,{align:"center",variant:"subtitle2"},(0,y.__)("Add your first property","elementor-pro")),h.createElement(_.Typography,{align:"center",variant:"caption"},(0,y.__)("Make instances flexible while keeping design synced.","elementor-pro")),h.createElement(_.Typography,{align:"center",variant:"caption"},(0,y.__)("Select any element, then click + next to a setting to expose it.","elementor-pro")),h.createElement(_.Link,{variant:"caption",color:"secondary",sx:{textDecorationLine:"underline"},onClick:()=>n(!0)},(0,y.__)("Learn more","elementor-pro"))),h.createElement(x,{anchorRef:e,shouldShowIntroduction:t,onClose:()=>n(!1)}))}function oe(){return oe=Object.assign?Object.assign.bind():function(e){for(var t=1;t{t.stopPropagation(),i(e.overrideKey)},"aria-label":"Delete property",sx:{p:.25}},h.createElement(E.XIcon,{fontSize:"tiny"}))),h.createElement(_.Popover,oe({},c,{anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},PaperProps:{sx:{width:s.anchorEl?.getBoundingClientRect().width}}}),h.createElement(j,{onSubmit:e=>{a(e),s.close()},currentValue:e,groups:o,existingLabels:r,sx:{width:"100%"}})))}function ie(){return ie=Object.assign?Object.assign.bind():function(e){for(var t=1;tt[e]).filter(e=>Boolean(e)),m=(0,_.usePopupState)({variant:"popover",disableAutoFocus:!0}),{editableRef:d,isEditing:u,error:g,getEditableProps:f,setEditingGroupId:v,editingGroupId:w}=c,C=e.props.length>0,x=u&&w===e.id;return h.createElement(_.Box,{sx:{opacity:r?.5:1}},h.createElement(_.Stack,{gap:1},h.createElement(_.Box,{className:"group-header",sx:{position:"relative","&:hover .group-sortable-trigger":{visibility:"visible"},"& .group-sortable-trigger":{visibility:"hidden"},"&:hover .group-menu":{visibility:"visible"},"& .group-menu":{visibility:"hidden"}}},h.createElement(K,ie({triggerClassName:"group-sortable-trigger"},o)),h.createElement(_.Stack,{direction:"row",alignItems:"center",justifyContent:"space-between",gap:2},x?h.createElement(_.Box,{sx:{height:28,display:"flex",alignItems:"center",border:2,borderColor:"text.secondary",borderRadius:1,pl:.5,flexGrow:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",width:"100%"}},h.createElement(b.EditableField,ie({ref:d,as:_.Typography,variant:"caption",error:g??void 0,sx:{color:"text.primary",fontWeight:400,lineHeight:1.66}},f()))):h.createElement(b.EllipsisWithTooltip,{title:e.label,as:_.Typography,variant:"caption",sx:{color:"text.primary",fontWeight:400,lineHeight:1.66}}),h.createElement(_.IconButton,ie({className:"group-menu",size:"tiny",sx:{p:.25,visibility:x?"visible":void 0},"aria-label":(0,y.__)("Group actions","elementor-pro")},(0,_.bindTrigger)(m)),h.createElement(E.DotsVerticalIcon,{fontSize:"tiny"})))),h.createElement(_.List,{sx:{p:0,display:"flex",flexDirection:"column",gap:1}},h.createElement(G,{value:e.props,onChange:i},p.map(e=>h.createElement(F,{key:e.overrideKey,id:e.overrideKey},({triggerProps:o,triggerStyle:r,isDragPlaceholder:i})=>h.createElement(re,{prop:e,sortableTriggerProps:{...o,style:r},isDragPlaceholder:i,groups:n,existingLabels:Object.values(t).map(e=>e.label),onDelete:a,onUpdate:t=>s(e.overrideKey,t)})))))),h.createElement(_.Menu,ie({},(0,_.bindMenu)(m),{anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"}}),h.createElement(b.MenuListItem,{sx:{minWidth:"160px"},onClick:()=>{m.close(),v(e.id)}},h.createElement(_.Typography,{variant:"caption",sx:{color:"text.primary"}},(0,y.__)("Rename","elementor-pro"))),h.createElement(_.Tooltip,{title:C?(0,y.__)("To delete the group, first remove all the properties","elementor-pro"):"",placement:"right"},h.createElement("span",null,h.createElement(b.MenuListItem,{onClick:()=>{m.close(),l(e.id)},disabled:C},h.createElement(_.Typography,{variant:"caption",sx:{color:C?"text.disabled":"error.light"}},(0,y.__)("Delete","elementor-pro")))))))}const se={EMPTY_NAME:(0,y.__)("Group name is required","elementor-pro"),DUPLICATE_NAME:(0,y.__)("Group name already exists","elementor-pro")};function le({currentComponentId:e,overridableProps:t,groups:n,onPropertyDelete:o,onPropertyUpdate:r}){const[i,a]=(0,h.useState)(0),s=(0,h.useMemo)(()=>{const e=n.map(e=>e.id),t=Object.fromEntries(n.map(e=>[e.id,[...e.props]]));return{[R]:e,...t}},[n]);return{sortableKey:`${n.length}:${i}`,sortableValue:s,handlePropertyDelete:e=>{o(e),a(e=>e+1)},handlePropertyUpdate:(e,n)=>{const o=t.props[e],i=!!o&&n.group!==o.groupId;r(e,n),i&&a(e=>e+1)},handleSortableChange:t=>{(function(e,t){const n=l.componentsSelectors.getOverridableProps(t);if(!n)return;const o=e[R]??[],{items:r,props:i}=function(e,t){const n={...t.groups.items},o={...t.props};for(const[t,r]of Object.entries(e)){if(t===R||!Array.isArray(r))continue;const e=[...new Set(r)],i=n[t];i&&(n[t]={...i,props:e});for(const n of e){const e=o[n];e&&e.groupId!==t&&(o[n]={...e,groupId:t})}}return{items:n,props:o}}(e,n);l.componentsActions.setOverridableProps(t,{...n,props:i,groups:{items:r,order:o.filter(e=>e in r)}}),(0,p.setDocumentModifiedStatus)(!0)})(t,e),function(e){return Object.entries(e).some(([e,t])=>e!==R&&Array.isArray(t)&&t.length!==new Set(t).size)}(t)&&a(e=>e+1)}}}const ce="New group";function pe({onClose:e}){const t=(0,l.useCurrentComponentId)(),n=(0,l.useSanitizeOverridableProps)(t),[o,r]=(0,h.useState)(!1),i=(0,h.useRef)(null),a=function(){const[e,t]=(0,h.useState)(null),n=(0,l.useCurrentComponentId)(),o=(0,l.useOverridableProps)(n),r=o?.groups?.items??{},i=e?r[e]:null,{ref:a,openEditMode:s,isEditing:c,error:m,getProps:d}=(0,b.useEditable)({value:i?.label??"",onSubmit:t=>{if(!e||!n)throw new Error((0,y.__)("Group ID or component ID is missing","elementor-pro"));!function({componentId:e,groupId:t,label:n}){const o=l.componentsSelectors.getOverridableProps(e);if(!o)return!1;if(!o.groups.items[t])return!1;const r=function(e,t,n){const o=e.items[t];return o?{...e,items:{...e.items,[t]:{...o,label:n}}}:e}(o.groups,t,n);l.componentsActions.setOverridableProps(e,{...o,groups:r})}({componentId:n,groupId:e,label:t}),(0,p.setDocumentModifiedStatus)(!0)},validation:t=>function(e,t){const n=e.trim();return n?Object.values(t).some(e=>e.label===n)?se.DUPLICATE_NAME:"":se.EMPTY_NAME}(t,Object.fromEntries(Object.entries(r).filter(([t])=>t!==e)))||null});return{editableRef:a,isEditing:c,error:m,getEditableProps:d,setEditingGroupId:e=>{t(e),s()},editingGroupId:e}}(),s=(0,h.useMemo)(()=>n?n.groups.order.map(e=>n.groups.items[e]??null).filter(Boolean):[],[n]),c=(0,h.useMemo)(()=>s.map(e=>({value:e.id,label:e.label})),[s]);if(!t||!n)return null;const m=!(s.length>0||o),d=e=>{A({componentId:t,propKey:e,executedBy:"user"}),(0,p.setDocumentModifiedStatus)(!0)},u=(e,n)=>{L({componentId:t,overrideKey:e,label:n.label,groupId:n.group}),(0,p.setDocumentModifiedStatus)(!0)},f=e=>{!function({componentId:e,groupId:t}){const n=l.componentsSelectors.getOverridableProps(e);if(!n)return!1;const o=n.groups.items[t];if(!o||o.props.length>0)return!1;const r=function(e,t){const{[t]:n,...o}=e.items;return{items:o,order:e.order.filter(e=>e!==t)}}(n.groups,t);l.componentsActions.setOverridableProps(e,{...n,groups:r})}({componentId:t,groupId:e}),(0,p.setDocumentModifiedStatus)(!0)};return h.createElement(h.Fragment,null,h.createElement(g.PanelHeader,{sx:{justifyContent:"start",pl:1.5,pr:1,py:1},"data-testid":"component-property-panel-header"},h.createElement(_.Stack,{direction:"row",alignItems:"center",gap:.5,flexGrow:1},h.createElement(E.ComponentPropListIcon,{fontSize:"tiny"}),h.createElement(g.PanelHeaderTitle,{variant:"subtitle2"},(0,y.__)("Component properties","elementor-pro"))),!m&&h.createElement(_.Tooltip,{title:(0,y.__)("Add new group","elementor-pro")},h.createElement(_.IconButton,{size:"tiny","aria-label":(0,y.__)("Add new group","elementor-pro"),onClick:()=>{if(o)return;const e=(0,I.generateUniqueId)("group"),n=function(e){const t=new Set(e.map(e=>e.label));if(!t.has(ce))return ce;let n=1,o=`${ce}-${n}`;for(;t.has(o);)n++,o=`${ce}-${n}`;return o}(s);!function({componentId:e,groupId:t,label:n,executedBy:o}){const r=l.componentsSelectors.getCurrentComponent(),i=l.componentsSelectors.getOverridableProps(e);if(!i)return;const a={id:t,label:n,props:[]};l.componentsActions.setOverridableProps(e,{...i,groups:{...i.groups,items:{...i.groups.items,[t]:a},order:[t,...i.groups.order]}}),(0,l.trackComponentEvent)({action:"propertiesGroupCreated",source:o,executedBy:o,component_uid:r?.uid,group_name:n})}({componentId:t,groupId:e,label:n,executedBy:"user"}),(0,p.setDocumentModifiedStatus)(!0),r(!1),a.setEditingGroupId(e)}},h.createElement(E.FolderPlusIcon,{fontSize:"tiny"}))),h.createElement(_.Tooltip,{title:(0,y.__)("Close panel","elementor-pro")},h.createElement(_.IconButton,{ref:i,size:"tiny","aria-label":(0,y.__)("Close panel","elementor-pro"),onClick:e},h.createElement(E.XIcon,{fontSize:"tiny"})))),h.createElement(_.Divider,null),h.createElement(g.PanelBody,null,m?h.createElement(ne,{introductionRef:i}):h.createElement(_.List,{sx:{p:2,display:"flex",flexDirection:"column",gap:2}},H?h.createElement(de,{currentComponentId:t,overridableProps:n,groups:s,allGroupsForSelect:c,groupLabelEditable:a,setIsAddingGroup:r,onPropertyDelete:d,onPropertyUpdate:u,onGroupDelete:f}):h.createElement(me,{currentComponentId:t,overridableProps:n,groups:s,allGroupsForSelect:c,groupLabelEditable:a,setIsAddingGroup:r,onPropertyDelete:d,onPropertyUpdate:u,onGroupDelete:f}))))}function me({currentComponentId:e,overridableProps:t,groups:n,allGroupsForSelect:o,groupLabelEditable:r,setIsAddingGroup:i,onPropertyDelete:a,onPropertyUpdate:s,onGroupDelete:c}){const m=t.groups.order;return h.createElement(G,{value:m,onChange:t=>{!function({componentId:e,newOrder:t}){const n=l.componentsSelectors.getOverridableProps(e);n&&l.componentsActions.setOverridableProps(e,{...n,groups:{...n.groups,order:t}})}({componentId:e,newOrder:t}),(0,p.setDocumentModifiedStatus)(!0)}},n.map(n=>h.createElement(F,{key:n.id,id:n.id},({triggerProps:m,triggerStyle:d,isDragPlaceholder:u})=>h.createElement(ae,{group:n,props:t.props,allGroups:o,allGroupsRecord:t.groups.items,sortableTriggerProps:{...m,style:d},isDragPlaceholder:u,setIsAddingGroup:i,onPropsReorder:t=>{return o=n.id,function({componentId:e,groupId:t,newPropsOrder:n}){const o=l.componentsSelectors.getOverridableProps(e);if(!o)return;const r=o.groups.items[t];r&&l.componentsActions.setOverridableProps(e,{...o,groups:{...o.groups,items:{...o.groups.items,[t]:{...r,props:n}}}})}({componentId:e,groupId:o,newPropsOrder:t}),void(0,p.setDocumentModifiedStatus)(!0);var o},onPropertyDelete:a,onPropertyUpdate:s,editableLabelProps:r,onGroupDelete:c}))))}function de({currentComponentId:e,overridableProps:t,groups:n,allGroupsForSelect:o,groupLabelEditable:r,onPropertyDelete:i,onPropertyUpdate:a,onGroupDelete:s}){const{sortableKey:l,sortableValue:c,handlePropertyDelete:p,handlePropertyUpdate:m,handleSortableChange:d}=le({currentComponentId:e,overridableProps:t,groups:n,onPropertyDelete:i,onPropertyUpdate:a});return h.createElement(q,{key:l,value:c,onChange:d},h.createElement(W,{groupId:R},({setDroppableRef:e,items:n})=>h.createElement(_.Stack,{ref:e,direction:"column",sx:{width:"100%",gap:2}},n.map(e=>{const n=String(e),i=t.groups.items[n];return i?h.createElement(Y,{key:n,id:e},({itemProps:e,itemStyle:n,triggerProps:a,triggerStyle:l,isDragPlaceholder:c})=>h.createElement(te,{sortableItemProps:e,sortableItemStyle:n,group:i,props:t.props,allGroups:o,sortableTriggerProps:{...a,style:l},isDragPlaceholder:c,onPropertyDelete:p,onPropertyUpdate:m,editableLabelProps:r,onGroupDelete:s})):null}))))}const{panel:ue,usePanelActions:ge}=(0,g.__createPanel)({id:"component-properties-panel",component:function(){const{close:e}=ge(),{open:t}=(0,m.usePanelActions)();return h.createElement(b.ThemeProvider,null,h.createElement(_.ErrorBoundary,{fallback:h.createElement(fe,null)},h.createElement(g.Panel,{"data-testid":"component-properties-panel"},h.createElement(pe,{onClose:()=>{e(),t()}}))))}}),fe=()=>h.createElement(_.Box,{role:"alert",sx:{minHeight:"100%",p:2}},h.createElement(_.Alert,{severity:"error",sx:{mb:2,maxWidth:400,textAlign:"center"}},h.createElement("strong",null,(0,y.__)("Something went wrong","elementor-pro")))),ye=h.forwardRef(({overridablePropsCount:e,onClick:t},n)=>{const o=function(e){const t=(0,h.useRef)(e);return(0,h.useEffect)(()=>{t.current=e},[e]),t.current}(e),r=0===o&&1===e;return h.createElement(he,{ref:n,color:"primary",key:e,invisible:0===e,animate:r,anchorOrigin:{vertical:"top",horizontal:"right"},badgeContent:h.createElement(_.Box,{sx:{animation:r?"none":`${be} 300ms ease-out`}},e),"data-testid":"component-panel-header-properties-badge"},h.createElement(_.Tooltip,{title:(0,y.__)("Component properties","elementor-pro")},h.createElement(_.ToggleButton,{value:"exposed properties",size:"tiny",onClick:t,"aria-label":(0,y.__)("Component properties","elementor-pro")},h.createElement(E.ComponentPropListIcon,{fontSize:"tiny"}))))}),he=(0,_.styled)(_.Badge,{shouldForwardProp:e=>"animate"!==e})(({theme:e,animate:t})=>({"& .MuiBadge-badge":{minWidth:e.spacing(2),height:e.spacing(2),minHeight:e.spacing(2),maxWidth:e.spacing(2),fontSize:e.typography.caption.fontSize,animation:t?`${ve} 300ms ease-out`:"none"}})),ve=_.keyframes` 0% { transform: scale(0) translate(50%, 50%); opacity: 0; } 70% { transform: scale(1.1) translate(50%, -50%); opacity: 1; } 100% { transform: scale(1) translate(50%, -50%); opacity: 1; } `,be=_.keyframes` from { transform: translateY(100%); opacity: 0; } to { transform: translateY(0); opacity: 1; } `,Ee=()=>{const{id:e,uid:t}=(0,l.useCurrentComponent)()??{id:null,uid:null},n=(0,l.useSanitizeOverridableProps)(e),o=C(),r=function(){const e=(0,w.__getState)()[l.SLICE_NAME].path,{instanceTitle:t}=e.at(-1)??{};if(t)return t;const n=(0,p.getV1DocumentsManager)().getCurrent();return n?.container?.settings?.get("post_title")??""}(),[i,a]=(0,v.useSuppressedMessage)("components-properties-introduction"),[s,c]=h.useState(!i),{open:m}=ge(),d=n?Object.keys(n.props).length:0,u=h.useRef(null);return e?h.createElement(_.Box,{"data-testid":"component-panel-header"},h.createElement(g.PanelHeader,{sx:{justifyContent:"start",px:2}},h.createElement(_.Tooltip,{title:(0,y.__)("Back","elementor-pro")},h.createElement(_.IconButton,{size:"tiny",onClick:o,"aria-label":(0,y.__)("Back","elementor-pro")},h.createElement(E.ArrowLeftIcon,{fontSize:"tiny"}))),h.createElement(E.ComponentsFilledIcon,{fontSize:"tiny",stroke:"currentColor"}),h.createElement(b.EllipsisWithTooltip,{title:r,as:_.Typography,variant:"caption",sx:{fontWeight:500,flexGrow:1}}),h.createElement(ye,{overridablePropsCount:d,ref:u,onClick:()=>{m(),(0,l.trackComponentEvent)({action:"propertiesPanelOpened",source:"user",executedBy:"user",component_uid:t,properties_count:d})}})),h.createElement(_.Divider,null),h.createElement(x,{anchorRef:u,shouldShowIntroduction:s,onClose:()=>{a(),c(!1)}})):null};var we=window.elementorV2.editorCanvas,_e=window.elementorV2.editorNotifications;var Ce=window.elementorV2.schema;const xe=Ce.z.string().trim().max(50,(0,y.__)("Component name is too long. Please keep it under 50 characters.","elementor-pro")),Ie=e=>Ce.z.object({componentName:xe.refine(t=>!e.includes(t),{message:(0,y.__)("Component name already exists","elementor-pro")})}),Pe=e=>{const t=Ie(e);return t.extend({componentName:t.shape.componentName.refine(e=>e.length>0,{message:(0,y.__)("Component name is required.","elementor-pro")}).refine(e=>e.length>=2,{message:(0,y.__)("Component name is too short. Please enter at least 2 characters.","elementor-pro")})})},Se=e=>({elType:"widget",widgetType:"e-component",settings:{component_instance:{$$type:"component-instance",value:{component_id:{$$type:"number",value:e.id??e.uid}}}},editor_settings:{component_uid:e.uid}});function Te({open:e,onClose:t,onConfirm:n}){return h.createElement(b.ConfirmationDialog,{open:e,onClose:t},h.createElement(b.ConfirmationDialog.Title,null,(0,y.__)("Delete this component?","elementor-pro")),h.createElement(b.ConfirmationDialog.Content,null,h.createElement(b.ConfirmationDialog.ContentText,null,(0,y.__)("Existing instances on your pages will remain functional. You will no longer find this component in your list.","elementor-pro"))),h.createElement(b.ConfirmationDialog.Actions,{onClose:t,onConfirm:n}))}function Oe(){return Oe=Object.assign?Object.assign.bind():function(e){for(var t=1;t((e,t)=>{l.componentsActions.rename(e,t),(0,p.setDocumentModifiedStatus)(!0),function(e){const t=function(){const e=(0,p.getV1DocumentsManager)();return e?.getCurrent()?.container}();if(!t)return;const n=function(e,t){return(0,P.getAllDescendants)(e).filter(e=>{const n=e.model.get("widgetType"),o=e.model.get("editor_settings");return n===l.COMPONENT_WIDGET_TYPE&&o?.component_uid===t})}(t,e);n.forEach(e=>{e.model.trigger?.("title_external_change")})}(e)})(e.uid,t),validation:Ae}),w=Se(e),C=(0,_.usePopupState)({variant:"popover",disableAutoFocus:!0});return h.createElement(Re,{isAnimating:c},h.createElement(b.WarningInfotip,{open:Boolean(f),text:f??"",placement:"bottom",width:t.current?.getBoundingClientRect().width,offset:[0,-15]},h.createElement(l.ComponentItem,{ref:t,component:e,disabled:s,draggable:!s,onDragStart:e=>(0,we.startDragElementFromPanel)(w,e),onDragEnd:()=>{(0,l.loadComponentsAssets)([w]),(0,we.endDragElementFromPanel)()},onClick:()=>{De(w)},isEditing:u,error:f,nameSlot:h.createElement(l.ComponentName,{name:e.name,editable:{ref:d,isEditing:u,getProps:v}}),endSlot:m?h.createElement(_.IconButton,Oe({size:"tiny"},(0,_.bindTrigger)(C),{"aria-label":"More actions"}),h.createElement(E.DotsVerticalIcon,{fontSize:"tiny"})):void 0})),m&&h.createElement(_.Menu,Oe({},(0,_.bindMenu)(C),{anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"}}),i&&h.createElement(b.MenuListItem,{sx:{minWidth:"160px"},primaryTypographyProps:{variant:"caption",color:"text.primary"},onClick:()=>{C.close(),g()}},(0,y.__)("Rename","elementor-pro")),a&&h.createElement(b.MenuListItem,{sx:{minWidth:"160px"},primaryTypographyProps:{variant:"caption",color:"error.light"},onClick:()=>{r(!0),C.close()}},(0,y.__)("Delete","elementor-pro"))),h.createElement(Te,{open:o,onClose:()=>{r(!1)},onConfirm:()=>{if(!e.id)throw new Error("Component ID is required");var t,n;r(!1),t=e.id,n=e.name,l.componentsActions.archive(t),(0,p.setDocumentModifiedStatus)(!0),(0,_e.notify)(((e,t)=>({type:"success",message:(0,y.__)("Successfully deleted component %s","elementor-pro").replace("%s",t),id:`success-archived-components-notification-${e}`}))(t,n))}}))}const De=e=>{const{container:t,options:n}=(()=>{const e=(0,P.getCurrentDocumentContainer)(),t=function(){const e=(0,P.getSelectedElements)();if(1===e.length)return(0,P.getContainer)(e[0].id)}();let n,o;if(t)switch(t.model.get("elType")){case"widget":{n=t?.parent;const e=t.view?._index??-1;e>-1&&(o={at:e+1});break}case"section":n=t?.children?.[0];break;default:n=t}return{container:n??e,options:o}})();if(!t)throw new Error("Can't find container to drop new component instance at");(0,l.loadComponentsAssets)([e]),(0,P.dropElement)({containerId:t.id,model:e,options:{...n,useHistory:!1,scrollIntoView:!0}})},Ae=e=>{const t=function(e){const t=l.componentsSelectors.getComponents()?.map(({name:e})=>e)??[],n=Pe(t).safeParse({componentName:e.toLowerCase()});if(n.success)return{isValid:!0,errorMessage:null};const o=n.error.format();return{isValid:!1,errorMessage:o.componentName?._errors[0]??o._errors[0]}}(e);return t.errorMessage?t.errorMessage:null},Le=_.keyframes` 0%, 100% { opacity: 0.4; } 50% { opacity: 0.8; } `,Re=({children:e,isAnimating:t})=>h.createElement(_.Stack,{sx:{animation:t?`${Le} 1.5s ease-in-out infinite`:void 0}},e);var Me=window.elementorV2.events;const Ue=()=>{const{canCreate:e}=(0,l.useComponentsPermissions)();return e&&(0,u.isAngieAvailable)()?h.createElement(_.Box,{sx:{position:"sticky",bottom:0,backgroundColor:"background.default",px:2,pb:2}},h.createElement(_.Stack,{gap:1},h.createElement(_.Divider,null),h.createElement(_.Stack,{direction:"row",alignItems:"center",justifyContent:"space-between"},h.createElement(_.Typography,{variant:"caption",color:"text.secondary"},(0,y.__)("Create components with Angie","elementor-pro")),h.createElement(_.Button,{variant:"text",size:"small",startIcon:h.createElement(E.AIIcon,{fontSize:"small"}),onClick:()=>{(0,Me.trackEvent)({eventName:"angie_cta_clicked",entry_point:"components_tab",has_angie_installed:!0}),(0,u.sendPromptToAngie)("Tell Angie what component you want to build")},sx:{color:"#c00bb9",px:"5px",py:"4px",minWidth:"auto"}},(0,y.__)("Create","elementor-pro"))))):null},ze=()=>h.createElement(_.Box,{sx:{px:2.5,pb:2,position:"sticky",bottom:0,zIndex:1e3}},h.createElement(_.Alert,{variant:"standard",color:"promotion",icon:h.createElement(E.CrownFilledIcon,{fontSize:"tiny"}),"aria-label":"expired-components-promotion",action:h.createElement(_.AlertAction,{color:"promotion",variant:"contained",href:"https://go.elementor.com/renew-license-components-exist-footer/",target:"_blank",rel:"noopener noreferrer"},(0,y.__)("Upgrade Now","elementor-pro")),sx:{maxWidth:296}},h.createElement(_.Box,{sx:{gap:.5,display:"flex",flexDirection:"column"}},h.createElement(_.AlertTitle,null,(0,y.__)("Create New Components","elementor-pro")),h.createElement(_.Typography,{variant:"caption"},(0,y.__)("Your Pro subscription has expired. Renew to create new components.","elementor-pro"))))),Be={fontSize:"0.875rem !important",fontWeight:"500 !important"},Ve=()=>h.createElement(_.Stack,{alignItems:"center",justifyContent:"start",sx:{px:2,pt:4},gap:1.75,overflow:"hidden"},h.createElement(E.ComponentsIcon,{fontSize:"large",sx:{color:"text.secondary"}}),h.createElement(_.Typography,{align:"center",variant:"subtitle2",color:"text.secondary",sx:Be},(0,y.__)("Create Reusable Components","elementor-pro")),h.createElement(_.Typography,{align:"center",variant:"caption",color:"text.secondary"},(0,y.__)("Create design elements that sync across your entire site.","elementor-pro")),h.createElement(b.CtaButton,{size:"small",href:"https://go.elementor.com/renew-license-components/"}));function je({open:e,onClose:t,prompt:n}){const[o,r]=(0,h.useState)("idle"),i=()=>{"installing"!==o&&(r("idle"),t())};return h.createElement(_.Dialog,{fullWidth:!0,maxWidth:"md",open:e,onClose:i},h.createElement(_.IconButton,{"aria-label":(0,y.__)("Close","elementor-pro"),onClick:i,sx:{position:"absolute",right:8,top:8,zIndex:1}},h.createElement(E.XIcon,null)),h.createElement(_.DialogContent,{sx:{p:0,overflow:"hidden"}},h.createElement(_.Stack,{direction:"row",sx:{height:400}},h.createElement(_.Image,{sx:{height:"100%",aspectRatio:"1 / 1",objectFit:"cover",objectPosition:"right center"},src:"https://assets.elementor.com/packages/v1/images/angie-components-promotion.svg"}),h.createElement(_.Stack,{gap:2,justifyContent:"center",p:4},h.createElement(_.Typography,{variant:"h6",fontWeight:600,whiteSpace:"nowrap"},"error"===o?(0,y.__)("Installation failed","elementor-pro"):(0,y.__)("Install Angie to build components","elementor-pro")),h.createElement(_.Typography,{variant:"body2",color:"text.secondary"},"error"===o?(0,y.__)("We couldn't install Angie automatically. Click below to install it manually.","elementor-pro"):(0,y.__)("Angie lets you create components, widgets, sections, and code using simple instructions.","elementor-pro")),"error"!==o&&h.createElement(_.Typography,{variant:"body2",color:"text.secondary"},(0,y.__)("Install once to start building directly inside the editor.","elementor-pro")),h.createElement(_.Stack,{direction:"row",justifyContent:"flex-end",sx:{mt:2}},"error"===o?h.createElement(_.Button,{variant:"contained",color:"accent",onClick:()=>{(0,u.redirectToInstallation)(n)}},(0,y.__)("Install Manually","elementor-pro")):h.createElement(_.Button,{variant:"contained",color:"accent",onClick:async()=>{r("installing"),(0,Me.trackEvent)({eventName:"angie_install_started",trigger_source:"components_tab"}),(await(0,u.installAngiePlugin)()).success?(0,u.redirectToAppAdmin)(n):r("error")},disabled:"installing"===o,startIcon:"installing"===o?h.createElement(_.CircularProgress,{size:18,color:"inherit"}):void 0},"installing"===o?(0,y.__)("Installing…","elementor-pro"):(0,y.__)("Install Angie","elementor-pro")))))))}const Ne=({open:e,onClose:t,onConfirm:n,anchorRef:o})=>{const r=o?.current,i=r?{popper:{anchorEl:r,modifiers:[{name:"offset",options:{offset:[-40,8]}}]}}:void 0;return h.createElement(_.Infotip,{placement:"right-start",content:h.createElement($e,{onClose:e=>{e.stopPropagation(),t()},onConfirm:n}),open:e,slotProps:i},h.createElement("span",null))};function $e({onClose:e,onConfirm:t}){return h.createElement(_.ClickAwayListener,{disableReactTree:!0,mouseEvent:"onMouseDown",touchEvent:"onTouchStart",onClickAway:e},h.createElement(_.Card,{elevation:0,sx:{width:296,borderRadius:"4px"}},h.createElement(_.CardHeader,{title:h.createElement(_.Box,{sx:{display:"flex",alignItems:"center",gap:1}},h.createElement(_.Typography,{variant:"subtitle2"},(0,y.__)("Meet Angie","elementor-pro")),h.createElement(_.Chip,{label:(0,y.__)("New","elementor-pro"),size:"small",sx:{height:24,fontSize:"13px",backgroundColor:"#ebf2fe",color:"#1945a4",borderRadius:"1000px"}})),action:h.createElement(_.CloseButton,{slotProps:{icon:{fontSize:"tiny"}},onClick:e}),sx:{py:1,px:2}}),h.createElement(_.Box,{sx:{position:"relative",width:"100%",height:148}},h.createElement(_.CardMedia,{component:"img",image:"https://assets.elementor.com/packages/v1/images/angie-components-promotion.svg",alt:"",sx:{width:"100%",height:"100%",objectFit:"cover"}}),h.createElement(_.Box,{sx:{position:"absolute",inset:0,backgroundColor:"rgba(255, 0, 191, 0.6)",pointerEvents:"none"}})),h.createElement(_.CardContent,{sx:{px:2,py:1}},h.createElement(_.Typography,{variant:"body2",color:"text.secondary"},(0,y.__)("Build components using simple instructions.","elementor-pro"))),h.createElement(_.CardActions,{sx:{justifyContent:"flex-end",px:2,pb:1.5,pt:1}},h.createElement(_.Button,{variant:"contained",size:"small",onClick:t,sx:{backgroundColor:"#f0abfc",color:"#0c0d0e","&:hover":{backgroundColor:"#e879f9"}}},(0,y.__)("Start building","elementor-pro")))))}const Ge="Tell Angie what component you want to build",Ke={fontSize:"0.875rem !important",fontWeight:"500 !important"},Fe=()=>{const{canCreate:e}=(0,l.useComponentsPermissions)(),{shouldShowIntro:t,suppressIntro:n}=(()=>{const[e,t]=(0,v.useSuppressedMessage)("angie-components-intro");return{shouldShowIntro:!e,suppressIntro:t}})(),[o,r]=(0,h.useState)(!1),[i,a]=(0,h.useState)(!1),s=(0,h.useRef)(null),c=navigator.platform.toUpperCase().indexOf("MAC")>=0?"Cmd":"Ctrl";return h.createElement(_.Stack,{alignItems:"center",justifyContent:"start",height:"100%",sx:{px:2,py:4},gap:1,overflow:"hidden"},h.createElement(_.Stack,{alignItems:"center",gap:1.75},h.createElement(E.ComponentsIcon,{fontSize:"large",sx:{color:"text.secondary"}}),h.createElement(_.Stack,{alignItems:"center",gap:1.75},h.createElement(_.Typography,{align:"center",variant:"subtitle2",color:"text.secondary",sx:Ke},(0,y.__)("Create your first component","elementor-pro")),h.createElement(_.Typography,{align:"center",variant:"caption",color:"text.tertiary"},e?`${(0,y.__)("To create, press","elementor-pro")} ${c}+ Shift + K ${(0,y.__)("on div-block or flexbox.","elementor-pro")}`:(0,y.__)("With your current role, you cannot create components. Contact an administrator to create one.","elementor-pro")))),e&&(!!(0,u.isAngieAvailable)()||!!window.elementor?.config?.user?.is_administrator)&&h.createElement(_.Stack,{alignItems:"center",gap:1,width:"100%"},h.createElement(_.Typography,{variant:"subtitle2",color:"text.primary",sx:{py:.5,fontWeight:500}},(0,y.__)("Or","elementor-pro")),h.createElement(_.Stack,{alignItems:"center",gap:1},h.createElement(_.Typography,{align:"center",variant:"caption",color:"text.tertiary"},(0,y.__)("Create a custom component with Angie","elementor-pro")),h.createElement(_.Link,{ref:s,component:"button",variant:"caption",onClick:()=>{const e=(0,u.isAngieAvailable)();(0,Me.trackEvent)({eventName:"angie_cta_clicked",entry_point:"components_tab",has_angie_installed:e}),e?(0,u.isAngieSidebarOpen)()?(0,u.sendPromptToAngie)(Ge):t?r(!0):(0,u.sendPromptToAngie)(Ge):a(!0)},sx:{display:"flex",alignItems:"center",padding:.5,gap:.5,color:"#c00bb9",textDecoration:"none","&:hover":{textDecoration:"underline"}}},h.createElement(E.AIIcon,{sx:{fontSize:16}}),(0,y.__)("Create component","elementor-pro")),h.createElement(Ne,{open:o,onClose:()=>{r(!1)},onConfirm:()=>{n(),r(!1),(0,u.sendPromptToAngie)(Ge)},anchorRef:s}))),h.createElement(_.Stack,{alignItems:"center",gap:.5,sx:{mt:"auto",width:"100%"}},h.createElement(_.Divider,{sx:{width:"100%",mb:2}}),h.createElement(_.Typography,{align:"center",variant:"caption",color:"text.tertiary"},(0,y.__)("Components are reusable elements that sync across your site.","elementor-pro")),h.createElement(_.Link,{href:"http://go.elementor.com/components-guide-article",target:"_blank",rel:"noopener noreferrer",variant:"caption",color:"info.main"},(0,y.__)("Learn more","elementor-pro"))),h.createElement(je,{open:i,onClose:()=>{a(!1)},prompt:Ge}))},He=()=>h.createElement(b.ThemeProvider,null,h.createElement(l.SearchProvider,{localStorageKey:"elementor-components-search"},h.createElement(qe,null))),qe=()=>{const{components:e,isLoading:t}=(0,l.useComponents)(),n=!t&&e.length>0;return h.createElement(h.Fragment,null,n&&h.createElement(l.ComponentSearch,null),h.createElement(Ye,null))},We="components-empty-state-full-height",Ye=()=>{const{isLoading:e}=(0,l.useComponents)(),{components:t,isLoading:o,searchValue:r}=(0,l.useFilteredComponents)(),{data:i=!1,isPending:a}=(0,n.useIsLicenseExpired)();if((0,h.useLayoutEffect)(()=>{let e=document.getElementById(We);return e||(e=document.createElement("style"),e.id=We,e.textContent="\n#elementor-panel-page-elements {\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 100%;\n}\n\n#elementor-panel-elements {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1;\n\tmin-height: 0;\n}\n\n#elementor-panel-elements-wrapper {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1;\n\tmin-height: 0;\n}\n",document.head.appendChild(e)),()=>{document.getElementById(We)?.remove()}},[]),o||e||a)return h.createElement(l.LoadingComponents,null);const s=!t?.length,c=r.length>0;return s?c?h.createElement(l.EmptySearchResult,null):i?h.createElement(Ve,null):h.createElement(Fe,null):h.createElement(_.Stack,{justifyContent:"space-between",sx:{flex:1,minHeight:0}},h.createElement(_.List,{sx:{display:"flex",flexDirection:"column",gap:1,px:2}},t.map(e=>h.createElement(ke,{key:e.uid,component:e}))),i?h.createElement(ze,null):h.createElement(Ue,null))};function Je(){const{canEdit:e}=(0,l.useComponentsPermissions)(),t=(0,l.useInstancePanelData)();if(!t)return null;const{componentId:n,component:o,overrides:r,overridableProps:i,groups:a,isEmpty:s,componentInstanceId:c}=t,p=(0,y.__)("Edit %s","elementor-pro").replace("%s",o.name),m=()=>(0,l.switchToComponent)(n,c),d=h.createElement(_.Stack,{direction:"row",gap:.5},h.createElement(l.DetachAction,{componentInstanceId:c,componentId:n}),e?h.createElement(l.EditComponentAction,{label:p,onClick:m,icon:E.PencilIcon}):null);return h.createElement(_.Box,{"data-testid":"instance-editing-panel",sx:{height:"100%"}},h.createElement(l.ComponentInstanceProvider,{componentId:n,overrides:r,overridableProps:i},h.createElement(l.InstancePanelHeader,{componentName:o.name,actions:d}),h.createElement(l.InstancePanelBody,{groups:a,isEmpty:s,emptyState:h.createElement(l.InstanceEmptyState,{onEditComponent:e?m:void 0}),componentInstanceId:c})))}function Xe(){return Xe=Object.assign?Object.assign.bind():function(e){for(var t=1;t!e.id||e.id!==o);if(!d)return null;if(!r?.override_key)throw new Error("Override key is required");const f="e-component"===n.key,y=u?.props?.[r.override_key],v=n.propsSchema[i],b=(y?(0,l.getPropTypeForComponentOverride)(y):void 0)??v;if(!b)return null;const E=(0,m.createTopLevelObjectType)({schema:{[i]:b}}),w=f?(r.origin_value?.value).override_value:r.origin_value,_=s?{[i]:s}:void 0;return h.createElement(l.OverridablePropProvider,{value:r},h.createElement(c.PropProvider,Xe({},p,{propType:E,setValue:e=>{const t={...r,origin_value:e[i]};a(t),f||(0,l.updateOverridableProp)(d,t,y?.originPropFields)},value:{[i]:w},placeholder:_}),h.createElement(c.PropKeyProvider,{bind:i},h.createElement(c.ControlReplacementsProvider,{replacements:g},h.createElement(Qe,{OriginalControl:e,props:t})))))}function Qe({OriginalControl:e,props:t}){const{ControlToRender:n,isReplaced:o}=(0,c.useControlReplacement)(e);if(o){const o=n;return h.createElement(o,Xe({},t,{OriginalControl:e}))}return h.createElement(e,t)}function et({componentId:e,overrideKey:t,elementId:n,label:o,groupId:r,propKey:i,elType:a,widgetType:s,originValue:c,originPropFields:p,executedBy:m}){const d=l.componentsSelectors.getOverridableProps(e);if(!d)throw new Error(`Component not found for componentId: ${e}`);const u=Object.values(d.props).filter(e=>e.elementId===n&&e.propKey===i),{groups:g,groupId:f}=function(e,t){return t&&e.items[t]?{groups:e,groupId:t}:!t&&e.order.length>0?{groups:e,groupId:e.order[0]}:function(e,t){const n=t||(0,I.generateUniqueId)("group"),o=(0,y.__)("Default","elementor-pro");return{groups:{...e,items:{...e.items,[n]:{id:n,label:o,props:[]}},order:[...e.order,n]},groupId:n}}(e,t)}(d.groups,r??void 0),h={overrideKey:t||(0,I.generateUniqueId)("prop"),label:o,elementId:n,propKey:i,widgetType:s,elType:a,originValue:c,groupId:f,originPropFields:p},v=function(e,t){const n=t.map(e=>e.overrideKey);return{props:Object.fromEntries(Object.entries(e.props).filter(([,e])=>!t.includes(e))),groups:{items:Object.fromEntries(Object.entries(e.groups.items).map(([e,t])=>[e,{...t,props:t.props.filter(e=>!n.includes(e))}])),order:e.groups.order.filter(e=>!n.includes(e))}}}({...d,groups:g},u),b={...v.props,[h.overrideKey]:h};let E=D(v.groups,f,h.overrideKey);E=function(e,t){return e.order.includes(t)?e:{...e,order:[...e.order,t]}}(E,f),l.componentsActions.setOverridableProps(e,{props:b,groups:E});const w=l.componentsSelectors.getCurrentComponent();return(0,l.trackComponentEvent)({action:"propertyExposed",source:m,executedBy:m,component_uid:w?.uid,property_id:h.overrideKey,property_path:i,property_name:o,element_type:s??a}),h}function tt(){return tt=Object.assign?Object.assign.bind():function(e){for(var t=1;t svg { position: absolute; top: 50%; left: 50%; transform: translate( -50%, -50% ); width: 10px; height: 10px; fill: ${({theme:e})=>e.palette.primary.contrastText}; stroke: ${({theme:e})=>e.palette.primary.contrastText}; stroke-width: 2px; } `,rt=(0,_.styled)(_.Box)` position: relative; display: flex; align-items: center; justify-content: center; cursor: pointer; width: 16px; height: 16px; margin-inline: ${({theme:e})=>e.spacing(.5)}; &:before { content: ''; display: block; position: absolute; top: 50%; left: 50%; transform: translate( -50%, -50% ) rotate( 45deg ); width: 5px; height: 5px; border-radius: 1px; background-color: ${({theme:e})=>e.palette.primary.main}; transition: all 0.1s ease-in-out; } &:hover, &.enlarged { &:before { width: 12px; height: 12px; border-radius: 2px; } .icon { opacity: 1; } } `,it=(0,h.forwardRef)(({isOpen:e,isOverridable:t,...n},o)=>h.createElement(rt,tt({role:"button",ref:o},n,{className:e||t?"enlarged":"","aria-label":t?(0,y.__)("Overridable property","elementor-pro"):(0,y.__)("Make prop overridable","elementor-pro")}),h.createElement(ot,{className:"icon"},t?h.createElement(E.CheckIcon,{fontSize:nt}):h.createElement(E.PlusIcon,{fontSize:nt}))));function at(){return at=Object.assign?Object.assign.bind():function(e){for(var t=1;t{const n=({componentOverridablePropConfig:t,elementOriginValue:n})=>{const o=et(t);return e({override_key:o.overrideKey,origin_value:n},void 0,{withHistory:!1}),(0,p.setDocumentModifiedStatus)(!0),{createdOverridableProp:o}};return(0,f.undoable)({do:({componentOverridablePropConfig:e,elementOriginValue:t})=>n({componentOverridablePropConfig:e,elementOriginValue:t}),undo:({componentOverridablePropConfig:e,elementOriginValue:n},{createdOverridableProp:o})=>{A({componentId:e.componentId,propKey:o.overrideKey,executedBy:"system",revertElementOverridable:!1}),t(n,void 0,{withHistory:!1})},redo:({elementOriginValue:e,componentOverridablePropConfig:t},{createdOverridableProp:o})=>n({componentOverridablePropConfig:{...t,overrideKey:o.overrideKey},elementOriginValue:e})},{title:({componentOverridablePropConfig:e})=>e.label,subtitle:(0,y.__)("property exposed","elementor-pro")})},[t,e])}({setElementOverridableValue:v,setElementOriginValue:s}),E=g??d,w=(0,_.usePopupState)({variant:"popover"}),C=(0,_.bindTrigger)(w),x=(0,_.bindPopover)(w),{elType:I}=(0,P.getWidgetsCache)()?.[o.key]??{elType:"widget"},S=E?(0,l.getOverridableProp)({componentId:e,overrideKey:E.override_key}):void 0;return h.createElement(h.Fragment,null,h.createElement(_.Tooltip,{placement:"top",title:(0,y.__)("Override Property","elementor-pro")},h.createElement(it,at({},C,{isOpen:!!x.open,isOverridable:!!E}))),h.createElement(_.Popover,at({disableScrollLock:!0,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},PaperProps:{sx:{my:2.5}}},x),h.createElement(j,{onSubmit:({label:s,group:c})=>{const p=E?t?.props?.[E.override_key]:void 0;if(p)L({componentId:e,overrideKey:p.overrideKey,label:s,groupId:c});else{const t=a.default??{},p=(0,l.resolveOverridePropValue)(E?.origin_value)??r??t,m={componentId:e,overrideKey:E?.override_key??null,elementId:u?.element.id??n,label:s,groupId:c,propKey:i,elType:I??"widget",widgetType:u?.elementType.key??o.key,originValue:p,executedBy:"user"};b({componentOverridablePropConfig:m,elementOriginValue:p})}w.close()},groups:t?.groups.order.map(e=>({value:e,label:t.groups.items[e].label})),existingLabels:Object.values(t?.props??{}).map(e=>e.label),currentValue:S})))}function ct(e,t){Object.values(t.props).forEach(t=>{const n=pt(e,t.elementId);n?.settings&&(n.settings[t.propKey]={$$type:"overridable",value:{override_key:t.overrideKey,origin_value:n.settings[t.propKey]}})})}function pt(e,t){for(const n of e){if(n.id===t)return n;if(n.elements){const e=pt(n.elements,t);if(e)return e}}return null}const mt=(e,t)=>(0,P.replaceElement)({currentElementId:e.id,newElement:Se(t),withHistory:!1});async function dt({name:e,element:t,eventData:n,uid:o,overridableProps:r,executedBy:i}){const a=o??(0,I.generateUniqueId)("component"),s={uid:a,name:e},c=[k(t)];r&&ct(c,r);const p=(0,P.getContainer)(t.id),m=p?.model?.toJSON?.(),d={model:m??t,parentId:p?.parent?.id??"",index:p?.view?._index??0};l.componentsActions.addUnpublished({...s,elements:c,overridableProps:r}),l.componentsActions.addCreatedThisSession(a);const u=mt(t,s);(0,l.trackComponentEvent)({action:"created",source:i,executedBy:i,component_uid:a,component_name:e,...n});try{await(0,f.__privateRunCommand)("document/save/auto")}catch(e){throw function(e,t){const n=(0,P.getContainer)(t);n&&(0,P.deleteElement)({container:n,options:{useHistory:!1}});const o=(0,P.getContainer)(e.parentId);if(!o)return;const r=structuredClone(e.model);(0,P.createElements)({title:(0,y.__)("Restore Element","elementor-pro"),elements:[{container:o,model:r,options:{at:e.index}}]})}(d,u.id),l.componentsActions.removeUnpublished(a),l.componentsActions.removeCreatedThisSession(a),e}try{await(0,l.loadComponentsAssets)([u.model.toJSON()])}catch{}return{uid:a,instanceId:u.id}}function ut(){return null!==l.componentsSelectors.getCurrentComponentId()}const gt={type:"default",message:(0,y.__)("This widget isn't compatible with components. Use atomic elements instead.","elementor-pro"),id:"non-atomic-element-blocked"};function ft(e){return null!==(0,P.getElementType)(e)}function yt(e){if(!ut())return!1;const{model:t}=e,n=t?.widgetType||t?.elType;return!!n&&!ft(n)&&((0,_e.notify)(gt),!0)}function ht(e){if(!ut())return!1;const{containers:t=[e.container]}=e,n=t.some(e=>!!e&&(0,P.getAllDescendants)(e).some(e=>!(0,we.isAtomicWidget)(e)));return n&&(0,_e.notify)(gt),n}function vt(e){if(!ut())return!1;const{storageType:t}=e;if("localstorage"!==t)return!1;const n=window?.elementorCommon?.storage?.get();if(!n?.clipboard?.elements)return!1;const o=bt(n.clipboard.elements);return o&&(0,_e.notify)(gt),o}function bt(e){for(const t of e){const e=t.widgetType||t.elType;if(e&&!ft(e))return!0;if(t.elements?.length&&bt(t.elements))return!0}return!1}function Et(e){const t=[],n=e.widgetType||e.elType;if(n&&!ft(n)&&t.push(n),e.elements?.length)for(const n of e.elements)t.push(...Et(n));return[...new Set(t)]}const wt=e=>{const[t,n]=(0,h.useState)(e),[o,r]=(0,h.useState)({}),i=(0,h.useMemo)(()=>!Object.values(o).some(e=>e),[o]);return{values:t,errors:o,isValid:i,handleChange:(e,o,i)=>{const a={...t,[o]:e.target.value};n(a);const{success:s,errors:l}=_t(a,i);r(s?{}:l)},validateForm:e=>{const{success:n,errors:o,parsedValues:i}=_t(t,e);return n?(r({}),{success:n,parsedValues:i}):(r(o),{success:n})}}},_t=(e,t)=>{const n=t.safeParse(e);if(n.success)return{success:!0,parsedValues:n.data};const o={};return Object.entries(n.error.formErrors.fieldErrors).forEach(([e,t])=>{o[e]=t[0]}),{success:!1,errors:o}},Ct=(e,t)=>{const{elementsCount:n,componentsCount:o}=xt(e);return{nested_elements_count:n,nested_components_count:o,top_element_type:e.elType,location:t?.location,secondary_location:t?.secondaryLocation,trigger:t?.trigger}};function xt(e){if(!e.elements||0===e.elements.length)return{elementsCount:0,componentsCount:0};let t=e.elements.length,n=0;for(const o of e.elements){"e-component"===o.widgetType&&n++;const{elementsCount:e,componentsCount:r}=xt(o);t+=e,n+=r}return{elementsCount:t,componentsCount:n}}const It=100;function Pt(){const[e,t]=(0,h.useState)(null),[n,o]=(0,h.useState)(),{components:r}=(0,l.useComponents)(),i=(0,h.useRef)(null);(0,h.useEffect)(()=>{const e="elementor/editor/open-save-as-component-form",n=e=>{const{shouldOpen:n,notification:a}=function(e,t){return Et(e).length>0?{shouldOpen:!1,notification:{type:"default",message:(0,y.__)("Components require atomic elements only. Remove widgets to create this component.","elementor-pro"),id:"non-atomic-element-save-blocked"}}:t>=It?{shouldOpen:!1,notification:{type:"default",message:(0,y.__)("You've reached the limit of %s components. Please remove an existing one to create a new component.","elementor-pro").replace("%s",It.toString()),id:"maximum-number-of-components-exceeded"}}:{shouldOpen:!0,notification:null}}(e.detail.element,r?.length??0);n?(t({element:e.detail.element,elementLabel:(0,P.getElementLabel)(e.detail.element.id)}),o(e.detail.anchorPosition),i.current=Ct(e.detail.element,e.detail.options),(0,l.trackComponentEvent)({action:"createClicked",source:"user",executedBy:"user",...i.current})):(0,_e.notify)(a)};return window.addEventListener(e,n),()=>{window.removeEventListener(e,n)}},[r?.length]);const a=()=>{t(null),o(void 0)},s=()=>{a(),(0,l.trackComponentEvent)({action:"createCancelled",source:"user",executedBy:"user",...i.current})};return h.createElement(b.ThemeProvider,null,h.createElement(_.Popover,{open:null!==e,onClose:s,anchorReference:"anchorPosition",anchorPosition:n,"data-testid":"create-component-form"},null!==e&&h.createElement(Tt,{initialValues:{componentName:e.elementLabel},handleSave:async t=>{try{if(!e)throw new Error("Can't save element as component: element not found");const{uid:n,instanceId:o}=await dt({name:t.componentName,element:e.element,eventData:i.current,executedBy:"user"}),r=l.componentsSelectors.getComponentByUid(n)?.id;if(!r)throw new Error("Failed to find published component");(0,l.switchToComponent)(r,o),(0,_e.notify)({type:"success",message:(0,y.__)("Component created successfully.","elementor-pro"),id:`component-saved-successfully-${n}`}),a()}catch{const e=(0,y.__)("Failed to create component. Please try again.","elementor-pro");(0,_e.notify)({type:"error",message:e,id:"component-save-failed"}),a()}},closePopup:s})))}const St="tiny",Tt=({initialValues:e,handleSave:t,closePopup:n})=>{const{values:o,errors:r,isValid:i,handleChange:a,validateForm:s}=wt(e),c=(0,b.useTextFieldAutoSelect)(),{components:p}=(0,l.useComponents)(),m=(0,h.useMemo)(()=>p?.map(e=>e.name)??[],[p]),d=(0,h.useMemo)(()=>Ie(m),[m]),u=(0,h.useMemo)(()=>Pe(m),[m]),g={heading:(0,y.__)("Create component","elementor-pro"),name:(0,y.__)("Name","elementor-pro"),cancel:(0,y.__)("Cancel","elementor-pro"),create:(0,y.__)("Create","elementor-pro")},f="component-name";return h.createElement(b.Form,{onSubmit:()=>{const{success:e,parsedValues:n}=s(u);e&&t(n)}},h.createElement(_.Stack,{alignItems:"start",width:"268px"},h.createElement(_.Stack,{direction:"row",alignItems:"center",py:1,px:1.5,sx:{columnGap:.5,borderBottom:"1px solid",borderColor:"divider",width:"100%"}},h.createElement(E.ComponentsIcon,{fontSize:St}),h.createElement(_.Typography,{variant:"caption",sx:{color:"text.primary",fontWeight:"500",lineHeight:1}},g.heading)),h.createElement(_.Grid,{container:!0,gap:.75,alignItems:"start",p:1.5},h.createElement(_.Grid,{item:!0,xs:12},h.createElement(_.FormLabel,{htmlFor:f,size:"tiny"},g.name)),h.createElement(_.Grid,{item:!0,xs:12},h.createElement(_.TextField,{id:f,size:St,fullWidth:!0,value:o.componentName,onChange:e=>a(e,"componentName",d),inputProps:{style:{color:"text.primary",fontWeight:"600"}},error:Boolean(r.componentName),helperText:r.componentName,inputRef:c}))),h.createElement(_.Stack,{direction:"row",justifyContent:"flex-end",alignSelf:"end",py:1,px:1.5},h.createElement(_.Button,{onClick:n,color:"secondary",variant:"text",size:"small"},g.cancel),h.createElement(_.Button,{type:"submit",disabled:!i,variant:"contained",color:"primary",size:"small"},g.create))))};function Ot(e){l.componentsActions.setPath(e.path),l.componentsActions.setCurrentComponentId(e.currentComponentId)}var kt=window.ReactDOM;const Dt=(0,N.isCoreAtLeast)("4.2.0"),At=Dt?we.useCanvasDocument:function(){return(0,f.__privateUseListenTo)((0,f.commandEndEvent)("editor/documents/attach-preview"),()=>(0,f.getCanvasIframeDocument)())},Lt=Dt?we.useEscapeOnCanvas:function(e,t){(0,h.useEffect)(()=>{if(!e)return;const n=e=>{"Escape"===e.key&&t()};return e.body.addEventListener("keydown",n),()=>{e.body.removeEventListener("keydown",n)}},[e,t])},Rt=Dt?we.SpotlightBackdrop:function({canvas:e,element:t,onExit:n,ariaLabel:o}){const r=function(e){const[t,n]=(0,h.useState)(new DOMRect(0,0,0,0)),o=(0,I.throttle)(()=>{n(e?.getBoundingClientRect()??new DOMRect(0,0,0,0))},20,!0);return function({element:e,onChange:t}){(0,h.useEffect)(()=>{if(!e)return;const n=e.ownerDocument?.defaultView;return n?.addEventListener("scroll",t,{passive:!0}),()=>{n?.removeEventListener("scroll",t)}},[e,t])}({element:e,onChange:o}),function({element:e,onChange:t}){(0,h.useEffect)(()=>{if(!e)return;const n=new ResizeObserver(t);n.observe(e);const o=e.ownerDocument?.defaultView;return o?.addEventListener("resize",t,{passive:!0}),()=>{n.disconnect(),o?.removeEventListener("resize",t)}},[e,t])}({element:e,onChange:o}),function({element:e,onChange:t}){(0,h.useEffect)(()=>{if(!e)return;const n=new MutationObserver(t);return n.observe(e,{childList:!0,subtree:!0}),()=>{n.disconnect()}},[e,t])}({element:e,onChange:o}),(0,h.useEffect)(()=>()=>{o.cancel()},[o]),t}(t),i={position:"fixed",top:0,left:0,width:"100vw",height:"100vh",backgroundColor:"rgba(0, 0, 0, 0.5)",zIndex:999,pointerEvents:"painted",cursor:"pointer",clipPath:t?function(e,t){const{x:n,y:o,width:r,height:i}=e,{innerWidth:a,innerHeight:s}=t;return`path(evenodd, 'M 0 0 L ${a} 0 L ${a} ${s} L 0 ${s} Z M ${n} ${o} L ${n+r} ${o} L ${n+r} ${o+i} L ${n} ${o+i} L ${n} ${o} Z')`}(r,e.defaultView):void 0};return h.createElement("div",{style:i,onClick:n,onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),n())},role:"button",tabIndex:0,"aria-label":o})};function Mt({topLevelElementDom:e,onClose:t}){const n=At();return Lt(n,t),n?.body?(0,kt.createPortal)(h.createElement(h.Fragment,null,h.createElement(Ut,null),h.createElement(Rt,{canvas:n,element:e,onExit:t,ariaLabel:(0,y.__)("Exit component editing mode","elementor-pro")})),n.body):null}function Ut(){return h.createElement("style",{"data-e-style-id":"e-block-v3-document-handles-styles"},"\n\t.elementor-editor-active {\n\t\t& .elementor-section-wrap.ui-sortable {\n\t\t\tdisplay: contents;\n\t\t}\n\n\t\t& *[data-editable-elementor-document]:not(.elementor-edit-mode):hover {\n\t\t\t& .elementor-document-handle:not(.elementor-document-save-back-handle) {\n\t\t\t\tdisplay: none;\n\n\t\t\t\t&::before,\n\t\t\t\t& .elementor-document-handle__inner {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t")}function zt(){const e=(0,l.useCurrentComponentId)();!function(){const e=(0,p.getV1DocumentsManager)(),t=(0,l.useCurrentComponentId)(),n=(0,w.__useSelector)(l.selectPath);(0,h.useEffect)(()=>(0,f.__privateListenTo)((0,f.commandEndEvent)("editor/documents/open"),()=>{const o=e.getCurrent();o.id!==t&&(t&&l.apiClient.unlockComponent(t),l.componentsActions.resetSanitizedComponents(),o.config.type===i?Ot({path:Bt(n,o),currentComponentId:o.id}):Ot({path:[],currentComponentId:null}))}),[n,e,t])}();const t=C(),n=(0,I.throttle)(t,100),o=function(e){const{componentContainerDomElement:t,topLevelElementDom:n}=function(e){if(!e)return{componentContainerDomElement:null,topLevelElementDom:null};const t=(0,p.getV1DocumentsManager)().get(e),n=t?.container,o=n?.view?.el?.children?.[0]??null;return{componentContainerDomElement:o,topLevelElementDom:o?.children[0]??null}}(e),[o,r]=(0,h.useState)(n);return(0,h.useEffect)(()=>{r(n)},[n]),(0,h.useEffect)(()=>{if(!t)return;const e=new MutationObserver(()=>{const e=t.children[0];r(e)});return e.observe(t,{childList:!0}),()=>{e.disconnect()}},[t]),o}(e??void 0);return e?h.createElement(Mt,{topLevelElementDom:o,onClose:n}):null}function Bt(e,t){const n=e.findIndex(({componentId:e})=>e===t.id);if(n>=0)return e.slice(0,n+1);const o=t?.container.view?.el?.dataset.id,r=function(e,t){if(!e)return;const n=(0,p.getV1DocumentsManager)(),o=t.at(-1)?.componentId??n.getInitialId(),r=n.get(o),i=r?.container,a=i?.children?.findRecursive?.(t=>t.id===e),s=a?.model?.get?.("editor_settings");return s?.title}(o,e);return[...e,{instanceId:o,instanceTitle:r,componentId:t.id}]}var Vt=window.elementorV2.editorTemplatesExtended;const jt=()=>(0,Vt.isCoreHandlingTemplateStyles)()?null:h.createElement(Nt,null);function Nt(){const e=(0,Vt.useLoadedTemplates)();return(0,h.useEffect)(()=>{(0,l.loadComponentsAssets)(e.flatMap(e=>e??[]))},[e]),null}const $t=new Map;function Gt(){return(0,h.useEffect)(()=>{(0,f.registerDataHook)("dependency","document/elements/delete",(e,t)=>{if(function(e){const t=e?.commandsCurrentTrace?.includes("document/elements/move")||e?.commandsCurrentTrace?.includes("document/repeater/move");return Boolean(t)}(t))return!0;const n=e.containers??(e.container?[e.container]:[]);if(0===n.length)return!0;const o=function(e){return e.filter(Boolean).flatMap(e=>[e,...(0,P.getAllDescendants)(e)]).map(e=>e.model?.get?.("id")??e.id).filter(e=>Boolean(e))}(n);return 0===o.length||Kt(o,t?.currentHistoryItemId),!0}),(0,f.registerDataHook)("after","document/history/undo",async(e,t)=>{t?.originHistoryItemId&&Ft(t.originHistoryItemId)}),(0,f.registerDataHook)("after","document/history/redo",(e,t)=>{t?.originHistoryItemId&&Ht(t.originHistoryItemId)});const e=function(){const e=e=>{const{detachedInstanceId:t,detachActionId:n}=e.detail;Kt([t],n)},t=e=>{const{detachActionId:t}=e.detail;Ft(t)},n=e=>{const{detachActionId:t}=e.detail;Ht(t)};return window.addEventListener(qt,e),window.addEventListener(Wt,t),window.addEventListener(Yt,n),()=>{window.removeEventListener(qt,e),window.removeEventListener(Wt,t),window.removeEventListener(Yt,n)}}();return(0,f.registerDataHook)("after","editor/documents/attach-preview",()=>{$t.clear()}),()=>{e()}},[]),null}function Kt(e,t){const n=l.componentsSelectors.getCurrentComponentId();if(!n)return;const o=l.componentsSelectors.getOverridableProps(n);if(!o||0===Object.keys(o.props).length)return;const r=Object.values(o.props).filter(t=>e.includes(t.elementId));0!==r.length&&(void 0!==t&&$t.set(t,{props:r,elementIds:e}),A({componentId:n,propKey:r.map(e=>e.overrideKey),executedBy:"system",revertElementOverridable:!1}))}function Ft(e){const t=l.componentsSelectors.getCurrentComponentId();if(!t)return;const n=$t.get(e);if(!n)return;(0,N.isCoreAtLeast)("4.1.0")&&(0,we.doAfterRender)(n.elementIds,()=>{for(const e of n.props)et({componentId:t,...e,executedBy:"system"})})}function Ht(e){const t=l.componentsSelectors.getCurrentComponentId();if(!t)return;const n=$t.get(e);n&&A({componentId:t,propKey:n.props.map(e=>e.overrideKey),executedBy:"system",revertElementOverridable:!1})}const qt="elementor/components/detach-instance",Wt="elementor/components/undo-detach-instance",Yt="elementor/components/redo-detach-instance";function Jt(){const e=(0,l.useCurrentComponentId)(),t=(0,l.useOverridableProps)(e),n=(0,l.useIsSanitizedComponent)(e,"overridableProps");return(0,h.useEffect)(()=>{if(n||!t||!e)return;const o=(0,l.filterValidOverridableProps)(t),r=Object.keys(t.props??{}).filter(e=>!o.props[e]);var i;r.length>0&&r.forEach(t=>{A({componentId:e,propKey:t,executedBy:"system"})}),i=e,l.componentsActions.updateComponentSanitizedAttribute(i,"overridableProps")},[e,n,t]),null}function Xt(){return h.createElement(en,null,h.createElement(ue.component,null))}function Zt(){return h.createElement(en,null,h.createElement(Pt,null),h.createElement(zt,null))}function Qt(){return h.createElement(en,null,h.createElement(Jt,null),h.createElement(jt,null),h.createElement(Gt,null))}function en({children:e}){const{data:t,isFetched:o}=(0,n.useHasFeature)(r);return o&&t?h.createElement(h.Fragment,null,e):null}const tn="elementor://components/list",nn=e=>{const{resource:t,sendResourceUpdated:n}=e;t("components-list",tn,{description:"Live list of all reusable components (published and unpublished) with full component data."},()=>({contents:[{uri:tn,mimeType:"application/json",text:JSON.stringify([...l.componentsSelectors.getComponents()??[],...l.componentsSelectors.getUnpublishedComponents()??[]])}]})),(0,w.__subscribeWithSelector)(e=>e[l.SLICE_NAME],()=>{n({uri:tn})})};var on=window.elementorV2.httpClient;const rn={action:Ce.z.enum(["save","get"]).describe('The operation to perform: "get" - retrieve a specific component by UID; "save" - create a new component from an existing element.'),element_id:Ce.z.string().optional().describe('[Required for "save"] The unique identifier of the element to save as a component. Use the "list-elements" tool to find available element IDs in the current document.'),component_name:Ce.z.string().optional().describe('[Required for "save"] The name for the new component. Should be descriptive and unique among existing components. Must be unique among all components.'),overridable_props:Ce.z.object({props:Ce.z.record(Ce.z.object({elementId:Ce.z.string().describe("The id of the child element that you want to override its settings"),propKey:Ce.z.string().describe('The property key of the child element that you want to override its settings (e.g., "text", "url", "tag"). To get the available propKeys for an element, use the "get-element-type-config" tool.'),label:Ce.z.string().describe('A unique, user-friendly display name for this property (e.g., "Hero Headline", "CTA Button Text"). Must be unique within the same component.'),group:Ce.z.string().optional().describe("Non unique, optional property grouping")}))}).optional().describe('[Optional for "save"] Overridable properties configuration. Specify which CHILD element properties can be customized. Only elementId and propKey are required; To get the available propKeys for a child element you must use the "get-element-type-config" tool.'),groups:Ce.z.array(Ce.z.string()).describe('[Optional for "save"] Property Groups, by order, unique values').optional(),component_uid:Ce.z.string().optional().describe('[Required for "get"] The unique identifier of the component to retrieve.')},an={message:Ce.z.string().optional().describe("Additional information about the operation result"),component_uid:Ce.z.string().optional().describe('The unique identifier of the newly created component (only present on "save" success)'),component:Ce.z.object({uid:Ce.z.string(),name:Ce.z.string(),status:Ce.z.enum(["published","unpublished"]),id:Ce.z.number().optional(),overridableProps:Ce.z.unknown().optional(),elements:Ce.z.array(Ce.z.any()).optional().describe("The elements of the component (only when component is unpublished)")}).optional().describe('The requested component data (only present on "get")')},sn=async e=>{const{action:t}=e;switch(t){case"get":return async function(e){const{component_uid:t}=e;if(!t)throw new Error('component_uid is required for the "get" action.');const n=l.componentsSelectors.getComponentByUid(t);if(!n)throw new Error(`Component with UID "${t}" not found.`);const o="id"in n;let r;if(o){const e=(0,p.getV1DocumentsManager)();try{const t=await e.request(n.id);r=t?.elements}catch{r=void 0}}return{status:"ok",component:{uid:n.uid,name:n.name,status:o?"published":"unpublished",id:o?n.id:void 0,overridableProps:n.overridableProps,elements:r}}}(e);case"save":return async function(e){const{groups:t=[],element_id:n,component_name:o,overridable_props:r}=e;if(!n)throw new Error('element_id is required for the "save" action.');if(!o)throw new Error('component_name is required for the "save" action.');const i=function(){const e=(0,P.getWidgetsCache)();return e?Object.entries(e).reduce((e,[t,n])=>n.atomic_props_schema&&n.show_in_panel&&"widget"!==n.elType?(e.push(t),e):e,[]):[]}(),a=(0,P.getContainer)(n);if(!a)throw new Error("Element not found. Use 'list-elements' to get valid element IDs.");const s=a.model.get("elType");if(!i.includes(s))throw new Error(`Element is not one of the following types: ${i.join(", ")}`);const c=a.model.toJSON({remove:["default"]});if(c?.isLocked)throw new Error("Cannot save a locked element as a component.");const p=(t.indexOf("Default")>=0?[...t]:["Default",...t]).map(e=>({id:(0,I.generateUniqueId)("group"),label:e,props:[]})),m=r?function(e,t,n){const o={},r={},i=n.find(e=>"Default"===e.label);if(!i)throw new Error("Internal mcp error: could not generate default group");return Object.entries(e.props).forEach(([,e])=>{const{elementId:a,propKey:s,label:l,group:c="Default"}=e,p=n.find(e=>e.label===c)||i,m=p.id,d=ln(t,a);if(!d)throw new Error(`Element with ID "${a}" not found in component`);const u=d.elType,g=d.widgetType||d.elType,f=(0,P.getElementType)(g);if(!f)throw new Error(`Element type "${g}" is not atomic or does not have a settings schema. Cannot expose property "${s}" for element "${a}".`);if(!f.propsSchema[s]){const e=Object.keys(f.propsSchema).join(", ");throw new Error(`Property "${s}" does not exist in element "${a}" (type: ${g}). Available properties: ${e}`)}const y=(0,I.generateUniqueId)("prop"),h=d.settings?.[s]?d.settings[s]:f.propsSchema[s].default??null;r[m]||(r[m]={id:m,label:p.label,props:[]}),r[m].props.push(y),o[y]={overrideKey:y,label:l,elementId:a,propKey:s,elType:u,widgetType:g,originValue:h,groupId:m}}),{props:o,groups:{items:r,order:n.filter(e=>r[e.id]).map(e=>e.id)}}}(r,c,p):void 0;m&&function(e,t){Object.values(t.props).forEach(t=>{const n=ln(e,t.elementId);n&&n.settings&&(n.settings[t.propKey]={$$type:"overridable",value:{override_key:t.overrideKey,origin_value:t.originValue}})})}(c,m);const d=(0,I.generateUniqueId)("component");try{await l.apiClient.validate({items:[{uid:d,title:o,elements:[c],settings:{overridable_props:m}}]})}catch(e){if(e instanceof on.AxiosError)throw new Error(e.response?.data.message);throw new Error("Unknown error")}return await dt({name:o,element:c,eventData:null,uid:d,overridableProps:m,executedBy:"mcp_tool"}),m&&Object.values(m.props).forEach(e=>{(0,l.trackComponentEvent)({action:"propertyExposed",source:"mcp_tool",executedBy:"mcp_tool",component_uid:d,property_id:e.overrideKey,property_path:e.propKey,property_name:e.label,element_type:e.widgetType??e.elType})}),{status:"ok",message:`Component "${o}" created successfully.`,component_uid:d}}(e)}};function ln(e,t){if(e.id===t)return e;if(e.elements)for(const n of e.elements){const e=ln(n,t);if(e)return e}return null}const cn=()=>{const e=(0,u.toolPrompts)("manage-component");return e.description(`\nManage reusable components in the Elementor editor: retrieve a specific component or save an element as a new component.\n\n# **CRITICAL - Before any operation, read the resources**\nAlways read all required resources before performing any action.\n\n# Actions\n\n## "get" - Get a specific component\nReturns full details of a component including its overridable properties.\nRequired: component_uid\n\n## "save" - Save an element as a new component\nCreates a new reusable component from an existing element.\nRequired: element_id, component_name\nOptional: overridable_props, groups\n\n# IMPORTANT - Before saving a new component\n**Always read [${tn}] first** to see existing components and avoid creating duplicates.\nUse "get" to inspect an existing component if you need to understand its structure.\n\n# When NOT to use "save"\n- Element is already a component (widgetType: 'e-component')\n- Element is locked\n- Element is not an atomic element (atomic_props_schema is not defined)\n- Element elType is a 'widget'\n\n# **REQUIRED RESOURCES (Must read before any operation)**\n1. [${tn}]\n **MANDATORY** - Live list of all existing components. Always read this first to check for duplicates.\n\n2. [${we.DOCUMENT_STRUCTURE_URI}]\n **MANDATORY** - Required to understand the document structure and identify child elements for overridable properties.\n\n3. [${we.WIDGET_SCHEMA_URI}]\n **MANDATORY** - Required to understand which properties are available for each widget type.\n\n# Instructions for "save" - MUST FOLLOW IN ORDER\n## Step 1: Check existing components\n1. Read the [${tn}] resource to see all existing components\n2. If a suitable component already exists, consider using it instead\n\n## Step 2: Identify the Target Element\n1. Read the [${we.DOCUMENT_STRUCTURE_URI}] resource\n2. Locate the element by its element_id\n3. Verify the element type is valid, not locked, and not already a component\n\n## Step 3: Define Overridable Properties\nSkip ONLY if the user explicitly requests no customizable properties.\n\n1. **Identify Child Elements** via [${we.DOCUMENT_STRUCTURE_URI}]\n2. **Find Available Properties** via [${we.WIDGET_SCHEMA_URI}] → atomic_props_schema\n - Use only top-level props (e.g., "text", "url", "tag", "size")\n3. **Build the overridable_props object** with unique, user-friendly labels\n\n## Step 4: Execute "save"\nCall with element_id, component_name, and optionally overridable_props and groups.\n\n# CONSTRAINTS\n- NEVER try to override properties of the parent element itself — ONLY child elements\n- NEVER use invalid propKeys — always verify against atomic_props_schema in [${we.WIDGET_SCHEMA_URI}]\n- Element IDs must exist within the target element's children\n- The element being saved must not be inside another component\n`),e.parameter("action",'**MANDATORY** The operation to perform:\n- "get": Returns details of a specific component. Requires component_uid.\n- "save": Creates a new component from an element. Requires element_id and component_name.'),e.parameter("component_uid",`**Required for "get"** The unique identifier of the component to retrieve.\nRead the [${tn}] resource first to discover available component UIDs.`),e.parameter("element_id",`**Required for "save"** The unique identifier of the element to save as a component.\nUse the [${we.DOCUMENT_STRUCTURE_URI}] resource to find available element IDs.`),e.parameter("component_name",'**Required for "save"** A descriptive name for the new component.\nShould be unique and clearly describe the component\'s purpose (e.g., "Hero Section", "Feature Card").'),e.parameter("overridable_props",`**Optional for "save"** Configuration for which child element properties can be customized in component instances.\n\nStructure:\n\`\`\`json\n{\n "props": {\n "": {\n "elementId": "",\n "propKey": "",\n "label": ""\n }\n }\n}\n\`\`\`\n\nTo populate this correctly:\n1. Use [${we.DOCUMENT_STRUCTURE_URI}] to find child element IDs and their widgetType\n2. Use [${we.WIDGET_SCHEMA_URI}] to find the atomic_props_schema for each child element's widgetType\n3. Only include properties you want to be customizable in component instances\n4. Provide a unique, user-friendly label for each property`),e.example('\nGet a specific component:\n```json\n{ "action": "get", "component_uid": "component-abc123" }\n```\n\nSave without overridable properties:\n```json\n{ "action": "save", "element_id": "abc123", "component_name": "Hero Section" }\n```\n\nSave with overridable properties:\n```json\n{\n "action": "save",\n "element_id": "abc123",\n "component_name": "Feature Card",\n "overridable_props": {\n "props": {\n "heading-text": {\n "elementId": "heading-123",\n "propKey": "text",\n "label": "Card Title",\n "group": "Content"\n },\n "button-link": {\n "elementId": "button-456",\n "propKey": "url",\n "label": "Button Link",\n "group": "Settings"\n }\n }\n }\n}\n```\n'),e.instruction('After successful "save", the component will be available in the components library and can be inserted into any page or template.'),e.instruction("When overridable properties are defined, component instances will show customization controls for those specific properties in the editing panel."),e.prompt()},pn=e=>{const{addTool:t}=e;t({name:"manage-component",schema:rn,outputSchema:an,description:cn(),requiredResources:[{uri:tn,description:"List of all components"},{uri:we.DOCUMENT_STRUCTURE_URI,description:"Document structure"},{uri:we.WIDGET_SCHEMA_URI,description:"Widget schema"}],handler:sn})},mn="ctrl+shift+k",dn="elementor/editor/open-save-as-component-form";function un(){const e=(0,P.getSelectedElements)();if(1!==e.length)return{allowed:!1};const t=e[0];if(!(0,P.getElementType)(t.type))return{allowed:!1};const n=(0,P.getWidgetsCache)(),o=n?.[t.type];if(!o?.atomic_props_schema||!o?.show_in_panel||"widget"===o?.elType)return{allowed:!1};const r=window.elementor.getContainer(t.id);return!r||r.isLocked()?{allowed:!1}:{allowed:!0,container:r}}const gn=({container:e})=>{const t=e.document;if(!t||t.config.type!==i)return;const n=l.componentsSelectors.getOverridableProps(t.id);n&&e.settings.set("overridable_props",n)};async function fn({elements:e,status:t}){const n=l.componentsSelectors.getUnpublishedComponents();if(n.length)try{const o=await async function(e,t){const n=await l.apiClient.create({status:t,items:e.map(e=>({uid:e.uid,title:e.name,elements:e.elements,settings:e.overridableProps?{overridable_props:e.overridableProps}:void 0}))}),o=new Map;return Object.entries(n).forEach(([e,t])=>{o.set(e,t)}),o}(n,t);yn(e,o),l.componentsActions.add(n.map(e=>({id:o.get(e.uid),name:e.name,uid:e.uid,overridableProps:e.overridableProps?e.overridableProps:void 0}))),l.componentsActions.resetUnpublished()}catch(e){const t=n.map(e=>e.uid);throw l.componentsActions.removeUnpublished(t),new Error(`Failed to publish components: ${e}`)}}function yn(e,t){e.forEach(e=>{const{shouldUpdate:n,newComponentId:o}=function(e,t){if("e-component"===e.widgetType){const n=e.settings?.component_instance?.value?.component_id.value;if(n&&t.has(n.toString()))return{shouldUpdate:!0,newComponentId:t.get(n.toString())}}return{shouldUpdate:!1,newComponentId:null}}(e,t);var r,i;n&&(r=e.id,i=o,(0,P.updateElementSettings)({id:r,props:{component_instance:{$$type:"component-instance",value:{component_id:{$$type:"number",value:i}}}},withHistory:!1})),e.elements&&yn(e.elements,t)})}const hn=({container:e,status:t})=>{const n=e?.model.get("elements").toJSON?.()??[];return Promise.all([vn({elements:n,status:t}),gn({container:e})])},vn=async({elements:e,status:t})=>{await bn({elements:e,status:t}),await fn({elements:e,status:t})},bn=async({elements:e,status:t})=>{await(async e=>{const t=l.componentsSelectors.getUpdatedComponentNames();t.length&&0===(await l.apiClient.updateComponentTitle(t,e)).failedIds.length&&l.componentsActions.cleanUpdatedComponentNames()})(t),await(async e=>{try{const t=l.componentsSelectors.getArchivedThisSession();if(!t.length)return;const n=(await l.apiClient.updateArchivedComponents(t,e)).failedIds.join(", ");n&&(0,_e.notify)({type:"error",message:`Failed to archive components: ${n}`,id:"failed-archived-components-notification"})}catch(e){throw new Error(`Failed to update archived components: ${e}`)}})(t),await(0,l.publishDraftComponentsInPageBeforeSave)({elements:e,status:t})};var En=window.elementorV2.editorCanvasExtended;const wn="e-flexbox";function _n(e){const t=(0,P.createElement)({container:e,model:{elType:wn}});(0,P.selectElement)(t.id)}function Cn(e){return!("document"!==e.id)&&e.document?.config.type===i}function xn(){(0,f.registerDataHook)("after","document/elements/duplicate",(e,t)=>{var n;ut()&&(n=t,(Array.isArray(n)?n:[n]).forEach(e=>{!function(e){(0,P.getAllDescendants)(e).forEach(e=>{e.model.get("widgetType")===l.COMPONENT_WIDGET_TYPE?function(e){const t=e.settings?.toJSON()??{},n=l.componentInstancePropTypeUtil.extract(t.component_instance),o=l.componentInstanceOverridesPropTypeUtil.extract(n?.overrides);if(!o?.length)return;const r=T(o),i=l.componentInstancePropTypeUtil.create({...n,overrides:l.componentInstanceOverridesPropTypeUtil.create(r)});(0,P.updateElementSettings)({id:e.id,props:{component_instance:i},withHistory:!1})}(e):function(e){const t=e.settings?.toJSON()??{},{hasChanges:n,settings:o}=O(t);n&&(0,P.updateElementSettings)({id:e.id,props:o,withHistory:!1})}(e)})}(e)}))}),(0,f.registerDataHook)("after","document/elements/copy",e=>{ut()&&function(e){const t=window.elementorCommon?.storage;if(!t)return;const n=t.get(e);if(!n?.elements?.length)return;const o=n.elements.map(k);t.set(e,{...n,elements:o})}(e.storageKey??"clipboard")})}function In(){return(0,h.useEffect)(()=>(window.addEventListener(we.ELEMENT_ADDED_EVENT,Pn),(0,f.registerDataHook)("after","preview/drop",(e,t)=>{"e-component"===t?.model?.get("widgetType")&&Sn(t.model.toJSON(),"user")}),()=>{window.removeEventListener(we.ELEMENT_ADDED_EVENT,Pn)}),[]),null}function Pn(e){const{element:t,executedBy:n}=e.detail;Sn(t,n)}function Sn(e,t){if("e-component"!==e?.widgetType)return;const n=e.editor_settings,o=n?.component_uid,r=(0,l.selectComponentByUid)?.((0,w.__getState)(),o??"")?.name,i=e.id,a=(0,l.selectCreatedThisSession)((0,w.__getState)()),s=o&&a.includes(o),c=window.elementorCommon.eventsManager.config,{locations:p,secondaryLocations:m}=c,d={location:p.widgetPanel,secondary_location:m.componentsTab};let u={source:t,executedBy:t,instance_id:i,component_uid:o,component_name:r,is_same_session_reuse:s};"mcp_tool"!==t&&(u={...u,...d}),(0,l.trackComponentEvent)({action:"instanceAdded",...u})}const Tn=1;function On({isLicenseExpired:e}){(0,m.registerEditingPanelReplacement)({id:"extended-component-instance-edit-panel",priority:Tn,condition:(e,t)=>"e-component"===t.key,component:Je}),(0,d.registerTab)({id:"components",label:(0,y.__)("Components","elementor-pro"),component:He,priority:Tn}),(0,f.registerDataHook)("dependency","editor/documents/close",e=>((0,p.getV1CurrentDocument)().config.type===i&&(e.mode="autosave"),!0)),window.elementorCommon.__beforeSave=hn,(0,m.injectIntoPanelHeaderTop)({id:"component-panel-header",component:Ee,options:{overwrite:!0}}),(0,m.registerFieldIndicator)({fieldType:m.FIELD_TYPE.SETTINGS,id:"component-overridable-prop",priority:1,indicator:st}),(0,c.registerControlReplacement)({id:o,component:Ze,condition:({value:e})=>l.componentOverridablePropTypeUtil.isValid(e)}),(0,f.blockCommand)({command:"document/elements/create",condition:yt}),(0,f.blockCommand)({command:"document/elements/move",condition:ht}),(0,f.blockCommand)({command:"document/elements/paste",condition:vt}),(0,En.registerDropContainerRedirect)({shouldHandle:ut,resolveRedirect:e=>Cn(e)?function(e){const t=e.children?.[0];return t?{shouldRedirect:!0,container:t}:{shouldRedirect:!1,container:e}}(e):{shouldRedirect:!1,container:e}}),(0,f.registerDataHook)("after","document/elements/delete",e=>{if(!ut())return;const t=e.containers??(e.container?[e.container]:[]);for(const e of t){if(!e.parent||!Cn(e.parent))continue;const t=e.parent;0===t.children?.length&&_n(e.parent)}}),xn(),e||window.$e.shortcuts.register(mn,{callback:()=>{const e=un();e.allowed&&function(e){const t=window,n=e.view.el.getBoundingClientRect(),o=t.elementor.$preview[0].getBoundingClientRect(),r={left:o.left+n.left+n.width/2,top:o.top+n.top};window.dispatchEvent(new CustomEvent(dn,{detail:{element:e.model.toJSON({remove:["default"]}),anchorPosition:r,options:{trigger:"keyboard",location:"canvas",secondaryLocation:"canvasElement"}}}))}(e.container)},dependency:()=>un().allowed,exclude:["input"]}),function(e){const{setMCPDescription:t,waitForReady:n}=e;t("Components V4 MCP Server - Tools for creating and managing reusable components."),n().then(()=>{nn(e),pn(e)})}((0,u.getMCPByDomain)("components",{instructions:a}))}async function kn(){(0,s.injectIntoTop)({id:"component-popups",component:Zt,options:{overwrite:!0}}),(0,g.__registerPanel)({id:ue.id,component:Xt}),(0,s.injectIntoLogic)({id:"components-logic-effects",component:Qt,options:{overwrite:!0}}),(0,s.injectIntoLogic)({id:"components-track-instance-added",component:In});const{isFeatureEnabled:e,isLicenseExpired:t}=await async function(){const[e,t]=await Promise.allSettled([(0,n.fetchTierFeatures)(),(0,n.fetchLicenseStatus)()]),o="fulfilled"===e.status?e.value:[],i="fulfilled"===t.status&&t.value;return{isFeatureEnabled:o.includes(r),isLicenseExpired:i}}();e&&On({isLicenseExpired:t})}(window.elementorV2=window.elementorV2||{}).editorComponentsExtended=t}(),window.elementorV2.editorComponentsExtended?.init?.(); Bagaiman Memilih Peralatan Alat Medis yang Memenuhi Standar

Bagaiman Memilih Peralatan Alat Medis yang Memenuhi Standar

Dalam industri perawatan kesehatan, pemilihan peralatan alat medis yang memenuhi standar sangat penting untuk memastikan keselamatan pasien dan efektivitas prosedur medis. Dengan begitu banyak pilihan yang tersedia di pasaran, memilih peralatan yang tepat dapat menjadi tugas yang menantang. Artikel ini akan memberikan panduan lengkap tentang bagaimana memilih peralatan alat medis yang memenuhi standar, serta tips yang dapat membantu Anda membuat keputusan yang tepat.

1. Menentukan Kebutuhan Spesifik

Langkah pertama dalam memilih peralatan alat medis adalah memahami kebutuhan spesifik dari fasilitas kesehatan atau praktik Anda. Pertimbangkan jenis prosedur medis yang akan Anda lakukan dan fitur apa yang diperlukan untuk mendukung kegiatan tersebut. Misalnya, apakah Anda membutuhkan peralatan untuk diagnosis, pencegahan, atau perawatan?

2. Mengevaluasi Kualitas Produk

Kualitas produk adalah hal yang tidak boleh diabaikan saat memilih peralatan alat medis. Pastikan untuk memilih merek yang terpercaya dan memiliki reputasi baik dalam industri. Lakukan riset mendalam tentang produsen dan periksa apakah produk mereka telah disertifikasi oleh otoritas regulasi yang berwenang.

3. Memeriksa Kepatuhan Regulasi

Kepatuhan terhadap regulasi dan standar industri adalah aspek penting dalam memilih peralatan alat medis. Pastikan peralatan yang Anda pilih memenuhi semua persyaratan yang ditetapkan oleh badan pengawas kesehatan dan organisasi standar seperti ISO (International Organization for Standardization).

4. Mempertimbangkan Faktor Keselamatan

Keselamatan pasien harus menjadi prioritas utama dalam pemilihan peralatan alat medis. Pilihlah peralatan yang dilengkapi dengan fitur keselamatan yang canggih dan dirancang untuk mengurangi risiko cedera atau infeksi nosokomial.

5. Membandingkan Fitur dan Fungsi

Bandingkan fitur dan fungsi dari beberapa pilihan peralatan sebelum membuat keputusan akhir. Perhatikan hal-hal seperti keakuratan, ketepatan, kemudahan penggunaan, dan kemampuan untuk diintegrasikan dengan sistem lain yang mungkin Anda miliki.

6. Memperhatikan Biaya Total Pemilikan

Biaya total pemilikan merupakan faktor penting yang harus dipertimbangkan dalam memilih peralatan alat medis. Selain harga pembelian, pertimbangkan juga biaya operasional, pemeliharaan, dan perbaikan jangka panjang. Pilihlah peralatan yang menawarkan nilai terbaik untuk investasi Anda.

7. Mencari Umpan Balik dan Review

Mencari umpan balik dari pengguna lain dan membaca ulasan produk dapat memberikan wawasan berharga tentang kinerja dan keandalan peralatan alat medis yang dipilih. Tinjauan dari pengguna yang telah menggunakan peralatan secara langsung dapat membantu Anda membuat keputusan yang lebih terinformasi.

8. Mengikuti Perkembangan Teknologi

Industri peralatan alat medis terus berkembang dengan cepat, dengan penemuan dan inovasi baru yang terjadi secara teratur. Pertimbangkan untuk memilih peralatan yang menggunakan teknologi terkini dan memiliki kemampuan untuk diupgrade atau diperbarui di masa depan.

Kesimpulan

Memilih peralatan alat medis yang memenuhi standar adalah langkah penting dalam memastikan kualitas perawatan kesehatan yang optimal. Dengan memperhatikan kebutuhan spesifik, kualitas produk, kepatuhan regulasi, keselamatan, fitur dan fungsi, biaya total pemilikan, umpan balik pengguna, dan perkembangan teknologi, Anda dapat membuat keputusan yang tepat untuk fasilitas kesehatan atau praktik Anda. Dengan demikian, Anda dapat meningkatkan efisiensi, keselamatan, dan hasil perawatan pasien Anda.

Leave a comment

Your email address will not be published. Required fields are marked *