@nanoporetech-digital/components 6.2.0 → 6.3.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.
- package/CHANGELOG.md +18 -0
- package/dist/cjs/nano-alert.cjs.entry.js +1 -1
- package/dist/cjs/nano-dialog.cjs.entry.js +22 -5
- package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-drawer.cjs.entry.js +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +3 -4
- package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-table-06530d49.js → nano-table-9f615d5c.js} +2 -2
- package/dist/cjs/{nano-table-06530d49.js.map → nano-table-9f615d5c.js.map} +1 -1
- package/dist/cjs/nano-table.cjs.entry.js +1 -1
- package/dist/cjs/{scroll-e8c21f80.js → scroll-4e95debb.js} +40 -3
- package/dist/cjs/scroll-4e95debb.js.map +1 -0
- package/dist/cjs/{table.worker-b4922b9b.js → table.worker-6b65a9ea.js} +2 -2
- package/dist/cjs/table.worker-6b65a9ea.js.map +1 -0
- package/dist/cjs/transitions-20fce787.js.map +1 -1
- package/dist/collection/components/dialog/dialog.css +13 -5
- package/dist/collection/components/dialog/dialog.js +20 -3
- package/dist/collection/components/dialog/dialog.js.map +1 -1
- package/dist/collection/components/tabs/tab-group.js +2 -3
- package/dist/collection/components/tabs/tab-group.js.map +1 -1
- package/dist/collection/utils/scroll.js +39 -2
- package/dist/collection/utils/scroll.js.map +1 -1
- package/dist/collection/utils/transitions.js +1 -0
- package/dist/collection/utils/transitions.js.map +1 -1
- package/dist/components/nano-dialog.js +21 -4
- package/dist/components/nano-dialog.js.map +1 -1
- package/dist/components/nano-tab-group.js +2 -3
- package/dist/components/nano-tab-group.js.map +1 -1
- package/dist/components/scroll.js +39 -2
- package/dist/components/scroll.js.map +1 -1
- package/dist/components/transitions.js.map +1 -1
- package/dist/esm/nano-alert.entry.js +1 -1
- package/dist/esm/nano-dialog.entry.js +22 -5
- package/dist/esm/nano-dialog.entry.js.map +1 -1
- package/dist/esm/nano-drawer.entry.js +1 -1
- package/dist/esm/nano-tab-group.entry.js +3 -4
- package/dist/esm/nano-tab-group.entry.js.map +1 -1
- package/dist/esm/{nano-table-c85a2fd3.js → nano-table-66bee831.js} +2 -2
- package/dist/esm/{nano-table-c85a2fd3.js.map → nano-table-66bee831.js.map} +1 -1
- package/dist/esm/nano-table.entry.js +1 -1
- package/dist/esm/{scroll-ac332213.js → scroll-762b3e1a.js} +40 -3
- package/dist/esm/scroll-762b3e1a.js.map +1 -0
- package/dist/esm/{table.worker-761fba3e.js → table.worker-936e6d51.js} +2 -2
- package/dist/esm/table.worker-936e6d51.js.map +1 -0
- package/dist/esm/transitions-bd15e312.js.map +1 -1
- package/dist/nano-components/nano-alert.entry.js +1 -1
- package/dist/nano-components/nano-components.css +1 -1
- package/dist/nano-components/nano-dialog.entry.js +1 -1
- package/dist/nano-components/nano-dialog.entry.js.map +1 -1
- package/dist/nano-components/nano-drawer.entry.js +1 -1
- package/dist/nano-components/nano-tab-group.entry.js +1 -1
- package/dist/nano-components/nano-tab-group.entry.js.map +1 -1
- package/dist/nano-components/nano-table-66bee831.js +5 -0
- package/dist/nano-components/{nano-table-c85a2fd3.js.map → nano-table-66bee831.js.map} +1 -1
- package/dist/nano-components/nano-table.entry.js +1 -1
- package/dist/nano-components/scroll-762b3e1a.js +5 -0
- package/dist/nano-components/scroll-762b3e1a.js.map +1 -0
- package/dist/nano-components/table.worker-936e6d51.js +5 -0
- package/dist/nano-components/transitions-bd15e312.js.map +1 -1
- package/docs-json.json +1 -1
- package/hydrate/index.js +62 -9
- package/package.json +2 -2
- package/dist/cjs/scroll-e8c21f80.js.map +0 -1
- package/dist/cjs/table.worker-b4922b9b.js.map +0 -1
- package/dist/esm/scroll-ac332213.js.map +0 -1
- package/dist/esm/table.worker-761fba3e.js.map +0 -1
- package/dist/nano-components/nano-table-c85a2fd3.js +0 -5
- package/dist/nano-components/scroll-ac332213.js +0 -5
- package/dist/nano-components/scroll-ac332213.js.map +0 -1
- package/dist/nano-components/table.worker-761fba3e.js +0 -5
- /package/dist/nano-components/{table.worker-761fba3e.js.map → table.worker-936e6d51.js.map} +0 -0
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
-
export{T as nano_table}from"./nano-table-
|
4
|
+
export{T as nano_table}from"./nano-table-66bee831.js";import"./index-9695db0a.js";import"./math-c02ddfda.js";import"./throttle-ac4fcefa.js";import"./scroll-parent-bab1cbf7.js";import"./index-3003356f.js";
|
5
5
|
//# sourceMappingURL=nano-table.entry.js.map
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/*!
|
2
|
+
* Web Components for Nanopore digital Web Apps
|
3
|
+
*/
|
4
|
+
import{a as t}from"./dom-8599fac1.js";function o(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}function n(){const t=Number(getComputedStyle(document.body).paddingRight.replace(/px/,""));if(isNaN(t)||!t){return 0}return t}const e=new Set;function c(t){e.add(t);if(document.documentElement.classList.contains("nano-scroll-lock"))return;const c=o()+n();let r=getComputedStyle(document.documentElement).scrollbarGutter;if(!r||r==="auto"){r="stable"}if(c<=0){r="revert"}document.documentElement.style.setProperty("--nano-scroll-lock-gutter",r);document.documentElement.classList.add("nano-scroll-lock");document.documentElement.style.setProperty("--nano-scroll-lock-size",`${c}px`)}function r(t){e.delete(t);if(e.size===0){document.documentElement.classList.remove("nano-scroll-lock");document.documentElement.style.removeProperty("--nano-scroll-lock-size")}}function s(t,o,n=false){if(!n){try{t.scrollTo({left:o,behavior:"smooth"})}catch(n){t.scrollLeft=o}return}try{t.scrollTo({top:o,behavior:"smooth"})}catch(n){t.scrollTop=o}}function l(o,n,e="vertical",c="start"){if(!o)return;const r=t(o,n);const l=r.top+n.scrollTop;const i=r.left+n.scrollLeft;const u=n.scrollLeft;const a=n.scrollLeft+n.offsetWidth;const f=n.scrollTop;const m=n.scrollTop+n.offsetHeight;if(e==="horizontal"||e==="both"){if(c==="start"){if(i<u)s(n,i);else if(i+o.clientWidth>a)s(n,i-n.offsetWidth+o.clientWidth)}else{s(n,n.scrollLeft+r.left-(n.offsetWidth/2-o.offsetWidth/2))}}if(e==="vertical"||e==="both"){if(c==="start"){if(l<f)s(n,l,true);else if(l+o.clientHeight>m){s(n,l-n.offsetHeight+o.clientHeight,true)}}else{s(n,n.scrollTop+r.top-(n.offsetHeight/2-o.offsetHeight/2),true)}}}export{c as l,l as s,r as u};
|
5
|
+
//# sourceMappingURL=scroll-762b3e1a.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["getScrollbarWidth","documentWidth","document","documentElement","clientWidth","Math","abs","window","innerWidth","getExistingBodyPadding","padding","Number","getComputedStyle","body","paddingRight","replace","isNaN","locks","Set","lockBodyScrolling","lockingEl","add","classList","contains","scrollbarWidth","scrollbarGutterProperty","scrollbarGutter","style","setProperty","unlockBodyScrolling","delete","size","remove","removeProperty","scrollTo","element","scrollAmt","vertical","left","behavior","e","scrollLeft","top","scrollTop","scrollIntoView","container","direction","position","offset","getOffset","offsetTop","offsetLeft","minX","maxX","offsetWidth","minY","maxY","offsetHeight","clientHeight"],"sources":["./src/utils/scroll.ts"],"sourcesContent":["import { getOffset } from './dom';\n\n/**\n * @returns the width of the document's scrollbar\n */\nfunction getScrollbarWidth() {\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n}\n\n/**\n * Used in conjunction with `scrollbarWidth` to set proper body padding in case the user has padding already on the `<body>` element.\n * @returns body's computed css padding\n */\nfunction getExistingBodyPadding() {\n const padding = Number(\n getComputedStyle(document.body).paddingRight.replace(/px/, '')\n );\n\n if (isNaN(padding) || !padding) {\n return 0;\n }\n\n return padding;\n}\n\nconst locks = new Set();\n/**\n * Prevents body scrolling. Keeps track of which elements requested a lock so multiple levels of locking are possible\n * without premature unlocking.\n */\nexport function lockBodyScrolling(lockingEl: HTMLElement) {\n locks.add(lockingEl);\n\n if (document.documentElement.classList.contains('nano-scroll-lock')) return;\n\n // When the first lock is created,\n // set the scroll lock size to match the scrollbar's width to prevent content from shifting.\n const scrollbarWidth = getScrollbarWidth() + getExistingBodyPadding(); // must be measured before the `sl-scroll-lock` class is applied\n let scrollbarGutterProperty = getComputedStyle(\n document.documentElement\n ).scrollbarGutter;\n\n // default is auto, unsupported browsers is \"undefined\"\n if (!scrollbarGutterProperty || scrollbarGutterProperty === 'auto') {\n scrollbarGutterProperty = 'stable';\n }\n if (scrollbarWidth <= 0) {\n // if there's no scrollbar, just set it to \"revert\" so whatever the user has set gets used. This is useful is the page is not overflowing and showing a scrollbar, or if the user has overflow: hidden, or any other reason a scrollbar may not be showing.\n scrollbarGutterProperty = 'revert';\n }\n\n document.documentElement.style.setProperty(\n '--nano-scroll-lock-gutter',\n scrollbarGutterProperty\n );\n document.documentElement.classList.add('nano-scroll-lock');\n document.documentElement.style.setProperty(\n '--nano-scroll-lock-size',\n `${scrollbarWidth}px`\n );\n}\n\n/**\n * Unlocks body scrolling. Scrolling will only be unlocked once all elements that requested a lock call this method.\n */\nexport function unlockBodyScrolling(lockingEl: HTMLElement) {\n locks.delete(lockingEl);\n\n if (locks.size === 0) {\n document.documentElement.classList.remove('nano-scroll-lock');\n document.documentElement.style.removeProperty('--nano-scroll-lock-size');\n }\n}\n\nfunction scrollTo(\n element: HTMLElement,\n scrollAmt: number,\n vertical: boolean = false\n) {\n if (!vertical) {\n try {\n element.scrollTo({ left: scrollAmt, behavior: 'smooth' });\n } catch (e) {\n element.scrollLeft = scrollAmt;\n }\n return;\n }\n try {\n element.scrollTo({ top: scrollAmt, behavior: 'smooth' });\n } catch (e) {\n element.scrollTop = scrollAmt;\n }\n}\n\n/**\n * Scrolls an element into view *of its parent container*.\n * Note to future me - cannot use native `scrollIntoView`\n * 'cos it will move the whole window\n * (vertically even though we only care about parent).\n * If the element is already in view, nothing will happen.\n */\nexport function scrollIntoView(\n element: HTMLElement,\n container: HTMLElement,\n direction: 'horizontal' | 'vertical' | 'both' = 'vertical',\n position: 'center' | 'start' = 'start'\n) {\n if (!element) return;\n const offset = getOffset(element, container);\n const offsetTop = offset.top + container.scrollTop;\n const offsetLeft = offset.left + container.scrollLeft;\n const minX = container.scrollLeft;\n const maxX = container.scrollLeft + container.offsetWidth;\n const minY = container.scrollTop;\n const maxY = container.scrollTop + container.offsetHeight;\n\n if (direction === 'horizontal' || direction === 'both') {\n if (position === 'start') {\n if (offsetLeft < minX) scrollTo(container, offsetLeft);\n else if (offsetLeft + element.clientWidth > maxX)\n scrollTo(\n container,\n offsetLeft - container.offsetWidth + element.clientWidth\n );\n } else {\n scrollTo(\n container,\n container.scrollLeft +\n offset.left -\n (container.offsetWidth / 2 - element.offsetWidth / 2)\n );\n }\n }\n\n if (direction === 'vertical' || direction === 'both') {\n if (position === 'start') {\n if (offsetTop < minY) scrollTo(container, offsetTop, true);\n else if (offsetTop + element.clientHeight > maxY) {\n scrollTo(\n container,\n offsetTop - container.offsetHeight + element.clientHeight,\n true\n );\n }\n } else {\n scrollTo(\n container,\n container.scrollTop +\n offset.top -\n (container.offsetHeight / 2 - element.offsetHeight / 2),\n true\n );\n }\n }\n}\n"],"mappings":";;;sCAKA,SAASA,IACP,MAAMC,EAAgBC,SAASC,gBAAgBC,YAC/C,OAAOC,KAAKC,IAAIC,OAAOC,WAAaP,EACtC,CAMA,SAASQ,IACP,MAAMC,EAAUC,OACdC,iBAAiBV,SAASW,MAAMC,aAAaC,QAAQ,KAAM,KAG7D,GAAIC,MAAMN,KAAaA,EAAS,CAC9B,OAAO,C,CAGT,OAAOA,CACT,CAEA,MAAMO,EAAQ,IAAIC,I,SAKFC,EAAkBC,GAChCH,EAAMI,IAAID,GAEV,GAAIlB,SAASC,gBAAgBmB,UAAUC,SAAS,oBAAqB,OAIrE,MAAMC,EAAiBxB,IAAsBS,IAC7C,IAAIgB,EAA0Bb,iBAC5BV,SAASC,iBACTuB,gBAGF,IAAKD,GAA2BA,IAA4B,OAAQ,CAClEA,EAA0B,Q,CAE5B,GAAID,GAAkB,EAAG,CAEvBC,EAA0B,Q,CAG5BvB,SAASC,gBAAgBwB,MAAMC,YAC7B,4BACAH,GAEFvB,SAASC,gBAAgBmB,UAAUD,IAAI,oBACvCnB,SAASC,gBAAgBwB,MAAMC,YAC7B,0BACA,GAAGJ,MAEP,C,SAKgBK,EAAoBT,GAClCH,EAAMa,OAAOV,GAEb,GAAIH,EAAMc,OAAS,EAAG,CACpB7B,SAASC,gBAAgBmB,UAAUU,OAAO,oBAC1C9B,SAASC,gBAAgBwB,MAAMM,eAAe,0B,CAElD,CAEA,SAASC,EACPC,EACAC,EACAC,EAAoB,OAEpB,IAAKA,EAAU,CACb,IACEF,EAAQD,SAAS,CAAEI,KAAMF,EAAWG,SAAU,U,CAC9C,MAAOC,GACPL,EAAQM,WAAaL,C,CAEvB,M,CAEF,IACED,EAAQD,SAAS,CAAEQ,IAAKN,EAAWG,SAAU,U,CAC7C,MAAOC,GACPL,EAAQQ,UAAYP,C,CAExB,C,SASgBQ,EACdT,EACAU,EACAC,EAAgD,WAChDC,EAA+B,SAE/B,IAAKZ,EAAS,OACd,MAAMa,EAASC,EAAUd,EAASU,GAClC,MAAMK,EAAYF,EAAON,IAAMG,EAAUF,UACzC,MAAMQ,EAAaH,EAAOV,KAAOO,EAAUJ,WAC3C,MAAMW,EAAOP,EAAUJ,WACvB,MAAMY,EAAOR,EAAUJ,WAAaI,EAAUS,YAC9C,MAAMC,EAAOV,EAAUF,UACvB,MAAMa,EAAOX,EAAUF,UAAYE,EAAUY,aAE7C,GAAIX,IAAc,cAAgBA,IAAc,OAAQ,CACtD,GAAIC,IAAa,QAAS,CACxB,GAAII,EAAaC,EAAMlB,EAASW,EAAWM,QACtC,GAAIA,EAAahB,EAAQ/B,YAAciD,EAC1CnB,EACEW,EACAM,EAAaN,EAAUS,YAAcnB,EAAQ/B,Y,KAE5C,CACL8B,EACEW,EACAA,EAAUJ,WACRO,EAAOV,MACNO,EAAUS,YAAc,EAAInB,EAAQmB,YAAc,G,EAK3D,GAAIR,IAAc,YAAcA,IAAc,OAAQ,CACpD,GAAIC,IAAa,QAAS,CACxB,GAAIG,EAAYK,EAAMrB,EAASW,EAAWK,EAAW,WAChD,GAAIA,EAAYf,EAAQuB,aAAeF,EAAM,CAChDtB,EACEW,EACAK,EAAYL,EAAUY,aAAetB,EAAQuB,aAC7C,K,MAGC,CACLxB,EACEW,EACAA,EAAUF,UACRK,EAAON,KACNG,EAAUY,aAAe,EAAItB,EAAQsB,aAAe,GACvD,K,EAIR,Q"}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/*!
|
2
|
+
* Web Components for Nanopore digital Web Apps
|
3
|
+
*/
|
4
|
+
import{c as t}from"./nano-table-66bee831.js";import"./index-9695db0a.js";import"./math-c02ddfda.js";import"./throttle-ac4fcefa.js";import"./scroll-parent-bab1cbf7.js";import"./index-3003356f.js";const o="table.worker";const r="stencil.table.worker";const e=new URL("table.worker-4aad752d.js",import.meta.url).href;const s=new Blob(['importScripts("'+e+'")'],{type:"text/javascript"});const a=URL.createObjectURL(s);const c=t(a,o,r);URL.revokeObjectURL(a);export{c as worker,r as workerMsgId,o as workerName,e as workerPath};
|
5
|
+
//# sourceMappingURL=table.worker-936e6d51.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["displayTransition","el","options","opts","className","show","showDisplay","Promise","resolve","showCb","e","target","composedPath","some","transitionProp","includes","propertyName","removeEventListener","hideCb","style","display","dataset","addEventListener","requestAnimationFrame","classList","add","remove"],"sources":["./src/utils/transitions.ts"],"sourcesContent":["/**\n * Quality of life for transition handling.\n * Adds / removes transitionend events. Resolves on complete\n */\nexport const transitionDone = (\n el: HTMLElement\n): Promise<'shown' | 'hidden'> => {\n return new Promise((resolve) => {\n const callback = () => {\n el.removeEventListener('transitionend', callback);\n resolve;\n };\n el.addEventListener('transitionend', callback);\n // ??\n });\n};\n\n/**\n * handles hiding and showing elements properly (with display),\n * along with transitions, so they are no longer viewable in the dom.\n * - OnHide remove show class, listen for transition end, then display: none on finish\n * - OnShow, display block on start then add a show class\n * @param el\n * @param options\n * @returns a promise of resolving as either 'show' or 'hidden'\n */\nexport const displayTransition = (\n el: HTMLElement,\n options?: {\n className?: string;\n show?: boolean;\n showDisplay?: string;\n transitionProp?: string[];\n }\n): Promise<'shown' | 'hidden'> => {\n const opts = {\n className: '',\n show: true,\n showDisplay: 'block',\n ...options,\n };\n\n return new Promise((resolve) => {\n const showCb = (e: TransitionEvent) => {\n if (\n (e.target === el || e.composedPath().some((el) => el === e.target)) &&\n (!opts.transitionProp || opts.transitionProp.includes(e.propertyName))\n ) {\n resolve('shown');\n el.removeEventListener('transitionend', showCb);\n }\n };\n\n const hideCb = (e: TransitionEvent) => {\n if (\n (e.target === el || e.composedPath().some((el) => el === e.target)) &&\n (!opts.transitionProp || opts.transitionProp.includes(e.propertyName))\n ) {\n el.style.display = 'none';\n el.dataset.displayTransition = 'false';\n resolve('hidden');\n el.removeEventListener('transitionend', hideCb);\n }\n };\n\n if (opts.show) {\n el.addEventListener('transitionend', showCb);\n el.style.display = opts.showDisplay;\n el.dataset.displayTransition = 'true';\n requestAnimationFrame(() => el.classList.add(opts.className));\n } else {\n el.addEventListener('transitionend', hideCb);\n el.classList.remove(opts.className);\n }\n });\n};\n"],"mappings":";;;MA0BaA,EAAoB,CAC/BC,EACAC,KAOA,MAAMC,EAAO,CACXC,UAAW,GACXC,KAAM,KACNC,YAAa,WACVJ,GAGL,OAAO,IAAIK,SAASC,IAClB,MAAMC,EAAUC,IACd,IACGA,EAAEC,SAAWV,GAAMS,EAAEE,eAAeC,MAAMZ,GAAOA,IAAOS,EAAEC,aACzDR,EAAKW,gBAAkBX,EAAKW,eAAeC,SAASL,EAAEM,eACxD,CACAR,EAAQ,SACRP,EAAGgB,oBAAoB,gBAAiBR,E,GAI5C,MAAMS,EAAUR,IACd,IACGA,EAAEC,SAAWV,GAAMS,EAAEE,eAAeC,MAAMZ,GAAOA,IAAOS,EAAEC,aACzDR,EAAKW,gBAAkBX,EAAKW,eAAeC,SAASL,EAAEM,eACxD,CACAf,EAAGkB,MAAMC,QAAU,OACnBnB,EAAGoB,QAAQrB,kBAAoB,QAC/BQ,EAAQ,UACRP,EAAGgB,oBAAoB,gBAAiBC,E,GAI5C,GAAIf,EAAKE,KAAM,CACbJ,EAAGqB,iBAAiB,gBAAiBb,GACrCR,EAAGkB,MAAMC,QAAUjB,EAAKG,YACxBL,EAAGoB,QAAQrB,kBAAoB,
|
1
|
+
{"version":3,"names":["displayTransition","el","options","opts","className","show","showDisplay","Promise","resolve","showCb","e","target","composedPath","some","transitionProp","includes","propertyName","removeEventListener","hideCb","style","display","dataset","addEventListener","requestAnimationFrame","classList","add","remove"],"sources":["./src/utils/transitions.ts"],"sourcesContent":["/**\n * Quality of life for transition handling.\n * Adds / removes transitionend events. Resolves on complete\n */\nexport const transitionDone = (\n el: HTMLElement\n): Promise<'shown' | 'hidden'> => {\n return new Promise((resolve) => {\n const callback = () => {\n el.removeEventListener('transitionend', callback);\n resolve;\n };\n el.addEventListener('transitionend', callback);\n // ??\n });\n};\n\n/**\n * handles hiding and showing elements properly (with display),\n * along with transitions, so they are no longer viewable in the dom.\n * - OnHide remove show class, listen for transition end, then display: none on finish\n * - OnShow, display block on start then add a show class\n * @param el\n * @param options\n * @returns a promise of resolving as either 'show' or 'hidden'\n */\nexport const displayTransition = (\n el: HTMLElement,\n options?: {\n className?: string;\n show?: boolean;\n showDisplay?: string;\n transitionProp?: string[];\n }\n): Promise<'shown' | 'hidden'> => {\n const opts = {\n className: '',\n show: true,\n showDisplay: 'block',\n ...options,\n };\n\n return new Promise((resolve) => {\n const showCb = (e: TransitionEvent) => {\n if (\n (e.target === el || e.composedPath().some((el) => el === e.target)) &&\n (!opts.transitionProp || opts.transitionProp.includes(e.propertyName))\n ) {\n resolve('shown');\n el.removeEventListener('transitionend', showCb);\n }\n };\n\n const hideCb = (e: TransitionEvent) => {\n if (\n (e.target === el || e.composedPath().some((el) => el === e.target)) &&\n (!opts.transitionProp || opts.transitionProp.includes(e.propertyName))\n ) {\n el.style.display = 'none';\n el.dataset.displayTransition = 'false';\n resolve('hidden');\n el.removeEventListener('transitionend', hideCb);\n }\n };\n\n if (opts.show) {\n el.addEventListener('transitionend', showCb);\n el.style.display = opts.showDisplay;\n el.dataset.displayTransition = 'true';\n el.clientWidth; // force reflow\n requestAnimationFrame(() => el.classList.add(opts.className));\n } else {\n el.addEventListener('transitionend', hideCb);\n el.classList.remove(opts.className);\n }\n });\n};\n"],"mappings":";;;MA0BaA,EAAoB,CAC/BC,EACAC,KAOA,MAAMC,EAAO,CACXC,UAAW,GACXC,KAAM,KACNC,YAAa,WACVJ,GAGL,OAAO,IAAIK,SAASC,IAClB,MAAMC,EAAUC,IACd,IACGA,EAAEC,SAAWV,GAAMS,EAAEE,eAAeC,MAAMZ,GAAOA,IAAOS,EAAEC,aACzDR,EAAKW,gBAAkBX,EAAKW,eAAeC,SAASL,EAAEM,eACxD,CACAR,EAAQ,SACRP,EAAGgB,oBAAoB,gBAAiBR,E,GAI5C,MAAMS,EAAUR,IACd,IACGA,EAAEC,SAAWV,GAAMS,EAAEE,eAAeC,MAAMZ,GAAOA,IAAOS,EAAEC,aACzDR,EAAKW,gBAAkBX,EAAKW,eAAeC,SAASL,EAAEM,eACxD,CACAf,EAAGkB,MAAMC,QAAU,OACnBnB,EAAGoB,QAAQrB,kBAAoB,QAC/BQ,EAAQ,UACRP,EAAGgB,oBAAoB,gBAAiBC,E,GAI5C,GAAIf,EAAKE,KAAM,CACbJ,EAAGqB,iBAAiB,gBAAiBb,GACrCR,EAAGkB,MAAMC,QAAUjB,EAAKG,YACxBL,EAAGoB,QAAQrB,kBAAoB,OAE/BuB,uBAAsB,IAAMtB,EAAGuB,UAAUC,IAAItB,EAAKC,Y,KAC7C,CACLH,EAAGqB,iBAAiB,gBAAiBJ,GACrCjB,EAAGuB,UAAUE,OAAOvB,EAAKC,U,IAE3B,S"}
|
package/docs-json.json
CHANGED
package/hydrate/index.js
CHANGED
@@ -6444,6 +6444,24 @@ class Modal {
|
|
6444
6444
|
}
|
6445
6445
|
}
|
6446
6446
|
|
6447
|
+
/**
|
6448
|
+
* @returns the width of the document's scrollbar
|
6449
|
+
*/
|
6450
|
+
function getScrollbarWidth() {
|
6451
|
+
const documentWidth = document.documentElement.clientWidth;
|
6452
|
+
return Math.abs(window.innerWidth - documentWidth);
|
6453
|
+
}
|
6454
|
+
/**
|
6455
|
+
* Used in conjunction with `scrollbarWidth` to set proper body padding in case the user has padding already on the `<body>` element.
|
6456
|
+
* @returns body's computed css padding
|
6457
|
+
*/
|
6458
|
+
function getExistingBodyPadding() {
|
6459
|
+
const padding = Number(getComputedStyle(document.body).paddingRight.replace(/px/, ''));
|
6460
|
+
if (isNaN(padding) || !padding) {
|
6461
|
+
return 0;
|
6462
|
+
}
|
6463
|
+
return padding;
|
6464
|
+
}
|
6447
6465
|
const locks = new Set();
|
6448
6466
|
/**
|
6449
6467
|
* Prevents body scrolling. Keeps track of which elements requested a lock so multiple levels of locking are possible
|
@@ -6451,7 +6469,23 @@ const locks = new Set();
|
|
6451
6469
|
*/
|
6452
6470
|
function lockBodyScrolling(lockingEl) {
|
6453
6471
|
locks.add(lockingEl);
|
6454
|
-
document.
|
6472
|
+
if (document.documentElement.classList.contains('nano-scroll-lock'))
|
6473
|
+
return;
|
6474
|
+
// When the first lock is created,
|
6475
|
+
// set the scroll lock size to match the scrollbar's width to prevent content from shifting.
|
6476
|
+
const scrollbarWidth = getScrollbarWidth() + getExistingBodyPadding(); // must be measured before the `sl-scroll-lock` class is applied
|
6477
|
+
let scrollbarGutterProperty = getComputedStyle(document.documentElement).scrollbarGutter;
|
6478
|
+
// default is auto, unsupported browsers is "undefined"
|
6479
|
+
if (!scrollbarGutterProperty || scrollbarGutterProperty === 'auto') {
|
6480
|
+
scrollbarGutterProperty = 'stable';
|
6481
|
+
}
|
6482
|
+
if (scrollbarWidth <= 0) {
|
6483
|
+
// if there's no scrollbar, just set it to "revert" so whatever the user has set gets used. This is useful is the page is not overflowing and showing a scrollbar, or if the user has overflow: hidden, or any other reason a scrollbar may not be showing.
|
6484
|
+
scrollbarGutterProperty = 'revert';
|
6485
|
+
}
|
6486
|
+
document.documentElement.style.setProperty('--nano-scroll-lock-gutter', scrollbarGutterProperty);
|
6487
|
+
document.documentElement.classList.add('nano-scroll-lock');
|
6488
|
+
document.documentElement.style.setProperty('--nano-scroll-lock-size', `${scrollbarWidth}px`);
|
6455
6489
|
}
|
6456
6490
|
/**
|
6457
6491
|
* Unlocks body scrolling. Scrolling will only be unlocked once all elements that requested a lock call this method.
|
@@ -6459,7 +6493,8 @@ function lockBodyScrolling(lockingEl) {
|
|
6459
6493
|
function unlockBodyScrolling(lockingEl) {
|
6460
6494
|
locks.delete(lockingEl);
|
6461
6495
|
if (locks.size === 0) {
|
6462
|
-
document.
|
6496
|
+
document.documentElement.classList.remove('nano-scroll-lock');
|
6497
|
+
document.documentElement.style.removeProperty('--nano-scroll-lock-size');
|
6463
6498
|
}
|
6464
6499
|
}
|
6465
6500
|
function scrollTo(element, scrollAmt, vertical = false) {
|
@@ -6487,6 +6522,8 @@ function scrollTo(element, scrollAmt, vertical = false) {
|
|
6487
6522
|
* If the element is already in view, nothing will happen.
|
6488
6523
|
*/
|
6489
6524
|
function scrollIntoView(element, container, direction = 'vertical', position = 'start') {
|
6525
|
+
if (!element)
|
6526
|
+
return;
|
6490
6527
|
const offset = getOffset(element, container);
|
6491
6528
|
const offsetTop = offset.top + container.scrollTop;
|
6492
6529
|
const offsetLeft = offset.left + container.scrollLeft;
|
@@ -13180,7 +13217,7 @@ function hasSlot(host, name) {
|
|
13180
13217
|
return true;
|
13181
13218
|
}
|
13182
13219
|
|
13183
|
-
const dialogCss = "/*!@:host*/.sc-nano-dialog-h{box-sizing:border-box}/*!@*,\n*::before,\n*::after*/*.sc-nano-dialog,*.sc-nano-dialog::before,*.sc-nano-dialog::after{box-sizing:border-box}/*!@[hidden]*/[hidden].sc-nano-dialog{display:none !important}/*!@:host*/.sc-nano-dialog-h{--border-radius:var(--nano-layer-border-radius, var(--nano-border-radius-medium, 4px));--content-background:#fafafa;--footer-content:#e4e6e8;--scrim-color:var(--nano-layer-overlay-dark, rgb(74 74 74 / 50%));--box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2));--close-button-color:#b5aea7;--width:60rem;--tint-color:#00607b;--body-padding-v:var(--nano-spacing-large, 20px);--body-padding-h:var(--nano-spacing-large, 20px);--header-padding-v:var(--nano-spacing-medium, 16px);--header-padding-h:var(--nano-spacing-large, 20px);--footer-padding-v:var(--nano-spacing-medium, 16px);--footer-padding-h:var(--nano-spacing-large, 20px)}/*!@.dialog*/.dialog.sc-nano-dialog{display:flex;align-items:center;justify-content:center;position:fixed;inset:0;z-index:var(--nano-layer-index-modal, 700)}/*!@.dialog__panel*/.dialog__panel.sc-nano-dialog{display:flex;flex-direction:column;z-index:2;inline-size:var(--width);max-inline-size:calc(100% - var(--nano-spacing-xlarge, 24px));max-block-size:calc(
|
13220
|
+
const dialogCss = "/*!@:host*/.sc-nano-dialog-h{box-sizing:border-box}/*!@*,\n*::before,\n*::after*/*.sc-nano-dialog,*.sc-nano-dialog::before,*.sc-nano-dialog::after{box-sizing:border-box}/*!@[hidden]*/[hidden].sc-nano-dialog{display:none !important}/*!@:host*/.sc-nano-dialog-h{--border-radius:var(--nano-layer-border-radius, var(--nano-border-radius-medium, 4px));--content-background:#fafafa;--footer-content:#e4e6e8;--scrim-color:var(--nano-layer-overlay-dark, rgb(74 74 74 / 50%));--box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2));--close-button-color:#b5aea7;--width:60rem;--tint-color:#00607b;--body-padding-v:var(--nano-spacing-large, 20px);--body-padding-h:var(--nano-spacing-large, 20px);--header-padding-v:var(--nano-spacing-medium, 16px);--header-padding-h:var(--nano-spacing-large, 20px);--footer-padding-v:var(--nano-spacing-medium, 16px);--footer-padding-h:var(--nano-spacing-large, 20px)}/*!@.dialog*/.dialog.sc-nano-dialog{display:flex;align-items:center;justify-content:center;position:fixed;inset:0;z-index:var(--nano-layer-index-modal, 700);border:none;inline-size:unset;block-size:unset;color:unset;background-color:unset}/*!@.dialog::backdrop*/.dialog.sc-nano-dialog::backdrop{display:none}/*!@.dialog__panel*/.dialog__panel.sc-nano-dialog{display:flex;flex-direction:column;z-index:2;inline-size:var(--width);max-inline-size:calc(100% - (var(--nano-spacing-xlarge, 24px) + var(--nano-scroll-lock-size)));max-block-size:calc(92vh - var(--nano-spacing-xlarge, 24px));background-color:var(--content-background);border-radius:var(--border-radius);box-shadow:var(--box-shadow);opacity:0;transform:scale(0.8);transition:var(--nano-transition-fast, 0.3s) opacity, var(--nano-transition-fast, 0.3s) transform}/*!@.dialog__panel:focus*/.dialog__panel.sc-nano-dialog:focus{outline:none}/*!@.dialog--with-ribbon .dialog__panel*/.dialog--with-ribbon.sc-nano-dialog .dialog__panel.sc-nano-dialog{border-block-start:5px solid var(--tint-color)}/*!@.dialog--open .dialog__panel*/.dialog--open.sc-nano-dialog .dialog__panel.sc-nano-dialog{display:flex;opacity:1;transform:none}/*!@.dialog--nodismiss .dialog__panel*/.dialog--nodismiss.sc-nano-dialog .dialog__panel.sc-nano-dialog{animation:cannotClose 0.25s ease-in-out 1}@keyframes cannotClose{0%{transform:scale(1)}50%{transform:scale(1.08)}100%{transform:scale(1)}}/*!@.dialog__header*/.dialog__header.sc-nano-dialog{flex:0 0 auto;display:flex;inline-size:100%;background-color:var(--content-background);border-radius:var(--border-radius) var(--border-radius) 0 0;transition:var(--nano-transition-fast, 0.1s) box-shadow;min-inline-size:auto}/*!@[stuck] .dialog__header*/[stuck].sc-nano-dialog .dialog__header.sc-nano-dialog{box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2))}/*!@.dialog__title*/.dialog__title.sc-nano-dialog{flex:1 1 auto;font-size:var(--nano-fontsize-large, 1.25rem);line-height:1.6;padding-block:var(--header-padding-v);padding-inline:var(--header-padding-h)}/*!@.dialog .dialog__close-icon*/.dialog.sc-nano-dialog .dialog__close-icon.sc-nano-dialog{flex:0 0 auto;display:flex;align-items:center;font-size:var(--nano-fontsize-xlarge, 1.5rem);padding-block:0;padding-inline:var(--header-padding-h);--color:var(--close-button-color)}/*!@.dialog__body*/.dialog__body.sc-nano-dialog{padding-block:0 var(--body-padding-v);padding-inline:var(--body-padding-h)}/*!@.dialog:not(.dialog--has-header) .dialog__body*/.dialog.sc-nano-dialog:not(.dialog--has-header) .dialog__body.sc-nano-dialog{padding-block-start:var(--body-padding-v)}/*!@.dialog__body ::slotted(*)*/.dialog__body .sc-nano-dialog-s>*{max-inline-size:100%}/*!@.dialog__body-wrap*/.dialog__body-wrap.sc-nano-dialog{flex:1 1 auto;overflow:auto;-webkit-overflow-scrolling:touch;border-radius:var(--border-radius)}/*!@.dialog:not(.dialog--has-header) .dialog__body-wrap*/.dialog.sc-nano-dialog:not(.dialog--has-header) .dialog__body-wrap.sc-nano-dialog{border-radius:0 0 inherit inherit}/*!@.dialog:not(.dialog--has-footer) .dialog__body-wrap*/.dialog.sc-nano-dialog:not(.dialog--has-footer) .dialog__body-wrap.sc-nano-dialog{border-radius:inherit inherit 0 0}/*!@.dialog__footer*/.dialog__footer.sc-nano-dialog{inline-size:100%;padding-block:var(--footer-padding-v);padding-inline:var(--footer-padding-h);background:var(--footer-content);border-radius:0 0 var(--border-radius) var(--border-radius);position:sticky;inset-block-end:0;min-inline-size:auto}/*!@.dialog__footer ::slotted(button)*/.dialog__footer .sc-nano-dialog-s>button{margin-inline-end:var(--nano-spacing-small, 8px) !important}/*!@.dialog:not(.dialog--has-footer) .dialog__footer*/.dialog.sc-nano-dialog:not(.dialog--has-footer) .dialog__footer.sc-nano-dialog{display:none}/*!@.dialog__close-txt*/.dialog__close-txt.sc-nano-dialog{color:var(--tint-color);border:none;text-decoration:underline;margin:0;text-underline-offset:4px;background-color:transparent;font:inherit;-webkit-box-align:center;cursor:pointer;font-size:var(--nano-fontsize-small, 0.875rem);padding:0.5rem;border-radius:var(--nano-border-radius-small, 2px);transition:box-shadow 100ms ease-in-out}/*!@.dialog__close-txt:focus*/.dialog__close-txt.sc-nano-dialog:focus{outline:none;box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}/*!@.dialog__overlay*/.dialog__overlay.sc-nano-dialog{position:fixed;inset:0 !important;background-color:var(--scrim-color);opacity:0;transition:var(--nano-transition-fast, 0.3s) opacity;-webkit-backdrop-filter:blur(var(--nano-layer-overlay-blur, 3px));backdrop-filter:blur(var(--nano-layer-overlay-blur, 3px))}/*!@.dialog--open .dialog__overlay*/.dialog--open.sc-nano-dialog .dialog__overlay.sc-nano-dialog{opacity:1}";
|
13184
13221
|
|
13185
13222
|
let id$4 = 0;
|
13186
13223
|
/**
|
@@ -13269,7 +13306,10 @@ class Dialog {
|
|
13269
13306
|
this.open ? this.show() : this.hide();
|
13270
13307
|
}
|
13271
13308
|
handleHoistChange() {
|
13272
|
-
if
|
13309
|
+
// if native popover is supported then bail as this is not required
|
13310
|
+
if (globalThis.HTMLElement.prototype.hasOwnProperty('popover') ||
|
13311
|
+
!this.hoist ||
|
13312
|
+
Array.from(document.body.children).includes(this.host))
|
13273
13313
|
return;
|
13274
13314
|
document.body.prepend(this.host);
|
13275
13315
|
}
|
@@ -13289,6 +13329,11 @@ class Dialog {
|
|
13289
13329
|
this.willShow = true;
|
13290
13330
|
this.open = true;
|
13291
13331
|
this.modal.activate();
|
13332
|
+
// @ts-ignore
|
13333
|
+
if (typeof this.dialog?.showPopover === 'function') {
|
13334
|
+
// @ts-ignore
|
13335
|
+
this.dialog.showPopover();
|
13336
|
+
}
|
13292
13337
|
lockBodyScrolling(this.host);
|
13293
13338
|
if (this.open) {
|
13294
13339
|
// Wait for the next frame before setting initial focus so the dialog is technically visible
|
@@ -13313,13 +13358,20 @@ class Dialog {
|
|
13313
13358
|
this.willHide = true;
|
13314
13359
|
this.open = false;
|
13315
13360
|
this.modal.deactivate();
|
13316
|
-
unlockBodyScrolling(this.host);
|
13317
13361
|
this.stopVideos();
|
13318
13362
|
// Restore focus to the original trigger
|
13319
13363
|
const trigger = this.originalTrigger;
|
13320
13364
|
if (trigger && typeof trigger.focus === 'function') {
|
13321
13365
|
setTimeout(() => trigger.focus());
|
13322
13366
|
}
|
13367
|
+
setTimeout(() => {
|
13368
|
+
// @ts-ignore
|
13369
|
+
if (!this.open && typeof this.dialog?.hidePopover === 'function') {
|
13370
|
+
// @ts-ignore
|
13371
|
+
this.dialog.hidePopover();
|
13372
|
+
}
|
13373
|
+
unlockBodyScrolling(this.host);
|
13374
|
+
}, 300);
|
13323
13375
|
}
|
13324
13376
|
stopVideos() {
|
13325
13377
|
const videos = Array.from(this.host.querySelectorAll('iframe,video'));
|
@@ -13361,7 +13413,9 @@ class Dialog {
|
|
13361
13413
|
'dialog--has-header': !this.noHeader,
|
13362
13414
|
'dialog--nodismiss': this.noDismiss,
|
13363
13415
|
'dialog--with-ribbon': this.showRibbon,
|
13364
|
-
}, onKeyDown: this.handleKeyDown, ref: (ele) => (this.dialog = ele)
|
13416
|
+
}, onKeyDown: this.handleKeyDown, ref: (ele) => (this.dialog = ele),
|
13417
|
+
// @ts-ignore
|
13418
|
+
popover: "manual" }, hAsync("div", { part: "overlay", class: "dialog__overlay", ref: (el) => (this.overlay = el), onClick: this.requestClose }), hAsync("div", { ref: (el) => (this.panel = el), part: "panel", class: "dialog__panel", role: "dialog", "aria-modal": "true", "aria-hidden": this.open ? 'false' : 'true', "aria-label": this.noHeader ? this.label : null, "aria-labelledby": !this.noHeader ? `${this.componentId}-title` : null, tabIndex: -1 }, hAsync("div", { class: "dialog__body-wrap" }, !this.noHeader && (hAsync("nano-sticker", null, hAsync("header", { part: "header", class: "dialog__header" }, hAsync("span", { part: "title", class: "dialog__title", id: `${this.componentId}-title` }, hAsync("slot", { name: "label" }, this.label || String.fromCharCode(65279))), !this.noUserDismiss && (hAsync("nano-icon-button", { part: "close-button", exportparts: "base:close-button__base", class: "dialog__close-icon", label: "close dialog", onClick: this.requestClose, iconName: "light/times" }))))), hAsync("div", { part: "body", class: "dialog__body" }, hAsync("slot", null)), !this.noFooter && (this.hasFooter || !this.noUserDismiss) && (hAsync("footer", { part: "footer", class: "dialog__footer" }, hAsync("slot", { name: "footer", onSlotchange: this.handleSlotChange }), !this.noUserDismiss && (hAsync("button", { class: "dialog__close-txt", onClick: this.requestClose }, "Close")))))))));
|
13365
13419
|
}
|
13366
13420
|
get host() { return getElement(this); }
|
13367
13421
|
static get watchers() { return {
|
@@ -29543,12 +29597,11 @@ class TabGroup {
|
|
29543
29597
|
if (this.disableSwipe)
|
29544
29598
|
return;
|
29545
29599
|
const touch = event.changedTouches[0];
|
29546
|
-
const distX = touch.pageX - this.initialTouchX; // get horizontal dist
|
29547
|
-
const distY = touch.pageY - this.initialTouchY; // get vertical dist traveled
|
29600
|
+
const distX = touch.pageX - this.initialTouchX; // get horizontal dist travelled
|
29548
29601
|
const threshold = 70;
|
29549
29602
|
const xDiff = this.initialTouchX - touch.clientX;
|
29550
29603
|
const yDiff = this.initialTouchY - touch.clientY;
|
29551
|
-
const isHorizontalSwipe = Math.abs(distX) >= threshold && Math.abs(
|
29604
|
+
const isHorizontalSwipe = Math.abs(distX) >= threshold && Math.abs(yDiff) <= 50;
|
29552
29605
|
const tabs = this.getAllActiveTabs;
|
29553
29606
|
const currIndex = tabs.findIndex((el) => el.active);
|
29554
29607
|
if (isHorizontalSwipe) {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nanoporetech-digital/components",
|
3
|
-
"version": "6.
|
3
|
+
"version": "6.3.0",
|
4
4
|
"repository": {
|
5
5
|
"type": "git",
|
6
6
|
"url": "https://git.oxfordnanolabs.local/Digital/nano-components"
|
@@ -130,7 +130,7 @@
|
|
130
130
|
"nanopore",
|
131
131
|
"digital"
|
132
132
|
],
|
133
|
-
"gitHead": "
|
133
|
+
"gitHead": "150beee9f428d732cac09b18611bee93ab54c748",
|
134
134
|
"volta": {
|
135
135
|
"node": "18.14.0"
|
136
136
|
}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"file":"scroll-e8c21f80.js","mappings":"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","names":["getOffset"],"sources":["./src/utils/scroll.ts"],"sourcesContent":["import { getOffset } from './dom';\n\nconst locks = new Set();\n\n/**\n * Prevents body scrolling. Keeps track of which elements requested a lock so multiple levels of locking are possible\n * without premature unlocking.\n */\nexport function lockBodyScrolling(lockingEl: HTMLElement) {\n locks.add(lockingEl);\n document.body.classList.add('nano-scroll-lock');\n}\n\n/**\n * Unlocks body scrolling. Scrolling will only be unlocked once all elements that requested a lock call this method.\n */\nexport function unlockBodyScrolling(lockingEl: HTMLElement) {\n locks.delete(lockingEl);\n\n if (locks.size === 0) {\n document.body.classList.remove('nano-scroll-lock');\n }\n}\n\nfunction scrollTo(\n element: HTMLElement,\n scrollAmt: number,\n vertical: boolean = false\n) {\n if (!vertical) {\n try {\n element.scrollTo({ left: scrollAmt, behavior: 'smooth' });\n } catch (e) {\n element.scrollLeft = scrollAmt;\n }\n return;\n }\n try {\n element.scrollTo({ top: scrollAmt, behavior: 'smooth' });\n } catch (e) {\n element.scrollTop = scrollAmt;\n }\n}\n\n/**\n * Scrolls an element into view *of its parent container*.\n * Note to future me - cannot use native `scrollIntoView`\n * 'cos it will move the whole window\n * (vertically even though we only care about parent).\n * If the element is already in view, nothing will happen.\n */\nexport function scrollIntoView(\n element: HTMLElement,\n container: HTMLElement,\n direction: 'horizontal' | 'vertical' | 'both' = 'vertical',\n position: 'center' | 'start' = 'start'\n) {\n const offset = getOffset(element, container);\n const offsetTop = offset.top + container.scrollTop;\n const offsetLeft = offset.left + container.scrollLeft;\n const minX = container.scrollLeft;\n const maxX = container.scrollLeft + container.offsetWidth;\n const minY = container.scrollTop;\n const maxY = container.scrollTop + container.offsetHeight;\n\n if (direction === 'horizontal' || direction === 'both') {\n if (position === 'start') {\n if (offsetLeft < minX) scrollTo(container, offsetLeft);\n else if (offsetLeft + element.clientWidth > maxX)\n scrollTo(\n container,\n offsetLeft - container.offsetWidth + element.clientWidth\n );\n } else {\n scrollTo(\n container,\n container.scrollLeft +\n offset.left -\n (container.offsetWidth / 2 - element.offsetWidth / 2)\n );\n }\n }\n\n if (direction === 'vertical' || direction === 'both') {\n if (position === 'start') {\n if (offsetTop < minY) scrollTo(container, offsetTop, true);\n else if (offsetTop + element.clientHeight > maxY) {\n scrollTo(\n container,\n offsetTop - container.offsetHeight + element.clientHeight,\n true\n );\n }\n } else {\n scrollTo(\n container,\n container.scrollTop +\n offset.top -\n (container.offsetHeight / 2 - element.offsetHeight / 2),\n true\n );\n }\n }\n}\n"],"version":3}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"file":"table.worker-b4922b9b.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"file":"scroll-ac332213.js","mappings":"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","names":[],"sources":["./src/utils/scroll.ts"],"sourcesContent":["import { getOffset } from './dom';\n\nconst locks = new Set();\n\n/**\n * Prevents body scrolling. Keeps track of which elements requested a lock so multiple levels of locking are possible\n * without premature unlocking.\n */\nexport function lockBodyScrolling(lockingEl: HTMLElement) {\n locks.add(lockingEl);\n document.body.classList.add('nano-scroll-lock');\n}\n\n/**\n * Unlocks body scrolling. Scrolling will only be unlocked once all elements that requested a lock call this method.\n */\nexport function unlockBodyScrolling(lockingEl: HTMLElement) {\n locks.delete(lockingEl);\n\n if (locks.size === 0) {\n document.body.classList.remove('nano-scroll-lock');\n }\n}\n\nfunction scrollTo(\n element: HTMLElement,\n scrollAmt: number,\n vertical: boolean = false\n) {\n if (!vertical) {\n try {\n element.scrollTo({ left: scrollAmt, behavior: 'smooth' });\n } catch (e) {\n element.scrollLeft = scrollAmt;\n }\n return;\n }\n try {\n element.scrollTo({ top: scrollAmt, behavior: 'smooth' });\n } catch (e) {\n element.scrollTop = scrollAmt;\n }\n}\n\n/**\n * Scrolls an element into view *of its parent container*.\n * Note to future me - cannot use native `scrollIntoView`\n * 'cos it will move the whole window\n * (vertically even though we only care about parent).\n * If the element is already in view, nothing will happen.\n */\nexport function scrollIntoView(\n element: HTMLElement,\n container: HTMLElement,\n direction: 'horizontal' | 'vertical' | 'both' = 'vertical',\n position: 'center' | 'start' = 'start'\n) {\n const offset = getOffset(element, container);\n const offsetTop = offset.top + container.scrollTop;\n const offsetLeft = offset.left + container.scrollLeft;\n const minX = container.scrollLeft;\n const maxX = container.scrollLeft + container.offsetWidth;\n const minY = container.scrollTop;\n const maxY = container.scrollTop + container.offsetHeight;\n\n if (direction === 'horizontal' || direction === 'both') {\n if (position === 'start') {\n if (offsetLeft < minX) scrollTo(container, offsetLeft);\n else if (offsetLeft + element.clientWidth > maxX)\n scrollTo(\n container,\n offsetLeft - container.offsetWidth + element.clientWidth\n );\n } else {\n scrollTo(\n container,\n container.scrollLeft +\n offset.left -\n (container.offsetWidth / 2 - element.offsetWidth / 2)\n );\n }\n }\n\n if (direction === 'vertical' || direction === 'both') {\n if (position === 'start') {\n if (offsetTop < minY) scrollTo(container, offsetTop, true);\n else if (offsetTop + element.clientHeight > maxY) {\n scrollTo(\n container,\n offsetTop - container.offsetHeight + element.clientHeight,\n true\n );\n }\n } else {\n scrollTo(\n container,\n container.scrollTop +\n offset.top -\n (container.offsetHeight / 2 - element.offsetHeight / 2),\n true\n );\n }\n }\n}\n"],"version":3}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"file":"table.worker-761fba3e.js","mappings":";;;;;;;;;;;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/*!
|
2
|
-
* Web Components for Nanopore digital Web Apps
|
3
|
-
*/
|
4
|
-
import{j as t,h as n,F as e,g as i,e as o,w as s,d as r,r as a,c as l,a as h}from"./index-9695db0a.js";import{a as c}from"./math-c02ddfda.js";import{d}from"./throttle-ac4fcefa.js";import{f as p}from"./scroll-parent-bab1cbf7.js";import{c as f}from"./index-3003356f.js";const b="nano-tbl";const _=(t,n)=>{const e=globalThis[n];return e!=null&&t instanceof e};const u=t=>{if(t!=null){if(_(t,"ArrayBuffer")||_(t,"MessagePort")||_(t,"ImageBitmap")||_(t,"OffscreenCanvas")){return[t]}if(typeof t==="object"){if(t.constructor===Object){t=Object.values(t)}if(Array.isArray(t)){return t.flatMap(u)}return u(t.buffer)}}return[]};let m=0;let g=0;const w=new Map;const y=new Map;const v=(n,e,i)=>{const o=new Worker(n,{name:e});o.addEventListener("message",(({data:n})=>{if(n){const e=n[0];const o=n[1];const s=n[2];if(e===i){const e=n[3];const[i,r,a]=w.get(o);w.delete(o);if(e){const n=e.isError?Object.assign(new Error(e.value.message),e.value):e.value;t(n);r(n)}else{if(a){a.forEach((t=>y.delete(t)))}i(s)}}else if(e===i+".cb"){try{y.get(o)(...s)}catch(n){t(n)}}}}));return o};const x=(t,n,e)=>(...i)=>new Promise(((o,s)=>{let r=m++;let a=0;let l=i.length;let h=[o,s];w.set(r,h);for(;a<l;a++){if(typeof i[a]==="function"){const t=g++;y.set(t,i[a]);i[a]=[n+".cb",t];(h[2]=h[2]||[]).push(t)}}const c=t=>t.postMessage([n,r,e,i],u(i));if(t.then){t.then(c)}else{c(t)}}));const k=import("./table.worker-761fba3e.js").then((t=>t.worker));const $=x(k,"stencil.table.worker","createWorkerStore");const z=x(k,"stencil.table.worker","syncConfigToWorker");const C=x(k,"stencil.table.worker","syncDataToWorker");const S=x(k,"stencil.table.worker","workerFilter");const I=x(k,"stencil.table.worker","workerSearch");const R=x(k,"stencil.table.worker","workerSort");function P(t){const n=JSON.parse(JSON.stringify(t));t.forEach((t=>{if(!!t?.sortCompareFn){const e=n.find((n=>n.prop===t.prop));e.sortCompareFn=t.sortCompareFn.toString()}}));return n}const T=new WeakMap;async function A(t,n,e,i){const o={data:f({rows:[]}),config:f({columns:n}),general:f({workerId:null,scrollParent:e,host:t,isReady:i})};const s=await $(o.data.state.rows,P(o.config.state.columns));o.general.state.workerId=s;T.set(t,o);o.data.use({reset:()=>{if(o.general.state.workerId)C(o.general.state.workerId,null)},dispose:()=>{if(o.general.state.workerId)C(o.general.state.workerId,null)}});o.config.use({reset:()=>{if(o.general.state.workerId)z(o.general.state.workerId,null)},dispose:()=>{if(o.general.state.workerId)z(o.general.state.workerId,null)}});return o}function M(t){return T.get(t)}function B(t){if(t instanceof Date){return"date"}if(["number","string","boolean"].includes(typeof t)){return typeof t}return"unknown"}function F(t,n){const e=T.get(t);if(!e)return;const i=e.config.state.columns;const o=i.filter((t=>t.type==="date")).reduce(((t,n)=>[...t,n.prop]),[]);const s=i.filter((t=>!t.type));n=n.map(((t,n)=>{if(s.length&&n===0){e.config.state.columns=i.map((n=>{if(s.includes(n)&&t[n.prop]&&!n.type){n.type=B(t[n.prop]);if(n.type==="date")o.push(n.prop)}return n}))}o.forEach((n=>{const e=new Date(t[n])??null;if(!!e&&Number(e))t[n]=Number(e)}));t["__index"]=n;t["__uuid"]=c(i.map((n=>t[n.prop])).join());return t}));e.data.state.rows=n;if(e.general.state.workerId)return C(e.general.state.workerId,n)}function N(t,n){const e=T.get(t);if(!e)return;e.config.state.columns=n;if(e.general.state.workerId)return z(e.general.state.workerId,P(n))}async function j(t,n){const e=T.get(t);if(!e||!e.general.state.workerId)return;try{e.data.state.rows=await I(e.general.state.workerId,n)}catch(t){console.warn(t)}}async function D(t,n){const e=T.get(t);if(!e||!e.general.state.workerId)return;try{e.data.state.rows=await S(e.general.state.workerId,n)}catch(t){console.warn(t)}}async function O(t,n,e){const i=T.get(t);if(!i||!i.general.state.workerId)return;try{i.data.state.rows=await R(i.general.state.workerId,n,e)}catch(t){console.warn(t)}}function E(t,n){const e=L();const i=e.config.state.columns;const o=e.data.state.rows;const s=i[n];const r=s?.prop;const a=o[t];const l=a?a[i[n].prop]:"";return{prop:r,cellModel:l,column:s,rowIndex:t,rowModel:a}}function W(t){const n=L();const e=n.data.state.rows;const i=e[t];return{rowModel:i,rowIndex:t}}function H(t,n){if(!n)return t;const e={...n,...t};if(n.class){if(typeof n.class==="object"&&typeof e.class==="object"){e.class={...n.class,...e.class}}else if(typeof n.class==="string"&&typeof e.class==="object"){e.class[n.class]=true}else if(typeof e.class==="string"){e.class+=" "+n.class}}if(n.style){e.style={...n.style,...e.style}}return e}function L(){return M(i(o()))}function J(t,n,e){const i={...e};const o=L().config.state.columns[n]?.cellProperties;if(!o)return i;const s=E(t,n);const r=o(s);if(!r)return i;return H(i,r)}function Y(t){const i=t?.columnTemplate;return i?i(n,t):n(e,null,t.title)}function q(t,n,e=false){const i={[`${b}__${t}`]:true,[`${b}__pin`]:!!n,[`${b}__pin--top`]:n==="top",[`${b}__pin--bottom`]:n==="bottom"};if(e)return K(i);return i}function K(t){let n="";Object.entries(t).forEach((([t,e])=>{if(e)n+=t+" "}));return n}function X(t,n=100){const e=t.getBoundingClientRect();const i=window.innerHeight||document.documentElement.clientHeight;if(!e.bottom&&!e.top&&!e.left&&!e.right&&!e.height&&!e.width&&!e.x&&!e.y)return false;return!(Math.floor(100-(e.top>=0?0:e.top)/+-e.height*100)<n||Math.floor(100-(e.bottom-i)/e.height*100)<n)}const U=({column:t,onColumnSortClick:i,defaults:o})=>{function s(n){let e;switch(t.order){case"asc":e="desc";break;case"desc":e=null;break;default:e="asc"}i(e,t.prop,n.target.closest("th"))}function r(){return!!o.sortable&&t.sortable!==false||!o.sortable&&t.sortable===true}let a={};if(t.columnProperties){a=t.columnProperties(t)||a}const l={class:{...q("th",t.pinned),[`${b}__pin--start`]:t.pinned==="start",[`${b}__pin--end`]:t.pinned==="end",[`${b}__ordered`]:!!t.order,[`${b}__filtered`]:t.filter!==undefined&&t.filter!==null}};let h=a?H(l,a):l;const c=Y(t);if(!c)return n(e,null);h=Number(h.colSpan)>1?{...h,scope:"colgroup"}:{...h,scope:"col"};if(r()){const n=t.order?t.order==="asc"?"ascending":"descending":"none";h={...h,"aria-sort":n}}return n("th",{...h,key:t.prop},r()?n("button",{class:{[`${b}__order-btn`]:true,[`${b}__cell-content`]:true},onClick:s},Y(t),t.filter!==undefined&&t.filter!==null&&n("nano-icon",{name:"light/filter"}),!!t.order&&(t.order==="desc"?n("nano-icon",{name:"solid/long-arrow-down"}):n("nano-icon",{name:"solid/long-arrow-up"})),n("div",{class:`${b}__status-icons`},n("nano-icon",{name:"light/chevron-down"}))):n("div",{class:`${b}__cell-content`},Y(t),t.filter!==undefined&&t.filter!==null&&n("nano-icon",{name:"light/bars-filter"})))};function G(t,i){const s=L();const r=s.config.state.columns;const a=r[i]?.cellTemplate;const l=E(t,i);const h=o();if(!!l.cellModel&&r[i].type==="date"){const t=new Date(l.cellModel);if(t instanceof Date&&!isNaN(t)){l.cellModel=!a?`${new Date(l.cellModel).toLocaleDateString()} ${new Date(l.cellModel).toLocaleTimeString()}`:t}}let c=false;const d=(...t)=>{c=true;return n(...t)};let p=a?a(d,l):undefined;if(p&&h.customRenderer&&p["t"]===undefined&&!(p instanceof Element)&&typeof p!=="string"&&!c){const t=document.createElement("template");const n=h.customRenderer(p,t.content);p=n&&n["then"]?n:t}return p?p:l.cellModel!==undefined&&l.cellModel!==null?n(e,null,l.cellModel?.toString()):""}const Q=(t,n=false)=>{const e=L();const i=e.config.state.columns[t];const o={[`${b}__td`]:true,[`${b}__ordered`]:!!i.order,[`${b}__pin`]:!!i.pinned,[`${b}__pin--start`]:i.pinned==="start",[`${b}__pin--end`]:i.pinned==="end"};if(n)return K(o);return o};const V=({rowIndex:t,colIndex:e,nestedContent:i})=>{const s=()=>i?i():G(t,e)||n("span",{class:"placeholder"}," ");let r="td";const a=o();const l=L();const h=l.config.state.columns[e];let c=J(t,e,{class:Q(e)});if(h.rowHeader){c=Number(c.rowSpan)>1?{...c,scope:"rowgroup"}:{...c,scope:"row"};r="th"}const d=t=>{const e=s();return n("div",{ref:t=>{if(!t)return;if(e instanceof Element){t.replaceChildren();t.append(e["content"]||e)}else if(e["then"]){e.then((n=>t.innerHTML=n))}},...t,class:{[`${b}__cell-content`]:true,[`${b}__cell-content--wrap`]:!!h.wrap},innerHTML:typeof e==="string"&&e.includes("<")?e:undefined},(typeof e!=="string"||!e.includes("<"))&&!e["then"]&&!(e instanceof Element)&&e)};return n(r,{role:a.type==="grid"?"gridcell":undefined,...c},h.autoTooltip&&!h.wrap?n("nano-resize-observe",{notifyContentFit:"x",onNanoResizeContentFitChange:t=>t.target.firstElementChild.disabled=t.detail.x},n("nano-tooltip",{disabled:true,placement:"top",onNanoShow:t=>t.target.closest(r).style.zIndex="100",onNanoHide:t=>t.target.closest(r).style.zIndex=""},n(d,null),n("span",{slot:"content"},n(s,null)))):n(d,null))};const Z=(t,e,i)=>{const o=n("div",{...t.wrapperProps,class:{[`${b}__cell-content`]:true,[`${b}__cell-content--wrap`]:t.wrap}},e);return t.header?n("th",{scope:i,...t.cellProps},o):n("td",{...t.cellProps},o)};const tt=({rowRenderer:t,rowIndex:e,rowModel:i},o,s)=>{const r=({header:t,wrap:n,cellProps:e,wrapperProps:i},o)=>Z({header:t,wrap:n,cellProps:e,wrapperProps:i},o,"row");let a={};if(!i){const t=W(e);i=t.rowModel}if(t?.rowProperties){a=t.rowProperties({rowModel:i,rowIndex:e})||a}let l;if(t?.pinned&&typeof t.pinned==="function"){l=t.pinned({rowModel:i,rowIndex:e})}const h=H({class:q("tr",l,true)},a);const c=t?.template;const d=t=>s.map(t,((t,n)=>{if(["td","th"].includes(t.vtag.toString())){t.vattrs=H({class:Q(n,true)},t.vattrs)}return t}));if(c){let t=c(n,{renderedRow:n("tr",{...h,key:i.__uuid},o),rowModel:i,rowIndex:e},r);if(Array.isArray(t)){t=s.map(t,((t,n)=>{if(t.vtag==="tr"){if(!t.vkey)t.vkey=`${i.__uuid}_${n}`;t.vattrs=H({class:q("tr",l,true)},t.vattrs);if(!!t.vchildren){t.vchildren=d(t.vchildren)}}return t}))}return t}return n("tr",{...h,key:i.__uuid},d(o))};const nt=({rowRenderer:t},e,i)=>{let o={};if(t.rowProperties){o=t.rowProperties()||{}}const s=({header:t,wrap:n,cellProps:e,wrapperProps:i},o)=>Z({header:t,wrap:n,cellProps:e,wrapperProps:i},o,"col");const r=t.pinned||null;const a={class:q("tr",r)};const l=o?H(a,o):a;const h=t?.template;if(h){let t=h(n,{renderedRow:n("tr",{...l},e)},s);if(Array.isArray(t)){t=i.map(t,(t=>{if(t.vtag==="tr"){t.vattrs=H({class:q("tr",r,true)},t.vattrs);if(!!t.vchildren){t.vchildren=i.map(t.vchildren,(t=>{if(["td","th"].includes(t.vtag.toString())){t.vattrs=H({class:q(t.vtag.toString(),r,true)},t.vattrs)}return t}))}}return t}))}return t}return n("tr",{...l},e)};function et(t,n){const e=document.getElementById(t)||document.createElement("style");e.id=t;e.innerHTML=n;if(!e.isConnected)document.head.append(e)}class it{constructor(t,n){this.cachedColMeta=new WeakMap;this._pinnedStart=[];this._pinnedEnd=[];this._cssColDimensionCacheKey="";this.cacheX=0;this.cacheY=0;this.tableEle=t;this.tableId=this.tableEle.id;this.scrollElement=n;this.startColumns=t.querySelector("thead").getElementsByClassName(`${b}__pin--start`);this.endColumns=t.querySelector("thead").getElementsByClassName(`${b}__pin--end`);this.topRows=t.getElementsByClassName(`${b}__pin--top`);this.bottomRows=t.getElementsByClassName(`${b}__pin--bottom`);this.onResize()}get pinnedStart(){return this._pinnedStart}set pinnedStart(t){this._pinnedStart=t;this.handlePinnedStartChange()}handlePinnedStartChange(){s((()=>{if(this.pinnedStart.length){this.tableEle.classList.add(`${b}__pinned--start`);const t=this.cachedColMeta.get(this.pinnedStart[this.pinnedStart.length-1]);et(`${this.tableId}-col-start-active-style`,`\n #${this.tableId} tr > :nth-child(${t.idx+1}) {\n --pin-start-active: 1;\n }\n `)}else{this.tableEle.classList.remove(`${b}__pinned--start`);et(`${this.tableId}-col-start-active-style`,``)}}))}get pinnedEnd(){return this._pinnedEnd}set pinnedEnd(t){this._pinnedEnd=t;this.handlePinnedEndChange()}handlePinnedEndChange(){s((()=>{if(this.pinnedEnd.length){this.tableEle.classList.add(`${b}__pinned--end`);const t=this.cachedColMeta.get(this.pinnedEnd[0]);et(`${this.tableId}-col-end-active-style`,`\n #${this.tableId} tr > :nth-child(${t.idx+1}) { --pin-end-active: 1; }\n `)}else{this.tableEle.classList.remove(`${b}__pinned--end`);et(`${this.tableId}-col-end-active-style`,``)}}))}get cssColDimensionCacheKey(){return this._cssColDimensionCacheKey}set cssColDimensionCacheKey(t){if(t===this._cssColDimensionCacheKey)return;this._cssColDimensionCacheKey=t;this.createPinnedColDimensionStyles()}generateCssCacheKey(){let t="";for(const n of this.startColumns){const e=this.cachedColMeta.get(n);t+=`${e.idx}-start-${e.width}`}for(const n of this.endColumns){const e=this.cachedColMeta.get(n);t+=`${e.idx}-start-${e.width}`}this.cssColDimensionCacheKey=t}createPinnedColDimensionStyles(){let t=0;let n=0;const e=Array.from(this.startColumns);const i=Array.from(this.endColumns).reverse();const o=`\n ${e.map((n=>{const e=this.cachedColMeta.get(n);t+=e.width-1||-1;return`\n #${this.tableId} tr > :nth-child(${e.idx+1}) ~ td,\n #${this.tableId} tr > :nth-child(${e.idx+1}) ~ th {\n --pin-start: ${t-1}px;\n }\n `})).join("")}\n ${i.map((t=>{const e=this.cachedColMeta.get(t);n+=e.width-1||-1;return`\n #${this.tableId} tr > td:has(~ :nth-child(${e.idx+1})),\n #${this.tableId} tr > th:has(~ :nth-child(${e.idx+1})) {\n --pin-end: ${n-1}px;\n }\n `})).join("")}\n `;et(`${this.tableId}-dimension-style`,o)}getParentOffsets(){const{x:t,y:n}=this.scrollElement.getBoundingClientRect();let e=t;let i=n;if(this.scrollElement===document.documentElement){e=this.scrollElement.offsetLeft;i=this.scrollElement.offsetTop}return{offsetX:e,offsetY:i}}assessRows(){if(!this.topRows.length&&!this.bottomRows.length)return;if(this.topRows.length){r((async()=>{let t=0;let n;const{offsetY:e}=this.getParentOffsets();for(const i of this.topRows){const{y:o,height:r}=i.getBoundingClientRect();const a=i.parentElement;const l=getComputedStyle(i).getPropertyValue("--pin-top");const h=l!==""?parseFloat(l):t;await new Promise((l=>s((()=>{if(o-e<=h){i.classList.add(`${b}__pinned`,`${b}__pinned--top`)}else{i.classList.remove(`${b}__pinned`,`${b}__pinned--top`)}if(n!==a){a.style.setProperty("--pin-top",`${t-1}px`);t+=r-1;n=a}l()}))))}}))}if(this.bottomRows.length){const t=Array.from(this.bottomRows).reverse();r((async()=>{let n;let e=0;const{offsetY:i}=this.getParentOffsets();for(const o of t){if(!o.isConnected)continue;const{y:t,height:r}=o.getBoundingClientRect();const a=o.parentElement;const l=getComputedStyle(o).getPropertyValue("--pin-bottom");const h=l!==""?parseFloat(l):e;await new Promise((l=>s((()=>{if(this.tableDims.height+i-(t+r)<=h){o.classList.add(`${b}__pinned`,`${b}__pinned--bottom`)}else{o.classList.remove(`${b}__pinned`,`${b}__pinned--bottom`)}if(n!==a){a.style.setProperty("--pin-bottom",`${e-1}px`);e+=r-1;n=a}l()}))))}}))}}async assessCols(){if(!this.startColumns.length&&!this.endColumns.length)return;let t;let n;let e;const i=new Promise((i=>{if(this.startColumns.length){r((()=>{const{offsetX:o}=this.getParentOffsets();let s=o;e=Array.from(this.startColumns[0].parentElement.children);for(const i of this.startColumns){t=i.getBoundingClientRect();this.cachedColMeta.set(i,{width:t.width,idx:e.indexOf(i)});n=this.pinnedStart.find((t=>t===i));if(t.x<s){if(!n)this.pinnedStart=[...this.pinnedStart,i]}else if(n){this.pinnedStart=this.pinnedStart.filter((t=>t!==i))}s+=t.width}if(!this.endColumns.length)i()}))}if(this.endColumns.length){r((()=>{const o=Array.from(this.endColumns).reverse();e=Array.from(this.endColumns[0].parentElement.children);const{offsetX:s}=this.getParentOffsets();let r=0;for(const i of o){t=i.getBoundingClientRect();this.cachedColMeta.set(i,{width:t.width,idx:e.indexOf(i)});n=this.pinnedEnd.find((t=>t===i));if(this.tableDims.width+s-t.right<=r){if(!n)this.pinnedEnd=[i,...this.pinnedEnd]}else if(n){this.pinnedEnd=this.pinnedEnd.filter((t=>t!==i))}r+=t.width}i()}))}}));await i;this.generateCssCacheKey()}onScroll(t){if(this.cacheX!==t.x){this.cacheX=t.x;this.assessCols()}if(this.cacheY!==t.y){this.cacheY=t.y;this.assessRows()}}onResize(){const t=this.scrollElement.clientWidth;const n=this.scrollElement.clientHeight;this.tableDims={width:t,height:n};this.assessCols();this.assessRows()}}const ot=':host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}nano-table{display:block;inline-size:100%;--max-col-width:clamp(200px, 500px, 50vw);--color:var(--nano-color-mediumgrey, #68767e);--font-size:0.87rem;--cell-line-height:1.5;--thead-font-size:0.95rem;--thead-color:#455560;--tfoot-color:#455560;--border-color:#dddbda;--border-style:thin solid var(--border-color);--border-tint-color:#0084a9;--border-tint-style:3px solid var(--border-tint-color);--cell-bg-rgb:var(--nano-color-white-rgb, 255 255 255);--head-bg-rgb:250 250 249;--foot-bg-rgb:var(--head-bg-rgb);--th-row-bg-rgb:var(--cell-bg-rgb);--ordered-bg-rgb:var(--nano-color-offwhite-rgb, 249 249 251);--td-padding-start:0.625rem;--td-padding-end:0.625rem;--td-padding-top:0.6rem;--td-padding-bottom:0.6125rem;--th-padding-start:0.725rem;--th-padding-end:0.625rem;--th-padding-top:0.875rem;--th-padding-bottom:0.6875rem;--td-padding-v:var(--td-padding-top) var(--td-padding-bottom);--td-padding-h:var(--td-padding-start) var(--td-padding-end);--th-padding-v:var(--th-padding-top) var(--th-padding-bottom);--th-padding-h:var(--th-padding-start) var(--th-padding-end);--foot-th-padding-v:var(--td-padding-top) var(--td-padding-bottom);--foot-th-padding-h:var(--td-padding-start) var(--td-padding-end);--head-th-padding-v:var(--th-padding-top) var(--th-padding-bottom);--head-th-padding-h:var(--th-padding-start) var(--th-padding-end);--bookend-col-padding:2rem}.nano-tbl{color:var(--color);text-align:start;inline-size:100%;font-size:var(--font-size);border-spacing:0 0;border-collapse:separate;background:rgb(var(--cell-bg-rgb));border-inline-end:1px solid transparent;border-block-start:1px solid transparent;position:relative;z-index:1}.nano-tbl__wrap{display:table;min-inline-size:100%}.nano-tbl__top-anchor{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;position:relative}.nano-tbl__ordered{background-color:var(--ordered-bg);border-inline-start:var(--border-style);border-inline-end:var(--border-style)}.nano-tbl__order-btn{padding:0;border:none;outline:none;font:inherit;background:none;-webkit-appearance:none;appearance:none;color:inherit;display:flex;gap:10px;align-items:center;inline-size:100%}.nano-tbl__order-btn:focus-visible{outline:none;box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8))) inset}.nano-tbl__status-icons{margin-inline:auto 10px;display:flex;gap:10px}.nano-tbl__progress-bar{font-size:0.2rem;position:sticky;inset-block-start:0;inset-inline:0;z-index:10;transition:scale 0.25s;transform:scale(0);inline-size:100%;block-size:0}.nano-tbl__progress-bar--show{transform:scale(1);block-size:auto}.nano-tbl__caption--hide{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.nano-tbl__td,.nano-tbl__th{line-height:var(--cell-line-height);text-align:start;border-block-start:var(--border-style);max-inline-size:var(--max-col-width);background-color:rgb(var(--cell-bg-rgb))}tbody:first-of-type tr:first-child .nano-tbl__td,tbody:first-of-type tr:first-child .nano-tbl__th{border-block-start:none}tbody:last-of-type tr:last-child .nano-tbl__td,tbody:last-of-type tr:last-child .nano-tbl__th{border-block-end:var(--border-style)}.md .nano-tbl__td:first-child .nano-tbl__cell-content,.md .nano-tbl__th:first-child .nano-tbl__cell-content{padding-inline-start:var(--bookend-col-padding)}.md .nano-tbl__td:last-child .nano-tbl__cell-content,.md .nano-tbl__th:last-child .nano-tbl__cell-content{padding-inline-end:var(--bookend-col-padding)}@media (max-width: 768px){.nano-tbl__td:first-child .nano-tbl__cell-content,.nano-tbl__th:first-child .nano-tbl__cell-content{padding-inline-start:var(--td-padding-start) !important}.nano-tbl__td:last-child .nano-tbl__cell-content,.nano-tbl__th:last-child .nano-tbl__cell-content{padding-inline-end:var(--td-padding-end) !important}}thead .nano-tbl__td,thead .nano-tbl__th{color:var(--thead-color);font-weight:800;background:rgb(var(--head-bg-rgb)/100%);font-size:var(--thead-font-size);border-block-start:none !important}thead .nano-tbl__td .nano-tbl__cell-content,thead .nano-tbl__th .nano-tbl__cell-content{padding-block:var(--head-th-padding-v);padding-inline:var(--head-th-padding-h)}thead .nano-tbl__td .nano-sortable__keyboard-handle,thead .nano-tbl__th .nano-sortable__keyboard-handle{position:absolute;inset-inline-end:5px;inset-block-start:50%;transform:translateY(-50%);background:white;z-index:10}tfoot .nano-tbl__td,tfoot .nano-tbl__th{color:var(--tfoot-color);font-weight:800;border-block-start:none;background:rgb(var(--foot-bg-rgb)/100%);font-size:var(--thead-font-size)}tfoot .nano-tbl__td .nano-tbl__cell-content,tfoot .nano-tbl__th .nano-tbl__cell-content{padding-block:var(--foot-th-padding-v);padding-inline:var(--foot-th-padding-h)}.nano-tbl__td.nano-tbl__ordered,.nano-tbl__th.nano-tbl__ordered{background-color:rgb(var(--ordered-bg-rgb)/80%) !important}.nano-tbl__cell-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-block:var(--td-padding-v);padding-inline:var(--td-padding-h)}.nano-tbl__cell-content--no-result{padding-block:2rem}.nano-tbl__cell-content--wrap{white-space:normal;overflow:visible}.nano-tbl tbody{will-change:scroll-position;opacity:1;transition:0.1s ease opacity}.nano-tbl tbody.nano-tbl__loading{z-index:-1;position:relative}.nano-tbl tbody.nano-tbl__inactive{opacity:0}.nano-tbl tbody .nano-tbl__tr:has(~.nano-tbl__tr--placeholder){display:none}.nano-tbl tbody .nano-tbl__tr--placeholder~.nano-tbl__tr{display:none}.nano-tbl th[scope=row]{font-weight:800;margin:0}.nano-tbl__tr{--base-z:0}.nano-tbl__pin{z-index:var(--z, var(--base-z, 0))}.nano-tbl__pin .nano-tbl__th,.nano-tbl__pin .nano-tbl__td{z-index:var(--z, var(--base-z, 0))}.nano-tbl__pin--start{position:sticky;inset-inline-start:var(--pin-start, -1px)}.nano-tbl__pin--start::after{content:"";position:absolute;inset:0;box-shadow:5px 0 4px -1px rgba(0, 0, 0, 0.2);opacity:var(--pin-start-active, 0);z-index:-1}.nano-tbl__pinned--start .nano-tbl__pin--start{--z:calc(var(--base-z) + 3) !important}.nano-tbl__pin--end{position:sticky}.nano-tbl__pin--start+.nano-tbl__pin--end{inset-inline-end:auto !important}.nano-tbl__pin--start+.nano-tbl__pin--end::after{display:none}.sm .nano-tbl__pin--end{inset-inline-end:var(--pin-end, -1px);max-inline-size:min(50vw, 200px)}.sm .nano-tbl__pin--end::after{display:block !important;content:"";position:absolute;inset:0;box-shadow:-5px 1px 4px -1px rgba(0, 0, 0, 0.2);opacity:var(--pin-end-active, 0);z-index:-1}.sm .nano-tbl__pinned--end .nano-tbl__pin--end{--z:calc(var(--base-z) + 2) !important}.nano-tbl__pin--top .nano-tbl__th,.nano-tbl__pin--top .nano-tbl__td{position:sticky;inset-block-start:var(--pin-top, -1px)}.nano-tbl__pin--top .nano-tbl__pin--end,.nano-tbl__pin--top .nano-tbl__pin--start{--z:calc(var(--base-z) + 1)}.nano-tbl__pin--top.nano-tbl__pinned--top{--base-z:4}tbody .nano-tbl__pin--top.nano-tbl__pinned--top .nano-tbl__th,tbody .nano-tbl__pin--top.nano-tbl__pinned--top .nano-tbl__td{box-shadow:1px 3px 4px -1px rgba(0, 0, 0, 0.1)}.nano-tbl__pin--bottom .nano-tbl__th,.nano-tbl__pin--bottom .nano-tbl__td{position:sticky;inset-block-end:var(--pin-bottom, -1px)}.nano-tbl__pin--bottom .nano-tbl__pin--end,.nano-tbl__pin--bottom .nano-tbl__pin--start{--z:calc(var(--base-z) + 1)}.nano-tbl__pin--bottom.nano-tbl__pinned--bottom{--base-z:5}.nano-tbl__pin--bottom.nano-tbl__pinned--bottom:has(~.nano-tbl__pin--bottom.nano-tbl__pinned--bottom) .nano-tbl__pin{--base-z:6}tbody .nano-tbl__pin--bottom.nano-tbl__pinned--bottom .nano-tbl__th,tbody .nano-tbl__pin--bottom.nano-tbl__pinned--bottom .nano-tbl__td{box-shadow:1px -3px 4px -1px rgba(0, 0, 0, 0.07)}.nano-tbl thead tr:last-of-type td,.nano-tbl thead tr:last-of-type th{border-block-end:var(--border-tint-style)}.nano-tbl tfoot tr:first-of-type td,.nano-tbl tfoot tr:first-of-type th{border-block-start:none}.nano-tbl tfoot tr:last-of-type td,.nano-tbl tfoot tr:last-of-type th{border-block-start:var(--border-style);border-block-end:var(--border-tint-style)}.nano-tbl__pinned--bottom .nano-tbl tfoot tr.nano-tbl__pin--bottom:first-of-type td,.nano-tbl__pinned--bottom .nano-tbl tfoot tr.nano-tbl__pin--bottom:first-of-type th{border-block-start:var(--border-tint-style) !important}.nano-tbl__pinned--bottom .nano-tbl tfoot tr.nano-tbl__pin--bottom:last-of-type td,.nano-tbl__pinned--bottom .nano-tbl tfoot tr.nano-tbl__pin--bottom:last-of-type th{border-block-end:none !important}.nano-tbl .unlimited-width{max-inline-size:none}.nano-tbl__spinner{font-size:1.5rem;transition:scale 0.25s;scale:0;padding:0.5rem;position:absolute;inset-block-end:0;inset-inline-start:calc(50% - 0.75rem);z-index:0}.nano-tbl__spinner--show{scale:1;position:sticky}.nano-tbl nano-skeleton{line-height:var(--cell-line-height)}';const st=false;function rt(t,n=false){if(!performance||!st)return;if(n){performance?.mark("end"+t);performance?.measure(t,"start"+t,"end"+t);const n=performance?.getEntriesByName(t);console.info(n[n.length?n.length-1:0])}else{performance?.mark("start"+t)}}let at=0;const lt=class{constructor(t){a(this,t);this.nanoTblReady=l(this,"nanoTblReady",7);this.nanoTblBlockRendered=l(this,"nanoTblBlockRendered",7);this.nanoTblBeforeSort=l(this,"nanoTblBeforeSort",7);this.nanoTblAfterSort=l(this,"nanoTblAfterSort",7);this.nanoTblBeforeFilter=l(this,"nanoTblBeforeFilter",7);this.nanoTblAfterFilter=l(this,"nanoTblAfterFilter",7);this.nanoTblBeforeSearch=l(this,"nanoTblBeforeSearch",7);this.nanoTblAfterSearch=l(this,"nanoTblAfterSearch",7);this.nanoTblBeforeEdit=l(this,"nanoTblBeforeEdit",7);this.renderId="tbl-"+at++;this.filters=[];this.currentFilters="[]";this.currentSort="";this.measureHeight=0;this.blockHeights=[];this.unitHeight=0;this._isReady=false;this.sortStart=async(t,n,e)=>{if(this.currentSort===t+":"+n)return;this._loading=true;const i=this.nanoTblBeforeSort.emit({column:n,order:t});if(i.defaultPrevented)return;rt("sort");this.currentSort=t+":"+n;this.scrollToTop(e);if(this.customSortFn){try{const e=await this.customSortFn(n,t);if(e===true){this.sortComplete(t,n);this._loading=false;return}}catch(t){console.warn("custom sort failed",t);this.currentSort="";this._loading=false;return}}try{await O(this.host,n,t);this.sortComplete(t,n)}catch(t){console.warn("sort failed",t);this.currentSort=""}finally{if(this.blocks.length)this._loading=false}};this.scrollHandler=()=>{let t=0;rt("scrollHandler");if(!this.store?.general.state.isActive||!this.rows)return;if(this.primaryBlockIndex===undefined)this.primaryBlockIndex=0;r((()=>{t=typeof this.scrollParent.scrollTop!=="undefined"?this.scrollParent.scrollTop:window.scrollY;t+=this.host.offsetTop;if(this.tablePinnedService){this.tablePinnedService.onScroll({x:typeof this.scrollParent.scrollLeft!=="undefined"?this.scrollParent.scrollLeft:window.scrollX,y:t})}let n=this.host.offsetTop;let e=0;const i=this.blocks.length;while(e<i&&t>=n){n+=this.getBlockHeight(e);if(t<n){const t=[e,e+1];if(t.toString()!==this.activeBlocks.toString()){this.activeBlocks=t}this.primaryBlockIndex=e}e++}rt("scrollHandler",true)}))};this.handleResizeChange=t=>{this.tableWrapperEle.className="";let n=[`${b}__wrap`];if(t.target?.className)n=[...t.target.className.split(" "),...n];this.tableWrapperEle.classList.add(...n.filter((t=>!!t)))};this.customRenderer=undefined;this.type="table";this.caption=undefined;this.showCaption=false;this.loading=undefined;this.internalLoading=true;this.placeholderSize=5;this.rows=undefined;this.columns=[];this.headRender={pinned:"top"};this.rowRender=undefined;this.footRender={pinned:"bottom"};this.showFooter=false;this.perBlock=50;this.searchTerm=undefined;this.customFilterFn=undefined;this.customSortFn=undefined;this.defaultSort=true;this.virtualTotalItems=0;this.blocks=[];this.activeBlocks=[0,1];this.debounceSetLoading=d(this.debounceSetLoading.bind(this),50)}get _loading(){return this.loading!==undefined?this.loading:this.internalLoading}set _loading(t){if(this.loading!==undefined)return;this.debounceSetLoading(t)}debounceSetLoading(t){this.internalLoading=t}handleRowsChange(){if(!this.rows){this._loading=true;return}this._loading=true;Promise.resolve(this.rows).then((async t=>{await F(this.host,t);this.currentFilters="";this.currentSort="";await this.columnInit();if(!this.isReady)requestAnimationFrame((()=>this.setInitialBlockDimension()));this._loading=false;if(this.tablePinnedService)this.tablePinnedService.assessRows()}))}async handleColsChange(){await N(this.host,this.columns);if(this.isReady)this.columnInit()}get blocksLength(){return this.blocks.length}handleSearchTermChange(){this.searchStart()}virtualTotalItemsChangeHandler(){this.setBlocks()}get appliedFilters(){return this.filters}async resetSorting(){const t=this.columns.find((t=>!!t.order));if(!t)return;return this.sortStart(null,t.prop)}async addSort(t,n){const e=this.columns.find((n=>n.prop===t));if(!e)throw"Cannot find column with "+t;return this.sortStart(n,e.prop)}async resetFilters(){this.filters=[];return this.filterStart()}async addFilters(t,n=true){if(!n)this.filters=[];return this.filterStart(t,n)}async removeFilters(t){this.filters=this.filters.filter((n=>!t.includes(n.prop)));return this.filterStart()}async updateRow(t,n){this.rows.splice(n,1,t);this.handleRowsChange()}set measureEle(t){if(!t)return;const n=t.getBoundingClientRect().height;this.measureHeight=Math.abs(this.measureHeight-n)<5?this.measureHeight:n;this.unitHeight=t.querySelector("tr")?.getBoundingClientRect().height||this.unitHeight}get scrollParent(){return this._scrollParent}set scrollParent(t){if(t===this._scrollParent)return;if(this._scrollParent){(this._scrollParent===document.documentElement?document:this._scrollParent).removeEventListener("scroll",this.scrollHandler)}(t===document.documentElement?document:t).addEventListener("scroll",this.scrollHandler);this._scrollParent=t}get primaryBlockIndex(){return this._primaryBlockIndex}set primaryBlockIndex(t){if(this._primaryBlockIndex===t)return;this._primaryBlockIndex=t;this.nanoTblBlockRendered.emit({block:t,totalBlocks:this.blockElements.length})}get isReady(){return this._isReady}set isReady(t){if(t===this._isReady)return;this._isReady=t;if(this.isReady)requestAnimationFrame((()=>this.handleReady()))}handleReady(){const t=window.location.hash;if(t.length>1){try{const n=document.querySelector(t);if(n)n.scrollIntoView()}catch(t){}}this.nanoTblReady.emit()}sortComplete(t,n){this.columns=this.columns.map((e=>{if(e.prop===n)return{...e,order:t};return{...e,order:null}}));this.nanoTblAfterSort.emit({column:n,order:t});rt("sort",true)}async searchStart(){this._loading=true;const t=this.nanoTblBeforeSearch.emit({term:this.searchTerm});if(t.defaultPrevented)return;rt("search");this.scrollToTop();try{await j(this.host,this.searchTerm);this.nanoTblAfterSearch.emit({term:this.searchTerm});rt("search",true)}catch(t){console.warn("search failed",t)}finally{this._loading=false}}async filterStart(t,n=true){if(t){if(n){this.filters=[...this.filters.filter((n=>!t.find((t=>t.prop===n.prop)))),...t]}else{this.filters=t}}if(this.currentFilters===JSON.stringify(this.filters))return;this._loading=true;const e=this.nanoTblBeforeFilter.emit({filters:this.filters});if(e.defaultPrevented)return;rt("filter");this.currentFilters=JSON.stringify(this.filters);this.scrollToTop();if(this.customFilterFn){try{const t=await this.customFilterFn(this.filters);if(t===true){this.filterComplete();this._loading=false;return}}catch(t){console.warn("custom filter failed",t);this.currentFilters="";this._loading=false;return}}try{await D(this.host,this.filters);this.filterComplete()}catch(t){console.warn("filter failed",t)}finally{this._loading=false}}filterComplete(){this.columns=this.columns.map((t=>{const n=this.filters.find((n=>n.prop===t.prop));if(n&&(typeof n.filter!=="boolean"&&n.filter.length||typeof n.filter==="boolean"))t.filter=n.filter;else if(t.filter!==null&&t.filter!==undefined||!!t.filter&&typeof t.filter!=="boolean"&&!t.filter.length)t.filter=undefined;return t}));this.nanoTblAfterFilter.emit({filters:this.filters});rt("filter",true)}scrollToTop(t){const n=this.scrollParent.style?.scrollBehavior;const e=this.scrollParent.scrollLeft;this.scrollParent.style.scrollBehavior="auto";if(this.topAnchorEle&&!X(this.topAnchorEle,.1)){this.host.scrollIntoView()}if(t&&!X(t,1))setTimeout((()=>t.scrollIntoView({block:"start"})),500);if(e)this.scrollParent.scrollLeft=e;if(n)this.scrollParent.style.scrollBehavior=n;this.scrollHandler()}setMeasureElement(){return new Promise((t=>{r((()=>{this.measureEle=this.blockElements.find((t=>!t?.classList?.contains(`${b}__inactive`)));t()}))}))}setInitialBlockDimension(){if(!this.blockElements?.length)return;rt("blockDims");const t=async()=>{await this.setMeasureElement();if(this.unitHeight)return true;return false};const n=new Promise((async n=>{if(await t())n();else{const e=new IntersectionObserver((async()=>{if(await t()){n();e.disconnect()}}),{root:this.scrollParent});e.observe(this.tableEle)}}));n.then((()=>{rt("blockDims",true);rt("init",true);requestAnimationFrame((()=>this.isReady=true))}))}async columnInit(){this.filters=this.columns.filter((t=>t.filter!==undefined&&t.filter!==null)).map((t=>{const{filter:n,prop:e}=t;return{filter:n,prop:e}}));if(this.searchTerm){await this.searchStart()}if(this.filters.length){await this.filterStart()}const t=this.columns.find((t=>!!t.order));if(!!t){await this.sortStart(t.order,t.prop)}if(this.tablePinnedService)this.tablePinnedService.assessCols()}setBlocks(){const t=this.store.data.state.rows;if(!t.length){this.blocks=[];return}rt("setBlocks");let n=1;const e=this.virtualTotalItems>t.length?this.virtualTotalItems:t.length;let i=[];const o=[];for(n;n<=e;n++){i.push(this.store.data.state.rows[n-1]||{__uuid:""});if(n%this.perBlock===0){o.push({rows:i,__uuid:c(i.map((t=>t.__uuid)).join())});i=[]}}if(i.length){o.push({rows:i,__uuid:c(i.map((t=>t.__uuid)).join())})}this.blocks=o;rt("setBlocks",true)}getBlockHeight(t){if(this.blockHeights.length){const n=this.blockHeights.find((n=>n.blockIndex===t));if(n&&n.height)return n.height}const n=this.blocks[t].rows.length;if(n===this.perBlock&&this.measureHeight){return this.measureHeight}return this.unitHeight?this.unitHeight*n:100}setBlockHeight(){this.activeBlocks.forEach((t=>{const n=this.blockElements[t];if(!n)return;r((()=>{if(n.classList.contains(`${b}__inactive`))return;const e=n.getBoundingClientRect().height;const i=this.blockHeights.findIndex((n=>n.blockIndex===t));if(i>-1){this.blockHeights[i]={height:e,blockIndex:t}}else this.blockHeights.push({height:e,blockIndex:t})}))}))}processSlots(){if(!this.caption&&!this.host.querySelector('[slot="caption"]')){console.error("For accessibility you must set a `caption` prop or use the `caption` slot")}}setupActiveWatcher(){if(!this.host||!this.scrollParent||!this.store)return;if(this.activeWatcherIo){this.activeWatcherIo.disconnect();this.activeWatcherIo=undefined}const t=this.activeWatcherIo=new IntersectionObserver((async([t])=>{if(t.isIntersecting)this.store.general.state.isActive=true;else this.store.general.state.isActive=false}),{root:this.scrollParent,threshold:0});t.observe(this.host)}async componentWillLoad(){rt("init");this.store=await A(this.host,this.columns,this.scrollParent,this.isReady);await this.handleRowsChange();this.store.general.onChange("isActive",(()=>{this.scrollHandler()}));this.store.data.onChange("rows",(()=>this.setBlocks()));this.processSlots();this.setBlocks();this.scrollParent=p(this.host);this.setupActiveWatcher()}connectedCallback(){this.scrollParent=p(this.host);this.setupActiveWatcher()}componentDidLoad(){this.setInitialBlockDimension();if(!this.tablePinnedService){this.tablePinnedService=new it(this.tableEle,this.scrollParent)}}componentShouldUpdate(t,n,e){if(["rows","columns"].includes(e))return false}componentWillRender(){rt("render")}componentDidRender(){this.setMeasureElement().then((()=>this.setBlockHeight()));rt("render",true)}disconnectedCallback(){if(!this.activeWatcherIo)return;this.activeWatcherIo.disconnect();this.activeWatcherIo=undefined;(this.scrollParent===document.documentElement?document:this.scrollParent).removeEventListener("scroll",this.scrollHandler)}render(){this.blockElements=[];return n(h,null,n("div",{class:`${b}__top-anchor`,ref:t=>this.topAnchorEle=t}," "),n("nano-resize-observe",{states:"576w sm, 768w md",class:"sm md",onNanoResizeStateChange:this.handleResizeChange,onNanoResize:()=>{if(this.tablePinnedService)this.tablePinnedService.onResize()}}),n("div",{class:`${b}__wrap sm md`,ref:t=>this.tableWrapperEle=t,"aria-labelledby":"nano-table-caption-"+this.renderId,tabindex:this.type==="grid"?"0":undefined},n("nano-progress-bar",{indeterminate:true,class:{[`${b}__progress-bar`]:true,[`${b}__progress-bar--show`]:this._loading}}),n("table",{role:this.type==="grid"?"grid":undefined,"aria-rowcount":this.store.data.state.rows.length,"aria-colcount":this.store.config.state.columns.length,class:`${b}`,ref:t=>this.tableEle=t,id:"nano-table-"+this.renderId},n("caption",{class:{[`${b}__caption`]:true,[`${b}__caption--hide`]:!this.showCaption},id:"nano-table-caption-"+this.renderId},n("slot",{name:"caption"},this.caption)),n("thead",null,n(nt,{rowRenderer:this.headRender},this.store.config.state.columns.map((t=>[n(U,{column:t,headRenderer:this.headRender,onColumnSortClick:this.sortStart,defaults:{sortable:this.defaultSort}})])))),this._loading&&!this.blocks.length&&n("tbody",{class:`${b}__active ${b}__loading`},[...Array(10).keys()].map((t=>n("tr",null,this.store.config.state.columns.map(((e,i)=>n(V,{rowIndex:t,colIndex:i,nestedContent:()=>n("nano-skeleton",null)}))))))),n("tr",{hidden:!!this._loading||!!this.blocks.length},n("th",{class:`${b}__th`,colSpan:this.store.config.state.columns.length},n("div",{class:"nano-tbl__cell-content nano-tbl__cell-content--no-result"},n("slot",{name:"no-results"},"No results found")))),this.blocks.map(((t,e)=>n("tbody",{key:t.__uuid,id:`tbody-${this.renderId}-${e}`,ref:t=>{this.blockElements.push(t)},class:{[`${b}__inactive`]:!this.activeBlocks.includes(e),[`${b}__active`]:this.activeBlocks.includes(e)}},this.activeBlocks.includes(e)?t.rows.map(((t,i)=>{const o=e>0?e*this.perBlock+i:i;return n(tt,{rowRenderer:this.rowRender,rowModel:t,rowIndex:o},this.store.config.state.columns.map(((t,e)=>n(V,{rowIndex:o,colIndex:e}))))})):n("tr",{class:`${b}__tr--placeholder`},n("td",{colSpan:this.store.config.state.columns.length,style:{height:this.getBlockHeight(e)+"px"}}))))),this.showFooter&&n("tfoot",null,n(nt,{rowRenderer:this.footRender},this.store.config.state.columns.map((t=>[n(U,{column:t,headRenderer:this.footRender,onColumnSortClick:this.sortStart,defaults:{sortable:this.defaultSort}})]))))),!!this.blocks.length&&n("nano-spinner",{type:"circle",class:{[`${b}__spinner`]:true,[`${b}__spinner--show`]:this._loading}})))}get host(){return i(this)}static get watchers(){return{rows:["handleRowsChange"],columns:["handleColsChange"],searchTerm:["handleSearchTermChange"],virtualTotalItems:["virtualTotalItemsChangeHandler"]}}};lt.style=ot;export{lt as T,v as c};
|
5
|
-
//# sourceMappingURL=nano-table-c85a2fd3.js.map
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/*!
|
2
|
-
* Web Components for Nanopore digital Web Apps
|
3
|
-
*/
|
4
|
-
import{a as t}from"./dom-8599fac1.js";const o=new Set;function s(t){o.add(t);document.body.classList.add("nano-scroll-lock")}function c(t){o.delete(t);if(o.size===0){document.body.classList.remove("nano-scroll-lock")}}function n(t,o,s=false){if(!s){try{t.scrollTo({left:o,behavior:"smooth"})}catch(s){t.scrollLeft=o}return}try{t.scrollTo({top:o,behavior:"smooth"})}catch(s){t.scrollTop=o}}function e(o,s,c="vertical",e="start"){const i=t(o,s);const r=i.top+s.scrollTop;const a=i.left+s.scrollLeft;const f=s.scrollLeft;const l=s.scrollLeft+s.offsetWidth;const u=s.scrollTop;const h=s.scrollTop+s.offsetHeight;if(c==="horizontal"||c==="both"){if(e==="start"){if(a<f)n(s,a);else if(a+o.clientWidth>l)n(s,a-s.offsetWidth+o.clientWidth)}else{n(s,s.scrollLeft+i.left-(s.offsetWidth/2-o.offsetWidth/2))}}if(c==="vertical"||c==="both"){if(e==="start"){if(r<u)n(s,r,true);else if(r+o.clientHeight>h){n(s,r-s.offsetHeight+o.clientHeight,true)}}else{n(s,s.scrollTop+i.top-(s.offsetHeight/2-o.offsetHeight/2),true)}}}export{s as l,e as s,c as u};
|
5
|
-
//# sourceMappingURL=scroll-ac332213.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["locks","Set","lockBodyScrolling","lockingEl","add","document","body","classList","unlockBodyScrolling","delete","size","remove","scrollTo","element","scrollAmt","vertical","left","behavior","e","scrollLeft","top","scrollTop","scrollIntoView","container","direction","position","offset","getOffset","offsetTop","offsetLeft","minX","maxX","offsetWidth","minY","maxY","offsetHeight","clientWidth","clientHeight"],"sources":["./src/utils/scroll.ts"],"sourcesContent":["import { getOffset } from './dom';\n\nconst locks = new Set();\n\n/**\n * Prevents body scrolling. Keeps track of which elements requested a lock so multiple levels of locking are possible\n * without premature unlocking.\n */\nexport function lockBodyScrolling(lockingEl: HTMLElement) {\n locks.add(lockingEl);\n document.body.classList.add('nano-scroll-lock');\n}\n\n/**\n * Unlocks body scrolling. Scrolling will only be unlocked once all elements that requested a lock call this method.\n */\nexport function unlockBodyScrolling(lockingEl: HTMLElement) {\n locks.delete(lockingEl);\n\n if (locks.size === 0) {\n document.body.classList.remove('nano-scroll-lock');\n }\n}\n\nfunction scrollTo(\n element: HTMLElement,\n scrollAmt: number,\n vertical: boolean = false\n) {\n if (!vertical) {\n try {\n element.scrollTo({ left: scrollAmt, behavior: 'smooth' });\n } catch (e) {\n element.scrollLeft = scrollAmt;\n }\n return;\n }\n try {\n element.scrollTo({ top: scrollAmt, behavior: 'smooth' });\n } catch (e) {\n element.scrollTop = scrollAmt;\n }\n}\n\n/**\n * Scrolls an element into view *of its parent container*.\n * Note to future me - cannot use native `scrollIntoView`\n * 'cos it will move the whole window\n * (vertically even though we only care about parent).\n * If the element is already in view, nothing will happen.\n */\nexport function scrollIntoView(\n element: HTMLElement,\n container: HTMLElement,\n direction: 'horizontal' | 'vertical' | 'both' = 'vertical',\n position: 'center' | 'start' = 'start'\n) {\n const offset = getOffset(element, container);\n const offsetTop = offset.top + container.scrollTop;\n const offsetLeft = offset.left + container.scrollLeft;\n const minX = container.scrollLeft;\n const maxX = container.scrollLeft + container.offsetWidth;\n const minY = container.scrollTop;\n const maxY = container.scrollTop + container.offsetHeight;\n\n if (direction === 'horizontal' || direction === 'both') {\n if (position === 'start') {\n if (offsetLeft < minX) scrollTo(container, offsetLeft);\n else if (offsetLeft + element.clientWidth > maxX)\n scrollTo(\n container,\n offsetLeft - container.offsetWidth + element.clientWidth\n );\n } else {\n scrollTo(\n container,\n container.scrollLeft +\n offset.left -\n (container.offsetWidth / 2 - element.offsetWidth / 2)\n );\n }\n }\n\n if (direction === 'vertical' || direction === 'both') {\n if (position === 'start') {\n if (offsetTop < minY) scrollTo(container, offsetTop, true);\n else if (offsetTop + element.clientHeight > maxY) {\n scrollTo(\n container,\n offsetTop - container.offsetHeight + element.clientHeight,\n true\n );\n }\n } else {\n scrollTo(\n container,\n container.scrollTop +\n offset.top -\n (container.offsetHeight / 2 - element.offsetHeight / 2),\n true\n );\n }\n }\n}\n"],"mappings":";;;sCAEA,MAAMA,EAAQ,IAAIC,I,SAMFC,EAAkBC,GAChCH,EAAMI,IAAID,GACVE,SAASC,KAAKC,UAAUH,IAAI,mBAC9B,C,SAKgBI,EAAoBL,GAClCH,EAAMS,OAAON,GAEb,GAAIH,EAAMU,OAAS,EAAG,CACpBL,SAASC,KAAKC,UAAUI,OAAO,mB,CAEnC,CAEA,SAASC,EACPC,EACAC,EACAC,EAAoB,OAEpB,IAAKA,EAAU,CACb,IACEF,EAAQD,SAAS,CAAEI,KAAMF,EAAWG,SAAU,U,CAC9C,MAAOC,GACPL,EAAQM,WAAaL,C,CAEvB,M,CAEF,IACED,EAAQD,SAAS,CAAEQ,IAAKN,EAAWG,SAAU,U,CAC7C,MAAOC,GACPL,EAAQQ,UAAYP,C,CAExB,C,SASgBQ,EACdT,EACAU,EACAC,EAAgD,WAChDC,EAA+B,SAE/B,MAAMC,EAASC,EAAUd,EAASU,GAClC,MAAMK,EAAYF,EAAON,IAAMG,EAAUF,UACzC,MAAMQ,EAAaH,EAAOV,KAAOO,EAAUJ,WAC3C,MAAMW,EAAOP,EAAUJ,WACvB,MAAMY,EAAOR,EAAUJ,WAAaI,EAAUS,YAC9C,MAAMC,EAAOV,EAAUF,UACvB,MAAMa,EAAOX,EAAUF,UAAYE,EAAUY,aAE7C,GAAIX,IAAc,cAAgBA,IAAc,OAAQ,CACtD,GAAIC,IAAa,QAAS,CACxB,GAAII,EAAaC,EAAMlB,EAASW,EAAWM,QACtC,GAAIA,EAAahB,EAAQuB,YAAcL,EAC1CnB,EACEW,EACAM,EAAaN,EAAUS,YAAcnB,EAAQuB,Y,KAE5C,CACLxB,EACEW,EACAA,EAAUJ,WACRO,EAAOV,MACNO,EAAUS,YAAc,EAAInB,EAAQmB,YAAc,G,EAK3D,GAAIR,IAAc,YAAcA,IAAc,OAAQ,CACpD,GAAIC,IAAa,QAAS,CACxB,GAAIG,EAAYK,EAAMrB,EAASW,EAAWK,EAAW,WAChD,GAAIA,EAAYf,EAAQwB,aAAeH,EAAM,CAChDtB,EACEW,EACAK,EAAYL,EAAUY,aAAetB,EAAQwB,aAC7C,K,MAGC,CACLzB,EACEW,EACAA,EAAUF,UACRK,EAAON,KACNG,EAAUY,aAAe,EAAItB,EAAQsB,aAAe,GACvD,K,EAIR,Q"}
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/*!
|
2
|
-
* Web Components for Nanopore digital Web Apps
|
3
|
-
*/
|
4
|
-
import{c as t}from"./nano-table-c85a2fd3.js";import"./index-9695db0a.js";import"./math-c02ddfda.js";import"./throttle-ac4fcefa.js";import"./scroll-parent-bab1cbf7.js";import"./index-3003356f.js";const o="table.worker";const r="stencil.table.worker";const a=new URL("table.worker-4aad752d.js",import.meta.url).href;const e=new Blob(['importScripts("'+a+'")'],{type:"text/javascript"});const s=URL.createObjectURL(e);const c=t(s,o,r);URL.revokeObjectURL(s);export{c as worker,r as workerMsgId,o as workerName,a as workerPath};
|
5
|
-
//# sourceMappingURL=table.worker-761fba3e.js.map
|
File without changes
|