@ptcwebops/ptcw-design 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/dist/cjs/dropdown-item.cjs.entry.js +10 -10
- package/dist/cjs/icon-asset.cjs.entry.js +42 -42
- package/dist/cjs/list-item.cjs.entry.js +19 -19
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/lottie-player.cjs.entry.js +354 -354
- package/dist/cjs/my-component.cjs.entry.js +15 -15
- package/dist/cjs/ptc-accordion-item.cjs.entry.js +83 -83
- package/dist/cjs/ptc-accordion.cjs.entry.js +35 -35
- package/dist/cjs/ptc-announcement.cjs.entry.js +52 -52
- package/dist/cjs/ptc-breadcrumb.cjs.entry.js +12 -12
- package/dist/cjs/ptc-button.cjs.entry.js +35 -35
- package/dist/cjs/ptc-card-bottom.cjs.entry.js +36 -34
- package/dist/cjs/ptc-card-content.cjs.entry.js +40 -38
- package/dist/cjs/ptc-card-wrapper.cjs.entry.js +46 -0
- package/dist/cjs/ptc-card_6.cjs.entry.js +440 -428
- package/dist/cjs/ptc-checkbox.cjs.entry.js +33 -33
- package/dist/cjs/ptc-collapse-list.cjs.entry.js +346 -346
- package/dist/cjs/ptc-container.cjs.entry.js +32 -32
- package/dist/cjs/ptc-dropdown.cjs.entry.js +64 -64
- package/dist/cjs/ptc-dynamic-card.cjs.entry.js +47 -47
- package/dist/cjs/ptc-ellipsis-dropdown.cjs.entry.js +38 -38
- package/dist/cjs/ptc-filter-tag.cjs.entry.js +57 -57
- package/dist/cjs/ptc-hero-footer-cta.cjs.entry.js +11 -11
- package/dist/cjs/ptc-hero.cjs.entry.js +19 -17
- package/dist/cjs/ptc-icon-list.cjs.entry.js +22 -21
- package/dist/cjs/ptc-icon-minimize.cjs.entry.js +36 -36
- package/dist/cjs/ptc-link.cjs.entry.js +29 -27
- package/dist/cjs/ptc-list.cjs.entry.js +50 -50
- package/dist/cjs/ptc-lottie.cjs.entry.js +10 -10
- package/dist/cjs/ptc-minimized-footer.cjs.entry.js +8 -8
- package/dist/cjs/ptc-minimized-header.cjs.entry.js +11 -11
- package/dist/cjs/ptc-mobile-select.cjs.entry.js +53 -54
- package/dist/cjs/ptc-modal.cjs.entry.js +143 -143
- package/dist/cjs/ptc-overlay.cjs.entry.js +21 -21
- package/dist/cjs/ptc-pagenation.cjs.entry.js +105 -105
- package/dist/cjs/ptc-previous-url.cjs.entry.js +10 -10
- package/dist/cjs/ptc-pricing-block.cjs.entry.js +16 -16
- package/dist/cjs/ptc-quote.cjs.entry.js +23 -23
- package/dist/cjs/ptc-readmore_2.cjs.entry.js +59 -69
- package/dist/cjs/ptc-responsive-wrapper.cjs.entry.js +54 -54
- package/dist/cjs/ptc-shopping-cart.cjs.entry.js +50 -50
- package/dist/cjs/ptc-social-share.cjs.entry.js +59 -59
- package/dist/cjs/ptc-span.cjs.entry.js +18 -18
- package/dist/cjs/ptc-sticky-icons.cjs.entry.js +32 -32
- package/dist/cjs/ptc-svg-btn.cjs.entry.js +73 -73
- package/dist/cjs/ptc-tab-list.cjs.entry.js +124 -124
- package/dist/cjs/ptc-text-copy-with-background.cjs.entry.js +20 -20
- package/dist/cjs/ptc-title.cjs.entry.js +65 -65
- package/dist/cjs/ptc-two-column-media.cjs.entry.js +15 -15
- package/dist/cjs/ptcw-design.cjs.js +1 -1
- package/dist/cjs/tab-content.cjs.entry.js +27 -27
- package/dist/cjs/tab-header.cjs.entry.js +45 -45
- package/dist/cjs/{utils-2ac2a528.js → utils-5245e89c.js} +79 -79
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/dropdown-item/dropdown-item.js +61 -61
- package/dist/collection/components/icon-asset/icon-asset.css +4 -4
- package/dist/collection/components/icon-asset/icon-asset.js +199 -199
- package/dist/collection/components/icon-asset/media/brands.svg +1381 -1381
- package/dist/collection/components/icon-asset/media/designer.svg +379 -379
- package/dist/collection/components/icon-asset/media/regular.svg +463 -463
- package/dist/collection/components/icon-asset/media/solid.svg +3013 -3013
- package/dist/collection/components/icon-asset/media/svg-with-js.min.css +4 -4
- package/dist/collection/components/list-item/list-item.js +107 -107
- package/dist/collection/components/my-component/my-component.css +3 -3
- package/dist/collection/components/my-component/my-component.js +82 -82
- package/dist/collection/components/ptc-accordion/ptc-accordion-item/ptc-accordion-item.js +287 -287
- package/dist/collection/components/ptc-accordion/ptc-accordion.js +78 -78
- package/dist/collection/components/ptc-announcement/ptc-announcement.css +9 -1
- package/dist/collection/components/ptc-announcement/ptc-announcement.js +239 -239
- package/dist/collection/components/ptc-breadcrumb/ptc-breadcrumb.js +22 -22
- package/dist/collection/components/ptc-button/ptc-button.css +4 -4
- package/dist/collection/components/ptc-button/ptc-button.js +264 -264
- package/dist/collection/components/ptc-card/ptc-card.css +18 -0
- package/dist/collection/components/ptc-card/ptc-card.js +312 -312
- package/dist/collection/components/ptc-card-bottom/ptc-card-bottom.css +25 -0
- package/dist/collection/components/ptc-card-bottom/ptc-card-bottom.js +116 -114
- package/dist/collection/components/ptc-card-content/ptc-card-content.css +57 -0
- package/dist/collection/components/ptc-card-content/ptc-card-content.js +137 -118
- package/dist/collection/components/{ptc-card-plm/ptc-card-plm.css → ptc-card-wrapper/ptc-card-wrapper.css} +27 -0
- package/dist/collection/components/ptc-card-wrapper/ptc-card-wrapper.js +151 -0
- package/dist/collection/components/ptc-checkbox/ptc-checkbox.js +118 -118
- package/dist/collection/components/ptc-collapse-list/ptc-collapse-list.js +586 -570
- package/dist/collection/components/ptc-container/ptc-container.js +120 -120
- package/dist/collection/components/ptc-date/ptc-date.js +190 -190
- package/dist/collection/components/ptc-dropdown/ptc-dropdown.js +162 -162
- package/dist/collection/components/ptc-dynamic-card/media/nav-active-dotslick.svg +15 -15
- package/dist/collection/components/ptc-dynamic-card/ptc-dynamic-card.js +183 -183
- package/dist/collection/components/ptc-ellipsis-dropdown/ptc-ellipsis-dropdown.js +122 -122
- package/dist/collection/components/ptc-filter-tag/ptc-filter-tag.js +113 -113
- package/dist/collection/components/ptc-hero/ptc-hero.css +12 -0
- package/dist/collection/components/ptc-hero/ptc-hero.js +86 -67
- package/dist/collection/components/ptc-hero-footer-cta/ptc-hero-footer-cta.js +78 -78
- package/dist/collection/components/ptc-icon-list/ptc-icon-list.css +11 -0
- package/dist/collection/components/ptc-icon-list/ptc-icon-list.js +127 -126
- package/dist/collection/components/ptc-icon-minimize/ptc-icon-minimize.js +87 -87
- package/dist/collection/components/ptc-img/ptc-img.js +296 -296
- package/dist/collection/components/ptc-link/ptc-link.css +36 -0
- package/dist/collection/components/ptc-link/ptc-link.js +203 -184
- package/dist/collection/components/ptc-list/ptc-list.js +100 -100
- package/dist/collection/components/ptc-lottie/ptc-lottie.css +5 -5
- package/dist/collection/components/ptc-lottie/ptc-lottie.js +62 -62
- package/dist/collection/components/ptc-minimized-footer/ptc-minimized-footer.js +18 -18
- package/dist/collection/components/ptc-minimized-header/ptc-minimized-header.js +81 -81
- package/dist/collection/components/ptc-mobile-select/ptc-mobile-select.js +190 -209
- package/dist/collection/components/ptc-modal/ptc-modal.js +347 -347
- package/dist/collection/components/ptc-overlay/ptc-overlay.css +4 -0
- package/dist/collection/components/ptc-overlay/ptc-overlay.js +105 -105
- package/dist/collection/components/ptc-pagenation/ptc-pagenation.js +322 -322
- package/dist/collection/components/ptc-para/ptc-para.css +37 -0
- package/dist/collection/components/ptc-para/ptc-para.js +232 -186
- package/dist/collection/components/ptc-picture/ptc-picture.js +452 -452
- package/dist/collection/components/ptc-previous-url/ptc-previous-url.js +60 -60
- package/dist/collection/components/ptc-pricing-block/ptc-pricing-block.js +49 -49
- package/dist/collection/components/ptc-quote/ptc-quote.js +144 -144
- package/dist/collection/components/ptc-readmore/ptc-readmore.js +129 -129
- package/dist/collection/components/ptc-responsive-wrapper/ptc-responsive-wrapper.css +3 -3
- package/dist/collection/components/ptc-responsive-wrapper/ptc-responsive-wrapper.js +65 -65
- package/dist/collection/components/ptc-shopping-cart/ptc-shopping-cart.js +97 -97
- package/dist/collection/components/ptc-social-share/ptc-social-share.js +239 -239
- package/dist/collection/components/ptc-spacer/ptc-spacer.css +322 -322
- package/dist/collection/components/ptc-spacer/ptc-spacer.js +96 -96
- package/dist/collection/components/ptc-span/ptc-span.js +87 -87
- package/dist/collection/components/ptc-sticky-icons/ptc-sticky-icons.js +51 -51
- package/dist/collection/components/ptc-svg-btn/ptc-svg-btn.js +72 -72
- package/dist/collection/components/ptc-tab-list/ptc-tab-list.js +155 -155
- package/dist/collection/components/ptc-text-copy-with-background/ptc-text-copy-with-background.js +123 -123
- package/dist/collection/components/ptc-title/ptc-title.js +291 -291
- package/dist/collection/components/ptc-tooltip/ptc-tooltip.js +153 -163
- package/dist/collection/components/ptc-two-column-media/ptc-two-column-media.js +48 -48
- package/dist/collection/components/tab-content/tab-content.js +84 -84
- package/dist/collection/components/tab-header/tab-header.js +136 -136
- package/dist/collection/index.js +1 -1
- package/dist/collection/media/svg-imgs/Back-arrow.svg +11 -11
- package/dist/collection/media/svg-imgs/close.svg +10 -10
- package/dist/collection/media/svg-imgs/ptc-shopping-cart-black.svg +3 -3
- package/dist/collection/media/svg-imgs/ptc-shopping-cart-white.svg +3 -3
- package/dist/collection/media/svg-imgs/slider-arrow-left.svg +18 -18
- package/dist/collection/media/svg-imgs/slider-arrow-right.svg +18 -18
- package/dist/collection/media/svg-imgs/union.svg +3 -3
- package/dist/collection/utils/component.js +3 -3
- package/dist/collection/utils/interfaces.js +11 -11
- package/dist/collection/utils/utils.js +81 -81
- package/dist/custom-elements/index.d.ts +4 -4
- package/dist/custom-elements/index.js +3227 -3201
- package/dist/esm/dropdown-item.entry.js +10 -10
- package/dist/esm/icon-asset.entry.js +42 -42
- package/dist/esm/list-item.entry.js +19 -19
- package/dist/esm/loader.js +1 -1
- package/dist/esm/lottie-player.entry.js +354 -354
- package/dist/esm/my-component.entry.js +15 -15
- package/dist/esm/polyfills/core-js.js +0 -0
- package/dist/esm/polyfills/dom.js +0 -0
- package/dist/esm/polyfills/es5-html-element.js +0 -0
- package/dist/esm/polyfills/index.js +0 -0
- package/dist/esm/polyfills/system.js +0 -0
- package/dist/esm/ptc-accordion-item.entry.js +83 -83
- package/dist/esm/ptc-accordion.entry.js +35 -35
- package/dist/esm/ptc-announcement.entry.js +52 -52
- package/dist/esm/ptc-breadcrumb.entry.js +12 -12
- package/dist/esm/ptc-button.entry.js +35 -35
- package/dist/esm/ptc-card-bottom.entry.js +36 -34
- package/dist/esm/ptc-card-content.entry.js +40 -38
- package/dist/esm/ptc-card-wrapper.entry.js +42 -0
- package/dist/esm/ptc-card_6.entry.js +440 -428
- package/dist/esm/ptc-checkbox.entry.js +33 -33
- package/dist/esm/ptc-collapse-list.entry.js +346 -346
- package/dist/esm/ptc-container.entry.js +32 -32
- package/dist/esm/ptc-dropdown.entry.js +64 -64
- package/dist/esm/ptc-dynamic-card.entry.js +47 -47
- package/dist/esm/ptc-ellipsis-dropdown.entry.js +38 -38
- package/dist/esm/ptc-filter-tag.entry.js +57 -57
- package/dist/esm/ptc-hero-footer-cta.entry.js +11 -11
- package/dist/esm/ptc-hero.entry.js +19 -17
- package/dist/esm/ptc-icon-list.entry.js +22 -21
- package/dist/esm/ptc-icon-minimize.entry.js +36 -36
- package/dist/esm/ptc-link.entry.js +29 -27
- package/dist/esm/ptc-list.entry.js +50 -50
- package/dist/esm/ptc-lottie.entry.js +10 -10
- package/dist/esm/ptc-minimized-footer.entry.js +8 -8
- package/dist/esm/ptc-minimized-header.entry.js +11 -11
- package/dist/esm/ptc-mobile-select.entry.js +53 -54
- package/dist/esm/ptc-modal.entry.js +143 -143
- package/dist/esm/ptc-overlay.entry.js +21 -21
- package/dist/esm/ptc-pagenation.entry.js +105 -105
- package/dist/esm/ptc-previous-url.entry.js +10 -10
- package/dist/esm/ptc-pricing-block.entry.js +16 -16
- package/dist/esm/ptc-quote.entry.js +23 -23
- package/dist/esm/ptc-readmore_2.entry.js +59 -69
- package/dist/esm/ptc-responsive-wrapper.entry.js +54 -54
- package/dist/esm/ptc-shopping-cart.entry.js +50 -50
- package/dist/esm/ptc-social-share.entry.js +59 -59
- package/dist/esm/ptc-span.entry.js +18 -18
- package/dist/esm/ptc-sticky-icons.entry.js +32 -32
- package/dist/esm/ptc-svg-btn.entry.js +73 -73
- package/dist/esm/ptc-tab-list.entry.js +124 -124
- package/dist/esm/ptc-text-copy-with-background.entry.js +20 -20
- package/dist/esm/ptc-title.entry.js +65 -65
- package/dist/esm/ptc-two-column-media.entry.js +15 -15
- package/dist/esm/ptcw-design.js +1 -1
- package/dist/esm/tab-content.entry.js +27 -27
- package/dist/esm/tab-header.entry.js +45 -45
- package/dist/esm/{utils-2dbb41dc.js → utils-646cc62f.js} +79 -79
- package/dist/ptcw-design/media/brands.svg +1381 -1381
- package/dist/ptcw-design/media/designer.svg +379 -379
- package/dist/ptcw-design/media/nav-active-dotslick.svg +15 -15
- package/dist/ptcw-design/media/regular.svg +463 -463
- package/dist/ptcw-design/media/solid.svg +3013 -3013
- package/dist/ptcw-design/media/svg-with-js.min.css +4 -4
- package/dist/ptcw-design/{p-b701bbc0.entry.js → p-14d6a40c.entry.js} +1 -1
- package/dist/ptcw-design/p-1b0d15aa.entry.js +1 -0
- package/dist/ptcw-design/{p-b897780a.entry.js → p-26fc6151.entry.js} +1 -1
- package/dist/ptcw-design/p-2ca0340b.entry.js +1 -0
- package/dist/ptcw-design/{p-5005c698.entry.js → p-482a8bc9.entry.js} +1 -1
- package/dist/ptcw-design/p-557e8e2a.entry.js +1 -0
- package/dist/ptcw-design/{p-3db835e4.entry.js → p-5f782173.entry.js} +1 -1
- package/dist/ptcw-design/{p-8b197833.entry.js → p-867c711f.entry.js} +1 -1
- package/dist/ptcw-design/p-88fc4011.entry.js +1 -0
- package/dist/ptcw-design/p-9b34acfa.entry.js +1 -0
- package/dist/ptcw-design/p-a14a99ce.entry.js +1 -0
- package/dist/ptcw-design/{p-d910c9d6.entry.js → p-c095d100.entry.js} +1 -1
- package/dist/ptcw-design/p-e6ce8733.entry.js +1 -0
- package/dist/ptcw-design/{p-e38a57ce.entry.js → p-f9694131.entry.js} +1 -1
- package/dist/ptcw-design/ptcw-design.css +1 -1
- package/dist/ptcw-design/ptcw-design.esm.js +1 -1
- package/dist/types/components/dropdown-item/dropdown-item.d.ts +5 -5
- package/dist/types/components/icon-asset/icon-asset.d.ts +40 -40
- package/dist/types/components/list-item/list-item.d.ts +8 -8
- package/dist/types/components/my-component/my-component.d.ts +16 -16
- package/dist/types/components/ptc-accordion/ptc-accordion-item/ptc-accordion-item.d.ts +59 -59
- package/dist/types/components/ptc-accordion/ptc-accordion.d.ts +13 -13
- package/dist/types/components/ptc-announcement/ptc-announcement.d.ts +51 -51
- package/dist/types/components/ptc-breadcrumb/ptc-breadcrumb.d.ts +4 -4
- package/dist/types/components/ptc-button/ptc-button.d.ts +56 -56
- package/dist/types/components/ptc-card/ptc-card.d.ts +62 -62
- package/dist/types/components/ptc-card-bottom/ptc-card-bottom.d.ts +15 -15
- package/dist/types/components/ptc-card-content/ptc-card-content.d.ts +16 -15
- package/dist/types/components/ptc-card-wrapper/ptc-card-wrapper.d.ts +18 -0
- package/dist/types/components/ptc-checkbox/ptc-checkbox.d.ts +11 -11
- package/dist/types/components/ptc-collapse-list/ptc-collapse-list.d.ts +56 -56
- package/dist/types/components/ptc-container/ptc-container.d.ts +12 -12
- package/dist/types/components/ptc-date/ptc-date.d.ts +41 -41
- package/dist/types/components/ptc-dropdown/ptc-dropdown.d.ts +19 -19
- package/dist/types/components/ptc-dynamic-card/ptc-dynamic-card.d.ts +24 -24
- package/dist/types/components/ptc-ellipsis-dropdown/ptc-ellipsis-dropdown.d.ts +12 -12
- package/dist/types/components/ptc-filter-tag/ptc-filter-tag.d.ts +17 -17
- package/dist/types/components/ptc-hero/ptc-hero.d.ts +16 -12
- package/dist/types/components/ptc-hero-footer-cta/ptc-hero-footer-cta.d.ts +6 -6
- package/dist/types/components/ptc-icon-list/ptc-icon-list.d.ts +21 -21
- package/dist/types/components/ptc-icon-minimize/ptc-icon-minimize.d.ts +9 -9
- package/dist/types/components/ptc-img/ptc-img.d.ts +51 -51
- package/dist/types/components/ptc-link/ptc-link.d.ts +40 -36
- package/dist/types/components/ptc-list/ptc-list.d.ts +8 -8
- package/dist/types/components/ptc-lottie/ptc-lottie.d.ts +12 -12
- package/dist/types/components/ptc-minimized-footer/ptc-minimized-footer.d.ts +3 -3
- package/dist/types/components/ptc-minimized-header/ptc-minimized-header.d.ts +6 -6
- package/dist/types/components/ptc-mobile-select/ptc-mobile-select.d.ts +36 -40
- package/dist/types/components/ptc-modal/ptc-modal.d.ts +59 -59
- package/dist/types/components/ptc-overlay/ptc-overlay.d.ts +20 -20
- package/dist/types/components/ptc-pagenation/ptc-pagenation.d.ts +27 -27
- package/dist/types/components/ptc-para/ptc-para.d.ts +43 -34
- package/dist/types/components/ptc-picture/ptc-picture.d.ts +93 -93
- package/dist/types/components/ptc-previous-url/ptc-previous-url.d.ts +5 -5
- package/dist/types/components/ptc-pricing-block/ptc-pricing-block.d.ts +5 -5
- package/dist/types/components/ptc-quote/ptc-quote.d.ts +29 -29
- package/dist/types/components/ptc-readmore/ptc-readmore.d.ts +27 -27
- package/dist/types/components/ptc-responsive-wrapper/ptc-responsive-wrapper.d.ts +8 -8
- package/dist/types/components/ptc-shopping-cart/ptc-shopping-cart.d.ts +6 -6
- package/dist/types/components/ptc-social-share/ptc-social-share.d.ts +33 -33
- package/dist/types/components/ptc-spacer/ptc-spacer.d.ts +16 -16
- package/dist/types/components/ptc-span/ptc-span.d.ts +16 -16
- package/dist/types/components/ptc-sticky-icons/ptc-sticky-icons.d.ts +7 -7
- package/dist/types/components/ptc-svg-btn/ptc-svg-btn.d.ts +12 -12
- package/dist/types/components/ptc-tab-list/ptc-tab-list.d.ts +15 -15
- package/dist/types/components/ptc-text-copy-with-background/ptc-text-copy-with-background.d.ts +25 -25
- package/dist/types/components/ptc-title/ptc-title.d.ts +50 -50
- package/dist/types/components/ptc-tooltip/ptc-tooltip.d.ts +34 -34
- package/dist/types/components/ptc-two-column-media/ptc-two-column-media.d.ts +9 -9
- package/dist/types/components/tab-content/tab-content.d.ts +12 -12
- package/dist/types/components/tab-header/tab-header.d.ts +14 -14
- package/dist/types/components.d.ts +171 -59
- package/dist/types/global.d.ts +1072 -1072
- package/dist/types/index.d.ts +1 -1
- package/dist/types/utils/component.d.ts +1 -1
- package/dist/types/utils/interfaces.d.ts +31 -31
- package/dist/types/utils/utils.d.ts +4 -4
- package/package.json +61 -61
- package/readme.md +10 -11
- package/dist/cjs/ptc-card-plm.cjs.entry.js +0 -30
- package/dist/collection/components/ptc-card-plm/ptc-card-plm.js +0 -104
- package/dist/esm/ptc-card-plm.entry.js +0 -26
- package/dist/ptcw-design/p-1e80c01f.entry.js +0 -1
- package/dist/ptcw-design/p-4de70656.entry.js +0 -1
- package/dist/ptcw-design/p-5dbf98a9.entry.js +0 -1
- package/dist/ptcw-design/p-9311ee3f.entry.js +0 -1
- package/dist/ptcw-design/p-a0f25c98.entry.js +0 -1
- package/dist/ptcw-design/p-a4900673.entry.js +0 -1
- package/dist/ptcw-design/p-bc033578.entry.js +0 -1
- package/dist/types/components/ptc-card-plm/ptc-card-plm.d.ts +0 -8
- /package/dist/ptcw-design/{p-5e98555a.js → p-e121ff2a.js} +0 -0
|
@@ -13104,360 +13104,360 @@ var PlayMode;
|
|
|
13104
13104
|
|
|
13105
13105
|
const lottiePlayerCss = ":host{--lottie-player-toolbar-height:35px;--lottie-player-toolbar-background-color:transparent;--lottie-player-toolbar-icon-color:#999;--lottie-player-toolbar-icon-hover-color:#222;--lottie-player-toolbar-icon-active-color:#555;--lottie-player-seeker-track-color:#CCC;--lottie-player-seeker-thumb-color:rgba(0, 107, 120, 0.8);display:block;width:100%;height:100%}.main{box-sizing:border-box;display:inline-grid;grid-auto-columns:auto;grid-template-rows:auto;position:relative;height:inherit;width:inherit}.main.controls{grid-template-rows:1fr var(--lottie-player-toolbar-height)}.animation{overflow:hidden;height:calc(1fr - var(--lottie-player-toolbar-height))}.toolbar{display:grid;grid-template-columns:32px 32px 1fr 32px 32px;align-items:center;justify-items:center;background-color:var(--lottie-player-toolbar-background-color)}.toolbar button{cursor:pointer;fill:var(--lottie-player-toolbar-icon-color);display:flex;background:none;border:0;padding:0;outline:none;height:100%}.toolbar button:hover{fill:var(--lottie-player-toolbar-icon-hover-color)}.toolbar button.active{fill:var(--lottie-player-toolbar-icon-active-color)}.toolbar button.disabled svg{display:none}.toolbar a{filter:grayscale(100%);display:flex;transition:filter .5s, opacity 0.5s;opacity:0.4;height:100%;align-items:center}.toolbar a:hover{filter:none;display:flex;opacity:1}.seeker{-webkit-appearance:none;width:95%;outline:none}.seeker::-webkit-slider-runnable-track{width:100%;height:5px;cursor:pointer;background:var(--lottie-player-seeker-track-color);border-radius:3px}.seeker::-webkit-slider-thumb{height:15px;width:15px;border-radius:50%;background:var(--lottie-player-seeker-thumb-color);cursor:pointer;-webkit-appearance:none;margin-top:-5px}.seeker:focus::-webkit-slider-runnable-track{background:#999}.seeker::-moz-range-track{width:100%;height:5px;cursor:pointer;background:var(--lottie-player-seeker-track-color);border-radius:3px}.seeker::-moz-range-thumb{height:15px;width:15px;border-radius:50%;background:var(--lottie-player-seeker-thumb-color);cursor:pointer}.seeker::-ms-track{width:100%;height:5px;cursor:pointer;background:transparent;border-color:transparent;color:transparent}.seeker::-ms-fill-lower{background:var(--lottie-player-seeker-track-color);border-radius:3px}.seeker::-ms-fill-upper{background:var(--lottie-player-seeker-track-color);border-radius:3px}.seeker::-ms-thumb{border:0;height:15px;width:15px;border-radius:50%;background:var(--lottie-player-seeker-thumb-color);cursor:pointer}.seeker:focus::-ms-fill-lower{background:var(--lottie-player-seeker-track-color)}.seeker:focus::-ms-fill-upper{background:var(--lottie-player-seeker-track-color)}.error{display:flex;justify-content:center;height:100%;align-items:center}";
|
|
13106
13106
|
|
|
13107
|
-
const LottiePlayer = class {
|
|
13108
|
-
constructor(hostRef) {
|
|
13109
|
-
index.registerInstance(this, hostRef);
|
|
13110
|
-
this.error = index.createEvent(this, "error", 7);
|
|
13111
|
-
this.frame = index.createEvent(this, "frame", 7);
|
|
13112
|
-
this.complete = index.createEvent(this, "complete", 7);
|
|
13113
|
-
this.looped = index.createEvent(this, "looped", 7);
|
|
13114
|
-
this.ready = index.createEvent(this, "ready", 7);
|
|
13115
|
-
this.loaded = index.createEvent(this, "loaded", 7);
|
|
13116
|
-
this.playing = index.createEvent(this, "playing", 7);
|
|
13117
|
-
this.paused = index.createEvent(this, "paused", 7);
|
|
13118
|
-
this.stopped = index.createEvent(this, "stopped", 7);
|
|
13119
|
-
this.freezed = index.createEvent(this, "freezed", 7);
|
|
13120
|
-
/**
|
|
13121
|
-
* Play mode.
|
|
13122
|
-
*/
|
|
13123
|
-
this.mode = PlayMode.Normal;
|
|
13124
|
-
/**
|
|
13125
|
-
* Autoplay animation on load
|
|
13126
|
-
*/
|
|
13127
|
-
this.autoplay = false;
|
|
13128
|
-
/**
|
|
13129
|
-
* Background color.
|
|
13130
|
-
*/
|
|
13131
|
-
this.background = 'transparent';
|
|
13132
|
-
/**
|
|
13133
|
-
* Show controls.
|
|
13134
|
-
*/
|
|
13135
|
-
this.controls = false;
|
|
13136
|
-
/**
|
|
13137
|
-
* Direction of animation
|
|
13138
|
-
*/
|
|
13139
|
-
this.direction = 1;
|
|
13140
|
-
/**
|
|
13141
|
-
* Whether to play on mouse hover
|
|
13142
|
-
*/
|
|
13143
|
-
this.hover = false;
|
|
13144
|
-
/**
|
|
13145
|
-
* Whether to loop animation
|
|
13146
|
-
*/
|
|
13147
|
-
this.loop = false;
|
|
13148
|
-
/**
|
|
13149
|
-
* Renderer to use.
|
|
13150
|
-
*/
|
|
13151
|
-
this.renderer = 'svg';
|
|
13152
|
-
/**
|
|
13153
|
-
* Animation speed.
|
|
13154
|
-
*/
|
|
13155
|
-
this.speed = 1;
|
|
13156
|
-
/**
|
|
13157
|
-
* Player state.
|
|
13158
|
-
*/
|
|
13159
|
-
this.currentState = PlayerState.Loading;
|
|
13160
|
-
this.intermission = 1;
|
|
13161
|
-
this._counter = 0;
|
|
13162
|
-
}
|
|
13163
|
-
componentDidLoad() {
|
|
13164
|
-
// Add intersection observer for detecting component being out-of-view.
|
|
13165
|
-
if ('IntersectionObserver' in window) {
|
|
13166
|
-
this._io = new IntersectionObserver((entries) => {
|
|
13167
|
-
if (entries[0].isIntersecting) {
|
|
13168
|
-
if (this.currentState === PlayerState.Frozen) {
|
|
13169
|
-
this.play();
|
|
13170
|
-
}
|
|
13171
|
-
}
|
|
13172
|
-
else if (this.currentState === PlayerState.Playing) {
|
|
13173
|
-
this.freeze();
|
|
13174
|
-
}
|
|
13175
|
-
});
|
|
13176
|
-
this._io.observe(this.container);
|
|
13177
|
-
}
|
|
13178
|
-
// Add listener for Visibility API's change event.
|
|
13179
|
-
if (typeof document.hidden !== 'undefined') {
|
|
13180
|
-
document.addEventListener('visibilitychange', () => this.onVisibilityChange());
|
|
13181
|
-
}
|
|
13182
|
-
// Setup lottie player
|
|
13183
|
-
if (this.src) {
|
|
13184
|
-
this.load(this.src);
|
|
13185
|
-
}
|
|
13186
|
-
}
|
|
13187
|
-
load(src) {
|
|
13188
|
-
const options = {
|
|
13189
|
-
container: this.container,
|
|
13190
|
-
loop: false,
|
|
13191
|
-
autoplay: false,
|
|
13192
|
-
renderer: this.renderer,
|
|
13193
|
-
rendererSettings: {
|
|
13194
|
-
scaleMode: 'noScale',
|
|
13195
|
-
clearCanvas: false,
|
|
13196
|
-
progressiveLoad: true,
|
|
13197
|
-
hideOnTransparent: true,
|
|
13198
|
-
},
|
|
13199
|
-
};
|
|
13200
|
-
try {
|
|
13201
|
-
const srcParsed = parseSrc(src);
|
|
13202
|
-
const srcAttrib = typeof srcParsed === 'string' ? 'path' : 'animationData';
|
|
13203
|
-
// Clear previous animation, if any
|
|
13204
|
-
if (this._lottie) {
|
|
13205
|
-
this._lottie.destroy();
|
|
13206
|
-
}
|
|
13207
|
-
// Initialize lottie player and load animation
|
|
13208
|
-
this._lottie = lottie_svg.loadAnimation(Object.assign(Object.assign({}, options), { [srcAttrib]: srcParsed }));
|
|
13209
|
-
}
|
|
13210
|
-
catch (err) {
|
|
13211
|
-
this.currentState = PlayerState.Error;
|
|
13212
|
-
this.error.emit();
|
|
13213
|
-
return;
|
|
13214
|
-
}
|
|
13215
|
-
if (this._lottie) {
|
|
13216
|
-
// Calculate and save the current progress of the animation
|
|
13217
|
-
this._lottie.addEventListener('enterFrame', () => {
|
|
13218
|
-
this.seeker = (this._lottie.currentFrame / this._lottie.totalFrames) * 100;
|
|
13219
|
-
this.frame.emit({
|
|
13220
|
-
frame: this._lottie.currentFrame,
|
|
13221
|
-
seeker: this.seeker
|
|
13222
|
-
});
|
|
13223
|
-
});
|
|
13224
|
-
// Handle animation play complete
|
|
13225
|
-
this._lottie.addEventListener('complete', () => {
|
|
13226
|
-
if (this.currentState !== PlayerState.Playing) {
|
|
13227
|
-
this.complete.emit();
|
|
13228
|
-
return;
|
|
13229
|
-
}
|
|
13230
|
-
if (!this.loop || (this.count && this._counter >= this.count)) {
|
|
13231
|
-
this.complete.emit();
|
|
13232
|
-
return;
|
|
13233
|
-
}
|
|
13234
|
-
if (this.mode === PlayMode.Bounce) {
|
|
13235
|
-
if (this.count) {
|
|
13236
|
-
this._counter += 0.5;
|
|
13237
|
-
}
|
|
13238
|
-
setTimeout(() => {
|
|
13239
|
-
this.looped.emit();
|
|
13240
|
-
if (this.currentState === PlayerState.Playing) {
|
|
13241
|
-
this._lottie.setDirection(this._lottie.playDirection * -1);
|
|
13242
|
-
this._lottie.play();
|
|
13243
|
-
}
|
|
13244
|
-
}, this.intermission);
|
|
13245
|
-
}
|
|
13246
|
-
else {
|
|
13247
|
-
if (this.count) {
|
|
13248
|
-
this._counter += 1;
|
|
13249
|
-
}
|
|
13250
|
-
window.setTimeout(() => {
|
|
13251
|
-
this.looped.emit();
|
|
13252
|
-
if (this.currentState === PlayerState.Playing) {
|
|
13253
|
-
this._lottie.stop();
|
|
13254
|
-
this._lottie.play();
|
|
13255
|
-
}
|
|
13256
|
-
}, this.intermission);
|
|
13257
|
-
}
|
|
13258
|
-
});
|
|
13259
|
-
// Handle lottie-web ready event
|
|
13260
|
-
this._lottie.addEventListener('DOMLoaded', () => {
|
|
13261
|
-
this.ready.emit();
|
|
13262
|
-
});
|
|
13263
|
-
// Handle animation data load complete
|
|
13264
|
-
this._lottie.addEventListener('data_ready', () => {
|
|
13265
|
-
this.loaded.emit();
|
|
13266
|
-
});
|
|
13267
|
-
// Set error state when animation load fail event triggers
|
|
13268
|
-
this._lottie.addEventListener('data_failed', () => {
|
|
13269
|
-
this.currentState = PlayerState.Error;
|
|
13270
|
-
this.error.emit();
|
|
13271
|
-
});
|
|
13272
|
-
// Set handlers to auto play animation on hover if enabled
|
|
13273
|
-
this.container.addEventListener('mouseenter', () => {
|
|
13274
|
-
if (this.hover && this.currentState !== PlayerState.Playing) {
|
|
13275
|
-
this.play();
|
|
13276
|
-
}
|
|
13277
|
-
});
|
|
13278
|
-
this.container.addEventListener('mouseleave', () => {
|
|
13279
|
-
if (this.hover && this.currentState === PlayerState.Playing) {
|
|
13280
|
-
this.stop();
|
|
13281
|
-
}
|
|
13282
|
-
});
|
|
13283
|
-
// Set initial playback speed and direction
|
|
13284
|
-
this.setSpeed(this.speed);
|
|
13285
|
-
this.setDirection(this.direction);
|
|
13286
|
-
// Start playing if autoplay is enabled
|
|
13287
|
-
if (this.autoplay) {
|
|
13288
|
-
this.play();
|
|
13289
|
-
}
|
|
13290
|
-
}
|
|
13291
|
-
}
|
|
13292
|
-
/**
|
|
13293
|
-
* Start playing animation.
|
|
13294
|
-
*/
|
|
13295
|
-
async play() {
|
|
13296
|
-
if (!this._lottie) {
|
|
13297
|
-
return;
|
|
13298
|
-
}
|
|
13299
|
-
this._lottie.play();
|
|
13300
|
-
this.currentState = PlayerState.Playing;
|
|
13301
|
-
this.playing.emit();
|
|
13302
|
-
}
|
|
13303
|
-
/**
|
|
13304
|
-
* Stop playing animation.
|
|
13305
|
-
*/
|
|
13306
|
-
async pause() {
|
|
13307
|
-
if (!this._lottie) {
|
|
13308
|
-
return;
|
|
13309
|
-
}
|
|
13310
|
-
this._lottie.pause();
|
|
13311
|
-
this.currentState = PlayerState.Paused;
|
|
13312
|
-
this.paused.emit();
|
|
13313
|
-
}
|
|
13314
|
-
/**
|
|
13315
|
-
* Stops animation play.
|
|
13316
|
-
*/
|
|
13317
|
-
async stop() {
|
|
13318
|
-
if (!this._lottie) {
|
|
13319
|
-
return;
|
|
13320
|
-
}
|
|
13321
|
-
this._counter = 0;
|
|
13322
|
-
this._lottie.stop();
|
|
13323
|
-
this.currentState = PlayerState.Stopped;
|
|
13324
|
-
this.stopped.emit();
|
|
13325
|
-
}
|
|
13326
|
-
/**
|
|
13327
|
-
* Seek to a given frame.
|
|
13328
|
-
*/
|
|
13329
|
-
async seek(value) {
|
|
13330
|
-
if (!this._lottie) {
|
|
13331
|
-
return;
|
|
13332
|
-
}
|
|
13333
|
-
// Extract frame number from either number or percentage value
|
|
13334
|
-
const matches = value.toString().match(/^([0-9]+)(%?)$/);
|
|
13335
|
-
if (!matches) {
|
|
13336
|
-
return;
|
|
13337
|
-
}
|
|
13338
|
-
// Calculate and set the frame number
|
|
13339
|
-
const frame = matches[2] === '%'
|
|
13340
|
-
? this._lottie.totalFrames * Number(matches[1]) / 100
|
|
13341
|
-
: matches[1];
|
|
13342
|
-
// Set seeker to new frame number
|
|
13343
|
-
this.seeker = frame;
|
|
13344
|
-
// Send lottie player to the new frame
|
|
13345
|
-
if (this.currentState === PlayerState.Playing) {
|
|
13346
|
-
this._lottie.goToAndPlay(frame, true);
|
|
13347
|
-
}
|
|
13348
|
-
else {
|
|
13349
|
-
this._lottie.goToAndStop(frame, true);
|
|
13350
|
-
this._lottie.pause();
|
|
13351
|
-
}
|
|
13352
|
-
}
|
|
13353
|
-
/**
|
|
13354
|
-
* Freeze animation play.
|
|
13355
|
-
* This internal state pauses animation and is used to differentiate between
|
|
13356
|
-
* user requested pauses and component instigated pauses.
|
|
13357
|
-
*/
|
|
13358
|
-
freeze() {
|
|
13359
|
-
if (!this._lottie) {
|
|
13360
|
-
return;
|
|
13361
|
-
}
|
|
13362
|
-
this.currentState = PlayerState.Frozen;
|
|
13363
|
-
this.freezed.emit();
|
|
13364
|
-
}
|
|
13365
|
-
async getLottie() {
|
|
13366
|
-
return this._lottie;
|
|
13367
|
-
}
|
|
13368
|
-
/**
|
|
13369
|
-
* Sets animation play speed
|
|
13370
|
-
* @param value Playback speed.
|
|
13371
|
-
*/
|
|
13372
|
-
async setSpeed(value = 1) {
|
|
13373
|
-
if (!this._lottie) {
|
|
13374
|
-
return;
|
|
13375
|
-
}
|
|
13376
|
-
this._lottie.setSpeed(value);
|
|
13377
|
-
}
|
|
13378
|
-
/**
|
|
13379
|
-
* Animation play direction.
|
|
13380
|
-
* @param value Direction values.
|
|
13381
|
-
*/
|
|
13382
|
-
async setDirection(value) {
|
|
13383
|
-
if (!this._lottie) {
|
|
13384
|
-
return;
|
|
13385
|
-
}
|
|
13386
|
-
this._lottie.setDirection(value);
|
|
13387
|
-
}
|
|
13388
|
-
/**
|
|
13389
|
-
* Sets the looping of the animation.
|
|
13390
|
-
*
|
|
13391
|
-
* @param value Whether to enable looping. Boolean true enables looping.
|
|
13392
|
-
*/
|
|
13393
|
-
async setLooping(value) {
|
|
13394
|
-
if (this._lottie) {
|
|
13395
|
-
this.loop = value;
|
|
13396
|
-
this._lottie.loop = value;
|
|
13397
|
-
}
|
|
13398
|
-
}
|
|
13399
|
-
/**
|
|
13400
|
-
* Toggle playing state.
|
|
13401
|
-
*/
|
|
13402
|
-
async togglePlay() {
|
|
13403
|
-
return this.currentState === PlayerState.Playing
|
|
13404
|
-
? this.pause()
|
|
13405
|
-
: this.play();
|
|
13406
|
-
}
|
|
13407
|
-
/**
|
|
13408
|
-
* Toggles animation looping.
|
|
13409
|
-
*/
|
|
13410
|
-
async toggleLooping() {
|
|
13411
|
-
this.setLooping(!this.loop);
|
|
13412
|
-
}
|
|
13413
|
-
renderButtonIcon(isPlaying) {
|
|
13414
|
-
if (isPlaying) {
|
|
13415
|
-
return (index.h("svg", { width: "24", height: "24" }, index.h("path", { d: "M14.016 5.016H18v13.969h-3.984V5.016zM6 18.984V5.015h3.984v13.969H6z" })));
|
|
13416
|
-
}
|
|
13417
|
-
return (index.h("svg", { width: "24", height: "24" }, index.h("path", { d: "M8.016 5.016L18.985 12 8.016 18.984V5.015z" })));
|
|
13418
|
-
}
|
|
13419
|
-
renderControls() {
|
|
13420
|
-
const isPlaying = this.currentState === PlayerState.Playing;
|
|
13421
|
-
const isPaused = this.currentState === PlayerState.Paused;
|
|
13422
|
-
const isStopped = this.currentState === PlayerState.Stopped;
|
|
13423
|
-
return (index.h("div", { class: 'toolbar' }, index.h("button", { class: {
|
|
13424
|
-
active: isPlaying || isPaused
|
|
13425
|
-
}, onClick: () => this.togglePlay() }, this.renderButtonIcon(isPlaying)), index.h("button", { class: {
|
|
13426
|
-
active: isStopped
|
|
13427
|
-
}, onClick: () => this.stop() }, index.h("svg", { width: "24", height: "24" }, index.h("path", { d: "M6 6h12v12H6V6z" }))), index.h("input", { class: "seeker", type: "range", min: "0", step: "1", max: "100", value: this.seeker, onInput: e => this.handleSeekChange(e), onMouseDown: () => { this._prevState = this.currentState; this.freeze(); }, onMouseUp: () => { this._prevState === PlayerState.Playing && this.play(); } }), index.h("button", { class: {
|
|
13428
|
-
'active': this.loop
|
|
13429
|
-
}, onClick: () => this.toggleLooping() }, index.h("svg", { width: "24", height: "24" }, index.h("path", { d: "M17.016 17.016v-4.031h1.969v6h-12v3l-3.984-3.984 3.984-3.984v3h10.031zM6.984 6.984v4.031H5.015v-6h12v-3l3.984 3.984-3.984 3.984v-3H6.984z" }))), index.h("a", { href: "https://www.lottiefiles.com/", target: "_blank" }, index.h("svg", { width: "24", height: "24", viewBox: "0 0 320 320", "fill-rule": "nonzero" }, index.h("rect", { fill: "#adadad", x: ".5", y: ".5", width: "100%", height: "100%", rx: "26.73" }), index.h("path", { d: "M251.304 65.44a16.55 16.55 0 0 1 13.927 18.789c-1.333 9.04-9.73 15.292-18.762 13.954-15.992-2.37-39.95 22.534-66.77 73.74-34.24 65.37-66.113 96.517-99.667 94.032-9.102-.674-15.93-8.612-15.258-17.723s8.592-15.96 17.695-15.286c16.57 1.227 40.908-24.737 67.97-76.4 34.46-65.79 66.764-96.157 100.866-91.105z", fill: "#fff" })))));
|
|
13430
|
-
}
|
|
13431
|
-
render() {
|
|
13432
|
-
return (index.h("div", { class: {
|
|
13433
|
-
main: true,
|
|
13434
|
-
controls: this.controls
|
|
13435
|
-
} }, index.h("div", { class: "animation", style: {
|
|
13436
|
-
background: this.background
|
|
13437
|
-
}, ref: ref => this.container = ref }, this.currentState === PlayerState.Error ? index.h("div", { class: "error" }, "\u26A0\uFE0F") : undefined), this.controls ? this.renderControls() : undefined));
|
|
13438
|
-
}
|
|
13439
|
-
/**
|
|
13440
|
-
* Handle visibility change events.
|
|
13441
|
-
*/
|
|
13442
|
-
onVisibilityChange() {
|
|
13443
|
-
if (document.hidden === true && this.currentState === PlayerState.Playing) {
|
|
13444
|
-
this.freeze();
|
|
13445
|
-
}
|
|
13446
|
-
else if (this.currentState === PlayerState.Frozen) {
|
|
13447
|
-
this.play();
|
|
13448
|
-
}
|
|
13449
|
-
}
|
|
13450
|
-
/**
|
|
13451
|
-
* Handles click and drag actions on the progress track.
|
|
13452
|
-
*/
|
|
13453
|
-
handleSeekChange(e) {
|
|
13454
|
-
if (!this._lottie || isNaN(e.target.value)) {
|
|
13455
|
-
return;
|
|
13456
|
-
}
|
|
13457
|
-
const frame = ((e.target.value / 100) * this._lottie.totalFrames);
|
|
13458
|
-
this.seek(frame);
|
|
13459
|
-
}
|
|
13460
|
-
};
|
|
13107
|
+
const LottiePlayer = class {
|
|
13108
|
+
constructor(hostRef) {
|
|
13109
|
+
index.registerInstance(this, hostRef);
|
|
13110
|
+
this.error = index.createEvent(this, "error", 7);
|
|
13111
|
+
this.frame = index.createEvent(this, "frame", 7);
|
|
13112
|
+
this.complete = index.createEvent(this, "complete", 7);
|
|
13113
|
+
this.looped = index.createEvent(this, "looped", 7);
|
|
13114
|
+
this.ready = index.createEvent(this, "ready", 7);
|
|
13115
|
+
this.loaded = index.createEvent(this, "loaded", 7);
|
|
13116
|
+
this.playing = index.createEvent(this, "playing", 7);
|
|
13117
|
+
this.paused = index.createEvent(this, "paused", 7);
|
|
13118
|
+
this.stopped = index.createEvent(this, "stopped", 7);
|
|
13119
|
+
this.freezed = index.createEvent(this, "freezed", 7);
|
|
13120
|
+
/**
|
|
13121
|
+
* Play mode.
|
|
13122
|
+
*/
|
|
13123
|
+
this.mode = PlayMode.Normal;
|
|
13124
|
+
/**
|
|
13125
|
+
* Autoplay animation on load
|
|
13126
|
+
*/
|
|
13127
|
+
this.autoplay = false;
|
|
13128
|
+
/**
|
|
13129
|
+
* Background color.
|
|
13130
|
+
*/
|
|
13131
|
+
this.background = 'transparent';
|
|
13132
|
+
/**
|
|
13133
|
+
* Show controls.
|
|
13134
|
+
*/
|
|
13135
|
+
this.controls = false;
|
|
13136
|
+
/**
|
|
13137
|
+
* Direction of animation
|
|
13138
|
+
*/
|
|
13139
|
+
this.direction = 1;
|
|
13140
|
+
/**
|
|
13141
|
+
* Whether to play on mouse hover
|
|
13142
|
+
*/
|
|
13143
|
+
this.hover = false;
|
|
13144
|
+
/**
|
|
13145
|
+
* Whether to loop animation
|
|
13146
|
+
*/
|
|
13147
|
+
this.loop = false;
|
|
13148
|
+
/**
|
|
13149
|
+
* Renderer to use.
|
|
13150
|
+
*/
|
|
13151
|
+
this.renderer = 'svg';
|
|
13152
|
+
/**
|
|
13153
|
+
* Animation speed.
|
|
13154
|
+
*/
|
|
13155
|
+
this.speed = 1;
|
|
13156
|
+
/**
|
|
13157
|
+
* Player state.
|
|
13158
|
+
*/
|
|
13159
|
+
this.currentState = PlayerState.Loading;
|
|
13160
|
+
this.intermission = 1;
|
|
13161
|
+
this._counter = 0;
|
|
13162
|
+
}
|
|
13163
|
+
componentDidLoad() {
|
|
13164
|
+
// Add intersection observer for detecting component being out-of-view.
|
|
13165
|
+
if ('IntersectionObserver' in window) {
|
|
13166
|
+
this._io = new IntersectionObserver((entries) => {
|
|
13167
|
+
if (entries[0].isIntersecting) {
|
|
13168
|
+
if (this.currentState === PlayerState.Frozen) {
|
|
13169
|
+
this.play();
|
|
13170
|
+
}
|
|
13171
|
+
}
|
|
13172
|
+
else if (this.currentState === PlayerState.Playing) {
|
|
13173
|
+
this.freeze();
|
|
13174
|
+
}
|
|
13175
|
+
});
|
|
13176
|
+
this._io.observe(this.container);
|
|
13177
|
+
}
|
|
13178
|
+
// Add listener for Visibility API's change event.
|
|
13179
|
+
if (typeof document.hidden !== 'undefined') {
|
|
13180
|
+
document.addEventListener('visibilitychange', () => this.onVisibilityChange());
|
|
13181
|
+
}
|
|
13182
|
+
// Setup lottie player
|
|
13183
|
+
if (this.src) {
|
|
13184
|
+
this.load(this.src);
|
|
13185
|
+
}
|
|
13186
|
+
}
|
|
13187
|
+
load(src) {
|
|
13188
|
+
const options = {
|
|
13189
|
+
container: this.container,
|
|
13190
|
+
loop: false,
|
|
13191
|
+
autoplay: false,
|
|
13192
|
+
renderer: this.renderer,
|
|
13193
|
+
rendererSettings: {
|
|
13194
|
+
scaleMode: 'noScale',
|
|
13195
|
+
clearCanvas: false,
|
|
13196
|
+
progressiveLoad: true,
|
|
13197
|
+
hideOnTransparent: true,
|
|
13198
|
+
},
|
|
13199
|
+
};
|
|
13200
|
+
try {
|
|
13201
|
+
const srcParsed = parseSrc(src);
|
|
13202
|
+
const srcAttrib = typeof srcParsed === 'string' ? 'path' : 'animationData';
|
|
13203
|
+
// Clear previous animation, if any
|
|
13204
|
+
if (this._lottie) {
|
|
13205
|
+
this._lottie.destroy();
|
|
13206
|
+
}
|
|
13207
|
+
// Initialize lottie player and load animation
|
|
13208
|
+
this._lottie = lottie_svg.loadAnimation(Object.assign(Object.assign({}, options), { [srcAttrib]: srcParsed }));
|
|
13209
|
+
}
|
|
13210
|
+
catch (err) {
|
|
13211
|
+
this.currentState = PlayerState.Error;
|
|
13212
|
+
this.error.emit();
|
|
13213
|
+
return;
|
|
13214
|
+
}
|
|
13215
|
+
if (this._lottie) {
|
|
13216
|
+
// Calculate and save the current progress of the animation
|
|
13217
|
+
this._lottie.addEventListener('enterFrame', () => {
|
|
13218
|
+
this.seeker = (this._lottie.currentFrame / this._lottie.totalFrames) * 100;
|
|
13219
|
+
this.frame.emit({
|
|
13220
|
+
frame: this._lottie.currentFrame,
|
|
13221
|
+
seeker: this.seeker
|
|
13222
|
+
});
|
|
13223
|
+
});
|
|
13224
|
+
// Handle animation play complete
|
|
13225
|
+
this._lottie.addEventListener('complete', () => {
|
|
13226
|
+
if (this.currentState !== PlayerState.Playing) {
|
|
13227
|
+
this.complete.emit();
|
|
13228
|
+
return;
|
|
13229
|
+
}
|
|
13230
|
+
if (!this.loop || (this.count && this._counter >= this.count)) {
|
|
13231
|
+
this.complete.emit();
|
|
13232
|
+
return;
|
|
13233
|
+
}
|
|
13234
|
+
if (this.mode === PlayMode.Bounce) {
|
|
13235
|
+
if (this.count) {
|
|
13236
|
+
this._counter += 0.5;
|
|
13237
|
+
}
|
|
13238
|
+
setTimeout(() => {
|
|
13239
|
+
this.looped.emit();
|
|
13240
|
+
if (this.currentState === PlayerState.Playing) {
|
|
13241
|
+
this._lottie.setDirection(this._lottie.playDirection * -1);
|
|
13242
|
+
this._lottie.play();
|
|
13243
|
+
}
|
|
13244
|
+
}, this.intermission);
|
|
13245
|
+
}
|
|
13246
|
+
else {
|
|
13247
|
+
if (this.count) {
|
|
13248
|
+
this._counter += 1;
|
|
13249
|
+
}
|
|
13250
|
+
window.setTimeout(() => {
|
|
13251
|
+
this.looped.emit();
|
|
13252
|
+
if (this.currentState === PlayerState.Playing) {
|
|
13253
|
+
this._lottie.stop();
|
|
13254
|
+
this._lottie.play();
|
|
13255
|
+
}
|
|
13256
|
+
}, this.intermission);
|
|
13257
|
+
}
|
|
13258
|
+
});
|
|
13259
|
+
// Handle lottie-web ready event
|
|
13260
|
+
this._lottie.addEventListener('DOMLoaded', () => {
|
|
13261
|
+
this.ready.emit();
|
|
13262
|
+
});
|
|
13263
|
+
// Handle animation data load complete
|
|
13264
|
+
this._lottie.addEventListener('data_ready', () => {
|
|
13265
|
+
this.loaded.emit();
|
|
13266
|
+
});
|
|
13267
|
+
// Set error state when animation load fail event triggers
|
|
13268
|
+
this._lottie.addEventListener('data_failed', () => {
|
|
13269
|
+
this.currentState = PlayerState.Error;
|
|
13270
|
+
this.error.emit();
|
|
13271
|
+
});
|
|
13272
|
+
// Set handlers to auto play animation on hover if enabled
|
|
13273
|
+
this.container.addEventListener('mouseenter', () => {
|
|
13274
|
+
if (this.hover && this.currentState !== PlayerState.Playing) {
|
|
13275
|
+
this.play();
|
|
13276
|
+
}
|
|
13277
|
+
});
|
|
13278
|
+
this.container.addEventListener('mouseleave', () => {
|
|
13279
|
+
if (this.hover && this.currentState === PlayerState.Playing) {
|
|
13280
|
+
this.stop();
|
|
13281
|
+
}
|
|
13282
|
+
});
|
|
13283
|
+
// Set initial playback speed and direction
|
|
13284
|
+
this.setSpeed(this.speed);
|
|
13285
|
+
this.setDirection(this.direction);
|
|
13286
|
+
// Start playing if autoplay is enabled
|
|
13287
|
+
if (this.autoplay) {
|
|
13288
|
+
this.play();
|
|
13289
|
+
}
|
|
13290
|
+
}
|
|
13291
|
+
}
|
|
13292
|
+
/**
|
|
13293
|
+
* Start playing animation.
|
|
13294
|
+
*/
|
|
13295
|
+
async play() {
|
|
13296
|
+
if (!this._lottie) {
|
|
13297
|
+
return;
|
|
13298
|
+
}
|
|
13299
|
+
this._lottie.play();
|
|
13300
|
+
this.currentState = PlayerState.Playing;
|
|
13301
|
+
this.playing.emit();
|
|
13302
|
+
}
|
|
13303
|
+
/**
|
|
13304
|
+
* Stop playing animation.
|
|
13305
|
+
*/
|
|
13306
|
+
async pause() {
|
|
13307
|
+
if (!this._lottie) {
|
|
13308
|
+
return;
|
|
13309
|
+
}
|
|
13310
|
+
this._lottie.pause();
|
|
13311
|
+
this.currentState = PlayerState.Paused;
|
|
13312
|
+
this.paused.emit();
|
|
13313
|
+
}
|
|
13314
|
+
/**
|
|
13315
|
+
* Stops animation play.
|
|
13316
|
+
*/
|
|
13317
|
+
async stop() {
|
|
13318
|
+
if (!this._lottie) {
|
|
13319
|
+
return;
|
|
13320
|
+
}
|
|
13321
|
+
this._counter = 0;
|
|
13322
|
+
this._lottie.stop();
|
|
13323
|
+
this.currentState = PlayerState.Stopped;
|
|
13324
|
+
this.stopped.emit();
|
|
13325
|
+
}
|
|
13326
|
+
/**
|
|
13327
|
+
* Seek to a given frame.
|
|
13328
|
+
*/
|
|
13329
|
+
async seek(value) {
|
|
13330
|
+
if (!this._lottie) {
|
|
13331
|
+
return;
|
|
13332
|
+
}
|
|
13333
|
+
// Extract frame number from either number or percentage value
|
|
13334
|
+
const matches = value.toString().match(/^([0-9]+)(%?)$/);
|
|
13335
|
+
if (!matches) {
|
|
13336
|
+
return;
|
|
13337
|
+
}
|
|
13338
|
+
// Calculate and set the frame number
|
|
13339
|
+
const frame = matches[2] === '%'
|
|
13340
|
+
? this._lottie.totalFrames * Number(matches[1]) / 100
|
|
13341
|
+
: matches[1];
|
|
13342
|
+
// Set seeker to new frame number
|
|
13343
|
+
this.seeker = frame;
|
|
13344
|
+
// Send lottie player to the new frame
|
|
13345
|
+
if (this.currentState === PlayerState.Playing) {
|
|
13346
|
+
this._lottie.goToAndPlay(frame, true);
|
|
13347
|
+
}
|
|
13348
|
+
else {
|
|
13349
|
+
this._lottie.goToAndStop(frame, true);
|
|
13350
|
+
this._lottie.pause();
|
|
13351
|
+
}
|
|
13352
|
+
}
|
|
13353
|
+
/**
|
|
13354
|
+
* Freeze animation play.
|
|
13355
|
+
* This internal state pauses animation and is used to differentiate between
|
|
13356
|
+
* user requested pauses and component instigated pauses.
|
|
13357
|
+
*/
|
|
13358
|
+
freeze() {
|
|
13359
|
+
if (!this._lottie) {
|
|
13360
|
+
return;
|
|
13361
|
+
}
|
|
13362
|
+
this.currentState = PlayerState.Frozen;
|
|
13363
|
+
this.freezed.emit();
|
|
13364
|
+
}
|
|
13365
|
+
async getLottie() {
|
|
13366
|
+
return this._lottie;
|
|
13367
|
+
}
|
|
13368
|
+
/**
|
|
13369
|
+
* Sets animation play speed
|
|
13370
|
+
* @param value Playback speed.
|
|
13371
|
+
*/
|
|
13372
|
+
async setSpeed(value = 1) {
|
|
13373
|
+
if (!this._lottie) {
|
|
13374
|
+
return;
|
|
13375
|
+
}
|
|
13376
|
+
this._lottie.setSpeed(value);
|
|
13377
|
+
}
|
|
13378
|
+
/**
|
|
13379
|
+
* Animation play direction.
|
|
13380
|
+
* @param value Direction values.
|
|
13381
|
+
*/
|
|
13382
|
+
async setDirection(value) {
|
|
13383
|
+
if (!this._lottie) {
|
|
13384
|
+
return;
|
|
13385
|
+
}
|
|
13386
|
+
this._lottie.setDirection(value);
|
|
13387
|
+
}
|
|
13388
|
+
/**
|
|
13389
|
+
* Sets the looping of the animation.
|
|
13390
|
+
*
|
|
13391
|
+
* @param value Whether to enable looping. Boolean true enables looping.
|
|
13392
|
+
*/
|
|
13393
|
+
async setLooping(value) {
|
|
13394
|
+
if (this._lottie) {
|
|
13395
|
+
this.loop = value;
|
|
13396
|
+
this._lottie.loop = value;
|
|
13397
|
+
}
|
|
13398
|
+
}
|
|
13399
|
+
/**
|
|
13400
|
+
* Toggle playing state.
|
|
13401
|
+
*/
|
|
13402
|
+
async togglePlay() {
|
|
13403
|
+
return this.currentState === PlayerState.Playing
|
|
13404
|
+
? this.pause()
|
|
13405
|
+
: this.play();
|
|
13406
|
+
}
|
|
13407
|
+
/**
|
|
13408
|
+
* Toggles animation looping.
|
|
13409
|
+
*/
|
|
13410
|
+
async toggleLooping() {
|
|
13411
|
+
this.setLooping(!this.loop);
|
|
13412
|
+
}
|
|
13413
|
+
renderButtonIcon(isPlaying) {
|
|
13414
|
+
if (isPlaying) {
|
|
13415
|
+
return (index.h("svg", { width: "24", height: "24" }, index.h("path", { d: "M14.016 5.016H18v13.969h-3.984V5.016zM6 18.984V5.015h3.984v13.969H6z" })));
|
|
13416
|
+
}
|
|
13417
|
+
return (index.h("svg", { width: "24", height: "24" }, index.h("path", { d: "M8.016 5.016L18.985 12 8.016 18.984V5.015z" })));
|
|
13418
|
+
}
|
|
13419
|
+
renderControls() {
|
|
13420
|
+
const isPlaying = this.currentState === PlayerState.Playing;
|
|
13421
|
+
const isPaused = this.currentState === PlayerState.Paused;
|
|
13422
|
+
const isStopped = this.currentState === PlayerState.Stopped;
|
|
13423
|
+
return (index.h("div", { class: 'toolbar' }, index.h("button", { class: {
|
|
13424
|
+
active: isPlaying || isPaused
|
|
13425
|
+
}, onClick: () => this.togglePlay() }, this.renderButtonIcon(isPlaying)), index.h("button", { class: {
|
|
13426
|
+
active: isStopped
|
|
13427
|
+
}, onClick: () => this.stop() }, index.h("svg", { width: "24", height: "24" }, index.h("path", { d: "M6 6h12v12H6V6z" }))), index.h("input", { class: "seeker", type: "range", min: "0", step: "1", max: "100", value: this.seeker, onInput: e => this.handleSeekChange(e), onMouseDown: () => { this._prevState = this.currentState; this.freeze(); }, onMouseUp: () => { this._prevState === PlayerState.Playing && this.play(); } }), index.h("button", { class: {
|
|
13428
|
+
'active': this.loop
|
|
13429
|
+
}, onClick: () => this.toggleLooping() }, index.h("svg", { width: "24", height: "24" }, index.h("path", { d: "M17.016 17.016v-4.031h1.969v6h-12v3l-3.984-3.984 3.984-3.984v3h10.031zM6.984 6.984v4.031H5.015v-6h12v-3l3.984 3.984-3.984 3.984v-3H6.984z" }))), index.h("a", { href: "https://www.lottiefiles.com/", target: "_blank" }, index.h("svg", { width: "24", height: "24", viewBox: "0 0 320 320", "fill-rule": "nonzero" }, index.h("rect", { fill: "#adadad", x: ".5", y: ".5", width: "100%", height: "100%", rx: "26.73" }), index.h("path", { d: "M251.304 65.44a16.55 16.55 0 0 1 13.927 18.789c-1.333 9.04-9.73 15.292-18.762 13.954-15.992-2.37-39.95 22.534-66.77 73.74-34.24 65.37-66.113 96.517-99.667 94.032-9.102-.674-15.93-8.612-15.258-17.723s8.592-15.96 17.695-15.286c16.57 1.227 40.908-24.737 67.97-76.4 34.46-65.79 66.764-96.157 100.866-91.105z", fill: "#fff" })))));
|
|
13430
|
+
}
|
|
13431
|
+
render() {
|
|
13432
|
+
return (index.h("div", { class: {
|
|
13433
|
+
main: true,
|
|
13434
|
+
controls: this.controls
|
|
13435
|
+
} }, index.h("div", { class: "animation", style: {
|
|
13436
|
+
background: this.background
|
|
13437
|
+
}, ref: ref => this.container = ref }, this.currentState === PlayerState.Error ? index.h("div", { class: "error" }, "\u26A0\uFE0F") : undefined), this.controls ? this.renderControls() : undefined));
|
|
13438
|
+
}
|
|
13439
|
+
/**
|
|
13440
|
+
* Handle visibility change events.
|
|
13441
|
+
*/
|
|
13442
|
+
onVisibilityChange() {
|
|
13443
|
+
if (document.hidden === true && this.currentState === PlayerState.Playing) {
|
|
13444
|
+
this.freeze();
|
|
13445
|
+
}
|
|
13446
|
+
else if (this.currentState === PlayerState.Frozen) {
|
|
13447
|
+
this.play();
|
|
13448
|
+
}
|
|
13449
|
+
}
|
|
13450
|
+
/**
|
|
13451
|
+
* Handles click and drag actions on the progress track.
|
|
13452
|
+
*/
|
|
13453
|
+
handleSeekChange(e) {
|
|
13454
|
+
if (!this._lottie || isNaN(e.target.value)) {
|
|
13455
|
+
return;
|
|
13456
|
+
}
|
|
13457
|
+
const frame = ((e.target.value / 100) * this._lottie.totalFrames);
|
|
13458
|
+
this.seek(frame);
|
|
13459
|
+
}
|
|
13460
|
+
};
|
|
13461
13461
|
LottiePlayer.style = lottiePlayerCss;
|
|
13462
13462
|
|
|
13463
13463
|
exports.lottie_player = LottiePlayer;
|