@dynamix-layout/solid 1.0.2 → 1.0.3

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/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @dynamix-layout/solid
2
2
 
3
+ ## 1.0.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [#84](https://github.com/xcode-studio/dynamix-layout/pull/84) [`a8295a7`](https://github.com/xcode-studio/dynamix-layout/commit/a8295a790a99cbf522ca68acd8057b666b401de4) Thanks [@akash-aman](https://github.com/akash-aman)! - Packaging fixes for 1.x, and deprecation notes ahead of 2.0.
8
+
9
+ - **React 18 works.** The React bundle no longer inlines React 19's `react/jsx-runtime`, and the peer dependencies are `react` and `react-dom` `^18.0.0 || ^19.0.0` (the `react` peer was `^0.0.1`). The React package's unused IIFE/UMD builds are gone; they weren't reachable through `exports`.
10
+ - **Types resolve.** The published declarations of the React and Solid packages imported `../../../core/src`, a path that doesn't exist in the package, so core types were `any`. Each package now ships one self-contained declaration file, plus `index.d.cts` for CommonJS.
11
+ - **`require()` works.** The CommonJS builds were named `*.cjs.js` in `"type": "module"` packages, so Node loaded them as ESM. They're now `*.cjs`. Core's `browser` field, which pointed at an IIFE without exports, is removed.
12
+ - **Installs on Node 18 and later** (it required Node 22).
13
+ - **Solid:** `solid-js` is a peer dependency, so apps don't end up with two copies.
14
+ - **Docs:**
15
+ - The README now gives the correct stylesheet path, `@dynamix-layout/react/style.css` (`styles.css` also works).
16
+ - Repository links point to `xcode-studio/dynamix-layout`.
17
+ - **Deprecations:** the props and exports that 2.0 renames or removes are marked `@deprecated`, each naming its replacement and linking the migration guide. Behaviour is unchanged.
18
+
19
+ - Updated dependencies [[`a8295a7`](https://github.com/xcode-studio/dynamix-layout/commit/a8295a790a99cbf522ca68acd8057b666b401de4)]:
20
+ - @dynamix-layout/core@1.1.1
21
+
3
22
  ## 1.0.2
4
23
 
5
24
  ### Patch Changes
@@ -0,0 +1,190 @@
1
+ import { Accessor } from 'solid-js';
2
+ import { Dimension } from '@dynamix-layout/core';
3
+ import { DynamixLayoutCore } from '@dynamix-layout/core';
4
+ import { JSX } from 'solid-js';
5
+ import { LayoutTree } from '@dynamix-layout/core';
6
+ import { NodeOptions } from '@dynamix-layout/core';
7
+ import { ParentComponent } from 'solid-js';
8
+ import { Setter } from 'solid-js';
9
+
10
+ export declare const DefaultHoverElement: (props: DivProps) => JSX.Element;
11
+
12
+ export declare const DefaultSliderElement: (props: {
13
+ direction?: boolean;
14
+ children?: JSX.Element;
15
+ } & DivProps) => JSX.Element;
16
+
17
+ export declare const DefaultWrapTabBody: (props: DivProps) => JSX.Element;
18
+
19
+ export declare const DefaultWrapTabHead: (props: DivProps) => JSX.Element;
20
+
21
+ export declare const DefaultWrapTabLabel: (props: DivProps) => JSX.Element;
22
+
23
+ export declare const DefaultWrapTabPanel: (props: DivProps) => JSX.Element;
24
+
25
+ export declare type DivFC = (props: {
26
+ children?: JSX.Element;
27
+ } & JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
28
+
29
+ declare type DivProps = {
30
+ children?: JSX.Element;
31
+ active?: boolean;
32
+ } & JSX.HTMLAttributes<HTMLDivElement>;
33
+
34
+ export declare const DynamixLayout: ParentComponent<LayoutProps>;
35
+
36
+ export declare interface DynamixLayoutProps {
37
+ children?: JSX.Element;
38
+ layoutTree?: LayoutTree;
39
+ tabs?: string[];
40
+ class?: string;
41
+ style?: JSX.CSSProperties;
42
+ }
43
+
44
+ export declare const getTabOutput: (input: TabInput) => TabOutput;
45
+
46
+ export declare interface LayoutProps {
47
+ tabs: [string, JSX.Element][];
48
+ enableTabbar?: boolean;
49
+ WrapTabPanel?: DivFC;
50
+ WrapTabLabel?: (props: {
51
+ children?: JSX.Element;
52
+ active?: boolean;
53
+ } & JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
54
+ WrapTabHead?: DivFC;
55
+ WrapTabBody?: DivFC;
56
+ HoverElement?: DivFC;
57
+ SliderElement?: (props: {
58
+ children?: JSX.Element;
59
+ direction?: boolean;
60
+ } & JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
61
+ tabHeadHeight?: number;
62
+ layoutTree?: LayoutTree;
63
+ pad?: {
64
+ t: number;
65
+ b: number;
66
+ l: number;
67
+ r: number;
68
+ };
69
+ class?: string;
70
+ style?: JSX.CSSProperties;
71
+ bondWidth?: number;
72
+ /** In 2.0 this receives the v2 `LayoutJSON` format instead of `LayoutTree` (v1 layouts passed to `layoutTree` keep loading). See https://github.com/xcode-studio/dynamix-layout/blob/main/docs/migration-v1-to-v2.md */
73
+ updateJSON?: (layoutTree: LayoutTree) => void;
74
+ minTabHeight?: number;
75
+ minTabWidth?: number;
76
+ /** @deprecated No effect in 2.0: splitters update once per animation frame. See https://github.com/xcode-studio/dynamix-layout/blob/main/docs/migration-v1-to-v2.md */
77
+ sliderUpdateTimeout?: number;
78
+ windowResizeTimeout?: number;
79
+ /** @deprecated No effect in 2.0: splitters update once per animation frame. See https://github.com/xcode-studio/dynamix-layout/blob/main/docs/migration-v1-to-v2.md */
80
+ disableSliderTimeout?: boolean;
81
+ disableResizeTimeout?: boolean;
82
+ hoverElementStyles?: JSX.CSSProperties;
83
+ sliderElementStyles?: JSX.CSSProperties;
84
+ tabPanelElementStyles?: JSX.CSSProperties;
85
+ tabBodyElementStyles?: JSX.CSSProperties;
86
+ tabHeadElementStyles?: JSX.CSSProperties;
87
+ tabLabelElementStyles?: JSX.CSSProperties;
88
+ RootSplitterHoverElStyles?: JSX.CSSProperties;
89
+ hoverElementClass?: string;
90
+ sliderElementClass?: string;
91
+ tabPanelElementClass?: string;
92
+ tabBodyElementClass?: string;
93
+ tabHeadElementClass?: string;
94
+ tabLabelElementClass?: string;
95
+ RootSplitterHoverElClass?: string;
96
+ rootId?: string;
97
+ tabNames?: Map<string, string | JSX.Element>;
98
+ }
99
+
100
+ export declare const RootSplitterHoverEl: (props: {
101
+ area: "left" | "right" | "top" | "bottom";
102
+ size?: {
103
+ w: string;
104
+ h: string;
105
+ };
106
+ gap?: string;
107
+ } & DivProps) => JSX.Element;
108
+
109
+ export declare type TabEntry = {
110
+ uqid: string;
111
+ name: string;
112
+ node: JSX.Element;
113
+ };
114
+
115
+ export declare type TabInput = [string, JSX.Element][];
116
+
117
+ export declare type TabOutput = {
118
+ keys: string[];
119
+ maps: Map<string, TabEntry>;
120
+ name: Map<string, string>;
121
+ };
122
+
123
+ export declare const useDynamixLayout: ({ tabOutput, rootId, layoutTree, updateJSON, dimensions, tabHeadHeight, enableTabbar, bondWidth, minTabHeight, minTabWidth, sliderUpdateTimeout, windowResizeTimeout, disableSliderTimeout, disableResizeTimeout, }: useDynamixLayoutOptions) => {
124
+ tabsets: Accessor<Map<string, NodeOptions>>;
125
+ sliders: Accessor<Map<string, NodeOptions>>;
126
+ tabsetsRef: Map<string, HTMLDivElement>;
127
+ panelsRef: Map<string, HTMLDivElement>;
128
+ tabsRef: Map<string, HTMLDivElement>;
129
+ slidersRef: Map<string, HTMLDivElement>;
130
+ layoutJSON: Accessor<LayoutTree | undefined>;
131
+ layoutInstance: DynamixLayoutCore;
132
+ hoverElementRef: {
133
+ current: HTMLDivElement | undefined;
134
+ };
135
+ rootSplitHoverEl: HTMLDivElement[];
136
+ dragging: Accessor<boolean>;
137
+ isUpdating: Accessor<boolean>;
138
+ /** @deprecated Internal state setter; will be removed in v2. */
139
+ setIsUpdating: Setter<boolean>;
140
+ /** @deprecated Internal state setter; will be removed in v2. */
141
+ setDragging: Setter<boolean>;
142
+ /** @deprecated Internal state setter; will be removed in v2. */
143
+ setTabsets: Setter<Map<string, NodeOptions>>;
144
+ /** @deprecated Internal state setter; will be removed in v2. */
145
+ setSliders: Setter<Map<string, NodeOptions>>;
146
+ /** @deprecated Internal state setter; will be removed in v2. */
147
+ setLayoutJSON: Setter<LayoutTree | undefined>;
148
+ onDragStart: (e: DragEvent) => void;
149
+ onDragOver: (e: DragEvent) => void;
150
+ onDragEnd: () => void;
151
+ onDragEnter: (e: DragEvent) => void;
152
+ onDragLeave: (e: DragEvent) => void;
153
+ onDrop: (e: DragEvent) => void;
154
+ onPointerDown: (e: PointerEvent) => void;
155
+ updateActiveTab: (e: MouseEvent) => void;
156
+ handleRootSplit: (e: DragEvent) => void;
157
+ handleNavbarDragOver: (e: DragEvent) => void;
158
+ };
159
+
160
+ export declare interface UseDynamixLayoutOptions {
161
+ initialLayoutTree?: LayoutTree;
162
+ tabs?: string[];
163
+ }
164
+
165
+ export declare interface useDynamixLayoutOptions {
166
+ tabOutput: TabOutput;
167
+ rootId: string;
168
+ layoutTree?: LayoutTree;
169
+ updateJSON?: (layoutTree: LayoutTree) => void;
170
+ enableTabbar: boolean;
171
+ dimensions: () => Dimension;
172
+ sliderUpdateTimeout: number;
173
+ windowResizeTimeout: number;
174
+ disableSliderTimeout: boolean;
175
+ disableResizeTimeout: boolean;
176
+ hoverElementStyles?: JSX.CSSProperties;
177
+ bondWidth: number;
178
+ minTabHeight: number;
179
+ minTabWidth: number;
180
+ tabHeadHeight: number;
181
+ }
182
+
183
+ export declare interface UseDynamixLayoutResult {
184
+ layoutTree: LayoutTree | undefined;
185
+ tabs: string[];
186
+ setTabs: (tabs: string[]) => void;
187
+ setLayoutTree: (layoutTree: LayoutTree) => void;
188
+ }
189
+
190
+ export { }
@@ -1,4 +1,190 @@
1
- export * from './components/Layout';
2
- export * from './hooks/useLayout';
3
- export * from './components/Default';
4
- export * from './types';
1
+ import { Accessor } from 'solid-js';
2
+ import { Dimension } from '@dynamix-layout/core';
3
+ import { DynamixLayoutCore } from '@dynamix-layout/core';
4
+ import { JSX } from 'solid-js';
5
+ import { LayoutTree } from '@dynamix-layout/core';
6
+ import { NodeOptions } from '@dynamix-layout/core';
7
+ import { ParentComponent } from 'solid-js';
8
+ import { Setter } from 'solid-js';
9
+
10
+ export declare const DefaultHoverElement: (props: DivProps) => JSX.Element;
11
+
12
+ export declare const DefaultSliderElement: (props: {
13
+ direction?: boolean;
14
+ children?: JSX.Element;
15
+ } & DivProps) => JSX.Element;
16
+
17
+ export declare const DefaultWrapTabBody: (props: DivProps) => JSX.Element;
18
+
19
+ export declare const DefaultWrapTabHead: (props: DivProps) => JSX.Element;
20
+
21
+ export declare const DefaultWrapTabLabel: (props: DivProps) => JSX.Element;
22
+
23
+ export declare const DefaultWrapTabPanel: (props: DivProps) => JSX.Element;
24
+
25
+ export declare type DivFC = (props: {
26
+ children?: JSX.Element;
27
+ } & JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
28
+
29
+ declare type DivProps = {
30
+ children?: JSX.Element;
31
+ active?: boolean;
32
+ } & JSX.HTMLAttributes<HTMLDivElement>;
33
+
34
+ export declare const DynamixLayout: ParentComponent<LayoutProps>;
35
+
36
+ export declare interface DynamixLayoutProps {
37
+ children?: JSX.Element;
38
+ layoutTree?: LayoutTree;
39
+ tabs?: string[];
40
+ class?: string;
41
+ style?: JSX.CSSProperties;
42
+ }
43
+
44
+ export declare const getTabOutput: (input: TabInput) => TabOutput;
45
+
46
+ export declare interface LayoutProps {
47
+ tabs: [string, JSX.Element][];
48
+ enableTabbar?: boolean;
49
+ WrapTabPanel?: DivFC;
50
+ WrapTabLabel?: (props: {
51
+ children?: JSX.Element;
52
+ active?: boolean;
53
+ } & JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
54
+ WrapTabHead?: DivFC;
55
+ WrapTabBody?: DivFC;
56
+ HoverElement?: DivFC;
57
+ SliderElement?: (props: {
58
+ children?: JSX.Element;
59
+ direction?: boolean;
60
+ } & JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
61
+ tabHeadHeight?: number;
62
+ layoutTree?: LayoutTree;
63
+ pad?: {
64
+ t: number;
65
+ b: number;
66
+ l: number;
67
+ r: number;
68
+ };
69
+ class?: string;
70
+ style?: JSX.CSSProperties;
71
+ bondWidth?: number;
72
+ /** In 2.0 this receives the v2 `LayoutJSON` format instead of `LayoutTree` (v1 layouts passed to `layoutTree` keep loading). See https://github.com/xcode-studio/dynamix-layout/blob/main/docs/migration-v1-to-v2.md */
73
+ updateJSON?: (layoutTree: LayoutTree) => void;
74
+ minTabHeight?: number;
75
+ minTabWidth?: number;
76
+ /** @deprecated No effect in 2.0: splitters update once per animation frame. See https://github.com/xcode-studio/dynamix-layout/blob/main/docs/migration-v1-to-v2.md */
77
+ sliderUpdateTimeout?: number;
78
+ windowResizeTimeout?: number;
79
+ /** @deprecated No effect in 2.0: splitters update once per animation frame. See https://github.com/xcode-studio/dynamix-layout/blob/main/docs/migration-v1-to-v2.md */
80
+ disableSliderTimeout?: boolean;
81
+ disableResizeTimeout?: boolean;
82
+ hoverElementStyles?: JSX.CSSProperties;
83
+ sliderElementStyles?: JSX.CSSProperties;
84
+ tabPanelElementStyles?: JSX.CSSProperties;
85
+ tabBodyElementStyles?: JSX.CSSProperties;
86
+ tabHeadElementStyles?: JSX.CSSProperties;
87
+ tabLabelElementStyles?: JSX.CSSProperties;
88
+ RootSplitterHoverElStyles?: JSX.CSSProperties;
89
+ hoverElementClass?: string;
90
+ sliderElementClass?: string;
91
+ tabPanelElementClass?: string;
92
+ tabBodyElementClass?: string;
93
+ tabHeadElementClass?: string;
94
+ tabLabelElementClass?: string;
95
+ RootSplitterHoverElClass?: string;
96
+ rootId?: string;
97
+ tabNames?: Map<string, string | JSX.Element>;
98
+ }
99
+
100
+ export declare const RootSplitterHoverEl: (props: {
101
+ area: "left" | "right" | "top" | "bottom";
102
+ size?: {
103
+ w: string;
104
+ h: string;
105
+ };
106
+ gap?: string;
107
+ } & DivProps) => JSX.Element;
108
+
109
+ export declare type TabEntry = {
110
+ uqid: string;
111
+ name: string;
112
+ node: JSX.Element;
113
+ };
114
+
115
+ export declare type TabInput = [string, JSX.Element][];
116
+
117
+ export declare type TabOutput = {
118
+ keys: string[];
119
+ maps: Map<string, TabEntry>;
120
+ name: Map<string, string>;
121
+ };
122
+
123
+ export declare const useDynamixLayout: ({ tabOutput, rootId, layoutTree, updateJSON, dimensions, tabHeadHeight, enableTabbar, bondWidth, minTabHeight, minTabWidth, sliderUpdateTimeout, windowResizeTimeout, disableSliderTimeout, disableResizeTimeout, }: useDynamixLayoutOptions) => {
124
+ tabsets: Accessor<Map<string, NodeOptions>>;
125
+ sliders: Accessor<Map<string, NodeOptions>>;
126
+ tabsetsRef: Map<string, HTMLDivElement>;
127
+ panelsRef: Map<string, HTMLDivElement>;
128
+ tabsRef: Map<string, HTMLDivElement>;
129
+ slidersRef: Map<string, HTMLDivElement>;
130
+ layoutJSON: Accessor<LayoutTree | undefined>;
131
+ layoutInstance: DynamixLayoutCore;
132
+ hoverElementRef: {
133
+ current: HTMLDivElement | undefined;
134
+ };
135
+ rootSplitHoverEl: HTMLDivElement[];
136
+ dragging: Accessor<boolean>;
137
+ isUpdating: Accessor<boolean>;
138
+ /** @deprecated Internal state setter; will be removed in v2. */
139
+ setIsUpdating: Setter<boolean>;
140
+ /** @deprecated Internal state setter; will be removed in v2. */
141
+ setDragging: Setter<boolean>;
142
+ /** @deprecated Internal state setter; will be removed in v2. */
143
+ setTabsets: Setter<Map<string, NodeOptions>>;
144
+ /** @deprecated Internal state setter; will be removed in v2. */
145
+ setSliders: Setter<Map<string, NodeOptions>>;
146
+ /** @deprecated Internal state setter; will be removed in v2. */
147
+ setLayoutJSON: Setter<LayoutTree | undefined>;
148
+ onDragStart: (e: DragEvent) => void;
149
+ onDragOver: (e: DragEvent) => void;
150
+ onDragEnd: () => void;
151
+ onDragEnter: (e: DragEvent) => void;
152
+ onDragLeave: (e: DragEvent) => void;
153
+ onDrop: (e: DragEvent) => void;
154
+ onPointerDown: (e: PointerEvent) => void;
155
+ updateActiveTab: (e: MouseEvent) => void;
156
+ handleRootSplit: (e: DragEvent) => void;
157
+ handleNavbarDragOver: (e: DragEvent) => void;
158
+ };
159
+
160
+ export declare interface UseDynamixLayoutOptions {
161
+ initialLayoutTree?: LayoutTree;
162
+ tabs?: string[];
163
+ }
164
+
165
+ export declare interface useDynamixLayoutOptions {
166
+ tabOutput: TabOutput;
167
+ rootId: string;
168
+ layoutTree?: LayoutTree;
169
+ updateJSON?: (layoutTree: LayoutTree) => void;
170
+ enableTabbar: boolean;
171
+ dimensions: () => Dimension;
172
+ sliderUpdateTimeout: number;
173
+ windowResizeTimeout: number;
174
+ disableSliderTimeout: boolean;
175
+ disableResizeTimeout: boolean;
176
+ hoverElementStyles?: JSX.CSSProperties;
177
+ bondWidth: number;
178
+ minTabHeight: number;
179
+ minTabWidth: number;
180
+ tabHeadHeight: number;
181
+ }
182
+
183
+ export declare interface UseDynamixLayoutResult {
184
+ layoutTree: LayoutTree | undefined;
185
+ tabs: string[];
186
+ setTabs: (tabs: string[]) => void;
187
+ setLayoutTree: (layoutTree: LayoutTree) => void;
188
+ }
189
+
190
+ export { }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamix-layout/solid",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "A powerful SolidJS component for creating dynamic, resizable, and draggable layouts.",
5
5
  "keywords": [
6
6
  "solid",
@@ -26,25 +26,32 @@
26
26
  ],
27
27
  "repository": {
28
28
  "type": "git",
29
- "url": "https://github.com/xcode-studio/dynamix-layout",
29
+ "url": "git+https://github.com/xcode-studio/dynamix-layout.git",
30
30
  "directory": "packages/solid"
31
31
  },
32
32
  "bugs": {
33
33
  "url": "https://github.com/xcode-studio/dynamix-layout/issues"
34
34
  },
35
35
  "homepage": "https://github.com/xcode-studio/dynamix-layout#readme",
36
- "main": "./dist/index.cjs.js",
36
+ "main": "./dist/index.cjs",
37
37
  "module": "./dist/index.es.js",
38
38
  "types": "./dist/types/index.d.ts",
39
39
  "typings": "./dist/types/index.d.ts",
40
40
  "style": "./dist/index.css",
41
41
  "exports": {
42
42
  ".": {
43
- "types": "./dist/types/index.d.ts",
44
- "import": "./dist/index.es.js",
45
- "require": "./dist/index.cjs.js"
43
+ "import": {
44
+ "types": "./dist/types/index.d.ts",
45
+ "default": "./dist/index.es.js"
46
+ },
47
+ "require": {
48
+ "types": "./dist/types/index.d.cts",
49
+ "default": "./dist/index.cjs"
50
+ }
46
51
  },
47
- "./style.css": "./dist/index.css"
52
+ "./style.css": "./dist/index.css",
53
+ "./styles.css": "./dist/index.css",
54
+ "./package.json": "./package.json"
48
55
  },
49
56
  "files": [
50
57
  "dist",
@@ -61,8 +68,7 @@
61
68
  },
62
69
  "type": "module",
63
70
  "engines": {
64
- "node": ">=22.16.0",
65
- "pnpm": ">=10.13.1"
71
+ "node": ">=18"
66
72
  },
67
73
  "license": "MIT",
68
74
  "devDependencies": {
@@ -73,12 +79,15 @@
73
79
  "vite": "^7.3.6",
74
80
  "vite-plugin-solid": "2.11.14",
75
81
  "vitest": "^4.1.11",
82
+ "solid-js": "^1.9.15",
76
83
  "@repo/typescript-config": "0.0.0",
77
84
  "@repo/eslint-config": "0.0.0"
78
85
  },
79
86
  "dependencies": {
80
- "solid-js": "^1.9.15",
81
- "@dynamix-layout/core": "1.1.0"
87
+ "@dynamix-layout/core": "1.1.1"
88
+ },
89
+ "peerDependencies": {
90
+ "solid-js": "^1.8.0"
82
91
  },
83
92
  "scripts": {
84
93
  "dev": "vite build --watch",
@@ -1,23 +0,0 @@
1
- import { JSX } from 'solid-js';
2
- type DivProps = {
3
- children?: JSX.Element;
4
- active?: boolean;
5
- } & JSX.HTMLAttributes<HTMLDivElement>;
6
- export declare const DefaultWrapTabLabel: (props: DivProps) => JSX.Element;
7
- export declare const DefaultWrapTabBody: (props: DivProps) => JSX.Element;
8
- export declare const DefaultWrapTabHead: (props: DivProps) => JSX.Element;
9
- export declare const DefaultWrapTabPanel: (props: DivProps) => JSX.Element;
10
- export declare const DefaultHoverElement: (props: DivProps) => JSX.Element;
11
- export declare const DefaultSliderElement: (props: {
12
- direction?: boolean;
13
- children?: JSX.Element;
14
- } & DivProps) => JSX.Element;
15
- export declare const RootSplitterHoverEl: (props: {
16
- area: "left" | "right" | "top" | "bottom";
17
- size?: {
18
- w: string;
19
- h: string;
20
- };
21
- gap?: string;
22
- } & DivProps) => JSX.Element;
23
- export {};
@@ -1,4 +0,0 @@
1
- import { ParentComponent } from 'solid-js';
2
- import { LayoutProps, TabInput, TabOutput } from '../types';
3
- export declare const getTabOutput: (input: TabInput) => TabOutput;
4
- export declare const DynamixLayout: ParentComponent<LayoutProps>;
@@ -1,39 +0,0 @@
1
- import { LayoutTree, DynamixLayoutCore, NodeOptions } from '../../../core/src';
2
- import { useDynamixLayoutOptions } from '../types';
3
- import { Accessor, Setter } from 'solid-js';
4
- export declare const useDynamixLayout: ({ tabOutput, rootId, layoutTree, updateJSON, dimensions, tabHeadHeight, enableTabbar, bondWidth, minTabHeight, minTabWidth, sliderUpdateTimeout, windowResizeTimeout, disableSliderTimeout, disableResizeTimeout, }: useDynamixLayoutOptions) => {
5
- tabsets: Accessor<Map<string, NodeOptions>>;
6
- sliders: Accessor<Map<string, NodeOptions>>;
7
- tabsetsRef: Map<string, HTMLDivElement>;
8
- panelsRef: Map<string, HTMLDivElement>;
9
- tabsRef: Map<string, HTMLDivElement>;
10
- slidersRef: Map<string, HTMLDivElement>;
11
- layoutJSON: Accessor<LayoutTree | undefined>;
12
- layoutInstance: DynamixLayoutCore;
13
- hoverElementRef: {
14
- current: HTMLDivElement | undefined;
15
- };
16
- rootSplitHoverEl: HTMLDivElement[];
17
- dragging: Accessor<boolean>;
18
- isUpdating: Accessor<boolean>;
19
- /** @deprecated Internal state setter; will be removed in v2. */
20
- setIsUpdating: Setter<boolean>;
21
- /** @deprecated Internal state setter; will be removed in v2. */
22
- setDragging: Setter<boolean>;
23
- /** @deprecated Internal state setter; will be removed in v2. */
24
- setTabsets: Setter<Map<string, NodeOptions>>;
25
- /** @deprecated Internal state setter; will be removed in v2. */
26
- setSliders: Setter<Map<string, NodeOptions>>;
27
- /** @deprecated Internal state setter; will be removed in v2. */
28
- setLayoutJSON: Setter<LayoutTree | undefined>;
29
- onDragStart: (e: DragEvent) => void;
30
- onDragOver: (e: DragEvent) => void;
31
- onDragEnd: () => void;
32
- onDragEnter: (e: DragEvent) => void;
33
- onDragLeave: (e: DragEvent) => void;
34
- onDrop: (e: DragEvent) => void;
35
- onPointerDown: (e: PointerEvent) => void;
36
- updateActiveTab: (e: MouseEvent) => void;
37
- handleRootSplit: (e: DragEvent) => void;
38
- handleNavbarDragOver: (e: DragEvent) => void;
39
- };
@@ -1,100 +0,0 @@
1
- import { LayoutTree, Dimension } from '../../../core/src';
2
- import { JSX } from 'solid-js';
3
- export interface DynamixLayoutProps {
4
- children?: JSX.Element;
5
- layoutTree?: LayoutTree;
6
- tabs?: string[];
7
- class?: string;
8
- style?: JSX.CSSProperties;
9
- }
10
- export interface UseDynamixLayoutOptions {
11
- initialLayoutTree?: LayoutTree;
12
- tabs?: string[];
13
- }
14
- export interface UseDynamixLayoutResult {
15
- layoutTree: LayoutTree | undefined;
16
- tabs: string[];
17
- setTabs: (tabs: string[]) => void;
18
- setLayoutTree: (layoutTree: LayoutTree) => void;
19
- }
20
- export type DivFC = (props: {
21
- children?: JSX.Element;
22
- } & JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
23
- export type TabEntry = {
24
- uqid: string;
25
- name: string;
26
- node: JSX.Element;
27
- };
28
- export type TabInput = [string, JSX.Element][];
29
- export type TabOutput = {
30
- keys: string[];
31
- maps: Map<string, TabEntry>;
32
- name: Map<string, string>;
33
- };
34
- export interface LayoutProps {
35
- tabs: [string, JSX.Element][];
36
- enableTabbar?: boolean;
37
- WrapTabPanel?: DivFC;
38
- WrapTabLabel?: (props: {
39
- children?: JSX.Element;
40
- active?: boolean;
41
- } & JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
42
- WrapTabHead?: DivFC;
43
- WrapTabBody?: DivFC;
44
- HoverElement?: DivFC;
45
- SliderElement?: (props: {
46
- children?: JSX.Element;
47
- direction?: boolean;
48
- } & JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
49
- tabHeadHeight?: number;
50
- layoutTree?: LayoutTree;
51
- pad?: {
52
- t: number;
53
- b: number;
54
- l: number;
55
- r: number;
56
- };
57
- class?: string;
58
- style?: JSX.CSSProperties;
59
- bondWidth?: number;
60
- updateJSON?: (layoutTree: LayoutTree) => void;
61
- minTabHeight?: number;
62
- minTabWidth?: number;
63
- sliderUpdateTimeout?: number;
64
- windowResizeTimeout?: number;
65
- disableSliderTimeout?: boolean;
66
- disableResizeTimeout?: boolean;
67
- hoverElementStyles?: JSX.CSSProperties;
68
- sliderElementStyles?: JSX.CSSProperties;
69
- tabPanelElementStyles?: JSX.CSSProperties;
70
- tabBodyElementStyles?: JSX.CSSProperties;
71
- tabHeadElementStyles?: JSX.CSSProperties;
72
- tabLabelElementStyles?: JSX.CSSProperties;
73
- RootSplitterHoverElStyles?: JSX.CSSProperties;
74
- hoverElementClass?: string;
75
- sliderElementClass?: string;
76
- tabPanelElementClass?: string;
77
- tabBodyElementClass?: string;
78
- tabHeadElementClass?: string;
79
- tabLabelElementClass?: string;
80
- RootSplitterHoverElClass?: string;
81
- rootId?: string;
82
- tabNames?: Map<string, string | JSX.Element>;
83
- }
84
- export interface useDynamixLayoutOptions {
85
- tabOutput: TabOutput;
86
- rootId: string;
87
- layoutTree?: LayoutTree;
88
- updateJSON?: (layoutTree: LayoutTree) => void;
89
- enableTabbar: boolean;
90
- dimensions: () => Dimension;
91
- sliderUpdateTimeout: number;
92
- windowResizeTimeout: number;
93
- disableSliderTimeout: boolean;
94
- disableResizeTimeout: boolean;
95
- hoverElementStyles?: JSX.CSSProperties;
96
- bondWidth: number;
97
- minTabHeight: number;
98
- minTabWidth: number;
99
- tabHeadHeight: number;
100
- }
File without changes