@window-splitter/interface 0.8.6 → 1.0.2
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +14 -0
- package/LICENSE +7 -0
- package/dist/commonjs/interface.d.ts +1 -7
- package/dist/commonjs/interface.d.ts.map +1 -1
- package/dist/commonjs/interface.js +5 -2
- package/dist/commonjs/interface.js.map +1 -1
- package/dist/commonjs/test.js +1 -1
- package/dist/commonjs/test.js.map +1 -1
- package/dist/esm/interface.d.ts +1 -7
- package/dist/esm/interface.d.ts.map +1 -1
- package/dist/esm/interface.js +5 -2
- package/dist/esm/interface.js.map +1 -1
- package/dist/esm/test.js +1 -1
- package/dist/esm/test.js.map +1 -1
- package/package.json +4 -4
- package/src/interface.ts +7 -2
- package/src/test.ts +1 -1
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# v0.8.7 (Sun May 11 2025)
|
|
2
|
+
|
|
3
|
+
#### 🐛 Bug Fix
|
|
4
|
+
|
|
5
|
+
- Web Component [#59](https://github.com/hipstersmoothie/window-splitter/pull/59) ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
6
|
+
- tests ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
7
|
+
- start ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
8
|
+
|
|
9
|
+
#### Authors: 1
|
|
10
|
+
|
|
11
|
+
- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
1
15
|
# v0.8.5 (Sun May 04 2025)
|
|
2
16
|
|
|
3
17
|
#### 🐛 Bug Fix
|
package/LICENSE
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Copyright 2025 Andrew Lisowski
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
|
+
|
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -78,13 +78,7 @@ export declare function getPanelDomAttributes({ groupId, id, collapsible, collap
|
|
|
78
78
|
id: string;
|
|
79
79
|
collapsible: boolean | undefined;
|
|
80
80
|
collapsed: boolean | undefined;
|
|
81
|
-
}):
|
|
82
|
-
id: string;
|
|
83
|
-
"data-splitter-group-id": string | undefined;
|
|
84
|
-
"data-splitter-type": string;
|
|
85
|
-
"data-splitter-id": string;
|
|
86
|
-
"data-collapsed": boolean | undefined;
|
|
87
|
-
};
|
|
81
|
+
}): Record<string, string | boolean | undefined>;
|
|
88
82
|
export interface SharedPanelResizerProps extends Partial<Pick<PanelHandle, "setSize">> {
|
|
89
83
|
/** If the handle is disabled */
|
|
90
84
|
disabled?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,wBAAwB,EACxB,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,SAAS,EACT,IAAI,EACJ,IAAI,EACL,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,6DAA6D;IAC7D,aAAa,EAAE,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,oFAAoF;IACpF,kBAAkB,EAAE,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC;;;;;;OAMG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACvC,mEAAmE;IACnE,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC;CACrC;AAED,MAAM,WAAW,qBACf,SAAQ,OAAO,CACb,IAAI,CAAC,wBAAwB,EAAE,aAAa,GAAG,kBAAkB,CAAC,CACnE;IACD,sDAAsD;IACtD,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,uBAAuB;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,0BAA0B;IAC1B,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,wDAAwD;IACxD,iBAAiB,EAAE,MAAM,MAAM,CAAC;IAChC;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CAC/B;AACD,MAAM,WAAW,gBAAgB,CAAC,YAAY,CAC5C,SAAQ,WAAW,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACtC,gDAAgD;IAChD,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD;AAED,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,EAAE,EACF,WAAW,EACX,SAAS,GACV,EAAE;IACD,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,16 @@ exports.getPanelResizerDomAttributes = getPanelResizerDomAttributes;
|
|
|
5
5
|
exports.measureGroupChildren = measureGroupChildren;
|
|
6
6
|
const state_1 = require("@window-splitter/state");
|
|
7
7
|
function getPanelDomAttributes({ groupId, id, collapsible, collapsed, }) {
|
|
8
|
-
|
|
8
|
+
const attrs = {
|
|
9
9
|
id: id,
|
|
10
10
|
"data-splitter-group-id": groupId,
|
|
11
11
|
"data-splitter-type": "panel",
|
|
12
12
|
"data-splitter-id": id,
|
|
13
|
-
"data-collapsed": collapsible ? collapsed : undefined,
|
|
14
13
|
};
|
|
14
|
+
if (collapsible) {
|
|
15
|
+
attrs["data-collapsed"] = collapsed;
|
|
16
|
+
}
|
|
17
|
+
return attrs;
|
|
15
18
|
}
|
|
16
19
|
function getPanelResizerDomAttributes({ groupId, id, orientation, isDragging, activeDragHandleId, disabled, controlsId, min, max, currentValue, groupSize, }) {
|
|
17
20
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/interface.ts"],"names":[],"mappings":";;AA8FA,
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/interface.ts"],"names":[],"mappings":";;AA8FA,sDAuBC;AAgBD,oEAmDC;AAED,oDAgCC;AA1ND,kDAUgC;AAoFhC,SAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,EAAE,EACF,WAAW,EACX,SAAS,GAMV;IACC,MAAM,KAAK,GAAiD;QAC1D,EAAE,EAAE,EAAE;QACN,wBAAwB,EAAE,OAAO;QACjC,oBAAoB,EAAE,OAAO;QAC7B,kBAAkB,EAAE,EAAE;KACvB,CAAC;IAEF,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;IACtC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAgBD,SAAgB,4BAA4B,CAAC,EAC3C,OAAO,EACP,EAAE,EACF,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,UAAU,EACV,GAAG,EACH,GAAG,EACH,YAAY,EACZ,SAAS,GAaV;IACC,OAAO;QACL,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,WAAoB;QAC1B,oBAAoB,EAAE,QAAQ;QAC9B,kBAAkB,EAAE,EAAE;QACtB,wBAAwB,EAAE,OAAO;QACjC,yBAAyB,EAAE,WAAW;QACtC,YAAY,EAAE,UAAU;YACtB,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,kBAAkB;gBAClB,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,MAAM;QACZ,YAAY,EAAE,eAAe;QAC7B,eAAe,EAAE,QAAQ;QACzB,eAAe,EAAE,UAAU;QAC3B,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,IAAA,8BAAsB,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QACzE,eAAe,EACb,GAAG,KAAK,KAAK;YACX,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,GAAG;gBACH,CAAC,CAAC,IAAA,8BAAsB,EAAC,SAAS,EAAE,GAAG,CAAC;gBACxC,CAAC,CAAC,SAAS;QACjB,eAAe,EAAE,YAAY;YAC3B,CAAC,CAAC,IAAA,8BAAsB,EAAC,SAAS,EAAE,YAAY,CAAC;YACjD,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAClC,OAAe,EACf,EAAiD;IAEjD,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAC,CAAC,eAAe,EAAE,EAAE;QAC9D,MAAM,aAAa,GAAsD,EAAE,CAAC;QAE5E,KAAK,MAAM,UAAU,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAqB,CAAC;YAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;YACvD,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAE9C,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;gBACzB,aAAa,CAAC,OAAO,CAAC,GAAG;oBACvB,KAAK,EAAE,SAAS,CAAC,UAAU;oBAC3B,MAAM,EAAE,SAAS,CAAC,SAAS;iBAC5B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,4BAA4B,OAAO,IAAI,CAAC,CAAC;IAE7E,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;QACtB,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,GAAG,EAAE;QACV,gBAAgB,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import {\n Constraints,\n getUnitPercentageValue,\n GroupMachineContextValue,\n OnResizeCallback,\n PanelData,\n ParsedUnit,\n PixelUnit,\n Rect,\n Unit,\n} from \"@window-splitter/state\";\n\nexport interface PanelGroupHandle {\n /** The id of the group */\n getId: () => string;\n /** Get the sizes of all the items in the layout as pixels */\n getPixelSizes: () => Array<number>;\n /** Get the sizes of all the items in the layout as percentages of the group size */\n getPercentageSizes: () => Array<number>;\n /**\n * Set the size of all the items in the layout.\n * This just calls `setSize` on each item. It is up to\n * you to make sure the sizes make sense.\n *\n * NOTE: Setting handle sizes will do nothing.\n */\n setSizes: (items: Array<Unit>) => void;\n /** Get the template for the group in pixels. Useful for testing */\n getTemplate: () => string;\n getState: () => \"idle\" | \"dragging\";\n}\n\nexport interface SharedPanelGroupProps\n extends Partial<\n Pick<GroupMachineContextValue, \"orientation\" | \"autosaveStrategy\">\n > {\n /** Persisted state to initialized the machine with */\n snapshot?: GroupMachineContextValue;\n /** An id to use for autosaving the layout */\n autosaveId?: string;\n}\n\nexport interface PanelHandle {\n /** Collapse the panel */\n collapse: () => void;\n /** Returns true if the panel is collapsed */\n isCollapsed: () => boolean;\n /** Expand the panel */\n expand: () => void;\n /** Returns true if the panel is expanded */\n isExpanded: () => boolean;\n /** The id of the panel */\n getId: () => string;\n /** Get the size of the panel in pixels */\n getPixelSize: () => number;\n /** Get percentage of the panel relative to the group */\n getPercentageSize: () => number;\n /**\n * Set the size of the panel in pixels.\n *\n * This will be clamped to the min/max values of the panel.\n * If you want the panel to collapse/expand you should use the\n * expand/collapse methods.\n */\n setSize: (size: Unit) => void;\n}\nexport interface SharedPanelProps<CollapsValue>\n extends Constraints<Unit>,\n Pick<PanelData, \"collapseAnimation\"> {\n /** Callback called when the panel is resized */\n onResize?: OnResizeCallback;\n /**\n * __CONTROLLED COMPONENT__\n *\n * If this prop is used it will be used as the source of truth for the collapsed state.\n * It should be used in conjunction with the `onCollapseChange` prop.\n *\n * Use this if you want full control over the collapsed state. When trying to\n * collapse a panel it will defer to onCollapseChange to determine if it should\n * be collapsed.\n */\n collapsed?: CollapsValue;\n /**\n * __CONTROLLED COMPONENT__\n *\n * A callback called with the new desired collapsed state. If paired w\n * with the `collapsed` prop this will be used to control the collapsed state.\n *\n * Otherwise this will just be called with the new collapsed state so you can\n * use it to update your own state.\n */\n onCollapseChange?: (isCollapsed: boolean) => void;\n}\n\nexport function getPanelDomAttributes({\n groupId,\n id,\n collapsible,\n collapsed,\n}: {\n groupId: string | undefined;\n id: string;\n collapsible: boolean | undefined;\n collapsed: boolean | undefined;\n}) {\n const attrs: Record<string, string | boolean | undefined> = {\n id: id,\n \"data-splitter-group-id\": groupId,\n \"data-splitter-type\": \"panel\",\n \"data-splitter-id\": id,\n };\n\n if (collapsible) {\n attrs[\"data-collapsed\"] = collapsed;\n }\n\n return attrs;\n}\n\nexport interface SharedPanelResizerProps\n extends Partial<Pick<PanelHandle, \"setSize\">> {\n /** If the handle is disabled */\n disabled?: boolean;\n /** The size of the handle */\n size?: PixelUnit;\n /** Called when the user starts dragging the handle */\n onDragStart?: () => void;\n /** Called when the user drags the handle */\n onDrag?: () => void;\n /** Called when the user stops dragging the handle */\n onDragEnd?: () => void;\n}\n\nexport function getPanelResizerDomAttributes({\n groupId,\n id,\n orientation,\n isDragging,\n activeDragHandleId,\n disabled,\n controlsId,\n min,\n max,\n currentValue,\n groupSize,\n}: {\n groupId: string | undefined;\n id: string;\n orientation: \"horizontal\" | \"vertical\";\n isDragging: boolean;\n activeDragHandleId: string | undefined;\n disabled: boolean | undefined;\n controlsId: string | undefined;\n min: ParsedUnit | undefined;\n max: ParsedUnit | \"1fr\" | undefined;\n currentValue: ParsedUnit | undefined;\n groupSize: number;\n}) {\n return {\n id: id,\n role: \"separator\" as const,\n \"data-splitter-type\": \"handle\",\n \"data-splitter-id\": id,\n \"data-splitter-group-id\": groupId,\n \"data-handle-orientation\": orientation,\n \"data-state\": isDragging\n ? \"dragging\"\n : activeDragHandleId\n ? \"inactive\"\n : \"idle\",\n \"aria-label\": \"Resize Handle\",\n \"aria-disabled\": disabled,\n \"aria-controls\": controlsId,\n \"aria-valuemin\": min ? getUnitPercentageValue(groupSize, min) : undefined,\n \"aria-valuemax\":\n max === \"1fr\"\n ? 100\n : max\n ? getUnitPercentageValue(groupSize, max)\n : undefined,\n \"aria-valuenow\": currentValue\n ? getUnitPercentageValue(groupSize, currentValue)\n : undefined,\n };\n}\n\nexport function measureGroupChildren(\n groupId: string,\n cb: (childrenSizes: Record<string, Rect>) => void\n) {\n const childrenObserver = new ResizeObserver((childrenEntries) => {\n const childrenSizes: Record<string, { width: number; height: number }> = {};\n\n for (const childEntry of childrenEntries) {\n const child = childEntry.target as HTMLElement;\n const childId = child.getAttribute(\"data-splitter-id\");\n const childSize = childEntry.borderBoxSize[0];\n\n if (childId && childSize) {\n childrenSizes[childId] = {\n width: childSize.inlineSize,\n height: childSize.blockSize,\n };\n }\n }\n\n cb(childrenSizes);\n });\n\n const c = document.querySelectorAll(`[data-splitter-group-id=\"${groupId}\"]`);\n\n for (const child of c) {\n childrenObserver.observe(child);\n }\n\n return () => {\n childrenObserver.disconnect();\n };\n}\n"]}
|
package/dist/commonjs/test.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from \"vitest\";\nimport { PanelGroupHandle } from \"./interface.js\";\n\nexport async function dragHandle(options: {\n handleId?: string;\n delta: number;\n orientation?: \"horizontal\" | \"vertical\";\n}) {\n const orientation = options.orientation || \"horizontal\";\n const handle = document.querySelector(\n options.handleId\n ? `[data-splitter-id=\"${options.handleId}\"]`\n : '[data-splitter-type=\"handle\"]'\n );\n\n if (!handle) {\n throw new Error(`Handle not found: ${options.handleId}`);\n }\n\n const rect = handle.getBoundingClientRect();\n const x = rect.x + rect.width / 2;\n const y = rect.y + rect.height / 2;\n const step = options.delta > 0 ? 1 : -1;\n const pointerId = 1;\n\n handle.dispatchEvent(\n new PointerEvent(\"pointerdown\", {\n bubbles: true,\n clientX: x,\n clientY: y,\n pointerId,\n button: 0,\n })\n );\n\n for (let i = 0; i < Math.abs(options.delta - 1); i++) {\n handle.dispatchEvent(\n new PointerEvent(\"pointermove\", {\n bubbles: true,\n pointerId,\n clientX: orientation === \"horizontal\" ? x + i * step : x,\n clientY: orientation === \"vertical\" ? y + i * step : y,\n })\n );\n await new Promise((r) => setTimeout(r, 10));\n }\n\n handle.dispatchEvent(\n new PointerEvent(\"pointerup\", {\n bubbles: true,\n pointerId,\n clientX: orientation === \"horizontal\" ? x + options.delta : x,\n clientY: orientation === \"vertical\" ? y + options.delta : y,\n })\n );\n}\n\ntype WaitForFn = <T>(\n callback: () => T | Promise<T>,\n options?: {\n timeout?: number;\n }\n) => Promise<T>;\n\nfunction waitForCondition(waitFor: WaitForFn, condition: () => boolean) {\n const stack = new Error().stack;\n\n return waitFor(\n () => {\n if (!condition()) {\n const error = new Error(\"Not ready\");\n error.stack = stack;\n throw error;\n }\n },\n {\n timeout: 10_000,\n }\n );\n}\n\nasync function waitForMeasurement(\n waitFor: WaitForFn,\n handle: PanelGroupHandle\n) {\n await waitForCondition(\n waitFor,\n () => !handle.getTemplate().includes(\"minmax\")\n );\n await new Promise((resolve) => setTimeout(resolve, 100));\n}\n\nasync function expectTemplate(\n waitFor: WaitForFn,\n handle: PanelGroupHandle,\n resolvedTemplate: string\n) {\n const stack = new Error().stack;\n let template;\n\n await waitFor(\n () => {\n template = handle.getTemplate();\n\n if (!template.includes(resolvedTemplate)) {\n const e = new Error(\n `\\nExpected: ${resolvedTemplate}\\nGot : ${template}`\n );\n e.stack = stack;\n throw e;\n }\n\n if (handle.getState() !== \"idle\") {\n const e = new Error(`\\nExpected: idle\\nGot : ${handle.getState()}`);\n e.stack = stack;\n throw e;\n }\n },\n {\n timeout:
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test.ts"],"names":[],"mappings":";;AAGA,gCAoDC;AAuED,0CAMC;AApID,mCAAgC;AAGzB,KAAK,UAAU,UAAU,CAAC,OAIhC;IACC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC;IACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CACnC,OAAO,CAAC,QAAQ;QACd,CAAC,CAAC,sBAAsB,OAAO,CAAC,QAAQ,IAAI;QAC5C,CAAC,CAAC,+BAA+B,CACpC,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,CAAC,CAAC;IAEpB,MAAM,CAAC,aAAa,CAClB,IAAI,YAAY,CAAC,aAAa,EAAE;QAC9B,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,SAAS;QACT,MAAM,EAAE,CAAC;KACV,CAAC,CACH,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACrD,MAAM,CAAC,aAAa,CAClB,IAAI,YAAY,CAAC,aAAa,EAAE;YAC9B,OAAO,EAAE,IAAI;YACb,SAAS;YACT,OAAO,EAAE,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACxD,OAAO,EAAE,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;SACvD,CAAC,CACH,CAAC;QACF,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,aAAa,CAClB,IAAI,YAAY,CAAC,WAAW,EAAE;QAC5B,OAAO,EAAE,IAAI;QACb,SAAS;QACT,OAAO,EAAE,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,EAAE,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC5D,CAAC,CACH,CAAC;AACJ,CAAC;AASD,SAAS,gBAAgB,CAAC,OAAkB,EAAE,SAAwB;IACpE,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;IAEhC,OAAO,OAAO,CACZ,GAAG,EAAE;QACH,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YACrC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,EACD;QACE,OAAO,EAAE,MAAM;KAChB,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,OAAkB,EAClB,MAAwB;IAExB,MAAM,gBAAgB,CACpB,OAAO,EACP,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC/C,CAAC;IACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,OAAkB,EAClB,MAAwB,EACxB,gBAAwB;IAExB,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;IAChC,IAAI,QAAQ,CAAC;IAEb,MAAM,OAAO,CACX,GAAG,EAAE;QACH,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAEhC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,IAAI,KAAK,CACjB,eAAe,gBAAgB,eAAe,QAAQ,EAAE,CACzD,CAAC;YACF,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;YAChB,MAAM,CAAC,CAAC;QACV,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACxE,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;YAChB,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,EACD;QACE,OAAO,EAAE,KAAK;KACf,CACF,CAAC;IAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC1C,CAAC;AAED,SAAgB,eAAe,CAAC,OAA+B;IAC7D,OAAO;QACL,gBAAgB,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;QAC9D,kBAAkB,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;QAClE,cAAc,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;KAC3D,CAAC;AACJ,CAAC","sourcesContent":["import { expect } from \"vitest\";\nimport { PanelGroupHandle } from \"./interface.js\";\n\nexport async function dragHandle(options: {\n handleId?: string;\n delta: number;\n orientation?: \"horizontal\" | \"vertical\";\n}) {\n const orientation = options.orientation || \"horizontal\";\n const handle = document.querySelector(\n options.handleId\n ? `[data-splitter-id=\"${options.handleId}\"]`\n : '[data-splitter-type=\"handle\"]'\n );\n\n if (!handle) {\n throw new Error(`Handle not found: ${options.handleId}`);\n }\n\n const rect = handle.getBoundingClientRect();\n const x = rect.x + rect.width / 2;\n const y = rect.y + rect.height / 2;\n const step = options.delta > 0 ? 1 : -1;\n const pointerId = 1;\n\n handle.dispatchEvent(\n new PointerEvent(\"pointerdown\", {\n bubbles: true,\n clientX: x,\n clientY: y,\n pointerId,\n button: 0,\n })\n );\n\n for (let i = 0; i < Math.abs(options.delta - 1); i++) {\n handle.dispatchEvent(\n new PointerEvent(\"pointermove\", {\n bubbles: true,\n pointerId,\n clientX: orientation === \"horizontal\" ? x + i * step : x,\n clientY: orientation === \"vertical\" ? y + i * step : y,\n })\n );\n await new Promise((r) => setTimeout(r, 10));\n }\n\n handle.dispatchEvent(\n new PointerEvent(\"pointerup\", {\n bubbles: true,\n pointerId,\n clientX: orientation === \"horizontal\" ? x + options.delta : x,\n clientY: orientation === \"vertical\" ? y + options.delta : y,\n })\n );\n}\n\ntype WaitForFn = <T>(\n callback: () => T | Promise<T>,\n options?: {\n timeout?: number;\n }\n) => Promise<T>;\n\nfunction waitForCondition(waitFor: WaitForFn, condition: () => boolean) {\n const stack = new Error().stack;\n\n return waitFor(\n () => {\n if (!condition()) {\n const error = new Error(\"Not ready\");\n error.stack = stack;\n throw error;\n }\n },\n {\n timeout: 10_000,\n }\n );\n}\n\nasync function waitForMeasurement(\n waitFor: WaitForFn,\n handle: PanelGroupHandle\n) {\n await waitForCondition(\n waitFor,\n () => !handle.getTemplate().includes(\"minmax\")\n );\n await new Promise((resolve) => setTimeout(resolve, 100));\n}\n\nasync function expectTemplate(\n waitFor: WaitForFn,\n handle: PanelGroupHandle,\n resolvedTemplate: string\n) {\n const stack = new Error().stack;\n let template;\n\n await waitFor(\n () => {\n template = handle.getTemplate();\n\n if (!template.includes(resolvedTemplate)) {\n const e = new Error(\n `\\nExpected: ${resolvedTemplate}\\nGot : ${template}`\n );\n e.stack = stack;\n throw e;\n }\n\n if (handle.getState() !== \"idle\") {\n const e = new Error(`\\nExpected: idle\\nGot : ${handle.getState()}`);\n e.stack = stack;\n throw e;\n }\n },\n {\n timeout: 4_000,\n }\n );\n\n expect(template).toBe(resolvedTemplate);\n}\n\nexport function createTestUtils(options: { waitFor: WaitForFn }) {\n return {\n waitForCondition: waitForCondition.bind(null, options.waitFor),\n waitForMeasurement: waitForMeasurement.bind(null, options.waitFor),\n expectTemplate: expectTemplate.bind(null, options.waitFor),\n };\n}\n"]}
|
package/dist/esm/interface.d.ts
CHANGED
|
@@ -78,13 +78,7 @@ export declare function getPanelDomAttributes({ groupId, id, collapsible, collap
|
|
|
78
78
|
id: string;
|
|
79
79
|
collapsible: boolean | undefined;
|
|
80
80
|
collapsed: boolean | undefined;
|
|
81
|
-
}):
|
|
82
|
-
id: string;
|
|
83
|
-
"data-splitter-group-id": string | undefined;
|
|
84
|
-
"data-splitter-type": string;
|
|
85
|
-
"data-splitter-id": string;
|
|
86
|
-
"data-collapsed": boolean | undefined;
|
|
87
|
-
};
|
|
81
|
+
}): Record<string, string | boolean | undefined>;
|
|
88
82
|
export interface SharedPanelResizerProps extends Partial<Pick<PanelHandle, "setSize">> {
|
|
89
83
|
/** If the handle is disabled */
|
|
90
84
|
disabled?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,wBAAwB,EACxB,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,SAAS,EACT,IAAI,EACJ,IAAI,EACL,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,6DAA6D;IAC7D,aAAa,EAAE,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,oFAAoF;IACpF,kBAAkB,EAAE,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC;;;;;;OAMG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACvC,mEAAmE;IACnE,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC;CACrC;AAED,MAAM,WAAW,qBACf,SAAQ,OAAO,CACb,IAAI,CAAC,wBAAwB,EAAE,aAAa,GAAG,kBAAkB,CAAC,CACnE;IACD,sDAAsD;IACtD,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,uBAAuB;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,0BAA0B;IAC1B,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,wDAAwD;IACxD,iBAAiB,EAAE,MAAM,MAAM,CAAC;IAChC;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CAC/B;AACD,MAAM,WAAW,gBAAgB,CAAC,YAAY,CAC5C,SAAQ,WAAW,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACtC,gDAAgD;IAChD,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD;AAED,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,EAAE,EACF,WAAW,EACX,SAAS,GACV,EAAE;IACD,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/interface.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/interface.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { getUnitPercentageValue, } from "@window-splitter/state";
|
|
2
2
|
export function getPanelDomAttributes({ groupId, id, collapsible, collapsed, }) {
|
|
3
|
-
|
|
3
|
+
const attrs = {
|
|
4
4
|
id: id,
|
|
5
5
|
"data-splitter-group-id": groupId,
|
|
6
6
|
"data-splitter-type": "panel",
|
|
7
7
|
"data-splitter-id": id,
|
|
8
|
-
"data-collapsed": collapsible ? collapsed : undefined,
|
|
9
8
|
};
|
|
9
|
+
if (collapsible) {
|
|
10
|
+
attrs["data-collapsed"] = collapsed;
|
|
11
|
+
}
|
|
12
|
+
return attrs;
|
|
10
13
|
}
|
|
11
14
|
export function getPanelResizerDomAttributes({ groupId, id, orientation, isDragging, activeDragHandleId, disabled, controlsId, min, max, currentValue, groupSize, }) {
|
|
12
15
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,GAQvB,MAAM,wBAAwB,CAAC;AAoFhC,MAAM,UAAU,qBAAqB,CAAC,EACpC,OAAO,EACP,EAAE,EACF,WAAW,EACX,SAAS,GAMV;IACC,
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,GAQvB,MAAM,wBAAwB,CAAC;AAoFhC,MAAM,UAAU,qBAAqB,CAAC,EACpC,OAAO,EACP,EAAE,EACF,WAAW,EACX,SAAS,GAMV;IACC,MAAM,KAAK,GAAiD;QAC1D,EAAE,EAAE,EAAE;QACN,wBAAwB,EAAE,OAAO;QACjC,oBAAoB,EAAE,OAAO;QAC7B,kBAAkB,EAAE,EAAE;KACvB,CAAC;IAEF,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;IACtC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAgBD,MAAM,UAAU,4BAA4B,CAAC,EAC3C,OAAO,EACP,EAAE,EACF,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,UAAU,EACV,GAAG,EACH,GAAG,EACH,YAAY,EACZ,SAAS,GAaV;IACC,OAAO;QACL,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,WAAoB;QAC1B,oBAAoB,EAAE,QAAQ;QAC9B,kBAAkB,EAAE,EAAE;QACtB,wBAAwB,EAAE,OAAO;QACjC,yBAAyB,EAAE,WAAW;QACtC,YAAY,EAAE,UAAU;YACtB,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,kBAAkB;gBAClB,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,MAAM;QACZ,YAAY,EAAE,eAAe;QAC7B,eAAe,EAAE,QAAQ;QACzB,eAAe,EAAE,UAAU;QAC3B,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QACzE,eAAe,EACb,GAAG,KAAK,KAAK;YACX,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,GAAG;gBACH,CAAC,CAAC,sBAAsB,CAAC,SAAS,EAAE,GAAG,CAAC;gBACxC,CAAC,CAAC,SAAS;QACjB,eAAe,EAAE,YAAY;YAC3B,CAAC,CAAC,sBAAsB,CAAC,SAAS,EAAE,YAAY,CAAC;YACjD,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,EAAiD;IAEjD,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAC,CAAC,eAAe,EAAE,EAAE;QAC9D,MAAM,aAAa,GAAsD,EAAE,CAAC;QAE5E,KAAK,MAAM,UAAU,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAqB,CAAC;YAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;YACvD,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAE9C,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;gBACzB,aAAa,CAAC,OAAO,CAAC,GAAG;oBACvB,KAAK,EAAE,SAAS,CAAC,UAAU;oBAC3B,MAAM,EAAE,SAAS,CAAC,SAAS;iBAC5B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,4BAA4B,OAAO,IAAI,CAAC,CAAC;IAE7E,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;QACtB,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,GAAG,EAAE;QACV,gBAAgB,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import {\n Constraints,\n getUnitPercentageValue,\n GroupMachineContextValue,\n OnResizeCallback,\n PanelData,\n ParsedUnit,\n PixelUnit,\n Rect,\n Unit,\n} from \"@window-splitter/state\";\n\nexport interface PanelGroupHandle {\n /** The id of the group */\n getId: () => string;\n /** Get the sizes of all the items in the layout as pixels */\n getPixelSizes: () => Array<number>;\n /** Get the sizes of all the items in the layout as percentages of the group size */\n getPercentageSizes: () => Array<number>;\n /**\n * Set the size of all the items in the layout.\n * This just calls `setSize` on each item. It is up to\n * you to make sure the sizes make sense.\n *\n * NOTE: Setting handle sizes will do nothing.\n */\n setSizes: (items: Array<Unit>) => void;\n /** Get the template for the group in pixels. Useful for testing */\n getTemplate: () => string;\n getState: () => \"idle\" | \"dragging\";\n}\n\nexport interface SharedPanelGroupProps\n extends Partial<\n Pick<GroupMachineContextValue, \"orientation\" | \"autosaveStrategy\">\n > {\n /** Persisted state to initialized the machine with */\n snapshot?: GroupMachineContextValue;\n /** An id to use for autosaving the layout */\n autosaveId?: string;\n}\n\nexport interface PanelHandle {\n /** Collapse the panel */\n collapse: () => void;\n /** Returns true if the panel is collapsed */\n isCollapsed: () => boolean;\n /** Expand the panel */\n expand: () => void;\n /** Returns true if the panel is expanded */\n isExpanded: () => boolean;\n /** The id of the panel */\n getId: () => string;\n /** Get the size of the panel in pixels */\n getPixelSize: () => number;\n /** Get percentage of the panel relative to the group */\n getPercentageSize: () => number;\n /**\n * Set the size of the panel in pixels.\n *\n * This will be clamped to the min/max values of the panel.\n * If you want the panel to collapse/expand you should use the\n * expand/collapse methods.\n */\n setSize: (size: Unit) => void;\n}\nexport interface SharedPanelProps<CollapsValue>\n extends Constraints<Unit>,\n Pick<PanelData, \"collapseAnimation\"> {\n /** Callback called when the panel is resized */\n onResize?: OnResizeCallback;\n /**\n * __CONTROLLED COMPONENT__\n *\n * If this prop is used it will be used as the source of truth for the collapsed state.\n * It should be used in conjunction with the `onCollapseChange` prop.\n *\n * Use this if you want full control over the collapsed state. When trying to\n * collapse a panel it will defer to onCollapseChange to determine if it should\n * be collapsed.\n */\n collapsed?: CollapsValue;\n /**\n * __CONTROLLED COMPONENT__\n *\n * A callback called with the new desired collapsed state. If paired w\n * with the `collapsed` prop this will be used to control the collapsed state.\n *\n * Otherwise this will just be called with the new collapsed state so you can\n * use it to update your own state.\n */\n onCollapseChange?: (isCollapsed: boolean) => void;\n}\n\nexport function getPanelDomAttributes({\n groupId,\n id,\n collapsible,\n collapsed,\n}: {\n groupId: string | undefined;\n id: string;\n collapsible: boolean | undefined;\n collapsed: boolean | undefined;\n}) {\n const attrs: Record<string, string | boolean | undefined> = {\n id: id,\n \"data-splitter-group-id\": groupId,\n \"data-splitter-type\": \"panel\",\n \"data-splitter-id\": id,\n };\n\n if (collapsible) {\n attrs[\"data-collapsed\"] = collapsed;\n }\n\n return attrs;\n}\n\nexport interface SharedPanelResizerProps\n extends Partial<Pick<PanelHandle, \"setSize\">> {\n /** If the handle is disabled */\n disabled?: boolean;\n /** The size of the handle */\n size?: PixelUnit;\n /** Called when the user starts dragging the handle */\n onDragStart?: () => void;\n /** Called when the user drags the handle */\n onDrag?: () => void;\n /** Called when the user stops dragging the handle */\n onDragEnd?: () => void;\n}\n\nexport function getPanelResizerDomAttributes({\n groupId,\n id,\n orientation,\n isDragging,\n activeDragHandleId,\n disabled,\n controlsId,\n min,\n max,\n currentValue,\n groupSize,\n}: {\n groupId: string | undefined;\n id: string;\n orientation: \"horizontal\" | \"vertical\";\n isDragging: boolean;\n activeDragHandleId: string | undefined;\n disabled: boolean | undefined;\n controlsId: string | undefined;\n min: ParsedUnit | undefined;\n max: ParsedUnit | \"1fr\" | undefined;\n currentValue: ParsedUnit | undefined;\n groupSize: number;\n}) {\n return {\n id: id,\n role: \"separator\" as const,\n \"data-splitter-type\": \"handle\",\n \"data-splitter-id\": id,\n \"data-splitter-group-id\": groupId,\n \"data-handle-orientation\": orientation,\n \"data-state\": isDragging\n ? \"dragging\"\n : activeDragHandleId\n ? \"inactive\"\n : \"idle\",\n \"aria-label\": \"Resize Handle\",\n \"aria-disabled\": disabled,\n \"aria-controls\": controlsId,\n \"aria-valuemin\": min ? getUnitPercentageValue(groupSize, min) : undefined,\n \"aria-valuemax\":\n max === \"1fr\"\n ? 100\n : max\n ? getUnitPercentageValue(groupSize, max)\n : undefined,\n \"aria-valuenow\": currentValue\n ? getUnitPercentageValue(groupSize, currentValue)\n : undefined,\n };\n}\n\nexport function measureGroupChildren(\n groupId: string,\n cb: (childrenSizes: Record<string, Rect>) => void\n) {\n const childrenObserver = new ResizeObserver((childrenEntries) => {\n const childrenSizes: Record<string, { width: number; height: number }> = {};\n\n for (const childEntry of childrenEntries) {\n const child = childEntry.target as HTMLElement;\n const childId = child.getAttribute(\"data-splitter-id\");\n const childSize = childEntry.borderBoxSize[0];\n\n if (childId && childSize) {\n childrenSizes[childId] = {\n width: childSize.inlineSize,\n height: childSize.blockSize,\n };\n }\n }\n\n cb(childrenSizes);\n });\n\n const c = document.querySelectorAll(`[data-splitter-group-id=\"${groupId}\"]`);\n\n for (const child of c) {\n childrenObserver.observe(child);\n }\n\n return () => {\n childrenObserver.disconnect();\n };\n}\n"]}
|
package/dist/esm/test.js
CHANGED
package/dist/esm/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from \"vitest\";\nimport { PanelGroupHandle } from \"./interface.js\";\n\nexport async function dragHandle(options: {\n handleId?: string;\n delta: number;\n orientation?: \"horizontal\" | \"vertical\";\n}) {\n const orientation = options.orientation || \"horizontal\";\n const handle = document.querySelector(\n options.handleId\n ? `[data-splitter-id=\"${options.handleId}\"]`\n : '[data-splitter-type=\"handle\"]'\n );\n\n if (!handle) {\n throw new Error(`Handle not found: ${options.handleId}`);\n }\n\n const rect = handle.getBoundingClientRect();\n const x = rect.x + rect.width / 2;\n const y = rect.y + rect.height / 2;\n const step = options.delta > 0 ? 1 : -1;\n const pointerId = 1;\n\n handle.dispatchEvent(\n new PointerEvent(\"pointerdown\", {\n bubbles: true,\n clientX: x,\n clientY: y,\n pointerId,\n button: 0,\n })\n );\n\n for (let i = 0; i < Math.abs(options.delta - 1); i++) {\n handle.dispatchEvent(\n new PointerEvent(\"pointermove\", {\n bubbles: true,\n pointerId,\n clientX: orientation === \"horizontal\" ? x + i * step : x,\n clientY: orientation === \"vertical\" ? y + i * step : y,\n })\n );\n await new Promise((r) => setTimeout(r, 10));\n }\n\n handle.dispatchEvent(\n new PointerEvent(\"pointerup\", {\n bubbles: true,\n pointerId,\n clientX: orientation === \"horizontal\" ? x + options.delta : x,\n clientY: orientation === \"vertical\" ? y + options.delta : y,\n })\n );\n}\n\ntype WaitForFn = <T>(\n callback: () => T | Promise<T>,\n options?: {\n timeout?: number;\n }\n) => Promise<T>;\n\nfunction waitForCondition(waitFor: WaitForFn, condition: () => boolean) {\n const stack = new Error().stack;\n\n return waitFor(\n () => {\n if (!condition()) {\n const error = new Error(\"Not ready\");\n error.stack = stack;\n throw error;\n }\n },\n {\n timeout: 10_000,\n }\n );\n}\n\nasync function waitForMeasurement(\n waitFor: WaitForFn,\n handle: PanelGroupHandle\n) {\n await waitForCondition(\n waitFor,\n () => !handle.getTemplate().includes(\"minmax\")\n );\n await new Promise((resolve) => setTimeout(resolve, 100));\n}\n\nasync function expectTemplate(\n waitFor: WaitForFn,\n handle: PanelGroupHandle,\n resolvedTemplate: string\n) {\n const stack = new Error().stack;\n let template;\n\n await waitFor(\n () => {\n template = handle.getTemplate();\n\n if (!template.includes(resolvedTemplate)) {\n const e = new Error(\n `\\nExpected: ${resolvedTemplate}\\nGot : ${template}`\n );\n e.stack = stack;\n throw e;\n }\n\n if (handle.getState() !== \"idle\") {\n const e = new Error(`\\nExpected: idle\\nGot : ${handle.getState()}`);\n e.stack = stack;\n throw e;\n }\n },\n {\n timeout:
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from \"vitest\";\nimport { PanelGroupHandle } from \"./interface.js\";\n\nexport async function dragHandle(options: {\n handleId?: string;\n delta: number;\n orientation?: \"horizontal\" | \"vertical\";\n}) {\n const orientation = options.orientation || \"horizontal\";\n const handle = document.querySelector(\n options.handleId\n ? `[data-splitter-id=\"${options.handleId}\"]`\n : '[data-splitter-type=\"handle\"]'\n );\n\n if (!handle) {\n throw new Error(`Handle not found: ${options.handleId}`);\n }\n\n const rect = handle.getBoundingClientRect();\n const x = rect.x + rect.width / 2;\n const y = rect.y + rect.height / 2;\n const step = options.delta > 0 ? 1 : -1;\n const pointerId = 1;\n\n handle.dispatchEvent(\n new PointerEvent(\"pointerdown\", {\n bubbles: true,\n clientX: x,\n clientY: y,\n pointerId,\n button: 0,\n })\n );\n\n for (let i = 0; i < Math.abs(options.delta - 1); i++) {\n handle.dispatchEvent(\n new PointerEvent(\"pointermove\", {\n bubbles: true,\n pointerId,\n clientX: orientation === \"horizontal\" ? x + i * step : x,\n clientY: orientation === \"vertical\" ? y + i * step : y,\n })\n );\n await new Promise((r) => setTimeout(r, 10));\n }\n\n handle.dispatchEvent(\n new PointerEvent(\"pointerup\", {\n bubbles: true,\n pointerId,\n clientX: orientation === \"horizontal\" ? x + options.delta : x,\n clientY: orientation === \"vertical\" ? y + options.delta : y,\n })\n );\n}\n\ntype WaitForFn = <T>(\n callback: () => T | Promise<T>,\n options?: {\n timeout?: number;\n }\n) => Promise<T>;\n\nfunction waitForCondition(waitFor: WaitForFn, condition: () => boolean) {\n const stack = new Error().stack;\n\n return waitFor(\n () => {\n if (!condition()) {\n const error = new Error(\"Not ready\");\n error.stack = stack;\n throw error;\n }\n },\n {\n timeout: 10_000,\n }\n );\n}\n\nasync function waitForMeasurement(\n waitFor: WaitForFn,\n handle: PanelGroupHandle\n) {\n await waitForCondition(\n waitFor,\n () => !handle.getTemplate().includes(\"minmax\")\n );\n await new Promise((resolve) => setTimeout(resolve, 100));\n}\n\nasync function expectTemplate(\n waitFor: WaitForFn,\n handle: PanelGroupHandle,\n resolvedTemplate: string\n) {\n const stack = new Error().stack;\n let template;\n\n await waitFor(\n () => {\n template = handle.getTemplate();\n\n if (!template.includes(resolvedTemplate)) {\n const e = new Error(\n `\\nExpected: ${resolvedTemplate}\\nGot : ${template}`\n );\n e.stack = stack;\n throw e;\n }\n\n if (handle.getState() !== \"idle\") {\n const e = new Error(`\\nExpected: idle\\nGot : ${handle.getState()}`);\n e.stack = stack;\n throw e;\n }\n },\n {\n timeout: 4_000,\n }\n );\n\n expect(template).toBe(resolvedTemplate);\n}\n\nexport function createTestUtils(options: { waitFor: WaitForFn }) {\n return {\n waitForCondition: waitForCondition.bind(null, options.waitFor),\n waitForMeasurement: waitForMeasurement.bind(null, options.waitFor),\n expectTemplate: expectTemplate.bind(null, options.waitFor),\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@window-splitter/interface",
|
|
4
4
|
"sideEffects": false,
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "1.0.2",
|
|
6
6
|
"description": "Shared component interface for window splitter components",
|
|
7
7
|
"homepage": "https://react-window-splitter-six.vercel.app",
|
|
8
8
|
"repository": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
},
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@internal/eslint-config": "0.
|
|
30
|
+
"@internal/eslint-config": "1.0.2",
|
|
31
31
|
"@testing-library/jest-dom": "catalog:",
|
|
32
32
|
"eslint": "catalog:",
|
|
33
33
|
"tshy": "catalog:",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"vitest": "catalog:"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@window-splitter/state": "0.
|
|
38
|
+
"@window-splitter/state": "1.0.2"
|
|
39
39
|
},
|
|
40
40
|
"tshy": {
|
|
41
41
|
"exclude": [
|
|
@@ -79,5 +79,5 @@
|
|
|
79
79
|
"window"
|
|
80
80
|
],
|
|
81
81
|
"types": "./dist/commonjs/index.d.ts",
|
|
82
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "c9d2802d3c8ff3df8d7911b417130ab118ada6c1"
|
|
83
83
|
}
|
package/src/interface.ts
CHANGED
|
@@ -103,13 +103,18 @@ export function getPanelDomAttributes({
|
|
|
103
103
|
collapsible: boolean | undefined;
|
|
104
104
|
collapsed: boolean | undefined;
|
|
105
105
|
}) {
|
|
106
|
-
|
|
106
|
+
const attrs: Record<string, string | boolean | undefined> = {
|
|
107
107
|
id: id,
|
|
108
108
|
"data-splitter-group-id": groupId,
|
|
109
109
|
"data-splitter-type": "panel",
|
|
110
110
|
"data-splitter-id": id,
|
|
111
|
-
"data-collapsed": collapsible ? collapsed : undefined,
|
|
112
111
|
};
|
|
112
|
+
|
|
113
|
+
if (collapsible) {
|
|
114
|
+
attrs["data-collapsed"] = collapsed;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return attrs;
|
|
113
118
|
}
|
|
114
119
|
|
|
115
120
|
export interface SharedPanelResizerProps
|