@themarioga/grid-editor 8.5.0 → 8.6.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/CHANGELOG.md +33 -0
- package/README.md +78 -4
- package/dist/grideditor.bundle.min.js +3 -3
- package/dist/grideditor.css +15 -4
- package/dist/grideditor.d.ts +59 -3
- package/dist/grideditor.esm.js +200 -36
- package/dist/grideditor.js +200 -36
- package/dist/grideditor.min.css +1 -1
- package/dist/grideditor.min.css.map +1 -1
- package/dist/grideditor.min.js +2 -2
- package/dist/grideditor.min.js.map +3 -3
- package/dist/locales/grideditor.es.esm.js +4 -0
- package/dist/locales/grideditor.es.js +4 -0
- package/dist/locales/grideditor.es.min.js +1 -1
- package/dist/locales/grideditor.es.min.js.map +2 -2
- package/dist/plugins/grideditor.accordion.esm.js +7 -0
- package/dist/plugins/grideditor.accordion.js +7 -0
- package/dist/plugins/grideditor.accordion.min.js +1 -1
- package/dist/plugins/grideditor.accordion.min.js.map +3 -3
- package/dist/plugins/grideditor.autosave.esm.js +309 -0
- package/dist/plugins/grideditor.autosave.js +316 -0
- package/dist/plugins/grideditor.autosave.min.js +1 -0
- package/dist/plugins/grideditor.autosave.min.js.map +7 -0
- package/dist/plugins/grideditor.card.esm.js +10 -0
- package/dist/plugins/grideditor.card.js +10 -0
- package/dist/plugins/grideditor.card.min.js +1 -1
- package/dist/plugins/grideditor.card.min.js.map +3 -3
- package/dist/plugins/grideditor.ckeditor.esm.js +29 -0
- package/dist/plugins/grideditor.ckeditor.js +29 -0
- package/dist/plugins/grideditor.ckeditor.min.js +1 -1
- package/dist/plugins/grideditor.ckeditor.min.js.map +3 -3
- package/dist/plugins/grideditor.clipboard.esm.js +3 -0
- package/dist/plugins/grideditor.clipboard.js +3 -0
- package/dist/plugins/grideditor.clipboard.min.js +1 -1
- package/dist/plugins/grideditor.clipboard.min.js.map +2 -2
- package/dist/plugins/grideditor.codemirror-inline.esm.js +11 -0
- package/dist/plugins/grideditor.codemirror-inline.js +11 -0
- package/dist/plugins/grideditor.codemirror-inline.min.js +1 -1
- package/dist/plugins/grideditor.codemirror-inline.min.js.map +3 -3
- package/dist/plugins/grideditor.elements.esm.js +6 -3
- package/dist/plugins/grideditor.elements.js +6 -3
- package/dist/plugins/grideditor.elements.min.js +1 -1
- package/dist/plugins/grideditor.elements.min.js.map +3 -3
- package/dist/plugins/grideditor.gutters.esm.js +5 -0
- package/dist/plugins/grideditor.gutters.js +5 -0
- package/dist/plugins/grideditor.gutters.min.js +1 -1
- package/dist/plugins/grideditor.gutters.min.js.map +3 -3
- package/dist/plugins/grideditor.inline-style.esm.js +18 -10
- package/dist/plugins/grideditor.inline-style.js +18 -10
- package/dist/plugins/grideditor.inline-style.min.js +3 -3
- package/dist/plugins/grideditor.inline-style.min.js.map +3 -3
- package/dist/plugins/grideditor.order.esm.js +5 -0
- package/dist/plugins/grideditor.order.js +5 -0
- package/dist/plugins/grideditor.order.min.js +1 -1
- package/dist/plugins/grideditor.order.min.js.map +3 -3
- package/dist/plugins/grideditor.popup.esm.js +17 -6
- package/dist/plugins/grideditor.popup.js +17 -6
- package/dist/plugins/grideditor.popup.min.js +1 -1
- package/dist/plugins/grideditor.popup.min.js.map +3 -3
- package/dist/plugins/grideditor.sections.esm.js +6 -3
- package/dist/plugins/grideditor.sections.js +6 -3
- package/dist/plugins/grideditor.sections.min.js +1 -1
- package/dist/plugins/grideditor.sections.min.js.map +3 -3
- package/dist/plugins/grideditor.summernote.esm.js +39 -0
- package/dist/plugins/grideditor.summernote.js +39 -0
- package/dist/plugins/grideditor.summernote.min.js +1 -1
- package/dist/plugins/grideditor.summernote.min.js.map +3 -3
- package/dist/plugins/grideditor.tabs.esm.js +7 -0
- package/dist/plugins/grideditor.tabs.js +7 -0
- package/dist/plugins/grideditor.tabs.min.js +1 -1
- package/dist/plugins/grideditor.tabs.min.js.map +3 -3
- package/dist/plugins/grideditor.tinymce.esm.js +31 -0
- package/dist/plugins/grideditor.tinymce.js +31 -0
- package/dist/plugins/grideditor.tinymce.min.js +1 -1
- package/dist/plugins/grideditor.tinymce.min.js.map +3 -3
- package/docs/events.md +8 -0
- package/docs/locale-keys.md +14 -0
- package/docs/plugins.md +54 -2
- package/example/autosave.html +39 -22
- package/example/index.html +1 -1
- package/example/plugins.html +10 -0
- package/package.json +1 -2
- package/src/js/grideditor.js +242 -28
- package/src/js/inline-style/display.js +4 -3
- package/src/js/inline-style/drawerflow.js +10 -5
- package/src/js/locales/grideditor.es.js +4 -0
- package/src/js/plugins/grideditor.accordion.js +6 -0
- package/src/js/plugins/grideditor.autosave.js +349 -0
- package/src/js/plugins/grideditor.card.js +6 -0
- package/src/js/plugins/grideditor.ckeditor.js +6 -0
- package/src/js/plugins/grideditor.clipboard.js +3 -0
- package/src/js/plugins/grideditor.codemirror-inline.js +7 -0
- package/src/js/plugins/grideditor.elements.js +4 -3
- package/src/js/plugins/grideditor.gutters.js +4 -0
- package/src/js/plugins/grideditor.inline-style.js +2 -0
- package/src/js/plugins/grideditor.order.js +4 -0
- package/src/js/plugins/grideditor.popup.js +15 -6
- package/src/js/plugins/grideditor.sections.js +4 -3
- package/src/js/plugins/grideditor.summernote.js +14 -0
- package/src/js/plugins/grideditor.tabs.js +6 -0
- package/src/js/plugins/grideditor.tinymce.js +8 -0
- package/src/js/text/grideditor.text.js +26 -0
- package/src/less/grideditor.less +16 -8
- package/types/grideditor.d.ts +59 -3
- package/AUTO_SAVE.md +0 -30
package/dist/grideditor.js
CHANGED
|
@@ -763,31 +763,53 @@
|
|
|
763
763
|
whenConfirmed();
|
|
764
764
|
return;
|
|
765
765
|
}
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
if (window.confirm(message)) {
|
|
766
|
+
confirmWith(message, { danger: true }, function(confirmed) {
|
|
767
|
+
if (confirmed) {
|
|
769
768
|
whenConfirmed();
|
|
770
769
|
}
|
|
770
|
+
});
|
|
771
|
+
}
|
|
772
|
+
function confirmWith(message, options, answer) {
|
|
773
|
+
options = options || {};
|
|
774
|
+
var Modal = modalLibrary();
|
|
775
|
+
if (!Modal) {
|
|
776
|
+
answer(window.confirm(message));
|
|
771
777
|
return;
|
|
772
778
|
}
|
|
773
779
|
var modal = confirmModal();
|
|
774
780
|
var confirmed = false;
|
|
781
|
+
var ok = one(modal, ".ge-confirm-ok");
|
|
782
|
+
if (pendingAnswer) {
|
|
783
|
+
pendingAnswer(null);
|
|
784
|
+
}
|
|
785
|
+
var settle = function(value) {
|
|
786
|
+
if (pendingAnswer !== settle) {
|
|
787
|
+
return;
|
|
788
|
+
}
|
|
789
|
+
pendingAnswer = null;
|
|
790
|
+
answer(value);
|
|
791
|
+
};
|
|
792
|
+
pendingAnswer = settle;
|
|
793
|
+
one(modal, ".modal-title").textContent = options.title || t("confirm.title");
|
|
794
|
+
one(modal, ".ge-confirm-cancel").textContent = options.cancel || t("confirm.cancel");
|
|
795
|
+
ok.textContent = options.ok || t("confirm.ok");
|
|
796
|
+
toggleClass(ok, "btn-danger", !!options.danger);
|
|
797
|
+
toggleClass(ok, "btn-primary", !options.danger);
|
|
775
798
|
one(modal, ".ge-confirm-message").textContent = message;
|
|
776
|
-
|
|
799
|
+
ok.onclick = function() {
|
|
777
800
|
confirmed = true;
|
|
778
801
|
Modal.getInstance(modal).hide();
|
|
779
802
|
};
|
|
780
803
|
confirmHandlers.hidden = function() {
|
|
781
|
-
|
|
782
|
-
whenConfirmed();
|
|
783
|
-
}
|
|
804
|
+
settle(confirmed);
|
|
784
805
|
};
|
|
785
806
|
confirmHandlers.shown = function() {
|
|
786
|
-
|
|
807
|
+
ok.focus();
|
|
787
808
|
};
|
|
788
809
|
Modal.getOrCreateInstance(modal).show();
|
|
789
810
|
}
|
|
790
811
|
var confirmHandlers = { hidden: null, shown: null };
|
|
812
|
+
var pendingAnswer = null;
|
|
791
813
|
function confirmModal() {
|
|
792
814
|
if (confirmDialog) {
|
|
793
815
|
return confirmDialog;
|
|
@@ -801,13 +823,14 @@
|
|
|
801
823
|
one(confirmDialog, ".ge-confirm-cancel").textContent = t("confirm.cancel");
|
|
802
824
|
one(confirmDialog, ".ge-confirm-ok").textContent = t("confirm.ok");
|
|
803
825
|
trackModal(confirmDialog);
|
|
826
|
+
var asking = confirmDialog;
|
|
804
827
|
confirmDialog.addEventListener("hidden.bs.modal", function() {
|
|
805
|
-
if (confirmHandlers.hidden) {
|
|
828
|
+
if (asking === confirmDialog && confirmHandlers.hidden) {
|
|
806
829
|
confirmHandlers.hidden();
|
|
807
830
|
}
|
|
808
831
|
});
|
|
809
832
|
confirmDialog.addEventListener("shown.bs.modal", function() {
|
|
810
|
-
if (confirmHandlers.shown) {
|
|
833
|
+
if (asking === confirmDialog && confirmHandlers.shown) {
|
|
811
834
|
confirmHandlers.shown();
|
|
812
835
|
}
|
|
813
836
|
});
|
|
@@ -821,6 +844,9 @@
|
|
|
821
844
|
confirmHandlers.shown = null;
|
|
822
845
|
retireModal(confirmDialog);
|
|
823
846
|
confirmDialog = null;
|
|
847
|
+
if (pendingAnswer) {
|
|
848
|
+
pendingAnswer(null);
|
|
849
|
+
}
|
|
824
850
|
}
|
|
825
851
|
function retireModal(panel) {
|
|
826
852
|
var Modal = modalLibrary();
|
|
@@ -1115,7 +1141,7 @@
|
|
|
1115
1141
|
settings.new_row_layouts.forEach(function(layout) {
|
|
1116
1142
|
var grouped = !Array.isArray(layout);
|
|
1117
1143
|
var btn = element("a", {
|
|
1118
|
-
"class": "btn btn-sm btn-
|
|
1144
|
+
"class": "btn btn-sm btn-light",
|
|
1119
1145
|
title: grouped ? t("row.add_row_cols", { columns: layout.columns, counts: rowColsText(layout.row_cols) }) : t("row.add", { layout: layout.join("-") }),
|
|
1120
1146
|
// What this button makes, in the markup rather than in
|
|
1121
1147
|
// memory: a drag works on a clone of it
|
|
@@ -1150,7 +1176,7 @@
|
|
|
1150
1176
|
Object.keys(CONTAINERS).forEach(function(type) {
|
|
1151
1177
|
var definition = CONTAINERS[type];
|
|
1152
1178
|
var button = labelButton(
|
|
1153
|
-
element("a", { "class": "btn btn-sm btn-
|
|
1179
|
+
element("a", { "class": "btn btn-sm btn-light ge-add-container" }),
|
|
1154
1180
|
t(definition.labelKey),
|
|
1155
1181
|
definition.iconClass
|
|
1156
1182
|
);
|
|
@@ -1271,7 +1297,7 @@
|
|
|
1271
1297
|
names.forEach(function(name) {
|
|
1272
1298
|
var tab = tabs.appendChild(element("button", {
|
|
1273
1299
|
type: "button",
|
|
1274
|
-
"class": "btn btn-sm btn-outline-
|
|
1300
|
+
"class": "btn btn-sm btn-outline-secondary",
|
|
1275
1301
|
role: "tab",
|
|
1276
1302
|
"data-ge-group": name
|
|
1277
1303
|
}, groupLabel(name)));
|
|
@@ -1320,7 +1346,7 @@
|
|
|
1320
1346
|
mainControls.remove();
|
|
1321
1347
|
}
|
|
1322
1348
|
function createOverflowMenu(start) {
|
|
1323
|
-
var more = create('<div class="ge-toolbar-more"><button type="button" class="btn btn-sm btn-
|
|
1349
|
+
var more = create('<div class="ge-toolbar-more"><button type="button" class="btn btn-sm btn-light"><i class="bi bi-three-dots"></i></button><div class="ge-toolbar-overflow"><div class="ge-addRowGroup btn-group"></div><div class="ge-addContainerGroup btn-group"></div></div></div>');
|
|
1324
1350
|
start.parentNode.insertBefore(more, start.nextSibling);
|
|
1325
1351
|
var toggle2 = one(more, "button");
|
|
1326
1352
|
var panel = one(more, ".ge-toolbar-overflow");
|
|
@@ -1411,7 +1437,8 @@
|
|
|
1411
1437
|
function featureButton(name, item, index) {
|
|
1412
1438
|
var iconClass = item.iconClass || (item.align === "end" ? "bi bi-plus" : null);
|
|
1413
1439
|
var label = typeof item.label === "function" ? item.label() : item.label || t(item.labelKey);
|
|
1414
|
-
var
|
|
1440
|
+
var colour = item.align === "end" ? "btn-primary" : "btn-light";
|
|
1441
|
+
var button = labelButton(element("a", { "class": "btn btn-sm " + colour + " ge-add-container ge-add-feature" }), label, iconClass);
|
|
1415
1442
|
addClass(button, item.className || "");
|
|
1416
1443
|
attr(button, {
|
|
1417
1444
|
"data-ge-toolbar": "feature",
|
|
@@ -1919,22 +1946,122 @@
|
|
|
1919
1946
|
closeSizePicker();
|
|
1920
1947
|
hideDropMarker();
|
|
1921
1948
|
closeDialog();
|
|
1922
|
-
|
|
1923
|
-
drawer.remove();
|
|
1924
|
-
});
|
|
1949
|
+
removeDrawers(canvas);
|
|
1925
1950
|
pluginFields.clear();
|
|
1926
|
-
unwrapTexts();
|
|
1951
|
+
unwrapTexts(canvas);
|
|
1927
1952
|
plugins("onDeinit");
|
|
1928
1953
|
clearPreviews(canvas);
|
|
1929
|
-
|
|
1930
|
-
row.removeAttribute("data-ge-row-cols");
|
|
1931
|
-
});
|
|
1954
|
+
clearRowCols(canvas);
|
|
1932
1955
|
unmarkContainers();
|
|
1933
1956
|
removeSortable();
|
|
1934
1957
|
removeResizable();
|
|
1935
|
-
runFilter(false);
|
|
1958
|
+
runFilter(false, canvas);
|
|
1936
1959
|
}
|
|
1937
|
-
function
|
|
1960
|
+
function removeDrawers(root) {
|
|
1961
|
+
all(root, ".ge-tools-drawer").forEach(function(drawer) {
|
|
1962
|
+
drawer.remove();
|
|
1963
|
+
});
|
|
1964
|
+
}
|
|
1965
|
+
function clearRowCols(root) {
|
|
1966
|
+
all(root, "[data-ge-row-cols]").forEach(function(row) {
|
|
1967
|
+
row.removeAttribute("data-ge-row-cols");
|
|
1968
|
+
});
|
|
1969
|
+
}
|
|
1970
|
+
function pluginsWithoutCleanMarkup() {
|
|
1971
|
+
var names = [];
|
|
1972
|
+
[CONTAINERS, FEATURES, UTILITIES].forEach(function(registry) {
|
|
1973
|
+
Object.keys(registry).forEach(function(name) {
|
|
1974
|
+
var plugin = registry[name];
|
|
1975
|
+
var marks = plugin.unmark || plugin.onDeinit || plugin.onBeforeDeinit;
|
|
1976
|
+
if (marks && !plugin.cleanMarkup) {
|
|
1977
|
+
names.push(name);
|
|
1978
|
+
}
|
|
1979
|
+
});
|
|
1980
|
+
});
|
|
1981
|
+
return names;
|
|
1982
|
+
}
|
|
1983
|
+
function copyCanvas() {
|
|
1984
|
+
var copy = canvas.cloneNode(true);
|
|
1985
|
+
var toLive = /* @__PURE__ */ new Map();
|
|
1986
|
+
var toCopy = /* @__PURE__ */ new Map();
|
|
1987
|
+
var live = document.createTreeWalker(canvas, NodeFilter.SHOW_ELEMENT);
|
|
1988
|
+
var copied = document.createTreeWalker(copy, NodeFilter.SHOW_ELEMENT);
|
|
1989
|
+
var a = live.currentNode;
|
|
1990
|
+
var b = copied.currentNode;
|
|
1991
|
+
while (a && b) {
|
|
1992
|
+
toLive.set(b, a);
|
|
1993
|
+
toCopy.set(a, b);
|
|
1994
|
+
a = live.nextNode();
|
|
1995
|
+
b = copied.nextNode();
|
|
1996
|
+
}
|
|
1997
|
+
return {
|
|
1998
|
+
root: copy,
|
|
1999
|
+
liveOf: function(node) {
|
|
2000
|
+
return toLive.get(node) || null;
|
|
2001
|
+
},
|
|
2002
|
+
copyOf: function(node) {
|
|
2003
|
+
return toCopy.get(node) || null;
|
|
2004
|
+
}
|
|
2005
|
+
};
|
|
2006
|
+
}
|
|
2007
|
+
function snapshotHtml() {
|
|
2008
|
+
if (sourceOpen) {
|
|
2009
|
+
return getHtml();
|
|
2010
|
+
}
|
|
2011
|
+
var missing = pluginsWithoutCleanMarkup();
|
|
2012
|
+
if (missing.length) {
|
|
2013
|
+
missing.forEach(function(name) {
|
|
2014
|
+
warnOnceHere("snapshot:" + name, 'the "' + name + '" plugin has no cleanMarkup, so the canvas leaves editing to be read: open texts and settings panels close');
|
|
2015
|
+
});
|
|
2016
|
+
return getHtml();
|
|
2017
|
+
}
|
|
2018
|
+
var copy = copyCanvas();
|
|
2019
|
+
var root = copy.root;
|
|
2020
|
+
[root].concat(all(root, ".ge-active-target, .ge-settings-target")).forEach(function(node) {
|
|
2021
|
+
removeClass(node, "ge-active-target ge-settings-target");
|
|
2022
|
+
dropEmptyClass(node);
|
|
2023
|
+
});
|
|
2024
|
+
all(root, ".ge-drop-marker").forEach(function(marker) {
|
|
2025
|
+
marker.remove();
|
|
2026
|
+
});
|
|
2027
|
+
removeDrawers(root);
|
|
2028
|
+
unwrapTexts(root);
|
|
2029
|
+
var refused = null;
|
|
2030
|
+
[CONTAINERS, FEATURES, UTILITIES].forEach(function(registry) {
|
|
2031
|
+
Object.keys(registry).forEach(function(name) {
|
|
2032
|
+
var plugin = registry[name];
|
|
2033
|
+
if (refused || !plugin.cleanMarkup) {
|
|
2034
|
+
return;
|
|
2035
|
+
}
|
|
2036
|
+
if (plugin.cleanMarkup(root, copy.liveOf) === false) {
|
|
2037
|
+
refused = name;
|
|
2038
|
+
}
|
|
2039
|
+
});
|
|
2040
|
+
});
|
|
2041
|
+
if (refused) {
|
|
2042
|
+
warnOnceHere("snapshot-refused:" + refused, 'the "' + refused + '" plugin cannot take its marking off a copy right now, so the canvas leaves editing to be read');
|
|
2043
|
+
return getHtml();
|
|
2044
|
+
}
|
|
2045
|
+
clearPreviews(root);
|
|
2046
|
+
clearRowCols(root);
|
|
2047
|
+
all(root, "[data-ge-container]").forEach(unmarkContainerClasses);
|
|
2048
|
+
sortables.forEach(function(sortableInstance) {
|
|
2049
|
+
var list = copy.copyOf(sortableInstance.el);
|
|
2050
|
+
if (list) {
|
|
2051
|
+
all(list, "[draggable]").forEach(function(node) {
|
|
2052
|
+
node.removeAttribute("draggable");
|
|
2053
|
+
});
|
|
2054
|
+
}
|
|
2055
|
+
});
|
|
2056
|
+
removeResizeFurniture(root);
|
|
2057
|
+
runFilter(false, root);
|
|
2058
|
+
stripPixelWidths(root);
|
|
2059
|
+
return root.innerHTML;
|
|
2060
|
+
}
|
|
2061
|
+
function getHtml(options) {
|
|
2062
|
+
if (options && options.keepEditing) {
|
|
2063
|
+
return snapshotHtml();
|
|
2064
|
+
}
|
|
1938
2065
|
deinit();
|
|
1939
2066
|
stripPixelWidths(canvas);
|
|
1940
2067
|
var html = canvas.innerHTML;
|
|
@@ -1948,10 +2075,24 @@
|
|
|
1948
2075
|
init();
|
|
1949
2076
|
return html;
|
|
1950
2077
|
}
|
|
1951
|
-
function getPlainHtml() {
|
|
1952
|
-
return plainHtml(getHtml());
|
|
2078
|
+
function getPlainHtml(options) {
|
|
2079
|
+
return plainHtml(getHtml(options));
|
|
2080
|
+
}
|
|
2081
|
+
function setHtml2(html) {
|
|
2082
|
+
if (sourceOpen) {
|
|
2083
|
+
closeSource();
|
|
2084
|
+
if (mainControls) {
|
|
2085
|
+
all(mainControls, ".gm-edit-mode").forEach(function(button) {
|
|
2086
|
+
removeClass(button, "active btn-danger");
|
|
2087
|
+
});
|
|
2088
|
+
}
|
|
2089
|
+
}
|
|
2090
|
+
deinit();
|
|
2091
|
+
setHtml(canvas, html);
|
|
2092
|
+
init();
|
|
1953
2093
|
}
|
|
1954
2094
|
function destroy() {
|
|
2095
|
+
plugins("onDestroy");
|
|
1955
2096
|
if (sourceOpen) {
|
|
1956
2097
|
closeSource();
|
|
1957
2098
|
}
|
|
@@ -2064,6 +2205,11 @@
|
|
|
2064
2205
|
closeDialog,
|
|
2065
2206
|
rowFromLayout: rowFromLayoutValue,
|
|
2066
2207
|
nodeHtml,
|
|
2208
|
+
// The markup as getHtml gives it, with the canvas left editing
|
|
2209
|
+
snapshotHtml,
|
|
2210
|
+
setHtml: setHtml2,
|
|
2211
|
+
// A question in the editor's confirm modal
|
|
2212
|
+
confirm: confirmWith,
|
|
2067
2213
|
// A text editor has rewritten a content area, so whatever the
|
|
2068
2214
|
// editor and its plugins had put in there goes back in
|
|
2069
2215
|
textReady,
|
|
@@ -2586,10 +2732,13 @@
|
|
|
2586
2732
|
if (definition) {
|
|
2587
2733
|
definition.unmark(container);
|
|
2588
2734
|
}
|
|
2589
|
-
|
|
2590
|
-
dropEmptyClass(container);
|
|
2735
|
+
unmarkContainerClasses(container);
|
|
2591
2736
|
});
|
|
2592
2737
|
}
|
|
2738
|
+
function unmarkContainerClasses(container) {
|
|
2739
|
+
removeClass(container, "ge-container ge-container-" + containerTypeOf(container));
|
|
2740
|
+
dropEmptyClass(container);
|
|
2741
|
+
}
|
|
2593
2742
|
function prependDrawer(node, className) {
|
|
2594
2743
|
var drawer = element("div", { "class": className });
|
|
2595
2744
|
node.insertBefore(drawer, node.firstChild);
|
|
@@ -3990,13 +4139,16 @@
|
|
|
3990
4139
|
on(handle, "pointerup pointercancel", onUp);
|
|
3991
4140
|
}
|
|
3992
4141
|
function removeResizable() {
|
|
3993
|
-
|
|
4142
|
+
removeResizeFurniture(canvas);
|
|
4143
|
+
}
|
|
4144
|
+
function removeResizeFurniture(root) {
|
|
4145
|
+
all(root, ".ge-resize-handle").forEach(function(handle) {
|
|
3994
4146
|
handle.remove();
|
|
3995
4147
|
});
|
|
3996
|
-
all(
|
|
4148
|
+
all(root, ".ge-resize-size").forEach(function(readout) {
|
|
3997
4149
|
readout.remove();
|
|
3998
4150
|
});
|
|
3999
|
-
stripPixelWidths(
|
|
4151
|
+
stripPixelWidths(root);
|
|
4000
4152
|
}
|
|
4001
4153
|
function snapUnits(col, pixels) {
|
|
4002
4154
|
var units = Math.round(pixels / rowContentWidth(col.parentElement) * MAX_COL_SIZE);
|
|
@@ -4204,7 +4356,7 @@
|
|
|
4204
4356
|
setOffset(column, tier, wanted.offset);
|
|
4205
4357
|
return column;
|
|
4206
4358
|
}
|
|
4207
|
-
function runFilter(isInit) {
|
|
4359
|
+
function runFilter(isInit, root) {
|
|
4208
4360
|
if (!settings.custom_filter || !settings.custom_filter.length) {
|
|
4209
4361
|
return;
|
|
4210
4362
|
}
|
|
@@ -4213,7 +4365,7 @@
|
|
|
4213
4365
|
if (typeof func == "string") {
|
|
4214
4366
|
func = window[func];
|
|
4215
4367
|
}
|
|
4216
|
-
func(canvas, isInit);
|
|
4368
|
+
func(root || canvas, isInit);
|
|
4217
4369
|
});
|
|
4218
4370
|
}
|
|
4219
4371
|
function textCutter() {
|
|
@@ -4333,8 +4485,8 @@
|
|
|
4333
4485
|
}
|
|
4334
4486
|
});
|
|
4335
4487
|
}
|
|
4336
|
-
function unwrapTexts() {
|
|
4337
|
-
all(
|
|
4488
|
+
function unwrapTexts(root) {
|
|
4489
|
+
all(root, ".ge-text-block").forEach(function(textBlock) {
|
|
4338
4490
|
unwrap(textBlock);
|
|
4339
4491
|
});
|
|
4340
4492
|
}
|
|
@@ -4507,6 +4659,18 @@
|
|
|
4507
4659
|
instances.set(canvas, instance);
|
|
4508
4660
|
loadPlugins();
|
|
4509
4661
|
instance.settings = settingsCopy();
|
|
4662
|
+
Object.keys(featureMethods).forEach(function(name) {
|
|
4663
|
+
if (Object.prototype.hasOwnProperty.call(own, name) || name in instance) {
|
|
4664
|
+
return;
|
|
4665
|
+
}
|
|
4666
|
+
instance[name] = function() {
|
|
4667
|
+
if (destroyed) {
|
|
4668
|
+
warnOnceHere("destroyed:" + name, t("warning.destroyed", { method: name }));
|
|
4669
|
+
return null;
|
|
4670
|
+
}
|
|
4671
|
+
return featureMethods[name].apply(null, arguments);
|
|
4672
|
+
};
|
|
4673
|
+
});
|
|
4510
4674
|
setup();
|
|
4511
4675
|
init();
|
|
4512
4676
|
GridEditor._created.forEach(function(hook) {
|
|
@@ -4522,7 +4686,7 @@
|
|
|
4522
4686
|
GridEditor._plainHtml = plainHtml;
|
|
4523
4687
|
GridEditor.Sortable = null;
|
|
4524
4688
|
GridEditor.bootstrap = null;
|
|
4525
|
-
GridEditor.version = false ? "dev" : "8.
|
|
4689
|
+
GridEditor.version = false ? "dev" : "8.6.0";
|
|
4526
4690
|
GridEditor.locales = {
|
|
4527
4691
|
en: {
|
|
4528
4692
|
"tool.move": "Move",
|