@elementor/editor-canvas 0.18.0 → 0.19.0
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/.turbo/turbo-build.log +8 -8
- package/CHANGELOG.md +19 -0
- package/dist/index.js +79 -29
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +60 -10
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
- package/src/components/__tests__/__snapshots__/style-renderer.test.tsx.snap +30 -0
- package/src/components/__tests__/style-renderer.test.tsx +16 -14
- package/src/components/style-renderer.tsx +7 -2
- package/src/hooks/__tests__/__snapshots__/use-documents-css-links.test.tsx.snap +30 -0
- package/src/hooks/__tests__/use-documents-css-links.test.tsx +84 -0
- package/src/hooks/__tests__/use-style-items.test.ts +3 -3
- package/src/hooks/use-documents-css-links.ts +58 -0
- package/src/hooks/use-style-items.ts +1 -1
- package/src/sync/{get-canvas-iframe-head.ts → get-canvas-iframe-document.ts} +2 -2
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @elementor/editor-canvas@0.
|
|
2
|
+
> @elementor/editor-canvas@0.19.0 build
|
|
3
3
|
> tsup --config=../../tsup.build.ts
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/index.ts
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
[34mCLI[39m Cleaning output folder
|
|
11
11
|
[34mESM[39m Build start
|
|
12
12
|
[34mCJS[39m Build start
|
|
13
|
-
[
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
[
|
|
17
|
-
[
|
|
18
|
-
[
|
|
13
|
+
[32mCJS[39m [1mdist/index.js [22m[32m44.01 KB[39m
|
|
14
|
+
[32mCJS[39m [1mdist/index.js.map [22m[32m86.67 KB[39m
|
|
15
|
+
[32mCJS[39m ⚡️ Build success in 279ms
|
|
16
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m40.87 KB[39m
|
|
17
|
+
[32mESM[39m [1mdist/index.mjs.map [22m[32m86.66 KB[39m
|
|
18
|
+
[32mESM[39m ⚡️ Build success in 281ms
|
|
19
19
|
[34mDTS[39m Build start
|
|
20
|
-
[32mDTS[39m ⚡️ Build success in
|
|
20
|
+
[32mDTS[39m ⚡️ Build success in 20898ms
|
|
21
21
|
[32mDTS[39m [1mdist/index.d.mts [22m[32m1.28 KB[39m
|
|
22
22
|
[32mDTS[39m [1mdist/index.d.ts [22m[32m1.28 KB[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @elementor/editor-canvas
|
|
2
2
|
|
|
3
|
+
## 0.19.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 10cbbe9: update `@elementor/ui` version
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- ce1852b: Styles are rendered reversed in the editor
|
|
12
|
+
- Updated dependencies [10cbbe9]
|
|
13
|
+
- @elementor/editor-notifications@1.1.0
|
|
14
|
+
- @elementor/editor@0.19.0
|
|
15
|
+
|
|
16
|
+
## 0.18.1
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- 2b77932: Fix legacy CSS links not prioritized correctly
|
|
21
|
+
|
|
3
22
|
## 0.18.0
|
|
4
23
|
|
|
5
24
|
### 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
|
|
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
|
|
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,
|
|
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
|
});
|
|
@@ -470,7 +525,7 @@ function useStyleItems() {
|
|
|
470
525
|
}
|
|
471
526
|
function createProviderSubscriber({ provider, renderStyles, setStyleItems }) {
|
|
472
527
|
return abortPreviousRuns(
|
|
473
|
-
(abortController) => signalizedProcess(abortController.signal).then((_, signal) => renderStyles({ styles: provider.actions.all(), signal })).then((items) => {
|
|
528
|
+
(abortController) => signalizedProcess(abortController.signal).then((_, signal) => renderStyles({ styles: [...provider.actions.all()].reverse(), signal })).then((items) => {
|
|
474
529
|
setStyleItems((prev) => ({
|
|
475
530
|
...prev,
|
|
476
531
|
[provider.getKey()]: { provider, items }
|
|
@@ -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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
955
|
+
(0, import_editor_v1_adapters6.blockCommand)({
|
|
906
956
|
command: "document/elements/paste",
|
|
907
957
|
condition: blockLinkInLinkPaste
|
|
908
958
|
});
|
|
909
|
-
(0,
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
1159
|
+
(0, import_editor_v1_adapters8.blockCommand)({
|
|
1110
1160
|
command: "document/elements/paste-style",
|
|
1111
1161
|
condition: hasAtomicWidgets
|
|
1112
1162
|
});
|
|
1113
|
-
(0,
|
|
1114
|
-
(0,
|
|
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
|
|
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
|
|
1193
|
+
var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
|
|
1144
1194
|
var import_i18n4 = require("@wordpress/i18n");
|
|
1145
|
-
var undoableResetElementStyle = () => (0,
|
|
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,
|
|
1239
|
+
(0, import_editor_v1_adapters10.blockCommand)({
|
|
1190
1240
|
command: "document/elements/reset-style",
|
|
1191
1241
|
condition: hasAtomicWidgets
|
|
1192
1242
|
});
|
|
1193
|
-
(0,
|
|
1194
|
-
(0,
|
|
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
|
}
|