dialkit 1.2.1 → 1.3.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/README.md +220 -3
- package/dist/dropdown-position.d.ts +15 -0
- package/dist/dropdown-position.js +22 -0
- package/dist/dropdown-position.js.map +1 -0
- package/dist/index.cjs +697 -307
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +42 -5
- package/dist/index.d.ts +42 -5
- package/dist/index.js +720 -331
- package/dist/index.js.map +1 -1
- package/dist/panel-drag.d.ts +19 -0
- package/dist/panel-drag.js +72 -0
- package/dist/panel-drag.js.map +1 -0
- package/dist/solid/index.cjs +661 -204
- package/dist/solid/index.cjs.map +1 -1
- package/dist/solid/index.d.cts +40 -3
- package/dist/solid/index.d.ts +40 -3
- package/dist/solid/index.js +646 -190
- package/dist/solid/index.js.map +1 -1
- package/dist/store/index.cjs +272 -41
- package/dist/store/index.cjs.map +1 -1
- package/dist/store/index.d.cts +30 -3
- package/dist/store/index.d.ts +30 -3
- package/dist/store/index.js +269 -40
- package/dist/store/index.js.map +1 -1
- package/dist/styles.css +105 -7
- package/dist/svelte/components/DialRoot.svelte +176 -11
- package/dist/svelte/components/DialRoot.svelte.d.ts +1 -0
- package/dist/svelte/components/DialRoot.svelte.d.ts.map +1 -1
- package/dist/svelte/components/Folder.svelte +24 -13
- package/dist/svelte/components/Folder.svelte.d.ts +1 -0
- package/dist/svelte/components/Folder.svelte.d.ts.map +1 -1
- package/dist/svelte/components/Panel.svelte +98 -71
- package/dist/svelte/components/Panel.svelte.d.ts +2 -0
- package/dist/svelte/components/Panel.svelte.d.ts.map +1 -1
- package/dist/svelte/components/PresetManager.svelte +5 -5
- package/dist/svelte/components/PresetManager.svelte.d.ts.map +1 -1
- package/dist/svelte/components/SelectControl.svelte +6 -14
- package/dist/svelte/components/SelectControl.svelte.d.ts.map +1 -1
- package/dist/svelte/createDialKit.svelte.d.ts +11 -1
- package/dist/svelte/createDialKit.svelte.d.ts.map +1 -1
- package/dist/svelte/createDialKit.svelte.js +61 -34
- package/dist/svelte/index.d.ts +3 -3
- package/dist/svelte/index.d.ts.map +1 -1
- package/dist/svelte/index.js +1 -1
- package/dist/svelte/theme-css.d.ts +1 -1
- package/dist/svelte/theme-css.d.ts.map +1 -1
- package/dist/svelte/theme-css.js +105 -7
- package/dist/vue/index.cjs +573 -132
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.cts +53 -6
- package/dist/vue/index.d.ts +53 -6
- package/dist/vue/index.js +573 -133
- package/dist/vue/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
type PanelDragOffset = {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
};
|
|
5
|
+
type PanelDragStart = {
|
|
6
|
+
pointerX: number;
|
|
7
|
+
pointerY: number;
|
|
8
|
+
elX: number;
|
|
9
|
+
elY: number;
|
|
10
|
+
};
|
|
11
|
+
type PanelDragOriginX = 'left' | 'right';
|
|
12
|
+
declare function getPanelDragHandle(target: EventTarget | null, panel: HTMLElement | null): HTMLElement | null;
|
|
13
|
+
declare function getPanelDragStart(pointerX: number, pointerY: number, panel: HTMLElement): PanelDragStart;
|
|
14
|
+
declare function getPanelDragOffset(start: PanelDragStart, pointerX: number, pointerY: number): PanelDragOffset;
|
|
15
|
+
declare function hasPanelDragMoved(start: PanelDragStart, pointerX: number, pointerY: number): boolean;
|
|
16
|
+
declare function getPanelOriginX(position: string, offset: PanelDragOffset | null, viewportWidth?: number | undefined): PanelDragOriginX;
|
|
17
|
+
declare function blockPanelDragClick(handle: HTMLElement): void;
|
|
18
|
+
|
|
19
|
+
export { type PanelDragOffset, type PanelDragOriginX, type PanelDragStart, blockPanelDragClick, getPanelDragHandle, getPanelDragOffset, getPanelDragStart, getPanelOriginX, hasPanelDragMoved };
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// src/panel-drag.ts
|
|
2
|
+
var PANEL_DRAG_THRESHOLD = 8;
|
|
3
|
+
var COLLAPSED_PANEL_SIZE = 42;
|
|
4
|
+
var DRAG_EXCLUSION_SELECTOR = [
|
|
5
|
+
".dialkit-panel-icon",
|
|
6
|
+
".dialkit-panel-toolbar",
|
|
7
|
+
"button",
|
|
8
|
+
"input",
|
|
9
|
+
"select",
|
|
10
|
+
"textarea",
|
|
11
|
+
"a",
|
|
12
|
+
'[role="button"]',
|
|
13
|
+
'[contenteditable="true"]'
|
|
14
|
+
].join(",");
|
|
15
|
+
function getPanelDragHandle(target, panel) {
|
|
16
|
+
if (!(target instanceof Element) || !panel) return null;
|
|
17
|
+
const inner = target.closest(".dialkit-panel-inner");
|
|
18
|
+
if (!inner || !panel.contains(inner)) return null;
|
|
19
|
+
if (inner.getAttribute("data-collapsed") === "true") {
|
|
20
|
+
return inner;
|
|
21
|
+
}
|
|
22
|
+
const header = target.closest(".dialkit-panel-header");
|
|
23
|
+
if (!header || !inner.contains(header)) return null;
|
|
24
|
+
if (target.closest(DRAG_EXCLUSION_SELECTOR)) return null;
|
|
25
|
+
return header;
|
|
26
|
+
}
|
|
27
|
+
function getPanelDragStart(pointerX, pointerY, panel) {
|
|
28
|
+
const rect = panel.getBoundingClientRect();
|
|
29
|
+
return {
|
|
30
|
+
pointerX,
|
|
31
|
+
pointerY,
|
|
32
|
+
elX: rect.left,
|
|
33
|
+
elY: rect.top
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function getPanelDragOffset(start, pointerX, pointerY) {
|
|
37
|
+
return {
|
|
38
|
+
x: start.elX + pointerX - start.pointerX,
|
|
39
|
+
y: start.elY + pointerY - start.pointerY
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function hasPanelDragMoved(start, pointerX, pointerY) {
|
|
43
|
+
const dx = pointerX - start.pointerX;
|
|
44
|
+
const dy = pointerY - start.pointerY;
|
|
45
|
+
return Math.hypot(dx, dy) >= PANEL_DRAG_THRESHOLD;
|
|
46
|
+
}
|
|
47
|
+
function getPanelOriginX(position, offset, viewportWidth = typeof window !== "undefined" ? window.innerWidth : void 0) {
|
|
48
|
+
if (offset && viewportWidth) {
|
|
49
|
+
return offset.x + COLLAPSED_PANEL_SIZE / 2 < viewportWidth / 2 ? "left" : "right";
|
|
50
|
+
}
|
|
51
|
+
return position.endsWith("left") ? "left" : "right";
|
|
52
|
+
}
|
|
53
|
+
function blockPanelDragClick(handle) {
|
|
54
|
+
const blocker = (event) => {
|
|
55
|
+
event.preventDefault();
|
|
56
|
+
event.stopImmediatePropagation();
|
|
57
|
+
event.stopPropagation();
|
|
58
|
+
};
|
|
59
|
+
handle.addEventListener("click", blocker, { capture: true, once: true });
|
|
60
|
+
window.setTimeout(() => {
|
|
61
|
+
handle.removeEventListener("click", blocker, true);
|
|
62
|
+
}, 0);
|
|
63
|
+
}
|
|
64
|
+
export {
|
|
65
|
+
blockPanelDragClick,
|
|
66
|
+
getPanelDragHandle,
|
|
67
|
+
getPanelDragOffset,
|
|
68
|
+
getPanelDragStart,
|
|
69
|
+
getPanelOriginX,
|
|
70
|
+
hasPanelDragMoved
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=panel-drag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/panel-drag.ts"],"sourcesContent":["export type PanelDragOffset = {\n x: number;\n y: number;\n};\n\nexport type PanelDragStart = {\n pointerX: number;\n pointerY: number;\n elX: number;\n elY: number;\n};\n\nexport type PanelDragOriginX = 'left' | 'right';\n\nconst PANEL_DRAG_THRESHOLD = 8;\nconst COLLAPSED_PANEL_SIZE = 42;\n\nconst DRAG_EXCLUSION_SELECTOR = [\n '.dialkit-panel-icon',\n '.dialkit-panel-toolbar',\n 'button',\n 'input',\n 'select',\n 'textarea',\n 'a',\n '[role=\"button\"]',\n '[contenteditable=\"true\"]',\n].join(',');\n\nexport function getPanelDragHandle(target: EventTarget | null, panel: HTMLElement | null): HTMLElement | null {\n if (!(target instanceof Element) || !panel) return null;\n\n const inner = target.closest<HTMLElement>('.dialkit-panel-inner');\n if (!inner || !panel.contains(inner)) return null;\n\n if (inner.getAttribute('data-collapsed') === 'true') {\n return inner;\n }\n\n const header = target.closest<HTMLElement>('.dialkit-panel-header');\n if (!header || !inner.contains(header)) return null;\n\n if (target.closest(DRAG_EXCLUSION_SELECTOR)) return null;\n\n return header;\n}\n\nexport function getPanelDragStart(pointerX: number, pointerY: number, panel: HTMLElement): PanelDragStart {\n const rect = panel.getBoundingClientRect();\n return {\n pointerX,\n pointerY,\n elX: rect.left,\n elY: rect.top,\n };\n}\n\nexport function getPanelDragOffset(start: PanelDragStart, pointerX: number, pointerY: number): PanelDragOffset {\n return {\n x: start.elX + pointerX - start.pointerX,\n y: start.elY + pointerY - start.pointerY,\n };\n}\n\nexport function hasPanelDragMoved(start: PanelDragStart, pointerX: number, pointerY: number): boolean {\n const dx = pointerX - start.pointerX;\n const dy = pointerY - start.pointerY;\n return Math.hypot(dx, dy) >= PANEL_DRAG_THRESHOLD;\n}\n\nexport function getPanelOriginX(\n position: string,\n offset: PanelDragOffset | null,\n viewportWidth = typeof window !== 'undefined' ? window.innerWidth : undefined\n): PanelDragOriginX {\n if (offset && viewportWidth) {\n return offset.x + COLLAPSED_PANEL_SIZE / 2 < viewportWidth / 2 ? 'left' : 'right';\n }\n\n return position.endsWith('left') ? 'left' : 'right';\n}\n\nexport function blockPanelDragClick(handle: HTMLElement) {\n const blocker = (event: Event) => {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n };\n\n handle.addEventListener('click', blocker, { capture: true, once: true });\n window.setTimeout(() => {\n handle.removeEventListener('click', blocker, true);\n }, 0);\n}\n"],"mappings":";AAcA,IAAM,uBAAuB;AAC7B,IAAM,uBAAuB;AAE7B,IAAM,0BAA0B;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAEH,SAAS,mBAAmB,QAA4B,OAA+C;AAC5G,MAAI,EAAE,kBAAkB,YAAY,CAAC,MAAO,QAAO;AAEnD,QAAM,QAAQ,OAAO,QAAqB,sBAAsB;AAChE,MAAI,CAAC,SAAS,CAAC,MAAM,SAAS,KAAK,EAAG,QAAO;AAE7C,MAAI,MAAM,aAAa,gBAAgB,MAAM,QAAQ;AACnD,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,OAAO,QAAqB,uBAAuB;AAClE,MAAI,CAAC,UAAU,CAAC,MAAM,SAAS,MAAM,EAAG,QAAO;AAE/C,MAAI,OAAO,QAAQ,uBAAuB,EAAG,QAAO;AAEpD,SAAO;AACT;AAEO,SAAS,kBAAkB,UAAkB,UAAkB,OAAoC;AACxG,QAAM,OAAO,MAAM,sBAAsB;AACzC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,KAAK,KAAK;AAAA,IACV,KAAK,KAAK;AAAA,EACZ;AACF;AAEO,SAAS,mBAAmB,OAAuB,UAAkB,UAAmC;AAC7G,SAAO;AAAA,IACL,GAAG,MAAM,MAAM,WAAW,MAAM;AAAA,IAChC,GAAG,MAAM,MAAM,WAAW,MAAM;AAAA,EAClC;AACF;AAEO,SAAS,kBAAkB,OAAuB,UAAkB,UAA2B;AACpG,QAAM,KAAK,WAAW,MAAM;AAC5B,QAAM,KAAK,WAAW,MAAM;AAC5B,SAAO,KAAK,MAAM,IAAI,EAAE,KAAK;AAC/B;AAEO,SAAS,gBACd,UACA,QACA,gBAAgB,OAAO,WAAW,cAAc,OAAO,aAAa,QAClD;AAClB,MAAI,UAAU,eAAe;AAC3B,WAAO,OAAO,IAAI,uBAAuB,IAAI,gBAAgB,IAAI,SAAS;AAAA,EAC5E;AAEA,SAAO,SAAS,SAAS,MAAM,IAAI,SAAS;AAC9C;AAEO,SAAS,oBAAoB,QAAqB;AACvD,QAAM,UAAU,CAAC,UAAiB;AAChC,UAAM,eAAe;AACrB,UAAM,yBAAyB;AAC/B,UAAM,gBAAgB;AAAA,EACxB;AAEA,SAAO,iBAAiB,SAAS,SAAS,EAAE,SAAS,MAAM,MAAM,KAAK,CAAC;AACvE,SAAO,WAAW,MAAM;AACtB,WAAO,oBAAoB,SAAS,SAAS,IAAI;AAAA,EACnD,GAAG,CAAC;AACN;","names":[]}
|