@elementor/editor-canvas 0.18.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.18.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.07 KB
14
- ESM dist/index.mjs.map 83.22 KB
15
- ESM ⚡️ Build success in 299ms
16
- CJS dist/index.js 42.18 KB
17
- CJS dist/index.js.map 83.28 KB
18
- CJS ⚡️ Build success in 301ms
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 19889ms
20
+ DTS ⚡️ Build success in 19913ms
21
21
  DTS dist/index.d.mts 1.28 KB
22
22
  DTS dist/index.d.ts 1.28 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
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
+
3
9
  ## 0.18.0
4
10
 
5
11
  ### Minor Changes
package/dist/index.js CHANGED
@@ -168,13 +168,68 @@ function useElementsDom() {
168
168
 
169
169
  // src/components/style-renderer.tsx
170
170
  var React3 = __toESM(require("react"));
171
- var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
171
+ var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
172
172
  var import_ui2 = require("@elementor/ui");
173
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
+
174
229
  // src/hooks/use-style-items.ts
175
230
  var import_react8 = require("react");
176
231
  var import_editor_styles_repository = require("@elementor/editor-styles-repository");
177
- var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters");
232
+ var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
178
233
 
179
234
  // src/utils/abort-previous-runs.ts
180
235
  function abortPreviousRuns(cb) {
@@ -461,7 +516,7 @@ function useStyleItems() {
461
516
  };
462
517
  }, [providerAndSubscribers]);
463
518
  useOnMount(() => {
464
- (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 () => {
465
520
  const promises = providerAndSubscribers.map(async ({ subscriber }) => subscriber());
466
521
  await Promise.all(promises);
467
522
  });
@@ -479,23 +534,18 @@ function createProviderSubscriber({ provider, renderStyles, setStyleItems }) {
479
534
  );
480
535
  }
481
536
 
482
- // src/sync/get-canvas-iframe-head.ts
483
- function getCanvasIframeHead() {
484
- const extendedWindow = window;
485
- return extendedWindow.elementor?.$preview?.[0]?.contentDocument?.head;
486
- }
487
-
488
537
  // src/components/style-renderer.tsx
489
538
  function StyleRenderer() {
490
539
  const container = usePortalContainer();
491
540
  const styleItems = useStyleItems();
541
+ const linksAttrs = useDocumentsCssLinks();
492
542
  if (!container) {
493
543
  return null;
494
544
  }
495
- 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)));
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 })));
496
546
  }
497
547
  function usePortalContainer() {
498
- 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);
499
549
  }
500
550
 
501
551
  // src/settings-transformers-registry.ts
@@ -679,7 +729,7 @@ function initStyleTransformers() {
679
729
 
680
730
  // src/legacy/init-legacy-views.ts
681
731
  var import_editor_elements2 = require("@elementor/editor-elements");
682
- var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
732
+ var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
683
733
 
684
734
  // src/renderers/create-dom-renderer.ts
685
735
  var import_twing = require("@elementor/twing");
@@ -882,7 +932,7 @@ function createTemplatedElementViewClassDeclaration({
882
932
 
883
933
  // src/legacy/init-legacy-views.ts
884
934
  function initLegacyViews() {
885
- (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)(), () => {
886
936
  const config = (0, import_editor_elements2.getWidgetsCache)() ?? {};
887
937
  const legacyWindow = window;
888
938
  const renderer = createDomRenderer();
@@ -899,14 +949,14 @@ function initLegacyViews() {
899
949
  // src/prevent-link-in-link-commands.ts
900
950
  var import_editor_elements3 = require("@elementor/editor-elements");
901
951
  var import_editor_notifications = require("@elementor/editor-notifications");
902
- var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
952
+ var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
903
953
  var import_i18n = require("@wordpress/i18n");
904
954
  function initLinkInLinkPrevention() {
905
- (0, import_editor_v1_adapters5.blockCommand)({
955
+ (0, import_editor_v1_adapters6.blockCommand)({
906
956
  command: "document/elements/paste",
907
957
  condition: blockLinkInLinkPaste
908
958
  });
909
- (0, import_editor_v1_adapters5.blockCommand)({
959
+ (0, import_editor_v1_adapters6.blockCommand)({
910
960
  command: "document/elements/move",
911
961
  condition: blockLinkInLinkMove
912
962
  });
@@ -980,12 +1030,12 @@ function shouldBlock(sourceElements, targetElements) {
980
1030
  }
981
1031
 
982
1032
  // src/style-commands/paste-style.ts
983
- var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters");
1033
+ var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
984
1034
 
985
1035
  // src/style-commands/undoable-actions/paste-element-style.ts
986
1036
  var import_editor_elements5 = require("@elementor/editor-elements");
987
1037
  var import_editor_styles_repository2 = require("@elementor/editor-styles-repository");
988
- var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
1038
+ var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters");
989
1039
  var import_i18n3 = require("@wordpress/i18n");
990
1040
 
991
1041
  // src/style-commands/utils.ts
@@ -1031,7 +1081,7 @@ function getTitleForContainers(containers) {
1031
1081
  }
1032
1082
 
1033
1083
  // src/style-commands/undoable-actions/paste-element-style.ts
1034
- var undoablePasteElementStyle = () => (0, import_editor_v1_adapters6.undoable)(
1084
+ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters7.undoable)(
1035
1085
  {
1036
1086
  do: ({ containers, newStyle }) => {
1037
1087
  return containers.map((container) => {
@@ -1106,12 +1156,12 @@ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters6.undoable)(
1106
1156
  // src/style-commands/paste-style.ts
1107
1157
  function initPasteStyleCommand() {
1108
1158
  const pasteElementStyleCommand = undoablePasteElementStyle();
1109
- (0, import_editor_v1_adapters7.blockCommand)({
1159
+ (0, import_editor_v1_adapters8.blockCommand)({
1110
1160
  command: "document/elements/paste-style",
1111
1161
  condition: hasAtomicWidgets
1112
1162
  });
1113
- (0, import_editor_v1_adapters7.__privateListenTo)(
1114
- (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"),
1115
1165
  (e) => pasteStyles(e.args, pasteElementStyleCommand)
1116
1166
  );
1117
1167
  }
@@ -1135,14 +1185,14 @@ function pasteStyles(args, pasteCallback) {
1135
1185
  }
1136
1186
 
1137
1187
  // src/style-commands/reset-style.ts
1138
- var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
1188
+ var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
1139
1189
 
1140
1190
  // src/style-commands/undoable-actions/reset-element-style.ts
1141
1191
  var import_editor_elements6 = require("@elementor/editor-elements");
1142
1192
  var import_editor_styles_repository3 = require("@elementor/editor-styles-repository");
1143
- var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
1193
+ var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
1144
1194
  var import_i18n4 = require("@wordpress/i18n");
1145
- var undoableResetElementStyle = () => (0, import_editor_v1_adapters8.undoable)(
1195
+ var undoableResetElementStyle = () => (0, import_editor_v1_adapters9.undoable)(
1146
1196
  {
1147
1197
  do: ({ containers }) => {
1148
1198
  return containers.map((container) => {
@@ -1186,12 +1236,12 @@ var undoableResetElementStyle = () => (0, import_editor_v1_adapters8.undoable)(
1186
1236
  // src/style-commands/reset-style.ts
1187
1237
  function initResetStyleCommand() {
1188
1238
  const resetElementStyles = undoableResetElementStyle();
1189
- (0, import_editor_v1_adapters9.blockCommand)({
1239
+ (0, import_editor_v1_adapters10.blockCommand)({
1190
1240
  command: "document/elements/reset-style",
1191
1241
  condition: hasAtomicWidgets
1192
1242
  });
1193
- (0, import_editor_v1_adapters9.__privateListenTo)(
1194
- (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"),
1195
1245
  (e) => resetStyles(e.args, resetElementStyles)
1196
1246
  );
1197
1247
  }