@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.
Files changed (46) hide show
  1. package/dist/constants.d.ts +0 -9
  2. package/dist/constants.js +2 -11
  3. package/dist/constants.mjs +1 -9
  4. package/dist/editor.js +41 -35
  5. package/dist/editor.mjs +42 -36
  6. package/dist/iframe.d.ts +1 -1
  7. package/dist/iframe.js +141 -126
  8. package/dist/iframe.mjs +150 -134
  9. package/dist/types.d.ts +7 -17
  10. package/package.json +2 -2
  11. package/dist/drag-drop/dragEnd.d.ts +0 -2
  12. package/dist/drag-drop/dragEnd.js +0 -27
  13. package/dist/drag-drop/dragEnd.mjs +0 -23
  14. package/dist/drag-drop/dragMove.d.ts +0 -2
  15. package/dist/drag-drop/dragMove.js +0 -46
  16. package/dist/drag-drop/dragMove.mjs +0 -40
  17. package/dist/drag-drop/dragReorder.d.ts +0 -3
  18. package/dist/drag-drop/dragReorder.js +0 -60
  19. package/dist/drag-drop/dragReorder.mjs +0 -64
  20. package/dist/drag-drop/dragStart.d.ts +0 -9
  21. package/dist/drag-drop/dragStart.js +0 -60
  22. package/dist/drag-drop/dragStart.mjs +0 -55
  23. package/dist/drag-drop/helpers.d.ts +0 -42
  24. package/dist/drag-drop/helpers.js +0 -205
  25. package/dist/drag-drop/helpers.mjs +0 -188
  26. package/dist/drag-drop/highlight.d.ts +0 -16
  27. package/dist/drag-drop/highlight.js +0 -32
  28. package/dist/drag-drop/highlight.mjs +0 -22
  29. package/dist/drag-drop/index.d.ts +0 -24
  30. package/dist/drag-drop/index.js +0 -106
  31. package/dist/drag-drop/index.mjs +0 -83
  32. package/dist/drag-drop/types.d.ts +0 -123
  33. package/dist/drag-drop/types.js +0 -1
  34. package/dist/drag-drop/types.mjs +0 -0
  35. package/dist/drag-drop backup/dragDropManager.d.ts +0 -101
  36. package/dist/drag-drop backup/dragDropManager.js +0 -204
  37. package/dist/drag-drop backup/dragDropManager.mjs +0 -183
  38. package/dist/drag-drop backup/index.d.ts +0 -3
  39. package/dist/drag-drop backup/index.js +0 -38
  40. package/dist/drag-drop backup/index.mjs +0 -3
  41. package/dist/drag-drop backup/types.d.ts +0 -80
  42. package/dist/drag-drop backup/types.js +0 -1
  43. package/dist/drag-drop backup/types.mjs +0 -0
  44. package/dist/drag-drop backup/utils.d.ts +0 -41
  45. package/dist/drag-drop backup/utils.js +0 -93
  46. package/dist/drag-drop backup/utils.mjs +0 -68
package/dist/iframe.mjs CHANGED
@@ -1,163 +1,179 @@
1
- import { EDITOR_SOURCE_NAME as b, IFRAME_SOURCE_NAME as w } from "./constants.mjs";
2
- import { createClient as C } from "@nookuio/rpc";
3
- import { stringify as v, parse as L } from "telejson";
4
- import { createDragDropContext as x } from "./drag-drop/index.mjs";
5
- function p(u, d) {
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 h(u, d) {
9
- const m = document.querySelectorAll(u);
10
- if (!m?.length) return;
11
- const r = Array.from(m).map((f) => {
12
- const l = f.getBoundingClientRect(), g = {
13
- width: l.width,
14
- height: l.height,
15
- top: l.top,
16
- left: l.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 (!d) return g;
19
- const c = window.getComputedStyle(f) ?? {};
17
+ if (!t) return d;
18
+ const i = window.getComputedStyle(r) ?? {};
20
19
  return {
21
- ...g,
20
+ ...d,
22
21
  padding: {
23
- top: c.paddingTop,
24
- right: c.paddingRight,
25
- bottom: c.paddingBottom,
26
- left: c.paddingLeft
22
+ top: i.paddingTop,
23
+ right: i.paddingRight,
24
+ bottom: i.paddingBottom,
25
+ left: i.paddingLeft
27
26
  }
28
27
  };
29
28
  });
30
- if (r?.length)
31
- return r.length === 1 ? r[0] : r;
29
+ if (o?.length)
30
+ return o.length === 1 ? o[0] : o;
32
31
  }
33
- export function createVueIframeClient(u, d) {
34
- const m = x(), r = C(
35
- {
36
- ...u,
37
- ...m,
38
- async editText({ path: e, id: t }) {
39
- if (!e || t === void 0) return;
40
- const i = p(e, t), n = document.querySelector(i);
41
- if (!n) return;
42
- n.style.outline = "none", n.setAttribute("spellcheck", "false"), n.setAttribute("contenteditable", "true");
43
- const o = (a) => {
44
- const E = a.target;
45
- if (!E) return;
46
- const y = E.innerText;
47
- n.removeAttribute("contenteditable"), r.emit("text-update", { path: e, id: t, content: y }), n.removeEventListener("blur", o), n.removeEventListener("keydown", s), n.blur();
48
- }, s = (a) => {
49
- a.key === "Enter" && (a.stopPropagation(), a.preventDefault(), o(a));
50
- };
51
- n.addEventListener("keydown", s), n.addEventListener("blur", o), n.focus();
52
- },
53
- async getHoveredElement({ path: e, id: t, x: i, y: n }) {
54
- if (e)
55
- if (i !== void 0 && n !== void 0) {
56
- let o = document.elementFromPoint(i, n);
57
- if (!o) return;
58
- let s = o.getAttribute("data-node-path");
59
- if (s !== e) {
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
- async getPageHeight() {
82
- return document.body.scrollHeight > 0 ? document.body.scrollHeight : document.documentElement.scrollHeight;
83
- },
84
- async getSelectedElement({ path: e, id: t }) {
85
- const i = p(e, t), n = h(i, !0);
86
- if (n)
87
- return {
88
- path: e,
89
- id: t,
90
- data: n
91
- };
92
- },
93
- setTheme(e) {
94
- const t = document.querySelector("body");
95
- e === "dark" ? (document.documentElement.classList.remove("light"), document.documentElement.classList.add("dark"), t && (t.classList.remove("light"), t.classList.add("dark"))) : (document.documentElement.classList.remove("dark"), document.documentElement.classList.add("light"), t && (t.classList.remove("dark"), t.classList.add("light")));
96
- }
97
- // updateElementClass({ className, id, path }) {
98
- // const selector = getSelector(path, id);
99
- // const elements = document.querySelectorAll(selector);
100
- // if (!elements?.length) return;
101
- // elements.forEach((elm) => (elm.className = className));
102
- // },
103
- // updateElementAttribute({ attribute, value, id, path }) {
104
- // const selector = getSelector(path, id);
105
- // const elements = document.querySelectorAll(selector);
106
- // if (!elements?.length) return;
107
- // elements.forEach((elm) => elm.setAttribute(attribute, value));
108
- // },
109
- // duplicateElement({ id, path }) {
110
- // const selector = getSelector(path, id);
111
- // const elements = document.querySelectorAll(selector);
112
- // if (!elements?.length) return;
113
- // elements.forEach((elm) => {
114
- // const clone = elm.cloneNode(true) as HTMLElement;
115
- // clone.setAttribute('data-node-id', String(Number(clone.getAttribute('data-node-id')!) + 1));
116
- // elm.parentElement?.insertBefore(clone, elm.nextSibling);
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 (t) => {
123
- if (typeof t.data != "object" || t.data.source !== b || t.data.type === "event" || !t.data.request) return;
124
- const i = await e(t.data.request);
125
- window.parent.postMessage({ source: w, response: i }, "*");
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((t, i) => {
130
- const n = setTimeout(() => {
131
- window.removeEventListener("message", o), i(new Error("Request timed out"));
132
- }, 5e3);
133
- function o(s) {
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: w, type: "event", request: e }, "*");
152
+ window.parent.postMessage({ source: g, type: "event", request: e }, "*");
141
153
  },
142
154
  handleEvent(e) {
143
- window.addEventListener("message", (t) => {
144
- typeof t.data == "object" && (t.data.source !== b || t.data.type !== "event" || !t.data.request || e(t.data.request));
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
- deserialize: (e) => L(e),
148
- serialize: (e) => v(e, { maxDepth: 1 / 0 })
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
- ), f = d?.disableDefaultConsole ? void 0 : console.log.bind(console), l = d?.disableDefaultConsole ? void 0 : console.warn.bind(console), g = d?.disableDefaultConsole ? void 0 : console.error.bind(console), c = d?.disableDefaultConsole ? void 0 : console.info.bind(console);
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
- r.emit("console", "log", e), f?.(...e);
168
+ o.emit("console", "log", e), r?.(...e);
153
169
  }, console.warn = (...e) => {
154
- l?.(...e);
170
+ s?.(...e);
155
171
  }, console.error = (...e) => {
156
- r.emit("console", "error", e), g?.(...e);
172
+ o.emit("console", "error", e), d?.(...e);
157
173
  }, console.info = (...e) => {
158
- r.emit("console", "info", e), c?.(...e);
159
- }, window.addEventListener("resize", async () => r.emit("resize", await r.$context.getPageHeight())), new MutationObserver(
160
- async () => r.emit("resize", await r.$context.getPageHeight())
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
- }), r.emit("ready"), r;
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 extends DragDropContext {
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
- updateVirtualSfcCode: (path: string, code: string) => void;
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-beta.0",
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.1"
34
+ "@nookuio/rpc": "1.0.2"
35
35
  },
36
36
  "devDependencies": {},
37
37
  "keywords": [],
@@ -1,2 +0,0 @@
1
- import type { DragState } from './types';
2
- export declare function dragEnded(dragState: DragState, canceled: boolean): Promise<void>;
@@ -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,2 +0,0 @@
1
- import type { DragState } from './types';
2
- export declare function dragMove(dragState: DragState | null, exclude: HTMLElement[]): void;
@@ -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,3 +0,0 @@
1
- import type { DragState } from './types';
2
- export declare const DRAG_REORDER_CLASSNAME = "__drag-mode--reorder";
3
- export declare function dragReorder(dragState: DragState | null): void;
@@ -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
- }