@teppen/react-ui 1.6.0 → 1.6.1

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,2 +1,2 @@
1
- "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),a=require("react"),t=require("../sheet/providers.js"),n=require("../range/provider.js"),s=function(a,t){var n;switch(t.type){case"setRows":return e.__assign(e.__assign({},a),{rows:t.payload.rows});case"setCols":return e.__assign(e.__assign({},a),{cols:t.payload.cols});case"setColValidators":return e.__assign(e.__assign({},a),{colValidators:t.payload.colValidators});case"setOnUpdateRowFunction":return e.__assign(e.__assign({},a),{onUpdateRowFunction:t.payload.onUpdateRowFunction});case"onPaste":if(!a.isFocused)return a;var s=t.payload.pasteData,o=a.rows,r=a.cols,u=a.colValidators,i=a.rowIndex,l=a.colIndex;if(!a.onUpdateRowFunction)return a;var c={arguments:[],timing:a.updateParameters.timing+1},d=s.length,p=Math.max.apply(Math,s.map((function(e){return e.length})));if(0===d||0===p)return a;if(s.length+i>o.length)return alert("貼り付け先の行数が足りません。"),a;for(var f=0;f<p;f++){if(!(w=r[l+f]).editable)return alert("編集できない列にデータを貼り付けることはできません。\n\n編集不可列: ".concat(null!==(n=w.label)&&void 0!==n?n:w.key)),a}if(p+l>r.length)return alert("貼り付け先の列数が足りません。"),a;for(f=0;f<d;f++)for(var g=s[f],_=0;_<g.length;_++){var w,y=g[_];if(!(0,u[(w=r[l+_]).key])(y))return a}return s.forEach((function(a,t){var n=e.__assign({},o[i+t]),s=!1;a.forEach((function(e,a){var t=r[l+a],o="number"===t.type?Number(e):"select"===t.type?""===e?"":t.options.find((function(a){return a.label===e})).value:e;n[t.key]!==o&&(s=!0,n[t.key]=o)})),s&&c.arguments.push({newRow:n,oldRow:o[i+t]})})),c.arguments.length>0?e.__assign(e.__assign({},a),{updateParameters:c}):a;case"focus":return e.__assign(e.__assign({},a),{isFocused:!0,rowIndex:t.payload.rowIndex,colIndex:t.payload.colIndex});case"unfocus":return e.__assign(e.__assign({},a),{isFocused:!1})}};exports.usePasteReducer=function(o){var r=a.useReducer(s,e.__assign(e.__assign({},o),{colValidators:{},isFocused:!1,updateParameters:{arguments:[],timing:0}})),u=r[0],i=r[1],l=t.useColumnValidatesContext(),c=n.useRangeStateContext();a.useEffect((function(){c.isSelecting?i({type:"focus",payload:{rowIndex:c.start.rowIndex,colIndex:c.start.colIndex}}):i({type:"unfocus"})}),[c]);var d=a.useCallback((function(e){i({type:"setRows",payload:{rows:e}})}),[]),p=a.useCallback((function(e){i({type:"setCols",payload:{cols:e}})}),[]),f=a.useCallback((function(e){i({type:"setColValidators",payload:{colValidators:e}})}),[]);a.useEffect((function(){f(l)}),[l]);var g=a.useCallback((function(e){i({type:"setOnUpdateRowFunction",payload:{onUpdateRowFunction:e}})}),[]),_=a.useCallback((function(e){i({type:"onPaste",payload:{pasteData:e}})}),[]);return a.useEffect((function(){u.updateParameters.arguments.length>0&&u.updateParameters.arguments.forEach((function(e){var a,t=e.newRow,n=e.oldRow;null===(a=u.onUpdateRowFunction)||void 0===a||a.call(u,t,n)}))}),[u.updateParameters.timing,u.onUpdateRowFunction]),a.useMemo((function(){return{setRows:d,setCols:p,setColValidators:f,setOnUpdateRowFunction:g,onPaste:_}}),[])};
1
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("react"),a=require("../sheet/providers.js"),n=require("../range/provider.js"),s=function(t,a){var n;switch(a.type){case"setRows":return e.__assign(e.__assign({},t),{rows:a.payload.rows});case"setCols":return e.__assign(e.__assign({},t),{cols:a.payload.cols});case"setColValidators":return e.__assign(e.__assign({},t),{colValidators:a.payload.colValidators});case"setOnUpdateRowFunction":return e.__assign(e.__assign({},t),{onUpdateRowFunction:a.payload.onUpdateRowFunction});case"onPaste":if(!t.isFocused)return t;var s=a.payload.pasteData,o=t.rows,r=t.cols,i=t.colValidators,u=t.rowIndex,l=t.colIndex;if(!t.onUpdateRowFunction)return t;var c={arguments:[],timing:t.updateParameters.timing+1},d=s.length,p=Math.max.apply(Math,s.map((function(e){return e.length})));if(0===d||0===p)return t;if(s.length+u>o.length)return alert("貼り付け先の行数が足りません。"),t;for(var f=0;f<p;f++){if(!(m=r[l+f]).editable)return alert("編集できない列にデータを貼り付けることはできません。\n\n編集不可列: ".concat(null!==(n=m.label)&&void 0!==n?n:m.key)),t}if(p+l>r.length)return alert("貼り付け先の列数が足りません。"),t;for(f=0;f<d;f++)for(var g=s[f],_=0;_<g.length;_++){var m,w=g[_];if(!(0,i[(m=r[l+_]).key])(w))return t}return s.forEach((function(t,a){var n=e.__assign({},o[u+a]),s=!1;t.forEach((function(e,t){var a=r[l+t],o="number"===a.type?Number(e):"select"===a.type?""===e?"":a.options.find((function(t){return t.label===e})).value:e;n[a.key]!==o&&(s=!0,n[a.key]=o)})),s&&c.arguments.push({newRow:n,oldRow:o[u+a]})})),c.arguments.length>0?e.__assign(e.__assign({},t),{updateParameters:c}):t;case"focus":return e.__assign(e.__assign({},t),{isFocused:!0,rowIndex:a.payload.rowIndex,colIndex:a.payload.colIndex});case"unfocus":return e.__assign(e.__assign({},t),{isFocused:!1})}};exports.usePasteReducer=function(o){var r=t.useReducer(s,e.__assign(e.__assign({},o),{colValidators:{},isFocused:!1,updateParameters:{arguments:[],timing:0}})),i=r[0],u=r[1],l=a.useColumnValidatesContext(),c=n.useRangeStateContext();t.useEffect((function(){c.isSelecting?u({type:"focus",payload:{rowIndex:c.start.rowIndex,colIndex:c.start.colIndex}}):u({type:"unfocus"})}),[c]);var d=t.useCallback((function(e){u({type:"setRows",payload:{rows:e}})}),[]),p=t.useCallback((function(e){u({type:"setCols",payload:{cols:e}})}),[]),f=t.useCallback((function(e){u({type:"setColValidators",payload:{colValidators:e}})}),[]);t.useEffect((function(){f(l)}),[l]);var g=t.useCallback((function(e){u({type:"setOnUpdateRowFunction",payload:{onUpdateRowFunction:e}})}),[]),_=t.useCallback((function(e){u({type:"onPaste",payload:{pasteData:e}})}),[]);return t.useEffect((function(){i.updateParameters.arguments.length>0&&i.updateParameters.arguments.forEach((function(e){var t,a=e.newRow,n=e.oldRow;null===(t=i.onUpdateRowFunction)||void 0===t||t.call(i,a,n)}))}),[i.updateParameters.timing,i.onUpdateRowFunction]),t.useEffect((function(){var e=function(e){if(c.isSelecting&&e.clipboardData){e.preventDefault();var t=e.clipboardData.getData("Text");_(t.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(e){return e.split(",")})))}};return document.addEventListener("paste",e),function(){document.removeEventListener("paste",e)}}),[c.isSelecting]),t.useMemo((function(){return{setRows:d,setCols:p,setColValidators:f,setOnUpdateRowFunction:g,onPaste:_}}),[])};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport { TPasteReducer, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\nimport { useRangeStateContext } from \"../range/provider\";\n\nconst reducer: TPasteReducer = (state, action) => {\n switch (action.type) {\n case \"setRows\":\n return { ...state, rows: action.payload.rows };\n case \"setCols\":\n return { ...state, cols: action.payload.cols };\n case \"setColValidators\":\n return { ...state, colValidators: action.payload.colValidators };\n case \"setOnUpdateRowFunction\":\n return {\n ...state,\n onUpdateRowFunction: action.payload.onUpdateRowFunction,\n };\n case \"onPaste\":\n if (!state.isFocused) {\n return state;\n }\n\n const { pasteData } = action.payload;\n const {\n rows,\n cols,\n colValidators,\n rowIndex,\n colIndex,\n onUpdateRowFunction,\n } = state;\n\n if (!onUpdateRowFunction) {\n return state;\n }\n\n const updateParameters = {\n arguments: [] as { newRow: any; oldRow: any }[],\n timing: state.updateParameters.timing + 1,\n };\n\n const rowLength = pasteData.length;\n const colLength = Math.max(...pasteData.map((row) => row.length));\n\n if (rowLength === 0 || colLength === 0) return state;\n\n if (pasteData.length + rowIndex > rows.length) {\n alert(\"貼り付け先の行数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < colLength; i++) {\n const col = cols[colIndex + i];\n\n if (!col.editable) {\n alert(\n `編集できない列にデータを貼り付けることはできません。\\n\\n編集不可列: ${\n col.label ?? (col.key as string)\n }`\n );\n return state;\n }\n }\n\n if (colLength + colIndex > cols.length) {\n alert(\"貼り付け先の列数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < rowLength; i++) {\n const pasteRow = pasteData[i];\n\n for (let j = 0; j < pasteRow.length; j++) {\n const pasteValue = pasteRow[j];\n const col = cols[colIndex + j];\n const validate = colValidators[col.key as string];\n\n if (!validate(pasteValue)) {\n return state;\n }\n }\n }\n\n pasteData.forEach((pasteRow, i) => {\n const row = { ...rows[rowIndex + i] };\n let checkUpdatedRow = false;\n\n pasteRow.forEach((pasteValue, j) => {\n const col = cols[colIndex + j];\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!\n .value\n : pasteValue;\n if (row[col.key] !== value) {\n checkUpdatedRow = true;\n row[col.key] = value;\n }\n });\n\n if (checkUpdatedRow) {\n updateParameters.arguments.push({\n newRow: row,\n oldRow: rows[rowIndex + i],\n });\n }\n });\n\n if (updateParameters.arguments.length > 0) {\n return { ...state, updateParameters };\n } else {\n return state;\n }\n case \"focus\":\n return {\n ...state,\n isFocused: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"unfocus\":\n return { ...state, isFocused: false };\n }\n};\n\nexport function usePasteReducer(initial: {\n rows: any[];\n cols: any[];\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}): TPasteReducerReturn {\n const [state, dispatch] = useReducer(reducer, {\n ...initial,\n colValidators: {},\n isFocused: false,\n updateParameters: { arguments: [], timing: 0 },\n });\n const validators = useColumnValidatesContext();\n const range = useRangeStateContext();\n\n useEffect(() => {\n if (range.isSelecting) {\n dispatch({\n type: \"focus\",\n payload: {\n rowIndex: range.start.rowIndex,\n colIndex: range.start.colIndex,\n },\n });\n } else {\n dispatch({ type: \"unfocus\" });\n }\n }, [range]);\n\n const setRows = useCallback((rows: any[]) => {\n dispatch({ type: \"setRows\", payload: { rows } });\n }, []);\n\n const setCols = useCallback((cols: any[]) => {\n dispatch({ type: \"setCols\", payload: { cols } });\n }, []);\n\n const setColValidators = useCallback(\n (colValidators: { [key: string]: (value: any) => boolean }) => {\n dispatch({ type: \"setColValidators\", payload: { colValidators } });\n },\n []\n );\n\n useEffect(() => {\n setColValidators(validators);\n }, [validators]);\n\n const setOnUpdateRowFunction = useCallback(\n (onUpdateRowFunction?: (newRow: any, oldRow: any) => void) => {\n dispatch({\n type: \"setOnUpdateRowFunction\",\n payload: { onUpdateRowFunction },\n });\n },\n []\n );\n\n const onPaste = useCallback((pasteData: string[][]) => {\n dispatch({ type: \"onPaste\", payload: { pasteData } });\n }, []);\n\n useEffect(() => {\n if (state.updateParameters.arguments.length > 0) {\n state.updateParameters.arguments.forEach(({ newRow, oldRow }) => {\n state.onUpdateRowFunction?.(newRow, oldRow);\n });\n }\n }, [state.updateParameters.timing, state.onUpdateRowFunction]);\n\n const actions: TPasteReducerReturn = useMemo(\n () => ({\n setRows,\n setCols,\n setColValidators,\n setOnUpdateRowFunction,\n onPaste,\n }),\n []\n );\n\n return actions;\n}\n"],"names":["reducer","state","action","type","__assign","rows","payload","cols","colValidators","onUpdateRowFunction","isFocused","pasteData","rows_1","cols_1","rowIndex_1","rowIndex","colIndex_1","colIndex","updateParameters_1","arguments","timing","updateParameters","rowLength","length","colLength","Math","max","apply","map","row","alert","i","col","editable","concat","_a","label","key","pasteRow","j","pasteValue","validate","forEach","checkUpdatedRow","value","Number","options","find","option","push","newRow","oldRow","initial","useReducer","dispatch","validators","useColumnValidatesContext","range","useRangeStateContext","useEffect","isSelecting","start","setRows","useCallback","setCols","setColValidators","setOnUpdateRowFunction","onPaste","_b","call","useMemo"],"mappings":"+JAKMA,EAAyB,SAACC,EAAOC,SACrC,OAAQA,EAAOC,MACb,IAAK,UACH,OAAYC,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IAAOI,KAAMH,EAAOI,QAAQD,OAC1C,IAAK,UACH,OAAYD,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IAAOM,KAAML,EAAOI,QAAQC,OAC1C,IAAK,mBACH,OAAYH,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IAAOO,cAAeN,EAAOI,QAAQE,gBACnD,IAAK,yBACH,OACKJ,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHQ,oBAAqBP,EAAOI,QAAQG,sBAExC,IAAK,UACH,IAAKR,EAAMS,UACT,OAAOT,EAGD,IAAAU,EAAcT,EAAOI,kBAE3BM,EAMEX,EAAKI,KALPQ,EAKEZ,EALEM,KACJC,EAIEP,EAAKO,cAHPM,EAGEb,EAHMc,SACRC,EAEEf,EAAKgB,SAET,IAFIhB,sBAGF,OAAOA,EAGT,IAAMiB,EAAmB,CACvBC,UAAW,GACXC,OAAQnB,EAAMoB,iBAAiBD,OAAS,GAGpCE,EAAYX,EAAUY,OACtBC,EAAYC,KAAKC,IAALC,MAAAF,KAAYd,EAAUiB,KAAI,SAACC,GAAQ,OAAAA,EAAIN,MAAJ,KAErD,GAAkB,IAAdD,GAAiC,IAAdE,EAAiB,OAAOvB,EAE/C,GAAIU,EAAUY,OAAST,EAAWF,EAAKW,OAErC,OADAO,MAAM,mBACC7B,EAGT,IAAK,IAAI8B,EAAI,EAAGA,EAAIP,EAAWO,IAAK,CAGlC,KAFMC,EAAMnB,EAAKG,EAAWe,IAEnBE,SAMP,OALAH,MACE,wCAAAI,OACgB,QAAdC,EAAAH,EAAII,aAAU,IAAAD,EAAAA,EAAAH,EAAIK,MAGfpC,CAEV,CAED,GAAIuB,EAAYR,EAAWH,EAAKU,OAE9B,OADAO,MAAM,mBACC7B,EAGT,IAAS8B,EAAI,EAAGA,EAAIT,EAAWS,IAG7B,IAFA,IAAMO,EAAW3B,EAAUoB,GAElBQ,EAAI,EAAGA,EAAID,EAASf,OAAQgB,IAAK,CACxC,IACMP,EADAQ,EAAaF,EAASC,GAI5B,KAAKE,EAFYjC,GADXwB,EAAMnB,EAAKG,EAAWuB,IACOF,MAErBG,GACZ,OAAOvC,CAEV,CAgCH,OA7BAU,EAAU+B,SAAQ,SAACJ,EAAUP,GAC3B,IAAMF,gBAAWjB,EAAKE,EAAWiB,IAC7BY,GAAkB,EAEtBL,EAASI,SAAQ,SAACF,EAAYD,GAC5B,IAAMP,EAAMnB,EAAKG,EAAWuB,GACtBK,EACS,WAAbZ,EAAI7B,KACA0C,OAAOL,GACM,WAAbR,EAAI7B,KACW,KAAfqC,EACE,GACAR,EAAIc,QAAQC,MAAK,SAACC,GAAW,OAAAA,EAAOZ,QAAUI,KAC3CI,MACLJ,EACFX,EAAIG,EAAIK,OAASO,IACnBD,GAAkB,EAClBd,EAAIG,EAAIK,KAAOO,EAEnB,IAEID,GACFzB,EAAiBC,UAAU8B,KAAK,CAC9BC,OAAQrB,EACRsB,OAAQvC,EAAKE,EAAWiB,IAG9B,IAEIb,EAAiBC,UAAUI,OAAS,EACtCnB,EAAAA,SAAAA,EAAAA,SAAA,GAAYH,GAAK,CAAEoB,iBAAgBH,IAE5BjB,EAEX,IAAK,QACH,OACKG,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHS,WAAW,EACXK,SAAUb,EAAOI,QAAQS,SACzBE,SAAUf,EAAOI,QAAQW,WAE7B,IAAK,UACH,OAAAb,EAAAA,SAAAA,EAAAA,SAAA,GAAYH,GAAK,CAAES,WAAW,IAEpC,0BAEM,SAA0B0C,GAKxB,IAAAjB,EAAoBkB,EAAUA,WAACrD,2BAChCoD,GAAO,CACV5C,cAAe,GACfE,WAAW,EACXW,iBAAkB,CAAEF,UAAW,GAAIC,OAAQ,MAJtCnB,EAAKkC,EAAA,GAAEmB,OAMRC,EAAaC,EAAAA,4BACbC,EAAQC,EAAAA,uBAEdC,EAAAA,WAAU,WACJF,EAAMG,YACRN,EAAS,CACPnD,KAAM,QACNG,QAAS,CACPS,SAAU0C,EAAMI,MAAM9C,SACtBE,SAAUwC,EAAMI,MAAM5C,YAI1BqC,EAAS,CAAEnD,KAAM,WAErB,GAAG,CAACsD,IAEJ,IAAMK,EAAUC,eAAY,SAAC1D,GAC3BiD,EAAS,CAAEnD,KAAM,UAAWG,QAAS,CAAED,KAAIA,IAC5C,GAAE,IAEG2D,EAAUD,eAAY,SAACxD,GAC3B+C,EAAS,CAAEnD,KAAM,UAAWG,QAAS,CAAEC,KAAIA,IAC5C,GAAE,IAEG0D,EAAmBF,eACvB,SAACvD,GACC8C,EAAS,CAAEnD,KAAM,mBAAoBG,QAAS,CAAEE,cAAaA,IAC9D,GACD,IAGFmD,EAAAA,WAAU,WACRM,EAAiBV,EACnB,GAAG,CAACA,IAEJ,IAAMW,EAAyBH,eAC7B,SAACtD,GACC6C,EAAS,CACPnD,KAAM,yBACNG,QAAS,CAAEG,oBAAmBA,IAEjC,GACD,IAGI0D,EAAUJ,eAAY,SAACpD,GAC3B2C,EAAS,CAAEnD,KAAM,UAAWG,QAAS,CAAEK,UAASA,IACjD,GAAE,IAqBH,OAnBAgD,EAAAA,WAAU,WACJ1D,EAAMoB,iBAAiBF,UAAUI,OAAS,GAC5CtB,EAAMoB,iBAAiBF,UAAUuB,SAAQ,SAACP,SAAEe,EAAMf,EAAAe,OAAEC,EAAMhB,EAAAgB,OAC/B,QAAzBiB,EAAAnE,EAAMQ,2BAAmB,IAAA2D,GAAAA,EAAAC,KAAApE,EAAGiD,EAAQC,EACtC,GAEJ,GAAG,CAAClD,EAAMoB,iBAAiBD,OAAQnB,EAAMQ,sBAEJ6D,WACnC,WAAM,MAAC,CACLR,QAAOA,EACPE,QAAOA,EACPC,iBAAgBA,EAChBC,uBAAsBA,EACtBC,QAAOA,EALH,GAON,GAIJ"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport { TPasteReducer, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\nimport { useRangeStateContext } from \"../range/provider\";\n\nconst reducer: TPasteReducer = (state, action) => {\n switch (action.type) {\n case \"setRows\":\n return { ...state, rows: action.payload.rows };\n case \"setCols\":\n return { ...state, cols: action.payload.cols };\n case \"setColValidators\":\n return { ...state, colValidators: action.payload.colValidators };\n case \"setOnUpdateRowFunction\":\n return {\n ...state,\n onUpdateRowFunction: action.payload.onUpdateRowFunction,\n };\n case \"onPaste\":\n if (!state.isFocused) {\n return state;\n }\n\n const { pasteData } = action.payload;\n const {\n rows,\n cols,\n colValidators,\n rowIndex,\n colIndex,\n onUpdateRowFunction,\n } = state;\n\n if (!onUpdateRowFunction) {\n return state;\n }\n\n const updateParameters = {\n arguments: [] as { newRow: any; oldRow: any }[],\n timing: state.updateParameters.timing + 1,\n };\n\n const rowLength = pasteData.length;\n const colLength = Math.max(...pasteData.map((row) => row.length));\n\n if (rowLength === 0 || colLength === 0) return state;\n\n if (pasteData.length + rowIndex > rows.length) {\n alert(\"貼り付け先の行数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < colLength; i++) {\n const col = cols[colIndex + i];\n\n if (!col.editable) {\n alert(\n `編集できない列にデータを貼り付けることはできません。\\n\\n編集不可列: ${\n col.label ?? (col.key as string)\n }`\n );\n return state;\n }\n }\n\n if (colLength + colIndex > cols.length) {\n alert(\"貼り付け先の列数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < rowLength; i++) {\n const pasteRow = pasteData[i];\n\n for (let j = 0; j < pasteRow.length; j++) {\n const pasteValue = pasteRow[j];\n const col = cols[colIndex + j];\n const validate = colValidators[col.key as string];\n\n if (!validate(pasteValue)) {\n return state;\n }\n }\n }\n\n pasteData.forEach((pasteRow, i) => {\n const row = { ...rows[rowIndex + i] };\n let checkUpdatedRow = false;\n\n pasteRow.forEach((pasteValue, j) => {\n const col = cols[colIndex + j];\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!\n .value\n : pasteValue;\n if (row[col.key] !== value) {\n checkUpdatedRow = true;\n row[col.key] = value;\n }\n });\n\n if (checkUpdatedRow) {\n updateParameters.arguments.push({\n newRow: row,\n oldRow: rows[rowIndex + i],\n });\n }\n });\n\n if (updateParameters.arguments.length > 0) {\n return { ...state, updateParameters };\n } else {\n return state;\n }\n case \"focus\":\n return {\n ...state,\n isFocused: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"unfocus\":\n return { ...state, isFocused: false };\n }\n};\n\nexport function usePasteReducer(initial: {\n rows: any[];\n cols: any[];\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}): TPasteReducerReturn {\n const [state, dispatch] = useReducer(reducer, {\n ...initial,\n colValidators: {},\n isFocused: false,\n updateParameters: { arguments: [], timing: 0 },\n });\n const validators = useColumnValidatesContext();\n const range = useRangeStateContext();\n\n useEffect(() => {\n if (range.isSelecting) {\n dispatch({\n type: \"focus\",\n payload: {\n rowIndex: range.start.rowIndex,\n colIndex: range.start.colIndex,\n },\n });\n } else {\n dispatch({ type: \"unfocus\" });\n }\n }, [range]);\n\n const setRows = useCallback((rows: any[]) => {\n dispatch({ type: \"setRows\", payload: { rows } });\n }, []);\n\n const setCols = useCallback((cols: any[]) => {\n dispatch({ type: \"setCols\", payload: { cols } });\n }, []);\n\n const setColValidators = useCallback(\n (colValidators: { [key: string]: (value: any) => boolean }) => {\n dispatch({ type: \"setColValidators\", payload: { colValidators } });\n },\n []\n );\n\n useEffect(() => {\n setColValidators(validators);\n }, [validators]);\n\n const setOnUpdateRowFunction = useCallback(\n (onUpdateRowFunction?: (newRow: any, oldRow: any) => void) => {\n dispatch({\n type: \"setOnUpdateRowFunction\",\n payload: { onUpdateRowFunction },\n });\n },\n []\n );\n\n const onPaste = useCallback((pasteData: string[][]) => {\n dispatch({ type: \"onPaste\", payload: { pasteData } });\n }, []);\n\n useEffect(() => {\n if (state.updateParameters.arguments.length > 0) {\n state.updateParameters.arguments.forEach(({ newRow, oldRow }) => {\n state.onUpdateRowFunction?.(newRow, oldRow);\n });\n }\n }, [state.updateParameters.timing, state.onUpdateRowFunction]);\n\n useEffect(() => {\n const paste = (e: ClipboardEvent) => {\n if (!range.isSelecting) {\n return;\n }\n\n if (e.clipboardData) {\n e.preventDefault();\n const pastedData = e.clipboardData.getData(\"Text\");\n\n onPaste(\n pastedData\n .replace(/\\t/g, \",\")\n .trim()\n .replace(/\\r\\n/g, \"\\n\")\n .split(\"\\n\")\n .map((row) => row.split(\",\"))\n );\n }\n };\n\n document.addEventListener(\"paste\", paste);\n\n return () => {\n document.removeEventListener(\"paste\", paste);\n };\n }, [range.isSelecting]);\n\n const actions: TPasteReducerReturn = useMemo(\n () => ({\n setRows,\n setCols,\n setColValidators,\n setOnUpdateRowFunction,\n onPaste,\n }),\n []\n );\n\n return actions;\n}\n"],"names":["reducer","state","action","type","__assign","rows","payload","cols","colValidators","onUpdateRowFunction","isFocused","pasteData","rows_1","cols_1","rowIndex_1","rowIndex","colIndex_1","colIndex","updateParameters_1","arguments","timing","updateParameters","rowLength","length","colLength","Math","max","apply","map","row","alert","i","col","editable","concat","_a","label","key","pasteRow","j","pasteValue","validate","forEach","checkUpdatedRow","value","Number","options","find","option","push","newRow","oldRow","initial","useReducer","dispatch","validators","useColumnValidatesContext","range","useRangeStateContext","useEffect","isSelecting","start","setRows","useCallback","setCols","setColValidators","setOnUpdateRowFunction","onPaste","_b","call","paste","e","clipboardData","preventDefault","pastedData","getData","replace","trim","split","document","addEventListener","removeEventListener","useMemo"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),o=require("./hook.js"),i=require("../header/header.js"),t=require("../pagenation/providers.js"),s=require("../pagenation/components.js"),n=require("../filter/provider.js"),l=require("../filter/components.js");require("../sort/icon.js");var a=require("../sort/provider.js"),d=require("../sheet/providers.js"),c=require("../checkbox/provider.js"),u=require("../checkbox/components.js"),x=require("../libs/id-generator.js"),j=require("../edit/provider.js"),p=require("../table-property/provider.js"),h=require("../operation/components/keyboard-setting.js"),g=require("../sheet/components.js"),v=require("../paste/provider.js"),m=require("../libs/conditional-formatting.js"),b=require("../edit/ui/editor.js"),w=require("../filter/hooks/selectedFilteringColumn/provider.js"),q=require("../range/provider.js"),f=require("../copy/provider.js");function P(e){var t=o.useTable(e),n=t.cols,a=t.rowMaps,d=t.pageRowIds,c=w.useFilteringColumnStateContext(),j=q.useRangeActionContext().reset,p=v.usePasteActionContext().onPaste;return r.jsxs("div",{className:"w-full",children:[r.jsx("div",{className:"flex justify-end mb-1 mr-3",children:r.jsx(l.TableFilterRemoveButton,{children:r.jsx("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),r.jsxs("div",{id:x.IdGenerator.getTableId(),className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:[r.jsx(q.TestRange,{}),r.jsx(b.Editor,{rowMaps:a,pageRowIds:d}),r.jsxs("table",{className:"table",onPaste:function(e){e.preventDefault();var r=e.clipboardData.getData("Text");p(r.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(e){return e.split(",")})))},children:[r.jsx("thead",{children:r.jsxs("tr",{className:"sticky top-0 border-gray-200 z-20 bg-gray-200 text-gray-600 h-[32px]",onClick:function(e){e.stopPropagation(),j()},children:[e.checkbox&&r.jsx("th",{children:r.jsx(u.AllCheckbox,{rows:e.rows})}),n.map((function(e,o){return r.jsx(i.TableHeaderElement,{id:x.IdGenerator.getTableColId(o),col:e},e.key.toString())}))]})}),r.jsxs("tbody",{children:[!!c&&r.jsx("tr",{onClick:function(e){e.stopPropagation(),j()},children:r.jsx("td",{colSpan:n.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:r.jsx(l.TableFilterForm,{})})}),0===d.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:n.length,className:"py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),d.map((function(o,i){return r.jsx(g.Row,{existCheckbox:!!e.checkbox,rowIndex:i,dataString:a[o].stringValue,cols:e.cols,onClickRow:e.onClickRow,applyRowFormatting:e.applyRowFormatting,conditionalFormattingString:m.generateFormattingString(a[o].data,n,e.conditionalFormattings)},o)}))]})]})]}),r.jsxs("div",{className:"mt-1",children:[r.jsx(s.DisplayRange,{}),r.jsx("div",{className:"mt-2",children:r.jsx(s.Pagenation,{})})]})]})}module.exports=function(o){var i,s,l;return r.jsx(n.FilterProvider,{children:r.jsx(a.SortProvider,{initialCondition:null===(i=o.initialCondition)||void 0===i?void 0:i.sort,children:r.jsx(t.PagenationProvider,{rowCount:o.rows.length,perPage:null===(l=null===(s=o.initialCondition)||void 0===s?void 0:s.pagenation)||void 0===l?void 0:l.rowCountPerPage,children:r.jsx(c.CheckboxProvider,{checkbox:o.checkbox,children:r.jsx(c.CheckboxStatusProvider,{checkboxCount:o.rows.length,children:r.jsx(d.ColumnsProvider,{cols:o.cols,errorHandler:o.errorHandler,children:r.jsx(j.EditProvider,{children:r.jsx(p.TablePropertyProvider,{children:r.jsx(q.RangeProvider,{children:r.jsx(f.CopyProvider,{rows:o.rows,cols:o.cols,children:r.jsxs(v.PasteProvider,{rows:o.rows,cols:o.cols,onUpdateRowFunction:o.onUpdateRow,children:[r.jsx(h.KeyboardSetting,{}),r.jsx(P,e.__assign({},o))]})})})})})})})})})})})};
2
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),o=require("./hook.js"),i=require("../header/header.js"),s=require("../pagenation/providers.js"),t=require("../pagenation/components.js"),n=require("../filter/provider.js"),l=require("../filter/components.js");require("../sort/icon.js");var a=require("../sort/provider.js"),d=require("../sheet/providers.js"),c=require("../checkbox/provider.js"),x=require("../checkbox/components.js"),u=require("../libs/id-generator.js"),j=require("../edit/provider.js"),h=require("../table-property/provider.js"),p=require("../operation/components/keyboard-setting.js"),g=require("../sheet/components.js"),v=require("../paste/provider.js"),m=require("../libs/conditional-formatting.js"),b=require("../edit/ui/editor.js"),w=require("../filter/hooks/selectedFilteringColumn/provider.js"),q=require("../range/provider.js"),y=require("../copy/provider.js");function k(e){var s=o.useTable(e),n=s.cols,a=s.rowMaps,d=s.pageRowIds,c=w.useFilteringColumnStateContext(),j=q.useRangeActionContext().reset;return r.jsxs("div",{className:"w-full",children:[r.jsx("div",{className:"flex justify-end mb-1 mr-3",children:r.jsx(l.TableFilterRemoveButton,{children:r.jsx("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),r.jsxs("div",{id:u.IdGenerator.getTableId(),className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:[r.jsx(q.TestRange,{}),r.jsx(b.Editor,{rowMaps:a,pageRowIds:d}),r.jsxs("table",{className:"table",children:[r.jsx("thead",{children:r.jsxs("tr",{className:"sticky top-0 border-gray-200 z-20 bg-gray-200 text-gray-600 h-[32px]",onClick:function(e){e.stopPropagation(),j()},children:[e.checkbox&&r.jsx("th",{children:r.jsx(x.AllCheckbox,{rows:e.rows})}),n.map((function(e,o){return r.jsx(i.TableHeaderElement,{id:u.IdGenerator.getTableColId(o),col:e},e.key.toString())}))]})}),r.jsxs("tbody",{children:[!!c&&r.jsx("tr",{onClick:function(e){e.stopPropagation(),j()},children:r.jsx("td",{colSpan:n.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:r.jsx(l.TableFilterForm,{})})}),0===d.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:n.length,className:"py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),d.map((function(o,i){return r.jsx(g.Row,{existCheckbox:!!e.checkbox,rowIndex:i,dataString:a[o].stringValue,cols:e.cols,onClickRow:e.onClickRow,applyRowFormatting:e.applyRowFormatting,conditionalFormattingString:m.generateFormattingString(a[o].data,n,e.conditionalFormattings)},o)}))]})]})]}),r.jsxs("div",{className:"mt-1",children:[r.jsx(t.DisplayRange,{}),r.jsx("div",{className:"mt-2",children:r.jsx(t.Pagenation,{})})]})]})}module.exports=function(o){var i,t,l;return r.jsx(n.FilterProvider,{children:r.jsx(a.SortProvider,{initialCondition:null===(i=o.initialCondition)||void 0===i?void 0:i.sort,children:r.jsx(s.PagenationProvider,{rowCount:o.rows.length,perPage:null===(l=null===(t=o.initialCondition)||void 0===t?void 0:t.pagenation)||void 0===l?void 0:l.rowCountPerPage,children:r.jsx(c.CheckboxProvider,{checkbox:o.checkbox,children:r.jsx(c.CheckboxStatusProvider,{checkboxCount:o.rows.length,children:r.jsx(d.ColumnsProvider,{cols:o.cols,errorHandler:o.errorHandler,children:r.jsx(j.EditProvider,{children:r.jsx(h.TablePropertyProvider,{children:r.jsx(q.RangeProvider,{children:r.jsx(y.CopyProvider,{rows:o.rows,cols:o.cols,children:r.jsxs(v.PasteProvider,{rows:o.rows,cols:o.cols,onUpdateRowFunction:o.onUpdateRow,children:[r.jsx(p.KeyboardSetting,{}),r.jsx(k,e.__assign({},o))]})})})})})})})})})})})};
3
3
  //# sourceMappingURL=base.js.map
@@ -1,2 +1,2 @@
1
- import{__assign as t}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as e,useEffect as o,useCallback as a,useMemo as n}from"react";import{useColumnValidatesContext as r}from"../sheet/providers.js";import{useRangeStateContext as s}from"../range/provider.js";var l=function(e,o){var a;switch(o.type){case"setRows":return t(t({},e),{rows:o.payload.rows});case"setCols":return t(t({},e),{cols:o.payload.cols});case"setColValidators":return t(t({},e),{colValidators:o.payload.colValidators});case"setOnUpdateRowFunction":return t(t({},e),{onUpdateRowFunction:o.payload.onUpdateRowFunction});case"onPaste":if(!e.isFocused)return e;var n=o.payload.pasteData,r=e.rows,s=e.cols,l=e.colValidators,u=e.rowIndex,i=e.colIndex;if(!e.onUpdateRowFunction)return e;var c={arguments:[],timing:e.updateParameters.timing+1},d=n.length,p=Math.max.apply(Math,n.map((function(t){return t.length})));if(0===d||0===p)return e;if(n.length+u>r.length)return alert("貼り付け先の行数が足りません。"),e;for(var f=0;f<p;f++){if(!(y=s[i+f]).editable)return alert("編集できない列にデータを貼り付けることはできません。\n\n編集不可列: ".concat(null!==(a=y.label)&&void 0!==a?a:y.key)),e}if(p+i>s.length)return alert("貼り付け先の列数が足りません。"),e;for(f=0;f<d;f++)for(var m=n[f],w=0;w<m.length;w++){var y,g=m[w];if(!(0,l[(y=s[i+w]).key])(g))return e}return n.forEach((function(e,o){var a=t({},r[u+o]),n=!1;e.forEach((function(t,e){var o=s[i+e],r="number"===o.type?Number(t):"select"===o.type?""===t?"":o.options.find((function(e){return e.label===t})).value:t;a[o.key]!==r&&(n=!0,a[o.key]=r)})),n&&c.arguments.push({newRow:a,oldRow:r[u+o]})})),c.arguments.length>0?t(t({},e),{updateParameters:c}):e;case"focus":return t(t({},e),{isFocused:!0,rowIndex:o.payload.rowIndex,colIndex:o.payload.colIndex});case"unfocus":return t(t({},e),{isFocused:!1})}};function u(u){var i=e(l,t(t({},u),{colValidators:{},isFocused:!1,updateParameters:{arguments:[],timing:0}})),c=i[0],d=i[1],p=r(),f=s();o((function(){f.isSelecting?d({type:"focus",payload:{rowIndex:f.start.rowIndex,colIndex:f.start.colIndex}}):d({type:"unfocus"})}),[f]);var m=a((function(t){d({type:"setRows",payload:{rows:t}})}),[]),w=a((function(t){d({type:"setCols",payload:{cols:t}})}),[]),y=a((function(t){d({type:"setColValidators",payload:{colValidators:t}})}),[]);o((function(){y(p)}),[p]);var g=a((function(t){d({type:"setOnUpdateRowFunction",payload:{onUpdateRowFunction:t}})}),[]),v=a((function(t){d({type:"onPaste",payload:{pasteData:t}})}),[]);return o((function(){c.updateParameters.arguments.length>0&&c.updateParameters.arguments.forEach((function(t){var e,o=t.newRow,a=t.oldRow;null===(e=c.onUpdateRowFunction)||void 0===e||e.call(c,o,a)}))}),[c.updateParameters.timing,c.onUpdateRowFunction]),n((function(){return{setRows:m,setCols:w,setColValidators:y,setOnUpdateRowFunction:g,onPaste:v}}),[])}export{u as usePasteReducer};
1
+ import{__assign as t}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as e,useEffect as n,useCallback as o,useMemo as a}from"react";import{useColumnValidatesContext as r}from"../sheet/providers.js";import{useRangeStateContext as s}from"../range/provider.js";var i=function(e,n){var o;switch(n.type){case"setRows":return t(t({},e),{rows:n.payload.rows});case"setCols":return t(t({},e),{cols:n.payload.cols});case"setColValidators":return t(t({},e),{colValidators:n.payload.colValidators});case"setOnUpdateRowFunction":return t(t({},e),{onUpdateRowFunction:n.payload.onUpdateRowFunction});case"onPaste":if(!e.isFocused)return e;var a=n.payload.pasteData,r=e.rows,s=e.cols,i=e.colValidators,l=e.rowIndex,u=e.colIndex;if(!e.onUpdateRowFunction)return e;var c={arguments:[],timing:e.updateParameters.timing+1},d=a.length,p=Math.max.apply(Math,a.map((function(t){return t.length})));if(0===d||0===p)return e;if(a.length+l>r.length)return alert("貼り付け先の行数が足りません。"),e;for(var f=0;f<p;f++){if(!(y=s[u+f]).editable)return alert("編集できない列にデータを貼り付けることはできません。\n\n編集不可列: ".concat(null!==(o=y.label)&&void 0!==o?o:y.key)),e}if(p+u>s.length)return alert("貼り付け先の列数が足りません。"),e;for(f=0;f<d;f++)for(var m=a[f],w=0;w<m.length;w++){var y,g=m[w];if(!(0,i[(y=s[u+w]).key])(g))return e}return a.forEach((function(e,n){var o=t({},r[l+n]),a=!1;e.forEach((function(t,e){var n=s[u+e],r="number"===n.type?Number(t):"select"===n.type?""===t?"":n.options.find((function(e){return e.label===t})).value:t;o[n.key]!==r&&(a=!0,o[n.key]=r)})),a&&c.arguments.push({newRow:o,oldRow:r[l+n]})})),c.arguments.length>0?t(t({},e),{updateParameters:c}):e;case"focus":return t(t({},e),{isFocused:!0,rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex});case"unfocus":return t(t({},e),{isFocused:!1})}};function l(l){var u=e(i,t(t({},l),{colValidators:{},isFocused:!1,updateParameters:{arguments:[],timing:0}})),c=u[0],d=u[1],p=r(),f=s();n((function(){f.isSelecting?d({type:"focus",payload:{rowIndex:f.start.rowIndex,colIndex:f.start.colIndex}}):d({type:"unfocus"})}),[f]);var m=o((function(t){d({type:"setRows",payload:{rows:t}})}),[]),w=o((function(t){d({type:"setCols",payload:{cols:t}})}),[]),y=o((function(t){d({type:"setColValidators",payload:{colValidators:t}})}),[]);n((function(){y(p)}),[p]);var g=o((function(t){d({type:"setOnUpdateRowFunction",payload:{onUpdateRowFunction:t}})}),[]),v=o((function(t){d({type:"onPaste",payload:{pasteData:t}})}),[]);return n((function(){c.updateParameters.arguments.length>0&&c.updateParameters.arguments.forEach((function(t){var e,n=t.newRow,o=t.oldRow;null===(e=c.onUpdateRowFunction)||void 0===e||e.call(c,n,o)}))}),[c.updateParameters.timing,c.onUpdateRowFunction]),n((function(){var t=function(t){if(f.isSelecting&&t.clipboardData){t.preventDefault();var e=t.clipboardData.getData("Text");v(e.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(t){return t.split(",")})))}};return document.addEventListener("paste",t),function(){document.removeEventListener("paste",t)}}),[f.isSelecting]),a((function(){return{setRows:m,setCols:w,setColValidators:y,setOnUpdateRowFunction:g,onPaste:v}}),[])}export{l as usePasteReducer};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport { TPasteReducer, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\nimport { useRangeStateContext } from \"../range/provider\";\n\nconst reducer: TPasteReducer = (state, action) => {\n switch (action.type) {\n case \"setRows\":\n return { ...state, rows: action.payload.rows };\n case \"setCols\":\n return { ...state, cols: action.payload.cols };\n case \"setColValidators\":\n return { ...state, colValidators: action.payload.colValidators };\n case \"setOnUpdateRowFunction\":\n return {\n ...state,\n onUpdateRowFunction: action.payload.onUpdateRowFunction,\n };\n case \"onPaste\":\n if (!state.isFocused) {\n return state;\n }\n\n const { pasteData } = action.payload;\n const {\n rows,\n cols,\n colValidators,\n rowIndex,\n colIndex,\n onUpdateRowFunction,\n } = state;\n\n if (!onUpdateRowFunction) {\n return state;\n }\n\n const updateParameters = {\n arguments: [] as { newRow: any; oldRow: any }[],\n timing: state.updateParameters.timing + 1,\n };\n\n const rowLength = pasteData.length;\n const colLength = Math.max(...pasteData.map((row) => row.length));\n\n if (rowLength === 0 || colLength === 0) return state;\n\n if (pasteData.length + rowIndex > rows.length) {\n alert(\"貼り付け先の行数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < colLength; i++) {\n const col = cols[colIndex + i];\n\n if (!col.editable) {\n alert(\n `編集できない列にデータを貼り付けることはできません。\\n\\n編集不可列: ${\n col.label ?? (col.key as string)\n }`\n );\n return state;\n }\n }\n\n if (colLength + colIndex > cols.length) {\n alert(\"貼り付け先の列数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < rowLength; i++) {\n const pasteRow = pasteData[i];\n\n for (let j = 0; j < pasteRow.length; j++) {\n const pasteValue = pasteRow[j];\n const col = cols[colIndex + j];\n const validate = colValidators[col.key as string];\n\n if (!validate(pasteValue)) {\n return state;\n }\n }\n }\n\n pasteData.forEach((pasteRow, i) => {\n const row = { ...rows[rowIndex + i] };\n let checkUpdatedRow = false;\n\n pasteRow.forEach((pasteValue, j) => {\n const col = cols[colIndex + j];\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!\n .value\n : pasteValue;\n if (row[col.key] !== value) {\n checkUpdatedRow = true;\n row[col.key] = value;\n }\n });\n\n if (checkUpdatedRow) {\n updateParameters.arguments.push({\n newRow: row,\n oldRow: rows[rowIndex + i],\n });\n }\n });\n\n if (updateParameters.arguments.length > 0) {\n return { ...state, updateParameters };\n } else {\n return state;\n }\n case \"focus\":\n return {\n ...state,\n isFocused: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"unfocus\":\n return { ...state, isFocused: false };\n }\n};\n\nexport function usePasteReducer(initial: {\n rows: any[];\n cols: any[];\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}): TPasteReducerReturn {\n const [state, dispatch] = useReducer(reducer, {\n ...initial,\n colValidators: {},\n isFocused: false,\n updateParameters: { arguments: [], timing: 0 },\n });\n const validators = useColumnValidatesContext();\n const range = useRangeStateContext();\n\n useEffect(() => {\n if (range.isSelecting) {\n dispatch({\n type: \"focus\",\n payload: {\n rowIndex: range.start.rowIndex,\n colIndex: range.start.colIndex,\n },\n });\n } else {\n dispatch({ type: \"unfocus\" });\n }\n }, [range]);\n\n const setRows = useCallback((rows: any[]) => {\n dispatch({ type: \"setRows\", payload: { rows } });\n }, []);\n\n const setCols = useCallback((cols: any[]) => {\n dispatch({ type: \"setCols\", payload: { cols } });\n }, []);\n\n const setColValidators = useCallback(\n (colValidators: { [key: string]: (value: any) => boolean }) => {\n dispatch({ type: \"setColValidators\", payload: { colValidators } });\n },\n []\n );\n\n useEffect(() => {\n setColValidators(validators);\n }, [validators]);\n\n const setOnUpdateRowFunction = useCallback(\n (onUpdateRowFunction?: (newRow: any, oldRow: any) => void) => {\n dispatch({\n type: \"setOnUpdateRowFunction\",\n payload: { onUpdateRowFunction },\n });\n },\n []\n );\n\n const onPaste = useCallback((pasteData: string[][]) => {\n dispatch({ type: \"onPaste\", payload: { pasteData } });\n }, []);\n\n useEffect(() => {\n if (state.updateParameters.arguments.length > 0) {\n state.updateParameters.arguments.forEach(({ newRow, oldRow }) => {\n state.onUpdateRowFunction?.(newRow, oldRow);\n });\n }\n }, [state.updateParameters.timing, state.onUpdateRowFunction]);\n\n const actions: TPasteReducerReturn = useMemo(\n () => ({\n setRows,\n setCols,\n setColValidators,\n setOnUpdateRowFunction,\n onPaste,\n }),\n []\n );\n\n return actions;\n}\n"],"names":["reducer","state","action","type","__assign","rows","payload","cols","colValidators","onUpdateRowFunction","isFocused","pasteData","rows_1","cols_1","rowIndex_1","rowIndex","colIndex_1","colIndex","updateParameters_1","arguments","timing","updateParameters","rowLength","length","colLength","Math","max","apply","map","row","alert","i","col","editable","concat","_a","label","key","pasteRow","j","pasteValue","validate","forEach","checkUpdatedRow","value","Number","options","find","option","push","newRow","oldRow","usePasteReducer","initial","useReducer","dispatch","validators","useColumnValidatesContext","range","useRangeStateContext","useEffect","isSelecting","start","setRows","useCallback","setCols","setColValidators","setOnUpdateRowFunction","onPaste","_b","call","useMemo"],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport { TPasteReducer, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\nimport { useRangeStateContext } from \"../range/provider\";\n\nconst reducer: TPasteReducer = (state, action) => {\n switch (action.type) {\n case \"setRows\":\n return { ...state, rows: action.payload.rows };\n case \"setCols\":\n return { ...state, cols: action.payload.cols };\n case \"setColValidators\":\n return { ...state, colValidators: action.payload.colValidators };\n case \"setOnUpdateRowFunction\":\n return {\n ...state,\n onUpdateRowFunction: action.payload.onUpdateRowFunction,\n };\n case \"onPaste\":\n if (!state.isFocused) {\n return state;\n }\n\n const { pasteData } = action.payload;\n const {\n rows,\n cols,\n colValidators,\n rowIndex,\n colIndex,\n onUpdateRowFunction,\n } = state;\n\n if (!onUpdateRowFunction) {\n return state;\n }\n\n const updateParameters = {\n arguments: [] as { newRow: any; oldRow: any }[],\n timing: state.updateParameters.timing + 1,\n };\n\n const rowLength = pasteData.length;\n const colLength = Math.max(...pasteData.map((row) => row.length));\n\n if (rowLength === 0 || colLength === 0) return state;\n\n if (pasteData.length + rowIndex > rows.length) {\n alert(\"貼り付け先の行数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < colLength; i++) {\n const col = cols[colIndex + i];\n\n if (!col.editable) {\n alert(\n `編集できない列にデータを貼り付けることはできません。\\n\\n編集不可列: ${\n col.label ?? (col.key as string)\n }`\n );\n return state;\n }\n }\n\n if (colLength + colIndex > cols.length) {\n alert(\"貼り付け先の列数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < rowLength; i++) {\n const pasteRow = pasteData[i];\n\n for (let j = 0; j < pasteRow.length; j++) {\n const pasteValue = pasteRow[j];\n const col = cols[colIndex + j];\n const validate = colValidators[col.key as string];\n\n if (!validate(pasteValue)) {\n return state;\n }\n }\n }\n\n pasteData.forEach((pasteRow, i) => {\n const row = { ...rows[rowIndex + i] };\n let checkUpdatedRow = false;\n\n pasteRow.forEach((pasteValue, j) => {\n const col = cols[colIndex + j];\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!\n .value\n : pasteValue;\n if (row[col.key] !== value) {\n checkUpdatedRow = true;\n row[col.key] = value;\n }\n });\n\n if (checkUpdatedRow) {\n updateParameters.arguments.push({\n newRow: row,\n oldRow: rows[rowIndex + i],\n });\n }\n });\n\n if (updateParameters.arguments.length > 0) {\n return { ...state, updateParameters };\n } else {\n return state;\n }\n case \"focus\":\n return {\n ...state,\n isFocused: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"unfocus\":\n return { ...state, isFocused: false };\n }\n};\n\nexport function usePasteReducer(initial: {\n rows: any[];\n cols: any[];\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}): TPasteReducerReturn {\n const [state, dispatch] = useReducer(reducer, {\n ...initial,\n colValidators: {},\n isFocused: false,\n updateParameters: { arguments: [], timing: 0 },\n });\n const validators = useColumnValidatesContext();\n const range = useRangeStateContext();\n\n useEffect(() => {\n if (range.isSelecting) {\n dispatch({\n type: \"focus\",\n payload: {\n rowIndex: range.start.rowIndex,\n colIndex: range.start.colIndex,\n },\n });\n } else {\n dispatch({ type: \"unfocus\" });\n }\n }, [range]);\n\n const setRows = useCallback((rows: any[]) => {\n dispatch({ type: \"setRows\", payload: { rows } });\n }, []);\n\n const setCols = useCallback((cols: any[]) => {\n dispatch({ type: \"setCols\", payload: { cols } });\n }, []);\n\n const setColValidators = useCallback(\n (colValidators: { [key: string]: (value: any) => boolean }) => {\n dispatch({ type: \"setColValidators\", payload: { colValidators } });\n },\n []\n );\n\n useEffect(() => {\n setColValidators(validators);\n }, [validators]);\n\n const setOnUpdateRowFunction = useCallback(\n (onUpdateRowFunction?: (newRow: any, oldRow: any) => void) => {\n dispatch({\n type: \"setOnUpdateRowFunction\",\n payload: { onUpdateRowFunction },\n });\n },\n []\n );\n\n const onPaste = useCallback((pasteData: string[][]) => {\n dispatch({ type: \"onPaste\", payload: { pasteData } });\n }, []);\n\n useEffect(() => {\n if (state.updateParameters.arguments.length > 0) {\n state.updateParameters.arguments.forEach(({ newRow, oldRow }) => {\n state.onUpdateRowFunction?.(newRow, oldRow);\n });\n }\n }, [state.updateParameters.timing, state.onUpdateRowFunction]);\n\n useEffect(() => {\n const paste = (e: ClipboardEvent) => {\n if (!range.isSelecting) {\n return;\n }\n\n if (e.clipboardData) {\n e.preventDefault();\n const pastedData = e.clipboardData.getData(\"Text\");\n\n onPaste(\n pastedData\n .replace(/\\t/g, \",\")\n .trim()\n .replace(/\\r\\n/g, \"\\n\")\n .split(\"\\n\")\n .map((row) => row.split(\",\"))\n );\n }\n };\n\n document.addEventListener(\"paste\", paste);\n\n return () => {\n document.removeEventListener(\"paste\", paste);\n };\n }, [range.isSelecting]);\n\n const actions: TPasteReducerReturn = useMemo(\n () => ({\n setRows,\n setCols,\n setColValidators,\n setOnUpdateRowFunction,\n onPaste,\n }),\n []\n );\n\n return actions;\n}\n"],"names":["reducer","state","action","type","__assign","rows","payload","cols","colValidators","onUpdateRowFunction","isFocused","pasteData","rows_1","cols_1","rowIndex_1","rowIndex","colIndex_1","colIndex","updateParameters_1","arguments","timing","updateParameters","rowLength","length","colLength","Math","max","apply","map","row","alert","i","col","editable","concat","_a","label","key","pasteRow","j","pasteValue","validate","forEach","checkUpdatedRow","value","Number","options","find","option","push","newRow","oldRow","usePasteReducer","initial","useReducer","dispatch","validators","useColumnValidatesContext","range","useRangeStateContext","useEffect","isSelecting","start","setRows","useCallback","setCols","setColValidators","setOnUpdateRowFunction","onPaste","_b","call","paste","e","clipboardData","preventDefault","pastedData","getData","replace","trim","split","document","addEventListener","removeEventListener","useMemo"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{__assign as o}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r,jsxs as e}from"react/jsx-runtime";import{useTable as t}from"./hook.js";import{TableHeaderElement as i}from"../header/header.js";import{PagenationProvider as n}from"../pagenation/providers.js";import{DisplayRange as l,Pagenation as a}from"../pagenation/components.js";import{FilterProvider as s}from"../filter/provider.js";import{TableFilterRemoveButton as d,TableFilterForm as c}from"../filter/components.js";import"../sort/icon.js";import{SortProvider as m}from"../sort/provider.js";import{ColumnsProvider as p}from"../sheet/providers.js";import{CheckboxProvider as h,CheckboxStatusProvider as f}from"../checkbox/provider.js";import{AllCheckbox as g}from"../checkbox/components.js";import{IdGenerator as u}from"../libs/id-generator.js";import{EditProvider as v}from"../edit/provider.js";import{TablePropertyProvider as b}from"../table-property/provider.js";import{KeyboardSetting as w}from"../operation/components/keyboard-setting.js";import{Row as j}from"../sheet/components.js";import{PasteProvider as x,usePasteActionContext as k}from"../paste/provider.js";import{generateFormattingString as y}from"../libs/conditional-formatting.js";import{Editor as C}from"../edit/ui/editor.js";import{useFilteringColumnStateContext as N}from"../filter/hooks/selectedFilteringColumn/provider.js";import{RangeProvider as R,useRangeActionContext as P,TestRange as F}from"../range/provider.js";import{CopyProvider as I}from"../copy/provider.js";function S(t){var i,l,a;return r(s,{children:r(m,{initialCondition:null===(i=t.initialCondition)||void 0===i?void 0:i.sort,children:r(n,{rowCount:t.rows.length,perPage:null===(a=null===(l=t.initialCondition)||void 0===l?void 0:l.pagenation)||void 0===a?void 0:a.rowCountPerPage,children:r(h,{checkbox:t.checkbox,children:r(f,{checkboxCount:t.rows.length,children:r(p,{cols:t.cols,errorHandler:t.errorHandler,children:r(v,{children:r(b,{children:r(R,{children:r(I,{rows:t.rows,cols:t.cols,children:e(x,{rows:t.rows,cols:t.cols,onUpdateRowFunction:t.onUpdateRow,children:[r(w,{}),r(D,o({},t))]})})})})})})})})})})})}function D(o){var n=t(o),s=n.cols,m=n.rowMaps,p=n.pageRowIds,h=N(),f=P().reset,v=k().onPaste;return e("div",{className:"w-full",children:[r("div",{className:"flex justify-end mb-1 mr-3",children:r(d,{children:r("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),e("div",{id:u.getTableId(),className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:[r(F,{}),r(C,{rowMaps:m,pageRowIds:p}),e("table",{className:"table",onPaste:function(o){o.preventDefault();var r=o.clipboardData.getData("Text");v(r.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(o){return o.split(",")})))},children:[r("thead",{children:e("tr",{className:"sticky top-0 border-gray-200 z-20 bg-gray-200 text-gray-600 h-[32px]",onClick:function(o){o.stopPropagation(),f()},children:[o.checkbox&&r("th",{children:r(g,{rows:o.rows})}),s.map((function(o,e){return r(i,{id:u.getTableColId(e),col:o},o.key.toString())}))]})}),e("tbody",{children:[!!h&&r("tr",{onClick:function(o){o.stopPropagation(),f()},children:r("td",{colSpan:s.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:r(c,{})})}),0===p.length&&r("tr",{children:r("td",{colSpan:s.length,className:"py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),p.map((function(e,t){return r(j,{existCheckbox:!!o.checkbox,rowIndex:t,dataString:m[e].stringValue,cols:o.cols,onClickRow:o.onClickRow,applyRowFormatting:o.applyRowFormatting,conditionalFormattingString:y(m[e].data,s,o.conditionalFormattings)},e)}))]})]})]}),e("div",{className:"mt-1",children:[r(l,{}),r("div",{className:"mt-2",children:r(a,{})})]})]})}export{S as default};
2
+ import{__assign as o}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r,jsxs as e}from"react/jsx-runtime";import{useTable as i}from"./hook.js";import{TableHeaderElement as t}from"../header/header.js";import{PagenationProvider as n}from"../pagenation/providers.js";import{DisplayRange as l,Pagenation as s}from"../pagenation/components.js";import{FilterProvider as d}from"../filter/provider.js";import{TableFilterRemoveButton as a,TableFilterForm as c}from"../filter/components.js";import"../sort/icon.js";import{SortProvider as m}from"../sort/provider.js";import{ColumnsProvider as p}from"../sheet/providers.js";import{CheckboxProvider as h,CheckboxStatusProvider as f}from"../checkbox/provider.js";import{AllCheckbox as g}from"../checkbox/components.js";import{IdGenerator as u}from"../libs/id-generator.js";import{EditProvider as v}from"../edit/provider.js";import{TablePropertyProvider as b}from"../table-property/provider.js";import{KeyboardSetting as w}from"../operation/components/keyboard-setting.js";import{Row as j}from"../sheet/components.js";import{PasteProvider as x}from"../paste/provider.js";import{generateFormattingString as k}from"../libs/conditional-formatting.js";import{Editor as y}from"../edit/ui/editor.js";import{useFilteringColumnStateContext as C}from"../filter/hooks/selectedFilteringColumn/provider.js";import{RangeProvider as N,useRangeActionContext as R,TestRange as F}from"../range/provider.js";import{CopyProvider as I}from"../copy/provider.js";function P(i){var t,l,s;return r(d,{children:r(m,{initialCondition:null===(t=i.initialCondition)||void 0===t?void 0:t.sort,children:r(n,{rowCount:i.rows.length,perPage:null===(s=null===(l=i.initialCondition)||void 0===l?void 0:l.pagenation)||void 0===s?void 0:s.rowCountPerPage,children:r(h,{checkbox:i.checkbox,children:r(f,{checkboxCount:i.rows.length,children:r(p,{cols:i.cols,errorHandler:i.errorHandler,children:r(v,{children:r(b,{children:r(N,{children:r(I,{rows:i.rows,cols:i.cols,children:e(x,{rows:i.rows,cols:i.cols,onUpdateRowFunction:i.onUpdateRow,children:[r(w,{}),r(S,o({},i))]})})})})})})})})})})})}function S(o){var n=i(o),d=n.cols,m=n.rowMaps,p=n.pageRowIds,h=C(),f=R().reset;return e("div",{className:"w-full",children:[r("div",{className:"flex justify-end mb-1 mr-3",children:r(a,{children:r("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),e("div",{id:u.getTableId(),className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:[r(F,{}),r(y,{rowMaps:m,pageRowIds:p}),e("table",{className:"table",children:[r("thead",{children:e("tr",{className:"sticky top-0 border-gray-200 z-20 bg-gray-200 text-gray-600 h-[32px]",onClick:function(o){o.stopPropagation(),f()},children:[o.checkbox&&r("th",{children:r(g,{rows:o.rows})}),d.map((function(o,e){return r(t,{id:u.getTableColId(e),col:o},o.key.toString())}))]})}),e("tbody",{children:[!!h&&r("tr",{onClick:function(o){o.stopPropagation(),f()},children:r("td",{colSpan:d.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:r(c,{})})}),0===p.length&&r("tr",{children:r("td",{colSpan:d.length,className:"py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),p.map((function(e,i){return r(j,{existCheckbox:!!o.checkbox,rowIndex:i,dataString:m[e].stringValue,cols:o.cols,onClickRow:o.onClickRow,applyRowFormatting:o.applyRowFormatting,conditionalFormattingString:k(m[e].data,d,o.conditionalFormattings)},e)}))]})]})]}),e("div",{className:"mt-1",children:[r(l,{}),r("div",{className:"mt-2",children:r(s,{})})]})]})}export{P as default};
3
3
  //# sourceMappingURL=base.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teppen/react-ui",
3
- "version": "1.6.0",
3
+ "version": "1.6.1",
4
4
  "description": "React UI Component",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/esm/src/index.js",