@teppen/react-ui 1.5.13 → 1.5.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/table/edit/ui/base-input.js +1 -1
- package/dist/cjs/src/table/operation/components/keyboard-setting.js +1 -1
- package/dist/cjs/src/table/operation/components/keyboard-setting.js.map +1 -1
- package/dist/cjs/src/table/sort/hooks.js +1 -1
- package/dist/cjs/src/table/sort/hooks.js.map +1 -1
- package/dist/esm/src/table/edit/ui/base-input.js +1 -1
- package/dist/esm/src/table/operation/components/keyboard-setting.js +1 -1
- package/dist/esm/src/table/operation/components/keyboard-setting.js.map +1 -1
- package/dist/esm/src/table/sort/hooks.js +1 -1
- package/dist/esm/src/table/sort/hooks.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
"use strict";var e=require("react/jsx-runtime"),
|
|
2
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../../../icon/cancel-icon.js");exports.CellInput=function(r){var u=t.useRef(null);return t.useEffect((function(){u.current&&u.current.focus()}),[u]),e.jsxs("div",{className:"flex justify-between gap-1 w-full items-center",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:[e.jsx("input",{id:"edit-input",ref:u,className:"w-full py-1 px-2 bg-white text-gray-900",type:"text",value:r.value,onChange:r.onChange,onBlur:r.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(r.reset(),r.endEditing())}}),e.jsx("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){r.reset(),r.endEditing()}),300)},children:e.jsx(n.CancelIcon,{size:16})})]})};
|
|
3
3
|
//# sourceMappingURL=base-input.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),t=require("react"),
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../../table-property/provider.js"),r=require("../../focus/provider.js"),i=require("../../edit/provider.js"),o=require("../../sheet/providers.js"),u=function(e){var t,n=document.getElementById("edit-input");if(n){var r=null===(t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value"))||void 0===t?void 0:t.set;r&&r.call(n,e);var i=new Event("input",{bubbles:!0});n.dispatchEvent(i)}};exports.KeyboardSetting=function(){var s=r.useFocusContext(),a=i.useEditContext(),f=n.useTablePropertyStateContext(),d=f.maxDisplayColCount,l=f.maxDisplayRowCount,p=o.useColumnsContext()[s.isFocus?s.colIndex:0],c=s.isFocus?s.rowIndex:-1,v=s.isFocus?s.colIndex:-1;return t.useEffect((function(){var e=function(e){if(a.isEditing)"Escape"===e.key&&(e.preventDefault(),a.endEditing());else if(s.isFocus)if("Enter"===e.key)e.preventDefault(),s.moveDown();else if("Escape"===e.key)e.preventDefault(),s.unfocus();else if("ArrowRight"===e.key){if(e.preventDefault(),s.colIndex===d-1)return;s.moveRight()}else if("ArrowLeft"===e.key){if(e.preventDefault(),0===s.colIndex)return;s.moveLeft()}else if("ArrowUp"===e.key){if(e.preventDefault(),0===s.rowIndex)return;s.moveUp()}else if("ArrowDown"===e.key){if(e.preventDefault(),s.rowIndex===l-1)return;s.moveDown()}else"F2"===e.key?(e.preventDefault(),a.startEditing()):/^[a-zA-Z0-9]$/.test(e.key)?(e.preventDefault(),e.stopPropagation(),a.startEditing(),setTimeout((function(){u(e.key)}),10)):"Backspace"!==e.key&&"Delete"!==e.key||(e.preventDefault(),e.stopPropagation(),a.startEditing(),setTimeout((function(){u("")}),10))};return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[a.isEditing,s.isFocus,c,v]),t.useEffect((function(){a.isEditing&&!p.editable&&a.endEditing()}),[a,p]),e.jsx(e.Fragment,{})};
|
|
2
2
|
//# sourceMappingURL=keyboard-setting.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard-setting.js","sources":["../../../../../../src/table/operation/components/keyboard-setting.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useTablePropertyStateContext } from \"../../table-property/provider\";\nimport { useFocusContext } from \"../../focus/provider\";\nimport { useEditContext } from \"../../edit/provider\";\nimport { useColumnsContext } from \"../../sheet/providers\";\n\nexport function KeyboardSetting() {\n const focus = useFocusContext();\n const edit = useEditContext();\n const { maxDisplayColCount, maxDisplayRowCount } =\n useTablePropertyStateContext();\n const col = useColumnsContext()[focus.isFocus ? focus.colIndex : 0];\n\n const rowIndex = focus.isFocus ? focus.rowIndex : -1;\n const colIndex = focus.isFocus ? focus.colIndex : -1;\n\n useEffect(() => {\n const listener = (e: KeyboardEvent) => {\n if (edit.isEditing) {\n if (e.key === \"Escape\") {\n e.preventDefault();\n edit.endEditing();\n }\n } else if (focus.isFocus) {\n if (e.key === \"Enter\") {\n e.preventDefault();\n focus.moveDown();\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n focus.unfocus();\n } else if (e.key === \"ArrowRight\") {\n e.preventDefault();\n\n if (focus.colIndex === maxDisplayColCount - 1) return;\n\n focus.moveRight();\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n\n if (focus.colIndex === 0) return;\n\n focus.moveLeft();\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n\n if (focus.rowIndex === 0) return;\n\n focus.moveUp();\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n\n if (focus.rowIndex === maxDisplayRowCount - 1) return;\n\n focus.moveDown();\n } else if (e.key === \"F2\") {\n e.preventDefault();\n edit.startEditing();\n }\n }\n };\n\n document.addEventListener(\"keydown\", listener);\n\n return () => {\n document.removeEventListener(\"keydown\", listener);\n };\n }, [edit.isEditing, focus.isFocus, rowIndex, colIndex]);\n\n useEffect(() => {\n if (edit.isEditing && !col.editable) {\n edit.endEditing();\n }\n }, [edit, col]);\n\n return <></>;\n}\n"],"names":["focus","useFocusContext","edit","useEditContext","
|
|
1
|
+
{"version":3,"file":"keyboard-setting.js","sources":["../../../../../../src/table/operation/components/keyboard-setting.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useTablePropertyStateContext } from \"../../table-property/provider\";\nimport { useFocusContext } from \"../../focus/provider\";\nimport { useEditContext } from \"../../edit/provider\";\nimport { useColumnsContext } from \"../../sheet/providers\";\n\nconst setInitialValueToInputForm = (key: string) => {\n const inputElement = document.getElementById(\"edit-input\");\n if (inputElement) {\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n \"value\"\n )?.set;\n\n if (nativeInputValueSetter) {\n nativeInputValueSetter.call(inputElement, key);\n }\n\n const ev = new Event(\"input\", { bubbles: true });\n inputElement.dispatchEvent(ev);\n }\n};\n\nexport function KeyboardSetting() {\n const focus = useFocusContext();\n const edit = useEditContext();\n const { maxDisplayColCount, maxDisplayRowCount } =\n useTablePropertyStateContext();\n const col = useColumnsContext()[focus.isFocus ? focus.colIndex : 0];\n\n const rowIndex = focus.isFocus ? focus.rowIndex : -1;\n const colIndex = focus.isFocus ? focus.colIndex : -1;\n\n useEffect(() => {\n const listener = (e: KeyboardEvent) => {\n if (edit.isEditing) {\n if (e.key === \"Escape\") {\n e.preventDefault();\n edit.endEditing();\n }\n } else if (focus.isFocus) {\n if (e.key === \"Enter\") {\n e.preventDefault();\n focus.moveDown();\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n focus.unfocus();\n } else if (e.key === \"ArrowRight\") {\n e.preventDefault();\n\n if (focus.colIndex === maxDisplayColCount - 1) return;\n\n focus.moveRight();\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n\n if (focus.colIndex === 0) return;\n\n focus.moveLeft();\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n\n if (focus.rowIndex === 0) return;\n\n focus.moveUp();\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n\n if (focus.rowIndex === maxDisplayRowCount - 1) return;\n\n focus.moveDown();\n } else if (e.key === \"F2\") {\n e.preventDefault();\n edit.startEditing();\n } else if (/^[a-zA-Z0-9]$/.test(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n edit.startEditing();\n\n setTimeout(() => {\n setInitialValueToInputForm(e.key);\n }, 10);\n } else if (e.key === \"Backspace\" || e.key === \"Delete\") {\n e.preventDefault();\n e.stopPropagation();\n edit.startEditing();\n\n setTimeout(() => {\n setInitialValueToInputForm(\"\");\n }, 10);\n }\n }\n };\n\n document.addEventListener(\"keydown\", listener);\n\n return () => {\n document.removeEventListener(\"keydown\", listener);\n };\n }, [edit.isEditing, focus.isFocus, rowIndex, colIndex]);\n\n useEffect(() => {\n if (edit.isEditing && !col.editable) {\n edit.endEditing();\n }\n }, [edit, col]);\n\n return <></>;\n}\n"],"names":["setInitialValueToInputForm","key","inputElement","document","getElementById","nativeInputValueSetter","_a","Object","getOwnPropertyDescriptor","window","HTMLInputElement","prototype","set","call","ev","Event","bubbles","dispatchEvent","focus","useFocusContext","edit","useEditContext","useTablePropertyStateContext","maxDisplayColCount","maxDisplayRowCount","col","useColumnsContext","isFocus","colIndex","rowIndex","useEffect","listener","e","isEditing","preventDefault","endEditing","moveDown","unfocus","moveRight","moveLeft","moveUp","startEditing","test","stopPropagation","setTimeout","addEventListener","removeEventListener","editable","_jsx"],"mappings":"gOAMMA,EAA6B,SAACC,SAC5BC,EAAeC,SAASC,eAAe,cAC7C,GAAIF,EAAc,CAChB,IAAMG,EAGL,QAH8BC,EAAAC,OAAOC,yBACpCC,OAAOC,iBAAiBC,UACxB,gBACD,IAAAL,OAAA,EAAAA,EAAEM,IAECP,GACFA,EAAuBQ,KAAKX,EAAcD,GAG5C,IAAMa,EAAK,IAAIC,MAAM,QAAS,CAAEC,SAAS,IACzCd,EAAae,cAAcH,EAC5B,CACH,qCAGE,IAAMI,EAAQC,EAAAA,kBACRC,EAAOC,EAAAA,iBACPf,EACJgB,EAA4BA,+BADtBC,EAAkBjB,EAAAiB,mBAAEC,EAAkBlB,EAAAkB,mBAExCC,EAAMC,EAAiBA,oBAAGR,EAAMS,QAAUT,EAAMU,SAAW,GAE3DC,EAAWX,EAAMS,QAAUT,EAAMW,UAAY,EAC7CD,EAAWV,EAAMS,QAAUT,EAAMU,UAAY,EA4EnD,OA1EAE,EAAAA,WAAU,WACR,IAAMC,EAAW,SAACC,GAChB,GAAIZ,EAAKa,UACO,WAAVD,EAAE/B,MACJ+B,EAAEE,iBACFd,EAAKe,mBAEF,GAAIjB,EAAMS,QACf,GAAc,UAAVK,EAAE/B,IACJ+B,EAAEE,iBACFhB,EAAMkB,gBACD,GAAc,WAAVJ,EAAE/B,IACX+B,EAAEE,iBACFhB,EAAMmB,eACD,GAAc,eAAVL,EAAE/B,IAAsB,CAGjC,GAFA+B,EAAEE,iBAEEhB,EAAMU,WAAaL,EAAqB,EAAG,OAE/CL,EAAMoB,WACP,MAAM,GAAc,cAAVN,EAAE/B,IAAqB,CAGhC,GAFA+B,EAAEE,iBAEqB,IAAnBhB,EAAMU,SAAgB,OAE1BV,EAAMqB,UACP,MAAM,GAAc,YAAVP,EAAE/B,IAAmB,CAG9B,GAFA+B,EAAEE,iBAEqB,IAAnBhB,EAAMW,SAAgB,OAE1BX,EAAMsB,QACP,MAAM,GAAc,cAAVR,EAAE/B,IAAqB,CAGhC,GAFA+B,EAAEE,iBAEEhB,EAAMW,WAAaL,EAAqB,EAAG,OAE/CN,EAAMkB,UACP,KAAoB,OAAVJ,EAAE/B,KACX+B,EAAEE,iBACFd,EAAKqB,gBACI,gBAAgBC,KAAKV,EAAE/B,MAChC+B,EAAEE,iBACFF,EAAEW,kBACFvB,EAAKqB,eAELG,YAAW,WACT5C,EAA2BgC,EAAE/B,IAC9B,GAAE,KACgB,cAAV+B,EAAE/B,KAAiC,WAAV+B,EAAE/B,MACpC+B,EAAEE,iBACFF,EAAEW,kBACFvB,EAAKqB,eAELG,YAAW,WACT5C,EAA2B,GAC5B,GAAE,IAGT,EAIA,OAFAG,SAAS0C,iBAAiB,UAAWd,GAE9B,WACL5B,SAAS2C,oBAAoB,UAAWf,EAC1C,CACF,GAAG,CAACX,EAAKa,UAAWf,EAAMS,QAASE,EAAUD,IAE7CE,EAAAA,WAAU,WACJV,EAAKa,YAAcR,EAAIsB,UACzB3B,EAAKe,YAET,GAAG,CAACf,EAAMK,IAEHuB,oBACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),a=require("react"),t=function(a,t){switch(t.type){case"changeKey":return{key:t.payload.key,asc:!0,isUpdatedData:!1,sortTiming:a.sortTiming+1};case"changeOrder":return a.isUpdatedData?e.__assign(e.__assign({},a),{isUpdatedData:!1,sortTiming:a.sortTiming+1}):e.__assign(e.__assign({},a),{asc:!a.asc,sortTiming:a.sortTiming+1});case"updateData":return e.__assign(e.__assign({},a),{isUpdatedData:!0})}};exports.useSortReducer=function(s){var i,n,r=a.useReducer(t,{key:null!==(i=null==s?void 0:s.key)&&void 0!==i?i:"id",asc:null===(n=null==s?void 0:s.asc)||void 0===n||n,isUpdatedData:!1,sortTiming:0}),c=r[0],d=r[1],u=function(e){d({type:"changeKey",payload:{key:e}})},o=function(){d({type:"changeOrder"})},y=function(){d({type:"updateData"})},g=a.useCallback((function(a){return e.__spreadArray([],a,!0).sort((function(e,a){return
|
|
1
|
+
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),a=require("react"),t=function(a,t){switch(t.type){case"changeKey":return{key:t.payload.key,asc:!0,isUpdatedData:!1,sortTiming:a.sortTiming+1};case"changeOrder":return a.isUpdatedData?e.__assign(e.__assign({},a),{isUpdatedData:!1,sortTiming:a.sortTiming+1}):e.__assign(e.__assign({},a),{asc:!a.asc,sortTiming:a.sortTiming+1});case"updateData":return e.__assign(e.__assign({},a),{isUpdatedData:!0})}};exports.useSortReducer=function(s){var i,n,r=a.useReducer(t,{key:null!==(i=null==s?void 0:s.key)&&void 0!==i?i:"id",asc:null===(n=null==s?void 0:s.asc)||void 0===n||n,isUpdatedData:!1,sortTiming:0}),c=r[0],d=r[1],u=function(e){d({type:"changeKey",payload:{key:e}})},o=function(){d({type:"changeOrder"})},y=function(){d({type:"updateData"})},g=a.useCallback((function(a){return e.__spreadArray([],a,!0).sort((function(e,a){return""===e[c.key]&&""===a[c.key]?0:""===e[c.key]?1:""===a[c.key]?-1:e[c.key]<a[c.key]?c.asc?-1:1:e[c.key]>a[c.key]?c.asc?1:-1:0}))}),[c.key,c.asc]);return{state:a.useMemo((function(){return{key:c.key,asc:c.asc,isUpdatedData:c.isUpdatedData}}),[c.key,c.asc,c.isUpdatedData]),actions:a.useMemo((function(){return{changeKey:u,changeOrder:o,updatedData:y,sort:g}}),[g]),sortTiming:c.sortTiming}};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return {\n key: action.payload.key,\n asc: true,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n case \"changeOrder\":\n if (state.isUpdatedData) {\n return {\n ...state,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n } else {\n return { ...state, asc: !state.asc, sortTiming: state.sortTiming + 1 };\n }\n case \"updateData\":\n return { ...state, isUpdatedData: true };\n }\n};\n\nexport function useSortReducer<T extends DataRecord>(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer<T> {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n isUpdatedData: false,\n sortTiming: 0,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const updatedData = () => {\n dispatch({ type: \"updateData\" });\n };\n\n const sort = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]) =>\n [...rows].sort((a, b) => {\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\n }),\n [state.key, state.asc]\n );\n\n const stateExcludeSortTiming = useMemo(\n () => ({\n key: state.key,\n asc: state.asc,\n isUpdatedData: state.isUpdatedData,\n }),\n [state.key, state.asc, state.isUpdatedData]\n );\n\n const actions = useMemo(\n () => ({ changeKey, changeOrder, updatedData, sort }),\n [sort]\n );\n\n return {\n state: stateExcludeSortTiming,\n actions,\n sortTiming: state.sortTiming,\n };\n}\n"],"names":["reducer","state","action","type","key","payload","asc","isUpdatedData","sortTiming","__assign","initial","_c","useReducer","_a","_b","dispatch","changeKey","changeOrder","updatedData","sort","useCallback","rows","__spreadArray","a","b","useMemo","actions"],"mappings":"0FAIMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CACLC,IAAKF,EAAOG,QAAQD,IACpBE,KAAK,EACLC,eAAe,EACfC,WAAYP,EAAMO,WAAa,GAEnC,IAAK,cACH,OAAIP,EAAMM,cACRE,EAAAA,SAAAA,EAAAA,SAAA,GACKR,GAAK,CACRM,eAAe,EACfC,WAAYP,EAAMO,WAAa,IAGjCC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYR,GAAO,CAAAK,KAAML,EAAMK,IAAKE,WAAYP,EAAMO,WAAa,IAEvE,IAAK,aACH,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,GAAYR,GAAK,CAAEM,eAAe,IAExC,yBAEM,SAA+CG,WAI7CC,EAAoBC,EAAUA,WAACZ,EAAS,CAC5CI,IAAiB,QAAZS,EAAAH,eAAAA,EAASN,WAAG,IAAAS,EAAAA,EAAI,KACrBP,IAAiB,QAAZQ,EAAAJ,eAAAA,EAASJ,WAAG,IAAAQ,GAAAA,EACjBP,eAAe,EACfC,WAAY,IAJPP,EAAKU,EAAA,GAAEI,OAORC,EAAY,SAACZ,GACjBW,EAAS,CAAEZ,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAEMa,EAAc,WAClBF,EAAS,CAAEZ,KAAM,eACnB,EAEMe,EAAc,WAClBH,EAAS,CAAEZ,KAAM,cACnB,EAEMgB,EAAOC,eACX,SAAuBC,GACrB,OAAAC,EAAAA,cAAA,GAAID,GAAM,GAAAF,MAAK,SAACI,EAAGC,GACjB,
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return {\n key: action.payload.key,\n asc: true,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n case \"changeOrder\":\n if (state.isUpdatedData) {\n return {\n ...state,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n } else {\n return { ...state, asc: !state.asc, sortTiming: state.sortTiming + 1 };\n }\n case \"updateData\":\n return { ...state, isUpdatedData: true };\n }\n};\n\nexport function useSortReducer<T extends DataRecord>(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer<T> {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n isUpdatedData: false,\n sortTiming: 0,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const updatedData = () => {\n dispatch({ type: \"updateData\" });\n };\n\n const sort = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]) =>\n [...rows].sort((a, b) => {\n if (a[state.key] === \"\" && b[state.key] === \"\") {\n return 0;\n } else if (a[state.key] === \"\") {\n return 1;\n } else if (b[state.key] === \"\") {\n return -1;\n }\n\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\n }),\n [state.key, state.asc]\n );\n\n const stateExcludeSortTiming = useMemo(\n () => ({\n key: state.key,\n asc: state.asc,\n isUpdatedData: state.isUpdatedData,\n }),\n [state.key, state.asc, state.isUpdatedData]\n );\n\n const actions = useMemo(\n () => ({ changeKey, changeOrder, updatedData, sort }),\n [sort]\n );\n\n return {\n state: stateExcludeSortTiming,\n actions,\n sortTiming: state.sortTiming,\n };\n}\n"],"names":["reducer","state","action","type","key","payload","asc","isUpdatedData","sortTiming","__assign","initial","_c","useReducer","_a","_b","dispatch","changeKey","changeOrder","updatedData","sort","useCallback","rows","__spreadArray","a","b","useMemo","actions"],"mappings":"0FAIMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CACLC,IAAKF,EAAOG,QAAQD,IACpBE,KAAK,EACLC,eAAe,EACfC,WAAYP,EAAMO,WAAa,GAEnC,IAAK,cACH,OAAIP,EAAMM,cACRE,EAAAA,SAAAA,EAAAA,SAAA,GACKR,GAAK,CACRM,eAAe,EACfC,WAAYP,EAAMO,WAAa,IAGjCC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYR,GAAO,CAAAK,KAAML,EAAMK,IAAKE,WAAYP,EAAMO,WAAa,IAEvE,IAAK,aACH,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,GAAYR,GAAK,CAAEM,eAAe,IAExC,yBAEM,SAA+CG,WAI7CC,EAAoBC,EAAUA,WAACZ,EAAS,CAC5CI,IAAiB,QAAZS,EAAAH,eAAAA,EAASN,WAAG,IAAAS,EAAAA,EAAI,KACrBP,IAAiB,QAAZQ,EAAAJ,eAAAA,EAASJ,WAAG,IAAAQ,GAAAA,EACjBP,eAAe,EACfC,WAAY,IAJPP,EAAKU,EAAA,GAAEI,OAORC,EAAY,SAACZ,GACjBW,EAAS,CAAEZ,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAEMa,EAAc,WAClBF,EAAS,CAAEZ,KAAM,eACnB,EAEMe,EAAc,WAClBH,EAAS,CAAEZ,KAAM,cACnB,EAEMgB,EAAOC,eACX,SAAuBC,GACrB,OAAAC,EAAAA,cAAA,GAAID,GAAM,GAAAF,MAAK,SAACI,EAAGC,GACjB,MAAqB,KAAjBD,EAAEtB,EAAMG,MAAgC,KAAjBoB,EAAEvB,EAAMG,KAC1B,EACmB,KAAjBmB,EAAEtB,EAAMG,KACV,EACmB,KAAjBoB,EAAEvB,EAAMG,MACT,EAGNmB,EAAEtB,EAAMG,KAAOoB,EAAEvB,EAAMG,KAClBH,EAAMK,KAAO,EAAI,EAEtBiB,EAAEtB,EAAMG,KAAOoB,EAAEvB,EAAMG,KAClBH,EAAMK,IAAM,GAAK,EAEnB,CACT,GAAE,GACJ,CAACL,EAAMG,IAAKH,EAAMK,MAiBpB,MAAO,CACLL,MAf6BwB,WAC7B,WAAM,MAAC,CACLrB,IAAKH,EAAMG,IACXE,IAAKL,EAAMK,IACXC,cAAeN,EAAMM,cACrB,GACF,CAACN,EAAMG,IAAKH,EAAMK,IAAKL,EAAMM,gBAU7BmB,QAPcD,EAAAA,SACd,WAAM,MAAC,CAAET,UAASA,EAAEC,YAAWA,EAAEC,YAAWA,EAAEC,KAAIA,EAAG,GACrD,CAACA,IAMDX,WAAYP,EAAMO,WAEtB"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as n,useEffect as r}from"react";import{CancelIcon as o}from"../../../icon/cancel-icon.js";function i(i){var u=n(null);return r((function(){u.current&&u.current.focus()}),[u]),e("div",{className:"flex justify-between gap-1 w-full items-center",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:[t("input",{ref:u,className:"w-full py-1 px-2 bg-white text-gray-900",type:"text",value:i.value,onChange:i.onChange,onBlur:i.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(i.reset(),i.endEditing())}}),t("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){i.reset(),i.endEditing()}),300)},children:t(o,{size:16})})]})}export{i as CellInput};
|
|
2
|
+
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as n,useEffect as r}from"react";import{CancelIcon as o}from"../../../icon/cancel-icon.js";function i(i){var u=n(null);return r((function(){u.current&&u.current.focus()}),[u]),e("div",{className:"flex justify-between gap-1 w-full items-center",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:[t("input",{id:"edit-input",ref:u,className:"w-full py-1 px-2 bg-white text-gray-900",type:"text",value:i.value,onChange:i.onChange,onBlur:i.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(i.reset(),i.endEditing())}}),t("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){i.reset(),i.endEditing()}),300)},children:t(o,{size:16})})]})}export{i as CellInput};
|
|
3
3
|
//# sourceMappingURL=base-input.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,Fragment as
|
|
1
|
+
import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useEffect as n}from"react";import{useTablePropertyStateContext as r}from"../../table-property/provider.js";import{useFocusContext as o}from"../../focus/provider.js";import{useEditContext as i}from"../../edit/provider.js";import{useColumnsContext as s}from"../../sheet/providers.js";var u=function(e){var t,n=document.getElementById("edit-input");if(n){var r=null===(t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value"))||void 0===t?void 0:t.set;r&&r.call(n,e);var o=new Event("input",{bubbles:!0});n.dispatchEvent(o)}};function p(){var p=o(),f=i(),a=r(),d=a.maxDisplayColCount,l=a.maxDisplayRowCount,v=s()[p.isFocus?p.colIndex:0],c=p.isFocus?p.rowIndex:-1,m=p.isFocus?p.colIndex:-1;return n((function(){var e=function(e){if(f.isEditing)"Escape"===e.key&&(e.preventDefault(),f.endEditing());else if(p.isFocus)if("Enter"===e.key)e.preventDefault(),p.moveDown();else if("Escape"===e.key)e.preventDefault(),p.unfocus();else if("ArrowRight"===e.key){if(e.preventDefault(),p.colIndex===d-1)return;p.moveRight()}else if("ArrowLeft"===e.key){if(e.preventDefault(),0===p.colIndex)return;p.moveLeft()}else if("ArrowUp"===e.key){if(e.preventDefault(),0===p.rowIndex)return;p.moveUp()}else if("ArrowDown"===e.key){if(e.preventDefault(),p.rowIndex===l-1)return;p.moveDown()}else"F2"===e.key?(e.preventDefault(),f.startEditing()):/^[a-zA-Z0-9]$/.test(e.key)?(e.preventDefault(),e.stopPropagation(),f.startEditing(),setTimeout((function(){u(e.key)}),10)):"Backspace"!==e.key&&"Delete"!==e.key||(e.preventDefault(),e.stopPropagation(),f.startEditing(),setTimeout((function(){u("")}),10))};return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[f.isEditing,p.isFocus,c,m]),n((function(){f.isEditing&&!v.editable&&f.endEditing()}),[f,v]),e(t,{})}export{p as KeyboardSetting};
|
|
2
2
|
//# sourceMappingURL=keyboard-setting.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard-setting.js","sources":["../../../../../../src/table/operation/components/keyboard-setting.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useTablePropertyStateContext } from \"../../table-property/provider\";\nimport { useFocusContext } from \"../../focus/provider\";\nimport { useEditContext } from \"../../edit/provider\";\nimport { useColumnsContext } from \"../../sheet/providers\";\n\nexport function KeyboardSetting() {\n const focus = useFocusContext();\n const edit = useEditContext();\n const { maxDisplayColCount, maxDisplayRowCount } =\n useTablePropertyStateContext();\n const col = useColumnsContext()[focus.isFocus ? focus.colIndex : 0];\n\n const rowIndex = focus.isFocus ? focus.rowIndex : -1;\n const colIndex = focus.isFocus ? focus.colIndex : -1;\n\n useEffect(() => {\n const listener = (e: KeyboardEvent) => {\n if (edit.isEditing) {\n if (e.key === \"Escape\") {\n e.preventDefault();\n edit.endEditing();\n }\n } else if (focus.isFocus) {\n if (e.key === \"Enter\") {\n e.preventDefault();\n focus.moveDown();\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n focus.unfocus();\n } else if (e.key === \"ArrowRight\") {\n e.preventDefault();\n\n if (focus.colIndex === maxDisplayColCount - 1) return;\n\n focus.moveRight();\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n\n if (focus.colIndex === 0) return;\n\n focus.moveLeft();\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n\n if (focus.rowIndex === 0) return;\n\n focus.moveUp();\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n\n if (focus.rowIndex === maxDisplayRowCount - 1) return;\n\n focus.moveDown();\n } else if (e.key === \"F2\") {\n e.preventDefault();\n edit.startEditing();\n }\n }\n };\n\n document.addEventListener(\"keydown\", listener);\n\n return () => {\n document.removeEventListener(\"keydown\", listener);\n };\n }, [edit.isEditing, focus.isFocus, rowIndex, colIndex]);\n\n useEffect(() => {\n if (edit.isEditing && !col.editable) {\n edit.endEditing();\n }\n }, [edit, col]);\n\n return <></>;\n}\n"],"names":["KeyboardSetting","focus","useFocusContext","edit","useEditContext","
|
|
1
|
+
{"version":3,"file":"keyboard-setting.js","sources":["../../../../../../src/table/operation/components/keyboard-setting.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useTablePropertyStateContext } from \"../../table-property/provider\";\nimport { useFocusContext } from \"../../focus/provider\";\nimport { useEditContext } from \"../../edit/provider\";\nimport { useColumnsContext } from \"../../sheet/providers\";\n\nconst setInitialValueToInputForm = (key: string) => {\n const inputElement = document.getElementById(\"edit-input\");\n if (inputElement) {\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n \"value\"\n )?.set;\n\n if (nativeInputValueSetter) {\n nativeInputValueSetter.call(inputElement, key);\n }\n\n const ev = new Event(\"input\", { bubbles: true });\n inputElement.dispatchEvent(ev);\n }\n};\n\nexport function KeyboardSetting() {\n const focus = useFocusContext();\n const edit = useEditContext();\n const { maxDisplayColCount, maxDisplayRowCount } =\n useTablePropertyStateContext();\n const col = useColumnsContext()[focus.isFocus ? focus.colIndex : 0];\n\n const rowIndex = focus.isFocus ? focus.rowIndex : -1;\n const colIndex = focus.isFocus ? focus.colIndex : -1;\n\n useEffect(() => {\n const listener = (e: KeyboardEvent) => {\n if (edit.isEditing) {\n if (e.key === \"Escape\") {\n e.preventDefault();\n edit.endEditing();\n }\n } else if (focus.isFocus) {\n if (e.key === \"Enter\") {\n e.preventDefault();\n focus.moveDown();\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n focus.unfocus();\n } else if (e.key === \"ArrowRight\") {\n e.preventDefault();\n\n if (focus.colIndex === maxDisplayColCount - 1) return;\n\n focus.moveRight();\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n\n if (focus.colIndex === 0) return;\n\n focus.moveLeft();\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n\n if (focus.rowIndex === 0) return;\n\n focus.moveUp();\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n\n if (focus.rowIndex === maxDisplayRowCount - 1) return;\n\n focus.moveDown();\n } else if (e.key === \"F2\") {\n e.preventDefault();\n edit.startEditing();\n } else if (/^[a-zA-Z0-9]$/.test(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n edit.startEditing();\n\n setTimeout(() => {\n setInitialValueToInputForm(e.key);\n }, 10);\n } else if (e.key === \"Backspace\" || e.key === \"Delete\") {\n e.preventDefault();\n e.stopPropagation();\n edit.startEditing();\n\n setTimeout(() => {\n setInitialValueToInputForm(\"\");\n }, 10);\n }\n }\n };\n\n document.addEventListener(\"keydown\", listener);\n\n return () => {\n document.removeEventListener(\"keydown\", listener);\n };\n }, [edit.isEditing, focus.isFocus, rowIndex, colIndex]);\n\n useEffect(() => {\n if (edit.isEditing && !col.editable) {\n edit.endEditing();\n }\n }, [edit, col]);\n\n return <></>;\n}\n"],"names":["setInitialValueToInputForm","key","inputElement","document","getElementById","nativeInputValueSetter","_a","Object","getOwnPropertyDescriptor","window","HTMLInputElement","prototype","set","call","ev","Event","bubbles","dispatchEvent","KeyboardSetting","focus","useFocusContext","edit","useEditContext","useTablePropertyStateContext","maxDisplayColCount","maxDisplayRowCount","col","useColumnsContext","isFocus","colIndex","rowIndex","useEffect","listener","e","isEditing","preventDefault","endEditing","moveDown","unfocus","moveRight","moveLeft","moveUp","startEditing","test","stopPropagation","setTimeout","addEventListener","removeEventListener","editable","_jsx"],"mappings":"uVAMA,IAAMA,EAA6B,SAACC,SAC5BC,EAAeC,SAASC,eAAe,cAC7C,GAAIF,EAAc,CAChB,IAAMG,EAGL,QAH8BC,EAAAC,OAAOC,yBACpCC,OAAOC,iBAAiBC,UACxB,gBACD,IAAAL,OAAA,EAAAA,EAAEM,IAECP,GACFA,EAAuBQ,KAAKX,EAAcD,GAG5C,IAAMa,EAAK,IAAIC,MAAM,QAAS,CAAEC,SAAS,IACzCd,EAAae,cAAcH,EAC5B,CACH,WAEgBI,IACd,IAAMC,EAAQC,IACRC,EAAOC,IACPhB,EACJiB,IADMC,EAAkBlB,EAAAkB,mBAAEC,EAAkBnB,EAAAmB,mBAExCC,EAAMC,IAAoBR,EAAMS,QAAUT,EAAMU,SAAW,GAE3DC,EAAWX,EAAMS,QAAUT,EAAMW,UAAY,EAC7CD,EAAWV,EAAMS,QAAUT,EAAMU,UAAY,EA4EnD,OA1EAE,GAAU,WACR,IAAMC,EAAW,SAACC,GAChB,GAAIZ,EAAKa,UACO,WAAVD,EAAEhC,MACJgC,EAAEE,iBACFd,EAAKe,mBAEF,GAAIjB,EAAMS,QACf,GAAc,UAAVK,EAAEhC,IACJgC,EAAEE,iBACFhB,EAAMkB,gBACD,GAAc,WAAVJ,EAAEhC,IACXgC,EAAEE,iBACFhB,EAAMmB,eACD,GAAc,eAAVL,EAAEhC,IAAsB,CAGjC,GAFAgC,EAAEE,iBAEEhB,EAAMU,WAAaL,EAAqB,EAAG,OAE/CL,EAAMoB,WACP,MAAM,GAAc,cAAVN,EAAEhC,IAAqB,CAGhC,GAFAgC,EAAEE,iBAEqB,IAAnBhB,EAAMU,SAAgB,OAE1BV,EAAMqB,UACP,MAAM,GAAc,YAAVP,EAAEhC,IAAmB,CAG9B,GAFAgC,EAAEE,iBAEqB,IAAnBhB,EAAMW,SAAgB,OAE1BX,EAAMsB,QACP,MAAM,GAAc,cAAVR,EAAEhC,IAAqB,CAGhC,GAFAgC,EAAEE,iBAEEhB,EAAMW,WAAaL,EAAqB,EAAG,OAE/CN,EAAMkB,UACP,KAAoB,OAAVJ,EAAEhC,KACXgC,EAAEE,iBACFd,EAAKqB,gBACI,gBAAgBC,KAAKV,EAAEhC,MAChCgC,EAAEE,iBACFF,EAAEW,kBACFvB,EAAKqB,eAELG,YAAW,WACT7C,EAA2BiC,EAAEhC,IAC9B,GAAE,KACgB,cAAVgC,EAAEhC,KAAiC,WAAVgC,EAAEhC,MACpCgC,EAAEE,iBACFF,EAAEW,kBACFvB,EAAKqB,eAELG,YAAW,WACT7C,EAA2B,GAC5B,GAAE,IAGT,EAIA,OAFAG,SAAS2C,iBAAiB,UAAWd,GAE9B,WACL7B,SAAS4C,oBAAoB,UAAWf,EAC1C,CACF,GAAG,CAACX,EAAKa,UAAWf,EAAMS,QAASE,EAAUD,IAE7CE,GAAU,WACJV,EAAKa,YAAcR,EAAIsB,UACzB3B,EAAKe,YAET,GAAG,CAACf,EAAMK,IAEHuB,OACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__spreadArray as t,__assign as a}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as e,useCallback as n,useMemo as i}from"react";var r=function(t,e){switch(e.type){case"changeKey":return{key:e.payload.key,asc:!0,isUpdatedData:!1,sortTiming:t.sortTiming+1};case"changeOrder":return t.isUpdatedData?a(a({},t),{isUpdatedData:!1,sortTiming:t.sortTiming+1}):a(a({},t),{asc:!t.asc,sortTiming:t.sortTiming+1});case"updateData":return a(a({},t),{isUpdatedData:!0})}};function s(a){var s,o,c=e(r,{key:null!==(s=null==a?void 0:a.key)&&void 0!==s?s:"id",asc:null===(o=null==a?void 0:a.asc)||void 0===o||o,isUpdatedData:!1,sortTiming:0}),d=c[0],
|
|
1
|
+
import{__spreadArray as t,__assign as a}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as e,useCallback as n,useMemo as i}from"react";var r=function(t,e){switch(e.type){case"changeKey":return{key:e.payload.key,asc:!0,isUpdatedData:!1,sortTiming:t.sortTiming+1};case"changeOrder":return t.isUpdatedData?a(a({},t),{isUpdatedData:!1,sortTiming:t.sortTiming+1}):a(a({},t),{asc:!t.asc,sortTiming:t.sortTiming+1});case"updateData":return a(a({},t),{isUpdatedData:!0})}};function s(a){var s,o,c=e(r,{key:null!==(s=null==a?void 0:a.key)&&void 0!==s?s:"id",asc:null===(o=null==a?void 0:a.asc)||void 0===o||o,isUpdatedData:!1,sortTiming:0}),d=c[0],y=c[1],u=function(t){y({type:"changeKey",payload:{key:t}})},p=function(){y({type:"changeOrder"})},k=function(){y({type:"updateData"})},g=n((function(a){return t([],a,!0).sort((function(t,a){return""===t[d.key]&&""===a[d.key]?0:""===t[d.key]?1:""===a[d.key]?-1:t[d.key]<a[d.key]?d.asc?-1:1:t[d.key]>a[d.key]?d.asc?1:-1:0}))}),[d.key,d.asc]);return{state:i((function(){return{key:d.key,asc:d.asc,isUpdatedData:d.isUpdatedData}}),[d.key,d.asc,d.isUpdatedData]),actions:i((function(){return{changeKey:u,changeOrder:p,updatedData:k,sort:g}}),[g]),sortTiming:d.sortTiming}}export{s as useSortReducer};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return {\n key: action.payload.key,\n asc: true,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n case \"changeOrder\":\n if (state.isUpdatedData) {\n return {\n ...state,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n } else {\n return { ...state, asc: !state.asc, sortTiming: state.sortTiming + 1 };\n }\n case \"updateData\":\n return { ...state, isUpdatedData: true };\n }\n};\n\nexport function useSortReducer<T extends DataRecord>(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer<T> {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n isUpdatedData: false,\n sortTiming: 0,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const updatedData = () => {\n dispatch({ type: \"updateData\" });\n };\n\n const sort = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]) =>\n [...rows].sort((a, b) => {\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\n }),\n [state.key, state.asc]\n );\n\n const stateExcludeSortTiming = useMemo(\n () => ({\n key: state.key,\n asc: state.asc,\n isUpdatedData: state.isUpdatedData,\n }),\n [state.key, state.asc, state.isUpdatedData]\n );\n\n const actions = useMemo(\n () => ({ changeKey, changeOrder, updatedData, sort }),\n [sort]\n );\n\n return {\n state: stateExcludeSortTiming,\n actions,\n sortTiming: state.sortTiming,\n };\n}\n"],"names":["reducer","state","action","type","key","payload","asc","isUpdatedData","sortTiming","__assign","useSortReducer","initial","_c","useReducer","_a","_b","dispatch","changeKey","changeOrder","updatedData","sort","useCallback","rows","__spreadArray","a","b","useMemo","actions"],"mappings":"wJAIA,IAAMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CACLC,IAAKF,EAAOG,QAAQD,IACpBE,KAAK,EACLC,eAAe,EACfC,WAAYP,EAAMO,WAAa,GAEnC,IAAK,cACH,OAAIP,EAAMM,cACRE,EAAAA,EAAA,GACKR,GAAK,CACRM,eAAe,EACfC,WAAYP,EAAMO,WAAa,IAGjCC,EAAAA,EAAA,CAAA,EAAYR,GAAO,CAAAK,KAAML,EAAMK,IAAKE,WAAYP,EAAMO,WAAa,IAEvE,IAAK,aACH,OAAAC,EAAAA,EAAA,GAAYR,GAAK,CAAEM,eAAe,IAExC,EAEM,SAAUG,EAAqCC,WAI7CC,EAAoBC,EAAWb,EAAS,CAC5CI,IAAiB,QAAZU,EAAAH,eAAAA,EAASP,WAAG,IAAAU,EAAAA,EAAI,KACrBR,IAAiB,QAAZS,EAAAJ,eAAAA,EAASL,WAAG,IAAAS,GAAAA,EACjBR,eAAe,EACfC,WAAY,IAJPP,EAAKW,EAAA,GAAEI,OAORC,EAAY,SAACb,GACjBY,EAAS,CAAEb,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAEMc,EAAc,WAClBF,EAAS,CAAEb,KAAM,eACnB,EAEMgB,EAAc,WAClBH,EAAS,CAAEb,KAAM,cACnB,EAEMiB,EAAOC,GACX,SAAuBC,GACrB,OAAAC,EAAA,GAAID,GAAM,GAAAF,MAAK,SAACI,EAAGC,GACjB,
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return {\n key: action.payload.key,\n asc: true,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n case \"changeOrder\":\n if (state.isUpdatedData) {\n return {\n ...state,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n } else {\n return { ...state, asc: !state.asc, sortTiming: state.sortTiming + 1 };\n }\n case \"updateData\":\n return { ...state, isUpdatedData: true };\n }\n};\n\nexport function useSortReducer<T extends DataRecord>(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer<T> {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n isUpdatedData: false,\n sortTiming: 0,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const updatedData = () => {\n dispatch({ type: \"updateData\" });\n };\n\n const sort = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]) =>\n [...rows].sort((a, b) => {\n if (a[state.key] === \"\" && b[state.key] === \"\") {\n return 0;\n } else if (a[state.key] === \"\") {\n return 1;\n } else if (b[state.key] === \"\") {\n return -1;\n }\n\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\n }),\n [state.key, state.asc]\n );\n\n const stateExcludeSortTiming = useMemo(\n () => ({\n key: state.key,\n asc: state.asc,\n isUpdatedData: state.isUpdatedData,\n }),\n [state.key, state.asc, state.isUpdatedData]\n );\n\n const actions = useMemo(\n () => ({ changeKey, changeOrder, updatedData, sort }),\n [sort]\n );\n\n return {\n state: stateExcludeSortTiming,\n actions,\n sortTiming: state.sortTiming,\n };\n}\n"],"names":["reducer","state","action","type","key","payload","asc","isUpdatedData","sortTiming","__assign","useSortReducer","initial","_c","useReducer","_a","_b","dispatch","changeKey","changeOrder","updatedData","sort","useCallback","rows","__spreadArray","a","b","useMemo","actions"],"mappings":"wJAIA,IAAMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CACLC,IAAKF,EAAOG,QAAQD,IACpBE,KAAK,EACLC,eAAe,EACfC,WAAYP,EAAMO,WAAa,GAEnC,IAAK,cACH,OAAIP,EAAMM,cACRE,EAAAA,EAAA,GACKR,GAAK,CACRM,eAAe,EACfC,WAAYP,EAAMO,WAAa,IAGjCC,EAAAA,EAAA,CAAA,EAAYR,GAAO,CAAAK,KAAML,EAAMK,IAAKE,WAAYP,EAAMO,WAAa,IAEvE,IAAK,aACH,OAAAC,EAAAA,EAAA,GAAYR,GAAK,CAAEM,eAAe,IAExC,EAEM,SAAUG,EAAqCC,WAI7CC,EAAoBC,EAAWb,EAAS,CAC5CI,IAAiB,QAAZU,EAAAH,eAAAA,EAASP,WAAG,IAAAU,EAAAA,EAAI,KACrBR,IAAiB,QAAZS,EAAAJ,eAAAA,EAASL,WAAG,IAAAS,GAAAA,EACjBR,eAAe,EACfC,WAAY,IAJPP,EAAKW,EAAA,GAAEI,OAORC,EAAY,SAACb,GACjBY,EAAS,CAAEb,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAEMc,EAAc,WAClBF,EAAS,CAAEb,KAAM,eACnB,EAEMgB,EAAc,WAClBH,EAAS,CAAEb,KAAM,cACnB,EAEMiB,EAAOC,GACX,SAAuBC,GACrB,OAAAC,EAAA,GAAID,GAAM,GAAAF,MAAK,SAACI,EAAGC,GACjB,MAAqB,KAAjBD,EAAEvB,EAAMG,MAAgC,KAAjBqB,EAAExB,EAAMG,KAC1B,EACmB,KAAjBoB,EAAEvB,EAAMG,KACV,EACmB,KAAjBqB,EAAExB,EAAMG,MACT,EAGNoB,EAAEvB,EAAMG,KAAOqB,EAAExB,EAAMG,KAClBH,EAAMK,KAAO,EAAI,EAEtBkB,EAAEvB,EAAMG,KAAOqB,EAAExB,EAAMG,KAClBH,EAAMK,IAAM,GAAK,EAEnB,CACT,GAAE,GACJ,CAACL,EAAMG,IAAKH,EAAMK,MAiBpB,MAAO,CACLL,MAf6ByB,GAC7B,WAAM,MAAC,CACLtB,IAAKH,EAAMG,IACXE,IAAKL,EAAMK,IACXC,cAAeN,EAAMM,cACrB,GACF,CAACN,EAAMG,IAAKH,EAAMK,IAAKL,EAAMM,gBAU7BoB,QAPcD,GACd,WAAM,MAAC,CAAET,UAASA,EAAEC,YAAWA,EAAEC,YAAWA,EAAEC,KAAIA,EAAG,GACrD,CAACA,IAMDZ,WAAYP,EAAMO,WAEtB"}
|