@frsource/autoresize-textarea 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -33,7 +33,7 @@
33
33
  <br>
34
34
  <i>Tiny library which make your textareas fluid.
35
35
  <br>Mobile &amp; desktop-friendly
36
- <br>Performant & with small bundle size (less than 390B!)
36
+ <br>Performant & with small bundle size (less than 1.2kB!)
37
37
  <br>Published as separate bundles for JS ES5 or modern browsers thanks to <a href="https://www.npmjs.com/package/microbundle">microbundle</a>
38
38
  <br>Written completely in <a href="https://www.typescriptlang.org">typescript</a></i>
39
39
  <br>Published under <a href="https://opensource.org/licenses/MIT" target="_blank">MIT</a> license</i>
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/index.ts"],"sourcesContent":["const ATTRIBUTE_NAME = \"data-frs-autoresize-textarea\";\n\nconst cacheParentsScrollTop = (element: Element) => {\n const scrollTopMap = new Map<Element | HTMLElement, number>();\n\n do {\n scrollTopMap.set(element, element.scrollTop);\n } while ((element = element?.parentNode as Element) instanceof Element);\n\n return () => {\n for (const [element, scrollTop] of scrollTopMap) {\n if (\"style\" in element) {\n const currentValue = element.style.scrollBehavior;\n element.style.scrollBehavior = \"auto\";\n element.scrollTop = scrollTop;\n element.style.scrollBehavior = currentValue;\n } else element.scrollTop = scrollTop;\n }\n };\n};\n\nexport const attach = (element: HTMLTextAreaElement) => {\n if (element.getAttribute(ATTRIBUTE_NAME)) return;\n element.setAttribute(ATTRIBUTE_NAME, \"\");\n\n let prevHeight = \"\";\n const inputHandler = () => {\n if (\n element.scrollHeight > element.clientHeight ||\n prevHeight === element.style.height\n ) {\n const resetScrollTops = cacheParentsScrollTop(element);\n element.style.height = \"auto\";\n\n const currentValue = element.style.overflow;\n element.style.overflow = \"hidden\";\n element.style.height = prevHeight = `${\n element.scrollHeight + (element.offsetHeight - element.clientHeight)\n }px`;\n element.style.overflow = currentValue;\n\n resetScrollTops();\n }\n };\n\n element.style.boxSizing = \"border-box\";\n\n inputHandler();\n\n element.addEventListener(\"input\", inputHandler);\n\n const elementPrototype = Object.getPrototypeOf(element);\n const descriptor = Object.getOwnPropertyDescriptor(elementPrototype, \"value\");\n Object.defineProperty(element, \"value\", {\n ...descriptor,\n set() {\n descriptor?.set?.apply(\n this,\n // eslint-disable-next-line prefer-rest-params\n arguments as unknown as [unknown]\n );\n inputHandler();\n },\n });\n return {\n detach() {\n element.removeAttribute(ATTRIBUTE_NAME);\n element.removeEventListener(\"input\", inputHandler);\n },\n update: inputHandler,\n };\n};\n"],"names":["ATTRIBUTE_NAME","attach","element","getAttribute","setAttribute","prevHeight","inputHandler","scrollHeight","clientHeight","style","height","resetScrollTops","scrollTopMap","Map","_element","set","scrollTop","parentNode","Element","_step","_iterator","_createForOfIteratorHelperLoose","done","_step$value","value","currentValue","scrollBehavior","cacheParentsScrollTop","overflow","offsetHeight","boxSizing","addEventListener","elementPrototype","Object","getPrototypeOf","descriptor","getOwnPropertyDescriptor","defineProperty","_extends","_descriptor$set","apply","this","arguments","detach","removeAttribute","removeEventListener","update"],"mappings":"8UAAA,IAAMA,EAAiB,+BAqBVC,EAAS,SAACC,GACrB,IAAIA,EAAQC,aAAaH,GAAzB,CACAE,EAAQE,aAAaJ,EAAgB,IAErC,IAAIK,EAAa,GACXC,EAAe,WACnB,GACEJ,EAAQK,aAAeL,EAAQM,cAC/BH,IAAeH,EAAQO,MAAMC,OAC7B,CACA,IAAMC,EA7BkB,SAACT,GAC7B,IAAMU,EAAe,IAAIC,IAEzB,EAAG,KAAAC,EACDF,EAAaG,IAAIb,EAASA,EAAQc,kBAC1Bd,SAAOY,EAAGZ,UAAAY,EAASG,sBAAkCC,SAE/D,kBACE,IAAA,IAA+CC,EAA/CC,2qBAAAC,CAAmCT,KAAYO,EAAAC,KAAAE,MAAE,CAAA,IAAAC,EAAAJ,EAAAK,MAArCtB,EAAOqB,KAAEP,EAASO,EAC5B,GAAA,GAAI,UAAWrB,EAAS,CACtB,IAAMuB,EAAevB,EAAQO,MAAMiB,eACnCxB,EAAQO,MAAMiB,eAAiB,OAC/BxB,EAAQc,UAAYA,EACpBd,EAAQO,MAAMiB,eAAiBD,CAChC,MAAMvB,EAAQc,UAAYA,CAC5B,CACH,CACF,CAY8BW,CAAsBzB,GAC9CA,EAAQO,MAAMC,OAAS,OAEvB,IAAMe,EAAevB,EAAQO,MAAMmB,SACnC1B,EAAQO,MAAMmB,SAAW,SACzB1B,EAAQO,MAAMC,OAASL,EACrBH,EAAQK,cAAgBL,EAAQ2B,aAAe3B,EAAQM,cACrD,KACJN,EAAQO,MAAMmB,SAAWH,EAEzBd,GACD,CACH,EAEAT,EAAQO,MAAMqB,UAAY,aAE1BxB,IAEAJ,EAAQ6B,iBAAiB,QAASzB,GAElC,IAAM0B,EAAmBC,OAAOC,eAAehC,GACzCiC,EAAaF,OAAOG,yBAAyBJ,EAAkB,SAYrE,OAXAC,OAAOI,eAAenC,EAAS,QAAOoC,EAAA,CAAA,EACjCH,EACHpB,CAAAA,mBAAGwB,EACSA,MAAVJ,GAAAI,OAAUA,EAAVJ,EAAYpB,MAAZwB,EAAiBC,MACfC,KAEAC,WAEFpC,GACF,KAEK,CACLqC,OAAMA,WACJzC,EAAQ0C,gBAAgB5C,GACxBE,EAAQ2C,oBAAoB,QAASvC,EACvC,EACAwC,OAAQxC,EA/CgC,CAiD5C"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/index.ts"],"sourcesContent":["const ATTRIBUTE_NAME = \"data-frs-autoresize-textarea\";\n\nconst cacheParentsScrollTop = (element: Element) => {\n const scrollTopMap = new Map<Element | HTMLElement, number>();\n\n do {\n scrollTopMap.set(element, element.scrollTop);\n } while ((element = element?.parentNode as Element) instanceof Element);\n\n return () => {\n for (const [element, scrollTop] of scrollTopMap) {\n if (\"style\" in element) {\n const currentValue = element.style.scrollBehavior;\n element.style.scrollBehavior = \"auto\";\n element.scrollTop = scrollTop;\n element.style.scrollBehavior = currentValue;\n } else element.scrollTop = scrollTop;\n }\n };\n};\n\nexport const attach = (element: HTMLTextAreaElement) => {\n if (element.getAttribute(ATTRIBUTE_NAME)) return;\n element.setAttribute(ATTRIBUTE_NAME, \"\");\n\n let prevHeight = \"\";\n const inputHandler = () => {\n if (\n element.scrollHeight > element.clientHeight ||\n prevHeight === element.style.height\n ) {\n const resetScrollTops = cacheParentsScrollTop(element);\n element.style.height = \"auto\";\n\n const currentValue = element.style.overflow;\n element.style.overflow = \"hidden\";\n element.style.height = prevHeight = `${\n element.scrollHeight + (element.offsetHeight - element.clientHeight)\n }px`;\n element.style.overflow = currentValue;\n\n resetScrollTops();\n }\n };\n\n element.style.boxSizing = \"border-box\";\n\n inputHandler();\n\n element.addEventListener(\"input\", inputHandler);\n\n const elementPrototype = Object.getPrototypeOf(element);\n const descriptor = Object.getOwnPropertyDescriptor(elementPrototype, \"value\");\n Object.defineProperty(element, \"value\", {\n ...descriptor,\n set() {\n descriptor?.set?.apply(\n this,\n // eslint-disable-next-line prefer-rest-params\n arguments as unknown as [unknown],\n );\n inputHandler();\n },\n });\n return {\n detach() {\n element.removeAttribute(ATTRIBUTE_NAME);\n element.removeEventListener(\"input\", inputHandler);\n },\n update: inputHandler,\n };\n};\n"],"names":["ATTRIBUTE_NAME","attach","element","getAttribute","setAttribute","prevHeight","inputHandler","scrollHeight","clientHeight","style","height","resetScrollTops","scrollTopMap","Map","_element","set","scrollTop","parentNode","Element","_step","_iterator","_createForOfIteratorHelperLoose","done","_step$value","value","currentValue","scrollBehavior","cacheParentsScrollTop","overflow","offsetHeight","boxSizing","addEventListener","elementPrototype","Object","getPrototypeOf","descriptor","getOwnPropertyDescriptor","defineProperty","_extends","_descriptor$set","apply","this","arguments","detach","removeAttribute","removeEventListener","update"],"mappings":"8UAAA,IAAMA,EAAiB,+BAqBVC,EAAS,SAACC,GACrB,IAAIA,EAAQC,aAAaH,GAAzB,CACAE,EAAQE,aAAaJ,EAAgB,IAErC,IAAIK,EAAa,GACXC,EAAe,WACnB,GACEJ,EAAQK,aAAeL,EAAQM,cAC/BH,IAAeH,EAAQO,MAAMC,OAC7B,CACA,IAAMC,EA7BkB,SAACT,GAC7B,IAAMU,EAAe,IAAIC,IAEzB,EAAG,KAAAC,EACDF,EAAaG,IAAIb,EAASA,EAAQc,kBAC1Bd,SAAOY,EAAGZ,UAAAY,EAASG,sBAAkCC,SAE/D,kBACE,IAAA,IAA+CC,EAA/CC,2qBAAAC,CAAmCT,KAAYO,EAAAC,KAAAE,MAAE,CAAA,IAAAC,EAAAJ,EAAAK,MAArCtB,EAAOqB,KAAEP,EAASO,EAC5B,GAAA,GAAI,UAAWrB,EAAS,CACtB,IAAMuB,EAAevB,EAAQO,MAAMiB,eACnCxB,EAAQO,MAAMiB,eAAiB,OAC/BxB,EAAQc,UAAYA,EACpBd,EAAQO,MAAMiB,eAAiBD,CAChC,MAAMvB,EAAQc,UAAYA,CAC5B,CACH,CACF,CAY8BW,CAAsBzB,GAC9CA,EAAQO,MAAMC,OAAS,OAEvB,IAAMe,EAAevB,EAAQO,MAAMmB,SACnC1B,EAAQO,MAAMmB,SAAW,SACzB1B,EAAQO,MAAMC,OAASL,EACrBH,EAAQK,cAAgBL,EAAQ2B,aAAe3B,EAAQM,cACrD,KACJN,EAAQO,MAAMmB,SAAWH,EAEzBd,GACD,CACH,EAEAT,EAAQO,MAAMqB,UAAY,aAE1BxB,IAEAJ,EAAQ6B,iBAAiB,QAASzB,GAElC,IAAM0B,EAAmBC,OAAOC,eAAehC,GACzCiC,EAAaF,OAAOG,yBAAyBJ,EAAkB,SAYrE,OAXAC,OAAOI,eAAenC,EAAS,QAAOoC,EAAA,CAAA,EACjCH,EACHpB,CAAAA,mBAAGwB,EACSA,MAAVJ,GAAAI,OAAUA,EAAVJ,EAAYpB,MAAZwB,EAAiBC,MACfC,KAEAC,WAEFpC,GACF,KAEK,CACLqC,OAAMA,WACJzC,EAAQ0C,gBAAgB5C,GACxBE,EAAQ2C,oBAAoB,QAASvC,EACvC,EACAwC,OAAQxC,EA/CgC,CAiD5C"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["const ATTRIBUTE_NAME = \"data-frs-autoresize-textarea\";\n\nconst cacheParentsScrollTop = (element: Element) => {\n const scrollTopMap = new Map<Element | HTMLElement, number>();\n\n do {\n scrollTopMap.set(element, element.scrollTop);\n } while ((element = element?.parentNode as Element) instanceof Element);\n\n return () => {\n for (const [element, scrollTop] of scrollTopMap) {\n if (\"style\" in element) {\n const currentValue = element.style.scrollBehavior;\n element.style.scrollBehavior = \"auto\";\n element.scrollTop = scrollTop;\n element.style.scrollBehavior = currentValue;\n } else element.scrollTop = scrollTop;\n }\n };\n};\n\nexport const attach = (element: HTMLTextAreaElement) => {\n if (element.getAttribute(ATTRIBUTE_NAME)) return;\n element.setAttribute(ATTRIBUTE_NAME, \"\");\n\n let prevHeight = \"\";\n const inputHandler = () => {\n if (\n element.scrollHeight > element.clientHeight ||\n prevHeight === element.style.height\n ) {\n const resetScrollTops = cacheParentsScrollTop(element);\n element.style.height = \"auto\";\n\n const currentValue = element.style.overflow;\n element.style.overflow = \"hidden\";\n element.style.height = prevHeight = `${\n element.scrollHeight + (element.offsetHeight - element.clientHeight)\n }px`;\n element.style.overflow = currentValue;\n\n resetScrollTops();\n }\n };\n\n element.style.boxSizing = \"border-box\";\n\n inputHandler();\n\n element.addEventListener(\"input\", inputHandler);\n\n const elementPrototype = Object.getPrototypeOf(element);\n const descriptor = Object.getOwnPropertyDescriptor(elementPrototype, \"value\");\n Object.defineProperty(element, \"value\", {\n ...descriptor,\n set() {\n descriptor?.set?.apply(\n this,\n // eslint-disable-next-line prefer-rest-params\n arguments as unknown as [unknown]\n );\n inputHandler();\n },\n });\n return {\n detach() {\n element.removeAttribute(ATTRIBUTE_NAME);\n element.removeEventListener(\"input\", inputHandler);\n },\n update: inputHandler,\n };\n};\n"],"names":["ATTRIBUTE_NAME","element","getAttribute","setAttribute","prevHeight","inputHandler","scrollHeight","clientHeight","style","height","resetScrollTops","scrollTopMap","Map","_element","set","scrollTop","parentNode","Element","_step","_iterator","_createForOfIteratorHelperLoose","done","_step$value","value","currentValue","scrollBehavior","cacheParentsScrollTop","overflow","offsetHeight","boxSizing","addEventListener","elementPrototype","Object","getPrototypeOf","descriptor","getOwnPropertyDescriptor","defineProperty","_extends","_descriptor$set","apply","this","arguments","detach","removeAttribute","removeEventListener","update"],"mappings":"8UAAA,IAAMA,EAAiB,8CAqBD,SAACC,GACrB,IAAIA,EAAQC,aAAaF,GAAzB,CACAC,EAAQE,aAAaH,EAAgB,IAErC,IAAII,EAAa,GACXC,EAAe,WACnB,GACEJ,EAAQK,aAAeL,EAAQM,cAC/BH,IAAeH,EAAQO,MAAMC,OAC7B,CACA,IAAMC,EA7BkB,SAACT,GAC7B,IAAMU,EAAe,IAAIC,IAEzB,EAAG,KAAAC,EACDF,EAAaG,IAAIb,EAASA,EAAQc,kBAC1Bd,SAAOY,EAAGZ,UAAAY,EAASG,sBAAkCC,SAE/D,kBACE,IAAA,IAA+CC,EAA/CC,2qBAAAC,CAAmCT,KAAYO,EAAAC,KAAAE,MAAE,CAAA,IAAAC,EAAAJ,EAAAK,MAArCtB,EAAOqB,KAAEP,EAASO,EAC5B,GAAA,GAAI,UAAWrB,EAAS,CACtB,IAAMuB,EAAevB,EAAQO,MAAMiB,eACnCxB,EAAQO,MAAMiB,eAAiB,OAC/BxB,EAAQc,UAAYA,EACpBd,EAAQO,MAAMiB,eAAiBD,CAChC,MAAMvB,EAAQc,UAAYA,CAC5B,CACH,CACF,CAY8BW,CAAsBzB,GAC9CA,EAAQO,MAAMC,OAAS,OAEvB,IAAMe,EAAevB,EAAQO,MAAMmB,SACnC1B,EAAQO,MAAMmB,SAAW,SACzB1B,EAAQO,MAAMC,OAASL,EACrBH,EAAQK,cAAgBL,EAAQ2B,aAAe3B,EAAQM,cACrD,KACJN,EAAQO,MAAMmB,SAAWH,EAEzBd,GACD,CACH,EAEAT,EAAQO,MAAMqB,UAAY,aAE1BxB,IAEAJ,EAAQ6B,iBAAiB,QAASzB,GAElC,IAAM0B,EAAmBC,OAAOC,eAAehC,GACzCiC,EAAaF,OAAOG,yBAAyBJ,EAAkB,SAYrE,OAXAC,OAAOI,eAAenC,EAAS,QAAOoC,EAAA,CAAA,EACjCH,EACHpB,CAAAA,mBAAGwB,EACSA,MAAVJ,GAAAI,OAAUA,EAAVJ,EAAYpB,MAAZwB,EAAiBC,MACfC,KAEAC,WAEFpC,GACF,KAEK,CACLqC,OAAMA,WACJzC,EAAQ0C,gBAAgB3C,GACxBC,EAAQ2C,oBAAoB,QAASvC,EACvC,EACAwC,OAAQxC,EA/CgC,CAiD5C"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["const ATTRIBUTE_NAME = \"data-frs-autoresize-textarea\";\n\nconst cacheParentsScrollTop = (element: Element) => {\n const scrollTopMap = new Map<Element | HTMLElement, number>();\n\n do {\n scrollTopMap.set(element, element.scrollTop);\n } while ((element = element?.parentNode as Element) instanceof Element);\n\n return () => {\n for (const [element, scrollTop] of scrollTopMap) {\n if (\"style\" in element) {\n const currentValue = element.style.scrollBehavior;\n element.style.scrollBehavior = \"auto\";\n element.scrollTop = scrollTop;\n element.style.scrollBehavior = currentValue;\n } else element.scrollTop = scrollTop;\n }\n };\n};\n\nexport const attach = (element: HTMLTextAreaElement) => {\n if (element.getAttribute(ATTRIBUTE_NAME)) return;\n element.setAttribute(ATTRIBUTE_NAME, \"\");\n\n let prevHeight = \"\";\n const inputHandler = () => {\n if (\n element.scrollHeight > element.clientHeight ||\n prevHeight === element.style.height\n ) {\n const resetScrollTops = cacheParentsScrollTop(element);\n element.style.height = \"auto\";\n\n const currentValue = element.style.overflow;\n element.style.overflow = \"hidden\";\n element.style.height = prevHeight = `${\n element.scrollHeight + (element.offsetHeight - element.clientHeight)\n }px`;\n element.style.overflow = currentValue;\n\n resetScrollTops();\n }\n };\n\n element.style.boxSizing = \"border-box\";\n\n inputHandler();\n\n element.addEventListener(\"input\", inputHandler);\n\n const elementPrototype = Object.getPrototypeOf(element);\n const descriptor = Object.getOwnPropertyDescriptor(elementPrototype, \"value\");\n Object.defineProperty(element, \"value\", {\n ...descriptor,\n set() {\n descriptor?.set?.apply(\n this,\n // eslint-disable-next-line prefer-rest-params\n arguments as unknown as [unknown],\n );\n inputHandler();\n },\n });\n return {\n detach() {\n element.removeAttribute(ATTRIBUTE_NAME);\n element.removeEventListener(\"input\", inputHandler);\n },\n update: inputHandler,\n };\n};\n"],"names":["ATTRIBUTE_NAME","element","getAttribute","setAttribute","prevHeight","inputHandler","scrollHeight","clientHeight","style","height","resetScrollTops","scrollTopMap","Map","_element","set","scrollTop","parentNode","Element","_step","_iterator","_createForOfIteratorHelperLoose","done","_step$value","value","currentValue","scrollBehavior","cacheParentsScrollTop","overflow","offsetHeight","boxSizing","addEventListener","elementPrototype","Object","getPrototypeOf","descriptor","getOwnPropertyDescriptor","defineProperty","_extends","_descriptor$set","apply","this","arguments","detach","removeAttribute","removeEventListener","update"],"mappings":"8UAAA,IAAMA,EAAiB,8CAqBD,SAACC,GACrB,IAAIA,EAAQC,aAAaF,GAAzB,CACAC,EAAQE,aAAaH,EAAgB,IAErC,IAAII,EAAa,GACXC,EAAe,WACnB,GACEJ,EAAQK,aAAeL,EAAQM,cAC/BH,IAAeH,EAAQO,MAAMC,OAC7B,CACA,IAAMC,EA7BkB,SAACT,GAC7B,IAAMU,EAAe,IAAIC,IAEzB,EAAG,KAAAC,EACDF,EAAaG,IAAIb,EAASA,EAAQc,kBAC1Bd,SAAOY,EAAGZ,UAAAY,EAASG,sBAAkCC,SAE/D,kBACE,IAAA,IAA+CC,EAA/CC,2qBAAAC,CAAmCT,KAAYO,EAAAC,KAAAE,MAAE,CAAA,IAAAC,EAAAJ,EAAAK,MAArCtB,EAAOqB,KAAEP,EAASO,EAC5B,GAAA,GAAI,UAAWrB,EAAS,CACtB,IAAMuB,EAAevB,EAAQO,MAAMiB,eACnCxB,EAAQO,MAAMiB,eAAiB,OAC/BxB,EAAQc,UAAYA,EACpBd,EAAQO,MAAMiB,eAAiBD,CAChC,MAAMvB,EAAQc,UAAYA,CAC5B,CACH,CACF,CAY8BW,CAAsBzB,GAC9CA,EAAQO,MAAMC,OAAS,OAEvB,IAAMe,EAAevB,EAAQO,MAAMmB,SACnC1B,EAAQO,MAAMmB,SAAW,SACzB1B,EAAQO,MAAMC,OAASL,EACrBH,EAAQK,cAAgBL,EAAQ2B,aAAe3B,EAAQM,cACrD,KACJN,EAAQO,MAAMmB,SAAWH,EAEzBd,GACD,CACH,EAEAT,EAAQO,MAAMqB,UAAY,aAE1BxB,IAEAJ,EAAQ6B,iBAAiB,QAASzB,GAElC,IAAM0B,EAAmBC,OAAOC,eAAehC,GACzCiC,EAAaF,OAAOG,yBAAyBJ,EAAkB,SAYrE,OAXAC,OAAOI,eAAenC,EAAS,QAAOoC,EAAA,CAAA,EACjCH,EACHpB,CAAAA,mBAAGwB,EACSA,MAAVJ,GAAAI,OAAUA,EAAVJ,EAAYpB,MAAZwB,EAAiBC,MACfC,KAEAC,WAEFpC,GACF,KAEK,CACLqC,OAAMA,WACJzC,EAAQ0C,gBAAgB3C,GACxBC,EAAQ2C,oBAAoB,QAASvC,EACvC,EACAwC,OAAQxC,EA/CgC,CAiD5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.mjs","sources":["../src/index.ts"],"sourcesContent":["const ATTRIBUTE_NAME = \"data-frs-autoresize-textarea\";\n\nconst cacheParentsScrollTop = (element: Element) => {\n const scrollTopMap = new Map<Element | HTMLElement, number>();\n\n do {\n scrollTopMap.set(element, element.scrollTop);\n } while ((element = element?.parentNode as Element) instanceof Element);\n\n return () => {\n for (const [element, scrollTop] of scrollTopMap) {\n if (\"style\" in element) {\n const currentValue = element.style.scrollBehavior;\n element.style.scrollBehavior = \"auto\";\n element.scrollTop = scrollTop;\n element.style.scrollBehavior = currentValue;\n } else element.scrollTop = scrollTop;\n }\n };\n};\n\nexport const attach = (element: HTMLTextAreaElement) => {\n if (element.getAttribute(ATTRIBUTE_NAME)) return;\n element.setAttribute(ATTRIBUTE_NAME, \"\");\n\n let prevHeight = \"\";\n const inputHandler = () => {\n if (\n element.scrollHeight > element.clientHeight ||\n prevHeight === element.style.height\n ) {\n const resetScrollTops = cacheParentsScrollTop(element);\n element.style.height = \"auto\";\n\n const currentValue = element.style.overflow;\n element.style.overflow = \"hidden\";\n element.style.height = prevHeight = `${\n element.scrollHeight + (element.offsetHeight - element.clientHeight)\n }px`;\n element.style.overflow = currentValue;\n\n resetScrollTops();\n }\n };\n\n element.style.boxSizing = \"border-box\";\n\n inputHandler();\n\n element.addEventListener(\"input\", inputHandler);\n\n const elementPrototype = Object.getPrototypeOf(element);\n const descriptor = Object.getOwnPropertyDescriptor(elementPrototype, \"value\");\n Object.defineProperty(element, \"value\", {\n ...descriptor,\n set() {\n descriptor?.set?.apply(\n this,\n // eslint-disable-next-line prefer-rest-params\n arguments as unknown as [unknown]\n );\n inputHandler();\n },\n });\n return {\n detach() {\n element.removeAttribute(ATTRIBUTE_NAME);\n element.removeEventListener(\"input\", inputHandler);\n },\n update: inputHandler,\n };\n};\n"],"names":["ATTRIBUTE_NAME","attach","element","getAttribute","setAttribute","prevHeight","inputHandler","scrollHeight","clientHeight","style","height","resetScrollTops","scrollTopMap","Map","_element","set","scrollTop","parentNode","Element","currentValue","scrollBehavior","cacheParentsScrollTop","overflow","offsetHeight","boxSizing","addEventListener","elementPrototype","Object","getPrototypeOf","descriptor","getOwnPropertyDescriptor","defineProperty","_extends","_descriptor$set","apply","this","arguments","detach","removeAttribute","removeEventListener","update"],"mappings":"oOAAA,MAAMA,EAAiB,+BAqBVC,EAAUC,IACrB,GAAIA,EAAQC,aAAaH,GAAiB,OAC1CE,EAAQE,aAAaJ,EAAgB,IAErC,IAAIK,EAAa,GACjB,MAAMC,EAAeA,KACnB,GACEJ,EAAQK,aAAeL,EAAQM,cAC/BH,IAAeH,EAAQO,MAAMC,OAC7B,CACA,MAAMC,EA7BmBT,KAC7B,MAAMU,EAAe,IAAIC,IAEzB,EAAG,CAAA,IAAAC,EACDF,EAAaG,IAAIb,EAASA,EAAQc,kBAC1Bd,EAAUY,OAAHA,EAAGZ,QAAAY,EAAAA,EAASG,sBAAkCC,SAE/D,MAAO,KACL,IAAK,MAAOhB,EAASc,KAAcJ,EACjC,GAAI,UAAWV,EAAS,CACtB,MAAMiB,EAAejB,EAAQO,MAAMW,eACnClB,EAAQO,MAAMW,eAAiB,OAC/BlB,EAAQc,UAAYA,EACpBd,EAAQO,MAAMW,eAAiBD,CAChC,MAAMjB,EAAQc,UAAYA,CAC5B,CACH,EAa4BK,CAAsBnB,GAC9CA,EAAQO,MAAMC,OAAS,OAEvB,MAAMS,EAAejB,EAAQO,MAAMa,SACnCpB,EAAQO,MAAMa,SAAW,SACzBpB,EAAQO,MAAMC,OAASL,EACrB,GAAAH,EAAQK,cAAgBL,EAAQqB,aAAerB,EAAQM,kBAEzDN,EAAQO,MAAMa,SAAWH,EAEzBR,GACD,GAGHT,EAAQO,MAAMe,UAAY,aAE1BlB,IAEAJ,EAAQuB,iBAAiB,QAASnB,GAElC,MAAMoB,EAAmBC,OAAOC,eAAe1B,GACzC2B,EAAaF,OAAOG,yBAAyBJ,EAAkB,SAYrE,OAXAC,OAAOI,eAAe7B,EAAS,QAAO8B,KACjCH,EAAU,CACbd,UAAGkB,EACSA,MAAVJ,GAAe,OAALI,EAAVJ,EAAYd,MAAZkB,EAAiBC,MACfC,KAEAC,WAEF9B,GACF,KAEK,CACL+B,SACEnC,EAAQoC,gBAAgBtC,GACxBE,EAAQqC,oBAAoB,QAASjC,EACvC,EACAkC,OAAQlC"}
1
+ {"version":3,"file":"index.modern.mjs","sources":["../src/index.ts"],"sourcesContent":["const ATTRIBUTE_NAME = \"data-frs-autoresize-textarea\";\n\nconst cacheParentsScrollTop = (element: Element) => {\n const scrollTopMap = new Map<Element | HTMLElement, number>();\n\n do {\n scrollTopMap.set(element, element.scrollTop);\n } while ((element = element?.parentNode as Element) instanceof Element);\n\n return () => {\n for (const [element, scrollTop] of scrollTopMap) {\n if (\"style\" in element) {\n const currentValue = element.style.scrollBehavior;\n element.style.scrollBehavior = \"auto\";\n element.scrollTop = scrollTop;\n element.style.scrollBehavior = currentValue;\n } else element.scrollTop = scrollTop;\n }\n };\n};\n\nexport const attach = (element: HTMLTextAreaElement) => {\n if (element.getAttribute(ATTRIBUTE_NAME)) return;\n element.setAttribute(ATTRIBUTE_NAME, \"\");\n\n let prevHeight = \"\";\n const inputHandler = () => {\n if (\n element.scrollHeight > element.clientHeight ||\n prevHeight === element.style.height\n ) {\n const resetScrollTops = cacheParentsScrollTop(element);\n element.style.height = \"auto\";\n\n const currentValue = element.style.overflow;\n element.style.overflow = \"hidden\";\n element.style.height = prevHeight = `${\n element.scrollHeight + (element.offsetHeight - element.clientHeight)\n }px`;\n element.style.overflow = currentValue;\n\n resetScrollTops();\n }\n };\n\n element.style.boxSizing = \"border-box\";\n\n inputHandler();\n\n element.addEventListener(\"input\", inputHandler);\n\n const elementPrototype = Object.getPrototypeOf(element);\n const descriptor = Object.getOwnPropertyDescriptor(elementPrototype, \"value\");\n Object.defineProperty(element, \"value\", {\n ...descriptor,\n set() {\n descriptor?.set?.apply(\n this,\n // eslint-disable-next-line prefer-rest-params\n arguments as unknown as [unknown],\n );\n inputHandler();\n },\n });\n return {\n detach() {\n element.removeAttribute(ATTRIBUTE_NAME);\n element.removeEventListener(\"input\", inputHandler);\n },\n update: inputHandler,\n };\n};\n"],"names":["ATTRIBUTE_NAME","attach","element","getAttribute","setAttribute","prevHeight","inputHandler","scrollHeight","clientHeight","style","height","resetScrollTops","scrollTopMap","Map","_element","set","scrollTop","parentNode","Element","currentValue","scrollBehavior","cacheParentsScrollTop","overflow","offsetHeight","boxSizing","addEventListener","elementPrototype","Object","getPrototypeOf","descriptor","getOwnPropertyDescriptor","defineProperty","_extends","_descriptor$set","apply","this","arguments","detach","removeAttribute","removeEventListener","update"],"mappings":"oOAAA,MAAMA,EAAiB,+BAqBVC,EAAUC,IACrB,GAAIA,EAAQC,aAAaH,GAAiB,OAC1CE,EAAQE,aAAaJ,EAAgB,IAErC,IAAIK,EAAa,GACjB,MAAMC,EAAeA,KACnB,GACEJ,EAAQK,aAAeL,EAAQM,cAC/BH,IAAeH,EAAQO,MAAMC,OAC7B,CACA,MAAMC,EA7BmBT,KAC7B,MAAMU,EAAe,IAAIC,IAEzB,EAAG,CAAA,IAAAC,EACDF,EAAaG,IAAIb,EAASA,EAAQc,kBAC1Bd,EAAUY,OAAHA,EAAGZ,QAAAY,EAAAA,EAASG,sBAAkCC,SAE/D,MAAO,KACL,IAAK,MAAOhB,EAASc,KAAcJ,EACjC,GAAI,UAAWV,EAAS,CACtB,MAAMiB,EAAejB,EAAQO,MAAMW,eACnClB,EAAQO,MAAMW,eAAiB,OAC/BlB,EAAQc,UAAYA,EACpBd,EAAQO,MAAMW,eAAiBD,CAChC,MAAMjB,EAAQc,UAAYA,CAC5B,CACH,EAa4BK,CAAsBnB,GAC9CA,EAAQO,MAAMC,OAAS,OAEvB,MAAMS,EAAejB,EAAQO,MAAMa,SACnCpB,EAAQO,MAAMa,SAAW,SACzBpB,EAAQO,MAAMC,OAASL,EACrB,GAAAH,EAAQK,cAAgBL,EAAQqB,aAAerB,EAAQM,kBAEzDN,EAAQO,MAAMa,SAAWH,EAEzBR,GACD,GAGHT,EAAQO,MAAMe,UAAY,aAE1BlB,IAEAJ,EAAQuB,iBAAiB,QAASnB,GAElC,MAAMoB,EAAmBC,OAAOC,eAAe1B,GACzC2B,EAAaF,OAAOG,yBAAyBJ,EAAkB,SAYrE,OAXAC,OAAOI,eAAe7B,EAAS,QAAO8B,KACjCH,EAAU,CACbd,UAAGkB,EACSA,MAAVJ,GAAe,OAALI,EAAVJ,EAAYd,MAAZkB,EAAiBC,MACfC,KAEAC,WAEF9B,GACF,KAEK,CACL+B,SACEnC,EAAQoC,gBAAgBtC,GACxBE,EAAQqC,oBAAoB,QAASjC,EACvC,EACAkC,OAAQlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/index.ts"],"sourcesContent":["const ATTRIBUTE_NAME = \"data-frs-autoresize-textarea\";\n\nconst cacheParentsScrollTop = (element: Element) => {\n const scrollTopMap = new Map<Element | HTMLElement, number>();\n\n do {\n scrollTopMap.set(element, element.scrollTop);\n } while ((element = element?.parentNode as Element) instanceof Element);\n\n return () => {\n for (const [element, scrollTop] of scrollTopMap) {\n if (\"style\" in element) {\n const currentValue = element.style.scrollBehavior;\n element.style.scrollBehavior = \"auto\";\n element.scrollTop = scrollTop;\n element.style.scrollBehavior = currentValue;\n } else element.scrollTop = scrollTop;\n }\n };\n};\n\nexport const attach = (element: HTMLTextAreaElement) => {\n if (element.getAttribute(ATTRIBUTE_NAME)) return;\n element.setAttribute(ATTRIBUTE_NAME, \"\");\n\n let prevHeight = \"\";\n const inputHandler = () => {\n if (\n element.scrollHeight > element.clientHeight ||\n prevHeight === element.style.height\n ) {\n const resetScrollTops = cacheParentsScrollTop(element);\n element.style.height = \"auto\";\n\n const currentValue = element.style.overflow;\n element.style.overflow = \"hidden\";\n element.style.height = prevHeight = `${\n element.scrollHeight + (element.offsetHeight - element.clientHeight)\n }px`;\n element.style.overflow = currentValue;\n\n resetScrollTops();\n }\n };\n\n element.style.boxSizing = \"border-box\";\n\n inputHandler();\n\n element.addEventListener(\"input\", inputHandler);\n\n const elementPrototype = Object.getPrototypeOf(element);\n const descriptor = Object.getOwnPropertyDescriptor(elementPrototype, \"value\");\n Object.defineProperty(element, \"value\", {\n ...descriptor,\n set() {\n descriptor?.set?.apply(\n this,\n // eslint-disable-next-line prefer-rest-params\n arguments as unknown as [unknown]\n );\n inputHandler();\n },\n });\n return {\n detach() {\n element.removeAttribute(ATTRIBUTE_NAME);\n element.removeEventListener(\"input\", inputHandler);\n },\n update: inputHandler,\n };\n};\n"],"names":["ATTRIBUTE_NAME","element","getAttribute","setAttribute","prevHeight","inputHandler","scrollHeight","clientHeight","style","height","resetScrollTops","scrollTopMap","Map","_element","set","scrollTop","parentNode","Element","_step","_iterator","_createForOfIteratorHelperLoose","done","_step$value","value","currentValue","scrollBehavior","cacheParentsScrollTop","overflow","offsetHeight","boxSizing","addEventListener","elementPrototype","Object","getPrototypeOf","descriptor","getOwnPropertyDescriptor","defineProperty","_extends","_descriptor$set","apply","this","arguments","detach","removeAttribute","removeEventListener","update"],"mappings":"0jBAAA,IAAMA,EAAiB,wCAqBD,SAACC,GACrB,IAAIA,EAAQC,aAAaF,GAAzB,CACAC,EAAQE,aAAaH,EAAgB,IAErC,IAAII,EAAa,GACXC,EAAe,WACnB,GACEJ,EAAQK,aAAeL,EAAQM,cAC/BH,IAAeH,EAAQO,MAAMC,OAC7B,CACA,IAAMC,EA7BkB,SAACT,GAC7B,IAAMU,EAAe,IAAIC,IAEzB,EAAG,KAAAC,EACDF,EAAaG,IAAIb,EAASA,EAAQc,kBAC1Bd,SAAOY,EAAGZ,UAAAY,EAASG,sBAAkCC,SAE/D,kBACE,IAAA,IAA+CC,EAA/CC,2qBAAAC,CAAmCT,KAAYO,EAAAC,KAAAE,MAAE,CAAA,IAAAC,EAAAJ,EAAAK,MAArCtB,EAAOqB,KAAEP,EAASO,EAC5B,GAAA,GAAI,UAAWrB,EAAS,CACtB,IAAMuB,EAAevB,EAAQO,MAAMiB,eACnCxB,EAAQO,MAAMiB,eAAiB,OAC/BxB,EAAQc,UAAYA,EACpBd,EAAQO,MAAMiB,eAAiBD,CAChC,MAAMvB,EAAQc,UAAYA,CAC5B,CACH,CACF,CAY8BW,CAAsBzB,GAC9CA,EAAQO,MAAMC,OAAS,OAEvB,IAAMe,EAAevB,EAAQO,MAAMmB,SACnC1B,EAAQO,MAAMmB,SAAW,SACzB1B,EAAQO,MAAMC,OAASL,EACrBH,EAAQK,cAAgBL,EAAQ2B,aAAe3B,EAAQM,cACrD,KACJN,EAAQO,MAAMmB,SAAWH,EAEzBd,GACD,CACH,EAEAT,EAAQO,MAAMqB,UAAY,aAE1BxB,IAEAJ,EAAQ6B,iBAAiB,QAASzB,GAElC,IAAM0B,EAAmBC,OAAOC,eAAehC,GACzCiC,EAAaF,OAAOG,yBAAyBJ,EAAkB,SAYrE,OAXAC,OAAOI,eAAenC,EAAS,QAAOoC,EAAA,CAAA,EACjCH,EACHpB,CAAAA,mBAAGwB,EACSA,MAAVJ,GAAAI,OAAUA,EAAVJ,EAAYpB,MAAZwB,EAAiBC,MACfC,KAEAC,WAEFpC,GACF,KAEK,CACLqC,OAAMA,WACJzC,EAAQ0C,gBAAgB3C,GACxBC,EAAQ2C,oBAAoB,QAASvC,EACvC,EACAwC,OAAQxC,EA/CgC,CAiD5C"}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/index.ts"],"sourcesContent":["const ATTRIBUTE_NAME = \"data-frs-autoresize-textarea\";\n\nconst cacheParentsScrollTop = (element: Element) => {\n const scrollTopMap = new Map<Element | HTMLElement, number>();\n\n do {\n scrollTopMap.set(element, element.scrollTop);\n } while ((element = element?.parentNode as Element) instanceof Element);\n\n return () => {\n for (const [element, scrollTop] of scrollTopMap) {\n if (\"style\" in element) {\n const currentValue = element.style.scrollBehavior;\n element.style.scrollBehavior = \"auto\";\n element.scrollTop = scrollTop;\n element.style.scrollBehavior = currentValue;\n } else element.scrollTop = scrollTop;\n }\n };\n};\n\nexport const attach = (element: HTMLTextAreaElement) => {\n if (element.getAttribute(ATTRIBUTE_NAME)) return;\n element.setAttribute(ATTRIBUTE_NAME, \"\");\n\n let prevHeight = \"\";\n const inputHandler = () => {\n if (\n element.scrollHeight > element.clientHeight ||\n prevHeight === element.style.height\n ) {\n const resetScrollTops = cacheParentsScrollTop(element);\n element.style.height = \"auto\";\n\n const currentValue = element.style.overflow;\n element.style.overflow = \"hidden\";\n element.style.height = prevHeight = `${\n element.scrollHeight + (element.offsetHeight - element.clientHeight)\n }px`;\n element.style.overflow = currentValue;\n\n resetScrollTops();\n }\n };\n\n element.style.boxSizing = \"border-box\";\n\n inputHandler();\n\n element.addEventListener(\"input\", inputHandler);\n\n const elementPrototype = Object.getPrototypeOf(element);\n const descriptor = Object.getOwnPropertyDescriptor(elementPrototype, \"value\");\n Object.defineProperty(element, \"value\", {\n ...descriptor,\n set() {\n descriptor?.set?.apply(\n this,\n // eslint-disable-next-line prefer-rest-params\n arguments as unknown as [unknown],\n );\n inputHandler();\n },\n });\n return {\n detach() {\n element.removeAttribute(ATTRIBUTE_NAME);\n element.removeEventListener(\"input\", inputHandler);\n },\n update: inputHandler,\n };\n};\n"],"names":["ATTRIBUTE_NAME","element","getAttribute","setAttribute","prevHeight","inputHandler","scrollHeight","clientHeight","style","height","resetScrollTops","scrollTopMap","Map","_element","set","scrollTop","parentNode","Element","_step","_iterator","_createForOfIteratorHelperLoose","done","_step$value","value","currentValue","scrollBehavior","cacheParentsScrollTop","overflow","offsetHeight","boxSizing","addEventListener","elementPrototype","Object","getPrototypeOf","descriptor","getOwnPropertyDescriptor","defineProperty","_extends","_descriptor$set","apply","this","arguments","detach","removeAttribute","removeEventListener","update"],"mappings":"0jBAAA,IAAMA,EAAiB,wCAqBD,SAACC,GACrB,IAAIA,EAAQC,aAAaF,GAAzB,CACAC,EAAQE,aAAaH,EAAgB,IAErC,IAAII,EAAa,GACXC,EAAe,WACnB,GACEJ,EAAQK,aAAeL,EAAQM,cAC/BH,IAAeH,EAAQO,MAAMC,OAC7B,CACA,IAAMC,EA7BkB,SAACT,GAC7B,IAAMU,EAAe,IAAIC,IAEzB,EAAG,KAAAC,EACDF,EAAaG,IAAIb,EAASA,EAAQc,kBAC1Bd,SAAOY,EAAGZ,UAAAY,EAASG,sBAAkCC,SAE/D,kBACE,IAAA,IAA+CC,EAA/CC,2qBAAAC,CAAmCT,KAAYO,EAAAC,KAAAE,MAAE,CAAA,IAAAC,EAAAJ,EAAAK,MAArCtB,EAAOqB,KAAEP,EAASO,EAC5B,GAAA,GAAI,UAAWrB,EAAS,CACtB,IAAMuB,EAAevB,EAAQO,MAAMiB,eACnCxB,EAAQO,MAAMiB,eAAiB,OAC/BxB,EAAQc,UAAYA,EACpBd,EAAQO,MAAMiB,eAAiBD,CAChC,MAAMvB,EAAQc,UAAYA,CAC5B,CACH,CACF,CAY8BW,CAAsBzB,GAC9CA,EAAQO,MAAMC,OAAS,OAEvB,IAAMe,EAAevB,EAAQO,MAAMmB,SACnC1B,EAAQO,MAAMmB,SAAW,SACzB1B,EAAQO,MAAMC,OAASL,EACrBH,EAAQK,cAAgBL,EAAQ2B,aAAe3B,EAAQM,cACrD,KACJN,EAAQO,MAAMmB,SAAWH,EAEzBd,GACD,CACH,EAEAT,EAAQO,MAAMqB,UAAY,aAE1BxB,IAEAJ,EAAQ6B,iBAAiB,QAASzB,GAElC,IAAM0B,EAAmBC,OAAOC,eAAehC,GACzCiC,EAAaF,OAAOG,yBAAyBJ,EAAkB,SAYrE,OAXAC,OAAOI,eAAenC,EAAS,QAAOoC,EAAA,CAAA,EACjCH,EACHpB,CAAAA,mBAAGwB,EACSA,MAAVJ,GAAAI,OAAUA,EAAVJ,EAAYpB,MAAZwB,EAAiBC,MACfC,KAEAC,WAEFpC,GACF,KAEK,CACLqC,OAAMA,WACJzC,EAAQ0C,gBAAgB3C,GACxBC,EAAQ2C,oBAAoB,QAASvC,EACvC,EACAwC,OAAQxC,EA/CgC,CAiD5C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frsource/autoresize-textarea",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "Minimalistic plugin to autosize your textareas! 💪",
5
5
  "sideEffects": false,
6
6
  "source": "src/index.ts",
@@ -45,18 +45,18 @@
45
45
  "license": "MIT",
46
46
  "devDependencies": {
47
47
  "@semantic-release/changelog": "6.0.3",
48
- "@semantic-release/commit-analyzer": "10.0.1",
48
+ "@semantic-release/commit-analyzer": "10.0.2",
49
49
  "@semantic-release/git": "10.0.1",
50
50
  "@semantic-release/github": "9.0.4",
51
51
  "@semantic-release/npm": "10.0.5",
52
- "@semantic-release/release-notes-generator": "11.0.4",
53
- "@typescript-eslint/eslint-plugin": "5.62.0",
54
- "@typescript-eslint/parser": "5.62.0",
52
+ "@semantic-release/release-notes-generator": "11.0.5",
53
+ "@typescript-eslint/eslint-plugin": "6.4.1",
54
+ "@typescript-eslint/parser": "6.4.1",
55
55
  "eslint": "8.47.0",
56
- "eslint-config-prettier": "8.10.0",
56
+ "eslint-config-prettier": "9.0.0",
57
57
  "eslint-plugin-eslint-comments": "3.2.0",
58
58
  "microbundle": "0.15.1",
59
- "prettier": "2.8.8",
59
+ "prettier": "3.0.2",
60
60
  "rimraf": "^5.0.0",
61
61
  "semantic-release": "21.0.9",
62
62
  "typescript": "5.1.6"