@teppen/react-ui 1.8.15 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -3
- package/dist/cjs/node_modules/react-icons/bi/index.js +1 -1
- package/dist/cjs/node_modules/react-icons/bi/index.js.map +1 -1
- package/dist/cjs/node_modules/react-icons/lib/iconBase.js +1 -1
- package/dist/cjs/node_modules/react-icons/lib/iconBase.js.map +1 -1
- package/dist/cjs/node_modules/react-icons/lu/index.js +1 -1
- package/dist/cjs/node_modules/react-icons/lu/index.js.map +1 -1
- package/dist/cjs/node_modules/react-icons/md/index.js +1 -1
- package/dist/cjs/node_modules/react-icons/md/index.js.map +1 -1
- package/dist/cjs/node_modules/react-icons/ti/index.js +1 -1
- package/dist/cjs/node_modules/react-icons/ti/index.js.map +1 -1
- package/dist/cjs/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/cjs/src/file-uploader/component.js.map +1 -1
- package/dist/cjs/src/file-uploader/hook.js.map +1 -1
- package/dist/cjs/src/icon/cancel-icon.js.map +1 -1
- package/dist/cjs/src/lib/errors.js.map +1 -1
- package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/context.js.map +1 -1
- package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/hook.js.map +1 -1
- package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/provider.js.map +1 -1
- package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/reducer.js.map +1 -1
- package/dist/cjs/src/search-bar/condition-search-bar/input-form.js +1 -1
- package/dist/cjs/src/search-bar/id-generator/context.js.map +1 -1
- package/dist/cjs/src/select-box/id/provider.js.map +1 -1
- package/dist/cjs/src/select-box/lib/id-generator.js.map +1 -1
- package/dist/cjs/src/select-box/options-window/component.js.map +1 -1
- package/dist/cjs/src/select-box/options-window/context.js.map +1 -1
- package/dist/cjs/src/select-box/options-window/hook.js.map +1 -1
- package/dist/cjs/src/select-box/options-window/provider.js.map +1 -1
- package/dist/cjs/src/select-box/options-window/reducer.js.map +1 -1
- package/dist/cjs/src/select-box/parts/frame.js.map +1 -1
- package/dist/cjs/src/select-box/parts/input-area.js +1 -1
- package/dist/cjs/src/table/cell/hooks.js.map +1 -1
- package/dist/cjs/src/table/cell/ui/cell.js +1 -1
- package/dist/cjs/src/table/checkbox/hooks.js.map +1 -1
- package/dist/cjs/src/table/checkbox/provider.js.map +1 -1
- package/dist/cjs/src/table/copy/components.js.map +1 -1
- package/dist/cjs/src/table/copy/hooks.js.map +1 -1
- package/dist/cjs/src/table/copy/provider.js.map +1 -1
- package/dist/cjs/src/table/edit/hooks.js.map +1 -1
- package/dist/cjs/src/table/edit/ui/base-input.js +1 -1
- package/dist/cjs/src/table/edit/ui/editor.js.map +1 -1
- package/dist/cjs/src/table/edit/ui/select-input.js +1 -1
- package/dist/cjs/src/table/filter-v2/context.js.map +1 -1
- package/dist/cjs/src/table/filter-v2/hook.js.map +1 -1
- package/dist/cjs/src/table/filter-v2/provider.js.map +1 -1
- package/dist/cjs/src/table/filter-v2/reducer.js.map +1 -1
- package/dist/cjs/src/table/header/columns-width/context.js.map +1 -1
- package/dist/cjs/src/table/header/columns-width/reducer.js.map +1 -1
- package/dist/cjs/src/table/header/header-v2-hook.js.map +1 -1
- package/dist/cjs/src/table/header/header-v2.js +1 -1
- package/dist/cjs/src/table/header/header-v2.js.map +1 -1
- package/dist/cjs/src/table/header/header.js +1 -1
- package/dist/cjs/src/table/header/x-scroll-position/context.js.map +1 -1
- package/dist/cjs/src/table/header/x-scroll-position/provider.js.map +1 -1
- package/dist/cjs/src/table/header/x-scroll-position/reducer.js.map +1 -1
- package/dist/cjs/src/table/id/id-generator.js.map +1 -1
- package/dist/cjs/src/table/id/provider.js.map +1 -1
- package/dist/cjs/src/table/lib/errors.js.map +1 -1
- package/dist/cjs/src/table/libs/conditional-formatting.js.map +1 -1
- package/dist/cjs/src/table/libs/generate-validate-function.js.map +1 -1
- package/dist/cjs/src/table/pagenation/components.js +1 -1
- package/dist/cjs/src/table/pagenation/hooks.js.map +1 -1
- package/dist/cjs/src/table/paste/hooks.js +1 -1
- package/dist/cjs/src/table/paste/hooks.js.map +1 -1
- package/dist/cjs/src/table/paste/logic.js.map +1 -1
- package/dist/cjs/src/table/paste/provider.js.map +1 -1
- package/dist/cjs/src/table/range/hooks.js.map +1 -1
- package/dist/cjs/src/table/range/provider.js +1 -1
- package/dist/cjs/src/table/range/provider.js.map +1 -1
- package/dist/cjs/src/table/sheet/components.js +1 -1
- package/dist/cjs/src/table/sheet/components.js.map +1 -1
- package/dist/cjs/src/table/sort/hooks.js.map +1 -1
- package/dist/cjs/src/table/sort/icon.js.map +1 -1
- package/dist/cjs/src/table/table/base.js +1 -1
- package/dist/cjs/src/table/table/hook.js.map +1 -1
- package/dist/cjs/src/table/table-property/hook.js.map +1 -1
- package/dist/cjs/src/table/table-property/provider.js.map +1 -1
- package/dist/esm/node_modules/react-icons/bi/index.js +1 -1
- package/dist/esm/node_modules/react-icons/bi/index.js.map +1 -1
- package/dist/esm/node_modules/react-icons/lib/iconBase.js +1 -1
- package/dist/esm/node_modules/react-icons/lib/iconBase.js.map +1 -1
- package/dist/esm/node_modules/react-icons/lu/index.js +1 -1
- package/dist/esm/node_modules/react-icons/lu/index.js.map +1 -1
- package/dist/esm/node_modules/react-icons/md/index.js +1 -1
- package/dist/esm/node_modules/react-icons/md/index.js.map +1 -1
- package/dist/esm/node_modules/react-icons/ti/index.js +1 -1
- package/dist/esm/node_modules/react-icons/ti/index.js.map +1 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/esm/src/file-uploader/component.js +1 -1
- package/dist/esm/src/file-uploader/component.js.map +1 -1
- package/dist/esm/src/file-uploader/hook.js.map +1 -1
- package/dist/esm/src/icon/cancel-icon.js.map +1 -1
- package/dist/esm/src/lib/errors.js.map +1 -1
- package/dist/esm/src/search-bar/condition-search-bar/condition-input-management/hook.js.map +1 -1
- package/dist/esm/src/search-bar/condition-search-bar/condition-input-management/reducer.js.map +1 -1
- package/dist/esm/src/search-bar/condition-search-bar/input-form.js +1 -1
- package/dist/esm/src/select-box/lib/id-generator.js.map +1 -1
- package/dist/esm/src/select-box/options-window/component.js.map +1 -1
- package/dist/esm/src/select-box/options-window/hook.js.map +1 -1
- package/dist/esm/src/select-box/options-window/reducer.js.map +1 -1
- package/dist/esm/src/select-box/parts/frame.js.map +1 -1
- package/dist/esm/src/select-box/parts/input-area.js +1 -1
- package/dist/esm/src/table/cell/hooks.js.map +1 -1
- package/dist/esm/src/table/cell/ui/cell.js +1 -1
- package/dist/esm/src/table/checkbox/provider.js.map +1 -1
- package/dist/esm/src/table/copy/components.js.map +1 -1
- package/dist/esm/src/table/copy/hooks.js.map +1 -1
- package/dist/esm/src/table/copy/provider.js.map +1 -1
- package/dist/esm/src/table/edit/hooks.js.map +1 -1
- package/dist/esm/src/table/edit/provider.js +1 -1
- package/dist/esm/src/table/edit/ui/base-input.js +1 -1
- package/dist/esm/src/table/edit/ui/editor.js.map +1 -1
- package/dist/esm/src/table/edit/ui/select-input.js +1 -1
- package/dist/esm/src/table/filter-v2/context.js.map +1 -1
- package/dist/esm/src/table/filter-v2/hook.js.map +1 -1
- package/dist/esm/src/table/filter-v2/provider.js.map +1 -1
- package/dist/esm/src/table/filter-v2/reducer.js.map +1 -1
- package/dist/esm/src/table/header/columns-width/provider.js +1 -1
- package/dist/esm/src/table/header/columns-width/reducer.js +1 -1
- package/dist/esm/src/table/header/columns-width/reducer.js.map +1 -1
- package/dist/esm/src/table/header/header-v2-hook.js.map +1 -1
- package/dist/esm/src/table/header/header-v2.js +1 -1
- package/dist/esm/src/table/header/header-v2.js.map +1 -1
- package/dist/esm/src/table/header/header.js +1 -1
- package/dist/esm/src/table/header/x-scroll-position/reducer.js.map +1 -1
- package/dist/esm/src/table/id/id-generator.js.map +1 -1
- package/dist/esm/src/table/id/provider.js.map +1 -1
- package/dist/esm/src/table/lib/errors.js.map +1 -1
- package/dist/esm/src/table/libs/conditional-formatting.js.map +1 -1
- package/dist/esm/src/table/libs/generate-validate-function.js.map +1 -1
- package/dist/esm/src/table/pagenation/components.js +1 -1
- package/dist/esm/src/table/pagenation/constants.js.map +1 -1
- package/dist/esm/src/table/pagenation/hooks.js.map +1 -1
- package/dist/esm/src/table/paste/hooks.js +1 -1
- package/dist/esm/src/table/paste/hooks.js.map +1 -1
- package/dist/esm/src/table/paste/logic.js.map +1 -1
- package/dist/esm/src/table/paste/provider.js.map +1 -1
- package/dist/esm/src/table/range/hooks.js.map +1 -1
- package/dist/esm/src/table/range/provider.js +1 -1
- package/dist/esm/src/table/range/provider.js.map +1 -1
- package/dist/esm/src/table/sheet/components.js +1 -1
- package/dist/esm/src/table/sheet/components.js.map +1 -1
- package/dist/esm/src/table/sheet/providers.js +1 -1
- package/dist/esm/src/table/sort/hooks.js.map +1 -1
- package/dist/esm/src/table/sort/icon.js.map +1 -1
- package/dist/esm/src/table/table/base.js +1 -1
- package/dist/esm/src/table/table/hook.js.map +1 -1
- package/dist/esm/src/table/table-property/hook.js.map +1 -1
- package/dist/esm/src/table/table-property/provider.js.map +1 -1
- package/dist/index.d.ts +11 -10
- package/package.json +33 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sources":["../../../../../src/table/copy/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TCopyActionContext, TCopyStateContext } from \"./types\";\nimport { useCopyReducer } from \"./hooks\";\n\nconst CopyStateContext = createContext<TCopyStateContext>({\n copiedAt: new Date(),\n});\n\nconst CopyActionContext = createContext<TCopyActionContext>({\n copy: () => {},\n setRows: () => {},\n});\n\nexport function CopyProvider({\n children,\n rows,\n cols,\n}: {\n children: JSX.Element | JSX.Element[];\n rows: any[];\n cols: any[];\n}) {\n const { states, actions } = useCopyReducer({\n rows,\n cols,\n });\n return (\n <CopyStateContext.Provider value={states}>\n <CopyActionContext.Provider value={actions}>\n {children}\n </CopyActionContext.Provider>\n </CopyStateContext.Provider>\n );\n}\n\nexport function useCopyStateContext() {\n return useContext(CopyStateContext);\n}\n\nexport function useCopyActionContext() {\n return useContext(CopyActionContext);\n}\n"],"names":["CopyStateContext","createContext","copiedAt","Date","CopyActionContext","copy","setRows","CopyProvider","_a","children","rows","cols","_b","useCopyReducer","states","actions","_jsx","Provider","value","useCopyStateContext","useContext","useCopyActionContext"],"mappings":"0IAIA,IAAMA,EAAmBC,EAAiC,CACxDC,SAAU,IAAIC,OAGVC,EAAoBH,EAAkC,CAC1DI,KAAM,
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../src/table/copy/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TCopyActionContext, TCopyStateContext } from \"./types\";\nimport { useCopyReducer } from \"./hooks\";\n\nconst CopyStateContext = createContext<TCopyStateContext>({\n copiedAt: new Date(),\n});\n\nconst CopyActionContext = createContext<TCopyActionContext>({\n copy: () => {},\n setRows: () => {},\n});\n\nexport function CopyProvider({\n children,\n rows,\n cols,\n}: {\n children: React.JSX.Element | React.JSX.Element[];\n rows: any[];\n cols: any[];\n}) {\n const { states, actions } = useCopyReducer({\n rows,\n cols,\n });\n return (\n <CopyStateContext.Provider value={states}>\n <CopyActionContext.Provider value={actions}>\n {children}\n </CopyActionContext.Provider>\n </CopyStateContext.Provider>\n );\n}\n\nexport function useCopyStateContext() {\n return useContext(CopyStateContext);\n}\n\nexport function useCopyActionContext() {\n return useContext(CopyActionContext);\n}\n"],"names":["CopyStateContext","createContext","copiedAt","Date","CopyActionContext","copy","setRows","CopyProvider","_a","children","rows","cols","_b","useCopyReducer","states","actions","_jsx","Provider","value","useCopyStateContext","useContext","useCopyActionContext"],"mappings":"0IAIA,IAAMA,EAAmBC,EAAiC,CACxDC,SAAU,IAAIC,OAGVC,EAAoBH,EAAkC,CAC1DI,KAAM,WAAO,EACbC,QAAS,WAAO,IAGZ,SAAUC,EAAaC,GAC3B,IAAAC,aACAC,EAAIF,EAAAE,KACJC,EAAIH,EAAAG,KAMEC,EAAsBC,EAAe,CACzCH,KAAIA,EACJC,KAAIA,IAFEG,EAAMF,EAAAE,OAAEC,YAIhB,OACEC,EAAChB,EAAiBiB,SAAQ,CAACC,MAAOJ,EAAML,SACtCO,EAACZ,EAAkBa,SAAQ,CAACC,MAAOH,WAChCN,KAIT,UAEgBU,IACd,OAAOC,EAAWpB,EACpB,UAEgBqB,IACd,OAAOD,EAAWhB,EACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/edit/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TEditReducer, TReturnEditReducer } from \"./types\";\n\nconst reducer: TEditReducer = (state, action) => {\n switch (action.type) {\n case \"startEditing\":\n if (state.isEditing) return state;\n\n return {\n isEditing: true,\n };\n\n case \"endEditing\":\n if (!state.isEditing) return state;\n\n return {\n isEditing: false,\n };\n }\n};\n\nexport function useEditReducer(): TReturnEditReducer {\n const [state, dispatch] = useReducer(reducer, {\n isEditing: false,\n });\n\n const startEditing = useCallback(() => {\n dispatch({ type: \"startEditing\" });\n }, []);\n\n const endEditing = useCallback(() => {\n dispatch({ type: \"endEditing\" });\n }, []);\n\n return {\n isEditing: state.isEditing,\n startEditing,\n endEditing,\n };\n}\n"],"names":["reducer","state","action","type","isEditing","useEditReducer","_a","useReducer","dispatch","startEditing","useCallback","endEditing"],"mappings":"oDAGA,IAAMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,eACH,OAAIF,EAAMG,UAAkBH,EAErB,CACLG,WAAW,GAGf,IAAK,aACH,OAAKH,EAAMG,UAEJ,CACLA,WAAW,GAHgBH,EAMnC,WAEgBI,IACR,IAAAC,EAAoBC,EAAWP,EAAS,CAC5CI,WAAW,IADNH,EAAKK,EAAA,GAAEE,OAIRC,EAAeC,GAAY,WAC/BF,EAAS,CAAEL,KAAM,
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/edit/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TEditReducer, TReturnEditReducer } from \"./types\";\n\nconst reducer: TEditReducer = (state, action) => {\n switch (action.type) {\n case \"startEditing\":\n if (state.isEditing) return state;\n\n return {\n isEditing: true,\n };\n\n case \"endEditing\":\n if (!state.isEditing) return state;\n\n return {\n isEditing: false,\n };\n }\n};\n\nexport function useEditReducer(): TReturnEditReducer {\n const [state, dispatch] = useReducer(reducer, {\n isEditing: false,\n });\n\n const startEditing = useCallback(() => {\n dispatch({ type: \"startEditing\" });\n }, []);\n\n const endEditing = useCallback(() => {\n dispatch({ type: \"endEditing\" });\n }, []);\n\n return {\n isEditing: state.isEditing,\n startEditing,\n endEditing,\n };\n}\n"],"names":["reducer","state","action","type","isEditing","useEditReducer","_a","useReducer","dispatch","startEditing","useCallback","endEditing"],"mappings":"oDAGA,IAAMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,eACH,OAAIF,EAAMG,UAAkBH,EAErB,CACLG,WAAW,GAGf,IAAK,aACH,OAAKH,EAAMG,UAEJ,CACLA,WAAW,GAHgBH,EAMnC,WAEgBI,IACR,IAAAC,EAAoBC,EAAWP,EAAS,CAC5CI,WAAW,IADNH,EAAKK,EAAA,GAAEE,OAIRC,EAAeC,GAAY,WAC/BF,EAAS,CAAEL,KAAM,gBACnB,GAAG,IAEGQ,EAAaD,GAAY,WAC7BF,EAAS,CAAEL,KAAM,cACnB,GAAG,IAEH,MAAO,CACLC,UAAWH,EAAMG,UACjBK,aAAYA,EACZE,WAAUA,EAEd"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{__assign as i}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as n}from"react/jsx-runtime";import{createContext as t,
|
|
2
|
+
import{__assign as i}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as n}from"react/jsx-runtime";import{createContext as t,useContext as r,useMemo as e}from"react";import{useEditReducer as o}from"./hooks.js";var d=t({isEditing:!1}),u=t({startEditing:function(){},endEditing:function(){}});function s(i){var t=o(),r=e((function(){return{isEditing:t.isEditing}}),[t.isEditing]),s=e((function(){return{startEditing:t.startEditing,endEditing:t.endEditing}}),[]);return n(d.Provider,{value:r,children:n(u.Provider,{value:s,children:i.children})})}function c(){return i(i({},f()),g())}function f(){return r(d)}function g(){return r(u)}export{s as EditProvider,g as useEditActionContext,c as useEditContext,f as useEditStateContext};
|
|
3
3
|
//# sourceMappingURL=provider.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as n,useEffect as r}from"react";import{CancelIcon as o}from"../../../icon/cancel-icon.js";import{useTableIdGenerator as i}from"../../id/provider.js";function u(u){var a,
|
|
2
|
+
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as n,useEffect as r}from"react";import{CancelIcon as o}from"../../../icon/cancel-icon.js";import{useTableIdGenerator as i}from"../../id/provider.js";function u(u){var a,c=i(),l=n(null);return r((function(){l.current&&l.current.focus()}),[l]),e("div",{className:"flex justify-between gap-1 w-full items-center",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:[t("input",{id:c.getEditorId(),ref:l,className:"w-full py-1 px-2 bg-white text-gray-900",type:null!==(a=u.type)&&void 0!==a?a:"text",value:u.value,onChange:u.onChange,onBlur:u.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(u.reset(),u.endEditing())}}),t("button",{className:"cursor-pointer",onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){u.reset(),u.endEditing()}),300)},children:t(o,{size:16})})]})}export{u as CellInput};
|
|
3
3
|
//# sourceMappingURL=base-input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sources":["../../../../../../src/table/edit/ui/editor.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useColumnsContext } from \"../../sheet/providers\";\nimport { useEditActionContext, useEditStateContext } from \"../provider\";\nimport { NumberCellInput } from \"./number-input\";\nimport { SelectCellInput } from \"./select-input\";\nimport { StringCellInput } from \"./string-input\";\nimport { DataObject, DataRecord } from \"../../table/type\";\nimport { useRangeStateContext } from \"../../range/provider\";\nimport { useTableIdGenerator } from \"../../id\";\n\ntype TPropsEditor = {\n pageRowIds: (string | number)[];\n rowMaps: {\n [id: string]: {\n data: DataObject<DataRecord>;\n stringValue: string;\n };\n [id: number]: {\n data: DataObject<DataRecord>;\n stringValue: string;\n };\n };\n};\n\nexport function Editor(props: TPropsEditor) {\n const IdGenerator = useTableIdGenerator();\n const range = useRangeStateContext();\n const edit = useEditStateContext();\n const editActions = useEditActionContext();\n const cols = useColumnsContext();\n\n useEffect(() => {\n if (range.isSelecting && !cols[range.start.colIndex].editable) {\n editActions.endEditing();\n }\n }, [edit, range]);\n\n if (!edit.isEditing) return <></>;\n if (!range.isSelecting) return <></>;\n\n const col = cols[range.start.colIndex];\n const row = props.rowMaps[props.pageRowIds[range.start.rowIndex]].data;\n\n if (!col.editable) return <></>;\n\n const id = IdGenerator.getTableCellId({\n rowIndex: range.start.rowIndex,\n columnIndex: range.start.colIndex,\n });\n const cellElement = document.getElementById(id);\n const rect = cellElement?.getBoundingClientRect();\n\n const size = rect\n ? {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n left: rect.left,\n }\n : undefined;\n\n if (!size) return <></>;\n\n const tableElement = document.getElementById(IdGenerator.getTableId());\n if (!tableElement) return <></>;\n const rectTable = tableElement.getBoundingClientRect();\n\n size.top -= rectTable.top - tableElement.scrollTop;\n size.left -= rectTable.left - tableElement.scrollLeft;\n\n return (\n <div\n className=\"absolute top-0 left-0 grid place-items-center z-10 pr-2\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n style={{\n width: size.width,\n height: size.height,\n top: size.top - 1,\n left: size.left,\n }}\n >\n {col.type === \"string\" && <StringCellInput col={col} row={row} />}\n {col.type === \"number\" && <NumberCellInput col={col} row={row} />}\n {col.type === \"select\" && <SelectCellInput col={col} row={row} />}\n </div>\n );\n}\n"],"names":["Editor","props","IdGenerator","useTableIdGenerator","range","useRangeStateContext","edit","useEditStateContext","editActions","useEditActionContext","cols","useColumnsContext","useEffect","isSelecting","start","colIndex","editable","endEditing","isEditing","_jsx","col","row","rowMaps","pageRowIds","rowIndex","data","id","getTableCellId","columnIndex","cellElement","document","getElementById","rect","getBoundingClientRect","size","width","height","top","left","undefined","tableElement","getTableId","rectTable","scrollTop","scrollLeft","_jsxs","className","onClick","e","preventDefault","stopPropagation","style","children","type","StringCellInput","NumberCellInput","SelectCellInput"],"mappings":"ogBAwBM,SAAUA,EAAOC,GACrB,IAAMC,EAAcC,IACdC,EAAQC,IACRC,EAAOC,IACPC,EAAcC,IACdC,EAAOC,IAQb,GANAC,GAAU,WACJR,EAAMS,cAAgBH,EAAKN,EAAMU,MAAMC,UAAUC,UACnDR,EAAYS,YAEhB,GAAG,CAACX,EAAMF,KAELE,EAAKY,UAAW,OAAOC,QAC5B,IAAKf,EAAMS,YAAa,OAAOM,QAE/B,IAAMC,EAAMV,EAAKN,EAAMU,MAAMC,UACvBM,EAAMpB,EAAMqB,QAAQrB,EAAMsB,WAAWnB,EAAMU,MAAMU,WAAWC,KAElE,IAAKL,EAAIJ,SAAU,OAAOG,QAE1B,IAAMO,EAAKxB,EAAYyB,eAAe,CACpCH,SAAUpB,EAAMU,MAAMU,SACtBI,YAAaxB,EAAMU,MAAMC,WAErBc,EAAcC,SAASC,eAAeL,GACtCM,EAAOH,eAAAA,EAAaI,wBAEpBC,EAAOF,EACT,CACEG,MAAOH,EAAKG,MACZC,OAAQJ,EAAKI,OACbC,IAAKL,EAAKK,IACVC,KAAMN,EAAKM,WAEbC,EAEJ,IAAKL,EAAM,OAAOf,QAElB,IAAMqB,EAAeV,SAASC,eAAe7B,EAAYuC,cACzD,IAAKD,EAAc,OAAOrB,QAC1B,IAAMuB,EAAYF,EAAaP,wBAK/B,OAHAC,EAAKG,KAAOK,EAAUL,IAAMG,EAAaG,UACzCT,EAAKI,MAAQI,EAAUJ,KAAOE,EAAaI,WAGzCC,SACEC,UAAU,0DACVC,QAAS,SAACC,GACRA,EAAEC,iBACFD,EAAEE,
|
|
1
|
+
{"version":3,"file":"editor.js","sources":["../../../../../../src/table/edit/ui/editor.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useColumnsContext } from \"../../sheet/providers\";\nimport { useEditActionContext, useEditStateContext } from \"../provider\";\nimport { NumberCellInput } from \"./number-input\";\nimport { SelectCellInput } from \"./select-input\";\nimport { StringCellInput } from \"./string-input\";\nimport { DataObject, DataRecord } from \"../../table/type\";\nimport { useRangeStateContext } from \"../../range/provider\";\nimport { useTableIdGenerator } from \"../../id\";\n\ntype TPropsEditor = {\n pageRowIds: (string | number)[];\n rowMaps: {\n [id: string]: {\n data: DataObject<DataRecord>;\n stringValue: string;\n };\n [id: number]: {\n data: DataObject<DataRecord>;\n stringValue: string;\n };\n };\n};\n\nexport function Editor(props: TPropsEditor) {\n const IdGenerator = useTableIdGenerator();\n const range = useRangeStateContext();\n const edit = useEditStateContext();\n const editActions = useEditActionContext();\n const cols = useColumnsContext();\n\n useEffect(() => {\n if (range.isSelecting && !cols[range.start.colIndex].editable) {\n editActions.endEditing();\n }\n }, [edit, range]);\n\n if (!edit.isEditing) return <></>;\n if (!range.isSelecting) return <></>;\n\n const col = cols[range.start.colIndex];\n const row = props.rowMaps[props.pageRowIds[range.start.rowIndex]].data;\n\n if (!col.editable) return <></>;\n\n const id = IdGenerator.getTableCellId({\n rowIndex: range.start.rowIndex,\n columnIndex: range.start.colIndex,\n });\n const cellElement = document.getElementById(id);\n const rect = cellElement?.getBoundingClientRect();\n\n const size = rect\n ? {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n left: rect.left,\n }\n : undefined;\n\n if (!size) return <></>;\n\n const tableElement = document.getElementById(IdGenerator.getTableId());\n if (!tableElement) return <></>;\n const rectTable = tableElement.getBoundingClientRect();\n\n size.top -= rectTable.top - tableElement.scrollTop;\n size.left -= rectTable.left - tableElement.scrollLeft;\n\n return (\n <div\n className=\"absolute top-0 left-0 grid place-items-center z-10 pr-2\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n style={{\n width: size.width,\n height: size.height,\n top: size.top - 1,\n left: size.left,\n }}\n >\n {col.type === \"string\" && <StringCellInput col={col} row={row} />}\n {col.type === \"number\" && <NumberCellInput col={col} row={row} />}\n {col.type === \"select\" && <SelectCellInput col={col} row={row} />}\n </div>\n );\n}\n"],"names":["Editor","props","IdGenerator","useTableIdGenerator","range","useRangeStateContext","edit","useEditStateContext","editActions","useEditActionContext","cols","useColumnsContext","useEffect","isSelecting","start","colIndex","editable","endEditing","isEditing","_jsx","col","row","rowMaps","pageRowIds","rowIndex","data","id","getTableCellId","columnIndex","cellElement","document","getElementById","rect","getBoundingClientRect","size","width","height","top","left","undefined","tableElement","getTableId","rectTable","scrollTop","scrollLeft","_jsxs","className","onClick","e","preventDefault","stopPropagation","style","children","type","StringCellInput","NumberCellInput","SelectCellInput"],"mappings":"ogBAwBM,SAAUA,EAAOC,GACrB,IAAMC,EAAcC,IACdC,EAAQC,IACRC,EAAOC,IACPC,EAAcC,IACdC,EAAOC,IAQb,GANAC,GAAU,WACJR,EAAMS,cAAgBH,EAAKN,EAAMU,MAAMC,UAAUC,UACnDR,EAAYS,YAEhB,GAAG,CAACX,EAAMF,KAELE,EAAKY,UAAW,OAAOC,QAC5B,IAAKf,EAAMS,YAAa,OAAOM,QAE/B,IAAMC,EAAMV,EAAKN,EAAMU,MAAMC,UACvBM,EAAMpB,EAAMqB,QAAQrB,EAAMsB,WAAWnB,EAAMU,MAAMU,WAAWC,KAElE,IAAKL,EAAIJ,SAAU,OAAOG,QAE1B,IAAMO,EAAKxB,EAAYyB,eAAe,CACpCH,SAAUpB,EAAMU,MAAMU,SACtBI,YAAaxB,EAAMU,MAAMC,WAErBc,EAAcC,SAASC,eAAeL,GACtCM,EAAOH,eAAAA,EAAaI,wBAEpBC,EAAOF,EACT,CACEG,MAAOH,EAAKG,MACZC,OAAQJ,EAAKI,OACbC,IAAKL,EAAKK,IACVC,KAAMN,EAAKM,WAEbC,EAEJ,IAAKL,EAAM,OAAOf,QAElB,IAAMqB,EAAeV,SAASC,eAAe7B,EAAYuC,cACzD,IAAKD,EAAc,OAAOrB,QAC1B,IAAMuB,EAAYF,EAAaP,wBAK/B,OAHAC,EAAKG,KAAOK,EAAUL,IAAMG,EAAaG,UACzCT,EAAKI,MAAQI,EAAUJ,KAAOE,EAAaI,WAGzCC,SACEC,UAAU,0DACVC,QAAS,SAACC,GACRA,EAAEC,iBACFD,EAAEE,iBACJ,EACAC,MAAO,CACLhB,MAAOD,EAAKC,MACZC,OAAQF,EAAKE,OACbC,IAAKH,EAAKG,IAAM,EAChBC,KAAMJ,EAAKI,MACZc,SAAA,CAEa,WAAbhC,EAAIiC,MAAqBlC,EAACmC,EAAe,CAAClC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAIiC,MAAqBlC,EAACoC,EAAe,CAACnC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAIiC,MAAqBlC,EAACqC,EAAe,CAACpC,IAAKA,EAAKC,IAAKA,MAGhE"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{__spreadArray as e}from"../../../../node_modules/tslib/tslib.es6.js";import{jsx as o,Fragment as n,jsxs as t}from"react/jsx-runtime";import{useState as r,useRef as i,useEffect as u,useMemo as l}from"react";import{useEditActionContext as
|
|
2
|
+
import{__spreadArray as e}from"../../../../node_modules/tslib/tslib.es6.js";import{jsx as o,Fragment as n,jsxs as t}from"react/jsx-runtime";import{useState as r,useRef as i,useEffect as u,useMemo as l}from"react";import{useEditActionContext as s}from"../provider.js";import{CancelIcon as c}from"../../../icon/cancel-icon.js";import{SelectBox as a}from"../../../select-box/index.js";import{useTableIdGenerator as f}from"../../id/provider.js";function m(m){var d=f(),p=m.col,v=s().endEditing,w=m.row[p.key],b=r(w),j=b[0],E=b[1],g=i(null),x=i(null);u((function(){x.current&&x.current.focus()}),[x]);var y=function(e){p.editable&&p.onCellBlur(p.key,e,m.row,v)};if(!p.editable)return o(n,{});u((function(){var e=function(e){var o=g.current,n=e.target;n instanceof Node&&(null==o?void 0:o.contains(n))||(j!==w?y(j):v())};return document.addEventListener("mousedown",e),function(){document.removeEventListener("mousedown",e)}}),[j,y,v,w]);var N=l((function(){return p.allowEmpty?e([{value:"",label:""===w?"-- 未選択 --":"-- 選択解除 --"}],p.options,!0):p.options}),[p.options,p.allowEmpty,w]);return t("div",{ref:g,className:"flex justify-between gap-1 w-full items-center",children:[o(a,{id:d.getEditorId(),inputRef:x,value:j,defaultIsOpen:!0,options:N,onSelect:function(e){E(e),y(e)}}),o("button",{className:"cursor-pointer",onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){E(w),v()}),300)},children:o(c,{size:16})})]})}export{m as SelectCellInput};
|
|
3
3
|
//# sourceMappingURL=select-input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sources":["../../../../../src/table/filter-v2/context.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport {\n TFilterActionContext,\n TFilterFunctionContext,\n TFilterStateContext,\n} from \"./type\";\n\nexport const FilterStateContext = createContext<TFilterStateContext | null>(\n null\n);\nexport const FilterActionContext = createContext<TFilterActionContext | null>(\n null\n);\nexport const FilterFunctionContext =\n createContext<TFilterFunctionContext | null>(null);\n\nexport function useFilterState() {\n const context = useContext(FilterStateContext);\n\n if (!context) {\n throw new Error(\"useFilterState must be used within a FilterProvider\");\n }\n\n return context;\n}\n\nexport function useFilterAction() {\n const context = useContext(FilterActionContext);\n\n if (!context) {\n throw new Error(\"useFilterAction must be used within a FilterProvider\");\n }\n\n return context;\n}\n\nexport function useFilterFunctions() {\n const context = useContext(FilterFunctionContext);\n\n if (!context) {\n throw new Error(\"useFilterFunctions must be used within a FilterProvider\");\n }\n\n return context;\n}\n\nexport function useFilter() {\n return { ...useFilterState(), ...useFilterAction(), ...useFilterFunctions() };\n}\n"],"names":["FilterStateContext","createContext","FilterActionContext","FilterFunctionContext","useFilterState","context","useContext","Error","useFilterAction","useFilterFunctions","useFilter","__assign"],"mappings":"8HAOaA,EAAqBC,EAChC,MAEWC,EAAsBD,EACjC,MAEWE,EACXF,EAA6C,eAE/BG,IACd,IAAMC,EAAUC,EAAWN,GAE3B,IAAKK,EACH,MAAM,IAAIE,MAAM,uDAGlB,OAAOF,CACT,UAEgBG,IACd,IAAMH,EAAUC,EAAWJ,GAE3B,IAAKG,EACH,MAAM,IAAIE,MAAM,wDAGlB,OAAOF,CACT,UAEgBI,IACd,IAAMJ,EAAUC,EAAWH,GAE3B,IAAKE,EACH,MAAM,IAAIE,MAAM,2DAGlB,OAAOF,CACT,UAEgBK,IACd,
|
|
1
|
+
{"version":3,"file":"context.js","sources":["../../../../../src/table/filter-v2/context.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport {\n TFilterActionContext,\n TFilterFunctionContext,\n TFilterStateContext,\n} from \"./type\";\n\nexport const FilterStateContext = createContext<TFilterStateContext | null>(\n null\n);\nexport const FilterActionContext = createContext<TFilterActionContext | null>(\n null\n);\nexport const FilterFunctionContext =\n createContext<TFilterFunctionContext | null>(null);\n\nexport function useFilterState() {\n const context = useContext(FilterStateContext);\n\n if (!context) {\n throw new Error(\"useFilterState must be used within a FilterProvider\");\n }\n\n return context;\n}\n\nexport function useFilterAction() {\n const context = useContext(FilterActionContext);\n\n if (!context) {\n throw new Error(\"useFilterAction must be used within a FilterProvider\");\n }\n\n return context;\n}\n\nexport function useFilterFunctions() {\n const context = useContext(FilterFunctionContext);\n\n if (!context) {\n throw new Error(\"useFilterFunctions must be used within a FilterProvider\");\n }\n\n return context;\n}\n\nexport function useFilter() {\n return { ...useFilterState(), ...useFilterAction(), ...useFilterFunctions() };\n}\n"],"names":["FilterStateContext","createContext","FilterActionContext","FilterFunctionContext","useFilterState","context","useContext","Error","useFilterAction","useFilterFunctions","useFilter","__assign"],"mappings":"8HAOaA,EAAqBC,EAChC,MAEWC,EAAsBD,EACjC,MAEWE,EACXF,EAA6C,eAE/BG,IACd,IAAMC,EAAUC,EAAWN,GAE3B,IAAKK,EACH,MAAM,IAAIE,MAAM,uDAGlB,OAAOF,CACT,UAEgBG,IACd,IAAMH,EAAUC,EAAWJ,GAE3B,IAAKG,EACH,MAAM,IAAIE,MAAM,wDAGlB,OAAOF,CACT,UAEgBI,IACd,IAAMJ,EAAUC,EAAWH,GAE3B,IAAKE,EACH,MAAM,IAAIE,MAAM,2DAGlB,OAAOF,CACT,UAEgBK,IACd,OAAAC,EAAAA,EAAAA,EAAA,CAAA,EAAYP,KAAqBI,KAAsBC,IACzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sources":["../../../../../src/table/filter-v2/hook.ts"],"sourcesContent":["import { useMemo, useReducer } from \"react\";\nimport { TFilterHook } from \"./type\";\nimport { filterReducer } from \"./reducer\";\nimport { Condition } from \"../../search-bar\";\nimport { DataObject, DataRecord } from \"../table/type\";\nimport { SearchInput } from \"../../search-bar/condition-search-bar/condition-input-management/type\";\n\nexport const useFilterHook: TFilterHook = (initialConditions) => {\n const [state, dispatch] = useReducer(filterReducer, {\n conditions: initialConditions,\n });\n\n const actions = useMemo(\n () => ({\n addFilter: (condition: Condition) => {\n dispatch({ type: \"add\", payload: { condition } });\n },\n removeFilter: (index: number) => {\n dispatch({ type: \"remove\", payload: { index } });\n },\n clearFilter: () => {\n dispatch({ type: \"clear\" });\n },\n }),\n [state.conditions]\n );\n\n const functions = useMemo(\n () => ({\n filter: <T extends DataRecord>(rows: DataObject<T>[]) => {\n return rows.filter((row) => {\n return state.conditions.every((condition) => {\n const value = row[condition.target.key];\n return isMatchCondition(condition, value, condition.input);\n });\n });\n },\n }),\n [state.conditions]\n );\n\n return {\n state,\n actions,\n functions,\n };\n};\n\nfunction isMatchCondition(\n condition: Condition,\n targetValue: any,\n input: SearchInput\n): boolean {\n switch (condition.operator.type) {\n case \"number\":\n switch (condition.operator.inputType) {\n case \"single number\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n const numValue = input.payload.value;\n\n switch (condition.operator.key) {\n case \"number:eq\":\n return targetValue === numValue;\n case \"number:gt\":\n return targetValue > numValue;\n case \"number:gte\":\n return targetValue >= numValue;\n case \"number:lt\":\n return targetValue < numValue;\n case \"number:lte\":\n return targetValue <= numValue;\n case \"number:neq\":\n return targetValue !== numValue;\n }\n }\n\n case \"string\":\n switch (condition.operator.inputType) {\n case \"none\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n switch (condition.operator.key) {\n case \"string:is_not_null\":\n return (\n targetValue !== null &&\n targetValue !== undefined &&\n targetValue !== \"\"\n );\n case \"string:is_null\":\n return (\n targetValue === null ||\n targetValue === undefined ||\n targetValue === \"\"\n );\n }\n case \"single string\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n const value = input.payload.value;\n\n switch (condition.operator.key) {\n case \"string:eq\":\n return targetValue === value;\n case \"string:like\":\n return targetValue.includes(value);\n case \"string:neq\":\n return targetValue !== value;\n case \"string:not_like\":\n return !targetValue.includes(value);\n }\n }\n\n case \"select\":\n switch (condition.operator.inputType) {\n case \"select\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n const value = input.payload.value;\n\n switch (condition.operator.key) {\n case \"select:eq\":\n return targetValue === value;\n case \"select:neq\":\n return targetValue !== value;\n }\n case \"none\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n switch (condition.operator.key) {\n case \"select:is_null\":\n return (\n targetValue === null ||\n targetValue === undefined ||\n targetValue === \"\"\n );\n case \"select:is_not_null\":\n return (\n targetValue !== null &&\n targetValue !== undefined &&\n targetValue !== \"\"\n );\n }\n }\n case \"date\":\n switch (condition.operator.inputType) {\n case \"single date\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n const dateValue = input.payload.value;\n\n if (!(targetValue instanceof Date)) {\n throw new Error(\"date value is not Date object\");\n }\n\n switch (condition.operator.key) {\n case \"date:eq\":\n return (\n targetValue.getFullYear() === dateValue.getFullYear() &&\n targetValue.getMonth() === dateValue.getMonth() &&\n targetValue.getDate() === dateValue.getDate()\n );\n case \"date:neq\":\n return (\n targetValue.getFullYear() !== dateValue.getFullYear() ||\n targetValue.getMonth() !== dateValue.getMonth() ||\n targetValue.getDate() !== dateValue.getDate()\n );\n case \"date:gt\":\n return targetValue > dateValue;\n case \"date:gte\":\n return targetValue >= dateValue;\n case \"date:lt\":\n return targetValue < dateValue;\n case \"date:lte\":\n return targetValue <= dateValue;\n }\n case \"none\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n switch (condition.operator.key) {\n case \"date:is_null\":\n return (\n targetValue === null ||\n targetValue === undefined ||\n targetValue === \"\"\n );\n case \"date:is_not_null\":\n return (\n targetValue !== null &&\n targetValue !== undefined &&\n targetValue !== \"\"\n );\n }\n }\n case \"datetime\":\n switch (condition.operator.inputType) {\n case \"single datetime\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n const dateValue = input.payload.value;\n\n switch (condition.operator.key) {\n case \"datetime:gt\":\n return targetValue > dateValue;\n case \"datetime:gte\":\n return targetValue >= dateValue;\n case \"datetime:lt\":\n return targetValue < dateValue;\n case \"datetime:lte\":\n return targetValue <= dateValue;\n }\n case \"none\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n switch (condition.operator.key) {\n case \"datetime:is_null\":\n return (\n targetValue === null ||\n targetValue === undefined ||\n targetValue === \"\"\n );\n case \"datetime:is_not_null\":\n return (\n targetValue !== null &&\n targetValue !== undefined &&\n targetValue !== \"\"\n );\n }\n }\n }\n}\n"],"names":["useFilterHook","initialConditions","_a","useReducer","filterReducer","conditions","state","dispatch","actions","useMemo","addFilter","condition","type","payload","removeFilter","index","clearFilter","functions","filter","rows","row","every","targetValue","input","operator","inputType","Error","numValue","value","key","includes","dateValue","Date","getFullYear","getMonth","getDate","isMatchCondition","target"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hook.js","sources":["../../../../../src/table/filter-v2/hook.ts"],"sourcesContent":["import { useMemo, useReducer } from \"react\";\nimport { TFilterHook } from \"./type\";\nimport { filterReducer } from \"./reducer\";\nimport { Condition } from \"../../search-bar\";\nimport { DataObject, DataRecord } from \"../table/type\";\nimport { SearchInput } from \"../../search-bar/condition-search-bar/condition-input-management/type\";\n\nexport const useFilterHook: TFilterHook = (initialConditions) => {\n const [state, dispatch] = useReducer(filterReducer, {\n conditions: initialConditions,\n });\n\n const actions = useMemo(\n () => ({\n addFilter: (condition: Condition) => {\n dispatch({ type: \"add\", payload: { condition } });\n },\n removeFilter: (index: number) => {\n dispatch({ type: \"remove\", payload: { index } });\n },\n clearFilter: () => {\n dispatch({ type: \"clear\" });\n },\n }),\n [state.conditions]\n );\n\n const functions = useMemo(\n () => ({\n filter: <T extends DataRecord>(rows: DataObject<T>[]) => {\n return rows.filter((row) => {\n return state.conditions.every((condition) => {\n const value = row[condition.target.key];\n return isMatchCondition(condition, value, condition.input);\n });\n });\n },\n }),\n [state.conditions]\n );\n\n return {\n state,\n actions,\n functions,\n };\n};\n\nfunction isMatchCondition(\n condition: Condition,\n targetValue: any,\n input: SearchInput\n): boolean {\n switch (condition.operator.type) {\n case \"number\":\n switch (condition.operator.inputType) {\n case \"single number\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n const numValue = input.payload.value;\n\n switch (condition.operator.key) {\n case \"number:eq\":\n return targetValue === numValue;\n case \"number:gt\":\n return targetValue > numValue;\n case \"number:gte\":\n return targetValue >= numValue;\n case \"number:lt\":\n return targetValue < numValue;\n case \"number:lte\":\n return targetValue <= numValue;\n case \"number:neq\":\n return targetValue !== numValue;\n }\n }\n\n case \"string\":\n switch (condition.operator.inputType) {\n case \"none\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n switch (condition.operator.key) {\n case \"string:is_not_null\":\n return (\n targetValue !== null &&\n targetValue !== undefined &&\n targetValue !== \"\"\n );\n case \"string:is_null\":\n return (\n targetValue === null ||\n targetValue === undefined ||\n targetValue === \"\"\n );\n }\n case \"single string\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n const value = input.payload.value;\n\n switch (condition.operator.key) {\n case \"string:eq\":\n return targetValue === value;\n case \"string:like\":\n return targetValue.includes(value);\n case \"string:neq\":\n return targetValue !== value;\n case \"string:not_like\":\n return !targetValue.includes(value);\n }\n }\n\n case \"select\":\n switch (condition.operator.inputType) {\n case \"select\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n const value = input.payload.value;\n\n switch (condition.operator.key) {\n case \"select:eq\":\n return targetValue === value;\n case \"select:neq\":\n return targetValue !== value;\n }\n case \"none\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n switch (condition.operator.key) {\n case \"select:is_null\":\n return (\n targetValue === null ||\n targetValue === undefined ||\n targetValue === \"\"\n );\n case \"select:is_not_null\":\n return (\n targetValue !== null &&\n targetValue !== undefined &&\n targetValue !== \"\"\n );\n }\n }\n case \"date\":\n switch (condition.operator.inputType) {\n case \"single date\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n const dateValue = input.payload.value;\n\n if (!(targetValue instanceof Date)) {\n throw new Error(\"date value is not Date object\");\n }\n\n switch (condition.operator.key) {\n case \"date:eq\":\n return (\n targetValue.getFullYear() === dateValue.getFullYear() &&\n targetValue.getMonth() === dateValue.getMonth() &&\n targetValue.getDate() === dateValue.getDate()\n );\n case \"date:neq\":\n return (\n targetValue.getFullYear() !== dateValue.getFullYear() ||\n targetValue.getMonth() !== dateValue.getMonth() ||\n targetValue.getDate() !== dateValue.getDate()\n );\n case \"date:gt\":\n return targetValue > dateValue;\n case \"date:gte\":\n return targetValue >= dateValue;\n case \"date:lt\":\n return targetValue < dateValue;\n case \"date:lte\":\n return targetValue <= dateValue;\n }\n case \"none\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n switch (condition.operator.key) {\n case \"date:is_null\":\n return (\n targetValue === null ||\n targetValue === undefined ||\n targetValue === \"\"\n );\n case \"date:is_not_null\":\n return (\n targetValue !== null &&\n targetValue !== undefined &&\n targetValue !== \"\"\n );\n }\n }\n case \"datetime\":\n switch (condition.operator.inputType) {\n case \"single datetime\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n const dateValue = input.payload.value;\n\n switch (condition.operator.key) {\n case \"datetime:gt\":\n return targetValue > dateValue;\n case \"datetime:gte\":\n return targetValue >= dateValue;\n case \"datetime:lt\":\n return targetValue < dateValue;\n case \"datetime:lte\":\n return targetValue <= dateValue;\n }\n case \"none\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n switch (condition.operator.key) {\n case \"datetime:is_null\":\n return (\n targetValue === null ||\n targetValue === undefined ||\n targetValue === \"\"\n );\n case \"datetime:is_not_null\":\n return (\n targetValue !== null &&\n targetValue !== undefined &&\n targetValue !== \"\"\n );\n }\n }\n }\n}\n"],"names":["useFilterHook","initialConditions","_a","useReducer","filterReducer","conditions","state","dispatch","actions","useMemo","addFilter","condition","type","payload","removeFilter","index","clearFilter","functions","filter","rows","row","every","targetValue","input","operator","inputType","Error","numValue","value","key","includes","dateValue","Date","getFullYear","getMonth","getDate","isMatchCondition","target"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sources":["../../../../../src/table/filter-v2/provider.tsx"],"sourcesContent":["import { Condition } from \"../../search-bar\";\nimport {\n FilterActionContext,\n FilterFunctionContext,\n FilterStateContext,\n} from \"./context\";\nimport { useFilterHook } from \"./hook\";\n\nexport function FilterProvider(props: {\n children: React.ReactNode;\n initialConditions: Condition[];\n}) {\n const { state, actions, functions } = useFilterHook(props.initialConditions);\n\n return (\n <FilterStateContext.Provider value={state}>\n <FilterActionContext.Provider value={actions}>\n <FilterFunctionContext.Provider value={functions}>\n {props.children}\n </FilterFunctionContext.Provider>\n </FilterActionContext.Provider>\n </FilterStateContext.Provider>\n );\n}\n"],"names":["FilterProvider","props","_a","useFilterHook","initialConditions","state","actions","functions","_jsx","FilterStateContext","Provider","value","FilterActionContext","children","FilterFunctionContext"],"mappings":"wLAQM,SAAUA,EAAeC,GAIvB,IAAAC,EAAgCC,EAAcF,EAAMG,mBAAlDC,EAAKH,EAAAG,MAAEC,EAAOJ,EAAAI,QAAEC,cAExB,OACEC,EAACC,EAAmBC,
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../src/table/filter-v2/provider.tsx"],"sourcesContent":["import { Condition } from \"../../search-bar\";\nimport {\n FilterActionContext,\n FilterFunctionContext,\n FilterStateContext,\n} from \"./context\";\nimport { useFilterHook } from \"./hook\";\n\nexport function FilterProvider(props: {\n children: React.ReactNode;\n initialConditions: Condition[];\n}) {\n const { state, actions, functions } = useFilterHook(props.initialConditions);\n\n return (\n <FilterStateContext.Provider value={state}>\n <FilterActionContext.Provider value={actions}>\n <FilterFunctionContext.Provider value={functions}>\n {props.children}\n </FilterFunctionContext.Provider>\n </FilterActionContext.Provider>\n </FilterStateContext.Provider>\n );\n}\n"],"names":["FilterProvider","props","_a","useFilterHook","initialConditions","state","actions","functions","_jsx","FilterStateContext","Provider","value","FilterActionContext","children","FilterFunctionContext"],"mappings":"wLAQM,SAAUA,EAAeC,GAIvB,IAAAC,EAAgCC,EAAcF,EAAMG,mBAAlDC,EAAKH,EAAAG,MAAEC,EAAOJ,EAAAI,QAAEC,cAExB,OACEC,EAACC,EAAmBC,SAAQ,CAACC,MAAON,WAClCG,EAACI,EAAoBF,UAASC,MAAOL,EAAOO,SAC1CL,EAACM,EAAsBJ,SAAQ,CAACC,MAAOJ,EAASM,SAC7CZ,EAAMY,cAKjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sources":["../../../../../src/table/filter-v2/reducer.ts"],"sourcesContent":["import { TFilterReducer } from \"./type\";\n\nexport const filterReducer: TFilterReducer = (state, action) => {\n switch (action.type) {\n case \"add\":\n return {\n conditions: [...state.conditions, action.payload.condition],\n };\n case \"remove\":\n return {\n conditions: state.conditions.filter(\n (_, index) => index !== action.payload.index\n ),\n };\n case \"clear\":\n return {\n conditions: [],\n };\n }\n};\n"],"names":["filterReducer","state","action","type","conditions","__spreadArray","payload","condition","filter","_","index"],"mappings":"
|
|
1
|
+
{"version":3,"file":"reducer.js","sources":["../../../../../src/table/filter-v2/reducer.ts"],"sourcesContent":["import { TFilterReducer } from \"./type\";\n\nexport const filterReducer: TFilterReducer = (state, action) => {\n switch (action.type) {\n case \"add\":\n return {\n conditions: [...state.conditions, action.payload.condition],\n };\n case \"remove\":\n return {\n conditions: state.conditions.filter(\n (_, index) => index !== action.payload.index\n ),\n };\n case \"clear\":\n return {\n conditions: [],\n };\n }\n};\n"],"names":["filterReducer","state","action","type","conditions","__spreadArray","payload","condition","filter","_","index"],"mappings":"yEAEO,IAAMA,EAAgC,SAACC,EAAOC,GACnD,OAAQA,EAAOC,MACb,IAAK,MACH,MAAO,CACLC,WAAUC,EAAAA,EAAA,GAAMJ,EAAMG,YAAU,GAAA,CAAEF,EAAOI,QAAQC,YAAS,IAE9D,IAAK,SACH,MAAO,CACLH,WAAYH,EAAMG,WAAWI,QAC3B,SAACC,EAAGC,GAAU,OAAAA,IAAUR,EAAOI,QAAQI,KAAzB,KAGpB,IAAK,QACH,MAAO,CACLN,WAAY,IAGpB"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as r}from"react/jsx-runtime";import{
|
|
2
|
+
import{jsx as r}from"react/jsx-runtime";import{DEFAULT_MIN_COL_WIDTH as t,DEFAULT_COL_WIDTH as i}from"../../constant.js";import{ColumnsWidthStateContext as e,ColumnsWidthActionContext as n}from"./context.js";import{useColumnsWidthReducer as o}from"./reducer.js";function c(t){var i=o(d(t.initialState)),c=i.state,a=i.action;return r(e.Provider,{value:c,children:r(n.Provider,{value:a,children:t.children})})}var d=function(r){return r.reduce((function(r,e,n){return r[e.key]={colWidth:e.initialWidth||i,minWidth:e.minWidth||t,index:n},r}),{})};export{c as ColumnsWidthProvider};
|
|
3
3
|
//# sourceMappingURL=provider.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__assign as t}from"../../../../node_modules/tslib/tslib.es6.js";import{useReducer as n,useRef as o,useMemo as c,useLayoutEffect as e}from"react";import{
|
|
1
|
+
import{__assign as t}from"../../../../node_modules/tslib/tslib.es6.js";import{useReducer as n,useRef as o,useMemo as c,useLayoutEffect as e}from"react";import{DEFAULT_MIN_COL_WIDTH as i,DEFAULT_COL_WIDTH as a}from"../../constant.js";var r=function(n,o){var c,e;switch(o.type){case"init":return o.payload.columnsWidth;case"setMinWidth":return t(t({},n),((c={})[o.payload.key]=t(t({},n[o.payload.key]),{minWidth:o.payload.minWidth}),c));case"set":return t(t({},n),((e={})[o.payload.key]=t(t({},n[o.payload.key]),{colWidth:o.payload.colWidth}),e));default:return n}},u=function(t){var u=n(r,t),l=u[0],d=u[1],s=o(null),h=c((function(){return{getColumnWidth:function(t){var n=l[t];return n?n.colWidth:(console.warn("Column width state not found: ".concat(t)),a)},getColumnMinWidth:function(t){var n=l[t];return n?n.minWidth:(console.warn("Column width state not found: ".concat(t)),i)}}}),[l]),f=c((function(){return{setColWidth:function(t,n){s.current=t,d({type:"set",payload:{key:t,colWidth:n}})}}}),[]);return e((function(){if(s.current){var t=s.current,n=setTimeout((function(){var n,o,c;n=l[t].colWidth,o=l[t].index,c="table-col-".concat(o),document.querySelectorAll(".".concat(c)).forEach((function(t){t.setAttribute("style","width: ".concat(n,"px; min-width: ").concat(n,"px; max-width: ").concat(n,"px;"))}))}),200);return function(){clearTimeout(n)}}Object.keys(l).forEach((function(t){var n=l[t].colWidth,o=l[t].index,c="table-col-".concat(o);document.querySelectorAll(".".concat(c)).forEach((function(t){t.setAttribute("style","width: ".concat(n,"px; min-width: ").concat(n,"px; max-width: ").concat(n,"px;"))}))}))}),[l]),{state:h,action:f}};export{r as columnsWidthReducer,u as useColumnsWidthReducer};
|
|
2
2
|
//# sourceMappingURL=reducer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sources":["../../../../../../src/table/header/columns-width/reducer.ts"],"sourcesContent":["import { useMemo, useReducer, useRef, useLayoutEffect } from \"react\";\nimport { TColumnsWidthHook, TColumnsWidthReducer } from \"./type\";\nimport { DEFAULT_COL_WIDTH, DEFAULT_MIN_COL_WIDTH } from \"../../constant\";\n\nexport const columnsWidthReducer: TColumnsWidthReducer = (state, action) => {\n switch (action.type) {\n case \"init\":\n return action.payload.columnsWidth;\n case \"setMinWidth\":\n return {\n ...state,\n [action.payload.key]: {\n ...state[action.payload.key],\n minWidth: action.payload.minWidth,\n },\n };\n case \"set\":\n return {\n ...state,\n [action.payload.key]: {\n ...state[action.payload.key],\n colWidth: action.payload.colWidth,\n },\n };\n default:\n return state;\n }\n};\n\nexport const useColumnsWidthReducer: TColumnsWidthHook = (initialState) => {\n const [state, dispatch] = useReducer(columnsWidthReducer, initialState);\n const updateKeyRef = useRef<string | null>(null);\n\n const stateActions = useMemo(\n () => ({\n getColumnWidth: (key: string) => {\n const s = state[key];\n\n if (!s) {\n console.warn(`Column width state not found: ${key}`);\n return DEFAULT_COL_WIDTH;\n }\n\n return s.colWidth;\n },\n getColumnMinWidth: (key: string) => {\n const s = state[key];\n\n if (!s) {\n console.warn(`Column width state not found: ${key}`);\n return DEFAULT_MIN_COL_WIDTH;\n }\n\n return s.minWidth;\n },\n }),\n [state]\n );\n\n const action = useMemo(\n () => ({\n setColWidth: (key: string, colWidth: number) => {\n updateKeyRef.current = key;\n dispatch({ type: \"set\", payload: { key, colWidth } });\n },\n }),\n []\n );\n\n useLayoutEffect(() => {\n if (updateKeyRef.current) {\n const key = updateKeyRef.current;\n\n const updateColWidth = () => {\n const colWidth = state[key].colWidth;\n const index = state[key].index;\n\n const className = `table-col-${index}`;\n const colElements = document.querySelectorAll(`.${className}`);\n colElements.forEach((colElement) => {\n colElement.setAttribute(\n \"style\",\n `width: ${colWidth}px; min-width: ${colWidth}px; max-width: ${colWidth}px;`\n );\n });\n };\n\n const timer = setTimeout(() => {\n updateColWidth();\n }, 200);\n\n return () => {\n clearTimeout(timer);\n };\n } else {\n Object.keys(state).forEach((key) => {\n const colWidth = state[key].colWidth;\n const index = state[key].index;\n\n const className = `table-col-${index}`;\n const colElements = document.querySelectorAll(`.${className}`);\n colElements.forEach((colElement) => {\n colElement.setAttribute(\n \"style\",\n `width: ${colWidth}px; min-width: ${colWidth}px; max-width: ${colWidth}px;`\n );\n });\n });\n }\n }, [state]);\n\n return { state: stateActions, action };\n};\n"],"names":["columnsWidthReducer","state","action","type","payload","columnsWidth","__assign","_a","key","minWidth","_b","colWidth","useColumnsWidthReducer","initialState","useReducer","dispatch","updateKeyRef","useRef","stateActions","useMemo","getColumnWidth","s","console","warn","DEFAULT_COL_WIDTH","getColumnMinWidth","DEFAULT_MIN_COL_WIDTH","setColWidth","current","useLayoutEffect","key_1","timer_1","setTimeout","index","className","concat","document","querySelectorAll","forEach","colElement","setAttribute","clearTimeout","Object","keys"],"mappings":"
|
|
1
|
+
{"version":3,"file":"reducer.js","sources":["../../../../../../src/table/header/columns-width/reducer.ts"],"sourcesContent":["import { useMemo, useReducer, useRef, useLayoutEffect } from \"react\";\nimport { TColumnsWidthHook, TColumnsWidthReducer } from \"./type\";\nimport { DEFAULT_COL_WIDTH, DEFAULT_MIN_COL_WIDTH } from \"../../constant\";\n\nexport const columnsWidthReducer: TColumnsWidthReducer = (state, action) => {\n switch (action.type) {\n case \"init\":\n return action.payload.columnsWidth;\n case \"setMinWidth\":\n return {\n ...state,\n [action.payload.key]: {\n ...state[action.payload.key],\n minWidth: action.payload.minWidth,\n },\n };\n case \"set\":\n return {\n ...state,\n [action.payload.key]: {\n ...state[action.payload.key],\n colWidth: action.payload.colWidth,\n },\n };\n default:\n return state;\n }\n};\n\nexport const useColumnsWidthReducer: TColumnsWidthHook = (initialState) => {\n const [state, dispatch] = useReducer(columnsWidthReducer, initialState);\n const updateKeyRef = useRef<string | null>(null);\n\n const stateActions = useMemo(\n () => ({\n getColumnWidth: (key: string) => {\n const s = state[key];\n\n if (!s) {\n console.warn(`Column width state not found: ${key}`);\n return DEFAULT_COL_WIDTH;\n }\n\n return s.colWidth;\n },\n getColumnMinWidth: (key: string) => {\n const s = state[key];\n\n if (!s) {\n console.warn(`Column width state not found: ${key}`);\n return DEFAULT_MIN_COL_WIDTH;\n }\n\n return s.minWidth;\n },\n }),\n [state]\n );\n\n const action = useMemo(\n () => ({\n setColWidth: (key: string, colWidth: number) => {\n updateKeyRef.current = key;\n dispatch({ type: \"set\", payload: { key, colWidth } });\n },\n }),\n []\n );\n\n useLayoutEffect(() => {\n if (updateKeyRef.current) {\n const key = updateKeyRef.current;\n\n const updateColWidth = () => {\n const colWidth = state[key].colWidth;\n const index = state[key].index;\n\n const className = `table-col-${index}`;\n const colElements = document.querySelectorAll(`.${className}`);\n colElements.forEach((colElement) => {\n colElement.setAttribute(\n \"style\",\n `width: ${colWidth}px; min-width: ${colWidth}px; max-width: ${colWidth}px;`\n );\n });\n };\n\n const timer = setTimeout(() => {\n updateColWidth();\n }, 200);\n\n return () => {\n clearTimeout(timer);\n };\n } else {\n Object.keys(state).forEach((key) => {\n const colWidth = state[key].colWidth;\n const index = state[key].index;\n\n const className = `table-col-${index}`;\n const colElements = document.querySelectorAll(`.${className}`);\n colElements.forEach((colElement) => {\n colElement.setAttribute(\n \"style\",\n `width: ${colWidth}px; min-width: ${colWidth}px; max-width: ${colWidth}px;`\n );\n });\n });\n }\n }, [state]);\n\n return { state: stateActions, action };\n};\n"],"names":["columnsWidthReducer","state","action","type","payload","columnsWidth","__assign","_a","key","minWidth","_b","colWidth","useColumnsWidthReducer","initialState","useReducer","dispatch","updateKeyRef","useRef","stateActions","useMemo","getColumnWidth","s","console","warn","DEFAULT_COL_WIDTH","getColumnMinWidth","DEFAULT_MIN_COL_WIDTH","setColWidth","current","useLayoutEffect","key_1","timer_1","setTimeout","index","className","concat","document","querySelectorAll","forEach","colElement","setAttribute","clearTimeout","Object","keys"],"mappings":"yOAIO,IAAMA,EAA4C,SAACC,EAAOC,WAC/D,OAAQA,EAAOC,MACb,IAAK,OACH,OAAOD,EAAOE,QAAQC,aACxB,IAAK,cACH,OAAAC,EAAAA,EAAA,CAAA,EACKL,KAAKM,EAAA,CAAA,GACPL,EAAOE,QAAQI,KAAGF,EAAAA,EAAA,CAAA,EACdL,EAAMC,EAAOE,QAAQI,MAAI,CAC5BC,SAAUP,EAAOE,QAAQK,WAAQF,IAGvC,IAAK,MACH,OAAAD,EAAAA,EAAA,CAAA,EACKL,KAAKS,EAAA,CAAA,GACPR,EAAOE,QAAQI,KAAGF,EAAAA,EAAA,CAAA,EACdL,EAAMC,EAAOE,QAAQI,MAAI,CAC5BG,SAAUT,EAAOE,QAAQO,WAAQD,IAGvC,QACE,OAAOT,EAEb,EAEaW,EAA4C,SAACC,GAClD,IAAAN,EAAoBO,EAAWd,EAAqBa,GAAnDZ,EAAKM,EAAA,GAAEQ,OACRC,EAAeC,EAAsB,MAErCC,EAAeC,GACnB,WAAM,MAAA,CACJC,eAAgB,SAACZ,GACf,IAAMa,EAAIpB,EAAMO,GAEhB,OAAKa,EAKEA,EAAEV,UAJPW,QAAQC,KAAK,wCAAiCf,IACvCgB,EAIX,EACAC,kBAAmB,SAACjB,GAClB,IAAMa,EAAIpB,EAAMO,GAEhB,OAAKa,EAKEA,EAAEZ,UAJPa,QAAQC,KAAK,wCAAiCf,IACvCkB,EAIX,EApBI,GAsBN,CAACzB,IAGGC,EAASiB,GACb,WAAM,MAAA,CACJQ,YAAa,SAACnB,EAAaG,GACzBK,EAAaY,QAAUpB,EACvBO,EAAS,CAAEZ,KAAM,MAAOC,QAAS,CAAEI,MAAKG,aAC1C,EAJI,GAMN,IA6CF,OA1CAkB,GAAgB,WACd,GAAIb,EAAaY,QAAS,CACxB,IAAME,EAAMd,EAAaY,QAgBnBG,EAAQC,YAAW,WAdF,IACfrB,EACAsB,EAEAC,EAHAvB,EAAWV,EAAM6B,GAAKnB,SACtBsB,EAAQhC,EAAM6B,GAAKG,MAEnBC,EAAY,aAAAC,OAAaF,GACXG,SAASC,iBAAiB,IAAAF,OAAID,IACtCI,SAAQ,SAACC,GACnBA,EAAWC,aACT,QACA,UAAAL,OAAUxB,EAAQ,mBAAAwB,OAAkBxB,EAAQ,mBAAAwB,OAAkBxB,EAAQ,OAE1E,GAKF,GAAG,KAEH,OAAO,WACL8B,aAAaV,EACf,CACF,CACEW,OAAOC,KAAK1C,GAAOqC,SAAQ,SAAC9B,GAC1B,IAAMG,EAAWV,EAAMO,GAAKG,SACtBsB,EAAQhC,EAAMO,GAAKyB,MAEnBC,EAAY,aAAAC,OAAaF,GACXG,SAASC,iBAAiB,IAAAF,OAAID,IACtCI,SAAQ,SAACC,GACnBA,EAAWC,aACT,QACA,UAAAL,OAAUxB,EAAQ,mBAAAwB,OAAkBxB,EAAQ,mBAAAwB,OAAkBxB,EAAQ,OAE1E,GACF,GAEJ,GAAG,CAACV,IAEG,CAAEA,MAAOiB,EAAchB,OAAMA,EACtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-v2-hook.js","sources":["../../../../../src/table/header/header-v2-hook.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useColumnsWidth } from \"./columns-width\";\nimport { useScrollXPosition } from \"./x-scroll-position\";\n\nexport function useResizeColWidthHook(keyName: string) {\n const { getColumnWidth, getColumnMinWidth, setColWidth } = useColumnsWidth();\n const [isDragging, setIsDragging] = useState(false);\n\n const colWidth = getColumnWidth(keyName);\n const minWidth = getColumnMinWidth(keyName);\n\n const cursorStyle = \"col-resize\";\n\n const onMouseDownResizeWidth: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n if (isDragging) return;\n\n const startX = e.clientX;\n const startWidth = colWidth;\n\n document.body.style.cursor = cursorStyle;\n document.body.style.userSelect = \"none\";\n\n const onMouseMove = (moveEvent: MouseEvent) => {\n setIsDragging(true);\n const newWidth = startWidth + (moveEvent.clientX - startX);\n setColWidth(keyName, newWidth > minWidth ? newWidth : minWidth);\n };\n\n const onMouseUp = () => {\n setIsDragging(false);\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.body.style.cursor = \"default\";\n document.body.style.userSelect = \"auto\";\n };\n\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n },\n [isDragging, minWidth]\n );\n\n return {\n onMouseDownResizeWidth,\n };\n}\n\nexport function useScrollXRef() {\n const { x, setScrollX } = useScrollXPosition();\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleHeaderScroll = () => {\n if (ref.current) {\n setScrollX(ref.current.scrollLeft);\n }\n };\n\n if (ref.current) {\n ref.current.addEventListener(\"scroll\", handleHeaderScroll);\n }\n\n return () => {\n if (ref.current) {\n ref.current.removeEventListener(\"scroll\", handleHeaderScroll);\n }\n };\n }, []);\n\n useEffect(() => {\n if (ref.current) {\n ref.current.scrollLeft = x;\n }\n }, [x]);\n\n return ref;\n}\n"],"names":["useResizeColWidthHook","keyName","_a","useColumnsWidth","getColumnWidth","getColumnMinWidth","setColWidth","_b","useState","isDragging","setIsDragging","colWidth","minWidth","onMouseDownResizeWidth","useCallback","e","startX","clientX","startWidth","document","body","style","cursor","userSelect","onMouseMove","moveEvent","newWidth","onMouseUp","removeEventListener","addEventListener","useScrollXRef","useScrollXPosition","x","setScrollX","ref","useRef","useEffect","handleHeaderScroll","current","scrollLeft"],"mappings":"yRAIM,SAAUA,EAAsBC,GAC9B,IAAAC,EAAqDC,IAAnDC,EAAcF,EAAAE,eAAEC,EAAiBH,EAAAG,kBAAEC,EAAWJ,EAAAI,YAChDC,EAA8BC,GAAS,GAAtCC,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAE1BI,EAAWP,EAAeH,GAC1BW,EAAWP,EAAkBJ,GAmCnC,MAAO,CACLY,uBA/BAC,GACE,SAACC,GACC,IAAIN,EAAJ,CAEA,IAAMO,EAASD,EAAEE,QACXC,EAAaP,EAEnBQ,SAASC,KAAKC,MAAMC,OAVN,aAWdH,SAASC,KAAKC,MAAME,WAAa,OAEjC,IAAMC,EAAc,SAACC,GACnBf,GAAc,GACd,IAAMgB,EAAWR,GAAcO,EAAUR,QAAUD,GACnDV,EAAYL,EAASyB,EAAWd,EAAWc,EAAWd,EACxD,EAEMe,EAAY,WAChBjB,GAAc,GACdS,SAASS,oBAAoB,YAAaJ,GAC1CL,SAASS,oBAAoB,UAAWD,GACxCR,SAASC,KAAKC,MAAMC,OAAS,UAC7BH,SAASC,KAAKC,MAAME,WAAa,MACnC,EAEAJ,SAASU,iBAAiB,YAAaL,GACvCL,SAASU,iBAAiB,UAAWF,
|
|
1
|
+
{"version":3,"file":"header-v2-hook.js","sources":["../../../../../src/table/header/header-v2-hook.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useColumnsWidth } from \"./columns-width\";\nimport { useScrollXPosition } from \"./x-scroll-position\";\n\nexport function useResizeColWidthHook(keyName: string) {\n const { getColumnWidth, getColumnMinWidth, setColWidth } = useColumnsWidth();\n const [isDragging, setIsDragging] = useState(false);\n\n const colWidth = getColumnWidth(keyName);\n const minWidth = getColumnMinWidth(keyName);\n\n const cursorStyle = \"col-resize\";\n\n const onMouseDownResizeWidth: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n if (isDragging) return;\n\n const startX = e.clientX;\n const startWidth = colWidth;\n\n document.body.style.cursor = cursorStyle;\n document.body.style.userSelect = \"none\";\n\n const onMouseMove = (moveEvent: MouseEvent) => {\n setIsDragging(true);\n const newWidth = startWidth + (moveEvent.clientX - startX);\n setColWidth(keyName, newWidth > minWidth ? newWidth : minWidth);\n };\n\n const onMouseUp = () => {\n setIsDragging(false);\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.body.style.cursor = \"default\";\n document.body.style.userSelect = \"auto\";\n };\n\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n },\n [isDragging, minWidth]\n );\n\n return {\n onMouseDownResizeWidth,\n };\n}\n\nexport function useScrollXRef() {\n const { x, setScrollX } = useScrollXPosition();\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleHeaderScroll = () => {\n if (ref.current) {\n setScrollX(ref.current.scrollLeft);\n }\n };\n\n if (ref.current) {\n ref.current.addEventListener(\"scroll\", handleHeaderScroll);\n }\n\n return () => {\n if (ref.current) {\n ref.current.removeEventListener(\"scroll\", handleHeaderScroll);\n }\n };\n }, []);\n\n useEffect(() => {\n if (ref.current) {\n ref.current.scrollLeft = x;\n }\n }, [x]);\n\n return ref;\n}\n"],"names":["useResizeColWidthHook","keyName","_a","useColumnsWidth","getColumnWidth","getColumnMinWidth","setColWidth","_b","useState","isDragging","setIsDragging","colWidth","minWidth","onMouseDownResizeWidth","useCallback","e","startX","clientX","startWidth","document","body","style","cursor","userSelect","onMouseMove","moveEvent","newWidth","onMouseUp","removeEventListener","addEventListener","useScrollXRef","useScrollXPosition","x","setScrollX","ref","useRef","useEffect","handleHeaderScroll","current","scrollLeft"],"mappings":"yRAIM,SAAUA,EAAsBC,GAC9B,IAAAC,EAAqDC,IAAnDC,EAAcF,EAAAE,eAAEC,EAAiBH,EAAAG,kBAAEC,EAAWJ,EAAAI,YAChDC,EAA8BC,GAAS,GAAtCC,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAE1BI,EAAWP,EAAeH,GAC1BW,EAAWP,EAAkBJ,GAmCnC,MAAO,CACLY,uBA/BAC,GACE,SAACC,GACC,IAAIN,EAAJ,CAEA,IAAMO,EAASD,EAAEE,QACXC,EAAaP,EAEnBQ,SAASC,KAAKC,MAAMC,OAVN,aAWdH,SAASC,KAAKC,MAAME,WAAa,OAEjC,IAAMC,EAAc,SAACC,GACnBf,GAAc,GACd,IAAMgB,EAAWR,GAAcO,EAAUR,QAAUD,GACnDV,EAAYL,EAASyB,EAAWd,EAAWc,EAAWd,EACxD,EAEMe,EAAY,WAChBjB,GAAc,GACdS,SAASS,oBAAoB,YAAaJ,GAC1CL,SAASS,oBAAoB,UAAWD,GACxCR,SAASC,KAAKC,MAAMC,OAAS,UAC7BH,SAASC,KAAKC,MAAME,WAAa,MACnC,EAEAJ,SAASU,iBAAiB,YAAaL,GACvCL,SAASU,iBAAiB,UAAWF,EAvBrB,CAwBlB,GACA,CAAClB,EAAYG,IAMnB,UAEgBkB,IACR,IAAA5B,EAAoB6B,IAAlBC,EAAC9B,EAAA8B,EAAEC,EAAU/B,EAAA+B,WACfC,EAAMC,EAAuB,MA0BnC,OAxBAC,GAAU,WACR,IAAMC,EAAqB,WACrBH,EAAII,SACNL,EAAWC,EAAII,QAAQC,WAE3B,EAMA,OAJIL,EAAII,SACNJ,EAAII,QAAQT,iBAAiB,SAAUQ,GAGlC,WACDH,EAAII,SACNJ,EAAII,QAAQV,oBAAoB,SAAUS,EAE9C,CACF,GAAG,IAEHD,GAAU,WACJF,EAAII,UACNJ,EAAII,QAAQC,WAAaP,EAE7B,GAAG,CAACA,IAEGE,CACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{memo as r,useRef as
|
|
1
|
+
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{memo as r,useRef as i,useEffect as n,useCallback as l,useMemo as o}from"react";import{useColumnsWidthState as a}from"./columns-width/context.js";import"../../../node_modules/tslib/tslib.es6.js";import{useResizeColWidthHook as s,useScrollXRef as c}from"./header-v2-hook.js";import{AllCheckbox as d}from"../checkbox/components.js";import{ConditionSearchBar as m}from"../../search-bar/condition-search-bar/base.js";import{useTableIdGenerator as p}from"../id/provider.js";import{useFilter as h}from"../filter-v2/context.js";function u(r){var i=p(),s=a().getColumnWidth,u=h(),b=u.conditions,y=u.addFilter,v=u.removeFilter,x=c();n((function(){if(x.current){var e=x.current,t=function(t){0!==t.deltaY&&(t.preventDefault(),e.scrollLeft+=t.deltaY)};return e.addEventListener("wheel",t),function(){e.removeEventListener("wheel",t)}}}),[x]);var g=l((function(e){switch(e.type){case"add":y(e.payload.condition);break;case"remove":v(e.payload.index)}}),[]),w=o((function(){return r.cols.filter((function(e){return!e.disableFilter})).filter((function(e){return!!e.label&&("datetime"===e.type||"date"===e.type||e.editable)})).map((function(e){switch(e.type){case"string":case"number":case"date":case"datetime":return{key:e.key.toString(),label:e.label,type:e.type};case"select":return{key:e.key.toString(),label:e.label,type:e.type,options:e.options}}}))}),[r.cols]);return e("div",{className:"border-gray-200 bg-gray-200 text-gray-600 rounded-t-md",style:{maxWidth:r.maxWidth},children:[t("div",{className:"py-2 px-2",children:t(m,{id:i.getTableHeaderId(),targets:w,conditions:b,onChangeCondition:g,size:"small"})}),t("style",{children:"\n .teppen-no-scrollbar {\n -ms-overflow-style: none;\n scrollbar-width: none;\n }\n .teppen-no-scrollbar::-webkit-scrollbar {\n display: none;\n }\n "}),t("div",{ref:x,className:"relative max-w-full overflow-x-auto teppen-no-scrollbar",children:e("div",{className:"flex h-[32px]",children:[r.checkbox&&t("div",{className:"w-8 h-full",children:t(d,{rows:r.rows})}),r.cols.map((function(e){return t(f,{keyName:e.key.toString(),label:e.label,colWidth:s(e.key),disableSort:e.disableSort||"datetime"!==e.type&&"date"!==e.type&&!e.editable,generateSortButton:r.generateSortButton},e.key.toString())}))]})})]})}var f=r((function(r){var n=i(null),l=s(r.keyName).onMouseDownResizeWidth,o=n.current?r.colWidth-n.current.clientWidth:r.colWidth;return e("div",{className:"relative",style:{width:r.colWidth,maxWidth:r.colWidth,minWidth:r.colWidth},children:[e("div",{className:"flex justify-between items-center bg-gray-200 text-gray-600 h-[32px]",children:[t("div",{className:"px-2",style:{maxWidth:o},children:r.label&&t("p",{className:"text-left font-bold text-nowrap overflow-hidden text-ellipsis",children:r.label})}),t("div",{ref:n,className:"flex items-center w-fit shrink-0 gap-1 px-1",children:!r.disableSort&&r.generateSortButton&&r.generateSortButton(r.keyName)})]}),t("div",{className:"absolute top-0 right-0 grid place-items-end py-1 w-[4px] h-full cursor-col-resize",onMouseDown:l,children:t("div",{className:"w-[1px] h-full bg-white"})})]})}));export{u as TableHeader};
|
|
2
2
|
//# sourceMappingURL=header-v2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-v2.js","sources":["../../../../../src/table/header/header-v2.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { DataObject, DataRecord, TTableColumn } from \"../table/type\";\nimport { useColumnsWidthState } from \"./columns-width\";\nimport { useResizeColWidthHook, useScrollXRef } from \"./header-v2-hook\";\nimport { AllCheckbox } from \"../checkbox/components\";\nimport { ConditionSearchBar } from \"../../search-bar\";\nimport { useTableIdGenerator } from \"../id\";\nimport { useFilter } from \"../filter-v2\";\nimport { TConditionChangeAction } from \"../../search-bar/condition-search-bar/condition-input-management/type\";\n\ninterface IPropsTableHeader<T extends DataRecord> {\n cols: TTableColumn<T>[];\n checkbox?: boolean;\n rows: DataObject<T>[];\n maxWidth?: string;\n generateSortButton?: (columnKey: string) => React.ReactNode;\n}\n\nexport function TableHeader<T extends DataRecord>(props: IPropsTableHeader<T>) {\n const idGenerator = useTableIdGenerator();\n const { getColumnWidth } = useColumnsWidthState();\n const { conditions, addFilter, removeFilter } = useFilter();\n const ref = useScrollXRef();\n\n useEffect(() => {\n if (ref.current) {\n const element = ref.current;\n\n const scrollX = (e: WheelEvent) => {\n if (e.deltaY === 0) return;\n\n e.preventDefault();\n element.scrollLeft += e.deltaY;\n };\n\n element.addEventListener(\"wheel\", scrollX);\n\n return () => {\n element.removeEventListener(\"wheel\", scrollX);\n };\n }\n }, [ref]);\n\n const onChangeCondition = useCallback((action: TConditionChangeAction) => {\n switch (action.type) {\n case \"add\":\n addFilter(action.payload.condition);\n break;\n case \"remove\":\n removeFilter(action.payload.index);\n break;\n }\n }, []);\n\n const targets = useMemo(() => {\n return props.cols\n .filter(\n (col) =>\n !!col.label &&\n (col.type === \"datetime\"
|
|
1
|
+
{"version":3,"file":"header-v2.js","sources":["../../../../../src/table/header/header-v2.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { DataObject, DataRecord, TTableColumn } from \"../table/type\";\nimport { useColumnsWidthState } from \"./columns-width\";\nimport { useResizeColWidthHook, useScrollXRef } from \"./header-v2-hook\";\nimport { AllCheckbox } from \"../checkbox/components\";\nimport { ConditionSearchBar } from \"../../search-bar\";\nimport { useTableIdGenerator } from \"../id\";\nimport { useFilter } from \"../filter-v2\";\nimport { TConditionChangeAction } from \"../../search-bar/condition-search-bar/condition-input-management/type\";\n\ninterface IPropsTableHeader<T extends DataRecord> {\n cols: TTableColumn<T>[];\n checkbox?: boolean;\n rows: DataObject<T>[];\n maxWidth?: string;\n generateSortButton?: (columnKey: string) => React.ReactNode;\n}\n\nexport function TableHeader<T extends DataRecord>(props: IPropsTableHeader<T>) {\n const idGenerator = useTableIdGenerator();\n const { getColumnWidth } = useColumnsWidthState();\n const { conditions, addFilter, removeFilter } = useFilter();\n const ref = useScrollXRef();\n\n useEffect(() => {\n if (ref.current) {\n const element = ref.current;\n\n const scrollX = (e: WheelEvent) => {\n if (e.deltaY === 0) return;\n\n e.preventDefault();\n element.scrollLeft += e.deltaY;\n };\n\n element.addEventListener(\"wheel\", scrollX);\n\n return () => {\n element.removeEventListener(\"wheel\", scrollX);\n };\n }\n }, [ref]);\n\n const onChangeCondition = useCallback((action: TConditionChangeAction) => {\n switch (action.type) {\n case \"add\":\n addFilter(action.payload.condition);\n break;\n case \"remove\":\n removeFilter(action.payload.index);\n break;\n }\n }, []);\n\n const targets = useMemo(() => {\n return props.cols\n .filter((col) => !col.disableFilter)\n .filter(\n (col) =>\n !!col.label &&\n (col.type === \"datetime\" || col.type === \"date\" || col.editable)\n )\n .map((col) => {\n switch (col.type) {\n case \"string\":\n return {\n key: col.key.toString(),\n label: col.label as string,\n type: col.type,\n };\n case \"number\":\n return {\n key: col.key.toString(),\n label: col.label as string,\n type: col.type,\n };\n case \"select\":\n return {\n key: col.key.toString(),\n label: col.label as string,\n type: col.type,\n options: col.options,\n };\n case \"date\":\n return {\n key: col.key.toString(),\n label: col.label as string,\n type: col.type,\n };\n case \"datetime\":\n return {\n key: col.key.toString(),\n label: col.label as string,\n type: col.type,\n };\n }\n });\n }, [props.cols]);\n\n return (\n <div\n className=\"border-gray-200 bg-gray-200 text-gray-600 rounded-t-md\"\n style={{ maxWidth: props.maxWidth }}\n >\n <div className=\"py-2 px-2\">\n <ConditionSearchBar\n id={idGenerator.getTableHeaderId()}\n targets={targets}\n conditions={conditions}\n onChangeCondition={onChangeCondition}\n size=\"small\"\n />\n </div>\n\n <style>{`\n .teppen-no-scrollbar {\n -ms-overflow-style: none;\n scrollbar-width: none;\n }\n .teppen-no-scrollbar::-webkit-scrollbar {\n display: none;\n }\n `}</style>\n <div\n ref={ref}\n className=\"relative max-w-full overflow-x-auto teppen-no-scrollbar\"\n >\n <div className=\"flex h-[32px]\">\n {props.checkbox && (\n <div className=\"w-8 h-full\">\n <AllCheckbox rows={props.rows} />\n </div>\n )}\n {props.cols.map((col) => {\n return (\n <HeaderElement\n key={col.key.toString()}\n keyName={col.key.toString()}\n label={col.label}\n colWidth={getColumnWidth(col.key as string)}\n disableSort={\n col.disableSort ||\n (col.type !== \"datetime\" &&\n col.type !== \"date\" &&\n !col.editable)\n }\n generateSortButton={props.generateSortButton}\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n\ninterface IPropsHeaderElement {\n keyName: string;\n label?: string;\n colWidth: number;\n disableSort?: boolean;\n generateSortButton?: (columnKey: string) => React.ReactNode;\n}\n\nconst HeaderElement = memo(function HE(props: IPropsHeaderElement) {\n const ref = useRef<HTMLDivElement>(null);\n const { onMouseDownResizeWidth } = useResizeColWidthHook(props.keyName);\n\n const maxWidthLabel = ref.current\n ? props.colWidth - ref.current.clientWidth\n : props.colWidth;\n\n return (\n <div\n className=\"relative\"\n style={{\n width: props.colWidth,\n maxWidth: props.colWidth,\n minWidth: props.colWidth,\n }}\n >\n <div\n className={`flex justify-between items-center bg-gray-200 text-gray-600 h-[32px]`}\n >\n <div className=\"px-2\" style={{ maxWidth: maxWidthLabel }}>\n {props.label && (\n <p\n className={`text-left font-bold text-nowrap overflow-hidden text-ellipsis`}\n >\n {props.label}\n </p>\n )}\n </div>\n\n <div ref={ref} className=\"flex items-center w-fit shrink-0 gap-1 px-1\">\n {!props.disableSort &&\n props.generateSortButton &&\n props.generateSortButton(props.keyName)}\n </div>\n </div>\n <div\n className=\"absolute top-0 right-0 grid place-items-end py-1 w-[4px] h-full cursor-col-resize\"\n onMouseDown={onMouseDownResizeWidth}\n >\n <div className={`w-[1px] h-full bg-white`} />\n </div>\n </div>\n );\n});\n"],"names":["TableHeader","props","idGenerator","useTableIdGenerator","getColumnWidth","useColumnsWidthState","_a","useFilter","conditions","addFilter","removeFilter","ref","useScrollXRef","useEffect","current","element_1","scrollX_1","e","deltaY","preventDefault","scrollLeft","addEventListener","removeEventListener","onChangeCondition","useCallback","action","type","payload","condition","index","targets","useMemo","cols","filter","col","disableFilter","label","editable","map","key","toString","options","_jsxs","className","style","maxWidth","children","_jsx","ConditionSearchBar","id","getTableHeaderId","size","checkbox","AllCheckbox","rows","HeaderElement","keyName","colWidth","disableSort","generateSortButton","memo","useRef","onMouseDownResizeWidth","useResizeColWidthHook","maxWidthLabel","clientWidth","width","minWidth","onMouseDown"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as t}from"react/jsx-runtime";import{memo as
|
|
2
|
+
import{jsx as t}from"react/jsx-runtime";import{memo as m}from"react";import{useColumnsWidthState as r}from"./columns-width/context.js";import"../../../node_modules/tslib/tslib.es6.js";var e=m((function(m){var e=(0,r().getColumnWidth)(m.keyname);return t("th",{className:"p-px",style:{width:e,maxWidth:e,minWidth:e}})}));export{e as TableHeaderElement};
|
|
3
3
|
//# sourceMappingURL=header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sources":["../../../../../../src/table/header/x-scroll-position/reducer.ts"],"sourcesContent":["import { useMemo, useReducer } from \"react\";\nimport { TScrollXPositionHook, TScrollXPositionReducer } from \"./type\";\n\nconst scrollXPositionReducer: TScrollXPositionReducer = (state, action) => {\n switch (action.type) {\n case \"set\":\n if (action.payload.x === state.x) {\n return state;\n }\n\n if (action.payload.x < 0) {\n return state;\n }\n\n return {\n x: action.payload.x,\n };\n }\n};\n\nexport const useScrollXPositionReducer: TScrollXPositionHook = (\n initialState\n) => {\n const [state, dispatch] = useReducer(scrollXPositionReducer, {\n x: initialState || 0,\n });\n\n const action = useMemo(\n () => ({\n setScrollX: (x: number) => {\n dispatch({ type: \"set\", payload: { x } });\n },\n }),\n []\n );\n\n return { state, action };\n};\n"],"names":["scrollXPositionReducer","state","action","type","payload","x","useScrollXPositionReducer","initialState","_a","useReducer","dispatch","useMemo","setScrollX"],"mappings":"gDAGA,IAAMA,EAAkD,SAACC,EAAOC,GAC9D,GACO,QADCA,EAAOC,KAEX,OAAID,EAAOE,QAAQC,IAAMJ,EAAMI,GAI3BH,EAAOE,QAAQC,EAAI,EAHdJ,EAOF,CACLI,EAAGH,EAAOE,QAAQC,EAG1B,EAEaC,EAAkD,SAC7DC,GAEM,IAAAC,EAAoBC,EAAWT,EAAwB,CAC3DK,EAAGE,GAAgB,IADdN,EAAKO,EAAA,GAAEE,OAad,MAAO,CAAET,MAAKA,EAAEC,OATDS,GACb,WAAM,
|
|
1
|
+
{"version":3,"file":"reducer.js","sources":["../../../../../../src/table/header/x-scroll-position/reducer.ts"],"sourcesContent":["import { useMemo, useReducer } from \"react\";\nimport { TScrollXPositionHook, TScrollXPositionReducer } from \"./type\";\n\nconst scrollXPositionReducer: TScrollXPositionReducer = (state, action) => {\n switch (action.type) {\n case \"set\":\n if (action.payload.x === state.x) {\n return state;\n }\n\n if (action.payload.x < 0) {\n return state;\n }\n\n return {\n x: action.payload.x,\n };\n }\n};\n\nexport const useScrollXPositionReducer: TScrollXPositionHook = (\n initialState\n) => {\n const [state, dispatch] = useReducer(scrollXPositionReducer, {\n x: initialState || 0,\n });\n\n const action = useMemo(\n () => ({\n setScrollX: (x: number) => {\n dispatch({ type: \"set\", payload: { x } });\n },\n }),\n []\n );\n\n return { state, action };\n};\n"],"names":["scrollXPositionReducer","state","action","type","payload","x","useScrollXPositionReducer","initialState","_a","useReducer","dispatch","useMemo","setScrollX"],"mappings":"gDAGA,IAAMA,EAAkD,SAACC,EAAOC,GAC9D,GACO,QADCA,EAAOC,KAEX,OAAID,EAAOE,QAAQC,IAAMJ,EAAMI,GAI3BH,EAAOE,QAAQC,EAAI,EAHdJ,EAOF,CACLI,EAAGH,EAAOE,QAAQC,EAG1B,EAEaC,EAAkD,SAC7DC,GAEM,IAAAC,EAAoBC,EAAWT,EAAwB,CAC3DK,EAAGE,GAAgB,IADdN,EAAKO,EAAA,GAAEE,OAad,MAAO,CAAET,MAAKA,EAAEC,OATDS,GACb,WAAM,MAAA,CACJC,WAAY,SAACP,GACXK,EAAS,CAAEP,KAAM,MAAOC,QAAS,CAAEC,EAACA,IACtC,EAHI,GAKN,IAIJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id-generator.js","sources":["../../../../../src/table/id/id-generator.ts"],"sourcesContent":["import { ITableIdGenerator } from \"./interface\";\n\nexport class IdGenerator implements ITableIdGenerator {\n constructor(private additionalId?: string) {}\n\n getTableId(): string {\n return `ReactUI:Table${this.additionalId ? `:${this.additionalId}` : \"\"}`;\n }\n getTableColId(args: { columnIndex: number }): string {\n return `${this.getTableId()}:Column-${args.columnIndex}`;\n }\n getTableCellId(args: { rowIndex: number; columnIndex: number }): string {\n return `${this.getTableId()}:Cell-${args.rowIndex}-${args.columnIndex}`;\n }\n getEditorId(): string {\n return `${this.getTableId()}:Editor`;\n }\n getTableHeaderId(): string {\n return `${this.getTableId()}:Header`;\n }\n extractCellIndexFromId(id: string): [number, number] {\n const arr = id.split(\"-\");\n const rowIndex = arr[arr.length - 2];\n const columnIndex = arr[arr.length - 1];\n return [Number(rowIndex), Number(columnIndex)];\n }\n}\n"],"names":["IdGenerator","additionalId","this","prototype","getTableId","concat","getTableColId","args","columnIndex","getTableCellId","rowIndex","getEditorId","getTableHeaderId","extractCellIndexFromId","id","arr","split","length","Number"],"mappings":"AAEA,IAAAA,EAAA,WACE,SAAAA,EAAoBC,GAAAC,
|
|
1
|
+
{"version":3,"file":"id-generator.js","sources":["../../../../../src/table/id/id-generator.ts"],"sourcesContent":["import { ITableIdGenerator } from \"./interface\";\n\nexport class IdGenerator implements ITableIdGenerator {\n constructor(private additionalId?: string) {}\n\n getTableId(): string {\n return `ReactUI:Table${this.additionalId ? `:${this.additionalId}` : \"\"}`;\n }\n getTableColId(args: { columnIndex: number }): string {\n return `${this.getTableId()}:Column-${args.columnIndex}`;\n }\n getTableCellId(args: { rowIndex: number; columnIndex: number }): string {\n return `${this.getTableId()}:Cell-${args.rowIndex}-${args.columnIndex}`;\n }\n getEditorId(): string {\n return `${this.getTableId()}:Editor`;\n }\n getTableHeaderId(): string {\n return `${this.getTableId()}:Header`;\n }\n extractCellIndexFromId(id: string): [number, number] {\n const arr = id.split(\"-\");\n const rowIndex = arr[arr.length - 2];\n const columnIndex = arr[arr.length - 1];\n return [Number(rowIndex), Number(columnIndex)];\n }\n}\n"],"names":["IdGenerator","additionalId","this","prototype","getTableId","concat","getTableColId","args","columnIndex","getTableCellId","rowIndex","getEditorId","getTableHeaderId","extractCellIndexFromId","id","arr","split","length","Number"],"mappings":"AAEA,IAAAA,EAAA,WACE,SAAAA,EAAoBC,GAAAC,KAAAD,aAAAA,CAAwB,CAuB9C,OArBED,EAAAG,UAAAC,WAAA,WACE,MAAO,uBAAgBF,KAAKD,aAAe,IAAAI,OAAIH,KAAKD,cAAiB,GACvE,EACAD,EAAAG,UAAAG,cAAA,SAAcC,GACZ,MAAO,GAAAF,OAAGH,KAAKE,gCAAuBG,EAAKC,YAC7C,EACAR,EAAAG,UAAAM,eAAA,SAAeF,GACb,MAAO,GAAAF,OAAGH,KAAKE,aAAY,UAAAC,OAASE,EAAKG,SAAQ,KAAAL,OAAIE,EAAKC,YAC5D,EACAR,EAAAG,UAAAQ,YAAA,WACE,MAAO,UAAGT,KAAKE,uBACjB,EACAJ,EAAAG,UAAAS,iBAAA,WACE,MAAO,UAAGV,KAAKE,uBACjB,EACAJ,EAAAG,UAAAU,uBAAA,SAAuBC,GACrB,IAAMC,EAAMD,EAAGE,MAAM,KACfN,EAAWK,EAAIA,EAAIE,OAAS,GAC5BT,EAAcO,EAAIA,EAAIE,OAAS,GACrC,MAAO,CAACC,OAAOR,GAAWQ,OAAOV,GACnC,EACFR,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sources":["../../../../../src/table/id/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { ITableIdGenerator } from \"./interface\";\nimport { IdGenerator } from \"./id-generator\";\n\nconst TableIdContext = createContext<ITableIdGenerator | null>(null);\n\nexport function TableIdGeneratorProvider(props: {\n id?: string;\n children: React.ReactNode;\n}) {\n return (\n <TableIdContext.Provider value={new IdGenerator(props.id)}>\n {props.children}\n </TableIdContext.Provider>\n );\n}\n\nexport function useTableIdGenerator() {\n const context = useContext(TableIdContext);\n\n if (!context) {\n throw new Error(\n \"useTableIdGenerator must be used within TableIdGeneratorProvider\"\n );\n }\n\n return context;\n}\n"],"names":["TableIdContext","createContext","TableIdGeneratorProvider","props","_jsx","Provider","value","IdGenerator","id","children","useTableIdGenerator","context","useContext","Error"],"mappings":"8IAIA,IAAMA,EAAiBC,EAAwC,MAEzD,SAAUC,EAAyBC,GAIvC,OACEC,EAACJ,EAAeK,
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../src/table/id/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { ITableIdGenerator } from \"./interface\";\nimport { IdGenerator } from \"./id-generator\";\n\nconst TableIdContext = createContext<ITableIdGenerator | null>(null);\n\nexport function TableIdGeneratorProvider(props: {\n id?: string;\n children: React.ReactNode;\n}) {\n return (\n <TableIdContext.Provider value={new IdGenerator(props.id)}>\n {props.children}\n </TableIdContext.Provider>\n );\n}\n\nexport function useTableIdGenerator() {\n const context = useContext(TableIdContext);\n\n if (!context) {\n throw new Error(\n \"useTableIdGenerator must be used within TableIdGeneratorProvider\"\n );\n }\n\n return context;\n}\n"],"names":["TableIdContext","createContext","TableIdGeneratorProvider","props","_jsx","Provider","value","IdGenerator","id","children","useTableIdGenerator","context","useContext","Error"],"mappings":"8IAIA,IAAMA,EAAiBC,EAAwC,MAEzD,SAAUC,EAAyBC,GAIvC,OACEC,EAACJ,EAAeK,SAAQ,CAACC,MAAO,IAAIC,EAAYJ,EAAMK,IAAGC,SACtDN,EAAMM,UAGb,UAEgBC,IACd,IAAMC,EAAUC,EAAWZ,GAE3B,IAAKW,EACH,MAAM,IAAIE,MACR,oEAIJ,OAAOF,CACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sources":["../../../../../src/table/lib/errors.ts"],"sourcesContent":["import { ReactUIError } from \"../../lib/errors\";\n\nexport class TableError extends ReactUIError {\n constructor(message: string, code: string, details: string) {\n super(message, code, details);\n this.name = \"TableError\";\n }\n}\n\nexport class NoImplementeFunctionError extends ReactUIError {\n constructor() {\n super(\n \"Function not implemented.\",\n \"RUTBL-NIF001\",\n \"This function is not implemented.\"\n );\n this.name = \"NoImplementeFunctionError\";\n }\n}\n\nexport function NoImplementeFunction() {\n throw new NoImplementeFunctionError();\n}\n"],"names":["_super","TableError","message","code","details","_this","this","name","__extends","ReactUIError","NoImplementeFunctionError","NoImplementeFunction"],"mappings":"yHAEA,SAAAA,GACE,SAAAC,EAAYC,EAAiBC,EAAcC,GACzC,IAAAC,EAAAL,YAAME,EAASC,EAAMC,
|
|
1
|
+
{"version":3,"file":"errors.js","sources":["../../../../../src/table/lib/errors.ts"],"sourcesContent":["import { ReactUIError } from \"../../lib/errors\";\n\nexport class TableError extends ReactUIError {\n constructor(message: string, code: string, details: string) {\n super(message, code, details);\n this.name = \"TableError\";\n }\n}\n\nexport class NoImplementeFunctionError extends ReactUIError {\n constructor() {\n super(\n \"Function not implemented.\",\n \"RUTBL-NIF001\",\n \"This function is not implemented.\"\n );\n this.name = \"NoImplementeFunctionError\";\n }\n}\n\nexport function NoImplementeFunction() {\n throw new NoImplementeFunctionError();\n}\n"],"names":["_super","TableError","message","code","details","_this","this","name","__extends","ReactUIError","NoImplementeFunctionError","NoImplementeFunction"],"mappings":"yHAEA,SAAAA,GACE,SAAAC,EAAYC,EAAiBC,EAAcC,GACzC,IAAAC,EAAAL,YAAME,EAASC,EAAMC,IAAQE,YAC7BD,EAAKE,KAAO,cACd,CAJ8BC,EAAAP,EAAAD,EAKhC,CALA,CAAgCS,GAOhC,IAAAC,EAAA,SAAAV,GACE,SAAAU,IACE,IAAAL,EAAAL,YACE,4BACA,eACA,sCACDM,YACDD,EAAKE,KAAO,6BACd,CACF,OAT+CC,EAAAE,EAAAV,GAS/CU,CAAA,CATA,CAA+CD,YAW/BE,IACd,MAAM,IAAID,CACZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional-formatting.js","sources":["../../../../../src/table/libs/conditional-formatting.ts"],"sourcesContent":["import {\n DataObject,\n DataRecord,\n TConditionalFormatting,\n TTableColumn,\n} from \"../table/type\";\n\nexport function generateFormattingString(\n row: DataObject<DataRecord>,\n cols: TTableColumn<DataRecord>[],\n conditionalFormattings?: TConditionalFormatting<DataRecord>[]\n): string {\n if (!conditionalFormattings) {\n return Array(cols.length).fill(\"\").join(\",\");\n }\n\n const formats = conditionalFormattings.reduce((acc, formatting) => {\n const { condition, key, style } = formatting;\n const colIndex = cols.findIndex((col) => col.key === key);\n\n if (colIndex === -1 || acc[colIndex] !== \"\" || !condition(row)) {\n return acc;\n }\n\n acc[colIndex] = style;\n\n return acc;\n }, Array(cols.length).fill(\"\"));\n\n return formats.join(\",\");\n}\n"],"names":["generateFormattingString","row","cols","conditionalFormattings","reduce","acc","formatting","condition","key","style","colIndex","findIndex","col","Array","length","fill","join"],"mappings":"SAOgBA,EACdC,EACAC,EACAC,GAEA,OAAKA,EAIWA,EAAuBC,QAAO,SAACC,EAAKC,GAC1C,IAAAC,EAA0BD,EAAUC,UAAzBC,EAAeF,EAAUE,IAApBC,EAAUH,QAC5BI,EAAWR,EAAKS,WAAU,SAACC,GAAQ,OAAAA,EAAIJ,MAAQA,CAAZ,IAEzC,
|
|
1
|
+
{"version":3,"file":"conditional-formatting.js","sources":["../../../../../src/table/libs/conditional-formatting.ts"],"sourcesContent":["import {\n DataObject,\n DataRecord,\n TConditionalFormatting,\n TTableColumn,\n} from \"../table/type\";\n\nexport function generateFormattingString(\n row: DataObject<DataRecord>,\n cols: TTableColumn<DataRecord>[],\n conditionalFormattings?: TConditionalFormatting<DataRecord>[]\n): string {\n if (!conditionalFormattings) {\n return Array(cols.length).fill(\"\").join(\",\");\n }\n\n const formats = conditionalFormattings.reduce((acc, formatting) => {\n const { condition, key, style } = formatting;\n const colIndex = cols.findIndex((col) => col.key === key);\n\n if (colIndex === -1 || acc[colIndex] !== \"\" || !condition(row)) {\n return acc;\n }\n\n acc[colIndex] = style;\n\n return acc;\n }, Array(cols.length).fill(\"\"));\n\n return formats.join(\",\");\n}\n"],"names":["generateFormattingString","row","cols","conditionalFormattings","reduce","acc","formatting","condition","key","style","colIndex","findIndex","col","Array","length","fill","join"],"mappings":"SAOgBA,EACdC,EACAC,EACAC,GAEA,OAAKA,EAIWA,EAAuBC,QAAO,SAACC,EAAKC,GAC1C,IAAAC,EAA0BD,EAAUC,UAAzBC,EAAeF,EAAUE,IAApBC,EAAUH,QAC5BI,EAAWR,EAAKS,WAAU,SAACC,GAAQ,OAAAA,EAAIJ,MAAQA,CAAZ,IAEzC,OAAiB,IAAbE,GAAqC,KAAlBL,EAAIK,IAAqBH,EAAUN,IAI1DI,EAAIK,GAAYD,EAETJ,GALEA,CAMX,GAAGQ,MAAMX,EAAKY,QAAQC,KAAK,KAEZC,KAAK,KAhBXH,MAAMX,EAAKY,QAAQC,KAAK,IAAIC,KAAK,IAiB5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-validate-function.js","sources":["../../../../../src/table/libs/generate-validate-function.ts"],"sourcesContent":["export type TStringValidateOption = {\n maxLength?: number;\n minLength?: number;\n pattern?: string;\n};\n\nexport type TNumberValidateOption = {\n max?: number;\n min?: number;\n};\n\ntype TPropsGenerateValidateFunction = {\n key: string;\n label: string;\n} & (\n | {\n type: \"string\";\n constraints?: TStringValidateOption;\n }\n | {\n type: \"number\";\n constraints?: TNumberValidateOption;\n }\n | {\n type: \"select\";\n options: { value: string; label: string }[];\n allowEmpty?: boolean;\n }\n | {\n type: \"date\";\n }\n | {\n type: \"datetime\";\n }\n);\n\ntype TStringValidateFunction = (value: string) => boolean;\n\nexport type TErrorValidation = {\n label: string;\n value: string | number;\n} & (\n | {\n type: \"STRING_IS_TOO_LONG\";\n maxLength: number;\n currentLength: number;\n }\n | {\n type: \"STRING_IS_TOO_SHORT\";\n minLength: number;\n currentLength: number;\n }\n | {\n type: \"STRING_PATTERN_NOT_MATCH\";\n pattern: string;\n }\n | {\n type: \"NUMBER_IS_TOO_LARGE\";\n max: number;\n }\n | {\n type: \"NUMBER_IS_TOO_SMALL\";\n min: number;\n }\n | {\n type: \"NOT_NUMBER\";\n }\n | {\n type: \"NOT_IN_OPTIONS\";\n options: string[];\n }\n | {\n type: \"NOT_DATE\";\n }\n | {\n type: \"NOT_DATETIME\";\n }\n);\n\nfunction defaultErrorHandler(errors: TErrorValidation[]) {\n let message = `入力値が不正のため、エラーを確認し修正してください。\\n\\n`;\n message += `[対象の列名]: ${errors[0].label}\\n`;\n message += `[入力値] : ${errors[0].value}\\n\\n`;\n message += `[エラー内容]:`;\n\n message += errors.reduce((acc, error) => {\n switch (error.type) {\n case \"STRING_IS_TOO_LONG\":\n return (\n acc +\n `\\n・文字数が最大の長さ${error.maxLength}文字を超えています。(現在${error.currentLength}文字)`\n );\n case \"STRING_IS_TOO_SHORT\":\n return (\n acc +\n `\\n・文字数が最小の長さ${error.minLength}文字に満たないです。(現在${error.currentLength}文字)`\n );\n case \"STRING_PATTERN_NOT_MATCH\":\n return acc + `\\n・パターンに一致しません。(パターン${error.pattern})`;\n case \"NUMBER_IS_TOO_LARGE\":\n return (\n acc + `\\n・最大値${error.max}を超えています。(入力値${error.value})`\n );\n case \"NUMBER_IS_TOO_SMALL\":\n return (\n acc + `\\n・最小値${error.min}を下回っています。(入力値${error.value})`\n );\n case \"NOT_NUMBER\":\n return acc + `\\n・数値ではない値が入力されています。`;\n case \"NOT_IN_OPTIONS\":\n return acc + `\\n・選択肢に含まれていない値です。`;\n case \"NOT_DATE\":\n return acc + `\\n・日付の形式ではありません。`;\n case \"NOT_DATETIME\":\n return acc + `\\n・日時の形式ではありません。`;\n }\n }, \"\");\n\n alert(message);\n}\n\nfunction generateStringValidateFunction(\n key: string,\n label: string,\n constraints?: TStringValidateOption,\n errorHandler?: (errors: TErrorValidation[]) => void\n): TStringValidateFunction {\n return (value: string) => {\n const errors: TErrorValidation[] = [];\n\n if (constraints?.maxLength) {\n if (value.length > constraints.maxLength) {\n errors.push({\n type: \"STRING_IS_TOO_LONG\",\n label,\n maxLength: constraints.maxLength,\n currentLength: value.length,\n value,\n });\n }\n }\n\n if (constraints?.minLength) {\n if (value.length < constraints.minLength) {\n errors.push({\n type: \"STRING_IS_TOO_SHORT\",\n label,\n minLength: constraints.minLength,\n currentLength: value.length,\n value,\n });\n }\n }\n\n if (constraints?.pattern) {\n if (!new RegExp(constraints.pattern).test(value)) {\n errors.push({\n type: \"STRING_PATTERN_NOT_MATCH\",\n label,\n pattern: constraints.pattern,\n value,\n });\n }\n }\n\n if (errors.length > 0) {\n if (errorHandler) {\n errorHandler(errors);\n } else {\n defaultErrorHandler(errors);\n }\n return false;\n }\n\n return true;\n };\n}\n\ntype TNumberValidateFunction = (value: number) => boolean;\n\nfunction generateNumberValidateFunction(\n key: string,\n label: string,\n constraints?: TNumberValidateOption,\n errorHandler?: (errors: TErrorValidation[]) => void\n): TNumberValidateFunction {\n return (value: number | string) => {\n const errors: TErrorValidation[] = [];\n\n if (typeof value === \"string\") {\n // 小数も含めて数値に変換可能な値かを検査\n if (!/^-?[0-9]+(\\.[0-9]+)?$/.test(value)) {\n errors.push({\n type: \"NOT_NUMBER\",\n label,\n value,\n });\n\n if (errorHandler) {\n errorHandler(errors);\n } else {\n defaultErrorHandler(errors);\n }\n return false;\n }\n }\n\n value = Number(value);\n\n if (typeof constraints?.max === \"number\") {\n if (value > constraints.max) {\n errors.push({\n type: \"NUMBER_IS_TOO_LARGE\",\n label,\n max: constraints.max,\n value,\n });\n }\n }\n\n if (typeof constraints?.min === \"number\") {\n if (value < constraints.min) {\n errors.push({\n type: \"NUMBER_IS_TOO_SMALL\",\n label,\n min: constraints.min,\n value,\n });\n }\n }\n\n if (errors.length > 0) {\n if (errorHandler) {\n errorHandler(errors);\n } else {\n defaultErrorHandler(errors);\n }\n return false;\n }\n\n return true;\n };\n}\n\ntype TSelectValidateFunction = (label: string) => boolean;\n\nfunction generatSelectValidateFunction(\n key: string,\n columnLabel: string,\n options: { value: string; label: string }[],\n allowEmpty?: boolean,\n errorHandler?: (errors: TErrorValidation[]) => void\n): TSelectValidateFunction {\n const labelSets = new Set(options.map((option) => option.label));\n return (label: string) => {\n if (allowEmpty && label === \"\") {\n return true;\n }\n\n const errors: TErrorValidation[] = [];\n\n if (!labelSets.has(label)) {\n errors.push({\n type: \"NOT_IN_OPTIONS\",\n label: columnLabel,\n value: label,\n options: Array.from(labelSets),\n });\n }\n\n if (errors.length > 0) {\n if (errorHandler) {\n errorHandler(errors);\n } else {\n defaultErrorHandler(errors);\n }\n return false;\n }\n\n return true;\n };\n}\n\ntype TDateValidateFunction = (label: string) => boolean;\n\nfunction generatDateValidateFunction(\n key: string,\n columnLabel: string,\n errorHandler?: (errors: TErrorValidation[]) => void\n): TDateValidateFunction {\n return (value: string) => {\n const errors: TErrorValidation[] = [];\n\n if (isNaN(new Date(value).getTime())) {\n errors.push({\n type: \"NOT_DATE\",\n label: columnLabel,\n value,\n });\n }\n\n if (errors.length > 0) {\n if (errorHandler) {\n errorHandler(errors);\n } else {\n defaultErrorHandler(errors);\n }\n return false;\n }\n\n return true;\n };\n}\n\ntype TDatetimeValidateFunction = (label: string) => boolean;\n\nfunction generatDatetimeValidateFunction(\n key: string,\n columnLabel: string,\n errorHandler?: (errors: TErrorValidation[]) => void\n): TDatetimeValidateFunction {\n return (value: string) => {\n const errors: TErrorValidation[] = [];\n\n if (isNaN(new Date(value).getTime())) {\n errors.push({\n type: \"NOT_DATETIME\",\n label: columnLabel,\n value,\n });\n }\n\n if (errors.length > 0) {\n if (errorHandler) {\n errorHandler(errors);\n } else {\n defaultErrorHandler(errors);\n }\n return false;\n }\n\n return true;\n };\n}\n\nexport function generateValidateFunction(\n props: TPropsGenerateValidateFunction,\n errorHandler?: (errors: TErrorValidation[]) => void\n) {\n if (props.type === \"string\") {\n return generateStringValidateFunction(\n props.key,\n props.label,\n props.constraints,\n errorHandler\n );\n } else if (props.type === \"number\") {\n return generateNumberValidateFunction(\n props.key,\n props.label,\n props.constraints,\n errorHandler\n );\n } else if (props.type === \"select\") {\n return generatSelectValidateFunction(\n props.key,\n props.label,\n props.options,\n props.allowEmpty,\n errorHandler\n );\n } else if (props.type === \"date\") {\n return generatDateValidateFunction(props.key, props.label, errorHandler);\n } else if (props.type === \"datetime\") {\n return generatDatetimeValidateFunction(\n props.key,\n props.label,\n errorHandler\n );\n } else {\n throw new Error(\"Invalid type\");\n }\n}\n"],"names":["defaultErrorHandler","errors","message","label","value","reduce","acc","error","type","concat","maxLength","currentLength","minLength","pattern","max","min","alert","generateValidateFunction","props","errorHandler","key","constraints","length","push","RegExp","test","generateStringValidateFunction","Number","generateNumberValidateFunction","columnLabel","options","allowEmpty","labelSets","Set","map","option","has","Array","from","generatSelectValidateFunction","isNaN","Date","getTime","generatDateValidateFunction","generatDatetimeValidateFunction","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate-validate-function.js","sources":["../../../../../src/table/libs/generate-validate-function.ts"],"sourcesContent":["export type TStringValidateOption = {\n maxLength?: number;\n minLength?: number;\n pattern?: string;\n};\n\nexport type TNumberValidateOption = {\n max?: number;\n min?: number;\n};\n\ntype TPropsGenerateValidateFunction = {\n key: string;\n label: string;\n} & (\n | {\n type: \"string\";\n constraints?: TStringValidateOption;\n }\n | {\n type: \"number\";\n constraints?: TNumberValidateOption;\n }\n | {\n type: \"select\";\n options: { value: string; label: string }[];\n allowEmpty?: boolean;\n }\n | {\n type: \"date\";\n }\n | {\n type: \"datetime\";\n }\n);\n\ntype TStringValidateFunction = (value: string) => boolean;\n\nexport type TErrorValidation = {\n label: string;\n value: string | number;\n} & (\n | {\n type: \"STRING_IS_TOO_LONG\";\n maxLength: number;\n currentLength: number;\n }\n | {\n type: \"STRING_IS_TOO_SHORT\";\n minLength: number;\n currentLength: number;\n }\n | {\n type: \"STRING_PATTERN_NOT_MATCH\";\n pattern: string;\n }\n | {\n type: \"NUMBER_IS_TOO_LARGE\";\n max: number;\n }\n | {\n type: \"NUMBER_IS_TOO_SMALL\";\n min: number;\n }\n | {\n type: \"NOT_NUMBER\";\n }\n | {\n type: \"NOT_IN_OPTIONS\";\n options: string[];\n }\n | {\n type: \"NOT_DATE\";\n }\n | {\n type: \"NOT_DATETIME\";\n }\n);\n\nfunction defaultErrorHandler(errors: TErrorValidation[]) {\n let message = `入力値が不正のため、エラーを確認し修正してください。\\n\\n`;\n message += `[対象の列名]: ${errors[0].label}\\n`;\n message += `[入力値] : ${errors[0].value}\\n\\n`;\n message += `[エラー内容]:`;\n\n message += errors.reduce((acc, error) => {\n switch (error.type) {\n case \"STRING_IS_TOO_LONG\":\n return (\n acc +\n `\\n・文字数が最大の長さ${error.maxLength}文字を超えています。(現在${error.currentLength}文字)`\n );\n case \"STRING_IS_TOO_SHORT\":\n return (\n acc +\n `\\n・文字数が最小の長さ${error.minLength}文字に満たないです。(現在${error.currentLength}文字)`\n );\n case \"STRING_PATTERN_NOT_MATCH\":\n return acc + `\\n・パターンに一致しません。(パターン${error.pattern})`;\n case \"NUMBER_IS_TOO_LARGE\":\n return (\n acc + `\\n・最大値${error.max}を超えています。(入力値${error.value})`\n );\n case \"NUMBER_IS_TOO_SMALL\":\n return (\n acc + `\\n・最小値${error.min}を下回っています。(入力値${error.value})`\n );\n case \"NOT_NUMBER\":\n return acc + `\\n・数値ではない値が入力されています。`;\n case \"NOT_IN_OPTIONS\":\n return acc + `\\n・選択肢に含まれていない値です。`;\n case \"NOT_DATE\":\n return acc + `\\n・日付の形式ではありません。`;\n case \"NOT_DATETIME\":\n return acc + `\\n・日時の形式ではありません。`;\n }\n }, \"\");\n\n alert(message);\n}\n\nfunction generateStringValidateFunction(\n key: string,\n label: string,\n constraints?: TStringValidateOption,\n errorHandler?: (errors: TErrorValidation[]) => void\n): TStringValidateFunction {\n return (value: string) => {\n const errors: TErrorValidation[] = [];\n\n if (constraints?.maxLength) {\n if (value.length > constraints.maxLength) {\n errors.push({\n type: \"STRING_IS_TOO_LONG\",\n label,\n maxLength: constraints.maxLength,\n currentLength: value.length,\n value,\n });\n }\n }\n\n if (constraints?.minLength) {\n if (value.length < constraints.minLength) {\n errors.push({\n type: \"STRING_IS_TOO_SHORT\",\n label,\n minLength: constraints.minLength,\n currentLength: value.length,\n value,\n });\n }\n }\n\n if (constraints?.pattern) {\n if (!new RegExp(constraints.pattern).test(value)) {\n errors.push({\n type: \"STRING_PATTERN_NOT_MATCH\",\n label,\n pattern: constraints.pattern,\n value,\n });\n }\n }\n\n if (errors.length > 0) {\n if (errorHandler) {\n errorHandler(errors);\n } else {\n defaultErrorHandler(errors);\n }\n return false;\n }\n\n return true;\n };\n}\n\ntype TNumberValidateFunction = (value: number) => boolean;\n\nfunction generateNumberValidateFunction(\n key: string,\n label: string,\n constraints?: TNumberValidateOption,\n errorHandler?: (errors: TErrorValidation[]) => void\n): TNumberValidateFunction {\n return (value: number | string) => {\n const errors: TErrorValidation[] = [];\n\n if (typeof value === \"string\") {\n // 小数も含めて数値に変換可能な値かを検査\n if (!/^-?[0-9]+(\\.[0-9]+)?$/.test(value)) {\n errors.push({\n type: \"NOT_NUMBER\",\n label,\n value,\n });\n\n if (errorHandler) {\n errorHandler(errors);\n } else {\n defaultErrorHandler(errors);\n }\n return false;\n }\n }\n\n value = Number(value);\n\n if (typeof constraints?.max === \"number\") {\n if (value > constraints.max) {\n errors.push({\n type: \"NUMBER_IS_TOO_LARGE\",\n label,\n max: constraints.max,\n value,\n });\n }\n }\n\n if (typeof constraints?.min === \"number\") {\n if (value < constraints.min) {\n errors.push({\n type: \"NUMBER_IS_TOO_SMALL\",\n label,\n min: constraints.min,\n value,\n });\n }\n }\n\n if (errors.length > 0) {\n if (errorHandler) {\n errorHandler(errors);\n } else {\n defaultErrorHandler(errors);\n }\n return false;\n }\n\n return true;\n };\n}\n\ntype TSelectValidateFunction = (label: string) => boolean;\n\nfunction generatSelectValidateFunction(\n key: string,\n columnLabel: string,\n options: { value: string; label: string }[],\n allowEmpty?: boolean,\n errorHandler?: (errors: TErrorValidation[]) => void\n): TSelectValidateFunction {\n const labelSets = new Set(options.map((option) => option.label));\n return (label: string) => {\n if (allowEmpty && label === \"\") {\n return true;\n }\n\n const errors: TErrorValidation[] = [];\n\n if (!labelSets.has(label)) {\n errors.push({\n type: \"NOT_IN_OPTIONS\",\n label: columnLabel,\n value: label,\n options: Array.from(labelSets),\n });\n }\n\n if (errors.length > 0) {\n if (errorHandler) {\n errorHandler(errors);\n } else {\n defaultErrorHandler(errors);\n }\n return false;\n }\n\n return true;\n };\n}\n\ntype TDateValidateFunction = (label: string) => boolean;\n\nfunction generatDateValidateFunction(\n key: string,\n columnLabel: string,\n errorHandler?: (errors: TErrorValidation[]) => void\n): TDateValidateFunction {\n return (value: string) => {\n const errors: TErrorValidation[] = [];\n\n if (isNaN(new Date(value).getTime())) {\n errors.push({\n type: \"NOT_DATE\",\n label: columnLabel,\n value,\n });\n }\n\n if (errors.length > 0) {\n if (errorHandler) {\n errorHandler(errors);\n } else {\n defaultErrorHandler(errors);\n }\n return false;\n }\n\n return true;\n };\n}\n\ntype TDatetimeValidateFunction = (label: string) => boolean;\n\nfunction generatDatetimeValidateFunction(\n key: string,\n columnLabel: string,\n errorHandler?: (errors: TErrorValidation[]) => void\n): TDatetimeValidateFunction {\n return (value: string) => {\n const errors: TErrorValidation[] = [];\n\n if (isNaN(new Date(value).getTime())) {\n errors.push({\n type: \"NOT_DATETIME\",\n label: columnLabel,\n value,\n });\n }\n\n if (errors.length > 0) {\n if (errorHandler) {\n errorHandler(errors);\n } else {\n defaultErrorHandler(errors);\n }\n return false;\n }\n\n return true;\n };\n}\n\nexport function generateValidateFunction(\n props: TPropsGenerateValidateFunction,\n errorHandler?: (errors: TErrorValidation[]) => void\n) {\n if (props.type === \"string\") {\n return generateStringValidateFunction(\n props.key,\n props.label,\n props.constraints,\n errorHandler\n );\n } else if (props.type === \"number\") {\n return generateNumberValidateFunction(\n props.key,\n props.label,\n props.constraints,\n errorHandler\n );\n } else if (props.type === \"select\") {\n return generatSelectValidateFunction(\n props.key,\n props.label,\n props.options,\n props.allowEmpty,\n errorHandler\n );\n } else if (props.type === \"date\") {\n return generatDateValidateFunction(props.key, props.label, errorHandler);\n } else if (props.type === \"datetime\") {\n return generatDatetimeValidateFunction(\n props.key,\n props.label,\n errorHandler\n );\n } else {\n throw new Error(\"Invalid type\");\n }\n}\n"],"names":["defaultErrorHandler","errors","message","label","value","reduce","acc","error","type","concat","maxLength","currentLength","minLength","pattern","max","min","alert","generateValidateFunction","props","errorHandler","key","constraints","length","push","RegExp","test","generateStringValidateFunction","Number","generateNumberValidateFunction","columnLabel","options","allowEmpty","labelSets","Set","map","option","has","Array","from","generatSelectValidateFunction","isNaN","Date","getTime","generatDateValidateFunction","generatDatetimeValidateFunction","Error"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as
|
|
2
|
+
import{jsx as r,Fragment as t,jsxs as e}from"react/jsx-runtime";import{usePageContext as n}from"./providers.js";function o(){var o=n(),u=o.enable,c=o.current,i=o.pageCount,s=o.jump,a=o.prev,l=o.next;return u?e("div",{className:"flex justify-center gap-2",children:[r("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return s(1)},disabled:1===c,children:"≪"}),r("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return a()},disabled:1===c,children:"<"}),Array.from({length:i},(function(r,t){return t+1})).filter((function(r){return c-2<=r&&r<=c+2})).map((function(t){return r("button",{className:"text-sm cursor-pointer disabled:cursor-default ".concat(c===t?"text-blue-600":""),onClick:function(){return s(t)},children:t},t)})),r("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return l()},disabled:c===i,children:">"}),r("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return s(i)},disabled:c===i,children:"≫"})]}):r(t,{})}function u(){var o=n(),u=o.enable,c=o.from,i=o.to,s=o.rowCount;return u?e("p",{className:"text-center text-sm text-gray-600",children:[c+1," - ",i<s?i:s," of ",s]}):r(t,{})}export{u as DisplayRange,o as Pagenation};
|
|
3
3
|
//# sourceMappingURL=components.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../../../../src/table/pagenation/constants.ts"],"sourcesContent":["import { TPageState } from \"./types\";\n\nexport const INITIAL_PAGE_STATE: TPageState = {\n enable: true,\n perPage: 50,\n currentPage: 1,\n rowCount: 0,\n};\n"],"names":["INITIAL_PAGE_STATE","enable","perPage","currentPage","rowCount"],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../../src/table/pagenation/constants.ts"],"sourcesContent":["import { TPageState } from \"./types\";\n\nexport const INITIAL_PAGE_STATE: TPageState = {\n enable: true,\n perPage: 50,\n currentPage: 1,\n rowCount: 0,\n};\n"],"names":["INITIAL_PAGE_STATE","enable","perPage","currentPage","rowCount"],"mappings":"AAEO,IAAMA,EAAiC,CAC5CC,QAAQ,EACRC,QAAS,GACTC,YAAa,EACbC,SAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/pagenation/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TPageAction, TPageState } from \"./types\";\nimport { INITIAL_PAGE_STATE } from \"./constants\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nfunction pagenationReducer(state: TPageState, action: TPageAction): TPageState {\n switch (action.type) {\n case \"setRowCount\":\n if (!state.enable) {\n return {\n ...state,\n rowCount: action.payload.rowCount,\n };\n }\n return {\n ...state,\n currentPage: 1,\n rowCount: action.payload.rowCount,\n };\n case \"setPerPage\":\n if (action.payload.perPage === \"all\") {\n return {\n rowCount: state.rowCount,\n enable: false,\n };\n }\n\n if (!state.enable) {\n return {\n rowCount: state.rowCount,\n enable: true,\n currentPage: 1,\n perPage: action.payload.perPage,\n };\n }\n\n return {\n ...state,\n currentPage: 1,\n perPage: action.payload.perPage,\n };\n case \"next\":\n if (!state.enable) {\n return state;\n }\n\n if (state.currentPage === Math.ceil(state.rowCount / state.perPage)) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage + 1,\n };\n case \"prev\":\n if (!state.enable) {\n return state;\n }\n\n if (state.currentPage === 1) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage - 1,\n };\n case \"jump\":\n if (!state.enable) {\n return state;\n }\n\n if (\n action.payload.pageNumber < 1 ||\n action.payload.pageNumber > Math.ceil(state.rowCount / state.perPage) ||\n state.currentPage === action.payload.pageNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n currentPage: action.payload.pageNumber,\n };\n default:\n return state;\n }\n}\n\nexport function usePageReducer(initialState?: TPageState) {\n const [state, dispatch] = useReducer(\n pagenationReducer,\n initialState ?? INITIAL_PAGE_STATE\n );\n\n const next = useCallback(() => dispatch({ type: \"next\" }), [dispatch]);\n const prev = useCallback(() => dispatch({ type: \"prev\" }), [dispatch]);\n const jump = useCallback(\n (pageNumber: number) => dispatch({ type: \"jump\", payload: { pageNumber } }),\n [dispatch]\n );\n\n const setRowCount = useCallback(\n (rowCount: number) =>\n dispatch({ type: \"setRowCount\", payload: { rowCount } }),\n [dispatch]\n );\n\n const from = useMemo(() => {\n if (!state.enable) {\n return 0;\n }\n return (state.currentPage - 1) * state.perPage;\n }, [state]);\n\n const to = useMemo(() => {\n if (!state.enable) {\n return state.rowCount;\n }\n return state.currentPage * state.perPage;\n }, [state]);\n\n const pageFilter = useCallback(\n <U extends DataRecord>(data: DataObject<U>[]): DataObject<U>[] => {\n return data.slice(from, to);\n },\n [from, to]\n );\n\n return {\n enable: state.enable,\n perPage: state.enable ? state.perPage : state.rowCount,\n current: state.enable ? state.currentPage : 1,\n rowCount: state.rowCount,\n pageCount: state.enable ? Math.ceil(state.rowCount / state.perPage) : 1,\n from,\n to,\n next,\n prev,\n jump,\n setRowCount,\n pageFilter,\n };\n}\n"],"names":["pagenationReducer","state","action","type","enable","__assign","currentPage","rowCount","payload","perPage","Math","ceil","pageNumber","usePageReducer","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"yLAKA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAKF,EAAMG,OAMXC,EAAAA,EAAA,
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/pagenation/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TPageAction, TPageState } from \"./types\";\nimport { INITIAL_PAGE_STATE } from \"./constants\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nfunction pagenationReducer(state: TPageState, action: TPageAction): TPageState {\n switch (action.type) {\n case \"setRowCount\":\n if (!state.enable) {\n return {\n ...state,\n rowCount: action.payload.rowCount,\n };\n }\n return {\n ...state,\n currentPage: 1,\n rowCount: action.payload.rowCount,\n };\n case \"setPerPage\":\n if (action.payload.perPage === \"all\") {\n return {\n rowCount: state.rowCount,\n enable: false,\n };\n }\n\n if (!state.enable) {\n return {\n rowCount: state.rowCount,\n enable: true,\n currentPage: 1,\n perPage: action.payload.perPage,\n };\n }\n\n return {\n ...state,\n currentPage: 1,\n perPage: action.payload.perPage,\n };\n case \"next\":\n if (!state.enable) {\n return state;\n }\n\n if (state.currentPage === Math.ceil(state.rowCount / state.perPage)) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage + 1,\n };\n case \"prev\":\n if (!state.enable) {\n return state;\n }\n\n if (state.currentPage === 1) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage - 1,\n };\n case \"jump\":\n if (!state.enable) {\n return state;\n }\n\n if (\n action.payload.pageNumber < 1 ||\n action.payload.pageNumber > Math.ceil(state.rowCount / state.perPage) ||\n state.currentPage === action.payload.pageNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n currentPage: action.payload.pageNumber,\n };\n default:\n return state;\n }\n}\n\nexport function usePageReducer(initialState?: TPageState) {\n const [state, dispatch] = useReducer(\n pagenationReducer,\n initialState ?? INITIAL_PAGE_STATE\n );\n\n const next = useCallback(() => dispatch({ type: \"next\" }), [dispatch]);\n const prev = useCallback(() => dispatch({ type: \"prev\" }), [dispatch]);\n const jump = useCallback(\n (pageNumber: number) => dispatch({ type: \"jump\", payload: { pageNumber } }),\n [dispatch]\n );\n\n const setRowCount = useCallback(\n (rowCount: number) =>\n dispatch({ type: \"setRowCount\", payload: { rowCount } }),\n [dispatch]\n );\n\n const from = useMemo(() => {\n if (!state.enable) {\n return 0;\n }\n return (state.currentPage - 1) * state.perPage;\n }, [state]);\n\n const to = useMemo(() => {\n if (!state.enable) {\n return state.rowCount;\n }\n return state.currentPage * state.perPage;\n }, [state]);\n\n const pageFilter = useCallback(\n <U extends DataRecord>(data: DataObject<U>[]): DataObject<U>[] => {\n return data.slice(from, to);\n },\n [from, to]\n );\n\n return {\n enable: state.enable,\n perPage: state.enable ? state.perPage : state.rowCount,\n current: state.enable ? state.currentPage : 1,\n rowCount: state.rowCount,\n pageCount: state.enable ? Math.ceil(state.rowCount / state.perPage) : 1,\n from,\n to,\n next,\n prev,\n jump,\n setRowCount,\n pageFilter,\n };\n}\n"],"names":["pagenationReducer","state","action","type","enable","__assign","currentPage","rowCount","payload","perPage","Math","ceil","pageNumber","usePageReducer","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"yLAKA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAKF,EAAMG,OAMXC,EAAAA,EAAA,CAAA,EACKJ,GAAK,CACRK,YAAa,EACbC,SAAUL,EAAOM,QAAQD,WARzBF,EAAAA,EAAA,CAAA,EACKJ,IACHM,SAAUL,EAAOM,QAAQD,WAQ/B,IAAK,aACH,MAA+B,QAA3BL,EAAOM,QAAQC,QACV,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,GAIPH,EAAMG,OASXC,EAAAA,EAAA,CAAA,EACKJ,GAAK,CACRK,YAAa,EACbG,QAASP,EAAOM,QAAQC,UAXjB,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,EACRE,YAAa,EACbG,QAASP,EAAOM,QAAQC,SAS9B,IAAK,OACH,OAAKR,EAAMG,OAIPH,EAAMK,cAAgBI,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,SAClDR,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAIe,IAAtBH,EAAMK,YACDL,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAKTF,EAAOM,QAAQI,WAAa,GAC5BV,EAAOM,QAAQI,WAAaF,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,UAC7DR,EAAMK,cAAgBJ,EAAOM,QAAQI,WAE9BX,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaJ,EAAOM,QAAQI,aAbrBX,EAeX,QACE,OAAOA,EAEb,CAEM,SAAUY,EAAeC,GACvB,IAAAC,EAAoBC,EACxBhB,EACAc,QAAAA,EAAgBG,GAFXhB,OAAOiB,OAKRC,EAAOC,GAAY,WAAM,OAAAF,EAAS,CAAEf,KAAM,QAAjB,GAA4B,CAACe,IACtDG,EAAOD,GAAY,WAAM,OAAAF,EAAS,CAAEf,KAAM,QAAjB,GAA4B,CAACe,IACtDI,EAAOF,GACX,SAACR,GAAuB,OAAAM,EAAS,CAAEf,KAAM,OAAQK,QAAS,CAAEI,WAAUA,IAA9C,GACxB,CAACM,IAGGK,EAAcH,GAClB,SAACb,GACC,OAAAW,EAAS,CAAEf,KAAM,cAAeK,QAAS,CAAED,SAAQA,IAAnD,GACF,CAACW,IAGGM,EAAOC,GAAQ,WACnB,OAAKxB,EAAMG,QAGHH,EAAMK,YAAc,GAAKL,EAAMQ,QAF9B,CAGX,GAAG,CAACR,IAEEyB,EAAKD,GAAQ,WACjB,OAAKxB,EAAMG,OAGJH,EAAMK,YAAcL,EAAMQ,QAFxBR,EAAMM,QAGjB,GAAG,CAACN,IAEE0B,EAAaP,GACjB,SAAuBQ,GACrB,OAAOA,EAAKC,MAAML,EAAME,EAC1B,GACA,CAACF,EAAME,IAGT,MAAO,CACLtB,OAAQH,EAAMG,OACdK,QAASR,EAAMG,OAASH,EAAMQ,QAAUR,EAAMM,SAC9CuB,QAAS7B,EAAMG,OAASH,EAAMK,YAAc,EAC5CC,SAAUN,EAAMM,SAChBwB,UAAW9B,EAAMG,OAASM,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,SAAW,EACtEe,KAAIA,EACJE,GAAEA,EACFP,KAAIA,EACJE,KAAIA,EACJC,KAAIA,EACJC,YAAWA,EACXI,WAAUA,EAEd"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__assign as t}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as e,useEffect as a,useCallback as o,useMemo as n}from"react";import{useColumnValidatesContext as r}from"../sheet/providers.js";import{useRangeActionContext as s,useRangeStateContext as i}from"../range/provider.js";import{paste as
|
|
1
|
+
import{__assign as t}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as e,useEffect as a,useCallback as o,useMemo as n}from"react";import{useColumnValidatesContext as r}from"../sheet/providers.js";import{useRangeActionContext as s,useRangeStateContext as i}from"../range/provider.js";import{paste as c}from"./logic.js";var d=function(e,a){switch(a.type){case"setRows":return t(t({},e),{rows:a.payload.rows});case"setCols":return t(t({},e),{cols:a.payload.cols});case"setColValidators":return t(t({},e),{colValidators:a.payload.colValidators});case"setOnUpdateRowFunction":return t(t({},e),{onUpdateRowFunction:a.payload.onUpdateRowFunction});case"onPaste":if(!e.isFocused)return e;var o=a.payload.pasteData,n=e.rows,r=e.cols,s=e.colValidators,i=e.start,d=e.end;if(!e.onUpdateRowFunction)return e;var u=c({pasteData:o,pasteArea:{start:i,end:d},currentRows:n,currentCols:r,validators:s,tableArea:{end:{rowIndex:n.length-1,colIndex:r.length-1}}});return u.isError?("ValidationError"!==u.type&&"NoPasteData"!==u.type&&alert(u.message),e):t(t({},e),{updateParameters:{arguments:u.updateArgument,pastedRange:u.pasteRange,timing:e.updateParameters.timing+1}});case"focus":return t(t({},e),{isFocused:!0,start:a.payload.start,end:a.payload.end});case"unfocus":return t(t({},e),{isFocused:!1})}};function u(c){var u=s().setRange,l=e(d,t(t({},c),{colValidators:{},isFocused:!1,updateParameters:{arguments:[],timing:0}})),p=l[0],m=l[1],f=r(),g=i();a((function(){m({type:"setCols",payload:{cols:c.cols}})}),[c.cols]),a((function(){g.isSelecting?m({type:"focus",payload:{start:g.start,end:g.end}}):m({type:"unfocus"})}),[g]);var y=o((function(t){m({type:"setRows",payload:{rows:t}})}),[]),w=o((function(t){m({type:"setCols",payload:{cols:t}})}),[]),R=o((function(t){m({type:"setColValidators",payload:{colValidators:t}})}),[]);a((function(){R(f)}),[f]);var v=o((function(t){m({type:"setOnUpdateRowFunction",payload:{onUpdateRowFunction:t}})}),[]),F=o((function(t){m({type:"onPaste",payload:{pasteData:t}})}),[]);return a((function(){p.updateParameters.arguments.length>0&&p.updateParameters.arguments.forEach((function(t){var e,a=t.newRow,o=t.oldRow;null===(e=p.onUpdateRowFunction)||void 0===e||e.call(p,a,o)})),p.updateParameters.pastedRange&&u(p.updateParameters.pastedRange)}),[p.updateParameters.timing,p.onUpdateRowFunction]),a((function(){var t=function(t){if(g.isSelecting&&t.clipboardData){t.preventDefault();var e=t.clipboardData.getData("Text");F(e.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(t){return t.split(",")})))}};return document.addEventListener("paste",t),function(){document.removeEventListener("paste",t)}}),[g.isSelecting]),n((function(){return{setRows:y,setCols:w,setColValidators:R,setOnUpdateRowFunction:v,onPaste:F}}),[])}export{u as usePasteReducer};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|