@teppen/react-ui 1.5.5 → 1.5.6

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"),l=require("../../hook.js"),o=require("./edit-button.js"),i=require("react"),t=require("../../libs/id-generator.js"),n=require("../provider.js"),r=require("../../sheet/providers.js"),s=i.memo((function(l){return e.jsx(e.Fragment,{children:"component"===l.type?l.component:e.jsx("div",{onDoubleClick:l.onDoubleClick,children:e.jsx("p",{className:"cell-data text-left whitespace-nowrap",children:l.component})})})})),c=i.memo((function(l){var i=n.useCellContext();return e.jsx("td",{id:l.id,className:"".concat(l.cellFormatClassName),children:e.jsx("div",{className:"relative",onClick:l.isExistOnClickRow?void 0:function(e){e.preventDefault(),l.focusAtCell()},onDoubleClick:l.isExistOnClickRow?void 0:l.onDoubleClickCellToEdit,children:e.jsx("div",{id:"".concat(l.id,"-display"),children:e.jsxs("div",{className:"flex items-center gap-3 w-fit p-2 cursor-default",onClick:function(e){e.preventDefault(),e.stopPropagation(),l.focusAtCell()},children:[e.jsx(s,{type:i.type,component:i.component,onDoubleClick:l.onDoubleClickCellToEdit}),l.editable&&e.jsx(o.EditButton,{})]})})})})}));exports.TableCell=function(o){var i,s=l.useCell(o.rowIndex,o.colIndex),a=s.focusAtCell,d=s.onDoubleClickCellToEdit,u=r.useColumnContext(o.columnKey);return e.jsx(n.CellProvider,{columnKey:o.columnKey,children:e.jsx(c,{id:t.IdGenerator.getTableCellId(o.rowIndex,o.colIndex),editable:null!==(i=u.editable)&&void 0!==i&&i,cellFormatClassName:o.cellFormatClassName,focusAtCell:a,onDoubleClickCellToEdit:d,isExistOnClickRow:o.isExistOnClickRow,isExistOnUpdateRow:!!o.onUpdateRow})})};
2
+ "use strict";var e=require("react/jsx-runtime"),l=require("../../hook.js"),t=require("./edit-button.js"),i=require("../../libs/id-generator.js");exports.TableCell=function(o){var n=l.useCell(o.rowIndex,o.colIndex),r=n.type,s=n.component,c=n.focusAtCell,a=n.onDoubleClickCellToEdit,d=i.IdGenerator.getTableCellId(o.rowIndex,o.colIndex);return e.jsx("td",{id:d,className:"".concat(o.cellFormatClassName),children:e.jsx("div",{className:"relative",onClick:o.isExistOnClickRow?void 0:function(e){e.preventDefault(),c()},onDoubleClick:o.isExistOnClickRow?void 0:a,children:e.jsxs("div",{className:"flex items-center gap-3 w-f-displayit p-2 cursor-default",onClick:function(e){e.preventDefault(),e.stopPropagation(),c()},children:["component"===r?s:e.jsx("div",{onDoubleClick:a,children:e.jsx("p",{className:"cell-data text-left whitespace-nowrap",children:s})}),o.editable&&e.jsx(t.EditButton,{})]})})})};
3
3
  //# sourceMappingURL=cell.js.map
@@ -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("../../cell/ui/base-input.js"),n=require("../provider.js");exports.NumberCellInput=function(a){var i=a.col,l=r.useColumnValidateContext(i.key),o=n.useEditActionContext().endEditing,s=a.row[i.key],c=t.useState(s.toString()),g=c[0],v=c[1];return e.jsx(u.CellInput,{value:g,onChange:function(e){e.preventDefault(),""!==e.target.value?"-"!==e.target.value&&"0-"!==e.target.value?e.target.value.match(/^-?[0-9]+\.$/)?v(e.target.value):isNaN(Number(e.target.value))||v(Number(e.target.value).toString()):v("-0"):v("0")},onBlur:function(e){e.preventDefault(),Number(g)!==s?l(g)?function(e){i.editable&&i.onCellBlur(i.key,Number(e),a.row,o)}(g):setTimeout((function(){e.target.focus()}),100):o()},reset:function(){return v(s.toString())},endEditing:o})};
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");exports.NumberCellInput=function(a){var i=a.col,o=r.useColumnValidateContext(i.key),l=n.useEditActionContext().endEditing,s=a.row[i.key],g=t.useState(s.toString()),v=g[0],c=g[1];return e.jsx(u.CellInput,{value:v,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(v)!==s?o(v)?function(e){i.editable&&i.onCellBlur(i.key,Number(e),a.row,l)}(v):setTimeout((function(){e.target.focus()}),100):l()},reset:function(){return c(s.toString())},endEditing:l})};
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"),r=require("../provider.js"),n=require("../../sheet/providers.js"),u=require("../../cell/ui/base-input.js");exports.StringCellInput=function(i){var o=i.col,l=n.useColumnValidateContext(o.key),s=r.useEditActionContext().endEditing,a=i.row[o.key],c=t.useState(a),d=c[0],f=c[1];return e.jsx(u.CellInput,{value:d,onChange:function(e){e.preventDefault(),f(e.target.value)},onBlur:function(e){e.preventDefault(),d!==a?l(d)?function(e){o.editable&&o.onCellBlur(o.key,e,i.row,s)}(d):setTimeout((function(){e.target.focus()}),100):s()},reset:function(){return f(a.toString())},endEditing:s})};
2
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../provider.js"),n=require("../../sheet/providers.js"),u=require("./base-input.js");exports.StringCellInput=function(i){var o=i.col,s=n.useColumnValidateContext(o.key),a=r.useEditActionContext().endEditing,l=i.row[o.key],c=t.useState(l),d=c[0],f=c[1];return e.jsx(u.CellInput,{value:d,onChange:function(e){e.preventDefault(),f(e.target.value)},onBlur:function(e){e.preventDefault(),d!==l?s(d)?function(e){o.editable&&o.onCellBlur(o.key,e,i.row,a)}(d):setTimeout((function(){e.target.focus()}),100):a()},reset:function(){return f(l.toString())},endEditing:a})};
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 o=require("./focus/provider.js"),n=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 n=o.useFocusActionContext(),s=u.useEditActionContext();return{focusAtCell:e.useCallback((function(){n.move(t,r),n.focus(t,r)}),[n,t,r]),onDoubleClickCellToEdit:e.useCallback((function(e){e.preventDefault(),n.move(t,r),n.focus(t,r),s.startEditing()}),[n,s,t,r])}},exports.useTable=function(o){var u=r.useFilterContext().filter,a=s.useSortActionContext(),f=a.sort,l=a.updatedData,d=s.useSortTimingContext(),p=t.usePageContext(),v=p.setRowCount,C=p.pageFilter,x=n.useCheckboxStatusContext().dispatchCheckboxStatus,h=c.usePasteActionContext().setRows,g=i.useTablePropertyActionContext(),b=g.setMaxDisplayColCount,m=g.setMaxDisplayRowCount,w=e.useMemo((function(){return u(o.rows)}),[u,d,o.rows.length]);e.useEffect((function(){v(w.length)}),[w.length]);var j=e.useMemo((function(){return o.checkbox?o.rows.filter((function(e){var t;return null===(t=o.checkbox)||void 0===t?void 0:t.checked(e)})):[]}),[o.checkbox,o.rows]);e.useEffect((function(){x({type:"SET",payload:{checkedRecords:j}})}),[j]);var k=e.useMemo((function(){return f(w)}),[w,d]);e.useEffect((function(){l()}),[o.rows]);var q=e.useMemo((function(){return C(k)}),[C,k]),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 o.rows.filter((function(e){return M.has(e.id)})).reduce((function(e,t){var r=Object.keys(t).sort().reduce((function(e,r){return e[r]=t[r],e}),{});return e[t.id]={data:r,stringValue:JSON.stringify(r)},e}),{})}),[o.rows,M]);return e.useEffect((function(){b(o.cols.length)}),[o.cols.length]),e.useEffect((function(){m(E.length)}),[E.length]),e.useEffect((function(){h(E.map((function(e){return y[e].data})))}),[y]),{cols:o.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");var o=require("./sheet/providers.js"),n=require("./focus/provider.js"),u=require("./checkbox/provider.js"),s=require("./edit/provider.js"),i=require("./sort/provider.js"),c=require("./table-property/provider.js"),a=require("./paste/provider.js");exports.useCell=function(t,r){var u,i,c=n.useFocusActionContext(),a=s.useEditActionContext(),l=o.useColumnsContext()[r],f=o.useRowContext(),d=f[l.key],p="select"===l.type?null===(i=null===(u=l.options)||void 0===u?void 0:u.find((function(e){return e.value===d})))||void 0===i?void 0:i.label:d,v=e.useMemo((function(){return l.editable?p:l.render?l.render(d,f):p}),[l.editable,p,d,f]);return{type:!l.editable&&l.render?"component":l.type,component:v,focusAtCell:e.useCallback((function(){c.move(t,r),c.focus(t,r)}),[c,t,r]),onDoubleClickCellToEdit:e.useCallback((function(e){e.preventDefault(),c.move(t,r),c.focus(t,r),a.startEditing()}),[c,a,t,r])}},exports.useTable=function(o){var n=r.useFilterContext().filter,s=i.useSortActionContext(),l=s.sort,f=s.updatedData,d=i.useSortTimingContext(),p=t.usePageContext(),v=p.setRowCount,C=p.pageFilter,x=u.useCheckboxStatusContext().dispatchCheckboxStatus,h=a.usePasteActionContext().setRows,b=c.useTablePropertyActionContext(),m=b.setMaxDisplayColCount,g=b.setMaxDisplayRowCount,w=e.useMemo((function(){return n(o.rows)}),[n,d,o.rows.length]);e.useEffect((function(){v(w.length)}),[w.length]);var k=e.useMemo((function(){return o.checkbox?o.rows.filter((function(e){var t;return null===(t=o.checkbox)||void 0===t?void 0:t.checked(e)})):[]}),[o.checkbox,o.rows]);e.useEffect((function(){x({type:"SET",payload:{checkedRecords:k}})}),[k]);var j=e.useMemo((function(){return l(w)}),[w,d]);e.useEffect((function(){f()}),[o.rows]);var q=e.useMemo((function(){return C(j)}),[C,j]),y=e.useMemo((function(){return q.map((function(e){return e.id}))}),[q]),M=e.useMemo((function(){return new Set(y)}),[y]),E=e.useMemo((function(){return o.rows.filter((function(e){return M.has(e.id)})).reduce((function(e,t){var r=Object.keys(t).sort().reduce((function(e,r){return e[r]=t[r],e}),{});return e[t.id]={data:r,stringValue:JSON.stringify(r)},e}),{})}),[o.rows,M]);return e.useEffect((function(){m(o.cols.length)}),[o.cols.length]),e.useEffect((function(){g(y.length)}),[y.length]),e.useEffect((function(){h(y.map((function(e){return E[e].data})))}),[E]),{cols:o.cols,rowMaps:E,pageRowIds:y}};
2
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\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 focusAtCell,\n onDoubleClickCellToEdit,\n };\n}\n"],"names":["rowIndex","colIndex","focus","useFocusActionContext","editAction","useEditActionContext","focusAtCell","useCallback","move","onDoubleClickCellToEdit","e","preventDefault","startEditing","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":"mbAsGgB,SAAQA,EAAkBC,GACxC,IAAMC,EAAQC,EAAAA,wBACRC,EAAaC,EAAAA,uBAkBnB,MAAO,CACLC,YAjBkBC,EAAAA,aAAY,WAC9BL,EAAMM,KAAKR,EAAUC,GACrBC,EAAMA,MAAMF,EAAUC,EACvB,GAAE,CAACC,EAAOF,EAAUC,IAenBQ,wBAZAF,eACE,SAACG,GACCA,EAAEC,iBACFT,EAAMM,KAAKR,EAAUC,GACrBC,EAAMA,MAAMF,EAAUC,GACtBG,EAAWQ,cACZ,GACD,CAACV,EAAOE,EAAYJ,EAAUC,IAOpC,mBAnHM,SAAyCY,GACrC,IAAAC,EAAWC,4BACbC,EAAwBC,EAAoBA,uBAA1CC,EAAIF,EAAAE,KAAEC,EAAWH,EAAAG,YACnBC,EAAaC,EAAAA,uBACbC,EAA8BC,EAAcA,iBAA1CC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WACvBC,EAA2BC,oDAC3BC,EAAYC,kCACdC,EACJC,EAA6BA,gCADvBC,EAAqBF,EAAAE,sBAAEC,EAAqBH,EAAAG,sBAG9CC,EAAeC,EAAAA,SACnB,WAAM,OAAArB,EAAOD,EAAMuB,KAAK,GACxB,CAACtB,EAAQM,EAAYP,EAAMuB,KAAKC,SAGlCC,EAAAA,WAAU,WACRd,EAAYU,EAAaG,OAC3B,GAAG,CAACH,EAAaG,SAEjB,IAAME,EAAaJ,EAAAA,SAAQ,WACzB,OAAKtB,EAAM2B,SAIJ3B,EAAMuB,KAAKtB,QAAO,SAAC2B,GAAG,IAAAzB,EAAK,eAAAA,EAAAH,EAAM2B,+BAAUE,QAAQD,EAAI,IAHrD,EAIV,GAAE,CAAC5B,EAAM2B,SAAU3B,EAAMuB,OAE1BE,EAAAA,WAAU,WACRZ,EAAuB,CACrBiB,KAAM,MACNC,QAAS,CAAEC,eAAgBN,IAE/B,GAAG,CAACA,IAEJ,IAAMO,EAAaX,EAAAA,SACjB,WAAM,OAAAjB,EAAKgB,KACX,CAACA,EAAcd,IAGjBkB,EAAAA,WAAU,WACRnB,GACF,GAAG,CAACN,EAAMuB,OAEV,IAAMW,EAAWZ,EAAAA,SACf,WAAM,OAAAV,EAAWqB,KACjB,CAACrB,EAAYqB,IAGTE,EAAab,EAAAA,SAAQ,WAAM,OAAAY,EAASE,KAAI,SAACR,GAAQ,OAAAA,EAAIS,EAAE,GAAC,GAAE,CAACH,IAC3DI,EAAgBhB,EAAAA,SAAQ,WAAM,OAAA,IAAIiB,IAAIJ,EAAW,GAAE,CAACA,IAEpDK,EAAUlB,EAAAA,SACd,WACE,OAAAtB,EAAMuB,KACHtB,QAAO,SAAC2B,GAAQ,OAAAU,EAAcG,IAAIb,EAAIS,OACtCK,QAAO,SAACC,EAAKf,GACZ,IAAMgB,EAAiBC,OAAOC,KAAKlB,GAChCvB,OACAqC,QAAO,SAACC,EAAKI,GAEZ,OADAJ,EAAII,GAAOnB,EAAImB,GACRJ,CACR,GAAE,CAAwC,GAM7C,OAJAA,EAAIf,EAAIS,IAAM,CACZW,KAAMJ,EACNK,YAAaC,KAAKC,UAAUP,IAEvBD,CACR,GAAE,CAA+E,EAAC,GACvF,CAAC3C,EAAMuB,KAAMe,IAef,OAZAb,EAAAA,WAAU,WACRN,EAAsBnB,EAAMoD,KAAK5B,OAClC,GAAE,CAACxB,EAAMoD,KAAK5B,SAEfC,EAAAA,WAAU,WACRL,EAAsBe,EAAWX,OACnC,GAAG,CAACW,EAAWX,SAEfC,EAAAA,WAAU,WACRV,EAAQoB,EAAWC,KAAI,SAACC,GAAO,OAAAG,EAAQH,GAAIW,QAC7C,GAAG,CAACR,IAEG,CACLY,KAAMpD,EAAMoD,KACZZ,QAAOA,EACPL,WAAUA,EAEd"}
1
+ {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TColumnType, TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useFocusActionContext } from \"./focus/provider\";\nimport { useCheckboxStatusContext } from \"./checkbox/provider\";\nimport { useEditActionContext } from \"./edit/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"./sort/provider\";\nimport { useTablePropertyActionContext } from \"./table-property/provider\";\nimport { usePasteActionContext } from \"./paste/provider\";\nimport { useColumnsContext, useRowContext } from \"./sheet/providers\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows } = usePasteActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n setRows(pageRowIds.map((id) => rowMaps[id].data));\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n\nexport function useCell(rowIndex: number, colIndex: number) {\n const focus = useFocusActionContext();\n const editAction = useEditActionContext();\n const col = useColumnsContext()[colIndex];\n const row = useRowContext();\n const value = row[col.key as string];\n\n const label =\n col.type === \"select\"\n ? col.options?.find((op) => op.value === value)?.label\n : value;\n\n const component = useMemo(() => {\n if (col.editable) {\n return label;\n } else {\n return col.render ? col.render(value as never, row) : label;\n }\n }, [col.editable, label, value, row]);\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const focusAtCell = useCallback(() => {\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n }, [focus, rowIndex, colIndex]);\n\n const onDoubleClickCellToEdit: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n e.preventDefault();\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n editAction.startEditing();\n },\n [focus, editAction, rowIndex, colIndex]\n );\n\n return {\n type,\n component,\n focusAtCell,\n onDoubleClickCellToEdit,\n };\n}\n"],"names":["rowIndex","colIndex","focus","useFocusActionContext","editAction","useEditActionContext","col","useColumnsContext","row","useRowContext","value","key","label","type","_a","options","find","op","_b","component","useMemo","editable","render","focusAtCell","useCallback","move","onDoubleClickCellToEdit","e","preventDefault","startEditing","props","filter","useFilterContext","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","usePasteActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","rows","length","useEffect","checkBoxes","checkbox","checked","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","data","stringValue","JSON","stringify","cols"],"mappings":"qbAuGgB,SAAQA,EAAkBC,WAClCC,EAAQC,EAAAA,wBACRC,EAAaC,EAAAA,uBACbC,EAAMC,EAAAA,oBAAoBN,GAC1BO,EAAMC,EAAAA,gBACNC,EAAQF,EAAIF,EAAIK,KAEhBC,EACS,WAAbN,EAAIO,KAC6C,UAAlC,QAAXC,EAAAR,EAAIS,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGP,QAAUA,CAAb,WAAmB,IAAAQ,OAAA,EAAAA,EAAEN,MAC/CF,EAEAS,EAAYC,EAAAA,SAAQ,WACxB,OAAId,EAAIe,SACCT,EAEAN,EAAIgB,OAAShB,EAAIgB,OAAOZ,EAAgBF,GAAOI,CAE1D,GAAG,CAACN,EAAIe,SAAUT,EAAOF,EAAOF,IAqBhC,MAAO,CACLK,MAnBCP,EAAIe,UAAYf,EAAIgB,OAAS,YAAchB,EAAIO,KAoBhDM,UAASA,EACTI,YAnBkBC,EAAAA,aAAY,WAC9BtB,EAAMuB,KAAKzB,EAAUC,GACrBC,EAAMA,MAAMF,EAAUC,EACvB,GAAE,CAACC,EAAOF,EAAUC,IAiBnByB,wBAdAF,eACE,SAACG,GACCA,EAAEC,iBACF1B,EAAMuB,KAAKzB,EAAUC,GACrBC,EAAMA,MAAMF,EAAUC,GACtBG,EAAWyB,cACZ,GACD,CAAC3B,EAAOE,EAAYJ,EAAUC,IASpC,mBAxIM,SAAyC6B,GACrC,IAAAC,EAAWC,4BACblB,EAAwBmB,EAAoBA,uBAA1CC,EAAIpB,EAAAoB,KAAEC,EAAWrB,EAAAqB,YACnBC,EAAaC,EAAAA,uBACbnB,EAA8BoB,EAAcA,iBAA1CC,EAAWrB,EAAAqB,YAAEC,EAAUtB,EAAAsB,WACvBC,EAA2BC,oDAC3BC,EAAYC,kCACdC,EACJC,EAA6BA,gCADvBC,EAAqBF,EAAAE,sBAAEC,EAAqBH,EAAAG,sBAG9CC,EAAe7B,EAAAA,SACnB,WAAM,OAAAW,EAAOD,EAAMoB,KAAK,GACxB,CAACnB,EAAQK,EAAYN,EAAMoB,KAAKC,SAGlCC,EAAAA,WAAU,WACRb,EAAYU,EAAaE,OAC3B,GAAG,CAACF,EAAaE,SAEjB,IAAME,EAAajC,EAAAA,SAAQ,WACzB,OAAKU,EAAMwB,SAIJxB,EAAMoB,KAAKnB,QAAO,SAACvB,GAAG,IAAAM,EAAK,eAAAA,EAAAgB,EAAMwB,+BAAUC,QAAQ/C,EAAI,IAHrD,EAIV,GAAE,CAACsB,EAAMwB,SAAUxB,EAAMoB,OAE1BE,EAAAA,WAAU,WACRX,EAAuB,CACrB5B,KAAM,MACN2C,QAAS,CAAEC,eAAgBJ,IAE/B,GAAG,CAACA,IAEJ,IAAMK,EAAatC,EAAAA,SACjB,WAAM,OAAAc,EAAKe,KACX,CAACA,EAAcb,IAGjBgB,EAAAA,WAAU,WACRjB,GACF,GAAG,CAACL,EAAMoB,OAEV,IAAMS,EAAWvC,EAAAA,SACf,WAAM,OAAAoB,EAAWkB,KACjB,CAAClB,EAAYkB,IAGTE,EAAaxC,EAAAA,SAAQ,WAAM,OAAAuC,EAASE,KAAI,SAACrD,GAAQ,OAAAA,EAAIsD,EAAE,GAAC,GAAE,CAACH,IAC3DI,EAAgB3C,EAAAA,SAAQ,WAAM,OAAA,IAAI4C,IAAIJ,EAAW,GAAE,CAACA,IAEpDK,EAAU7C,EAAAA,SACd,WACE,OAAAU,EAAMoB,KACHnB,QAAO,SAACvB,GAAQ,OAAAuD,EAAcG,IAAI1D,EAAIsD,OACtCK,QAAO,SAACC,EAAK5D,GACZ,IAAM6D,EAAiBC,OAAOC,KAAK/D,GAChC0B,OACAiC,QAAO,SAACC,EAAKzD,GAEZ,OADAyD,EAAIzD,GAAOH,EAAIG,GACRyD,CACR,GAAE,CAAwC,GAM7C,OAJAA,EAAI5D,EAAIsD,IAAM,CACZU,KAAMH,EACNI,YAAaC,KAAKC,UAAUN,IAEvBD,CACR,GAAE,CAA+E,EAAC,GACvF,CAACtC,EAAMoB,KAAMa,IAef,OAZAX,EAAAA,WAAU,WACRL,EAAsBjB,EAAM8C,KAAKzB,OAClC,GAAE,CAACrB,EAAM8C,KAAKzB,SAEfC,EAAAA,WAAU,WACRJ,EAAsBY,EAAWT,OACnC,GAAG,CAACS,EAAWT,SAEfC,EAAAA,WAAU,WACRT,EAAQiB,EAAWC,KAAI,SAACC,GAAO,OAAAG,EAAQH,GAAIU,QAC7C,GAAG,CAACP,IAEG,CACLW,KAAM9C,EAAM8C,KACZX,QAAOA,EACPL,WAAUA,EAEd"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react/jsx-runtime"),r=require("react"),o=require("./providers.js"),t=require("../focus/provider.js"),n=require("../checkbox/components.js"),i=require("../cell/ui/cell.js"),a=r.memo((function(r){var a=t.useFocusActionContext().unfocus,c=JSON.parse(r.dataString),l=r.conditionalFormattingString.split(",");return e.jsx(o.RowProvider,{row:c,children:e.jsxs("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ".concat(r.onClickRow?"hover:cursor-pointer":""," ").concat(r.applyRowFormatting?r.applyRowFormatting(c):""),onClick:function(e){e.preventDefault(),r.onClickRow&&(r.onClickRow(c),a())},"data-testid":c.id,children:[r.existCheckbox&&e.jsx("td",{children:e.jsx(n.Checkbox,{})}),r.cols.map((function(o,t){return e.jsx(i.TableCell,{rowIndex:r.rowIndex,colIndex:t,columnKey:o.key,isExistOnClickRow:!!r.onClickRow,cellFormatClassName:l[t],onUpdateRow:r.onUpdateRow},o.key)}))]})})}));exports.Row=a;
1
+ "use strict";var e=require("react/jsx-runtime"),r=require("react"),o=require("./providers.js"),t=require("../focus/provider.js"),i=require("../checkbox/components.js"),n=require("../cell/ui/cell.js"),a=r.memo((function(r){var a=t.useFocusActionContext().unfocus,l=JSON.parse(r.dataString),c=r.conditionalFormattingString.split(",");return e.jsx(o.RowProvider,{row:l,children:e.jsxs("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ".concat(r.onClickRow?"hover:cursor-pointer":""," ").concat(r.applyRowFormatting?r.applyRowFormatting(l):""),onClick:function(e){e.preventDefault(),r.onClickRow&&(r.onClickRow(l),a())},"data-testid":l.id,children:[r.existCheckbox&&e.jsx("td",{children:e.jsx(i.Checkbox,{})}),r.cols.map((function(o,t){var i;return e.jsx(n.TableCell,{rowIndex:r.rowIndex,colIndex:t,columnKey:o.key,isExistOnClickRow:!!r.onClickRow,cellFormatClassName:c[t],isExistOnUpdateRow:!!r.onUpdateRow,editable:null!==(i=o.editable)&&void 0!==i&&i},o.key)}))]})})}));exports.Row=a;
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 { RowProvider } from \"./providers\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\n\ninterface TPropsRow<T extends DataRecord> {\n dataString: string;\n cols: TTableColumn<T>[];\n existCheckbox?: boolean;\n rowIndex: number;\n conditionalFormattingString: string;\n onClickRow?: (row: any) => void;\n applyRowFormatting?: (row: any) => string;\n 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 <RowProvider row={row}>\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 />\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 columnKey={col.key as string}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n onUpdateRow={props.onUpdateRow}\n />\n );\n })}\n </tr>\n </RowProvider>\n );\n});\n"],"names":["Row","memo","props","unfocus","useFocusActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsx","RowProvider","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","Checkbox","cols","map","col","j","TableCell","rowIndex","colIndex","columnKey","key","isExistOnClickRow","cellFormatClassName","onUpdateRow"],"mappings":"wMAkBaA,EAAMC,EAAIA,MAAC,SAAiCC,GAC/C,IAAAC,EAAYC,kCACdC,EAAMC,KAAKC,MAAML,EAAMM,YACvBC,EAAwBP,EAAMQ,4BAA4BC,MAAM,KAEtE,OACEC,MAACC,EAAWA,YAAA,CAACR,IAAKA,WAChBS,EAAAA,KACE,KAAA,CAAAC,UAAW,0JACTC,OAAEd,EAAMe,WAAa,uBAAyB,GAAE,KAAAD,OAC9Cd,EAAMgB,mBAAqBhB,EAAMgB,mBAAmBb,GAAO,IAC/Dc,QAAS,SAACC,GACRA,EAAEC,iBAEInB,EAAMe,aACVf,EAAMe,WAAWZ,GACjBF,MAEH,cACYE,EAAIiB,GAAEC,SAAA,CAElBrB,EAAMsB,eACLZ,MAAA,KAAA,CAAAW,SACEX,EAAAA,IAACa,EAAQA,eAGZvB,EAAMwB,KAAKC,KAAI,SAACC,EAAKC,GACpB,OACEjB,MAACkB,EAAAA,UAAS,CAERC,SAAU7B,EAAM6B,SAChBC,SAAUH,EACVI,UAAWL,EAAIM,IACfC,oBAAqBjC,EAAMe,WAC3BmB,oBAAqB3B,EAAsBoB,GAC3CQ,YAAanC,EAAMmC,aANdT,EAAIM,IASf,QAIR"}
1
+ {"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { RowProvider } from \"./providers\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\n\ninterface TPropsRow<T extends DataRecord> {\n dataString: string;\n cols: TTableColumn<T>[];\n existCheckbox?: boolean;\n rowIndex: number;\n conditionalFormattingString: string;\n onClickRow?: (row: any) => void;\n applyRowFormatting?: (row: any) => string;\n 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 <RowProvider row={row}>\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 />\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 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 </RowProvider>\n );\n});\n"],"names":["Row","memo","props","unfocus","useFocusActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsx","RowProvider","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","Checkbox","cols","map","col","j","TableCell","rowIndex","colIndex","columnKey","key","isExistOnClickRow","cellFormatClassName","isExistOnUpdateRow","onUpdateRow","editable","_a"],"mappings":"wMAkBaA,EAAMC,EAAIA,MAAC,SAAiCC,GAC/C,IAAAC,EAAYC,kCACdC,EAAMC,KAAKC,MAAML,EAAMM,YACvBC,EAAwBP,EAAMQ,4BAA4BC,MAAM,KAEtE,OACEC,MAACC,EAAWA,YAAA,CAACR,IAAKA,WAChBS,EAAAA,KACE,KAAA,CAAAC,UAAW,0JACTC,OAAEd,EAAMe,WAAa,uBAAyB,GAAE,KAAAD,OAC9Cd,EAAMgB,mBAAqBhB,EAAMgB,mBAAmBb,GAAO,IAC/Dc,QAAS,SAACC,GACRA,EAAEC,iBAEInB,EAAMe,aACVf,EAAMe,WAAWZ,GACjBF,MAEH,cACYE,EAAIiB,GAAEC,SAAA,CAElBrB,EAAMsB,eACLZ,MAAA,KAAA,CAAAW,SACEX,EAAAA,IAACa,EAAQA,eAGZvB,EAAMwB,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEjB,EAAAA,IAACkB,EAAAA,UAEC,CAAAC,SAAU7B,EAAM6B,SAChBC,SAAUH,EACVI,UAAWL,EAAIM,IACfC,oBAAqBjC,EAAMe,WAC3BmB,oBAAqB3B,EAAsBoB,GAC3CQ,qBAAsBnC,EAAMoC,YAC5BC,SAA0B,QAAhBC,EAAAZ,EAAIW,gBAAY,IAAAC,GAAAA,GAPrBZ,EAAIM,IAUf,QAIR"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as e,Fragment as o,jsxs as l}from"react/jsx-runtime";import{useCell as i}from"../../hook.js";import{EditButton as t}from"./edit-button.js";import{memo as n}from"react";import{IdGenerator as c}from"../../libs/id-generator.js";import{useCellContext as r,CellProvider as a}from"../provider.js";import{useColumnContext as d}from"../../sheet/providers.js";var s=n((function(l){return e(o,{children:"component"===l.type?l.component:e("div",{onDoubleClick:l.onDoubleClick,children:e("p",{className:"cell-data text-left whitespace-nowrap",children:l.component})})})})),m=n((function(o){var i=r();return e("td",{id:o.id,className:"".concat(o.cellFormatClassName),children:e("div",{className:"relative",onClick:o.isExistOnClickRow?void 0:function(e){e.preventDefault(),o.focusAtCell()},onDoubleClick:o.isExistOnClickRow?void 0:o.onDoubleClickCellToEdit,children:e("div",{id:"".concat(o.id,"-display"),children:l("div",{className:"flex items-center gap-3 w-fit p-2 cursor-default",onClick:function(e){e.preventDefault(),e.stopPropagation(),o.focusAtCell()},children:[e(s,{type:i.type,component:i.component,onDoubleClick:o.onDoubleClickCellToEdit}),o.editable&&e(t,{})]})})})})}));function p(o){var l,t=i(o.rowIndex,o.colIndex),n=t.focusAtCell,r=t.onDoubleClickCellToEdit,s=d(o.columnKey);return e(a,{columnKey:o.columnKey,children:e(m,{id:c.getTableCellId(o.rowIndex,o.colIndex),editable:null!==(l=s.editable)&&void 0!==l&&l,cellFormatClassName:o.cellFormatClassName,focusAtCell:n,onDoubleClickCellToEdit:r,isExistOnClickRow:o.isExistOnClickRow,isExistOnUpdateRow:!!o.onUpdateRow})})}export{p as TableCell};
2
+ import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useCell as t}from"../../hook.js";import{EditButton as l}from"./edit-button.js";import{IdGenerator as i}from"../../libs/id-generator.js";function n(n){var c=t(n.rowIndex,n.colIndex),r=c.type,a=c.component,s=c.focusAtCell,d=c.onDoubleClickCellToEdit,m=i.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"===r?a:e("div",{onDoubleClick:d,children:e("p",{className:"cell-data text-left whitespace-nowrap",children:a})}),n.editable&&e(l,{})]})})})}export{n as TableCell};
3
3
  //# sourceMappingURL=cell.js.map
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as t}from"react/jsx-runtime";import{useState as e}from"react";import{useColumnValidateContext as r}from"../../sheet/providers.js";import{CellInput as o}from"../../cell/ui/base-input.js";import{useEditActionContext as n}from"../provider.js";function u(u){var a=u.col,i=r(a.key),l=n().endEditing,m=u.row[a.key],f=e(m.toString()),g=f[0],v=f[1];return t(o,{value:g,onChange:function(t){t.preventDefault(),""!==t.target.value?"-"!==t.target.value&&"0-"!==t.target.value?t.target.value.match(/^-?[0-9]+\.$/)?v(t.target.value):isNaN(Number(t.target.value))||v(Number(t.target.value).toString()):v("-0"):v("0")},onBlur:function(t){t.preventDefault(),Number(g)!==m?i(g)?function(t){a.editable&&a.onCellBlur(a.key,Number(t),u.row,l)}(g):setTimeout((function(){t.target.focus()}),100):l()},reset:function(){return v(m.toString())},endEditing:l})}export{u as NumberCellInput};
2
+ import{jsx as t}from"react/jsx-runtime";import{useState as e}from"react";import{useColumnValidateContext as r}from"../../sheet/providers.js";import{CellInput as o}from"./base-input.js";import{useEditActionContext as n}from"../provider.js";function u(u){var a=u.col,i=r(a.key),m=n().endEditing,l=u.row[a.key],f=e(l.toString()),g=f[0],v=f[1];return t(o,{value:g,onChange:function(t){t.preventDefault(),""!==t.target.value?"-"!==t.target.value&&"0-"!==t.target.value?t.target.value.match(/^-?[0-9]+\.$/)?v(t.target.value):isNaN(Number(t.target.value))||v(Number(t.target.value).toString()):v("-0"):v("0")},onBlur:function(t){t.preventDefault(),Number(g)!==l?i(g)?function(t){a.editable&&a.onCellBlur(a.key,Number(t),u.row,m)}(g):setTimeout((function(){t.target.focus()}),100):m()},reset:function(){return v(l.toString())},endEditing:m})}export{u as NumberCellInput};
3
3
  //# sourceMappingURL=number-input.js.map
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as e}from"react/jsx-runtime";import{useState as t}from"react";import{useEditActionContext as r}from"../provider.js";import{useColumnValidateContext as o}from"../../sheet/providers.js";import{CellInput as n}from"../../cell/ui/base-input.js";function i(i){var u=i.col,f=o(u.key),a=r().endEditing,l=i.row[u.key],m=t(l),c=m[0],p=m[1];return e(n,{value:c,onChange:function(e){e.preventDefault(),p(e.target.value)},onBlur:function(e){e.preventDefault(),c!==l?f(c)?function(e){u.editable&&u.onCellBlur(u.key,e,i.row,a)}(c):setTimeout((function(){e.target.focus()}),100):a()},reset:function(){return p(l.toString())},endEditing:a})}export{i as StringCellInput};
2
+ import{jsx as t}from"react/jsx-runtime";import{useState as e}from"react";import{useEditActionContext as r}from"../provider.js";import{useColumnValidateContext as o}from"../../sheet/providers.js";import{CellInput as n}from"./base-input.js";function i(i){var u=i.col,f=o(u.key),a=r().endEditing,m=i.row[u.key],p=e(m),c=p[0],l=p[1];return t(n,{value:c,onChange:function(t){t.preventDefault(),l(t.target.value)},onBlur:function(t){t.preventDefault(),c!==m?f(c)?function(t){u.editable&&u.onCellBlur(u.key,t,i.row,a)}(c):setTimeout((function(){t.target.focus()}),100):a()},reset:function(){return l(m.toString())},endEditing:a})}export{i as StringCellInput};
3
3
  //# sourceMappingURL=string-input.js.map
@@ -1,2 +1,2 @@
1
- import{useMemo as r,useEffect as t,useCallback as o}from"react";import{usePageContext as e}from"./pagenation/providers.js";import"react/jsx-runtime";import{useFilterContext as n}from"./filter/provider.js";import"./filter/constants.js";import"./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 f}from"./sort/provider.js";import{useTablePropertyActionContext as a}from"./table-property/provider.js";import{usePasteActionContext as p}from"./paste/provider.js";function l(o){var i=n().filter,c=s(),l=c.sort,d=c.updatedData,m=f(),v=e(),h=v.setRowCount,g=v.pageFilter,w=u().dispatchCheckboxStatus,j=p().setRows,k=a(),x=k.setMaxDisplayColCount,b=k.setMaxDisplayRowCount,C=r((function(){return i(o.rows)}),[i,m,o.rows.length]);t((function(){h(C.length)}),[C.length]);var y=r((function(){return o.checkbox?o.rows.filter((function(r){var t;return null===(t=o.checkbox)||void 0===t?void 0:t.checked(r)})):[]}),[o.checkbox,o.rows]);t((function(){w({type:"SET",payload:{checkedRecords:y}})}),[y]);var D=r((function(){return l(C)}),[C,m]);t((function(){d()}),[o.rows]);var R=r((function(){return g(D)}),[g,D]),S=r((function(){return R.map((function(r){return r.id}))}),[R]),E=r((function(){return new Set(S)}),[S]),M=r((function(){return o.rows.filter((function(r){return E.has(r.id)})).reduce((function(r,t){var o=Object.keys(t).sort().reduce((function(r,o){return r[o]=t[o],r}),{});return r[t.id]={data:o,stringValue:JSON.stringify(o)},r}),{})}),[o.rows,E]);return t((function(){x(o.cols.length)}),[o.cols.length]),t((function(){b(S.length)}),[S.length]),t((function(){j(S.map((function(r){return M[r].data})))}),[M]),{cols:o.cols,rowMaps:M,pageRowIds:S}}function d(r,t){var e=i(),n=c();return{focusAtCell:o((function(){e.move(r,t),e.focus(r,t)}),[e,r,t]),onDoubleClickCellToEdit:o((function(o){o.preventDefault(),e.move(r,t),e.focus(r,t),n.startEditing()}),[e,n,r,t])}}export{d as useCell,l as useTable};
1
+ import{useMemo as t,useEffect as r,useCallback as o}from"react";import{usePageContext as e}from"./pagenation/providers.js";import"react/jsx-runtime";import{useFilterContext as n}from"./filter/provider.js";import"./filter/constants.js";import{useColumnsContext as i,useRowContext as u}from"./sheet/providers.js";import{useFocusActionContext as c}from"./focus/provider.js";import{useCheckboxStatusContext as s}from"./checkbox/provider.js";import{useEditActionContext as f}from"./edit/provider.js";import{useSortActionContext as p,useSortTimingContext as a}from"./sort/provider.js";import{useTablePropertyActionContext as l}from"./table-property/provider.js";import{usePasteActionContext as d}from"./paste/provider.js";function m(o){var i=n().filter,u=p(),c=u.sort,f=u.updatedData,m=a(),v=e(),h=v.setRowCount,g=v.pageFilter,w=s().dispatchCheckboxStatus,b=d().setRows,j=l(),y=j.setMaxDisplayColCount,k=j.setMaxDisplayRowCount,x=t((function(){return i(o.rows)}),[i,m,o.rows.length]);r((function(){h(x.length)}),[x.length]);var C=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:C}})}),[C]);var D=t((function(){return c(x)}),[x,m]);r((function(){f()}),[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(){y(o.cols.length)}),[o.cols.length]),r((function(){k(S.length)}),[S.length]),r((function(){b(S.map((function(t){return M[t].data})))}),[M]),{cols:o.cols,rowMaps:M,pageRowIds:S}}function v(r,e){var n,s,p=c(),a=f(),l=i()[e],d=u(),m=d[l.key],v="select"===l.type?null===(s=null===(n=l.options)||void 0===n?void 0:n.find((function(t){return t.value===m})))||void 0===s?void 0:s.label:m,h=t((function(){return l.editable?v:l.render?l.render(m,d):v}),[l.editable,v,m,d]);return{type:!l.editable&&l.render?"component":l.type,component:h,focusAtCell:o((function(){p.move(r,e),p.focus(r,e)}),[p,r,e]),onDoubleClickCellToEdit:o((function(t){t.preventDefault(),p.move(r,e),p.focus(r,e),a.startEditing()}),[p,a,r,e])}}export{v as useCell,m 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\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 focusAtCell,\n onDoubleClickCellToEdit,\n };\n}\n"],"names":["useTable","props","filter","useFilterContext","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","usePasteActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","row","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols","useCell","rowIndex","colIndex","focus","useFocusActionContext","editAction","useEditActionContext","focusAtCell","useCallback","move","onDoubleClickCellToEdit","e","preventDefault","startEditing"],"mappings":"6pBAWM,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,CAEgB,SAAAkB,EAAQC,EAAkBC,GACxC,IAAMC,EAAQC,IACRC,EAAaC,IAkBnB,MAAO,CACLC,YAjBkBC,GAAY,WAC9BL,EAAMM,KAAKR,EAAUC,GACrBC,EAAMA,MAAMF,EAAUC,EACvB,GAAE,CAACC,EAAOF,EAAUC,IAenBQ,wBAZAF,GACE,SAACG,GACCA,EAAEC,iBACFT,EAAMM,KAAKR,EAAUC,GACrBC,EAAMA,MAAMF,EAAUC,GACtBG,EAAWQ,cACZ,GACD,CAACV,EAAOE,EAAYJ,EAAUC,IAOpC"}
1
+ {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TColumnType, TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useFocusActionContext } from \"./focus/provider\";\nimport { useCheckboxStatusContext } from \"./checkbox/provider\";\nimport { useEditActionContext } from \"./edit/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"./sort/provider\";\nimport { useTablePropertyActionContext } from \"./table-property/provider\";\nimport { usePasteActionContext } from \"./paste/provider\";\nimport { useColumnsContext, useRowContext } from \"./sheet/providers\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows } = usePasteActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n setRows(pageRowIds.map((id) => rowMaps[id].data));\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n\nexport function useCell(rowIndex: number, colIndex: number) {\n const focus = useFocusActionContext();\n const editAction = useEditActionContext();\n const col = useColumnsContext()[colIndex];\n const row = useRowContext();\n const value = row[col.key as string];\n\n const label =\n col.type === \"select\"\n ? col.options?.find((op) => op.value === value)?.label\n : value;\n\n const component = useMemo(() => {\n if (col.editable) {\n return label;\n } else {\n return col.render ? col.render(value as never, row) : label;\n }\n }, [col.editable, label, value, row]);\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const focusAtCell = useCallback(() => {\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n }, [focus, rowIndex, colIndex]);\n\n const onDoubleClickCellToEdit: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n e.preventDefault();\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n editAction.startEditing();\n },\n [focus, editAction, rowIndex, colIndex]\n );\n\n return {\n type,\n component,\n focusAtCell,\n onDoubleClickCellToEdit,\n };\n}\n"],"names":["useTable","props","filter","useFilterContext","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","usePasteActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","row","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols","useCell","rowIndex","colIndex","focus","useFocusActionContext","editAction","useEditActionContext","col","useColumnsContext","useRowContext","value","label","options","find","op","component","editable","render","focusAtCell","useCallback","move","onDoubleClickCellToEdit","e","preventDefault","startEditing"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{jsx as o,jsxs as r}from"react/jsx-runtime";import{memo as t}from"react";import{RowProvider as e}from"./providers.js";import{useFocusActionContext as n}from"../focus/provider.js";import{Checkbox as i}from"../checkbox/components.js";import{TableCell as a}from"../cell/ui/cell.js";var c=t((function(t){var c=n().unfocus,l=JSON.parse(t.dataString),p=t.conditionalFormattingString.split(",");return o(e,{row:l,children:r("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ".concat(t.onClickRow?"hover:cursor-pointer":""," ").concat(t.applyRowFormatting?t.applyRowFormatting(l):""),onClick:function(o){o.preventDefault(),t.onClickRow&&(t.onClickRow(l),c())},"data-testid":l.id,children:[t.existCheckbox&&o("td",{children:o(i,{})}),t.cols.map((function(r,e){return o(a,{rowIndex:t.rowIndex,colIndex:e,columnKey:r.key,isExistOnClickRow:!!t.onClickRow,cellFormatClassName:p[e],onUpdateRow:t.onUpdateRow},r.key)}))]})})}));export{c as Row};
1
+ import{jsx as o,jsxs as r}from"react/jsx-runtime";import{memo as t}from"react";import{RowProvider as e}from"./providers.js";import{useFocusActionContext as i}from"../focus/provider.js";import{Checkbox as n}from"../checkbox/components.js";import{TableCell as a}from"../cell/ui/cell.js";var l=t((function(t){var l=i().unfocus,c=JSON.parse(t.dataString),s=t.conditionalFormattingString.split(",");return o(e,{row:c,children:r("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ".concat(t.onClickRow?"hover:cursor-pointer":""," ").concat(t.applyRowFormatting?t.applyRowFormatting(c):""),onClick:function(o){o.preventDefault(),t.onClickRow&&(t.onClickRow(c),l())},"data-testid":c.id,children:[t.existCheckbox&&o("td",{children:o(n,{})}),t.cols.map((function(r,e){var i;return o(a,{rowIndex:t.rowIndex,colIndex:e,columnKey:r.key,isExistOnClickRow:!!t.onClickRow,cellFormatClassName:s[e],isExistOnUpdateRow:!!t.onUpdateRow,editable:null!==(i=r.editable)&&void 0!==i&&i},r.key)}))]})})}));export{l as Row};
2
2
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { RowProvider } from \"./providers\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\n\ninterface TPropsRow<T extends DataRecord> {\n dataString: string;\n cols: TTableColumn<T>[];\n existCheckbox?: boolean;\n rowIndex: number;\n conditionalFormattingString: string;\n onClickRow?: (row: any) => void;\n applyRowFormatting?: (row: any) => string;\n 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 <RowProvider row={row}>\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 />\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 columnKey={col.key as string}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n onUpdateRow={props.onUpdateRow}\n />\n );\n })}\n </tr>\n </RowProvider>\n );\n});\n"],"names":["Row","memo","props","unfocus","useFocusActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsx","RowProvider","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","Checkbox","cols","map","col","j","TableCell","rowIndex","colIndex","columnKey","key","isExistOnClickRow","cellFormatClassName","onUpdateRow"],"mappings":"iSAkBaA,EAAMC,GAAK,SAAiCC,GAC/C,IAAAC,EAAYC,YACdC,EAAMC,KAAKC,MAAML,EAAMM,YACvBC,EAAwBP,EAAMQ,4BAA4BC,MAAM,KAEtE,OACEC,EAACC,EAAW,CAACR,IAAKA,WAChBS,EACE,KAAA,CAAAC,UAAW,0JACTC,OAAEd,EAAMe,WAAa,uBAAyB,GAAE,KAAAD,OAC9Cd,EAAMgB,mBAAqBhB,EAAMgB,mBAAmBb,GAAO,IAC/Dc,QAAS,SAACC,GACRA,EAAEC,iBAEInB,EAAMe,aACVf,EAAMe,WAAWZ,GACjBF,MAEH,cACYE,EAAIiB,GAAEC,SAAA,CAElBrB,EAAMsB,eACLZ,EAAA,KAAA,CAAAW,SACEX,EAACa,QAGJvB,EAAMwB,KAAKC,KAAI,SAACC,EAAKC,GACpB,OACEjB,EAACkB,EAAS,CAERC,SAAU7B,EAAM6B,SAChBC,SAAUH,EACVI,UAAWL,EAAIM,IACfC,oBAAqBjC,EAAMe,WAC3BmB,oBAAqB3B,EAAsBoB,GAC3CQ,YAAanC,EAAMmC,aANdT,EAAIM,IASf,QAIR"}
1
+ {"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { RowProvider } from \"./providers\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\n\ninterface TPropsRow<T extends DataRecord> {\n dataString: string;\n cols: TTableColumn<T>[];\n existCheckbox?: boolean;\n rowIndex: number;\n conditionalFormattingString: string;\n onClickRow?: (row: any) => void;\n applyRowFormatting?: (row: any) => string;\n 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 <RowProvider row={row}>\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 />\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 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 </RowProvider>\n );\n});\n"],"names":["Row","memo","props","unfocus","useFocusActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsx","RowProvider","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","Checkbox","cols","map","col","j","TableCell","rowIndex","colIndex","columnKey","key","isExistOnClickRow","cellFormatClassName","isExistOnUpdateRow","onUpdateRow","editable","_a"],"mappings":"iSAkBaA,EAAMC,GAAK,SAAiCC,GAC/C,IAAAC,EAAYC,YACdC,EAAMC,KAAKC,MAAML,EAAMM,YACvBC,EAAwBP,EAAMQ,4BAA4BC,MAAM,KAEtE,OACEC,EAACC,EAAW,CAACR,IAAKA,WAChBS,EACE,KAAA,CAAAC,UAAW,0JACTC,OAAEd,EAAMe,WAAa,uBAAyB,GAAE,KAAAD,OAC9Cd,EAAMgB,mBAAqBhB,EAAMgB,mBAAmBb,GAAO,IAC/Dc,QAAS,SAACC,GACRA,EAAEC,iBAEInB,EAAMe,aACVf,EAAMe,WAAWZ,GACjBF,MAEH,cACYE,EAAIiB,GAAEC,SAAA,CAElBrB,EAAMsB,eACLZ,EAAA,KAAA,CAAAW,SACEX,EAACa,QAGJvB,EAAMwB,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEjB,EAACkB,EAEC,CAAAC,SAAU7B,EAAM6B,SAChBC,SAAUH,EACVI,UAAWL,EAAIM,IACfC,oBAAqBjC,EAAMe,WAC3BmB,oBAAqB3B,EAAsBoB,GAC3CQ,qBAAsBnC,EAAMoC,YAC5BC,SAA0B,QAAhBC,EAAAZ,EAAIW,gBAAY,IAAAC,GAAAA,GAPrBZ,EAAIM,IAUf,QAIR"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teppen/react-ui",
3
- "version": "1.5.5",
3
+ "version": "1.5.6",
4
4
  "description": "React UI Component",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/esm/src/index.js",
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../sheet/providers.js"),n=t.createContext({type:"string"});exports.CellProvider=function(o){var u,i,l=o.children,s=o.columnKey,d=r.useColumnContext(s),c=r.useRowContext(),a=c[s],v="select"===d.type?null===(i=null===(u=d.options)||void 0===u?void 0:u.find((function(e){return e.value===a})))||void 0===i?void 0:i.label:a,p=t.useMemo((function(){return d.editable?v:d.render?d.render(a,c):v}),[d.editable,v,a,c]),x=!d.editable&&d.render?"component":d.type,C=t.useMemo((function(){return{component:p,type:x}}),[x,p]);return e.jsx(n.Provider,{value:C,children:l})},exports.useCellContext=function(){return t.useContext(n)};
2
- //# sourceMappingURL=provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.js","sources":["../../../../../src/table/cell/provider.tsx"],"sourcesContent":["import { createContext, useContext, useMemo } from \"react\";\nimport { TColumnType } from \"../type\";\nimport { useColumnContext, useRowContext } from \"../sheet\";\n\nconst CellContext = createContext<{\n type: TColumnType | \"component\";\n component?: React.ReactNode;\n}>({\n type: \"string\",\n});\n\nexport function CellProvider({\n children,\n columnKey,\n}: {\n children: React.ReactNode;\n columnKey: string;\n}) {\n const col = useColumnContext(columnKey);\n const row = useRowContext();\n const value = row[columnKey];\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 cellStatus = useMemo(\n () => ({\n component,\n type,\n }),\n [type, component]\n );\n\n return (\n <CellContext.Provider value={cellStatus}>{children}</CellContext.Provider>\n );\n}\n\nexport function useCellContext() {\n return useContext(CellContext);\n}\n"],"names":["CellContext","createContext","type","_a","children","columnKey","col","useColumnContext","row","useRowContext","value","label","_b","options","find","op","_c","component","useMemo","editable","render","cellStatus","_jsx","jsx","Provider","useContext"],"mappings":"sGAIMA,EAAcC,EAAAA,cAGjB,CACDC,KAAM,gCAGF,SAAuBC,WAC3BC,EAAQD,EAAAC,SACRC,EAASF,EAAAE,UAKHC,EAAMC,mBAAiBF,GACvBG,EAAMC,EAAAA,gBACNC,EAAQF,EAAIH,GAEZM,EACS,WAAbL,EAAIJ,KAC6C,UAAlC,QAAXU,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGL,QAAUA,CAAb,WAAmB,IAAAM,OAAA,EAAAA,EAAEL,MAC/CD,EAEAO,EAAYC,EAAAA,SAAQ,WACxB,OAAIZ,EAAIa,SACCR,EAEAL,EAAIc,OAASd,EAAIc,OAAOV,EAAgBF,GAAOG,CAE1D,GAAG,CAACL,EAAIa,SAAUR,EAAOD,EAAOF,IAE1BN,GACHI,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIJ,KAE5CmB,EAAaH,WACjB,WAAM,MAAC,CACLD,UAASA,EACTf,KAAIA,KAEN,CAACA,EAAMe,IAGT,OACEK,EAAAC,IAACvB,EAAYwB,SAAQ,CAACd,MAAOW,EAAUjB,SAAGA,GAE9C,oCAGE,OAAOqB,EAAAA,WAAWzB,EACpB"}
@@ -1,2 +0,0 @@
1
- import{jsx as e}from"react/jsx-runtime";import{createContext as r,useContext as n,useMemo as t}from"react";import{useColumnContext as o,useRowContext as i}from"../sheet/providers.js";var u=r({type:"string"});function d(r){var n,d,l=r.children,c=r.columnKey,p=o(c),a=i(),m=a[c],v="select"===p.type?null===(d=null===(n=p.options)||void 0===n?void 0:n.find((function(e){return e.value===m})))||void 0===d?void 0:d.label:m,f=t((function(){return p.editable?v:p.render?p.render(m,a):v}),[p.editable,v,m,a]),s=!p.editable&&p.render?"component":p.type,y=t((function(){return{component:f,type:s}}),[s,f]);return e(u.Provider,{value:y,children:l})}function l(){return n(u)}export{d as CellProvider,l as useCellContext};
2
- //# sourceMappingURL=provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.js","sources":["../../../../../src/table/cell/provider.tsx"],"sourcesContent":["import { createContext, useContext, useMemo } from \"react\";\nimport { TColumnType } from \"../type\";\nimport { useColumnContext, useRowContext } from \"../sheet\";\n\nconst CellContext = createContext<{\n type: TColumnType | \"component\";\n component?: React.ReactNode;\n}>({\n type: \"string\",\n});\n\nexport function CellProvider({\n children,\n columnKey,\n}: {\n children: React.ReactNode;\n columnKey: string;\n}) {\n const col = useColumnContext(columnKey);\n const row = useRowContext();\n const value = row[columnKey];\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 cellStatus = useMemo(\n () => ({\n component,\n type,\n }),\n [type, component]\n );\n\n return (\n <CellContext.Provider value={cellStatus}>{children}</CellContext.Provider>\n );\n}\n\nexport function useCellContext() {\n return useContext(CellContext);\n}\n"],"names":["CellContext","createContext","type","CellProvider","_a","children","columnKey","col","useColumnContext","row","useRowContext","value","label","_b","options","find","op","_c","component","useMemo","editable","render","cellStatus","_jsx","Provider","useCellContext","useContext"],"mappings":"uLAIA,IAAMA,EAAcC,EAGjB,CACDC,KAAM,WAGF,SAAUC,EAAaC,WAC3BC,EAAQD,EAAAC,SACRC,EAASF,EAAAE,UAKHC,EAAMC,EAAiBF,GACvBG,EAAMC,IACNC,EAAQF,EAAIH,GAEZM,EACS,WAAbL,EAAIL,KAC6C,UAAlC,QAAXW,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGL,QAAUA,CAAb,WAAmB,IAAAM,OAAA,EAAAA,EAAEL,MAC/CD,EAEAO,EAAYC,GAAQ,WACxB,OAAIZ,EAAIa,SACCR,EAEAL,EAAIc,OAASd,EAAIc,OAAOV,EAAgBF,GAAOG,CAE1D,GAAG,CAACL,EAAIa,SAAUR,EAAOD,EAAOF,IAE1BP,GACHK,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIL,KAE5CoB,EAAaH,GACjB,WAAM,MAAC,CACLD,UAASA,EACThB,KAAIA,KAEN,CAACA,EAAMgB,IAGT,OACEK,EAACvB,EAAYwB,SAAQ,CAACb,MAAOW,EAAUjB,SAAGA,GAE9C,UAEgBoB,IACd,OAAOC,EAAW1B,EACpB"}