@teppen/react-ui 1.5.6 → 1.5.8
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/icon/cancel-icon.js.map +1 -0
- package/dist/cjs/src/icon/edit-icon.js.map +1 -0
- 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/cell/ui/edit-button.js +1 -1
- package/dist/cjs/src/table/checkbox/components.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/base-input.js +1 -1
- package/dist/cjs/src/table/edit/ui/editor.js.map +1 -1
- package/dist/cjs/src/table/edit/ui/select-input.js +1 -1
- package/dist/cjs/src/table/filter/components.js +1 -1
- package/dist/cjs/src/table/filter/hooks/selectedFilteringColumn/hooks.js +2 -0
- package/dist/cjs/src/table/filter/hooks/selectedFilteringColumn/hooks.js.map +1 -0
- package/dist/cjs/src/table/filter/hooks/selectedFilteringColumn/provider.js +2 -0
- package/dist/cjs/src/table/filter/hooks/selectedFilteringColumn/provider.js.map +1 -0
- package/dist/cjs/src/table/filter/hooks.js.map +1 -1
- package/dist/cjs/src/table/filter/provider.js +1 -1
- package/dist/cjs/src/table/header/header.js +1 -1
- package/dist/cjs/src/table/header/resize-col-width-hook.js +1 -1
- package/dist/cjs/src/table/header/resize-col-width-hook.js.map +1 -1
- package/dist/cjs/src/table/libs/conditional-formatting.js.map +1 -1
- package/dist/cjs/src/table/pagenation/hooks.js.map +1 -1
- package/dist/cjs/src/table/paste/hooks.js +1 -1
- package/dist/cjs/src/table/paste/hooks.js.map +1 -1
- package/dist/cjs/src/table/paste/provider.js +1 -1
- package/dist/cjs/src/table/paste/provider.js.map +1 -1
- package/dist/cjs/src/table/sheet/components.js +1 -1
- package/dist/cjs/src/table/sheet/components.js.map +1 -1
- package/dist/cjs/src/table/sheet/providers.js +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/icon/cancel-icon.js.map +1 -0
- package/dist/esm/src/icon/edit-icon.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/cell/ui/edit-button.js +1 -1
- package/dist/esm/src/table/checkbox/components.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/base-input.js +1 -1
- package/dist/esm/src/table/edit/ui/editor.js.map +1 -1
- package/dist/esm/src/table/edit/ui/select-input.js +1 -1
- package/dist/esm/src/table/filter/components.js +1 -1
- package/dist/esm/src/table/filter/hooks/selectedFilteringColumn/hooks.js +2 -0
- package/dist/esm/src/table/filter/hooks/selectedFilteringColumn/hooks.js.map +1 -0
- package/dist/esm/src/table/filter/hooks/selectedFilteringColumn/provider.js +2 -0
- package/dist/esm/src/table/filter/hooks/selectedFilteringColumn/provider.js.map +1 -0
- package/dist/esm/src/table/filter/hooks.js.map +1 -1
- package/dist/esm/src/table/filter/provider.js +1 -1
- package/dist/esm/src/table/header/header.js +1 -1
- package/dist/esm/src/table/header/resize-col-width-hook.js +1 -1
- package/dist/esm/src/table/header/resize-col-width-hook.js.map +1 -1
- package/dist/esm/src/table/libs/conditional-formatting.js.map +1 -1
- package/dist/esm/src/table/pagenation/hooks.js.map +1 -1
- package/dist/esm/src/table/paste/hooks.js +1 -1
- package/dist/esm/src/table/paste/hooks.js.map +1 -1
- package/dist/esm/src/table/paste/provider.js +1 -1
- package/dist/esm/src/table/paste/provider.js.map +1 -1
- package/dist/esm/src/table/sheet/components.js +1 -1
- package/dist/esm/src/table/sheet/components.js.map +1 -1
- package/dist/esm/src/table/sheet/providers.js +1 -1
- package/dist/esm/src/table/sort/hooks.js.map +1 -1
- package/dist/esm/src/table/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 +4 -6
- package/dist/cjs/src/table/base.js +0 -3
- package/dist/cjs/src/table/cancel-icon.js.map +0 -1
- package/dist/cjs/src/table/edit-icon.js.map +0 -1
- 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/cancel-icon.js.map +0 -1
- package/dist/esm/src/table/edit-icon.js.map +0 -1
- package/dist/esm/src/table/hook.js +0 -2
- package/dist/esm/src/table/hook.js.map +0 -1
- /package/dist/cjs/src/{table → icon}/cancel-icon.js +0 -0
- /package/dist/cjs/src/{table → icon}/edit-icon.js +0 -0
- /package/dist/cjs/src/table/{base.js.map → table/base.js.map} +0 -0
- /package/dist/esm/src/{table → icon}/cancel-icon.js +0 -0
- /package/dist/esm/src/{table → icon}/edit-icon.js +0 -0
- /package/dist/esm/src/table/{base.js.map → table/base.js.map} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useMemo as e,useCallback as o}from"react";import{useEditActionContext as t}from"../edit/provider.js";import{useFocusActionContext as r}from"../focus/provider.js";import{useColumnsContext as n}from"../sheet/providers.js";function i(i,l,d){var u,f,p=r(),c=t(),m=n()[l],s=d[m.key],v="select"===m.type?null===(f=null===(u=m.options)||void 0===u?void 0:u.find((function(e){return e.value===s})))||void 0===f?void 0:f.label:s,a=e((function(){return m.editable?v:m.render?m.render(s,d):v}),[m.editable,v,s,d]);return{type:!m.editable&&m.render?"component":m.type,component:a,focusAtCell:o((function(){p.move(i,l),p.focus(i,l)}),[p,i,l]),onDoubleClickCellToEdit:o((function(e){e.preventDefault(),p.move(i,l),p.focus(i,l),c.startEditing()}),[p,c,i,l])}}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 { useCallback, 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\";\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":["useCell","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"],"mappings":"4OAMgBA,EACdC,EACAC,EACAC,WAEMC,EAAQC,IACRC,EAAaC,IACbC,EAAMC,IAAoBP,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,GAAQ,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,GAAY,WAC9BpB,EAAMqB,KAAKxB,EAAUC,GACrBE,EAAMA,MAAMH,EAAUC,EACvB,GAAE,CAACE,EAAOH,EAAUC,IAiBnBwB,wBAdAF,GACE,SAACG,GACCA,EAAEC,iBACFxB,EAAMqB,KAAKxB,EAAUC,GACrBE,EAAMA,MAAMH,EAAUC,GACtBI,EAAWuB,cACZ,GACD,CAACzB,EAAOE,EAAYL,EAAUC,IASpC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{
|
|
2
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{EditButton as t}from"./edit-button.js";import{IdGenerator as l}from"../../libs/id-generator.js";import{useCell as i}from"../hooks.js";function n(n){var r=i(n.rowIndex,n.colIndex,n.row),c=r.type,a=r.component,s=r.focusAtCell,d=r.onDoubleClickCellToEdit,m=l.getTableCellId(n.rowIndex,n.colIndex);return e("td",{id:m,className:"".concat(n.cellFormatClassName),children:e("div",{className:"relative",onClick:n.isExistOnClickRow?void 0:function(e){e.preventDefault(),s()},onDoubleClick:n.isExistOnClickRow?void 0:d,children:o("div",{className:"flex items-center gap-3 w-f-displayit p-2 cursor-default",onClick:function(e){e.preventDefault(),e.stopPropagation(),s()},children:["component"===c?a:e("div",{onDoubleClick:d,children:e("p",{className:"cell-data text-left whitespace-nowrap",children:a})}),n.editable&&e(t,{})]})})})}export{n as TableCell};
|
|
3
3
|
//# sourceMappingURL=cell.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as r}from"react/jsx-runtime";import{memo as t}from"react";import{useEditActionContext as i}from"../../edit/provider.js";import{EditIcon as
|
|
2
|
+
import{jsx as r}from"react/jsx-runtime";import{memo as t}from"react";import{useEditActionContext as i}from"../../edit/provider.js";import{EditIcon as o}from"../../../icon/edit-icon.js";var e=t((function(){var t=i().startEditing;return r("button",{className:"w-fit h-fit p-1 rounded-full text-gray-500 hover:bg-gray-200",onClick:function(r){r.preventDefault(),t()},children:r(o,{size:12})})}));export{e as EditButton};
|
|
3
3
|
//# sourceMappingURL=edit-button.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e,Fragment as n}from"react/jsx-runtime";import{memo as t,useMemo as c,useRef as r,useEffect as o}from"react";import{
|
|
2
|
+
import{jsx as e,Fragment as n}from"react/jsx-runtime";import{memo as t,useMemo as c,useRef as r,useEffect as o}from"react";import{useCheckboxContext as i,useCheckboxStatusContext as u}from"./provider.js";var a=t((function(t){var r=i(),o=u().checkboxStatusState,a=t.row,d=c((function(){return o.checkedRecords.map((function(e){return e.id}))}),[o.checkedRecords]);return r?e("div",{className:"flex justify-center gap-1 w-full items-center",children:e("input",{type:"checkbox",checked:d.includes(a.id),onChange:function(e){e.preventDefault(),e.target.checked?r.onChecked(a):r.onUnchecked(a)},onClick:function(e){e.preventDefault(),e.stopPropagation()}})}):e(n,{})})),d=t((function(t){var a=r(null),d=i(),f=u(),h=f.checkboxStatusState,l=f.existChecked,s=f.indeterminate,p=c((function(){return h.checkedRecords.map((function(e){return e.id}))}),[h.checkedRecords]),k=c((function(){return t.rows.filter((function(e){return!p.includes(e.id)}))}),[t.rows,p]);return o((function(){null!=a.current&&(a.current.indeterminate=!0===s)}),[s]),d?e("div",{className:"grid place-items-center w-full px-1",children:e("input",{ref:a,type:"checkbox",checked:l,onChange:function(e){e.preventDefault(),e.target.checked?k.forEach((function(e){d.onChecked(e)})):h.checkedRecords.forEach((function(e){d.onUnchecked(e)}))},onClick:function(e){e.preventDefault(),e.stopPropagation()}})}):e(n,{})}));export{d as AllCheckbox,a as Checkbox};
|
|
3
3
|
//# sourceMappingURL=components.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,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as n,useEffect as r}from"react";import{CancelIcon as o}from"
|
|
2
|
+
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as n,useEffect as r}from"react";import{CancelIcon as o}from"../../../icon/cancel-icon.js";function i(i){var u=n(null);return r((function(){u.current&&u.current.focus()}),[u]),e("div",{className:"flex justify-between gap-1 w-full items-center",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:[t("input",{ref:u,className:"w-full py-1 px-2 bg-white text-gray-900",type:"text",value:i.value,onChange:i.onChange,onBlur:i.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(i.reset(),i.endEditing())}}),t("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){i.reset(),i.endEditing()}),300)},children:t(o,{size:16})})]})}export{i as CellInput};
|
|
3
3
|
//# sourceMappingURL=base-input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sources":["../../../../../../src/table/edit/ui/editor.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { 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 r}from"../provider.js";import{CancelIcon as
|
|
2
|
+
import{jsx as e,Fragment as t,jsxs as n}from"react/jsx-runtime";import{useState as o}from"react";import{useEditActionContext as r}from"../provider.js";import{CancelIcon as i}from"../../../icon/cancel-icon.js";function l(l){var a=l.col,u=r().endEditing,c=l.row[a.key],p=o(c),f=p[0],m=p[1];return a.editable?n("div",{className:"flex justify-between gap-1 w-full items-center",children:[n("select",{className:"w-full py-1 px-2 bg-white text-gray-900",value:f,onChange:function(e){e.preventDefault(),m(e.target.value)},onBlur:function(e){e.preventDefault(),f!==c?function(e){a.editable&&a.onCellBlur(a.key,e,l.row,u)}(f):u()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(m(c),u())},children:[a.allowEmpty&&e("option",{value:"",children:""==c?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),a.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(){m(c),u()}),300)},children:e(i,{size:16})})]}):e(t,{})}export{l as SelectCellInput};
|
|
3
3
|
//# sourceMappingURL=select-input.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e,
|
|
2
|
+
import{jsx as e,Fragment as t,jsxs as n}from"react/jsx-runtime";import{FIlterIcon as l}from"./filter-icon.js";import{useFilterContext as r}from"./provider.js";import{useState as i,useEffect as a,useCallback as o}from"react";import{CancelIcon as u}from"../../icon/cancel-icon.js";import{FILTER_OPERATOR as c,STRING_FILTER_OPERATOR as s,NUMBER_FILTER_OPERATOR as d,SELECT_FILTER_OPERATOR as f}from"./constants.js";import{useColumnsContext as p}from"../sheet/providers.js";import{useFilteringColumnStateContext as v,useFilteringColumnActionContext as m}from"./hooks/selectedFilteringColumn/provider.js";function y(t){var n=r().filterConditions,i=v(),a=m(),o=a.setFilteringColumn,u=a.clearFilteringColumn;return e("div",{className:"relative cursor-pointer",onClick:function(e){e.preventDefault(),i&&i.key===t.col.key?u():o(t.col)},children:e(l,{isFilterTarget:!!i&&i.key===t.col.key,isFilterActive:n.filter((function(e){return e.key===t.col.key})).length>0})})}function h(t){var n=t.children,l=r(),i=l.clearFilter;if(0!==l.filterConditions.length)return e("button",{onClick:function(e){e.preventDefault(),i()},children:n})}function g(t){var n=t.children,l=r(),i=l.removeFilter,a=l.filterConditions,o=v();if(null!==o&&0!==a.filter((function(e){return e.key===o.key})).length){return e("button",{onClick:function(e){e.preventDefault(),a.filter((function(e){return e.key===o.key})).forEach((function(e){i(e.id)}))},children:n})}}function k(l){var r=l.value,i=l.onChange,a=v();return a?n("select",{value:r,onChange:i,className:"px-2 py-1 rounded-md",children:[e("option",{value:"",children:a.key?"-- 条件を選択 --":"-- 列を選択してください --"}),"string"===a.type&&s.map((function(t){return e("option",{value:t.key,children:t.label},t.key)})),"number"===a.type&&d.map((function(t){return e("option",{value:t.key,children:t.label},t.key)})),"select"===a.type&&f.map((function(t){return e("option",{value:t.key,children:t.label},t.key)}))]}):e(t,{})}function x(t){return n("select",{className:"w-full px-2 py-1 rounded-md min-w-32",value:t.value,onChange:function(e){e.preventDefault(),t.setValue(e.target.value)},children:[e("option",{value:"",children:"-- 未選択 --"}),t.options.map((function(t){return e("option",{value:t.value,children:t.label},t.value)}))]})}function b(t){return e("input",{className:"w-full px-2 py-1 rounded-md min-w-32",type:"text",value:t.value,onChange:function(e){e.preventDefault(),t.setValue(e.target.value)},placeholder:"-- 値を入力 --"})}function N(n){var l=r().addFilter,i=v();return i?e("button",{className:"bg-gray-900 text-white py-1 px-2 rounded-md text-nowrap",onClick:function(e){var t;e.preventDefault(),i.key&&n.selectingOperator&&("select"===i.type||n.value)?l("string"===i.type?{key:i.key,operator:n.selectingOperator,value:[n.value]}:"select"===i.type?{key:i.key,operator:n.selectingOperator,value:n.value,label:null===(t=i.options.find((function(e){return e.value===n.value})))||void 0===t?void 0:t.label}:{key:i.key,operator:n.selectingOperator,value:Number(n.value)}):alert("全ての項目を入力してください")},children:"追加"}):e(t,{})}function C(){var l=v(),s=m(),d=s.setFilteringColumn,f=s.clearFilteringColumn,y=p(),h=r(),C=h.removeFilter,w=h.filterConditions,F=i(""),D=F[0],j=F[1],O=i(""),V=O[0],q=O[1];if(a((function(){q(""),j("")}),[l]),!l)return e(t,{});var z=o((function(e){e.preventDefault,j(e.target.value)}),[]);return n("div",{className:"flex w-full max-h-[50vh] bg-gray-200",children:[e("ul",{className:"flex flex-col items-end min-w-16 md:w-[20%] max-h-full overflow-y-auto no_scrollbar bg-white",children:y.filter((function(e){return!!e.label&&!e.disableFilter})).map((function(t){return n("li",{className:"relative pl-2 pr-8 md:px-8 py-3 w-full cursor-pointer border-y border-gray-300 ".concat(l.key===t.key?"bg-gray-200":"hover:bg-gray-100"),onClick:function(e){e.preventDefault(),d(t)},children:[e("p",{className:"text-right text-nowrap ".concat(l.key===t.key?"underline underline-offset-2 decoration-2 decoration-neutral-500":""),children:t.label}),w.filter((function(e){return e.key===t.key})).length>0&&e("div",{className:"absolute top-1/2 right-1",children:e("div",{className:"-translate-y-1/2 rounded-full border border-gray-400 bg-gray-100 aspect-square w-5",children:e("p",{className:"text-xs text-center",children:w.filter((function(e){return e.key===t.key})).length})})})]},t.key)}))}),n("div",{className:"relative flex flex-col gap-4 ml-4 mr-4 md:ml-16 md:mr-auto py-5",children:[e("div",{className:"absolute top-5 right-0",children:e("button",{onClick:function(e){e.preventDefault(),f()},children:"閉じる"})}),e("p",{className:"font-bold text-xl",children:"フィルタリング条件"}),n("div",{className:"flex items-center gap-3 max-w-6xl",children:[n("p",{className:"text-gray-600 text-lg text-nowrap",children:["「",e("strong",{children:l.label}),"」 は"]}),e(k,{value:D,onChange:z}),"select"===l.type?e(x,{value:V,options:l.options,setValue:q}):e(b,{value:V,setValue:q}),e(N,{value:V,selectingOperator:D})]}),e("ul",{className:"flex flex-col gap-1 my-5 max-h-32 overflow-auto",children:w.filter((function(e){return e.key===l.key})).map((function(t){var l,r;return n("li",{className:"flex justify-between mr-5",children:[n("p",{children:["「",e("strong",{children:null===(l=y.find((function(e){return e.key===t.key})))||void 0===l?void 0:l.label}),"」 は",e("span",{children:null===(r=c.find((function(e){return e.key===t.operator})))||void 0===r?void 0:r.label}),":",e("span",{children:t.label?t.label:t.value})]}),e("button",{onClick:function(e){e.preventDefault(),C(t.id)},children:e(u,{size:16})})]},t.id)}))}),e("div",{className:"flex justify-center",children:e(g,{children:n("p",{className:"text-xs text-gray-600 underline hover:text-gray-800",children:["「",l.label,"」のフィルタを全て解除"]})})})]})]})}export{y as TableFilter,C as TableFilterForm,h as TableFilterRemoveButton,g as TableSpecifyKeyFilterRemoveButton};
|
|
3
3
|
//# sourceMappingURL=components.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useReducer as l,useMemo as e}from"react";var o=function(l,e){switch(e.type){case"set":return l&&l.key===e.payload.col.key?l:"string"===e.payload.col.type||"number"===e.payload.col.type?{key:e.payload.col.key,type:e.payload.col.type,label:e.payload.col.label}:{key:e.payload.col.key,type:e.payload.col.type,label:e.payload.col.label,options:e.payload.col.options};case"clear":return null}};function a(){var a=l(o,null),t=a[0],n=a[1];return{state:t,actions:e((function(){return{setFilteringColumn:function(l){return n({type:"set",payload:{col:l}})},clearFilteringColumn:function(){return n({type:"clear"})}}}),[])}}export{a as useFilteringColumnReducer};
|
|
2
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +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 \"../../../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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"../../../../../node_modules/tslib/tslib.es6.js";import{jsx as r}from"react/jsx-runtime";import{createContext as n,useContext as t}from"react";import{useFilteringColumnReducer as e}from"./hooks.js";var i=n(null),o=n({setFilteringColumn:function(){},clearFilteringColumn:function(){}});function l(n){var t=e(),l=t.state,u=t.actions;return r(i.Provider,{value:l,children:r(o.Provider,{value:u,children:n.children})})}function u(){return t(i)}function c(){return t(o)}export{l as FilteringColumnProvider,c as useFilteringColumnActionContext,u as useFilteringColumnStateContext};
|
|
2
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../../../src/table/filter/hooks/selectedFilteringColumn/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport {\n TFilteringColumnActionContext,\n TFilteringColumnStateContext,\n} from \"./type\";\nimport { useFilteringColumnReducer } from \"./hooks\";\n\nconst FilteringColumnStateContext =\n createContext<TFilteringColumnStateContext>(null);\n\nconst FilteringColumnActionContext =\n createContext<TFilteringColumnActionContext>({\n setFilteringColumn: () => {},\n clearFilteringColumn: () => {},\n });\n\ntype TPropsFilteringColumnProvider = {\n children: JSX.Element | JSX.Element[];\n};\n\nexport function FilteringColumnProvider(props: TPropsFilteringColumnProvider) {\n const { state, actions } = useFilteringColumnReducer();\n return (\n <FilteringColumnStateContext.Provider value={state}>\n <FilteringColumnActionContext.Provider value={actions}>\n {props.children}\n </FilteringColumnActionContext.Provider>\n </FilteringColumnStateContext.Provider>\n );\n}\n\nexport function useFilteringColumnStateContext() {\n return useContext(FilteringColumnStateContext);\n}\n\nexport function useFilteringColumnActionContext() {\n return useContext(FilteringColumnActionContext);\n}\n\nexport function useFilteringColumnContext() {\n return {\n ...useFilteringColumnStateContext(),\n ...useFilteringColumnActionContext(),\n };\n}\n"],"names":["FilteringColumnStateContext","createContext","FilteringColumnActionContext","setFilteringColumn","clearFilteringColumn","FilteringColumnProvider","props","_a","useFilteringColumnReducer","state","actions","_jsx","Provider","value","children","useFilteringColumnStateContext","useContext","useFilteringColumnActionContext"],"mappings":"4MAOA,IAAMA,EACJC,EAA4C,MAExCC,EACJD,EAA6C,CAC3CE,mBAAoB,WAAQ,EAC5BC,qBAAsB,WAAQ,IAO5B,SAAUC,EAAwBC,GAChC,IAAAC,EAAqBC,IAAnBC,EAAKF,EAAAE,MAAEC,EAAOH,EAAAG,QACtB,OACEC,EAACX,EAA4BY,UAASC,MAAOJ,EAAKK,SAChDH,EAACT,EAA6BU,SAAQ,CAACC,MAAOH,EAAOI,SAClDR,EAAMQ,YAIf,UAEgBC,IACd,OAAOC,EAAWhB,EACpB,UAEgBiB,IACd,OAAOD,EAAWd,EACpB"}
|
|
@@ -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,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{__assign as
|
|
2
|
+
import{__assign as r}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as o}from"react/jsx-runtime";import{createContext as e,useContext as i}from"react";import{useFilterReducer as t}from"./hooks.js";import{FilteringColumnProvider as n}from"./hooks/selectedFilteringColumn/provider.js";var l=e({addFilter:function(){},removeFilter:function(){},clearFilter:function(){},filter:function(){return[]},filterConditions:[]});function m(r){var e=r.children;return o(n,{children:o(l.Provider,{value:t(),children:e})})}function c(){return r({},i(l))}export{m as FilterProvider,c as useFilterContext};
|
|
3
3
|
//# sourceMappingURL=provider.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsxs as e,jsx as i}from"react/jsx-runtime";import{useRef as t}from"react";import"../filter/provider.js";import{TableFilter as r}from"../filter/components.js";import{
|
|
2
|
+
import{jsxs as e,jsx as i}from"react/jsx-runtime";import{useRef as t}from"react";import"../filter/provider.js";import{TableFilter as r}from"../filter/components.js";import{SortButton as l}from"../sort/components.js";import"../sort/provider.js";import{useResizeColWidthHook as o}from"./resize-col-width-hook.js";function s(s){var n=s.col,d=o({initialWidth:n.initialWidth,minWidth:n.minWidth}),a=d.colWidth,c=d.onMouseDownResizeWidth,m=t(null),h=m.current?a-m.current.clientWidth:a;return e("th",{id:s.id,className:"relative",style:{width:a,maxWidth:a,minWidth:a},children:[e("div",{className:"flex justify-between items-center bg-gray-200 text-gray-600 h-[32px]",children:[i("div",{className:"px-2",style:{maxWidth:h},children:n.label&&i("p",{className:"text-left font-bold text-nowrap overflow-hidden text-ellipsis",children:n.label})}),e("div",{ref:m,className:"flex items-center w-fit shrink-0 gap-1 px-1",children:[!n.disableSort&&i(l,{columnKey:n.key.toString()}),!n.disableFilter&&!!n.label&&i(r,{col:n})]})]}),i("div",{className:"absolute top-0 right-0 grid place-items-end py-1 w-[4px] h-full cursor-col-resize",onMouseDown:c,children:i("div",{className:"w-[1px] h-full bg-white"})})]})}export{s as TableHeaderElement};
|
|
3
3
|
//# sourceMappingURL=header.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useState as e,useCallback as o}from"react";import{DEFAULT_COL_WIDTH as
|
|
1
|
+
import{useState as e,useCallback as o}from"react";import{DEFAULT_COL_WIDTH as t,DEFAULT_MIN_COL_WIDTH as n}from"../constant.js";function u(u){var i,d,r=e(null!==(i=null==u?void 0:u.initialWidth)&&void 0!==i?i:t),c=r[0],m=r[1],s=e(!1),l=s[0],v=s[1],a=null!==(d=null==u?void 0:u.minWidth)&&void 0!==d?d:n,f=o((function(e){if(!l){var o=e.clientX,t=c;document.body.style.cursor="col-resize",document.body.style.userSelect="none";var n=function(e){v(!0);var n=t+(e.clientX-o);m(n>a?n:a)},u=function(){v(!1),document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",u),document.body.style.cursor="default",document.body.style.userSelect="auto"};document.addEventListener("mousemove",n),document.addEventListener("mouseup",u)}}),[l,a]);return{colWidth:c,onMouseDownResizeWidth:f}}export{u as useResizeColWidthHook};
|
|
2
2
|
//# sourceMappingURL=resize-col-width-hook.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resize-col-width-hook.js","sources":["../../../../../src/table/header/resize-col-width-hook.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\nimport { DEFAULT_COL_WIDTH, DEFAULT_MIN_COL_WIDTH } from \"../constant\";\n\nexport function useResizeColWidthHook(options?: {\n initialWidth?: number;\n minWidth?: number;\n}) {\n const [colWidth, setColWidth] = useState(\n options?.initialWidth ?? DEFAULT_COL_WIDTH\n );\n\n const cursorStyle = \"col-resize\";\n\n const onMouseDownResizeWidth: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n const startX = e.clientX;\n const startWidth = colWidth;\n\n document.body.style.cursor = cursorStyle;\n document.body.style.userSelect = \"none\";\n\n const onMouseMove = (moveEvent: MouseEvent) => {\n const newWidth = startWidth + (moveEvent.clientX - startX);\n setColWidth(
|
|
1
|
+
{"version":3,"file":"resize-col-width-hook.js","sources":["../../../../../src/table/header/resize-col-width-hook.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\nimport { DEFAULT_COL_WIDTH, DEFAULT_MIN_COL_WIDTH } from \"../constant\";\n\nexport function useResizeColWidthHook(options?: {\n initialWidth?: number;\n minWidth?: number;\n}) {\n const [colWidth, setColWidth] = useState(\n options?.initialWidth ?? DEFAULT_COL_WIDTH\n );\n const [isDragging, setIsDragging] = useState(false);\n const minWidth = options?.minWidth ?? DEFAULT_MIN_COL_WIDTH;\n\n const cursorStyle = \"col-resize\";\n\n const onMouseDownResizeWidth: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n if (isDragging) return;\n\n const startX = e.clientX;\n const startWidth = colWidth;\n\n document.body.style.cursor = cursorStyle;\n document.body.style.userSelect = \"none\";\n\n const onMouseMove = (moveEvent: MouseEvent) => {\n setIsDragging(true);\n const newWidth = startWidth + (moveEvent.clientX - startX);\n setColWidth(newWidth > minWidth ? newWidth : minWidth);\n };\n\n const onMouseUp = () => {\n setIsDragging(false);\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.body.style.cursor = \"default\";\n document.body.style.userSelect = \"auto\";\n };\n\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n },\n [isDragging, minWidth]\n );\n\n return {\n colWidth,\n onMouseDownResizeWidth,\n };\n}\n"],"names":["useResizeColWidthHook","options","_c","useState","_a","initialWidth","DEFAULT_COL_WIDTH","colWidth","setColWidth","_d","isDragging","setIsDragging","minWidth","_b","DEFAULT_MIN_COL_WIDTH","onMouseDownResizeWidth","useCallback","e","startX","clientX","startWidth","document","body","style","cursor","userSelect","onMouseMove","moveEvent","newWidth","onMouseUp","removeEventListener","addEventListener"],"mappings":"gIAGM,SAAUA,EAAsBC,WAI9BC,EAA0BC,EACL,QAAzBC,EAAAH,eAAAA,EAASI,oBAAgB,IAAAD,EAAAA,EAAAE,GADpBC,OAAUC,OAGXC,EAA8BN,GAAS,GAAtCO,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAC1BG,EAAgC,QAArBC,EAAAZ,aAAA,EAAAA,EAASW,gBAAY,IAAAC,EAAAA,EAAAC,EAIhCC,EACJC,GACE,SAACC,GACC,IAAIP,EAAJ,CAEA,IAAMQ,EAASD,EAAEE,QACXC,EAAab,EAEnBc,SAASC,KAAKC,MAAMC,OAVN,aAWdH,SAASC,KAAKC,MAAME,WAAa,OAEjC,IAAMC,EAAc,SAACC,GACnBhB,GAAc,GACd,IAAMiB,EAAWR,GAAcO,EAAUR,QAAUD,GACnDV,EAAYoB,EAAWhB,EAAWgB,EAAWhB,EAC/C,EAEMiB,EAAY,WAChBlB,GAAc,GACdU,SAASS,oBAAoB,YAAaJ,GAC1CL,SAASS,oBAAoB,UAAWD,GACxCR,SAASC,KAAKC,MAAMC,OAAS,UAC7BH,SAASC,KAAKC,MAAME,WAAa,MACnC,EAEAJ,SAASU,iBAAiB,YAAaL,GACvCL,SAASU,iBAAiB,UAAWF,EAvBd,CAwBzB,GACA,CAACnB,EAAYE,IAGjB,MAAO,CACLL,SAAQA,EACRQ,uBAAsBA,EAE1B"}
|
|
@@ -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 +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{__assign as t}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as
|
|
1
|
+
import{__assign as t}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as o,useEffect as e,useCallback as a,useMemo as n}from"react";import{useColumnValidatesContext as r}from"../sheet/providers.js";import{useFocusStateContext as s}from"../focus/provider.js";var u=function(o,e){var a;switch(e.type){case"setRows":return t(t({},o),{rows:e.payload.rows});case"setCols":return t(t({},o),{cols:e.payload.cols});case"setColValidators":return t(t({},o),{colValidators:e.payload.colValidators});case"setOnUpdateRowFunction":return t(t({},o),{onUpdateRowFunction:e.payload.onUpdateRowFunction});case"onPaste":if(!o.isFocused)return o;var n=e.payload.pasteData,r=o.rows,s=o.cols,u=o.colValidators,l=o.rowIndex,i=o.colIndex;if(!o.onUpdateRowFunction)return o;var c={arguments:[],timing:o.updateParameters.timing+1},d=n.length,p=Math.max.apply(Math,n.map((function(t){return t.length})));if(0===d||0===p)return o;if(n.length+l>r.length)return alert("貼り付け先の行数が足りません。"),o;for(var f=0;f<p;f++){if(!(y=s[i+f]).editable)return alert("編集できない列にデータを貼り付けることはできません。\n\n編集不可列: ".concat(null!==(a=y.label)&&void 0!==a?a:y.key)),o}if(p+i>s.length)return alert("貼り付け先の列数が足りません。"),o;for(f=0;f<d;f++)for(var m=n[f],w=0;w<m.length;w++){var y,g=m[w];if(!(0,u[(y=s[i+w]).key])(g))return o}return n.forEach((function(o,e){var a=t({},r[l+e]),n=!1;o.forEach((function(t,o){var e=s[i+o],r="number"===e.type?Number(t):"select"===e.type?""===t?"":e.options.find((function(o){return o.label===t})).value:t;a[e.key]!==r&&(n=!0,a[e.key]=r)})),n&&c.arguments.push({newRow:a,oldRow:r[l+e]})})),c.arguments.length>0?t(t({},o),{updateParameters:c}):o;case"focus":return t(t({},o),{isFocused:!0,rowIndex:e.payload.rowIndex,colIndex:e.payload.colIndex});case"unfocus":return t(t({},o),{isFocused:!1})}};function l(l){var i=o(u,t(t({},l),{colValidators:{},isFocused:!1,updateParameters:{arguments:[],timing:0}})),c=i[0],d=i[1],p=r(),f=s();e((function(){f.isFocus?d({type:"focus",payload:{rowIndex:f.rowIndex,colIndex:f.colIndex}}):d({type:"unfocus"})}),[f]);var m=a((function(t){d({type:"setRows",payload:{rows:t}})}),[]),w=a((function(t){d({type:"setCols",payload:{cols:t}})}),[]),y=a((function(t){d({type:"setColValidators",payload:{colValidators:t}})}),[]);e((function(){y(p)}),[p]);var g=a((function(t){d({type:"setOnUpdateRowFunction",payload:{onUpdateRowFunction:t}})}),[]),v=a((function(t){d({type:"onPaste",payload:{pasteData:t}})}),[]);return e((function(){c.updateParameters.arguments.length>0&&c.updateParameters.arguments.forEach((function(t){var o,e=t.newRow,a=t.oldRow;null===(o=c.onUpdateRowFunction)||void 0===o||o.call(c,e,a)}))}),[c.updateParameters.timing,c.onUpdateRowFunction]),n((function(){return{setRows:m,setCols:w,setColValidators:y,setOnUpdateRowFunction:g,onPaste:v}}),[])}export{l as usePasteReducer};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport { TPasteReducer, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\nimport { useFocusStateContext } from \"../focus/provider\";\n\nconst reducer: TPasteReducer = (state, action) => {\n switch (action.type) {\n case \"setRows\":\n return { ...state, rows: action.payload.rows };\n case \"setCols\":\n return { ...state, cols: action.payload.cols };\n case \"setColValidators\":\n return { ...state, colValidators: action.payload.colValidators };\n case \"setOnUpdateRowFunction\":\n return {\n ...state,\n onUpdateRowFunction: action.payload.onUpdateRowFunction,\n };\n case \"onPaste\":\n if (!state.isFocused) {\n return state;\n }\n\n const { pasteData } = action.payload;\n const {\n rows,\n cols,\n colValidators,\n rowIndex,\n colIndex,\n onUpdateRowFunction,\n } = state;\n\n if (!onUpdateRowFunction) {\n return state;\n }\n\n const updateParameters = {\n arguments: [] as { newRow: any; oldRow: any }[],\n timing: state.updateParameters.timing + 1,\n };\n\n const rowLength = pasteData.length;\n const colLength = Math.max(...pasteData.map((row) => row.length));\n\n if (rowLength === 0 || colLength === 0) return state;\n\n if (pasteData.length + rowIndex > rows.length) {\n alert(\"貼り付け先の行数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < colLength; i++) {\n const col = cols[colIndex + i];\n\n if (!col.editable) {\n alert(\n `編集できない列にデータを貼り付けることはできません。\\n\\n編集不可列: ${\n col.label ?? (col.key as string)\n }`\n );\n return state;\n }\n }\n\n if (colLength + colIndex > cols.length) {\n alert(\"貼り付け先の列数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < rowLength; i++) {\n const pasteRow = pasteData[i];\n\n for (let j = 0; j < pasteRow.length; j++) {\n const pasteValue = pasteRow[j];\n const col = cols[colIndex + j];\n const validate = colValidators[col.key as string];\n\n if (!validate(pasteValue)) {\n return state;\n }\n }\n }\n\n pasteData.forEach((pasteRow, i) => {\n const row = { ...rows[rowIndex + i] };\n let checkUpdatedRow = false;\n\n pasteRow.forEach((pasteValue, j) => {\n const col = cols[colIndex + j];\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!\n .value\n : pasteValue;\n if (row[col.key] !== value) {\n checkUpdatedRow = true;\n row[col.key] = value;\n }\n });\n\n if (checkUpdatedRow) {\n updateParameters.arguments.push({\n newRow: row,\n oldRow: rows[rowIndex + i],\n });\n }\n });\n\n if (updateParameters.arguments.length > 0) {\n return { ...state, updateParameters };\n } else {\n return state;\n }\n case \"focus\":\n return {\n ...state,\n isFocused: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"unfocus\":\n return { ...state, isFocused: false };\n }\n};\n\nexport function usePasteReducer(initial: {\n rows: any[];\n cols: any[];\n
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport { TPasteReducer, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\nimport { useFocusStateContext } from \"../focus/provider\";\n\nconst reducer: TPasteReducer = (state, action) => {\n switch (action.type) {\n case \"setRows\":\n return { ...state, rows: action.payload.rows };\n case \"setCols\":\n return { ...state, cols: action.payload.cols };\n case \"setColValidators\":\n return { ...state, colValidators: action.payload.colValidators };\n case \"setOnUpdateRowFunction\":\n return {\n ...state,\n onUpdateRowFunction: action.payload.onUpdateRowFunction,\n };\n case \"onPaste\":\n if (!state.isFocused) {\n return state;\n }\n\n const { pasteData } = action.payload;\n const {\n rows,\n cols,\n colValidators,\n rowIndex,\n colIndex,\n onUpdateRowFunction,\n } = state;\n\n if (!onUpdateRowFunction) {\n return state;\n }\n\n const updateParameters = {\n arguments: [] as { newRow: any; oldRow: any }[],\n timing: state.updateParameters.timing + 1,\n };\n\n const rowLength = pasteData.length;\n const colLength = Math.max(...pasteData.map((row) => row.length));\n\n if (rowLength === 0 || colLength === 0) return state;\n\n if (pasteData.length + rowIndex > rows.length) {\n alert(\"貼り付け先の行数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < colLength; i++) {\n const col = cols[colIndex + i];\n\n if (!col.editable) {\n alert(\n `編集できない列にデータを貼り付けることはできません。\\n\\n編集不可列: ${\n col.label ?? (col.key as string)\n }`\n );\n return state;\n }\n }\n\n if (colLength + colIndex > cols.length) {\n alert(\"貼り付け先の列数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < rowLength; i++) {\n const pasteRow = pasteData[i];\n\n for (let j = 0; j < pasteRow.length; j++) {\n const pasteValue = pasteRow[j];\n const col = cols[colIndex + j];\n const validate = colValidators[col.key as string];\n\n if (!validate(pasteValue)) {\n return state;\n }\n }\n }\n\n pasteData.forEach((pasteRow, i) => {\n const row = { ...rows[rowIndex + i] };\n let checkUpdatedRow = false;\n\n pasteRow.forEach((pasteValue, j) => {\n const col = cols[colIndex + j];\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!\n .value\n : pasteValue;\n if (row[col.key] !== value) {\n checkUpdatedRow = true;\n row[col.key] = value;\n }\n });\n\n if (checkUpdatedRow) {\n updateParameters.arguments.push({\n newRow: row,\n oldRow: rows[rowIndex + i],\n });\n }\n });\n\n if (updateParameters.arguments.length > 0) {\n return { ...state, updateParameters };\n } else {\n return state;\n }\n case \"focus\":\n return {\n ...state,\n isFocused: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"unfocus\":\n return { ...state, isFocused: false };\n }\n};\n\nexport function usePasteReducer(initial: {\n rows: any[];\n cols: any[];\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}): TPasteReducerReturn {\n const [state, dispatch] = useReducer(reducer, {\n ...initial,\n colValidators: {},\n isFocused: false,\n updateParameters: { arguments: [], timing: 0 },\n });\n const validators = useColumnValidatesContext();\n const focus = useFocusStateContext();\n\n useEffect(() => {\n if (focus.isFocus) {\n dispatch({\n type: \"focus\",\n payload: { rowIndex: focus.rowIndex, colIndex: focus.colIndex },\n });\n } else {\n dispatch({ type: \"unfocus\" });\n }\n }, [focus]);\n\n const setRows = useCallback((rows: any[]) => {\n dispatch({ type: \"setRows\", payload: { rows } });\n }, []);\n\n const setCols = useCallback((cols: any[]) => {\n dispatch({ type: \"setCols\", payload: { cols } });\n }, []);\n\n const setColValidators = useCallback(\n (colValidators: { [key: string]: (value: any) => boolean }) => {\n dispatch({ type: \"setColValidators\", payload: { colValidators } });\n },\n []\n );\n\n useEffect(() => {\n setColValidators(validators);\n }, [validators]);\n\n const setOnUpdateRowFunction = useCallback(\n (onUpdateRowFunction?: (newRow: any, oldRow: any) => void) => {\n dispatch({\n type: \"setOnUpdateRowFunction\",\n payload: { onUpdateRowFunction },\n });\n },\n []\n );\n\n const onPaste = useCallback((pasteData: string[][]) => {\n dispatch({ type: \"onPaste\", payload: { pasteData } });\n }, []);\n\n useEffect(() => {\n if (state.updateParameters.arguments.length > 0) {\n state.updateParameters.arguments.forEach(({ newRow, oldRow }) => {\n state.onUpdateRowFunction?.(newRow, oldRow);\n });\n }\n }, [state.updateParameters.timing, state.onUpdateRowFunction]);\n\n const actions: TPasteReducerReturn = useMemo(\n () => ({\n setRows,\n setCols,\n setColValidators,\n setOnUpdateRowFunction,\n onPaste,\n }),\n []\n );\n\n return actions;\n}\n"],"names":["reducer","state","action","type","__assign","rows","payload","cols","colValidators","onUpdateRowFunction","isFocused","pasteData","rows_1","cols_1","rowIndex_1","rowIndex","colIndex_1","colIndex","updateParameters_1","arguments","timing","updateParameters","rowLength","length","colLength","Math","max","apply","map","row","alert","i","col","editable","concat","_a","label","key","pasteRow","j","pasteValue","validate","forEach","checkUpdatedRow","value","Number","options","find","option","push","newRow","oldRow","usePasteReducer","initial","useReducer","dispatch","validators","useColumnValidatesContext","focus","useFocusStateContext","useEffect","isFocus","setRows","useCallback","setCols","setColValidators","setOnUpdateRowFunction","onPaste","_b","call","useMemo"],"mappings":"kRAKA,IAAMA,EAAyB,SAACC,EAAOC,SACrC,OAAQA,EAAOC,MACb,IAAK,UACH,OAAYC,EAAAA,EAAA,CAAA,EAAAH,IAAOI,KAAMH,EAAOI,QAAQD,OAC1C,IAAK,UACH,OAAYD,EAAAA,EAAA,CAAA,EAAAH,IAAOM,KAAML,EAAOI,QAAQC,OAC1C,IAAK,mBACH,OAAYH,EAAAA,EAAA,CAAA,EAAAH,IAAOO,cAAeN,EAAOI,QAAQE,gBACnD,IAAK,yBACH,OACKJ,EAAAA,EAAA,CAAA,EAAAH,IACHQ,oBAAqBP,EAAOI,QAAQG,sBAExC,IAAK,UACH,IAAKR,EAAMS,UACT,OAAOT,EAGD,IAAAU,EAAcT,EAAOI,kBAE3BM,EAMEX,EAAKI,KALPQ,EAKEZ,EALEM,KACJC,EAIEP,EAAKO,cAHPM,EAGEb,EAHMc,SACRC,EAEEf,EAAKgB,SAET,IAFIhB,sBAGF,OAAOA,EAGT,IAAMiB,EAAmB,CACvBC,UAAW,GACXC,OAAQnB,EAAMoB,iBAAiBD,OAAS,GAGpCE,EAAYX,EAAUY,OACtBC,EAAYC,KAAKC,IAALC,MAAAF,KAAYd,EAAUiB,KAAI,SAACC,GAAQ,OAAAA,EAAIN,MAAJ,KAErD,GAAkB,IAAdD,GAAiC,IAAdE,EAAiB,OAAOvB,EAE/C,GAAIU,EAAUY,OAAST,EAAWF,EAAKW,OAErC,OADAO,MAAM,mBACC7B,EAGT,IAAK,IAAI8B,EAAI,EAAGA,EAAIP,EAAWO,IAAK,CAGlC,KAFMC,EAAMnB,EAAKG,EAAWe,IAEnBE,SAMP,OALAH,MACE,wCAAAI,OACgB,QAAdC,EAAAH,EAAII,aAAU,IAAAD,EAAAA,EAAAH,EAAIK,MAGfpC,CAEV,CAED,GAAIuB,EAAYR,EAAWH,EAAKU,OAE9B,OADAO,MAAM,mBACC7B,EAGT,IAAS8B,EAAI,EAAGA,EAAIT,EAAWS,IAG7B,IAFA,IAAMO,EAAW3B,EAAUoB,GAElBQ,EAAI,EAAGA,EAAID,EAASf,OAAQgB,IAAK,CACxC,IACMP,EADAQ,EAAaF,EAASC,GAI5B,KAAKE,EAFYjC,GADXwB,EAAMnB,EAAKG,EAAWuB,IACOF,MAErBG,GACZ,OAAOvC,CAEV,CAgCH,OA7BAU,EAAU+B,SAAQ,SAACJ,EAAUP,GAC3B,IAAMF,OAAWjB,EAAKE,EAAWiB,IAC7BY,GAAkB,EAEtBL,EAASI,SAAQ,SAACF,EAAYD,GAC5B,IAAMP,EAAMnB,EAAKG,EAAWuB,GACtBK,EACS,WAAbZ,EAAI7B,KACA0C,OAAOL,GACM,WAAbR,EAAI7B,KACW,KAAfqC,EACE,GACAR,EAAIc,QAAQC,MAAK,SAACC,GAAW,OAAAA,EAAOZ,QAAUI,KAC3CI,MACLJ,EACFX,EAAIG,EAAIK,OAASO,IACnBD,GAAkB,EAClBd,EAAIG,EAAIK,KAAOO,EAEnB,IAEID,GACFzB,EAAiBC,UAAU8B,KAAK,CAC9BC,OAAQrB,EACRsB,OAAQvC,EAAKE,EAAWiB,IAG9B,IAEIb,EAAiBC,UAAUI,OAAS,EACtCnB,EAAAA,EAAA,GAAYH,GAAK,CAAEoB,iBAAgBH,IAE5BjB,EAEX,IAAK,QACH,OACKG,EAAAA,EAAA,CAAA,EAAAH,IACHS,WAAW,EACXK,SAAUb,EAAOI,QAAQS,SACzBE,SAAUf,EAAOI,QAAQW,WAE7B,IAAK,UACH,OAAAb,EAAAA,EAAA,GAAYH,GAAK,CAAES,WAAW,IAEpC,EAEM,SAAU0C,EAAgBC,GAKxB,IAAAlB,EAAoBmB,EAAWtD,SAChCqD,GAAO,CACV7C,cAAe,GACfE,WAAW,EACXW,iBAAkB,CAAEF,UAAW,GAAIC,OAAQ,MAJtCnB,EAAKkC,EAAA,GAAEoB,OAMRC,EAAaC,IACbC,EAAQC,IAEdC,GAAU,WACJF,EAAMG,QACRN,EAAS,CACPpD,KAAM,QACNG,QAAS,CAAES,SAAU2C,EAAM3C,SAAUE,SAAUyC,EAAMzC,YAGvDsC,EAAS,CAAEpD,KAAM,WAErB,GAAG,CAACuD,IAEJ,IAAMI,EAAUC,GAAY,SAAC1D,GAC3BkD,EAAS,CAAEpD,KAAM,UAAWG,QAAS,CAAED,KAAIA,IAC5C,GAAE,IAEG2D,EAAUD,GAAY,SAACxD,GAC3BgD,EAAS,CAAEpD,KAAM,UAAWG,QAAS,CAAEC,KAAIA,IAC5C,GAAE,IAEG0D,EAAmBF,GACvB,SAACvD,GACC+C,EAAS,CAAEpD,KAAM,mBAAoBG,QAAS,CAAEE,cAAaA,IAC9D,GACD,IAGFoD,GAAU,WACRK,EAAiBT,EACnB,GAAG,CAACA,IAEJ,IAAMU,EAAyBH,GAC7B,SAACtD,GACC8C,EAAS,CACPpD,KAAM,yBACNG,QAAS,CAAEG,oBAAmBA,IAEjC,GACD,IAGI0D,EAAUJ,GAAY,SAACpD,GAC3B4C,EAAS,CAAEpD,KAAM,UAAWG,QAAS,CAAEK,UAASA,IACjD,GAAE,IAqBH,OAnBAiD,GAAU,WACJ3D,EAAMoB,iBAAiBF,UAAUI,OAAS,GAC5CtB,EAAMoB,iBAAiBF,UAAUuB,SAAQ,SAACP,SAAEe,EAAMf,EAAAe,OAAEC,EAAMhB,EAAAgB,OAC/B,QAAzBiB,EAAAnE,EAAMQ,2BAAmB,IAAA2D,GAAAA,EAAAC,KAAApE,EAAGiD,EAAQC,EACtC,GAEJ,GAAG,CAAClD,EAAMoB,iBAAiBD,OAAQnB,EAAMQ,sBAEJ6D,GACnC,WAAM,MAAC,CACLR,QAAOA,EACPE,QAAOA,EACPC,iBAAgBA,EAChBC,uBAAsBA,EACtBC,QAAOA,EALH,GAON,GAIJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import{createContext as n,useContext as t}from"react";import{usePasteReducer as r}from"./hooks.js";var i=n({setRows:function(){},setCols:function(){},setColValidators:function(){},setOnUpdateRowFunction:function(){},onPaste:function(){}});function
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{createContext as n,useContext as t}from"react";import{usePasteReducer as r}from"./hooks.js";var i=n({setRows:function(){},setCols:function(){},setColValidators:function(){},setOnUpdateRowFunction:function(){},onPaste:function(){}});function e(n){var t=n.children,e=n.rows,c=n.cols,s=n.onUpdateRowFunction,u=void 0===s?function(){}:s;return o(i.Provider,{value:r({rows:e,cols:c,onUpdateRowFunction:u}),children:t})}function c(){return t(i)}export{e as PasteProvider,c as usePasteActionContext};
|
|
2
2
|
//# sourceMappingURL=provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sources":["../../../../../src/table/paste/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TPasteReducerReturn } from \"./types\";\nimport { usePasteReducer } from \"./hooks\";\n\nconst PasteContext = createContext<TPasteReducerReturn>({\n setRows: () => {},\n setCols: () => {},\n setColValidators: () => {},\n setOnUpdateRowFunction: () => {},\n onPaste: () => {},\n});\n\nexport function PasteProvider({\n children,\n rows,\n cols,\n
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../src/table/paste/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TPasteReducerReturn } from \"./types\";\nimport { usePasteReducer } from \"./hooks\";\n\nconst PasteContext = createContext<TPasteReducerReturn>({\n setRows: () => {},\n setCols: () => {},\n setColValidators: () => {},\n setOnUpdateRowFunction: () => {},\n onPaste: () => {},\n});\n\nexport function PasteProvider({\n children,\n rows,\n cols,\n onUpdateRowFunction = () => {},\n}: {\n children: JSX.Element | JSX.Element[];\n rows: any[];\n cols: any[];\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}) {\n return (\n <PasteContext.Provider\n value={usePasteReducer({\n rows,\n cols,\n onUpdateRowFunction,\n })}\n >\n {children}\n </PasteContext.Provider>\n );\n}\n\nexport function usePasteActionContext() {\n return useContext(PasteContext);\n}\n"],"names":["PasteContext","createContext","setRows","setCols","setColValidators","setOnUpdateRowFunction","onPaste","PasteProvider","_a","children","rows","cols","_b","onUpdateRowFunction","_jsx","Provider","value","usePasteReducer","usePasteActionContext","useContext"],"mappings":"2IAIA,IAAMA,EAAeC,EAAmC,CACtDC,QAAS,WAAQ,EACjBC,QAAS,WAAQ,EACjBC,iBAAkB,WAAQ,EAC1BC,uBAAwB,WAAQ,EAChCC,QAAS,WAAQ,IAGb,SAAUC,EAAcC,GAC5B,IAAAC,EAAQD,EAAAC,SACRC,EAAIF,EAAAE,KACJC,EAAIH,EAAAG,KACJC,EAAAJ,EAAAK,oBAAAA,OAAsB,IAAAD,EAAA,WAAQ,EAAAA,EAO9B,OACEE,EAACd,EAAae,SACZ,CAAAC,MAAOC,EAAgB,CACrBP,KAAIA,EACJC,KAAIA,EACJE,oBAAmBA,IAGpBJ,SAAAA,GAGP,UAEgBS,IACd,OAAOC,EAAWnB,EACpB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsxs as o,jsx as r}from"react/jsx-runtime";import{memo as t}from"react";import{useFocusActionContext as e}from"../focus/provider.js";import{Checkbox as n}from"../checkbox/components.js";import{TableCell as a}from"../cell/ui/cell.js";var i=t((function(t){var i=e().unfocus,l=JSON.parse(t.dataString),c=t.conditionalFormattingString.split(",");return o("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(l):""),onClick:function(o){o.preventDefault(),t.onClickRow&&(t.onClickRow(l),i())},"data-testid":l.id,children:[t.existCheckbox&&r("td",{children:r(n,{row:l})}),t.cols.map((function(o,e){var n;return r(a,{rowIndex:t.rowIndex,colIndex:e,row:l,columnKey:o.key,isExistOnClickRow:!!t.onClickRow,cellFormatClassName:c[e],isExistOnUpdateRow:!!t.onUpdateRow,editable:null!==(n=o.editable)&&void 0!==n&&n},o.key)}))]})}));export{i 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 {
|
|
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\";\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 onUpdateRow?: (newRow: any, oldRow: any) => void;\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 rowIndex={props.rowIndex}\n colIndex={j}\n row={row}\n columnKey={col.key as string}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n isExistOnUpdateRow={!!props.onUpdateRow}\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","rowIndex","colIndex","columnKey","key","isExistOnClickRow","cellFormatClassName","isExistOnUpdateRow","onUpdateRow","editable","_a"],"mappings":"oPAiBaA,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,CAERC,SAAU5B,EAAM4B,SAChBC,SAAUH,EACVvB,IAAKA,EACL2B,UAAWL,EAAIM,IACfC,oBAAqBhC,EAAMa,WAC3BoB,oBAAqB1B,EAAsBmB,GAC3CQ,qBAAsBlC,EAAMmC,YAC5BC,SAAsB,QAAZC,EAAAZ,EAAIW,gBAAQ,IAAAC,GAAAA,GARjBZ,EAAIM,UAcrB"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as r}from"react/jsx-runtime";import{createContext as
|
|
2
|
+
import{jsx as r}from"react/jsx-runtime";import{createContext as e,useMemo as n,useContext as t}from"react";import{generateValidateFunction as i}from"../libs/generate-validate-function.js";var o=e({cols:[],validates:{}});function u(e){var t=e.children,u=e.cols,a=e.errorHandler,c=n((function(){return u.reduce((function(r,e){return r[e.key]=i(e,a),r}),{})}),[u]),l=n((function(){return{cols:u,validates:c}}),[u]);return r(o.Provider,{value:l,children:t})}function a(){return t(o).cols}function c(r){return t(o).validates[r]}function l(){return t(o).validates}export{u as ColumnsProvider,c as useColumnValidateContext,l as useColumnValidatesContext,a as useColumnsContext};
|
|
3
3
|
//# sourceMappingURL=providers.js.map
|
|
@@ -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 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
|
|
@@ -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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teppen/react-ui",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.8",
|
|
4
4
|
"description": "React UI Component",
|
|
5
5
|
"main": "dist/cjs/src/index.js",
|
|
6
6
|
"module": "dist/esm/src/index.js",
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
"rollup": "npm run clean && rollup -c --bundleConfigAsCjs --forceExit",
|
|
11
11
|
"storybook": "storybook dev -p 6006",
|
|
12
12
|
"build-storybook": "storybook build",
|
|
13
|
-
"test": "jest"
|
|
13
|
+
"test": "jest",
|
|
14
|
+
"test:lint": "tsc --noEmit"
|
|
14
15
|
},
|
|
15
16
|
"author": "Yasufumi Kamiyama <yk.iteppen@gmail.com>",
|
|
16
17
|
"license": "MIT",
|
|
@@ -72,8 +73,5 @@
|
|
|
72
73
|
"front-end",
|
|
73
74
|
"ui",
|
|
74
75
|
"table"
|
|
75
|
-
]
|
|
76
|
-
"dependencies": {
|
|
77
|
-
"react-intersection-observer": "^9.10.3"
|
|
78
|
-
}
|
|
76
|
+
]
|
|
79
77
|
}
|