@teppen/react-ui 1.6.1 → 1.7.0

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.
@@ -0,0 +1,2 @@
1
+ import{__assign as e,__spreadArray as r}from"../../node_modules/tslib/tslib.es6.js";import{jsxs as n,Fragment as o,jsx as i}from"react/jsx-runtime";import{useState as l}from"react";import{useFileUploader as d}from"./hook.js";import{LuUpload as t}from"../../node_modules/react-icons/lu/index.js";function a(a){var c=l([]),s=c[0],m=c[1],u=l([]),p=u[0],h=u[1],g=d({addFiles:function(e){m((function(n){return r(r([],n,!0),e,!0)}))},onValidationError:function(e){h(e)}}),f=g.inputProps,b=g.dropSpaceProps,x=g.isDragging;return n(o,{children:[n("div",{className:"w-full mx-auto border-2 border-dashed border-gray-300 rounded-lg bg-gray-50",children:[n("div",e({},b,{className:"cursor-pointer w-full h-40 flex flex-col gap-5 items-center justify-center rounded-lg transition-colors hover:bg-blue-100 ".concat(x?"bg-blue-100":""),children:[i("div",{children:i(t,{size:48})}),i("p",{children:x?"ここにファイルをドロップ":"ファイルの選択"})]})),i("input",e({},f))]}),s.length>0&&i("ul",{className:"space-y-2 mt-4",children:s.map((function(e){return i("li",{className:"bg-white border border-gray-300 p-2 rounded-lg",children:e.name},e.name)}))}),p.length>0&&n("div",{className:"mt-4 text-red-500",children:[i("p",{children:"These files are not accepted:"}),i("ul",{className:"space-y-2",children:p.map((function(e){return i("li",{className:"bg-red-100 border border-red-300 p-2 rounded-lg",children:e.name},e.name)}))})]})]})}export{a as FileUploader};
2
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sources":["../../../../src/file-uploader/component.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { useFileUploader } from \"./hook\";\nimport { LuUpload } from \"react-icons/lu\";\n\ninterface FileUploaderProps {}\n\nexport function FileUploader(props: FileUploaderProps) {\n const [files, setFiles] = useState<File[]>([]);\n const [rejectedFiles, setRejectedFiles] = useState<File[]>([]);\n const { inputProps, dropSpaceProps, isDragging } = useFileUploader({\n addFiles: (files) => {\n setFiles((f) => [...f, ...files]);\n },\n onValidationError: (rejectedFiles) => {\n setRejectedFiles(rejectedFiles);\n },\n });\n\n return (\n <>\n <div className=\"w-full mx-auto border-2 border-dashed border-gray-300 rounded-lg bg-gray-50\">\n <div\n {...dropSpaceProps}\n className={`cursor-pointer w-full h-40 flex flex-col gap-5 items-center justify-center rounded-lg transition-colors hover:bg-blue-100 ${\n isDragging ? \"bg-blue-100\" : \"\"\n }`}\n >\n <div>\n <LuUpload size={48} />\n </div>\n <p>{isDragging ? \"ここにファイルをドロップ\" : \"ファイルの選択\"}</p>\n </div>\n <input {...inputProps} />\n </div>\n\n {files.length > 0 && (\n <ul className=\"space-y-2 mt-4\">\n {files.map((file) => (\n <li\n key={file.name}\n className=\"bg-white border border-gray-300 p-2 rounded-lg\"\n >\n {file.name}\n </li>\n ))}\n </ul>\n )}\n\n {rejectedFiles.length > 0 && (\n <div className=\"mt-4 text-red-500\">\n <p>These files are not accepted:</p>\n <ul className=\"space-y-2\">\n {rejectedFiles.map((file) => (\n <li\n key={file.name}\n className=\"bg-red-100 border border-red-300 p-2 rounded-lg\"\n >\n {file.name}\n </li>\n ))}\n </ul>\n </div>\n )}\n </>\n );\n}\n"],"names":["FileUploader","props","_a","useState","files","setFiles","_b","rejectedFiles","setRejectedFiles","_c","useFileUploader","addFiles","f","__spreadArray","onValidationError","inputProps","dropSpaceProps","isDragging","_jsxs","_Fragment","children","className","__assign","concat","_jsx","LuUpload","size","length","map","file","name"],"mappings":"uSAMM,SAAUA,EAAaC,GACrB,IAAAC,EAAoBC,EAAiB,IAApCC,EAAKF,EAAA,GAAEG,EAAQH,EAAA,GAChBI,EAAoCH,EAAiB,IAApDI,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GAChCG,EAA6CC,EAAgB,CACjEC,SAAU,SAACP,GACTC,GAAS,SAACO,GAAM,OAAAC,EAAAA,EAAA,GAAID,GAAC,GAAKR,GAAK,EAAC,GACjC,EACDU,kBAAmB,SAACP,GAClBC,EAAiBD,EAClB,IANKQ,EAAUN,EAAAM,WAAEC,EAAcP,EAAAO,eAAEC,EAAUR,EAAAQ,WAS9C,OACEC,EAAAC,EAAA,CAAAC,SAAA,CACEF,EAAK,MAAA,CAAAG,UAAU,8EAA6ED,SAAA,CAC1FF,EACM,MAAAI,EAAA,CAAA,EAAAN,EACJ,CAAAK,UAAW,6HAAAE,OACTN,EAAa,cAAgB,IAG/BG,SAAA,CAAAI,EAAA,MAAA,CAAAJ,SACEI,EAACC,EAAS,CAAAC,KAAM,OAElBF,EAAI,IAAA,CAAAJ,SAAAH,EAAa,eAAiB,gBAEpCO,EAAW,QAAAF,EAAA,CAAA,EAAAP,OAGZX,EAAMuB,OAAS,GACdH,EAAI,KAAA,CAAAH,UAAU,0BACXjB,EAAMwB,KAAI,SAACC,GAAS,OACnBL,EAEE,KAAA,CAAAH,UAAU,0DAETQ,EAAKC,MAHDD,EAAKC,KAKb,MAIJvB,EAAcoB,OAAS,GACtBT,SAAKG,UAAU,oBAAmBD,SAAA,CAChCI,kDACAA,EAAA,KAAA,CAAIH,UAAU,YAAWD,SACtBb,EAAcqB,KAAI,SAACC,GAAS,OAC3BL,EAEE,KAAA,CAAAH,UAAU,kDAAiDD,SAE1DS,EAAKC,MAHDD,EAAKC,KAFe,WAazC"}
@@ -0,0 +1,2 @@
1
+ import{useRef as i,useState as n}from"react";var e=["image/*","text/*","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-excel","application/vnd.ms-outlook","application/json","application/xml","application/pdf","application/x-compressed","application/x-zip-compressed","application/x-gzip","application/x-bzip2","application/x-tar","application/x-rar-compressed","application/x-7z-compressed","application/zip"];function a(a){var o=i(null),t=n(!1),r=t[0],p=t[1],c=function(i){var n=function(i){var n=[],a=[];return i.forEach((function(i){e.some((function(n){return i.type.match(n)}))?n.push(i):a.push(i)})),{validFiles:n,rejectedFiles:a}}(i),o=n.validFiles,t=n.rejectedFiles;o.length>0&&a.addFiles(o),t.length>0&&a.onValidationError&&a.onValidationError(t)};return{inputProps:{ref:o,type:"file",multiple:!0,className:"hidden",accept:e.join(","),onChange:function(i){if(i.target.files){var n=Array.from(i.target.files);c(n)}}},isDragging:r,dropSpaceProps:{onClick:function(){var i;return null===(i=o.current)||void 0===i?void 0:i.click()},onDrop:function(i){if(i.preventDefault(),p(!1),i.dataTransfer.files){var n=Array.from(i.dataTransfer.files);c(n)}},onDragOver:function(i){i.preventDefault(),p(!0)},onDragLeave:function(i){p(!1)}}}}export{a as useFileUploader};
2
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sources":["../../../../src/file-uploader/hook.ts"],"sourcesContent":["import { useRef, useState } from \"react\";\n\ninterface IPropsFileUploader {\n addFiles: (files: File[]) => void;\n onValidationError?: (rejectedFiles: File[]) => void;\n}\n\ninterface IReturnFileUploader {\n inputProps: {\n ref: React.RefObject<HTMLInputElement>;\n type: \"file\";\n multiple?: boolean;\n accept?: string;\n className?: string;\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n };\n isDragging: boolean;\n dropSpaceProps: {\n onClick?: React.MouseEventHandler;\n onDrop: (e: React.DragEvent) => void;\n onDragOver: (e: React.DragEvent) => void;\n onDragLeave: (e: React.DragEvent) => void;\n };\n}\n\nconst ACCEPTED_TYPES = [\n \"image/*\", // image\n \"text/*\", // .txt\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", // .xlsx\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\", // .pptx\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\", // .docx\n \"application/vnd.ms-excel\", // .xls\n \"application/vnd.ms-outlook\", // .msg\n \"application/json\", // .json\n \"application/xml\", // .xml\n \"application/pdf\", // .pdf\n \"application/x-compressed\", // .tgz\n \"application/x-zip-compressed\", // .zip\n \"application/x-gzip\", // .gz\n \"application/x-bzip2\", // .bz2\n \"application/x-tar\", // .tar\n \"application/x-rar-compressed\", // .rar\n \"application/x-7z-compressed\", // .7z\n \"application/zip\", // .zip\n];\n\nexport function useFileUploader(\n props: IPropsFileUploader\n): IReturnFileUploader {\n const inputRef = useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = useState(false);\n\n const validateFiles = (\n files: File[]\n ): { validFiles: File[]; rejectedFiles: File[] } => {\n const validFiles: File[] = [];\n const rejectedFiles: File[] = [];\n\n files.forEach((file) => {\n if (ACCEPTED_TYPES.some((type) => file.type.match(type))) {\n validFiles.push(file);\n } else {\n rejectedFiles.push(file);\n }\n });\n\n return { validFiles, rejectedFiles };\n };\n\n const addFiles = (files: File[]) => {\n const { validFiles, rejectedFiles } = validateFiles(files);\n if (validFiles.length > 0) {\n props.addFiles(validFiles);\n }\n if (rejectedFiles.length > 0 && props.onValidationError) {\n props.onValidationError(rejectedFiles);\n }\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n if (e.dataTransfer.files) {\n const droppedFiles = Array.from(e.dataTransfer.files);\n addFiles(droppedFiles);\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n setIsDragging(false);\n };\n\n return {\n inputProps: {\n ref: inputRef,\n type: \"file\",\n multiple: true,\n className: \"hidden\",\n accept: ACCEPTED_TYPES.join(\",\"),\n onChange: (e) => {\n if (e.target.files) {\n const selectedFiles = Array.from(e.target.files);\n addFiles(selectedFiles);\n }\n },\n },\n isDragging,\n dropSpaceProps: {\n onClick: () => inputRef.current?.click(),\n onDrop: handleDrop,\n onDragOver: handleDragOver,\n onDragLeave: handleDragLeave,\n },\n };\n}\n"],"names":["ACCEPTED_TYPES","useFileUploader","props","inputRef","useRef","_a","useState","isDragging","setIsDragging","addFiles","files","validFiles","rejectedFiles","forEach","file","some","type","match","push","validateFiles","length","onValidationError","inputProps","ref","multiple","className","accept","join","onChange","e","target","selectedFiles","Array","from","dropSpaceProps","onClick","current","click","onDrop","preventDefault","dataTransfer","droppedFiles","onDragOver","onDragLeave"],"mappings":"6CAyBA,IAAMA,EAAiB,CACrB,UACA,SACA,oEACA,4EACA,0EACA,2BACA,6BACA,mBACA,kBACA,kBACA,2BACA,+BACA,qBACA,sBACA,oBACA,+BACA,8BACA,mBAGI,SAAUC,EACdC,GAEA,IAAMC,EAAWC,EAAyB,MACpCC,EAA8BC,GAAS,GAAtCC,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAmB1BI,EAAW,SAACC,GACV,IAAAL,EAlBc,SACpBK,GAEA,IAAMC,EAAqB,GACrBC,EAAwB,GAU9B,OARAF,EAAMG,SAAQ,SAACC,GACTd,EAAee,MAAK,SAACC,GAAS,OAAAF,EAAKE,KAAKC,MAAMD,EAAK,IACrDL,EAAWO,KAAKJ,GAEhBF,EAAcM,KAAKJ,EAEvB,IAEO,CAAEH,WAAUA,EAAEC,cAAaA,EACpC,CAGwCO,CAAcT,GAA5CC,EAAUN,EAAAM,WAAEC,EAAaP,EAAAO,cAC7BD,EAAWS,OAAS,GACtBlB,EAAMO,SAASE,GAEbC,EAAcQ,OAAS,GAAKlB,EAAMmB,mBACpCnB,EAAMmB,kBAAkBT,EAE5B,EAoBA,MAAO,CACLU,WAAY,CACVC,IAAKpB,EACLa,KAAM,OACNQ,UAAU,EACVC,UAAW,SACXC,OAAQ1B,EAAe2B,KAAK,KAC5BC,SAAU,SAACC,GACT,GAAIA,EAAEC,OAAOpB,MAAO,CAClB,IAAMqB,EAAgBC,MAAMC,KAAKJ,EAAEC,OAAOpB,OAC1CD,EAASsB,EACV,CACF,GAEHxB,WAAUA,EACV2B,eAAgB,CACdC,QAAS,WAAM,IAAA9B,EAAA,OAAkB,QAAlBA,EAAAF,EAASiC,eAAS,IAAA/B,OAAA,EAAAA,EAAAgC,OAAO,EACxCC,OAnCe,SAACT,GAGlB,GAFAA,EAAEU,iBACF/B,GAAc,GACVqB,EAAEW,aAAa9B,MAAO,CACxB,IAAM+B,EAAeT,MAAMC,KAAKJ,EAAEW,aAAa9B,OAC/CD,EAASgC,EACV,CACH,EA6BIC,WA3BmB,SAACb,GACtBA,EAAEU,iBACF/B,GAAc,EAChB,EAyBImC,YAvBoB,SAACd,GACvBrB,GAAc,EAChB,GAwBF"}
@@ -1,2 +1,2 @@
1
- export{default as Table}from"./table/table/base.js";
1
+ export{default as Table}from"./table/table/base.js";export{FileUploader}from"./file-uploader/component.js";export{useFileUploader}from"./file-uploader/hook.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import{__extends as n}from"../../../node_modules/tslib/tslib.es6.js";import{ReactUIError as t}from"../../lib/errors.js";var r=function(t){function r(n,r,e){var o=t.call(this,n,r,e)||this;return o.name="TableError",o}return n(r,t),r}(t),e=function(t){function r(){var n=t.call(this,"Function not implemented.","RUTBL-NIF001","This function is not implemented.")||this;return n.name="NoImplementeFunctionError",n}return n(r,t),r}(t);function o(){throw new e}export{o as NoImplementeFunction,e as NoImplementeFunctionError,r as TableError};
1
+ import{__extends as n}from"../../../node_modules/tslib/tslib.es6.js";import{ReactUIError as t}from"../../lib/errors.js";!function(t){function r(n,r,o){var e=t.call(this,n,r,o)||this;return e.name="TableError",e}n(r,t)}(t);var r=function(t){function r(){var n=t.call(this,"Function not implemented.","RUTBL-NIF001","This function is not implemented.")||this;return n.name="NoImplementeFunctionError",n}return n(r,t),r}(t);function o(){throw new r}export{o as NoImplementeFunction,r as NoImplementeFunctionError};
2
2
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sources":["../../../../../src/table/lib/errors.ts"],"sourcesContent":["import { ReactUIError } from \"../../lib/errors\";\n\nexport class TableError extends ReactUIError {\n constructor(message: string, code: string, details: string) {\n super(message, code, details);\n this.name = \"TableError\";\n }\n}\n\nexport class NoImplementeFunctionError extends ReactUIError {\n constructor() {\n super(\n \"Function not implemented.\",\n \"RUTBL-NIF001\",\n \"This function is not implemented.\"\n );\n this.name = \"NoImplementeFunctionError\";\n }\n}\n\nexport function NoImplementeFunction() {\n throw new NoImplementeFunctionError();\n}\n"],"names":["TableError","_super","message","code","details","_this","this","name","__extends","ReactUIError","NoImplementeFunctionError","NoImplementeFunction"],"mappings":"wHAEA,IAAAA,EAAA,SAAAC,GACE,SAAAD,EAAYE,EAAiBC,EAAcC,GACzC,IAAAC,EAAAJ,YAAMC,EAASC,EAAMC,IAASE,YAC9BD,EAAKE,KAAO,cACb,CACH,OALgCC,EAAYR,EAAAC,GAK3CD,CAAD,CALA,CAAgCS,GAOhCC,EAAA,SAAAT,GACE,SAAAS,IACE,IAAAL,EAAAJ,YACE,4BACA,eACA,sCACAK,YACFD,EAAKE,KAAO,6BACb,CACH,OAT+CC,EAAYE,EAAAT,GAS1DS,CAAD,CATA,CAA+CD,YAW/BE,IACd,MAAM,IAAID,CACZ"}
1
+ {"version":3,"file":"errors.js","sources":["../../../../../src/table/lib/errors.ts"],"sourcesContent":["import { ReactUIError } from \"../../lib/errors\";\n\nexport class TableError extends ReactUIError {\n constructor(message: string, code: string, details: string) {\n super(message, code, details);\n this.name = \"TableError\";\n }\n}\n\nexport class NoImplementeFunctionError extends ReactUIError {\n constructor() {\n super(\n \"Function not implemented.\",\n \"RUTBL-NIF001\",\n \"This function is not implemented.\"\n );\n this.name = \"NoImplementeFunctionError\";\n }\n}\n\nexport function NoImplementeFunction() {\n throw new NoImplementeFunctionError();\n}\n"],"names":["_super","TableError","message","code","details","_this","this","name","__extends","ReactUIError","NoImplementeFunctionError","NoImplementeFunction"],"mappings":"yHAEA,SAAAA,GACE,SAAAC,EAAYC,EAAiBC,EAAcC,GACzC,IAAAC,EAAAL,YAAME,EAASC,EAAMC,IAASE,YAC9BD,EAAKE,KAAO,cACb,CAJ6BC,EAAYP,EAAAD,EAA5C,CAAA,CAAgCS,GAOhC,IAAAC,EAAA,SAAAV,GACE,SAAAU,IACE,IAAAL,EAAAL,YACE,4BACA,eACA,sCACAM,YACFD,EAAKE,KAAO,6BACb,CACH,OAT+CC,EAAYE,EAAAV,GAS1DU,CAAD,CATA,CAA+CD,YAW/BE,IACd,MAAM,IAAID,CACZ"}
@@ -1,2 +1,2 @@
1
- import{__assign as t}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as e,useMemo as n,useEffect as o}from"react";import{OutOfRangeError as r,InvalidOperationError as i}from"./errors.js";import{IdGenerator as a}from"../libs/id-generator.js";function d(t){var e=t.maxColIndex,n=t.maxRowIndex;if(e<-1)throw new r("001","maxColIndex must be 0 or greater","The provided maxColIndex (".concat(e,") is out of range. It must be 0 or greater."));if(n<-1)throw new r("002","maxRowIndex must be 0 or greater","The provided maxRowIndex (".concat(n,") is out of range. It must be 0 or greater."));return{maxColIndex:e,maxRowIndex:n}}function s(t){var e=t.rowIndex,n=t.colIndex,o=t.constraint,i=o.maxRowIndex,a=o.maxColIndex;if(e<0)throw new r("003","rowIndex must be 0 or greater","The provided rowIndex (".concat(e,") is out of range. It must be 0 or greater."));if(i<e)throw new r("004","rowIndex must be less than maxRowIndex","The provided rowIndex (".concat(e,") is out of range. It must be less than ").concat(i,"."));if(n<0)throw new r("005","colIndex must be 0 or greater","The provided colIndex (".concat(n,") is out of range. It must be 0 or greater."));if(a<n)throw new r("006","colIndex must be less than maxColIndex","The provided colIndex (".concat(n,") is out of range. It must be less than ").concat(a,"."));return{rowIndex:e,colIndex:n}}function c(t,e){return t.rowIndex===e.rowIndex&&t.colIndex===e.colIndex}var l={UP:{deltaRow:-1,deltaCol:0},DOWN:{deltaRow:1,deltaCol:0},LEFT:{deltaRow:0,deltaCol:-1},RIGHT:{deltaRow:0,deltaCol:1}};function w(t){var e=t.index,n=t.direction,o=t.constraint,i=l[n],a=i.deltaRow,d=i.deltaCol,c=e.rowIndex+a,w=e.colIndex+d;try{return s({rowIndex:c,colIndex:w,constraint:o})}catch(t){if(t instanceof r)return e;throw t}}var u=function(e,n){switch(n.type){case"setMax":return t(t({},e),{constraint:d(n.payload)});case"startSelectRange":var o=s({rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex,constraint:e.constraint});return e.isSelecting&&c(e.start,o)&&c(e.end,o)&&e.inProgress?e:t(t({},e),{isSelecting:!0,inProgress:!0,start:o,end:o});case"moveSelectRange":if(!e.isSelecting||!e.inProgress)return e;var r=s({rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex,constraint:e.constraint});return c(e.end,r)?e:t(t({},e),{end:r});case"endSelectRange":if(!e.isSelecting)throw new i("001","Cannot set end without starting","Cannot set end without starting");return e.inProgress?t(t({},e),{inProgress:!1}):e;case"moveUp":if(!e.isSelecting)throw new i("002","Cannot move without starting","Cannot move without starting");return c(o=w({index:e.start,direction:"UP",constraint:e.constraint}),e.start)&&c(o,e.end)?e:t(t({},e),{start:o,end:o});case"moveDown":if(!e.isSelecting)throw new i("003","Cannot move without starting","Cannot move without starting");return c(o=w({index:e.start,direction:"DOWN",constraint:e.constraint}),e.start)&&c(o,e.end)?e:t(t({},e),{start:o,end:o});case"moveLeft":if(!e.isSelecting)throw new i("004","Cannot move without starting","Cannot move without starting");return c(o=w({index:e.start,direction:"LEFT",constraint:e.constraint}),e.start)&&c(o,e.end)?e:t(t({},e),{start:o,end:o});case"moveRight":if(!e.isSelecting)throw new i("005","Cannot move without starting","Cannot move without starting");return c(o=w({index:e.start,direction:"RIGHT",constraint:e.constraint}),e.start)&&c(o,e.end)?e:t(t({},e),{start:o,end:o});case"extendUp":if(!e.isSelecting)throw new i("006","Cannot extend without starting","Cannot extend without starting");return c(r=w({index:e.end,direction:"UP",constraint:e.constraint}),e.end)?e:t(t({},e),{end:r});case"extendDown":if(!e.isSelecting)throw new i("007","Cannot extend without starting","Cannot extend without starting");return c(r=w({index:e.end,direction:"DOWN",constraint:e.constraint}),e.end)?e:t(t({},e),{end:r});case"extendLeft":if(!e.isSelecting)throw new i("008","Cannot extend without starting","Cannot extend without starting");return c(r=w({index:e.end,direction:"LEFT",constraint:e.constraint}),e.end)?e:t(t({},e),{end:r});case"extendRight":if(!e.isSelecting)throw new i("009","Cannot extend without starting","Cannot extend without starting");return c(r=w({index:e.end,direction:"RIGHT",constraint:e.constraint}),e.end)?e:t(t({},e),{end:r});case"reset":return{constraint:e.constraint,isSelecting:!1}}};function x(){var r=e(u,{constraint:d({maxColIndex:0,maxRowIndex:0}),isSelecting:!1}),i=r[0],s=r[1],c=n((function(){return{setMax:function(t){s({type:"setMax",payload:t})},startSelectRange:function(t){s({type:"startSelectRange",payload:t})},moveSelectRange:function(t){s({type:"moveSelectRange",payload:t})},endSelectRange:function(){s({type:"endSelectRange"})},moveUp:function(){s({type:"moveUp"})},moveDown:function(){s({type:"moveDown"})},moveLeft:function(){s({type:"moveLeft"})},moveRight:function(){s({type:"moveRight"})},extendUp:function(){s({type:"extendUp"})},extendDown:function(){s({type:"extendDown"})},extendLeft:function(){s({type:"extendLeft"})},extendRight:function(){s({type:"extendRight"})},reset:function(){s({type:"reset"})}}}),[]);return o((function(){var t=function(t){var e=document.getElementById(a.getTableId()),n=t.target;n instanceof Node&&(null==e?void 0:e.contains(n))||s({type:"reset"})};return document.addEventListener("mousedown",t),function(){document.removeEventListener("mousedown",t)}}),[]),{state:n((function(){if(!i.isSelecting)return i;var e=document.getElementById(a.getTableCellId(i.start.rowIndex,i.start.colIndex)),n=document.getElementById(a.getTableCellId(i.end.rowIndex,i.end.colIndex)),o=document.getElementById(a.getTableId());if(!e||!n||!o)return s({type:"reset"}),{isSelecting:!1};var r=e.getBoundingClientRect(),d=n.getBoundingClientRect(),c=o.getBoundingClientRect(),l=c.top-o.scrollTop-window.scrollY,w=c.left-o.scrollLeft-window.scrollX,u={top:r.top-l,left:r.left-w,width:r.width,height:r.height},x={top:d.top-l,left:d.left-w,width:d.width,height:d.height};return{isSelecting:!0,start:t(t({},i.start),{xStart:u.left,xEnd:u.left+u.width,yStart:u.top,yEnd:u.top+u.height}),end:t(t({},i.end),{xStart:x.left,xEnd:x.left+x.width,yStart:x.top,yEnd:x.top+x.height}),rangeBox:{top:Math.min(u.top,x.top),left:Math.min(u.left,x.left),width:Math.abs(u.left-x.left)+(u.left<=x.left?x.width:u.width),height:Math.abs(u.top-x.top)+(u.top<=x.top?x.height:u.height)}}}),[i]),actions:c}}export{u as rangeReducer,x as useRangeReducer};
1
+ import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as t,useMemo as n,useEffect as o}from"react";import{IdGenerator as i}from"../libs/id-generator.js";function r(e){return{maxColIndex:e.maxColIndex<-1?-1:e.maxColIndex,maxRowIndex:e.maxRowIndex<-1?-1:e.maxRowIndex}}function d(e){var t=e.rowIndex,n=e.colIndex;return t<0?t=0:e.constraint.maxRowIndex<t&&(t=e.constraint.maxRowIndex),n<0?n=0:e.constraint.maxColIndex<n&&(n=e.constraint.maxColIndex),{rowIndex:t,colIndex:n}}function a(e,t){return e.rowIndex===t.rowIndex&&e.colIndex===t.colIndex}var c={UP:{deltaRow:-1,deltaCol:0},DOWN:{deltaRow:1,deltaCol:0},LEFT:{deltaRow:0,deltaCol:-1},RIGHT:{deltaRow:0,deltaCol:1}};function s(e){var t=e.index,n=e.direction,o=e.constraint,i=c[n],r=i.deltaRow,a=i.deltaCol;return d({rowIndex:t.rowIndex+r,colIndex:t.colIndex+a,constraint:o})}var l=function(t,n){switch(n.type){case"setMax":return e(e({},t),{constraint:r(n.payload)});case"startSelectRange":var o=d({rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex,constraint:t.constraint});return t.isSelecting&&a(t.start,o)&&a(t.end,o)&&t.inProgress?t:e(e({},t),{isSelecting:!0,inProgress:!0,start:o,end:o});case"moveSelectRange":if(!t.isSelecting||!t.inProgress)return t;var i=d({rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex,constraint:t.constraint});return a(t.end,i)?t:e(e({},t),{end:i});case"endSelectRange":return t.isSelecting&&t.inProgress?e(e({},t),{inProgress:!1}):t;case"moveUp":return t.isSelecting?a(o=s({index:t.start,direction:"UP",constraint:t.constraint}),t.start)&&a(o,t.end)?t:e(e({},t),{start:o,end:o}):t;case"moveDown":return t.isSelecting?a(o=s({index:t.start,direction:"DOWN",constraint:t.constraint}),t.start)&&a(o,t.end)?t:e(e({},t),{start:o,end:o}):t;case"moveLeft":return t.isSelecting?a(o=s({index:t.start,direction:"LEFT",constraint:t.constraint}),t.start)&&a(o,t.end)?t:e(e({},t),{start:o,end:o}):t;case"moveRight":return t.isSelecting?a(o=s({index:t.start,direction:"RIGHT",constraint:t.constraint}),t.start)&&a(o,t.end)?t:e(e({},t),{start:o,end:o}):t;case"extendUp":return t.isSelecting?a(i=s({index:t.end,direction:"UP",constraint:t.constraint}),t.end)?t:e(e({},t),{end:i}):t;case"extendDown":return t.isSelecting?a(i=s({index:t.end,direction:"DOWN",constraint:t.constraint}),t.end)?t:e(e({},t),{end:i}):t;case"extendLeft":return t.isSelecting?a(i=s({index:t.end,direction:"LEFT",constraint:t.constraint}),t.end)?t:e(e({},t),{end:i}):t;case"extendRight":return t.isSelecting?a(i=s({index:t.end,direction:"RIGHT",constraint:t.constraint}),t.end)?t:e(e({},t),{end:i}):t;case"reset":return{constraint:t.constraint,isSelecting:!1}}};function x(){var d=t(l,{constraint:r({maxColIndex:0,maxRowIndex:0}),isSelecting:!1}),a=d[0],c=d[1],s=n((function(){return{setMax:function(e){c({type:"setMax",payload:e})},startSelectRange:function(e){c({type:"startSelectRange",payload:e})},moveSelectRange:function(e){c({type:"moveSelectRange",payload:e})},endSelectRange:function(){c({type:"endSelectRange"})},moveUp:function(){c({type:"moveUp"})},moveDown:function(){c({type:"moveDown"})},moveLeft:function(){c({type:"moveLeft"})},moveRight:function(){c({type:"moveRight"})},extendUp:function(){c({type:"extendUp"})},extendDown:function(){c({type:"extendDown"})},extendLeft:function(){c({type:"extendLeft"})},extendRight:function(){c({type:"extendRight"})},reset:function(){c({type:"reset"})}}}),[]);return o((function(){var e=function(e){var t=document.getElementById(i.getTableId()),n=e.target;n instanceof Node&&(null==t?void 0:t.contains(n))||c({type:"reset"})};return document.addEventListener("mousedown",e),function(){document.removeEventListener("mousedown",e)}}),[]),{state:n((function(){if(!a.isSelecting)return a;var t=document.getElementById(i.getTableCellId(a.start.rowIndex,a.start.colIndex)),n=document.getElementById(i.getTableCellId(a.end.rowIndex,a.end.colIndex)),o=document.getElementById(i.getTableId());if(!t||!n||!o)return c({type:"reset"}),{isSelecting:!1};var r=t.getBoundingClientRect(),d=n.getBoundingClientRect(),s=o.getBoundingClientRect(),l=s.top-o.scrollTop-window.scrollY,x=s.left-o.scrollLeft-window.scrollX,g={top:r.top-l,left:r.left-x,width:r.width,height:r.height},u={top:d.top-l,left:d.left-x,width:d.width,height:d.height};return{isSelecting:!0,start:e(e({},a.start),{xStart:g.left,xEnd:g.left+g.width,yStart:g.top,yEnd:g.top+g.height}),end:e(e({},a.end),{xStart:u.left,xEnd:u.left+u.width,yStart:u.top,yEnd:u.top+u.height}),rangeBox:{top:Math.min(g.top,u.top),left:Math.min(g.left,u.left),width:Math.abs(g.left-u.left)+(g.left<=u.left?u.width:g.width),height:Math.abs(g.top-u.top)+(g.top<=u.top?u.height:g.height)}}}),[a]),actions:s}}export{l as rangeReducer,x as useRangeReducer};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/range/hooks.ts"],"sourcesContent":["import { useEffect, useMemo, useReducer } from \"react\";\nimport { InvalidOperationError, OutOfRangeError } from \"./errors\";\nimport {\n IIndex,\n TRangeReducer,\n IRangeConstraint,\n TReturnRangeReducer,\n} from \"./type\";\nimport { IdGenerator } from \"../libs\";\n\nfunction newRangeConstraint({\n maxColIndex,\n maxRowIndex,\n}: {\n maxColIndex: number;\n maxRowIndex: number;\n}): IRangeConstraint {\n if (maxColIndex < -1) {\n throw new OutOfRangeError(\n \"001\",\n \"maxColIndex must be 0 or greater\",\n `The provided maxColIndex (${maxColIndex}) is out of range. It must be 0 or greater.`\n );\n }\n\n if (maxRowIndex < -1) {\n throw new OutOfRangeError(\n \"002\",\n \"maxRowIndex must be 0 or greater\",\n `The provided maxRowIndex (${maxRowIndex}) is out of range. It must be 0 or greater.`\n );\n }\n\n return {\n maxColIndex,\n maxRowIndex,\n };\n}\n\nfunction newIndex({\n rowIndex,\n colIndex,\n constraint: { maxRowIndex, maxColIndex },\n}: {\n rowIndex: number;\n colIndex: number;\n constraint: IRangeConstraint;\n}): IIndex {\n if (rowIndex < 0) {\n throw new OutOfRangeError(\n \"003\",\n \"rowIndex must be 0 or greater\",\n `The provided rowIndex (${rowIndex}) is out of range. It must be 0 or greater.`\n );\n }\n\n if (maxRowIndex < rowIndex) {\n throw new OutOfRangeError(\n \"004\",\n \"rowIndex must be less than maxRowIndex\",\n `The provided rowIndex (${rowIndex}) is out of range. It must be less than ${maxRowIndex}.`\n );\n }\n\n if (colIndex < 0) {\n throw new OutOfRangeError(\n \"005\",\n \"colIndex must be 0 or greater\",\n `The provided colIndex (${colIndex}) is out of range. It must be 0 or greater.`\n );\n }\n\n if (maxColIndex < colIndex) {\n throw new OutOfRangeError(\n \"006\",\n \"colIndex must be less than maxColIndex\",\n `The provided colIndex (${colIndex}) is out of range. It must be less than ${maxColIndex}.`\n );\n }\n\n return { rowIndex, colIndex };\n}\n\nfunction equalIndex(a: IIndex, b: IIndex): boolean {\n return a.rowIndex === b.rowIndex && a.colIndex === b.colIndex;\n}\n\nconst MOVE_ACTION = {\n UP: { deltaRow: -1, deltaCol: 0 },\n DOWN: { deltaRow: 1, deltaCol: 0 },\n LEFT: { deltaRow: 0, deltaCol: -1 },\n RIGHT: { deltaRow: 0, deltaCol: 1 },\n} as const;\n\ntype TMoveAction = keyof typeof MOVE_ACTION;\n\nfunction moveIndex({\n index,\n direction,\n constraint,\n}: {\n index: IIndex;\n direction: TMoveAction;\n constraint: IRangeConstraint;\n}): IIndex {\n const { deltaRow, deltaCol } = MOVE_ACTION[direction];\n\n const newRow = index.rowIndex + deltaRow;\n const newCol = index.colIndex + deltaCol;\n\n try {\n return newIndex({\n rowIndex: newRow,\n colIndex: newCol,\n constraint,\n });\n } catch (e) {\n if (e instanceof OutOfRangeError) {\n return index;\n }\n\n throw e;\n }\n}\n\nexport const rangeReducer: TRangeReducer = (state, action) => {\n switch (action.type) {\n /**\n * Actionが\"setMax\"の場合の説明:\n * - Actionのtypeが\"setMax\"の場合、選択範囲の最大値を設定します。\n * - payloadのmaxRowIndexとmaxColIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、constraintを新しい範囲制約に設定します。\n */\n case \"setMax\":\n return {\n ...state,\n constraint: newRangeConstraint(action.payload),\n };\n\n /**\n * Actionが\"start\"の場合の説明:\n * - Actionのtypeが\"start\"の場合、選択範囲の開始位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、isSelectingをtrueに設定し、startとendの位置をpayloadの位置に設定します。\n */\n case \"startSelectRange\": {\n const startIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (\n state.isSelecting &&\n equalIndex(state.start, startIndex) &&\n equalIndex(state.end, startIndex) &&\n state.inProgress\n ) {\n return state;\n }\n\n return {\n ...state,\n isSelecting: true,\n inProgress: true,\n start: startIndex,\n end: startIndex,\n };\n }\n\n case \"moveSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(state.end, endIndex)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"end\"の場合の説明:\n * - Actionのtypeが\"end\"の場合、選択範囲の終了位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、endの位置をpayloadの位置に設定します。\n * - この場合、isSelectingはtrueのままです。\n */\n case \"endSelectRange\": {\n if (!state.isSelecting) {\n throw new InvalidOperationError(\n \"001\",\n \"Cannot set end without starting\",\n \"Cannot set end without starting\"\n );\n }\n\n if (!state.inProgress) {\n return state;\n }\n\n return {\n ...state,\n inProgress: false,\n };\n }\n\n /**\n * Actionが\"moveUp\"の場合の説明:\n * - Actionのtypeが\"moveUp\"の場合、選択範囲を上に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に移動します。\n */\n case \"moveUp\": {\n if (!state.isSelecting) {\n throw new InvalidOperationError(\n \"002\",\n \"Cannot move without starting\",\n \"Cannot move without starting\"\n );\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveDown\"の場合の説明:\n * - Actionのtypeが\"moveDown\"の場合、選択範囲を下に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に移動します。\n */\n case \"moveDown\": {\n if (!state.isSelecting) {\n throw new InvalidOperationError(\n \"003\",\n \"Cannot move without starting\",\n \"Cannot move without starting\"\n );\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveLeft\"の場合の説明:\n * - Actionのtypeが\"moveLeft\"の場合、選択範囲を左に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に移動します。\n */\n case \"moveLeft\": {\n if (!state.isSelecting) {\n throw new InvalidOperationError(\n \"004\",\n \"Cannot move without starting\",\n \"Cannot move without starting\"\n );\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRight\"の場合の説明:\n * - Actionのtypeが\"moveRight\"の場合、選択範囲を右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に移動します。\n */\n case \"moveRight\": {\n if (!state.isSelecting) {\n throw new InvalidOperationError(\n \"005\",\n \"Cannot move without starting\",\n \"Cannot move without starting\"\n );\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"extendUp\"の場合の説明:\n * - Actionのtypeが\"extendUp\"の場合、選択範囲を上に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に拡張します。\n */\n case \"extendUp\": {\n if (!state.isSelecting) {\n throw new InvalidOperationError(\n \"006\",\n \"Cannot extend without starting\",\n \"Cannot extend without starting\"\n );\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendDown\"の場合の説明:\n * - Actionのtypeが\"extendDown\"の場合、選択範囲を下に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に拡張します。\n */\n case \"extendDown\": {\n if (!state.isSelecting) {\n throw new InvalidOperationError(\n \"007\",\n \"Cannot extend without starting\",\n \"Cannot extend without starting\"\n );\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendLeft\"の場合の説明:\n * - Actionのtypeが\"extendLeft\"の場合、選択範囲を左に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に拡張します。\n */\n case \"extendLeft\": {\n if (!state.isSelecting) {\n throw new InvalidOperationError(\n \"008\",\n \"Cannot extend without starting\",\n \"Cannot extend without starting\"\n );\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRight\"の場合の説明:\n * - Actionのtypeが\"extendRight\"の場合、選択範囲を右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に拡張します。\n */\n case \"extendRight\": {\n if (!state.isSelecting) {\n throw new InvalidOperationError(\n \"009\",\n \"Cannot extend without starting\",\n \"Cannot extend without starting\"\n );\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"reset\"の場合の説明:\n * - Actionのtypeが\"reset\"の場合、選択範囲をリセットします。\n * - isSelectingをfalseに設定します。\n */\n case \"reset\":\n return {\n constraint: state.constraint,\n isSelecting: false,\n };\n }\n};\n\nexport function useRangeReducer(): TReturnRangeReducer {\n const [state, dispatch] = useReducer(rangeReducer, {\n constraint: newRangeConstraint({ maxColIndex: 0, maxRowIndex: 0 }),\n isSelecting: false,\n });\n\n const actions = useMemo(\n () => ({\n setMax: (payload: { maxRowIndex: number; maxColIndex: number }) => {\n dispatch({ type: \"setMax\", payload });\n },\n startSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"startSelectRange\", payload });\n },\n moveSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"moveSelectRange\", payload });\n },\n endSelectRange: () => {\n dispatch({ type: \"endSelectRange\" });\n },\n moveUp: () => {\n dispatch({ type: \"moveUp\" });\n },\n moveDown: () => {\n dispatch({ type: \"moveDown\" });\n },\n moveLeft: () => {\n dispatch({ type: \"moveLeft\" });\n },\n moveRight: () => {\n dispatch({ type: \"moveRight\" });\n },\n extendUp: () => {\n dispatch({ type: \"extendUp\" });\n },\n extendDown: () => {\n dispatch({ type: \"extendDown\" });\n },\n extendLeft: () => {\n dispatch({ type: \"extendLeft\" });\n },\n extendRight: () => {\n dispatch({ type: \"extendRight\" });\n },\n reset: () => {\n dispatch({ type: \"reset\" });\n },\n }),\n []\n );\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(IdGenerator.getTableId());\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n dispatch({ type: \"reset\" });\n };\n\n document.addEventListener(\"mousedown\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"mousedown\", onClickOutOfTable);\n };\n }, []);\n\n const exState = useMemo<TReturnRangeReducer[\"state\"]>(() => {\n if (!state.isSelecting) {\n return state;\n }\n\n const startElement = document.getElementById(\n IdGenerator.getTableCellId(state.start.rowIndex, state.start.colIndex)\n );\n const endElement = document.getElementById(\n IdGenerator.getTableCellId(state.end.rowIndex, state.end.colIndex)\n );\n const tableElement = document.getElementById(IdGenerator.getTableId());\n\n if (!startElement || !endElement || !tableElement) {\n dispatch({ type: \"reset\" });\n return { isSelecting: false };\n }\n\n const startRect = startElement.getBoundingClientRect();\n const endRect = endElement.getBoundingClientRect();\n const rectTable = tableElement.getBoundingClientRect();\n\n const adjustSize = {\n y: rectTable.top - tableElement.scrollTop - window.scrollY,\n x: rectTable.left - tableElement.scrollLeft - window.scrollX,\n };\n\n const startDivProps = {\n top: startRect.top - adjustSize.y,\n left: startRect.left - adjustSize.x,\n width: startRect.width,\n height: startRect.height,\n };\n\n const endDivProps = {\n top: endRect.top - adjustSize.y,\n left: endRect.left - adjustSize.x,\n width: endRect.width,\n height: endRect.height,\n };\n\n return {\n isSelecting: true,\n start: {\n ...state.start,\n xStart: startDivProps.left,\n xEnd: startDivProps.left + startDivProps.width,\n yStart: startDivProps.top,\n yEnd: startDivProps.top + startDivProps.height,\n },\n end: {\n ...state.end,\n xStart: endDivProps.left,\n xEnd: endDivProps.left + endDivProps.width,\n yStart: endDivProps.top,\n yEnd: endDivProps.top + endDivProps.height,\n },\n rangeBox: {\n top: Math.min(startDivProps.top, endDivProps.top),\n left: Math.min(startDivProps.left, endDivProps.left),\n width:\n Math.abs(startDivProps.left - endDivProps.left) +\n (startDivProps.left <= endDivProps.left\n ? endDivProps.width\n : startDivProps.width),\n height:\n Math.abs(startDivProps.top - endDivProps.top) +\n (startDivProps.top <= endDivProps.top\n ? endDivProps.height\n : startDivProps.height),\n },\n };\n }, [state]);\n\n return {\n state: exState,\n actions,\n };\n}\n"],"names":["newRangeConstraint","_a","maxColIndex","maxRowIndex","OutOfRangeError","concat","newIndex","rowIndex","colIndex","_b","constraint","equalIndex","a","b","MOVE_ACTION","UP","deltaRow","deltaCol","DOWN","LEFT","RIGHT","moveIndex","index","direction","newRow","newCol","e","rangeReducer","state","action","type","__assign","payload","startIndex","isSelecting","start","end","inProgress","endIndex","InvalidOperationError","useRangeReducer","useReducer","dispatch","actions","useMemo","setMax","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","extendUp","extendDown","extendLeft","extendRight","reset","useEffect","onClickOutOfTable","element","document","getElementById","IdGenerator","getTableId","ele","target","Node","contains","addEventListener","removeEventListener","startElement","getTableCellId","endElement","tableElement","startRect","getBoundingClientRect","endRect","rectTable","adjustSize","top","scrollTop","window","scrollY","left","scrollLeft","scrollX","startDivProps","width","height","endDivProps","xStart","xEnd","yStart","yEnd","rangeBox","Math","min","abs"],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/range/hooks.ts"],"sourcesContent":["import { useEffect, useMemo, useReducer } from \"react\";\nimport {\n IIndex,\n TRangeReducer,\n IRangeConstraint,\n TReturnRangeReducer,\n} from \"./type\";\nimport { IdGenerator } from \"../libs\";\n\nfunction newRangeConstraint(props: {\n maxColIndex: number;\n maxRowIndex: number;\n}): IRangeConstraint {\n return {\n maxColIndex: props.maxColIndex < -1 ? -1 : props.maxColIndex,\n maxRowIndex: props.maxRowIndex < -1 ? -1 : props.maxRowIndex,\n };\n}\n\nfunction newIndex(props: {\n rowIndex: number;\n colIndex: number;\n constraint: IRangeConstraint;\n}): IIndex {\n let rowIndex = props.rowIndex;\n let colIndex = props.colIndex;\n\n if (rowIndex < 0) {\n rowIndex = 0;\n } else if (props.constraint.maxRowIndex < rowIndex) {\n rowIndex = props.constraint.maxRowIndex;\n }\n\n if (colIndex < 0) {\n colIndex = 0;\n } else if (props.constraint.maxColIndex < colIndex) {\n colIndex = props.constraint.maxColIndex;\n }\n\n return { rowIndex, colIndex };\n}\n\nfunction equalIndex(a: IIndex, b: IIndex): boolean {\n return a.rowIndex === b.rowIndex && a.colIndex === b.colIndex;\n}\n\nconst MOVE_ACTION = {\n UP: { deltaRow: -1, deltaCol: 0 },\n DOWN: { deltaRow: 1, deltaCol: 0 },\n LEFT: { deltaRow: 0, deltaCol: -1 },\n RIGHT: { deltaRow: 0, deltaCol: 1 },\n} as const;\n\ntype TMoveAction = keyof typeof MOVE_ACTION;\n\nfunction moveIndex({\n index,\n direction,\n constraint,\n}: {\n index: IIndex;\n direction: TMoveAction;\n constraint: IRangeConstraint;\n}): IIndex {\n const { deltaRow, deltaCol } = MOVE_ACTION[direction];\n\n const newRow = index.rowIndex + deltaRow;\n const newCol = index.colIndex + deltaCol;\n\n return newIndex({\n rowIndex: newRow,\n colIndex: newCol,\n constraint,\n });\n}\n\nexport const rangeReducer: TRangeReducer = (state, action) => {\n switch (action.type) {\n /**\n * Actionが\"setMax\"の場合の説明:\n * - Actionのtypeが\"setMax\"の場合、選択範囲の最大値を設定します。\n * - payloadのmaxRowIndexとmaxColIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、constraintを新しい範囲制約に設定します。\n */\n case \"setMax\":\n return {\n ...state,\n constraint: newRangeConstraint(action.payload),\n };\n\n /**\n * Actionが\"start\"の場合の説明:\n * - Actionのtypeが\"start\"の場合、選択範囲の開始位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、isSelectingをtrueに設定し、startとendの位置をpayloadの位置に設定します。\n */\n case \"startSelectRange\": {\n const startIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (\n state.isSelecting &&\n equalIndex(state.start, startIndex) &&\n equalIndex(state.end, startIndex) &&\n state.inProgress\n ) {\n return state;\n }\n\n return {\n ...state,\n isSelecting: true,\n inProgress: true,\n start: startIndex,\n end: startIndex,\n };\n }\n\n case \"moveSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(state.end, endIndex)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"end\"の場合の説明:\n * - Actionのtypeが\"end\"の場合、選択範囲の終了位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、endの位置をpayloadの位置に設定します。\n * - この場合、isSelectingはtrueのままです。\n */\n case \"endSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n return {\n ...state,\n inProgress: false,\n };\n }\n\n /**\n * Actionが\"moveUp\"の場合の説明:\n * - Actionのtypeが\"moveUp\"の場合、選択範囲を上に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に移動します。\n */\n case \"moveUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveDown\"の場合の説明:\n * - Actionのtypeが\"moveDown\"の場合、選択範囲を下に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に移動します。\n */\n case \"moveDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveLeft\"の場合の説明:\n * - Actionのtypeが\"moveLeft\"の場合、選択範囲を左に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に移動します。\n */\n case \"moveLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRight\"の場合の説明:\n * - Actionのtypeが\"moveRight\"の場合、選択範囲を右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に移動します。\n */\n case \"moveRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"extendUp\"の場合の説明:\n * - Actionのtypeが\"extendUp\"の場合、選択範囲を上に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に拡張します。\n */\n case \"extendUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendDown\"の場合の説明:\n * - Actionのtypeが\"extendDown\"の場合、選択範囲を下に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に拡張します。\n */\n case \"extendDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendLeft\"の場合の説明:\n * - Actionのtypeが\"extendLeft\"の場合、選択範囲を左に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に拡張します。\n */\n case \"extendLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRight\"の場合の説明:\n * - Actionのtypeが\"extendRight\"の場合、選択範囲を右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に拡張します。\n */\n case \"extendRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"reset\"の場合の説明:\n * - Actionのtypeが\"reset\"の場合、選択範囲をリセットします。\n * - isSelectingをfalseに設定します。\n */\n case \"reset\":\n return {\n constraint: state.constraint,\n isSelecting: false,\n };\n }\n};\n\nexport function useRangeReducer(): TReturnRangeReducer {\n const [state, dispatch] = useReducer(rangeReducer, {\n constraint: newRangeConstraint({ maxColIndex: 0, maxRowIndex: 0 }),\n isSelecting: false,\n });\n\n const actions = useMemo(\n () => ({\n setMax: (payload: { maxRowIndex: number; maxColIndex: number }) => {\n dispatch({ type: \"setMax\", payload });\n },\n startSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"startSelectRange\", payload });\n },\n moveSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"moveSelectRange\", payload });\n },\n endSelectRange: () => {\n dispatch({ type: \"endSelectRange\" });\n },\n moveUp: () => {\n dispatch({ type: \"moveUp\" });\n },\n moveDown: () => {\n dispatch({ type: \"moveDown\" });\n },\n moveLeft: () => {\n dispatch({ type: \"moveLeft\" });\n },\n moveRight: () => {\n dispatch({ type: \"moveRight\" });\n },\n extendUp: () => {\n dispatch({ type: \"extendUp\" });\n },\n extendDown: () => {\n dispatch({ type: \"extendDown\" });\n },\n extendLeft: () => {\n dispatch({ type: \"extendLeft\" });\n },\n extendRight: () => {\n dispatch({ type: \"extendRight\" });\n },\n reset: () => {\n dispatch({ type: \"reset\" });\n },\n }),\n []\n );\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(IdGenerator.getTableId());\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n dispatch({ type: \"reset\" });\n };\n\n document.addEventListener(\"mousedown\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"mousedown\", onClickOutOfTable);\n };\n }, []);\n\n const exState = useMemo<TReturnRangeReducer[\"state\"]>(() => {\n if (!state.isSelecting) {\n return state;\n }\n\n const startElement = document.getElementById(\n IdGenerator.getTableCellId(state.start.rowIndex, state.start.colIndex)\n );\n const endElement = document.getElementById(\n IdGenerator.getTableCellId(state.end.rowIndex, state.end.colIndex)\n );\n const tableElement = document.getElementById(IdGenerator.getTableId());\n\n if (!startElement || !endElement || !tableElement) {\n dispatch({ type: \"reset\" });\n return { isSelecting: false };\n }\n\n const startRect = startElement.getBoundingClientRect();\n const endRect = endElement.getBoundingClientRect();\n const rectTable = tableElement.getBoundingClientRect();\n\n const adjustSize = {\n y: rectTable.top - tableElement.scrollTop - window.scrollY,\n x: rectTable.left - tableElement.scrollLeft - window.scrollX,\n };\n\n const startDivProps = {\n top: startRect.top - adjustSize.y,\n left: startRect.left - adjustSize.x,\n width: startRect.width,\n height: startRect.height,\n };\n\n const endDivProps = {\n top: endRect.top - adjustSize.y,\n left: endRect.left - adjustSize.x,\n width: endRect.width,\n height: endRect.height,\n };\n\n return {\n isSelecting: true,\n start: {\n ...state.start,\n xStart: startDivProps.left,\n xEnd: startDivProps.left + startDivProps.width,\n yStart: startDivProps.top,\n yEnd: startDivProps.top + startDivProps.height,\n },\n end: {\n ...state.end,\n xStart: endDivProps.left,\n xEnd: endDivProps.left + endDivProps.width,\n yStart: endDivProps.top,\n yEnd: endDivProps.top + endDivProps.height,\n },\n rangeBox: {\n top: Math.min(startDivProps.top, endDivProps.top),\n left: Math.min(startDivProps.left, endDivProps.left),\n width:\n Math.abs(startDivProps.left - endDivProps.left) +\n (startDivProps.left <= endDivProps.left\n ? endDivProps.width\n : startDivProps.width),\n height:\n Math.abs(startDivProps.top - endDivProps.top) +\n (startDivProps.top <= endDivProps.top\n ? endDivProps.height\n : startDivProps.height),\n },\n };\n }, [state]);\n\n return {\n state: exState,\n actions,\n };\n}\n"],"names":["newRangeConstraint","props","maxColIndex","maxRowIndex","newIndex","rowIndex","colIndex","constraint","equalIndex","a","b","MOVE_ACTION","UP","deltaRow","deltaCol","DOWN","LEFT","RIGHT","moveIndex","_a","index","direction","_b","rangeReducer","state","action","type","__assign","payload","startIndex","isSelecting","start","end","inProgress","endIndex","useRangeReducer","useReducer","dispatch","actions","useMemo","setMax","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","extendUp","extendDown","extendLeft","extendRight","reset","useEffect","onClickOutOfTable","e","element","document","getElementById","IdGenerator","getTableId","ele","target","Node","contains","addEventListener","removeEventListener","startElement","getTableCellId","endElement","tableElement","startRect","getBoundingClientRect","endRect","rectTable","adjustSize","top","scrollTop","window","scrollY","left","scrollLeft","scrollX","startDivProps","width","height","endDivProps","xStart","xEnd","yStart","yEnd","rangeBox","Math","min","abs"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -118,4 +118,31 @@ type TPropsTable<T extends DataRecord> = {
118
118
 
119
119
  declare function Table<T extends DataRecord>(props: TPropsTable<T>): react_jsx_runtime.JSX.Element;
120
120
 
121
- export { Table };
121
+ interface FileUploaderProps {
122
+ }
123
+ declare function FileUploader(props: FileUploaderProps): react_jsx_runtime.JSX.Element;
124
+
125
+ interface IPropsFileUploader {
126
+ addFiles: (files: File[]) => void;
127
+ onValidationError?: (rejectedFiles: File[]) => void;
128
+ }
129
+ interface IReturnFileUploader {
130
+ inputProps: {
131
+ ref: React.RefObject<HTMLInputElement>;
132
+ type: "file";
133
+ multiple?: boolean;
134
+ accept?: string;
135
+ className?: string;
136
+ onChange: React.ChangeEventHandler<HTMLInputElement>;
137
+ };
138
+ isDragging: boolean;
139
+ dropSpaceProps: {
140
+ onClick?: React.MouseEventHandler;
141
+ onDrop: (e: React.DragEvent) => void;
142
+ onDragOver: (e: React.DragEvent) => void;
143
+ onDragLeave: (e: React.DragEvent) => void;
144
+ };
145
+ }
146
+ declare function useFileUploader(props: IPropsFileUploader): IReturnFileUploader;
147
+
148
+ export { FileUploader, Table, useFileUploader };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teppen/react-ui",
3
- "version": "1.6.1",
3
+ "version": "1.7.0",
4
4
  "description": "React UI Component",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/esm/src/index.js",
@@ -1,2 +0,0 @@
1
- "use strict";var r=require("../../../node_modules/tslib/tslib.es6.js"),e=require("../lib/errors.js"),t=function(e){function t(r,t,n){var o=e.call(this,t,"RUTBL-OR".concat(r),n)||this;return o.name="OutOfRangeError",o}return r.__extends(t,e),t}(e.TableError),n=function(e){function t(r,t,n){var o=e.call(this,t,"RUTBL-IO".concat(r),n)||this;return o.name="InvalidOperationError",o}return r.__extends(t,e),t}(e.TableError);exports.InvalidOperationError=n,exports.OutOfRangeError=t;
2
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sources":["../../../../../src/table/range/errors.ts"],"sourcesContent":["import { TableError } from \"../lib/errors\";\n\nexport class OutOfRangeError extends TableError {\n constructor(errorNumber: string, message: string, detail: string) {\n super(message, `RUTBL-OR${errorNumber}`, detail);\n this.name = \"OutOfRangeError\";\n }\n}\n\nexport class InvalidOperationError extends TableError {\n constructor(errorNumber: string, message: string, detail: string) {\n super(message, `RUTBL-IO${errorNumber}`, detail);\n this.name = \"InvalidOperationError\";\n }\n}\n"],"names":["OutOfRangeError","_super","errorNumber","message","detail","_this","call","this","concat","name","__extends","TableError","InvalidOperationError"],"mappings":"qGAEAA,EAAA,SAAAC,GACE,SAAAD,EAAYE,EAAqBC,EAAiBC,GAChD,IAAAC,EAAAJ,EAAMK,KAAAC,KAAAJ,EAAS,WAAAK,OAAWN,GAAeE,IAAQG,YACjDF,EAAKI,KAAO,mBACb,CACH,OALqCC,YAAUV,EAAAC,GAK9CD,CAAD,CALA,CAAqCW,EAAUA,YAO/CC,EAAA,SAAAX,GACE,SAAAW,EAAYV,EAAqBC,EAAiBC,GAChD,IAAAC,EAAAJ,EAAMK,KAAAC,KAAAJ,EAAS,WAAAK,OAAWN,GAAeE,IAAQG,YACjDF,EAAKI,KAAO,yBACb,CACH,OAL2CC,YAAUE,EAAAX,GAKpDW,CAAD,CALA,CAA2CD"}
@@ -1,2 +0,0 @@
1
- import{__extends as r}from"../../../node_modules/tslib/tslib.es6.js";import{TableError as t}from"../lib/errors.js";var n=function(t){function n(r,n,o){var i=t.call(this,n,"RUTBL-OR".concat(r),o)||this;return i.name="OutOfRangeError",i}return r(n,t),n}(t),o=function(t){function n(r,n,o){var i=t.call(this,n,"RUTBL-IO".concat(r),o)||this;return i.name="InvalidOperationError",i}return r(n,t),n}(t);export{o as InvalidOperationError,n as OutOfRangeError};
2
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sources":["../../../../../src/table/range/errors.ts"],"sourcesContent":["import { TableError } from \"../lib/errors\";\n\nexport class OutOfRangeError extends TableError {\n constructor(errorNumber: string, message: string, detail: string) {\n super(message, `RUTBL-OR${errorNumber}`, detail);\n this.name = \"OutOfRangeError\";\n }\n}\n\nexport class InvalidOperationError extends TableError {\n constructor(errorNumber: string, message: string, detail: string) {\n super(message, `RUTBL-IO${errorNumber}`, detail);\n this.name = \"InvalidOperationError\";\n }\n}\n"],"names":["OutOfRangeError","_super","errorNumber","message","detail","_this","call","this","concat","name","__extends","TableError","InvalidOperationError"],"mappings":"mHAEA,IAAAA,EAAA,SAAAC,GACE,SAAAD,EAAYE,EAAqBC,EAAiBC,GAChD,IAAAC,EAAAJ,EAAMK,KAAAC,KAAAJ,EAAS,WAAAK,OAAWN,GAAeE,IAAQG,YACjDF,EAAKI,KAAO,mBACb,CACH,OALqCC,EAAUV,EAAAC,GAK9CD,CAAD,CALA,CAAqCW,GAOrCC,EAAA,SAAAX,GACE,SAAAW,EAAYV,EAAqBC,EAAiBC,GAChD,IAAAC,EAAAJ,EAAMK,KAAAC,KAAAJ,EAAS,WAAAK,OAAWN,GAAeE,IAAQG,YACjDF,EAAKI,KAAO,yBACb,CACH,OAL2CC,EAAUE,EAAAX,GAKpDW,CAAD,CALA,CAA2CD"}