@elementor/editor-canvas 0.17.0 → 0.18.1

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @elementor/editor-canvas@0.17.0 build
2
+ > @elementor/editor-canvas@0.18.1 build
3
3
  > tsup --config=../../tsup.build.ts
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -10,13 +10,13 @@
10
10
  CLI Cleaning output folder
11
11
  ESM Build start
12
12
  CJS Build start
13
- ESM dist/index.mjs 39.11 KB
14
- ESM dist/index.mjs.map 83.52 KB
15
- ESM ⚡️ Build success in 216ms
16
- CJS dist/index.js 42.21 KB
17
- CJS dist/index.js.map 83.29 KB
18
- CJS ⚡️ Build success in 220ms
13
+ ESM dist/index.mjs 40.86 KB
14
+ ESM dist/index.mjs.map 86.61 KB
15
+ ESM ⚡️ Build success in 265ms
16
+ CJS dist/index.js 43.99 KB
17
+ CJS dist/index.js.map 86.63 KB
18
+ CJS ⚡️ Build success in 265ms
19
19
  DTS Build start
20
- DTS ⚡️ Build success in 21039ms
21
- DTS dist/index.d.mts 1.24 KB
22
- DTS dist/index.d.ts 1.24 KB
20
+ DTS ⚡️ Build success in 19913ms
21
+ DTS dist/index.d.mts 1.28 KB
22
+ DTS dist/index.d.ts 1.28 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # @elementor/editor-canvas
2
2
 
3
+ ## 0.18.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 2b77932: Fix legacy CSS links not prioritized correctly
8
+
9
+ ## 0.18.0
10
+
11
+ ### Minor Changes
12
+
13
+ - f9d5d33: Change element selection overlay position
14
+
15
+ ### Patch Changes
16
+
17
+ - 42c42ee: Remove side-effects
18
+ - 5fa575c: Fix when switching documents it removes all the previous document styles
19
+ - 64574e3: Refactor styles provider as a preparation for header/footer styles not being rendered
20
+ - Updated dependencies [42c42ee]
21
+ - Updated dependencies [5fa575c]
22
+ - Updated dependencies [64574e3]
23
+ - Updated dependencies [fe0ab45]
24
+ - Updated dependencies [fd5251c]
25
+ - @elementor/editor-styles-repository@0.8.4
26
+ - @elementor/editor-notifications@1.0.1
27
+ - @elementor/editor@0.18.6
28
+ - @elementor/editor-elements@0.8.1
29
+ - @elementor/editor-props@0.12.0
30
+ - @elementor/editor-styles@0.6.6
31
+
3
32
  ## 0.17.0
4
33
 
5
34
  ### Minor Changes
package/dist/index.d.mts CHANGED
@@ -1,6 +1,8 @@
1
1
  import * as _elementor_editor_props from '@elementor/editor-props';
2
2
  import { AnyTransformable } from '@elementor/editor-props';
3
3
 
4
+ declare function init(): void;
5
+
4
6
  type UnbrandedTransformer<TValue> = (value: TValue, options: {
5
7
  key: string;
6
8
  signal?: AbortSignal;
@@ -24,4 +26,4 @@ declare const settingsTransformersRegistry: {
24
26
 
25
27
  declare function createTransformer<TValue = never>(cb: TValue extends AnyTransformable ? 'Transformable values are invalid, use the actual value instead.' : UnbrandedTransformer<TValue>): Transformer<NoInfer<TValue>>;
26
28
 
27
- export { createTransformer, settingsTransformersRegistry, styleTransformersRegistry };
29
+ export { createTransformer, init, settingsTransformersRegistry, styleTransformersRegistry };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import * as _elementor_editor_props from '@elementor/editor-props';
2
2
  import { AnyTransformable } from '@elementor/editor-props';
3
3
 
4
+ declare function init(): void;
5
+
4
6
  type UnbrandedTransformer<TValue> = (value: TValue, options: {
5
7
  key: string;
6
8
  signal?: AbortSignal;
@@ -24,4 +26,4 @@ declare const settingsTransformersRegistry: {
24
26
 
25
27
  declare function createTransformer<TValue = never>(cb: TValue extends AnyTransformable ? 'Transformable values are invalid, use the actual value instead.' : UnbrandedTransformer<TValue>): Transformer<NoInfer<TValue>>;
26
28
 
27
- export { createTransformer, settingsTransformersRegistry, styleTransformersRegistry };
29
+ export { createTransformer, init, settingsTransformersRegistry, styleTransformersRegistry };
package/dist/index.js CHANGED
@@ -31,6 +31,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  var index_exports = {};
32
32
  __export(index_exports, {
33
33
  createTransformer: () => createTransformer,
34
+ init: () => init,
34
35
  settingsTransformersRegistry: () => settingsTransformersRegistry,
35
36
  styleTransformersRegistry: () => styleTransformersRegistry
36
37
  });
@@ -98,8 +99,8 @@ function useFloatingOnElement({ element, isSelected }) {
98
99
  (0, import_react3.size)({
99
100
  apply({ elements, rects }) {
100
101
  Object.assign(elements.floating.style, {
101
- width: `${rects.reference.width}px`,
102
- height: `${rects.reference.height}px`
102
+ width: `${rects.reference.width + 2}px`,
103
+ height: `${rects.reference.height + 2}px`
103
104
  });
104
105
  }
105
106
  }),
@@ -167,13 +168,68 @@ function useElementsDom() {
167
168
 
168
169
  // src/components/style-renderer.tsx
169
170
  var React3 = __toESM(require("react"));
170
- var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
171
+ var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
171
172
  var import_ui2 = require("@elementor/ui");
172
173
 
174
+ // src/hooks/use-documents-css-links.ts
175
+ var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters");
176
+
177
+ // src/sync/get-canvas-iframe-document.ts
178
+ function getCanvasIframeDocument() {
179
+ const extendedWindow = window;
180
+ return extendedWindow.elementor?.$preview?.[0]?.contentDocument;
181
+ }
182
+
183
+ // src/hooks/use-documents-css-links.ts
184
+ var REMOVED_ATTR = "data-e-removed";
185
+ var DOCUMENT_WRAPPER_ATTR = "data-elementor-id";
186
+ var CSS_LINK_ID_PREFIX = "elementor-post-";
187
+ var CSS_LINK_ID_SUFFIX = "-css";
188
+ function useDocumentsCssLinks() {
189
+ return (0, import_editor_v1_adapters2.__privateUseListenTo)((0, import_editor_v1_adapters2.commandEndEvent)("editor/documents/attach-preview"), () => {
190
+ const iframeDocument = getCanvasIframeDocument();
191
+ if (!iframeDocument) {
192
+ return [];
193
+ }
194
+ const relevantLinkIds = getDocumentsIdsInCanvas(iframeDocument).map(
195
+ (id) => `${CSS_LINK_ID_PREFIX}${id}${CSS_LINK_ID_SUFFIX}`
196
+ );
197
+ const links = getDocumentsCssLinks(iframeDocument).filter(
198
+ (link) => relevantLinkIds.includes(link.getAttribute("id") ?? "")
199
+ );
200
+ links.forEach((link) => {
201
+ if (!link.hasAttribute(REMOVED_ATTR)) {
202
+ link.remove();
203
+ }
204
+ });
205
+ return links.map((link) => ({
206
+ ...getLinkAttrs(link),
207
+ id: link.getAttribute("id") ?? "",
208
+ [REMOVED_ATTR]: true
209
+ }));
210
+ });
211
+ }
212
+ function getDocumentsIdsInCanvas(document) {
213
+ return [...document.body.querySelectorAll(`[${DOCUMENT_WRAPPER_ATTR}]`) ?? []].map(
214
+ (el) => el.getAttribute(DOCUMENT_WRAPPER_ATTR) || ""
215
+ );
216
+ }
217
+ function getDocumentsCssLinks(document) {
218
+ return [
219
+ ...document.head.querySelectorAll(
220
+ `link[rel="stylesheet"][id^=${CSS_LINK_ID_PREFIX}][id$=${CSS_LINK_ID_SUFFIX}]`
221
+ ) ?? []
222
+ ];
223
+ }
224
+ function getLinkAttrs(el) {
225
+ const entries = [...el.attributes].map((attr) => [attr.name, attr.value]);
226
+ return Object.fromEntries(entries);
227
+ }
228
+
173
229
  // src/hooks/use-style-items.ts
174
230
  var import_react8 = require("react");
175
231
  var import_editor_styles_repository = require("@elementor/editor-styles-repository");
176
- var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters");
232
+ var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
177
233
 
178
234
  // src/utils/abort-previous-runs.ts
179
235
  function abortPreviousRuns(cb) {
@@ -460,7 +516,7 @@ function useStyleItems() {
460
516
  };
461
517
  }, [providerAndSubscribers]);
462
518
  useOnMount(() => {
463
- (0, import_editor_v1_adapters2.registerDataHook)("after", "editor/documents/attach-preview", async () => {
519
+ (0, import_editor_v1_adapters3.registerDataHook)("after", "editor/documents/attach-preview", async () => {
464
520
  const promises = providerAndSubscribers.map(async ({ subscriber }) => subscriber());
465
521
  await Promise.all(promises);
466
522
  });
@@ -469,32 +525,27 @@ function useStyleItems() {
469
525
  }
470
526
  function createProviderSubscriber({ provider, renderStyles, setStyleItems }) {
471
527
  return abortPreviousRuns(
472
- (abortController) => signalizedProcess(abortController.signal).then((_, signal) => renderStyles({ styles: provider.actions.get(), signal })).then((items) => {
528
+ (abortController) => signalizedProcess(abortController.signal).then((_, signal) => renderStyles({ styles: provider.actions.all(), signal })).then((items) => {
473
529
  setStyleItems((prev) => ({
474
530
  ...prev,
475
- [provider.key]: { provider, items }
531
+ [provider.getKey()]: { provider, items }
476
532
  }));
477
533
  }).execute()
478
534
  );
479
535
  }
480
536
 
481
- // src/sync/get-canvas-iframe-head.ts
482
- function getCanvasIframeHead() {
483
- const extendedWindow = window;
484
- return extendedWindow.elementor?.$preview?.[0]?.contentDocument?.head;
485
- }
486
-
487
537
  // src/components/style-renderer.tsx
488
538
  function StyleRenderer() {
489
539
  const container = usePortalContainer();
490
540
  const styleItems = useStyleItems();
541
+ const linksAttrs = useDocumentsCssLinks();
491
542
  if (!container) {
492
543
  return null;
493
544
  }
494
- return /* @__PURE__ */ React3.createElement(import_ui2.Portal, { container }, /* @__PURE__ */ React3.createElement(React3.Fragment, null, styleItems.map((item) => /* @__PURE__ */ React3.createElement("style", { "data-e-style-id": item.id, key: item.id }, item.value))));
545
+ return /* @__PURE__ */ React3.createElement(import_ui2.Portal, { container }, styleItems.map((item) => /* @__PURE__ */ React3.createElement("style", { "data-e-style-id": item.id, key: item.id }, item.value)), linksAttrs.map((attrs) => /* @__PURE__ */ React3.createElement("link", { ...attrs, key: attrs.id })));
495
546
  }
496
547
  function usePortalContainer() {
497
- return (0, import_editor_v1_adapters3.__privateUseListenTo)((0, import_editor_v1_adapters3.commandEndEvent)("editor/documents/attach-preview"), () => getCanvasIframeHead());
548
+ return (0, import_editor_v1_adapters4.__privateUseListenTo)((0, import_editor_v1_adapters4.commandEndEvent)("editor/documents/attach-preview"), () => getCanvasIframeDocument()?.head);
498
549
  }
499
550
 
500
551
  // src/settings-transformers-registry.ts
@@ -678,7 +729,7 @@ function initStyleTransformers() {
678
729
 
679
730
  // src/legacy/init-legacy-views.ts
680
731
  var import_editor_elements2 = require("@elementor/editor-elements");
681
- var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
732
+ var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
682
733
 
683
734
  // src/renderers/create-dom-renderer.ts
684
735
  var import_twing = require("@elementor/twing");
@@ -881,7 +932,7 @@ function createTemplatedElementViewClassDeclaration({
881
932
 
882
933
  // src/legacy/init-legacy-views.ts
883
934
  function initLegacyViews() {
884
- (0, import_editor_v1_adapters4.__privateListenTo)((0, import_editor_v1_adapters4.v1ReadyEvent)(), () => {
935
+ (0, import_editor_v1_adapters5.__privateListenTo)((0, import_editor_v1_adapters5.v1ReadyEvent)(), () => {
885
936
  const config = (0, import_editor_elements2.getWidgetsCache)() ?? {};
886
937
  const legacyWindow = window;
887
938
  const renderer = createDomRenderer();
@@ -898,14 +949,14 @@ function initLegacyViews() {
898
949
  // src/prevent-link-in-link-commands.ts
899
950
  var import_editor_elements3 = require("@elementor/editor-elements");
900
951
  var import_editor_notifications = require("@elementor/editor-notifications");
901
- var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
952
+ var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
902
953
  var import_i18n = require("@wordpress/i18n");
903
954
  function initLinkInLinkPrevention() {
904
- (0, import_editor_v1_adapters5.blockCommand)({
955
+ (0, import_editor_v1_adapters6.blockCommand)({
905
956
  command: "document/elements/paste",
906
957
  condition: blockLinkInLinkPaste
907
958
  });
908
- (0, import_editor_v1_adapters5.blockCommand)({
959
+ (0, import_editor_v1_adapters6.blockCommand)({
909
960
  command: "document/elements/move",
910
961
  condition: blockLinkInLinkMove
911
962
  });
@@ -979,12 +1030,12 @@ function shouldBlock(sourceElements, targetElements) {
979
1030
  }
980
1031
 
981
1032
  // src/style-commands/paste-style.ts
982
- var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters");
1033
+ var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
983
1034
 
984
1035
  // src/style-commands/undoable-actions/paste-element-style.ts
985
1036
  var import_editor_elements5 = require("@elementor/editor-elements");
986
1037
  var import_editor_styles_repository2 = require("@elementor/editor-styles-repository");
987
- var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
1038
+ var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters");
988
1039
  var import_i18n3 = require("@wordpress/i18n");
989
1040
 
990
1041
  // src/style-commands/utils.ts
@@ -1030,7 +1081,7 @@ function getTitleForContainers(containers) {
1030
1081
  }
1031
1082
 
1032
1083
  // src/style-commands/undoable-actions/paste-element-style.ts
1033
- var undoablePasteElementStyle = () => (0, import_editor_v1_adapters6.undoable)(
1084
+ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters7.undoable)(
1034
1085
  {
1035
1086
  do: ({ containers, newStyle }) => {
1036
1087
  return containers.map((container) => {
@@ -1061,7 +1112,7 @@ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters6.undoable)(
1061
1112
  revertData.styleId = (0, import_editor_elements5.createElementStyle)({
1062
1113
  elementId,
1063
1114
  classesProp,
1064
- label: import_editor_styles_repository2.LOCAL_STYLES_RESERVED_LABEL,
1115
+ label: import_editor_styles_repository2.ELEMENTS_STYLES_RESERVED_LABEL,
1065
1116
  ...firstVariant,
1066
1117
  additionalVariants
1067
1118
  });
@@ -1088,7 +1139,7 @@ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters6.undoable)(
1088
1139
  (0, import_editor_elements5.createElementStyle)({
1089
1140
  elementId: container.id,
1090
1141
  classesProp,
1091
- label: import_editor_styles_repository2.LOCAL_STYLES_RESERVED_LABEL,
1142
+ label: import_editor_styles_repository2.ELEMENTS_STYLES_RESERVED_LABEL,
1092
1143
  styleId: revertData.styleId,
1093
1144
  ...firstVariant,
1094
1145
  additionalVariants
@@ -1105,12 +1156,12 @@ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters6.undoable)(
1105
1156
  // src/style-commands/paste-style.ts
1106
1157
  function initPasteStyleCommand() {
1107
1158
  const pasteElementStyleCommand = undoablePasteElementStyle();
1108
- (0, import_editor_v1_adapters7.blockCommand)({
1159
+ (0, import_editor_v1_adapters8.blockCommand)({
1109
1160
  command: "document/elements/paste-style",
1110
1161
  condition: hasAtomicWidgets
1111
1162
  });
1112
- (0, import_editor_v1_adapters7.__privateListenTo)(
1113
- (0, import_editor_v1_adapters7.commandStartEvent)("document/elements/paste-style"),
1163
+ (0, import_editor_v1_adapters8.__privateListenTo)(
1164
+ (0, import_editor_v1_adapters8.commandStartEvent)("document/elements/paste-style"),
1114
1165
  (e) => pasteStyles(e.args, pasteElementStyleCommand)
1115
1166
  );
1116
1167
  }
@@ -1134,14 +1185,14 @@ function pasteStyles(args, pasteCallback) {
1134
1185
  }
1135
1186
 
1136
1187
  // src/style-commands/reset-style.ts
1137
- var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
1188
+ var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
1138
1189
 
1139
1190
  // src/style-commands/undoable-actions/reset-element-style.ts
1140
1191
  var import_editor_elements6 = require("@elementor/editor-elements");
1141
1192
  var import_editor_styles_repository3 = require("@elementor/editor-styles-repository");
1142
- var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
1193
+ var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
1143
1194
  var import_i18n4 = require("@wordpress/i18n");
1144
- var undoableResetElementStyle = () => (0, import_editor_v1_adapters8.undoable)(
1195
+ var undoableResetElementStyle = () => (0, import_editor_v1_adapters9.undoable)(
1145
1196
  {
1146
1197
  do: ({ containers }) => {
1147
1198
  return containers.map((container) => {
@@ -1168,7 +1219,7 @@ var undoableResetElementStyle = () => (0, import_editor_v1_adapters8.undoable)(
1168
1219
  elementId,
1169
1220
  classesProp,
1170
1221
  styleId,
1171
- label: import_editor_styles_repository3.LOCAL_STYLES_RESERVED_LABEL,
1222
+ label: import_editor_styles_repository3.ELEMENTS_STYLES_RESERVED_LABEL,
1172
1223
  ...firstVariant,
1173
1224
  additionalVariants
1174
1225
  });
@@ -1185,12 +1236,12 @@ var undoableResetElementStyle = () => (0, import_editor_v1_adapters8.undoable)(
1185
1236
  // src/style-commands/reset-style.ts
1186
1237
  function initResetStyleCommand() {
1187
1238
  const resetElementStyles = undoableResetElementStyle();
1188
- (0, import_editor_v1_adapters9.blockCommand)({
1239
+ (0, import_editor_v1_adapters10.blockCommand)({
1189
1240
  command: "document/elements/reset-style",
1190
1241
  condition: hasAtomicWidgets
1191
1242
  });
1192
- (0, import_editor_v1_adapters9.__privateListenTo)(
1193
- (0, import_editor_v1_adapters9.commandStartEvent)("document/elements/reset-style"),
1243
+ (0, import_editor_v1_adapters10.__privateListenTo)(
1244
+ (0, import_editor_v1_adapters10.commandStartEvent)("document/elements/reset-style"),
1194
1245
  (e) => resetStyles(e.args, resetElementStyles)
1195
1246
  );
1196
1247
  }
@@ -1225,12 +1276,10 @@ function init() {
1225
1276
  component: StyleRenderer
1226
1277
  });
1227
1278
  }
1228
-
1229
- // src/index.ts
1230
- init();
1231
1279
  // Annotate the CommonJS export names for ESM import in node:
1232
1280
  0 && (module.exports = {
1233
1281
  createTransformer,
1282
+ init,
1234
1283
  settingsTransformersRegistry,
1235
1284
  styleTransformersRegistry
1236
1285
  });