← All changes
|
assets/js/packages/editor-elements/editor-elements.js
+2
-1320
4.3.0-beta3
→
3.34.0-beta1
View file →
| @@ -1,1321 +1,3 @@ | ||
| 1 | -(function(_elementor_editor_v1_adapters, _elementor_session, _elementor_editor_props, _wordpress_i18n, _elementor_utils, _elementor_editor_styles) { | |
| 2 | - | |
| 3 | -//#region \0rolldown/runtime.js | |
| 4 | - var __defProp = Object.defineProperty; | |
| 5 | - var __name = (target, value) => __defProp(target, "name", { | |
| 6 | - value, | |
| 7 | - configurable: true | |
| 8 | - }); | |
| 9 | - var __exportAll = (all, no_symbols) => { | |
| 10 | - let target = {}; | |
| 11 | - for (var name in all) { | |
| 12 | - __defProp(target, name, { | |
| 13 | - get: all[name], | |
| 14 | - enumerable: true | |
| 15 | - }); | |
| 16 | - } | |
| 17 | - if (!no_symbols) { | |
| 18 | - __defProp(target, Symbol.toStringTag, { value: "Module" }); | |
| 19 | - } | |
| 20 | - return target; | |
| 21 | - }; | |
| 22 | - | |
| 23 | -//#endregion | |
| 24 | - | |
| 25 | -//#region packages/packages/libs/editor-elements/src/sync/get-container.ts | |
| 26 | - function getContainer(id) { | |
| 27 | - return window.elementor?.getContainer?.(id) ?? null; | |
| 28 | - } | |
| 29 | - var selectElement = (elementId) => { | |
| 30 | - try { | |
| 31 | - (0, _elementor_editor_v1_adapters.__privateRunCommand)("document/elements/select", { container: getContainer(elementId) }); | |
| 32 | - } catch {} | |
| 33 | - }; | |
| 34 | - | |
| 35 | -//#endregion | |
| 36 | -//#region packages/packages/libs/editor-elements/src/sync/resolve-element.ts | |
| 37 | - function isConnected(container) { | |
| 38 | - if (!container) return false; | |
| 39 | - if (!container.view?.el) return true; | |
| 40 | - return container.view.el.isConnected; | |
| 41 | - } | |
| 42 | - function resolveContainer(container, id) { | |
| 43 | - const looked = container.lookup?.(); | |
| 44 | - if (isConnected(looked)) return looked; | |
| 45 | - const byId = getContainer(id); | |
| 46 | - if (isConnected(byId)) return byId; | |
| 47 | - return null; | |
| 48 | - } | |
| 49 | - function getDocumentUtils() { | |
| 50 | - return window.$e?.components?.get?.("document")?.utils; | |
| 51 | - } | |
| 52 | - function findModelInDocument(id) { | |
| 53 | - return getDocumentUtils()?.findModelById?.(id) ?? null; | |
| 54 | - } | |
| 55 | - function addModelToParent(parentId, childData, options) { | |
| 56 | - return getDocumentUtils()?.addModelToParent?.(parentId, childData, options) ?? false; | |
| 57 | - } | |
| 58 | - function removeModelFromParent(parentId, childId) { | |
| 59 | - return getDocumentUtils()?.removeModelFromParent?.(parentId, childId) ?? false; | |
| 60 | - } | |
| 61 | - | |
| 62 | -//#endregion | |
| 63 | -//#region packages/packages/libs/editor-elements/src/sync/resolve-insert-index.ts | |
| 64 | - function resolveInsertIndex(position, elements) { | |
| 65 | - const lastIndex = elements.length; | |
| 66 | - switch (position.kind) { | |
| 67 | - case "first": return 0; | |
| 68 | - case "last": return lastIndex; | |
| 69 | - case "index": { | |
| 70 | - const index = typeof position.value === "number" ? position.value : lastIndex; | |
| 71 | - return Math.max(0, Math.min(index, lastIndex)); | |
| 72 | - } | |
| 73 | - case "after_type": { | |
| 74 | - const anchor = elements.findIndex((element) => element.elType === position.value); | |
| 75 | - return anchor >= 0 ? anchor + 1 : lastIndex; | |
| 76 | - } | |
| 77 | - case "before_type": { | |
| 78 | - const anchor = elements.findIndex((element) => element.elType === position.value); | |
| 79 | - return anchor >= 0 ? anchor : lastIndex; | |
| 80 | - } | |
| 81 | - default: return lastIndex; | |
| 82 | - } | |
| 83 | - } | |
| 84 | - | |
| 85 | -//#endregion | |
| 86 | -//#region packages/packages/libs/editor-elements/src/children-dependencies/stash.ts | |
| 87 | - var STASH_KEY_PREFIX = "elementor/editor-state"; | |
| 88 | - var STASH_KEY_SEGMENT = "children-deps"; | |
| 89 | - function createChildrenStash() { | |
| 90 | - return { | |
| 91 | - get(elementId, childType) { | |
| 92 | - return (0, _elementor_session.getSessionStorageItem)(buildStashKey(elementId, childType)); | |
| 93 | - }, | |
| 94 | - save(elementId, childType, data) { | |
| 95 | - (0, _elementor_session.setSessionStorageItem)(buildStashKey(elementId, childType), data); | |
| 96 | - }, | |
| 97 | - clear(elementId, childType) { | |
| 98 | - (0, _elementor_session.removeSessionStorageItem)(buildStashKey(elementId, childType)); | |
| 99 | - }, | |
| 100 | - clearAllForElement(elementId) { | |
| 101 | - const prefix = buildElementStashPrefix(elementId); | |
| 102 | - for (let index = sessionStorage.length - 1; index >= 0; index--) { | |
| 103 | - const key = sessionStorage.key(index); | |
| 104 | - if (key?.startsWith(prefix)) (0, _elementor_session.removeSessionStorageItem)(key); | |
| 105 | - } | |
| 106 | - } | |
| 107 | - }; | |
| 108 | - } | |
| 109 | - function buildStashKey(elementId, childType) { | |
| 110 | - return `${STASH_KEY_PREFIX}/${elementId}/${STASH_KEY_SEGMENT}/${childType}`; | |
| 111 | - } | |
| 112 | - function buildElementStashPrefix(elementId) { | |
| 113 | - return `${STASH_KEY_PREFIX}/${elementId}/${STASH_KEY_SEGMENT}/`; | |
| 114 | - } | |
| 115 | - | |
| 116 | -//#endregion | |
| 117 | -//#region packages/packages/libs/editor-elements/src/sync/generate-element-id.ts | |
| 118 | - var generateElementId = () => { | |
| 119 | - return window.elementorCommon?.helpers?.getUniqueId?.() ?? `el-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`; | |
| 120 | - }; | |
| 121 | - | |
| 122 | -//#endregion | |
| 123 | -//#region packages/packages/libs/editor-elements/src/children-dependencies/utils.ts | |
| 124 | - function evaluateWhen(when, settings) { | |
| 125 | - return (0, _elementor_editor_props.isDependencyMet)(when, settings).isMet; | |
| 126 | - } | |
| 127 | - function ensureModelId(model) { | |
| 128 | - const { skipDefaultChildren: _skipDefaultChildren, ...rest } = model; | |
| 129 | - return rest.id ? rest : { | |
| 130 | - ...rest, | |
| 131 | - id: generateElementId() | |
| 132 | - }; | |
| 133 | - } | |
| 134 | - function resolveChildModelData(elementId, rule, stash) { | |
| 135 | - const stashed = rule.stash ? stash.get(elementId, rule.child_type) : void 0; | |
| 136 | - return { | |
| 137 | - modelData: ensureModelId(stashed ?? rule.default_model ?? { elType: rule.child_type }), | |
| 138 | - wasStashed: Boolean(stashed) | |
| 139 | - }; | |
| 140 | - } | |
| 141 | - | |
| 142 | -//#endregion | |
| 143 | -//#region packages/packages/libs/editor-elements/src/children-dependencies/bind-settings-reconcile.ts | |
| 144 | - function bindSettingsReconcile({ model, elementConfig }) { | |
| 145 | - const stash = createChildrenStash(); | |
| 146 | - const rules = elementConfig?.children_dependencies; | |
| 147 | - if (!rules?.length) return () => {}; | |
| 148 | - const settingsModel = model.get("settings"); | |
| 149 | - const elementId = model.get("id"); | |
| 150 | - if (!settingsModel?.on || !settingsModel?.off || !elementId) return () => {}; | |
| 151 | - const lastMet = /* @__PURE__ */ new Map(); | |
| 152 | - rules.forEach((rule) => { | |
| 153 | - lastMet.set(rule.child_type, evaluateWhen(rule.when, settingsModel.toJSON())); | |
| 154 | - }); | |
| 155 | - const onChange = () => { | |
| 156 | - const currentSettings = settingsModel.toJSON(); | |
| 157 | - rules.forEach((rule) => { | |
| 158 | - const previous = lastMet.get(rule.child_type) ?? false; | |
| 159 | - const current = evaluateWhen(rule.when, currentSettings); | |
| 160 | - if (previous === current) return; | |
| 161 | - lastMet.set(rule.child_type, current); | |
| 162 | - if (current) attachChildFromRule(elementId, rule, stash); | |
| 163 | - else detachChildFromRule(elementId, rule, stash); | |
| 164 | - }); | |
| 165 | - }; | |
| 166 | - settingsModel.on("change", onChange); | |
| 167 | - return () => { | |
| 168 | - settingsModel.off?.("change", onChange); | |
| 169 | - stash.clearAllForElement(elementId); | |
| 170 | - }; | |
| 171 | - } | |
| 172 | - function attachChildFromRule(parentId, rule, stash) { | |
| 173 | - const currentChildren = getDirectChildData(getContainer(parentId) ?? void 0); | |
| 174 | - if (currentChildren.some((child) => child.elType === rule.child_type)) return; | |
| 175 | - const { modelData, wasStashed } = resolveChildModelData(parentId, rule, stash); | |
| 176 | - if (!addModelToParent(parentId, modelData, { at: resolveInsertIndex(rule.position, currentChildren) })) return; | |
| 177 | - if (wasStashed) stash.clear(parentId, rule.child_type); | |
| 178 | - requestNavigatorRefresh(parentId); | |
| 179 | - } | |
| 180 | - function detachChildFromRule(parentId, rule, stash) { | |
| 181 | - const child = (getContainer(parentId) ?? void 0)?.children?.find((candidate) => candidate.model.get("elType") === rule.child_type); | |
| 182 | - if (!child) return; | |
| 183 | - const childSnapshot = child.model.toJSON(); | |
| 184 | - if (!removeModelFromParent(parentId, child.id)) return; | |
| 185 | - if (rule.stash) stash.save(parentId, rule.child_type, childSnapshot); | |
| 186 | - requestNavigatorRefresh(parentId); | |
| 187 | - } | |
| 188 | - function requestNavigatorRefresh(parentId) { | |
| 189 | - if (typeof window === "undefined" || typeof window.dispatchEvent !== "function") return; | |
| 190 | - window.dispatchEvent(new CustomEvent("elementor/navigator/refresh-children", { detail: { elementId: parentId } })); | |
| 191 | - } | |
| 192 | - function getDirectChildData(parent) { | |
| 193 | - return (parent?.children ?? []).map((child) => child.model.toJSON()); | |
| 194 | - } | |
| 195 | - | |
| 196 | -//#endregion | |
| 197 | -//#region packages/packages/libs/editor-elements/src/children-dependencies/reconcile-initial-children.ts | |
| 198 | - function reconcileInitialChildren({ elementId, elementConfig, attributes }) { | |
| 199 | - const stash = createChildrenStash(); | |
| 200 | - const rules = elementConfig?.children_dependencies; | |
| 201 | - if (!rules?.length) return; | |
| 202 | - const elements = [...attributes.elements ?? []]; | |
| 203 | - const settings = attributes.settings ?? {}; | |
| 204 | - rules.forEach((rule) => { | |
| 205 | - const isMet = evaluateWhen(rule.when, settings); | |
| 206 | - const existingIndex = elements.findIndex((element) => element.elType === rule.child_type); | |
| 207 | - const isPresent = existingIndex >= 0; | |
| 208 | - if (isMet && !isPresent) { | |
| 209 | - const { modelData, wasStashed } = resolveChildModelData(elementId, rule, stash); | |
| 210 | - const insertAt = resolveInsertIndex(rule.position, elements); | |
| 211 | - elements.splice(insertAt, 0, modelData); | |
| 212 | - if (wasStashed) stash.clear(elementId, rule.child_type); | |
| 213 | - return; | |
| 214 | - } | |
| 215 | - if (!isMet && isPresent) { | |
| 216 | - const [removed] = elements.splice(existingIndex, 1); | |
| 217 | - if (rule.stash && removed) stash.save(elementId, rule.child_type, removed); | |
| 218 | - } | |
| 219 | - }); | |
| 220 | - attributes.elements = elements; | |
| 221 | - } | |
| 222 | - | |
| 223 | -//#endregion | |
| 224 | -//#region packages/packages/libs/editor-elements/src/sync/model-utils.ts | |
| 225 | - function findChildRecursive(model, predicate) { | |
| 226 | - const childModels = model.get("elements") ?? []; | |
| 227 | - for (const childModel of childModels) { | |
| 228 | - if (predicate(childModel)) return { model: childModel }; | |
| 229 | - const found = findChildRecursive(childModel, predicate); | |
| 230 | - if (found) return found; | |
| 231 | - } | |
| 232 | - return null; | |
| 233 | - } | |
| 234 | - function getElementChildren(model, predicate) { | |
| 235 | - return (model.get("elements") ?? []).filter((childModel) => !predicate || predicate(childModel)).map((childModel) => ({ model: childModel })); | |
| 236 | - } | |
| 237 | - | |
| 238 | -//#endregion | |
| 239 | -//#region packages/packages/libs/editor-elements/src/hooks/use-element-children.ts | |
| 240 | - function toElementModel({ model }) { | |
| 241 | - return { | |
| 242 | - id: model.get("id"), | |
| 243 | - editorSettings: model.get("editor_settings") ?? {} | |
| 244 | - }; | |
| 245 | - } | |
| 246 | - function useElementChildren(elementId, childrenTypes, { includeSelfAsParent = false } = {}) { | |
| 247 | - return (0, _elementor_editor_v1_adapters.__privateUseListenTo)([ | |
| 248 | - (0, _elementor_editor_v1_adapters.v1ReadyEvent)(), | |
| 249 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/create"), | |
| 250 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/delete"), | |
| 251 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/update"), | |
| 252 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/set-settings") | |
| 253 | - ], () => { | |
| 254 | - const model = getContainer(elementId)?.model; | |
| 255 | - if (!model) return {}; | |
| 256 | - return Object.entries(childrenTypes).reduce((acc, [parentType, childType]) => { | |
| 257 | - const parent = includeSelfAsParent && model.get("elType") === parentType ? { model } : findChildRecursive(model, (m) => m.get("elType") === parentType); | |
| 258 | - if (!parent) { | |
| 259 | - acc[childType] = []; | |
| 260 | - return acc; | |
| 261 | - } | |
| 262 | - acc[childType] = getElementChildren(parent.model, (m) => m.get("elType") === childType).map(toElementModel); | |
| 263 | - return acc; | |
| 264 | - }, {}); | |
| 265 | - }, [elementId]); | |
| 266 | - } | |
| 267 | - | |
| 268 | -//#endregion | |
| 269 | -//#region packages/packages/libs/editor-elements/src/sync/get-element-editor-settings.ts | |
| 270 | - function getElementEditorSettings(elementId) { | |
| 271 | - return getContainer(elementId)?.model.get("editor_settings") ?? {}; | |
| 272 | - } | |
| 273 | - | |
| 274 | -//#endregion | |
| 275 | -//#region packages/packages/libs/editor-elements/src/hooks/use-element-editor-settings.ts | |
| 276 | - var useElementEditorSettings = (elementId) => { | |
| 277 | - return (0, _elementor_editor_v1_adapters.__privateUseListenTo)((0, _elementor_editor_v1_adapters.windowEvent)("elementor/element/update_editor_settings"), () => getElementEditorSettings(elementId), [elementId]); | |
| 278 | - }; | |
| 279 | - | |
| 280 | -//#endregion | |
| 281 | -//#region packages/packages/libs/editor-elements/src/hooks/use-parent-element.ts | |
| 282 | - function useParentElement(elementId) { | |
| 283 | - return (0, _elementor_editor_v1_adapters.__privateUseListenTo)([(0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/create")], () => { | |
| 284 | - if (!elementId) return null; | |
| 285 | - const element = window?.elementor?.getContainer?.(elementId); | |
| 286 | - if (!element) return null; | |
| 287 | - return element.parent; | |
| 288 | - }, [elementId]); | |
| 289 | - } | |
| 290 | - | |
| 291 | -//#endregion | |
| 292 | -//#region packages/packages/libs/editor-elements/src/sync/get-widgets-cache.ts | |
| 293 | - function getWidgetsCache() { | |
| 294 | - return window?.elementor?.widgetsCache || null; | |
| 295 | - } | |
| 296 | - | |
| 297 | -//#endregion | |
| 298 | -//#region packages/packages/libs/editor-elements/src/sync/get-element-type.ts | |
| 299 | - function getElementType(type) { | |
| 300 | - if (!type) return null; | |
| 301 | - const elementType = getWidgetsCache()?.[type]; | |
| 302 | - if (!elementType?.atomic_controls) return null; | |
| 303 | - if (!elementType?.atomic_props_schema) return null; | |
| 304 | - return { | |
| 305 | - key: type, | |
| 306 | - controls: elementType.atomic_controls, | |
| 307 | - propsSchema: elementType.atomic_props_schema, | |
| 308 | - dependenciesPerTargetMapping: elementType.dependencies_per_target_mapping ?? {}, | |
| 309 | - title: elementType.title, | |
| 310 | - styleStates: elementType.atomic_style_states ?? [], | |
| 311 | - pseudoStates: elementType.atomic_pseudo_states ?? [] | |
| 312 | - }; | |
| 313 | - } | |
| 314 | - | |
| 315 | -//#endregion | |
| 316 | -//#region packages/packages/libs/editor-elements/src/sync/get-selected-elements.ts | |
| 317 | - function getSelectedElements() { | |
| 318 | - return (window.elementor?.selection?.getElements?.() ?? []).reduce((acc, el) => { | |
| 319 | - const type = el.model.get("widgetType") || el.model.get("elType"); | |
| 320 | - if (type) acc.push({ | |
| 321 | - id: el.model.get("id"), | |
| 322 | - type | |
| 323 | - }); | |
| 324 | - return acc; | |
| 325 | - }, []); | |
| 326 | - } | |
| 327 | - function getSelectedElement() { | |
| 328 | - const elements = getSelectedElements(); | |
| 329 | - const [element] = elements; | |
| 330 | - const elementType = getElementType(element?.type); | |
| 331 | - if (elements.length !== 1 || !elementType || !element) return { | |
| 332 | - element: null, | |
| 333 | - elementType: null | |
| 334 | - }; | |
| 335 | - return { | |
| 336 | - element, | |
| 337 | - elementType | |
| 338 | - }; | |
| 339 | - } | |
| 340 | - | |
| 341 | -//#endregion | |
| 342 | -//#region packages/packages/libs/editor-elements/src/hooks/use-selected-element.ts | |
| 343 | - function useSelectedElement() { | |
| 344 | - return (0, _elementor_editor_v1_adapters.__privateUseListenTo)([ | |
| 345 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/select"), | |
| 346 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/deselect"), | |
| 347 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/select-all"), | |
| 348 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/deselect-all") | |
| 349 | - ], getSelectedElement); | |
| 350 | - } | |
| 351 | - | |
| 352 | -//#endregion | |
| 353 | -//#region packages/packages/libs/editor-elements/src/sync/get-element-setting.ts | |
| 354 | - var getElementSetting = (elementId, settingKey) => { | |
| 355 | - return getContainer(elementId)?.settings?.get(settingKey) ?? null; | |
| 356 | - }; | |
| 357 | - var getElementSettings = (elementId, settingKey) => { | |
| 358 | - return Object.fromEntries(settingKey.map((key) => [key, getElementSetting(elementId, key)])); | |
| 359 | - }; | |
| 360 | - | |
| 361 | -//#endregion | |
| 362 | -//#region packages/packages/libs/editor-elements/src/hooks/use-selected-element-settings.ts | |
| 363 | - function useSelectedElementSettings() { | |
| 364 | - return (0, _elementor_editor_v1_adapters.__privateUseListenTo)([ | |
| 365 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/select"), | |
| 366 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/deselect"), | |
| 367 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/select-all"), | |
| 368 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/deselect-all"), | |
| 369 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/set-settings") | |
| 370 | - ], () => { | |
| 371 | - const { element, elementType } = getSelectedElement(); | |
| 372 | - if (!element || !elementType) return { | |
| 373 | - element: null, | |
| 374 | - elementType: null, | |
| 375 | - settings: null | |
| 376 | - }; | |
| 377 | - return { | |
| 378 | - element, | |
| 379 | - elementType, | |
| 380 | - settings: getElementSettings(element.id, Object.keys(elementType.propsSchema)) | |
| 381 | - }; | |
| 382 | - }); | |
| 383 | - } | |
| 384 | - | |
| 385 | -//#endregion | |
| 386 | -//#region packages/packages/libs/editor-elements/src/sync/create-element.ts | |
| 387 | - function createElement({ container, model, options }) { | |
| 388 | - return (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/elements/create", { | |
| 389 | - container, | |
| 390 | - model, | |
| 391 | - options: { | |
| 392 | - edit: false, | |
| 393 | - ...options | |
| 394 | - } | |
| 395 | - }); | |
| 396 | - } | |
| 397 | - | |
| 398 | -//#endregion | |
| 399 | -//#region packages/packages/libs/editor-elements/src/sync/delete-element.ts | |
| 400 | - function deleteElement({ container, options = {} }) { | |
| 401 | - (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/elements/delete", { | |
| 402 | - container, | |
| 403 | - options | |
| 404 | - }); | |
| 405 | - } | |
| 406 | - | |
| 407 | -//#endregion | |
| 408 | -//#region packages/packages/libs/editor-elements/src/sync/create-elements.ts | |
| 409 | - var createElements = ({ elements, title, subtitle = (0, _wordpress_i18n.__)("Item added", "elementor") }) => { | |
| 410 | - return (0, _elementor_editor_v1_adapters.undoable)({ | |
| 411 | - do: ({ elements: elementsParam }) => { | |
| 412 | - const createdElements = []; | |
| 413 | - elementsParam.forEach(({ container, options, ...elementParams }) => { | |
| 414 | - const parentContainer = container.lookup?.() ?? container; | |
| 415 | - if (!parentContainer) throw new Error("Parent container not found"); | |
| 416 | - const element = createElement({ | |
| 417 | - container: parentContainer, | |
| 418 | - ...elementParams, | |
| 419 | - options: { | |
| 420 | - ...options, | |
| 421 | - useHistory: false | |
| 422 | - } | |
| 423 | - }); | |
| 424 | - createdElements.push({ | |
| 425 | - container: element, | |
| 426 | - parentContainer, | |
| 427 | - model: element.model?.toJSON() || {}, | |
| 428 | - options, | |
| 429 | - containerId: element.id, | |
| 430 | - parentContainerId: parentContainer.id | |
| 431 | - }); | |
| 432 | - }); | |
| 433 | - return { createdElements }; | |
| 434 | - }, | |
| 435 | - undo: (_, { createdElements }) => { | |
| 436 | - [...createdElements].reverse().forEach(({ container, containerId, parentContainerId }) => { | |
| 437 | - const freshContainer = resolveContainer(container, containerId); | |
| 438 | - if (freshContainer) { | |
| 439 | - deleteElement({ | |
| 440 | - container: freshContainer, | |
| 441 | - options: { useHistory: false } | |
| 442 | - }); | |
| 443 | - return; | |
| 444 | - } | |
| 445 | - removeModelFromParent(parentContainerId, containerId); | |
| 446 | - }); | |
| 447 | - }, | |
| 448 | - redo: (_, { createdElements }) => { | |
| 449 | - const newElements = []; | |
| 450 | - createdElements.forEach(({ parentContainer, parentContainerId, model, options }) => { | |
| 451 | - const freshParent = resolveContainer(parentContainer, parentContainerId); | |
| 452 | - if (freshParent) { | |
| 453 | - const element = createElement({ | |
| 454 | - container: freshParent, | |
| 455 | - model, | |
| 456 | - options: { | |
| 457 | - ...options, | |
| 458 | - useHistory: false | |
| 459 | - } | |
| 460 | - }); | |
| 461 | - newElements.push({ | |
| 462 | - container: element, | |
| 463 | - parentContainer: freshParent, | |
| 464 | - model: element.model.toJSON(), | |
| 465 | - options, | |
| 466 | - containerId: element.id, | |
| 467 | - parentContainerId: freshParent.id | |
| 468 | - }); | |
| 469 | - return; | |
| 470 | - } | |
| 471 | - addModelToParent(parentContainerId, model); | |
| 472 | - newElements.push({ | |
| 473 | - container: parentContainer, | |
| 474 | - parentContainer, | |
| 475 | - model, | |
| 476 | - options, | |
| 477 | - containerId: model.id ?? "", | |
| 478 | - parentContainerId | |
| 479 | - }); | |
| 480 | - }); | |
| 481 | - return { createdElements: newElements }; | |
| 482 | - } | |
| 483 | - }, { | |
| 484 | - title, | |
| 485 | - subtitle | |
| 486 | - })({ elements }); | |
| 487 | - }; | |
| 488 | - | |
| 489 | -//#endregion | |
| 490 | -//#region packages/packages/libs/editor-elements/src/sync/drop-element.ts | |
| 491 | - function dropElement({ containerId, model, options }) { | |
| 492 | - const container = getContainer(containerId); | |
| 493 | - if (!container) throw new Error(`Container with ID "${containerId}" not found`); | |
| 494 | - return (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("preview/drop", { | |
| 495 | - container, | |
| 496 | - model, | |
| 497 | - options | |
| 498 | - }); | |
| 499 | - } | |
| 500 | - | |
| 501 | -//#endregion | |
| 502 | -//#region packages/packages/libs/editor-elements/src/sync/duplicate-element.ts | |
| 503 | - function duplicateElement({ element, options = {} }) { | |
| 504 | - const currentIndex = element.view?._index ?? 0; | |
| 505 | - return (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/elements/duplicate", { | |
| 506 | - container: element, | |
| 507 | - options: { | |
| 508 | - at: options.clone !== false ? currentIndex + 1 : void 0, | |
| 509 | - edit: false, | |
| 510 | - ...options | |
| 511 | - } | |
| 512 | - }); | |
| 513 | - } | |
| 514 | - | |
| 515 | -//#endregion | |
| 516 | -//#region packages/packages/libs/editor-elements/src/sync/duplicate-elements.ts | |
| 517 | - var duplicateElements = ({ elementIds, title, subtitle = (0, _wordpress_i18n.__)("Item duplicated", "elementor"), onDuplicateElements, onRestoreElements }) => { | |
| 518 | - return (0, _elementor_editor_v1_adapters.undoable)({ | |
| 519 | - do: ({ elementIds: elementIdsToDuplicate }) => { | |
| 520 | - onDuplicateElements?.(); | |
| 521 | - const duplicatedElements = []; | |
| 522 | - elementIdsToDuplicate.forEach((elementId) => { | |
| 523 | - const originalContainer = getContainer(elementId); | |
| 524 | - if (!originalContainer?.parent) return; | |
| 525 | - const duplicatedElement = duplicateElement({ | |
| 526 | - element: originalContainer, | |
| 527 | - options: { useHistory: false } | |
| 528 | - }); | |
| 529 | - if (!duplicatedElement.parent) return; | |
| 530 | - duplicatedElements.push({ | |
| 531 | - container: duplicatedElement, | |
| 532 | - parentContainer: duplicatedElement.parent, | |
| 533 | - model: duplicatedElement.model.toJSON(), | |
| 534 | - at: duplicatedElement.view?._index, | |
| 535 | - containerId: duplicatedElement.id, | |
| 536 | - parentContainerId: duplicatedElement.parent.id | |
| 537 | - }); | |
| 538 | - }); | |
| 539 | - return { duplicatedElements }; | |
| 540 | - }, | |
| 541 | - undo: (_, { duplicatedElements }) => { | |
| 542 | - onRestoreElements?.(); | |
| 543 | - [...duplicatedElements].reverse().forEach(({ container, containerId, parentContainerId }) => { | |
| 544 | - const freshContainer = resolveContainer(container, containerId); | |
| 545 | - if (freshContainer) { | |
| 546 | - deleteElement({ | |
| 547 | - container: freshContainer, | |
| 548 | - options: { useHistory: false } | |
| 549 | - }); | |
| 550 | - return; | |
| 551 | - } | |
| 552 | - removeModelFromParent(parentContainerId, containerId); | |
| 553 | - }); | |
| 554 | - }, | |
| 555 | - redo: (_, { duplicatedElements: previousElements }) => { | |
| 556 | - onDuplicateElements?.(); | |
| 557 | - const duplicatedElements = []; | |
| 558 | - previousElements.forEach(({ parentContainer, parentContainerId, model, at }) => { | |
| 559 | - const freshParent = resolveContainer(parentContainer, parentContainerId); | |
| 560 | - if (freshParent) { | |
| 561 | - const createdElement = createElement({ | |
| 562 | - container: freshParent, | |
| 563 | - model, | |
| 564 | - options: { | |
| 565 | - useHistory: false, | |
| 566 | - clone: false, | |
| 567 | - at | |
| 568 | - } | |
| 569 | - }); | |
| 570 | - duplicatedElements.push({ | |
| 571 | - container: createdElement, | |
| 572 | - parentContainer: freshParent, | |
| 573 | - model, | |
| 574 | - at, | |
| 575 | - containerId: createdElement.id, | |
| 576 | - parentContainerId: freshParent.id | |
| 577 | - }); | |
| 578 | - return; | |
| 579 | - } | |
| 580 | - addModelToParent(parentContainerId, model, { at }); | |
| 581 | - duplicatedElements.push({ | |
| 582 | - container: parentContainer, | |
| 583 | - parentContainer, | |
| 584 | - model, | |
| 585 | - at, | |
| 586 | - containerId: model.id ?? "", | |
| 587 | - parentContainerId | |
| 588 | - }); | |
| 589 | - }); | |
| 590 | - return { duplicatedElements }; | |
| 591 | - } | |
| 592 | - }, { | |
| 593 | - title, | |
| 594 | - subtitle | |
| 595 | - })({ elementIds }); | |
| 596 | - }; | |
| 597 | - | |
| 598 | -//#endregion | |
| 599 | -//#region packages/packages/libs/editor-elements/src/sync/get-preview-element-dom.ts | |
| 600 | - function getPreviewElementDOM(id) { | |
| 601 | - try { | |
| 602 | - const fromContainer = getContainer(id)?.view?.el; | |
| 603 | - if (fromContainer) return fromContainer; | |
| 604 | - return queryPreviewDOMByElementId(id); | |
| 605 | - } catch { | |
| 606 | - return null; | |
| 607 | - } | |
| 608 | - } | |
| 609 | - function queryPreviewDOMByElementId(id) { | |
| 610 | - const previewDocument = window.elementor?.getPreviewContainer?.()?.view?.el?.ownerDocument; | |
| 611 | - if (!previewDocument) return null; | |
| 612 | - return previewDocument.querySelector(`[data-id="${id}"]`); | |
| 613 | - } | |
| 614 | - | |
| 615 | -//#endregion | |
| 616 | -//#region packages/packages/libs/editor-elements/src/sync/get-current-document-container.ts | |
| 617 | - function getCurrentDocumentContainer() { | |
| 618 | - return window.elementor?.documents?.getCurrent?.()?.container ?? null; | |
| 619 | - } | |
| 620 | - | |
| 621 | -//#endregion | |
| 622 | -//#region packages/packages/libs/editor-elements/src/sync/get-current-document-id.ts | |
| 623 | - function getCurrentDocumentId() { | |
| 624 | - const extendedWindow = window; | |
| 625 | - try { | |
| 626 | - return extendedWindow.elementor?.documents?.getCurrentId?.() ?? null; | |
| 627 | - } catch { | |
| 628 | - return null; | |
| 629 | - } | |
| 630 | - } | |
| 631 | - | |
| 632 | -//#endregion | |
| 633 | -//#region packages/packages/libs/editor-elements/src/sync/get-element-icon.ts | |
| 634 | - function getElementIcon(elementId) { | |
| 635 | - const container = getContainer(elementId); | |
| 636 | - const type = container?.model.get("widgetType") || container?.model.get("elType"); | |
| 637 | - if (!type) return null; | |
| 638 | - return getWidgetsCache()?.[type]?.icon ?? null; | |
| 639 | - } | |
| 640 | - | |
| 641 | -//#endregion | |
| 642 | -//#region packages/packages/libs/editor-elements/src/errors.ts | |
| 643 | - var ElementNotFoundError = (0, _elementor_utils.createError)({ | |
| 644 | - code: "element_not_found", | |
| 645 | - message: "Element not found." | |
| 646 | - }); | |
| 647 | - var StyleNotFoundError = (0, _elementor_utils.createError)({ | |
| 648 | - code: "style_not_found", | |
| 649 | - message: "Style not found." | |
| 650 | - }); | |
| 651 | - var ElementTypeNotExistsError = (0, _elementor_utils.createError)({ | |
| 652 | - code: "element_type_not_exists", | |
| 653 | - message: "Element type does not exist." | |
| 654 | - }); | |
| 655 | - var ElementLabelNotExistsError = (0, _elementor_utils.createError)({ | |
| 656 | - code: "element_label_not_exists", | |
| 657 | - message: "Element label does not exist." | |
| 658 | - }); | |
| 659 | - var ElementParentNotFoundError = (0, _elementor_utils.createError)({ | |
| 660 | - code: "element_parent_not_found", | |
| 661 | - message: "Element parent not found." | |
| 662 | - }); | |
| 663 | - var ElementIndexNotFoundError = (0, _elementor_utils.createError)({ | |
| 664 | - code: "element_index_not_found", | |
| 665 | - message: "Element index not found." | |
| 666 | - }); | |
| 667 | - | |
| 668 | -//#endregion | |
| 669 | -//#region packages/packages/libs/editor-elements/src/sync/get-element-label.ts | |
| 670 | - function getElementLabel(elementId) { | |
| 671 | - if (!elementId) elementId = getSelectedElements()?.[0]?.id; | |
| 672 | - const container = getContainer(elementId); | |
| 673 | - const type = container?.model.get("widgetType") || container?.model.get("elType"); | |
| 674 | - if (!type) throw new ElementTypeNotExistsError({ context: { elementId } }); | |
| 675 | - const label = getWidgetsCache()?.[type]?.title; | |
| 676 | - if (!label) throw new ElementLabelNotExistsError({ context: { elementType: type } }); | |
| 677 | - return label; | |
| 678 | - } | |
| 679 | - | |
| 680 | -//#endregion | |
| 681 | -//#region packages/packages/libs/editor-elements/src/sync/get-element-title.ts | |
| 682 | - function extractString(value) { | |
| 683 | - if (typeof value === "string") return value || null; | |
| 684 | - if (value && typeof value === "object" && "value" in value && typeof value.value === "string") return value.value || null; | |
| 685 | - return null; | |
| 686 | - } | |
| 687 | - function getElementTitle(elementId) { | |
| 688 | - const editorTitle = extractString(getElementEditorSettings(elementId)?.title); | |
| 689 | - if (editorTitle) return editorTitle; | |
| 690 | - const legacyTitle = extractString(getElementSetting(elementId, "_title")); | |
| 691 | - if (legacyTitle) return legacyTitle; | |
| 692 | - const presetTitle = extractString(getElementSetting(elementId, "presetTitle")); | |
| 693 | - if (presetTitle) return presetTitle; | |
| 694 | - try { | |
| 695 | - return getElementLabel(elementId); | |
| 696 | - } catch { | |
| 697 | - return null; | |
| 698 | - } | |
| 699 | - } | |
| 700 | - | |
| 701 | -//#endregion | |
| 702 | -//#region packages/packages/libs/editor-elements/src/sync/get-element-styles.ts | |
| 703 | - var getElementStyles = (elementID) => { | |
| 704 | - return getContainer(elementID)?.model.get("styles") || null; | |
| 705 | - }; | |
| 706 | - | |
| 707 | -//#endregion | |
| 708 | -//#region packages/packages/libs/editor-elements/src/sync/get-all-descendants.ts | |
| 709 | - function getAllDescendants(container) { | |
| 710 | - return [container, ...(container.children ?? []).flatMap((child) => getAllDescendants(child))]; | |
| 711 | - } | |
| 712 | - | |
| 713 | -//#endregion | |
| 714 | -//#region packages/packages/libs/editor-elements/src/sync/get-elements.ts | |
| 715 | - function getElements(root) { | |
| 716 | - const container = root ? getContainer(root) : getCurrentDocumentContainer(); | |
| 717 | - if (!container) return []; | |
| 718 | - return [container, ...[...container.model.get("elements") ?? []].flatMap((childModel) => getElements(childModel.get("id")))]; | |
| 719 | - } | |
| 720 | - | |
| 721 | -//#endregion | |
| 722 | -//#region packages/packages/libs/editor-elements/src/sync/move-element.ts | |
| 723 | - function moveElement({ element, targetContainer, options = {} }) { | |
| 724 | - const resolvedElement = element.lookup?.(); | |
| 725 | - const resolvedTarget = targetContainer.lookup?.(); | |
| 726 | - if (!resolvedElement) throw new Error(`Element not found: ${element.id}`); | |
| 727 | - if (!resolvedTarget) throw new Error(`Target container not found: ${targetContainer.id}`); | |
| 728 | - const modelToRecreate = resolvedElement.model.toJSON(); | |
| 729 | - deleteElement({ | |
| 730 | - container: resolvedElement, | |
| 731 | - options: { | |
| 732 | - ...options, | |
| 733 | - useHistory: false | |
| 734 | - } | |
| 735 | - }); | |
| 736 | - return createElement({ | |
| 737 | - container: resolvedTarget, | |
| 738 | - model: modelToRecreate, | |
| 739 | - options: { | |
| 740 | - edit: false, | |
| 741 | - ...options, | |
| 742 | - useHistory: false | |
| 743 | - } | |
| 744 | - }); | |
| 745 | - } | |
| 746 | - | |
| 747 | -//#endregion | |
| 748 | -//#region packages/packages/libs/editor-elements/src/sync/move-elements.ts | |
| 749 | - var moveElements = ({ moves: movesToMake, title, subtitle = (0, _wordpress_i18n.__)("Elements moved", "elementor"), onMoveElements, onRestoreElements }) => { | |
| 750 | - return (0, _elementor_editor_v1_adapters.undoable)({ | |
| 751 | - do: ({ moves }) => { | |
| 752 | - const movedElements = []; | |
| 753 | - onMoveElements?.(); | |
| 754 | - moves.forEach(({ element, targetContainer, options }) => { | |
| 755 | - const sourceElement = element.lookup?.() ?? element; | |
| 756 | - const target = targetContainer.lookup?.() ?? targetContainer; | |
| 757 | - if (!sourceElement) throw new Error("Element not found"); | |
| 758 | - if (!target) throw new Error("Target container not found"); | |
| 759 | - if (!sourceElement.parent) throw new Error("Element has no parent container"); | |
| 760 | - const originalContainer = sourceElement.parent; | |
| 761 | - const originalIndex = originalContainer.children?.indexOf(sourceElement) ?? -1; | |
| 762 | - const newElement = moveElement({ | |
| 763 | - element: sourceElement, | |
| 764 | - targetContainer: target, | |
| 765 | - options: { | |
| 766 | - ...options, | |
| 767 | - useHistory: false | |
| 768 | - } | |
| 769 | - }); | |
| 770 | - movedElements.push({ | |
| 771 | - element: newElement, | |
| 772 | - originalContainer, | |
| 773 | - originalIndex, | |
| 774 | - targetContainer: target, | |
| 775 | - options, | |
| 776 | - elementId: newElement.id, | |
| 777 | - originalContainerId: originalContainer.id, | |
| 778 | - targetContainerId: target.id | |
| 779 | - }); | |
| 780 | - }); | |
| 781 | - return { movedElements }; | |
| 782 | - }, | |
| 783 | - undo: (_, { movedElements }) => { | |
| 784 | - onRestoreElements?.(); | |
| 785 | - [...movedElements].reverse().forEach(({ element, elementId, originalContainer, originalContainerId, originalIndex }) => { | |
| 786 | - const freshElement = resolveContainer(element, elementId); | |
| 787 | - const freshOriginalContainer = resolveContainer(originalContainer, originalContainerId); | |
| 788 | - if (!freshElement || !freshOriginalContainer) return; | |
| 789 | - moveElement({ | |
| 790 | - element: freshElement, | |
| 791 | - targetContainer: freshOriginalContainer, | |
| 792 | - options: { | |
| 793 | - useHistory: false, | |
| 794 | - at: originalIndex >= 0 ? originalIndex : void 0 | |
| 795 | - } | |
| 796 | - }); | |
| 797 | - }); | |
| 798 | - }, | |
| 799 | - redo: (_, { movedElements }) => { | |
| 800 | - const newMovedElements = []; | |
| 801 | - onMoveElements?.(); | |
| 802 | - movedElements.forEach(({ element, elementId, originalContainer, originalContainerId, originalIndex, targetContainer, targetContainerId, options }) => { | |
| 803 | - const freshElement = resolveContainer(element, elementId); | |
| 804 | - const freshOriginalContainer = resolveContainer(originalContainer, originalContainerId); | |
| 805 | - const freshTarget = resolveContainer(targetContainer, targetContainerId); | |
| 806 | - if (!freshElement || !freshOriginalContainer || !freshTarget) return; | |
| 807 | - const newElement = moveElement({ | |
| 808 | - element: freshElement, | |
| 809 | - targetContainer: freshTarget, | |
| 810 | - options: { | |
| 811 | - ...options, | |
| 812 | - useHistory: false | |
| 813 | - } | |
| 814 | - }); | |
| 815 | - newMovedElements.push({ | |
| 816 | - element: newElement, | |
| 817 | - originalContainer: freshOriginalContainer, | |
| 818 | - originalIndex, | |
| 819 | - targetContainer: freshTarget, | |
| 820 | - options, | |
| 821 | - elementId: newElement.id, | |
| 822 | - originalContainerId: freshOriginalContainer.id, | |
| 823 | - targetContainerId: freshTarget.id | |
| 824 | - }); | |
| 825 | - }); | |
| 826 | - return { movedElements: newMovedElements }; | |
| 827 | - } | |
| 828 | - }, { | |
| 829 | - title, | |
| 830 | - subtitle | |
| 831 | - })({ moves: movesToMake }); | |
| 832 | - }; | |
| 833 | - | |
| 834 | -//#endregion | |
| 835 | -//#region packages/packages/libs/editor-elements/src/sync/remove-elements.ts | |
| 836 | - var removeElements = ({ elementIds, title, subtitle = (0, _wordpress_i18n.__)("Item removed", "elementor"), onRemoveElements, onRestoreElements }) => { | |
| 837 | - return (0, _elementor_editor_v1_adapters.undoable)({ | |
| 838 | - do: ({ elementIds: elementIdsParam }) => { | |
| 839 | - const removedElements = []; | |
| 840 | - elementIdsParam.forEach((elementId) => { | |
| 841 | - const container = getContainer(elementId); | |
| 842 | - if (container?.parent) removedElements.push({ | |
| 843 | - container, | |
| 844 | - parent: container.parent, | |
| 845 | - model: container.model.toJSON(), | |
| 846 | - at: container.view?._index ?? 0, | |
| 847 | - containerId: container.id, | |
| 848 | - parentId: container.parent.id | |
| 849 | - }); | |
| 850 | - }); | |
| 851 | - onRemoveElements?.(); | |
| 852 | - removedElements.forEach(({ container }) => { | |
| 853 | - deleteElement({ | |
| 854 | - container, | |
| 855 | - options: { useHistory: false } | |
| 856 | - }); | |
| 857 | - }); | |
| 858 | - return { removedElements }; | |
| 859 | - }, | |
| 860 | - undo: (_, { removedElements }) => { | |
| 861 | - onRestoreElements?.(); | |
| 862 | - [...removedElements].reverse().forEach(({ parent, parentId, model, at }) => { | |
| 863 | - const freshParent = resolveContainer(parent, parentId); | |
| 864 | - if (freshParent) { | |
| 865 | - createElement({ | |
| 866 | - container: freshParent, | |
| 867 | - model, | |
| 868 | - options: { | |
| 869 | - useHistory: false, | |
| 870 | - at | |
| 871 | - } | |
| 872 | - }); | |
| 873 | - return; | |
| 874 | - } | |
| 875 | - addModelToParent(parentId, model, { at }); | |
| 876 | - }); | |
| 877 | - }, | |
| 878 | - redo: (_, { removedElements }) => { | |
| 879 | - onRemoveElements?.(); | |
| 880 | - const newRemovedElements = []; | |
| 881 | - removedElements.forEach(({ container, parent, model, at, containerId, parentId }) => { | |
| 882 | - const freshContainer = resolveContainer(container, containerId); | |
| 883 | - const freshParent = resolveContainer(parent, parentId); | |
| 884 | - if (freshContainer && freshParent) { | |
| 885 | - deleteElement({ | |
| 886 | - container: freshContainer, | |
| 887 | - options: { useHistory: false } | |
| 888 | - }); | |
| 889 | - newRemovedElements.push({ | |
| 890 | - container: freshContainer, | |
| 891 | - parent: freshParent, | |
| 892 | - model, | |
| 893 | - at, | |
| 894 | - containerId, | |
| 895 | - parentId | |
| 896 | - }); | |
| 897 | - return; | |
| 898 | - } | |
| 899 | - removeModelFromParent(parentId, containerId); | |
| 900 | - newRemovedElements.push({ | |
| 901 | - container, | |
| 902 | - parent, | |
| 903 | - model, | |
| 904 | - at, | |
| 905 | - containerId, | |
| 906 | - parentId | |
| 907 | - }); | |
| 908 | - }); | |
| 909 | - return { removedElements: newRemovedElements }; | |
| 910 | - } | |
| 911 | - }, { | |
| 912 | - title, | |
| 913 | - subtitle | |
| 914 | - })({ elementIds }); | |
| 915 | - }; | |
| 916 | - | |
| 917 | -//#endregion | |
| 918 | -//#region packages/packages/libs/editor-elements/src/sync/replace-element.ts | |
| 919 | - var replaceElement = ({ currentElementId, newElement, withHistory = true }) => { | |
| 920 | - const currentElementContainer = getContainer(currentElementId); | |
| 921 | - if (!currentElementContainer) throw new ElementNotFoundError({ context: { elementId: currentElementId } }); | |
| 922 | - const { container, index } = getNewElementContainer(currentElementContainer, newElement); | |
| 923 | - const newElementInstance = createElement({ | |
| 924 | - container, | |
| 925 | - model: newElement, | |
| 926 | - options: { | |
| 927 | - at: index, | |
| 928 | - useHistory: withHistory | |
| 929 | - } | |
| 930 | - }); | |
| 931 | - deleteElement({ | |
| 932 | - container: currentElementContainer, | |
| 933 | - options: { useHistory: withHistory } | |
| 934 | - }); | |
| 935 | - return newElementInstance; | |
| 936 | - }; | |
| 937 | - function getNewElementContainer(currentElementContainer, newElement) { | |
| 938 | - const { parent } = currentElementContainer; | |
| 939 | - if (!parent) throw new ElementParentNotFoundError({ context: { elementId: currentElementContainer.id } }); | |
| 940 | - const elementIndex = currentElementContainer.view?._index ?? 0; | |
| 941 | - if (elementIndex === -1) throw new ElementIndexNotFoundError({ context: { elementId: currentElementContainer.id } }); | |
| 942 | - let location = { | |
| 943 | - container: parent, | |
| 944 | - index: elementIndex | |
| 945 | - }; | |
| 946 | - if (parent.id === "document" && newElement.elType === "widget") location = createWrapperForWidget(parent, elementIndex); | |
| 947 | - return location; | |
| 948 | - } | |
| 949 | - var DEFAULT_CONTAINER_TYPE = "e-flexbox"; | |
| 950 | - function createWrapperForWidget(parent, elementIndex) { | |
| 951 | - return { | |
| 952 | - container: createElement({ | |
| 953 | - container: parent, | |
| 954 | - model: { elType: DEFAULT_CONTAINER_TYPE }, | |
| 955 | - options: { | |
| 956 | - at: elementIndex, | |
| 957 | - useHistory: false | |
| 958 | - } | |
| 959 | - }), | |
| 960 | - index: 0 | |
| 961 | - }; | |
| 962 | - } | |
| 963 | - | |
| 964 | -//#endregion | |
| 965 | -//#region packages/packages/libs/editor-elements/src/sync/update-element-editor-settings.ts | |
| 966 | - var updateElementEditorSettings = ({ elementId, settings }) => { | |
| 967 | - const element = getContainer(elementId); | |
| 968 | - if (!element) throw new Error(`Element with id ${elementId} not found`); | |
| 969 | - const editorSettings = element.model.get("editor_settings") ?? {}; | |
| 970 | - element.model.set("editor_settings", { | |
| 971 | - ...editorSettings, | |
| 972 | - ...settings | |
| 973 | - }); | |
| 974 | - (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/save/set-is-modified", { status: true }, { internal: true }); | |
| 975 | - }; | |
| 976 | - | |
| 977 | -//#endregion | |
| 978 | -//#region packages/packages/libs/editor-elements/src/sync/update-element-settings.ts | |
| 979 | - var updateElementSettings = ({ id, props, withHistory = true }) => { | |
| 980 | - const container = getContainer(id); | |
| 981 | - if (!container) return; | |
| 982 | - const args = { | |
| 983 | - container, | |
| 984 | - settings: { ...props } | |
| 985 | - }; | |
| 986 | - if (withHistory) (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/elements/settings", args); | |
| 987 | - else (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/elements/set-settings", args, { internal: true }); | |
| 988 | - }; | |
| 989 | - | |
| 990 | -//#endregion | |
| 991 | -//#region packages/packages/libs/editor-elements/src/link-restriction.ts | |
| 992 | - var ANCHOR_SELECTOR = "a, [data-action-link]"; | |
| 993 | - function getLinkInLinkRestriction(elementId, resolvedValue) { | |
| 994 | - const anchoredDescendantId = getAnchoredDescendantId(elementId); | |
| 995 | - if (anchoredDescendantId) return { | |
| 996 | - shouldRestrict: true, | |
| 997 | - reason: "descendant", | |
| 998 | - elementId: anchoredDescendantId | |
| 999 | - }; | |
| 1000 | - if (checkForInlineLink(elementId, resolvedValue)) return { | |
| 1001 | - shouldRestrict: true, | |
| 1002 | - reason: "descendant", | |
| 1003 | - elementId | |
| 1004 | - }; | |
| 1005 | - const ancestor = getAnchoredAncestorId(elementId); | |
| 1006 | - if (ancestor) return { | |
| 1007 | - shouldRestrict: true, | |
| 1008 | - reason: "ancestor", | |
| 1009 | - elementId: ancestor | |
| 1010 | - }; | |
| 1011 | - return { shouldRestrict: false }; | |
| 1012 | - } | |
| 1013 | - function getAnchoredDescendantId(elementId) { | |
| 1014 | - const element = getElementDOM(elementId); | |
| 1015 | - if (!element) return null; | |
| 1016 | - for (const childAnchorElement of Array.from(element.querySelectorAll(ANCHOR_SELECTOR))) { | |
| 1017 | - const childElementId = findElementIdOf(childAnchorElement); | |
| 1018 | - if (childElementId !== elementId) return childElementId; | |
| 1019 | - } | |
| 1020 | - return null; | |
| 1021 | - } | |
| 1022 | - function getAnchoredAncestorId(elementId) { | |
| 1023 | - const element = getElementDOM(elementId); | |
| 1024 | - if (!element || element.parentElement === null) return null; | |
| 1025 | - const parentAnchor = element.parentElement.closest(ANCHOR_SELECTOR); | |
| 1026 | - return parentAnchor ? findElementIdOf(parentAnchor) : null; | |
| 1027 | - } | |
| 1028 | - function isElementAnchored(elementId) { | |
| 1029 | - const element = getElementDOM(elementId); | |
| 1030 | - if (!element) return false; | |
| 1031 | - if (element.matches(ANCHOR_SELECTOR)) return true; | |
| 1032 | - return doesElementContainAnchor(element); | |
| 1033 | - } | |
| 1034 | - function doesElementContainAnchor(element) { | |
| 1035 | - for (const child of Array.from(element.children)) { | |
| 1036 | - if (isElementorElement(child)) continue; | |
| 1037 | - if (child.matches(ANCHOR_SELECTOR)) return true; | |
| 1038 | - if (doesElementContainAnchor(child)) return true; | |
| 1039 | - } | |
| 1040 | - return false; | |
| 1041 | - } | |
| 1042 | - function findElementIdOf(element) { | |
| 1043 | - return element.closest("[data-id]")?.dataset.id || null; | |
| 1044 | - } | |
| 1045 | - function checkForInlineLink(elementId, resolvedValue) { | |
| 1046 | - const element = getElementDOM(elementId); | |
| 1047 | - if (!element) return false; | |
| 1048 | - if (element.matches(ANCHOR_SELECTOR)) return false; | |
| 1049 | - if ((resolvedValue ?? getElementSetting(elementId, "link")?.value)?.destination) return false; | |
| 1050 | - return element.querySelector(ANCHOR_SELECTOR) !== null; | |
| 1051 | - } | |
| 1052 | - function getElementDOM(id) { | |
| 1053 | - return getPreviewElementDOM(id); | |
| 1054 | - } | |
| 1055 | - function isElementorElement(element) { | |
| 1056 | - return element.hasAttribute("data-id"); | |
| 1057 | - } | |
| 1058 | - | |
| 1059 | -//#endregion | |
| 1060 | -//#region packages/packages/libs/editor-elements/src/styles/consts.ts | |
| 1061 | - var ELEMENT_STYLE_CHANGE_EVENT = "elementor/editor-v2/editor-elements/style"; | |
| 1062 | - var styleRerenderEvents = [ | |
| 1063 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/create"), | |
| 1064 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/duplicate"), | |
| 1065 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/import"), | |
| 1066 | - (0, _elementor_editor_v1_adapters.commandEndEvent)("document/elements/paste"), | |
| 1067 | - (0, _elementor_editor_v1_adapters.windowEvent)(ELEMENT_STYLE_CHANGE_EVENT) | |
| 1068 | - ]; | |
| 1069 | - | |
| 1070 | -//#endregion | |
| 1071 | -//#region packages/packages/libs/editor-elements/src/styles/mutate-element-styles.ts | |
| 1072 | - function mutateElementStyles(elementId, mutator) { | |
| 1073 | - const container = getContainer(elementId); | |
| 1074 | - if (!container) throw new ElementNotFoundError({ context: { elementId } }); | |
| 1075 | - const oldIds = Object.keys(container.model.get("styles") ?? {}); | |
| 1076 | - const styles = mutateStyles(container, mutator); | |
| 1077 | - clearRemovedClasses(container, { | |
| 1078 | - oldIds, | |
| 1079 | - newIds: Object.keys(styles) | |
| 1080 | - }); | |
| 1081 | - notifyChanges(); | |
| 1082 | - return styles; | |
| 1083 | - } | |
| 1084 | - function mutateStyles(container, mutator) { | |
| 1085 | - const styles = structuredClone(container.model.get("styles")) ?? {}; | |
| 1086 | - const entries = Object.entries(mutator(styles)).map(([styleId, style]) => { | |
| 1087 | - style.variants = removeEmptyVariants(style); | |
| 1088 | - return [styleId, style]; | |
| 1089 | - }).filter(([, style]) => { | |
| 1090 | - return !isStyleEmpty(style); | |
| 1091 | - }); | |
| 1092 | - const mutatedStyles = Object.fromEntries(entries); | |
| 1093 | - container.model.set("styles", mutatedStyles); | |
| 1094 | - return mutatedStyles; | |
| 1095 | - } | |
| 1096 | - function removeEmptyVariants(style) { | |
| 1097 | - return style.variants.filter(({ props, custom_css: customCss }) => Object.keys(props).length > 0 || customCss?.raw); | |
| 1098 | - } | |
| 1099 | - function isStyleEmpty(style) { | |
| 1100 | - return style.variants.length === 0; | |
| 1101 | - } | |
| 1102 | - function clearRemovedClasses(container, { oldIds, newIds }) { | |
| 1103 | - const removedIds = oldIds.filter((id) => !newIds.includes(id)); | |
| 1104 | - if (!removedIds.length) return; | |
| 1105 | - const classesProps = structuredClone(getClassesProps(container)); | |
| 1106 | - classesProps.forEach(([, prop]) => { | |
| 1107 | - prop.value = prop.value.filter((value) => !removedIds.includes(value)); | |
| 1108 | - }); | |
| 1109 | - updateElementSettings({ | |
| 1110 | - id: container.id, | |
| 1111 | - props: Object.fromEntries(classesProps), | |
| 1112 | - withHistory: false | |
| 1113 | - }); | |
| 1114 | - } | |
| 1115 | - function getClassesProps(container) { | |
| 1116 | - return Object.entries(container.settings.toJSON()).filter((prop) => { | |
| 1117 | - const [, value] = prop; | |
| 1118 | - return _elementor_editor_props.classesPropTypeUtil.isValid(value); | |
| 1119 | - }); | |
| 1120 | - } | |
| 1121 | - function notifyChanges() { | |
| 1122 | - dispatchChangeEvent(); | |
| 1123 | - (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/save/set-is-modified", { status: true }, { internal: true }); | |
| 1124 | - } | |
| 1125 | - function dispatchChangeEvent() { | |
| 1126 | - window.dispatchEvent(new CustomEvent(ELEMENT_STYLE_CHANGE_EVENT)); | |
| 1127 | - } | |
| 1128 | - | |
| 1129 | -//#endregion | |
| 1130 | -//#region packages/packages/libs/editor-elements/src/styles/create-element-style.ts | |
| 1131 | - function createElementStyle({ styleId, elementId, classesProp, label, meta, props, custom_css: customCss = null, additionalVariants = [] }) { | |
| 1132 | - let id = styleId; | |
| 1133 | - mutateElementStyles(elementId, (styles) => { | |
| 1134 | - id ?? (id = (0, _elementor_editor_styles.generateId)(`e-${elementId}-`, Object.keys(styles))); | |
| 1135 | - const variants = [{ | |
| 1136 | - meta, | |
| 1137 | - props, | |
| 1138 | - custom_css: customCss | |
| 1139 | - }, ...additionalVariants]; | |
| 1140 | - styles[id] = { | |
| 1141 | - id, | |
| 1142 | - label, | |
| 1143 | - type: "class", | |
| 1144 | - variants | |
| 1145 | - }; | |
| 1146 | - addStyleToClassesProp(elementId, classesProp, id); | |
| 1147 | - return styles; | |
| 1148 | - }); | |
| 1149 | - return id; | |
| 1150 | - } | |
| 1151 | - function addStyleToClassesProp(elementId, classesProp, styleId) { | |
| 1152 | - const base = getElementSetting(elementId, classesProp); | |
| 1153 | - const classesPropValue = _elementor_editor_props.classesPropTypeUtil.create((prev) => { | |
| 1154 | - return [...prev ?? [], styleId]; | |
| 1155 | - }, { base }); | |
| 1156 | - updateElementSettings({ | |
| 1157 | - id: elementId, | |
| 1158 | - props: { [classesProp]: classesPropValue }, | |
| 1159 | - withHistory: false | |
| 1160 | - }); | |
| 1161 | - } | |
| 1162 | - function shouldCreateNewLocalStyle(payload) { | |
| 1163 | - return !payload?.styleId && !payload?.provider; | |
| 1164 | - } | |
| 1165 | - | |
| 1166 | -//#endregion | |
| 1167 | -//#region packages/packages/libs/editor-elements/src/styles/delete-element-style.ts | |
| 1168 | - function deleteElementStyle(elementId, styleId) { | |
| 1169 | - mutateElementStyles(elementId, (styles) => { | |
| 1170 | - delete styles[styleId]; | |
| 1171 | - return styles; | |
| 1172 | - }); | |
| 1173 | - } | |
| 1174 | - | |
| 1175 | -//#endregion | |
| 1176 | -//#region packages/packages/libs/editor-elements/src/styles/update-element-style.ts | |
| 1177 | - function updateElementStyle(args) { | |
| 1178 | - mutateElementStyles(args.elementId, (styles) => { | |
| 1179 | - const style = styles[args.styleId]; | |
| 1180 | - if (!style) throw new StyleNotFoundError({ context: { styleId: args.styleId } }); | |
| 1181 | - const variant = (0, _elementor_editor_styles.getVariantByMeta)(style, args.meta); | |
| 1182 | - const customCss = ("custom_css" in args ? args.custom_css : variant?.custom_css) ?? null; | |
| 1183 | - if (variant) { | |
| 1184 | - variant.props = (0, _elementor_editor_props.mergeProps)(variant.props, args.props); | |
| 1185 | - variant.custom_css = customCss?.raw ? customCss : null; | |
| 1186 | - } else style.variants.push({ | |
| 1187 | - meta: args.meta, | |
| 1188 | - props: args.props, | |
| 1189 | - custom_css: customCss | |
| 1190 | - }); | |
| 1191 | - return styles; | |
| 1192 | - }); | |
| 1193 | - } | |
| 1194 | - | |
| 1195 | -//#endregion | |
| 1196 | -//#region packages/packages/libs/editor-elements/src/sync/get-element-interactions.ts | |
| 1197 | - function getElementInteractions(elementId) { | |
| 1198 | - const interactions = getContainer(elementId)?.model?.get("interactions"); | |
| 1199 | - if (typeof interactions === "string") return JSON.parse(interactions); | |
| 1200 | - return interactions; | |
| 1201 | - } | |
| 1202 | - | |
| 1203 | -//#endregion | |
| 1204 | -//#region packages/packages/libs/editor-elements/src/utils/get-default-style-tag-from-preview.ts | |
| 1205 | - var DEFAULT_STYLE_CLASS_PREFIX = "e-default-"; | |
| 1206 | - function parseDefaultStyleTagFromClassList(classList) { | |
| 1207 | - for (const className of classList) if (className.startsWith("e-default-")) return className.slice(10); | |
| 1208 | - return null; | |
| 1209 | - } | |
| 1210 | - function getDefaultStyleTagFromPreviewElement(elementId) { | |
| 1211 | - const renderRoot = getAtomicElementRenderRoot(elementId); | |
| 1212 | - if (!renderRoot) return null; | |
| 1213 | - return parseDefaultStyleTagFromClassList(renderRoot.classList); | |
| 1214 | - } | |
| 1215 | - function getAtomicElementRenderRoot(elementId) { | |
| 1216 | - const view = getContainerView(elementId); | |
| 1217 | - if (view?.getDomElement) { | |
| 1218 | - const domElement = view.getDomElement().get?.(0); | |
| 1219 | - if (domElement) return domElement; | |
| 1220 | - } | |
| 1221 | - const wrapper = view?.el ?? getPreviewElementDOM(elementId); | |
| 1222 | - if (!wrapper) return null; | |
| 1223 | - if (wrapper.hasAttribute("data-id")) return wrapper; | |
| 1224 | - const firstChild = wrapper.firstElementChild; | |
| 1225 | - if (firstChild instanceof HTMLElement) return firstChild; | |
| 1226 | - return wrapper; | |
| 1227 | - } | |
| 1228 | - function getContainerView(elementId) { | |
| 1229 | - return getContainer(elementId)?.view ?? null; | |
| 1230 | - } | |
| 1231 | - | |
| 1232 | -//#endregion | |
| 1233 | -//#region packages/packages/libs/editor-elements/src/sync/update-element-interactions.ts | |
| 1234 | - var updateElementInteractions = ({ elementId, interactions }) => { | |
| 1235 | - const element = getContainer(elementId); | |
| 1236 | - if (!element) throw new Error(`Element with id ${elementId} not found`); | |
| 1237 | - element.model.set("interactions", interactions); | |
| 1238 | - window.dispatchEvent(new CustomEvent("elementor/element/update_interactions")); | |
| 1239 | - (0, _elementor_editor_v1_adapters.__privateRunCommandSync)("document/save/set-is-modified", { status: true }, { internal: true }); | |
| 1240 | - }; | |
| 1241 | - var playElementInteractions = (elementId, interactionId) => { | |
| 1242 | - window.top?.dispatchEvent(new CustomEvent("atomic/play_interactions", { detail: { | |
| 1243 | - elementId, | |
| 1244 | - interactionId | |
| 1245 | - } })); | |
| 1246 | - }; | |
| 1247 | - | |
| 1248 | -//#endregion | |
| 1249 | -//#region packages/packages/libs/editor-elements/src/index.ts | |
| 1250 | - var src_exports = /* @__PURE__ */ __exportAll({ | |
| 1251 | - DEFAULT_STYLE_CLASS_PREFIX: () => DEFAULT_STYLE_CLASS_PREFIX, | |
| 1252 | - ELEMENT_STYLE_CHANGE_EVENT: () => ELEMENT_STYLE_CHANGE_EVENT, | |
| 1253 | - addModelToParent: () => addModelToParent, | |
| 1254 | - bindSettingsReconcile: () => bindSettingsReconcile, | |
| 1255 | - createElement: () => createElement, | |
| 1256 | - createElementStyle: () => createElementStyle, | |
| 1257 | - createElements: () => createElements, | |
| 1258 | - deleteElement: () => deleteElement, | |
| 1259 | - deleteElementStyle: () => deleteElementStyle, | |
| 1260 | - dropElement: () => dropElement, | |
| 1261 | - duplicateElement: () => duplicateElement, | |
| 1262 | - duplicateElements: () => duplicateElements, | |
| 1263 | - evaluateWhen: () => evaluateWhen, | |
| 1264 | - findChildRecursive: () => findChildRecursive, | |
| 1265 | - findModelInDocument: () => findModelInDocument, | |
| 1266 | - generateElementId: () => generateElementId, | |
| 1267 | - getAllDescendants: () => getAllDescendants, | |
| 1268 | - getAnchoredAncestorId: () => getAnchoredAncestorId, | |
| 1269 | - getAnchoredDescendantId: () => getAnchoredDescendantId, | |
| 1270 | - getContainer: () => getContainer, | |
| 1271 | - getCurrentDocumentContainer: () => getCurrentDocumentContainer, | |
| 1272 | - getCurrentDocumentId: () => getCurrentDocumentId, | |
| 1273 | - getDefaultStyleTagFromPreviewElement: () => getDefaultStyleTagFromPreviewElement, | |
| 1274 | - getElementChildrenWithFallback: () => getElementChildren, | |
| 1275 | - getElementEditorSettings: () => getElementEditorSettings, | |
| 1276 | - getElementIcon: () => getElementIcon, | |
| 1277 | - getElementInteractions: () => getElementInteractions, | |
| 1278 | - getElementLabel: () => getElementLabel, | |
| 1279 | - getElementSetting: () => getElementSetting, | |
| 1280 | - getElementSettings: () => getElementSettings, | |
| 1281 | - getElementStyles: () => getElementStyles, | |
| 1282 | - getElementTitle: () => getElementTitle, | |
| 1283 | - getElementType: () => getElementType, | |
| 1284 | - getElements: () => getElements, | |
| 1285 | - getLinkInLinkRestriction: () => getLinkInLinkRestriction, | |
| 1286 | - getPreviewElementDOM: () => getPreviewElementDOM, | |
| 1287 | - getSelectedElements: () => getSelectedElements, | |
| 1288 | - getWidgetsCache: () => getWidgetsCache, | |
| 1289 | - isElementAnchored: () => isElementAnchored, | |
| 1290 | - moveElement: () => moveElement, | |
| 1291 | - moveElements: () => moveElements, | |
| 1292 | - parseDefaultStyleTagFromClassList: () => parseDefaultStyleTagFromClassList, | |
| 1293 | - playElementInteractions: () => playElementInteractions, | |
| 1294 | - reconcileInitialChildren: () => reconcileInitialChildren, | |
| 1295 | - removeElements: () => removeElements, | |
| 1296 | - removeModelFromParent: () => removeModelFromParent, | |
| 1297 | - replaceElement: () => replaceElement, | |
| 1298 | - resolveContainer: () => resolveContainer, | |
| 1299 | - resolveInsertIndex: () => resolveInsertIndex, | |
| 1300 | - selectElement: () => selectElement, | |
| 1301 | - shouldCreateNewLocalStyle: () => shouldCreateNewLocalStyle, | |
| 1302 | - styleRerenderEvents: () => styleRerenderEvents, | |
| 1303 | - updateElementEditorSettings: () => updateElementEditorSettings, | |
| 1304 | - updateElementInteractions: () => updateElementInteractions, | |
| 1305 | - updateElementSettings: () => updateElementSettings, | |
| 1306 | - updateElementStyle: () => updateElementStyle, | |
| 1307 | - useElementChildren: () => useElementChildren, | |
| 1308 | - useElementEditorSettings: () => useElementEditorSettings, | |
| 1309 | - useParentElement: () => useParentElement, | |
| 1310 | - useSelectedElement: () => useSelectedElement, | |
| 1311 | - useSelectedElementSettings: () => useSelectedElementSettings | |
| 1312 | - }); | |
| 1313 | - | |
| 1314 | -//#endregion | |
| 1315 | -//#region \0elementor-package-library-entry | |
| 1316 | - (window.elementorV2 = window.elementorV2 || {}).editorElements = src_exports; | |
| 1317 | - | |
| 1318 | -//#endregion | |
| 1319 | -})(elementorV2.editorV1Adapters, elementorV2.session, elementorV2.editorProps, wp.i18n, elementorV2.utils, elementorV2.editorStyles); | |
| 1320 | -window.elementorV2.editorElements?.init?.(); | |
| 1 | +/*! For license information please see editor-elements.js.LICENSE.txt */ | |
| 2 | +!function(){"use strict";var e={"./packages/packages/libs/editor-elements/src/errors.ts":function(e,t,n){n.r(t),n.d(t,{ElementIndexNotFoundError:function(){return i},ElementLabelNotExistsError:function(){return o},ElementNotFoundError:function(){return r},ElementParentNotFoundError:function(){return c},ElementTypeNotExistsError:function(){return l},StyleNotFoundError:function(){return a}});var s=n("@elementor/utils");const r=(0,s.createError)({code:"element_not_found",message:"Element not found."}),a=(0,s.createError)({code:"style_not_found",message:"Style not found."}),l=(0,s.createError)({code:"element_type_not_exists",message:"Element type does not exist."}),o=(0,s.createError)({code:"element_label_not_exists",message:"Element label does not exist."}),c=(0,s.createError)({code:"element_parent_not_found",message:"Element parent not found."}),i=(0,s.createError)({code:"element_index_not_found",message:"Element index not found."})},"./packages/packages/libs/editor-elements/src/hooks/use-element-children.ts":function(e,t,n){n.r(t),n.d(t,{useElementChildren:function(){return useElementChildren}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function useElementChildren(e,t){return(0,s.__privateUseListenTo)([(0,s.v1ReadyEvent)(),(0,s.commandEndEvent)("document/elements/create"),(0,s.commandEndEvent)("document/elements/delete"),(0,s.commandEndEvent)("document/elements/update"),(0,s.commandEndEvent)("document/elements/set-settings")],()=>{const n=(0,r.getContainer)(e);return Object.entries(t).reduce((e,[t,s])=>{const r=n?.children?.findRecursive?.(({model:e})=>e.get("elType")===t),a=r?.children??[];return e[s]=a.filter(({model:e})=>e.get("elType")===s).map(({id:e})=>({id:e})),e},{})},[e])}},"./packages/packages/libs/editor-elements/src/hooks/use-element-editor-settings.ts":function(e,t,n){n.r(t),n.d(t,{useElementEditorSettings:function(){return useElementEditorSettings}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-element-editor-settings.ts");const useElementEditorSettings=e=>(0,s.__privateUseListenTo)((0,s.windowEvent)("elementor/element/update_editor_settings"),()=>(0,r.getElementEditorSettings)(e),[e])},"./packages/packages/libs/editor-elements/src/hooks/use-element-interactions.ts":function(e,t,n){n.r(t),n.d(t,{useElementInteractions:function(){return useElementInteractions}});var s=n("react"),r=n("@elementor/editor-v1-adapters"),a=n("./packages/packages/libs/editor-elements/src/sync/get-element-interactions.ts");const useElementInteractions=e=>{const[t,n]=(0,s.useState)(()=>(0,a.getElementInteractions)(e)??{version:1,items:[]});return(0,r.__privateUseListenTo)((0,r.windowEvent)("elementor/element/update_interactions"),()=>{const t=(0,a.getElementInteractions)(e);n(t??{version:1,items:[]})},[e]),t}},"./packages/packages/libs/editor-elements/src/hooks/use-element-setting.ts":function(e,t,n){n.r(t),n.d(t,{useElementSetting:function(){return useElementSetting},useElementSettings:function(){return useElementSettings}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-element-setting.ts");const useElementSetting=(e,t)=>(0,s.__privateUseListenTo)((0,s.commandEndEvent)("document/elements/set-settings"),()=>(0,r.getElementSetting)(e,t),[e,t]),useElementSettings=(e,t)=>(0,s.__privateUseListenTo)((0,s.commandEndEvent)("document/elements/set-settings"),()=>t.reduce((t,n)=>{const s=(0,r.getElementSetting)(e,n);return null!==s&&(t[n]=s),t},{}),[e,t.join(",")])},"./packages/packages/libs/editor-elements/src/hooks/use-parent-element.ts":function(e,t,n){n.r(t),n.d(t,{useParentElement:function(){return useParentElement}});var s=n("@elementor/editor-v1-adapters");function useParentElement(e){return(0,s.__privateUseListenTo)([(0,s.commandEndEvent)("document/elements/create")],()=>{if(!e)return null;const t=window,n=t?.elementor?.getContainer?.(e);return n?n.parent:null},[e])}},"./packages/packages/libs/editor-elements/src/hooks/use-selected-element.ts":function(e,t,n){n.r(t),n.d(t,{useSelectedElement:function(){return useSelectedElement}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-element-type.ts"),a=n("./packages/packages/libs/editor-elements/src/sync/get-selected-elements.ts");function useSelectedElement(){const e=(0,s.__privateUseListenTo)([(0,s.commandEndEvent)("document/elements/select"),(0,s.commandEndEvent)("document/elements/deselect"),(0,s.commandEndEvent)("document/elements/select-all"),(0,s.commandEndEvent)("document/elements/deselect-all")],a.getSelectedElements),[t]=e,n=(0,r.getElementType)(t?.type);return 1===e.length&&n?{element:t,elementType:n}:{element:null,elementType:null}}},"./packages/packages/libs/editor-elements/src/link-restriction.ts":function(e,t,n){n.r(t),n.d(t,{getAnchoredAncestorId:function(){return getAnchoredAncestorId},getAnchoredDescendantId:function(){return getAnchoredDescendantId},getLinkInLinkRestriction:function(){return getLinkInLinkRestriction},isElementAnchored:function(){return isElementAnchored}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function getLinkInLinkRestriction(e){const t=getAnchoredDescendantId(e);if(t)return{shouldRestrict:!0,reason:"descendant",elementId:t};const n=getAnchoredAncestorId(e);return n?{shouldRestrict:!0,reason:"ancestor",elementId:n}:{shouldRestrict:!1}}function getAnchoredDescendantId(e){const t=getElementDOM(e);if(!t)return null;for(const n of Array.from(t.querySelectorAll("a"))){const t=findElementIdOf(n);if(t!==e)return t}return null}function getAnchoredAncestorId(e){const t=getElementDOM(e);if(!t||null===t.parentElement)return null;const n=t.parentElement.closest("a");return n?findElementIdOf(n):null}function isElementAnchored(e){const t=getElementDOM(e);return!!t&&(!!isAnchorTag(t.tagName)||doesElementContainAnchor(t))}function doesElementContainAnchor(e){for(const t of e.children)if(!isElementorElement(t)){if(isAnchorTag(t.tagName))return!0;if(doesElementContainAnchor(t))return!0}return!1}function findElementIdOf(e){return e.closest("[data-id]")?.dataset.id||null}function getElementDOM(e){try{return(0,s.getContainer)(e)?.view?.el||null}catch{return null}}function isAnchorTag(e){return"a"===e.toLowerCase()}function isElementorElement(e){return e.hasAttribute("data-id")}},"./packages/packages/libs/editor-elements/src/mcp/elements-tool.ts":function(e,t,n){n.r(t),n.d(t,{initElementsTool:function(){return initElementsTool}});var s=n("@elementor/editor-mcp"),r=n("@elementor/schema"),a=n("./packages/packages/libs/editor-elements/src/mcp/handlers/create-element.ts"),l=n("./packages/packages/libs/editor-elements/src/mcp/handlers/create-style.ts"),o=n("./packages/packages/libs/editor-elements/src/mcp/handlers/delete-element.ts"),c=n("./packages/packages/libs/editor-elements/src/mcp/handlers/delete-style.ts"),i=n("./packages/packages/libs/editor-elements/src/mcp/handlers/deselect-element.ts"),d=n("./packages/packages/libs/editor-elements/src/mcp/handlers/duplicate-element.ts"),m=n("./packages/packages/libs/editor-elements/src/mcp/handlers/get-element-props.ts"),p=n("./packages/packages/libs/editor-elements/src/mcp/handlers/get-element-schema.ts"),u=n("./packages/packages/libs/editor-elements/src/mcp/handlers/get-selected.ts"),g=n("./packages/packages/libs/editor-elements/src/mcp/handlers/get-styles.ts"),y=n("./packages/packages/libs/editor-elements/src/mcp/handlers/list-available-types.ts"),E=n("./packages/packages/libs/editor-elements/src/mcp/handlers/move-element.ts"),k=n("./packages/packages/libs/editor-elements/src/mcp/handlers/select-element.ts"),f=n("./packages/packages/libs/editor-elements/src/mcp/handlers/update-props.ts"),h=n("./packages/packages/libs/editor-elements/src/mcp/handlers/update-styles.ts");const b={action:r.z.enum(["get-element-schema","get-element-props","create-element","update-props","create-style","get-styles","update-styles","delete-style","delete","duplicate","move","select","deselect","deselect-all","get-selected","list-available-types"]).describe("The element operation to perform."),elementId:r.z.string().optional().describe("The ID of the target element"),elementIds:r.z.array(r.z.string()).optional().describe("Array of element IDs for multi-element operations"),elementType:r.z.string().optional().describe("The type of element to create. Must be an atomic element type (required for create-element and get-element-schema actions)"),props:r.z.record(r.z.any()).optional().describe("Props object for creating or updating an element. Must match the element type's propsSchema."),containerId:r.z.string().optional().describe('Parent container ID for element creation or move operations. Use "document" if parent is the document root.'),targetContainerId:r.z.string().optional().describe("Target container ID for move operations"),styles:r.z.record(r.z.any()).optional().describe("Styles object for creating or updating element styles. Must match the element type's stylesSchema."),styleId:r.z.string().optional().describe("Style definition ID for style operations. If not provided, the first available style will be used (for update/delete)."),breakpoint:r.z.string().optional().describe('Breakpoint for style operations (e.g., "desktop", "tablet", "mobile"). Defaults to "desktop".'),state:r.z.string().optional().describe('State for style operations (e.g., "hover", "active", or null). Defaults to null.'),classesProp:r.z.string().optional().describe('Classes property name for create-style action. Defaults to "classes".'),label:r.z.string().optional().describe('Label for create-style action. Defaults to "local".'),custom_css:r.z.object({raw:r.z.string()}).optional().describe("Custom CSS object with raw CSS string for create-style action.")};function initElementsTool(){(0,s.getMCPByDomain)("elements").addTool({name:"elements",schema:b,description:'This tool manages individual Elementor atomic elements (v4).\n\n**When to use this tool:**\n\nUse this tool to create, update, delete, duplicate, move, and select individual atomic elements, as well as retrieve their schemas and current props.\n\n**Available actions:**\n\n- `list-available-types`: List all available atomic element types.\n- `get-element-schema`: Get the propsSchema and controls for an element type. Required before creating elements of a new type.\n- `get-element-props`: Get the current prop values for an existing element.\n- `create-element`: Create a new atomic element with specified props and styles (Important to match props and styles by the schema, use get-element-schema to get the schema first).\n- `update-props`: Update props for an existing element.\n- `create-style`: Create a new style definition for an element.\n- `get-styles`: Get all style definitions for an element.\n- `update-styles`: Update styles for an existing element\'s style variant.\n- `delete-style`: Delete a style definition from an element.\n- `delete`: Delete an element.\n- `duplicate`: Duplicate an existing element.\n- `move`: Move an element to a different container.\n- `select`: Select one or more elements.\n- `deselect`: Deselect a specific element.\n- `deselect-all`: Deselect all selected elements.\n- `get-selected`: Get currently selected elements.\n\n**Constraints:**\n\n- Before creating an element of a certain type for the first time, you MUST call `get-element-schema` to retrieve its schema.\n- You can only update props for existing elements.\n- All props must match the element type\'s propsSchema keys.\n- Element types must be atomic (have atomic_controls and atomic_props_schema).\n- Container IDs must exist and be valid before create/move operations.\n\n** Must do with every operation **\nAs of the user can ask in multiple ways the creation of the element, you need to first get the list of available types with "list-available-types" action.\nAfter getting it, convert to the most relevant type that the user requested and if this is not clear, request for user input.\nAfter finding out the proper type, get the schema for it with "get-element-schema" action.\n\n** Styles and Settings propUtils **\nGetting the schema is important as it introduces the propUtils for the styles and settings.\nYou can use the propUtils to create, update, delete, and get the values of the styles and settings.\nSettings exists in the result of the get-element-schema action -> propsSchema.\nStyles exists in the result of the get-element-schema action -> stylesSchema.\n\n**Examples:**\n\nGet schema for heading element:\n```json\n{ "action": "get-element-schema", "elementType": "e-heading" }\n```\n\nCreate a heading element:\n```json\n{ "action": "create-element", "elementType": "e-heading", "containerId": "document", "props": { "title": { $$type: "string", "value": "Hello World" } } }\n```\n\nUpdate element props:\n```json\n{ "action": "update-props", "elementId": "abc123", "props": { "title": "Updated Title" } }\n```\n\nCreate element style:\n```json\n{ "action": "create-style", "elementId": "abc123", "styles": { "padding": "20px", "margin": "10px" } }\n```\n\nGet element styles:\n```json\n{ "action": "get-styles", "elementId": "abc123" }\n```\n\nUpdate element styles:\n```json\n{ "action": "update-styles", "elementId": "abc123", "styles": { "padding": "20px", "margin": "10px" } }\n```\n\nDelete element style:\n```json\n{ "action": "delete-style", "elementId": "abc123", "styleId": "style-id-123" }\n```',handler:async e=>function routeAction(e){try{switch(e.action){case"get-element-schema":if(!e.elementType)throw new Error("elementType is required for get-element-schema action");return(0,p.handleGetElementSchema)(e.elementType);case"get-element-props":if(!e.elementId)throw new Error("elementId is required for get-element-props action");return(0,m.handleGetElementProps)(e.elementId);case"create-element":if(!e.elementType)throw new Error("elementType is required for create-element action");if(!e.containerId)throw new Error("containerId is required for create-element action");return(0,a.handleCreateElement)({elementType:e.elementType,containerId:e.containerId,props:e.props,styles:e.styles});case"update-props":if(!e.elementId)throw new Error("elementId is required for update-props action");if(!e.props)throw new Error("props is required for update-props action");return(0,f.handleUpdateProps)({elementId:e.elementId,props:e.props});case"create-style":if(!e.elementId)throw new Error("elementId is required for create-style action");if(!e.styles)throw new Error("styles is required for create-style action");return(0,l.handleCreateStyle)({elementId:e.elementId,styleId:e.styleId,classesProp:e.classesProp,label:e.label,styles:e.styles,breakpoint:e.breakpoint,state:e.state,customCss:e.custom_css});case"get-styles":if(!e.elementId)throw new Error("elementId is required for get-styles action");return(0,g.handleGetStyles)(e.elementId);case"update-styles":if(!e.elementId)throw new Error("elementId is required for update-styles action");if(!e.styles)throw new Error("styles is required for update-styles action");return(0,h.handleUpdateStyles)({elementId:e.elementId,styleId:e.styleId,styles:e.styles,breakpoint:e.breakpoint,state:e.state});case"delete-style":if(!e.elementId)throw new Error("elementId is required for delete-style action");return(0,c.handleDeleteStyle)({elementId:e.elementId,styleId:e.styleId});case"delete":if(!e.elementId)throw new Error("elementId is required for delete action");return(0,o.handleDeleteElement)(e.elementId);case"duplicate":if(!e.elementId)throw new Error("elementId is required for duplicate action");return(0,d.handleDuplicateElement)(e.elementId);case"move":if(!e.elementId)throw new Error("elementId is required for move action");if(!e.targetContainerId)throw new Error("targetContainerId is required for move action");return(0,E.handleMoveElement)({elementId:e.elementId,targetContainerId:e.targetContainerId});case"select":if(e.elementIds&&e.elementIds.length>0)return(0,k.handleSelectMultipleElements)(e.elementIds);if(!e.elementId)throw new Error("elementId or elementIds is required for select action");return(0,k.handleSelectElement)(e.elementId);case"deselect":if(!e.elementId)throw new Error("elementId is required for deselect action");return(0,i.handleDeselectElement)(e.elementId);case"deselect-all":return(0,i.handleDeselectAllElements)();case"get-selected":return(0,u.handleGetSelected)();case"list-available-types":return(0,y.handleListAvailableTypes)();default:throw new Error(`Unknown action: ${e.action}`)}}catch(t){const n=t instanceof Error?t.message:String(t);throw new Error(`Failed to execute action "${e.action}": ${n}`)}}(e)})}},"./packages/packages/libs/editor-elements/src/mcp/handlers/common-style-utils.ts":function(e,t,n){n.r(t),n.d(t,{resolveBreakpointId:function(){return resolveBreakpointId}});const s=["widescreen","desktop","laptop","tablet_extra","tablet","mobile_extra","mobile"];function resolveBreakpointId(e){return null===e?null:s.includes(e)?e:"desktop"}},"./packages/packages/libs/editor-elements/src/mcp/handlers/create-element.ts":function(e,t,n){n.r(t),n.d(t,{handleCreateElement:function(){return handleCreateElement}});var s=n("./packages/packages/libs/editor-elements/src/styles/create-element-style.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),a=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/get-current-document-container.ts"),o=n("./packages/packages/libs/editor-elements/src/sync/get-element-type.ts");function handleCreateElement({elementType:e,containerId:t,props:n={},styles:c}){let i="document"===t?(0,l.getCurrentDocumentContainer)():(0,a.getContainer)(t);if(!i){if("document"===t)throw new Error("Document container not found. Please ensure the editor is initialized.");throw new Error(`Container with ID "${t}" not found`)}const d=i.model.get("elType");if("document"===i.id||"document"===d){const e={elType:"e-div-block"},t=(0,r.createElement)({containerId:i.id,model:e,options:{useHistory:!0}});if((0,s.createElementStyle)({elementId:t.id,classesProp:"classes",label:"local",meta:{breakpoint:"desktop",state:null},props:{display:{$$type:"string",value:"flex"},"flex-direction":{$$type:"string",value:"row"},"flex-wrap":{$$type:"string",value:"wrap"}}}),i=(0,a.getContainer)(t.id),!i)throw new Error("Failed to create container for widget. Cannot create widgets directly in the document.")}const m=i.id;if(!(0,o.getElementType)(e))throw new Error(`Element type "${e}" not found or is not atomic`);const p={widgetType:e,elType:"widget",settings:n},u=(0,r.createElement)({containerId:m,model:p,options:{useHistory:!0}});return c&&(0,s.createElementStyle)({elementId:u.id,classesProp:"classes",label:"local",meta:{breakpoint:"desktop",state:null},props:c}),{elementId:u.id,type:e}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/create-style.ts":function(e,t,n){n.r(t),n.d(t,{handleCreateStyle:function(){return handleCreateStyle}});var s=n("./packages/packages/libs/editor-elements/src/styles/create-element-style.ts"),r=n("./packages/packages/libs/editor-elements/src/mcp/handlers/common-style-utils.ts");function handleCreateStyle({elementId:e,styleId:t,classesProp:n="classes",label:a="local",styles:l,breakpoint:o="desktop",state:c=null,customCss:i=null}){const d=(0,r.resolveBreakpointId)(o),m=null==c?null:c;return{styleId:(0,s.createElementStyle)({styleId:t,elementId:e,classesProp:n,label:a,meta:{breakpoint:d,state:m},props:l,custom_css:i})}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/delete-element.ts":function(e,t,n){n.r(t),n.d(t,{handleDeleteElement:function(){return handleDeleteElement}});var s=n("./packages/packages/libs/editor-elements/src/sync/delete-element.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function handleDeleteElement(e){if(!(0,r.getContainer)(e))throw new Error(`Element with ID "${e}" not found`);return(0,s.deleteElement)({elementId:e,options:{useHistory:!0}}),{success:!0}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/delete-style.ts":function(e,t,n){n.r(t),n.d(t,{handleDeleteStyle:function(){return handleDeleteStyle}});var s=n("./packages/packages/libs/editor-elements/src/styles/delete-element-style.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-element-styles.ts");function handleDeleteStyle({elementId:e,styleId:t}){const n=(0,r.getElementStyles)(e);if(!n)throw new Error(`Element with ID "${e}" has no styles.`);const a=t||Object.keys(n)[0];if(!a)throw new Error(`Element with ID "${e}" has no styles to delete.`);return(0,s.deleteElementStyle)(e,a),{success:!0}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/deselect-element.ts":function(e,t,n){n.r(t),n.d(t,{handleDeselectAllElements:function(){return handleDeselectAllElements},handleDeselectElement:function(){return handleDeselectElement}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function handleDeselectElement(e){const t=(0,r.getContainer)(e);if(!t)throw new Error(`Element with ID "${e}" not found`);return(0,s.__privateRunCommand)("document/elements/deselect",{container:t}),{success:!0}}function handleDeselectAllElements(){return(0,s.__privateRunCommand)("document/elements/deselect-all",{}),{success:!0}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/duplicate-element.ts":function(e,t,n){n.r(t),n.d(t,{handleDuplicateElement:function(){return handleDuplicateElement}});var s=n("./packages/packages/libs/editor-elements/src/sync/duplicate-element.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function handleDuplicateElement(e){if(!(0,r.getContainer)(e))throw new Error(`Element with ID "${e}" not found`);const t=(0,s.duplicateElement)({elementId:e,options:{useHistory:!0}}),n=t.model.get("widgetType")||t.model.get("elType")||"";return{elementId:t.id,type:n}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/get-element-props.ts":function(e,t,n){n.r(t),n.d(t,{handleGetElementProps:function(){return handleGetElementProps}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-element-setting.ts"),a=n("./packages/packages/libs/editor-elements/src/sync/get-element-type.ts");function handleGetElementProps(e){const t=(0,s.getContainer)(e);if(!t)throw new Error(`Element with ID "${e}" not found`);const n=t.model.get("widgetType")||t.model.get("elType");if(!n)throw new Error(`Element with ID "${e}" has no type`);const l=(0,a.getElementType)(n);if(!l)throw new Error(`Element type "${n}" is not atomic`);const o=l.propsSchema,c=Object.keys(o);return(0,r.getElementSettings)(e,c)}},"./packages/packages/libs/editor-elements/src/mcp/handlers/get-element-schema.ts":function(e,t,n){n.r(t),n.d(t,{handleGetElementSchema:function(){return handleGetElementSchema}});var s=n("@elementor/editor-styles"),r=n("./packages/packages/libs/editor-elements/src/sync/get-element-type.ts");function handleGetElementSchema(e){const t=(0,r.getElementType)(e);if(!t)throw new Error(`Element type "${e}" not found or is not atomic`);return{...t,stylesSchema:(0,s.getStylesSchema)()}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/get-selected.ts":function(e,t,n){n.r(t),n.d(t,{handleGetSelected:function(){return handleGetSelected}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-selected-elements.ts");function handleGetSelected(){return(0,s.getSelectedElements)()}},"./packages/packages/libs/editor-elements/src/mcp/handlers/get-styles.ts":function(e,t,n){n.r(t),n.d(t,{handleGetStyles:function(){return handleGetStyles}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-element-styles.ts");function handleGetStyles(e){const t=(0,s.getElementStyles)(e);return t?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,{id:t.id,label:t.label,type:t.type,variants:t.variants.map(e=>({meta:e.meta,props:e.props,custom_css:e.custom_css}))}])):null}},"./packages/packages/libs/editor-elements/src/mcp/handlers/list-available-types.ts":function(e,t,n){n.r(t),n.d(t,{handleListAvailableTypes:function(){return handleListAvailableTypes}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-widgets-cache.ts");function handleListAvailableTypes(){const e=(0,s.getWidgetsCache)();if(!e)return[];const t=[];return Object.entries(e).forEach(([e,n])=>{n?.atomic_controls&&n?.atomic_props_schema&&t.push({type:e,title:n.title||e})}),t}},"./packages/packages/libs/editor-elements/src/mcp/handlers/move-element.ts":function(e,t,n){n.r(t),n.d(t,{handleMoveElement:function(){return handleMoveElement}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/move-element.ts");function handleMoveElement({elementId:e,targetContainerId:t}){if(!(0,s.getContainer)(e))throw new Error(`Element with ID "${e}" not found`);if(!(0,s.getContainer)(t))throw new Error(`Target container with ID "${t}" not found`);return(0,r.moveElement)({elementId:e,targetContainerId:t,options:{useHistory:!0}}),{success:!0}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/select-element.ts":function(e,t,n){n.r(t),n.d(t,{handleSelectElement:function(){return handleSelectElement},handleSelectMultipleElements:function(){return handleSelectMultipleElements}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function handleSelectElement(e){if(!(0,s.getContainer)(e))throw new Error(`Element with ID "${e}" not found`);return(0,s.selectElement)(e),{success:!0}}function handleSelectMultipleElements(e){return e.forEach(e=>{(0,s.getContainer)(e)&&(0,s.selectElement)(e)}),{success:!0}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/update-props.ts":function(e,t,n){n.r(t),n.d(t,{handleUpdateProps:function(){return handleUpdateProps}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/update-element-settings.ts");function handleUpdateProps({elementId:e,props:t}){if(!(0,s.getContainer)(e))throw new Error(`Element with ID "${e}" not found`);return(0,r.updateElementSettings)({id:e,props:t,withHistory:!0}),{success:!0}}},"./packages/packages/libs/editor-elements/src/mcp/handlers/update-styles.ts":function(e,t,n){n.r(t),n.d(t,{handleUpdateStyles:function(){return handleUpdateStyles}});var s=n("./packages/packages/libs/editor-elements/src/styles/update-element-style.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-element-styles.ts"),a=n("./packages/packages/libs/editor-elements/src/mcp/handlers/common-style-utils.ts");function handleUpdateStyles({elementId:e,styleId:t,styles:n,breakpoint:l="desktop",state:o=null}){const c=(0,a.resolveBreakpointId)(l),i=null==o?null:o,d=(0,r.getElementStyles)(e);if(!d)throw new Error(`Element with ID "${e}" has no styles. Create a style first.`);const m=t||Object.keys(d)[0];if(!m)throw new Error(`Element with ID "${e}" has no styles. Create a style first.`);return(0,s.updateElementStyle)({elementId:e,styleId:m,meta:{breakpoint:c,state:i},props:n}),{success:!0}}},"./packages/packages/libs/editor-elements/src/mcp/index.ts":function(e,t,n){n.r(t),n.d(t,{initMcp:function(){return initMcp}});var s=n("@elementor/editor-mcp"),r=n("./packages/packages/libs/editor-elements/src/mcp/elements-tool.ts");function initMcp(){const{setMCPDescription:e}=(0,s.getMCPByDomain)("elements");e("Tools for managing atomic elements in Elementor v4 editor"),(0,r.initElementsTool)()}},"./packages/packages/libs/editor-elements/src/styles/consts.ts":function(e,t,n){n.r(t),n.d(t,{ELEMENT_STYLE_CHANGE_EVENT:function(){return r},styleRerenderEvents:function(){return a}});var s=n("@elementor/editor-v1-adapters");const r="elementor/editor-v2/editor-elements/style",a=[(0,s.commandEndEvent)("document/elements/create"),(0,s.commandEndEvent)("document/elements/duplicate"),(0,s.commandEndEvent)("document/elements/import"),(0,s.commandEndEvent)("document/elements/paste"),(0,s.windowEvent)(r)]},"./packages/packages/libs/editor-elements/src/styles/create-element-style.ts":function(e,t,n){n.r(t),n.d(t,{createElementStyle:function(){return createElementStyle},shouldCreateNewLocalStyle:function(){return shouldCreateNewLocalStyle}});var s=n("@elementor/editor-props"),r=n("@elementor/editor-styles"),a=n("./packages/packages/libs/editor-elements/src/sync/get-element-setting.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/update-element-settings.ts"),o=n("./packages/packages/libs/editor-elements/src/styles/mutate-element-styles.ts");function createElementStyle({styleId:e,elementId:t,classesProp:n,label:c,meta:i,props:d,custom_css:m=null,additionalVariants:p=[]}){let u=e;return(0,o.mutateElementStyles)(t,e=>{u??=(0,r.generateId)(`e-${t}-`,Object.keys(e));const o=[{meta:i,props:d,custom_css:m},...p];return e[u]={id:u,label:c,type:"class",variants:o},function addStyleToClassesProp(e,t,n){const r=(0,a.getElementSetting)(e,t),o=s.classesPropTypeUtil.create(e=>[...e??[],n],{base:r});(0,l.updateElementSettings)({id:e,props:{[t]:o},withHistory:!1})}(t,n,u),e}),u}function shouldCreateNewLocalStyle(e){return!e?.styleId&&!e?.provider}},"./packages/packages/libs/editor-elements/src/styles/delete-element-style.ts":function(e,t,n){n.r(t),n.d(t,{deleteElementStyle:function(){return deleteElementStyle}});var s=n("./packages/packages/libs/editor-elements/src/styles/mutate-element-styles.ts");function deleteElementStyle(e,t){(0,s.mutateElementStyles)(e,e=>(delete e[t],e))}},"./packages/packages/libs/editor-elements/src/styles/mutate-element-styles.ts":function(e,t,n){n.r(t),n.d(t,{mutateElementStyles:function(){return mutateElementStyles}});var s=n("@elementor/editor-props"),r=n("@elementor/editor-v1-adapters"),a=n("./packages/packages/libs/editor-elements/src/errors.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),o=n("./packages/packages/libs/editor-elements/src/sync/update-element-settings.ts"),c=n("./packages/packages/libs/editor-elements/src/styles/consts.ts");function mutateElementStyles(e,t){const n=(0,l.getContainer)(e);if(!n)throw new a.ElementNotFoundError({context:{elementId:e}});const i=Object.keys(n.model.get("styles")??{}),d=function mutateStyles(e,t){const n=structuredClone(e.model.get("styles"))??{},s=Object.entries(t(n)).map(([e,t])=>(t.variants=function removeEmptyVariants(e){return e.variants.filter(({props:e,custom_css:t})=>Object.keys(e).length>0||t?.raw)}(t),[e,t])).filter(([,e])=>!function isStyleEmpty(e){return 0===e.variants.length}(e)),r=Object.fromEntries(s);return e.model.set("styles",r),r}(n,t);return function clearRemovedClasses(e,{oldIds:t,newIds:n}){const r=t.filter(e=>!n.includes(e)),a=structuredClone(function getClassesProps(e){return Object.entries(e.settings.toJSON()).filter(e=>{const[,t]=e;return s.classesPropTypeUtil.isValid(t)})}(e));a.forEach(([,e])=>{e.value=e.value.filter(e=>!r.includes(e))}),(0,o.updateElementSettings)({id:e.id,props:Object.fromEntries(a),withHistory:!1})}(n,{oldIds:i,newIds:Object.keys(d)}),function notifyChanges(){(function dispatchChangeEvent(){window.dispatchEvent(new CustomEvent(c.ELEMENT_STYLE_CHANGE_EVENT))})(),(0,r.__privateRunCommandSync)("document/save/set-is-modified",{status:!0},{internal:!0})}(),d}},"./packages/packages/libs/editor-elements/src/styles/update-element-style.ts":function(e,t,n){n.r(t),n.d(t,{updateElementStyle:function(){return updateElementStyle}});var s=n("@elementor/editor-props"),r=n("@elementor/editor-styles"),a=n("./packages/packages/libs/editor-elements/src/errors.ts"),l=n("./packages/packages/libs/editor-elements/src/styles/mutate-element-styles.ts");function updateElementStyle(e){(0,l.mutateElementStyles)(e.elementId,t=>{const n=t[e.styleId];if(!n)throw new a.StyleNotFoundError({context:{styleId:e.styleId}});const l=(0,r.getVariantByMeta)(n,e.meta),o=("custom_css"in e?e.custom_css:l?.custom_css)??null;return l?(l.props=(0,s.mergeProps)(l.props,e.props),l.custom_css=o?.raw?o:null):n.variants.push({meta:e.meta,props:e.props,custom_css:o}),t})}},"./packages/packages/libs/editor-elements/src/sync/create-element.ts":function(e,t,n){n.r(t),n.d(t,{createElement:function(){return createElement}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function createElement({containerId:e,model:t,options:n}){const a=(0,r.getContainer)(e);if(!a)throw new Error(`Container with ID "${e}" not found`);return(0,s.__privateRunCommandSync)("document/elements/create",{container:a,model:t,options:{edit:!1,...n}})}},"./packages/packages/libs/editor-elements/src/sync/create-elements.ts":function(e,t,n){n.r(t),n.d(t,{createElements:function(){return createElements}});var s=n("@elementor/editor-v1-adapters"),r=n("@wordpress/i18n"),a=n("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/delete-element.ts"),o=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const createElements=({elements:e,title:t,subtitle:n=(0,r.__)("Item added","elementor")})=>(0,s.undoable)({do:({elements:e})=>{const t=[];return e.forEach(e=>{const{options:n,...s}=e,r=(0,a.createElement)({...s,options:{...n,useHistory:!1}}),l=r.id;t.push({elementId:l,model:r.model?.toJSON()||{},createParams:{...e}})}),{createdElements:t}},undo:(e,{createdElements:t})=>{[...t].reverse().forEach(({elementId:e})=>{(0,l.deleteElement)({elementId:e,options:{useHistory:!1}})})},redo:(e,{createdElements:t})=>{const n=[];return t.forEach(({createParams:e,model:t})=>{const s=(0,a.createElement)({containerId:e.containerId,model:t,options:{...e.options,useHistory:!1}}).id,r=(0,o.getContainer)(s);r&&n.push({elementId:s,model:r.model.toJSON(),createParams:e})}),{createdElements:n}}},{title:t,subtitle:n})({elements:e})},"./packages/packages/libs/editor-elements/src/sync/delete-element.ts":function(e,t,n){n.r(t),n.d(t,{deleteElement:function(){return deleteElement}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function deleteElement({elementId:e,options:t={}}){const n=(0,r.getContainer)(e);if(!n)throw new Error(`Element with ID "${e}" not found`);return(0,s.__privateRunCommand)("document/elements/delete",{container:n,options:t})}},"./packages/packages/libs/editor-elements/src/sync/drop-element.ts":function(e,t,n){n.r(t),n.d(t,{dropElement:function(){return dropElement}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function dropElement({containerId:e,model:t,options:n}){const a=(0,r.getContainer)(e);if(!a)throw new Error(`Container with ID "${e}" not found`);return(0,s.__privateRunCommandSync)("preview/drop",{container:a,model:t,options:n})}},"./packages/packages/libs/editor-elements/src/sync/duplicate-element.ts":function(e,t,n){n.r(t),n.d(t,{duplicateElement:function(){return duplicateElement}});var s=n("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function duplicateElement({elementId:e,options:t={}}){const n=(0,r.getContainer)(e);if(!n)throw new Error(`Element with ID "${e}" not found`);if(!n.parent)throw new Error(`Element with ID "${e}" has no parent container`);const a=n.parent,l=n.model.toJSON(),o=n.view?._index??0,c=!1!==t.clone?o+1:void 0;return(0,s.createElement)({containerId:a.id,model:l,options:{at:c,...t}})}},"./packages/packages/libs/editor-elements/src/sync/duplicate-elements.ts":function(e,t,n){n.r(t),n.d(t,{duplicateElements:function(){return duplicateElements}});var s=n("@elementor/editor-v1-adapters"),r=n("@wordpress/i18n"),a=n("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/delete-element.ts"),o=n("./packages/packages/libs/editor-elements/src/sync/duplicate-element.ts"),c=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const duplicateElements=({elementIds:e,title:t,subtitle:n=(0,r.__)("Item duplicated","elementor")})=>(0,s.undoable)({do:({elementIds:e})=>({duplicatedElements:e.reduce((e,t)=>{const n=(0,c.getContainer)(t);if(n?.parent){const n=(0,o.duplicateElement)({elementId:t,options:{useHistory:!1,clone:!0}});e.push({id:n.id,model:n.model.toJSON(),originalElementId:t,modelToRestore:n.model.toJSON(),parentContainerId:n.parent?.id,at:n.view?._index})}return e},[])}),undo:(e,{duplicatedElements:t})=>{[...t].reverse().forEach(({id:e})=>{(0,l.deleteElement)({elementId:e,options:{useHistory:!1}})})},redo:(e,{duplicatedElements:t})=>({duplicatedElements:t.reduce((e,t)=>{if(t.modelToRestore&&t.parentContainerId){const n=(0,a.createElement)({containerId:t.parentContainerId,model:t.modelToRestore,options:{useHistory:!1,clone:!1,at:t.at}});e.push({id:n.id,model:n.model.toJSON(),originalElementId:t.originalElementId,modelToRestore:t.modelToRestore,parentContainerId:t.parentContainerId,at:t.at})}return e},[])})},{title:t,subtitle:n})({elementIds:e})},"./packages/packages/libs/editor-elements/src/sync/generate-element-id.ts":function(e,t,n){n.r(t),n.d(t,{generateElementId:function(){return generateElementId}});const generateElementId=()=>{const e=window;return e.elementorCommon?.helpers?.getUniqueId?.()??`el-${Date.now()}-${Math.random().toString(36).substring(2,9)}`}},"./packages/packages/libs/editor-elements/src/sync/get-container.ts":function(e,t,n){n.r(t),n.d(t,{getContainer:function(){return getContainer},selectElement:function(){return selectElement}});var s=n("@elementor/editor-v1-adapters");function getContainer(e){const t=window,n=t.elementor?.getContainer?.(e);return n??null}const selectElement=e=>{try{const t=getContainer(e);(0,s.__privateRunCommand)("document/elements/select",{container:t})}catch{}}},"./packages/packages/libs/editor-elements/src/sync/get-current-document-container.ts":function(e,t,n){function getCurrentDocumentContainer(){const e=window;return e.elementor?.documents?.getCurrent?.()?.container??null}n.r(t),n.d(t,{getCurrentDocumentContainer:function(){return getCurrentDocumentContainer}})},"./packages/packages/libs/editor-elements/src/sync/get-current-document-id.ts":function(e,t,n){function getCurrentDocumentId(){const e=window;return e.elementor?.documents?.getCurrentId?.()??null}n.r(t),n.d(t,{getCurrentDocumentId:function(){return getCurrentDocumentId}})},"./packages/packages/libs/editor-elements/src/sync/get-element-editor-settings.ts":function(e,t,n){n.r(t),n.d(t,{getElementEditorSettings:function(){return getElementEditorSettings}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function getElementEditorSettings(e){const t=(0,s.getContainer)(e);return t?.model.get("editor_settings")??{}}},"./packages/packages/libs/editor-elements/src/sync/get-element-interactions.ts":function(e,t,n){n.r(t),n.d(t,{getElementInteractions:function(){return getElementInteractions}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function getElementInteractions(e){const t=(0,s.getContainer)(e),n=t?.model?.get("interactions");return"string"==typeof n?JSON.parse(n):n}},"./packages/packages/libs/editor-elements/src/sync/get-element-label.ts":function(e,t,n){n.r(t),n.d(t,{getElementLabel:function(){return getElementLabel}});var s=n("./packages/packages/libs/editor-elements/src/errors.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),a=n("./packages/packages/libs/editor-elements/src/sync/get-widgets-cache.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/get-selected-elements.ts");function getElementLabel(e){e||(e=(0,l.getSelectedElements)()?.[0]?.id);const t=(0,r.getContainer)(e),n=t?.model.get("widgetType")||t?.model.get("elType");if(!n)throw new s.ElementTypeNotExistsError({context:{elementId:e}});const o=(0,a.getWidgetsCache)()?.[n]?.title;if(!o)throw new s.ElementLabelNotExistsError({context:{elementType:n}});return o}},"./packages/packages/libs/editor-elements/src/sync/get-element-setting.ts":function(e,t,n){n.r(t),n.d(t,{getElementSetting:function(){return getElementSetting},getElementSettings:function(){return getElementSettings}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const getElementSetting=(e,t)=>{const n=(0,s.getContainer)(e);return n?.settings?.get(t)??null},getElementSettings=(e,t)=>Object.fromEntries(t.map(t=>[t,getElementSetting(e,t)]))},"./packages/packages/libs/editor-elements/src/sync/get-element-styles.ts":function(e,t,n){n.r(t),n.d(t,{getElementStyles:function(){return getElementStyles}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const getElementStyles=e=>{const t=(0,s.getContainer)(e);return t?.model.get("styles")||null}},"./packages/packages/libs/editor-elements/src/sync/get-element-type.ts":function(e,t,n){n.r(t),n.d(t,{getElementType:function(){return getElementType}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-widgets-cache.ts");function getElementType(e){if(!e)return null;const t=(0,s.getWidgetsCache)(),n=t?.[e];return n?.atomic_controls&&n?.atomic_props_schema?{key:e,controls:n.atomic_controls,propsSchema:n.atomic_props_schema,dependenciesPerTargetMapping:n.dependencies_per_target_mapping??{},title:n.title,styleStates:n.atomic_style_states??[]}:null}},"./packages/packages/libs/editor-elements/src/sync/get-elements.ts":function(e,t,n){n.r(t),n.d(t,{getElements:function(){return getElements}});var s=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/get-current-document-container.ts");function getElements(e){const t=e?(0,s.getContainer)(e):(0,r.getCurrentDocumentContainer)();if(!t)return[];const n=[...t.model.get("elements")??[]].flatMap(e=>getElements(e.get("id")));return[t,...n]}},"./packages/packages/libs/editor-elements/src/sync/get-selected-elements.ts":function(e,t,n){function getSelectedElements(){const e=window;return(e.elementor?.selection?.getElements?.()??[]).reduce((e,t)=>{const n=t.model.get("widgetType")||t.model.get("elType");return n&&e.push({id:t.model.get("id"),type:n}),e},[])}n.r(t),n.d(t,{getSelectedElements:function(){return getSelectedElements}})},"./packages/packages/libs/editor-elements/src/sync/get-widgets-cache.ts":function(e,t,n){function getWidgetsCache(){const e=window;return e?.elementor?.widgetsCache||null}n.r(t),n.d(t,{getWidgetsCache:function(){return getWidgetsCache}})},"./packages/packages/libs/editor-elements/src/sync/move-element.ts":function(e,t,n){n.r(t),n.d(t,{moveElement:function(){return moveElement}});var s=n("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/delete-element.ts"),a=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");function moveElement({elementId:e,targetContainerId:t,options:n={}}){const l=(0,a.getContainer)(e),o=(0,a.getContainer)(t);if(!l)throw new Error(`Element with ID "${e}" not found`);if(!o)throw new Error(`Target container with ID "${t}" not found`);const c=l.model.toJSON();(0,r.deleteElement)({elementId:e,options:{...n,useHistory:!1}});return(0,s.createElement)({containerId:t,model:c,options:{edit:!1,...n,useHistory:!1}})}},"./packages/packages/libs/editor-elements/src/sync/move-elements.ts":function(e,t,n){n.r(t),n.d(t,{moveElements:function(){return moveElements}});var s=n("@elementor/editor-v1-adapters"),r=n("@wordpress/i18n"),a=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/move-element.ts");const moveElements=({moves:e,title:t,subtitle:n=(0,r.__)("Elements moved","elementor"),onMoveElements:o,onRestoreElements:c})=>(0,s.undoable)({do:({moves:e})=>{const t=[];return o?.(),e.forEach(e=>{const{elementId:n}=e,s=(0,a.getContainer)(n);if(!s)throw new Error(`Element with ID "${n}" not found`);const r={elementId:n,originalContainerId:s.parent?.id||"",originalIndex:s.parent?.children?.indexOf(s)??-1},o=(0,l.moveElement)({...e,options:{...e.options,useHistory:!1}});t.push({elementId:n,originalPosition:r,move:e,element:o})}),{movedElements:t}},undo:(e,{movedElements:t})=>{c?.(),[...t].reverse().forEach(({originalPosition:e})=>{const{elementId:t,originalContainerId:n,originalIndex:s}=e;(0,l.moveElement)({elementId:t,targetContainerId:n,options:{useHistory:!1,at:s>=0?s:void 0}})})},redo:(e,{movedElements:t})=>{const n=[];return o?.(),t.forEach(({move:e,originalPosition:t})=>{const s=(0,l.moveElement)({...e,options:{...e.options,useHistory:!1}});n.push({elementId:e.elementId,originalPosition:t,move:e,element:s})}),{movedElements:n}}},{title:t,subtitle:n})({moves:e})},"./packages/packages/libs/editor-elements/src/sync/remove-elements.ts":function(e,t,n){n.r(t),n.d(t,{removeElements:function(){return removeElements}});var s=n("@elementor/editor-v1-adapters"),r=n("@wordpress/i18n"),a=n("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/delete-element.ts"),o=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const removeElements=({elementIds:e,title:t,subtitle:n=(0,r.__)("Item removed","elementor"),onRemoveElements:c,onRestoreElements:i})=>(0,s.undoable)({do:({elementIds:e})=>{const t=[];return e.forEach(e=>{const n=(0,o.getContainer)(e);if(n){const s=n.model.toJSON(),r=n.parent,a=n.view?._index??0;t.push({elementId:e,model:s,parent:r??null,at:a})}}),c?.(),e.forEach(e=>{(0,l.deleteElement)({elementId:e,options:{useHistory:!1}})}),{elementIds:e,removedElements:t}},undo:(e,{removedElements:t})=>{i?.(),[...t].reverse().forEach(({model:e,parent:t,at:n})=>{t&&e&&(0,a.createElement)({containerId:t.id,model:e,options:{useHistory:!1,at:n}})})},redo:(e,{elementIds:t,removedElements:n})=>(c?.(),t.forEach(e=>{(0,l.deleteElement)({elementId:e,options:{useHistory:!1}})}),{elementIds:t,removedElements:n})},{title:t,subtitle:n})({elementIds:e})},"./packages/packages/libs/editor-elements/src/sync/replace-element.ts":function(e,t,n){n.r(t),n.d(t,{replaceElement:function(){return replaceElement}});var s=n("./packages/packages/libs/editor-elements/src/errors.ts"),r=n("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),a=n("./packages/packages/libs/editor-elements/src/sync/delete-element.ts"),l=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const replaceElement=({currentElement:e,newElement:t,withHistory:n=!0})=>{const{containerId:o,index:c}=function getNewElementLocation(e,t){let n;const a=(0,l.getContainer)(e.id);if(!a)throw new s.ElementNotFoundError({context:{elementId:e.id}});const o=a.parent;if(!o)throw new s.ElementParentNotFoundError({context:{elementId:e.id}});const c=a.view?._index??0;if(void 0===c||-1===c)throw new s.ElementIndexNotFoundError({context:{elementId:e.id}});n={containerId:o.id,index:c},"document"===o.id&&"widget"===t.elType&&(n=function createWrapperForWidget(e,t){const n=(0,r.createElement)({containerId:e,model:{elType:"container"},options:{at:t,useHistory:!1}});return{containerId:n.id,index:0}}(o.id,c));return n}(e,t);(0,r.createElement)({containerId:o,model:t,options:{at:c,useHistory:n}}),(0,a.deleteElement)({elementId:e.id,options:{useHistory:n}})}},"./packages/packages/libs/editor-elements/src/sync/update-element-editor-settings.ts":function(e,t,n){n.r(t),n.d(t,{updateElementEditorSettings:function(){return updateElementEditorSettings}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const updateElementEditorSettings=({elementId:e,settings:t})=>{const n=(0,r.getContainer)(e);if(!n)throw new Error(`Element with id ${e} not found`);const a=n.model.get("editor_settings")??{};n.model.set("editor_settings",{...a,...t}),function setDocumentModifiedStatus(e){(0,s.__privateRunCommandSync)("document/save/set-is-modified",{status:e},{internal:!0})}(!0)}},"./packages/packages/libs/editor-elements/src/sync/update-element-interactions.ts":function(e,t,n){n.r(t),n.d(t,{playElementInteractions:function(){return playElementInteractions},updateElementInteractions:function(){return updateElementInteractions}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const updateElementInteractions=({elementId:e,interactions:t})=>{const n=(0,r.getContainer)(e);if(!n)throw new Error(`Element with id ${e} not found`);n.model.set("interactions",t),window.dispatchEvent(new CustomEvent("elementor/element/update_interactions")),function setDocumentModifiedStatus(e){(0,s.__privateRunCommandSync)("document/save/set-is-modified",{status:e},{internal:!0})}(!0)},playElementInteractions=(e,t)=>{window.top?.dispatchEvent(new CustomEvent("atomic/play_interactions",{detail:{elementId:e,animationId:t}}))}},"./packages/packages/libs/editor-elements/src/sync/update-element-settings.ts":function(e,t,n){n.r(t),n.d(t,{updateElementSettings:function(){return updateElementSettings}});var s=n("@elementor/editor-v1-adapters"),r=n("./packages/packages/libs/editor-elements/src/sync/get-container.ts");const updateElementSettings=({id:e,props:t,withHistory:n=!0})=>{const a={container:(0,r.getContainer)(e),settings:{...t}};n?(0,s.__privateRunCommandSync)("document/elements/settings",a):(0,s.__privateRunCommandSync)("document/elements/set-settings",a,{internal:!0})}},"./packages/packages/libs/editor-elements/src/types.ts":function(e,t,n){n.r(t)},"@elementor/editor-mcp":function(e){e.exports=window.elementorV2.editorMcp},"@elementor/editor-props":function(e){e.exports=window.elementorV2.editorProps},"@elementor/editor-styles":function(e){e.exports=window.elementorV2.editorStyles},"@elementor/editor-v1-adapters":function(e){e.exports=window.elementorV2.editorV1Adapters},"@elementor/schema":function(e){e.exports=window.elementorV2.schema},"@elementor/utils":function(e){e.exports=window.elementorV2.utils},"@wordpress/i18n":function(e){e.exports=window.wp.i18n},react:function(e){e.exports=window.React}},t={};function __webpack_require__(n){var s=t[n];if(void 0!==s)return s.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,__webpack_require__),r.exports}__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=function(e,t){for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};!function(){__webpack_require__.r(n),__webpack_require__.d(n,{ELEMENT_STYLE_CHANGE_EVENT:function(){return A.ELEMENT_STYLE_CHANGE_EVENT},createElement:function(){return l.createElement},createElementStyle:function(){return P.createElementStyle},createElements:function(){return o.createElements},deleteElement:function(){return c.deleteElement},deleteElementStyle:function(){return L.deleteElementStyle},dropElement:function(){return i.dropElement},duplicateElement:function(){return d.duplicateElement},duplicateElements:function(){return m.duplicateElements},generateElementId:function(){return p.generateElementId},getAnchoredAncestorId:function(){return x.getAnchoredAncestorId},getAnchoredDescendantId:function(){return x.getAnchoredDescendantId},getContainer:function(){return u.getContainer},getCurrentDocumentContainer:function(){return g.getCurrentDocumentContainer},getCurrentDocumentId:function(){return y.getCurrentDocumentId},getElementEditorSettings:function(){return E.getElementEditorSettings},getElementInteractions:function(){return $.getElementInteractions},getElementLabel:function(){return k.getElementLabel},getElementSetting:function(){return f.getElementSetting},getElementSettings:function(){return f.getElementSettings},getElementStyles:function(){return h.getElementStyles},getElementType:function(){return b.getElementType},getElements:function(){return _.getElements},getLinkInLinkRestriction:function(){return x.getLinkInLinkRestriction},getSelectedElements:function(){return w.getSelectedElements},getWidgetsCache:function(){return v.getWidgetsCache},initElementsMcp:function(){return R.initMcp},isElementAnchored:function(){return x.isElementAnchored},moveElement:function(){return I.moveElement},moveElements:function(){return S.moveElements},playElementInteractions:function(){return O.playElementInteractions},removeElements:function(){return C.removeElements},replaceElement:function(){return T.replaceElement},selectElement:function(){return u.selectElement},shouldCreateNewLocalStyle:function(){return P.shouldCreateNewLocalStyle},styleRerenderEvents:function(){return A.styleRerenderEvents},updateElementEditorSettings:function(){return D.updateElementEditorSettings},updateElementInteractions:function(){return O.updateElementInteractions},updateElementSettings:function(){return q.updateElementSettings},updateElementStyle:function(){return N.updateElementStyle},useElementChildren:function(){return e.useElementChildren},useElementEditorSettings:function(){return t.useElementEditorSettings},useElementInteractions:function(){return M.useElementInteractions},useElementSetting:function(){return s.useElementSetting},useElementSettings:function(){return s.useElementSettings},useParentElement:function(){return r.useParentElement},useSelectedElement:function(){return a.useSelectedElement}});__webpack_require__("./packages/packages/libs/editor-elements/src/types.ts");var e=__webpack_require__("./packages/packages/libs/editor-elements/src/hooks/use-element-children.ts"),t=__webpack_require__("./packages/packages/libs/editor-elements/src/hooks/use-element-editor-settings.ts"),s=__webpack_require__("./packages/packages/libs/editor-elements/src/hooks/use-element-setting.ts"),r=__webpack_require__("./packages/packages/libs/editor-elements/src/hooks/use-parent-element.ts"),a=__webpack_require__("./packages/packages/libs/editor-elements/src/hooks/use-selected-element.ts"),l=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/create-element.ts"),o=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/create-elements.ts"),c=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/delete-element.ts"),i=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/drop-element.ts"),d=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/duplicate-element.ts"),m=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/duplicate-elements.ts"),p=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/generate-element-id.ts"),u=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-container.ts"),g=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-current-document-container.ts"),y=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-current-document-id.ts"),E=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-element-editor-settings.ts"),k=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-element-label.ts"),f=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-element-setting.ts"),h=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-element-styles.ts"),b=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-element-type.ts"),_=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-elements.ts"),w=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-selected-elements.ts"),v=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-widgets-cache.ts"),I=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/move-element.ts"),S=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/move-elements.ts"),C=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/remove-elements.ts"),T=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/replace-element.ts"),D=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/update-element-editor-settings.ts"),q=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/update-element-settings.ts"),x=__webpack_require__("./packages/packages/libs/editor-elements/src/link-restriction.ts"),A=__webpack_require__("./packages/packages/libs/editor-elements/src/styles/consts.ts"),P=__webpack_require__("./packages/packages/libs/editor-elements/src/styles/create-element-style.ts"),L=__webpack_require__("./packages/packages/libs/editor-elements/src/styles/delete-element-style.ts"),N=__webpack_require__("./packages/packages/libs/editor-elements/src/styles/update-element-style.ts"),M=__webpack_require__("./packages/packages/libs/editor-elements/src/hooks/use-element-interactions.ts"),$=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/get-element-interactions.ts"),O=__webpack_require__("./packages/packages/libs/editor-elements/src/sync/update-element-interactions.ts"),R=__webpack_require__("./packages/packages/libs/editor-elements/src/mcp/index.ts")}(),(window.elementorV2=window.elementorV2||{}).editorElements=n}(),window.elementorV2.editorElements?.init?.(); | |
| 1321 | 3 | //# sourceMappingURL=editor-elements.js.map |