@nookuio/iframe 1.0.1-beta.0 → 1.0.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.
- package/dist/constants.d.ts +0 -9
- package/dist/constants.js +2 -11
- package/dist/constants.mjs +1 -9
- package/dist/editor.js +41 -35
- package/dist/editor.mjs +42 -36
- package/dist/iframe.d.ts +1 -1
- package/dist/iframe.js +141 -126
- package/dist/iframe.mjs +150 -134
- package/dist/types.d.ts +7 -17
- package/package.json +2 -2
- package/dist/drag-drop/dragEnd.d.ts +0 -2
- package/dist/drag-drop/dragEnd.js +0 -27
- package/dist/drag-drop/dragEnd.mjs +0 -23
- package/dist/drag-drop/dragMove.d.ts +0 -2
- package/dist/drag-drop/dragMove.js +0 -46
- package/dist/drag-drop/dragMove.mjs +0 -40
- package/dist/drag-drop/dragReorder.d.ts +0 -3
- package/dist/drag-drop/dragReorder.js +0 -60
- package/dist/drag-drop/dragReorder.mjs +0 -64
- package/dist/drag-drop/dragStart.d.ts +0 -9
- package/dist/drag-drop/dragStart.js +0 -60
- package/dist/drag-drop/dragStart.mjs +0 -55
- package/dist/drag-drop/helpers.d.ts +0 -42
- package/dist/drag-drop/helpers.js +0 -205
- package/dist/drag-drop/helpers.mjs +0 -188
- package/dist/drag-drop/highlight.d.ts +0 -16
- package/dist/drag-drop/highlight.js +0 -32
- package/dist/drag-drop/highlight.mjs +0 -22
- package/dist/drag-drop/index.d.ts +0 -24
- package/dist/drag-drop/index.js +0 -106
- package/dist/drag-drop/index.mjs +0 -83
- package/dist/drag-drop/types.d.ts +0 -123
- package/dist/drag-drop/types.js +0 -1
- package/dist/drag-drop/types.mjs +0 -0
- package/dist/drag-drop backup/dragDropManager.d.ts +0 -101
- package/dist/drag-drop backup/dragDropManager.js +0 -204
- package/dist/drag-drop backup/dragDropManager.mjs +0 -183
- package/dist/drag-drop backup/index.d.ts +0 -3
- package/dist/drag-drop backup/index.js +0 -38
- package/dist/drag-drop backup/index.mjs +0 -3
- package/dist/drag-drop backup/types.d.ts +0 -80
- package/dist/drag-drop backup/types.js +0 -1
- package/dist/drag-drop backup/types.mjs +0 -0
- package/dist/drag-drop backup/utils.d.ts +0 -41
- package/dist/drag-drop backup/utils.js +0 -93
- package/dist/drag-drop backup/utils.mjs +0 -68
package/dist/iframe.mjs
CHANGED
|
@@ -1,163 +1,179 @@
|
|
|
1
|
-
import { EDITOR_SOURCE_NAME as
|
|
2
|
-
import { createClient as
|
|
3
|
-
import { stringify as
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return `[data-node-id="${d}"][data-node-path="${u}"]`;
|
|
1
|
+
import { EDITOR_SOURCE_NAME as f, IFRAME_SOURCE_NAME as g } from "./constants.mjs";
|
|
2
|
+
import { createClient as b } from "@nookuio/rpc";
|
|
3
|
+
import { stringify as h, parse as w } from "telejson";
|
|
4
|
+
function u(l, t) {
|
|
5
|
+
return `[data-node-id="${t}"][data-node-path="${l}"]`;
|
|
7
6
|
}
|
|
8
|
-
function
|
|
9
|
-
const
|
|
10
|
-
if (!
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
width:
|
|
14
|
-
height:
|
|
15
|
-
top:
|
|
16
|
-
left:
|
|
7
|
+
function y(l, t) {
|
|
8
|
+
const n = document.querySelectorAll(l);
|
|
9
|
+
if (!n?.length) return;
|
|
10
|
+
const o = Array.from(n).map((r) => {
|
|
11
|
+
const s = r.getBoundingClientRect(), d = {
|
|
12
|
+
width: s.width,
|
|
13
|
+
height: s.height,
|
|
14
|
+
top: s.top,
|
|
15
|
+
left: s.left
|
|
17
16
|
};
|
|
18
|
-
if (!
|
|
19
|
-
const
|
|
17
|
+
if (!t) return d;
|
|
18
|
+
const i = window.getComputedStyle(r) ?? {};
|
|
20
19
|
return {
|
|
21
|
-
...
|
|
20
|
+
...d,
|
|
22
21
|
padding: {
|
|
23
|
-
top:
|
|
24
|
-
right:
|
|
25
|
-
bottom:
|
|
26
|
-
left:
|
|
22
|
+
top: i.paddingTop,
|
|
23
|
+
right: i.paddingRight,
|
|
24
|
+
bottom: i.paddingBottom,
|
|
25
|
+
left: i.paddingLeft
|
|
27
26
|
}
|
|
28
27
|
};
|
|
29
28
|
});
|
|
30
|
-
if (
|
|
31
|
-
return
|
|
29
|
+
if (o?.length)
|
|
30
|
+
return o.length === 1 ? o[0] : o;
|
|
32
31
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
{
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (!
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (!o.parentElement) return;
|
|
61
|
-
for (; o.parentElement && s !== e; )
|
|
62
|
-
o = o.parentElement, s = o.getAttribute("data-node-path");
|
|
63
|
-
}
|
|
64
|
-
const a = o.getAttribute("data-node-id");
|
|
65
|
-
if (!a) return;
|
|
66
|
-
const E = p(e, a), y = h(E, !1);
|
|
67
|
-
return y ? {
|
|
68
|
-
id: a,
|
|
69
|
-
path: e,
|
|
70
|
-
data: y
|
|
71
|
-
} : void 0;
|
|
72
|
-
} else {
|
|
73
|
-
const o = p(e, t), s = h(o, !1);
|
|
74
|
-
return s ? {
|
|
75
|
-
id: t,
|
|
76
|
-
path: e,
|
|
77
|
-
data: s
|
|
78
|
-
} : void 0;
|
|
32
|
+
function C(l) {
|
|
33
|
+
return {
|
|
34
|
+
async editText({ path: t, id: n }) {
|
|
35
|
+
if (!t || n === void 0) return;
|
|
36
|
+
const o = u(t, n), r = document.querySelector(o);
|
|
37
|
+
if (!r) return;
|
|
38
|
+
r.style.outline = "none", r.setAttribute("spellcheck", "false"), r.setAttribute("contenteditable", "true");
|
|
39
|
+
const s = (i) => {
|
|
40
|
+
const c = i.target;
|
|
41
|
+
if (!c) return;
|
|
42
|
+
const e = c.innerText;
|
|
43
|
+
r.removeAttribute("contenteditable"), l?.onTextUpdate?.({ path: t, id: n, content: e }), r.removeEventListener("blur", s), r.removeEventListener("keydown", d), r.blur();
|
|
44
|
+
}, d = (i) => {
|
|
45
|
+
i.key === "Enter" && (i.stopPropagation(), i.preventDefault(), s(i));
|
|
46
|
+
};
|
|
47
|
+
r.addEventListener("keydown", d), r.addEventListener("blur", s), r.focus();
|
|
48
|
+
},
|
|
49
|
+
async getHoveredElement({ path: t, id: n, x: o, y: r }) {
|
|
50
|
+
if (t)
|
|
51
|
+
if (o !== void 0 && r !== void 0) {
|
|
52
|
+
let s = document.elementFromPoint(o, r);
|
|
53
|
+
if (!s) return;
|
|
54
|
+
let d = s.getAttribute("data-node-path");
|
|
55
|
+
if (d !== t) {
|
|
56
|
+
if (!s.parentElement) return;
|
|
57
|
+
for (; s.parentElement && d !== t; )
|
|
58
|
+
s = s.parentElement, d = s.getAttribute("data-node-path");
|
|
79
59
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
60
|
+
const i = s.getAttribute("data-node-id");
|
|
61
|
+
if (!i) return;
|
|
62
|
+
const c = u(t, i), e = y(c, !1);
|
|
63
|
+
return e ? {
|
|
64
|
+
id: i,
|
|
65
|
+
path: t,
|
|
66
|
+
data: e
|
|
67
|
+
} : void 0;
|
|
68
|
+
} else {
|
|
69
|
+
const s = u(t, n), d = y(s, !1);
|
|
70
|
+
return d ? {
|
|
71
|
+
id: n,
|
|
72
|
+
path: t,
|
|
73
|
+
data: d
|
|
74
|
+
} : void 0;
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
async getPageHeight() {
|
|
78
|
+
return document.body.scrollHeight > 0 ? document.body.scrollHeight : document.documentElement.scrollHeight;
|
|
79
|
+
},
|
|
80
|
+
async getSelectedElement({ path: t, id: n }) {
|
|
81
|
+
const o = u(t, n), r = y(o, !0);
|
|
82
|
+
if (r)
|
|
83
|
+
return {
|
|
84
|
+
path: t,
|
|
85
|
+
id: n,
|
|
86
|
+
data: r
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
setTheme(t) {
|
|
90
|
+
const n = document.querySelector("body");
|
|
91
|
+
t === "dark" ? (document.documentElement.classList.remove("light"), document.documentElement.classList.add("dark"), n && (n.classList.remove("light"), n.classList.add("dark"))) : (document.documentElement.classList.remove("dark"), document.documentElement.classList.add("light"), n && (n.classList.remove("dark"), n.classList.add("light")));
|
|
92
|
+
},
|
|
93
|
+
async updateCode(t, n) {
|
|
94
|
+
typeof n > "u" ? document.body.innerHTML = "" : document.body.innerHTML = n, l?.onResize?.(await this.getPageHeight());
|
|
95
|
+
}
|
|
96
|
+
// updateElementClass({ className, id, path }) {
|
|
97
|
+
// const selector = getSelector(path, id);
|
|
98
|
+
// const elements = document.querySelectorAll(selector);
|
|
99
|
+
// if (!elements?.length) return;
|
|
100
|
+
// elements.forEach((elm) => (elm.className = className));
|
|
101
|
+
// },
|
|
102
|
+
// updateElementAttribute({ attribute, value, id, path }) {
|
|
103
|
+
// const selector = getSelector(path, id);
|
|
104
|
+
// const elements = document.querySelectorAll(selector);
|
|
105
|
+
// if (!elements?.length) return;
|
|
106
|
+
// elements.forEach((elm) => elm.setAttribute(attribute, value));
|
|
107
|
+
// },
|
|
108
|
+
// duplicateElement({ id, path }) {
|
|
109
|
+
// const selector = getSelector(path, id);
|
|
110
|
+
// const elements = document.querySelectorAll(selector);
|
|
111
|
+
// if (!elements?.length) return;
|
|
112
|
+
// elements.forEach((elm) => {
|
|
113
|
+
// const clone = elm.cloneNode(true) as HTMLElement;
|
|
114
|
+
// clone.setAttribute('data-node-id', String(Number(clone.getAttribute('data-node-id')!) + 1));
|
|
115
|
+
// elm.parentElement?.insertBefore(clone, elm.nextSibling);
|
|
116
|
+
// });
|
|
117
|
+
// }
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
export function createVueIframeClient(l, t) {
|
|
121
|
+
const n = /* @__PURE__ */ new Map();
|
|
122
|
+
window.addEventListener("message", async (e) => {
|
|
123
|
+
if (typeof e.data != "object" || e.data.source !== f || e.data.type === "event" || !e.data.response) return;
|
|
124
|
+
const a = n.get(e.data.response.id);
|
|
125
|
+
a && (n.delete(e.data.response.id), a(e.data.response));
|
|
126
|
+
});
|
|
127
|
+
const o = b(
|
|
128
|
+
{
|
|
129
|
+
...l,
|
|
130
|
+
...C({
|
|
131
|
+
onResize: (...e) => o?.emit("resize", ...e),
|
|
132
|
+
onTextUpdate: (...e) => o?.emit("text-update", ...e)
|
|
133
|
+
})
|
|
119
134
|
},
|
|
120
135
|
{
|
|
121
136
|
handle(e) {
|
|
122
|
-
window.addEventListener("message", async (
|
|
123
|
-
if (typeof
|
|
124
|
-
const
|
|
125
|
-
window.parent.postMessage({ source:
|
|
137
|
+
window.addEventListener("message", async (a) => {
|
|
138
|
+
if (typeof a.data != "object" || a.data.source !== f || a.data.type === "event" || !a.data.request) return;
|
|
139
|
+
const m = await e(a.data.request);
|
|
140
|
+
window.parent.postMessage({ source: g, response: m }, "*");
|
|
126
141
|
});
|
|
127
142
|
},
|
|
128
143
|
invoke(e) {
|
|
129
|
-
return new Promise((
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
typeof s.data == "object" && (s.data.source !== b || !s.data.response || s.data.response.id === e.id && (clearTimeout(n), window.removeEventListener("message", o), t(s.data.response)));
|
|
135
|
-
}
|
|
136
|
-
window.parent.postMessage({ source: w, request: e }, "*"), window.addEventListener("message", o);
|
|
144
|
+
return new Promise((a, m) => {
|
|
145
|
+
const E = setTimeout(() => m(new Error("Request timed out")), 5e3);
|
|
146
|
+
n.set(e.id, (p) => {
|
|
147
|
+
clearTimeout(E), a(p);
|
|
148
|
+
}), window.parent.postMessage({ source: g, request: e }, "*");
|
|
137
149
|
});
|
|
138
150
|
},
|
|
139
151
|
emit(e) {
|
|
140
|
-
window.parent.postMessage({ source:
|
|
152
|
+
window.parent.postMessage({ source: g, type: "event", request: e }, "*");
|
|
141
153
|
},
|
|
142
154
|
handleEvent(e) {
|
|
143
|
-
window.addEventListener("message", (
|
|
144
|
-
typeof
|
|
155
|
+
window.addEventListener("message", (a) => {
|
|
156
|
+
typeof a.data == "object" && (a.data.source !== f || a.data.type !== "event" || !a.data.request || e(a.data.request));
|
|
145
157
|
});
|
|
146
158
|
},
|
|
147
|
-
|
|
148
|
-
|
|
159
|
+
destroy() {
|
|
160
|
+
n.clear();
|
|
161
|
+
},
|
|
162
|
+
deserialize: (e) => w(e),
|
|
163
|
+
serialize: (e) => h(e, { maxDepth: 1 / 0 }),
|
|
164
|
+
timeout: 5e3
|
|
149
165
|
}
|
|
150
|
-
),
|
|
166
|
+
), r = t?.disableDefaultConsole ? void 0 : console.log.bind(console), s = t?.disableDefaultConsole ? void 0 : console.warn.bind(console), d = t?.disableDefaultConsole ? void 0 : console.error.bind(console), i = t?.disableDefaultConsole ? void 0 : console.info.bind(console);
|
|
151
167
|
return console.log = (...e) => {
|
|
152
|
-
|
|
168
|
+
o.emit("console", "log", e), r?.(...e);
|
|
153
169
|
}, console.warn = (...e) => {
|
|
154
|
-
|
|
170
|
+
s?.(...e);
|
|
155
171
|
}, console.error = (...e) => {
|
|
156
|
-
|
|
172
|
+
o.emit("console", "error", e), d?.(...e);
|
|
157
173
|
}, console.info = (...e) => {
|
|
158
|
-
|
|
159
|
-
}, window.addEventListener("resize", async () =>
|
|
160
|
-
async () =>
|
|
174
|
+
o.emit("console", "info", e), i?.(...e);
|
|
175
|
+
}, window.addEventListener("resize", async () => o.emit("resize", await o.$context.getPageHeight())), new MutationObserver(
|
|
176
|
+
async () => o.emit("resize", await o.$context.getPageHeight())
|
|
161
177
|
).observe(document.body, {
|
|
162
178
|
childList: !0,
|
|
163
179
|
// observe direct children additions/removals
|
|
@@ -167,5 +183,5 @@ export function createVueIframeClient(u, d) {
|
|
|
167
183
|
// observe attribute changes (like style, class)
|
|
168
184
|
characterData: !0
|
|
169
185
|
// observe text changes
|
|
170
|
-
}),
|
|
186
|
+
}), o.emit("ready"), o;
|
|
171
187
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { RpcEvents } from '@nookuio/rpc';
|
|
2
|
-
import type { DragDropContext } from './drag-drop';
|
|
3
2
|
export interface EventRequest {
|
|
4
3
|
eventName: string;
|
|
5
4
|
args: any[];
|
|
@@ -17,7 +16,7 @@ export interface ContextResponse {
|
|
|
17
16
|
key: string;
|
|
18
17
|
result: any;
|
|
19
18
|
}
|
|
20
|
-
export interface CoreIframeContext
|
|
19
|
+
export interface CoreIframeContext {
|
|
21
20
|
setTheme: (theme: 'dark' | 'light') => void;
|
|
22
21
|
getHoveredElement: (options: {
|
|
23
22
|
path: string;
|
|
@@ -42,6 +41,8 @@ export interface CoreIframeContext extends DragDropContext {
|
|
|
42
41
|
path: string;
|
|
43
42
|
id: string;
|
|
44
43
|
}) => void;
|
|
44
|
+
/** Update the innerHTML of the page */
|
|
45
|
+
updateCode: (path: string, code: string) => void;
|
|
45
46
|
}
|
|
46
47
|
export interface CoreIframeEvents extends RpcEvents {
|
|
47
48
|
ready: () => void;
|
|
@@ -53,27 +54,16 @@ export interface CoreIframeEvents extends RpcEvents {
|
|
|
53
54
|
content: string;
|
|
54
55
|
}) => void;
|
|
55
56
|
}
|
|
56
|
-
export interface VueIframeContext extends CoreIframeContext {
|
|
57
|
+
export interface VueIframeContext extends Omit<CoreIframeContext, 'updateCode'> {
|
|
57
58
|
navigateTo: (to: string) => void;
|
|
58
|
-
getValue: (options: {
|
|
59
|
-
code: string;
|
|
60
|
-
path?: string;
|
|
61
|
-
onTemplateContext?: boolean;
|
|
62
|
-
context?: Record<string, any>;
|
|
63
|
-
}) => any;
|
|
64
59
|
getInstanceData: (path: string /** filepath path of the component */) => Record<string, any>;
|
|
65
|
-
runCode: (options: {
|
|
66
|
-
path?: string;
|
|
67
|
-
code: string;
|
|
68
|
-
onTemplateContext?: boolean;
|
|
69
|
-
context?: Record<string, any>;
|
|
70
|
-
}) => any;
|
|
71
60
|
/**
|
|
61
|
+
*
|
|
72
62
|
* For virtual SFC preview
|
|
73
63
|
*
|
|
74
|
-
* Works only on VIRTUAL_VUE_SFC_RENDERER_PAGE_PATH
|
|
64
|
+
* Works only on `VIRTUAL_VUE_SFC_RENDERER_PAGE_PATH`
|
|
75
65
|
*/
|
|
76
|
-
|
|
66
|
+
updateCode: (path: string, code: string) => void;
|
|
77
67
|
}
|
|
78
68
|
export interface VueIframeEvents extends CoreIframeEvents {
|
|
79
69
|
'route-change': (to: string) => void;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nookuio/iframe",
|
|
3
3
|
"description": "",
|
|
4
|
-
"version": "1.0.1
|
|
4
|
+
"version": "1.0.1",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
7
7
|
"exports": {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"telejson": "7.2.0",
|
|
34
|
-
"@nookuio/rpc": "1.0.
|
|
34
|
+
"@nookuio/rpc": "1.0.2"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {},
|
|
37
37
|
"keywords": [],
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.dragEnded = dragEnded;
|
|
7
|
-
var _helpers = require("./helpers");
|
|
8
|
-
var _ = require("./");
|
|
9
|
-
var _highlight = require("./highlight");
|
|
10
|
-
async function dragEnded(e, o) {
|
|
11
|
-
e.destroying = !0;
|
|
12
|
-
const t = e.insertAreas?.[e.selectedInsertAreaIndex ?? -1],
|
|
13
|
-
n = (e.mode === "insert" && !o ? t?.parent : e.initialContainer)?.querySelectorAll(`[data-node-id][data-node-path=${e.elementPath}]`) ?? [];
|
|
14
|
-
e.element.style.setProperty("view-transition-name", "dropped-item-self"), n.forEach((r, i) => {
|
|
15
|
-
r instanceof HTMLElement && (0, _helpers.isElementInViewport)(r) && r.style.setProperty("view-transition-name", "dropped-item-sibling-" + i);
|
|
16
|
-
}), e.repeatedNodes.filter(_helpers.isElementInViewport).forEach((r, i) => {
|
|
17
|
-
r.style.setProperty("view-transition-name", "dropped-item-repeated-" + i);
|
|
18
|
-
}), await (0, _helpers.tryStartViewTransition)(() => {
|
|
19
|
-
o ? (e.copy?.remove(), e.initialContainer.insertBefore(e.element, e.initialNextSibling)) : e.mode === "insert" && t?.parent.insertBefore(e.element, t.parent.childNodes[t.index]), e.element.classList.remove(_.DRAG_REORDER_CLASSNAME), e.element.classList.remove(_.DRAG_MOVE_CLASSNAME), e.element.style.removeProperty("translate"), e.repeatedNodes.toReversed().forEach(r => {
|
|
20
|
-
e.element.insertAdjacentElement("afterend", r), r.classList.remove("drag-repeat-node"), r.style.removeProperty("rotate"), r.style.removeProperty("--drag-repeat-node-width"), r.style.removeProperty("--drag-repeat-node-height"), r.style.removeProperty("--drag-repeat-node-translate"), r.style.removeProperty("--drag-repeat-node-rotate"), r.style.removeProperty("--drag-repeat-node-opacity");
|
|
21
|
-
}), (0, _highlight.removeDropHighlight)();
|
|
22
|
-
}).finished.then(() => {
|
|
23
|
-
e.element.style.removeProperty("view-transition-name"), n.forEach(r => {
|
|
24
|
-
r instanceof HTMLElement && r.style.removeProperty("view-transition-name");
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { isElementInViewport as s, tryStartViewTransition as l } from "./helpers.mjs";
|
|
2
|
-
import { DRAG_MOVE_CLASSNAME as m, DRAG_REORDER_CLASSNAME as p } from ".//index.mjs";
|
|
3
|
-
import { removeDropHighlight as a } from "./highlight.mjs";
|
|
4
|
-
export async function dragEnded(e, o) {
|
|
5
|
-
e.destroying = !0;
|
|
6
|
-
const t = e.insertAreas?.[e.selectedInsertAreaIndex ?? -1], n = (e.mode === "insert" && !o ? t?.parent : e.initialContainer)?.querySelectorAll(`[data-node-id][data-node-path=${e.elementPath}]`) ?? [];
|
|
7
|
-
e.element.style.setProperty("view-transition-name", "dropped-item-self"), n.forEach((r, i) => {
|
|
8
|
-
r instanceof HTMLElement && s(r) && r.style.setProperty("view-transition-name", "dropped-item-sibling-" + i);
|
|
9
|
-
}), e.repeatedNodes.filter(s).forEach((r, i) => {
|
|
10
|
-
r.style.setProperty("view-transition-name", "dropped-item-repeated-" + i);
|
|
11
|
-
}), await l(() => {
|
|
12
|
-
o ? (e.copy?.remove(), e.initialContainer.insertBefore(e.element, e.initialNextSibling)) : e.mode === "insert" && t?.parent.insertBefore(
|
|
13
|
-
e.element,
|
|
14
|
-
t.parent.childNodes[t.index]
|
|
15
|
-
), e.element.classList.remove(p), e.element.classList.remove(m), e.element.style.removeProperty("translate"), e.repeatedNodes.toReversed().forEach((r) => {
|
|
16
|
-
e.element.insertAdjacentElement("afterend", r), r.classList.remove("drag-repeat-node"), r.style.removeProperty("rotate"), r.style.removeProperty("--drag-repeat-node-width"), r.style.removeProperty("--drag-repeat-node-height"), r.style.removeProperty("--drag-repeat-node-translate"), r.style.removeProperty("--drag-repeat-node-rotate"), r.style.removeProperty("--drag-repeat-node-opacity");
|
|
17
|
-
}), a();
|
|
18
|
-
}).finished.then(() => {
|
|
19
|
-
e.element.style.removeProperty("view-transition-name"), n.forEach((r) => {
|
|
20
|
-
r instanceof HTMLElement && r.style.removeProperty("view-transition-name");
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.dragMove = dragMove;
|
|
7
|
-
var _ = require("./");
|
|
8
|
-
var _highlight = require("./highlight");
|
|
9
|
-
var _helpers = require("./helpers");
|
|
10
|
-
function dragMove(e, m) {
|
|
11
|
-
if (!e) return;
|
|
12
|
-
if (e.mode === "reorder") {
|
|
13
|
-
e.mode = "insert", e.element.style.setProperty("display", "none"), e.insertAreas ??= (0, _helpers.getInsertAreas)(e.elementPath).filter(s => m.every(i => !i?.contains(s.parent) && i !== s.parent) && s.parent !== document.body), e.element.style.removeProperty("display");
|
|
14
|
-
const t = e.element.style.getPropertyValue("translate");
|
|
15
|
-
e.element.style.setProperty("translate", "0");
|
|
16
|
-
const n = e.element.getBoundingClientRect();
|
|
17
|
-
document.body.appendChild(e.element), e.element.classList.add(_.DRAG_MOVE_CLASSNAME), e.element.classList.remove(_.DRAG_REORDER_CLASSNAME), e.element.style.setProperty("--drag-mode--move-left", `${n.left}px`), e.element.style.setProperty("--drag-mode--move-top", `${n.top}px`), e.element.style.setProperty("--drag-mode--move-width", `${e.initialRect.width}px`), e.element.style.setProperty("translate", t);
|
|
18
|
-
}
|
|
19
|
-
e.repeatedNodes.forEach((t, n) => {
|
|
20
|
-
t.style.setProperty("--drag-repeat-node-opacity", n < 3 ? "0.2" : "0");
|
|
21
|
-
});
|
|
22
|
-
const o = e.insertAreas?.map(t => t.layout === "block" ? {
|
|
23
|
-
x1: t.center.x - t.size / 2,
|
|
24
|
-
y1: t.center.y,
|
|
25
|
-
x2: t.center.x + t.size / 2,
|
|
26
|
-
y2: t.center.y
|
|
27
|
-
} : {
|
|
28
|
-
x1: t.center.x,
|
|
29
|
-
y1: t.center.y - t.size / 2,
|
|
30
|
-
x2: t.center.x,
|
|
31
|
-
y2: t.center.y + t.size / 2
|
|
32
|
-
}),
|
|
33
|
-
{
|
|
34
|
-
nearestLine: l,
|
|
35
|
-
projectionPoint: p
|
|
36
|
-
} = (0, _helpers.findNearestLine)(o ?? [], e.lastCursorPosition);
|
|
37
|
-
if (!l || !e.insertAreas || !o) return;
|
|
38
|
-
const r = e.insertAreas.at(o.indexOf(l));
|
|
39
|
-
r ? (e.selectedInsertAreaIndex = e.insertAreas?.indexOf(r), (0, _highlight.setExternalDropHighlight)({
|
|
40
|
-
layout: r.layout,
|
|
41
|
-
center: r.center,
|
|
42
|
-
length: r.size,
|
|
43
|
-
color: e.elementType === "component" ? "D946EF" : "2563EB",
|
|
44
|
-
projectionPoint: p
|
|
45
|
-
})) : (0, _highlight.removeDropHighlight)();
|
|
46
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { DRAG_REORDER_CLASSNAME as y, DRAG_MOVE_CLASSNAME as c } from ".//index.mjs";
|
|
2
|
-
import { removeDropHighlight as f, setExternalDropHighlight as A } from "./highlight.mjs";
|
|
3
|
-
import { getInsertAreas as u, findNearestLine as x } from "./helpers.mjs";
|
|
4
|
-
export function dragMove(e, m) {
|
|
5
|
-
if (!e)
|
|
6
|
-
return;
|
|
7
|
-
if (e.mode === "reorder") {
|
|
8
|
-
e.mode = "insert", e.element.style.setProperty("display", "none"), e.insertAreas ??= u(e.elementPath).filter(
|
|
9
|
-
(s) => m.every((i) => !i?.contains(s.parent) && i !== s.parent) && s.parent !== document.body
|
|
10
|
-
), e.element.style.removeProperty("display");
|
|
11
|
-
const t = e.element.style.getPropertyValue("translate");
|
|
12
|
-
e.element.style.setProperty("translate", "0");
|
|
13
|
-
const n = e.element.getBoundingClientRect();
|
|
14
|
-
document.body.appendChild(e.element), e.element.classList.add(c), e.element.classList.remove(y), e.element.style.setProperty("--drag-mode--move-left", `${n.left}px`), e.element.style.setProperty("--drag-mode--move-top", `${n.top}px`), e.element.style.setProperty("--drag-mode--move-width", `${e.initialRect.width}px`), e.element.style.setProperty("translate", t);
|
|
15
|
-
}
|
|
16
|
-
e.repeatedNodes.forEach((t, n) => {
|
|
17
|
-
t.style.setProperty("--drag-repeat-node-opacity", n < 3 ? "0.2" : "0");
|
|
18
|
-
});
|
|
19
|
-
const o = e.insertAreas?.map((t) => t.layout === "block" ? {
|
|
20
|
-
x1: t.center.x - t.size / 2,
|
|
21
|
-
y1: t.center.y,
|
|
22
|
-
x2: t.center.x + t.size / 2,
|
|
23
|
-
y2: t.center.y
|
|
24
|
-
} : {
|
|
25
|
-
x1: t.center.x,
|
|
26
|
-
y1: t.center.y - t.size / 2,
|
|
27
|
-
x2: t.center.x,
|
|
28
|
-
y2: t.center.y + t.size / 2
|
|
29
|
-
}), { nearestLine: l, projectionPoint: p } = x(o ?? [], e.lastCursorPosition);
|
|
30
|
-
if (!l || !e.insertAreas || !o)
|
|
31
|
-
return;
|
|
32
|
-
const r = e.insertAreas.at(o.indexOf(l));
|
|
33
|
-
r ? (e.selectedInsertAreaIndex = e.insertAreas?.indexOf(r), A({
|
|
34
|
-
layout: r.layout,
|
|
35
|
-
center: r.center,
|
|
36
|
-
length: r.size,
|
|
37
|
-
color: e.elementType === "component" ? "D946EF" : "2563EB",
|
|
38
|
-
projectionPoint: p
|
|
39
|
-
})) : f();
|
|
40
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.DRAG_REORDER_CLASSNAME = void 0;
|
|
7
|
-
exports.dragReorder = dragReorder;
|
|
8
|
-
var _helpers = require("./helpers");
|
|
9
|
-
var _ = require("./");
|
|
10
|
-
var _highlight = require("./highlight");
|
|
11
|
-
const DRAG_REORDER_CLASSNAME = exports.DRAG_REORDER_CLASSNAME = "__drag-mode--reorder";
|
|
12
|
-
const c = 100;
|
|
13
|
-
function dragReorder(e) {
|
|
14
|
-
if (!e || e.isTransitioning) return;
|
|
15
|
-
if (e.mode === "insert") {
|
|
16
|
-
e.mode = "reorder";
|
|
17
|
-
const o = e.element.getBoundingClientRect();
|
|
18
|
-
e.element.classList.add(DRAG_REORDER_CLASSNAME), e.element.classList.remove(_.DRAG_MOVE_CLASSNAME), e.initialContainer.insertBefore(e.element, e.initialNextSibling), e.repeatedNodes.forEach((r, l) => {
|
|
19
|
-
r.style.setProperty("--drag-repeat-node-opacity", l < 3 ? "1" : "0");
|
|
20
|
-
});
|
|
21
|
-
const s = e.element.getBoundingClientRect();
|
|
22
|
-
e.offset.x += s.left - o.left, e.offset.y += s.top - o.top, (0, _highlight.setDropHighlight)(e.element, e.initialContainer, e.elementType === "component" ? "D946EF" : "2563EB");
|
|
23
|
-
}
|
|
24
|
-
const f = T(e);
|
|
25
|
-
if (f && e.element.nextElementSibling !== f.nextSibling) {
|
|
26
|
-
e.isTransitioning = !0;
|
|
27
|
-
const o = Array.from(e.initialContainer.childNodes);
|
|
28
|
-
o.filter(t => t instanceof HTMLElement).filter(_helpers.isElementInViewport).forEach((t, i) => {
|
|
29
|
-
t.style.setProperty("view-transition-name", "item-" + i);
|
|
30
|
-
}), e.element.style.setProperty("view-transition-name", "__drag-item");
|
|
31
|
-
const s = e.element.offsetLeft,
|
|
32
|
-
r = e.element.offsetTop;
|
|
33
|
-
(0, _helpers.tryStartViewTransition)(() => {
|
|
34
|
-
e && (e.initialContainer.insertBefore(e.element, f.nextSibling), e.offset.x += e.element.offsetLeft - s, e.offset.y += e.element.offsetTop - r, e?.element.style.setProperty("translate", `${e.lastCursorPosition.x - e.offset.x}px ${e.lastCursorPosition.y - e.offset.y}px`), (0, _highlight.setDropHighlight)(e.element, e.initialContainer, e.elementType === "component" ? "D946EF" : "2563EB"));
|
|
35
|
-
}).finished.then(() => {
|
|
36
|
-
o.forEach(t => {
|
|
37
|
-
t instanceof HTMLElement && t.style.removeProperty("view-transition-name");
|
|
38
|
-
}), e && (e.isTransitioning = !1);
|
|
39
|
-
}).catch(() => {});
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
function T(e) {
|
|
43
|
-
const {
|
|
44
|
-
left: f,
|
|
45
|
-
top: o,
|
|
46
|
-
width: s,
|
|
47
|
-
height: r
|
|
48
|
-
} = e.element.getBoundingClientRect(),
|
|
49
|
-
l = f + s / 2,
|
|
50
|
-
t = o + r / 2;
|
|
51
|
-
return e.reorderPermutations.reduce((i, n) => {
|
|
52
|
-
if (Math.abs(n.rect.left + n.rect.width / 2 - l) < n.rect.width / 2 + c && Math.abs(n.rect.top + n.rect.height / 2 - t) < n.rect.height / 2 + c) {
|
|
53
|
-
if (!i) return n;
|
|
54
|
-
const p = Math.hypot(i.rect.left + i.rect.width / 2 - l, i.rect.top + i.rect.height / 2 - t),
|
|
55
|
-
h = Math.hypot(n.rect.left + n.rect.width / 2 - l, n.rect.top + n.rect.height / 2 - t);
|
|
56
|
-
return p < h ? i : n;
|
|
57
|
-
}
|
|
58
|
-
return i;
|
|
59
|
-
}, null);
|
|
60
|
-
}
|