@nanoporetech-digital/components 6.1.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 +31 -0
- package/dist/cjs/index-14451c95.js +6 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nano-alert.cjs.entry.js +1 -1
- package/dist/cjs/nano-animation.cjs.entry.js +1209 -0
- package/dist/cjs/nano-animation.cjs.entry.js.map +1 -0
- package/dist/cjs/nano-components.cjs.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-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-hero.cjs.entry.js +1 -1
- package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-intersection-observe.cjs.entry.js +131 -0
- package/dist/cjs/nano-intersection-observe.cjs.entry.js.map +1 -0
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js +1 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-sticker.cjs.entry.js +2 -27
- package/dist/cjs/nano-sticker.cjs.entry.js.map +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-6f48a747.js → nano-table-9f615d5c.js} +5 -25
- package/dist/cjs/nano-table-9f615d5c.js.map +1 -0
- package/dist/cjs/nano-table.cjs.entry.js +2 -1
- package/dist/cjs/nano-table.cjs.entry.js.map +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/scroll-parent-87393de2.js +31 -0
- package/dist/cjs/scroll-parent-87393de2.js.map +1 -0
- package/dist/cjs/{table.worker-f3e54773.js → table.worker-6b65a9ea.js} +3 -2
- package/dist/cjs/table.worker-6b65a9ea.js.map +1 -0
- package/dist/cjs/transitions-20fce787.js.map +1 -1
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/components/animation/animation.js +547 -0
- package/dist/collection/components/animation/animation.js.map +1 -0
- package/dist/collection/components/animation/animations/attention_seekers/bounce.js +43 -0
- package/dist/collection/components/animation/animations/attention_seekers/flash.js +7 -0
- package/dist/collection/components/animation/animations/attention_seekers/headShake.js +8 -0
- package/dist/collection/components/animation/animations/attention_seekers/heartBeat.js +7 -0
- package/dist/collection/components/animation/animations/attention_seekers/jello.js +15 -0
- package/dist/collection/components/animation/animations/attention_seekers/pulse.js +5 -0
- package/dist/collection/components/animation/animations/attention_seekers/rubberBand.js +9 -0
- package/dist/collection/components/animation/animations/attention_seekers/shake.js +13 -0
- package/dist/collection/components/animation/animations/attention_seekers/shakeX.js +13 -0
- package/dist/collection/components/animation/animations/attention_seekers/shakeY.js +13 -0
- package/dist/collection/components/animation/animations/attention_seekers/swing.js +7 -0
- package/dist/collection/components/animation/animations/attention_seekers/tada.js +13 -0
- package/dist/collection/components/animation/animations/attention_seekers/wobble.js +18 -0
- package/dist/collection/components/animation/animations/back_entrances/backInDown.js +5 -0
- package/dist/collection/components/animation/animations/back_entrances/backInLeft.js +5 -0
- package/dist/collection/components/animation/animations/back_entrances/backInRight.js +5 -0
- package/dist/collection/components/animation/animations/back_entrances/backInUp.js +5 -0
- package/dist/collection/components/animation/animations/back_exits/backOutDown.js +5 -0
- package/dist/collection/components/animation/animations/back_exits/backOutLeft.js +5 -0
- package/dist/collection/components/animation/animations/back_exits/backOutRight.js +5 -0
- package/dist/collection/components/animation/animations/back_exits/backOutUp.js +5 -0
- package/dist/collection/components/animation/animations/bouncing_entrances/bounceIn.js +14 -0
- package/dist/collection/components/animation/animations/bouncing_entrances/bounceInDown.js +20 -0
- package/dist/collection/components/animation/animations/bouncing_entrances/bounceInLeft.js +16 -0
- package/dist/collection/components/animation/animations/bouncing_entrances/bounceInRight.js +16 -0
- package/dist/collection/components/animation/animations/bouncing_entrances/bounceInUp.js +16 -0
- package/dist/collection/components/animation/animations/bouncing_exits/bounceOut.js +6 -0
- package/dist/collection/components/animation/animations/bouncing_exits/bounceOutDown.js +14 -0
- package/dist/collection/components/animation/animations/bouncing_exits/bounceOutLeft.js +12 -0
- package/dist/collection/components/animation/animations/bouncing_exits/bounceOutRight.js +8 -0
- package/dist/collection/components/animation/animations/bouncing_exits/bounceOutUp.js +18 -0
- package/dist/collection/components/animation/animations/easings/easings.js +35 -0
- package/dist/collection/components/animation/animations/easings/easings.js.map +1 -0
- package/dist/collection/components/animation/animations/fading_entrances/fadeIn.js +4 -0
- package/dist/collection/components/animation/animations/fading_entrances/fadeInBottomLeft.js +4 -0
- package/dist/collection/components/animation/animations/fading_entrances/fadeInBottomRight.js +4 -0
- package/dist/collection/components/animation/animations/fading_entrances/fadeInDown.js +4 -0
- package/dist/collection/components/animation/animations/fading_entrances/fadeInDownBig.js +4 -0
- package/dist/collection/components/animation/animations/fading_entrances/fadeInLeft.js +4 -0
- package/dist/collection/components/animation/animations/fading_entrances/fadeInLeftBig.js +4 -0
- package/dist/collection/components/animation/animations/fading_entrances/fadeInRight.js +4 -0
- package/dist/collection/components/animation/animations/fading_entrances/fadeInRightBig.js +4 -0
- package/dist/collection/components/animation/animations/fading_entrances/fadeInTopLeft.js +4 -0
- package/dist/collection/components/animation/animations/fading_entrances/fadeInTopRight.js +4 -0
- package/dist/collection/components/animation/animations/fading_entrances/fadeInUp.js +4 -0
- package/dist/collection/components/animation/animations/fading_entrances/fadeInUpBig.js +4 -0
- package/dist/collection/components/animation/animations/fading_exits/fadeOut.js +4 -0
- package/dist/collection/components/animation/animations/fading_exits/fadeOutBottomLeft.js +4 -0
- package/dist/collection/components/animation/animations/fading_exits/fadeOutBottomRight.js +4 -0
- package/dist/collection/components/animation/animations/fading_exits/fadeOutDown.js +4 -0
- package/dist/collection/components/animation/animations/fading_exits/fadeOutDownBig.js +4 -0
- package/dist/collection/components/animation/animations/fading_exits/fadeOutLeft.js +4 -0
- package/dist/collection/components/animation/animations/fading_exits/fadeOutLeftBig.js +4 -0
- package/dist/collection/components/animation/animations/fading_exits/fadeOutRight.js +4 -0
- package/dist/collection/components/animation/animations/fading_exits/fadeOutRightBig.js +4 -0
- package/dist/collection/components/animation/animations/fading_exits/fadeOutTopLeft.js +4 -0
- package/dist/collection/components/animation/animations/fading_exits/fadeOutTopRight.js +4 -0
- package/dist/collection/components/animation/animations/fading_exits/fadeOutUp.js +4 -0
- package/dist/collection/components/animation/animations/fading_exits/fadeOutUpBig.js +4 -0
- package/dist/collection/components/animation/animations/flippers/flip.js +32 -0
- package/dist/collection/components/animation/animations/flippers/flipInX.js +20 -0
- package/dist/collection/components/animation/animations/flippers/flipInY.js +20 -0
- package/dist/collection/components/animation/animations/flippers/flipOutX.js +13 -0
- package/dist/collection/components/animation/animations/flippers/flipOutY.js +13 -0
- package/dist/collection/components/animation/animations/index.js +203 -0
- package/dist/collection/components/animation/animations/index.js.map +1 -0
- package/dist/collection/components/animation/animations/lightspeed/lightSpeedInLeft.js +10 -0
- package/dist/collection/components/animation/animations/lightspeed/lightSpeedInRight.js +10 -0
- package/dist/collection/components/animation/animations/lightspeed/lightSpeedOutLeft.js +8 -0
- package/dist/collection/components/animation/animations/lightspeed/lightSpeedOutRight.js +8 -0
- package/dist/collection/components/animation/animations/rotating_entrances/rotateIn.js +4 -0
- package/dist/collection/components/animation/animations/rotating_entrances/rotateInDownLeft.js +4 -0
- package/dist/collection/components/animation/animations/rotating_entrances/rotateInDownRight.js +4 -0
- package/dist/collection/components/animation/animations/rotating_entrances/rotateInUpLeft.js +4 -0
- package/dist/collection/components/animation/animations/rotating_entrances/rotateInUpRight.js +4 -0
- package/dist/collection/components/animation/animations/rotating_exits/rotateOut.js +4 -0
- package/dist/collection/components/animation/animations/rotating_exits/rotateOutDownLeft.js +4 -0
- package/dist/collection/components/animation/animations/rotating_exits/rotateOutDownRight.js +4 -0
- package/dist/collection/components/animation/animations/rotating_exits/rotateOutUpLeft.js +4 -0
- package/dist/collection/components/animation/animations/rotating_exits/rotateOutUpRight.js +4 -0
- package/dist/collection/components/animation/animations/sliding_entrances/slideInDown.js +4 -0
- package/dist/collection/components/animation/animations/sliding_entrances/slideInLeft.js +4 -0
- package/dist/collection/components/animation/animations/sliding_entrances/slideInRight.js +4 -0
- package/dist/collection/components/animation/animations/sliding_entrances/slideInUp.js +4 -0
- package/dist/collection/components/animation/animations/sliding_exits/slideOutDown.js +4 -0
- package/dist/collection/components/animation/animations/sliding_exits/slideOutLeft.js +4 -0
- package/dist/collection/components/animation/animations/sliding_exits/slideOutRight.js +4 -0
- package/dist/collection/components/animation/animations/sliding_exits/slideOutUp.js +4 -0
- package/dist/collection/components/animation/animations/specials/hinge.js +18 -0
- package/dist/collection/components/animation/animations/specials/jackInTheBox.js +11 -0
- package/dist/collection/components/animation/animations/specials/rollIn.js +8 -0
- package/dist/collection/components/animation/animations/specials/rollOut.js +8 -0
- package/dist/collection/components/animation/animations/zooming_entrances/zoomIn.js +4 -0
- package/dist/collection/components/animation/animations/zooming_entrances/zoomInDown.js +14 -0
- package/dist/collection/components/animation/animations/zooming_entrances/zoomInLeft.js +14 -0
- package/dist/collection/components/animation/animations/zooming_entrances/zoomInRight.js +14 -0
- package/dist/collection/components/animation/animations/zooming_entrances/zoomInUp.js +14 -0
- package/dist/collection/components/animation/animations/zooming_exits/zoomOut.js +5 -0
- package/dist/collection/components/animation/animations/zooming_exits/zoomOutDown.js +14 -0
- package/dist/collection/components/animation/animations/zooming_exits/zoomOutLeft.js +12 -0
- package/dist/collection/components/animation/animations/zooming_exits/zoomOutRight.js +12 -0
- package/dist/collection/components/animation/animations/zooming_exits/zoomOutUp.js +14 -0
- 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/hero/hero.css +0 -1
- package/dist/collection/components/intersection-observe/intersection-observe.js +256 -0
- package/dist/collection/components/intersection-observe/intersection-observe.js.map +1 -0
- package/dist/collection/components/resize-observe/resize-observe.js +1 -1
- package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
- package/dist/collection/components/select/select.js +5 -5
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/sticker/sticker.js +2 -27
- package/dist/collection/components/sticker/sticker.js.map +1 -1
- package/dist/collection/components/table/table.js +2 -1
- package/dist/collection/components/table/table.js.map +1 -1
- package/dist/collection/components/table/table.utils.js +0 -21
- package/dist/collection/components/table/table.utils.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-parent.js +26 -0
- package/dist/collection/utils/scroll-parent.js.map +1 -0
- 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/index.d.ts +2 -1
- package/dist/components/index.js +2 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/{nano-aspect-ratio.d.ts → nano-animation.d.ts} +4 -4
- package/dist/components/nano-animation.js +1239 -0
- package/dist/components/nano-animation.js.map +1 -0
- package/dist/components/nano-dialog.js +21 -4
- package/dist/components/nano-dialog.js.map +1 -1
- package/dist/components/nano-hero.js +1 -1
- package/dist/components/nano-hero.js.map +1 -1
- package/dist/components/nano-intersection-observe.d.ts +11 -0
- package/dist/components/nano-intersection-observe.js +149 -0
- package/dist/components/nano-intersection-observe.js.map +1 -0
- package/dist/components/nano-tab-group.js +2 -3
- package/dist/components/nano-tab-group.js.map +1 -1
- package/dist/components/resize-observe.js +1 -1
- package/dist/components/resize-observe.js.map +1 -1
- package/dist/components/scroll-parent.js +29 -0
- package/dist/components/scroll-parent.js.map +1 -0
- package/dist/components/scroll.js +39 -2
- package/dist/components/scroll.js.map +1 -1
- package/dist/components/select.js.map +1 -1
- package/dist/components/sticker.js +2 -27
- package/dist/components/sticker.js.map +1 -1
- package/dist/components/table.js +1 -21
- package/dist/components/table.js.map +1 -1
- package/dist/components/transitions.js.map +1 -1
- package/dist/esm/index-9695db0a.js +6 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/nano-alert.entry.js +1 -1
- package/dist/esm/nano-animation.entry.js +1205 -0
- package/dist/esm/nano-animation.entry.js.map +1 -0
- package/dist/esm/nano-components.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-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-hero.entry.js +1 -1
- package/dist/esm/nano-hero.entry.js.map +1 -1
- package/dist/esm/nano-intersection-observe.entry.js +127 -0
- package/dist/esm/nano-intersection-observe.entry.js.map +1 -0
- package/dist/esm/nano-resize-observe_2.entry.js +1 -1
- package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/esm/nano-sticker.entry.js +2 -27
- package/dist/esm/nano-sticker.entry.js.map +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-fc01a927.js → nano-table-66bee831.js} +3 -23
- package/dist/esm/nano-table-66bee831.js.map +1 -0
- package/dist/esm/nano-table.entry.js +2 -1
- package/dist/esm/nano-table.entry.js.map +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/scroll-parent-bab1cbf7.js +29 -0
- package/dist/esm/scroll-parent-bab1cbf7.js.map +1 -0
- package/dist/esm/{table.worker-c70f6379.js → table.worker-936e6d51.js} +3 -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-animation.entry.js +5 -0
- package/dist/nano-components/nano-animation.entry.js.map +1 -0
- package/dist/nano-components/nano-components.css +1 -1
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/nano-components.esm.js.map +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-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/nano-components/nano-hero.entry.js +1 -1
- package/dist/nano-components/nano-hero.entry.js.map +1 -1
- package/dist/nano-components/nano-intersection-observe.entry.js +5 -0
- package/dist/nano-components/nano-intersection-observe.entry.js.map +1 -0
- package/dist/nano-components/nano-resize-observe_2.entry.js +1 -1
- package/dist/nano-components/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/nano-components/nano-sticker.entry.js +1 -1
- package/dist/nano-components/nano-sticker.entry.js.map +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-66bee831.js.map +1 -0
- 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/scroll-parent-bab1cbf7.js +5 -0
- package/dist/nano-components/scroll-parent-bab1cbf7.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/dist/types/components/animation/animation.d.ts +74 -0
- package/dist/types/components/animation/animations/easings/easings.d.ts +31 -0
- package/dist/types/components/animation/animations/index.d.ts +101 -0
- package/dist/types/components/intersection-observe/intersection-observe.d.ts +45 -0
- package/dist/types/components/select/select.d.ts +2 -4
- package/dist/types/components/sticker/sticker.d.ts +0 -5
- package/dist/types/components/table/table.utils.d.ts +0 -6
- package/dist/types/components.d.ts +209 -42
- package/dist/types/interface.d.ts +6 -2
- package/dist/types/utils/scroll-parent.d.ts +6 -0
- package/docs-json.json +945 -31
- package/docs-vscode.json +488 -8
- package/hydrate/index.js +1568 -235
- package/package.json +2 -2
- package/dist/cjs/nano-aspect-ratio.cjs.entry.js +0 -53
- package/dist/cjs/nano-aspect-ratio.cjs.entry.js.map +0 -1
- package/dist/cjs/nano-table-6f48a747.js.map +0 -1
- package/dist/cjs/scroll-e8c21f80.js.map +0 -1
- package/dist/cjs/table.worker-f3e54773.js.map +0 -1
- package/dist/collection/components/aspect-ratio/aspect-ratio.css +0 -38
- package/dist/collection/components/aspect-ratio/aspect-ratio.js +0 -106
- package/dist/collection/components/aspect-ratio/aspect-ratio.js.map +0 -1
- package/dist/components/nano-aspect-ratio.js +0 -70
- package/dist/components/nano-aspect-ratio.js.map +0 -1
- package/dist/esm/nano-aspect-ratio.entry.js +0 -49
- package/dist/esm/nano-aspect-ratio.entry.js.map +0 -1
- package/dist/esm/nano-table-fc01a927.js.map +0 -1
- package/dist/esm/scroll-ac332213.js.map +0 -1
- package/dist/esm/table.worker-c70f6379.js.map +0 -1
- package/dist/nano-components/nano-aspect-ratio.entry.js +0 -5
- package/dist/nano-components/nano-aspect-ratio.entry.js.map +0 -1
- package/dist/nano-components/nano-table-fc01a927.js +0 -5
- package/dist/nano-components/nano-table-fc01a927.js.map +0 -1
- 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-c70f6379.js +0 -5
- package/dist/types/components/aspect-ratio/aspect-ratio.d.ts +0 -19
- /package/dist/nano-components/{table.worker-c70f6379.js.map → table.worker-936e6d51.js.map} +0 -0
@@ -0,0 +1,26 @@
|
|
1
|
+
/*!
|
2
|
+
* Web Components for Nanopore digital Web Apps
|
3
|
+
*/
|
4
|
+
/**
|
5
|
+
* Attempts to find the closest scrolling parental element
|
6
|
+
* @param element - the element from which to traverse up the DOM
|
7
|
+
* @returns - the closest scrolling parental element
|
8
|
+
*/
|
9
|
+
export function findScrollParent(element) {
|
10
|
+
let style = getComputedStyle(element);
|
11
|
+
const excludeStaticParent = style.position === 'absolute';
|
12
|
+
const overflowRegex = /(auto|scroll)/;
|
13
|
+
if (style.position === 'fixed')
|
14
|
+
return document.documentElement;
|
15
|
+
for (let parent = element; (parent = parent.parentElement);) {
|
16
|
+
style = getComputedStyle(parent);
|
17
|
+
if (excludeStaticParent && style.position === 'static') {
|
18
|
+
continue;
|
19
|
+
}
|
20
|
+
if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) {
|
21
|
+
return parent;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
return document.documentElement;
|
25
|
+
}
|
26
|
+
//# sourceMappingURL=scroll-parent.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"scroll-parent.js","sourceRoot":"","sources":["../../src/utils/scroll-parent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAoB;EACnD,IAAI,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;EACtC,MAAM,mBAAmB,GAAG,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC;EAC1D,MAAM,aAAa,GAAG,eAAe,CAAC;EAEtC,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO;IAAE,OAAO,QAAQ,CAAC,eAAe,CAAC;EAEhE,KAAK,IAAI,MAAM,GAAG,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,GAAI;IAC5D,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,mBAAmB,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE;MACtD,SAAS;KACV;IACD,IACE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,EACtE;MACA,OAAO,MAAM,CAAC;KACf;GACF;EACD,OAAO,QAAQ,CAAC,eAAe,CAAC;AAClC,CAAC","sourcesContent":["/**\n * Attempts to find the closest scrolling parental element\n * @param element - the element from which to traverse up the DOM\n * @returns - the closest scrolling parental element\n */\nexport function findScrollParent(element: HTMLElement) {\n let style = getComputedStyle(element);\n const excludeStaticParent = style.position === 'absolute';\n const overflowRegex = /(auto|scroll)/;\n\n if (style.position === 'fixed') return document.documentElement;\n\n for (let parent = element; (parent = parent.parentElement); ) {\n style = getComputedStyle(parent);\n if (excludeStaticParent && style.position === 'static') {\n continue;\n }\n if (\n overflowRegex.test(style.overflow + style.overflowY + style.overflowX)\n ) {\n return parent;\n }\n }\n return document.documentElement;\n}\n"]}
|
@@ -2,6 +2,24 @@
|
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
4
|
import { getOffset } from './dom';
|
5
|
+
/**
|
6
|
+
* @returns the width of the document's scrollbar
|
7
|
+
*/
|
8
|
+
function getScrollbarWidth() {
|
9
|
+
const documentWidth = document.documentElement.clientWidth;
|
10
|
+
return Math.abs(window.innerWidth - documentWidth);
|
11
|
+
}
|
12
|
+
/**
|
13
|
+
* Used in conjunction with `scrollbarWidth` to set proper body padding in case the user has padding already on the `<body>` element.
|
14
|
+
* @returns body's computed css padding
|
15
|
+
*/
|
16
|
+
function getExistingBodyPadding() {
|
17
|
+
const padding = Number(getComputedStyle(document.body).paddingRight.replace(/px/, ''));
|
18
|
+
if (isNaN(padding) || !padding) {
|
19
|
+
return 0;
|
20
|
+
}
|
21
|
+
return padding;
|
22
|
+
}
|
5
23
|
const locks = new Set();
|
6
24
|
/**
|
7
25
|
* Prevents body scrolling. Keeps track of which elements requested a lock so multiple levels of locking are possible
|
@@ -9,7 +27,23 @@ const locks = new Set();
|
|
9
27
|
*/
|
10
28
|
export function lockBodyScrolling(lockingEl) {
|
11
29
|
locks.add(lockingEl);
|
12
|
-
document.
|
30
|
+
if (document.documentElement.classList.contains('nano-scroll-lock'))
|
31
|
+
return;
|
32
|
+
// When the first lock is created,
|
33
|
+
// set the scroll lock size to match the scrollbar's width to prevent content from shifting.
|
34
|
+
const scrollbarWidth = getScrollbarWidth() + getExistingBodyPadding(); // must be measured before the `sl-scroll-lock` class is applied
|
35
|
+
let scrollbarGutterProperty = getComputedStyle(document.documentElement).scrollbarGutter;
|
36
|
+
// default is auto, unsupported browsers is "undefined"
|
37
|
+
if (!scrollbarGutterProperty || scrollbarGutterProperty === 'auto') {
|
38
|
+
scrollbarGutterProperty = 'stable';
|
39
|
+
}
|
40
|
+
if (scrollbarWidth <= 0) {
|
41
|
+
// 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.
|
42
|
+
scrollbarGutterProperty = 'revert';
|
43
|
+
}
|
44
|
+
document.documentElement.style.setProperty('--nano-scroll-lock-gutter', scrollbarGutterProperty);
|
45
|
+
document.documentElement.classList.add('nano-scroll-lock');
|
46
|
+
document.documentElement.style.setProperty('--nano-scroll-lock-size', `${scrollbarWidth}px`);
|
13
47
|
}
|
14
48
|
/**
|
15
49
|
* Unlocks body scrolling. Scrolling will only be unlocked once all elements that requested a lock call this method.
|
@@ -17,7 +51,8 @@ export function lockBodyScrolling(lockingEl) {
|
|
17
51
|
export function unlockBodyScrolling(lockingEl) {
|
18
52
|
locks.delete(lockingEl);
|
19
53
|
if (locks.size === 0) {
|
20
|
-
document.
|
54
|
+
document.documentElement.classList.remove('nano-scroll-lock');
|
55
|
+
document.documentElement.style.removeProperty('--nano-scroll-lock-size');
|
21
56
|
}
|
22
57
|
}
|
23
58
|
function scrollTo(element, scrollAmt, vertical = false) {
|
@@ -45,6 +80,8 @@ function scrollTo(element, scrollAmt, vertical = false) {
|
|
45
80
|
* If the element is already in view, nothing will happen.
|
46
81
|
*/
|
47
82
|
export function scrollIntoView(element, container, direction = 'vertical', position = 'start') {
|
83
|
+
if (!element)
|
84
|
+
return;
|
48
85
|
const offset = getOffset(element, container);
|
49
86
|
const offsetTop = offset.top + container.scrollTop;
|
50
87
|
const offsetLeft = offset.left + container.scrollLeft;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/utils/scroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;
|
1
|
+
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/utils/scroll.ts"],"names":[],"mappings":"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","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"]}
|
@@ -52,6 +52,7 @@ export const displayTransition = (el, options) => {
|
|
52
52
|
el.addEventListener('transitionend', showCb);
|
53
53
|
el.style.display = opts.showDisplay;
|
54
54
|
el.dataset.displayTransition = 'true';
|
55
|
+
el.clientWidth; // force reflow
|
55
56
|
requestAnimationFrame(() => el.classList.add(opts.className));
|
56
57
|
}
|
57
58
|
else {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../src/utils/transitions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,EAAe,EACc,EAAE;EAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IAC7B,MAAM,QAAQ,GAAG,GAAG,EAAE;MACpB,EAAE,CAAC,mBAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;MAClD,OAAO,CAAC;IACV,CAAC,CAAC;IACF,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC/C,KAAK;EACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,EAAe,EACf,OAKC,EAC4B,EAAE;EAC/B,MAAM,IAAI,GAAG;IACX,SAAS,EAAE,EAAE;IACb,IAAI,EAAE,IAAI;IACV,WAAW,EAAE,OAAO;IACpB,GAAG,OAAO;GACX,CAAC;EAEF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IAC7B,MAAM,MAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;MACpC,IACE,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EACtE;QACA,OAAO,CAAC,OAAO,CAAC,CAAC;QACjB,EAAE,CAAC,mBAAmB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;OACjD;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;MACpC,IACE,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EACtE;QACA,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC1B,EAAE,CAAC,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC;QACvC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClB,EAAE,CAAC,mBAAmB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;OACjD;IACH,CAAC,CAAC;IAEF,IAAI,IAAI,CAAC,IAAI,EAAE;MACb,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;MAC7C,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;MACpC,EAAE,CAAC,OAAO,CAAC,iBAAiB,GAAG,MAAM,CAAC;MACtC,qBAAqB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KAC/D;SAAM;MACL,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;MAC7C,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACrC;EACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC","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"]}
|
1
|
+
{"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../src/utils/transitions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,EAAe,EACc,EAAE;EAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IAC7B,MAAM,QAAQ,GAAG,GAAG,EAAE;MACpB,EAAE,CAAC,mBAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;MAClD,OAAO,CAAC;IACV,CAAC,CAAC;IACF,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC/C,KAAK;EACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,EAAe,EACf,OAKC,EAC4B,EAAE;EAC/B,MAAM,IAAI,GAAG;IACX,SAAS,EAAE,EAAE;IACb,IAAI,EAAE,IAAI;IACV,WAAW,EAAE,OAAO;IACpB,GAAG,OAAO;GACX,CAAC;EAEF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IAC7B,MAAM,MAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;MACpC,IACE,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EACtE;QACA,OAAO,CAAC,OAAO,CAAC,CAAC;QACjB,EAAE,CAAC,mBAAmB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;OACjD;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;MACpC,IACE,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EACtE;QACA,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC1B,EAAE,CAAC,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC;QACvC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClB,EAAE,CAAC,mBAAmB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;OACjD;IACH,CAAC,CAAC;IAEF,IAAI,IAAI,CAAC,IAAI,EAAE;MACb,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;MAC7C,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;MACpC,EAAE,CAAC,OAAO,CAAC,iBAAiB,GAAG,MAAM,CAAC;MACtC,EAAE,CAAC,WAAW,CAAC,CAAC,eAAe;MAC/B,qBAAqB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KAC/D;SAAM;MACL,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;MAC7C,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACrC;EACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC","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"]}
|
@@ -5,7 +5,7 @@ export { Algolia as NanoAlgolia } from '../types/components/algolia/algolia';
|
|
5
5
|
export { AlgoliaFilter as NanoAlgoliaFilter } from '../types/components/algolia/algolia-filter';
|
6
6
|
export { AlgoliaPagination as NanoAlgoliaPagination } from '../types/components/algolia/algolia-pagination';
|
7
7
|
export { AlgoliaResults as NanoAlgoliaResults } from '../types/components/algolia/algolia-results';
|
8
|
-
export {
|
8
|
+
export { NanoAnimation as NanoAnimation } from '../types/components/animation/animation';
|
9
9
|
export { Checkbox as NanoCheckbox } from '../types/components/checkbox/checkbox';
|
10
10
|
export { CheckboxGroup as NanoCheckboxGroup } from '../types/components/checkbox/checkbox-group';
|
11
11
|
export { DataList as NanoDatalist } from '../types/components/datalist/datalist';
|
@@ -28,6 +28,7 @@ export { Icon as NanoIcon } from '../types/components/icon/icon';
|
|
28
28
|
export { IconButton as NanoIconButton } from '../types/components/icon-button/icon-button';
|
29
29
|
export { Img as NanoImg } from '../types/components/img/img';
|
30
30
|
export { Input as NanoInput } from '../types/components/input/input';
|
31
|
+
export { IntersectionObserve as NanoIntersectionObserve } from '../types/components/intersection-observe/intersection-observe';
|
31
32
|
export { Menu as NanoMenu } from '../types/components/menu/menu';
|
32
33
|
export { MenuDrawer as NanoMenuDrawer } from '../types/components/menu-drawer/menu-drawer';
|
33
34
|
export { NavItem as NanoNavItem } from '../types/components/nav-item/nav-item';
|
package/dist/components/index.js
CHANGED
@@ -9,7 +9,7 @@ export { NanoAlgolia, defineCustomElement as defineCustomElementNanoAlgolia } fr
|
|
9
9
|
export { NanoAlgoliaFilter, defineCustomElement as defineCustomElementNanoAlgoliaFilter } from './nano-algolia-filter.js';
|
10
10
|
export { NanoAlgoliaPagination, defineCustomElement as defineCustomElementNanoAlgoliaPagination } from './nano-algolia-pagination.js';
|
11
11
|
export { NanoAlgoliaResults, defineCustomElement as defineCustomElementNanoAlgoliaResults } from './nano-algolia-results.js';
|
12
|
-
export {
|
12
|
+
export { NanoAnimation, defineCustomElement as defineCustomElementNanoAnimation } from './nano-animation.js';
|
13
13
|
export { NanoCheckbox, defineCustomElement as defineCustomElementNanoCheckbox } from './nano-checkbox.js';
|
14
14
|
export { NanoCheckboxGroup, defineCustomElement as defineCustomElementNanoCheckboxGroup } from './nano-checkbox-group.js';
|
15
15
|
export { NanoDatalist, defineCustomElement as defineCustomElementNanoDatalist } from './nano-datalist.js';
|
@@ -32,6 +32,7 @@ export { NanoIcon, defineCustomElement as defineCustomElementNanoIcon } from './
|
|
32
32
|
export { NanoIconButton, defineCustomElement as defineCustomElementNanoIconButton } from './nano-icon-button.js';
|
33
33
|
export { NanoImg, defineCustomElement as defineCustomElementNanoImg } from './nano-img.js';
|
34
34
|
export { NanoInput, defineCustomElement as defineCustomElementNanoInput } from './nano-input.js';
|
35
|
+
export { NanoIntersectionObserve, defineCustomElement as defineCustomElementNanoIntersectionObserve } from './nano-intersection-observe.js';
|
35
36
|
export { NanoMenu, defineCustomElement as defineCustomElementNanoMenu } from './nano-menu.js';
|
36
37
|
export { NanoMenuDrawer, defineCustomElement as defineCustomElementNanoMenuDrawer } from './nano-menu-drawer.js';
|
37
38
|
export { NanoNavItem, defineCustomElement as defineCustomElementNanoNavItem } from './nano-nav-item.js';
|
@@ -1 +1 @@
|
|
1
|
-
{"file":"index.js","mappings":"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","names":[],"sources":["./src/components/alert/alert.helpers.ts","./src/components/dialog/dialog.helpers.ts","./src/index.ts","./node_modules/focus-options-polyfill/index.js","./src/global/script/global.ts"],"sourcesContent":["import type { Color, AlertToastPosition } from '../../interface';\n\ninterface ImperativeAlertOptions {\n color?: Color;\n duration?: number;\n closable?: boolean;\n}\n\ninterface ImperativeAlertButton {\n classes: string;\n content: string;\n handler?: (e: MouseEvent) => void;\n}\n\nconst alertContent = (\n message: string,\n buttons: ImperativeAlertButton[] = []\n) => {\n return `${message}\n ${\n buttons.length\n ? buttons\n .map(\n (btn, i) =>\n `<button data-btn=\"${i}\" class=\"button ${btn.classes}\" slot=\"footer\">${btn.content}</button>`\n )\n .join('')\n : ''\n }`;\n};\n\nconst addBtnHandlers = (\n alert: HTMLNanoAlertElement,\n buttons: ImperativeAlertButton[] = []\n) => {\n if (buttons.length) {\n Array.from(alert.querySelectorAll('button[slot=\"footer\"]')).map(\n (btn: HTMLElement) => {\n const foundBtn = buttons.find(\n (_fb, i) => btn.dataset.btn === i.toString()\n );\n if (foundBtn && foundBtn.handler) {\n btn.addEventListener('click', foundBtn.handler);\n }\n }\n );\n }\n};\n\n/**\n * `nano-alert` helper to create toast notifications imperatively.\n * @param message - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`\n * @param position - the position of the toast. Options are 'tr', 'tl', 'bl' & 'br'\n * @param icon - name for the `nano-icon`\n * @param alertOptions - { color: Color, duration: number, closable: boolean }\n * @returns `Promise<void>`\n */\nexport async function nanoShowToast(\n message: string,\n position: AlertToastPosition = 'tr',\n icon?: string | undefined,\n alertOptions?: ImperativeAlertOptions,\n buttons: ImperativeAlertButton[] = []\n) {\n const opts: ImperativeAlertOptions = {\n color: 'primary',\n duration: 3000,\n closable: true,\n ...alertOptions,\n };\n icon = icon || 'light/info-circle';\n const alert: HTMLNanoAlertElement = Object.assign(\n document.createElement('nano-alert'),\n {\n ...opts,\n open: false,\n innerHTML: `\n <nano-icon name=\"${icon}\" slot=\"icon\"></nano-icon>\n ${alertContent(message, buttons)}\n `,\n }\n );\n addBtnHandlers(alert, buttons);\n\n document.body.appendChild(alert);\n return new Promise<HTMLNanoAlertElement>((resolve) => {\n requestAnimationFrame(async (_) => {\n await alert.toast(position);\n resolve(alert);\n });\n });\n}\n\n/**\n * `nano-alert` helper to create alert notifications imperatively.\n * @param message - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`\n * @param buttons\n * @param label - descriptive label for assitive technology\n * @param icon - name for the `nano-icon`\n * @param alertOptions\n * @returns `Promise<void>`\n */\nexport function nanoShowAlert(\n message: string,\n buttons: ImperativeAlertButton[] = [],\n label: string,\n icon: string | undefined = 'light/info-circle',\n alertOptions: ImperativeAlertOptions = {}\n) {\n const opts: ImperativeAlertOptions = {\n color: 'primary',\n duration: Infinity,\n closable: false,\n ...alertOptions,\n };\n icon = icon || 'light/info-circle';\n const alert: HTMLNanoAlertElement = Object.assign(\n document.createElement('nano-alert'),\n {\n ...opts,\n open: false,\n innerHTML: `\n ${icon ? `<nano-icon name=\"${icon}\" slot=\"icon\"></nano-icon>` : ''}\n ${alertContent(message, buttons)}\n `,\n }\n );\n addBtnHandlers(alert, buttons);\n\n document.body.appendChild(alert);\n return new Promise<HTMLNanoAlertElement>((resolve) => {\n setTimeout(async (_) => {\n await alert.alert(label);\n resolve(alert);\n }, 100);\n });\n}\n","interface ImperativeDialogOptions {\n noUserDismiss: boolean;\n noHeader?: boolean;\n noFooter?: boolean;\n label: string;\n}\n/**\n * `nano-dialog` helper to create dialog modals imperatively.\n * @param body - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`\n * @param buttons - { classes: string; content: string; handler: () => {} }[]\n * @param dialogOptions - { noUserDismiss: boolean, noHeader?: boolean, noFooter?: boolean, label: string }\n * @returns `Promise<void>`\n */\nexport function nanoCreateDialog(\n body: string,\n buttons: { classes: string; content: string; handler: () => void }[] = [],\n dialogOptions?: ImperativeDialogOptions\n) {\n const opts: ImperativeDialogOptions = {\n noUserDismiss: false,\n label: 'Dialog',\n ...dialogOptions,\n };\n const dialog: HTMLNanoDialogElement = Object.assign(\n document.createElement('nano-dialog'),\n {\n ...opts,\n open: false,\n innerHTML: `\n ${body}\n ${\n buttons.length\n ? buttons\n .map(\n (btn, i) =>\n `<button data-btn=\"${i}\" class=\"button ${btn.classes}\" slot=\"footer\">${btn.content}</button>`\n )\n .join('')\n : ''\n }`,\n }\n );\n\n if (buttons.length) {\n Array.from(dialog.querySelectorAll('button[slot=\"footer\"]')).map(\n (btn: HTMLElement) => {\n const foundBtn = buttons.find(\n (_fb, i) => btn.dataset.btn === i.toString()\n );\n if (foundBtn && foundBtn.handler) {\n btn.addEventListener('click', foundBtn.handler);\n }\n }\n );\n }\n\n document.body.appendChild(dialog);\n return dialog;\n}\n","// import { setPlatformHelpers } from '@stencil/core';\nexport * from './components/alert/alert.helpers';\nexport * from './components/dialog/dialog.helpers';\nexport {\n debounce as nanoDebounce,\n throttle as nanoThrottle,\n} from './utils/throttle';\nexport { getTabbableElements as nanoGetTabElements } from './utils/tabbable';\n\nexport const initialize = (\n helpers: { _ael?: any; _ce?: any; _rel?: any } = {}\n) => {\n if (typeof (window as any) === 'undefined') {\n return;\n }\n\n const platformHelpers: any = {};\n if (helpers._ael) {\n platformHelpers.ael = helpers._ael;\n }\n if (helpers._rel) {\n platformHelpers.rel = helpers._rel;\n }\n if (helpers._ce) {\n platformHelpers.ce = helpers._ce;\n }\n // setPlatformHelpers(platformHelpers);\n};\n","// focus - focusOptions - preventScroll polyfill\n(function() {\n if (\n typeof window === \"undefined\" ||\n typeof document === \"undefined\" ||\n typeof HTMLElement === \"undefined\"\n ) {\n return;\n }\n\n var supportsPreventScrollOption = false;\n try {\n var focusElem = document.createElement(\"div\");\n focusElem.addEventListener(\n \"focus\",\n function(event) {\n event.preventDefault();\n event.stopPropagation();\n },\n true\n );\n focusElem.focus(\n Object.defineProperty({}, \"preventScroll\", {\n get: function() {\n // Edge v18 gives a false positive for supporting inputs\n if (\n navigator &&\n typeof navigator.userAgent !== 'undefined' &&\n navigator.userAgent &&\n navigator.userAgent.match(/Edge\\/1[7-8]/)) {\n return supportsPreventScrollOption = false\n }\n\n supportsPreventScrollOption = true;\n }\n })\n );\n } catch (e) {}\n\n if (\n HTMLElement.prototype.nativeFocus === undefined &&\n !supportsPreventScrollOption\n ) {\n HTMLElement.prototype.nativeFocus = HTMLElement.prototype.focus;\n\n var calcScrollableElements = function(element) {\n var parent = element.parentNode;\n var scrollableElements = [];\n var rootScrollingElement =\n document.scrollingElement || document.documentElement;\n\n while (parent && parent !== rootScrollingElement) {\n if (\n parent.offsetHeight < parent.scrollHeight ||\n parent.offsetWidth < parent.scrollWidth\n ) {\n scrollableElements.push([\n parent,\n parent.scrollTop,\n parent.scrollLeft\n ]);\n }\n parent = parent.parentNode;\n }\n parent = rootScrollingElement;\n scrollableElements.push([parent, parent.scrollTop, parent.scrollLeft]);\n\n return scrollableElements;\n };\n\n var restoreScrollPosition = function(scrollableElements) {\n for (var i = 0; i < scrollableElements.length; i++) {\n scrollableElements[i][0].scrollTop = scrollableElements[i][1];\n scrollableElements[i][0].scrollLeft = scrollableElements[i][2];\n }\n scrollableElements = [];\n };\n\n var patchedFocus = function(args) {\n if (args && args.preventScroll) {\n var evScrollableElements = calcScrollableElements(this);\n if (typeof setTimeout === 'function') {\n var thisElem = this;\n setTimeout(function () {\n thisElem.nativeFocus();\n restoreScrollPosition(evScrollableElements);\n }, 0);\n } else {\n this.nativeFocus();\n restoreScrollPosition(evScrollableElements);\n }\n }\n else {\n this.nativeFocus();\n }\n };\n\n HTMLElement.prototype.focus = patchedFocus;\n }\n})();\n","import { Build } from '@stencil/core';\n\n// focus options\nimport 'focus-options-polyfill';\n\nif (Build.isBrowser && globalThis['document']) {\n // fire global 'ready' event when everything is hydrated\n\n const docEle = document.documentElement;\n const docIsReady = () => {\n if (!docEle.classList.contains('hydrated')) return false;\n docEle.dispatchEvent(new CustomEvent('nanoComponentsReady'));\n return true;\n };\n\n if (!docIsReady()) {\n let mutationO = new MutationObserver((_) => {\n if (!docIsReady()) return;\n\n mutationO.disconnect();\n mutationO = null;\n });\n\n mutationO.observe(docEle, {\n childList: false,\n subtree: false,\n attributes: true,\n });\n }\n}\n"],"version":3}
|
1
|
+
{"file":"index.js","mappings":"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","names":[],"sources":["./src/components/alert/alert.helpers.ts","./src/components/dialog/dialog.helpers.ts","./src/index.ts","./node_modules/focus-options-polyfill/index.js","./src/global/script/global.ts"],"sourcesContent":["import type { Color, AlertToastPosition } from '../../interface';\n\ninterface ImperativeAlertOptions {\n color?: Color;\n duration?: number;\n closable?: boolean;\n}\n\ninterface ImperativeAlertButton {\n classes: string;\n content: string;\n handler?: (e: MouseEvent) => void;\n}\n\nconst alertContent = (\n message: string,\n buttons: ImperativeAlertButton[] = []\n) => {\n return `${message}\n ${\n buttons.length\n ? buttons\n .map(\n (btn, i) =>\n `<button data-btn=\"${i}\" class=\"button ${btn.classes}\" slot=\"footer\">${btn.content}</button>`\n )\n .join('')\n : ''\n }`;\n};\n\nconst addBtnHandlers = (\n alert: HTMLNanoAlertElement,\n buttons: ImperativeAlertButton[] = []\n) => {\n if (buttons.length) {\n Array.from(alert.querySelectorAll('button[slot=\"footer\"]')).map(\n (btn: HTMLElement) => {\n const foundBtn = buttons.find(\n (_fb, i) => btn.dataset.btn === i.toString()\n );\n if (foundBtn && foundBtn.handler) {\n btn.addEventListener('click', foundBtn.handler);\n }\n }\n );\n }\n};\n\n/**\n * `nano-alert` helper to create toast notifications imperatively.\n * @param message - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`\n * @param position - the position of the toast. Options are 'tr', 'tl', 'bl' & 'br'\n * @param icon - name for the `nano-icon`\n * @param alertOptions - { color: Color, duration: number, closable: boolean }\n * @returns `Promise<void>`\n */\nexport async function nanoShowToast(\n message: string,\n position: AlertToastPosition = 'tr',\n icon?: string | undefined,\n alertOptions?: ImperativeAlertOptions,\n buttons: ImperativeAlertButton[] = []\n) {\n const opts: ImperativeAlertOptions = {\n color: 'primary',\n duration: 3000,\n closable: true,\n ...alertOptions,\n };\n icon = icon || 'light/info-circle';\n const alert: HTMLNanoAlertElement = Object.assign(\n document.createElement('nano-alert'),\n {\n ...opts,\n open: false,\n innerHTML: `\n <nano-icon name=\"${icon}\" slot=\"icon\"></nano-icon>\n ${alertContent(message, buttons)}\n `,\n }\n );\n addBtnHandlers(alert, buttons);\n\n document.body.appendChild(alert);\n return new Promise<HTMLNanoAlertElement>((resolve) => {\n requestAnimationFrame(async (_) => {\n await alert.toast(position);\n resolve(alert);\n });\n });\n}\n\n/**\n * `nano-alert` helper to create alert notifications imperatively.\n * @param message - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`\n * @param buttons\n * @param label - descriptive label for assitive technology\n * @param icon - name for the `nano-icon`\n * @param alertOptions\n * @returns `Promise<void>`\n */\nexport function nanoShowAlert(\n message: string,\n buttons: ImperativeAlertButton[] = [],\n label: string,\n icon: string | undefined = 'light/info-circle',\n alertOptions: ImperativeAlertOptions = {}\n) {\n const opts: ImperativeAlertOptions = {\n color: 'primary',\n duration: Infinity,\n closable: false,\n ...alertOptions,\n };\n icon = icon || 'light/info-circle';\n const alert: HTMLNanoAlertElement = Object.assign(\n document.createElement('nano-alert'),\n {\n ...opts,\n open: false,\n innerHTML: `\n ${icon ? `<nano-icon name=\"${icon}\" slot=\"icon\"></nano-icon>` : ''}\n ${alertContent(message, buttons)}\n `,\n }\n );\n addBtnHandlers(alert, buttons);\n\n document.body.appendChild(alert);\n return new Promise<HTMLNanoAlertElement>((resolve) => {\n setTimeout(async (_) => {\n await alert.alert(label);\n resolve(alert);\n }, 100);\n });\n}\n","interface ImperativeDialogOptions {\n noUserDismiss: boolean;\n noHeader?: boolean;\n noFooter?: boolean;\n label: string;\n}\n/**\n * `nano-dialog` helper to create dialog modals imperatively.\n * @param body - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`\n * @param buttons - { classes: string; content: string; handler: () => {} }[]\n * @param dialogOptions - { noUserDismiss: boolean, noHeader?: boolean, noFooter?: boolean, label: string }\n * @returns `Promise<void>`\n */\nexport function nanoCreateDialog(\n body: string,\n buttons: { classes: string; content: string; handler: () => void }[] = [],\n dialogOptions?: ImperativeDialogOptions\n) {\n const opts: ImperativeDialogOptions = {\n noUserDismiss: false,\n label: 'Dialog',\n ...dialogOptions,\n };\n const dialog: HTMLNanoDialogElement = Object.assign(\n document.createElement('nano-dialog'),\n {\n ...opts,\n open: false,\n innerHTML: `\n ${body}\n ${\n buttons.length\n ? buttons\n .map(\n (btn, i) =>\n `<button data-btn=\"${i}\" class=\"button ${btn.classes}\" slot=\"footer\">${btn.content}</button>`\n )\n .join('')\n : ''\n }`,\n }\n );\n\n if (buttons.length) {\n Array.from(dialog.querySelectorAll('button[slot=\"footer\"]')).map(\n (btn: HTMLElement) => {\n const foundBtn = buttons.find(\n (_fb, i) => btn.dataset.btn === i.toString()\n );\n if (foundBtn && foundBtn.handler) {\n btn.addEventListener('click', foundBtn.handler);\n }\n }\n );\n }\n\n document.body.appendChild(dialog);\n return dialog;\n}\n","// import { setPlatformHelpers } from '@stencil/core';\nexport * from './components/alert/alert.helpers';\nexport * from './components/dialog/dialog.helpers';\nexport {\n debounce as nanoDebounce,\n throttle as nanoThrottle,\n} from './utils/throttle';\nexport { getTabbableElements as nanoGetTabElements } from './utils/tabbable';\n\nexport const initialize = (\n helpers: { _ael?: any; _ce?: any; _rel?: any } = {}\n) => {\n if (typeof (window as any) === 'undefined') {\n return;\n }\n\n const platformHelpers: any = {};\n if (helpers._ael) {\n platformHelpers.ael = helpers._ael;\n }\n if (helpers._rel) {\n platformHelpers.rel = helpers._rel;\n }\n if (helpers._ce) {\n platformHelpers.ce = helpers._ce;\n }\n // setPlatformHelpers(platformHelpers);\n};\n","// focus - focusOptions - preventScroll polyfill\n(function() {\n if (\n typeof window === \"undefined\" ||\n typeof document === \"undefined\" ||\n typeof HTMLElement === \"undefined\"\n ) {\n return;\n }\n\n var supportsPreventScrollOption = false;\n try {\n var focusElem = document.createElement(\"div\");\n focusElem.addEventListener(\n \"focus\",\n function(event) {\n event.preventDefault();\n event.stopPropagation();\n },\n true\n );\n focusElem.focus(\n Object.defineProperty({}, \"preventScroll\", {\n get: function() {\n // Edge v18 gives a false positive for supporting inputs\n if (\n navigator &&\n typeof navigator.userAgent !== 'undefined' &&\n navigator.userAgent &&\n navigator.userAgent.match(/Edge\\/1[7-8]/)) {\n return supportsPreventScrollOption = false\n }\n\n supportsPreventScrollOption = true;\n }\n })\n );\n } catch (e) {}\n\n if (\n HTMLElement.prototype.nativeFocus === undefined &&\n !supportsPreventScrollOption\n ) {\n HTMLElement.prototype.nativeFocus = HTMLElement.prototype.focus;\n\n var calcScrollableElements = function(element) {\n var parent = element.parentNode;\n var scrollableElements = [];\n var rootScrollingElement =\n document.scrollingElement || document.documentElement;\n\n while (parent && parent !== rootScrollingElement) {\n if (\n parent.offsetHeight < parent.scrollHeight ||\n parent.offsetWidth < parent.scrollWidth\n ) {\n scrollableElements.push([\n parent,\n parent.scrollTop,\n parent.scrollLeft\n ]);\n }\n parent = parent.parentNode;\n }\n parent = rootScrollingElement;\n scrollableElements.push([parent, parent.scrollTop, parent.scrollLeft]);\n\n return scrollableElements;\n };\n\n var restoreScrollPosition = function(scrollableElements) {\n for (var i = 0; i < scrollableElements.length; i++) {\n scrollableElements[i][0].scrollTop = scrollableElements[i][1];\n scrollableElements[i][0].scrollLeft = scrollableElements[i][2];\n }\n scrollableElements = [];\n };\n\n var patchedFocus = function(args) {\n if (args && args.preventScroll) {\n var evScrollableElements = calcScrollableElements(this);\n if (typeof setTimeout === 'function') {\n var thisElem = this;\n setTimeout(function () {\n thisElem.nativeFocus();\n restoreScrollPosition(evScrollableElements);\n }, 0);\n } else {\n this.nativeFocus();\n restoreScrollPosition(evScrollableElements);\n }\n }\n else {\n this.nativeFocus();\n }\n };\n\n HTMLElement.prototype.focus = patchedFocus;\n }\n})();\n","import { Build } from '@stencil/core';\n\n// focus options\nimport 'focus-options-polyfill';\n\nif (Build.isBrowser && globalThis['document']) {\n // fire global 'ready' event when everything is hydrated\n\n const docEle = document.documentElement;\n const docIsReady = () => {\n if (!docEle.classList.contains('hydrated')) return false;\n docEle.dispatchEvent(new CustomEvent('nanoComponentsReady'));\n return true;\n };\n\n if (!docIsReady()) {\n let mutationO = new MutationObserver((_) => {\n if (!docIsReady()) return;\n\n mutationO.disconnect();\n mutationO = null;\n });\n\n mutationO.observe(docEle, {\n childList: false,\n subtree: false,\n attributes: true,\n });\n }\n}\n"],"version":3}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import type { Components, JSX } from "../types/components";
|
2
2
|
|
3
|
-
interface
|
4
|
-
export const
|
5
|
-
prototype:
|
6
|
-
new ():
|
3
|
+
interface NanoAnimation extends Components.NanoAnimation, HTMLElement {}
|
4
|
+
export const NanoAnimation: {
|
5
|
+
prototype: NanoAnimation;
|
6
|
+
new (): NanoAnimation;
|
7
7
|
};
|
8
8
|
/**
|
9
9
|
* Used to define this component and all nested components recursively.
|