@elementor/editor-canvas 4.2.0-923 → 4.2.0-925

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3734,22 +3734,29 @@ function registerModelExtensions(type, extensions) {
3734
3734
  }
3735
3735
  function registerElementType(type, elementTypeGenerator) {
3736
3736
  elementsLegacyTypes[type] = elementTypeGenerator;
3737
+ if ((0, import_editor_v1_adapters14.__privateIsReady)()) {
3738
+ registerElementInLegacyManager(type, createDomRenderer());
3739
+ }
3737
3740
  }
3738
3741
  function initLegacyViews() {
3739
3742
  (0, import_editor_v1_adapters14.__privateListenTo)((0, import_editor_v1_adapters14.v1ReadyEvent)(), () => {
3740
3743
  const widgetsCache = (0, import_editor_elements10.getWidgetsCache)() ?? {};
3741
- const legacyWindow = window;
3742
3744
  const renderer = createDomRenderer();
3743
3745
  registerProPromotionTypes(widgetsCache);
3744
- Object.entries(widgetsCache).forEach(([type, element]) => {
3745
- if (!element.atomic) {
3746
- return;
3747
- }
3748
- const ResolvedElementType = resolveElementType(type, renderer, element);
3749
- tryRegisterElement(legacyWindow, type, element, ResolvedElementType);
3746
+ Object.keys(widgetsCache).forEach((type) => {
3747
+ registerElementInLegacyManager(type, renderer);
3750
3748
  });
3751
3749
  });
3752
3750
  }
3751
+ function registerElementInLegacyManager(type, renderer) {
3752
+ const element = ((0, import_editor_elements10.getWidgetsCache)() ?? {})[type];
3753
+ if (!element?.atomic) {
3754
+ return;
3755
+ }
3756
+ const legacyWindow = window;
3757
+ const ResolvedElementType = resolveElementType(type, renderer, element);
3758
+ tryRegisterElement(legacyWindow, type, element, ResolvedElementType);
3759
+ }
3753
3760
  function registerProPromotionTypes(widgetsCache) {
3754
3761
  Object.entries(widgetsCache).forEach(([type, element]) => {
3755
3762
  if (element.meta?.is_pro_promotion) {
@@ -3823,6 +3830,9 @@ function initTabsModelExtensions() {
3823
3830
  registerModelExtensions("e-tab", tabModelExtensions);
3824
3831
  }
3825
3832
 
3833
+ // src/mcp/canvas-mcp.ts
3834
+ var import_editor_props11 = require("@elementor/editor-props");
3835
+
3826
3836
  // src/mcp/resources/available-widgets-resource.ts
3827
3837
  var import_editor_v1_adapters15 = require("@elementor/editor-v1-adapters");
3828
3838
  var AVAILABLE_WIDGETS_URI = "elementor://context/available-widgets";
@@ -3972,8 +3982,109 @@ function extractElementData(element) {
3972
3982
  return result;
3973
3983
  }
3974
3984
 
3975
- // src/mcp/resources/editor-state-resource.ts
3985
+ // src/mcp/resources/dynamic-tags-resource.ts
3986
+ var import_editor_props7 = require("@elementor/editor-props");
3987
+
3988
+ // src/mcp/utils/resolve-dynamic-tag.ts
3976
3989
  var import_editor_v1_adapters17 = require("@elementor/editor-v1-adapters");
3990
+ var DYNAMIC_PROP_TYPE_KEY = "dynamic";
3991
+ var OMITTED_DYNAMIC_SETTING_KEYS = ["fallback"];
3992
+ var getAtomicDynamicTags = () => {
3993
+ const config = (0, import_editor_v1_adapters17.getElementorConfig)();
3994
+ return config.atomicDynamicTags?.tags ?? {};
3995
+ };
3996
+ var getDynamicTagNamesByCategories = (categories) => {
3997
+ if (!categories.length) {
3998
+ return [];
3999
+ }
4000
+ const wanted = new Set(categories);
4001
+ return Object.values(getAtomicDynamicTags()).filter((tag) => tag.categories?.some((category) => wanted.has(category))).map((tag) => tag.name);
4002
+ };
4003
+ var dynamicTagLLMResolver = (value) => {
4004
+ const input = value ?? {};
4005
+ const tag = input.name ? getAtomicDynamicTags()[input.name] : void 0;
4006
+ if (!tag) {
4007
+ return {
4008
+ $$type: DYNAMIC_PROP_TYPE_KEY,
4009
+ value: { name: input.name ?? "", group: "", settings: {} }
4010
+ };
4011
+ }
4012
+ return {
4013
+ $$type: DYNAMIC_PROP_TYPE_KEY,
4014
+ value: {
4015
+ name: tag.name,
4016
+ group: tag.group,
4017
+ settings: buildStrictSettings(tag.props_schema ?? {}, input.settings ?? {})
4018
+ }
4019
+ };
4020
+ };
4021
+ var buildStrictSettings = (schema2, provided) => {
4022
+ const settings = {};
4023
+ for (const [key, propType] of Object.entries(schema2)) {
4024
+ if (OMITTED_DYNAMIC_SETTING_KEYS.includes(key)) {
4025
+ continue;
4026
+ }
4027
+ const resolved = provided[key] !== void 0 ? wrapSettingValue(provided[key], propType) : defaultSettingValue(propType);
4028
+ if (resolved !== void 0 && resolved !== null) {
4029
+ settings[key] = resolved;
4030
+ }
4031
+ }
4032
+ return settings;
4033
+ };
4034
+ var wrapSettingValue = (raw, propType) => {
4035
+ if (raw !== null && typeof raw === "object") {
4036
+ return raw;
4037
+ }
4038
+ return propType.key ? { $$type: propType.key, value: raw } : raw;
4039
+ };
4040
+ var defaultSettingValue = (propType) => {
4041
+ if (propType.initial_value !== null && propType.initial_value !== void 0) {
4042
+ return propType.initial_value;
4043
+ }
4044
+ if (propType.default !== null && propType.default !== void 0) {
4045
+ return wrapSettingValue(propType.default, propType);
4046
+ }
4047
+ return void 0;
4048
+ };
4049
+
4050
+ // src/mcp/resources/dynamic-tags-resource.ts
4051
+ var DYNAMIC_TAGS_URI = "elementor://dynamic-tags";
4052
+ var settingsSchema = (propsSchema) => {
4053
+ return Object.fromEntries(
4054
+ Object.entries(propsSchema ?? {}).filter(([key]) => !OMITTED_DYNAMIC_SETTING_KEYS.includes(key)).map(([key, propType]) => [key, import_editor_props7.Schema.propTypeToJsonSchema(propType)])
4055
+ );
4056
+ };
4057
+ var buildDynamicTagsList = () => {
4058
+ return Object.values(getAtomicDynamicTags()).map((tag) => ({
4059
+ name: tag.name,
4060
+ label: tag.label,
4061
+ categories: tag.categories,
4062
+ settings: settingsSchema(tag.props_schema)
4063
+ }));
4064
+ };
4065
+ var initDynamicTagsResource = (reg) => {
4066
+ const { resource } = reg;
4067
+ resource(
4068
+ "dynamic-tags",
4069
+ DYNAMIC_TAGS_URI,
4070
+ {
4071
+ description: `List of available dynamic tags. To bind a property to a dynamic source, set its value to { "$$type": "dynamic", "value": { "name": <tag name>, "settings": { ... } } } using a tag whose name appears in that property's allowed list, and populate "settings" per the tag entry here.`,
4072
+ mimeType: "application/json"
4073
+ },
4074
+ async (uri) => ({
4075
+ contents: [
4076
+ {
4077
+ uri: uri.href,
4078
+ mimeType: "application/json",
4079
+ text: JSON.stringify(buildDynamicTagsList())
4080
+ }
4081
+ ]
4082
+ })
4083
+ );
4084
+ };
4085
+
4086
+ // src/mcp/resources/editor-state-resource.ts
4087
+ var import_editor_v1_adapters18 = require("@elementor/editor-v1-adapters");
3977
4088
  var CURRENTLY_VIEWED_SCREEN = "The user is currently viewing the Elementor editor";
3978
4089
  var PAGE_CONTENT_CHARACTER_LIMIT = 500;
3979
4090
  var PREVIEW_TEXT_NODE_MIN_LENGTH = 2;
@@ -3994,8 +4105,8 @@ var initEditorStateResource = (reg) => {
3994
4105
  lastSerializedState = serialized;
3995
4106
  sendResourceUpdated({ uri: EDITOR_STATE_URI });
3996
4107
  };
3997
- (0, import_editor_v1_adapters17.__privateListenTo)(
3998
- [(0, import_editor_v1_adapters17.commandEndEvent)("editor/documents/switch"), (0, import_editor_v1_adapters17.commandEndEvent)("editor/documents/attach-preview")],
4108
+ (0, import_editor_v1_adapters18.__privateListenTo)(
4109
+ [(0, import_editor_v1_adapters18.commandEndEvent)("editor/documents/switch"), (0, import_editor_v1_adapters18.commandEndEvent)("editor/documents/attach-preview")],
3999
4110
  notifyIfChanged
4000
4111
  );
4001
4112
  lastSerializedState = JSON.stringify(buildState());
@@ -4069,7 +4180,7 @@ function getPageTitle() {
4069
4180
  }
4070
4181
 
4071
4182
  // src/mcp/resources/general-context-resource.ts
4072
- var import_editor_v1_adapters18 = require("@elementor/editor-v1-adapters");
4183
+ var import_editor_v1_adapters19 = require("@elementor/editor-v1-adapters");
4073
4184
  var GENERAL_CONTEXT_URI = "elementor://context/general";
4074
4185
  var initGeneralContextResource = (reg) => {
4075
4186
  const { resource, sendResourceUpdated } = reg;
@@ -4130,11 +4241,11 @@ var initGeneralContextResource = (reg) => {
4130
4241
  };
4131
4242
  }
4132
4243
  );
4133
- (0, import_editor_v1_adapters18.__privateListenTo)(
4244
+ (0, import_editor_v1_adapters19.__privateListenTo)(
4134
4245
  [
4135
- (0, import_editor_v1_adapters18.commandEndEvent)("editor/documents/switch"),
4136
- (0, import_editor_v1_adapters18.commandEndEvent)("editor/documents/attach-preview"),
4137
- (0, import_editor_v1_adapters18.commandEndEvent)("document/elements/settings")
4246
+ (0, import_editor_v1_adapters19.commandEndEvent)("editor/documents/switch"),
4247
+ (0, import_editor_v1_adapters19.commandEndEvent)("editor/documents/attach-preview"),
4248
+ (0, import_editor_v1_adapters19.commandEndEvent)("document/elements/settings")
4138
4249
  ],
4139
4250
  pushUpdateIfChanged
4140
4251
  );
@@ -4143,7 +4254,7 @@ var initGeneralContextResource = (reg) => {
4143
4254
 
4144
4255
  // src/mcp/resources/selected-element-resource.ts
4145
4256
  var import_editor_elements12 = require("@elementor/editor-elements");
4146
- var import_editor_v1_adapters19 = require("@elementor/editor-v1-adapters");
4257
+ var import_editor_v1_adapters20 = require("@elementor/editor-v1-adapters");
4147
4258
  var SELECTED_ELEMENT_URI = "elementor://context/selected-element";
4148
4259
  var initSelectedElementResource = (reg) => {
4149
4260
  const { resource, sendResourceUpdated } = reg;
@@ -4174,11 +4285,11 @@ var initSelectedElementResource = (reg) => {
4174
4285
  }
4175
4286
  publishIfChanged(readSelectionFromEditor());
4176
4287
  };
4177
- (0, import_editor_v1_adapters19.__privateListenTo)(
4288
+ (0, import_editor_v1_adapters20.__privateListenTo)(
4178
4289
  [
4179
- (0, import_editor_v1_adapters19.commandEndEvent)("document/elements/select"),
4180
- (0, import_editor_v1_adapters19.commandEndEvent)("document/elements/deselect-all"),
4181
- (0, import_editor_v1_adapters19.commandEndEvent)("document/elements/settings")
4290
+ (0, import_editor_v1_adapters20.commandEndEvent)("document/elements/select"),
4291
+ (0, import_editor_v1_adapters20.commandEndEvent)("document/elements/deselect-all"),
4292
+ (0, import_editor_v1_adapters20.commandEndEvent)("document/elements/settings")
4182
4293
  ],
4183
4294
  onCommand
4184
4295
  );
@@ -4296,9 +4407,9 @@ var import_editor_elements15 = require("@elementor/editor-elements");
4296
4407
 
4297
4408
  // src/mcp/utils/do-update-element-property.ts
4298
4409
  var import_editor_elements13 = require("@elementor/editor-elements");
4299
- var import_editor_props7 = require("@elementor/editor-props");
4410
+ var import_editor_props8 = require("@elementor/editor-props");
4300
4411
  var import_editor_styles5 = require("@elementor/editor-styles");
4301
- var import_editor_v1_adapters20 = require("@elementor/editor-v1-adapters");
4412
+ var import_editor_v1_adapters21 = require("@elementor/editor-v1-adapters");
4302
4413
 
4303
4414
  // src/mcp/utils/merge-custom-css.ts
4304
4415
  var CUSTOM_CSS_SEPARATOR = "\n";
@@ -4321,9 +4432,12 @@ var LOCAL_STYLE_META = {
4321
4432
  };
4322
4433
  function resolvePropValue(value, forceKey) {
4323
4434
  const Utils = window.elementorV2.editorVariables.Utils;
4324
- return import_editor_props7.Schema.adjustLlmPropValueSchema(value, {
4435
+ return import_editor_props8.Schema.adjustLlmPropValueSchema(value, {
4325
4436
  forceKey,
4326
- transformers: Utils.globalVariablesLLMResolvers
4437
+ transformers: {
4438
+ ...Utils.globalVariablesLLMResolvers,
4439
+ [DYNAMIC_PROP_TYPE_KEY]: dynamicTagLLMResolver
4440
+ }
4327
4441
  });
4328
4442
  }
4329
4443
  var doUpdateElementProperty = (params) => {
@@ -4373,7 +4487,7 @@ var doUpdateElementProperty = (params) => {
4373
4487
  }
4374
4488
  if (propertyRawSchema.kind === "plain") {
4375
4489
  if (typeof propertyMapValue[stylePropName] !== "object") {
4376
- const propUtil = (0, import_editor_props7.getPropSchemaFromCache)(propertyRawSchema.key);
4490
+ const propUtil = (0, import_editor_props8.getPropSchemaFromCache)(propertyRawSchema.key);
4377
4491
  if (propUtil) {
4378
4492
  const plainValue = propUtil.create(propertyMapValue[stylePropName]);
4379
4493
  propertyMapValue[stylePropName] = plainValue;
@@ -4426,7 +4540,7 @@ var doUpdateElementProperty = (params) => {
4426
4540
  }
4427
4541
  const propKey = elementPropSchema[propertyName].key;
4428
4542
  const value = resolvePropValue(propertyValue, propKey);
4429
- const { valid, jsonSchema } = import_editor_props7.Schema.validatePropValue(elementPropSchema[propertyName], propertyValue);
4543
+ const { valid, jsonSchema } = import_editor_props8.Schema.validatePropValue(elementPropSchema[propertyName], propertyValue);
4430
4544
  if (!valid) {
4431
4545
  throw new Error(
4432
4546
  `Invalid PropValue for elementId: ${elementId}. PropKey: ${propKey}, PropValue: ${JSON.stringify(
@@ -4442,12 +4556,12 @@ Expected Schema: ${jsonSchema}`
4442
4556
  },
4443
4557
  withHistory: false
4444
4558
  });
4445
- (0, import_editor_v1_adapters20.__privateRunCommandSync)("document/save/set-is-modified", { status: true }, { internal: true });
4559
+ (0, import_editor_v1_adapters21.__privateRunCommandSync)("document/save/set-is-modified", { status: true }, { internal: true });
4446
4560
  };
4447
4561
 
4448
4562
  // src/mcp/utils/validate-input.ts
4449
4563
  var import_editor_elements14 = require("@elementor/editor-elements");
4450
- var import_editor_props8 = require("@elementor/editor-props");
4564
+ var import_editor_props9 = require("@elementor/editor-props");
4451
4565
  var import_editor_styles6 = require("@elementor/editor-styles");
4452
4566
  var _widgetsSchema = null;
4453
4567
  var validateInput = {
@@ -4481,10 +4595,10 @@ var validateInput = {
4481
4595
  if (!propSchema) {
4482
4596
  errors.push(`Property "${propName}" is not defined in the schema.`);
4483
4597
  hasInvalidKey = true;
4484
- } else if (!import_editor_props8.Schema.isPropKeyConfigurable(propName, propSchema)) {
4598
+ } else if (!import_editor_props9.Schema.isPropKeyConfigurable(propName, propSchema)) {
4485
4599
  errors.push(`Property "${propName}" is not configurable.`);
4486
4600
  } else {
4487
- const { valid } = import_editor_props8.Schema.validatePropValue(propSchema, propValue);
4601
+ const { valid } = import_editor_props9.Schema.validatePropValue(propSchema, propValue);
4488
4602
  if (!valid) {
4489
4603
  errors.push(
4490
4604
  `Invalid property "${propName}". Validate input with resource [${STYLE_SCHEMA_URI.replace(
@@ -4868,6 +4982,13 @@ Some elements have internal tree structures (nesting). When using these elements
4868
4982
  - NO LINKS in configuration
4869
4983
  - Retry on errors up to 10x
4870
4984
 
4985
+ # DYNAMIC TAGS
4986
+ - A value can be made dynamic wherever its schema exposes a \`"$$type": "dynamic"\` variant. This may be the property root OR a NESTED field (e.g. an image's \`src\`, not the whole \`image\`).
4987
+ - Put the dynamic object EXACTLY at that node, in place of the static variant. The variant's \`name\` lists the allowed tags; read [${DYNAMIC_TAGS_URI}] for each tag's settings schema.
4988
+ - Provide at that node: \`{ "$$type": "dynamic", "value": { "name": "<allowed tag>", "settings": { ... } } }\`
4989
+ - Example (image): \`{ "$$type": "image", "value": { "src": { "$$type": "dynamic", "value": { "name": "<image tag>", "settings": { ... } } } } }\`
4990
+ - Do NOT send \`group\` (it is resolved automatically). Populate \`settings\` strictly per the tag's schema; use \`{}\` only when it has none.
4991
+
4871
4992
  Note about configuration ids: These names are visible to the end-user, make sure they make sense, related and relevant.
4872
4993
 
4873
4994
  # DESIGN PHILOSOPHY: CONTEXT-DRIVEN CREATIVITY
@@ -5089,7 +5210,8 @@ var initBuildCompositionsTool = (reg) => {
5089
5210
  { description: "Global Classes", uri: "elementor://global-classes" },
5090
5211
  { description: "Global Variables", uri: "elementor://global-variables" },
5091
5212
  { description: "Styles best practices", uri: BEST_PRACTICES_URI },
5092
- { description: "Available widgets for this tool", uri: AVAILABLE_WIDGETS_URI_V4 }
5213
+ { description: "Available widgets for this tool", uri: AVAILABLE_WIDGETS_URI_V4 },
5214
+ { description: "Dynamic tags catalog", uri: DYNAMIC_TAGS_URI }
5093
5215
  ],
5094
5216
  outputSchema,
5095
5217
  handler: async (rawParams) => {
@@ -5254,6 +5376,21 @@ For styleProperties, use the style schema provided, as it also uses the PropType
5254
5376
  For all non-primitive types, provide the key property as defined in the schema as $$type in the generated object, as it is MANDATORY for parsing.
5255
5377
 
5256
5378
  Use the EXACT "PROP-TYPE" Schema given, and ALWAYS include the "key" property from the original configuration for every property you are changing.
5379
+
5380
+ # Dynamic tags
5381
+ A value can be made dynamic wherever its schema exposes a variant with "$$type": "dynamic". This may be the property root OR a NESTED field: for example an image is made dynamic on its "src" (the root stays "image"), NOT on the whole "image" value.
5382
+ Put the dynamic object EXACTLY at the node whose schema offers the "dynamic" variant, in place of the static variant. The variant's "name" enumerates the tags allowed at that node.
5383
+ 1. Read the [${DYNAMIC_TAGS_URI}] resource for each allowed tag's settings schema.
5384
+ 2. Provide, at that node:
5385
+ {
5386
+ "$$type": "dynamic",
5387
+ "value": {
5388
+ "name": "<allowed tag name>",
5389
+ "settings": { /* strictly per the tag's settings schema */ }
5390
+ }
5391
+ }
5392
+ Image example: { "$$type": "image", "value": { "src": { "$$type": "dynamic", "value": { "name": "<image tag>", "settings": { ... } } } } }
5393
+ Do NOT send "group" (it is resolved automatically). Use { "settings": {} } only when the tag has no settings.
5257
5394
  `);
5258
5395
  configureElementToolPrompt.parameter("elementId", "The ID of the element to configure. MANDATORY.");
5259
5396
  configureElementToolPrompt.parameter(
@@ -5361,7 +5498,8 @@ var initConfigureElementTool = (reg) => {
5361
5498
  requiredResources: [
5362
5499
  { description: "Widgets schema", uri: WIDGET_SCHEMA_URI },
5363
5500
  { description: "Styles schema", uri: STYLE_SCHEMA_URI },
5364
- { description: "Configure element guide", uri: CONFIGURE_ELEMENT_GUIDE_URI }
5501
+ { description: "Configure element guide", uri: CONFIGURE_ELEMENT_GUIDE_URI },
5502
+ { description: "Dynamic tags catalog", uri: DYNAMIC_TAGS_URI }
5365
5503
  ],
5366
5504
  handler: ({ elementId, propertiesToChange, elementType, stylePropertiesToChange }) => {
5367
5505
  const widgetData = (0, import_editor_elements17.getWidgetsCache)()?.[elementType];
@@ -5457,7 +5595,7 @@ Check the styles schema at the resource [${STYLE_SCHEMA_URI.replace(
5457
5595
 
5458
5596
  // src/mcp/tools/get-element-config/tool.ts
5459
5597
  var import_editor_elements18 = require("@elementor/editor-elements");
5460
- var import_editor_props9 = require("@elementor/editor-props");
5598
+ var import_editor_props10 = require("@elementor/editor-props");
5461
5599
  var import_schema5 = require("@elementor/schema");
5462
5600
  var schema = {
5463
5601
  elementId: import_schema5.z.string()
@@ -5514,7 +5652,7 @@ var initGetElementConfigTool = (reg) => {
5514
5652
  }
5515
5653
  const propValues = {};
5516
5654
  const stylePropValues = {};
5517
- import_editor_props9.Schema.configurableKeys(propSchema).forEach((key) => {
5655
+ import_editor_props10.Schema.configurableKeys(propSchema).forEach((key) => {
5518
5656
  propValues[key] = structuredClone(elementRawSettings.get(key));
5519
5657
  });
5520
5658
  const elementStyles = (0, import_editor_elements18.getElementStyles)(elementId) || {};
@@ -5550,9 +5688,11 @@ var initGetElementConfigTool = (reg) => {
5550
5688
 
5551
5689
  // src/mcp/canvas-mcp.ts
5552
5690
  var initCanvasMcp = (reg) => {
5691
+ import_editor_props11.Schema.setDynamicTagNamesResolver(getDynamicTagNamesByCategories);
5553
5692
  initWidgetsSchemaResource(reg);
5554
5693
  initAvailableWidgetsResource(reg);
5555
5694
  initDocumentStructureResource(reg);
5695
+ initDynamicTagsResource(reg);
5556
5696
  initSelectedElementResource(reg);
5557
5697
  initEditorStateResource(reg);
5558
5698
  initGeneralContextResource(reg);
@@ -5677,14 +5817,14 @@ Note: The "size" property controls image resolution/loading, not visual size. Se
5677
5817
  // src/prevent-link-in-link-commands.ts
5678
5818
  var import_editor_elements19 = require("@elementor/editor-elements");
5679
5819
  var import_editor_notifications3 = require("@elementor/editor-notifications");
5680
- var import_editor_v1_adapters21 = require("@elementor/editor-v1-adapters");
5820
+ var import_editor_v1_adapters22 = require("@elementor/editor-v1-adapters");
5681
5821
  var import_i18n4 = require("@wordpress/i18n");
5682
5822
  function initLinkInLinkPrevention() {
5683
- (0, import_editor_v1_adapters21.blockCommand)({
5823
+ (0, import_editor_v1_adapters22.blockCommand)({
5684
5824
  command: "document/elements/paste",
5685
5825
  condition: blockLinkInLinkPaste
5686
5826
  });
5687
- (0, import_editor_v1_adapters21.blockCommand)({
5827
+ (0, import_editor_v1_adapters22.blockCommand)({
5688
5828
  command: "document/elements/move",
5689
5829
  condition: blockLinkInLinkMove
5690
5830
  });
@@ -5759,12 +5899,12 @@ function shouldBlock(sourceElements, targetElements) {
5759
5899
 
5760
5900
  // src/style-commands/paste-style.ts
5761
5901
  var import_editor_elements22 = require("@elementor/editor-elements");
5762
- var import_editor_props11 = require("@elementor/editor-props");
5763
- var import_editor_v1_adapters23 = require("@elementor/editor-v1-adapters");
5902
+ var import_editor_props13 = require("@elementor/editor-props");
5903
+ var import_editor_v1_adapters24 = require("@elementor/editor-v1-adapters");
5764
5904
 
5765
5905
  // src/utils/command-utils.ts
5766
5906
  var import_editor_elements20 = require("@elementor/editor-elements");
5767
- var import_editor_props10 = require("@elementor/editor-props");
5907
+ var import_editor_props12 = require("@elementor/editor-props");
5768
5908
  var import_i18n5 = require("@wordpress/i18n");
5769
5909
  function hasAtomicWidgets(args) {
5770
5910
  const { containers = [args.container] } = args;
@@ -5782,7 +5922,7 @@ function getClassesProp(container) {
5782
5922
  return null;
5783
5923
  }
5784
5924
  const [propKey] = Object.entries(propsSchema).find(
5785
- ([, propType]) => propType.kind === "plain" && propType.key === import_editor_props10.CLASSES_PROP_KEY
5925
+ ([, propType]) => propType.kind === "plain" && propType.key === import_editor_props12.CLASSES_PROP_KEY
5786
5926
  ) ?? [];
5787
5927
  return propKey ?? null;
5788
5928
  }
@@ -5807,9 +5947,9 @@ function getTitleForContainers(containers) {
5807
5947
  // src/style-commands/undoable-actions/paste-element-style.ts
5808
5948
  var import_editor_elements21 = require("@elementor/editor-elements");
5809
5949
  var import_editor_styles_repository4 = require("@elementor/editor-styles-repository");
5810
- var import_editor_v1_adapters22 = require("@elementor/editor-v1-adapters");
5950
+ var import_editor_v1_adapters23 = require("@elementor/editor-v1-adapters");
5811
5951
  var import_i18n6 = require("@wordpress/i18n");
5812
- var undoablePasteElementStyle = () => (0, import_editor_v1_adapters22.undoable)(
5952
+ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters23.undoable)(
5813
5953
  {
5814
5954
  do: ({ containers, newStyle }) => {
5815
5955
  return containers.map((container) => {
@@ -5885,12 +6025,12 @@ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters22.undoable)(
5885
6025
  // src/style-commands/paste-style.ts
5886
6026
  function initPasteStyleCommand() {
5887
6027
  const pasteElementStyleCommand = undoablePasteElementStyle();
5888
- (0, import_editor_v1_adapters23.blockCommand)({
6028
+ (0, import_editor_v1_adapters24.blockCommand)({
5889
6029
  command: "document/elements/paste-style",
5890
6030
  condition: hasAtomicWidgets
5891
6031
  });
5892
- (0, import_editor_v1_adapters23.__privateListenTo)(
5893
- (0, import_editor_v1_adapters23.commandStartEvent)("document/elements/paste-style"),
6032
+ (0, import_editor_v1_adapters24.__privateListenTo)(
6033
+ (0, import_editor_v1_adapters24.commandStartEvent)("document/elements/paste-style"),
5894
6034
  (e) => pasteStyles(e.args, pasteElementStyleCommand)
5895
6035
  );
5896
6036
  }
@@ -5931,8 +6071,8 @@ function pasteClasses(containers, classes) {
5931
6071
  return;
5932
6072
  }
5933
6073
  const classesSetting = (0, import_editor_elements22.getElementSetting)(container.id, classesProp);
5934
- const currentClasses = import_editor_props11.classesPropTypeUtil.extract(classesSetting) ?? [];
5935
- const newClasses = import_editor_props11.classesPropTypeUtil.create(Array.from(/* @__PURE__ */ new Set([...classes, ...currentClasses])));
6074
+ const currentClasses = import_editor_props13.classesPropTypeUtil.extract(classesSetting) ?? [];
6075
+ const newClasses = import_editor_props13.classesPropTypeUtil.create(Array.from(/* @__PURE__ */ new Set([...classes, ...currentClasses])));
5936
6076
  (0, import_editor_elements22.updateElementSettings)({
5937
6077
  id: container.id,
5938
6078
  props: { [classesProp]: newClasses }
@@ -5941,14 +6081,14 @@ function pasteClasses(containers, classes) {
5941
6081
  }
5942
6082
 
5943
6083
  // src/style-commands/reset-style.ts
5944
- var import_editor_v1_adapters25 = require("@elementor/editor-v1-adapters");
6084
+ var import_editor_v1_adapters26 = require("@elementor/editor-v1-adapters");
5945
6085
 
5946
6086
  // src/style-commands/undoable-actions/reset-element-style.ts
5947
6087
  var import_editor_elements23 = require("@elementor/editor-elements");
5948
6088
  var import_editor_styles_repository5 = require("@elementor/editor-styles-repository");
5949
- var import_editor_v1_adapters24 = require("@elementor/editor-v1-adapters");
6089
+ var import_editor_v1_adapters25 = require("@elementor/editor-v1-adapters");
5950
6090
  var import_i18n7 = require("@wordpress/i18n");
5951
- var undoableResetElementStyle = () => (0, import_editor_v1_adapters24.undoable)(
6091
+ var undoableResetElementStyle = () => (0, import_editor_v1_adapters25.undoable)(
5952
6092
  {
5953
6093
  do: ({ containers }) => {
5954
6094
  return containers.map((container) => {
@@ -5992,12 +6132,12 @@ var undoableResetElementStyle = () => (0, import_editor_v1_adapters24.undoable)(
5992
6132
  // src/style-commands/reset-style.ts
5993
6133
  function initResetStyleCommand() {
5994
6134
  const resetElementStyles = undoableResetElementStyle();
5995
- (0, import_editor_v1_adapters25.blockCommand)({
6135
+ (0, import_editor_v1_adapters26.blockCommand)({
5996
6136
  command: "document/elements/reset-style",
5997
6137
  condition: hasAtomicWidgets
5998
6138
  });
5999
- (0, import_editor_v1_adapters25.__privateListenTo)(
6000
- (0, import_editor_v1_adapters25.commandStartEvent)("document/elements/reset-style"),
6139
+ (0, import_editor_v1_adapters26.__privateListenTo)(
6140
+ (0, import_editor_v1_adapters26.commandStartEvent)("document/elements/reset-style"),
6001
6141
  (e) => resetStyles(e.args, resetElementStyles)
6002
6142
  );
6003
6143
  }
@@ -6146,9 +6286,9 @@ function getRectClipPath(rect, viewport) {
6146
6286
  }
6147
6287
 
6148
6288
  // src/hooks/use-canvas-document.ts
6149
- var import_editor_v1_adapters26 = require("@elementor/editor-v1-adapters");
6289
+ var import_editor_v1_adapters27 = require("@elementor/editor-v1-adapters");
6150
6290
  function useCanvasDocument() {
6151
- return (0, import_editor_v1_adapters26.__privateUseListenTo)((0, import_editor_v1_adapters26.commandEndEvent)("editor/documents/attach-preview"), () => (0, import_editor_v1_adapters26.getCanvasIframeDocument)());
6291
+ return (0, import_editor_v1_adapters27.__privateUseListenTo)((0, import_editor_v1_adapters27.commandEndEvent)("editor/documents/attach-preview"), () => (0, import_editor_v1_adapters27.getCanvasIframeDocument)());
6152
6292
  }
6153
6293
 
6154
6294
  // src/hooks/use-escape-on-canvas.ts