@teppen/react-ui 1.5.1 → 1.5.2

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.
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../../sheet/providers.js"),u=require("./base-input.js"),n=require("../provider.js"),a=require("../../edit/provider.js");exports.NumberCellInput=function(){var i=n.useCellContext(),l=r.useColumnContext(i.columnKey),o=r.useColumnValidateContext(i.columnKey),s=a.useEditActionContext().endEditing,v=t.useState(i.value.toString()),c=v[0],d=v[1];if(!l.editable||"number"!==l.type)throw new Error("Invalid condition");return e.jsx(u.CellInput,{value:c,onChange:function(e){e.preventDefault(),""!==e.target.value?"-"!==e.target.value&&"0-"!==e.target.value?e.target.value.match(/^-?[0-9]+\.$/)?d(e.target.value):isNaN(Number(e.target.value))||d(Number(e.target.value).toString()):d("-0"):d("0")},onBlur:function(e){e.preventDefault(),Number(c)!==i.value?o(c)?i.updateCellValue(c):setTimeout((function(){e.target.focus()}),100):s()},reset:function(){return d(i.value.toString())},endEditing:s})};
2
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../../sheet/providers.js"),u=require("./base-input.js"),n=require("../provider.js"),a=require("../../edit/provider.js");exports.NumberCellInput=function(){var i=n.useCellContext(),l=r.useColumnContext(i.columnKey),o=r.useColumnValidateContext(i.columnKey),s=a.useEditActionContext().endEditing,v=t.useState(i.value.toString()),c=v[0],g=v[1];if(!l.editable||"number"!==l.type)throw new Error("Invalid condition");return t.useEffect((function(){g(i.value.toString())}),[i.value]),e.jsx(u.CellInput,{value:c,onChange:function(e){e.preventDefault(),""!==e.target.value?"-"!==e.target.value&&"0-"!==e.target.value?e.target.value.match(/^-?[0-9]+\.$/)?g(e.target.value):isNaN(Number(e.target.value))||g(Number(e.target.value).toString()):g("-0"):g("0")},onBlur:function(e){e.preventDefault(),Number(c)!==i.value?o(c)?i.updateCellValue(c):setTimeout((function(){e.target.focus()}),100):s()},reset:function(){return g(i.value.toString())},endEditing:s})};
3
3
  //# sourceMappingURL=number-input.js.map
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../../edit/provider.js"),r=require("../../sheet/providers.js"),u=require("../../cancel-icon.js"),l=require("../provider.js");exports.SelectCellInput=function(){var i=l.useCellContext(),o=r.useColumnContext(i.columnKey),a=n.useEditActionContext().endEditing,s=t.useState(i.value),c=s[0],p=s[1];if(!o.editable||"select"!==o.type)throw new Error("Invalid condition");return e.jsxs("div",{className:"flex justify-between gap-1 w-full items-center",children:[e.jsxs("select",{className:"w-full py-1 px-2 bg-white text-gray-900",value:c,onChange:function(e){e.preventDefault(),p(e.target.value)},onBlur:function(e){e.preventDefault(),c!==i.value?i.updateCellValue(c):a()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(p(i.value),a())},children:[o.allowEmpty&&e.jsx("option",{value:"",children:""==i.value?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),o.options.map((function(t){return e.jsx("option",{value:t.value,children:t.label},t.value)}))]}),e.jsx("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){p(i.value),a()}),300)},children:e.jsx(u.CancelIcon,{size:16})})]})};
2
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../../edit/provider.js"),u=require("../../sheet/providers.js"),l=require("../../cancel-icon.js"),r=require("../provider.js");exports.SelectCellInput=function(){var i=r.useCellContext(),o=u.useColumnContext(i.columnKey),a=n.useEditActionContext().endEditing,s=t.useState(i.value),c=s[0],p=s[1];if(!o.editable||"select"!==o.type)throw new Error("Invalid condition");return t.useEffect((function(){p(i.value)}),[i.value]),e.jsxs("div",{className:"flex justify-between gap-1 w-full items-center",children:[e.jsxs("select",{className:"w-full py-1 px-2 bg-white text-gray-900",value:c,onChange:function(e){e.preventDefault(),p(e.target.value)},onBlur:function(e){e.preventDefault(),c!==i.value?i.updateCellValue(c):a()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(p(i.value),a())},children:[o.allowEmpty&&e.jsx("option",{value:"",children:""==i.value?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),o.options.map((function(t){return e.jsx("option",{value:t.value,children:t.label},t.value)}))]}),e.jsx("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){p(i.value),a()}),300)},children:e.jsx(l.CancelIcon,{size:16})})]})};
3
3
  //# sourceMappingURL=select-input.js.map
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../../edit/provider.js"),n=require("../../sheet/providers.js"),u=require("./base-input.js"),i=require("../provider.js"),o=t.memo((function(){var o=i.useCellContext(),l=n.useColumnContext(o.columnKey),a=n.useColumnValidateContext(o.columnKey),s=r.useEditActionContext().endEditing,d=t.useState(o.value),c=d[0],v=d[1];if(!l.editable||"string"!==l.type)throw new Error("Invalid condition");return e.jsx(u.CellInput,{value:c,onChange:function(e){e.preventDefault(),v(e.target.value)},onBlur:function(e){e.preventDefault(),c!==o.value?a(c)?o.updateCellValue(c):setTimeout((function(){e.target.focus()}),100):s()},reset:function(){return v(o.value.toString())},endEditing:s})}));exports.StringCellInput=o;
2
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../../edit/provider.js"),u=require("../../sheet/providers.js"),r=require("./base-input.js"),i=require("../provider.js"),o=t.memo((function(){var o=i.useCellContext(),l=u.useColumnContext(o.columnKey),a=u.useColumnValidateContext(o.columnKey),s=n.useEditActionContext().endEditing,c=t.useState(o.value),v=c[0],d=c[1];if(!l.editable||"string"!==l.type)throw new Error("Invalid condition");return t.useEffect((function(){d(o.value)}),[o.value]),e.jsx(r.CellInput,{value:v,onChange:function(e){e.preventDefault(),d(e.target.value)},onBlur:function(e){e.preventDefault(),v!==o.value?a(v)?o.updateCellValue(v):setTimeout((function(){e.target.focus()}),100):s()},reset:function(){return d(o.value.toString())},endEditing:s})}));exports.StringCellInput=o;
3
3
  //# sourceMappingURL=string-input.js.map
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react"),t=require("./pagenation/providers.js");require("react/jsx-runtime");var r=require("./filter/provider.js");require("./filter/constants.js"),require("./sheet/providers.js");var n=require("./focus/provider.js"),o=require("./checkbox/provider.js"),u=require("./edit/provider.js"),s=require("./sort/provider.js"),i=require("./table-property/provider.js"),c=require("./paste/provider.js");exports.useCell=function(t,r){var o=n.useFocusActionContext(),s=u.useEditActionContext(),i=c.usePasteActionContext().onPaste,a=e.useCallback((function(){o.move(t,r),o.focus(t,r)}),[o,t,r]),f=e.useCallback((function(e){var n=e.trim().replace(/\r\n/g,"\n").split("\n").map((function(e){return e.split("\t")}));i(t,r,n)}),[t,r]);return{focusAtCell:a,onDoubleClickCellToEdit:e.useCallback((function(e){e.preventDefault(),o.move(t,r),o.focus(t,r),s.startEditing()}),[o,s,t,r]),preventPropagation:e.useCallback((function(e){e.preventDefault(),e.stopPropagation()}),[]),pasteData:f}},exports.useTable=function(n){var u=r.useFilterContext().filter,a=s.useSortActionContext(),f=a.sort,l=a.updatedData,p=s.useSortTimingContext(),d=t.usePageContext(),v=d.setRowCount,C=d.pageFilter,x=o.useCheckboxStatusContext().dispatchCheckboxStatus,g=c.usePasteActionContext().setRows,h=i.useTablePropertyActionContext(),b=h.setMaxDisplayColCount,m=h.setMaxDisplayRowCount,k=e.useMemo((function(){return u(n.rows)}),[u,p,n.rows.length]);e.useEffect((function(){v(k.length)}),[k.length]);var w=e.useMemo((function(){return n.checkbox?n.rows.filter((function(e){var t;return null===(t=n.checkbox)||void 0===t?void 0:t.checked(e)})):[]}),[n.checkbox,n.rows]);e.useEffect((function(){x({type:"SET",payload:{checkedRecords:w}})}),[w]);var j=e.useMemo((function(){return f(k)}),[k,p]);e.useEffect((function(){l()}),[n.rows]);var q=e.useMemo((function(){return C(j)}),[C,j]),E=e.useMemo((function(){return q.map((function(e){return e.id}))}),[q]),M=e.useMemo((function(){return new Set(E)}),[E]),y=e.useMemo((function(){return n.rows.filter((function(e){return M.has(e.id)})).reduce((function(e,t){var r=Object.keys(t).sort().reduce((function(e,r){return e[r]=t[r],e}),{});return e[t.id]={data:r,stringValue:JSON.stringify(r)},e}),{})}),[n.rows,M]);return e.useEffect((function(){b(n.cols.length)}),[n.cols.length]),e.useEffect((function(){m(E.length)}),[E.length]),e.useEffect((function(){g(E.map((function(e){return y[e].data})))}),[y]),{cols:n.cols,rowMaps:y,pageRowIds:E}};
1
+ "use strict";var e=require("react"),t=require("./pagenation/providers.js");require("react/jsx-runtime");var r=require("./filter/provider.js");require("./filter/constants.js"),require("./sheet/providers.js");var n=require("./focus/provider.js"),o=require("./checkbox/provider.js"),u=require("./edit/provider.js"),s=require("./sort/provider.js"),i=require("./table-property/provider.js"),c=require("./paste/provider.js");exports.useCell=function(t,r){var o=n.useFocusActionContext(),s=u.useEditActionContext(),i=c.usePasteActionContext().onPaste,a=e.useCallback((function(){o.move(t,r),o.focus(t,r)}),[o,t,r]),f=e.useCallback((function(e){var n=e.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(e){return e.split(",")}));i(t,r,n)}),[t,r]);return{focusAtCell:a,onDoubleClickCellToEdit:e.useCallback((function(e){e.preventDefault(),o.move(t,r),o.focus(t,r),s.startEditing()}),[o,s,t,r]),preventPropagation:e.useCallback((function(e){e.preventDefault(),e.stopPropagation()}),[]),pasteData:f}},exports.useTable=function(n){var u=r.useFilterContext().filter,a=s.useSortActionContext(),f=a.sort,l=a.updatedData,p=s.useSortTimingContext(),d=t.usePageContext(),v=d.setRowCount,C=d.pageFilter,x=o.useCheckboxStatusContext().dispatchCheckboxStatus,g=c.usePasteActionContext().setRows,h=i.useTablePropertyActionContext(),b=h.setMaxDisplayColCount,m=h.setMaxDisplayRowCount,k=e.useMemo((function(){return u(n.rows)}),[u,p,n.rows.length]);e.useEffect((function(){v(k.length)}),[k.length]);var w=e.useMemo((function(){return n.checkbox?n.rows.filter((function(e){var t;return null===(t=n.checkbox)||void 0===t?void 0:t.checked(e)})):[]}),[n.checkbox,n.rows]);e.useEffect((function(){x({type:"SET",payload:{checkedRecords:w}})}),[w]);var j=e.useMemo((function(){return f(k)}),[k,p]);e.useEffect((function(){l()}),[n.rows]);var q=e.useMemo((function(){return C(j)}),[C,j]),E=e.useMemo((function(){return q.map((function(e){return e.id}))}),[q]),M=e.useMemo((function(){return new Set(E)}),[E]),y=e.useMemo((function(){return n.rows.filter((function(e){return M.has(e.id)})).reduce((function(e,t){var r=Object.keys(t).sort().reduce((function(e,r){return e[r]=t[r],e}),{});return e[t.id]={data:r,stringValue:JSON.stringify(r)},e}),{})}),[n.rows,M]);return e.useEffect((function(){b(n.cols.length)}),[n.cols.length]),e.useEffect((function(){m(E.length)}),[E.length]),e.useEffect((function(){g(E.map((function(e){return y[e].data})))}),[y]),{cols:n.cols,rowMaps:y,pageRowIds:E}};
2
2
  //# sourceMappingURL=hook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useFocusActionContext } from \"./focus/provider\";\nimport { useCheckboxStatusContext } from \"./checkbox/provider\";\nimport { useEditActionContext } from \"./edit/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"./sort/provider\";\nimport { useTablePropertyActionContext } from \"./table-property/provider\";\nimport { usePasteActionContext } from \"./paste/provider\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows } = usePasteActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n setRows(pageRowIds.map((id) => rowMaps[id].data));\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n\nexport function useCell(rowIndex: number, colIndex: number) {\n const focus = useFocusActionContext();\n const editAction = useEditActionContext();\n const { onPaste } = usePasteActionContext();\n\n const focusAtCell = useCallback(() => {\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n }, [focus, rowIndex, colIndex]);\n\n const pasteData = useCallback(\n (text: string) => {\n const tableData = text\n .trim()\n .replace(/\\r\\n/g, \"\\n\")\n .split(\"\\n\")\n .map((row) => row.split(\"\\t\"));\n\n onPaste(rowIndex, colIndex, tableData);\n },\n [rowIndex, colIndex]\n );\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 const preventPropagation: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n return {\n focusAtCell,\n onDoubleClickCellToEdit,\n preventPropagation,\n pasteData,\n };\n}\n"],"names":["rowIndex","colIndex","focus","useFocusActionContext","editAction","useEditActionContext","onPaste","usePasteActionContext","focusAtCell","useCallback","move","pasteData","text","tableData","trim","replace","split","map","row","onDoubleClickCellToEdit","e","preventDefault","startEditing","preventPropagation","stopPropagation","props","filter","useFilterContext","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols"],"mappings":"mbAsGgB,SAAQA,EAAkBC,GACxC,IAAMC,EAAQC,EAAAA,wBACRC,EAAaC,EAAAA,uBACXC,EAAYC,kCAEdC,EAAcC,EAAAA,aAAY,WAC9BP,EAAMQ,KAAKV,EAAUC,GACrBC,EAAMA,MAAMF,EAAUC,EACvB,GAAE,CAACC,EAAOF,EAAUC,IAEfU,EAAYF,eAChB,SAACG,GACC,IAAMC,EAAYD,EACfE,OACAC,QAAQ,QAAS,MACjBC,MAAM,MACNC,KAAI,SAACC,GAAQ,OAAAA,EAAIF,MAAM,KAAV,IAEhBV,EAAQN,EAAUC,EAAUY,EAC9B,GACA,CAACb,EAAUC,IAoBb,MAAO,CACLO,YAAWA,EACXW,wBAlBAV,eACE,SAACW,GACCA,EAAEC,iBACFnB,EAAMQ,KAAKV,EAAUC,GACrBC,EAAMA,MAAMF,EAAUC,GACtBG,EAAWkB,cACZ,GACD,CAACpB,EAAOE,EAAYJ,EAAUC,IAYhCsB,mBARAd,eAAY,SAACW,GACXA,EAAEC,iBACFD,EAAEI,iBACH,GAAE,IAMHb,UAASA,EAEb,mBAzIM,SAAyCc,GACrC,IAAAC,EAAWC,4BACbC,EAAwBC,EAAoBA,uBAA1CC,EAAIF,EAAAE,KAAEC,EAAWH,EAAAG,YACnBC,EAAaC,EAAAA,uBACbC,EAA8BC,EAAcA,iBAA1CC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WACvBC,EAA2BC,oDAC3BC,EAAYjC,kCACdkC,EACJC,EAA6BA,gCADvBC,EAAqBF,EAAAE,sBAAEC,EAAqBH,EAAAG,sBAG9CC,EAAeC,EAAAA,SACnB,WAAM,OAAApB,EAAOD,EAAMsB,KAAK,GACxB,CAACrB,EAAQM,EAAYP,EAAMsB,KAAKC,SAGlCC,EAAAA,WAAU,WACRb,EAAYS,EAAaG,OAC3B,GAAG,CAACH,EAAaG,SAEjB,IAAME,EAAaJ,EAAAA,SAAQ,WACzB,OAAKrB,EAAM0B,SAIJ1B,EAAMsB,KAAKrB,QAAO,SAACR,GAAG,IAAAU,EAAK,eAAAA,EAAAH,EAAM0B,+BAAUC,QAAQlC,EAAI,IAHrD,EAIV,GAAE,CAACO,EAAM0B,SAAU1B,EAAMsB,OAE1BE,EAAAA,WAAU,WACRX,EAAuB,CACrBe,KAAM,MACNC,QAAS,CAAEC,eAAgBL,IAE/B,GAAG,CAACA,IAEJ,IAAMM,EAAaV,EAAAA,SACjB,WAAM,OAAAhB,EAAKe,KACX,CAACA,EAAcb,IAGjBiB,EAAAA,WAAU,WACRlB,GACF,GAAG,CAACN,EAAMsB,OAEV,IAAMU,EAAWX,EAAAA,SACf,WAAM,OAAAT,EAAWmB,KACjB,CAACnB,EAAYmB,IAGTE,EAAaZ,EAAAA,SAAQ,WAAM,OAAAW,EAASxC,KAAI,SAACC,GAAQ,OAAAA,EAAIyC,EAAE,GAAC,GAAE,CAACF,IAC3DG,EAAgBd,EAAAA,SAAQ,WAAM,OAAA,IAAIe,IAAIH,EAAW,GAAE,CAACA,IAEpDI,EAAUhB,EAAAA,SACd,WACE,OAAArB,EAAMsB,KACHrB,QAAO,SAACR,GAAQ,OAAA0C,EAAcG,IAAI7C,EAAIyC,OACtCK,QAAO,SAACC,EAAK/C,GACZ,IAAMgD,EAAiBC,OAAOC,KAAKlD,GAChCY,OACAkC,QAAO,SAACC,EAAKI,GAEZ,OADAJ,EAAII,GAAOnD,EAAImD,GACRJ,CACR,GAAE,CAAwC,GAM7C,OAJAA,EAAI/C,EAAIyC,IAAM,CACZW,KAAMJ,EACNK,YAAaC,KAAKC,UAAUP,IAEvBD,CACR,GAAE,CAA+E,EAAC,GACvF,CAACxC,EAAMsB,KAAMa,IAef,OAZAX,EAAAA,WAAU,WACRN,EAAsBlB,EAAMiD,KAAK1B,OAClC,GAAE,CAACvB,EAAMiD,KAAK1B,SAEfC,EAAAA,WAAU,WACRL,EAAsBc,EAAWV,OACnC,GAAG,CAACU,EAAWV,SAEfC,EAAAA,WAAU,WACRT,EAAQkB,EAAWzC,KAAI,SAAC0C,GAAO,OAAAG,EAAQH,GAAIW,QAC7C,GAAG,CAACR,IAEG,CACLY,KAAMjD,EAAMiD,KACZZ,QAAOA,EACPJ,WAAUA,EAEd"}
1
+ {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useFocusActionContext } from \"./focus/provider\";\nimport { useCheckboxStatusContext } from \"./checkbox/provider\";\nimport { useEditActionContext } from \"./edit/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"./sort/provider\";\nimport { useTablePropertyActionContext } from \"./table-property/provider\";\nimport { usePasteActionContext } from \"./paste/provider\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows } = usePasteActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n setRows(pageRowIds.map((id) => rowMaps[id].data));\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n\nexport function useCell(rowIndex: number, colIndex: number) {\n const focus = useFocusActionContext();\n const editAction = useEditActionContext();\n const { onPaste } = usePasteActionContext();\n\n const focusAtCell = useCallback(() => {\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n }, [focus, rowIndex, colIndex]);\n\n const pasteData = useCallback(\n (text: string) => {\n const tableData = text\n .replace(/\\t/g, \",\")\n .trim()\n .replace(/\\r\\n/g, \"\\n\")\n .split(\"\\n\")\n .map((row) => row.split(\",\"));\n\n onPaste(rowIndex, colIndex, tableData);\n },\n [rowIndex, colIndex]\n );\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 const preventPropagation: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n return {\n focusAtCell,\n onDoubleClickCellToEdit,\n preventPropagation,\n pasteData,\n };\n}\n"],"names":["rowIndex","colIndex","focus","useFocusActionContext","editAction","useEditActionContext","onPaste","usePasteActionContext","focusAtCell","useCallback","move","pasteData","text","tableData","replace","trim","split","map","row","onDoubleClickCellToEdit","e","preventDefault","startEditing","preventPropagation","stopPropagation","props","filter","useFilterContext","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as e}from"react/jsx-runtime";import{useState as t}from"react";import{useColumnContext as r,useColumnValidateContext as o}from"../../sheet/providers.js";import{CellInput as n}from"./base-input.js";import{useCellContext as u}from"../provider.js";import{useEditActionContext as a}from"../../edit/provider.js";function i(){var i=u(),l=r(i.columnKey),m=o(i.columnKey),v=a().endEditing,f=t(i.value.toString()),p=f[0],g=f[1];if(!l.editable||"number"!==l.type)throw new Error("Invalid condition");return e(n,{value:p,onChange:function(e){e.preventDefault(),""!==e.target.value?"-"!==e.target.value&&"0-"!==e.target.value?e.target.value.match(/^-?[0-9]+\.$/)?g(e.target.value):isNaN(Number(e.target.value))||g(Number(e.target.value).toString()):g("-0"):g("0")},onBlur:function(e){e.preventDefault(),Number(p)!==i.value?m(p)?i.updateCellValue(p):setTimeout((function(){e.target.focus()}),100):v()},reset:function(){return g(i.value.toString())},endEditing:v})}export{i as NumberCellInput};
2
+ import{jsx as e}from"react/jsx-runtime";import{useState as t,useEffect as r}from"react";import{useColumnContext as n,useColumnValidateContext as o}from"../../sheet/providers.js";import{CellInput as u}from"./base-input.js";import{useCellContext as a}from"../provider.js";import{useEditActionContext as i}from"../../edit/provider.js";function l(){var l=a(),m=n(l.columnKey),v=o(l.columnKey),f=i().endEditing,g=t(l.value.toString()),p=g[0],c=g[1];if(!m.editable||"number"!==m.type)throw new Error("Invalid condition");return r((function(){c(l.value.toString())}),[l.value]),e(u,{value:p,onChange:function(e){e.preventDefault(),""!==e.target.value?"-"!==e.target.value&&"0-"!==e.target.value?e.target.value.match(/^-?[0-9]+\.$/)?c(e.target.value):isNaN(Number(e.target.value))||c(Number(e.target.value).toString()):c("-0"):c("0")},onBlur:function(e){e.preventDefault(),Number(p)!==l.value?v(p)?l.updateCellValue(p):setTimeout((function(){e.target.focus()}),100):f()},reset:function(){return c(l.value.toString())},endEditing:f})}export{l as NumberCellInput};
3
3
  //# sourceMappingURL=number-input.js.map
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useState as n}from"react";import{useEditActionContext as o}from"../../edit/provider.js";import{useColumnContext as r}from"../../sheet/providers.js";import{CancelIcon as i}from"../../cancel-icon.js";import{useCellContext as l}from"../provider.js";function a(){var a=l(),u=r(a.columnKey),p=o().endEditing,c=n(a.value),f=c[0],v=c[1];if(!u.editable||"select"!==u.type)throw new Error("Invalid condition");return e("div",{className:"flex justify-between gap-1 w-full items-center",children:[e("select",{className:"w-full py-1 px-2 bg-white text-gray-900",value:f,onChange:function(e){e.preventDefault(),v(e.target.value)},onBlur:function(e){e.preventDefault(),f!==a.value?a.updateCellValue(f):p()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(v(a.value),p())},children:[u.allowEmpty&&t("option",{value:"",children:""==a.value?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),u.options.map((function(e){return t("option",{value:e.value,children:e.label},e.value)}))]}),t("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){v(a.value),p()}),300)},children:t(i,{size:16})})]})}export{a as SelectCellInput};
2
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useState as n,useEffect as o}from"react";import{useEditActionContext as r}from"../../edit/provider.js";import{useColumnContext as l}from"../../sheet/providers.js";import{CancelIcon as i}from"../../cancel-icon.js";import{useCellContext as a}from"../provider.js";function u(){var u=a(),p=l(u.columnKey),c=r().endEditing,f=n(u.value),v=f[0],m=f[1];if(!p.editable||"select"!==p.type)throw new Error("Invalid condition");return o((function(){m(u.value)}),[u.value]),e("div",{className:"flex justify-between gap-1 w-full items-center",children:[e("select",{className:"w-full py-1 px-2 bg-white text-gray-900",value:v,onChange:function(e){e.preventDefault(),m(e.target.value)},onBlur:function(e){e.preventDefault(),v!==u.value?u.updateCellValue(v):c()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(m(u.value),c())},children:[p.allowEmpty&&t("option",{value:"",children:""==u.value?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),p.options.map((function(e){return t("option",{value:e.value,children:e.label},e.value)}))]}),t("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){m(u.value),c()}),300)},children:t(i,{size:16})})]})}export{u as SelectCellInput};
3
3
  //# sourceMappingURL=select-input.js.map
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as e}from"react/jsx-runtime";import{memo as t,useState as r}from"react";import{useEditActionContext as o}from"../../edit/provider.js";import{useColumnContext as n,useColumnValidateContext as i}from"../../sheet/providers.js";import{CellInput as u}from"./base-input.js";import{useCellContext as a}from"../provider.js";var m=t((function(){var t=a(),m=n(t.columnKey),f=i(t.columnKey),l=o().endEditing,p=r(t.value),v=p[0],d=p[1];if(!m.editable||"string"!==m.type)throw new Error("Invalid condition");return e(u,{value:v,onChange:function(e){e.preventDefault(),d(e.target.value)},onBlur:function(e){e.preventDefault(),v!==t.value?f(v)?t.updateCellValue(v):setTimeout((function(){e.target.focus()}),100):l()},reset:function(){return d(t.value.toString())},endEditing:l})}));export{m as StringCellInput};
2
+ import{jsx as e}from"react/jsx-runtime";import{memo as t,useState as r,useEffect as n}from"react";import{useEditActionContext as o}from"../../edit/provider.js";import{useColumnContext as i,useColumnValidateContext as u}from"../../sheet/providers.js";import{CellInput as a}from"./base-input.js";import{useCellContext as l}from"../provider.js";var f=t((function(){var t=l(),f=i(t.columnKey),m=u(t.columnKey),p=o().endEditing,v=r(t.value),c=v[0],d=v[1];if(!f.editable||"string"!==f.type)throw new Error("Invalid condition");return n((function(){d(t.value)}),[t.value]),e(a,{value:c,onChange:function(e){e.preventDefault(),d(e.target.value)},onBlur:function(e){e.preventDefault(),c!==t.value?m(c)?t.updateCellValue(c):setTimeout((function(){e.target.focus()}),100):p()},reset:function(){return d(t.value.toString())},endEditing:p})}));export{f as StringCellInput};
3
3
  //# sourceMappingURL=string-input.js.map
@@ -1,2 +1,2 @@
1
- import{useMemo as t,useEffect as r,useCallback as o}from"react";import{usePageContext as n}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{useFocusActionContext as i}from"./focus/provider.js";import{useCheckboxStatusContext as u}from"./checkbox/provider.js";import{useEditActionContext as c}from"./edit/provider.js";import{useSortActionContext as s,useSortTimingContext as a}from"./sort/provider.js";import{useTablePropertyActionContext as p}from"./table-property/provider.js";import{usePasteActionContext as f}from"./paste/provider.js";function l(o){var i=e().filter,c=s(),l=c.sort,d=c.updatedData,m=a(),v=n(),h=v.setRowCount,g=v.pageFilter,w=u().dispatchCheckboxStatus,j=f().setRows,k=p(),x=k.setMaxDisplayColCount,b=k.setMaxDisplayRowCount,C=t((function(){return i(o.rows)}),[i,m,o.rows.length]);r((function(){h(C.length)}),[C.length]);var y=t((function(){return o.checkbox?o.rows.filter((function(t){var r;return null===(r=o.checkbox)||void 0===r?void 0:r.checked(t)})):[]}),[o.checkbox,o.rows]);r((function(){w({type:"SET",payload:{checkedRecords:y}})}),[y]);var D=t((function(){return l(C)}),[C,m]);r((function(){d()}),[o.rows]);var R=t((function(){return g(D)}),[g,D]),S=t((function(){return R.map((function(t){return t.id}))}),[R]),E=t((function(){return new Set(S)}),[S]),M=t((function(){return o.rows.filter((function(t){return E.has(t.id)})).reduce((function(t,r){var o=Object.keys(r).sort().reduce((function(t,o){return t[o]=r[o],t}),{});return t[r.id]={data:o,stringValue:JSON.stringify(o)},t}),{})}),[o.rows,E]);return r((function(){x(o.cols.length)}),[o.cols.length]),r((function(){b(S.length)}),[S.length]),r((function(){j(S.map((function(t){return M[t].data})))}),[M]),{cols:o.cols,rowMaps:M,pageRowIds:S}}function d(t,r){var n=i(),e=c(),u=f().onPaste,s=o((function(){n.move(t,r),n.focus(t,r)}),[n,t,r]),a=o((function(o){var n=o.trim().replace(/\r\n/g,"\n").split("\n").map((function(t){return t.split("\t")}));u(t,r,n)}),[t,r]);return{focusAtCell:s,onDoubleClickCellToEdit:o((function(o){o.preventDefault(),n.move(t,r),n.focus(t,r),e.startEditing()}),[n,e,t,r]),preventPropagation:o((function(t){t.preventDefault(),t.stopPropagation()}),[]),pasteData:a}}export{d as useCell,l as useTable};
1
+ import{useMemo as t,useEffect as r,useCallback as o}from"react";import{usePageContext as n}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{useFocusActionContext as i}from"./focus/provider.js";import{useCheckboxStatusContext as u}from"./checkbox/provider.js";import{useEditActionContext as c}from"./edit/provider.js";import{useSortActionContext as s,useSortTimingContext as a}from"./sort/provider.js";import{useTablePropertyActionContext as p}from"./table-property/provider.js";import{usePasteActionContext as f}from"./paste/provider.js";function l(o){var i=e().filter,c=s(),l=c.sort,d=c.updatedData,m=a(),v=n(),g=v.setRowCount,h=v.pageFilter,w=u().dispatchCheckboxStatus,j=f().setRows,k=p(),x=k.setMaxDisplayColCount,b=k.setMaxDisplayRowCount,C=t((function(){return i(o.rows)}),[i,m,o.rows.length]);r((function(){g(C.length)}),[C.length]);var y=t((function(){return o.checkbox?o.rows.filter((function(t){var r;return null===(r=o.checkbox)||void 0===r?void 0:r.checked(t)})):[]}),[o.checkbox,o.rows]);r((function(){w({type:"SET",payload:{checkedRecords:y}})}),[y]);var D=t((function(){return l(C)}),[C,m]);r((function(){d()}),[o.rows]);var R=t((function(){return h(D)}),[h,D]),S=t((function(){return R.map((function(t){return t.id}))}),[R]),E=t((function(){return new Set(S)}),[S]),M=t((function(){return o.rows.filter((function(t){return E.has(t.id)})).reduce((function(t,r){var o=Object.keys(r).sort().reduce((function(t,o){return t[o]=r[o],t}),{});return t[r.id]={data:o,stringValue:JSON.stringify(o)},t}),{})}),[o.rows,E]);return r((function(){x(o.cols.length)}),[o.cols.length]),r((function(){b(S.length)}),[S.length]),r((function(){j(S.map((function(t){return M[t].data})))}),[M]),{cols:o.cols,rowMaps:M,pageRowIds:S}}function d(t,r){var n=i(),e=c(),u=f().onPaste,s=o((function(){n.move(t,r),n.focus(t,r)}),[n,t,r]),a=o((function(o){var n=o.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(t){return t.split(",")}));u(t,r,n)}),[t,r]);return{focusAtCell:s,onDoubleClickCellToEdit:o((function(o){o.preventDefault(),n.move(t,r),n.focus(t,r),e.startEditing()}),[n,e,t,r]),preventPropagation:o((function(t){t.preventDefault(),t.stopPropagation()}),[]),pasteData:a}}export{d as useCell,l as useTable};
2
2
  //# sourceMappingURL=hook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useFocusActionContext } from \"./focus/provider\";\nimport { useCheckboxStatusContext } from \"./checkbox/provider\";\nimport { useEditActionContext } from \"./edit/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"./sort/provider\";\nimport { useTablePropertyActionContext } from \"./table-property/provider\";\nimport { usePasteActionContext } from \"./paste/provider\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows } = usePasteActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n setRows(pageRowIds.map((id) => rowMaps[id].data));\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n\nexport function useCell(rowIndex: number, colIndex: number) {\n const focus = useFocusActionContext();\n const editAction = useEditActionContext();\n const { onPaste } = usePasteActionContext();\n\n const focusAtCell = useCallback(() => {\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n }, [focus, rowIndex, colIndex]);\n\n const pasteData = useCallback(\n (text: string) => {\n const tableData = text\n .trim()\n .replace(/\\r\\n/g, \"\\n\")\n .split(\"\\n\")\n .map((row) => row.split(\"\\t\"));\n\n onPaste(rowIndex, colIndex, tableData);\n },\n [rowIndex, colIndex]\n );\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 const preventPropagation: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n return {\n focusAtCell,\n onDoubleClickCellToEdit,\n preventPropagation,\n pasteData,\n };\n}\n"],"names":["useTable","props","filter","useFilterContext","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","usePasteActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","row","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols","useCell","rowIndex","colIndex","focus","useFocusActionContext","editAction","useEditActionContext","onPaste","focusAtCell","useCallback","move","pasteData","text","tableData","trim","replace","split","onDoubleClickCellToEdit","e","preventDefault","startEditing","preventPropagation","stopPropagation"],"mappings":"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"}
1
+ {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useFocusActionContext } from \"./focus/provider\";\nimport { useCheckboxStatusContext } from \"./checkbox/provider\";\nimport { useEditActionContext } from \"./edit/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"./sort/provider\";\nimport { useTablePropertyActionContext } from \"./table-property/provider\";\nimport { usePasteActionContext } from \"./paste/provider\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows } = usePasteActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n setRows(pageRowIds.map((id) => rowMaps[id].data));\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n\nexport function useCell(rowIndex: number, colIndex: number) {\n const focus = useFocusActionContext();\n const editAction = useEditActionContext();\n const { onPaste } = usePasteActionContext();\n\n const focusAtCell = useCallback(() => {\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n }, [focus, rowIndex, colIndex]);\n\n const pasteData = useCallback(\n (text: string) => {\n const tableData = text\n .replace(/\\t/g, \",\")\n .trim()\n .replace(/\\r\\n/g, \"\\n\")\n .split(\"\\n\")\n .map((row) => row.split(\",\"));\n\n onPaste(rowIndex, colIndex, tableData);\n },\n [rowIndex, colIndex]\n );\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 const preventPropagation: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n return {\n focusAtCell,\n onDoubleClickCellToEdit,\n preventPropagation,\n pasteData,\n };\n}\n"],"names":["useTable","props","filter","useFilterContext","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","usePasteActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","row","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols","useCell","rowIndex","colIndex","focus","useFocusActionContext","editAction","useEditActionContext","onPaste","focusAtCell","useCallback","move","pasteData","text","tableData","replace","trim","split","onDoubleClickCellToEdit","e","preventDefault","startEditing","preventPropagation","stopPropagation"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teppen/react-ui",
3
- "version": "1.5.1",
3
+ "version": "1.5.2",
4
4
  "description": "React UI Component",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/esm/src/index.js",