@teppen/react-ui 1.5.7 → 1.5.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/index.js +1 -1
- package/dist/cjs/src/table/cell/hooks.js +2 -0
- package/dist/cjs/src/table/cell/hooks.js.map +1 -0
- 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/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/hooks/selectedFilteringColumn/hooks.js.map +1 -1
- package/dist/cjs/src/table/filter/hooks.js.map +1 -1
- package/dist/cjs/src/table/focus/hooks.js +1 -1
- package/dist/cjs/src/table/focus/hooks.js.map +1 -1
- package/dist/cjs/src/table/focus/provider.js +1 -1
- package/dist/cjs/src/table/focus/provider.js.map +1 -1
- package/dist/cjs/src/table/libs/conditional-formatting.js.map +1 -1
- package/dist/cjs/src/table/libs/id-generator.js +1 -1
- package/dist/cjs/src/table/libs/id-generator.js.map +1 -1
- package/dist/cjs/src/table/pagenation/hooks.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/table/base.js +3 -0
- package/dist/cjs/src/table/table/hook.js +2 -0
- package/dist/cjs/src/table/table/hook.js.map +1 -0
- package/dist/esm/src/index.js +1 -1
- package/dist/esm/src/table/cell/hooks.js +2 -0
- package/dist/esm/src/table/cell/hooks.js.map +1 -0
- package/dist/esm/src/table/cell/ui/cell.js +1 -1
- package/dist/esm/src/table/checkbox/hooks.js.map +1 -1
- package/dist/esm/src/table/checkbox/provider.js.map +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/hooks/selectedFilteringColumn/hooks.js.map +1 -1
- package/dist/esm/src/table/filter/hooks.js.map +1 -1
- package/dist/esm/src/table/focus/hooks.js +1 -1
- package/dist/esm/src/table/focus/hooks.js.map +1 -1
- package/dist/esm/src/table/focus/provider.js +1 -1
- package/dist/esm/src/table/focus/provider.js.map +1 -1
- package/dist/esm/src/table/libs/conditional-formatting.js.map +1 -1
- package/dist/esm/src/table/libs/id-generator.js +1 -1
- package/dist/esm/src/table/libs/id-generator.js.map +1 -1
- package/dist/esm/src/table/pagenation/hooks.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/sort/hooks.js.map +1 -1
- package/dist/esm/src/table/table/base.js +3 -0
- package/dist/esm/src/table/table/hook.js +2 -0
- package/dist/esm/src/table/table/hook.js.map +1 -0
- package/package.json +1 -1
- package/dist/cjs/src/table/base.js +0 -3
- package/dist/cjs/src/table/hook.js +0 -2
- package/dist/cjs/src/table/hook.js.map +0 -1
- package/dist/esm/src/table/base.js +0 -3
- package/dist/esm/src/table/hook.js +0 -2
- package/dist/esm/src/table/hook.js.map +0 -1
- /package/dist/cjs/src/table/{base.js.map → table/base.js.map} +0 -0
- /package/dist/esm/src/table/{base.js.map → table/base.js.map} +0 -0
package/dist/cjs/src/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("./table/base.js");exports.Table=e;
|
|
1
|
+
"use strict";var e=require("./table/table/base.js");exports.Table=e;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("react"),t=require("../edit/provider.js"),r=require("../focus/provider.js"),n=require("../sheet/providers.js"),o=require("../libs/id-generator.js");exports.useCell=function(i,u){var l,s,d=r.useFocusActionContext(),c=d.move,a=d.focus,p=t.useEditActionContext().startEditing,v=o.IdGenerator.getCellIndex(i),f=v[0],C=v[1],b=n.useColumnsContext()[C],m=u[b.key],q="select"===b.type?null===(s=null===(l=b.options)||void 0===l?void 0:l.find((function(e){return e.value===m})))||void 0===s?void 0:s.label:m,x=e.useMemo((function(){return b.editable?q:b.render?b.render(m,u):q}),[b.editable,q,m,u]);return{type:!b.editable&&b.render?"component":b.type,component:x,onClickCell:function(e){e.preventDefault(),e.stopPropagation(),a(f,C),c(f,C)},onDoubleClick:function(e){e.preventDefault(),a(f,C),c(f,C),p()}}};
|
|
2
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/cell/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useEditActionContext } from \"../edit/provider\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { useColumnsContext } from \"../sheet/providers\";\nimport { DataObject, DataRecord, TColumnType } from \"../table/type\";\nimport { IdGenerator } from \"../libs\";\n\nexport function useCell(id: string, row: DataObject<DataRecord>) {\n const { move, focus } = useFocusActionContext();\n const { startEditing } = useEditActionContext();\n const [rowIndex, colIndex] = IdGenerator.getCellIndex(id);\n const col = useColumnsContext()[colIndex];\n const value = row[col.key as string];\n\n const label =\n col.type === \"select\"\n ? col.options?.find((op) => op.value === value)?.label\n : value;\n\n const component = useMemo(() => {\n if (col.editable) {\n return label;\n } else {\n return col.render ? col.render(value as never, row) : label;\n }\n }, [col.editable, label, value, row]);\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const onDoubleClick: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n focus(rowIndex, colIndex);\n move(rowIndex, colIndex);\n startEditing();\n };\n\n const onClickCell: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n focus(rowIndex, colIndex);\n move(rowIndex, colIndex);\n };\n\n return {\n type,\n component,\n onClickCell,\n onDoubleClick,\n };\n}\n"],"names":["id","row","_c","useFocusActionContext","move","focus","startEditing","useEditActionContext","_d","IdGenerator","getCellIndex","rowIndex","colIndex","col","useColumnsContext","value","key","label","type","_a","options","find","op","_b","component","useMemo","editable","render","onClickCell","e","preventDefault","stopPropagation","onDoubleClick"],"mappings":"+LAOgB,SAAQA,EAAYC,WAC5BC,EAAkBC,EAAqBA,wBAArCC,EAAIF,EAAAE,KAAEC,EAAKH,EAAAG,MACXC,EAAiBC,sCACnBC,EAAuBC,EAAAA,YAAYC,aAAaV,GAA/CW,EAAQH,EAAA,GAAEI,OACXC,EAAMC,EAAAA,oBAAoBF,GAC1BG,EAAQd,EAAIY,EAAIG,KAEhBC,EACS,WAAbJ,EAAIK,KAC6C,UAAlC,QAAXC,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGP,QAAUA,CAAb,WAAmB,IAAAQ,OAAA,EAAAA,EAAEN,MAC/CF,EAEAS,EAAYC,EAAAA,SAAQ,WACxB,OAAIZ,EAAIa,SACCT,EAEAJ,EAAIc,OAASd,EAAIc,OAAOZ,EAAgBd,GAAOgB,CAE1D,GAAG,CAACJ,EAAIa,SAAUT,EAAOF,EAAOd,IAmBhC,MAAO,CACLiB,MAjBCL,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIK,KAkBhDM,UAASA,EACTI,YAV2D,SAACC,GAC5DA,EAAEC,iBACFD,EAAEE,kBACF1B,EAAMM,EAAUC,GAChBR,EAAKO,EAAUC,EACjB,EAMEoB,cAlB6D,SAACH,GAC9DA,EAAEC,iBACFzB,EAAMM,EAAUC,GAChBR,EAAKO,EAAUC,GACfN,GACF,EAeF"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
"use strict";var e=require("react/jsx-runtime"),
|
|
2
|
+
"use strict";var e=require("react/jsx-runtime"),i=require("./edit-button.js"),l=require("../hooks.js");exports.TableCell=function(t){var s=l.useCell(t.id,t.row),o=s.type,c=s.component,n=s.onClickCell,r=s.onDoubleClick;return e.jsx("td",{id:t.id,className:"".concat(t.cellFormatClassName),onClick:t.isExistOnClickRow?void 0:n,onDoubleClick:t.isExistOnClickRow?void 0:r,children:e.jsxs("div",{className:"flex items-center gap-3 w-fit p-2 cursor-default",onClick:n,children:["component"===o?c:e.jsx("div",{onDoubleClick:r,children:e.jsx("p",{className:"cell-data text-left whitespace-nowrap",children:c})}),t.editable&&e.jsx(i.EditButton,{})]})})};
|
|
3
3
|
//# sourceMappingURL=cell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/checkbox/hooks.ts"],"sourcesContent":["import { useReducer } from \"react\";\nimport { CheckboxStatusReducer } from \"./types\";\nimport { DataRecord } from \"../type\";\n\nconst checkboxReducer: CheckboxStatusReducer<DataRecord> = (state, action) => {\n switch (action.type) {\n case \"SET\":\n return { checkedRecords: action.payload.checkedRecords };\n }\n};\n\nexport function useCheckboxStatusReducer(checkboxCount: number) {\n const [checkboxStatusState, dispatchCheckboxStatus] = useReducer(\n checkboxReducer,\n { checkedRecords: [] }\n );\n\n return {\n checkboxStatusState,\n dispatchCheckboxStatus,\n allUnchecked: checkboxStatusState.checkedRecords.length === 0,\n existChecked: checkboxStatusState.checkedRecords.length > 0,\n indeterminate:\n checkboxStatusState.checkedRecords.length > 0 &&\n checkboxStatusState.checkedRecords.length < checkboxCount,\n };\n}\n"],"names":["checkboxReducer","state","action","type","checkedRecords","payload","checkboxCount","_a","useReducer","checkboxStatusState","dispatchCheckboxStatus","allUnchecked","length","existChecked","indeterminate"],"mappings":"oCAIMA,EAAqD,SAACC,EAAOC,GACjE,GACO,QADCA,EAAOC,KAEX,MAAO,CAAEC,eAAgBF,EAAOG,QAAQD,eAE9C,mCAEM,SAAmCE,GACjC,IAAAC,EAAgDC,EAAUA,WAC9DR,EACA,CAAEI,eAAgB,KAFbK,OAKP,MAAO,CACLA,oBAAmBA,EACnBC,4BACAC,aAA4D,IAA9CF,EAAoBL,eAAeQ,OACjDC,aAAcJ,EAAoBL,eAAeQ,OAAS,EAC1DE,cACEL,EAAoBL,eAAeQ,OAAS,GAC5CH,EAAoBL,eAAeQ,OAASN,EAElD"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/checkbox/hooks.ts"],"sourcesContent":["import { useReducer } from \"react\";\nimport { CheckboxStatusReducer } from \"./types\";\nimport { DataRecord } from \"../table/type\";\n\nconst checkboxReducer: CheckboxStatusReducer<DataRecord> = (state, action) => {\n switch (action.type) {\n case \"SET\":\n return { checkedRecords: action.payload.checkedRecords };\n }\n};\n\nexport function useCheckboxStatusReducer(checkboxCount: number) {\n const [checkboxStatusState, dispatchCheckboxStatus] = useReducer(\n checkboxReducer,\n { checkedRecords: [] }\n );\n\n return {\n checkboxStatusState,\n dispatchCheckboxStatus,\n allUnchecked: checkboxStatusState.checkedRecords.length === 0,\n existChecked: checkboxStatusState.checkedRecords.length > 0,\n indeterminate:\n checkboxStatusState.checkedRecords.length > 0 &&\n checkboxStatusState.checkedRecords.length < checkboxCount,\n };\n}\n"],"names":["checkboxReducer","state","action","type","checkedRecords","payload","checkboxCount","_a","useReducer","checkboxStatusState","dispatchCheckboxStatus","allUnchecked","length","existChecked","indeterminate"],"mappings":"oCAIMA,EAAqD,SAACC,EAAOC,GACjE,GACO,QADCA,EAAOC,KAEX,MAAO,CAAEC,eAAgBF,EAAOG,QAAQD,eAE9C,mCAEM,SAAmCE,GACjC,IAAAC,EAAgDC,EAAUA,WAC9DR,EACA,CAAEI,eAAgB,KAFbK,OAKP,MAAO,CACLA,oBAAmBA,EACnBC,4BACAC,aAA4D,IAA9CF,EAAoBL,eAAeQ,OACjDC,aAAcJ,EAAoBL,eAAeQ,OAAS,EAC1DE,cACEL,EAAoBL,eAAeQ,OAAS,GAC5CH,EAAoBL,eAAeQ,OAASN,EAElD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sources":["../../../../../src/table/checkbox/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TCheckboxProperty } from \"../type\";\nimport { useCheckboxStatusReducer } from \"./hooks\";\n\nconst CheckboxStatusContext = createContext<\n ReturnType<typeof useCheckboxStatusReducer>\n>({\n checkboxStatusState: {\n checkedRecords: [],\n },\n dispatchCheckboxStatus: () => {},\n allUnchecked: false,\n existChecked: false,\n indeterminate: false,\n});\n\nexport function CheckboxStatusProvider({\n children,\n checkboxCount,\n}: {\n children: JSX.Element;\n checkboxCount: number;\n}) {\n return (\n <CheckboxStatusContext.Provider\n value={useCheckboxStatusReducer(checkboxCount)}\n >\n {children}\n </CheckboxStatusContext.Provider>\n );\n}\n\nexport function useCheckboxStatusContext() {\n return useContext(CheckboxStatusContext);\n}\n\nconst CheckboxContext =\n createContext<TCheckboxProperty<any>[\"checkbox\"]>(undefined);\n\nexport function CheckboxProvider({\n children,\n checkbox,\n}: {\n children: React.ReactNode;\n checkbox: TCheckboxProperty<any>[\"checkbox\"];\n}) {\n return (\n <CheckboxContext.Provider value={checkbox}>\n {children}\n </CheckboxContext.Provider>\n );\n}\n\nexport function useCheckboxContext() {\n return useContext(CheckboxContext);\n}\n"],"names":["CheckboxStatusContext","createContext","checkboxStatusState","checkedRecords","dispatchCheckboxStatus","allUnchecked","existChecked","indeterminate","CheckboxContext","undefined","_a","children","checkbox","_jsx","jsx","Provider","value","checkboxCount","useCheckboxStatusReducer","useContext"],"mappings":"2FAIMA,EAAwBC,EAAAA,cAE5B,CACAC,oBAAqB,CACnBC,eAAgB,IAElBC,uBAAwB,WAAQ,EAChCC,cAAc,EACdC,cAAc,EACdC,eAAe,IAuBjB,IAAMC,EACJP,EAAAA,mBAAkDQ,4BAE9C,SAA2BC,OAC/BC,EAAQD,EAAAC,SACRC,EAAQF,EAAAE,SAKR,OACEC,EAAAC,IAACN,EAAgBO,SAAQ,CAACC,MAAOJ,EAAQD,SACtCA,GAGP,iCAnCM,SAAiCD,OACrCC,EAAQD,EAAAC,SACRM,EAAaP,EAAAO,cAKb,OACEJ,MAACb,EAAsBe,UACrBC,MAAOE,2BAAyBD,GAAcN,SAE7CA,GAGP,wCAwBE,OAAOQ,EAAAA,WAAWX,EACpB,8CAtBE,OAAOW,EAAAA,WAAWnB,EACpB"}
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../src/table/checkbox/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TCheckboxProperty } from \"../table/type\";\nimport { useCheckboxStatusReducer } from \"./hooks\";\n\nconst CheckboxStatusContext = createContext<\n ReturnType<typeof useCheckboxStatusReducer>\n>({\n checkboxStatusState: {\n checkedRecords: [],\n },\n dispatchCheckboxStatus: () => {},\n allUnchecked: false,\n existChecked: false,\n indeterminate: false,\n});\n\nexport function CheckboxStatusProvider({\n children,\n checkboxCount,\n}: {\n children: JSX.Element;\n checkboxCount: number;\n}) {\n return (\n <CheckboxStatusContext.Provider\n value={useCheckboxStatusReducer(checkboxCount)}\n >\n {children}\n </CheckboxStatusContext.Provider>\n );\n}\n\nexport function useCheckboxStatusContext() {\n return useContext(CheckboxStatusContext);\n}\n\nconst CheckboxContext =\n createContext<TCheckboxProperty<any>[\"checkbox\"]>(undefined);\n\nexport function CheckboxProvider({\n children,\n checkbox,\n}: {\n children: React.ReactNode;\n checkbox: TCheckboxProperty<any>[\"checkbox\"];\n}) {\n return (\n <CheckboxContext.Provider value={checkbox}>\n {children}\n </CheckboxContext.Provider>\n );\n}\n\nexport function useCheckboxContext() {\n return useContext(CheckboxContext);\n}\n"],"names":["CheckboxStatusContext","createContext","checkboxStatusState","checkedRecords","dispatchCheckboxStatus","allUnchecked","existChecked","indeterminate","CheckboxContext","undefined","_a","children","checkbox","_jsx","jsx","Provider","value","checkboxCount","useCheckboxStatusReducer","useContext"],"mappings":"2FAIMA,EAAwBC,EAAAA,cAE5B,CACAC,oBAAqB,CACnBC,eAAgB,IAElBC,uBAAwB,WAAQ,EAChCC,cAAc,EACdC,cAAc,EACdC,eAAe,IAuBjB,IAAMC,EACJP,EAAAA,mBAAkDQ,4BAE9C,SAA2BC,OAC/BC,EAAQD,EAAAC,SACRC,EAAQF,EAAAE,SAKR,OACEC,EAAAC,IAACN,EAAgBO,SAAQ,CAACC,MAAOJ,EAAQD,SACtCA,GAGP,iCAnCM,SAAiCD,OACrCC,EAAQD,EAAAC,SACRM,EAAaP,EAAAO,cAKb,OACEJ,MAACb,EAAsBe,UACrBC,MAAOE,2BAAyBD,GAAcN,SAE7CA,GAGP,wCAwBE,OAAOQ,EAAAA,WAAWX,EACpB,8CAtBE,OAAOW,EAAAA,WAAWnB,EACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sources":["../../../../../../src/table/edit/ui/editor.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useFocusStateContext } from \"../../focus/provider\";\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 { IdGenerator } from \"../../libs\";\nimport { DataObject, DataRecord } from \"../../type\";\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 focus = useFocusStateContext();\n const edit = useEditStateContext();\n const editActions = useEditActionContext();\n const cols = useColumnsContext();\n\n useEffect(() => {\n if (focus.isFocus && !cols[focus.colIndex].editable) {\n editActions.endEditing();\n }\n }, [edit, focus]);\n\n if (!edit.isEditing) return <></>;\n if (!focus.isFocus) return <></>;\n\n const col = cols[focus.colIndex];\n const row = props.rowMaps[props.pageRowIds[focus.rowIndex]].data;\n\n if (!col.editable) return <></>;\n\n const id = IdGenerator.getTableCellId(focus.rowIndex, focus.colIndex);\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(\"table-frame\");\n if (!tableElement) return <></>;\n const rectTable = tableElement.getBoundingClientRect();\n\n size.top -= rectTable.top - tableElement.scrollTop - window.scrollY;\n size.left -= rectTable.left - tableElement.scrollLeft - window.scrollX;\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":["props","focus","useFocusStateContext","edit","useEditStateContext","editActions","useEditActionContext","cols","useColumnsContext","useEffect","isFocus","colIndex","editable","endEditing","isEditing","_jsx","col","row","rowMaps","pageRowIds","rowIndex","data","id","IdGenerator","getTableCellId","cellElement","document","getElementById","rect","getBoundingClientRect","size","width","height","top","left","undefined","tableElement","rectTable","scrollTop","window","scrollY","scrollLeft","scrollX","_jsxs","className","onClick","e","preventDefault","stopPropagation","style","children","type","StringCellInput","NumberCellInput","SelectCellInput"],"mappings":"8TAwBM,SAAiBA,GACrB,IAAMC,EAAQC,EAAAA,uBACRC,EAAOC,EAAAA,sBACPC,EAAcC,EAAAA,uBACdC,EAAOC,EAAAA,oBAQb,GANAC,EAAAA,WAAU,WACJR,EAAMS,UAAYH,EAAKN,EAAMU,UAAUC,UACzCP,EAAYQ,YAEhB,GAAG,CAACV,EAAMF,KAELE,EAAKW,UAAW,OAAOC,qBAC5B,IAAKd,EAAMS,QAAS,OAAOK,qBAE3B,IAAMC,EAAMT,EAAKN,EAAMU,UACjBM,EAAMjB,EAAMkB,QAAQlB,EAAMmB,WAAWlB,EAAMmB,WAAWC,KAE5D,IAAKL,EAAIJ,SAAU,OAAOG,qBAE1B,IAAMO,EAAKC,EAAAA,YAAYC,eAAevB,EAAMmB,SAAUnB,EAAMU,UACtDc,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,qBAElB,IAAMqB,EAAeV,SAASC,eAAe,eAC7C,IAAKS,EAAc,OAAOrB,qBAC1B,IAAMsB,EAAYD,EAAaP,wBAK/B,OAHAC,EAAKG,KAAOI,EAAUJ,IAAMG,EAAaE,UAAYC,OAAOC,QAC5DV,EAAKI,MAAQG,EAAUH,KAAOE,EAAaK,WAAaF,OAAOG,QAG7DC,EAAAA,YACEC,UAAU,0DACVC,QAAS,SAACC,GACRA,EAAEC,iBACFD,EAAEE,iBACH,EACDC,MAAO,CACLlB,MAAOD,EAAKC,MACZC,OAAQF,EAAKE,OACbC,IAAKH,EAAKG,IAAM,EAChBC,KAAMJ,EAAKI,MAGZgB,SAAA,CAAa,WAAblC,EAAImC,MAAqBpC,EAAAA,IAACqC,EAAAA,gBAAgB,CAAApC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAImC,MAAqBpC,MAACsC,EAAAA,gBAAe,CAACrC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAImC,MAAqBpC,MAACuC,EAAeA,gBAAA,CAACtC,IAAKA,EAAKC,IAAKA,MAGhE"}
|
|
1
|
+
{"version":3,"file":"editor.js","sources":["../../../../../../src/table/edit/ui/editor.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useFocusStateContext } from \"../../focus/provider\";\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 { IdGenerator } from \"../../libs\";\nimport { DataObject, DataRecord } from \"../../table/type\";\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 focus = useFocusStateContext();\n const edit = useEditStateContext();\n const editActions = useEditActionContext();\n const cols = useColumnsContext();\n\n useEffect(() => {\n if (focus.isFocus && !cols[focus.colIndex].editable) {\n editActions.endEditing();\n }\n }, [edit, focus]);\n\n if (!edit.isEditing) return <></>;\n if (!focus.isFocus) return <></>;\n\n const col = cols[focus.colIndex];\n const row = props.rowMaps[props.pageRowIds[focus.rowIndex]].data;\n\n if (!col.editable) return <></>;\n\n const id = IdGenerator.getTableCellId(focus.rowIndex, focus.colIndex);\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(\"table-frame\");\n if (!tableElement) return <></>;\n const rectTable = tableElement.getBoundingClientRect();\n\n size.top -= rectTable.top - tableElement.scrollTop - window.scrollY;\n size.left -= rectTable.left - tableElement.scrollLeft - window.scrollX;\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":["props","focus","useFocusStateContext","edit","useEditStateContext","editActions","useEditActionContext","cols","useColumnsContext","useEffect","isFocus","colIndex","editable","endEditing","isEditing","_jsx","col","row","rowMaps","pageRowIds","rowIndex","data","id","IdGenerator","getTableCellId","cellElement","document","getElementById","rect","getBoundingClientRect","size","width","height","top","left","undefined","tableElement","rectTable","scrollTop","window","scrollY","scrollLeft","scrollX","_jsxs","className","onClick","e","preventDefault","stopPropagation","style","children","type","StringCellInput","NumberCellInput","SelectCellInput"],"mappings":"8TAwBM,SAAiBA,GACrB,IAAMC,EAAQC,EAAAA,uBACRC,EAAOC,EAAAA,sBACPC,EAAcC,EAAAA,uBACdC,EAAOC,EAAAA,oBAQb,GANAC,EAAAA,WAAU,WACJR,EAAMS,UAAYH,EAAKN,EAAMU,UAAUC,UACzCP,EAAYQ,YAEhB,GAAG,CAACV,EAAMF,KAELE,EAAKW,UAAW,OAAOC,qBAC5B,IAAKd,EAAMS,QAAS,OAAOK,qBAE3B,IAAMC,EAAMT,EAAKN,EAAMU,UACjBM,EAAMjB,EAAMkB,QAAQlB,EAAMmB,WAAWlB,EAAMmB,WAAWC,KAE5D,IAAKL,EAAIJ,SAAU,OAAOG,qBAE1B,IAAMO,EAAKC,EAAAA,YAAYC,eAAevB,EAAMmB,SAAUnB,EAAMU,UACtDc,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,qBAElB,IAAMqB,EAAeV,SAASC,eAAe,eAC7C,IAAKS,EAAc,OAAOrB,qBAC1B,IAAMsB,EAAYD,EAAaP,wBAK/B,OAHAC,EAAKG,KAAOI,EAAUJ,IAAMG,EAAaE,UAAYC,OAAOC,QAC5DV,EAAKI,MAAQG,EAAUH,KAAOE,EAAaK,WAAaF,OAAOG,QAG7DC,EAAAA,YACEC,UAAU,0DACVC,QAAS,SAACC,GACRA,EAAEC,iBACFD,EAAEE,iBACH,EACDC,MAAO,CACLlB,MAAOD,EAAKC,MACZC,OAAQF,EAAKE,OACbC,IAAKH,EAAKG,IAAM,EAChBC,KAAMJ,EAAKI,MAGZgB,SAAA,CAAa,WAAblC,EAAImC,MAAqBpC,EAAAA,IAACqC,EAAAA,gBAAgB,CAAApC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAImC,MAAqBpC,MAACsC,EAAAA,gBAAe,CAACrC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAImC,MAAqBpC,MAACuC,EAAeA,gBAAA,CAACtC,IAAKA,EAAKC,IAAKA,MAGhE"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
"use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../provider.js"),r=require("../../../icon/cancel-icon.js");exports.SelectCellInput=function(
|
|
2
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../provider.js"),r=require("../../../icon/cancel-icon.js");exports.SelectCellInput=function(u){var l=u.col,o=n.useEditActionContext().endEditing,i=u.row[l.key],a=t.useState(i),c=a[0],s=a[1],f=t.useRef(null);return t.useEffect((function(){f.current&&f.current.focus()}),[f]),l.editable?e.jsxs("div",{className:"flex justify-between gap-1 w-full items-center",children:[e.jsxs("select",{ref:f,className:"w-full py-1 px-2 bg-white text-gray-900",value:c,onChange:function(e){e.preventDefault(),s(e.target.value)},onBlur:function(e){e.preventDefault(),c!==i?function(e){l.editable&&l.onCellBlur(l.key,e,u.row,o)}(c):o()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(s(i),o())},children:[l.allowEmpty&&e.jsx("option",{value:"",children:""==i?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),l.options.map((function(t){return e.jsx("option",{value:t.value,children:t.label},t.value)}))]}),e.jsx("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){s(i),o()}),300)},children:e.jsx(r.CancelIcon,{size:16})})]}):e.jsx(e.Fragment,{})};
|
|
3
3
|
//# sourceMappingURL=select-input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../../../src/table/filter/hooks/selectedFilteringColumn/hooks.ts"],"sourcesContent":["import { useMemo, useReducer } from \"react\";\nimport { TFilteringColumnReducer, TReturnFilteringColumnReducer } from \"./type\";\nimport { DataRecord, TTableColumn } from \"../../../type\";\n\nconst filteringColumnReducer: TFilteringColumnReducer = (state, action) => {\n switch (action.type) {\n case \"set\":\n if (!!state && state.key === action.payload.col.key) return state;\n\n if (\n action.payload.col.type === \"string\" ||\n action.payload.col.type === \"number\"\n ) {\n return {\n key: action.payload.col.key,\n type: action.payload.col.type,\n label: action.payload.col.label,\n };\n } else {\n return {\n key: action.payload.col.key,\n type: action.payload.col.type,\n label: action.payload.col.label,\n options: action.payload.col.options,\n };\n }\n case \"clear\":\n return null;\n }\n};\n\nexport function useFilteringColumnReducer(): TReturnFilteringColumnReducer {\n const [state, dispatch] = useReducer(filteringColumnReducer, null);\n\n const actions = useMemo(\n () => ({\n setFilteringColumn: (col: TTableColumn<DataRecord>) =>\n dispatch({ type: \"set\", payload: { col } }),\n clearFilteringColumn: () => dispatch({ type: \"clear\" }),\n }),\n []\n );\n\n return { state, actions };\n}\n"],"names":["filteringColumnReducer","state","action","type","key","payload","col","label","options","_a","useReducer","dispatch","actions","useMemo","setFilteringColumn","clearFilteringColumn"],"mappings":"oCAIMA,EAAkD,SAACC,EAAOC,GAC9D,OAAQA,EAAOC,MACb,IAAK,MACH,OAAMF,GAASA,EAAMG,MAAQF,EAAOG,QAAQC,IAAIF,IAAYH,EAG9B,WAA5BC,EAAOG,QAAQC,IAAIH,MACS,WAA5BD,EAAOG,QAAQC,IAAIH,KAEZ,CACLC,IAAKF,EAAOG,QAAQC,IAAIF,IACxBD,KAAMD,EAAOG,QAAQC,IAAIH,KACzBI,MAAOL,EAAOG,QAAQC,IAAIC,OAGrB,CACLH,IAAKF,EAAOG,QAAQC,IAAIF,IACxBD,KAAMD,EAAOG,QAAQC,IAAIH,KACzBI,MAAOL,EAAOG,QAAQC,IAAIC,MAC1BC,QAASN,EAAOG,QAAQC,IAAIE,SAGlC,IAAK,QACH,OAAO,KAEb,+CAGQ,IAAAC,EAAoBC,EAAAA,WAAWV,EAAwB,MAAtDC,EAAKQ,EAAA,GAAEE,OAWd,MAAO,CAAEV,MAAKA,EAAEW,QATAC,WACd,WAAM,MAAC,CACLC,mBAAoB,SAACR,GACnB,OAAAK,EAAS,CAAER,KAAM,MAAOE,QAAS,CAAEC,IAAGA,IAAK,EAC7CS,qBAAsB,WAAM,OAAAJ,EAAS,CAAER,KAAM,SAAU,EAHnD,GAKN,IAIJ"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../../../src/table/filter/hooks/selectedFilteringColumn/hooks.ts"],"sourcesContent":["import { useMemo, useReducer } from \"react\";\nimport { TFilteringColumnReducer, TReturnFilteringColumnReducer } from \"./type\";\nimport { DataRecord, TTableColumn } from \"../../../table/type\";\n\nconst filteringColumnReducer: TFilteringColumnReducer = (state, action) => {\n switch (action.type) {\n case \"set\":\n if (!!state && state.key === action.payload.col.key) return state;\n\n if (\n action.payload.col.type === \"string\" ||\n action.payload.col.type === \"number\"\n ) {\n return {\n key: action.payload.col.key,\n type: action.payload.col.type,\n label: action.payload.col.label,\n };\n } else {\n return {\n key: action.payload.col.key,\n type: action.payload.col.type,\n label: action.payload.col.label,\n options: action.payload.col.options,\n };\n }\n case \"clear\":\n return null;\n }\n};\n\nexport function useFilteringColumnReducer(): TReturnFilteringColumnReducer {\n const [state, dispatch] = useReducer(filteringColumnReducer, null);\n\n const actions = useMemo(\n () => ({\n setFilteringColumn: (col: TTableColumn<DataRecord>) =>\n dispatch({ type: \"set\", payload: { col } }),\n clearFilteringColumn: () => dispatch({ type: \"clear\" }),\n }),\n []\n );\n\n return { state, actions };\n}\n"],"names":["filteringColumnReducer","state","action","type","key","payload","col","label","options","_a","useReducer","dispatch","actions","useMemo","setFilteringColumn","clearFilteringColumn"],"mappings":"oCAIMA,EAAkD,SAACC,EAAOC,GAC9D,OAAQA,EAAOC,MACb,IAAK,MACH,OAAMF,GAASA,EAAMG,MAAQF,EAAOG,QAAQC,IAAIF,IAAYH,EAG9B,WAA5BC,EAAOG,QAAQC,IAAIH,MACS,WAA5BD,EAAOG,QAAQC,IAAIH,KAEZ,CACLC,IAAKF,EAAOG,QAAQC,IAAIF,IACxBD,KAAMD,EAAOG,QAAQC,IAAIH,KACzBI,MAAOL,EAAOG,QAAQC,IAAIC,OAGrB,CACLH,IAAKF,EAAOG,QAAQC,IAAIF,IACxBD,KAAMD,EAAOG,QAAQC,IAAIH,KACzBI,MAAOL,EAAOG,QAAQC,IAAIC,MAC1BC,QAASN,EAAOG,QAAQC,IAAIE,SAGlC,IAAK,QACH,OAAO,KAEb,+CAGQ,IAAAC,EAAoBC,EAAAA,WAAWV,EAAwB,MAAtDC,EAAKQ,EAAA,GAAEE,OAWd,MAAO,CAAEV,MAAKA,EAAEW,QATAC,WACd,WAAM,MAAC,CACLC,mBAAoB,SAACR,GACnB,OAAAK,EAAS,CAAER,KAAM,MAAOE,QAAS,CAAEC,IAAGA,IAAK,EAC7CS,qBAAsB,WAAM,OAAAJ,EAAS,CAAER,KAAM,SAAU,EAHnD,GAKN,IAIJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/filter/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport {\n TFilter,\n TFilterAction,\n TFilterState,\n TReturnUseFilterReducer,\n} from \"./types\";\nimport { DataObject, DataRecord } from \"../type\";\n\nfunction reducer<T extends DataRecord>(\n state: TFilterState<T>,\n action: TFilterAction<T>\n): TFilterState<T> {\n switch (action.type) {\n case \"add\":\n return {\n filters: [\n ...state.filters,\n { id: new Date().getTime(), ...action.payload.filter },\n ],\n };\n case \"remove\":\n return {\n filters: state.filters.filter((f) => f.id !== action.payload.id),\n };\n case \"clear\":\n return { filters: [] };\n }\n}\n\nexport function useFilterReducer<\n T extends DataRecord\n>(): TReturnUseFilterReducer<T> {\n const [state, dispatch] = useReducer(reducer, { filters: [] });\n\n const addFilter = useCallback(\n (filter: TFilter<T>) => dispatch({ type: \"add\", payload: { filter } }),\n [dispatch]\n );\n const removeFilter = useCallback(\n (id: number) => dispatch({ type: \"remove\", payload: { id } }),\n [dispatch]\n );\n const clearFilter = useCallback(\n () => dispatch({ type: \"clear\" }),\n [dispatch]\n );\n\n const filter = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]): DataObject<U>[] => {\n return state.filters.reduce((acc, filter) => {\n switch (filter.operator) {\n case \"includeText\":\n return acc.filter((row) => {\n const value = row[filter.key];\n if (typeof value === \"string\") {\n return filter.value.some((v) => value.includes(v));\n }\n return false;\n });\n case \"eq\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"ne\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n case \"gt\":\n return acc.filter(\n (row) => (row[filter.key] as number) > filter.value\n );\n case \"lt\":\n return acc.filter(\n (row) => (row[filter.key] as number) < filter.value\n );\n case \"gte\":\n return acc.filter(\n (row) => (row[filter.key] as number) >= filter.value\n );\n case \"lte\":\n return acc.filter(\n (row) => (row[filter.key] as number) <= filter.value\n );\n case \"selected\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"notSelected\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n }\n }, rows);\n },\n [state]\n );\n\n return {\n addFilter,\n removeFilter,\n clearFilter,\n filter,\n filterConditions: state.filters,\n };\n}\n"],"names":["reducer","state","action","type","filters","__spreadArray","__assign","id","Date","getTime","payload","filter","f","_a","useReducer","dispatch","addFilter","useCallback","removeFilter","clearFilter","rows","reduce","acc","operator","row","value","key","some","v","includes","filterConditions"],"mappings":"0FASA,SAASA,EACPC,EACAC,GAEA,OAAQA,EAAOC,MACb,IAAK,MACH,MAAO,CACLC,QAAOC,EAAAA,cAAAA,gBAAA,GACFJ,EAAMG,SAAO,GAAA,CACdE,WAAA,CAAAC,IAAI,IAAIC,MAAOC,WAAcP,EAAOQ,QAAQC,UAC/C,IAEL,IAAK,SACH,MAAO,CACLP,QAASH,EAAMG,QAAQO,QAAO,SAACC,GAAM,OAAAA,EAAEL,KAAOL,EAAOQ,QAAQH,EAAxB,KAEzC,IAAK,QACH,MAAO,CAAEH,QAAS,IAExB,qCAKQ,IAAAS,EAAoBC,EAAUA,WAACd,EAAS,CAAEI,QAAS,KAAlDH,OAAOc,OAyDd,MAAO,CACLC,UAxDgBC,EAAAA,aAChB,SAACN,GAAuB,OAAAI,EAAS,CAAEZ,KAAM,MAAOO,QAAS,CAAEC,OAAMA,OACjE,CAACI,IAuDDG,aArDmBD,EAAAA,aACnB,SAACV,GAAe,OAAAQ,EAAS,CAAEZ,KAAM,SAAUO,QAAS,CAAEH,GAAEA,OACxD,CAACQ,IAoDDI,YAlDkBF,EAAAA,aAClB,WAAM,OAAAF,EAAS,CAAEZ,KAAM,SAAjB,GACN,CAACY,IAiDDJ,OA9CaM,eACb,SAAuBG,GACrB,OAAOnB,EAAMG,QAAQiB,QAAO,SAACC,EAAKX,GAChC,OAAQA,EAAOY,UACb,IAAK,cACH,OAAOD,EAAIX,QAAO,SAACa,GACjB,IAAMC,EAAQD,EAAIb,EAAOe,KACzB,MAAqB,iBAAVD,GACFd,EAAOc,MAAME,MAAK,SAACC,GAAM,OAAAH,EAAMI,SAASD,EAAE,GAGrD,IACF,IAAK,KAoBL,IAAK,WACH,OAAON,EAAIX,QAAO,SAACa,GAAQ,OAAAA,EAAIb,EAAOe,OAASf,EAAOc,KAAK,IAnB7D,IAAK,KAoBL,IAAK,cACH,OAAOH,EAAIX,QAAO,SAACa,GAAQ,OAAAA,EAAIb,EAAOe,OAASf,EAAOc,KAAK,IAnB7D,IAAK,KACH,OAAOH,EAAIX,QACT,SAACa,GAAQ,OAACA,EAAIb,EAAOe,KAAkBf,EAAOc,KAAK,IAEvD,IAAK,KACH,OAAOH,EAAIX,QACT,SAACa,GAAQ,OAACA,EAAIb,EAAOe,KAAkBf,EAAOc,KAAK,IAEvD,IAAK,MACH,OAAOH,EAAIX,QACT,SAACa,GAAQ,OAACA,EAAIb,EAAOe,MAAmBf,EAAOc,KAAK,IAExD,IAAK,MACH,OAAOH,EAAIX,QACT,SAACa,GAAQ,OAACA,EAAIb,EAAOe,MAAmBf,EAAOc,KAAK,IAO3D,GAAEL,EACL,GACA,CAACnB,IAQD6B,iBAAkB7B,EAAMG,QAE5B"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/filter/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport {\n TFilter,\n TFilterAction,\n TFilterState,\n TReturnUseFilterReducer,\n} from \"./types\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nfunction reducer<T extends DataRecord>(\n state: TFilterState<T>,\n action: TFilterAction<T>\n): TFilterState<T> {\n switch (action.type) {\n case \"add\":\n return {\n filters: [\n ...state.filters,\n { id: new Date().getTime(), ...action.payload.filter },\n ],\n };\n case \"remove\":\n return {\n filters: state.filters.filter((f) => f.id !== action.payload.id),\n };\n case \"clear\":\n return { filters: [] };\n }\n}\n\nexport function useFilterReducer<\n T extends DataRecord\n>(): TReturnUseFilterReducer<T> {\n const [state, dispatch] = useReducer(reducer, { filters: [] });\n\n const addFilter = useCallback(\n (filter: TFilter<T>) => dispatch({ type: \"add\", payload: { filter } }),\n [dispatch]\n );\n const removeFilter = useCallback(\n (id: number) => dispatch({ type: \"remove\", payload: { id } }),\n [dispatch]\n );\n const clearFilter = useCallback(\n () => dispatch({ type: \"clear\" }),\n [dispatch]\n );\n\n const filter = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]): DataObject<U>[] => {\n return state.filters.reduce((acc, filter) => {\n switch (filter.operator) {\n case \"includeText\":\n return acc.filter((row) => {\n const value = row[filter.key];\n if (typeof value === \"string\") {\n return filter.value.some((v) => value.includes(v));\n }\n return false;\n });\n case \"eq\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"ne\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n case \"gt\":\n return acc.filter(\n (row) => (row[filter.key] as number) > filter.value\n );\n case \"lt\":\n return acc.filter(\n (row) => (row[filter.key] as number) < filter.value\n );\n case \"gte\":\n return acc.filter(\n (row) => (row[filter.key] as number) >= filter.value\n );\n case \"lte\":\n return acc.filter(\n (row) => (row[filter.key] as number) <= filter.value\n );\n case \"selected\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"notSelected\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n }\n }, rows);\n },\n [state]\n );\n\n return {\n addFilter,\n removeFilter,\n clearFilter,\n filter,\n filterConditions: state.filters,\n };\n}\n"],"names":["reducer","state","action","type","filters","__spreadArray","__assign","id","Date","getTime","payload","filter","f","_a","useReducer","dispatch","addFilter","useCallback","removeFilter","clearFilter","rows","reduce","acc","operator","row","value","key","some","v","includes","filterConditions"],"mappings":"0FASA,SAASA,EACPC,EACAC,GAEA,OAAQA,EAAOC,MACb,IAAK,MACH,MAAO,CACLC,QAAOC,EAAAA,cAAAA,gBAAA,GACFJ,EAAMG,SAAO,GAAA,CACdE,WAAA,CAAAC,IAAI,IAAIC,MAAOC,WAAcP,EAAOQ,QAAQC,UAC/C,IAEL,IAAK,SACH,MAAO,CACLP,QAASH,EAAMG,QAAQO,QAAO,SAACC,GAAM,OAAAA,EAAEL,KAAOL,EAAOQ,QAAQH,EAAxB,KAEzC,IAAK,QACH,MAAO,CAAEH,QAAS,IAExB,qCAKQ,IAAAS,EAAoBC,EAAUA,WAACd,EAAS,CAAEI,QAAS,KAAlDH,OAAOc,OAyDd,MAAO,CACLC,UAxDgBC,EAAAA,aAChB,SAACN,GAAuB,OAAAI,EAAS,CAAEZ,KAAM,MAAOO,QAAS,CAAEC,OAAMA,OACjE,CAACI,IAuDDG,aArDmBD,EAAAA,aACnB,SAACV,GAAe,OAAAQ,EAAS,CAAEZ,KAAM,SAAUO,QAAS,CAAEH,GAAEA,OACxD,CAACQ,IAoDDI,YAlDkBF,EAAAA,aAClB,WAAM,OAAAF,EAAS,CAAEZ,KAAM,SAAjB,GACN,CAACY,IAiDDJ,OA9CaM,eACb,SAAuBG,GACrB,OAAOnB,EAAMG,QAAQiB,QAAO,SAACC,EAAKX,GAChC,OAAQA,EAAOY,UACb,IAAK,cACH,OAAOD,EAAIX,QAAO,SAACa,GACjB,IAAMC,EAAQD,EAAIb,EAAOe,KACzB,MAAqB,iBAAVD,GACFd,EAAOc,MAAME,MAAK,SAACC,GAAM,OAAAH,EAAMI,SAASD,EAAE,GAGrD,IACF,IAAK,KAoBL,IAAK,WACH,OAAON,EAAIX,QAAO,SAACa,GAAQ,OAAAA,EAAIb,EAAOe,OAASf,EAAOc,KAAK,IAnB7D,IAAK,KAoBL,IAAK,cACH,OAAOH,EAAIX,QAAO,SAACa,GAAQ,OAAAA,EAAIb,EAAOe,OAASf,EAAOc,KAAK,IAnB7D,IAAK,KACH,OAAOH,EAAIX,QACT,SAACa,GAAQ,OAACA,EAAIb,EAAOe,KAAkBf,EAAOc,KAAK,IAEvD,IAAK,KACH,OAAOH,EAAIX,QACT,SAACa,GAAQ,OAACA,EAAIb,EAAOe,KAAkBf,EAAOc,KAAK,IAEvD,IAAK,MACH,OAAOH,EAAIX,QACT,SAACa,GAAQ,OAACA,EAAIb,EAAOe,MAAmBf,EAAOc,KAAK,IAExD,IAAK,MACH,OAAOH,EAAIX,QACT,SAACa,GAAQ,OAACA,EAAIb,EAAOe,MAAmBf,EAAOc,KAAK,IAO3D,GAAEL,EACL,GACA,CAACnB,IAQD6B,iBAAkB7B,EAAMG,QAE5B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),o=require("react"),n=require("../libs/id-generator.js"),
|
|
1
|
+
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),o=require("react"),n=require("../libs/id-generator.js"),t=function(o,n){switch(n.type){case"focus":return o.isFocus?o:{isFocus:!0,rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex};case"unfocus":return o.isFocus?{isFocus:!1}:o;case"move":return o.isFocus?{isFocus:!0,rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex}:o;case"moveLeft":return o.isFocus?e.__assign(e.__assign({},o),{colIndex:o.colIndex-1}):o;case"moveRight":return o.isFocus?e.__assign(e.__assign({},o),{colIndex:o.colIndex+1}):o;case"moveUp":return o.isFocus?e.__assign(e.__assign({},o),{rowIndex:o.rowIndex-1}):o;case"moveDown":return o.isFocus?e.__assign(e.__assign({},o),{rowIndex:o.rowIndex+1}):o}};exports.useFocusReducer=function(){var e=o.useReducer(t,{isFocus:!1}),s=e[0],u=e[1],c=o.useMemo((function(){return{focus:function(e,o){u({type:"focus",payload:{rowIndex:e,colIndex:o}})},unfocus:function(){u({type:"unfocus"})},move:function(e,o){u({type:"move",payload:{rowIndex:e,colIndex:o}})},moveLeft:function(){u({type:"moveLeft"})},moveRight:function(){u({type:"moveRight"})},moveUp:function(){u({type:"moveUp"})},moveDown:function(){u({type:"moveDown"})}}}),[]);return o.useEffect((function(){var e=function(e){var o=document.getElementById("table-frame"),n=e.target;n instanceof Node&&(null==o?void 0:o.contains(n))||c.unfocus()};return document.addEventListener("click",e),function(){document.removeEventListener("click",e)}}),[]),o.useEffect((function(){if(s.isFocus){var e=document.getElementById(n.IdGenerator.getTableCellId(s.rowIndex,s.colIndex));null==e||e.style.setProperty("outline-style","solid"),null==e||e.style.setProperty("outline-width","1px"),null==e||e.style.setProperty("outline-offset","-1px"),null==e||e.style.setProperty("outline-color","#9ca3af"),null==e||e.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"}),null==e||e.focus()}return function(){if(s.isFocus){var e=document.getElementById(n.IdGenerator.getTableCellId(s.rowIndex,s.colIndex));null==e||e.style.setProperty("outline-style","none")}}}),[s]),{state:s,actions:c}};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/focus/hooks.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/focus/hooks.ts"],"sourcesContent":["import { useEffect, useMemo, useReducer } from \"react\";\nimport { TFocusReducer, TReturnFocusReducer } from \"./types\";\nimport { IdGenerator } from \"../libs\";\n\nconst reducer: TFocusReducer = (state, action) => {\n switch (action.type) {\n case \"focus\":\n if (state.isFocus) {\n return state;\n }\n\n return {\n isFocus: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"unfocus\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n isFocus: false,\n };\n case \"move\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n isFocus: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"moveLeft\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n colIndex: state.colIndex - 1,\n };\n case \"moveRight\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n colIndex: state.colIndex + 1,\n };\n case \"moveUp\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n rowIndex: state.rowIndex - 1,\n };\n case \"moveDown\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n rowIndex: state.rowIndex + 1,\n };\n }\n};\n\nexport function useFocusReducer(): TReturnFocusReducer {\n const [state, dispatch] = useReducer(reducer, {\n isFocus: false,\n });\n\n const actions = useMemo(\n () => ({\n focus: (rowIndex: number, colIndex: number) => {\n dispatch({ type: \"focus\", payload: { rowIndex, colIndex } });\n },\n unfocus: () => {\n dispatch({ type: \"unfocus\" });\n },\n move: (rowIndex: number, colIndex: number) => {\n dispatch({ type: \"move\", payload: { rowIndex, colIndex } });\n },\n moveLeft: () => {\n dispatch({ type: \"moveLeft\" });\n },\n moveRight: () => {\n dispatch({ type: \"moveRight\" });\n },\n moveUp: () => {\n dispatch({ type: \"moveUp\" });\n },\n moveDown: () => {\n dispatch({ type: \"moveDown\" });\n },\n }),\n []\n );\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(\"table-frame\");\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n actions.unfocus();\n };\n\n document.addEventListener(\"click\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"click\", onClickOutOfTable);\n };\n }, []);\n\n useEffect(() => {\n if (state.isFocus) {\n const element = document.getElementById(\n IdGenerator.getTableCellId(state.rowIndex, state.colIndex)\n );\n element?.style.setProperty(\"outline-style\", \"solid\");\n element?.style.setProperty(\"outline-width\", \"1px\");\n element?.style.setProperty(\"outline-offset\", \"-1px\");\n element?.style.setProperty(\"outline-color\", \"#9ca3af\");\n\n element?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n element?.focus();\n }\n\n return () => {\n if (state.isFocus) {\n const element = document.getElementById(\n IdGenerator.getTableCellId(state.rowIndex, state.colIndex)\n );\n element?.style.setProperty(\"outline-style\", \"none\");\n }\n };\n }, [state]);\n\n return {\n state,\n actions,\n };\n}\n"],"names":["reducer","state","action","type","isFocus","rowIndex","payload","colIndex","__assign","_a","useReducer","dispatch","actions","useMemo","focus","unfocus","move","moveLeft","moveRight","moveUp","moveDown","useEffect","onClickOutOfTable","e","element","document","getElementById","ele","target","Node","contains","addEventListener","removeEventListener","IdGenerator","getTableCellId","style","setProperty","scrollIntoView","behavior","block","inline"],"mappings":"+HAIMA,EAAyB,SAACC,EAAOC,GACrC,OAAQA,EAAOC,MACb,IAAK,QACH,OAAIF,EAAMG,QACDH,EAGF,CACLG,SAAS,EACTC,SAAUH,EAAOI,QAAQD,SACzBE,SAAUL,EAAOI,QAAQC,UAE7B,IAAK,UACH,OAAKN,EAAMG,QAIJ,CACLA,SAAS,GAJFH,EAMX,IAAK,OACH,OAAKA,EAAMG,QAIJ,CACLA,SAAS,EACTC,SAAUH,EAAOI,QAAQD,SACzBE,SAAUL,EAAOI,QAAQC,UANlBN,EAQX,IAAK,WACH,OAAKA,EAAMG,QAKNI,WAAAA,EAAAA,SAAA,CAAA,EAAAP,IACHM,SAAUN,EAAMM,SAAW,IALpBN,EAOX,IAAK,YACH,OAAKA,EAAMG,QAKNI,WAAAA,EAAAA,SAAA,CAAA,EAAAP,IACHM,SAAUN,EAAMM,SAAW,IALpBN,EAOX,IAAK,SACH,OAAKA,EAAMG,QAKNI,WAAAA,EAAAA,SAAA,CAAA,EAAAP,IACHI,SAAUJ,EAAMI,SAAW,IALpBJ,EAOX,IAAK,WACH,OAAKA,EAAMG,QAKNI,WAAAA,EAAAA,SAAA,CAAA,EAAAP,IACHI,SAAUJ,EAAMI,SAAW,IALpBJ,EAQf,qCAGQ,IAAAQ,EAAoBC,EAAUA,WAACV,EAAS,CAC5CI,SAAS,IADJH,EAAKQ,EAAA,GAAEE,OAIRC,EAAUC,WACd,WAAM,MAAC,CACLC,MAAO,SAACT,EAAkBE,GACxBI,EAAS,CAAER,KAAM,QAASG,QAAS,CAAED,WAAUE,aAChD,EACDQ,QAAS,WACPJ,EAAS,CAAER,KAAM,WAClB,EACDa,KAAM,SAACX,EAAkBE,GACvBI,EAAS,CAAER,KAAM,OAAQG,QAAS,CAAED,WAAUE,aAC/C,EACDU,SAAU,WACRN,EAAS,CAAER,KAAM,YAClB,EACDe,UAAW,WACTP,EAAS,CAAER,KAAM,aAClB,EACDgB,OAAQ,WACNR,EAAS,CAAER,KAAM,UAClB,EACDiB,SAAU,WACRT,EAAS,CAAER,KAAM,YAClB,EArBG,GAuBN,IA8CF,OA3CAkB,EAAAA,WAAU,WACR,IAAMC,EAAoB,SAACC,GACzB,IAAMC,EAAUC,SAASC,eAAe,eAClCC,EAAMJ,EAAEK,OACVD,aAAeE,OAAQL,aAAA,EAAAA,EAASM,SAASH,KAC7Cf,EAAQG,SACV,EAIA,OAFAU,SAASM,iBAAiB,QAAST,GAE5B,WACLG,SAASO,oBAAoB,QAASV,EACxC,CACD,GAAE,IAEHD,EAAAA,WAAU,WACR,GAAIpB,EAAMG,QAAS,CACjB,IAAMoB,EAAUC,SAASC,eACvBO,cAAYC,eAAejC,EAAMI,SAAUJ,EAAMM,WAEnDiB,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,SAC5CZ,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,OAC5CZ,SAAAA,EAASW,MAAMC,YAAY,iBAAkB,QAC7CZ,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,WAE5CZ,SAAAA,EAASa,eAAe,CACtBC,SAAU,SACVC,MAAO,UACPC,OAAQ,YAEVhB,SAAAA,EAASV,OACV,CAED,OAAO,WACL,GAAIb,EAAMG,QAAS,CACjB,IAAMoB,EAAUC,SAASC,eACvBO,cAAYC,eAAejC,EAAMI,SAAUJ,EAAMM,WAEnDiB,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,OAC7C,CACH,CACF,GAAG,CAACnC,IAEG,CACLA,MAAKA,EACLW,QAAOA,EAEX"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),
|
|
1
|
+
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("react/jsx-runtime"),o=require("react"),n=require("./hooks.js"),u=o.createContext({isFocus:!1}),r=o.createContext({focus:function(){},unfocus:function(){},move:function(){},moveLeft:function(){},moveRight:function(){},moveUp:function(){},moveDown:function(){}});function s(){return o.useContext(u)}function i(){return o.useContext(r)}exports.FocusProvider=function(e){var o=n.useFocusReducer(),s=o.state,i=o.actions;return t.jsx(u.Provider,{value:s,children:t.jsx(r.Provider,{value:i,children:e.children})})},exports.useFocusActionContext=i,exports.useFocusContext=function(){return e.__assign(e.__assign({},s()),i())},exports.useFocusStateContext=s;
|
|
2
2
|
//# sourceMappingURL=provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sources":["../../../../../src/table/focus/provider.tsx"],"sourcesContent":["import { createContext, useContext
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../src/table/focus/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TFocusActionContext, TFocusStateContext } from \"./types\";\nimport { useFocusReducer } from \"./hooks\";\n\nconst FocusStateContext = createContext<TFocusStateContext>({\n isFocus: false,\n});\n\nconst FocusActionContext = createContext<TFocusActionContext>({\n focus: () => {},\n unfocus: () => {},\n move: () => {},\n moveLeft: () => {},\n moveRight: () => {},\n moveUp: () => {},\n moveDown: () => {},\n});\n\nexport function FocusProvider(props: { children: React.ReactNode }) {\n const { state, actions } = useFocusReducer();\n\n return (\n <FocusStateContext.Provider value={state}>\n <FocusActionContext.Provider value={actions}>\n {props.children}\n </FocusActionContext.Provider>\n </FocusStateContext.Provider>\n );\n}\n\nexport function useFocusStateContext() {\n return useContext(FocusStateContext);\n}\n\nexport function useFocusActionContext() {\n return useContext(FocusActionContext);\n}\n\nexport function useFocusContext() {\n return { ...useFocusStateContext(), ...useFocusActionContext() };\n}\n"],"names":["FocusStateContext","createContext","isFocus","FocusActionContext","focus","unfocus","move","moveLeft","moveRight","moveUp","moveDown","useFocusStateContext","useContext","useFocusActionContext","props","_a","useFocusReducer","state","actions","_jsx","Provider","value","children","__assign"],"mappings":"iJAIMA,EAAoBC,EAAAA,cAAkC,CAC1DC,SAAS,IAGLC,EAAqBF,EAAAA,cAAmC,CAC5DG,MAAO,WAAQ,EACfC,QAAS,WAAQ,EACjBC,KAAM,WAAQ,EACdC,SAAU,WAAQ,EAClBC,UAAW,WAAQ,EACnBC,OAAQ,WAAQ,EAChBC,SAAU,WAAQ,aAeJC,IACd,OAAOC,EAAAA,WAAWZ,EACpB,UAEgBa,IACd,OAAOD,EAAAA,WAAWT,EACpB,uBAlBM,SAAwBW,GACtB,IAAAC,EAAqBC,EAAeA,kBAAlCC,EAAKF,EAAAE,MAAEC,EAAOH,EAAAG,QAEtB,OACEC,EAAAA,IAACnB,EAAkBoB,UAASC,MAAOJ,EAAKK,SACtCH,MAAChB,EAAmBiB,SAAQ,CAACC,MAAOH,EAAOI,SACxCR,EAAMQ,YAIf,qEAWE,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYZ,KAA2BE,IACzC"}
|
|
@@ -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 \"../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":["row","cols","conditionalFormattings","reduce","acc","formatting","condition","key","style","colIndex","findIndex","col","Array","length","fill","join"],"mappings":"uDAQEA,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,OAAkB,IAAdE,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
|
+
{"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":["row","cols","conditionalFormattings","reduce","acc","formatting","condition","key","style","colIndex","findIndex","col","Array","length","fill","join"],"mappings":"uDAQEA,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,OAAkB,IAAdE,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,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e={getTableCellId:function(e,t){return"table-cell-".concat(e,"-").concat(t)},getCellIndex:function(e){var t=e.split("-");t[0],t[1];var r=t[2],n=t[3];return[Number(r),Number(n)]},getTableColId:function(e){return"table-col-".concat(e)}};exports.IdGenerator=e;
|
|
2
2
|
//# sourceMappingURL=id-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id-generator.js","sources":["../../../../../src/table/libs/id-generator.ts"],"sourcesContent":["export const IdGenerator = {\n getTableCellId: (rowIndex: number, columnIndex: number) =>\n `table-cell-${rowIndex}-${columnIndex}`,\n getTableColId: (columnIndex: number) => `table-col-${columnIndex}`,\n};\n"],"names":["getTableCellId","rowIndex","columnIndex","concat","getTableColId"],"mappings":"
|
|
1
|
+
{"version":3,"file":"id-generator.js","sources":["../../../../../src/table/libs/id-generator.ts"],"sourcesContent":["export const IdGenerator = {\n getTableCellId: (rowIndex: number, columnIndex: number) =>\n `table-cell-${rowIndex}-${columnIndex}`,\n getCellIndex: (id: string) => {\n const [_t, _c, rowIndex, columnIndex] = id.split(\"-\");\n return [Number(rowIndex), Number(columnIndex)];\n },\n getTableColId: (columnIndex: number) => `table-col-${columnIndex}`,\n};\n"],"names":["IdGenerator","getTableCellId","rowIndex","columnIndex","concat","getCellIndex","id","_a","split","Number","getTableColId"],"mappings":"aAAa,IAAAA,EAAc,CACzBC,eAAgB,SAACC,EAAkBC,GACjC,MAAA,cAAcC,OAAAF,EAAY,KAAAE,OAAAD,EAAa,EACzCE,aAAc,SAACC,GACP,IAAAC,EAAkCD,EAAGE,MAAM,eAAlC,IAAAN,OAAUC,OACzB,MAAO,CAACM,OAAOP,GAAWO,OAAON,GAClC,EACDO,cAAe,SAACP,GAAwB,MAAA,aAAaC,OAAAD,EAAa"}
|
|
@@ -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 \"../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","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"sHAKA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAKF,EAAMG,OAMXC,EAAAA,SAAAA,EAAAA,SAAA,GACKJ,GAAK,CACRK,YAAa,EACbC,SAAUL,EAAOM,QAAQD,WAPpBF,WAAAA,EAAAA,SAAA,CAAA,EAAAJ,IACHM,SAAUL,EAAOM,QAAQD,WAQ/B,IAAK,aACH,MAA+B,QAA3BL,EAAOM,QAAQC,QACV,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,GAIPH,EAAMG,OASXC,EAAAA,SAAAA,EAAAA,SAAA,GACKJ,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,EAIJI,WAAAA,EAAAA,SAAA,CAAA,EAAAJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAIe,IAAtBH,EAAMK,YACDL,EAIJI,WAAAA,EAAAA,SAAA,CAAA,EAAAJ,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,EAIJI,WAAAA,EAAAA,SAAA,CAAA,EAAAJ,IACHK,YAAaJ,EAAOM,QAAQI,aAbrBX,EAeX,QACE,OAAOA,EAEb,wBAEM,SAAyBY,GACvB,IAAAC,EAAoBC,EAAAA,WACxBf,EACAa,QAAAA,EAAgBG,EAAAA,oBAFXf,OAAOgB,OAKRC,EAAOC,EAAAA,aAAY,WAAM,OAAAF,EAAS,CAAEd,KAAM,QAAjB,GAA4B,CAACc,IACtDG,EAAOD,EAAAA,aAAY,WAAM,OAAAF,EAAS,CAAEd,KAAM,QAAjB,GAA4B,CAACc,IACtDI,EAAOF,EAAAA,aACX,SAACP,GAAuB,OAAAK,EAAS,CAAEd,KAAM,OAAQK,QAAS,CAAEI,WAAUA,OACtE,CAACK,IAGGK,EAAcH,eAClB,SAACZ,GACC,OAAAU,EAAS,CAAEd,KAAM,cAAeK,QAAS,CAAED,SAAQA,IAAnD,GACF,CAACU,IAGGM,EAAOC,EAAAA,SAAQ,WACnB,OAAKvB,EAAMG,QAGHH,EAAMK,YAAc,GAAKL,EAAMQ,QAF9B,CAGX,GAAG,CAACR,IAEEwB,EAAKD,EAAAA,SAAQ,WACjB,OAAKvB,EAAMG,OAGJH,EAAMK,YAAcL,EAAMQ,QAFxBR,EAAMM,QAGjB,GAAG,CAACN,IAEEyB,EAAaP,eACjB,SAAuBQ,GACrB,OAAOA,EAAKC,MAAML,EAAME,EAC1B,GACA,CAACF,EAAME,IAGT,MAAO,CACLrB,OAAQH,EAAMG,OACdK,QAASR,EAAMG,OAASH,EAAMQ,QAAUR,EAAMM,SAC9CsB,QAAS5B,EAAMG,OAASH,EAAMK,YAAc,EAC5CC,SAAUN,EAAMM,SAChBuB,UAAW7B,EAAMG,OAASM,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,SAAW,EACtEc,KAAIA,EACJE,GAAEA,EACFP,KAAIA,EACJE,KAAIA,EACJC,KAAIA,EACJC,YAAWA,EACXI,WAAUA,EAEd"}
|
|
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","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"sHAKA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAKF,EAAMG,OAMXC,EAAAA,SAAAA,EAAAA,SAAA,GACKJ,GAAK,CACRK,YAAa,EACbC,SAAUL,EAAOM,QAAQD,WAPpBF,WAAAA,EAAAA,SAAA,CAAA,EAAAJ,IACHM,SAAUL,EAAOM,QAAQD,WAQ/B,IAAK,aACH,MAA+B,QAA3BL,EAAOM,QAAQC,QACV,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,GAIPH,EAAMG,OASXC,EAAAA,SAAAA,EAAAA,SAAA,GACKJ,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,EAIJI,WAAAA,EAAAA,SAAA,CAAA,EAAAJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAIe,IAAtBH,EAAMK,YACDL,EAIJI,WAAAA,EAAAA,SAAA,CAAA,EAAAJ,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,EAIJI,WAAAA,EAAAA,SAAA,CAAA,EAAAJ,IACHK,YAAaJ,EAAOM,QAAQI,aAbrBX,EAeX,QACE,OAAOA,EAEb,wBAEM,SAAyBY,GACvB,IAAAC,EAAoBC,EAAAA,WACxBf,EACAa,QAAAA,EAAgBG,EAAAA,oBAFXf,OAAOgB,OAKRC,EAAOC,EAAAA,aAAY,WAAM,OAAAF,EAAS,CAAEd,KAAM,QAAjB,GAA4B,CAACc,IACtDG,EAAOD,EAAAA,aAAY,WAAM,OAAAF,EAAS,CAAEd,KAAM,QAAjB,GAA4B,CAACc,IACtDI,EAAOF,EAAAA,aACX,SAACP,GAAuB,OAAAK,EAAS,CAAEd,KAAM,OAAQK,QAAS,CAAEI,WAAUA,OACtE,CAACK,IAGGK,EAAcH,eAClB,SAACZ,GACC,OAAAU,EAAS,CAAEd,KAAM,cAAeK,QAAS,CAAED,SAAQA,IAAnD,GACF,CAACU,IAGGM,EAAOC,EAAAA,SAAQ,WACnB,OAAKvB,EAAMG,QAGHH,EAAMK,YAAc,GAAKL,EAAMQ,QAF9B,CAGX,GAAG,CAACR,IAEEwB,EAAKD,EAAAA,SAAQ,WACjB,OAAKvB,EAAMG,OAGJH,EAAMK,YAAcL,EAAMQ,QAFxBR,EAAMM,QAGjB,GAAG,CAACN,IAEEyB,EAAaP,eACjB,SAAuBQ,GACrB,OAAOA,EAAKC,MAAML,EAAME,EAC1B,GACA,CAACF,EAAME,IAGT,MAAO,CACLrB,OAAQH,EAAMG,OACdK,QAASR,EAAMG,OAASH,EAAMQ,QAAUR,EAAMM,SAC9CsB,QAAS5B,EAAMG,OAASH,EAAMK,YAAc,EAC5CC,SAAUN,EAAMM,SAChBuB,UAAW7B,EAAMG,OAASM,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,SAAW,EACtEc,KAAIA,EACJE,GAAEA,EACFP,KAAIA,EACJE,KAAIA,EACJC,KAAIA,EACJC,YAAWA,EACXI,WAAUA,EAEd"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),r=require("react"),
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("../focus/provider.js"),o=require("../checkbox/components.js"),i=require("../cell/ui/cell.js"),a=require("../libs/id-generator.js"),n=r.memo((function(r){var n=t.useFocusActionContext().unfocus,l=JSON.parse(r.dataString),c=r.conditionalFormattingString.split(",");return e.jsxs("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ".concat(r.onClickRow?"hover:cursor-pointer":""," ").concat(r.applyRowFormatting?r.applyRowFormatting(l):""),onClick:function(e){e.preventDefault(),r.onClickRow&&(r.onClickRow(l),n())},"data-testid":l.id,children:[r.existCheckbox&&e.jsx("td",{children:e.jsx(o.Checkbox,{row:l})}),r.cols.map((function(t,o){var n;return e.jsx(i.TableCell,{id:a.IdGenerator.getTableCellId(r.rowIndex,o),row:l,isExistOnClickRow:!!r.onClickRow,cellFormatClassName:c[o],editable:null!==(n=t.editable)&&void 0!==n&&n},t.key)}))]})}));exports.Row=n;
|
|
2
2
|
//# sourceMappingURL=components.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\n\ninterface TPropsRow<T extends DataRecord> {\n dataString: string;\n cols: TTableColumn<T>[];\n existCheckbox?: boolean;\n rowIndex: number;\n conditionalFormattingString: string;\n onClickRow?: (row: any) => void;\n applyRowFormatting?: (row: any) => string;\n
|
|
1
|
+
{"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\nimport { IdGenerator } from \"../libs\";\n\ninterface TPropsRow<T extends DataRecord> {\n dataString: string;\n cols: TTableColumn<T>[];\n existCheckbox?: boolean;\n rowIndex: number;\n conditionalFormattingString: string;\n onClickRow?: (row: any) => void;\n applyRowFormatting?: (row: any) => string;\n}\n\nexport const Row = memo(function R<T extends DataRecord>(props: TPropsRow<T>) {\n const { unfocus } = useFocusActionContext();\n const row = JSON.parse(props.dataString);\n const conditionalFormatting = props.conditionalFormattingString.split(\",\");\n\n return (\n <tr\n className={`relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ${\n !!props.onClickRow ? \"hover:cursor-pointer\" : \"\"\n } ${props.applyRowFormatting ? props.applyRowFormatting(row) : \"\"}`}\n onClick={(e) => {\n e.preventDefault();\n\n if (!!props.onClickRow) {\n props.onClickRow(row);\n unfocus();\n }\n }}\n data-testid={row.id}\n >\n {props.existCheckbox && (\n <td>\n <Checkbox row={row} />\n </td>\n )}\n {props.cols.map((col, j) => {\n return (\n <TableCell\n key={col.key as string}\n id={IdGenerator.getTableCellId(props.rowIndex, j)}\n row={row}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n editable={col.editable ?? false}\n />\n );\n })}\n </tr>\n );\n});\n"],"names":["Row","memo","props","unfocus","useFocusActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","_jsx","jsx","Checkbox","cols","map","col","j","TableCell","IdGenerator","getTableCellId","rowIndex","isExistOnClickRow","cellFormatClassName","editable","_a","key"],"mappings":"iNAiBaA,EAAMC,EAAIA,MAAC,SAAiCC,GAC/C,IAAAC,EAAYC,kCACdC,EAAMC,KAAKC,MAAML,EAAMM,YACvBC,EAAwBP,EAAMQ,4BAA4BC,MAAM,KAEtE,OACEC,OACE,KAAA,CAAAC,UAAW,0JACTC,OAAEZ,EAAMa,WAAa,uBAAyB,GAC5C,KAAAD,OAAAZ,EAAMc,mBAAqBd,EAAMc,mBAAmBX,GAAO,IAC/DY,QAAS,SAACC,GACRA,EAAEC,iBAEIjB,EAAMa,aACVb,EAAMa,WAAWV,GACjBF,IAEH,EACY,cAAAE,EAAIe,GAEhBC,SAAA,CAAAnB,EAAMoB,eACLC,EACEC,IAAA,KAAA,CAAAH,SAAAE,EAAAA,IAACE,EAAQA,SAAC,CAAApB,IAAKA,MAGlBH,EAAMwB,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEN,EAAAA,IAACO,EAAAA,UAAS,CAERV,GAAIW,EAAWA,YAACC,eAAe9B,EAAM+B,SAAUJ,GAC/CxB,IAAKA,EACL6B,oBAAqBhC,EAAMa,WAC3BoB,oBAAqB1B,EAAsBoB,GAC3CO,SAAsB,UAAZR,EAAIQ,gBAAQ,IAAAC,GAAAA,GALjBT,EAAIU,UAWrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject, DataRecord } from \"../type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return {\n key: action.payload.key,\n asc: true,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n case \"changeOrder\":\n if (state.isUpdatedData) {\n return {\n ...state,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n } else {\n return { ...state, asc: !state.asc, sortTiming: state.sortTiming + 1 };\n }\n case \"updateData\":\n return { ...state, isUpdatedData: true };\n }\n};\n\nexport function useSortReducer<T extends DataRecord>(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer<T> {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n isUpdatedData: false,\n sortTiming: 0,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const updatedData = () => {\n dispatch({ type: \"updateData\" });\n };\n\n const sort = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]) =>\n [...rows].sort((a, b) => {\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\n }),\n [state.key, state.asc]\n );\n\n const stateExcludeSortTiming = useMemo(\n () => ({\n key: state.key,\n asc: state.asc,\n isUpdatedData: state.isUpdatedData,\n }),\n [state.key, state.asc, state.isUpdatedData]\n );\n\n const actions = useMemo(\n () => ({ changeKey, changeOrder, updatedData, sort }),\n [sort]\n );\n\n return {\n state: stateExcludeSortTiming,\n actions,\n sortTiming: state.sortTiming,\n };\n}\n"],"names":["reducer","state","action","type","key","payload","asc","isUpdatedData","sortTiming","__assign","initial","_c","useReducer","_a","_b","dispatch","changeKey","changeOrder","updatedData","sort","useCallback","rows","__spreadArray","a","b","useMemo","actions"],"mappings":"0FAIMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CACLC,IAAKF,EAAOG,QAAQD,IACpBE,KAAK,EACLC,eAAe,EACfC,WAAYP,EAAMO,WAAa,GAEnC,IAAK,cACH,OAAIP,EAAMM,cACRE,EAAAA,SAAAA,EAAAA,SAAA,GACKR,GAAK,CACRM,eAAe,EACfC,WAAYP,EAAMO,WAAa,IAGjCC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYR,GAAO,CAAAK,KAAML,EAAMK,IAAKE,WAAYP,EAAMO,WAAa,IAEvE,IAAK,aACH,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,GAAYR,GAAK,CAAEM,eAAe,IAExC,yBAEM,SAA+CG,WAI7CC,EAAoBC,EAAUA,WAACZ,EAAS,CAC5CI,IAAiB,QAAZS,EAAAH,eAAAA,EAASN,WAAG,IAAAS,EAAAA,EAAI,KACrBP,IAAiB,QAAZQ,EAAAJ,eAAAA,EAASJ,WAAG,IAAAQ,GAAAA,EACjBP,eAAe,EACfC,WAAY,IAJPP,EAAKU,EAAA,GAAEI,OAORC,EAAY,SAACZ,GACjBW,EAAS,CAAEZ,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAEMa,EAAc,WAClBF,EAAS,CAAEZ,KAAM,eACnB,EAEMe,EAAc,WAClBH,EAAS,CAAEZ,KAAM,cACnB,EAEMgB,EAAOC,eACX,SAAuBC,GACrB,OAAAC,EAAAA,cAAA,GAAID,GAAM,GAAAF,MAAK,SAACI,EAAGC,GACjB,OAAID,EAAEtB,EAAMG,KAAOoB,EAAEvB,EAAMG,KAClBH,EAAMK,KAAO,EAAI,EAEtBiB,EAAEtB,EAAMG,KAAOoB,EAAEvB,EAAMG,KAClBH,EAAMK,IAAM,GAAK,EAEnB,CACT,GAAE,GACJ,CAACL,EAAMG,IAAKH,EAAMK,MAiBpB,MAAO,CACLL,MAf6BwB,WAC7B,WAAM,MAAC,CACLrB,IAAKH,EAAMG,IACXE,IAAKL,EAAMK,IACXC,cAAeN,EAAMM,cACrB,GACF,CAACN,EAAMG,IAAKH,EAAMK,IAAKL,EAAMM,gBAU7BmB,QAPcD,EAAAA,SACd,WAAM,MAAC,CAAET,UAASA,EAAEC,YAAWA,EAAEC,YAAWA,EAAEC,KAAIA,EAAG,GACrD,CAACA,IAMDX,WAAYP,EAAMO,WAEtB"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return {\n key: action.payload.key,\n asc: true,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n case \"changeOrder\":\n if (state.isUpdatedData) {\n return {\n ...state,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n } else {\n return { ...state, asc: !state.asc, sortTiming: state.sortTiming + 1 };\n }\n case \"updateData\":\n return { ...state, isUpdatedData: true };\n }\n};\n\nexport function useSortReducer<T extends DataRecord>(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer<T> {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n isUpdatedData: false,\n sortTiming: 0,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const updatedData = () => {\n dispatch({ type: \"updateData\" });\n };\n\n const sort = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]) =>\n [...rows].sort((a, b) => {\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\n }),\n [state.key, state.asc]\n );\n\n const stateExcludeSortTiming = useMemo(\n () => ({\n key: state.key,\n asc: state.asc,\n isUpdatedData: state.isUpdatedData,\n }),\n [state.key, state.asc, state.isUpdatedData]\n );\n\n const actions = useMemo(\n () => ({ changeKey, changeOrder, updatedData, sort }),\n [sort]\n );\n\n return {\n state: stateExcludeSortTiming,\n actions,\n sortTiming: state.sortTiming,\n };\n}\n"],"names":["reducer","state","action","type","key","payload","asc","isUpdatedData","sortTiming","__assign","initial","_c","useReducer","_a","_b","dispatch","changeKey","changeOrder","updatedData","sort","useCallback","rows","__spreadArray","a","b","useMemo","actions"],"mappings":"0FAIMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CACLC,IAAKF,EAAOG,QAAQD,IACpBE,KAAK,EACLC,eAAe,EACfC,WAAYP,EAAMO,WAAa,GAEnC,IAAK,cACH,OAAIP,EAAMM,cACRE,EAAAA,SAAAA,EAAAA,SAAA,GACKR,GAAK,CACRM,eAAe,EACfC,WAAYP,EAAMO,WAAa,IAGjCC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYR,GAAO,CAAAK,KAAML,EAAMK,IAAKE,WAAYP,EAAMO,WAAa,IAEvE,IAAK,aACH,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,GAAYR,GAAK,CAAEM,eAAe,IAExC,yBAEM,SAA+CG,WAI7CC,EAAoBC,EAAUA,WAACZ,EAAS,CAC5CI,IAAiB,QAAZS,EAAAH,eAAAA,EAASN,WAAG,IAAAS,EAAAA,EAAI,KACrBP,IAAiB,QAAZQ,EAAAJ,eAAAA,EAASJ,WAAG,IAAAQ,GAAAA,EACjBP,eAAe,EACfC,WAAY,IAJPP,EAAKU,EAAA,GAAEI,OAORC,EAAY,SAACZ,GACjBW,EAAS,CAAEZ,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAEMa,EAAc,WAClBF,EAAS,CAAEZ,KAAM,eACnB,EAEMe,EAAc,WAClBH,EAAS,CAAEZ,KAAM,cACnB,EAEMgB,EAAOC,eACX,SAAuBC,GACrB,OAAAC,EAAAA,cAAA,GAAID,GAAM,GAAAF,MAAK,SAACI,EAAGC,GACjB,OAAID,EAAEtB,EAAMG,KAAOoB,EAAEvB,EAAMG,KAClBH,EAAMK,KAAO,EAAI,EAEtBiB,EAAEtB,EAAMG,KAAOoB,EAAEvB,EAAMG,KAClBH,EAAMK,IAAM,GAAK,EAEnB,CACT,GAAE,GACJ,CAACL,EAAMG,IAAKH,EAAMK,MAiBpB,MAAO,CACLL,MAf6BwB,WAC7B,WAAM,MAAC,CACLrB,IAAKH,EAAMG,IACXE,IAAKL,EAAMK,IACXC,cAAeN,EAAMM,cACrB,GACF,CAACN,EAAMG,IAAKH,EAAMK,IAAKL,EAAMM,gBAU7BmB,QAPcD,EAAAA,SACd,WAAM,MAAC,CAAET,UAASA,EAAEC,YAAWA,EAAEC,YAAWA,EAAEC,KAAIA,EAAG,GACrD,CAACA,IAMDX,WAAYP,EAAMO,WAEtB"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),o=require("./hook.js"),i=require("../header/header.js"),t=require("../pagenation/providers.js"),s=require("../pagenation/components.js"),n=require("../filter/provider.js"),l=require("../filter/components.js");require("../sort/icon.js");var a=require("../sort/provider.js"),d=require("../sheet/providers.js"),c=require("../focus/provider.js"),u=require("../checkbox/provider.js"),x=require("../checkbox/components.js"),j=require("../libs/id-generator.js"),h=require("../edit/provider.js"),p=require("../table-property/provider.js"),g=require("../operation/components/keyboard-setting.js"),m=require("../sheet/components.js"),v=require("../paste/provider.js"),b=require("../libs/conditional-formatting.js"),w=require("../edit/ui/editor.js"),f=require("../filter/hooks/selectedFilteringColumn/provider.js");function q(e){var t=o.useTable(e),n=t.cols,a=t.rowMaps,d=t.pageRowIds,c=f.useFilteringColumnStateContext(),u=v.usePasteActionContext().onPaste;return r.jsxs("div",{className:"w-full",children:[r.jsx("div",{className:"flex justify-end mb-1 mr-3",children:r.jsx(l.TableFilterRemoveButton,{children:r.jsx("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),r.jsxs("div",{id:"table-frame",className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:[r.jsx(w.Editor,{rowMaps:a,pageRowIds:d}),r.jsxs("table",{className:"table",onPaste:function(e){e.preventDefault();var r=e.clipboardData.getData("Text");u(r.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(e){return e.split(",")})))},children:[r.jsx("thead",{children:r.jsxs("tr",{className:"sticky top-0 border-gray-200 z-20 bg-gray-200 text-gray-600 h-[32px]",children:[e.checkbox&&r.jsx("th",{children:r.jsx(x.AllCheckbox,{rows:e.rows})}),n.map((function(e,o){return r.jsx(i.TableHeaderElement,{id:j.IdGenerator.getTableColId(o),col:e},e.key.toString())}))]})}),r.jsxs("tbody",{children:[!!c&&r.jsx("tr",{children:r.jsx("td",{colSpan:n.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:r.jsx(l.TableFilterForm,{})})}),0===d.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:n.length,className:"py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),d.map((function(o,i){return r.jsx(m.Row,{existCheckbox:!!e.checkbox,rowIndex:i,dataString:a[o].stringValue,cols:e.cols,onClickRow:e.onClickRow,applyRowFormatting:e.applyRowFormatting,conditionalFormattingString:b.generateFormattingString(a[o].data,n,e.conditionalFormattings)},o)}))]})]})]}),r.jsxs("div",{className:"mt-1",children:[r.jsx(s.DisplayRange,{}),r.jsx("div",{className:"mt-2",children:r.jsx(s.Pagenation,{})})]})]})}module.exports=function(o){var i,s,l;return r.jsx(n.FilterProvider,{children:r.jsx(a.SortProvider,{initialCondition:null===(i=o.initialCondition)||void 0===i?void 0:i.sort,children:r.jsx(t.PagenationProvider,{rowCount:o.rows.length,perPage:null===(l=null===(s=o.initialCondition)||void 0===s?void 0:s.pagenation)||void 0===l?void 0:l.rowCountPerPage,children:r.jsx(u.CheckboxProvider,{checkbox:o.checkbox,children:r.jsx(u.CheckboxStatusProvider,{checkboxCount:o.rows.length,children:r.jsx(d.ColumnsProvider,{cols:o.cols,errorHandler:o.errorHandler,children:r.jsx(c.FocusProvider,{children:r.jsx(h.EditProvider,{children:r.jsx(p.TablePropertyProvider,{children:r.jsxs(v.PasteProvider,{rows:o.rows,cols:o.cols,onUpdateRowFunction:o.onUpdateRow,children:[r.jsx(g.KeyboardSetting,{}),r.jsx(q,e.__assign({},o))]})})})})})})})})})})};
|
|
3
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("react"),t=require("../pagenation/providers.js");require("react/jsx-runtime");var r=require("../filter/provider.js");require("../filter/constants.js"),require("../sheet/providers.js"),require("../filter/hooks/selectedFilteringColumn/provider.js");var o=require("../checkbox/provider.js"),n=require("../sort/provider.js"),u=require("../table-property/provider.js"),s=require("../paste/provider.js");exports.useTable=function(i){var c=r.useFilterContext().filter,a=n.useSortActionContext(),f=a.sort,l=a.updatedData,d=n.useSortTimingContext(),p=t.usePageContext(),h=p.setRowCount,v=p.pageFilter,x=o.useCheckboxStatusContext().dispatchCheckboxStatus,g=s.usePasteActionContext().setRows,C=u.useTablePropertyActionContext(),w=C.setMaxDisplayColCount,m=C.setMaxDisplayRowCount,j=e.useMemo((function(){return c(i.rows)}),[c,d,i.rows.length]);e.useEffect((function(){h(j.length)}),[j.length]);var q=e.useMemo((function(){return i.checkbox?i.rows.filter((function(e){var t;return null===(t=i.checkbox)||void 0===t?void 0:t.checked(e)})):[]}),[i.checkbox,i.rows]);e.useEffect((function(){x({type:"SET",payload:{checkedRecords:q}})}),[q]);var b=e.useMemo((function(){return f(j)}),[j,d]);e.useEffect((function(){l()}),[i.rows]);var k=e.useMemo((function(){return v(b)}),[v,b]),M=e.useMemo((function(){return k.map((function(e){return e.id}))}),[k]),y=e.useMemo((function(){return new Set(M)}),[M]),E=e.useMemo((function(){return i.rows.filter((function(e){return y.has(e.id)})).reduce((function(e,t){var r=Object.keys(t).sort().reduce((function(e,r){return e[r]=t[r],e}),{});return e[t.id]={data:r,stringValue:JSON.stringify(r)},e}),{})}),[i.rows,y]);return e.useEffect((function(){w(i.cols.length)}),[i.cols.length]),e.useEffect((function(){m(M.length)}),[M.length]),e.useEffect((function(){g(M.map((function(e){return E[e].data})))}),[E]),{cols:i.cols,rowMaps:E,pageRowIds:M}};
|
|
2
|
+
//# sourceMappingURL=hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.js","sources":["../../../../../src/table/table/hook.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TPropsTable } from \"./type\";\nimport { usePageContext } from \"../pagenation/providers\";\nimport { useFilterContext } from \"../filter\";\nimport { useCheckboxStatusContext } from \"../checkbox/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"../sort/provider\";\nimport { useTablePropertyActionContext } from \"../table-property/provider\";\nimport { usePasteActionContext } from \"../paste/provider\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows } = usePasteActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n setRows(pageRowIds.map((id) => rowMaps[id].data));\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n"],"names":["props","filter","useFilterContext","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","usePasteActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","row","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols"],"mappings":"0bASM,SAAyCA,GACrC,IAAAC,EAAWC,4BACbC,EAAwBC,EAAoBA,uBAA1CC,EAAIF,EAAAE,KAAEC,EAAWH,EAAAG,YACnBC,EAAaC,EAAAA,uBACbC,EAA8BC,EAAcA,iBAA1CC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WACvBC,EAA2BC,oDAC3BC,EAAYC,kCACdC,EACJC,EAA6BA,gCADvBC,EAAqBF,EAAAE,sBAAEC,EAAqBH,EAAAG,sBAG9CC,EAAeC,EAAAA,SACnB,WAAM,OAAArB,EAAOD,EAAMuB,KAAK,GACxB,CAACtB,EAAQM,EAAYP,EAAMuB,KAAKC,SAGlCC,EAAAA,WAAU,WACRd,EAAYU,EAAaG,OAC3B,GAAG,CAACH,EAAaG,SAEjB,IAAME,EAAaJ,EAAAA,SAAQ,WACzB,OAAKtB,EAAM2B,SAIJ3B,EAAMuB,KAAKtB,QAAO,SAAC2B,GAAG,IAAAzB,EAAK,eAAAA,EAAAH,EAAM2B,+BAAUE,QAAQD,EAAI,IAHrD,EAIV,GAAE,CAAC5B,EAAM2B,SAAU3B,EAAMuB,OAE1BE,EAAAA,WAAU,WACRZ,EAAuB,CACrBiB,KAAM,MACNC,QAAS,CAAEC,eAAgBN,IAE/B,GAAG,CAACA,IAEJ,IAAMO,EAAaX,EAAAA,SACjB,WAAM,OAAAjB,EAAKgB,KACX,CAACA,EAAcd,IAGjBkB,EAAAA,WAAU,WACRnB,GACF,GAAG,CAACN,EAAMuB,OAEV,IAAMW,EAAWZ,EAAAA,SACf,WAAM,OAAAV,EAAWqB,KACjB,CAACrB,EAAYqB,IAGTE,EAAab,EAAAA,SAAQ,WAAM,OAAAY,EAASE,KAAI,SAACR,GAAQ,OAAAA,EAAIS,EAAE,GAAC,GAAE,CAACH,IAC3DI,EAAgBhB,EAAAA,SAAQ,WAAM,OAAA,IAAIiB,IAAIJ,EAAW,GAAE,CAACA,IAEpDK,EAAUlB,EAAAA,SACd,WACE,OAAAtB,EAAMuB,KACHtB,QAAO,SAAC2B,GAAQ,OAAAU,EAAcG,IAAIb,EAAIS,OACtCK,QAAO,SAACC,EAAKf,GACZ,IAAMgB,EAAiBC,OAAOC,KAAKlB,GAChCvB,OACAqC,QAAO,SAACC,EAAKI,GAEZ,OADAJ,EAAII,GAAOnB,EAAImB,GACRJ,CACR,GAAE,CAAwC,GAM7C,OAJAA,EAAIf,EAAIS,IAAM,CACZW,KAAMJ,EACNK,YAAaC,KAAKC,UAAUP,IAEvBD,CACR,GAAE,CAA+E,EAAC,GACvF,CAAC3C,EAAMuB,KAAMe,IAef,OAZAb,EAAAA,WAAU,WACRN,EAAsBnB,EAAMoD,KAAK5B,OAClC,GAAE,CAACxB,EAAMoD,KAAK5B,SAEfC,EAAAA,WAAU,WACRL,EAAsBe,EAAWX,OACnC,GAAG,CAACW,EAAWX,SAEfC,EAAAA,WAAU,WACRV,EAAQoB,EAAWC,KAAI,SAACC,GAAO,OAAAG,EAAQH,GAAIW,QAC7C,GAAG,CAACR,IAEG,CACLY,KAAMpD,EAAMoD,KACZZ,QAAOA,EACPL,WAAUA,EAEd"}
|
package/dist/esm/src/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{default as Table}from"./table/base.js";
|
|
1
|
+
export{default as Table}from"./table/table/base.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useMemo as e}from"react";import{useEditActionContext as o}from"../edit/provider.js";import{useFocusActionContext as t}from"../focus/provider.js";import{useColumnsContext as r}from"../sheet/providers.js";import{IdGenerator as n}from"../libs/id-generator.js";function i(i,l){var p,d,u=t(),f=u.move,a=u.focus,c=o().startEditing,m=n.getCellIndex(i),s=m[0],v=m[1],b=r()[v],g=l[b.key],j="select"===b.type?null===(d=null===(p=b.options)||void 0===p?void 0:p.find((function(e){return e.value===g})))||void 0===d?void 0:d.label:g,y=e((function(){return b.editable?j:b.render?b.render(g,l):j}),[b.editable,j,g,l]);return{type:!b.editable&&b.render?"component":b.type,component:y,onClickCell:function(e){e.preventDefault(),e.stopPropagation(),a(s,v),f(s,v)},onDoubleClick:function(e){e.preventDefault(),a(s,v),f(s,v),c()}}}export{i as useCell};
|
|
2
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/cell/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useEditActionContext } from \"../edit/provider\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { useColumnsContext } from \"../sheet/providers\";\nimport { DataObject, DataRecord, TColumnType } from \"../table/type\";\nimport { IdGenerator } from \"../libs\";\n\nexport function useCell(id: string, row: DataObject<DataRecord>) {\n const { move, focus } = useFocusActionContext();\n const { startEditing } = useEditActionContext();\n const [rowIndex, colIndex] = IdGenerator.getCellIndex(id);\n const col = useColumnsContext()[colIndex];\n const value = row[col.key as string];\n\n const label =\n col.type === \"select\"\n ? col.options?.find((op) => op.value === value)?.label\n : value;\n\n const component = useMemo(() => {\n if (col.editable) {\n return label;\n } else {\n return col.render ? col.render(value as never, row) : label;\n }\n }, [col.editable, label, value, row]);\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const onDoubleClick: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n focus(rowIndex, colIndex);\n move(rowIndex, colIndex);\n startEditing();\n };\n\n const onClickCell: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n focus(rowIndex, colIndex);\n move(rowIndex, colIndex);\n };\n\n return {\n type,\n component,\n onClickCell,\n onDoubleClick,\n };\n}\n"],"names":["useCell","id","row","_c","useFocusActionContext","move","focus","startEditing","useEditActionContext","_d","IdGenerator","getCellIndex","rowIndex","colIndex","col","useColumnsContext","value","key","label","type","_a","options","find","op","_b","component","useMemo","editable","render","onClickCell","e","preventDefault","stopPropagation","onDoubleClick"],"mappings":"wQAOgB,SAAAA,EAAQC,EAAYC,WAC5BC,EAAkBC,IAAhBC,EAAIF,EAAAE,KAAEC,EAAKH,EAAAG,MACXC,EAAiBC,iBACnBC,EAAuBC,EAAYC,aAAaV,GAA/CW,EAAQH,EAAA,GAAEI,OACXC,EAAMC,IAAoBF,GAC1BG,EAAQd,EAAIY,EAAIG,KAEhBC,EACS,WAAbJ,EAAIK,KAC6C,UAAlC,QAAXC,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGP,QAAUA,CAAb,WAAmB,IAAAQ,OAAA,EAAAA,EAAEN,MAC/CF,EAEAS,EAAYC,GAAQ,WACxB,OAAIZ,EAAIa,SACCT,EAEAJ,EAAIc,OAASd,EAAIc,OAAOZ,EAAgBd,GAAOgB,CAE1D,GAAG,CAACJ,EAAIa,SAAUT,EAAOF,EAAOd,IAmBhC,MAAO,CACLiB,MAjBCL,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIK,KAkBhDM,UAASA,EACTI,YAV2D,SAACC,GAC5DA,EAAEC,iBACFD,EAAEE,kBACF1B,EAAMM,EAAUC,GAChBR,EAAKO,EAAUC,EACjB,EAMEoB,cAlB6D,SAACH,GAC9DA,EAAEC,iBACFzB,EAAMM,EAAUC,GAChBR,EAAKO,EAAUC,GACfN,GACF,EAeF"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e,jsxs as
|
|
2
|
+
import{jsx as e,jsxs as i}from"react/jsx-runtime";import{EditButton as o}from"./edit-button.js";import{useCell as l}from"../hooks.js";function t(t){var c=l(t.id,t.row),n=c.type,r=c.component,a=c.onClickCell,s=c.onDoubleClick;return e("td",{id:t.id,className:"".concat(t.cellFormatClassName),onClick:t.isExistOnClickRow?void 0:a,onDoubleClick:t.isExistOnClickRow?void 0:s,children:i("div",{className:"flex items-center gap-3 w-fit p-2 cursor-default",onClick:a,children:["component"===n?r:e("div",{onDoubleClick:s,children:e("p",{className:"cell-data text-left whitespace-nowrap",children:r})}),t.editable&&e(o,{})]})})}export{t as TableCell};
|
|
3
3
|
//# sourceMappingURL=cell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/checkbox/hooks.ts"],"sourcesContent":["import { useReducer } from \"react\";\nimport { CheckboxStatusReducer } from \"./types\";\nimport { DataRecord } from \"../type\";\n\nconst checkboxReducer: CheckboxStatusReducer<DataRecord> = (state, action) => {\n switch (action.type) {\n case \"SET\":\n return { checkedRecords: action.payload.checkedRecords };\n }\n};\n\nexport function useCheckboxStatusReducer(checkboxCount: number) {\n const [checkboxStatusState, dispatchCheckboxStatus] = useReducer(\n checkboxReducer,\n { checkedRecords: [] }\n );\n\n return {\n checkboxStatusState,\n dispatchCheckboxStatus,\n allUnchecked: checkboxStatusState.checkedRecords.length === 0,\n existChecked: checkboxStatusState.checkedRecords.length > 0,\n indeterminate:\n checkboxStatusState.checkedRecords.length > 0 &&\n checkboxStatusState.checkedRecords.length < checkboxCount,\n };\n}\n"],"names":["checkboxReducer","state","action","type","checkedRecords","payload","useCheckboxStatusReducer","checkboxCount","_a","useReducer","checkboxStatusState","dispatchCheckboxStatus","allUnchecked","length","existChecked","indeterminate"],"mappings":"mCAIA,IAAMA,EAAqD,SAACC,EAAOC,GACjE,GACO,QADCA,EAAOC,KAEX,MAAO,CAAEC,eAAgBF,EAAOG,QAAQD,eAE9C,EAEM,SAAUE,EAAyBC,GACjC,IAAAC,EAAgDC,EACpDT,EACA,CAAEI,eAAgB,KAFbM,OAKP,MAAO,CACLA,oBAAmBA,EACnBC,4BACAC,aAA4D,IAA9CF,EAAoBN,eAAeS,OACjDC,aAAcJ,EAAoBN,eAAeS,OAAS,EAC1DE,cACEL,EAAoBN,eAAeS,OAAS,GAC5CH,EAAoBN,eAAeS,OAASN,EAElD"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/checkbox/hooks.ts"],"sourcesContent":["import { useReducer } from \"react\";\nimport { CheckboxStatusReducer } from \"./types\";\nimport { DataRecord } from \"../table/type\";\n\nconst checkboxReducer: CheckboxStatusReducer<DataRecord> = (state, action) => {\n switch (action.type) {\n case \"SET\":\n return { checkedRecords: action.payload.checkedRecords };\n }\n};\n\nexport function useCheckboxStatusReducer(checkboxCount: number) {\n const [checkboxStatusState, dispatchCheckboxStatus] = useReducer(\n checkboxReducer,\n { checkedRecords: [] }\n );\n\n return {\n checkboxStatusState,\n dispatchCheckboxStatus,\n allUnchecked: checkboxStatusState.checkedRecords.length === 0,\n existChecked: checkboxStatusState.checkedRecords.length > 0,\n indeterminate:\n checkboxStatusState.checkedRecords.length > 0 &&\n checkboxStatusState.checkedRecords.length < checkboxCount,\n };\n}\n"],"names":["checkboxReducer","state","action","type","checkedRecords","payload","useCheckboxStatusReducer","checkboxCount","_a","useReducer","checkboxStatusState","dispatchCheckboxStatus","allUnchecked","length","existChecked","indeterminate"],"mappings":"mCAIA,IAAMA,EAAqD,SAACC,EAAOC,GACjE,GACO,QADCA,EAAOC,KAEX,MAAO,CAAEC,eAAgBF,EAAOG,QAAQD,eAE9C,EAEM,SAAUE,EAAyBC,GACjC,IAAAC,EAAgDC,EACpDT,EACA,CAAEI,eAAgB,KAFbM,OAKP,MAAO,CACLA,oBAAmBA,EACnBC,4BACAC,aAA4D,IAA9CF,EAAoBN,eAAeS,OACjDC,aAAcJ,EAAoBN,eAAeS,OAAS,EAC1DE,cACEL,EAAoBN,eAAeS,OAAS,GAC5CH,EAAoBN,eAAeS,OAASN,EAElD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sources":["../../../../../src/table/checkbox/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TCheckboxProperty } from \"../type\";\nimport { useCheckboxStatusReducer } from \"./hooks\";\n\nconst CheckboxStatusContext = createContext<\n ReturnType<typeof useCheckboxStatusReducer>\n>({\n checkboxStatusState: {\n checkedRecords: [],\n },\n dispatchCheckboxStatus: () => {},\n allUnchecked: false,\n existChecked: false,\n indeterminate: false,\n});\n\nexport function CheckboxStatusProvider({\n children,\n checkboxCount,\n}: {\n children: JSX.Element;\n checkboxCount: number;\n}) {\n return (\n <CheckboxStatusContext.Provider\n value={useCheckboxStatusReducer(checkboxCount)}\n >\n {children}\n </CheckboxStatusContext.Provider>\n );\n}\n\nexport function useCheckboxStatusContext() {\n return useContext(CheckboxStatusContext);\n}\n\nconst CheckboxContext =\n createContext<TCheckboxProperty<any>[\"checkbox\"]>(undefined);\n\nexport function CheckboxProvider({\n children,\n checkbox,\n}: {\n children: React.ReactNode;\n checkbox: TCheckboxProperty<any>[\"checkbox\"];\n}) {\n return (\n <CheckboxContext.Provider value={checkbox}>\n {children}\n </CheckboxContext.Provider>\n );\n}\n\nexport function useCheckboxContext() {\n return useContext(CheckboxContext);\n}\n"],"names":["CheckboxStatusContext","createContext","checkboxStatusState","checkedRecords","dispatchCheckboxStatus","allUnchecked","existChecked","indeterminate","CheckboxStatusProvider","_a","children","checkboxCount","_jsx","Provider","value","useCheckboxStatusReducer","useCheckboxStatusContext","useContext","CheckboxContext","undefined","CheckboxProvider","checkbox","useCheckboxContext"],"mappings":"oJAIA,IAAMA,EAAwBC,EAE5B,CACAC,oBAAqB,CACnBC,eAAgB,IAElBC,uBAAwB,WAAQ,EAChCC,cAAc,EACdC,cAAc,EACdC,eAAe,IAGX,SAAUC,EAAuBC,OACrCC,EAAQD,EAAAC,SACRC,EAAaF,EAAAE,cAKb,OACEC,EAACZ,EAAsBa,UACrBC,MAAOC,EAAyBJ,GAAcD,SAE7CA,GAGP,UAEgBM,IACd,OAAOC,EAAWjB,EACpB,CAEA,IAAMkB,EACJjB,OAAkDkB,GAE9C,SAAUC,EAAiBX,OAC/BC,EAAQD,EAAAC,SACRW,EAAQZ,EAAAY,SAKR,OACET,EAACM,EAAgBL,SAAQ,CAACC,MAAOO,EAAQX,SACtCA,GAGP,UAEgBY,IACd,OAAOL,EAAWC,EACpB"}
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../src/table/checkbox/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TCheckboxProperty } from \"../table/type\";\nimport { useCheckboxStatusReducer } from \"./hooks\";\n\nconst CheckboxStatusContext = createContext<\n ReturnType<typeof useCheckboxStatusReducer>\n>({\n checkboxStatusState: {\n checkedRecords: [],\n },\n dispatchCheckboxStatus: () => {},\n allUnchecked: false,\n existChecked: false,\n indeterminate: false,\n});\n\nexport function CheckboxStatusProvider({\n children,\n checkboxCount,\n}: {\n children: JSX.Element;\n checkboxCount: number;\n}) {\n return (\n <CheckboxStatusContext.Provider\n value={useCheckboxStatusReducer(checkboxCount)}\n >\n {children}\n </CheckboxStatusContext.Provider>\n );\n}\n\nexport function useCheckboxStatusContext() {\n return useContext(CheckboxStatusContext);\n}\n\nconst CheckboxContext =\n createContext<TCheckboxProperty<any>[\"checkbox\"]>(undefined);\n\nexport function CheckboxProvider({\n children,\n checkbox,\n}: {\n children: React.ReactNode;\n checkbox: TCheckboxProperty<any>[\"checkbox\"];\n}) {\n return (\n <CheckboxContext.Provider value={checkbox}>\n {children}\n </CheckboxContext.Provider>\n );\n}\n\nexport function useCheckboxContext() {\n return useContext(CheckboxContext);\n}\n"],"names":["CheckboxStatusContext","createContext","checkboxStatusState","checkedRecords","dispatchCheckboxStatus","allUnchecked","existChecked","indeterminate","CheckboxStatusProvider","_a","children","checkboxCount","_jsx","Provider","value","useCheckboxStatusReducer","useCheckboxStatusContext","useContext","CheckboxContext","undefined","CheckboxProvider","checkbox","useCheckboxContext"],"mappings":"oJAIA,IAAMA,EAAwBC,EAE5B,CACAC,oBAAqB,CACnBC,eAAgB,IAElBC,uBAAwB,WAAQ,EAChCC,cAAc,EACdC,cAAc,EACdC,eAAe,IAGX,SAAUC,EAAuBC,OACrCC,EAAQD,EAAAC,SACRC,EAAaF,EAAAE,cAKb,OACEC,EAACZ,EAAsBa,UACrBC,MAAOC,EAAyBJ,GAAcD,SAE7CA,GAGP,UAEgBM,IACd,OAAOC,EAAWjB,EACpB,CAEA,IAAMkB,EACJjB,OAAkDkB,GAE9C,SAAUC,EAAiBX,OAC/BC,EAAQD,EAAAC,SACRW,EAAQZ,EAAAY,SAKR,OACET,EAACM,EAAgBL,SAAQ,CAACC,MAAOO,EAAQX,SACtCA,GAGP,UAEgBY,IACd,OAAOL,EAAWC,EACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sources":["../../../../../../src/table/edit/ui/editor.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useFocusStateContext } from \"../../focus/provider\";\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 { IdGenerator } from \"../../libs\";\nimport { DataObject, DataRecord } from \"../../type\";\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 focus = useFocusStateContext();\n const edit = useEditStateContext();\n const editActions = useEditActionContext();\n const cols = useColumnsContext();\n\n useEffect(() => {\n if (focus.isFocus && !cols[focus.colIndex].editable) {\n editActions.endEditing();\n }\n }, [edit, focus]);\n\n if (!edit.isEditing) return <></>;\n if (!focus.isFocus) return <></>;\n\n const col = cols[focus.colIndex];\n const row = props.rowMaps[props.pageRowIds[focus.rowIndex]].data;\n\n if (!col.editable) return <></>;\n\n const id = IdGenerator.getTableCellId(focus.rowIndex, focus.colIndex);\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(\"table-frame\");\n if (!tableElement) return <></>;\n const rectTable = tableElement.getBoundingClientRect();\n\n size.top -= rectTable.top - tableElement.scrollTop - window.scrollY;\n size.left -= rectTable.left - tableElement.scrollLeft - window.scrollX;\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","focus","useFocusStateContext","edit","useEditStateContext","editActions","useEditActionContext","cols","useColumnsContext","useEffect","isFocus","colIndex","editable","endEditing","isEditing","_jsx","col","row","rowMaps","pageRowIds","rowIndex","data","id","IdGenerator","getTableCellId","cellElement","document","getElementById","rect","getBoundingClientRect","size","width","height","top","left","undefined","tableElement","rectTable","scrollTop","window","scrollY","scrollLeft","scrollX","_jsxs","className","onClick","e","preventDefault","stopPropagation","style","children","type","StringCellInput","NumberCellInput","SelectCellInput"],"mappings":"kgBAwBM,SAAUA,EAAOC,GACrB,IAAMC,EAAQC,IACRC,EAAOC,IACPC,EAAcC,IACdC,EAAOC,IAQb,GANAC,GAAU,WACJR,EAAMS,UAAYH,EAAKN,EAAMU,UAAUC,UACzCP,EAAYQ,YAEhB,GAAG,CAACV,EAAMF,KAELE,EAAKW,UAAW,OAAOC,QAC5B,IAAKd,EAAMS,QAAS,OAAOK,QAE3B,IAAMC,EAAMT,EAAKN,EAAMU,UACjBM,EAAMjB,EAAMkB,QAAQlB,EAAMmB,WAAWlB,EAAMmB,WAAWC,KAE5D,IAAKL,EAAIJ,SAAU,OAAOG,QAE1B,IAAMO,EAAKC,EAAYC,eAAevB,EAAMmB,SAAUnB,EAAMU,UACtDc,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,eAAe,eAC7C,IAAKS,EAAc,OAAOrB,QAC1B,IAAMsB,EAAYD,EAAaP,wBAK/B,OAHAC,EAAKG,KAAOI,EAAUJ,IAAMG,EAAaE,UAAYC,OAAOC,QAC5DV,EAAKI,MAAQG,EAAUH,KAAOE,EAAaK,WAAaF,OAAOG,QAG7DC,SACEC,UAAU,0DACVC,QAAS,SAACC,GACRA,EAAEC,iBACFD,EAAEE,iBACH,EACDC,MAAO,CACLlB,MAAOD,EAAKC,MACZC,OAAQF,EAAKE,OACbC,IAAKH,EAAKG,IAAM,EAChBC,KAAMJ,EAAKI,MAGZgB,SAAA,CAAa,WAAblC,EAAImC,MAAqBpC,EAACqC,EAAgB,CAAApC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAImC,MAAqBpC,EAACsC,EAAe,CAACrC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAImC,MAAqBpC,EAACuC,EAAe,CAACtC,IAAKA,EAAKC,IAAKA,MAGhE"}
|
|
1
|
+
{"version":3,"file":"editor.js","sources":["../../../../../../src/table/edit/ui/editor.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useFocusStateContext } from \"../../focus/provider\";\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 { IdGenerator } from \"../../libs\";\nimport { DataObject, DataRecord } from \"../../table/type\";\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 focus = useFocusStateContext();\n const edit = useEditStateContext();\n const editActions = useEditActionContext();\n const cols = useColumnsContext();\n\n useEffect(() => {\n if (focus.isFocus && !cols[focus.colIndex].editable) {\n editActions.endEditing();\n }\n }, [edit, focus]);\n\n if (!edit.isEditing) return <></>;\n if (!focus.isFocus) return <></>;\n\n const col = cols[focus.colIndex];\n const row = props.rowMaps[props.pageRowIds[focus.rowIndex]].data;\n\n if (!col.editable) return <></>;\n\n const id = IdGenerator.getTableCellId(focus.rowIndex, focus.colIndex);\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(\"table-frame\");\n if (!tableElement) return <></>;\n const rectTable = tableElement.getBoundingClientRect();\n\n size.top -= rectTable.top - tableElement.scrollTop - window.scrollY;\n size.left -= rectTable.left - tableElement.scrollLeft - window.scrollX;\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","focus","useFocusStateContext","edit","useEditStateContext","editActions","useEditActionContext","cols","useColumnsContext","useEffect","isFocus","colIndex","editable","endEditing","isEditing","_jsx","col","row","rowMaps","pageRowIds","rowIndex","data","id","IdGenerator","getTableCellId","cellElement","document","getElementById","rect","getBoundingClientRect","size","width","height","top","left","undefined","tableElement","rectTable","scrollTop","window","scrollY","scrollLeft","scrollX","_jsxs","className","onClick","e","preventDefault","stopPropagation","style","children","type","StringCellInput","NumberCellInput","SelectCellInput"],"mappings":"kgBAwBM,SAAUA,EAAOC,GACrB,IAAMC,EAAQC,IACRC,EAAOC,IACPC,EAAcC,IACdC,EAAOC,IAQb,GANAC,GAAU,WACJR,EAAMS,UAAYH,EAAKN,EAAMU,UAAUC,UACzCP,EAAYQ,YAEhB,GAAG,CAACV,EAAMF,KAELE,EAAKW,UAAW,OAAOC,QAC5B,IAAKd,EAAMS,QAAS,OAAOK,QAE3B,IAAMC,EAAMT,EAAKN,EAAMU,UACjBM,EAAMjB,EAAMkB,QAAQlB,EAAMmB,WAAWlB,EAAMmB,WAAWC,KAE5D,IAAKL,EAAIJ,SAAU,OAAOG,QAE1B,IAAMO,EAAKC,EAAYC,eAAevB,EAAMmB,SAAUnB,EAAMU,UACtDc,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,eAAe,eAC7C,IAAKS,EAAc,OAAOrB,QAC1B,IAAMsB,EAAYD,EAAaP,wBAK/B,OAHAC,EAAKG,KAAOI,EAAUJ,IAAMG,EAAaE,UAAYC,OAAOC,QAC5DV,EAAKI,MAAQG,EAAUH,KAAOE,EAAaK,WAAaF,OAAOG,QAG7DC,SACEC,UAAU,0DACVC,QAAS,SAACC,GACRA,EAAEC,iBACFD,EAAEE,iBACH,EACDC,MAAO,CACLlB,MAAOD,EAAKC,MACZC,OAAQF,EAAKE,OACbC,IAAKH,EAAKG,IAAM,EAChBC,KAAMJ,EAAKI,MAGZgB,SAAA,CAAa,WAAblC,EAAImC,MAAqBpC,EAACqC,EAAgB,CAAApC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAImC,MAAqBpC,EAACsC,EAAe,CAACrC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAImC,MAAqBpC,EAACuC,EAAe,CAACtC,IAAKA,EAAKC,IAAKA,MAGhE"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e,Fragment as t,jsxs as n}from"react/jsx-runtime";import{useState as o}from"react";import{useEditActionContext as
|
|
2
|
+
import{jsx as e,Fragment as t,jsxs as n}from"react/jsx-runtime";import{useState as o,useRef as r,useEffect as l}from"react";import{useEditActionContext as i}from"../provider.js";import{CancelIcon as u}from"../../../icon/cancel-icon.js";function a(a){var c=a.col,f=i().endEditing,p=a.row[c.key],s=o(p),m=s[0],v=s[1],y=r(null);l((function(){y.current&&y.current.focus()}),[y]);return c.editable?n("div",{className:"flex justify-between gap-1 w-full items-center",children:[n("select",{ref:y,className:"w-full py-1 px-2 bg-white text-gray-900",value:m,onChange:function(e){e.preventDefault(),v(e.target.value)},onBlur:function(e){e.preventDefault(),m!==p?function(e){c.editable&&c.onCellBlur(c.key,e,a.row,f)}(m):f()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(v(p),f())},children:[c.allowEmpty&&e("option",{value:"",children:""==p?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),c.options.map((function(t){return e("option",{value:t.value,children:t.label},t.value)}))]}),e("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){v(p),f()}),300)},children:e(u,{size:16})})]}):e(t,{})}export{a as SelectCellInput};
|
|
3
3
|
//# sourceMappingURL=select-input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../../../src/table/filter/hooks/selectedFilteringColumn/hooks.ts"],"sourcesContent":["import { useMemo, useReducer } from \"react\";\nimport { TFilteringColumnReducer, TReturnFilteringColumnReducer } from \"./type\";\nimport { DataRecord, TTableColumn } from \"../../../type\";\n\nconst filteringColumnReducer: TFilteringColumnReducer = (state, action) => {\n switch (action.type) {\n case \"set\":\n if (!!state && state.key === action.payload.col.key) return state;\n\n if (\n action.payload.col.type === \"string\" ||\n action.payload.col.type === \"number\"\n ) {\n return {\n key: action.payload.col.key,\n type: action.payload.col.type,\n label: action.payload.col.label,\n };\n } else {\n return {\n key: action.payload.col.key,\n type: action.payload.col.type,\n label: action.payload.col.label,\n options: action.payload.col.options,\n };\n }\n case \"clear\":\n return null;\n }\n};\n\nexport function useFilteringColumnReducer(): TReturnFilteringColumnReducer {\n const [state, dispatch] = useReducer(filteringColumnReducer, null);\n\n const actions = useMemo(\n () => ({\n setFilteringColumn: (col: TTableColumn<DataRecord>) =>\n dispatch({ type: \"set\", payload: { col } }),\n clearFilteringColumn: () => dispatch({ type: \"clear\" }),\n }),\n []\n );\n\n return { state, actions };\n}\n"],"names":["filteringColumnReducer","state","action","type","key","payload","col","label","options","useFilteringColumnReducer","_a","useReducer","dispatch","actions","useMemo","setFilteringColumn","clearFilteringColumn"],"mappings":"gDAIA,IAAMA,EAAkD,SAACC,EAAOC,GAC9D,OAAQA,EAAOC,MACb,IAAK,MACH,OAAMF,GAASA,EAAMG,MAAQF,EAAOG,QAAQC,IAAIF,IAAYH,EAG9B,WAA5BC,EAAOG,QAAQC,IAAIH,MACS,WAA5BD,EAAOG,QAAQC,IAAIH,KAEZ,CACLC,IAAKF,EAAOG,QAAQC,IAAIF,IACxBD,KAAMD,EAAOG,QAAQC,IAAIH,KACzBI,MAAOL,EAAOG,QAAQC,IAAIC,OAGrB,CACLH,IAAKF,EAAOG,QAAQC,IAAIF,IACxBD,KAAMD,EAAOG,QAAQC,IAAIH,KACzBI,MAAOL,EAAOG,QAAQC,IAAIC,MAC1BC,QAASN,EAAOG,QAAQC,IAAIE,SAGlC,IAAK,QACH,OAAO,KAEb,WAEgBC,IACR,IAAAC,EAAoBC,EAAWX,EAAwB,MAAtDC,EAAKS,EAAA,GAAEE,OAWd,MAAO,CAAEX,MAAKA,EAAEY,QATAC,GACd,WAAM,MAAC,CACLC,mBAAoB,SAACT,GACnB,OAAAM,EAAS,CAAET,KAAM,MAAOE,QAAS,CAAEC,IAAGA,IAAK,EAC7CU,qBAAsB,WAAM,OAAAJ,EAAS,CAAET,KAAM,SAAU,EAHnD,GAKN,IAIJ"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../../../src/table/filter/hooks/selectedFilteringColumn/hooks.ts"],"sourcesContent":["import { useMemo, useReducer } from \"react\";\nimport { TFilteringColumnReducer, TReturnFilteringColumnReducer } from \"./type\";\nimport { DataRecord, TTableColumn } from \"../../../table/type\";\n\nconst filteringColumnReducer: TFilteringColumnReducer = (state, action) => {\n switch (action.type) {\n case \"set\":\n if (!!state && state.key === action.payload.col.key) return state;\n\n if (\n action.payload.col.type === \"string\" ||\n action.payload.col.type === \"number\"\n ) {\n return {\n key: action.payload.col.key,\n type: action.payload.col.type,\n label: action.payload.col.label,\n };\n } else {\n return {\n key: action.payload.col.key,\n type: action.payload.col.type,\n label: action.payload.col.label,\n options: action.payload.col.options,\n };\n }\n case \"clear\":\n return null;\n }\n};\n\nexport function useFilteringColumnReducer(): TReturnFilteringColumnReducer {\n const [state, dispatch] = useReducer(filteringColumnReducer, null);\n\n const actions = useMemo(\n () => ({\n setFilteringColumn: (col: TTableColumn<DataRecord>) =>\n dispatch({ type: \"set\", payload: { col } }),\n clearFilteringColumn: () => dispatch({ type: \"clear\" }),\n }),\n []\n );\n\n return { state, actions };\n}\n"],"names":["filteringColumnReducer","state","action","type","key","payload","col","label","options","useFilteringColumnReducer","_a","useReducer","dispatch","actions","useMemo","setFilteringColumn","clearFilteringColumn"],"mappings":"gDAIA,IAAMA,EAAkD,SAACC,EAAOC,GAC9D,OAAQA,EAAOC,MACb,IAAK,MACH,OAAMF,GAASA,EAAMG,MAAQF,EAAOG,QAAQC,IAAIF,IAAYH,EAG9B,WAA5BC,EAAOG,QAAQC,IAAIH,MACS,WAA5BD,EAAOG,QAAQC,IAAIH,KAEZ,CACLC,IAAKF,EAAOG,QAAQC,IAAIF,IACxBD,KAAMD,EAAOG,QAAQC,IAAIH,KACzBI,MAAOL,EAAOG,QAAQC,IAAIC,OAGrB,CACLH,IAAKF,EAAOG,QAAQC,IAAIF,IACxBD,KAAMD,EAAOG,QAAQC,IAAIH,KACzBI,MAAOL,EAAOG,QAAQC,IAAIC,MAC1BC,QAASN,EAAOG,QAAQC,IAAIE,SAGlC,IAAK,QACH,OAAO,KAEb,WAEgBC,IACR,IAAAC,EAAoBC,EAAWX,EAAwB,MAAtDC,EAAKS,EAAA,GAAEE,OAWd,MAAO,CAAEX,MAAKA,EAAEY,QATAC,GACd,WAAM,MAAC,CACLC,mBAAoB,SAACT,GACnB,OAAAM,EAAS,CAAET,KAAM,MAAOE,QAAS,CAAEC,IAAGA,IAAK,EAC7CU,qBAAsB,WAAM,OAAAJ,EAAS,CAAET,KAAM,SAAU,EAHnD,GAKN,IAIJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/filter/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport {\n TFilter,\n TFilterAction,\n TFilterState,\n TReturnUseFilterReducer,\n} from \"./types\";\nimport { DataObject, DataRecord } from \"../type\";\n\nfunction reducer<T extends DataRecord>(\n state: TFilterState<T>,\n action: TFilterAction<T>\n): TFilterState<T> {\n switch (action.type) {\n case \"add\":\n return {\n filters: [\n ...state.filters,\n { id: new Date().getTime(), ...action.payload.filter },\n ],\n };\n case \"remove\":\n return {\n filters: state.filters.filter((f) => f.id !== action.payload.id),\n };\n case \"clear\":\n return { filters: [] };\n }\n}\n\nexport function useFilterReducer<\n T extends DataRecord\n>(): TReturnUseFilterReducer<T> {\n const [state, dispatch] = useReducer(reducer, { filters: [] });\n\n const addFilter = useCallback(\n (filter: TFilter<T>) => dispatch({ type: \"add\", payload: { filter } }),\n [dispatch]\n );\n const removeFilter = useCallback(\n (id: number) => dispatch({ type: \"remove\", payload: { id } }),\n [dispatch]\n );\n const clearFilter = useCallback(\n () => dispatch({ type: \"clear\" }),\n [dispatch]\n );\n\n const filter = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]): DataObject<U>[] => {\n return state.filters.reduce((acc, filter) => {\n switch (filter.operator) {\n case \"includeText\":\n return acc.filter((row) => {\n const value = row[filter.key];\n if (typeof value === \"string\") {\n return filter.value.some((v) => value.includes(v));\n }\n return false;\n });\n case \"eq\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"ne\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n case \"gt\":\n return acc.filter(\n (row) => (row[filter.key] as number) > filter.value\n );\n case \"lt\":\n return acc.filter(\n (row) => (row[filter.key] as number) < filter.value\n );\n case \"gte\":\n return acc.filter(\n (row) => (row[filter.key] as number) >= filter.value\n );\n case \"lte\":\n return acc.filter(\n (row) => (row[filter.key] as number) <= filter.value\n );\n case \"selected\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"notSelected\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n }\n }, rows);\n },\n [state]\n );\n\n return {\n addFilter,\n removeFilter,\n clearFilter,\n filter,\n filterConditions: state.filters,\n };\n}\n"],"names":["reducer","state","action","type","filters","__spreadArray","__assign","id","Date","getTime","payload","filter","f","useFilterReducer","_a","useReducer","dispatch","addFilter","useCallback","removeFilter","clearFilter","rows","reduce","acc","operator","row","value","key","some","v","includes","filterConditions"],"mappings":"2IASA,SAASA,EACPC,EACAC,GAEA,OAAQA,EAAOC,MACb,IAAK,MACH,MAAO,CACLC,QAAOC,EAAAA,EAAA,GACFJ,EAAMG,SAAO,GAAA,CACdE,EAAA,CAAAC,IAAI,IAAIC,MAAOC,WAAcP,EAAOQ,QAAQC,UAC/C,IAEL,IAAK,SACH,MAAO,CACLP,QAASH,EAAMG,QAAQO,QAAO,SAACC,GAAM,OAAAA,EAAEL,KAAOL,EAAOQ,QAAQH,EAAxB,KAEzC,IAAK,QACH,MAAO,CAAEH,QAAS,IAExB,UAEgBS,IAGR,IAAAC,EAAoBC,EAAWf,EAAS,CAAEI,QAAS,KAAlDH,OAAOe,OAERC,EAAYC,GAChB,SAACP,GAAuB,OAAAK,EAAS,CAAEb,KAAM,MAAOO,QAAS,CAAEC,OAAMA,OACjE,CAACK,IAqDH,MAAO,CACLC,UAASA,EACTE,aArDmBD,GACnB,SAACX,GAAe,OAAAS,EAAS,CAAEb,KAAM,SAAUO,QAAS,CAAEH,GAAEA,OACxD,CAACS,IAoDDI,YAlDkBF,GAClB,WAAM,OAAAF,EAAS,CAAEb,KAAM,SAAjB,GACN,CAACa,IAiDDL,OA9CaO,GACb,SAAuBG,GACrB,OAAOpB,EAAMG,QAAQkB,QAAO,SAACC,EAAKZ,GAChC,OAAQA,EAAOa,UACb,IAAK,cACH,OAAOD,EAAIZ,QAAO,SAACc,GACjB,IAAMC,EAAQD,EAAId,EAAOgB,KACzB,MAAqB,iBAAVD,GACFf,EAAOe,MAAME,MAAK,SAACC,GAAM,OAAAH,EAAMI,SAASD,EAAE,GAGrD,IACF,IAAK,KAoBL,IAAK,WACH,OAAON,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,OAAShB,EAAOe,KAAK,IAnB7D,IAAK,KAoBL,IAAK,cACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,OAAShB,EAAOe,KAAK,IAnB7D,IAAK,KACH,OAAOH,EAAIZ,QACT,SAACc,GAAQ,OAACA,EAAId,EAAOgB,KAAkBhB,EAAOe,KAAK,IAEvD,IAAK,KACH,OAAOH,EAAIZ,QACT,SAACc,GAAQ,OAACA,EAAId,EAAOgB,KAAkBhB,EAAOe,KAAK,IAEvD,IAAK,MACH,OAAOH,EAAIZ,QACT,SAACc,GAAQ,OAACA,EAAId,EAAOgB,MAAmBhB,EAAOe,KAAK,IAExD,IAAK,MACH,OAAOH,EAAIZ,QACT,SAACc,GAAQ,OAACA,EAAId,EAAOgB,MAAmBhB,EAAOe,KAAK,IAO3D,GAAEL,EACL,GACA,CAACpB,IAQD8B,iBAAkB9B,EAAMG,QAE5B"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/filter/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport {\n TFilter,\n TFilterAction,\n TFilterState,\n TReturnUseFilterReducer,\n} from \"./types\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nfunction reducer<T extends DataRecord>(\n state: TFilterState<T>,\n action: TFilterAction<T>\n): TFilterState<T> {\n switch (action.type) {\n case \"add\":\n return {\n filters: [\n ...state.filters,\n { id: new Date().getTime(), ...action.payload.filter },\n ],\n };\n case \"remove\":\n return {\n filters: state.filters.filter((f) => f.id !== action.payload.id),\n };\n case \"clear\":\n return { filters: [] };\n }\n}\n\nexport function useFilterReducer<\n T extends DataRecord\n>(): TReturnUseFilterReducer<T> {\n const [state, dispatch] = useReducer(reducer, { filters: [] });\n\n const addFilter = useCallback(\n (filter: TFilter<T>) => dispatch({ type: \"add\", payload: { filter } }),\n [dispatch]\n );\n const removeFilter = useCallback(\n (id: number) => dispatch({ type: \"remove\", payload: { id } }),\n [dispatch]\n );\n const clearFilter = useCallback(\n () => dispatch({ type: \"clear\" }),\n [dispatch]\n );\n\n const filter = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]): DataObject<U>[] => {\n return state.filters.reduce((acc, filter) => {\n switch (filter.operator) {\n case \"includeText\":\n return acc.filter((row) => {\n const value = row[filter.key];\n if (typeof value === \"string\") {\n return filter.value.some((v) => value.includes(v));\n }\n return false;\n });\n case \"eq\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"ne\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n case \"gt\":\n return acc.filter(\n (row) => (row[filter.key] as number) > filter.value\n );\n case \"lt\":\n return acc.filter(\n (row) => (row[filter.key] as number) < filter.value\n );\n case \"gte\":\n return acc.filter(\n (row) => (row[filter.key] as number) >= filter.value\n );\n case \"lte\":\n return acc.filter(\n (row) => (row[filter.key] as number) <= filter.value\n );\n case \"selected\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"notSelected\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n }\n }, rows);\n },\n [state]\n );\n\n return {\n addFilter,\n removeFilter,\n clearFilter,\n filter,\n filterConditions: state.filters,\n };\n}\n"],"names":["reducer","state","action","type","filters","__spreadArray","__assign","id","Date","getTime","payload","filter","f","useFilterReducer","_a","useReducer","dispatch","addFilter","useCallback","removeFilter","clearFilter","rows","reduce","acc","operator","row","value","key","some","v","includes","filterConditions"],"mappings":"2IASA,SAASA,EACPC,EACAC,GAEA,OAAQA,EAAOC,MACb,IAAK,MACH,MAAO,CACLC,QAAOC,EAAAA,EAAA,GACFJ,EAAMG,SAAO,GAAA,CACdE,EAAA,CAAAC,IAAI,IAAIC,MAAOC,WAAcP,EAAOQ,QAAQC,UAC/C,IAEL,IAAK,SACH,MAAO,CACLP,QAASH,EAAMG,QAAQO,QAAO,SAACC,GAAM,OAAAA,EAAEL,KAAOL,EAAOQ,QAAQH,EAAxB,KAEzC,IAAK,QACH,MAAO,CAAEH,QAAS,IAExB,UAEgBS,IAGR,IAAAC,EAAoBC,EAAWf,EAAS,CAAEI,QAAS,KAAlDH,OAAOe,OAERC,EAAYC,GAChB,SAACP,GAAuB,OAAAK,EAAS,CAAEb,KAAM,MAAOO,QAAS,CAAEC,OAAMA,OACjE,CAACK,IAqDH,MAAO,CACLC,UAASA,EACTE,aArDmBD,GACnB,SAACX,GAAe,OAAAS,EAAS,CAAEb,KAAM,SAAUO,QAAS,CAAEH,GAAEA,OACxD,CAACS,IAoDDI,YAlDkBF,GAClB,WAAM,OAAAF,EAAS,CAAEb,KAAM,SAAjB,GACN,CAACa,IAiDDL,OA9CaO,GACb,SAAuBG,GACrB,OAAOpB,EAAMG,QAAQkB,QAAO,SAACC,EAAKZ,GAChC,OAAQA,EAAOa,UACb,IAAK,cACH,OAAOD,EAAIZ,QAAO,SAACc,GACjB,IAAMC,EAAQD,EAAId,EAAOgB,KACzB,MAAqB,iBAAVD,GACFf,EAAOe,MAAME,MAAK,SAACC,GAAM,OAAAH,EAAMI,SAASD,EAAE,GAGrD,IACF,IAAK,KAoBL,IAAK,WACH,OAAON,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,OAAShB,EAAOe,KAAK,IAnB7D,IAAK,KAoBL,IAAK,cACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,OAAShB,EAAOe,KAAK,IAnB7D,IAAK,KACH,OAAOH,EAAIZ,QACT,SAACc,GAAQ,OAACA,EAAId,EAAOgB,KAAkBhB,EAAOe,KAAK,IAEvD,IAAK,KACH,OAAOH,EAAIZ,QACT,SAACc,GAAQ,OAACA,EAAId,EAAOgB,KAAkBhB,EAAOe,KAAK,IAEvD,IAAK,MACH,OAAOH,EAAIZ,QACT,SAACc,GAAQ,OAACA,EAAId,EAAOgB,MAAmBhB,EAAOe,KAAK,IAExD,IAAK,MACH,OAAOH,EAAIZ,QACT,SAACc,GAAQ,OAACA,EAAId,EAAOgB,MAAmBhB,EAAOe,KAAK,IAO3D,GAAEL,EACL,GACA,CAACpB,IAQD8B,iBAAkB9B,EAAMG,QAE5B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as o,
|
|
1
|
+
import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as o,useMemo as n,useEffect as t}from"react";import{IdGenerator as c}from"../libs/id-generator.js";var s=function(o,n){switch(n.type){case"focus":return o.isFocus?o:{isFocus:!0,rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex};case"unfocus":return o.isFocus?{isFocus:!1}:o;case"move":return o.isFocus?{isFocus:!0,rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex}:o;case"moveLeft":return o.isFocus?e(e({},o),{colIndex:o.colIndex-1}):o;case"moveRight":return o.isFocus?e(e({},o),{colIndex:o.colIndex+1}):o;case"moveUp":return o.isFocus?e(e({},o),{rowIndex:o.rowIndex-1}):o;case"moveDown":return o.isFocus?e(e({},o),{rowIndex:o.rowIndex+1}):o}};function r(){var e=o(s,{isFocus:!1}),r=e[0],u=e[1],l=n((function(){return{focus:function(e,o){u({type:"focus",payload:{rowIndex:e,colIndex:o}})},unfocus:function(){u({type:"unfocus"})},move:function(e,o){u({type:"move",payload:{rowIndex:e,colIndex:o}})},moveLeft:function(){u({type:"moveLeft"})},moveRight:function(){u({type:"moveRight"})},moveUp:function(){u({type:"moveUp"})},moveDown:function(){u({type:"moveDown"})}}}),[]);return t((function(){var e=function(e){var o=document.getElementById("table-frame"),n=e.target;n instanceof Node&&(null==o?void 0:o.contains(n))||l.unfocus()};return document.addEventListener("click",e),function(){document.removeEventListener("click",e)}}),[]),t((function(){if(r.isFocus){var e=document.getElementById(c.getTableCellId(r.rowIndex,r.colIndex));null==e||e.style.setProperty("outline-style","solid"),null==e||e.style.setProperty("outline-width","1px"),null==e||e.style.setProperty("outline-offset","-1px"),null==e||e.style.setProperty("outline-color","#9ca3af"),null==e||e.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"}),null==e||e.focus()}return function(){if(r.isFocus){var e=document.getElementById(c.getTableCellId(r.rowIndex,r.colIndex));null==e||e.style.setProperty("outline-style","none")}}}),[r]),{state:r,actions:l}}export{r as useFocusReducer};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/focus/hooks.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/focus/hooks.ts"],"sourcesContent":["import { useEffect, useMemo, useReducer } from \"react\";\nimport { TFocusReducer, TReturnFocusReducer } from \"./types\";\nimport { IdGenerator } from \"../libs\";\n\nconst reducer: TFocusReducer = (state, action) => {\n switch (action.type) {\n case \"focus\":\n if (state.isFocus) {\n return state;\n }\n\n return {\n isFocus: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"unfocus\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n isFocus: false,\n };\n case \"move\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n isFocus: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"moveLeft\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n colIndex: state.colIndex - 1,\n };\n case \"moveRight\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n colIndex: state.colIndex + 1,\n };\n case \"moveUp\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n rowIndex: state.rowIndex - 1,\n };\n case \"moveDown\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n rowIndex: state.rowIndex + 1,\n };\n }\n};\n\nexport function useFocusReducer(): TReturnFocusReducer {\n const [state, dispatch] = useReducer(reducer, {\n isFocus: false,\n });\n\n const actions = useMemo(\n () => ({\n focus: (rowIndex: number, colIndex: number) => {\n dispatch({ type: \"focus\", payload: { rowIndex, colIndex } });\n },\n unfocus: () => {\n dispatch({ type: \"unfocus\" });\n },\n move: (rowIndex: number, colIndex: number) => {\n dispatch({ type: \"move\", payload: { rowIndex, colIndex } });\n },\n moveLeft: () => {\n dispatch({ type: \"moveLeft\" });\n },\n moveRight: () => {\n dispatch({ type: \"moveRight\" });\n },\n moveUp: () => {\n dispatch({ type: \"moveUp\" });\n },\n moveDown: () => {\n dispatch({ type: \"moveDown\" });\n },\n }),\n []\n );\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(\"table-frame\");\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n actions.unfocus();\n };\n\n document.addEventListener(\"click\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"click\", onClickOutOfTable);\n };\n }, []);\n\n useEffect(() => {\n if (state.isFocus) {\n const element = document.getElementById(\n IdGenerator.getTableCellId(state.rowIndex, state.colIndex)\n );\n element?.style.setProperty(\"outline-style\", \"solid\");\n element?.style.setProperty(\"outline-width\", \"1px\");\n element?.style.setProperty(\"outline-offset\", \"-1px\");\n element?.style.setProperty(\"outline-color\", \"#9ca3af\");\n\n element?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n element?.focus();\n }\n\n return () => {\n if (state.isFocus) {\n const element = document.getElementById(\n IdGenerator.getTableCellId(state.rowIndex, state.colIndex)\n );\n element?.style.setProperty(\"outline-style\", \"none\");\n }\n };\n }, [state]);\n\n return {\n state,\n actions,\n };\n}\n"],"names":["reducer","state","action","type","isFocus","rowIndex","payload","colIndex","__assign","useFocusReducer","_a","useReducer","dispatch","actions","useMemo","focus","unfocus","move","moveLeft","moveRight","moveUp","moveDown","useEffect","onClickOutOfTable","e","element","document","getElementById","ele","target","Node","contains","addEventListener","removeEventListener","IdGenerator","getTableCellId","style","setProperty","scrollIntoView","behavior","block","inline"],"mappings":"yLAIA,IAAMA,EAAyB,SAACC,EAAOC,GACrC,OAAQA,EAAOC,MACb,IAAK,QACH,OAAIF,EAAMG,QACDH,EAGF,CACLG,SAAS,EACTC,SAAUH,EAAOI,QAAQD,SACzBE,SAAUL,EAAOI,QAAQC,UAE7B,IAAK,UACH,OAAKN,EAAMG,QAIJ,CACLA,SAAS,GAJFH,EAMX,IAAK,OACH,OAAKA,EAAMG,QAIJ,CACLA,SAAS,EACTC,SAAUH,EAAOI,QAAQD,SACzBE,SAAUL,EAAOI,QAAQC,UANlBN,EAQX,IAAK,WACH,OAAKA,EAAMG,QAKNI,EAAAA,EAAA,CAAA,EAAAP,IACHM,SAAUN,EAAMM,SAAW,IALpBN,EAOX,IAAK,YACH,OAAKA,EAAMG,QAKNI,EAAAA,EAAA,CAAA,EAAAP,IACHM,SAAUN,EAAMM,SAAW,IALpBN,EAOX,IAAK,SACH,OAAKA,EAAMG,QAKNI,EAAAA,EAAA,CAAA,EAAAP,IACHI,SAAUJ,EAAMI,SAAW,IALpBJ,EAOX,IAAK,WACH,OAAKA,EAAMG,QAKNI,EAAAA,EAAA,CAAA,EAAAP,IACHI,SAAUJ,EAAMI,SAAW,IALpBJ,EAQf,WAEgBQ,IACR,IAAAC,EAAoBC,EAAWX,EAAS,CAC5CI,SAAS,IADJH,EAAKS,EAAA,GAAEE,OAIRC,EAAUC,GACd,WAAM,MAAC,CACLC,MAAO,SAACV,EAAkBE,GACxBK,EAAS,CAAET,KAAM,QAASG,QAAS,CAAED,WAAUE,aAChD,EACDS,QAAS,WACPJ,EAAS,CAAET,KAAM,WAClB,EACDc,KAAM,SAACZ,EAAkBE,GACvBK,EAAS,CAAET,KAAM,OAAQG,QAAS,CAAED,WAAUE,aAC/C,EACDW,SAAU,WACRN,EAAS,CAAET,KAAM,YAClB,EACDgB,UAAW,WACTP,EAAS,CAAET,KAAM,aAClB,EACDiB,OAAQ,WACNR,EAAS,CAAET,KAAM,UAClB,EACDkB,SAAU,WACRT,EAAS,CAAET,KAAM,YAClB,EArBG,GAuBN,IA8CF,OA3CAmB,GAAU,WACR,IAAMC,EAAoB,SAACC,GACzB,IAAMC,EAAUC,SAASC,eAAe,eAClCC,EAAMJ,EAAEK,OACVD,aAAeE,OAAQL,aAAA,EAAAA,EAASM,SAASH,KAC7Cf,EAAQG,SACV,EAIA,OAFAU,SAASM,iBAAiB,QAAST,GAE5B,WACLG,SAASO,oBAAoB,QAASV,EACxC,CACD,GAAE,IAEHD,GAAU,WACR,GAAIrB,EAAMG,QAAS,CACjB,IAAMqB,EAAUC,SAASC,eACvBO,EAAYC,eAAelC,EAAMI,SAAUJ,EAAMM,WAEnDkB,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,SAC5CZ,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,OAC5CZ,SAAAA,EAASW,MAAMC,YAAY,iBAAkB,QAC7CZ,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,WAE5CZ,SAAAA,EAASa,eAAe,CACtBC,SAAU,SACVC,MAAO,UACPC,OAAQ,YAEVhB,SAAAA,EAASV,OACV,CAED,OAAO,WACL,GAAId,EAAMG,QAAS,CACjB,IAAMqB,EAAUC,SAASC,eACvBO,EAAYC,eAAelC,EAAMI,SAAUJ,EAAMM,WAEnDkB,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,OAC7C,CACH,CACF,GAAG,CAACpC,IAEG,CACLA,MAAKA,EACLY,QAAOA,EAEX"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__assign as o}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as n}from"react/jsx-runtime";import{createContext as
|
|
1
|
+
import{__assign as o}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as n}from"react/jsx-runtime";import{createContext as t,useContext as r}from"react";import{useFocusReducer as i}from"./hooks.js";var e=t({isFocus:!1}),u=t({focus:function(){},unfocus:function(){},move:function(){},moveLeft:function(){},moveRight:function(){},moveUp:function(){},moveDown:function(){}});function c(o){var t=i(),r=t.state,c=t.actions;return n(e.Provider,{value:r,children:n(u.Provider,{value:c,children:o.children})})}function f(){return r(e)}function m(){return r(u)}function s(){return o(o({},f()),m())}export{c as FocusProvider,m as useFocusActionContext,s as useFocusContext,f as useFocusStateContext};
|
|
2
2
|
//# sourceMappingURL=provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sources":["../../../../../src/table/focus/provider.tsx"],"sourcesContent":["import { createContext, useContext
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../src/table/focus/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TFocusActionContext, TFocusStateContext } from \"./types\";\nimport { useFocusReducer } from \"./hooks\";\n\nconst FocusStateContext = createContext<TFocusStateContext>({\n isFocus: false,\n});\n\nconst FocusActionContext = createContext<TFocusActionContext>({\n focus: () => {},\n unfocus: () => {},\n move: () => {},\n moveLeft: () => {},\n moveRight: () => {},\n moveUp: () => {},\n moveDown: () => {},\n});\n\nexport function FocusProvider(props: { children: React.ReactNode }) {\n const { state, actions } = useFocusReducer();\n\n return (\n <FocusStateContext.Provider value={state}>\n <FocusActionContext.Provider value={actions}>\n {props.children}\n </FocusActionContext.Provider>\n </FocusStateContext.Provider>\n );\n}\n\nexport function useFocusStateContext() {\n return useContext(FocusStateContext);\n}\n\nexport function useFocusActionContext() {\n return useContext(FocusActionContext);\n}\n\nexport function useFocusContext() {\n return { ...useFocusStateContext(), ...useFocusActionContext() };\n}\n"],"names":["FocusStateContext","createContext","isFocus","FocusActionContext","focus","unfocus","move","moveLeft","moveRight","moveUp","moveDown","FocusProvider","props","_a","useFocusReducer","state","actions","_jsx","Provider","value","children","useFocusStateContext","useContext","useFocusActionContext","useFocusContext","__assign"],"mappings":"+MAIA,IAAMA,EAAoBC,EAAkC,CAC1DC,SAAS,IAGLC,EAAqBF,EAAmC,CAC5DG,MAAO,WAAQ,EACfC,QAAS,WAAQ,EACjBC,KAAM,WAAQ,EACdC,SAAU,WAAQ,EAClBC,UAAW,WAAQ,EACnBC,OAAQ,WAAQ,EAChBC,SAAU,WAAQ,IAGd,SAAUC,EAAcC,GACtB,IAAAC,EAAqBC,IAAnBC,EAAKF,EAAAE,MAAEC,EAAOH,EAAAG,QAEtB,OACEC,EAACjB,EAAkBkB,UAASC,MAAOJ,EAAKK,SACtCH,EAACd,EAAmBe,SAAQ,CAACC,MAAOH,EAAOI,SACxCR,EAAMQ,YAIf,UAEgBC,IACd,OAAOC,EAAWtB,EACpB,UAEgBuB,IACd,OAAOD,EAAWnB,EACpB,UAEgBqB,IACd,OAAAC,EAAAA,EAAA,CAAA,EAAYJ,KAA2BE,IACzC"}
|
|
@@ -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 \"../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,OAAkB,IAAdE,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
|
+
{"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,OAAkB,IAAdE,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,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var e={getTableCellId:function(e,t){return"table-cell-".concat(e,"-").concat(t)},getCellIndex:function(e){var t=e.split("-");t[0],t[1];var l=t[2],n=t[3];return[Number(l),Number(n)]},getTableColId:function(e){return"table-col-".concat(e)}};export{e as IdGenerator};
|
|
2
2
|
//# sourceMappingURL=id-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id-generator.js","sources":["../../../../../src/table/libs/id-generator.ts"],"sourcesContent":["export const IdGenerator = {\n getTableCellId: (rowIndex: number, columnIndex: number) =>\n `table-cell-${rowIndex}-${columnIndex}`,\n getTableColId: (columnIndex: number) => `table-col-${columnIndex}`,\n};\n"],"names":["IdGenerator","getTableCellId","rowIndex","columnIndex","concat","getTableColId"],"mappings":"AAAa,IAAAA,EAAc,CACzBC,eAAgB,SAACC,EAAkBC,GACjC,MAAA,cAAcC,OAAAF,EAAY,KAAAE,OAAAD,EAAa,EACzCE,cAAe,
|
|
1
|
+
{"version":3,"file":"id-generator.js","sources":["../../../../../src/table/libs/id-generator.ts"],"sourcesContent":["export const IdGenerator = {\n getTableCellId: (rowIndex: number, columnIndex: number) =>\n `table-cell-${rowIndex}-${columnIndex}`,\n getCellIndex: (id: string) => {\n const [_t, _c, rowIndex, columnIndex] = id.split(\"-\");\n return [Number(rowIndex), Number(columnIndex)];\n },\n getTableColId: (columnIndex: number) => `table-col-${columnIndex}`,\n};\n"],"names":["IdGenerator","getTableCellId","rowIndex","columnIndex","concat","getCellIndex","id","_a","split","Number","getTableColId"],"mappings":"AAAa,IAAAA,EAAc,CACzBC,eAAgB,SAACC,EAAkBC,GACjC,MAAA,cAAcC,OAAAF,EAAY,KAAAE,OAAAD,EAAa,EACzCE,aAAc,SAACC,GACP,IAAAC,EAAkCD,EAAGE,MAAM,eAAlC,IAAAN,OAAUC,OACzB,MAAO,CAACM,OAAOP,GAAWO,OAAON,GAClC,EACDO,cAAe,SAACP,GAAwB,MAAA,aAAaC,OAAAD,EAAa"}
|
|
@@ -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 \"../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,GACKJ,GAAK,CACRK,YAAa,EACbC,SAAUL,EAAOM,QAAQD,WAPpBF,EAAAA,EAAA,CAAA,EAAAJ,IACHM,SAAUL,EAAOM,QAAQD,WAQ/B,IAAK,aACH,MAA+B,QAA3BL,EAAOM,QAAQC,QACV,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,GAIPH,EAAMG,OASXC,EAAAA,EAAA,GACKJ,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,EAIJI,EAAAA,EAAA,CAAA,EAAAJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAIe,IAAtBH,EAAMK,YACDL,EAIJI,EAAAA,EAAA,CAAA,EAAAJ,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,EAIJI,EAAAA,EAAA,CAAA,EAAAJ,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,OACtE,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
|
+
{"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,GACKJ,GAAK,CACRK,YAAa,EACbC,SAAUL,EAAOM,QAAQD,WAPpBF,EAAAA,EAAA,CAAA,EAAAJ,IACHM,SAAUL,EAAOM,QAAQD,WAQ/B,IAAK,aACH,MAA+B,QAA3BL,EAAOM,QAAQC,QACV,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,GAIPH,EAAMG,OASXC,EAAAA,EAAA,GACKJ,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,EAIJI,EAAAA,EAAA,CAAA,EAAAJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAIe,IAAtBH,EAAMK,YACDL,EAIJI,EAAAA,EAAA,CAAA,EAAAJ,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,EAIJI,EAAAA,EAAA,CAAA,EAAAJ,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,OACtE,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{jsxs as
|
|
1
|
+
import{jsxs as r,jsx as o}from"react/jsx-runtime";import{memo as t}from"react";import{useFocusActionContext as e}from"../focus/provider.js";import{Checkbox as i}from"../checkbox/components.js";import{TableCell as a}from"../cell/ui/cell.js";import{IdGenerator as n}from"../libs/id-generator.js";var l=t((function(t){var l=e().unfocus,c=JSON.parse(t.dataString),s=t.conditionalFormattingString.split(",");return r("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ".concat(t.onClickRow?"hover:cursor-pointer":""," ").concat(t.applyRowFormatting?t.applyRowFormatting(c):""),onClick:function(r){r.preventDefault(),t.onClickRow&&(t.onClickRow(c),l())},"data-testid":c.id,children:[t.existCheckbox&&o("td",{children:o(i,{row:c})}),t.cols.map((function(r,e){var i;return o(a,{id:n.getTableCellId(t.rowIndex,e),row:c,isExistOnClickRow:!!t.onClickRow,cellFormatClassName:s[e],editable:null!==(i=r.editable)&&void 0!==i&&i},r.key)}))]})}));export{l as Row};
|
|
2
2
|
//# sourceMappingURL=components.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\n\ninterface TPropsRow<T extends DataRecord> {\n dataString: string;\n cols: TTableColumn<T>[];\n existCheckbox?: boolean;\n rowIndex: number;\n conditionalFormattingString: string;\n onClickRow?: (row: any) => void;\n applyRowFormatting?: (row: any) => string;\n
|
|
1
|
+
{"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\nimport { IdGenerator } from \"../libs\";\n\ninterface TPropsRow<T extends DataRecord> {\n dataString: string;\n cols: TTableColumn<T>[];\n existCheckbox?: boolean;\n rowIndex: number;\n conditionalFormattingString: string;\n onClickRow?: (row: any) => void;\n applyRowFormatting?: (row: any) => string;\n}\n\nexport const Row = memo(function R<T extends DataRecord>(props: TPropsRow<T>) {\n const { unfocus } = useFocusActionContext();\n const row = JSON.parse(props.dataString);\n const conditionalFormatting = props.conditionalFormattingString.split(\",\");\n\n return (\n <tr\n className={`relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ${\n !!props.onClickRow ? \"hover:cursor-pointer\" : \"\"\n } ${props.applyRowFormatting ? props.applyRowFormatting(row) : \"\"}`}\n onClick={(e) => {\n e.preventDefault();\n\n if (!!props.onClickRow) {\n props.onClickRow(row);\n unfocus();\n }\n }}\n data-testid={row.id}\n >\n {props.existCheckbox && (\n <td>\n <Checkbox row={row} />\n </td>\n )}\n {props.cols.map((col, j) => {\n return (\n <TableCell\n key={col.key as string}\n id={IdGenerator.getTableCellId(props.rowIndex, j)}\n row={row}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n editable={col.editable ?? false}\n />\n );\n })}\n </tr>\n );\n});\n"],"names":["Row","memo","props","unfocus","useFocusActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","_jsx","Checkbox","cols","map","col","j","TableCell","IdGenerator","getTableCellId","rowIndex","isExistOnClickRow","cellFormatClassName","editable","_a","key"],"mappings":"0SAiBaA,EAAMC,GAAK,SAAiCC,GAC/C,IAAAC,EAAYC,YACdC,EAAMC,KAAKC,MAAML,EAAMM,YACvBC,EAAwBP,EAAMQ,4BAA4BC,MAAM,KAEtE,OACEC,EACE,KAAA,CAAAC,UAAW,0JACTC,OAAEZ,EAAMa,WAAa,uBAAyB,GAC5C,KAAAD,OAAAZ,EAAMc,mBAAqBd,EAAMc,mBAAmBX,GAAO,IAC/DY,QAAS,SAACC,GACRA,EAAEC,iBAEIjB,EAAMa,aACVb,EAAMa,WAAWV,GACjBF,IAEH,EACY,cAAAE,EAAIe,GAEhBC,SAAA,CAAAnB,EAAMoB,eACLC,EACE,KAAA,CAAAF,SAAAE,EAACC,EAAS,CAAAnB,IAAKA,MAGlBH,EAAMuB,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEL,EAACM,EAAS,CAERT,GAAIU,EAAYC,eAAe7B,EAAM8B,SAAUJ,GAC/CvB,IAAKA,EACL4B,oBAAqB/B,EAAMa,WAC3BmB,oBAAqBzB,EAAsBmB,GAC3CO,SAAsB,UAAZR,EAAIQ,gBAAQ,IAAAC,GAAAA,GALjBT,EAAIU,UAWrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject, DataRecord } from \"../type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return {\n key: action.payload.key,\n asc: true,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n case \"changeOrder\":\n if (state.isUpdatedData) {\n return {\n ...state,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n } else {\n return { ...state, asc: !state.asc, sortTiming: state.sortTiming + 1 };\n }\n case \"updateData\":\n return { ...state, isUpdatedData: true };\n }\n};\n\nexport function useSortReducer<T extends DataRecord>(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer<T> {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n isUpdatedData: false,\n sortTiming: 0,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const updatedData = () => {\n dispatch({ type: \"updateData\" });\n };\n\n const sort = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]) =>\n [...rows].sort((a, b) => {\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\n }),\n [state.key, state.asc]\n );\n\n const stateExcludeSortTiming = useMemo(\n () => ({\n key: state.key,\n asc: state.asc,\n isUpdatedData: state.isUpdatedData,\n }),\n [state.key, state.asc, state.isUpdatedData]\n );\n\n const actions = useMemo(\n () => ({ changeKey, changeOrder, updatedData, sort }),\n [sort]\n );\n\n return {\n state: stateExcludeSortTiming,\n actions,\n sortTiming: state.sortTiming,\n };\n}\n"],"names":["reducer","state","action","type","key","payload","asc","isUpdatedData","sortTiming","__assign","useSortReducer","initial","_c","useReducer","_a","_b","dispatch","changeKey","changeOrder","updatedData","sort","useCallback","rows","__spreadArray","a","b","useMemo","actions"],"mappings":"wJAIA,IAAMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CACLC,IAAKF,EAAOG,QAAQD,IACpBE,KAAK,EACLC,eAAe,EACfC,WAAYP,EAAMO,WAAa,GAEnC,IAAK,cACH,OAAIP,EAAMM,cACRE,EAAAA,EAAA,GACKR,GAAK,CACRM,eAAe,EACfC,WAAYP,EAAMO,WAAa,IAGjCC,EAAAA,EAAA,CAAA,EAAYR,GAAO,CAAAK,KAAML,EAAMK,IAAKE,WAAYP,EAAMO,WAAa,IAEvE,IAAK,aACH,OAAAC,EAAAA,EAAA,GAAYR,GAAK,CAAEM,eAAe,IAExC,EAEM,SAAUG,EAAqCC,WAI7CC,EAAoBC,EAAWb,EAAS,CAC5CI,IAAiB,QAAZU,EAAAH,eAAAA,EAASP,WAAG,IAAAU,EAAAA,EAAI,KACrBR,IAAiB,QAAZS,EAAAJ,eAAAA,EAASL,WAAG,IAAAS,GAAAA,EACjBR,eAAe,EACfC,WAAY,IAJPP,EAAKW,EAAA,GAAEI,OAORC,EAAY,SAACb,GACjBY,EAAS,CAAEb,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAEMc,EAAc,WAClBF,EAAS,CAAEb,KAAM,eACnB,EAEMgB,EAAc,WAClBH,EAAS,CAAEb,KAAM,cACnB,EAEMiB,EAAOC,GACX,SAAuBC,GACrB,OAAAC,EAAA,GAAID,GAAM,GAAAF,MAAK,SAACI,EAAGC,GACjB,OAAID,EAAEvB,EAAMG,KAAOqB,EAAExB,EAAMG,KAClBH,EAAMK,KAAO,EAAI,EAEtBkB,EAAEvB,EAAMG,KAAOqB,EAAExB,EAAMG,KAClBH,EAAMK,IAAM,GAAK,EAEnB,CACT,GAAE,GACJ,CAACL,EAAMG,IAAKH,EAAMK,MAiBpB,MAAO,CACLL,MAf6ByB,GAC7B,WAAM,MAAC,CACLtB,IAAKH,EAAMG,IACXE,IAAKL,EAAMK,IACXC,cAAeN,EAAMM,cACrB,GACF,CAACN,EAAMG,IAAKH,EAAMK,IAAKL,EAAMM,gBAU7BoB,QAPcD,GACd,WAAM,MAAC,CAAET,UAASA,EAAEC,YAAWA,EAAEC,YAAWA,EAAEC,KAAIA,EAAG,GACrD,CAACA,IAMDZ,WAAYP,EAAMO,WAEtB"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return {\n key: action.payload.key,\n asc: true,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n case \"changeOrder\":\n if (state.isUpdatedData) {\n return {\n ...state,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n } else {\n return { ...state, asc: !state.asc, sortTiming: state.sortTiming + 1 };\n }\n case \"updateData\":\n return { ...state, isUpdatedData: true };\n }\n};\n\nexport function useSortReducer<T extends DataRecord>(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer<T> {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n isUpdatedData: false,\n sortTiming: 0,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const updatedData = () => {\n dispatch({ type: \"updateData\" });\n };\n\n const sort = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]) =>\n [...rows].sort((a, b) => {\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\n }),\n [state.key, state.asc]\n );\n\n const stateExcludeSortTiming = useMemo(\n () => ({\n key: state.key,\n asc: state.asc,\n isUpdatedData: state.isUpdatedData,\n }),\n [state.key, state.asc, state.isUpdatedData]\n );\n\n const actions = useMemo(\n () => ({ changeKey, changeOrder, updatedData, sort }),\n [sort]\n );\n\n return {\n state: stateExcludeSortTiming,\n actions,\n sortTiming: state.sortTiming,\n };\n}\n"],"names":["reducer","state","action","type","key","payload","asc","isUpdatedData","sortTiming","__assign","useSortReducer","initial","_c","useReducer","_a","_b","dispatch","changeKey","changeOrder","updatedData","sort","useCallback","rows","__spreadArray","a","b","useMemo","actions"],"mappings":"wJAIA,IAAMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CACLC,IAAKF,EAAOG,QAAQD,IACpBE,KAAK,EACLC,eAAe,EACfC,WAAYP,EAAMO,WAAa,GAEnC,IAAK,cACH,OAAIP,EAAMM,cACRE,EAAAA,EAAA,GACKR,GAAK,CACRM,eAAe,EACfC,WAAYP,EAAMO,WAAa,IAGjCC,EAAAA,EAAA,CAAA,EAAYR,GAAO,CAAAK,KAAML,EAAMK,IAAKE,WAAYP,EAAMO,WAAa,IAEvE,IAAK,aACH,OAAAC,EAAAA,EAAA,GAAYR,GAAK,CAAEM,eAAe,IAExC,EAEM,SAAUG,EAAqCC,WAI7CC,EAAoBC,EAAWb,EAAS,CAC5CI,IAAiB,QAAZU,EAAAH,eAAAA,EAASP,WAAG,IAAAU,EAAAA,EAAI,KACrBR,IAAiB,QAAZS,EAAAJ,eAAAA,EAASL,WAAG,IAAAS,GAAAA,EACjBR,eAAe,EACfC,WAAY,IAJPP,EAAKW,EAAA,GAAEI,OAORC,EAAY,SAACb,GACjBY,EAAS,CAAEb,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAEMc,EAAc,WAClBF,EAAS,CAAEb,KAAM,eACnB,EAEMgB,EAAc,WAClBH,EAAS,CAAEb,KAAM,cACnB,EAEMiB,EAAOC,GACX,SAAuBC,GACrB,OAAAC,EAAA,GAAID,GAAM,GAAAF,MAAK,SAACI,EAAGC,GACjB,OAAID,EAAEvB,EAAMG,KAAOqB,EAAExB,EAAMG,KAClBH,EAAMK,KAAO,EAAI,EAEtBkB,EAAEvB,EAAMG,KAAOqB,EAAExB,EAAMG,KAClBH,EAAMK,IAAM,GAAK,EAEnB,CACT,GAAE,GACJ,CAACL,EAAMG,IAAKH,EAAMK,MAiBpB,MAAO,CACLL,MAf6ByB,GAC7B,WAAM,MAAC,CACLtB,IAAKH,EAAMG,IACXE,IAAKL,EAAMK,IACXC,cAAeN,EAAMM,cACrB,GACF,CAACN,EAAMG,IAAKH,EAAMK,IAAKL,EAAMM,gBAU7BoB,QAPcD,GACd,WAAM,MAAC,CAAET,UAASA,EAAEC,YAAWA,EAAEC,YAAWA,EAAEC,KAAIA,EAAG,GACrD,CAACA,IAMDZ,WAAYP,EAAMO,WAEtB"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{__assign as r}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useTable as t}from"./hook.js";import{TableHeaderElement as i}from"../header/header.js";import{PagenationProvider as n}from"../pagenation/providers.js";import{DisplayRange as l,Pagenation as a}from"../pagenation/components.js";import{FilterProvider as s}from"../filter/provider.js";import{TableFilterRemoveButton as d,TableFilterForm as c}from"../filter/components.js";import"../sort/icon.js";import{SortProvider as m}from"../sort/provider.js";import{ColumnsProvider as p}from"../sheet/providers.js";import{FocusProvider as h}from"../focus/provider.js";import{CheckboxProvider as f,CheckboxStatusProvider as g}from"../checkbox/provider.js";import{AllCheckbox as u}from"../checkbox/components.js";import{IdGenerator as v}from"../libs/id-generator.js";import{EditProvider as b}from"../edit/provider.js";import{TablePropertyProvider as w}from"../table-property/provider.js";import{KeyboardSetting as x}from"../operation/components/keyboard-setting.js";import{Row as j}from"../sheet/components.js";import{PasteProvider as y,usePasteActionContext as k}from"../paste/provider.js";import{generateFormattingString as N}from"../libs/conditional-formatting.js";import{Editor as C}from"../edit/ui/editor.js";import{useFilteringColumnStateContext as R}from"../filter/hooks/selectedFilteringColumn/provider.js";function F(t){var i,l,a;return o(s,{children:o(m,{initialCondition:null===(i=t.initialCondition)||void 0===i?void 0:i.sort,children:o(n,{rowCount:t.rows.length,perPage:null===(a=null===(l=t.initialCondition)||void 0===l?void 0:l.pagenation)||void 0===a?void 0:a.rowCountPerPage,children:o(f,{checkbox:t.checkbox,children:o(g,{checkboxCount:t.rows.length,children:o(p,{cols:t.cols,errorHandler:t.errorHandler,children:o(h,{children:o(b,{children:o(w,{children:e(y,{rows:t.rows,cols:t.cols,onUpdateRowFunction:t.onUpdateRow,children:[o(x,{}),o(P,r({},t))]})})})})})})})})})})}function P(r){var n=t(r),s=n.cols,m=n.rowMaps,p=n.pageRowIds,h=R(),f=k().onPaste;return e("div",{className:"w-full",children:[o("div",{className:"flex justify-end mb-1 mr-3",children:o(d,{children:o("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),e("div",{id:"table-frame",className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:[o(C,{rowMaps:m,pageRowIds:p}),e("table",{className:"table",onPaste:function(r){r.preventDefault();var o=r.clipboardData.getData("Text");f(o.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(r){return r.split(",")})))},children:[o("thead",{children:e("tr",{className:"sticky top-0 border-gray-200 z-20 bg-gray-200 text-gray-600 h-[32px]",children:[r.checkbox&&o("th",{children:o(u,{rows:r.rows})}),s.map((function(r,e){return o(i,{id:v.getTableColId(e),col:r},r.key.toString())}))]})}),e("tbody",{children:[!!h&&o("tr",{children:o("td",{colSpan:s.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:o(c,{})})}),0===p.length&&o("tr",{children:o("td",{colSpan:s.length,className:"py-5",children:o("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),p.map((function(e,t){return o(j,{existCheckbox:!!r.checkbox,rowIndex:t,dataString:m[e].stringValue,cols:r.cols,onClickRow:r.onClickRow,applyRowFormatting:r.applyRowFormatting,conditionalFormattingString:N(m[e].data,s,r.conditionalFormattings)},e)}))]})]})]}),e("div",{className:"mt-1",children:[o(l,{}),o("div",{className:"mt-2",children:o(a,{})})]})]})}export{F as default};
|
|
3
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useMemo as r,useEffect as t}from"react";import{usePageContext as o}from"../pagenation/providers.js";import"react/jsx-runtime";import{useFilterContext as e}from"../filter/provider.js";import"../filter/constants.js";import"../sheet/providers.js";import"../filter/hooks/selectedFilteringColumn/provider.js";import{useCheckboxStatusContext as n}from"../checkbox/provider.js";import{useSortActionContext as i,useSortTimingContext as s}from"../sort/provider.js";import{useTablePropertyActionContext as c}from"../table-property/provider.js";import{usePasteActionContext as u}from"../paste/provider.js";function a(a){var p=e().filter,f=i(),l=f.sort,d=f.updatedData,m=s(),h=o(),v=h.setRowCount,g=h.pageFilter,w=n().dispatchCheckboxStatus,j=u().setRows,k=c(),x=k.setMaxDisplayColCount,b=k.setMaxDisplayRowCount,y=r((function(){return p(a.rows)}),[p,m,a.rows.length]);t((function(){v(y.length)}),[y.length]);var C=r((function(){return a.checkbox?a.rows.filter((function(r){var t;return null===(t=a.checkbox)||void 0===t?void 0:t.checked(r)})):[]}),[a.checkbox,a.rows]);t((function(){w({type:"SET",payload:{checkedRecords:C}})}),[C]);var R=r((function(){return l(y)}),[y,m]);t((function(){d()}),[a.rows]);var S=r((function(){return g(R)}),[g,R]),D=r((function(){return S.map((function(r){return r.id}))}),[S]),M=r((function(){return new Set(D)}),[D]),F=r((function(){return a.rows.filter((function(r){return M.has(r.id)})).reduce((function(r,t){var o=Object.keys(t).sort().reduce((function(r,o){return r[o]=t[o],r}),{});return r[t.id]={data:o,stringValue:JSON.stringify(o)},r}),{})}),[a.rows,M]);return t((function(){x(a.cols.length)}),[a.cols.length]),t((function(){b(D.length)}),[D.length]),t((function(){j(D.map((function(r){return F[r].data})))}),[F]),{cols:a.cols,rowMaps:F,pageRowIds:D}}export{a as useTable};
|
|
2
|
+
//# sourceMappingURL=hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.js","sources":["../../../../../src/table/table/hook.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TPropsTable } from \"./type\";\nimport { usePageContext } from \"../pagenation/providers\";\nimport { useFilterContext } from \"../filter\";\nimport { useCheckboxStatusContext } from \"../checkbox/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"../sort/provider\";\nimport { useTablePropertyActionContext } from \"../table-property/provider\";\nimport { usePasteActionContext } from \"../paste/provider\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows } = usePasteActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n setRows(pageRowIds.map((id) => rowMaps[id].data));\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n"],"names":["useTable","props","filter","useFilterContext","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","usePasteActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","row","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols"],"mappings":"0lBASM,SAAUA,EAA+BC,GACrC,IAAAC,EAAWC,WACbC,EAAwBC,IAAtBC,EAAIF,EAAAE,KAAEC,EAAWH,EAAAG,YACnBC,EAAaC,IACbC,EAA8BC,IAA5BC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WACvBC,EAA2BC,2BAC3BC,EAAYC,YACdC,EACJC,IADMC,EAAqBF,EAAAE,sBAAEC,EAAqBH,EAAAG,sBAG9CC,EAAeC,GACnB,WAAM,OAAArB,EAAOD,EAAMuB,KAAK,GACxB,CAACtB,EAAQM,EAAYP,EAAMuB,KAAKC,SAGlCC,GAAU,WACRd,EAAYU,EAAaG,OAC3B,GAAG,CAACH,EAAaG,SAEjB,IAAME,EAAaJ,GAAQ,WACzB,OAAKtB,EAAM2B,SAIJ3B,EAAMuB,KAAKtB,QAAO,SAAC2B,GAAG,IAAAzB,EAAK,eAAAA,EAAAH,EAAM2B,+BAAUE,QAAQD,EAAI,IAHrD,EAIV,GAAE,CAAC5B,EAAM2B,SAAU3B,EAAMuB,OAE1BE,GAAU,WACRZ,EAAuB,CACrBiB,KAAM,MACNC,QAAS,CAAEC,eAAgBN,IAE/B,GAAG,CAACA,IAEJ,IAAMO,EAAaX,GACjB,WAAM,OAAAjB,EAAKgB,KACX,CAACA,EAAcd,IAGjBkB,GAAU,WACRnB,GACF,GAAG,CAACN,EAAMuB,OAEV,IAAMW,EAAWZ,GACf,WAAM,OAAAV,EAAWqB,KACjB,CAACrB,EAAYqB,IAGTE,EAAab,GAAQ,WAAM,OAAAY,EAASE,KAAI,SAACR,GAAQ,OAAAA,EAAIS,EAAE,GAAC,GAAE,CAACH,IAC3DI,EAAgBhB,GAAQ,WAAM,OAAA,IAAIiB,IAAIJ,EAAW,GAAE,CAACA,IAEpDK,EAAUlB,GACd,WACE,OAAAtB,EAAMuB,KACHtB,QAAO,SAAC2B,GAAQ,OAAAU,EAAcG,IAAIb,EAAIS,OACtCK,QAAO,SAACC,EAAKf,GACZ,IAAMgB,EAAiBC,OAAOC,KAAKlB,GAChCvB,OACAqC,QAAO,SAACC,EAAKI,GAEZ,OADAJ,EAAII,GAAOnB,EAAImB,GACRJ,CACR,GAAE,CAAwC,GAM7C,OAJAA,EAAIf,EAAIS,IAAM,CACZW,KAAMJ,EACNK,YAAaC,KAAKC,UAAUP,IAEvBD,CACR,GAAE,CAA+E,EAAC,GACvF,CAAC3C,EAAMuB,KAAMe,IAef,OAZAb,GAAU,WACRN,EAAsBnB,EAAMoD,KAAK5B,OAClC,GAAE,CAACxB,EAAMoD,KAAK5B,SAEfC,GAAU,WACRL,EAAsBe,EAAWX,OACnC,GAAG,CAACW,EAAWX,SAEfC,GAAU,WACRV,EAAQoB,EAAWC,KAAI,SAACC,GAAO,OAAAG,EAAQH,GAAIW,QAC7C,GAAG,CAACR,IAEG,CACLY,KAAMpD,EAAMoD,KACZZ,QAAOA,EACPL,WAAUA,EAEd"}
|
package/package.json
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
"use strict";var e=require("../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),o=require("./hook.js"),i=require("./header/header.js"),t=require("./pagenation/providers.js"),s=require("./pagenation/components.js"),n=require("./filter/provider.js"),l=require("./filter/components.js");require("./sort/icon.js");var a=require("./sort/provider.js"),d=require("./sheet/providers.js"),c=require("./focus/provider.js"),u=require("./checkbox/provider.js"),x=require("./checkbox/components.js"),j=require("./libs/id-generator.js"),h=require("./edit/provider.js"),p=require("./table-property/provider.js"),g=require("./operation/components/keyboard-setting.js"),m=require("./sheet/components.js"),v=require("./paste/provider.js"),b=require("./libs/conditional-formatting.js"),w=require("./edit/ui/editor.js"),f=require("./filter/hooks/selectedFilteringColumn/provider.js");function q(e){var t=o.useTable(e),n=t.cols,a=t.rowMaps,d=t.pageRowIds,c=f.useFilteringColumnStateContext(),u=v.usePasteActionContext().onPaste;return r.jsxs("div",{className:"w-full",children:[r.jsx("div",{className:"flex justify-end mb-1 mr-3",children:r.jsx(l.TableFilterRemoveButton,{children:r.jsx("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),r.jsxs("div",{id:"table-frame",className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:[r.jsx(w.Editor,{rowMaps:a,pageRowIds:d}),r.jsxs("table",{className:"table",onPaste:function(e){e.preventDefault();var r=e.clipboardData.getData("Text");u(r.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(e){return e.split(",")})))},children:[r.jsx("thead",{children:r.jsxs("tr",{className:"sticky top-0 border-gray-200 z-20 bg-gray-200 text-gray-600 h-[32px]",children:[e.checkbox&&r.jsx("th",{children:r.jsx(x.AllCheckbox,{rows:e.rows})}),n.map((function(e,o){return r.jsx(i.TableHeaderElement,{id:j.IdGenerator.getTableColId(o),col:e},e.key.toString())}))]})}),r.jsxs("tbody",{children:[!!c&&r.jsx("tr",{children:r.jsx("td",{colSpan:n.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:r.jsx(l.TableFilterForm,{})})}),0===d.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:n.length,className:"py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),d.map((function(o,i){return r.jsx(m.Row,{existCheckbox:!!e.checkbox,rowIndex:i,dataString:a[o].stringValue,cols:e.cols,onClickRow:e.onClickRow,applyRowFormatting:e.applyRowFormatting,conditionalFormattingString:b.generateFormattingString(a[o].data,n,e.conditionalFormattings),onUpdateRow:e.onUpdateRow},o)}))]})]})]}),r.jsxs("div",{className:"mt-1",children:[r.jsx(s.DisplayRange,{}),r.jsx("div",{className:"mt-2",children:r.jsx(s.Pagenation,{})})]})]})}module.exports=function(o){var i,s,l;return r.jsx(n.FilterProvider,{children:r.jsx(a.SortProvider,{initialCondition:null===(i=o.initialCondition)||void 0===i?void 0:i.sort,children:r.jsx(t.PagenationProvider,{rowCount:o.rows.length,perPage:null===(l=null===(s=o.initialCondition)||void 0===s?void 0:s.pagenation)||void 0===l?void 0:l.rowCountPerPage,children:r.jsx(u.CheckboxProvider,{checkbox:o.checkbox,children:r.jsx(u.CheckboxStatusProvider,{checkboxCount:o.rows.length,children:r.jsx(d.ColumnsProvider,{cols:o.cols,errorHandler:o.errorHandler,children:r.jsx(c.FocusProvider,{children:r.jsx(h.EditProvider,{children:r.jsx(p.TablePropertyProvider,{children:r.jsxs(v.PasteProvider,{rows:o.rows,cols:o.cols,onUpdateRowFunction:o.onUpdateRow,children:[r.jsx(g.KeyboardSetting,{}),r.jsx(q,e.__assign({},o))]})})})})})})})})})})};
|
|
3
|
-
//# sourceMappingURL=base.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("react"),t=require("./pagenation/providers.js");require("react/jsx-runtime");var r=require("./filter/provider.js");require("./filter/constants.js");var o=require("./sheet/providers.js");require("./filter/hooks/selectedFilteringColumn/provider.js");var n=require("./focus/provider.js"),u=require("./checkbox/provider.js"),i=require("./edit/provider.js"),s=require("./sort/provider.js"),c=require("./table-property/provider.js"),l=require("./paste/provider.js");exports.useCell=function(t,r,u){var s,c,l=n.useFocusActionContext(),a=i.useEditActionContext(),f=o.useColumnsContext()[r],d=u[f.key],p="select"===f.type?null===(c=null===(s=f.options)||void 0===s?void 0:s.find((function(e){return e.value===d})))||void 0===c?void 0:c.label:d,v=e.useMemo((function(){return f.editable?p:f.render?f.render(d,u):p}),[f.editable,p,d,u]);return{type:!f.editable&&f.render?"component":f.type,component:v,focusAtCell:e.useCallback((function(){l.move(t,r),l.focus(t,r)}),[l,t,r]),onDoubleClickCellToEdit:e.useCallback((function(e){e.preventDefault(),l.move(t,r),l.focus(t,r),a.startEditing()}),[l,a,t,r])}},exports.useTable=function(o){var n=r.useFilterContext().filter,i=s.useSortActionContext(),a=i.sort,f=i.updatedData,d=s.useSortTimingContext(),p=t.usePageContext(),v=p.setRowCount,C=p.pageFilter,x=u.useCheckboxStatusContext().dispatchCheckboxStatus,h=l.usePasteActionContext().setRows,m=c.useTablePropertyActionContext(),b=m.setMaxDisplayColCount,g=m.setMaxDisplayRowCount,k=e.useMemo((function(){return n(o.rows)}),[n,d,o.rows.length]);e.useEffect((function(){v(k.length)}),[k.length]);var j=e.useMemo((function(){return o.checkbox?o.rows.filter((function(e){var t;return null===(t=o.checkbox)||void 0===t?void 0:t.checked(e)})):[]}),[o.checkbox,o.rows]);e.useEffect((function(){x({type:"SET",payload:{checkedRecords:j}})}),[j]);var q=e.useMemo((function(){return a(k)}),[k,d]);e.useEffect((function(){f()}),[o.rows]);var w=e.useMemo((function(){return C(q)}),[C,q]),y=e.useMemo((function(){return w.map((function(e){return e.id}))}),[w]),M=e.useMemo((function(){return new Set(y)}),[y]),E=e.useMemo((function(){return o.rows.filter((function(e){return M.has(e.id)})).reduce((function(e,t){var r=Object.keys(t).sort().reduce((function(e,r){return e[r]=t[r],e}),{});return e[t.id]={data:r,stringValue:JSON.stringify(r)},e}),{})}),[o.rows,M]);return e.useEffect((function(){b(o.cols.length)}),[o.cols.length]),e.useEffect((function(){g(y.length)}),[y.length]),e.useEffect((function(){h(y.map((function(e){return E[e].data})))}),[E]),{cols:o.cols,rowMaps:E,pageRowIds:y}};
|
|
2
|
-
//# sourceMappingURL=hook.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TColumnType, TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useFocusActionContext } from \"./focus/provider\";\nimport { useCheckboxStatusContext } from \"./checkbox/provider\";\nimport { useEditActionContext } from \"./edit/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"./sort/provider\";\nimport { useTablePropertyActionContext } from \"./table-property/provider\";\nimport { usePasteActionContext } from \"./paste/provider\";\nimport { useColumnsContext } from \"./sheet/providers\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows } = usePasteActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n setRows(pageRowIds.map((id) => rowMaps[id].data));\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n\nexport function useCell(\n rowIndex: number,\n colIndex: number,\n row: DataObject<DataRecord>\n) {\n const focus = useFocusActionContext();\n const editAction = useEditActionContext();\n const col = useColumnsContext()[colIndex];\n const value = row[col.key as string];\n\n const label =\n col.type === \"select\"\n ? col.options?.find((op) => op.value === value)?.label\n : value;\n\n const component = useMemo(() => {\n if (col.editable) {\n return label;\n } else {\n return col.render ? col.render(value as never, row) : label;\n }\n }, [col.editable, label, value, row]);\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const focusAtCell = useCallback(() => {\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n }, [focus, rowIndex, colIndex]);\n\n const onDoubleClickCellToEdit: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n e.preventDefault();\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n editAction.startEditing();\n },\n [focus, editAction, rowIndex, colIndex]\n );\n\n return {\n type,\n component,\n focusAtCell,\n onDoubleClickCellToEdit,\n };\n}\n"],"names":["rowIndex","colIndex","row","focus","useFocusActionContext","editAction","useEditActionContext","col","useColumnsContext","value","key","label","type","_a","options","find","op","_b","component","useMemo","editable","render","focusAtCell","useCallback","move","onDoubleClickCellToEdit","e","preventDefault","startEditing","props","filter","useFilterContext","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","usePasteActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","rows","length","useEffect","checkBoxes","checkbox","checked","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","data","stringValue","JSON","stringify","cols"],"mappings":"ggBAwGEA,EACAC,EACAC,WAEMC,EAAQC,EAAAA,wBACRC,EAAaC,EAAAA,uBACbC,EAAMC,EAAAA,oBAAoBP,GAC1BQ,EAAQP,EAAIK,EAAIG,KAEhBC,EACS,WAAbJ,EAAIK,KAC6C,UAAlC,QAAXC,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGP,QAAUA,CAAb,WAAmB,IAAAQ,OAAA,EAAAA,EAAEN,MAC/CF,EAEAS,EAAYC,EAAAA,SAAQ,WACxB,OAAIZ,EAAIa,SACCT,EAEAJ,EAAIc,OAASd,EAAIc,OAAOZ,EAAgBP,GAAOS,CAE1D,GAAG,CAACJ,EAAIa,SAAUT,EAAOF,EAAOP,IAqBhC,MAAO,CACLU,MAnBCL,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIK,KAoBhDM,UAASA,EACTI,YAnBkBC,EAAAA,aAAY,WAC9BpB,EAAMqB,KAAKxB,EAAUC,GACrBE,EAAMA,MAAMH,EAAUC,EACvB,GAAE,CAACE,EAAOH,EAAUC,IAiBnBwB,wBAdAF,eACE,SAACG,GACCA,EAAEC,iBACFxB,EAAMqB,KAAKxB,EAAUC,GACrBE,EAAMA,MAAMH,EAAUC,GACtBI,EAAWuB,cACZ,GACD,CAACzB,EAAOE,EAAYL,EAAUC,IASpC,mBA3IM,SAAyC4B,GACrC,IAAAC,EAAWC,4BACblB,EAAwBmB,EAAoBA,uBAA1CC,EAAIpB,EAAAoB,KAAEC,EAAWrB,EAAAqB,YACnBC,EAAaC,EAAAA,uBACbnB,EAA8BoB,EAAcA,iBAA1CC,EAAWrB,EAAAqB,YAAEC,EAAUtB,EAAAsB,WACvBC,EAA2BC,oDAC3BC,EAAYC,kCACdC,EACJC,EAA6BA,gCADvBC,EAAqBF,EAAAE,sBAAEC,EAAqBH,EAAAG,sBAG9CC,EAAe7B,EAAAA,SACnB,WAAM,OAAAW,EAAOD,EAAMoB,KAAK,GACxB,CAACnB,EAAQK,EAAYN,EAAMoB,KAAKC,SAGlCC,EAAAA,WAAU,WACRb,EAAYU,EAAaE,OAC3B,GAAG,CAACF,EAAaE,SAEjB,IAAME,EAAajC,EAAAA,SAAQ,WACzB,OAAKU,EAAMwB,SAIJxB,EAAMoB,KAAKnB,QAAO,SAAC5B,GAAG,IAAAW,EAAK,eAAAA,EAAAgB,EAAMwB,+BAAUC,QAAQpD,EAAI,IAHrD,EAIV,GAAE,CAAC2B,EAAMwB,SAAUxB,EAAMoB,OAE1BE,EAAAA,WAAU,WACRX,EAAuB,CACrB5B,KAAM,MACN2C,QAAS,CAAEC,eAAgBJ,IAE/B,GAAG,CAACA,IAEJ,IAAMK,EAAatC,EAAAA,SACjB,WAAM,OAAAc,EAAKe,KACX,CAACA,EAAcb,IAGjBgB,EAAAA,WAAU,WACRjB,GACF,GAAG,CAACL,EAAMoB,OAEV,IAAMS,EAAWvC,EAAAA,SACf,WAAM,OAAAoB,EAAWkB,KACjB,CAAClB,EAAYkB,IAGTE,EAAaxC,EAAAA,SAAQ,WAAM,OAAAuC,EAASE,KAAI,SAAC1D,GAAQ,OAAAA,EAAI2D,EAAE,GAAC,GAAE,CAACH,IAC3DI,EAAgB3C,EAAAA,SAAQ,WAAM,OAAA,IAAI4C,IAAIJ,EAAW,GAAE,CAACA,IAEpDK,EAAU7C,EAAAA,SACd,WACE,OAAAU,EAAMoB,KACHnB,QAAO,SAAC5B,GAAQ,OAAA4D,EAAcG,IAAI/D,EAAI2D,OACtCK,QAAO,SAACC,EAAKjE,GACZ,IAAMkE,EAAiBC,OAAOC,KAAKpE,GAChC+B,OACAiC,QAAO,SAACC,EAAKzD,GAEZ,OADAyD,EAAIzD,GAAOR,EAAIQ,GACRyD,CACR,GAAE,CAAwC,GAM7C,OAJAA,EAAIjE,EAAI2D,IAAM,CACZU,KAAMH,EACNI,YAAaC,KAAKC,UAAUN,IAEvBD,CACR,GAAE,CAA+E,EAAC,GACvF,CAACtC,EAAMoB,KAAMa,IAef,OAZAX,EAAAA,WAAU,WACRL,EAAsBjB,EAAM8C,KAAKzB,OAClC,GAAE,CAACrB,EAAM8C,KAAKzB,SAEfC,EAAAA,WAAU,WACRJ,EAAsBY,EAAWT,OACnC,GAAG,CAACS,EAAWT,SAEfC,EAAAA,WAAU,WACRT,EAAQiB,EAAWC,KAAI,SAACC,GAAO,OAAAG,EAAQH,GAAIU,QAC7C,GAAG,CAACP,IAEG,CACLW,KAAM9C,EAAM8C,KACZX,QAAOA,EACPL,WAAUA,EAEd"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import{__assign as o}from"../../node_modules/tslib/tslib.es6.js";import{jsx as r,jsxs as e}from"react/jsx-runtime";import{useTable as t}from"./hook.js";import{TableHeaderElement as i}from"./header/header.js";import{PagenationProvider as n}from"./pagenation/providers.js";import{DisplayRange as l,Pagenation as a}from"./pagenation/components.js";import{FilterProvider as d}from"./filter/provider.js";import{TableFilterRemoveButton as s,TableFilterForm as c}from"./filter/components.js";import"./sort/icon.js";import{SortProvider as m}from"./sort/provider.js";import{ColumnsProvider as p}from"./sheet/providers.js";import{FocusProvider as h}from"./focus/provider.js";import{CheckboxProvider as f,CheckboxStatusProvider as g}from"./checkbox/provider.js";import{AllCheckbox as u}from"./checkbox/components.js";import{IdGenerator as v}from"./libs/id-generator.js";import{EditProvider as b}from"./edit/provider.js";import{TablePropertyProvider as w}from"./table-property/provider.js";import{KeyboardSetting as x}from"./operation/components/keyboard-setting.js";import{Row as j}from"./sheet/components.js";import{PasteProvider as y,usePasteActionContext as k}from"./paste/provider.js";import{generateFormattingString as N}from"./libs/conditional-formatting.js";import{Editor as C}from"./edit/ui/editor.js";import{useFilteringColumnStateContext as R}from"./filter/hooks/selectedFilteringColumn/provider.js";function F(t){var i,l,a;return r(d,{children:r(m,{initialCondition:null===(i=t.initialCondition)||void 0===i?void 0:i.sort,children:r(n,{rowCount:t.rows.length,perPage:null===(a=null===(l=t.initialCondition)||void 0===l?void 0:l.pagenation)||void 0===a?void 0:a.rowCountPerPage,children:r(f,{checkbox:t.checkbox,children:r(g,{checkboxCount:t.rows.length,children:r(p,{cols:t.cols,errorHandler:t.errorHandler,children:r(h,{children:r(b,{children:r(w,{children:e(y,{rows:t.rows,cols:t.cols,onUpdateRowFunction:t.onUpdateRow,children:[r(x,{}),r(P,o({},t))]})})})})})})})})})})}function P(o){var n=t(o),d=n.cols,m=n.rowMaps,p=n.pageRowIds,h=R(),f=k().onPaste;return e("div",{className:"w-full",children:[r("div",{className:"flex justify-end mb-1 mr-3",children:r(s,{children:r("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),e("div",{id:"table-frame",className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:[r(C,{rowMaps:m,pageRowIds:p}),e("table",{className:"table",onPaste:function(o){o.preventDefault();var r=o.clipboardData.getData("Text");f(r.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(o){return o.split(",")})))},children:[r("thead",{children:e("tr",{className:"sticky top-0 border-gray-200 z-20 bg-gray-200 text-gray-600 h-[32px]",children:[o.checkbox&&r("th",{children:r(u,{rows:o.rows})}),d.map((function(o,e){return r(i,{id:v.getTableColId(e),col:o},o.key.toString())}))]})}),e("tbody",{children:[!!h&&r("tr",{children:r("td",{colSpan:d.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:r(c,{})})}),0===p.length&&r("tr",{children:r("td",{colSpan:d.length,className:"py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),p.map((function(e,t){return r(j,{existCheckbox:!!o.checkbox,rowIndex:t,dataString:m[e].stringValue,cols:o.cols,onClickRow:o.onClickRow,applyRowFormatting:o.applyRowFormatting,conditionalFormattingString:N(m[e].data,d,o.conditionalFormattings),onUpdateRow:o.onUpdateRow},e)}))]})]})]}),e("div",{className:"mt-1",children:[r(l,{}),r("div",{className:"mt-2",children:r(a,{})})]})]})}export{F as default};
|
|
3
|
-
//# sourceMappingURL=base.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{useMemo as r,useEffect as t,useCallback as o}from"react";import{usePageContext as e}from"./pagenation/providers.js";import"react/jsx-runtime";import{useFilterContext as n}from"./filter/provider.js";import"./filter/constants.js";import{useColumnsContext as i}from"./sheet/providers.js";import"./filter/hooks/selectedFilteringColumn/provider.js";import{useFocusActionContext as u}from"./focus/provider.js";import{useCheckboxStatusContext as c}from"./checkbox/provider.js";import{useEditActionContext as s}from"./edit/provider.js";import{useSortActionContext as f,useSortTimingContext as l}from"./sort/provider.js";import{useTablePropertyActionContext as p}from"./table-property/provider.js";import{usePasteActionContext as a}from"./paste/provider.js";function d(o){var i=n().filter,u=f(),s=u.sort,d=u.updatedData,m=l(),v=e(),h=v.setRowCount,g=v.pageFilter,j=c().dispatchCheckboxStatus,w=a().setRows,b=p(),k=b.setMaxDisplayColCount,y=b.setMaxDisplayRowCount,x=r((function(){return i(o.rows)}),[i,m,o.rows.length]);t((function(){h(x.length)}),[x.length]);var C=r((function(){return o.checkbox?o.rows.filter((function(r){var t;return null===(t=o.checkbox)||void 0===t?void 0:t.checked(r)})):[]}),[o.checkbox,o.rows]);t((function(){j({type:"SET",payload:{checkedRecords:C}})}),[C]);var D=r((function(){return s(x)}),[x,m]);t((function(){d()}),[o.rows]);var R=r((function(){return g(D)}),[g,D]),S=r((function(){return R.map((function(r){return r.id}))}),[R]),E=r((function(){return new Set(S)}),[S]),M=r((function(){return o.rows.filter((function(r){return E.has(r.id)})).reduce((function(r,t){var o=Object.keys(t).sort().reduce((function(r,o){return r[o]=t[o],r}),{});return r[t.id]={data:o,stringValue:JSON.stringify(o)},r}),{})}),[o.rows,E]);return t((function(){k(o.cols.length)}),[o.cols.length]),t((function(){y(S.length)}),[S.length]),t((function(){w(S.map((function(r){return M[r].data})))}),[M]),{cols:o.cols,rowMaps:M,pageRowIds:S}}function m(t,e,n){var c,f,l=u(),p=s(),a=i()[e],d=n[a.key],m="select"===a.type?null===(f=null===(c=a.options)||void 0===c?void 0:c.find((function(r){return r.value===d})))||void 0===f?void 0:f.label:d,v=r((function(){return a.editable?m:a.render?a.render(d,n):m}),[a.editable,m,d,n]);return{type:!a.editable&&a.render?"component":a.type,component:v,focusAtCell:o((function(){l.move(t,e),l.focus(t,e)}),[l,t,e]),onDoubleClickCellToEdit:o((function(r){r.preventDefault(),l.move(t,e),l.focus(t,e),p.startEditing()}),[l,p,t,e])}}export{m as useCell,d as useTable};
|
|
2
|
-
//# sourceMappingURL=hook.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TColumnType, TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useFocusActionContext } from \"./focus/provider\";\nimport { useCheckboxStatusContext } from \"./checkbox/provider\";\nimport { useEditActionContext } from \"./edit/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"./sort/provider\";\nimport { useTablePropertyActionContext } from \"./table-property/provider\";\nimport { usePasteActionContext } from \"./paste/provider\";\nimport { useColumnsContext } from \"./sheet/providers\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows } = usePasteActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n setRows(pageRowIds.map((id) => rowMaps[id].data));\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n\nexport function useCell(\n rowIndex: number,\n colIndex: number,\n row: DataObject<DataRecord>\n) {\n const focus = useFocusActionContext();\n const editAction = useEditActionContext();\n const col = useColumnsContext()[colIndex];\n const value = row[col.key as string];\n\n const label =\n col.type === \"select\"\n ? col.options?.find((op) => op.value === value)?.label\n : value;\n\n const component = useMemo(() => {\n if (col.editable) {\n return label;\n } else {\n return col.render ? col.render(value as never, row) : label;\n }\n }, [col.editable, label, value, row]);\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const focusAtCell = useCallback(() => {\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n }, [focus, rowIndex, colIndex]);\n\n const onDoubleClickCellToEdit: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n e.preventDefault();\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n editAction.startEditing();\n },\n [focus, editAction, rowIndex, colIndex]\n );\n\n return {\n type,\n component,\n focusAtCell,\n onDoubleClickCellToEdit,\n };\n}\n"],"names":["useTable","props","filter","useFilterContext","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","usePasteActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","row","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols","useCell","rowIndex","colIndex","focus","useFocusActionContext","editAction","useEditActionContext","col","useColumnsContext","value","label","options","find","op","component","editable","render","focusAtCell","useCallback","move","onDoubleClickCellToEdit","e","preventDefault","startEditing"],"mappings":"ovBAYM,SAAUA,EAA+BC,GACrC,IAAAC,EAAWC,WACbC,EAAwBC,IAAtBC,EAAIF,EAAAE,KAAEC,EAAWH,EAAAG,YACnBC,EAAaC,IACbC,EAA8BC,IAA5BC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WACvBC,EAA2BC,2BAC3BC,EAAYC,YACdC,EACJC,IADMC,EAAqBF,EAAAE,sBAAEC,EAAqBH,EAAAG,sBAG9CC,EAAeC,GACnB,WAAM,OAAArB,EAAOD,EAAMuB,KAAK,GACxB,CAACtB,EAAQM,EAAYP,EAAMuB,KAAKC,SAGlCC,GAAU,WACRd,EAAYU,EAAaG,OAC3B,GAAG,CAACH,EAAaG,SAEjB,IAAME,EAAaJ,GAAQ,WACzB,OAAKtB,EAAM2B,SAIJ3B,EAAMuB,KAAKtB,QAAO,SAAC2B,GAAG,IAAAzB,EAAK,eAAAA,EAAAH,EAAM2B,+BAAUE,QAAQD,EAAI,IAHrD,EAIV,GAAE,CAAC5B,EAAM2B,SAAU3B,EAAMuB,OAE1BE,GAAU,WACRZ,EAAuB,CACrBiB,KAAM,MACNC,QAAS,CAAEC,eAAgBN,IAE/B,GAAG,CAACA,IAEJ,IAAMO,EAAaX,GACjB,WAAM,OAAAjB,EAAKgB,KACX,CAACA,EAAcd,IAGjBkB,GAAU,WACRnB,GACF,GAAG,CAACN,EAAMuB,OAEV,IAAMW,EAAWZ,GACf,WAAM,OAAAV,EAAWqB,KACjB,CAACrB,EAAYqB,IAGTE,EAAab,GAAQ,WAAM,OAAAY,EAASE,KAAI,SAACR,GAAQ,OAAAA,EAAIS,EAAE,GAAC,GAAE,CAACH,IAC3DI,EAAgBhB,GAAQ,WAAM,OAAA,IAAIiB,IAAIJ,EAAW,GAAE,CAACA,IAEpDK,EAAUlB,GACd,WACE,OAAAtB,EAAMuB,KACHtB,QAAO,SAAC2B,GAAQ,OAAAU,EAAcG,IAAIb,EAAIS,OACtCK,QAAO,SAACC,EAAKf,GACZ,IAAMgB,EAAiBC,OAAOC,KAAKlB,GAChCvB,OACAqC,QAAO,SAACC,EAAKI,GAEZ,OADAJ,EAAII,GAAOnB,EAAImB,GACRJ,CACR,GAAE,CAAwC,GAM7C,OAJAA,EAAIf,EAAIS,IAAM,CACZW,KAAMJ,EACNK,YAAaC,KAAKC,UAAUP,IAEvBD,CACR,GAAE,CAA+E,EAAC,GACvF,CAAC3C,EAAMuB,KAAMe,IAef,OAZAb,GAAU,WACRN,EAAsBnB,EAAMoD,KAAK5B,OAClC,GAAE,CAACxB,EAAMoD,KAAK5B,SAEfC,GAAU,WACRL,EAAsBe,EAAWX,OACnC,GAAG,CAACW,EAAWX,SAEfC,GAAU,WACRV,EAAQoB,EAAWC,KAAI,SAACC,GAAO,OAAAG,EAAQH,GAAIW,QAC7C,GAAG,CAACR,IAEG,CACLY,KAAMpD,EAAMoD,KACZZ,QAAOA,EACPL,WAAUA,EAEd,UAEgBkB,EACdC,EACAC,EACA3B,WAEM4B,EAAQC,IACRC,EAAaC,IACbC,EAAMC,IAAoBN,GAC1BO,EAAQlC,EAAIgC,EAAIb,KAEhBgB,EACS,WAAbH,EAAI9B,KAC6C,UAAlC,QAAX3B,EAAAyD,EAAII,eAAO,IAAA7D,OAAA,EAAAA,EAAE8D,MAAK,SAACC,GAAO,OAAAA,EAAGJ,QAAUA,CAAb,WAAmB,IAAArD,OAAA,EAAAA,EAAEsD,MAC/CD,EAEAK,EAAY7C,GAAQ,WACxB,OAAIsC,EAAIQ,SACCL,EAEAH,EAAIS,OAAST,EAAIS,OAAOP,EAAgBlC,GAAOmC,CAE1D,GAAG,CAACH,EAAIQ,SAAUL,EAAOD,EAAOlC,IAqBhC,MAAO,CACLE,MAnBC8B,EAAIQ,UAAYR,EAAIS,OAAS,YAAcT,EAAI9B,KAoBhDqC,UAASA,EACTG,YAnBkBC,GAAY,WAC9Bf,EAAMgB,KAAKlB,EAAUC,GACrBC,EAAMA,MAAMF,EAAUC,EACvB,GAAE,CAACC,EAAOF,EAAUC,IAiBnBkB,wBAdAF,GACE,SAACG,GACCA,EAAEC,iBACFnB,EAAMgB,KAAKlB,EAAUC,GACrBC,EAAMA,MAAMF,EAAUC,GACtBG,EAAWkB,cACZ,GACD,CAACpB,EAAOE,EAAYJ,EAAUC,IASpC"}
|
|
File without changes
|
|
File without changes
|