@byeolnaerim/flex-layout 0.0.9 → 0.0.10
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/dist/flex-layout/components/FlexLayout.cjs +1 -110
- package/dist/flex-layout/components/FlexLayout.js +1 -85
- package/dist/flex-layout/components/FlexLayoutContainer.cjs +1 -262
- package/dist/flex-layout/components/FlexLayoutContainer.js +1 -232
- package/dist/flex-layout/components/FlexLayoutIFramePane.cjs +1 -68
- package/dist/flex-layout/components/FlexLayoutIFramePane.js +1 -44
- package/dist/flex-layout/components/FlexLayoutResizePanel.cjs +1 -246
- package/dist/flex-layout/components/FlexLayoutResizePanel.js +1 -216
- package/dist/flex-layout/components/FlexLayoutSplitScreen.cjs +1 -1252
- package/dist/flex-layout/components/FlexLayoutSplitScreen.js +1 -1236
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.cjs +1 -532
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.js +1 -509
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.cjs +1 -55
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.js +1 -25
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.cjs +1 -63
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.js +1 -33
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.cjs +1 -53
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.js +1 -23
- package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.cjs +1 -133
- package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.js +1 -107
- package/dist/flex-layout/components/FlexLayoutStickyBox.cjs +1 -245
- package/dist/flex-layout/components/FlexLayoutStickyBox.js +1 -229
- package/dist/flex-layout/components/index.cjs +1 -57
- package/dist/flex-layout/components/index.js +1 -17
- package/dist/flex-layout/hooks/index.cjs +1 -25
- package/dist/flex-layout/hooks/index.js +1 -3
- package/dist/flex-layout/hooks/useDrag.cjs +1 -289
- package/dist/flex-layout/hooks/useDrag.d.ts +15 -0
- package/dist/flex-layout/hooks/useDrag.js +1 -258
- package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.cjs +1 -139
- package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.js +1 -118
- package/dist/flex-layout/hooks/useListPaging.cjs +1 -212
- package/dist/flex-layout/hooks/useListPaging.js +1 -191
- package/dist/flex-layout/hooks/useSizes.cjs +1 -126
- package/dist/flex-layout/hooks/useSizes.js +1 -101
- package/dist/flex-layout/index.cjs +1 -31
- package/dist/flex-layout/index.js +1 -6
- package/dist/flex-layout/providers/FlexLayoutContext.cjs +1 -49
- package/dist/flex-layout/providers/FlexLayoutContext.js +1 -24
- package/dist/flex-layout/providers/FlexLayoutHooks.cjs +1 -276
- package/dist/flex-layout/providers/FlexLayoutHooks.d.ts +5 -1
- package/dist/flex-layout/providers/FlexLayoutHooks.js +1 -263
- package/dist/flex-layout/providers/index.cjs +1 -23
- package/dist/flex-layout/providers/index.js +1 -2
- package/dist/flex-layout/store/FlexLayoutContainerStore.cjs +1 -257
- package/dist/flex-layout/store/FlexLayoutContainerStore.js +1 -206
- package/dist/flex-layout/store/index.cjs +1 -23
- package/dist/flex-layout/store/index.js +1 -2
- package/dist/flex-layout/styles/FlexLayout.module.css +473 -416
- package/dist/flex-layout/types/FlexDirectionTypes.cjs +1 -17
- package/dist/flex-layout/types/FlexDirectionTypes.js +0 -1
- package/dist/flex-layout/types/FlexLayoutTypes.cjs +1 -17
- package/dist/flex-layout/types/FlexLayoutTypes.js +0 -1
- package/dist/flex-layout/utils/FlexLayoutUtils.cjs +1 -245
- package/dist/flex-layout/utils/FlexLayoutUtils.js +1 -211
- package/dist/flex-layout/utils/index.cjs +1 -23
- package/dist/flex-layout/utils/index.js +1 -2
- package/dist/index.cjs +1 -23
- package/dist/index.js +1 -2
- package/dist/types/css.d.cjs +0 -1
- package/dist/types/css.d.js +0 -1
- package/package.json +116 -113
- package/dist/flex-layout/components/FlexLayout.cjs.map +0 -1
- package/dist/flex-layout/components/FlexLayout.js.map +0 -1
- package/dist/flex-layout/components/FlexLayoutContainer.cjs.map +0 -1
- package/dist/flex-layout/components/FlexLayoutContainer.js.map +0 -1
- package/dist/flex-layout/components/FlexLayoutIFramePane.cjs.map +0 -1
- package/dist/flex-layout/components/FlexLayoutIFramePane.js.map +0 -1
- package/dist/flex-layout/components/FlexLayoutResizePanel.cjs.map +0 -1
- package/dist/flex-layout/components/FlexLayoutResizePanel.js.map +0 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreen.cjs.map +0 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreen.js.map +0 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.cjs.map +0 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBox.js.map +0 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.cjs.map +0 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.js.map +0 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.cjs.map +0 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.js.map +0 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.cjs.map +0 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.js.map +0 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.cjs.map +0 -1
- package/dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.js.map +0 -1
- package/dist/flex-layout/components/FlexLayoutStickyBox.cjs.map +0 -1
- package/dist/flex-layout/components/FlexLayoutStickyBox.js.map +0 -1
- package/dist/flex-layout/components/index.cjs.map +0 -1
- package/dist/flex-layout/components/index.js.map +0 -1
- package/dist/flex-layout/hooks/index.cjs.map +0 -1
- package/dist/flex-layout/hooks/index.js.map +0 -1
- package/dist/flex-layout/hooks/useDrag.cjs.map +0 -1
- package/dist/flex-layout/hooks/useDrag.js.map +0 -1
- package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.cjs.map +0 -1
- package/dist/flex-layout/hooks/useFlexLayoutSplitScreen.js.map +0 -1
- package/dist/flex-layout/hooks/useListPaging.cjs.map +0 -1
- package/dist/flex-layout/hooks/useListPaging.js.map +0 -1
- package/dist/flex-layout/hooks/useSizes.cjs.map +0 -1
- package/dist/flex-layout/hooks/useSizes.js.map +0 -1
- package/dist/flex-layout/index.cjs.map +0 -1
- package/dist/flex-layout/index.js.map +0 -1
- package/dist/flex-layout/providers/FlexLayoutContext.cjs.map +0 -1
- package/dist/flex-layout/providers/FlexLayoutContext.js.map +0 -1
- package/dist/flex-layout/providers/FlexLayoutHooks.cjs.map +0 -1
- package/dist/flex-layout/providers/FlexLayoutHooks.js.map +0 -1
- package/dist/flex-layout/providers/index.cjs.map +0 -1
- package/dist/flex-layout/providers/index.js.map +0 -1
- package/dist/flex-layout/store/FlexLayoutContainerStore.cjs.map +0 -1
- package/dist/flex-layout/store/FlexLayoutContainerStore.js.map +0 -1
- package/dist/flex-layout/store/index.cjs.map +0 -1
- package/dist/flex-layout/store/index.js.map +0 -1
- package/dist/flex-layout/types/FlexDirectionTypes.cjs.map +0 -1
- package/dist/flex-layout/types/FlexDirectionTypes.js.map +0 -1
- package/dist/flex-layout/types/FlexLayoutTypes.cjs.map +0 -1
- package/dist/flex-layout/types/FlexLayoutTypes.js.map +0 -1
- package/dist/flex-layout/utils/FlexLayoutUtils.cjs.map +0 -1
- package/dist/flex-layout/utils/FlexLayoutUtils.js.map +0 -1
- package/dist/flex-layout/utils/index.cjs.map +0 -1
- package/dist/flex-layout/utils/index.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/metafile-cjs.json +0 -1
- package/dist/metafile-esm.json +0 -1
- package/dist/types/css.d.cjs.map +0 -1
- package/dist/types/css.d.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/providers/FlexLayoutHooks.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport {\r\n\tflexContainerStore,\r\n\tgetLayoutInfos,\r\n\tgetResizePanelRef,\r\n} from \"../store/FlexLayoutContainerStore\";\r\nimport {\r\n\tcloseFlex,\r\n\tgetGrow,\r\n\tmathGrow,\r\n\topenFlex,\r\n} from \"../utils/FlexLayoutUtils\";\r\n\r\nimport {\r\n\tbuffer,\r\n\tdebounceTime,\r\n\tEMPTY,\r\n\tfilter,\r\n\tfromEvent,\r\n\tmap,\r\n\tSubject,\r\n\tswitchMap,\r\n} from \"rxjs\";\r\nconst g = globalThis as any;\r\ng.__FLEX_SUBJECTS__ ??= { openClose: {}, spread: {} };\r\n\r\nexport type SubjectMap<T> = Record<string, Subject<T>>;\r\n\r\n// 컨테이너 상태 타입 정의\r\ninterface ContainerStateRequest {\r\n\tmode: \"toggle\" | \"open\" | \"close\";\r\n\tinitOpenState?: boolean;\r\n\tonOpen?: () => void;\r\n\tonClose?: () => void;\r\n\topenOption?: {\r\n\t\tisPrevSizeOpen?: boolean;\r\n\t\tisResize?: boolean;\r\n\t\topenGrowImportant?: number;\r\n\t};\r\n\tcloseOption?: { isResize?: boolean; isDsiabledResizePanel?: boolean };\r\n}\r\n\r\ninterface ContainerState {\r\n\tisOpen: boolean;\r\n\ttargetContainer: HTMLElement;\r\n\tgrow: number;\r\n}\r\nexport const containerOpenCloseSubjectMap: SubjectMap<ContainerStateRequest> =\r\n\tg.__FLEX_SUBJECTS__.openClose;\r\nexport const containerSpreadSubjectMap: SubjectMap<ContainerState> =\r\n\tg.__FLEX_SUBJECTS__.spread;\r\n\r\n// export const containerOpenCloseSubjectMap: SubjectMap<ContainerStateRequest> = (\r\n// Object.keys({}) as Array<string>\r\n// ).reduce((total, key) => {\r\n// total[key] = new Subject<ContainerStateRequest>();\r\n// return total;\r\n// }, {} as SubjectMap<ContainerStateRequest>);\r\n\r\n// export const containerSpreadSubjectMap: SubjectMap<ContainerState> = (\r\n// Object.keys({}) as Array<string>\r\n// ).reduce((total, key) => {\r\n// total[key] = new Subject<ContainerState>();\r\n// return total;\r\n// }, {} as SubjectMap<ContainerState>);\r\n\r\nexport const ContainerOpenCloseProvider = ({\r\n\tlayoutName,\r\n\tcontainerName,\r\n\tsizeName,\r\n}: {\r\n\tlayoutName: string;\r\n\tcontainerName: string;\r\n\tsizeName: \"width\" | \"height\";\r\n}) => {\r\n\t// SubjectMap에 중복 체크 후 Subject 추가\r\n\tif (!containerOpenCloseSubjectMap[containerName]) {\r\n\t\tcontainerOpenCloseSubjectMap[containerName] =\r\n\t\t\tnew Subject<ContainerStateRequest>();\r\n\t}\r\n\tif (!containerSpreadSubjectMap[containerName]) {\r\n\t\tcontainerSpreadSubjectMap[containerName] =\r\n\t\t\tnew Subject<ContainerState>();\r\n\t}\r\n\r\n\tconst [containers, setContainers] = useState<HTMLElement[]>([]);\r\n\tconst [container, setContainer] = useState<HTMLElement>();\r\n\r\n\tuseEffect(() => {\r\n\t\t// 특정 layoutName과 containerName을 통해 ref를 구독\r\n\t\tconst subscription = getLayoutInfos(layoutName as string).subscribe(\r\n\t\t\t(layout) => {\r\n\t\t\t\tif (\r\n\t\t\t\t\t!layout ||\r\n\t\t\t\t\t!layout.container[containerName] ||\r\n\t\t\t\t\t!layout.container[containerName].current\r\n\t\t\t\t)\r\n\t\t\t\t\treturn;\r\n\t\t\t\tsetContainers(\r\n\t\t\t\t\tObject.values(layout.container)\r\n\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t(e): e is { current: HTMLElement } =>\r\n\t\t\t\t\t\t\t\te.current !== null,\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.map((e) => e.current),\r\n\t\t\t\t);\r\n\t\t\t\tsetContainer(layout.container[containerName].current);\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\t// 구독 해제\r\n\t\treturn () => subscription.unsubscribe();\r\n\t}, [containerName, layoutName]);\r\n\tuseEffect(() => {\r\n\t\tconst styleName = `${sizeName.charAt(0).toUpperCase() + sizeName.substring(1)}`;\r\n\t\tconst clientSize = (\"client\" + styleName) as\r\n\t\t\t| \"clientWidth\"\r\n\t\t\t| \"clientHeight\";\r\n\t\tconst outerSize = (\"outer\" + styleName) as \"outerWidth\" | \"outerHeight\";\r\n\t\tconst maxSize = (\"max\" + styleName) as \"maxWidth\" | \"maxHeight\";\r\n\t\tconst subscribe = containerOpenCloseSubjectMap[containerName].subscribe(\r\n\t\t\t({\r\n\t\t\t\tmode,\r\n\t\t\t\tinitOpenState: isOpenState,\r\n\t\t\t\tonClose,\r\n\t\t\t\tonOpen,\r\n\t\t\t\topenOption = {},\r\n\t\t\t\tcloseOption = {},\r\n\t\t\t}) => {\r\n\t\t\t\tif (!container || containers.length === 0) return;\r\n\t\t\t\tconst currentGrow = getGrow(container);\r\n\t\t\t\tconst styleMap = window.getComputedStyle(container);\r\n\t\t\t\tconst maxSizeGrow = mathGrow(\r\n\t\t\t\t\tparseInt(styleMap[maxSize]),\r\n\t\t\t\t\t(container.parentElement &&\r\n\t\t\t\t\t\tcontainer.parentElement[clientSize]) ||\r\n\t\t\t\t\t\twindow[outerSize],\r\n\t\t\t\t\tcontainers.length,\r\n\t\t\t\t);\r\n\t\t\t\tconst open = () =>\r\n\t\t\t\t\topenFlex(container, containers, {\r\n\t\t\t\t\t\tsizeName,\r\n\t\t\t\t\t\t...(isNaN(maxSizeGrow)\r\n\t\t\t\t\t\t\t? {}\r\n\t\t\t\t\t\t\t: {\r\n\t\t\t\t\t\t\t\t\topenGrowImportant: maxSizeGrow,\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t...openOption,\r\n\t\t\t\t\t}).then((openTargetGrow) => {\r\n\t\t\t\t\t\tif (onOpen) onOpen();\r\n\t\t\t\t\t\tcontainerSpreadSubjectMap[containerName].next({\r\n\t\t\t\t\t\t\tisOpen: true,\r\n\t\t\t\t\t\t\tgrow: openTargetGrow as any,\r\n\t\t\t\t\t\t\ttargetContainer: container,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\tconst close = () =>\r\n\t\t\t\t\tcloseFlex(container, containers, {\r\n\t\t\t\t\t\tsizeName,\r\n\t\t\t\t\t\t...closeOption,\r\n\t\t\t\t\t}).then(() => {\r\n\t\t\t\t\t\tif (onClose) onClose();\r\n\t\t\t\t\t\tcontainerSpreadSubjectMap[containerName].next({\r\n\t\t\t\t\t\t\tisOpen: false,\r\n\t\t\t\t\t\t\tgrow: 0,\r\n\t\t\t\t\t\t\ttargetContainer: container,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\tif (mode === \"toggle\") {\r\n\t\t\t\t\tif (currentGrow === 0) {\r\n\t\t\t\t\t\topen();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tclose();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (mode === \"open\") {\r\n\t\t\t\t\tif (currentGrow === 0) {\r\n\t\t\t\t\t\topen();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (mode === \"close\") {\r\n\t\t\t\t\tif (currentGrow !== 0) {\r\n\t\t\t\t\t\tclose();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\treturn () => {\r\n\t\t\tsubscribe.unsubscribe();\r\n\t\t};\r\n\t}, [containerName, container, containers, sizeName]);\r\n\r\n\treturn null;\r\n};\r\n\r\nexport const useContainers = (layoutName: string) => {\r\n\tconst [containers, setContainers] = useState<HTMLElement[]>([]);\r\n\r\n\tuseEffect(() => {\r\n\t\t// 특정 layoutName과 containerName을 통해 ref를 구독\r\n\t\tconst subscription = getLayoutInfos(layoutName as string).subscribe(\r\n\t\t\t(layout) => {\r\n\t\t\t\tsetContainers(\r\n\t\t\t\t\tObject.values(layout.container)\r\n\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t(e): e is { current: HTMLElement } =>\r\n\t\t\t\t\t\t\t\te.current !== null,\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.map((e) => e.current),\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\t// 구독 해제\r\n\t\treturn () => subscription.unsubscribe();\r\n\t}, [layoutName]);\r\n\treturn containers;\r\n};\r\n\r\nexport const useLayoutName = (containerName: string) => {\r\n\tconst [layoutName, setLayoutName] = useState<string>();\r\n\tuseEffect(() => {\r\n\t\tconst subscribe = flexContainerStore\r\n\t\t\t.pipe(\r\n\t\t\t\tmap(\r\n\t\t\t\t\t(layouts) =>\r\n\t\t\t\t\t\tObject.entries(layouts)\r\n\t\t\t\t\t\t\t.filter(([_, v]) => v[containerName])\r\n\t\t\t\t\t\t\t.map(([k]) => k)[0] as string, // 첫 번째 결과 가져오기\r\n\t\t\t\t),\r\n\t\t\t)\r\n\t\t\t.subscribe(setLayoutName);\r\n\r\n\t\t// 컴포넌트 언마운트 시 구독 해제\r\n\t\treturn () => subscribe.unsubscribe();\r\n\t}, [containerName]);\r\n\r\n\treturn layoutName;\r\n};\r\n\r\nexport const useDecompositionLayout = ({\r\n\tlayoutName: initialLayoutName,\r\n\tcontainerName,\r\n}: {\r\n\tlayoutName?: string;\r\n\tcontainerName: string;\r\n}) => {\r\n\tconst derivedLayoutName = useLayoutName(containerName);\r\n\tconst finalLayoutName = initialLayoutName || derivedLayoutName;\r\n\r\n\tconst [containers, setContainers] = useState<HTMLElement[]>([]);\r\n\tconst [container, setContainer] = useState<HTMLElement>();\r\n\tconst [resizePanel, setResizePanel] = useState<HTMLElement>();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!finalLayoutName) return; // layoutName이 준비될 때까지 대기\r\n\t\t// 특정 layoutName과 containerName을 통해 ref를 구독\r\n\t\tconst subscription = getLayoutInfos(finalLayoutName).subscribe(\r\n\t\t\t(layout) => {\r\n\t\t\t\tif (!layout) return;\r\n\t\t\t\tsetContainers(\r\n\t\t\t\t\tObject.values(layout.container)\r\n\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t(e): e is { current: HTMLElement } =>\r\n\t\t\t\t\t\t\t\te.current !== null,\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.map((e) => e.current),\r\n\t\t\t\t);\r\n\t\t\t\tif (\r\n\t\t\t\t\tcontainerName &&\r\n\t\t\t\t\tlayout.container[containerName] &&\r\n\t\t\t\t\tlayout.container[containerName].current\r\n\t\t\t\t) {\r\n\t\t\t\t\tsetContainer(layout.container[containerName].current);\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tlayout.resizePanel[containerName] &&\r\n\t\t\t\t\t\tlayout.resizePanel[containerName].current\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tsetResizePanel(\r\n\t\t\t\t\t\t\tlayout.resizePanel[containerName].current,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\t// 구독 해제\r\n\t\treturn () => subscription.unsubscribe();\r\n\t}, [containerName, finalLayoutName]);\r\n\r\n\treturn { layout: containers, container, resizePanel };\r\n};\r\n\r\nexport const useContainerSize = (containerName: string) => {\r\n\tconst { layout, container, resizePanel } = useDecompositionLayout({\r\n\t\tcontainerName,\r\n\t});\r\n\tconst [size, setSize] = useState<{ width: number; height: number }>();\r\n\tuseEffect(() => {\r\n\t\tif (!container) return;\r\n\t\tconst observer = new ResizeObserver((entries) => {\r\n\t\t\tfor (const entry of entries) {\r\n\t\t\t\tsetSize({\r\n\t\t\t\t\twidth: entry.contentRect.width,\r\n\t\t\t\t\theight: entry.contentRect.height,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\tobserver.observe(container);\r\n\t\treturn () => observer.disconnect();\r\n\t}, [container]);\r\n\treturn { size };\r\n};\r\n\r\nexport const useDoubleClick = (\r\n\tcontainerName: string,\r\n\topt: ContainerStateRequest,\r\n) => {\r\n\tconst [isOpen, setIsOpen] = useState<boolean>();\r\n\tconst [isDoubleClick, setIsDoubleClick] = useState<boolean>();\r\n\tuseEffect(() => {\r\n\t\tconst resizePanelClickEvent = getResizePanelRef({\r\n\t\t\tcontainerName,\r\n\t\t}).pipe(\r\n\t\t\tfilter(\r\n\t\t\t\t(resizePanelref) =>\r\n\t\t\t\t\tresizePanelref != undefined &&\r\n\t\t\t\t\tresizePanelref.current != undefined,\r\n\t\t\t),\r\n\t\t\t//take(1),\r\n\t\t\tswitchMap((resizePanelref) => {\r\n\t\t\t\tif (!resizePanelref || !resizePanelref.current) return EMPTY;\r\n\t\t\t\treturn fromEvent(resizePanelref.current, \"click\");\r\n\t\t\t}),\r\n\t\t);\r\n\t\tconst subscribe = resizePanelClickEvent\r\n\t\t\t.pipe(\r\n\t\t\t\tbuffer(resizePanelClickEvent.pipe(debounceTime(500))),\r\n\t\t\t\tfilter((clickEventArray) => clickEventArray.length >= 2),\r\n\t\t\t\tmap((events) => {\r\n\t\t\t\t\tcontainerOpenCloseSubjectMap[containerName].next({\r\n\t\t\t\t\t\t...opt,\r\n\t\t\t\t\t\topenOption: {\r\n\t\t\t\t\t\t\t...opt.openOption,\r\n\t\t\t\t\t\t\tisPrevSizeOpen: false,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tonClose: () => {\r\n\t\t\t\t\t\t\tif (opt.onClose) opt.onClose();\r\n\t\t\t\t\t\t\tsetIsOpen(false);\r\n\t\t\t\t\t\t\tsetIsDoubleClick(true);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tonOpen: () => {\r\n\t\t\t\t\t\t\tif (opt.onOpen) opt.onOpen();\r\n\t\t\t\t\t\t\tsetIsOpen(true);\r\n\t\t\t\t\t\t\tsetIsDoubleClick(true);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t}),\r\n\t\t\t)\r\n\t\t\t.subscribe();\r\n\t\treturn () => {\r\n\t\t\tsubscribe.unsubscribe();\r\n\t\t};\r\n\t}, [containerName]);\r\n\treturn { isOpen, isDoubleClick, setIsDoubleClick };\r\n};\r\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/providers/FlexLayoutHooks.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport {\r\n\tflexContainerStore,\r\n\tgetLayoutInfos,\r\n\tgetResizePanelRef,\r\n} from \"../store/FlexLayoutContainerStore\";\r\nimport {\r\n\tcloseFlex,\r\n\tgetGrow,\r\n\tmathGrow,\r\n\topenFlex,\r\n} from \"../utils/FlexLayoutUtils\";\r\n\r\nimport {\r\n\tbuffer,\r\n\tdebounceTime,\r\n\tEMPTY,\r\n\tfilter,\r\n\tfromEvent,\r\n\tmap,\r\n\tSubject,\r\n\tswitchMap,\r\n} from \"rxjs\";\r\nconst g = globalThis as any;\r\ng.__FLEX_SUBJECTS__ ??= { openClose: {}, spread: {} };\r\n\r\nexport type SubjectMap<T> = Record<string, Subject<T>>;\r\n\r\n// 컨테이너 상태 타입 정의\r\ninterface ContainerStateRequest {\r\n\tmode: \"toggle\" | \"open\" | \"close\";\r\n\tinitOpenState?: boolean;\r\n\tonOpen?: () => void;\r\n\tonClose?: () => void;\r\n\topenOption?: {\r\n\t\tisPrevSizeOpen?: boolean;\r\n\t\tisResize?: boolean;\r\n\t\topenGrowImportant?: number;\r\n\t};\r\n\tcloseOption?: { isResize?: boolean; isDsiabledResizePanel?: boolean };\r\n}\r\n\r\ninterface ContainerState {\r\n\tisOpen: boolean;\r\n\ttargetContainer: HTMLElement;\r\n\tgrow: number;\r\n}\r\nexport const containerOpenCloseSubjectMap: SubjectMap<ContainerStateRequest> =\r\n\tg.__FLEX_SUBJECTS__.openClose;\r\nexport const containerSpreadSubjectMap: SubjectMap<ContainerState> =\r\n\tg.__FLEX_SUBJECTS__.spread;\r\n\r\n// export const containerOpenCloseSubjectMap: SubjectMap<ContainerStateRequest> = (\r\n// Object.keys({}) as Array<string>\r\n// ).reduce((total, key) => {\r\n// total[key] = new Subject<ContainerStateRequest>();\r\n// return total;\r\n// }, {} as SubjectMap<ContainerStateRequest>);\r\n\r\n// export const containerSpreadSubjectMap: SubjectMap<ContainerState> = (\r\n// Object.keys({}) as Array<string>\r\n// ).reduce((total, key) => {\r\n// total[key] = new Subject<ContainerState>();\r\n// return total;\r\n// }, {} as SubjectMap<ContainerState>);\r\n\r\nexport const ContainerOpenCloseProvider = ({\r\n\tlayoutName,\r\n\tcontainerName,\r\n\tsizeName,\r\n}: {\r\n\tlayoutName: string;\r\n\tcontainerName: string;\r\n\tsizeName: \"width\" | \"height\";\r\n}) => {\r\n\t// SubjectMap에 중복 체크 후 Subject 추가\r\n\tif (!containerOpenCloseSubjectMap[containerName]) {\r\n\t\tcontainerOpenCloseSubjectMap[containerName] =\r\n\t\t\tnew Subject<ContainerStateRequest>();\r\n\t}\r\n\tif (!containerSpreadSubjectMap[containerName]) {\r\n\t\tcontainerSpreadSubjectMap[containerName] =\r\n\t\t\tnew Subject<ContainerState>();\r\n\t}\r\n\r\n\tconst [containers, setContainers] = useState<HTMLElement[]>([]);\r\n\tconst [container, setContainer] = useState<HTMLElement>();\r\n\r\n\tuseEffect(() => {\r\n\t\t// 특정 layoutName과 containerName을 통해 ref를 구독\r\n\t\tconst subscription = getLayoutInfos(layoutName as string).subscribe(\r\n\t\t\t(layout) => {\r\n\t\t\t\tif (\r\n\t\t\t\t\t!layout ||\r\n\t\t\t\t\t!layout.container[containerName] ||\r\n\t\t\t\t\t!layout.container[containerName].current\r\n\t\t\t\t)\r\n\t\t\t\t\treturn;\r\n\t\t\t\tsetContainers(\r\n\t\t\t\t\tObject.values(layout.container)\r\n\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t(e): e is { current: HTMLElement } =>\r\n\t\t\t\t\t\t\t\te.current !== null,\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.map((e) => e.current),\r\n\t\t\t\t);\r\n\t\t\t\tsetContainer(layout.container[containerName].current);\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\t// 구독 해제\r\n\t\treturn () => subscription.unsubscribe();\r\n\t}, [containerName, layoutName]);\r\n\tuseEffect(() => {\r\n\t\tconst styleName = `${sizeName.charAt(0).toUpperCase() + sizeName.substring(1)}`;\r\n\t\tconst clientSize = (\"client\" + styleName) as\r\n\t\t\t| \"clientWidth\"\r\n\t\t\t| \"clientHeight\";\r\n\t\tconst outerSize = (\"outer\" + styleName) as \"outerWidth\" | \"outerHeight\";\r\n\t\tconst maxSize = (\"max\" + styleName) as \"maxWidth\" | \"maxHeight\";\r\n\t\tconst subscribe = containerOpenCloseSubjectMap[containerName].subscribe(\r\n\t\t\t({\r\n\t\t\t\tmode,\r\n\t\t\t\tinitOpenState: isOpenState,\r\n\t\t\t\tonClose,\r\n\t\t\t\tonOpen,\r\n\t\t\t\topenOption = {},\r\n\t\t\t\tcloseOption = {},\r\n\t\t\t}) => {\r\n\t\t\t\tif (!container || containers.length === 0) return;\r\n\t\t\t\tconst currentGrow = getGrow(container);\r\n\t\t\t\tconst styleMap = window.getComputedStyle(container);\r\n\t\t\t\tconst maxSizeGrow = mathGrow(\r\n\t\t\t\t\tparseInt(styleMap[maxSize]),\r\n\t\t\t\t\t(container.parentElement &&\r\n\t\t\t\t\t\tcontainer.parentElement[clientSize]) ||\r\n\t\t\t\t\t\twindow[outerSize],\r\n\t\t\t\t\tcontainers.length,\r\n\t\t\t\t);\r\n\t\t\t\tconst open = () =>\r\n\t\t\t\t\topenFlex(container, containers, {\r\n\t\t\t\t\t\tsizeName,\r\n\t\t\t\t\t\t...(isNaN(maxSizeGrow)\r\n\t\t\t\t\t\t\t? {}\r\n\t\t\t\t\t\t\t: {\r\n\t\t\t\t\t\t\t\t\topenGrowImportant: maxSizeGrow,\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t...openOption,\r\n\t\t\t\t\t}).then((openTargetGrow) => {\r\n\t\t\t\t\t\tif (onOpen) onOpen();\r\n\t\t\t\t\t\tcontainerSpreadSubjectMap[containerName].next({\r\n\t\t\t\t\t\t\tisOpen: true,\r\n\t\t\t\t\t\t\tgrow: openTargetGrow as any,\r\n\t\t\t\t\t\t\ttargetContainer: container,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\tconst close = () =>\r\n\t\t\t\t\tcloseFlex(container, containers, {\r\n\t\t\t\t\t\tsizeName,\r\n\t\t\t\t\t\t...closeOption,\r\n\t\t\t\t\t}).then(() => {\r\n\t\t\t\t\t\tif (onClose) onClose();\r\n\t\t\t\t\t\tcontainerSpreadSubjectMap[containerName].next({\r\n\t\t\t\t\t\t\tisOpen: false,\r\n\t\t\t\t\t\t\tgrow: 0,\r\n\t\t\t\t\t\t\ttargetContainer: container,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\tif (mode === \"toggle\") {\r\n\t\t\t\t\tif (currentGrow === 0) {\r\n\t\t\t\t\t\topen();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tclose();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (mode === \"open\") {\r\n\t\t\t\t\tif (currentGrow === 0) {\r\n\t\t\t\t\t\topen();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (mode === \"close\") {\r\n\t\t\t\t\tif (currentGrow !== 0) {\r\n\t\t\t\t\t\tclose();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\treturn () => {\r\n\t\t\tsubscribe.unsubscribe();\r\n\t\t};\r\n\t}, [containerName, container, containers, sizeName]);\r\n\r\n\treturn null;\r\n};\r\n\r\nexport const useContainers = (layoutName: string) => {\r\n\tconst [containers, setContainers] = useState<HTMLElement[]>([]);\r\n\r\n\tuseEffect(() => {\r\n\t\t// 특정 layoutName과 containerName을 통해 ref를 구독\r\n\t\tconst subscription = getLayoutInfos(layoutName as string).subscribe(\r\n\t\t\t(layout) => {\r\n\t\t\t\tsetContainers(\r\n\t\t\t\t\tObject.values(layout.container)\r\n\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t(e): e is { current: HTMLElement } =>\r\n\t\t\t\t\t\t\t\te.current !== null,\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.map((e) => e.current),\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\t// 구독 해제\r\n\t\treturn () => subscription.unsubscribe();\r\n\t}, [layoutName]);\r\n\treturn containers;\r\n};\r\n\r\nexport const useLayoutName = (containerName: string) => {\r\n\tconst [layoutName, setLayoutName] = useState<string>();\r\n\tuseEffect(() => {\r\n\t\tconst subscribe = flexContainerStore\r\n\t\t\t.pipe(\r\n\t\t\t\tmap(\r\n\t\t\t\t\t(layouts) =>\r\n\t\t\t\t\t\tObject.entries(layouts)\r\n\t\t\t\t\t\t\t.filter(([_, v]) => v[containerName])\r\n\t\t\t\t\t\t\t.map(([k]) => k)[0] as string, // 첫 번째 결과 가져오기\r\n\t\t\t\t),\r\n\t\t\t)\r\n\t\t\t.subscribe(setLayoutName);\r\n\r\n\t\t// 컴포넌트 언마운트 시 구독 해제\r\n\t\treturn () => subscribe.unsubscribe();\r\n\t}, [containerName]);\r\n\r\n\treturn layoutName;\r\n};\r\n\r\nexport const useDecompositionLayout = ({\r\n\tlayoutName: initialLayoutName,\r\n\tcontainerName,\r\n}: {\r\n\tlayoutName?: string;\r\n\tcontainerName: string;\r\n}) => {\r\n\tconst derivedLayoutName = useLayoutName(containerName);\r\n\tconst finalLayoutName = initialLayoutName || derivedLayoutName;\r\n\r\n\tconst [containers, setContainers] = useState<HTMLElement[]>([]);\r\n\tconst [container, setContainer] = useState<HTMLElement>();\r\n\tconst [resizePanel, setResizePanel] = useState<HTMLElement>();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!finalLayoutName) return; // layoutName이 준비될 때까지 대기\r\n\t\t// 특정 layoutName과 containerName을 통해 ref를 구독\r\n\t\tconst subscription = getLayoutInfos(finalLayoutName).subscribe(\r\n\t\t\t(layout) => {\r\n\t\t\t\tif (!layout) return;\r\n\t\t\t\tsetContainers(\r\n\t\t\t\t\tObject.values(layout.container)\r\n\t\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t\t(e): e is { current: HTMLElement } =>\r\n\t\t\t\t\t\t\t\te.current !== null,\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.map((e) => e.current),\r\n\t\t\t\t);\r\n\t\t\t\tif (\r\n\t\t\t\t\tcontainerName &&\r\n\t\t\t\t\tlayout.container[containerName] &&\r\n\t\t\t\t\tlayout.container[containerName].current\r\n\t\t\t\t) {\r\n\t\t\t\t\tsetContainer(layout.container[containerName].current);\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tlayout.resizePanel[containerName] &&\r\n\t\t\t\t\t\tlayout.resizePanel[containerName].current\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tsetResizePanel(\r\n\t\t\t\t\t\t\tlayout.resizePanel[containerName].current,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\t// 구독 해제\r\n\t\treturn () => subscription.unsubscribe();\r\n\t}, [containerName, finalLayoutName]);\r\n\r\n\treturn { layout: containers, container, resizePanel };\r\n};\r\n\r\nexport const useContainerSize = (containerName: string) => {\r\n\tconst { layout, container, resizePanel } = useDecompositionLayout({\r\n\t\tcontainerName,\r\n\t});\r\n\tconst [size, setSize] = useState<{ width: number; height: number }>();\r\n\tuseEffect(() => {\r\n\t\tif (!container) return;\r\n\t\tconst observer = new ResizeObserver((entries) => {\r\n\t\t\tfor (const entry of entries) {\r\n\t\t\t\tsetSize({\r\n\t\t\t\t\twidth: entry.contentRect.width,\r\n\t\t\t\t\theight: entry.contentRect.height,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\tobserver.observe(container);\r\n\t\treturn () => observer.disconnect();\r\n\t}, [container]);\r\n\treturn { size };\r\n};\r\n\r\nexport const useDoubleClick = (\r\n\tcontainerName: string,\r\n\topt: ContainerStateRequest,\r\n) => {\r\n\tconst [isOpen, setIsOpen] = useState<boolean>();\r\n\tconst [isDoubleClick, setIsDoubleClick] = useState<boolean>();\r\n\tuseEffect(() => {\r\n\t\tconst resizePanelClickEvent = getResizePanelRef({\r\n\t\t\tcontainerName,\r\n\t\t}).pipe(\r\n\t\t\tfilter(\r\n\t\t\t\t(resizePanelref) =>\r\n\t\t\t\t\tresizePanelref != undefined &&\r\n\t\t\t\t\tresizePanelref.current != undefined,\r\n\t\t\t),\r\n\t\t\t//take(1),\r\n\t\t\tswitchMap((resizePanelref) => {\r\n\t\t\t\tif (!resizePanelref || !resizePanelref.current) return EMPTY;\r\n\t\t\t\treturn fromEvent(resizePanelref.current, \"click\");\r\n\t\t\t}),\r\n\t\t);\r\n\t\tconst subscribe = resizePanelClickEvent\r\n\t\t\t.pipe(\r\n\t\t\t\tbuffer(resizePanelClickEvent.pipe(debounceTime(500))),\r\n\t\t\t\tfilter((clickEventArray) => clickEventArray.length >= 2),\r\n\t\t\t\tmap((events) => {\r\n\t\t\t\t\tcontainerOpenCloseSubjectMap[containerName].next({\r\n\t\t\t\t\t\t...opt,\r\n\t\t\t\t\t\topenOption: {\r\n\t\t\t\t\t\t\t...opt.openOption,\r\n\t\t\t\t\t\t\tisPrevSizeOpen: false,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tonClose: () => {\r\n\t\t\t\t\t\t\tif (opt.onClose) opt.onClose();\r\n\t\t\t\t\t\t\tsetIsOpen(false);\r\n\t\t\t\t\t\t\tsetIsDoubleClick(true);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tonOpen: () => {\r\n\t\t\t\t\t\t\tif (opt.onOpen) opt.onOpen();\r\n\t\t\t\t\t\t\tsetIsOpen(true);\r\n\t\t\t\t\t\t\tsetIsDoubleClick(true);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t}),\r\n\t\t\t)\r\n\t\t\t.subscribe();\r\n\t\treturn () => {\r\n\t\t\tsubscribe.unsubscribe();\r\n\t\t};\r\n\t}, [containerName]);\r\n\treturn { isOpen, isDoubleClick, setIsDoubleClick };\r\n};\r\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/providers/index.ts"],"sourcesContent":["export * from \"./FlexLayoutHooks\";\r\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,8BAAc,8BAAd;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/providers/index.ts"],"sourcesContent":["export * from \"./FlexLayoutHooks\";\r\n"],"mappings":"AAAA,cAAc;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/store/FlexLayoutContainerStore.ts"],"sourcesContent":["\"use client\";\r\nimport equal from \"fast-deep-equal\";\r\nimport { RefObject } from \"react\";\r\nimport { BehaviorSubject, combineLatest } from \"rxjs\";\r\nimport { distinctUntilChanged, filter, map } from \"rxjs/operators\";\r\nimport { DropTargetComponent } from \"../hooks/useDrag\";\r\n\r\n/**\r\n * 이전 값과 새 값이 동일하지 않을 때만 store를 업데이트하는 유틸 함수\r\n */\r\nfunction updateScrollStore<T>(subject: BehaviorSubject<T>, newValue: T) {\r\n\tconst currentValue = subject.getValue();\r\n\t// deep 비교를 통해 실제 변경이 있는 경우만 next\r\n\tif (!equal(currentValue, newValue)) {\r\n\t\tsubject.next(newValue);\r\n\t}\r\n}\r\n\r\nfunction updateSplitScreenStore(newValue: LayoutSplitScreenState) {\r\n\t// const prevValue = layoutSplitScreenStore.getValue();\r\n\t// deep-equal 로 비교\r\n\t// if (!equal(prevValue, newValue)) {\r\n\tlayoutSplitScreenStore.next(newValue);\r\n\t// }\r\n}\r\n\r\n// 구독 시 이전 상태들을 축적하여 관리\r\n// const stateWithHistory$ = flexContainerStore.pipe(\r\n// scan((acc, newState) => [...acc, newState], [] as RefStore[])\r\n// );\r\n\r\nexport interface ScrollPosition {\r\n\tx: number;\r\n\ty: number;\r\n}\r\n\r\nexport const scrollPositions: Record<string, ScrollPosition> = {};\r\n\r\nconst scrollPositionsSubject = new BehaviorSubject<\r\n\tRecord<string, ScrollPosition>\r\n>(scrollPositions);\r\n\r\n/**\r\n * 스크롤 위치 업데이트 함수\r\n *\r\n * 기존: 항상 store.next()가 호출됨 → 바뀌지 않았다면 건너뛰도록 변경\r\n */\r\nexport const setScrollPosition = (\r\n\tlayoutName: string,\r\n\tposition: ScrollPosition,\r\n) => {\r\n\tconst current = scrollPositionsSubject.getValue();\r\n\tconst prevPos = current[layoutName];\r\n\r\n\t// x, y 모두 동일하면 업데이트할 필요가 없으므로 조기 반환\r\n\tif (prevPos && prevPos.x === position.x && prevPos.y === position.y) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// 변경사항이 있으면 새 객체를 만들어 넘김\r\n\tconst newPositions = {\r\n\t\t...current,\r\n\t\t[layoutName]: position,\r\n\t};\r\n\r\n\tupdateScrollStore(scrollPositionsSubject, newPositions);\r\n};\r\n\r\n/**\r\n * 스크롤 위치 구독\r\n */\r\nexport const getScrollPosition = (layoutName: string) => {\r\n\treturn scrollPositionsSubject.pipe(\r\n\t\t// 해당 layoutName이 정의되지 않았을 때는 제외\r\n\t\tfilter((e) => e[layoutName] !== undefined),\r\n\t\tmap((positions) => positions[layoutName]),\r\n\t\tdistinctUntilChanged(\r\n\t\t\t(prev, curr) => prev?.x === curr?.x && prev?.y === curr?.y,\r\n\t\t),\r\n\t);\r\n};\r\nexport const removeScrollPosition = (layoutName: string) => {\r\n\tconst current = scrollPositionsSubject.getValue();\r\n\tconst { [layoutName]: _, ...rest } = current;\r\n\tupdateScrollStore(scrollPositionsSubject, rest);\r\n};\r\n\r\nexport type SplitScreenComponents = {\r\n\tafterDropTargetComponent: DropTargetComponent[];\r\n\tbeforeDropTargetComponent: DropTargetComponent[];\r\n\tcenterDropTargetComponent: DropTargetComponent[];\r\n\tdirection: \"row\" | \"column\";\r\n};\r\n\r\nexport type LayoutSplitScreenState = Record<\r\n\tstring,\r\n\tRecord<string, SplitScreenComponents>\r\n>;\r\n\r\nexport const layoutSplitScreenStore =\r\n\tnew BehaviorSubject<LayoutSplitScreenState>({});\r\n\r\nexport const setSplitScreen = (\r\n\trootName: string,\r\n\tlayoutName: string,\r\n\tnewComponents: SplitScreenComponents,\r\n) => {\r\n\tconst current = layoutSplitScreenStore.getValue();\r\n\tconst updatedLayout = { ...(current[rootName] || {}) };\r\n\tupdatedLayout[layoutName] = newComponents;\r\n\r\n\tconst newStoreValue = {\r\n\t\t...current,\r\n\t\t[rootName]: updatedLayout,\r\n\t};\r\n\tupdateSplitScreenStore(newStoreValue);\r\n};\r\n\r\nexport const resetRootSplitScreen = (rootName: string) => {\r\n\tconst current = layoutSplitScreenStore.getValue();\r\n\t// rootName 아래만 초기화\r\n\tconst newStoreValue = {\r\n\t\t...current,\r\n\t\t[rootName]: {},\r\n\t};\r\n\tupdateSplitScreenStore(newStoreValue);\r\n};\r\n\r\nexport const removeRootSplitScreen = (rootName: string) => {\r\n\tconst current = layoutSplitScreenStore.getValue();\r\n\tif (!current[rootName]) return;\r\n\tconst { [rootName]: _, ...rest } = current;\r\n\tupdateSplitScreenStore(rest);\r\n};\r\n\r\nexport const removeSplitScreenChild = (\r\n\trootName: string,\r\n\tlayoutName: string,\r\n) => {\r\n\tconst current = layoutSplitScreenStore.getValue();\r\n\tif (!current[rootName]) return;\r\n\r\n\tconst updatedLayout = { ...current[rootName] };\r\n\tdelete updatedLayout[layoutName];\r\n\r\n\tconst newStoreValue = {\r\n\t\t...current,\r\n\t\t[rootName]: updatedLayout,\r\n\t};\r\n\tupdateSplitScreenStore(newStoreValue);\r\n};\r\n\r\nexport const getCurrentSplitScreenComponents = (\r\n\trootName: string,\r\n\tlayoutName: string,\r\n) => {\r\n\tconst current = layoutSplitScreenStore.getValue();\r\n\tif (!current[rootName]) return;\r\n\treturn current[rootName][layoutName];\r\n};\r\n\r\nexport const getSplitScreen = (rootName: string, layoutName: string) => {\r\n\treturn layoutSplitScreenStore.pipe(\r\n\t\tmap((splitScreen) => splitScreen[rootName]?.[layoutName]),\r\n\t\tdistinctUntilChanged((prev, curr) => {\r\n\t\t\t// 이전 상태와 현재 상태를 비교하여 동일하면 필터링\r\n\t\t\tconst filterChildren = (obj: any) => {\r\n\t\t\t\t// 객체 복사 후 children 속성 제거\r\n\t\t\t\tconst { children, component, targetComponent, x, y, ...rest } =\r\n\t\t\t\t\tobj || {};\r\n\t\t\t\treturn rest;\r\n\t\t\t};\r\n\t\t\treturn equal(filterChildren(prev), filterChildren(curr));\r\n\t\t}),\r\n\t);\r\n};\r\n\r\n// 중첩된 객체 구조로 ref를 관리하는 타입\r\ntype RefStore = {\r\n\t[layoutName: string]: {\r\n\t\t[containerName: string]: RefObject<HTMLElement | null>;\r\n\t};\r\n};\r\n\r\n// 초기값으로 빈 객체를 설정한 BehaviorSubject 생성\r\nexport const flexContainerStore = new BehaviorSubject<RefStore>({});\r\n\r\nexport const flexResizePanelStore = new BehaviorSubject<RefStore>({});\r\n/**\r\n * ref를 업데이트하는 함수\r\n * - 기존: 무조건 next() → 새/이전 상태 비교 후 다를 경우에만 next()\r\n */\r\nexport const setContainerRef = <T extends HTMLElement>(\r\n\tlayoutName: string,\r\n\tcontainerName: string,\r\n\tref: RefObject<T | null> | null,\r\n) => {\r\n\tconst currentRefs = flexContainerStore.getValue();\r\n\tconst layoutRefs = currentRefs[layoutName] || {};\r\n\r\n\tif (ref === null) {\r\n\t\tif (!(containerName in layoutRefs)) return; //\r\n\t\tconst { [containerName]: _, ...restLayout } = layoutRefs;\r\n\t\tconst next =\r\n\t\t\tObject.keys(restLayout).length === 0\r\n\t\t\t\t? (() => {\r\n\t\t\t\t\t\tconst { [layoutName]: __, ...rest } = currentRefs;\r\n\t\t\t\t\t\treturn rest;\r\n\t\t\t\t\t})()\r\n\t\t\t\t: { ...currentRefs, [layoutName]: restLayout };\r\n\t\tflexContainerStore.next(next);\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (layoutRefs[containerName] === ref) return; // 동일 ref면 skip\r\n\r\n\tflexContainerStore.next({\r\n\t\t...currentRefs,\r\n\t\t[layoutName]: { ...layoutRefs, [containerName]: ref },\r\n\t});\r\n};\r\n\r\nexport const setResizePanelRef = <T extends HTMLElement>(\r\n\tlayoutName: string,\r\n\tcontainerName: string,\r\n\tref: RefObject<T | null> | null,\r\n) => {\r\n\tconst currentRefs = flexResizePanelStore.getValue();\r\n\tconst layoutRefs = currentRefs[layoutName] || {};\r\n\r\n\tif (ref === null) {\r\n\t\tif (!(containerName in layoutRefs)) return; //\r\n\t\tconst { [containerName]: _, ...restLayout } = layoutRefs;\r\n\t\tconst next =\r\n\t\t\tObject.keys(restLayout).length === 0\r\n\t\t\t\t? (() => {\r\n\t\t\t\t\t\tconst { [layoutName]: __, ...rest } = currentRefs;\r\n\t\t\t\t\t\treturn rest;\r\n\t\t\t\t\t})()\r\n\t\t\t\t: { ...currentRefs, [layoutName]: restLayout };\r\n\t\tflexResizePanelStore.next(next);\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (layoutRefs[containerName] === ref) return; // 동일 ref면 skip\r\n\r\n\tflexResizePanelStore.next({\r\n\t\t...currentRefs,\r\n\t\t[layoutName]: { ...layoutRefs, [containerName]: ref },\r\n\t});\r\n};\r\n\r\nexport const getLayoutInfos = (layoutName: string) => {\r\n\treturn combineLatest([flexContainerStore, flexResizePanelStore]).pipe(\r\n\t\tmap(([containerRefs, resizePanelRefs]) => {\r\n\t\t\t// 두 Store에서 layoutName에 해당하는 값을 병합\r\n\t\t\tconst containerData = containerRefs[layoutName] || {};\r\n\t\t\tconst resizePanelData = resizePanelRefs[layoutName] || {};\r\n\r\n\t\t\t// container와 resizePanel 데이터 합치기\r\n\t\t\treturn {\r\n\t\t\t\tcontainer: containerData,\r\n\t\t\t\tresizePanel: resizePanelData,\r\n\t\t\t};\r\n\t\t}),\r\n\t\tfilter(\r\n\t\t\t(result) =>\r\n\t\t\t\tresult.container !== null &&\r\n\t\t\t\tObject.keys(result.container).length > 0,\r\n\t\t), // 빈 객체 제외\r\n\t);\r\n};\r\n\r\n// 특정 containerName의 ref를 구독하는 함수\r\n// layoutName이 지정되지 않으면 전체 layout에서 해당하는 containerName의 ref를 찾음\r\nexport const getContainerRef = ({\r\n\tcontainerName,\r\n\tlayoutName,\r\n}: {\r\n\tcontainerName: string;\r\n\tlayoutName?: string;\r\n}) => {\r\n\treturn flexContainerStore.pipe(\r\n\t\tmap((refs: RefStore) => {\r\n\t\t\tif (layoutName) {\r\n\t\t\t\t// 지정된 layoutName에서 해당 containerName의 ref 반환\r\n\t\t\t\treturn refs[layoutName]?.[containerName] || null;\r\n\t\t\t} else {\r\n\t\t\t\t// 모든 layout에서 해당 containerName의 ref 찾기\r\n\t\t\t\treturn Object.entries(refs).find(\r\n\t\t\t\t\t([key, value]) => refs[key][containerName],\r\n\t\t\t\t)?.[1][containerName];\r\n\t\t\t}\r\n\t\t\t// else {\r\n\t\t\t// // 모든 layout에서 해당 containerName의 ref 찾기\r\n\t\t\t// for (const layout in refs) {\r\n\t\t\t// if (refs[layout][containerName]) {\r\n\t\t\t// return refs[layout][containerName];\r\n\t\t\t// }\r\n\t\t\t// }\r\n\t\t\t// return null;\r\n\t\t\t// }\r\n\t\t}),\r\n\t\tfilter((ref) => ref !== null),\r\n\t);\r\n};\r\n\r\nexport const getResizePanelRef = ({\r\n\tcontainerName,\r\n\tlayoutName,\r\n}: {\r\n\tcontainerName: string;\r\n\tlayoutName?: string;\r\n}) => {\r\n\treturn flexResizePanelStore.pipe(\r\n\t\tmap((refs: RefStore) => {\r\n\t\t\tif (layoutName) {\r\n\t\t\t\t// 지정된 layoutName에서 해당 containerName의 ref 반환\r\n\t\t\t\treturn refs[layoutName]?.[containerName] || null;\r\n\t\t\t} else {\r\n\t\t\t\t// 모든 layout에서 해당 containerName의 ref 찾기\r\n\t\t\t\treturn Object.entries(refs).find(\r\n\t\t\t\t\t([key, value]) => refs[key][containerName],\r\n\t\t\t\t)?.[1][containerName];\r\n\t\t\t}\r\n\t\t\t// else {\r\n\t\t\t// // 모든 layout에서 해당 containerName의 ref 찾기\r\n\t\t\t// for (const layout in refs) {\r\n\t\t\t// if (refs[layout][containerName]) {\r\n\t\t\t// return refs[layout][containerName];\r\n\t\t\t// }\r\n\t\t\t// }\r\n\t\t\t// return null;\r\n\t\t\t// }\r\n\t\t}),\r\n\t\tfilter((ref) => ref !== null),\r\n\t);\r\n};\r\n"],"mappings":"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","names":["equal"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/store/FlexLayoutContainerStore.ts"],"sourcesContent":["\"use client\";\r\nimport equal from \"fast-deep-equal\";\r\nimport { RefObject } from \"react\";\r\nimport { BehaviorSubject, combineLatest } from \"rxjs\";\r\nimport { distinctUntilChanged, filter, map } from \"rxjs/operators\";\r\nimport { DropTargetComponent } from \"../hooks/useDrag\";\r\n\r\n/**\r\n * 이전 값과 새 값이 동일하지 않을 때만 store를 업데이트하는 유틸 함수\r\n */\r\nfunction updateScrollStore<T>(subject: BehaviorSubject<T>, newValue: T) {\r\n\tconst currentValue = subject.getValue();\r\n\t// deep 비교를 통해 실제 변경이 있는 경우만 next\r\n\tif (!equal(currentValue, newValue)) {\r\n\t\tsubject.next(newValue);\r\n\t}\r\n}\r\n\r\nfunction updateSplitScreenStore(newValue: LayoutSplitScreenState) {\r\n\t// const prevValue = layoutSplitScreenStore.getValue();\r\n\t// deep-equal 로 비교\r\n\t// if (!equal(prevValue, newValue)) {\r\n\tlayoutSplitScreenStore.next(newValue);\r\n\t// }\r\n}\r\n\r\n// 구독 시 이전 상태들을 축적하여 관리\r\n// const stateWithHistory$ = flexContainerStore.pipe(\r\n// scan((acc, newState) => [...acc, newState], [] as RefStore[])\r\n// );\r\n\r\nexport interface ScrollPosition {\r\n\tx: number;\r\n\ty: number;\r\n}\r\n\r\nexport const scrollPositions: Record<string, ScrollPosition> = {};\r\n\r\nconst scrollPositionsSubject = new BehaviorSubject<\r\n\tRecord<string, ScrollPosition>\r\n>(scrollPositions);\r\n\r\n/**\r\n * 스크롤 위치 업데이트 함수\r\n *\r\n * 기존: 항상 store.next()가 호출됨 → 바뀌지 않았다면 건너뛰도록 변경\r\n */\r\nexport const setScrollPosition = (\r\n\tlayoutName: string,\r\n\tposition: ScrollPosition,\r\n) => {\r\n\tconst current = scrollPositionsSubject.getValue();\r\n\tconst prevPos = current[layoutName];\r\n\r\n\t// x, y 모두 동일하면 업데이트할 필요가 없으므로 조기 반환\r\n\tif (prevPos && prevPos.x === position.x && prevPos.y === position.y) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// 변경사항이 있으면 새 객체를 만들어 넘김\r\n\tconst newPositions = {\r\n\t\t...current,\r\n\t\t[layoutName]: position,\r\n\t};\r\n\r\n\tupdateScrollStore(scrollPositionsSubject, newPositions);\r\n};\r\n\r\n/**\r\n * 스크롤 위치 구독\r\n */\r\nexport const getScrollPosition = (layoutName: string) => {\r\n\treturn scrollPositionsSubject.pipe(\r\n\t\t// 해당 layoutName이 정의되지 않았을 때는 제외\r\n\t\tfilter((e) => e[layoutName] !== undefined),\r\n\t\tmap((positions) => positions[layoutName]),\r\n\t\tdistinctUntilChanged(\r\n\t\t\t(prev, curr) => prev?.x === curr?.x && prev?.y === curr?.y,\r\n\t\t),\r\n\t);\r\n};\r\nexport const removeScrollPosition = (layoutName: string) => {\r\n\tconst current = scrollPositionsSubject.getValue();\r\n\tconst { [layoutName]: _, ...rest } = current;\r\n\tupdateScrollStore(scrollPositionsSubject, rest);\r\n};\r\n\r\nexport type SplitScreenComponents = {\r\n\tafterDropTargetComponent: DropTargetComponent[];\r\n\tbeforeDropTargetComponent: DropTargetComponent[];\r\n\tcenterDropTargetComponent: DropTargetComponent[];\r\n\tdirection: \"row\" | \"column\";\r\n};\r\n\r\nexport type LayoutSplitScreenState = Record<\r\n\tstring,\r\n\tRecord<string, SplitScreenComponents>\r\n>;\r\n\r\nexport const layoutSplitScreenStore =\r\n\tnew BehaviorSubject<LayoutSplitScreenState>({});\r\n\r\nexport const setSplitScreen = (\r\n\trootName: string,\r\n\tlayoutName: string,\r\n\tnewComponents: SplitScreenComponents,\r\n) => {\r\n\tconst current = layoutSplitScreenStore.getValue();\r\n\tconst updatedLayout = { ...(current[rootName] || {}) };\r\n\tupdatedLayout[layoutName] = newComponents;\r\n\r\n\tconst newStoreValue = {\r\n\t\t...current,\r\n\t\t[rootName]: updatedLayout,\r\n\t};\r\n\tupdateSplitScreenStore(newStoreValue);\r\n};\r\n\r\nexport const resetRootSplitScreen = (rootName: string) => {\r\n\tconst current = layoutSplitScreenStore.getValue();\r\n\t// rootName 아래만 초기화\r\n\tconst newStoreValue = {\r\n\t\t...current,\r\n\t\t[rootName]: {},\r\n\t};\r\n\tupdateSplitScreenStore(newStoreValue);\r\n};\r\n\r\nexport const removeRootSplitScreen = (rootName: string) => {\r\n\tconst current = layoutSplitScreenStore.getValue();\r\n\tif (!current[rootName]) return;\r\n\tconst { [rootName]: _, ...rest } = current;\r\n\tupdateSplitScreenStore(rest);\r\n};\r\n\r\nexport const removeSplitScreenChild = (\r\n\trootName: string,\r\n\tlayoutName: string,\r\n) => {\r\n\tconst current = layoutSplitScreenStore.getValue();\r\n\tif (!current[rootName]) return;\r\n\r\n\tconst updatedLayout = { ...current[rootName] };\r\n\tdelete updatedLayout[layoutName];\r\n\r\n\tconst newStoreValue = {\r\n\t\t...current,\r\n\t\t[rootName]: updatedLayout,\r\n\t};\r\n\tupdateSplitScreenStore(newStoreValue);\r\n};\r\n\r\nexport const getCurrentSplitScreenComponents = (\r\n\trootName: string,\r\n\tlayoutName: string,\r\n) => {\r\n\tconst current = layoutSplitScreenStore.getValue();\r\n\tif (!current[rootName]) return;\r\n\treturn current[rootName][layoutName];\r\n};\r\n\r\nexport const getSplitScreen = (rootName: string, layoutName: string) => {\r\n\treturn layoutSplitScreenStore.pipe(\r\n\t\tmap((splitScreen) => splitScreen[rootName]?.[layoutName]),\r\n\t\tdistinctUntilChanged((prev, curr) => {\r\n\t\t\t// 이전 상태와 현재 상태를 비교하여 동일하면 필터링\r\n\t\t\tconst filterChildren = (obj: any) => {\r\n\t\t\t\t// 객체 복사 후 children 속성 제거\r\n\t\t\t\tconst { children, component, targetComponent, x, y, ...rest } =\r\n\t\t\t\t\tobj || {};\r\n\t\t\t\treturn rest;\r\n\t\t\t};\r\n\t\t\treturn equal(filterChildren(prev), filterChildren(curr));\r\n\t\t}),\r\n\t);\r\n};\r\n\r\n// 중첩된 객체 구조로 ref를 관리하는 타입\r\ntype RefStore = {\r\n\t[layoutName: string]: {\r\n\t\t[containerName: string]: RefObject<HTMLElement | null>;\r\n\t};\r\n};\r\n\r\n// 초기값으로 빈 객체를 설정한 BehaviorSubject 생성\r\nexport const flexContainerStore = new BehaviorSubject<RefStore>({});\r\n\r\nexport const flexResizePanelStore = new BehaviorSubject<RefStore>({});\r\n/**\r\n * ref를 업데이트하는 함수\r\n * - 기존: 무조건 next() → 새/이전 상태 비교 후 다를 경우에만 next()\r\n */\r\nexport const setContainerRef = <T extends HTMLElement>(\r\n\tlayoutName: string,\r\n\tcontainerName: string,\r\n\tref: RefObject<T | null> | null,\r\n) => {\r\n\tconst currentRefs = flexContainerStore.getValue();\r\n\tconst layoutRefs = currentRefs[layoutName] || {};\r\n\r\n\tif (ref === null) {\r\n\t\tif (!(containerName in layoutRefs)) return; //\r\n\t\tconst { [containerName]: _, ...restLayout } = layoutRefs;\r\n\t\tconst next =\r\n\t\t\tObject.keys(restLayout).length === 0\r\n\t\t\t\t? (() => {\r\n\t\t\t\t\t\tconst { [layoutName]: __, ...rest } = currentRefs;\r\n\t\t\t\t\t\treturn rest;\r\n\t\t\t\t\t})()\r\n\t\t\t\t: { ...currentRefs, [layoutName]: restLayout };\r\n\t\tflexContainerStore.next(next);\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (layoutRefs[containerName] === ref) return; // 동일 ref면 skip\r\n\r\n\tflexContainerStore.next({\r\n\t\t...currentRefs,\r\n\t\t[layoutName]: { ...layoutRefs, [containerName]: ref },\r\n\t});\r\n};\r\n\r\nexport const setResizePanelRef = <T extends HTMLElement>(\r\n\tlayoutName: string,\r\n\tcontainerName: string,\r\n\tref: RefObject<T | null> | null,\r\n) => {\r\n\tconst currentRefs = flexResizePanelStore.getValue();\r\n\tconst layoutRefs = currentRefs[layoutName] || {};\r\n\r\n\tif (ref === null) {\r\n\t\tif (!(containerName in layoutRefs)) return; //\r\n\t\tconst { [containerName]: _, ...restLayout } = layoutRefs;\r\n\t\tconst next =\r\n\t\t\tObject.keys(restLayout).length === 0\r\n\t\t\t\t? (() => {\r\n\t\t\t\t\t\tconst { [layoutName]: __, ...rest } = currentRefs;\r\n\t\t\t\t\t\treturn rest;\r\n\t\t\t\t\t})()\r\n\t\t\t\t: { ...currentRefs, [layoutName]: restLayout };\r\n\t\tflexResizePanelStore.next(next);\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (layoutRefs[containerName] === ref) return; // 동일 ref면 skip\r\n\r\n\tflexResizePanelStore.next({\r\n\t\t...currentRefs,\r\n\t\t[layoutName]: { ...layoutRefs, [containerName]: ref },\r\n\t});\r\n};\r\n\r\nexport const getLayoutInfos = (layoutName: string) => {\r\n\treturn combineLatest([flexContainerStore, flexResizePanelStore]).pipe(\r\n\t\tmap(([containerRefs, resizePanelRefs]) => {\r\n\t\t\t// 두 Store에서 layoutName에 해당하는 값을 병합\r\n\t\t\tconst containerData = containerRefs[layoutName] || {};\r\n\t\t\tconst resizePanelData = resizePanelRefs[layoutName] || {};\r\n\r\n\t\t\t// container와 resizePanel 데이터 합치기\r\n\t\t\treturn {\r\n\t\t\t\tcontainer: containerData,\r\n\t\t\t\tresizePanel: resizePanelData,\r\n\t\t\t};\r\n\t\t}),\r\n\t\tfilter(\r\n\t\t\t(result) =>\r\n\t\t\t\tresult.container !== null &&\r\n\t\t\t\tObject.keys(result.container).length > 0,\r\n\t\t), // 빈 객체 제외\r\n\t);\r\n};\r\n\r\n// 특정 containerName의 ref를 구독하는 함수\r\n// layoutName이 지정되지 않으면 전체 layout에서 해당하는 containerName의 ref를 찾음\r\nexport const getContainerRef = ({\r\n\tcontainerName,\r\n\tlayoutName,\r\n}: {\r\n\tcontainerName: string;\r\n\tlayoutName?: string;\r\n}) => {\r\n\treturn flexContainerStore.pipe(\r\n\t\tmap((refs: RefStore) => {\r\n\t\t\tif (layoutName) {\r\n\t\t\t\t// 지정된 layoutName에서 해당 containerName의 ref 반환\r\n\t\t\t\treturn refs[layoutName]?.[containerName] || null;\r\n\t\t\t} else {\r\n\t\t\t\t// 모든 layout에서 해당 containerName의 ref 찾기\r\n\t\t\t\treturn Object.entries(refs).find(\r\n\t\t\t\t\t([key, value]) => refs[key][containerName],\r\n\t\t\t\t)?.[1][containerName];\r\n\t\t\t}\r\n\t\t\t// else {\r\n\t\t\t// // 모든 layout에서 해당 containerName의 ref 찾기\r\n\t\t\t// for (const layout in refs) {\r\n\t\t\t// if (refs[layout][containerName]) {\r\n\t\t\t// return refs[layout][containerName];\r\n\t\t\t// }\r\n\t\t\t// }\r\n\t\t\t// return null;\r\n\t\t\t// }\r\n\t\t}),\r\n\t\tfilter((ref) => ref !== null),\r\n\t);\r\n};\r\n\r\nexport const getResizePanelRef = ({\r\n\tcontainerName,\r\n\tlayoutName,\r\n}: {\r\n\tcontainerName: string;\r\n\tlayoutName?: string;\r\n}) => {\r\n\treturn flexResizePanelStore.pipe(\r\n\t\tmap((refs: RefStore) => {\r\n\t\t\tif (layoutName) {\r\n\t\t\t\t// 지정된 layoutName에서 해당 containerName의 ref 반환\r\n\t\t\t\treturn refs[layoutName]?.[containerName] || null;\r\n\t\t\t} else {\r\n\t\t\t\t// 모든 layout에서 해당 containerName의 ref 찾기\r\n\t\t\t\treturn Object.entries(refs).find(\r\n\t\t\t\t\t([key, value]) => refs[key][containerName],\r\n\t\t\t\t)?.[1][containerName];\r\n\t\t\t}\r\n\t\t\t// else {\r\n\t\t\t// // 모든 layout에서 해당 containerName의 ref 찾기\r\n\t\t\t// for (const layout in refs) {\r\n\t\t\t// if (refs[layout][containerName]) {\r\n\t\t\t// return refs[layout][containerName];\r\n\t\t\t// }\r\n\t\t\t// }\r\n\t\t\t// return null;\r\n\t\t\t// }\r\n\t\t}),\r\n\t\tfilter((ref) => ref !== null),\r\n\t);\r\n};\r\n"],"mappings":";AACA,OAAO,WAAW;AAElB,SAAS,iBAAiB,qBAAqB;AAC/C,SAAS,sBAAsB,QAAQ,WAAW;AAMlD,SAAS,kBAAqB,SAA6B,UAAa;AACvE,QAAM,eAAe,QAAQ,SAAS;AAEtC,MAAI,CAAC,MAAM,cAAc,QAAQ,GAAG;AACnC,YAAQ,KAAK,QAAQ;AAAA,EACtB;AACD;AAEA,SAAS,uBAAuB,UAAkC;AAIjE,yBAAuB,KAAK,QAAQ;AAErC;AAYO,MAAM,kBAAkD,CAAC;AAEhE,MAAM,yBAAyB,IAAI,gBAEjC,eAAe;AAOV,MAAM,oBAAoB,CAChC,YACA,aACI;AACJ,QAAM,UAAU,uBAAuB,SAAS;AAChD,QAAM,UAAU,QAAQ,UAAU;AAGlC,MAAI,WAAW,QAAQ,MAAM,SAAS,KAAK,QAAQ,MAAM,SAAS,GAAG;AACpE;AAAA,EACD;AAGA,QAAM,eAAe;AAAA,IACpB,GAAG;AAAA,IACH,CAAC,UAAU,GAAG;AAAA,EACf;AAEA,oBAAkB,wBAAwB,YAAY;AACvD;AAKO,MAAM,oBAAoB,CAAC,eAAuB;AACxD,SAAO,uBAAuB;AAAA;AAAA,IAE7B,OAAO,CAAC,MAAM,EAAE,UAAU,MAAM,MAAS;AAAA,IACzC,IAAI,CAAC,cAAc,UAAU,UAAU,CAAC;AAAA,IACxC;AAAA,MACC,CAAC,MAAM,SAAS,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM;AAAA,IAC1D;AAAA,EACD;AACD;AACO,MAAM,uBAAuB,CAAC,eAAuB;AAC3D,QAAM,UAAU,uBAAuB,SAAS;AAChD,QAAM,EAAE,CAAC,UAAU,GAAG,GAAG,GAAG,KAAK,IAAI;AACrC,oBAAkB,wBAAwB,IAAI;AAC/C;AAcO,MAAM,yBACZ,IAAI,gBAAwC,CAAC,CAAC;AAExC,MAAM,iBAAiB,CAC7B,UACA,YACA,kBACI;AACJ,QAAM,UAAU,uBAAuB,SAAS;AAChD,QAAM,gBAAgB,EAAE,GAAI,QAAQ,QAAQ,KAAK,CAAC,EAAG;AACrD,gBAAc,UAAU,IAAI;AAE5B,QAAM,gBAAgB;AAAA,IACrB,GAAG;AAAA,IACH,CAAC,QAAQ,GAAG;AAAA,EACb;AACA,yBAAuB,aAAa;AACrC;AAEO,MAAM,uBAAuB,CAAC,aAAqB;AACzD,QAAM,UAAU,uBAAuB,SAAS;AAEhD,QAAM,gBAAgB;AAAA,IACrB,GAAG;AAAA,IACH,CAAC,QAAQ,GAAG,CAAC;AAAA,EACd;AACA,yBAAuB,aAAa;AACrC;AAEO,MAAM,wBAAwB,CAAC,aAAqB;AAC1D,QAAM,UAAU,uBAAuB,SAAS;AAChD,MAAI,CAAC,QAAQ,QAAQ,EAAG;AACxB,QAAM,EAAE,CAAC,QAAQ,GAAG,GAAG,GAAG,KAAK,IAAI;AACnC,yBAAuB,IAAI;AAC5B;AAEO,MAAM,yBAAyB,CACrC,UACA,eACI;AACJ,QAAM,UAAU,uBAAuB,SAAS;AAChD,MAAI,CAAC,QAAQ,QAAQ,EAAG;AAExB,QAAM,gBAAgB,EAAE,GAAG,QAAQ,QAAQ,EAAE;AAC7C,SAAO,cAAc,UAAU;AAE/B,QAAM,gBAAgB;AAAA,IACrB,GAAG;AAAA,IACH,CAAC,QAAQ,GAAG;AAAA,EACb;AACA,yBAAuB,aAAa;AACrC;AAEO,MAAM,kCAAkC,CAC9C,UACA,eACI;AACJ,QAAM,UAAU,uBAAuB,SAAS;AAChD,MAAI,CAAC,QAAQ,QAAQ,EAAG;AACxB,SAAO,QAAQ,QAAQ,EAAE,UAAU;AACpC;AAEO,MAAM,iBAAiB,CAAC,UAAkB,eAAuB;AACvE,SAAO,uBAAuB;AAAA,IAC7B,IAAI,CAAC,gBAAgB,YAAY,QAAQ,IAAI,UAAU,CAAC;AAAA,IACxD,qBAAqB,CAAC,MAAM,SAAS;AAEpC,YAAM,iBAAiB,CAAC,QAAa;AAEpC,cAAM,EAAE,UAAU,WAAW,iBAAiB,GAAG,GAAG,GAAG,KAAK,IAC3D,OAAO,CAAC;AACT,eAAO;AAAA,MACR;AACA,aAAO,MAAM,eAAe,IAAI,GAAG,eAAe,IAAI,CAAC;AAAA,IACxD,CAAC;AAAA,EACF;AACD;AAUO,MAAM,qBAAqB,IAAI,gBAA0B,CAAC,CAAC;AAE3D,MAAM,uBAAuB,IAAI,gBAA0B,CAAC,CAAC;AAK7D,MAAM,kBAAkB,CAC9B,YACA,eACA,QACI;AACJ,QAAM,cAAc,mBAAmB,SAAS;AAChD,QAAM,aAAa,YAAY,UAAU,KAAK,CAAC;AAE/C,MAAI,QAAQ,MAAM;AACjB,QAAI,EAAE,iBAAiB,YAAa;AACpC,UAAM,EAAE,CAAC,aAAa,GAAG,GAAG,GAAG,WAAW,IAAI;AAC9C,UAAM,OACL,OAAO,KAAK,UAAU,EAAE,WAAW,KAC/B,MAAM;AACP,YAAM,EAAE,CAAC,UAAU,GAAG,IAAI,GAAG,KAAK,IAAI;AACtC,aAAO;AAAA,IACR,GAAG,IACF,EAAE,GAAG,aAAa,CAAC,UAAU,GAAG,WAAW;AAC/C,uBAAmB,KAAK,IAAI;AAC5B;AAAA,EACD;AAEA,MAAI,WAAW,aAAa,MAAM,IAAK;AAEvC,qBAAmB,KAAK;AAAA,IACvB,GAAG;AAAA,IACH,CAAC,UAAU,GAAG,EAAE,GAAG,YAAY,CAAC,aAAa,GAAG,IAAI;AAAA,EACrD,CAAC;AACF;AAEO,MAAM,oBAAoB,CAChC,YACA,eACA,QACI;AACJ,QAAM,cAAc,qBAAqB,SAAS;AAClD,QAAM,aAAa,YAAY,UAAU,KAAK,CAAC;AAE/C,MAAI,QAAQ,MAAM;AACjB,QAAI,EAAE,iBAAiB,YAAa;AACpC,UAAM,EAAE,CAAC,aAAa,GAAG,GAAG,GAAG,WAAW,IAAI;AAC9C,UAAM,OACL,OAAO,KAAK,UAAU,EAAE,WAAW,KAC/B,MAAM;AACP,YAAM,EAAE,CAAC,UAAU,GAAG,IAAI,GAAG,KAAK,IAAI;AACtC,aAAO;AAAA,IACR,GAAG,IACF,EAAE,GAAG,aAAa,CAAC,UAAU,GAAG,WAAW;AAC/C,yBAAqB,KAAK,IAAI;AAC9B;AAAA,EACD;AAEA,MAAI,WAAW,aAAa,MAAM,IAAK;AAEvC,uBAAqB,KAAK;AAAA,IACzB,GAAG;AAAA,IACH,CAAC,UAAU,GAAG,EAAE,GAAG,YAAY,CAAC,aAAa,GAAG,IAAI;AAAA,EACrD,CAAC;AACF;AAEO,MAAM,iBAAiB,CAAC,eAAuB;AACrD,SAAO,cAAc,CAAC,oBAAoB,oBAAoB,CAAC,EAAE;AAAA,IAChE,IAAI,CAAC,CAAC,eAAe,eAAe,MAAM;AAEzC,YAAM,gBAAgB,cAAc,UAAU,KAAK,CAAC;AACpD,YAAM,kBAAkB,gBAAgB,UAAU,KAAK,CAAC;AAGxD,aAAO;AAAA,QACN,WAAW;AAAA,QACX,aAAa;AAAA,MACd;AAAA,IACD,CAAC;AAAA,IACD;AAAA,MACC,CAAC,WACA,OAAO,cAAc,QACrB,OAAO,KAAK,OAAO,SAAS,EAAE,SAAS;AAAA,IACzC;AAAA;AAAA,EACD;AACD;AAIO,MAAM,kBAAkB,CAAC;AAAA,EAC/B;AAAA,EACA;AACD,MAGM;AACL,SAAO,mBAAmB;AAAA,IACzB,IAAI,CAAC,SAAmB;AACvB,UAAI,YAAY;AAEf,eAAO,KAAK,UAAU,IAAI,aAAa,KAAK;AAAA,MAC7C,OAAO;AAEN,eAAO,OAAO,QAAQ,IAAI,EAAE;AAAA,UAC3B,CAAC,CAAC,KAAK,KAAK,MAAM,KAAK,GAAG,EAAE,aAAa;AAAA,QAC1C,IAAI,CAAC,EAAE,aAAa;AAAA,MACrB;AAAA,IAUD,CAAC;AAAA,IACD,OAAO,CAAC,QAAQ,QAAQ,IAAI;AAAA,EAC7B;AACD;AAEO,MAAM,oBAAoB,CAAC;AAAA,EACjC;AAAA,EACA;AACD,MAGM;AACL,SAAO,qBAAqB;AAAA,IAC3B,IAAI,CAAC,SAAmB;AACvB,UAAI,YAAY;AAEf,eAAO,KAAK,UAAU,IAAI,aAAa,KAAK;AAAA,MAC7C,OAAO;AAEN,eAAO,OAAO,QAAQ,IAAI,EAAE;AAAA,UAC3B,CAAC,CAAC,KAAK,KAAK,MAAM,KAAK,GAAG,EAAE,aAAa;AAAA,QAC1C,IAAI,CAAC,EAAE,aAAa;AAAA,MACrB;AAAA,IAUD,CAAC;AAAA,IACD,OAAO,CAAC,QAAQ,QAAQ,IAAI;AAAA,EAC7B;AACD;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/store/index.ts"],"sourcesContent":["export * from \"./FlexLayoutContainerStore\";\r\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,uCAAd;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/store/index.ts"],"sourcesContent":["export * from \"./FlexLayoutContainerStore\";\r\n"],"mappings":"AAAA,cAAc;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/types/FlexDirectionTypes.ts"],"sourcesContent":["export type FlexDirectionModelType = {\r\n xy: 'x' | 'y';\r\n targetDirection: 'left' | 'top';\r\n sizeName: 'width' | 'height' | keyof DOMRect;\r\n resizeCursor: 'ew-resize' | 'ns-resize';\r\n};\r\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/types/FlexLayoutTypes.ts"],"sourcesContent":["import { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\r\n\r\nexport type ResizePanelMode =\r\n\t| \"default\"\r\n\t| \"bottom-cylinder\"\r\n\t| \"bottom-cylinder-reverse\"\r\n\t| \"top-cylinder\"\r\n\t| \"left-cylinder\"\r\n\t| \"right-cylinder\";\r\n\r\nexport type Direction = \"row\" | \"column\";\r\nexport type PanelMovementMode = \"bulldozer\" | \"divorce\" | \"stalker\";\r\nexport type FitContent = \"width\" | \"height\";\r\n\r\nexport interface FlexLayoutChildrenType {\r\n\tisInitialResizable?: boolean;\r\n\tgrow?: number;\r\n\tprevGrow?: number;\r\n\tpanelMode?: ResizePanelMode;\r\n\tisFitContent?: boolean;\r\n\tisFitResize?: boolean;\r\n\tisResizePanel?: boolean;\r\n\tcontainerName: string;\r\n\tchildren: ReactNode;\r\n\tclassName?: string;\r\n}\r\n\r\nexport interface FlexContainerProps extends FlexLayoutChildrenType {\r\n\t// readonly fitContent?: FitContent;\r\n\t// readonly containerCount?: number;\r\n\t// readonly layoutName?: string;\r\n}\r\n\r\nexport interface FlexLayoutPanelStyle {\r\n\tcolor: string;\r\n\thoverColor?: string;\r\n}\r\n\r\nexport interface FlexLayoutProps extends Omit<\r\n\tHTMLAttributes<HTMLDivElement>,\r\n\t\"children\" | \"id\" | \"panelClassName\"\r\n> {\r\n\tdirection: Direction;\r\n\tchildren:\r\n\t\t| ReactElement<FlexLayoutChildrenType>[]\r\n\t\t| ReactElement<FlexLayoutChildrenType>;\r\n\tlayoutName: string;\r\n\tisSplitScreen?: boolean;\r\n\tref?: Ref<HTMLDivElement>;\r\n\tclassName?: string;\r\n\tpanelClassName?: string;\r\n\tpanelMovementMode?: PanelMovementMode;\r\n}\r\n\r\nexport type FlexLayoutResizePanelProps = {\r\n\tdirection: string;\r\n\tcontainerCount: number;\r\n\tpanelMode?: ResizePanelMode;\r\n\tcontainerName: string;\r\n\tlayoutName: string;\r\n\tpanelMovementMode: PanelMovementMode;\r\n\tpanelClassName?: string;\r\n\tonResizingChange?: (isResizing: boolean) => void;\r\n};\r\n\r\nexport interface FlexLayoutContextValue {\r\n\tlayoutName: string;\r\n\tdirection: Direction;\r\n\tpanelMovementMode: PanelMovementMode;\r\n\tpanelClassName?: string;\r\n\tcontainerCount: number;\r\n\tfitContent: FitContent;\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/utils/FlexLayoutUtils.ts"],"sourcesContent":["export function isDocumentOut({ x, y }: { x: number; y: number }) {\r\n\tif (typeof window == \"undefined\") return;\r\n\tconst { innerWidth, innerHeight, scrollX, scrollY } = window;\r\n\r\n\treturn (\r\n\t\tx < 0 || y < 0 || x > innerWidth + scrollX || y > innerHeight + scrollY\r\n\t);\r\n}\r\n\r\nlet lastTouchEvent: globalThis.TouchEvent;\r\nexport function getClientXy(event: Event) {\r\n\tlet clientX: number;\r\n\tlet clientY: number;\r\n\tif (window.MouseEvent && event instanceof window.MouseEvent) {\r\n\t\tclientX = event.clientX;\r\n\t\tclientY = event.clientY;\r\n\t} else if (window.TouchEvent && event instanceof window.TouchEvent) {\r\n\t\tconst _event = event.touches.length == 0 ? lastTouchEvent : event;\r\n\t\tclientX = _event!.touches[0].clientX;\r\n\t\tclientY = _event!.touches[0].clientY;\r\n\t\tlastTouchEvent = event;\r\n\t} else {\r\n\t\treturn; // 해당 이벤트 타입이 MouseEvent나 TouchEvent가 아니라면 무시\r\n\t}\r\n\treturn { clientX, clientY };\r\n}\r\n\r\nexport function isOverMove(elementSize: number, elementMinSize: number) {\r\n\treturn (\r\n\t\tMath.floor(elementSize) <= 0 ||\r\n\t\t(isNaN(elementMinSize)\r\n\t\t\t? false\r\n\t\t\t: elementMinSize >= Math.floor(elementSize))\r\n\t);\r\n}\r\n\r\nexport function findNotCloseFlexContent(\r\n\ttarget: HTMLElement | Element | null,\r\n\tdirection: \"previousElementSibling\" | \"nextElementSibling\",\r\n) {\r\n\tif (!target) return target;\r\n\tlet _target = target as HTMLElement;\r\n\tconst isCloseCheck = () => {\r\n\t\tlet grow =\r\n\t\t\tparseFloat(window.getComputedStyle(_target).flex.split(\" \")[0]) ||\r\n\t\t\t0;\r\n\t\tif (grow == 0) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\twhile (isCloseCheck()) {\r\n\t\tlet nextTarget = _target[direction]?.[direction];\r\n\t\t_target = nextTarget as HTMLElement;\r\n\t\tif (!_target) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\treturn _target as HTMLElement | HTMLDivElement | null;\r\n}\r\n\r\nexport function remain(flexContainerList: Array<HTMLElement>) {\r\n\treturn new Promise((resolve) => {\r\n\t\tlet notGrowList: Array<HTMLElement> = [];\r\n\t\tlet totalGrow = flexContainerList.reduce((t, e, i) => {\r\n\t\t\tif (e.hasAttribute(\"data-grow\") == false) {\r\n\t\t\t\tnotGrowList.push(e);\r\n\t\t\t\treturn t;\r\n\t\t\t}\r\n\t\t\tlet grow = parseFloat(e.dataset.grow || \"\");\r\n\t\t\te.style.flex = `${grow} 1 0%`;\r\n\t\t\tt -= grow;\r\n\t\t\treturn t;\r\n\t\t}, flexContainerList.length);\r\n\r\n\t\tif (notGrowList.length != 0) {\r\n\t\t\tresize(notGrowList, totalGrow);\r\n\t\t}\r\n\r\n\t\tresolve(flexContainerList);\r\n\t});\r\n}\r\n\r\nexport function resize(list: Array<HTMLElement>, totalGrow: number) {\r\n\treturn new Promise((resolve) => {\r\n\t\t// totalGrow 값을 리스트의 개수로 나누어 균등 할당\r\n\t\tlet resizeWeight = totalGrow / list.length;\r\n\t\tlist.forEach((e) => {\r\n\t\t\te.dataset.grow = resizeWeight.toString();\r\n\t\t\te.style.flex = `${resizeWeight} 1 0%`;\r\n\t\t});\r\n\t\tresolve(resizeWeight);\r\n\t});\r\n}\r\n\r\nexport function mathWeight(totalCount: number, totalGrow: number) {\r\n\treturn 1 + (totalGrow - totalCount) / totalCount;\r\n}\r\nexport function mathGrow(\r\n\tchildSize: number,\r\n\tparentSize: number,\r\n\tcontainerCount: number,\r\n) {\r\n\treturn containerCount * (childSize / parentSize);\r\n}\r\n\r\nexport function getGrow(el: HTMLElement | Element) {\r\n\tconst target = el instanceof Element ? (el as HTMLElement) : el;\r\n\tconst a = parseFloat(target.style.flex.split(\" \")[0]);\r\n\tif (!Number.isNaN(a)) return a; // 0도 정상값\r\n\tconst b = parseFloat(target.dataset.grow ?? \"0\");\r\n\treturn Number.isNaN(b) ? 0 : b;\r\n}\r\n\r\nexport function closeFlex(\r\n\tresizeTarget: HTMLElement,\r\n\tcontainers: HTMLElement[],\r\n\t{\r\n\t\tisResize = false,\r\n\t\tisDsiabledResizePanel = false,\r\n\t\tsizeName,\r\n\t}: {\r\n\t\tisResize?: boolean;\r\n\t\tisDsiabledResizePanel?: boolean;\r\n\t\tsizeName: \"width\" | \"height\";\r\n\t},\r\n) {\r\n\treturn new Promise((resolve) => {\r\n\t\tif (!resizeTarget.hasAttribute(\"data-is_resize_panel\")) {\r\n\t\t\t// resolve(resizeTarget);\r\n\t\t\t// return;\r\n\t\t} else if (isDsiabledResizePanel) {\r\n\t\t\tresizeTarget.dataset.is_resize_panel = \"false\";\r\n\t\t}\r\n\r\n\t\tresizeTarget.dataset.prev_grow = getGrow(resizeTarget).toString();\r\n\r\n\t\tlet notCloseList = containers.filter(\r\n\t\t\t(e) => e.style.flex != \"0 1 0%\" && e != resizeTarget,\r\n\t\t);\r\n\t\tlet notCloseAndOpenTargetList = [...notCloseList, resizeTarget];\r\n\t\t//let resizeWeight = this.mathWeight(notCloseList, this.#forResizeList.length);\r\n\t\tnotCloseAndOpenTargetList.forEach((e) => {\r\n\t\t\te.style.transition = \"flex 0.5s\";\r\n\t\t\te.ontransitionend = (event) => {\r\n\t\t\t\tif (event.propertyName != \"flex-grow\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tnotCloseAndOpenTargetList.forEach(\r\n\t\t\t\t\t(e) => (e.style.transition = \"\"),\r\n\t\t\t\t);\r\n\t\t\t\t//e.style.transition = '';\r\n\t\t\t\te.ontransitionend = () => {};\r\n\t\t\t};\r\n\r\n\t\t\tif (e == resizeTarget) {\r\n\t\t\t\te.dataset.grow = \"0\";\r\n\t\t\t\te.style.flex = `0 1 0%`;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (isResize) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet percent = getGrow(e) / containers.length;\r\n\t\t\t//let percentWeight = this.#forResizeList.length * percent;\r\n\t\t\t//let remainWeight = resizeWeight * percent;\r\n\t\t\tif (notCloseList.length == 1) {\r\n\t\t\t\te.dataset.grow = containers.length.toString();\r\n\t\t\t\te.style.flex = `${containers.length} 1 0%`;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\te.dataset.grow = (containers.length * percent).toString();\r\n\t\t\te.style.flex = `${containers.length * percent} 1 0%`;\r\n\t\t});\r\n\r\n\t\tif (isResize) {\r\n\t\t\tresize(notCloseList, containers.length);\r\n\t\t}\r\n\r\n\t\tresolve(resizeTarget);\r\n\t});\r\n}\r\n\r\nexport function openFlex(\r\n\tresizeTarget: HTMLElement,\r\n\tcontainers: HTMLElement[],\r\n\t{\r\n\t\tisPrevSizeOpen = false,\r\n\t\tisResize = false,\r\n\t\topenGrowImportant = 0,\r\n\t\tsizeName,\r\n\t}: {\r\n\t\tisPrevSizeOpen?: boolean;\r\n\t\tisResize?: boolean;\r\n\t\topenGrowImportant?: number;\r\n\t\tsizeName?: \"width\" | \"height\"; // 유니언 타입으로 수정\r\n\t},\r\n) {\r\n\treturn new Promise((resolve) => {\r\n\t\tif (!resizeTarget.hasAttribute(\"data-is_resize_panel\")) {\r\n\t\t\t// resolve(resizeTarget);\r\n\t\t\t// return;\r\n\t\t} else if (\r\n\t\t\tresizeTarget.hasAttribute(\"data-is_resize_panel\") &&\r\n\t\t\tresizeTarget.dataset.is_resize_panel == \"false\"\r\n\t\t) {\r\n\t\t\tresizeTarget.dataset.is_resize_panel = \"true\";\r\n\t\t}\r\n\r\n\t\tlet notCloseList = containers.filter(\r\n\t\t\t(e) => e.style.flex != \"0 1 0%\" && e != resizeTarget,\r\n\t\t);\r\n\t\tlet notCloseAndOpenTargetList = [...notCloseList, resizeTarget];\r\n\t\t//let resizeWeight = this.mathWeight(notCloseAndOpenTargetList, this.#forResizeList.length);\r\n\t\tlet openTargetGrow = 1;\r\n\t\tconst sizeStyleName = (\"client\" +\r\n\t\t\tsizeName!.charAt(0).toUpperCase() +\r\n\t\t\tsizeName!.substring(1)) as \"clientHeight\" | \"clientWidth\";\r\n\t\tconst parentSize =\r\n\t\t\t(sizeName &&\r\n\t\t\t\tresizeTarget.parentElement &&\r\n\t\t\t\tresizeTarget.parentElement[sizeStyleName]) ||\r\n\t\t\t0;\r\n\t\tif (isPrevSizeOpen && resizeTarget.hasAttribute(\"data-prev_grow\")) {\r\n\t\t\topenTargetGrow =\r\n\t\t\t\tparseFloat(resizeTarget.dataset.prev_grow || \"1\") || 1;\r\n\t\t\t//resizeTarget.removeAttribute('data-prev_grow');\r\n\t\t} else if (parentSize && parentSize !== 0) {\r\n\t\t\topenTargetGrow =\r\n\t\t\t\t(parentSize / notCloseList.length / (parentSize - 1)) *\r\n\t\t\t\tcontainers.length;\r\n\t\t} else {\r\n\t\t\topenTargetGrow = 1;\r\n\t\t}\r\n\t\tif (openGrowImportant) {\r\n\t\t\topenTargetGrow = openGrowImportant;\r\n\t\t}\r\n\t\topenTargetGrow = openTargetGrow === Infinity ? 1 : openTargetGrow;\r\n\t\t//notCloseList.forEach(e=>{\r\n\t\tnotCloseAndOpenTargetList.forEach((e) => {\r\n\t\t\te.style.transition = \"flex 0.5s\";\r\n\t\t\te.ontransitionend = (event) => {\r\n\t\t\t\tif (event.propertyName != \"flex-grow\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tnotCloseAndOpenTargetList.forEach(\r\n\t\t\t\t\t(e) => (e.style.transition = \"\"),\r\n\t\t\t\t);\r\n\t\t\t\t//e.style.transition = '';\r\n\t\t\t\te.ontransitionend = () => {};\r\n\t\t\t};\r\n\r\n\t\t\tif (e == resizeTarget) {\r\n\t\t\t\tresizeTarget.dataset.grow = openTargetGrow.toString();\r\n\t\t\t\tresizeTarget.style.flex = `${openTargetGrow} 1 0%`;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (isResize) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet grow =\r\n\t\t\t\t(parentSize / notCloseList.length / (parentSize - 1)) *\r\n\t\t\t\t(containers.length - openTargetGrow);\r\n\t\t\tgrow = grow === Infinity ? 1 : grow;\r\n\t\t\t//let percent = getGrow(e) / totalGrow - openTargetGrow / totalGrow;\r\n\t\t\te.dataset.grow = grow.toString();\r\n\r\n\t\t\te.style.flex = `${grow} 1 0%`;\r\n\t\t});\r\n\r\n\t\tif (isResize) {\r\n\t\t\tresize(notCloseAndOpenTargetList, containers.length);\r\n\t\t}\r\n\r\n\t\tresolve(openTargetGrow);\r\n\t});\r\n}\r\n"],"mappings":"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","names":["e"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/utils/FlexLayoutUtils.ts"],"sourcesContent":["export function isDocumentOut({ x, y }: { x: number; y: number }) {\r\n\tif (typeof window == \"undefined\") return;\r\n\tconst { innerWidth, innerHeight, scrollX, scrollY } = window;\r\n\r\n\treturn (\r\n\t\tx < 0 || y < 0 || x > innerWidth + scrollX || y > innerHeight + scrollY\r\n\t);\r\n}\r\n\r\nlet lastTouchEvent: globalThis.TouchEvent;\r\nexport function getClientXy(event: Event) {\r\n\tlet clientX: number;\r\n\tlet clientY: number;\r\n\tif (window.MouseEvent && event instanceof window.MouseEvent) {\r\n\t\tclientX = event.clientX;\r\n\t\tclientY = event.clientY;\r\n\t} else if (window.TouchEvent && event instanceof window.TouchEvent) {\r\n\t\tconst _event = event.touches.length == 0 ? lastTouchEvent : event;\r\n\t\tclientX = _event!.touches[0].clientX;\r\n\t\tclientY = _event!.touches[0].clientY;\r\n\t\tlastTouchEvent = event;\r\n\t} else {\r\n\t\treturn; // 해당 이벤트 타입이 MouseEvent나 TouchEvent가 아니라면 무시\r\n\t}\r\n\treturn { clientX, clientY };\r\n}\r\n\r\nexport function isOverMove(elementSize: number, elementMinSize: number) {\r\n\treturn (\r\n\t\tMath.floor(elementSize) <= 0 ||\r\n\t\t(isNaN(elementMinSize)\r\n\t\t\t? false\r\n\t\t\t: elementMinSize >= Math.floor(elementSize))\r\n\t);\r\n}\r\n\r\nexport function findNotCloseFlexContent(\r\n\ttarget: HTMLElement | Element | null,\r\n\tdirection: \"previousElementSibling\" | \"nextElementSibling\",\r\n) {\r\n\tif (!target) return target;\r\n\tlet _target = target as HTMLElement;\r\n\tconst isCloseCheck = () => {\r\n\t\tlet grow =\r\n\t\t\tparseFloat(window.getComputedStyle(_target).flex.split(\" \")[0]) ||\r\n\t\t\t0;\r\n\t\tif (grow == 0) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\twhile (isCloseCheck()) {\r\n\t\tlet nextTarget = _target[direction]?.[direction];\r\n\t\t_target = nextTarget as HTMLElement;\r\n\t\tif (!_target) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\treturn _target as HTMLElement | HTMLDivElement | null;\r\n}\r\n\r\nexport function remain(flexContainerList: Array<HTMLElement>) {\r\n\treturn new Promise((resolve) => {\r\n\t\tlet notGrowList: Array<HTMLElement> = [];\r\n\t\tlet totalGrow = flexContainerList.reduce((t, e, i) => {\r\n\t\t\tif (e.hasAttribute(\"data-grow\") == false) {\r\n\t\t\t\tnotGrowList.push(e);\r\n\t\t\t\treturn t;\r\n\t\t\t}\r\n\t\t\tlet grow = parseFloat(e.dataset.grow || \"\");\r\n\t\t\te.style.flex = `${grow} 1 0%`;\r\n\t\t\tt -= grow;\r\n\t\t\treturn t;\r\n\t\t}, flexContainerList.length);\r\n\r\n\t\tif (notGrowList.length != 0) {\r\n\t\t\tresize(notGrowList, totalGrow);\r\n\t\t}\r\n\r\n\t\tresolve(flexContainerList);\r\n\t});\r\n}\r\n\r\nexport function resize(list: Array<HTMLElement>, totalGrow: number) {\r\n\treturn new Promise((resolve) => {\r\n\t\t// totalGrow 값을 리스트의 개수로 나누어 균등 할당\r\n\t\tlet resizeWeight = totalGrow / list.length;\r\n\t\tlist.forEach((e) => {\r\n\t\t\te.dataset.grow = resizeWeight.toString();\r\n\t\t\te.style.flex = `${resizeWeight} 1 0%`;\r\n\t\t});\r\n\t\tresolve(resizeWeight);\r\n\t});\r\n}\r\n\r\nexport function mathWeight(totalCount: number, totalGrow: number) {\r\n\treturn 1 + (totalGrow - totalCount) / totalCount;\r\n}\r\nexport function mathGrow(\r\n\tchildSize: number,\r\n\tparentSize: number,\r\n\tcontainerCount: number,\r\n) {\r\n\treturn containerCount * (childSize / parentSize);\r\n}\r\n\r\nexport function getGrow(el: HTMLElement | Element) {\r\n\tconst target = el instanceof Element ? (el as HTMLElement) : el;\r\n\tconst a = parseFloat(target.style.flex.split(\" \")[0]);\r\n\tif (!Number.isNaN(a)) return a; // 0도 정상값\r\n\tconst b = parseFloat(target.dataset.grow ?? \"0\");\r\n\treturn Number.isNaN(b) ? 0 : b;\r\n}\r\n\r\nexport function closeFlex(\r\n\tresizeTarget: HTMLElement,\r\n\tcontainers: HTMLElement[],\r\n\t{\r\n\t\tisResize = false,\r\n\t\tisDsiabledResizePanel = false,\r\n\t\tsizeName,\r\n\t}: {\r\n\t\tisResize?: boolean;\r\n\t\tisDsiabledResizePanel?: boolean;\r\n\t\tsizeName: \"width\" | \"height\";\r\n\t},\r\n) {\r\n\treturn new Promise((resolve) => {\r\n\t\tif (!resizeTarget.hasAttribute(\"data-is_resize_panel\")) {\r\n\t\t\t// resolve(resizeTarget);\r\n\t\t\t// return;\r\n\t\t} else if (isDsiabledResizePanel) {\r\n\t\t\tresizeTarget.dataset.is_resize_panel = \"false\";\r\n\t\t}\r\n\r\n\t\tresizeTarget.dataset.prev_grow = getGrow(resizeTarget).toString();\r\n\r\n\t\tlet notCloseList = containers.filter(\r\n\t\t\t(e) => e.style.flex != \"0 1 0%\" && e != resizeTarget,\r\n\t\t);\r\n\t\tlet notCloseAndOpenTargetList = [...notCloseList, resizeTarget];\r\n\t\t//let resizeWeight = this.mathWeight(notCloseList, this.#forResizeList.length);\r\n\t\tnotCloseAndOpenTargetList.forEach((e) => {\r\n\t\t\te.style.transition = \"flex 0.5s\";\r\n\t\t\te.ontransitionend = (event) => {\r\n\t\t\t\tif (event.propertyName != \"flex-grow\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tnotCloseAndOpenTargetList.forEach(\r\n\t\t\t\t\t(e) => (e.style.transition = \"\"),\r\n\t\t\t\t);\r\n\t\t\t\t//e.style.transition = '';\r\n\t\t\t\te.ontransitionend = () => {};\r\n\t\t\t};\r\n\r\n\t\t\tif (e == resizeTarget) {\r\n\t\t\t\te.dataset.grow = \"0\";\r\n\t\t\t\te.style.flex = `0 1 0%`;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (isResize) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet percent = getGrow(e) / containers.length;\r\n\t\t\t//let percentWeight = this.#forResizeList.length * percent;\r\n\t\t\t//let remainWeight = resizeWeight * percent;\r\n\t\t\tif (notCloseList.length == 1) {\r\n\t\t\t\te.dataset.grow = containers.length.toString();\r\n\t\t\t\te.style.flex = `${containers.length} 1 0%`;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\te.dataset.grow = (containers.length * percent).toString();\r\n\t\t\te.style.flex = `${containers.length * percent} 1 0%`;\r\n\t\t});\r\n\r\n\t\tif (isResize) {\r\n\t\t\tresize(notCloseList, containers.length);\r\n\t\t}\r\n\r\n\t\tresolve(resizeTarget);\r\n\t});\r\n}\r\n\r\nexport function openFlex(\r\n\tresizeTarget: HTMLElement,\r\n\tcontainers: HTMLElement[],\r\n\t{\r\n\t\tisPrevSizeOpen = false,\r\n\t\tisResize = false,\r\n\t\topenGrowImportant = 0,\r\n\t\tsizeName,\r\n\t}: {\r\n\t\tisPrevSizeOpen?: boolean;\r\n\t\tisResize?: boolean;\r\n\t\topenGrowImportant?: number;\r\n\t\tsizeName?: \"width\" | \"height\"; // 유니언 타입으로 수정\r\n\t},\r\n) {\r\n\treturn new Promise((resolve) => {\r\n\t\tif (!resizeTarget.hasAttribute(\"data-is_resize_panel\")) {\r\n\t\t\t// resolve(resizeTarget);\r\n\t\t\t// return;\r\n\t\t} else if (\r\n\t\t\tresizeTarget.hasAttribute(\"data-is_resize_panel\") &&\r\n\t\t\tresizeTarget.dataset.is_resize_panel == \"false\"\r\n\t\t) {\r\n\t\t\tresizeTarget.dataset.is_resize_panel = \"true\";\r\n\t\t}\r\n\r\n\t\tlet notCloseList = containers.filter(\r\n\t\t\t(e) => e.style.flex != \"0 1 0%\" && e != resizeTarget,\r\n\t\t);\r\n\t\tlet notCloseAndOpenTargetList = [...notCloseList, resizeTarget];\r\n\t\t//let resizeWeight = this.mathWeight(notCloseAndOpenTargetList, this.#forResizeList.length);\r\n\t\tlet openTargetGrow = 1;\r\n\t\tconst sizeStyleName = (\"client\" +\r\n\t\t\tsizeName!.charAt(0).toUpperCase() +\r\n\t\t\tsizeName!.substring(1)) as \"clientHeight\" | \"clientWidth\";\r\n\t\tconst parentSize =\r\n\t\t\t(sizeName &&\r\n\t\t\t\tresizeTarget.parentElement &&\r\n\t\t\t\tresizeTarget.parentElement[sizeStyleName]) ||\r\n\t\t\t0;\r\n\t\tif (isPrevSizeOpen && resizeTarget.hasAttribute(\"data-prev_grow\")) {\r\n\t\t\topenTargetGrow =\r\n\t\t\t\tparseFloat(resizeTarget.dataset.prev_grow || \"1\") || 1;\r\n\t\t\t//resizeTarget.removeAttribute('data-prev_grow');\r\n\t\t} else if (parentSize && parentSize !== 0) {\r\n\t\t\topenTargetGrow =\r\n\t\t\t\t(parentSize / notCloseList.length / (parentSize - 1)) *\r\n\t\t\t\tcontainers.length;\r\n\t\t} else {\r\n\t\t\topenTargetGrow = 1;\r\n\t\t}\r\n\t\tif (openGrowImportant) {\r\n\t\t\topenTargetGrow = openGrowImportant;\r\n\t\t}\r\n\t\topenTargetGrow = openTargetGrow === Infinity ? 1 : openTargetGrow;\r\n\t\t//notCloseList.forEach(e=>{\r\n\t\tnotCloseAndOpenTargetList.forEach((e) => {\r\n\t\t\te.style.transition = \"flex 0.5s\";\r\n\t\t\te.ontransitionend = (event) => {\r\n\t\t\t\tif (event.propertyName != \"flex-grow\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tnotCloseAndOpenTargetList.forEach(\r\n\t\t\t\t\t(e) => (e.style.transition = \"\"),\r\n\t\t\t\t);\r\n\t\t\t\t//e.style.transition = '';\r\n\t\t\t\te.ontransitionend = () => {};\r\n\t\t\t};\r\n\r\n\t\t\tif (e == resizeTarget) {\r\n\t\t\t\tresizeTarget.dataset.grow = openTargetGrow.toString();\r\n\t\t\t\tresizeTarget.style.flex = `${openTargetGrow} 1 0%`;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (isResize) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet grow =\r\n\t\t\t\t(parentSize / notCloseList.length / (parentSize - 1)) *\r\n\t\t\t\t(containers.length - openTargetGrow);\r\n\t\t\tgrow = grow === Infinity ? 1 : grow;\r\n\t\t\t//let percent = getGrow(e) / totalGrow - openTargetGrow / totalGrow;\r\n\t\t\te.dataset.grow = grow.toString();\r\n\r\n\t\t\te.style.flex = `${grow} 1 0%`;\r\n\t\t});\r\n\r\n\t\tif (isResize) {\r\n\t\t\tresize(notCloseAndOpenTargetList, containers.length);\r\n\t\t}\r\n\r\n\t\tresolve(openTargetGrow);\r\n\t});\r\n}\r\n"],"mappings":"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","names":["e"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/utils/index.ts"],"sourcesContent":["export * from \"./FlexLayoutUtils\";\r\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,8BAAd;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/flex-layout/utils/index.ts"],"sourcesContent":["export * from \"./FlexLayoutUtils\";\r\n"],"mappings":"AAAA,cAAc;","names":[]}
|
package/dist/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["//src/index.ts\r\n\r\nexport * from \"./flex-layout\";\r\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAEA,0BAAc,0BAFd;","names":[]}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["//src/index.ts\r\n\r\nexport * from \"./flex-layout\";\r\n"],"mappings":"AAEA,cAAc;","names":[]}
|
package/dist/metafile-cjs.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"inputs":{"src/index.ts":{"bytes":50,"imports":[],"format":"esm"},"src/flex-layout/index.ts":{"bytes":165,"imports":[],"format":"esm"},"src/types/css.d.ts":{"bytes":106,"imports":[],"format":"esm"},"src/flex-layout/hooks/index.ts":{"bytes":62,"imports":[],"format":"esm"},"src/flex-layout/hooks/useDrag.ts":{"bytes":13017,"imports":[],"format":"esm"},"src/flex-layout/hooks/useFlexLayoutSplitScreen.ts":{"bytes":5735,"imports":[],"format":"esm"},"src/flex-layout/hooks/useListPaging.ts":{"bytes":7358,"imports":[],"format":"esm"},"src/flex-layout/hooks/useSizes.ts":{"bytes":3559,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayout.tsx":{"bytes":3598,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutContainer.tsx":{"bytes":9691,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutIFramePane.tsx":{"bytes":1187,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutResizePanel.tsx":{"bytes":9597,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutSplitScreen.tsx":{"bytes":52196,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutSplitScreenDragBox.tsx":{"bytes":18569,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.tsx":{"bytes":782,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.tsx":{"bytes":1090,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.tsx":{"bytes":576,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutSplitScreenScrollBox.tsx":{"bytes":4273,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutStickyBox.tsx":{"bytes":8825,"imports":[],"format":"esm"},"src/flex-layout/components/index.ts":{"bytes":583,"imports":[],"format":"esm"},"src/flex-layout/providers/FlexLayoutContext.tsx":{"bytes":859,"imports":[],"format":"esm"},"src/flex-layout/providers/FlexLayoutHooks.tsx":{"bytes":9967,"imports":[],"format":"esm"},"src/flex-layout/providers/index.ts":{"bytes":36,"imports":[],"format":"esm"},"src/flex-layout/store/FlexLayoutContainerStore.ts":{"bytes":9971,"imports":[],"format":"esm"},"src/flex-layout/store/index.ts":{"bytes":45,"imports":[],"format":"esm"},"src/flex-layout/utils/FlexLayoutUtils.ts":{"bytes":8040,"imports":[],"format":"esm"},"src/flex-layout/utils/index.ts":{"bytes":36,"imports":[],"format":"esm"},"src/flex-layout/types/FlexDirectionTypes.ts":{"bytes":199,"imports":[],"format":"esm"},"src/flex-layout/types/FlexLayoutTypes.ts":{"bytes":1892,"imports":[],"format":"esm"}},"outputs":{"dist/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":212},"dist/index.cjs":{"imports":[{"path":"./flex-layout","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":139}},"bytes":1077},"dist/flex-layout/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":434},"dist/flex-layout/index.cjs":{"imports":[{"path":"./components","kind":"require-call","external":true},{"path":"./hooks","kind":"require-call","external":true},{"path":"./providers","kind":"require-call","external":true},{"path":"./utils","kind":"require-call","external":true},{"path":"./store","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/index.ts","inputs":{"src/flex-layout/index.ts":{"bytesInOutput":436}},"bytes":1477},"dist/types/css.d.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/types/css.d.cjs":{"imports":[],"exports":[],"entryPoint":"src/types/css.d.ts","inputs":{"src/types/css.d.ts":{"bytesInOutput":0}},"bytes":14},"dist/flex-layout/hooks/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":265},"dist/flex-layout/hooks/index.cjs":{"imports":[{"path":"./useDrag","kind":"require-call","external":true},{"path":"./useListPaging","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/hooks/index.ts","inputs":{"src/flex-layout/hooks/index.ts":{"bytesInOutput":206}},"bytes":1173},"dist/flex-layout/hooks/useDrag.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":20515},"dist/flex-layout/hooks/useDrag.cjs":{"imports":[{"path":"fast-deep-equal","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"rxjs","kind":"require-call","external":true},{"path":"../utils/FlexLayoutUtils","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/hooks/useDrag.ts","inputs":{"src/flex-layout/hooks/useDrag.ts":{"bytesInOutput":8659}},"bytes":10343},"dist/flex-layout/hooks/useFlexLayoutSplitScreen.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9032},"dist/flex-layout/hooks/useFlexLayoutSplitScreen.cjs":{"imports":[{"path":"react","kind":"require-call","external":true},{"path":"./useDrag","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/hooks/useFlexLayoutSplitScreen.ts","inputs":{"src/flex-layout/hooks/useFlexLayoutSplitScreen.ts":{"bytesInOutput":3961}},"bytes":4878},"dist/flex-layout/hooks/useListPaging.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":12742},"dist/flex-layout/hooks/useListPaging.cjs":{"imports":[{"path":"react","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/hooks/useListPaging.ts","inputs":{"src/flex-layout/hooks/useListPaging.ts":{"bytesInOutput":6097}},"bytes":7061},"dist/flex-layout/hooks/useSizes.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6668},"dist/flex-layout/hooks/useSizes.cjs":{"imports":[{"path":"react","kind":"require-call","external":true},{"path":"rxjs","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/hooks/useSizes.ts","inputs":{"src/flex-layout/hooks/useSizes.ts":{"bytesInOutput":3365}},"bytes":4286},"dist/flex-layout/components/FlexLayout.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5759},"dist/flex-layout/components/FlexLayout.cjs":{"imports":[{"path":"react/jsx-runtime","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"../providers/FlexLayoutHooks","kind":"require-call","external":true},{"path":"../styles/FlexLayout.module.css","kind":"require-call","external":true},{"path":"../providers/FlexLayoutContext","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/components/FlexLayout.tsx","inputs":{"src/flex-layout/components/FlexLayout.tsx":{"bytesInOutput":2866}},"bytes":4276},"dist/flex-layout/components/FlexLayoutContainer.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":17192},"dist/flex-layout/components/FlexLayoutContainer.cjs":{"imports":[{"path":"react/jsx-runtime","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"../hooks/useSizes","kind":"require-call","external":true},{"path":"../providers/FlexLayoutContext","kind":"require-call","external":true},{"path":"../store/FlexLayoutContainerStore","kind":"require-call","external":true},{"path":"../styles/FlexLayout.module.css","kind":"require-call","external":true},{"path":"../utils/FlexLayoutUtils","kind":"require-call","external":true},{"path":"./FlexLayoutResizePanel","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/components/FlexLayoutContainer.tsx","inputs":{"src/flex-layout/components/FlexLayoutContainer.tsx":{"bytesInOutput":8974}},"bytes":10384},"dist/flex-layout/components/FlexLayoutIFramePane.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2338},"dist/flex-layout/components/FlexLayoutIFramePane.cjs":{"imports":[{"path":"react/jsx-runtime","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"rxjs","kind":"require-call","external":true},{"path":"../hooks","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/components/FlexLayoutIFramePane.tsx","inputs":{"src/flex-layout/components/FlexLayoutIFramePane.tsx":{"bytesInOutput":1523}},"bytes":2450},"dist/flex-layout/components/FlexLayoutResizePanel.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":16336},"dist/flex-layout/components/FlexLayoutResizePanel.cjs":{"imports":[{"path":"react/jsx-runtime","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"../hooks","kind":"require-call","external":true},{"path":"../store/FlexLayoutContainerStore","kind":"require-call","external":true},{"path":"../styles/FlexLayout.module.css","kind":"require-call","external":true},{"path":"../utils/FlexLayoutUtils","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/components/FlexLayoutResizePanel.tsx","inputs":{"src/flex-layout/components/FlexLayoutResizePanel.tsx":{"bytesInOutput":8690}},"bytes":10100},"dist/flex-layout/components/FlexLayoutSplitScreen.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93482},"dist/flex-layout/components/FlexLayoutSplitScreen.cjs":{"imports":[{"path":"react/jsx-runtime","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"../hooks/useDrag","kind":"require-call","external":true},{"path":"../hooks/useFlexLayoutSplitScreen","kind":"require-call","external":true},{"path":"../store/FlexLayoutContainerStore","kind":"require-call","external":true},{"path":"../styles/FlexLayout.module.css","kind":"require-call","external":true},{"path":"./FlexLayout","kind":"require-call","external":true},{"path":"./FlexLayoutContainer","kind":"require-call","external":true},{"path":"./FlexLayoutSplitScreenDragBox","kind":"require-call","external":true},{"path":"fast-deep-equal","kind":"require-call","external":true},{"path":"rxjs","kind":"require-call","external":true},{"path":"./FlexLayoutSplitScreenDragBoxContainer","kind":"require-call","external":true},{"path":"./FlexLayoutSplitScreenDragBoxItem","kind":"require-call","external":true},{"path":"./FlexLayoutSplitScreenDragBoxTitleMore","kind":"require-call","external":true},{"path":"./FlexLayoutSplitScreenScrollBox","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/components/FlexLayoutSplitScreen.tsx","inputs":{"src/flex-layout/components/FlexLayoutSplitScreen.tsx":{"bytesInOutput":53395}},"bytes":54805},"dist/flex-layout/components/FlexLayoutSplitScreenDragBox.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":33551},"dist/flex-layout/components/FlexLayoutSplitScreenDragBox.cjs":{"imports":[{"path":"react/jsx-runtime","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"../hooks/useDrag","kind":"require-call","external":true},{"path":"../styles/FlexLayout.module.css","kind":"require-call","external":true},{"path":"../utils/FlexLayoutUtils","kind":"require-call","external":true},{"path":"./FlexLayoutIFramePane","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/components/FlexLayoutSplitScreenDragBox.tsx","inputs":{"src/flex-layout/components/FlexLayoutSplitScreenDragBox.tsx":{"bytesInOutput":17117}},"bytes":18527},"dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1439},"dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.cjs":{"imports":[{"path":"react/jsx-runtime","kind":"require-call","external":true},{"path":"../styles/FlexLayout.module.css","kind":"require-call","external":true},{"path":"./FlexLayoutSplitScreenScrollBox","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.tsx","inputs":{"src/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.tsx":{"bytesInOutput":942}},"bytes":2352},"dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1965},"dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.cjs":{"imports":[{"path":"react/jsx-runtime","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"../hooks/useDrag","kind":"require-call","external":true},{"path":"../styles/FlexLayout.module.css","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.tsx","inputs":{"src/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.tsx":{"bytesInOutput":1288}},"bytes":2684},"dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1172},"dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.cjs":{"imports":[{"path":"react/jsx-runtime","kind":"require-call","external":true},{"path":"../styles/FlexLayout.module.css","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.tsx","inputs":{"src/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.tsx":{"bytesInOutput":942}},"bytes":2338},"dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7469},"dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.cjs":{"imports":[{"path":"react/jsx-runtime","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"rxjs","kind":"require-call","external":true},{"path":"rxjs/operators","kind":"require-call","external":true},{"path":"../store/FlexLayoutContainerStore","kind":"require-call","external":true},{"path":"../styles/listScroll.module.css","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/components/FlexLayoutSplitScreenScrollBox.tsx","inputs":{"src/flex-layout/components/FlexLayoutSplitScreenScrollBox.tsx":{"bytesInOutput":3938}},"bytes":5348},"dist/flex-layout/components/FlexLayoutStickyBox.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":15555},"dist/flex-layout/components/FlexLayoutStickyBox.cjs":{"imports":[{"path":"react/jsx-runtime","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/components/FlexLayoutStickyBox.tsx","inputs":{"src/flex-layout/components/FlexLayoutStickyBox.tsx":{"bytesInOutput":7363}},"bytes":8176},"dist/flex-layout/components/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":929},"dist/flex-layout/components/index.cjs":{"imports":[{"path":"./FlexLayout","kind":"require-call","external":true},{"path":"./FlexLayoutContainer","kind":"require-call","external":true},{"path":"./FlexLayoutResizePanel","kind":"require-call","external":true},{"path":"./FlexLayoutSplitScreen","kind":"require-call","external":true},{"path":"./FlexLayoutSplitScreenDragBox","kind":"require-call","external":true},{"path":"./FlexLayoutSplitScreenScrollBox","kind":"require-call","external":true},{"path":"./FlexLayoutStickyBox","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/components/index.ts","inputs":{"src/flex-layout/components/index.ts":{"bytesInOutput":1182}},"bytes":2844},"dist/flex-layout/providers/FlexLayoutContext.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1478},"dist/flex-layout/providers/FlexLayoutContext.cjs":{"imports":[{"path":"react/jsx-runtime","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/providers/FlexLayoutContext.tsx","inputs":{"src/flex-layout/providers/FlexLayoutContext.tsx":{"bytesInOutput":799}},"bytes":1748},"dist/flex-layout/providers/FlexLayoutHooks.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":17506},"dist/flex-layout/providers/FlexLayoutHooks.cjs":{"imports":[{"path":"react","kind":"require-call","external":true},{"path":"../store/FlexLayoutContainerStore","kind":"require-call","external":true},{"path":"../utils/FlexLayoutUtils","kind":"require-call","external":true},{"path":"rxjs","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/providers/FlexLayoutHooks.tsx","inputs":{"src/flex-layout/providers/FlexLayoutHooks.tsx":{"bytesInOutput":8989}},"bytes":10081},"dist/flex-layout/providers/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":222},"dist/flex-layout/providers/index.cjs":{"imports":[{"path":"./FlexLayoutHooks","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/providers/index.ts","inputs":{"src/flex-layout/providers/index.ts":{"bytesInOutput":155}},"bytes":1097},"dist/flex-layout/store/FlexLayoutContainerStore.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":16977},"dist/flex-layout/store/FlexLayoutContainerStore.cjs":{"imports":[{"path":"fast-deep-equal","kind":"require-call","external":true},{"path":"rxjs","kind":"require-call","external":true},{"path":"rxjs/operators","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/store/FlexLayoutContainerStore.ts","inputs":{"src/flex-layout/store/FlexLayoutContainerStore.ts":{"bytesInOutput":7485}},"bytes":9386},"dist/flex-layout/store/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":227},"dist/flex-layout/store/index.cjs":{"imports":[{"path":"./FlexLayoutContainerStore","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/store/index.ts","inputs":{"src/flex-layout/store/index.ts":{"bytesInOutput":152}},"bytes":1103},"dist/flex-layout/utils/FlexLayoutUtils.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":13981},"dist/flex-layout/utils/FlexLayoutUtils.cjs":{"imports":[],"exports":[],"entryPoint":"src/flex-layout/utils/FlexLayoutUtils.ts","inputs":{"src/flex-layout/utils/FlexLayoutUtils.ts":{"bytesInOutput":6954}},"bytes":7998},"dist/flex-layout/utils/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":218},"dist/flex-layout/utils/index.cjs":{"imports":[{"path":"./FlexLayoutUtils","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/flex-layout/utils/index.ts","inputs":{"src/flex-layout/utils/index.ts":{"bytesInOutput":143}},"bytes":1085},"dist/flex-layout/types/FlexDirectionTypes.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":384},"dist/flex-layout/types/FlexDirectionTypes.cjs":{"imports":[],"exports":[],"entryPoint":"src/flex-layout/types/FlexDirectionTypes.ts","inputs":{"src/flex-layout/types/FlexDirectionTypes.ts":{"bytesInOutput":96}},"bytes":767},"dist/flex-layout/types/FlexLayoutTypes.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2291},"dist/flex-layout/types/FlexLayoutTypes.cjs":{"imports":[],"exports":[],"entryPoint":"src/flex-layout/types/FlexLayoutTypes.ts","inputs":{"src/flex-layout/types/FlexLayoutTypes.ts":{"bytesInOutput":90}},"bytes":761}}}
|
package/dist/metafile-esm.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"inputs":{"src/index.ts":{"bytes":50,"imports":[],"format":"esm"},"src/flex-layout/index.ts":{"bytes":165,"imports":[],"format":"esm"},"src/types/css.d.ts":{"bytes":106,"imports":[],"format":"esm"},"src/flex-layout/hooks/index.ts":{"bytes":62,"imports":[],"format":"esm"},"src/flex-layout/hooks/useDrag.ts":{"bytes":13017,"imports":[],"format":"esm"},"src/flex-layout/hooks/useFlexLayoutSplitScreen.ts":{"bytes":5735,"imports":[],"format":"esm"},"src/flex-layout/hooks/useListPaging.ts":{"bytes":7358,"imports":[],"format":"esm"},"src/flex-layout/hooks/useSizes.ts":{"bytes":3559,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayout.tsx":{"bytes":3598,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutContainer.tsx":{"bytes":9691,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutIFramePane.tsx":{"bytes":1187,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutResizePanel.tsx":{"bytes":9597,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutSplitScreen.tsx":{"bytes":52196,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutSplitScreenDragBox.tsx":{"bytes":18569,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.tsx":{"bytes":782,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.tsx":{"bytes":1090,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.tsx":{"bytes":576,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutSplitScreenScrollBox.tsx":{"bytes":4273,"imports":[],"format":"esm"},"src/flex-layout/components/FlexLayoutStickyBox.tsx":{"bytes":8825,"imports":[],"format":"esm"},"src/flex-layout/components/index.ts":{"bytes":583,"imports":[],"format":"esm"},"src/flex-layout/providers/FlexLayoutContext.tsx":{"bytes":859,"imports":[],"format":"esm"},"src/flex-layout/providers/FlexLayoutHooks.tsx":{"bytes":9967,"imports":[],"format":"esm"},"src/flex-layout/providers/index.ts":{"bytes":36,"imports":[],"format":"esm"},"src/flex-layout/store/FlexLayoutContainerStore.ts":{"bytes":9971,"imports":[],"format":"esm"},"src/flex-layout/store/index.ts":{"bytes":45,"imports":[],"format":"esm"},"src/flex-layout/utils/FlexLayoutUtils.ts":{"bytes":8040,"imports":[],"format":"esm"},"src/flex-layout/utils/index.ts":{"bytes":36,"imports":[],"format":"esm"},"src/flex-layout/types/FlexDirectionTypes.ts":{"bytes":199,"imports":[],"format":"esm"},"src/flex-layout/types/FlexLayoutTypes.ts":{"bytes":1892,"imports":[],"format":"esm"}},"outputs":{"dist/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":180},"dist/index.js":{"imports":[{"path":"./flex-layout","kind":"import-statement","external":true}],"exports":[],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":31}},"bytes":31},"dist/flex-layout/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":374},"dist/flex-layout/index.js":{"imports":[{"path":"./components","kind":"import-statement","external":true},{"path":"./hooks","kind":"import-statement","external":true},{"path":"./providers","kind":"import-statement","external":true},{"path":"./utils","kind":"import-statement","external":true},{"path":"./store","kind":"import-statement","external":true}],"exports":[],"entryPoint":"src/flex-layout/index.ts","inputs":{"src/flex-layout/index.ts":{"bytesInOutput":134}},"bytes":134},"dist/types/css.d.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/types/css.d.js":{"imports":[],"exports":[],"entryPoint":"src/types/css.d.ts","inputs":{"src/types/css.d.ts":{"bytesInOutput":0}},"bytes":0},"dist/flex-layout/hooks/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":226},"dist/flex-layout/hooks/index.js":{"imports":[{"path":"./useDrag","kind":"import-statement","external":true},{"path":"./useListPaging","kind":"import-statement","external":true}],"exports":[],"entryPoint":"src/flex-layout/hooks/index.ts","inputs":{"src/flex-layout/hooks/index.ts":{"bytesInOutput":60}},"bytes":60},"dist/flex-layout/hooks/useDrag.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":20487},"dist/flex-layout/hooks/useDrag.js":{"imports":[{"path":"fast-deep-equal","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"rxjs","kind":"import-statement","external":true},{"path":"../utils/FlexLayoutUtils","kind":"import-statement","external":true}],"exports":["allSplitScreenCount","dragState","dragStateSubject","dropMovementEventSubject","folderEventSubject","isResizingSubject","setFolderEvent","useDragCapture","useDragEvents","useFolderEvent"],"entryPoint":"src/flex-layout/hooks/useDrag.ts","inputs":{"src/flex-layout/hooks/useDrag.ts":{"bytesInOutput":7649}},"bytes":7858},"dist/flex-layout/hooks/useFlexLayoutSplitScreen.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":9018},"dist/flex-layout/hooks/useFlexLayoutSplitScreen.js":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"./useDrag","kind":"import-statement","external":true}],"exports":["useFlexLayoutSplitScreen"],"entryPoint":"src/flex-layout/hooks/useFlexLayoutSplitScreen.ts","inputs":{"src/flex-layout/hooks/useFlexLayoutSplitScreen.ts":{"bytesInOutput":3613}},"bytes":3652},"dist/flex-layout/hooks/useListPaging.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":12715},"dist/flex-layout/hooks/useListPaging.js":{"imports":[{"path":"react","kind":"import-statement","external":true}],"exports":["useListPagingForSentinel","usePaginationViewNumber","usePagingHandler"],"entryPoint":"src/flex-layout/hooks/useListPaging.ts","inputs":{"src/flex-layout/hooks/useListPaging.ts":{"bytesInOutput":5525}},"bytes":5611},"dist/flex-layout/hooks/useSizes.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":6655},"dist/flex-layout/hooks/useSizes.js":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"rxjs","kind":"import-statement","external":true}],"exports":["useFirstChildSize","useSize"],"entryPoint":"src/flex-layout/hooks/useSizes.ts","inputs":{"src/flex-layout/hooks/useSizes.ts":{"bytesInOutput":3013}},"bytes":3056},"dist/flex-layout/components/FlexLayout.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":5782},"dist/flex-layout/components/FlexLayout.js":{"imports":[{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"../providers/FlexLayoutHooks","kind":"import-statement","external":true},{"path":"../styles/FlexLayout.module.css","kind":"import-statement","external":true},{"path":"../providers/FlexLayoutContext","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/flex-layout/components/FlexLayout.tsx","inputs":{"src/flex-layout/components/FlexLayout.tsx":{"bytesInOutput":2409}},"bytes":2459},"dist/flex-layout/components/FlexLayoutContainer.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":17112},"dist/flex-layout/components/FlexLayoutContainer.js":{"imports":[{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"../hooks/useSizes","kind":"import-statement","external":true},{"path":"../providers/FlexLayoutContext","kind":"import-statement","external":true},{"path":"../store/FlexLayoutContainerStore","kind":"import-statement","external":true},{"path":"../styles/FlexLayout.module.css","kind":"import-statement","external":true},{"path":"../utils/FlexLayoutUtils","kind":"import-statement","external":true},{"path":"./FlexLayoutResizePanel","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/flex-layout/components/FlexLayoutContainer.tsx","inputs":{"src/flex-layout/components/FlexLayoutContainer.tsx":{"bytesInOutput":7972}},"bytes":8031},"dist/flex-layout/components/FlexLayoutIFramePane.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2333},"dist/flex-layout/components/FlexLayoutIFramePane.js":{"imports":[{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"rxjs","kind":"import-statement","external":true},{"path":"../hooks","kind":"import-statement","external":true}],"exports":["FlexLayoutIFramePane"],"entryPoint":"src/flex-layout/components/FlexLayoutIFramePane.tsx","inputs":{"src/flex-layout/components/FlexLayoutIFramePane.tsx":{"bytesInOutput":1198}},"bytes":1247},"dist/flex-layout/components/FlexLayoutResizePanel.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":16270},"dist/flex-layout/components/FlexLayoutResizePanel.js":{"imports":[{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"../hooks","kind":"import-statement","external":true},{"path":"../store/FlexLayoutContainerStore","kind":"import-statement","external":true},{"path":"../styles/FlexLayout.module.css","kind":"import-statement","external":true},{"path":"../utils/FlexLayoutUtils","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/flex-layout/components/FlexLayoutResizePanel.tsx","inputs":{"src/flex-layout/components/FlexLayoutResizePanel.tsx":{"bytesInOutput":7894}},"bytes":7955},"dist/flex-layout/components/FlexLayoutSplitScreen.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":93105},"dist/flex-layout/components/FlexLayoutSplitScreen.js":{"imports":[{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"../hooks/useDrag","kind":"import-statement","external":true},{"path":"../hooks/useFlexLayoutSplitScreen","kind":"import-statement","external":true},{"path":"../store/FlexLayoutContainerStore","kind":"import-statement","external":true},{"path":"../styles/FlexLayout.module.css","kind":"import-statement","external":true},{"path":"./FlexLayout","kind":"import-statement","external":true},{"path":"./FlexLayoutContainer","kind":"import-statement","external":true},{"path":"./FlexLayoutSplitScreenDragBox","kind":"import-statement","external":true},{"path":"fast-deep-equal","kind":"import-statement","external":true},{"path":"rxjs","kind":"import-statement","external":true},{"path":"./FlexLayoutSplitScreenDragBoxContainer","kind":"import-statement","external":true},{"path":"./FlexLayoutSplitScreenDragBoxItem","kind":"import-statement","external":true},{"path":"./FlexLayoutSplitScreenDragBoxTitleMore","kind":"import-statement","external":true},{"path":"./FlexLayoutSplitScreenScrollBox","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/flex-layout/components/FlexLayoutSplitScreen.tsx","inputs":{"src/flex-layout/components/FlexLayoutSplitScreen.tsx":{"bytesInOutput":50351}},"bytes":50412},"dist/flex-layout/components/FlexLayoutSplitScreenDragBox.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":33531},"dist/flex-layout/components/FlexLayoutSplitScreenDragBox.js":{"imports":[{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"../hooks/useDrag","kind":"import-statement","external":true},{"path":"../styles/FlexLayout.module.css","kind":"import-statement","external":true},{"path":"../utils/FlexLayoutUtils","kind":"import-statement","external":true},{"path":"./FlexLayoutIFramePane","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/flex-layout/components/FlexLayoutSplitScreenDragBox.tsx","inputs":{"src/flex-layout/components/FlexLayoutSplitScreenDragBox.tsx":{"bytesInOutput":16340}},"bytes":16408},"dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1333},"dist/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.js":{"imports":[{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"../styles/FlexLayout.module.css","kind":"import-statement","external":true},{"path":"./FlexLayoutSplitScreenScrollBox","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.tsx","inputs":{"src/flex-layout/components/FlexLayoutSplitScreenDragBoxContainer.tsx":{"bytesInOutput":571}},"bytes":648},"dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1913},"dist/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.js":{"imports":[{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"../hooks/useDrag","kind":"import-statement","external":true},{"path":"../styles/FlexLayout.module.css","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.tsx","inputs":{"src/flex-layout/components/FlexLayoutSplitScreenDragBoxItem.tsx":{"bytesInOutput":848}},"bytes":906},"dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1117},"dist/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.js":{"imports":[{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"../styles/FlexLayout.module.css","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.tsx","inputs":{"src/flex-layout/components/FlexLayoutSplitScreenDragBoxTitleMore.tsx":{"bytesInOutput":542}},"bytes":605},"dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":7451},"dist/flex-layout/components/FlexLayoutSplitScreenScrollBox.js":{"imports":[{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"rxjs","kind":"import-statement","external":true},{"path":"rxjs/operators","kind":"import-statement","external":true},{"path":"../store/FlexLayoutContainerStore","kind":"import-statement","external":true},{"path":"../styles/listScroll.module.css","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/flex-layout/components/FlexLayoutSplitScreenScrollBox.tsx","inputs":{"src/flex-layout/components/FlexLayoutSplitScreenScrollBox.tsx":{"bytesInOutput":3377}},"bytes":3455},"dist/flex-layout/components/FlexLayoutStickyBox.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":15528},"dist/flex-layout/components/FlexLayoutStickyBox.js":{"imports":[{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/flex-layout/components/FlexLayoutStickyBox.tsx","inputs":{"src/flex-layout/components/FlexLayoutStickyBox.tsx":{"bytesInOutput":6866}},"bytes":6933},"dist/flex-layout/components/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":939},"dist/flex-layout/components/index.js":{"imports":[{"path":"./FlexLayout","kind":"import-statement","external":true},{"path":"./FlexLayoutContainer","kind":"import-statement","external":true},{"path":"./FlexLayoutResizePanel","kind":"import-statement","external":true},{"path":"./FlexLayoutSplitScreen","kind":"import-statement","external":true},{"path":"./FlexLayoutSplitScreenDragBox","kind":"import-statement","external":true},{"path":"./FlexLayoutSplitScreenScrollBox","kind":"import-statement","external":true},{"path":"./FlexLayoutStickyBox","kind":"import-statement","external":true}],"exports":["FlexLayout","FlexLayoutContainer","FlexLayoutResizePanel","FlexLayoutSplitScreen","FlexLayoutSplitScreenDragBox","FlexLayoutSplitScreenScrollBox","FlexLayoutStickyBox"],"entryPoint":"src/flex-layout/components/index.ts","inputs":{"src/flex-layout/components/index.ts":{"bytesInOutput":442}},"bytes":713},"dist/flex-layout/providers/FlexLayoutContext.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1439},"dist/flex-layout/providers/FlexLayoutContext.js":{"imports":[{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["FlexLayoutProvider","useFlexLayoutContext"],"entryPoint":"src/flex-layout/providers/FlexLayoutContext.tsx","inputs":{"src/flex-layout/providers/FlexLayoutContext.tsx":{"bytesInOutput":504}},"bytes":575},"dist/flex-layout/providers/FlexLayoutHooks.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":17563},"dist/flex-layout/providers/FlexLayoutHooks.js":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"../store/FlexLayoutContainerStore","kind":"import-statement","external":true},{"path":"../utils/FlexLayoutUtils","kind":"import-statement","external":true},{"path":"rxjs","kind":"import-statement","external":true}],"exports":["ContainerOpenCloseProvider","containerOpenCloseSubjectMap","containerSpreadSubjectMap","useContainerSize","useContainers","useDecompositionLayout","useDoubleClick","useLayoutName"],"entryPoint":"src/flex-layout/providers/FlexLayoutHooks.tsx","inputs":{"src/flex-layout/providers/FlexLayoutHooks.tsx":{"bytesInOutput":7819}},"bytes":8033},"dist/flex-layout/providers/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":190},"dist/flex-layout/providers/index.js":{"imports":[{"path":"./FlexLayoutHooks","kind":"import-statement","external":true}],"exports":[],"entryPoint":"src/flex-layout/providers/index.ts","inputs":{"src/flex-layout/providers/index.ts":{"bytesInOutput":35}},"bytes":35},"dist/flex-layout/store/FlexLayoutContainerStore.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":16838},"dist/flex-layout/store/FlexLayoutContainerStore.js":{"imports":[{"path":"fast-deep-equal","kind":"import-statement","external":true},{"path":"rxjs","kind":"import-statement","external":true},{"path":"rxjs/operators","kind":"import-statement","external":true}],"exports":["flexContainerStore","flexResizePanelStore","getContainerRef","getCurrentSplitScreenComponents","getLayoutInfos","getResizePanelRef","getScrollPosition","getSplitScreen","layoutSplitScreenStore","removeRootSplitScreen","removeScrollPosition","removeSplitScreenChild","resetRootSplitScreen","scrollPositions","setContainerRef","setResizePanelRef","setScrollPosition","setSplitScreen"],"entryPoint":"src/flex-layout/store/FlexLayoutContainerStore.ts","inputs":{"src/flex-layout/store/FlexLayoutContainerStore.ts":{"bytesInOutput":6094}},"bytes":6520},"dist/flex-layout/store/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":195},"dist/flex-layout/store/index.js":{"imports":[{"path":"./FlexLayoutContainerStore","kind":"import-statement","external":true}],"exports":[],"entryPoint":"src/flex-layout/store/index.ts","inputs":{"src/flex-layout/store/index.ts":{"bytesInOutput":44}},"bytes":44},"dist/flex-layout/utils/FlexLayoutUtils.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":13888},"dist/flex-layout/utils/FlexLayoutUtils.js":{"imports":[],"exports":["closeFlex","findNotCloseFlexContent","getClientXy","getGrow","isDocumentOut","isOverMove","mathGrow","mathWeight","openFlex","remain","resize"],"entryPoint":"src/flex-layout/utils/FlexLayoutUtils.ts","inputs":{"src/flex-layout/utils/FlexLayoutUtils.ts":{"bytesInOutput":6471}},"bytes":6637},"dist/flex-layout/utils/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":186},"dist/flex-layout/utils/index.js":{"imports":[{"path":"./FlexLayoutUtils","kind":"import-statement","external":true}],"exports":[],"entryPoint":"src/flex-layout/utils/index.ts","inputs":{"src/flex-layout/utils/index.ts":{"bytesInOutput":35}},"bytes":35},"dist/flex-layout/types/FlexDirectionTypes.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/flex-layout/types/FlexDirectionTypes.js":{"imports":[],"exports":[],"entryPoint":"src/flex-layout/types/FlexDirectionTypes.ts","inputs":{"src/flex-layout/types/FlexDirectionTypes.ts":{"bytesInOutput":0}},"bytes":0},"dist/flex-layout/types/FlexLayoutTypes.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/flex-layout/types/FlexLayoutTypes.js":{"imports":[],"exports":[],"entryPoint":"src/flex-layout/types/FlexLayoutTypes.ts","inputs":{"src/flex-layout/types/FlexLayoutTypes.ts":{"bytesInOutput":0}},"bytes":0}}}
|
package/dist/types/css.d.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/types/css.d.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|