@aiquants/drag-drop-panels 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +186 -0
  2. package/dist/DragDropLayout.d.ts +31 -0
  3. package/dist/DragDropLayout.d.ts.map +1 -0
  4. package/dist/drag-drop/ColumnControlPanel.d.ts +36 -0
  5. package/dist/drag-drop/ColumnControlPanel.d.ts.map +1 -0
  6. package/dist/drag-drop/ColumnInsertPanel.d.ts +34 -0
  7. package/dist/drag-drop/ColumnInsertPanel.d.ts.map +1 -0
  8. package/dist/drag-drop/DebugComponents.d.ts +93 -0
  9. package/dist/drag-drop/DebugComponents.d.ts.map +1 -0
  10. package/dist/drag-drop/DebugControlPanel.d.ts +31 -0
  11. package/dist/drag-drop/DebugControlPanel.d.ts.map +1 -0
  12. package/dist/drag-drop/DebugOverlay.d.ts +71 -0
  13. package/dist/drag-drop/DebugOverlay.d.ts.map +1 -0
  14. package/dist/drag-drop/ResizeHandle.d.ts +30 -0
  15. package/dist/drag-drop/ResizeHandle.d.ts.map +1 -0
  16. package/dist/drag-drop/ResponsiveControl.d.ts +9 -0
  17. package/dist/drag-drop/ResponsiveControl.d.ts.map +1 -0
  18. package/dist/drag-drop/hooks/useColumnLayout.d.ts +47 -0
  19. package/dist/drag-drop/hooks/useColumnLayout.d.ts.map +1 -0
  20. package/dist/drag-drop/hooks/useCustomDragHandlers.d.ts +42 -0
  21. package/dist/drag-drop/hooks/useCustomDragHandlers.d.ts.map +1 -0
  22. package/dist/drag-drop/hooks/useDragDropColumns.d.ts +20 -0
  23. package/dist/drag-drop/hooks/useDragDropColumns.d.ts.map +1 -0
  24. package/dist/drag-drop/hooks/useDragDropState.d.ts +28 -0
  25. package/dist/drag-drop/hooks/useDragDropState.d.ts.map +1 -0
  26. package/dist/drag-drop/hooks/useMouseTracking.d.ts +23 -0
  27. package/dist/drag-drop/hooks/useMouseTracking.d.ts.map +1 -0
  28. package/dist/drag-drop/hooks/useNormalDragHandlers.d.ts +46 -0
  29. package/dist/drag-drop/hooks/useNormalDragHandlers.d.ts.map +1 -0
  30. package/dist/drag-drop/hooks/usePanelManagement.d.ts +24 -0
  31. package/dist/drag-drop/hooks/usePanelManagement.d.ts.map +1 -0
  32. package/dist/drag-drop/hooks/useResponsiveColumns.d.ts +41 -0
  33. package/dist/drag-drop/hooks/useResponsiveColumns.d.ts.map +1 -0
  34. package/dist/drag-drop/types.d.ts +184 -0
  35. package/dist/drag-drop/types.d.ts.map +1 -0
  36. package/dist/drag-drop/utils/columnIdUtils.d.ts +19 -0
  37. package/dist/drag-drop/utils/columnIdUtils.d.ts.map +1 -0
  38. package/dist/drag-drop/utils/edgeScrollUtils.d.ts +33 -0
  39. package/dist/drag-drop/utils/edgeScrollUtils.d.ts.map +1 -0
  40. package/dist/drag-drop-panels.css +1 -0
  41. package/dist/index.d.ts +34 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.es.js +2267 -0
  44. package/dist/index.umd.js +22 -0
  45. package/package.json +69 -0
package/README.md ADDED
@@ -0,0 +1,186 @@
1
+ # Drag & Drop Panel Package
2
+
3
+ 再利用可能な Drag & Drop パネルレイアウトコンポーネントパッケージです。
4
+
5
+ ## パッケージ情報
6
+
7
+ - **名前**: `@aiquants/drag-drop-panels`
8
+ - **バージョン**: 0.1.0
9
+ - **場所**: `/workspace/packages/drag-drop-panels`
10
+
11
+ ## 機能
12
+
13
+ - 複数カラムのドラッグ&ドロップレイアウト
14
+ - パネルの並び替え
15
+ - カラム間でのパネル移動
16
+ - カラム幅のリサイズ
17
+ - パネルの表示/非表示切り替え
18
+ - カスタムドラッグハンドラーのサポート
19
+ - FLIP アニメーション
20
+ - エッジスクロール機能
21
+ - デバッグオーバーレイ
22
+
23
+ ## インストール
24
+
25
+ ```json
26
+ {
27
+ "dependencies": {
28
+ "@aiquants/drag-drop-panels": "workspace:*"
29
+ }
30
+ }
31
+ ```
32
+
33
+ ```bash
34
+ pnpm install
35
+ ```
36
+
37
+ ## 使用方法
38
+
39
+ ### 基本的な使用例
40
+
41
+ ```tsx
42
+ import { DragDropLayout } from "@aiquants/drag-drop-panels"
43
+ import type { ColumnConfig, DragOverPosition } from "@aiquants/drag-drop-panels"
44
+ import "@aiquants/drag-drop-panels/dist/drag-drop-panels.css"
45
+
46
+ function MyApp() {
47
+ // カラム設定
48
+ const columns: ColumnConfig[] = [
49
+ {
50
+ id: "column-1",
51
+ key: "column1",
52
+ initialWidth: 400,
53
+ minWidth: 300,
54
+ maxWidth: 600,
55
+ resizable: true,
56
+ },
57
+ ]
58
+
59
+ // カラムごとのパネルID配置
60
+ const [columnPanels, setColumnPanels] = useState({
61
+ column1: ["panel1", "panel2"],
62
+ })
63
+
64
+ // パネルの可視性
65
+ const [panelVisibility, setPanelVisibility] = useState({
66
+ panel1: true,
67
+ panel2: true,
68
+ })
69
+
70
+ // パネルコンポーネントのマッピング
71
+ const panelComponentMap = {
72
+ panel1: { component: MyPanel1, title: "Panel 1" },
73
+ panel2: { component: MyPanel2, title: "Panel 2" },
74
+ }
75
+
76
+ return (
77
+ <DragDropLayout
78
+ columns={columns}
79
+ columnPanels={columnPanels}
80
+ onColumnPanelsChange={setColumnPanels}
81
+ panelVisibility={panelVisibility}
82
+ onPanelVisibilityChange={setPanelVisibility}
83
+ panelComponentMap={panelComponentMap}
84
+ enableResize={true}
85
+ />
86
+ )
87
+ }
88
+ ```
89
+
90
+ ## デモページ
91
+
92
+ `quants-react-router` アプリケーションでデモページを確認できます。
93
+
94
+ ### デモページへのアクセス
95
+
96
+ 1. `quants-react-router` を起動:
97
+
98
+ ```bash
99
+ cd /workspace/apps/quants-react-router
100
+ pnpm dev
101
+ ```
102
+
103
+ 2. ブラウザで以下の URL にアクセス:
104
+
105
+ ```
106
+ http://localhost:5173/drag-drop-demo
107
+ ```
108
+
109
+ ### デモページの機能
110
+
111
+ - 3 カラムのレイアウト
112
+ - 4 つのサンプルパネル
113
+ - ドラッグ&ドロップによるパネル移動
114
+ - カラム幅のリサイズ
115
+ - パネルの表示/非表示切り替え
116
+
117
+ ## API リファレンス
118
+
119
+ ### DragDropLayout Props
120
+
121
+ | プロパティ | 型 | 必須 | 説明 |
122
+ |-----------|-----|------|------|
123
+ | `columns` | `ColumnConfig[]` | ✓ | カラムの設定配列 |
124
+ | `columnPanels` | `Record<string, string[]>` | ✓ | カラムごとのパネル ID 配列 |
125
+ | `onColumnPanelsChange` | `(panels: Record<string, string[]>) => void` | ✓ | パネル配置変更時のコールバック |
126
+ | `panelVisibility` | `Record<string, boolean>` | ✓ | パネルの可視性 |
127
+ | `onPanelVisibilityChange` | `(visibility: Record<string, boolean>) => void` | ✓ | 可視性変更時のコールバック |
128
+ | `panelComponentMap` | `Record<string, PanelConfig>` | ✓ | パネルコンポーネントのマッピング |
129
+ | `columnWidths` | `Record<string, number>` | - | カラム幅 |
130
+ | `onColumnWidthsChange` | `(widths: Record<string, number>) => void` | - | カラム幅変更時のコールバック |
131
+ | `enableResize` | `boolean` | - | リサイズ機能の有効化 (デフォルト: false) |
132
+ | `debugConfig` | `DebugConfig` | - | デバッグ設定 |
133
+
134
+ ### ColumnConfig
135
+
136
+ ```typescript
137
+ interface ColumnConfig {
138
+ id: string // カラムの一意な ID
139
+ key: string // カラムのキー (columnPanels で使用)
140
+ initialWidth?: number // 初期幅 (px)
141
+ minWidth?: number // 最小幅 (px)
142
+ maxWidth?: number // 最大幅 (px)
143
+ resizable?: boolean // リサイズ可能かどうか
144
+ className?: string // カスタム CSS クラス
145
+ }
146
+ ```
147
+
148
+ ### PanelConfig
149
+
150
+ ```typescript
151
+ interface PanelConfig {
152
+ component: ComponentType // パネルのコンポーネント
153
+ title: string // パネルのタイトル
154
+ props?: Record<string, unknown> // コンポーネントに渡す props
155
+ }
156
+ ```
157
+
158
+ ## ビルド
159
+
160
+ ```bash
161
+ cd /workspace/packages/drag-drop-panels
162
+ pnpm build
163
+ ```
164
+
165
+ ビルド出力:
166
+
167
+ - `dist/index.es.js` - ES モジュール
168
+ - `dist/index.umd.js` - UMD モジュール
169
+ - `dist/index.d.ts` - TypeScript 型定義
170
+ - `dist/drag-drop-panels.css` - スタイルシート
171
+
172
+ ## 開発
173
+
174
+ ### パッケージの修正
175
+
176
+ 1. `/workspace/packages/drag-drop-panels/src` でソースを編集
177
+ 2. ビルド: `pnpm build`
178
+ 3. `quants-react-router` でテスト
179
+
180
+ ### 既知の問題
181
+
182
+ 現時点では特にありません。
183
+
184
+ ## ライセンス
185
+
186
+ MIT
@@ -0,0 +1,31 @@
1
+ import { ColumnConfig, CustomDragState, DebugConfig, DragDropEventHandlers, DragDropStateUpdaters, DragOverPosition, DragState, OriginalPanelPosition, PanelConfig, PanelSizeInfo, ResizeConfig } from './drag-drop/types';
2
+
3
+ /**
4
+ * Props for the DragDropLayout component.
5
+ *
6
+ * DragDropLayout コンポーネントのプロパティ。
7
+ */
8
+ export interface DragDropLayoutProps extends DragDropEventHandlers, DragDropStateUpdaters, ResizeConfig {
9
+ columns: ColumnConfig[];
10
+ panels: PanelConfig[];
11
+ columnPanels: Record<string, string[]>;
12
+ panelVisibility: Record<string, boolean>;
13
+ dragState: DragState;
14
+ dragOverPosition: DragOverPosition | null;
15
+ originalPanelPosition: OriginalPanelPosition | null;
16
+ dragModes: Record<string, "normal" | "custom">;
17
+ debugConfig: DebugConfig;
18
+ panelSizes: Record<string, PanelSizeInfo>;
19
+ customDrag?: CustomDragState;
20
+ }
21
+ /**
22
+ * The main component for rendering the drag and drop layout.
23
+ * It manages the arrangement of columns and panels, handles all drag and drop logic,
24
+ * and implements FLIP animations for smooth transitions.
25
+ *
26
+ * ドラッグ&ドロップレイアウトを描画するためのメインコンポーネント。
27
+ * カラムとパネルの配置を管理し、すべてのドラッグ&ドロップロジックを処理し、
28
+ * スムーズなトランジションのためのFLIPアニメーションを実装します。
29
+ */
30
+ export declare const DragDropLayout: ({ columns, panels, columnPanels, panelVisibility, onPanelVisibilityChange, dragState, dragOverPosition, originalPanelPosition, dragModes, onDragStart, onDragEnd, onPlaceholderDragEnter, onPlaceholderDragLeave, onDragOverWithInsert, onDropWithInsert, onColumnDragLeave, onPanelClick, onPanelMouseDown, onTouchStart, onTouchMove, onTouchEnd, debugConfig, panelSizes, setPanelRef, enableResize, columnWidths, onResizeStart, onResize, onResizeEnd, isResizing, resizingColumn, onPanelSizeInfoClick, onToggleDragMode, customDrag, }: DragDropLayoutProps) => import("react/jsx-runtime").JSX.Element;
31
+ //# sourceMappingURL=DragDropLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DragDropLayout.d.ts","sourceRoot":"","sources":["../src/DragDropLayout.tsx"],"names":[],"mappings":"AAWA,OAAO,gCAAgC,CAAA;AAEvC,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,SAAS,EAAE,qBAAqB,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE/N;;;;GAIG;AACH,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB,EAAE,qBAAqB,EAAE,YAAY;IAEnG,OAAO,EAAE,YAAY,EAAE,CAAA;IAGvB,MAAM,EAAE,WAAW,EAAE,CAAA;IAGrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAGtC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAGxC,SAAS,EAAE,SAAS,CAAA;IACpB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACzC,qBAAqB,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAGnD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAA;IAG9C,WAAW,EAAE,WAAW,CAAA;IAGxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAGzC,UAAU,CAAC,EAAE,eAAe,CAAA;CAC/B;AAwCD;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GAAI,+gBAqC5B,mBAAmB,4CAubrB,CAAA"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Props for the ColumnControlPanel component.
3
+ *
4
+ * ColumnControlPanel コンポーネントのプロパティ。
5
+ */
6
+ export type ColumnControlPanelProps = {
7
+ /** The current number of columns. / 現在のカラム数。 */
8
+ columnCount: number;
9
+ /** Callback function when the column count changes. / カラム数が変更されたときのコールバック関数。 */
10
+ onColumnCountChange: (count: number) => void;
11
+ /** Callback function to auto-balance panels across columns. / パネルをカラム間で自動的にバランス調整するためのコールバック関数。 */
12
+ onAutoBalance: () => void;
13
+ /** Callback function to reset column widths to their initial state. / カラム幅を初期状態にリセットするためのコールバック関数。 */
14
+ onResetWidths: () => void;
15
+ /** The minimum number of columns allowed. Defaults to 2. / 許可される最小カラム数。デフォルトは2。 */
16
+ minColumns?: number;
17
+ /** The maximum number of columns allowed. Defaults to 6. / 許可される最大カラム数。デフォルトは6。 */
18
+ maxColumns?: number;
19
+ /** A flag indicating if a resize operation is in progress. / リサイズ操作が進行中かどうかを示すフラグ。 */
20
+ isResizing?: boolean;
21
+ /** A flag indicating if responsive mode is active (restricts manual column adjustments). / レスポンシブモードが有効かどうか(手動カラム調整を制限)。 */
22
+ isResponsiveMode?: boolean;
23
+ /** The responsive column count when responsive mode is active. / レスポンシブモード有効時のレスポンシブカラム数。 */
24
+ responsiveColumnCount?: number;
25
+ };
26
+ /**
27
+ * A UI component that provides controls for managing layout columns.
28
+ * It allows users to add or remove columns, balance panels, and reset widths.
29
+ *
30
+ * レイアウトカラムを管理するためのコントロールを提供するUIコンポーネント。
31
+ * ユーザーはカラムの追加・削除、パネルのバランス調整、幅のリセットができます。
32
+ * @param {ColumnControlPanelProps} props - The props for the component.
33
+ * @returns {JSX.Element} The rendered column control panel.
34
+ */
35
+ export declare const ColumnControlPanel: ({ columnCount, onColumnCountChange, onAutoBalance, onResetWidths, minColumns, maxColumns, isResizing, isResponsiveMode, responsiveColumnCount }: ColumnControlPanelProps) => import("react/jsx-runtime").JSX.Element;
36
+ //# sourceMappingURL=ColumnControlPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnControlPanel.d.ts","sourceRoot":"","sources":["../../src/drag-drop/ColumnControlPanel.tsx"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAA;IACnB,gFAAgF;IAChF,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,mGAAmG;IACnG,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,sGAAsG;IACtG,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,sFAAsF;IACtF,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,4HAA4H;IAC5H,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,6FAA6F;IAC7F,qBAAqB,CAAC,EAAE,MAAM,CAAA;CACjC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAAI,iJAUhC,uBAAuB,4CAgFzB,CAAA"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Props for the ColumnInsertPanel component。
3
+ *
4
+ * ColumnInsertPanel コンポーネントのプロパティ。
5
+ */
6
+ export type ColumnInsertPanelProps = {
7
+ /** The current number of columns. / 現在のカラム数。 */
8
+ columnCount: number;
9
+ /** Callback function to insert a column at a specific position. / 特定の位置にカラムを挿入するためのコールバック関数。 */
10
+ onInsertColumn: (position: number) => void;
11
+ /** Callback function to delete a column at a specific position. / 特定の位置のカラムを削除するためのコールバック関数。 */
12
+ onDeleteColumn: (position: number) => void;
13
+ /** The minimum number of columns allowed. Defaults to 1. / 許可される最小カラム数。デフォルトは1。 */
14
+ minColumns?: number;
15
+ /** The maximum number of columns allowed. Defaults to 6. / 許可される最大カラム数。デフォルトは6。 */
16
+ maxColumns?: number;
17
+ /** A flag indicating if a resize operation is in progress. / リサイズ操作が進行中かどうかを示すフラグ。 */
18
+ isResizing?: boolean;
19
+ /** A flag to disable the entire panel (e.g., during responsive mode). / パネル全体を無効化するフラグ(レスポンシブモード時など)。 */
20
+ disabled?: boolean;
21
+ };
22
+ /**
23
+ * A UI component that provides controls for inserting and deleting columns at specific positions.
24
+ * It shows visual indicators between columns where new columns can be inserted,
25
+ * and delete buttons on each column.
26
+ *
27
+ * 特定の位置でカラムの挿入・削除を行うためのコントロールを提供するUIコンポーネント。
28
+ * 新しいカラムを挿入できる位置にビジュアルインジケーターを表示し、
29
+ * 各カラムに削除ボタンを表示します。
30
+ * @param {ColumnInsertPanelProps} props - The props for the component.
31
+ * @returns {JSX.Element} The rendered column insert panel。
32
+ */
33
+ export declare const ColumnInsertPanel: ({ columnCount, onInsertColumn, onDeleteColumn, minColumns, maxColumns, isResizing, disabled, }: ColumnInsertPanelProps) => import("react/jsx-runtime").JSX.Element;
34
+ //# sourceMappingURL=ColumnInsertPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnInsertPanel.d.ts","sourceRoot":"","sources":["../../src/drag-drop/ColumnInsertPanel.tsx"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACjC,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAA;IACnB,gGAAgG;IAChG,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,gGAAgG;IAChG,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,sFAAsF;IACtF,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,yGAAyG;IACzG,QAAQ,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,GAAI,gGAQ/B,sBAAsB,4CAqExB,CAAA"}
@@ -0,0 +1,93 @@
1
+ import { MouseEvent } from 'react';
2
+ import { CustomDragState, DebugConfig, DragOverPosition, DragState, MousePosition, OriginalPanelPosition, TouchDragState } from './types';
3
+
4
+ /**
5
+ * Props for the DebugPanel component.
6
+ *
7
+ * DebugPanel コンポーネントのプロパティ。
8
+ */
9
+ interface DebugPanelProps {
10
+ /** Debug configuration object. / デバッグ設定オブジェクト。 */
11
+ config: DebugConfig;
12
+ /** The current state of the drag operation. / ドラッグ操作の現在の状態。 */
13
+ dragState: DragState;
14
+ /** The position where the dragged panel is hovering over. / ドラッグ中のパネルがホバーしている位置。 */
15
+ dragOverPosition: DragOverPosition | null;
16
+ /** The original position of the panel being dragged. / ドラッグされているパネルの元の位置。 */
17
+ originalPanelPosition: OriginalPanelPosition | null;
18
+ /** The current mouse coordinates. / 現在のマウス座標。 */
19
+ mousePosition: MousePosition;
20
+ /** The state related to touch-based dragging. / タッチベースのドラッグに関連する状態。 */
21
+ touchDragState: TouchDragState;
22
+ /** The state for custom drag handling. / カスタムドラッグ処理の状態。 */
23
+ customDrag: CustomDragState;
24
+ }
25
+ /**
26
+ * A panel that displays various debug information related to the drag-and-drop state.
27
+ *
28
+ * ドラッグ&ドロップの状態に関連する様々なデバッグ情報を表示するパネル。
29
+ * @param {DebugPanelProps} props - The props for the component.
30
+ * @returns {JSX.Element | null} The rendered debug panel or null if not enabled.
31
+ */
32
+ export declare const DebugPanel: ({ config, dragState, dragOverPosition, originalPanelPosition, mousePosition, touchDragState, customDrag }: DebugPanelProps) => import("react/jsx-runtime").JSX.Element | null;
33
+ /**
34
+ * Props for the MousePositionDisplay component.
35
+ *
36
+ * MousePositionDisplay コンポーネントのプロパティ。
37
+ */
38
+ interface MousePositionDisplayProps {
39
+ /** Debug configuration object. / デバッグ設定オブジェクト。 */
40
+ config: DebugConfig;
41
+ /** The current mouse coordinates. / 現在のマウス座標。 */
42
+ mousePosition: MousePosition;
43
+ /** The current state of the drag operation. / ドラッグ操作の現在の状態。 */
44
+ dragState: DragState;
45
+ }
46
+ /**
47
+ * Displays the current mouse coordinates on the screen during a drag operation.
48
+ *
49
+ * ドラッグ操作中に画面上に現在のマウス座標を表示します。
50
+ * @param {MousePositionDisplayProps} props - The props for the component。
51
+ * @returns {JSX.Element | null} The rendered mouse position display or null if not enabled。
52
+ */
53
+ export declare const MousePositionDisplay: ({ config, mousePosition, dragState }: MousePositionDisplayProps) => import("react/jsx-runtime").JSX.Element | null;
54
+ /**
55
+ * Props for the PanelSizeDisplay component。
56
+ *
57
+ * PanelSizeDisplay コンポーネントのプロパティ。
58
+ */
59
+ interface PanelSizeDisplayProps {
60
+ /** Debug configuration object. / デバッグ設定オブジェクト。 */
61
+ config: DebugConfig;
62
+ panelId: string;
63
+ /** The size and position information of the panel. / パネルのサイズと位置情報。 */
64
+ sizeInfo: {
65
+ width: number;
66
+ height: number;
67
+ x: number;
68
+ y: number;
69
+ minHeight: string;
70
+ maxHeight: string;
71
+ } | undefined;
72
+ /** Callback function for click events on the size info display. / サイズ情報表示のクリックイベントのコールバック関数。 */
73
+ onSizeInfoClick: (e: MouseEvent | TouchEvent) => void;
74
+ }
75
+ /**
76
+ * Displays the size and position of a panel.
77
+ *
78
+ * パネルのサイズと位置を表示します。
79
+ * @param {PanelSizeDisplayProps} props - The props for the component。
80
+ * @returns {JSX.Element | null} The rendered panel size display or null if not enabled。
81
+ */
82
+ export declare const PanelSizeDisplay: ({ config, panelId, sizeInfo, onSizeInfoClick }: PanelSizeDisplayProps) => import("react/jsx-runtime").JSX.Element | null;
83
+ /**
84
+ * A helper function for logging debug messages to the console based on the configured log level.
85
+ *
86
+ * 設定されたログレベルに基づいてデバッグメッセージをコンソールに出力するためのヘルパー関数。
87
+ * @param {DebugConfig} config - The debug configuration object。
88
+ * @param {1 | 2} level - The log level of the message (1 for basic, 2 for verbose)。
89
+ * @param {...any[]} args - The arguments to log to the console。
90
+ */
91
+ export declare const debugLog: (config: DebugConfig, level: 1 | 2, ...args: unknown[]) => void;
92
+ export {};
93
+ //# sourceMappingURL=DebugComponents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugComponents.d.ts","sourceRoot":"","sources":["../../src/drag-drop/DebugComponents.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAiB,UAAU,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE9I;;;;GAIG;AACH,UAAU,eAAe;IACrB,kDAAkD;IAClD,MAAM,EAAE,WAAW,CAAA;IACnB,+DAA+D;IAC/D,SAAS,EAAE,SAAS,CAAA;IACpB,oFAAoF;IACpF,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACzC,6EAA6E;IAC7E,qBAAqB,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACnD,iDAAiD;IACjD,aAAa,EAAE,aAAa,CAAA;IAC5B,uEAAuE;IACvE,cAAc,EAAE,cAAc,CAAA;IAC9B,2DAA2D;IAC3D,UAAU,EAAE,eAAe,CAAA;CAC9B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,2GAA2G,eAAe,mDA0DpJ,CAAA;AAED;;;;GAIG;AACH,UAAU,yBAAyB;IAC/B,kDAAkD;IAClD,MAAM,EAAE,WAAW,CAAA;IACnB,iDAAiD;IACjD,aAAa,EAAE,aAAa,CAAA;IAC5B,+DAA+D;IAC/D,SAAS,EAAE,SAAS,CAAA;CACvB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,sCAAsC,yBAAyB,mDAqBnG,CAAA;AAED;;;;GAIG;AACH,UAAU,qBAAqB;IAC3B,kDAAkD;IAClD,MAAM,EAAE,WAAW,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,sEAAsE;IACtE,QAAQ,EACF;QACI,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,CAAC,EAAE,MAAM,CAAA;QACT,CAAC,EAAE,MAAM,CAAA;QACT,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE,MAAM,CAAA;KACpB,GACD,SAAS,CAAA;IACf,gGAAgG;IAChG,eAAe,EAAE,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU,KAAK,IAAI,CAAA;CACxD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,gDAAgD,qBAAqB,mDA+BrG,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,OAAO,EAAE,SAK7E,CAAA"}
@@ -0,0 +1,31 @@
1
+ import { DebugConfig } from './types';
2
+
3
+ /**
4
+ * Props for the DebugControlPanel component.
5
+ *
6
+ * DebugControlPanel コンポーネントのプロパティ。
7
+ */
8
+ type DebugControlPanelProps = {
9
+ /** The current debug configuration object. / 現在のデバッグ設定オブジェクト。 */
10
+ config: DebugConfig;
11
+ /** Callback function to update the debug configuration. / デバッグ設定を更新するためのコールバック関数。 */
12
+ onConfigChange: (newConfig: DebugConfig) => void;
13
+ /** A flag indicating if the control panel is currently visible. / コントロールパネルが現在表示されているかどうかを示すフラグ。 */
14
+ isVisible: boolean;
15
+ /** Callback function to toggle the visibility of the control panel. / コントロールパネルの表示を切り替えるためのコールバック関数。 */
16
+ onToggleVisibility: () => void;
17
+ };
18
+ /**
19
+ * A floating panel with controls to manage debug settings.
20
+ * It can be toggled to show/hide and provides checkboxes and a slider
21
+ * to dynamically change the debug configuration.
22
+ *
23
+ * デバッグ設定を管理するためのコントロールを持つフローティングパネル。
24
+ * 表示・非表示を切り替えることができ、チェックボックスとスライダーで
25
+ * デバッグ設定を動的に変更できます。
26
+ * @param {DebugControlPanelProps} props - The props for the component.
27
+ * @returns {JSX.Element} The rendered debug control panel.
28
+ */
29
+ export declare const DebugControlPanel: ({ config, onConfigChange, isVisible, onToggleVisibility }: DebugControlPanelProps) => import("react/jsx-runtime").JSX.Element;
30
+ export {};
31
+ //# sourceMappingURL=DebugControlPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugControlPanel.d.ts","sourceRoot":"","sources":["../../src/drag-drop/DebugControlPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C;;;;GAIG;AACH,KAAK,sBAAsB,GAAG;IAC1B,iEAAiE;IACjE,MAAM,EAAE,WAAW,CAAA;IACnB,qFAAqF;IACrF,cAAc,EAAE,CAAC,SAAS,EAAE,WAAW,KAAK,IAAI,CAAA;IAChD,oGAAoG;IACpG,SAAS,EAAE,OAAO,CAAA;IAClB,wGAAwG;IACxG,kBAAkB,EAAE,MAAM,IAAI,CAAA;CACjC,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,GAAI,2DAA2D,sBAAsB,4CAiKlH,CAAA"}
@@ -0,0 +1,71 @@
1
+ import { default as React } from 'react';
2
+ import { DebugConfig, DragOverPosition, OriginalPanelPosition } from './types';
3
+
4
+ /**
5
+ * Props for the InsertPlaceholder component.
6
+ *
7
+ * InsertPlaceholder コンポーネントのプロパティ。
8
+ */
9
+ interface InsertPlaceholderProps {
10
+ /** The index where the placeholder appears in the column. / カラム内でのプレースホルダーのインデックス。 */
11
+ index: number;
12
+ /** The index of the column containing the placeholder. / プレースホルダーが含まれるカラムのインデックス。 */
13
+ columnIndex: number;
14
+ /** A flag indicating if a drag operation is in progress. / ドラッグ操作が進行中かどうかを示すフラグ。 */
15
+ isDragging: boolean;
16
+ /** The position where the dragged panel is hovering over. / ドラッグ中のパネルがホバーしている位置。 */
17
+ dragOverPosition: DragOverPosition | null;
18
+ /** The original position of the panel being dragged. / ドラッグされているパネルの元の位置。 */
19
+ originalPosition: OriginalPanelPosition | null;
20
+ /** Callback when a dragged item enters the placeholder. / ドラッグアイテムがプレースホルダーに入ったときのコールバック。 */
21
+ onDragEnter: (columnIndex: number, insertIndex: number) => void;
22
+ /** Callback when a dragged item leaves the placeholder. / ドラッグアイテムがプレースホルダーから離れたときのコールバック。 */
23
+ onDragLeave: (e?: React.DragEvent, columnIndex?: number, insertIndex?: number) => void;
24
+ /** Debug configuration object. / デバッグ設定オブジェクト。 */
25
+ config: DebugConfig;
26
+ /** State for custom (non-HTML5) drag handling. / カスタム(非HTML5)ドラッグ処理の状態。 */
27
+ customDrag?: {
28
+ isActive: boolean;
29
+ panelId: string;
30
+ };
31
+ }
32
+ /**
33
+ * A component that renders a placeholder to indicate where a dragged panel can be dropped.
34
+ * It highlights when a panel is dragged over it and is hidden when no drag is active.
35
+ * Features smooth fade-in/fade-out animations for a polished user experience.
36
+ *
37
+ * ドラッグされたパネルをドロップできる場所を示すプレースホルダーをレンダリングするコンポーネント。
38
+ * パネルが上にドラッグされるとハイライトされ、ドラッグがアクティブでないときは非表示になります。
39
+ * 洗練されたユーザーエクスペリエンスのために、滑らかなフェードイン・フェードアウトアニメーションを特徴とします。
40
+ */
41
+ export declare const InsertPlaceholder: React.NamedExoticComponent<InsertPlaceholderProps>;
42
+ /**
43
+ * Props for the DropZoneDebugOverlay component.
44
+ *
45
+ * DropZoneDebugOverlay コンポーネントのプロパティ。
46
+ */
47
+ interface DropZoneDebugOverlayProps {
48
+ /** The index of the column this overlay is for. / このオーバーレイが対象とするカラムのインデックス。 */
49
+ columnIndex: number;
50
+ /** A flag indicating if a drag operation is in progress. / ドラッグ操作が進行中かどうかを示すフラグ。 */
51
+ isDragging: boolean;
52
+ /** The position where the dragged panel is hovering over. / ドラッグ中のパネルがホバーしている位置。 */
53
+ dragOverPosition: DragOverPosition | null;
54
+ /** The child elements to be rendered within the overlay. / オーバーレイ内にレンダリングされる子要素。 */
55
+ children: React.ReactNode;
56
+ /** Debug configuration object. / デバッグ設定オブジェクト。 */
57
+ config: DebugConfig;
58
+ }
59
+ /**
60
+ * A component that renders a debug overlay over a drop zone (a column).
61
+ * It shows the boundaries and state (active/idle) of the drop zone during a drag operation。
62
+ *
63
+ * ドロップゾーン(カラム)の上にデバッグオーバーレイをレンダリングするコンポーネント。
64
+ * ドラッグ操作中にドロップゾーンの境界と状態(アクティブ/アイドル)を表示します。
65
+ */
66
+ export declare const DropZoneDebugOverlay: {
67
+ ({ columnIndex, isDragging, dragOverPosition, children, config }: DropZoneDebugOverlayProps): import("react/jsx-runtime").JSX.Element;
68
+ displayName: string;
69
+ };
70
+ export {};
71
+ //# sourceMappingURL=DebugOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugOverlay.d.ts","sourceRoot":"","sources":["../../src/drag-drop/DebugOverlay.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAsC,MAAM,OAAO,CAAA;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEnF;;;;GAIG;AACH,UAAU,sBAAsB;IAC5B,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAA;IACb,qFAAqF;IACrF,WAAW,EAAE,MAAM,CAAA;IACnB,oFAAoF;IACpF,UAAU,EAAE,OAAO,CAAA;IACnB,oFAAoF;IACpF,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACzC,6EAA6E;IAC7E,gBAAgB,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAC9C,6FAA6F;IAC7F,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/D,8FAA8F;IAC9F,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACtF,kDAAkD;IAClD,MAAM,EAAE,WAAW,CAAA;IACnB,2EAA2E;IAC3E,UAAU,CAAC,EAAE;QACT,QAAQ,EAAE,OAAO,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;KAClB,CAAA;CACJ;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,oDAoF5B,CAAA;AAIF;;;;GAIG;AACH,UAAU,yBAAyB;IAC/B,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAA;IACnB,oFAAoF;IACpF,UAAU,EAAE,OAAO,CAAA;IACnB,oFAAoF;IACpF,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACzC,oFAAoF;IACpF,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,kDAAkD;IAClD,MAAM,EAAE,WAAW,CAAA;CACtB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB;sEAAqE,yBAAyB;;CAqF9H,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { ReactNode } from 'react';
2
+ import { DebugConfig } from './types';
3
+
4
+ export interface ResizeHandleProps {
5
+ columnId: string;
6
+ onResizeStart: (columnId: string, startX: number) => void;
7
+ onResize: (currentX: number) => void;
8
+ onResizeEnd: () => void;
9
+ isResizing?: boolean;
10
+ position?: "left" | "right";
11
+ className?: string;
12
+ debug?: DebugConfig;
13
+ }
14
+ export declare const ResizeHandle: ({ columnId, onResizeStart, onResize, onResizeEnd, isResizing, position, className, debug }: ResizeHandleProps) => import("react/jsx-runtime").JSX.Element;
15
+ export interface ResizableColumnProps {
16
+ columnId: string;
17
+ width: number;
18
+ minWidth?: number;
19
+ maxWidth?: number;
20
+ onResizeStart: (columnId: string, startX: number) => void;
21
+ onResize: (currentX: number) => void;
22
+ onResizeEnd: () => void;
23
+ isResizing?: boolean;
24
+ resizable?: boolean;
25
+ className?: string;
26
+ debug?: DebugConfig;
27
+ children: ReactNode;
28
+ }
29
+ export declare const ResizableColumn: ({ columnId, width, minWidth, maxWidth, onResizeStart, onResize, onResizeEnd, isResizing, resizable, className, debug, children }: ResizableColumnProps) => import("react/jsx-runtime").JSX.Element;
30
+ //# sourceMappingURL=ResizeHandle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResizeHandle.d.ts","sourceRoot":"","sources":["../../src/drag-drop/ResizeHandle.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAsE,MAAM,OAAO,CAAA;AAE9I,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,qBAAqB,CAAA;AAE5B,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,WAAW,CAAA;CACtB;AAED,eAAO,MAAM,YAAY,GAAI,4FAAwH,iBAAiB,4CA0JrK,CAAA;AAGD,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,QAAQ,EAAE,SAAS,CAAA;CACtB;AAED,eAAO,MAAM,eAAe,GAAI,kIAAuK,oBAAoB,4CA2B1N,CAAA"}
@@ -0,0 +1,9 @@
1
+ export interface ResponsiveControlProps {
2
+ isResponsiveMode: boolean;
3
+ responsiveColumnCount: number;
4
+ currentColumnCount: number;
5
+ screenWidth: number;
6
+ onToggleResponsive: () => void;
7
+ }
8
+ export declare const ResponsiveControl: ({ isResponsiveMode, responsiveColumnCount, currentColumnCount, screenWidth, onToggleResponsive }: ResponsiveControlProps) => import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=ResponsiveControl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponsiveControl.d.ts","sourceRoot":"","sources":["../../src/drag-drop/ResponsiveControl.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACnC,gBAAgB,EAAE,OAAO,CAAA;IACzB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,EAAE,MAAM,IAAI,CAAA;CACjC;AAED,eAAO,MAAM,iBAAiB,GAAI,kGAAkG,sBAAsB,4CAsBzJ,CAAA"}
@@ -0,0 +1,47 @@
1
+ import { DebugConfig } from '../types';
2
+
3
+ export interface ColumnConfig {
4
+ id: string;
5
+ title: string;
6
+ minWidth?: number;
7
+ maxWidth?: number;
8
+ initialWidth?: number;
9
+ resizable?: boolean;
10
+ collapsible?: boolean;
11
+ }
12
+ export interface ColumnLayoutState {
13
+ columns: ColumnConfig[];
14
+ columnWidths: Record<string, number>;
15
+ isResizing: boolean;
16
+ resizingColumn: string | null;
17
+ columnPanels: Record<string, string[]>;
18
+ showInsertPlaceholders: boolean;
19
+ }
20
+ export interface UseColumnLayoutProps {
21
+ initialColumns: ColumnConfig[];
22
+ initialPanels: Record<string, string[]>;
23
+ debug?: DebugConfig;
24
+ onLayoutChange?: (layout: ColumnLayoutState) => void;
25
+ }
26
+ export interface UseColumnLayoutReturn {
27
+ layoutState: ColumnLayoutState;
28
+ addColumn: (config: ColumnConfig, position?: number) => void;
29
+ removeColumn: (columnId: string) => void;
30
+ moveColumn: (fromIndex: number, toIndex: number) => void;
31
+ startResize: (columnId: string, startX: number) => void;
32
+ handleResize: (currentX: number) => void;
33
+ endResize: () => void;
34
+ setColumnWidth: (columnId: string, width: number) => void;
35
+ resetColumnWidths: () => void;
36
+ movePanel: (panelId: string, fromColumn: string, toColumn: string, insertIndex: number) => void;
37
+ addPanel: (panelId: string, columnId: string, insertIndex?: number) => void;
38
+ removePanel: (panelId: string) => void;
39
+ updateColumnCount: (count: number) => void;
40
+ autoBalanceColumns: () => void;
41
+ getColumnById: (columnId: string) => ColumnConfig | undefined;
42
+ getTotalWidth: () => number;
43
+ getColumnElement: (columnId: string) => HTMLElement | null;
44
+ setShowInsertPlaceholders: (show: boolean) => void;
45
+ }
46
+ export declare const useColumnLayout: ({ initialColumns, initialPanels, debug, onLayoutChange }: UseColumnLayoutProps) => UseColumnLayoutReturn;
47
+ //# sourceMappingURL=useColumnLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnLayout.d.ts","sourceRoot":"","sources":["../../../src/drag-drop/hooks/useColumnLayout.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,UAAU,EAAE,OAAO,CAAA;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACtC,sBAAsB,EAAE,OAAO,CAAA;CAClC;AAED,MAAM,WAAW,oBAAoB;IACjC,cAAc,EAAE,YAAY,EAAE,CAAA;IAC9B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACvC,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAA;CACvD;AAED,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,iBAAiB,CAAA;IAC9B,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5D,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACxD,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACvD,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzD,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/F,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3E,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAA;IAC7D,aAAa,EAAE,MAAM,MAAM,CAAA;IAC3B,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,CAAA;IAC1D,yBAAyB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACrD;AAED,eAAO,MAAM,eAAe,GAAI,0DAA+D,oBAAoB,KAAG,qBAoZrH,CAAA"}