@dialpad/dialtone
Version:
Dialpad's Dialtone design system monorepo
960 lines (959 loc) • 27.4 kB
JavaScript
import { c as e, d as t, f as n, o as r } from "./resizable_utils-BComtrMV.js";
import { n as i, r as a, t as o } from "./useResizableCalculations-DAajatT4.js";
import { computed as s, createElementBlock as c, nextTick as l, normalizeClass as u, onMounted as d, onUnmounted as f, openBlock as p, provide as m, reactive as h, ref as g, renderSlot as _, unref as v, watch as y } from "vue";
//#region components/resizable/composables/useResizablePanelState.ts
function b(e, t, n, r = "user") {
let o = i(e, n);
return e.userMinSizePixels = o.userMinSizePixels, e.userMaxSizePixels = o.userMaxSizePixels, e.systemMinSizePixels = o.systemMinSizePixels, e.systemMaxSizePixels = o.systemMaxSizePixels, e.collapseSizePixels = o.collapseSizePixels, a(t, o, r);
}
function x(e, t) {
return e.resizable !== !1 && !e.collapsed && t.resizable !== !1 && !t.collapsed;
}
//#endregion
//#region components/resizable/composables/useResizablePanelControls.ts
function S(e) {
let { panels: t, containerSize: n, containerRef: i, onPanelResize: a, onPanelCollapse: o, updateSavedPanel: s } = e, c = /* @__PURE__ */ new Map();
function l(e) {
return r(e, n.value);
}
function u(e) {
let { panelId: n, action: r, source: a } = e, s = t.value.find((e) => e.id === n), c = r === "collapse";
return d(n, s, c) || (c ? f(s, a) : p(s), o(n, c), i.value && i.value.dispatchEvent(new CustomEvent("panels-updated")), {
success: !0,
panelId: n,
newState: c ? "collapsed" : "expanded"
});
}
function d(e, t, n) {
if (!t) return {
success: !1,
reason: "Panel not found",
panelId: e,
newState: "unchanged"
};
let r = t.collapsed;
if (n && r) return {
success: !0,
reason: "Already collapsed",
panelId: e,
newState: "unchanged"
};
if (!n && !r) return {
success: !0,
reason: "Already expanded",
panelId: e,
newState: "unchanged"
};
if (n && !t.collapsible) return {
success: !1,
reason: "Panel is not collapsible",
panelId: e,
newState: "unchanged"
};
}
function f(e, r) {
let i = {
sizes: /* @__PURE__ */ new Map(),
manualTargets: /* @__PURE__ */ new Map(),
containerSize: n.value
};
t.value.forEach((e) => {
i.sizes.set(e.id, e.pixelSize), i.manualTargets.set(e.id, e.manualTargetSize);
}), c.set(e.id, i), s(e.id, {
collapsed: !0,
autoCollapsed: r === "system"
}), t.value.forEach((t) => {
t.id !== e.id && !t.collapsed && s(t.id, { manualTargetRatio: void 0 });
});
}
function p(e) {
let i = e.autoCollapsed ?? !1, a = c.get(e.id);
if (a) {
if (!(Math.abs(n.value - a.containerSize) / a.containerSize > .1) || !i) {
let n = a.sizes.get(e.id);
n === void 0 ? s(e.id, {
collapsed: !1,
autoCollapsed: void 0
}) : s(e.id, {
pixelSize: n,
collapsed: !1,
autoCollapsed: void 0
}), t.value.forEach((t) => {
if (t.id === e.id) return;
let n = a.sizes.get(t.id), r = a.manualTargets.get(t.id) !== void 0, i = t.manualTargetSize !== void 0;
!r && !i && n !== void 0 && s(t.id, { pixelSize: n });
});
} else s(e.id, {
collapsed: !1,
autoCollapsed: void 0
});
c.delete(e.id);
} else {
let t = b(e, r(e.initialSize ?? "50p", n.value), n.value, "system");
s(e.id, {
pixelSize: t,
collapsed: !1,
autoCollapsed: void 0
});
}
}
function m(e, t) {
let r = Math.round(t), i = n.value;
s(e, {
pixelSize: r,
manualTargetRatio: i > 0 ? r / i : void 0
});
}
function h(e, r) {
let i = t.value.find((t) => t.id === e);
if (!i || i.collapsed) return;
let o = b(i, r, n.value);
m(e, o), a(e, o);
}
function g(e, t, n) {
let r = n?.isAutoCollapse ? "system" : "prop";
u({
panelId: e,
action: t ? "collapse" : "expand",
source: r
});
}
function _(e, t) {
let n = e.pixelSize + t.pixelSize, r = l(e.initialSize || "50p"), i = r + l(t.initialSize || "50p"), o = Math.round(i > 0 ? r / i * n : n / 2), c = n - o;
s(e.id, {
pixelSize: o,
manualTargetRatio: void 0
}), s(t.id, {
pixelSize: c,
manualTargetRatio: void 0
}), a(e.id, o), a(t.id, c);
}
function v() {
for (let e = 0; e < t.value.length - 1; e++) {
let n = t.value[e], r = t.value[e + 1];
x(n, r) && _(n, r);
}
}
function y(e, n) {
let r = e ? t.value.find((t) => t.id === e) : void 0, i = n ? t.value.find((e) => e.id === n) : void 0;
r && i && x(r, i) && _(r, i);
}
function S(e) {
if (!e) return;
let n = t.value.find((t) => t.id === e);
if (!n || n.collapsed || n.resizable === !1) return;
let r = l(n.initialSize || "50p"), i = r - n.pixelSize, o = t.value.indexOf(n), c = t.value.find((e, t) => t !== o && !e.collapsed && e.resizable !== !1);
if (!c) return;
let u = c.pixelSize - i;
s(n.id, {
pixelSize: r,
manualTargetRatio: void 0
}), s(c.id, { pixelSize: u }), a(n.id, r), a(c.id, u);
}
function C(e, t, n = "all") {
try {
n === "all" ? v() : n === "before" ? S(e) : n === "after" ? S(t) : y(e, t);
} catch (e) {
console.error("[resizable] Error in resetPanels:", e);
}
}
function w() {
let e = [], r = n.value;
for (let n of t.value) n.collapsed || !n.collapsible || !n.collapseSizePixels || r < n.collapseSizePixels && u({
panelId: n.id,
action: "collapse",
source: "system"
}).newState === "collapsed" && e.push(n.id);
return e;
}
function T() {
let e = [], r = n.value;
for (let n of t.value) !n.collapsed || !n.autoCollapsed || !n.collapseSizePixels || r >= n.collapseSizePixels && u({
panelId: n.id,
action: "expand",
source: "system"
}).newState === "expanded" && e.push(n.id);
return e;
}
function E() {
let e = T();
return {
collapsed: w(),
expanded: e
};
}
return {
commitPanelSize: m,
resizePanel: h,
collapsePanel: g,
resetPanels: C,
processCollapseRequest: u,
checkAutoCollapse: w,
checkAutoExpand: T,
processAutoCollapseExpand: E
};
}
function C(e) {
if (!e || e.length === 0) return [];
let t = e.map((e, t) => ({
rule: e,
index: t
}));
return t.sort((e, t) => {
let n = e.rule.priority - t.rule.priority;
return n === 0 ? e.index - t.index : n;
}), t.map((e) => e.rule);
}
function w(e, t, n) {
return t.minSizeBeforeCollapse === void 0 ? e.userMinSizePixels : r(t.minSizeBeforeCollapse, n);
}
function T(e, t, n) {
let r = e.find((e) => e.id === t.panelId);
if (!r || r.collapsed) return;
let i = w(r, t, n);
if (i !== void 0) return r.pixelSize <= i ? r.id : void 0;
}
function E(e, t, n) {
return !e || e.length === 0 || !t || t.length === 0 ? [] : C(t).map((t) => T(e, t, n)).filter((e) => e !== void 0);
}
//#endregion
//#region components/resizable/composables/computeLayout.ts
function D(e, t, n) {
if (n !== void 0) {
let i = n.pixelSize;
return !isFinite(i) || i < 0 || t > 0 && i > t * 2 ? r(e.initialSize ?? "50p", t) : i;
}
return r(e.initialSize ?? "50p", t);
}
function O(e, t) {
return t !== void 0 && t.collapsed !== void 0 ? t.collapsed : !!e.collapsed;
}
function k(e, t, n = "system") {
let r = a(e, t, n);
return {
clamped: r,
delta: r - e
};
}
function A(e) {
if (e) return new Map(e.map((e) => [e.id, e]));
}
function j(e, t, n) {
return e.map((e) => {
let r = i(e, t), a = n?.get(e.id), o = O(e, a), s = e.resizable === !1, c = a?.manualTargetRatio, l;
return l = o ? 0 : c !== void 0 && t > 0 ? c * t : D(e, t, a), {
config: e,
constraints: r,
width: l,
collapsed: o,
isFixed: s,
manualTargetRatio: c
};
});
}
function M(e, t) {
let n = 0;
for (let t of e) if (t.isFixed) {
let { clamped: e } = k(t.width, t.constraints);
t.width = e, n += e;
}
let r = e.filter((e) => !e.isFixed && e.manualTargetRatio !== void 0);
for (let e of r) {
let { clamped: r } = k((e.manualTargetRatio ?? 0) * t, e.constraints, "user");
e.width = r, n += r;
}
return n;
}
function ee(e) {
let t = e.length + 1;
for (let n = 0; n < t; n++) {
let t = 0, n = /* @__PURE__ */ new Set();
for (let r of e) {
let { clamped: e, delta: i } = k(r.width, r.constraints);
i !== 0 && (r.width = e, n.add(r.config.id), t += i);
}
if (t === 0) break;
let r = e.filter((e) => !n.has(e.config.id));
if (r.length === 0) break;
let i = -t / r.length;
for (let e of r) e.width += i;
}
for (let t of e) {
let { clamped: e } = k(t.width, t.constraints);
t.width = e;
}
}
function te(e, t, n) {
let r = n - e.reduce((e, t) => e + t.width, 0);
if (r > 1) {
let e = [...t].reverse().find((e) => !e.isFixed);
e && (e.width += r);
}
}
function N(e, t) {
if (t <= 0) {
e.forEach((e) => {
e.collapsed || (e.width = 0);
});
return;
}
let n = e.filter((e) => !e.collapsed);
if (n.length === 0) return;
let r = M(n, t), i = n.filter((e) => !e.isFixed && e.manualTargetRatio === void 0), a = Math.max(0, t - r);
if (i.length === 0) return;
let o = i.reduce((e, t) => e + Math.max(0, t.width), 0);
for (let e of i) o > 0 ? e.width = e.width / o * a : e.width = a / i.length;
ee(i), te(n, i, t);
}
function P(e, t) {
e.sort((e, t) => t.remainder - e.remainder);
let n = t;
for (let { panel: t } of e) {
if (n <= 0) break;
let e = t.constraints.systemMaxSizePixels ?? t.constraints.userMaxSizePixels ?? Infinity;
t.width < e && !t.isFixed && (t.width += 1, --n);
}
}
function F(e, t) {
if (t <= 0) return;
let n = e.filter((e) => !e.collapsed);
if (n.length === 0) return;
let r = [];
for (let e of n) {
let t = Math.floor(e.width);
r.push({
panel: e,
remainder: e.width - t
}), e.width = t;
}
P(r, t - n.reduce((e, t) => e + t.width, 0));
}
function I(e, t) {
let n = /* @__PURE__ */ new Map(), r = 0;
for (let i of e) {
let e = i.collapsed ? 0 : i.width, a = r, o = Math.max(0, t - a - e);
n.set(i.config.id, {
id: i.config.id,
left: a,
right: o,
width: e,
collapsed: i.collapsed,
constraints: i.constraints
}), r += e;
}
return n;
}
function L(e, t) {
let r = [];
for (let i = 0; i < e.length - 1; i++) {
let a = e[i], o = e[i + 1];
if (a.resizable === !1 || o.resizable === !1) continue;
let s = t.get(a.id), c = t.get(o.id);
if (!s || !c) continue;
let l = s.collapsed || c.collapsed;
r.push({
id: n(a.id, o.id),
beforePanelId: a.id,
afterPanelId: o.id,
left: s.left + s.width,
disabled: l
});
}
return r;
}
function R(e) {
let { panels: t, containerSize: n, savedState: r } = e;
if (t.length === 0) return {
panels: /* @__PURE__ */ new Map(),
handles: []
};
let i = j(t, n, A(r));
N(i, n), F(i, n);
let a = I(i, n);
return {
panels: a,
handles: L(t, a)
};
}
//#endregion
//#region components/resizable/composables/useResizableStorage.ts
function z(e) {
return typeof e.id == "string" && typeof e.pixelSize == "number" && e.pixelSize >= 0;
}
function B(e) {
return (e.collapsed === void 0 || typeof e.collapsed == "boolean") && (e.autoCollapsed === void 0 || typeof e.autoCollapsed == "boolean");
}
function V(e) {
if (typeof e != "object" || !e) return !1;
let t = e;
return z(t) && B(t);
}
function H(e) {
return Array.isArray(e) && e.every((e) => V(e));
}
function U(e) {
return {
save(t) {
try {
localStorage.setItem(e, JSON.stringify(t));
} catch (e) {
console.error("[resizable] Failed to save to localStorage:", e);
}
},
load() {
try {
let t = localStorage.getItem(e);
if (!t) return null;
let n;
try {
n = JSON.parse(t);
} catch {
return localStorage.removeItem(e), null;
}
return H(n) ? n : (localStorage.removeItem(e), null);
} catch (t) {
console.warn("[resizable] Failed to load from localStorage:", t);
try {
localStorage.removeItem(e);
} catch {}
return null;
}
},
clear() {
try {
localStorage.removeItem(e);
} catch {}
}
};
}
function W(e, t) {
let n = t ?? (e ? U(e) : null);
function r(e) {
if (!n) return;
let t = e.map((e) => ({
id: e.id,
pixelSize: e.pixelSize,
collapsed: e.collapsed,
autoCollapsed: e.autoCollapsed
}));
n.save(t);
}
function i() {
if (!n) return null;
let e = n.load();
return e ? H(e) ? e : (n.clear(), null) : null;
}
function a(e, t) {
e.restoredFromStorage || (t.pixelSize !== void 0 && (e.pixelSize = t.pixelSize), t.collapsed !== void 0 && (e.collapsed = t.collapsed), t.autoCollapsed !== void 0 && (e.autoCollapsed = t.autoCollapsed), e.restoredFromStorage = !0);
}
function o(e) {
let t = i();
if (!t) return !1;
let r = new Set(e.map((e) => e.id)), o = new Set(t.map((e) => e.id));
return Array.from(r).some((e) => !o.has(e)) ? (n && n.clear(), !1) : (t.forEach((t) => {
let n = e.find((e) => e.id === t.id);
n && a(n, t);
}), !0);
}
function s() {
n && n.clear();
}
return {
saveToStorage: r,
loadFromStorage: i,
loadFromStorageWithValidation: o,
restorePanelFromStorage: a,
clearStorage: s
};
}
//#endregion
//#region components/resizable/composables/useResizableGroup.ts
var G = e;
function ne(e, t, n, r) {
let a = n.panels.get(e.id), o = a?.constraints ?? i(e, t), s = a?.width ?? 0, c = a?.collapsed ?? !!e.collapsed;
return {
...e,
pixelSize: s,
collapsed: c,
userMinSizePixels: o.userMinSizePixels,
userMaxSizePixels: o.userMaxSizePixels,
systemMinSizePixels: o.systemMinSizePixels,
systemMaxSizePixels: o.systemMaxSizePixels,
collapseSizePixels: o.collapseSizePixels,
manualTargetRatio: r?.manualTargetRatio,
autoCollapsed: r?.autoCollapsed
};
}
function re(e) {
let { storageKey: t, direction: n, containerRef: r } = e, i = g([]), a = g(0), o = W(t, e.storageAdapter), c = g(o.loadFromStorage()), u = g(!0), d = s(() => {
let e = i.value, t = a.value;
return e.length === 0 || t <= 0 ? {
panels: /* @__PURE__ */ new Map(),
handles: []
} : R({
panels: e,
containerSize: t,
savedState: c.value ?? void 0
});
}), f = s(() => {
let e = d.value, t = a.value, n = new Map(c.value?.map((e) => [e.id, e]) ?? []);
return i.value.map((r) => ne(r, t, e, n.get(r.id)));
});
y(d, (e) => {
e.panels.size > 0 && u.value && (u.value = !1);
}, { immediate: !0 });
let p = s(() => {
let e = /* @__PURE__ */ new Map();
for (let t of f.value) e.set(t.id, t);
return e;
}), m = !1;
function h(e) {
e.id.includes(":") && console.warn(`[resizable] Panel id "${e.id}" contains ':' which is reserved as the handle separator. Use kebab-case.`);
let t = i.value.findIndex((t) => t.id === e.id);
t === -1 ? (i.value = [...i.value, e], m || (m = !0, l(() => {
i.value = _(i.value), m = !1;
}))) : i.value = i.value.map((n, r) => r === t ? e : n);
}
function _(e) {
let t = r.value;
if (!t) return e;
let n = Array.from(t.querySelectorAll(".d-resizable-panel[data-panel-id]"));
if (n.length === 0) return e;
let i = /* @__PURE__ */ new Map();
return n.forEach((e, t) => {
let n = e.getAttribute("data-panel-id");
n && i.set(n, t);
}), [...e].sort((e, t) => (i.get(e.id) ?? Infinity) - (i.get(t.id) ?? Infinity));
}
function v(e) {
i.value = i.value.filter((t) => t.id !== e);
}
function b(e) {
o.saveToStorage(e), c.value = e.map((e) => ({
id: e.id,
pixelSize: e.pixelSize,
collapsed: e.collapsed,
autoCollapsed: e.autoCollapsed,
manualTargetRatio: e.manualTargetRatio
}));
}
function x(e, t) {
c.value || (c.value = []);
let n = c.value.findIndex((t) => t.id === e);
if (n >= 0) c.value[n] = {
...c.value[n],
...t
};
else {
let n = f.value.find((t) => t.id === e)?.pixelSize ?? 0;
c.value.push({
id: e,
pixelSize: n,
...t
});
}
c.value = [...c.value], o.saveToStorage(c.value);
}
function S() {
c.value = o.loadFromStorage();
}
function C() {
o.clearStorage(), c.value = null;
}
let w = new ResizeObserver((e) => {
for (let t of e) {
let e = n.value === "row" ? t.contentRect.width : t.contentRect.height;
a.value = G(Math.round(e));
}
});
function T() {
w.disconnect();
}
return y(r, (e, t) => {
t && w.unobserve(t), e && (a.value = G(n.value === "row" ? e.clientWidth : e.clientHeight), w.observe(e));
}, { immediate: !0 }), {
layout: d,
syncedPanels: f,
panelMap: p,
containerSize: a,
isInitializing: u,
registerPanel: h,
unregisterPanel: v,
saveCurrentLayout: b,
updateSavedPanel: x,
reloadFromStorage: S,
clearSavedState: C,
disconnectObserver: T
};
}
//#endregion
//#region components/resizable/composables/useResizableDrag.ts
var K = {
isActive: !1,
handleId: null,
beforePanelId: null,
afterPanelId: null,
proposedBeforeSize: 0,
proposedAfterSize: 0
};
function q(e, t) {
return e.querySelector(`[data-panel-id="${t}"]`);
}
function ie(e, t) {
return e.querySelector(`[data-handle-id="${t}"]`);
}
function J(e, t, n) {
e.style.insetInlineStart = `${t}px`, e.style.insetInlineEnd = `${n}px`, e.style.inlineSize = "";
}
function Y(e) {
e.style.insetInlineStart = "", e.style.insetInlineEnd = "", e.style.inlineSize = "";
}
function ae(e, t) {
e.style.insetInlineStart = `${Math.max(0, t)}px`;
}
function X(e) {
e.style.insetInlineStart = "";
}
function oe(e, t) {
let n = e.indexOf(":");
if (n === -1) return {
beforePanel: null,
afterPanel: null
};
let r = e.slice(0, n), i = e.slice(n + 1);
return {
beforePanel: t.find((e) => e.id === r) ?? null,
afterPanel: t.find((e) => e.id === i) ?? null
};
}
function se(e) {
let { direction: t, containerRef: n, panels: r, containerSize: i, resizeHandler: a, onDragEnd: o, onDragStart: s } = e, c = h({ ...K }), l = null, u = null, d = null, p = null, m = null, g = 0, _ = 0, v = 0, y = null, b = null, x = null;
function S() {
b = (e) => k(e), x = () => A(), document.addEventListener("pointermove", b), document.addEventListener("pointerup", x), document.addEventListener("pointercancel", x), document.addEventListener("keydown", M);
}
function C() {
b && (document.removeEventListener("pointermove", b), b = null), x && (document.removeEventListener("pointerup", x), document.removeEventListener("pointercancel", x), x = null), document.removeEventListener("keydown", M);
}
function w() {
C(), document.body.style.userSelect = "", document.body.style.cursor = "", Object.assign(c, K), l = null, u = null, d = null, p = null, m = null, g = 0, _ = 0, v = 0, y = null;
}
function T(e, t, n) {
let { beforePanel: r, afterPanel: i } = oe(t, n);
if (!r || !i) return console.warn(`[resizable] No panel pair found for handle "${t}"`), null;
let a = q(e, r.id), o = q(e, i.id), s = ie(e, t);
return !a || !o ? (console.warn(`[resizable] Panel element(s) not found for handle "${t}"`), null) : {
beforePanel: r,
afterPanel: i,
beforeEl: a,
afterEl: o,
handleElement: s
};
}
function E(e) {
let i = n.value;
if (!i) return;
let a = T(i, e, r.value);
a && (l = a.beforeEl, u = a.afterEl, d = a.handleElement, p = a.beforePanel, m = a.afterPanel, g = a.beforePanel.pixelSize, _ = a.afterPanel.pixelSize, v = parseFloat(l.style.insetInlineStart || "0"), y = i.getBoundingClientRect(), Object.assign(c, {
isActive: !0,
handleId: e,
beforePanelId: a.beforePanel.id,
afterPanelId: a.afterPanel.id,
proposedBeforeSize: g,
proposedAfterSize: _
}), document.body.style.userSelect = "none", document.body.style.cursor = t.value === "row" ? "ew-resize" : "ns-resize", S(), s?.(e));
}
function D(e, t) {
let n = y;
return t === "row" ? e.clientX - n.left : e.clientY - n.top;
}
function O() {
return c.isActive && !!n.value && !!l && !!u && !!c.handleId && !!p && !!m;
}
function k(e) {
if (!O()) return;
let n = D(e, t.value), o = a.processResizeMove(n, p, m, i.value, c.handleId, r.value, v);
if (!o.isValidResize) return;
c.proposedBeforeSize !== o.beforePanelSize && (c.proposedBeforeSize = o.beforePanelSize), c.proposedAfterSize !== o.afterPanelSize && (c.proposedAfterSize = o.afterPanelSize);
let s = i.value, f = o.constrainedCursorPosition, h = s - f, g = f - 2, _ = s - f - o.afterPanelSize;
J(l, v, h), J(u, f, Math.max(0, _)), d && ae(d, g);
}
function A() {
if (!c.isActive) return;
let e = c.beforePanelId, t = c.afterPanelId, n = c.proposedBeforeSize, r = c.proposedAfterSize, i = g, a = _;
l && Y(l), u && Y(u), d && X(d), w(), e && t && o(e, t, n, r, n !== i || r !== a);
}
function j() {
c.isActive && (l && u && (Y(l), Y(u)), d && X(d), w());
}
function M(e) {
e.key === "Escape" && c.isActive && (e.preventDefault(), j());
}
return f(() => {
j();
}), {
dragState: c,
startDrag: E,
onDragMove: k,
commitDrag: A,
cancelDrag: j,
cleanup: w
};
}
//#endregion
//#region components/resizable/composables/useResizableAnnouncements.ts
var Z = null, Q, $ = 0;
function ce() {
return Z || (Z = document.getElementById("d-resizable-announcements"), Z || (Z = document.createElement("div"), Z.id = "d-resizable-announcements", Z.setAttribute("aria-live", "polite"), Z.setAttribute("aria-atomic", "true"), Z.style.position = "absolute", Z.style.left = "-10000px", Z.style.width = "1px", Z.style.height = "1px", Z.style.overflow = "hidden", document.body.appendChild(Z))), Z;
}
function le(e) {
if (!e.trim()) return;
Q && clearTimeout(Q);
let t = ce();
t.textContent = "", Q = setTimeout(() => {
t.textContent = e, setTimeout(() => {
t.textContent = "";
}, 1e3);
}, 100);
}
function ue() {
return d(() => {
$++, ce();
}), f(() => {
Q && clearTimeout(Q), $--, $ <= 0 && Z && (Z.remove(), Z = null, $ = 0);
}), { announce: le };
}
//#endregion
//#region components/resizable/composables/useResizableOffset.ts
function de(e = {}) {
let { offsetElement: t = null, offsetAmount: n = null, offsetDirection: r = "start", direction: i = g("row") } = e, a = g(0);
function o() {
if (n != null && n > 0) {
a.value = n;
return;
}
if (!t) {
a.value = 0;
return;
}
try {
let e = document.querySelector(t);
if (!e) {
a.value = 0;
return;
}
let n = e.getBoundingClientRect();
a.value = i.value === "row" ? n.height : n.width;
} catch (e) {
console.warn("[resizable] Failed to measure offset element:", e), a.value = 0;
}
}
let c = s(() => {
let e = {};
if (a.value <= 0) return e;
let t = `${a.value}px`;
return (r === "start" || r === "both") && (e.insetBlockStart = t), (r === "end" || r === "both") && (e.insetBlockEnd = t), e;
}), l = s(() => {
let e = {};
if (a.value <= 0) return e;
let t = `${a.value}px`;
return (r === "start" || r === "both") && (e.paddingBlockStart = t), (r === "end" || r === "both") && (e.paddingBlockEnd = t), e;
});
return d(() => {
o();
}), {
calculatedOffset: a,
updateOffset: o,
handleStyles: c,
contentStyles: l
};
}
//#endregion
//#region components/resizable/resizable.vue
var fe = ["data-storage-key"], pe = {
__name: "resizable",
props: {
direction: {
type: String,
default: "row"
},
storageKey: {
type: String,
default: null
},
class: {
type: [
String,
Object,
Array
],
default: ""
},
panels: {
type: Array,
default: () => []
},
spaceAllocationStrategy: {
type: String,
default: "proportional",
validator: (e) => ["proportional", "preserve-manual"].includes(e)
},
collapseRules: {
type: Array,
default: () => []
},
storage: {
type: Object,
default: null
},
offsetElement: {
type: String,
default: null
},
offsetAmount: {
type: Number,
default: null
},
offsetDirection: {
type: String,
default: "start"
},
messages: {
type: Object,
default: () => ({})
}
},
emits: [
"panel-resize",
"panel-collapse",
"resize-start",
"resize-end"
],
setup(e, { expose: r, emit: i }) {
let a = e, l = i, d = g(null), h = s(() => a.direction), b = re({
storageKey: a.storageKey ?? null,
direction: h,
containerRef: d,
storageAdapter: a.storage ?? void 0
}), x = g(!1), C = g(void 0), w = o(() => b.containerSize.value), T = b.isInitializing, D = (e) => b.registerPanel(e), O = (e) => b.unregisterPanel(e), k = (e) => b.saveCurrentLayout(e), { commitPanelSize: A, resizePanel: j, collapsePanel: M, resetPanels: ee, processAutoCollapseExpand: te } = S({
panels: b.syncedPanels,
containerSize: b.containerSize,
containerRef: d,
onPanelResize: (e, t) => l("panel-resize", e, t),
onPanelCollapse: (e, t) => l("panel-collapse", e, t),
updateSavedPanel: (e, t) => b.updateSavedPanel(e, t)
});
function N(e, t, n = "all") {
ee(e, t, n), n === "all" ? (b.syncedPanels.value.forEach((e) => b.updateSavedPanel(e.id, { manualTargetRatio: void 0 })), b.clearSavedState()) : (e && b.updateSavedPanel(e, { manualTargetRatio: void 0 }), t && b.updateSavedPanel(t, { manualTargetRatio: void 0 }));
}
function P() {
if (te(), !a.collapseRules?.length) return;
let e = b.syncedPanels.value, t = E(e, a.collapseRules, b.containerSize.value);
if (t.length === 0) return;
let n = e.find((e) => e.id === t[0]);
n && !n.collapsed && M(t[0], !0);
}
let { announce: F } = ue(), I = de({
offsetElement: a.offsetElement,
offsetAmount: a.offsetAmount,
offsetDirection: a.offsetDirection,
direction: h
}), L = /* @__PURE__ */ new Set();
function R(e) {
L.add(e);
}
function z(e) {
L.delete(e);
}
let B = se({
direction: h,
containerRef: d,
panels: b.syncedPanels,
containerSize: b.containerSize,
resizeHandler: w,
onDragStart(e) {
x.value = !0, C.value = e, l("resize-start", e);
},
onDragEnd(e, t, r, i, a) {
let o = B.dragState.handleId ?? n(e, t);
x.value = !1, C.value = void 0, a && (A(e, r), A(t, i), l("resize-end", o), P());
}
});
function V(e) {
B.startDrag(e);
}
function H() {
B.cancelDrag();
}
function U() {
k(b.syncedPanels.value);
}
function W(e, t) {
l("panel-resize", e, t);
}
return y(b.syncedPanels, (e) => {
e.length > 0 && !T.value && P();
}, { flush: "post" }), f(() => {
b.disconnectObserver(), B.cancelDrag();
}), m(t, {
layout: b.layout,
panels: b.syncedPanels,
panelMap: b.panelMap,
direction: h,
containerSize: b.containerSize,
containerElement: s(() => d.value),
isResizing: s(() => x.value),
activeHandleId: s(() => C.value),
isInitializing: s(() => T.value),
messages: a.messages,
startResize: (e) => V(e),
resetPanels: N,
registerHandle: R,
unregisterHandle: z,
registerPanel: D,
unregisterPanel: O,
saveToStorage: U,
announce: F,
offsetHandleStyles: I.handleStyles,
offsetContentStyles: I.contentStyles,
collapsePanel: M,
emitPanelResize: W,
commitPanelSize: A,
updateSavedPanel: (e, t) => b.updateSavedPanel(e, t)
}), r({
resizePanel: j,
collapsePanel: M,
resetPanels: N,
state: s(() => ({
direction: h.value,
panels: b.syncedPanels.value,
containerSize: b.containerSize.value,
isResizing: x.value,
activeHandleId: C.value
})),
panelConfigs: s(() => a.panels),
allocationStrategy: s(() => a.spaceAllocationStrategy)
}), (e, t) => (p(), c("div", {
ref_key: "containerRef",
ref: d,
class: u([
"d-resizable",
`d-resizable--${h.value}`,
{ "d-resizable--resizing": x.value },
a.class
]),
"data-storage-key": a.storageKey || void 0
}, [_(e.$slots, "default", {
panels: v(b).syncedPanels.value,
direction: h.value,
isResizing: x.value,
spaceAllocationStrategy: a.spaceAllocationStrategy,
resizePanel: v(j),
collapsePanel: v(M),
startResize: V,
stopResize: H
})], 10, fe));
}
};
//#endregion
export { pe as t };
//# sourceMappingURL=resizable-D4-peBOl.js.map