@universityofmaryland/web-elements-library 1.5.3 → 1.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/_types.d.ts +2 -9
- package/dist/_types.d.ts.map +1 -1
- package/dist/atomic/_types.d.ts +2 -2
- package/dist/atomic/_types.d.ts.map +1 -1
- package/dist/atomic/actions/icon.d.ts +1 -5
- package/dist/atomic/actions/icon.d.ts.map +1 -1
- package/dist/atomic/actions/icon.js +43 -48
- package/dist/atomic/actions/icon.js.map +1 -1
- package/dist/atomic/actions/icon.mjs +43 -48
- package/dist/atomic/actions/icon.mjs.map +1 -1
- package/dist/atomic/actions/text.d.ts +4 -16
- package/dist/atomic/actions/text.d.ts.map +1 -1
- package/dist/atomic/actions/text.js +82 -104
- package/dist/atomic/actions/text.js.map +1 -1
- package/dist/atomic/actions/text.mjs +81 -106
- package/dist/atomic/actions/text.mjs.map +1 -1
- package/dist/atomic/animations/actions/indicator.js +1 -1
- package/dist/atomic/animations/actions/indicator.js.map +1 -1
- package/dist/atomic/animations/actions/indicator.mjs +1 -1
- package/dist/atomic/animations/actions/indicator.mjs.map +1 -1
- package/dist/atomic/animations/brand/card-stack.d.ts +2 -1
- package/dist/atomic/animations/brand/card-stack.d.ts.map +1 -1
- package/dist/atomic/animations/brand/card-stack.js +148 -172
- package/dist/atomic/animations/brand/card-stack.js.map +1 -1
- package/dist/atomic/animations/brand/card-stack.mjs +140 -164
- package/dist/atomic/animations/brand/card-stack.mjs.map +1 -1
- package/dist/atomic/animations/brand/chevron-scroll.js +1 -1
- package/dist/atomic/animations/brand/chevron-scroll.js.map +1 -1
- package/dist/atomic/animations/brand/chevron-scroll.mjs +1 -1
- package/dist/atomic/animations/brand/chevron-scroll.mjs.map +1 -1
- package/dist/atomic/assets/image/background.d.ts +1 -5
- package/dist/atomic/assets/image/background.d.ts.map +1 -1
- package/dist/atomic/assets/image/background.js +40 -40
- package/dist/atomic/assets/image/background.js.map +1 -1
- package/dist/atomic/assets/image/background.mjs +23 -40
- package/dist/atomic/assets/image/background.mjs.map +1 -1
- package/dist/atomic/assets/image/gif.d.ts +1 -5
- package/dist/atomic/assets/image/gif.d.ts.map +1 -1
- package/dist/atomic/assets/image/gif.js +28 -12
- package/dist/atomic/assets/image/gif.js.map +1 -1
- package/dist/atomic/assets/image/gif.mjs +11 -12
- package/dist/atomic/assets/image/gif.mjs.map +1 -1
- package/dist/atomic/assets/image/placeholder.d.ts +1 -5
- package/dist/atomic/assets/image/placeholder.d.ts.map +1 -1
- package/dist/atomic/assets/video/observed-auto-play.d.ts +1 -9
- package/dist/atomic/assets/video/observed-auto-play.d.ts.map +1 -1
- package/dist/atomic/assets/video/observed-auto-play.js +9 -5
- package/dist/atomic/assets/video/observed-auto-play.js.map +1 -1
- package/dist/atomic/assets/video/observed-auto-play.mjs +9 -5
- package/dist/atomic/assets/video/observed-auto-play.mjs.map +1 -1
- package/dist/atomic/assets/video/toggle.d.ts +1 -9
- package/dist/atomic/assets/video/toggle.d.ts.map +1 -1
- package/dist/atomic/assets/video/toggle.js +38 -40
- package/dist/atomic/assets/video/toggle.js.map +1 -1
- package/dist/atomic/assets/video/toggle.mjs +21 -40
- package/dist/atomic/assets/video/toggle.mjs.map +1 -1
- package/dist/atomic/buttons/fullscreen.d.ts +1 -5
- package/dist/atomic/buttons/fullscreen.d.ts.map +1 -1
- package/dist/atomic/buttons/fullscreen.js +21 -15
- package/dist/atomic/buttons/fullscreen.js.map +1 -1
- package/dist/atomic/buttons/fullscreen.mjs +4 -15
- package/dist/atomic/buttons/fullscreen.mjs.map +1 -1
- package/dist/atomic/events/meta.d.ts +1 -5
- package/dist/atomic/events/meta.d.ts.map +1 -1
- package/dist/atomic/events/meta.js +48 -48
- package/dist/atomic/events/meta.js.map +1 -1
- package/dist/atomic/events/meta.mjs +31 -48
- package/dist/atomic/events/meta.mjs.map +1 -1
- package/dist/atomic/events/sign.d.ts +1 -5
- package/dist/atomic/events/sign.d.ts.map +1 -1
- package/dist/atomic/events/sign.js +84 -93
- package/dist/atomic/events/sign.js.map +1 -1
- package/dist/atomic/events/sign.mjs +82 -93
- package/dist/atomic/events/sign.mjs.map +1 -1
- package/dist/atomic/layout/block/stacked.d.ts +7 -19
- package/dist/atomic/layout/block/stacked.d.ts.map +1 -1
- package/dist/atomic/layout/block/stacked.js +14 -20
- package/dist/atomic/layout/block/stacked.js.map +1 -1
- package/dist/atomic/layout/block/stacked.mjs +14 -20
- package/dist/atomic/layout/block/stacked.mjs.map +1 -1
- package/dist/atomic/layout/overlay/modal.js +1 -1
- package/dist/atomic/layout/overlay/modal.js.map +1 -1
- package/dist/atomic/layout/overlay/modal.mjs +1 -1
- package/dist/atomic/layout/overlay/modal.mjs.map +1 -1
- package/dist/atomic/layout/person/columns.d.ts +4 -20
- package/dist/atomic/layout/person/columns.d.ts.map +1 -1
- package/dist/atomic/layout/person/columns.js +56 -66
- package/dist/atomic/layout/person/columns.js.map +1 -1
- package/dist/atomic/layout/person/columns.mjs +56 -66
- package/dist/atomic/layout/person/columns.mjs.map +1 -1
- package/dist/atomic/text/stat.d.ts +2 -3
- package/dist/atomic/text/stat.d.ts.map +1 -1
- package/dist/atomic/text/stat.js +101 -119
- package/dist/atomic/text/stat.js.map +1 -1
- package/dist/atomic/text/stat.mjs +100 -119
- package/dist/atomic/text/stat.mjs.map +1 -1
- package/dist/atomic/text-lockup/contact.d.ts +1 -5
- package/dist/atomic/text-lockup/contact.d.ts.map +1 -1
- package/dist/atomic/text-lockup/contact.js +65 -105
- package/dist/atomic/text-lockup/contact.js.map +1 -1
- package/dist/atomic/text-lockup/contact.mjs +60 -103
- package/dist/atomic/text-lockup/contact.mjs.map +1 -1
- package/dist/atomic/text-lockup/date.d.ts.map +1 -1
- package/dist/atomic/text-lockup/date.js +6 -1
- package/dist/atomic/text-lockup/date.js.map +1 -1
- package/dist/atomic/text-lockup/date.mjs +6 -1
- package/dist/atomic/text-lockup/date.mjs.map +1 -1
- package/dist/atomic/text-lockup/large.d.ts +3 -7
- package/dist/atomic/text-lockup/large.d.ts.map +1 -1
- package/dist/atomic/text-lockup/large.js +62 -71
- package/dist/atomic/text-lockup/large.js.map +1 -1
- package/dist/atomic/text-lockup/large.mjs +59 -71
- package/dist/atomic/text-lockup/large.mjs.map +1 -1
- package/dist/atomic/text-lockup/medium.d.ts +5 -9
- package/dist/atomic/text-lockup/medium.d.ts.map +1 -1
- package/dist/atomic/text-lockup/medium.js +76 -84
- package/dist/atomic/text-lockup/medium.js.map +1 -1
- package/dist/atomic/text-lockup/medium.mjs +70 -82
- package/dist/atomic/text-lockup/medium.mjs.map +1 -1
- package/dist/atomic/text-lockup/person.d.ts +1 -5
- package/dist/atomic/text-lockup/person.d.ts.map +1 -1
- package/dist/atomic/text-lockup/person.js +102 -101
- package/dist/atomic/text-lockup/person.js.map +1 -1
- package/dist/atomic/text-lockup/person.mjs +99 -101
- package/dist/atomic/text-lockup/person.mjs.map +1 -1
- package/dist/atomic/text-lockup/small-scaling.d.ts +1 -5
- package/dist/atomic/text-lockup/small-scaling.d.ts.map +1 -1
- package/dist/atomic/text-lockup/small-scaling.js +64 -39
- package/dist/atomic/text-lockup/small-scaling.js.map +1 -1
- package/dist/atomic/text-lockup/small-scaling.mjs +44 -38
- package/dist/atomic/text-lockup/small-scaling.mjs.map +1 -1
- package/dist/atomic/text-lockup/small.d.ts +11 -25
- package/dist/atomic/text-lockup/small.d.ts.map +1 -1
- package/dist/atomic/text-lockup/small.js +70 -69
- package/dist/atomic/text-lockup/small.js.map +1 -1
- package/dist/atomic/text-lockup/small.mjs +64 -66
- package/dist/atomic/text-lockup/small.mjs.map +1 -1
- package/dist/composite/alert/elements/closeButton.d.ts +7 -0
- package/dist/composite/alert/elements/closeButton.d.ts.map +1 -0
- package/dist/composite/alert/elements/closeButton.js +51 -0
- package/dist/composite/alert/elements/closeButton.js.map +1 -0
- package/dist/composite/alert/elements/closeButton.mjs +34 -0
- package/dist/composite/alert/elements/closeButton.mjs.map +1 -0
- package/dist/composite/alert/elements/text.d.ts +3 -13
- package/dist/composite/alert/elements/text.d.ts.map +1 -1
- package/dist/composite/alert/elements/text.js +60 -81
- package/dist/composite/alert/elements/text.js.map +1 -1
- package/dist/composite/alert/elements/text.mjs +56 -80
- package/dist/composite/alert/elements/text.mjs.map +1 -1
- package/dist/composite/alert/globals.d.ts +4 -0
- package/dist/composite/alert/globals.d.ts.map +1 -0
- package/dist/composite/alert/globals.js +7 -0
- package/dist/composite/alert/globals.js.map +1 -0
- package/dist/composite/alert/globals.mjs +7 -0
- package/dist/composite/alert/globals.mjs.map +1 -0
- package/dist/composite/alert/index.d.ts +2 -2
- package/dist/composite/alert/index.d.ts.map +1 -1
- package/dist/composite/alert/index.js +2 -2
- package/dist/composite/alert/index.mjs +4 -4
- package/dist/composite/alert/page.d.ts +5 -12
- package/dist/composite/alert/page.d.ts.map +1 -1
- package/dist/composite/alert/page.js +44 -113
- package/dist/composite/alert/page.js.map +1 -1
- package/dist/composite/alert/page.mjs +44 -112
- package/dist/composite/alert/page.mjs.map +1 -1
- package/dist/composite/alert/site.d.ts +5 -11
- package/dist/composite/alert/site.d.ts.map +1 -1
- package/dist/composite/alert/site.js +60 -109
- package/dist/composite/alert/site.js.map +1 -1
- package/dist/composite/alert/site.mjs +61 -109
- package/dist/composite/alert/site.mjs.map +1 -1
- package/dist/composite/banner/promo.js +1 -1
- package/dist/composite/banner/promo.js.map +1 -1
- package/dist/composite/banner/promo.mjs +1 -1
- package/dist/composite/banner/promo.mjs.map +1 -1
- package/dist/composite/card/block.d.ts +1 -5
- package/dist/composite/card/block.d.ts.map +1 -1
- package/dist/composite/card/block.js +7 -5
- package/dist/composite/card/block.js.map +1 -1
- package/dist/composite/card/block.mjs +7 -5
- package/dist/composite/card/block.mjs.map +1 -1
- package/dist/composite/card/list.d.ts +1 -5
- package/dist/composite/card/list.d.ts.map +1 -1
- package/dist/composite/card/list.js +52 -64
- package/dist/composite/card/list.js.map +1 -1
- package/dist/composite/card/list.mjs +52 -64
- package/dist/composite/card/list.mjs.map +1 -1
- package/dist/composite/card/overlay/color.d.ts +1 -5
- package/dist/composite/card/overlay/color.d.ts.map +1 -1
- package/dist/composite/card/overlay/color.js +36 -41
- package/dist/composite/card/overlay/color.js.map +1 -1
- package/dist/composite/card/overlay/color.mjs +36 -41
- package/dist/composite/card/overlay/color.mjs.map +1 -1
- package/dist/composite/card/overlay/icon.d.ts +1 -5
- package/dist/composite/card/overlay/icon.d.ts.map +1 -1
- package/dist/composite/card/overlay/icon.js +27 -31
- package/dist/composite/card/overlay/icon.js.map +1 -1
- package/dist/composite/card/overlay/icon.mjs +27 -31
- package/dist/composite/card/overlay/icon.mjs.map +1 -1
- package/dist/composite/card/overlay/image.d.ts +2 -1
- package/dist/composite/card/overlay/image.d.ts.map +1 -1
- package/dist/composite/card/overlay/image.js +74 -93
- package/dist/composite/card/overlay/image.js.map +1 -1
- package/dist/composite/card/overlay/image.mjs +73 -93
- package/dist/composite/card/overlay/image.mjs.map +1 -1
- package/dist/composite/card/video/block.d.ts +1 -9
- package/dist/composite/card/video/block.d.ts.map +1 -1
- package/dist/composite/card/video/block.js +7 -5
- package/dist/composite/card/video/block.js.map +1 -1
- package/dist/composite/card/video/block.mjs +7 -5
- package/dist/composite/card/video/block.mjs.map +1 -1
- package/dist/composite/card/video/short.d.ts +1 -5
- package/dist/composite/card/video/short.d.ts.map +1 -1
- package/dist/composite/card/video/short.js +16 -21
- package/dist/composite/card/video/short.js.map +1 -1
- package/dist/composite/card/video/short.mjs +16 -21
- package/dist/composite/card/video/short.mjs.map +1 -1
- package/dist/composite/carousel/_types.d.ts.map +1 -1
- package/dist/composite/carousel/default/index.js +1 -1
- package/dist/composite/carousel/default/index.js.map +1 -1
- package/dist/composite/carousel/default/index.mjs +1 -1
- package/dist/composite/carousel/default/index.mjs.map +1 -1
- package/dist/composite/carousel/elements/blocks.js +2 -2
- package/dist/composite/carousel/elements/blocks.js.map +1 -1
- package/dist/composite/carousel/elements/blocks.mjs +2 -2
- package/dist/composite/carousel/elements/blocks.mjs.map +1 -1
- package/dist/composite/carousel/elements/full-screen.js +7 -5
- package/dist/composite/carousel/elements/full-screen.js.map +1 -1
- package/dist/composite/carousel/elements/full-screen.mjs +7 -5
- package/dist/composite/carousel/elements/full-screen.mjs.map +1 -1
- package/dist/composite/carousel/elements/image.js +2 -2
- package/dist/composite/carousel/elements/image.js.map +1 -1
- package/dist/composite/carousel/elements/image.mjs +2 -2
- package/dist/composite/carousel/elements/image.mjs.map +1 -1
- package/dist/composite/carousel/elements/overlay.js +2 -2
- package/dist/composite/carousel/elements/overlay.js.map +1 -1
- package/dist/composite/carousel/elements/overlay.mjs +2 -2
- package/dist/composite/carousel/elements/overlay.mjs.map +1 -1
- package/dist/composite/carousel/image/multiple.js +11 -9
- package/dist/composite/carousel/image/multiple.js.map +1 -1
- package/dist/composite/carousel/image/multiple.mjs +11 -9
- package/dist/composite/carousel/image/multiple.mjs.map +1 -1
- package/dist/composite/carousel/image/standard.js +10 -8
- package/dist/composite/carousel/image/standard.js.map +1 -1
- package/dist/composite/carousel/image/standard.mjs +10 -8
- package/dist/composite/carousel/image/standard.mjs.map +1 -1
- package/dist/composite/carousel/thumbnail/index.js +1 -1
- package/dist/composite/carousel/thumbnail/index.js.map +1 -1
- package/dist/composite/carousel/thumbnail/index.mjs +1 -1
- package/dist/composite/carousel/thumbnail/index.mjs.map +1 -1
- package/dist/composite/carousel/wide/_elementModel.d.ts +2 -2
- package/dist/composite/carousel/wide/_elementModel.d.ts.map +1 -1
- package/dist/composite/carousel/wide/_elementModel.js +20 -7
- package/dist/composite/carousel/wide/_elementModel.js.map +1 -1
- package/dist/composite/carousel/wide/_elementModel.mjs +20 -7
- package/dist/composite/carousel/wide/_elementModel.mjs.map +1 -1
- package/dist/composite/carousel/wide/container.d.ts.map +1 -1
- package/dist/composite/carousel/wide/container.js +9 -15
- package/dist/composite/carousel/wide/container.js.map +1 -1
- package/dist/composite/carousel/wide/container.mjs +9 -15
- package/dist/composite/carousel/wide/container.mjs.map +1 -1
- package/dist/composite/carousel/wide/controls.d.ts +1 -5
- package/dist/composite/carousel/wide/controls.d.ts.map +1 -1
- package/dist/composite/carousel/wide/controls.js +55 -56
- package/dist/composite/carousel/wide/controls.js.map +1 -1
- package/dist/composite/carousel/wide/controls.mjs +55 -56
- package/dist/composite/carousel/wide/controls.mjs.map +1 -1
- package/dist/composite/carousel/wide/frames.d.ts.map +1 -1
- package/dist/composite/carousel/wide/frames.js +156 -171
- package/dist/composite/carousel/wide/frames.js.map +1 -1
- package/dist/composite/carousel/wide/frames.mjs +153 -169
- package/dist/composite/carousel/wide/frames.mjs.map +1 -1
- package/dist/composite/carousel/wide/index.d.ts +1 -5
- package/dist/composite/carousel/wide/index.d.ts.map +1 -1
- package/dist/composite/carousel/wide/index.js +23 -17
- package/dist/composite/carousel/wide/index.js.map +1 -1
- package/dist/composite/carousel/wide/index.mjs +23 -17
- package/dist/composite/carousel/wide/index.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/call-to-action.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/call-to-action.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/call-to-action.js +19 -28
- package/dist/composite/footer/elements/main-section/call-to-action.js.map +1 -1
- package/dist/composite/footer/elements/main-section/call-to-action.mjs +18 -28
- package/dist/composite/footer/elements/main-section/call-to-action.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/campaign.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/campaign.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/campaign.js +27 -35
- package/dist/composite/footer/elements/main-section/campaign.js.map +1 -1
- package/dist/composite/footer/elements/main-section/campaign.mjs +27 -35
- package/dist/composite/footer/elements/main-section/campaign.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/index.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/index.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/index.js +38 -50
- package/dist/composite/footer/elements/main-section/index.js.map +1 -1
- package/dist/composite/footer/elements/main-section/index.mjs +38 -50
- package/dist/composite/footer/elements/main-section/index.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/row-links/index.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/row-links/index.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/row-links/index.js +24 -36
- package/dist/composite/footer/elements/main-section/row-links/index.js.map +1 -1
- package/dist/composite/footer/elements/main-section/row-links/index.mjs +24 -36
- package/dist/composite/footer/elements/main-section/row-links/index.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/row-links/link-columns.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/row-links/link-columns.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/row-links/link-columns.js +75 -95
- package/dist/composite/footer/elements/main-section/row-links/link-columns.js.map +1 -1
- package/dist/composite/footer/elements/main-section/row-links/link-columns.mjs +73 -93
- package/dist/composite/footer/elements/main-section/row-links/link-columns.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/contact.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/row-logo/contact.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/contact.js +88 -98
- package/dist/composite/footer/elements/main-section/row-logo/contact.js.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/contact.mjs +88 -98
- package/dist/composite/footer/elements/main-section/row-logo/contact.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/index.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/row-logo/index.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/index.js +30 -43
- package/dist/composite/footer/elements/main-section/row-logo/index.js.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/index.mjs +30 -43
- package/dist/composite/footer/elements/main-section/row-logo/index.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/logo.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/row-logo/logo.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/logo.js +24 -32
- package/dist/composite/footer/elements/main-section/row-logo/logo.js.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/logo.mjs +24 -32
- package/dist/composite/footer/elements/main-section/row-logo/logo.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/social.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/social.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/social.js +74 -97
- package/dist/composite/footer/elements/main-section/social.js.map +1 -1
- package/dist/composite/footer/elements/main-section/social.mjs +74 -97
- package/dist/composite/footer/elements/main-section/social.mjs.map +1 -1
- package/dist/composite/footer/elements/utility-section/index.d.ts +1 -5
- package/dist/composite/footer/elements/utility-section/index.d.ts.map +1 -1
- package/dist/composite/footer/elements/utility-section/index.js +56 -83
- package/dist/composite/footer/elements/utility-section/index.js.map +1 -1
- package/dist/composite/footer/elements/utility-section/index.mjs +56 -83
- package/dist/composite/footer/elements/utility-section/index.mjs.map +1 -1
- package/dist/composite/footer/options.d.ts +1 -4
- package/dist/composite/footer/options.d.ts.map +1 -1
- package/dist/composite/footer/options.js +19 -27
- package/dist/composite/footer/options.js.map +1 -1
- package/dist/composite/footer/options.mjs +19 -27
- package/dist/composite/footer/options.mjs.map +1 -1
- package/dist/composite/hero/_types.d.ts.map +1 -1
- package/dist/composite/hero/custom/expand.d.ts +3 -2
- package/dist/composite/hero/custom/expand.d.ts.map +1 -1
- package/dist/composite/hero/custom/expand.js +151 -192
- package/dist/composite/hero/custom/expand.js.map +1 -1
- package/dist/composite/hero/custom/expand.mjs +145 -187
- package/dist/composite/hero/custom/expand.mjs.map +1 -1
- package/dist/composite/hero/custom/grid.d.ts +1 -5
- package/dist/composite/hero/custom/grid.d.ts.map +1 -1
- package/dist/composite/hero/custom/grid.js +122 -171
- package/dist/composite/hero/custom/grid.js.map +1 -1
- package/dist/composite/hero/custom/grid.mjs +116 -166
- package/dist/composite/hero/custom/grid.mjs.map +1 -1
- package/dist/composite/hero/custom/video-arrow.d.ts +2 -1
- package/dist/composite/hero/custom/video-arrow.d.ts.map +1 -1
- package/dist/composite/hero/custom/video-arrow.js +83 -105
- package/dist/composite/hero/custom/video-arrow.js.map +1 -1
- package/dist/composite/hero/custom/video-arrow.mjs +77 -99
- package/dist/composite/hero/custom/video-arrow.mjs.map +1 -1
- package/dist/composite/hero/logo.d.ts +1 -5
- package/dist/composite/hero/logo.d.ts.map +1 -1
- package/dist/composite/hero/logo.js +71 -89
- package/dist/composite/hero/logo.js.map +1 -1
- package/dist/composite/hero/logo.mjs +68 -87
- package/dist/composite/hero/logo.mjs.map +1 -1
- package/dist/composite/hero/minimal.d.ts +1 -5
- package/dist/composite/hero/minimal.d.ts.map +1 -1
- package/dist/composite/hero/minimal.js +67 -86
- package/dist/composite/hero/minimal.js.map +1 -1
- package/dist/composite/hero/minimal.mjs +63 -83
- package/dist/composite/hero/minimal.mjs.map +1 -1
- package/dist/composite/hero/overlay.d.ts +1 -5
- package/dist/composite/hero/overlay.d.ts.map +1 -1
- package/dist/composite/hero/overlay.js +107 -135
- package/dist/composite/hero/overlay.js.map +1 -1
- package/dist/composite/hero/overlay.mjs +103 -132
- package/dist/composite/hero/overlay.mjs.map +1 -1
- package/dist/composite/hero/stacked.d.ts +1 -5
- package/dist/composite/hero/stacked.d.ts.map +1 -1
- package/dist/composite/hero/stacked.js +114 -137
- package/dist/composite/hero/stacked.js.map +1 -1
- package/dist/composite/hero/stacked.mjs +110 -134
- package/dist/composite/hero/stacked.mjs.map +1 -1
- package/dist/composite/hero/standard.d.ts +1 -5
- package/dist/composite/hero/standard.d.ts.map +1 -1
- package/dist/composite/hero/standard.js +103 -116
- package/dist/composite/hero/standard.js.map +1 -1
- package/dist/composite/hero/standard.mjs +100 -114
- package/dist/composite/hero/standard.mjs.map +1 -1
- package/dist/composite/layout/box/logo.js +1 -1
- package/dist/composite/layout/box/logo.js.map +1 -1
- package/dist/composite/layout/box/logo.mjs +1 -1
- package/dist/composite/layout/box/logo.mjs.map +1 -1
- package/dist/composite/layout/image/expand.js +1 -1
- package/dist/composite/layout/image/expand.js.map +1 -1
- package/dist/composite/layout/image/expand.mjs +1 -1
- package/dist/composite/layout/image/expand.mjs.map +1 -1
- package/dist/composite/layout/scroll-top/index.js +1 -1
- package/dist/composite/layout/scroll-top/index.js.map +1 -1
- package/dist/composite/layout/scroll-top/index.mjs +1 -1
- package/dist/composite/layout/scroll-top/index.mjs.map +1 -1
- package/dist/composite/layout/section-intro/small.d.ts +2 -1
- package/dist/composite/layout/section-intro/small.d.ts.map +1 -1
- package/dist/composite/layout/section-intro/small.js +97 -107
- package/dist/composite/layout/section-intro/small.js.map +1 -1
- package/dist/composite/layout/section-intro/small.mjs +95 -106
- package/dist/composite/layout/section-intro/small.mjs.map +1 -1
- package/dist/composite/layout/section-intro/wide.d.ts +2 -2
- package/dist/composite/layout/section-intro/wide.d.ts.map +1 -1
- package/dist/composite/layout/section-intro/wide.js +40 -53
- package/dist/composite/layout/section-intro/wide.js.map +1 -1
- package/dist/composite/layout/section-intro/wide.mjs +39 -53
- package/dist/composite/layout/section-intro/wide.mjs.map +1 -1
- package/dist/composite/layout/sticky-columns/index.js +1 -1
- package/dist/composite/layout/sticky-columns/index.js.map +1 -1
- package/dist/composite/layout/sticky-columns/index.mjs +1 -1
- package/dist/composite/layout/sticky-columns/index.mjs.map +1 -1
- package/dist/composite/media/elements/caption.js +1 -1
- package/dist/composite/media/elements/caption.js.map +1 -1
- package/dist/composite/media/elements/caption.mjs +1 -1
- package/dist/composite/media/elements/caption.mjs.map +1 -1
- package/dist/composite/media/elements/gif.d.ts +3 -2
- package/dist/composite/media/elements/gif.d.ts.map +1 -1
- package/dist/composite/media/elements/gif.js +25 -27
- package/dist/composite/media/elements/gif.js.map +1 -1
- package/dist/composite/media/elements/gif.mjs +25 -27
- package/dist/composite/media/elements/gif.mjs.map +1 -1
- package/dist/composite/media/inline/caption.js +2 -2
- package/dist/composite/media/inline/caption.js.map +1 -1
- package/dist/composite/media/inline/caption.mjs +2 -2
- package/dist/composite/media/inline/caption.mjs.map +1 -1
- package/dist/composite/media/inline/wrapped.js +2 -2
- package/dist/composite/media/inline/wrapped.js.map +1 -1
- package/dist/composite/media/inline/wrapped.mjs +2 -2
- package/dist/composite/media/inline/wrapped.mjs.map +1 -1
- package/dist/composite/navigation/elements/breadcrumb/index.js +1 -1
- package/dist/composite/navigation/elements/breadcrumb/index.js.map +1 -1
- package/dist/composite/navigation/elements/breadcrumb/index.mjs +1 -1
- package/dist/composite/navigation/elements/breadcrumb/index.mjs.map +1 -1
- package/dist/composite/navigation/elements/drawer/index.js +1 -1
- package/dist/composite/navigation/elements/drawer/index.js.map +1 -1
- package/dist/composite/navigation/elements/drawer/index.mjs +1 -1
- package/dist/composite/navigation/elements/drawer/index.mjs.map +1 -1
- package/dist/composite/navigation/elements/item/index.js +1 -1
- package/dist/composite/navigation/elements/item/index.js.map +1 -1
- package/dist/composite/navigation/elements/item/index.mjs +1 -1
- package/dist/composite/navigation/elements/item/index.mjs.map +1 -1
- package/dist/composite/navigation/elements/menu-button/index.js +1 -1
- package/dist/composite/navigation/elements/menu-button/index.js.map +1 -1
- package/dist/composite/navigation/elements/menu-button/index.mjs +1 -1
- package/dist/composite/navigation/elements/menu-button/index.mjs.map +1 -1
- package/dist/composite/navigation/elements/slider/action.js +1 -1
- package/dist/composite/navigation/elements/slider/action.js.map +1 -1
- package/dist/composite/navigation/elements/slider/action.mjs +1 -1
- package/dist/composite/navigation/elements/slider/action.mjs.map +1 -1
- package/dist/composite/navigation/elements/slider/index.js +1 -1
- package/dist/composite/navigation/elements/slider/index.js.map +1 -1
- package/dist/composite/navigation/elements/slider/index.mjs +1 -1
- package/dist/composite/navigation/elements/slider/index.mjs.map +1 -1
- package/dist/composite/navigation/elements/slider/slide-first.js +1 -1
- package/dist/composite/navigation/elements/slider/slide-first.js.map +1 -1
- package/dist/composite/navigation/elements/slider/slide-first.mjs +1 -1
- package/dist/composite/navigation/elements/slider/slide-first.mjs.map +1 -1
- package/dist/composite/navigation/elements/slider/slides.js +1 -1
- package/dist/composite/navigation/elements/slider/slides.js.map +1 -1
- package/dist/composite/navigation/elements/slider/slides.mjs +1 -1
- package/dist/composite/navigation/elements/slider/slides.mjs.map +1 -1
- package/dist/composite/navigation/header.js +1 -1
- package/dist/composite/navigation/header.js.map +1 -1
- package/dist/composite/navigation/header.mjs +1 -1
- package/dist/composite/navigation/header.mjs.map +1 -1
- package/dist/composite/navigation/utility/alert.js +8 -4
- package/dist/composite/navigation/utility/alert.js.map +1 -1
- package/dist/composite/navigation/utility/alert.mjs +8 -4
- package/dist/composite/navigation/utility/alert.mjs.map +1 -1
- package/dist/composite/navigation/utility/index.d.ts.map +1 -1
- package/dist/composite/navigation/utility/index.js +90 -13
- package/dist/composite/navigation/utility/index.js.map +1 -1
- package/dist/composite/navigation/utility/index.mjs +90 -13
- package/dist/composite/navigation/utility/index.mjs.map +1 -1
- package/dist/composite/navigation/utility/search.js +1 -1
- package/dist/composite/navigation/utility/search.js.map +1 -1
- package/dist/composite/navigation/utility/search.mjs +1 -1
- package/dist/composite/navigation/utility/search.mjs.map +1 -1
- package/dist/composite/pathway/_common.d.ts +4 -20
- package/dist/composite/pathway/_common.d.ts.map +1 -1
- package/dist/composite/pathway/_common.js +62 -64
- package/dist/composite/pathway/_common.js.map +1 -1
- package/dist/composite/pathway/_common.mjs +56 -60
- package/dist/composite/pathway/_common.mjs.map +1 -1
- package/dist/composite/pathway/hero.d.ts +1 -5
- package/dist/composite/pathway/hero.d.ts.map +1 -1
- package/dist/composite/pathway/hero.js +119 -140
- package/dist/composite/pathway/hero.js.map +1 -1
- package/dist/composite/pathway/hero.mjs +113 -135
- package/dist/composite/pathway/hero.mjs.map +1 -1
- package/dist/composite/pathway/highlight.d.ts +1 -5
- package/dist/composite/pathway/highlight.d.ts.map +1 -1
- package/dist/composite/pathway/highlight.js +99 -129
- package/dist/composite/pathway/highlight.js.map +1 -1
- package/dist/composite/pathway/highlight.mjs +98 -129
- package/dist/composite/pathway/highlight.mjs.map +1 -1
- package/dist/composite/pathway/overlay.d.ts +2 -1
- package/dist/composite/pathway/overlay.d.ts.map +1 -1
- package/dist/composite/pathway/overlay.js +125 -153
- package/dist/composite/pathway/overlay.js.map +1 -1
- package/dist/composite/pathway/overlay.mjs +122 -151
- package/dist/composite/pathway/overlay.mjs.map +1 -1
- package/dist/composite/pathway/standard.d.ts +2 -1
- package/dist/composite/pathway/standard.d.ts.map +1 -1
- package/dist/composite/pathway/standard.js +96 -123
- package/dist/composite/pathway/standard.js.map +1 -1
- package/dist/composite/pathway/standard.mjs +95 -123
- package/dist/composite/pathway/standard.mjs.map +1 -1
- package/dist/composite/pathway/sticky.d.ts +1 -5
- package/dist/composite/pathway/sticky.d.ts.map +1 -1
- package/dist/composite/pathway/sticky.js +91 -116
- package/dist/composite/pathway/sticky.js.map +1 -1
- package/dist/composite/pathway/sticky.mjs +88 -114
- package/dist/composite/pathway/sticky.mjs.map +1 -1
- package/dist/composite/person/bio/full.d.ts +2 -5
- package/dist/composite/person/bio/full.d.ts.map +1 -1
- package/dist/composite/person/bio/full.js +53 -57
- package/dist/composite/person/bio/full.js.map +1 -1
- package/dist/composite/person/bio/full.mjs +52 -57
- package/dist/composite/person/bio/full.mjs.map +1 -1
- package/dist/composite/person/bio/small.d.ts +2 -5
- package/dist/composite/person/bio/small.d.ts.map +1 -1
- package/dist/composite/person/bio/small.js +85 -98
- package/dist/composite/person/bio/small.js.map +1 -1
- package/dist/composite/person/bio/small.mjs +84 -98
- package/dist/composite/person/bio/small.mjs.map +1 -1
- package/dist/composite/person/block.d.ts +2 -5
- package/dist/composite/person/block.d.ts.map +1 -1
- package/dist/composite/person/block.js +34 -42
- package/dist/composite/person/block.js.map +1 -1
- package/dist/composite/person/block.mjs +34 -42
- package/dist/composite/person/block.mjs.map +1 -1
- package/dist/composite/person/hero.d.ts +2 -5
- package/dist/composite/person/hero.d.ts.map +1 -1
- package/dist/composite/person/hero.js +160 -220
- package/dist/composite/person/hero.js.map +1 -1
- package/dist/composite/person/hero.mjs +159 -220
- package/dist/composite/person/hero.mjs.map +1 -1
- package/dist/composite/person/list.d.ts +2 -5
- package/dist/composite/person/list.d.ts.map +1 -1
- package/dist/composite/person/list.js +19 -19
- package/dist/composite/person/list.js.map +1 -1
- package/dist/composite/person/list.mjs +19 -19
- package/dist/composite/person/list.mjs.map +1 -1
- package/dist/composite/person/tabular.d.ts +2 -5
- package/dist/composite/person/tabular.d.ts.map +1 -1
- package/dist/composite/person/tabular.js +40 -36
- package/dist/composite/person/tabular.js.map +1 -1
- package/dist/composite/person/tabular.mjs +38 -36
- package/dist/composite/person/tabular.mjs.map +1 -1
- package/dist/composite/quote/elements/action.d.ts +1 -5
- package/dist/composite/quote/elements/action.d.ts.map +1 -1
- package/dist/composite/quote/elements/action.js +13 -17
- package/dist/composite/quote/elements/action.js.map +1 -1
- package/dist/composite/quote/elements/action.mjs +13 -17
- package/dist/composite/quote/elements/action.mjs.map +1 -1
- package/dist/composite/quote/elements/icon.d.ts +1 -5
- package/dist/composite/quote/elements/icon.d.ts.map +1 -1
- package/dist/composite/quote/elements/icon.js +37 -40
- package/dist/composite/quote/elements/icon.js.map +1 -1
- package/dist/composite/quote/elements/icon.mjs +37 -40
- package/dist/composite/quote/elements/icon.mjs.map +1 -1
- package/dist/composite/quote/elements/image.d.ts +1 -5
- package/dist/composite/quote/elements/image.d.ts.map +1 -1
- package/dist/composite/quote/elements/image.js +27 -35
- package/dist/composite/quote/elements/image.js.map +1 -1
- package/dist/composite/quote/elements/image.mjs +27 -35
- package/dist/composite/quote/elements/image.mjs.map +1 -1
- package/dist/composite/quote/elements/quote.d.ts +1 -5
- package/dist/composite/quote/elements/quote.d.ts.map +1 -1
- package/dist/composite/quote/elements/quote.js +37 -48
- package/dist/composite/quote/elements/quote.js.map +1 -1
- package/dist/composite/quote/elements/quote.mjs +35 -46
- package/dist/composite/quote/elements/quote.mjs.map +1 -1
- package/dist/composite/quote/elements/text.d.ts +1 -5
- package/dist/composite/quote/elements/text.d.ts.map +1 -1
- package/dist/composite/quote/elements/text.js +60 -73
- package/dist/composite/quote/elements/text.js.map +1 -1
- package/dist/composite/quote/elements/text.mjs +60 -73
- package/dist/composite/quote/elements/text.mjs.map +1 -1
- package/dist/composite/quote/featured.d.ts +2 -1
- package/dist/composite/quote/featured.d.ts.map +1 -1
- package/dist/composite/quote/featured.js +102 -135
- package/dist/composite/quote/featured.js.map +1 -1
- package/dist/composite/quote/featured.mjs +102 -135
- package/dist/composite/quote/featured.mjs.map +1 -1
- package/dist/composite/quote/helper/animation.d.ts +2 -2
- package/dist/composite/quote/helper/animation.d.ts.map +1 -1
- package/dist/composite/quote/helper/animation.js.map +1 -1
- package/dist/composite/quote/helper/animation.mjs.map +1 -1
- package/dist/composite/quote/inline.d.ts +2 -1
- package/dist/composite/quote/inline.d.ts.map +1 -1
- package/dist/composite/quote/inline.js +29 -45
- package/dist/composite/quote/inline.js.map +1 -1
- package/dist/composite/quote/inline.mjs +29 -45
- package/dist/composite/quote/inline.mjs.map +1 -1
- package/dist/composite/quote/statement.d.ts +1 -5
- package/dist/composite/quote/statement.d.ts.map +1 -1
- package/dist/composite/slider/events.js +1 -1
- package/dist/composite/slider/events.js.map +1 -1
- package/dist/composite/slider/events.mjs +1 -1
- package/dist/composite/slider/events.mjs.map +1 -1
- package/dist/composite/social/sharing.js +1 -1
- package/dist/composite/social/sharing.js.map +1 -1
- package/dist/composite/social/sharing.mjs +1 -1
- package/dist/composite/social/sharing.mjs.map +1 -1
- package/dist/composite/tabs/standard.d.ts.map +1 -1
- package/dist/composite/tabs/standard.js +3 -2
- package/dist/composite/tabs/standard.js.map +1 -1
- package/dist/composite/tabs/standard.mjs +3 -2
- package/dist/composite/tabs/standard.mjs.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -3
- package/dist/index.mjs.map +1 -1
- package/dist/layout/image.js +1 -1
- package/dist/layout/image.js.map +1 -1
- package/dist/layout/image.mjs +1 -1
- package/dist/layout/image.mjs.map +1 -1
- package/package.json +10 -9
- package/dist/model/elements/actions.d.ts +0 -62
- package/dist/model/elements/actions.d.ts.map +0 -1
- package/dist/model/elements/actions.js +0 -71
- package/dist/model/elements/actions.js.map +0 -1
- package/dist/model/elements/actions.mjs +0 -54
- package/dist/model/elements/actions.mjs.map +0 -1
- package/dist/model/elements/assets.d.ts +0 -30
- package/dist/model/elements/assets.d.ts.map +0 -1
- package/dist/model/elements/assets.js +0 -42
- package/dist/model/elements/assets.js.map +0 -1
- package/dist/model/elements/assets.mjs +0 -25
- package/dist/model/elements/assets.mjs.map +0 -1
- package/dist/model/elements/buttons.d.ts +0 -12
- package/dist/model/elements/buttons.d.ts.map +0 -1
- package/dist/model/elements/buttons.js +0 -26
- package/dist/model/elements/buttons.js.map +0 -1
- package/dist/model/elements/buttons.mjs +0 -9
- package/dist/model/elements/buttons.mjs.map +0 -1
- package/dist/model/elements/event.d.ts +0 -22
- package/dist/model/elements/event.d.ts.map +0 -1
- package/dist/model/elements/event.js +0 -30
- package/dist/model/elements/event.js.map +0 -1
- package/dist/model/elements/event.mjs +0 -13
- package/dist/model/elements/event.mjs.map +0 -1
- package/dist/model/elements/headline.d.ts +0 -67
- package/dist/model/elements/headline.d.ts.map +0 -1
- package/dist/model/elements/headline.js +0 -74
- package/dist/model/elements/headline.js.map +0 -1
- package/dist/model/elements/headline.mjs +0 -57
- package/dist/model/elements/headline.mjs.map +0 -1
- package/dist/model/elements/index.d.ts +0 -34
- package/dist/model/elements/index.d.ts.map +0 -1
- package/dist/model/elements/index.js +0 -37
- package/dist/model/elements/index.js.map +0 -1
- package/dist/model/elements/index.mjs +0 -37
- package/dist/model/elements/index.mjs.map +0 -1
- package/dist/model/elements/layout.d.ts +0 -64
- package/dist/model/elements/layout.d.ts.map +0 -1
- package/dist/model/elements/layout.js +0 -68
- package/dist/model/elements/layout.js.map +0 -1
- package/dist/model/elements/layout.mjs +0 -51
- package/dist/model/elements/layout.mjs.map +0 -1
- package/dist/model/elements/rich-text.d.ts +0 -27
- package/dist/model/elements/rich-text.d.ts.map +0 -1
- package/dist/model/elements/rich-text.js +0 -68
- package/dist/model/elements/rich-text.js.map +0 -1
- package/dist/model/elements/rich-text.mjs +0 -51
- package/dist/model/elements/rich-text.mjs.map +0 -1
- package/dist/model/elements/text.d.ts +0 -22
- package/dist/model/elements/text.d.ts.map +0 -1
- package/dist/model/elements/text.js +0 -30
- package/dist/model/elements/text.js.map +0 -1
- package/dist/model/elements/text.mjs +0 -13
- package/dist/model/elements/text.mjs.map +0 -1
- package/dist/model/index.d.ts +0 -2
- package/dist/model/index.d.ts.map +0 -1
- package/dist/model/modifiers/_types.d.ts +0 -41
- package/dist/model/modifiers/_types.d.ts.map +0 -1
- package/dist/model/modifiers/index.d.ts +0 -44
- package/dist/model/modifiers/index.d.ts.map +0 -1
- package/dist/model/modifiers/index.js +0 -136
- package/dist/model/modifiers/index.js.map +0 -1
- package/dist/model/modifiers/index.mjs +0 -136
- package/dist/model/modifiers/index.mjs.map +0 -1
- package/dist/model/modifiers/style.d.ts +0 -19
- package/dist/model/modifiers/style.d.ts.map +0 -1
- package/dist/model/modifiers/style.js +0 -122
- package/dist/model/modifiers/style.js.map +0 -1
- package/dist/model/modifiers/style.mjs +0 -105
- package/dist/model/modifiers/style.mjs.map +0 -1
- package/dist/model.d.ts +0 -2
- package/dist/model.js +0 -5
- package/dist/model.js.map +0 -1
- package/dist/model.mjs +0 -5
- package/dist/model.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card-stack.mjs","sources":["../../../../source/atomic/animations/brand/card-stack.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport { isPreferredReducedMotion } from '@universityofmaryland/web-utilities-library/accessibility';\nimport { withViewTimelineAnimation } from '@universityofmaryland/web-utilities-library/styles';\nimport { ElementModel } from 'model';\nimport { assets } from 'atomic';\nimport { type ElementVisual } from '../../../_types';\n\ninterface CardStackProps {\n featured: HTMLImageElement | HTMLVideoElement;\n images: HTMLImageElement[];\n isExpandFeature: boolean;\n}\n\ninterface ConfigurationItem {\n column?: string;\n row?: string;\n zIndex?: number;\n featured?: boolean;\n matchWidth?: boolean;\n offset?: {\n top?: string;\n left?: string;\n right?: string;\n bottom?: string;\n };\n}\n\ninterface Configuration {\n count: number;\n layout: {\n gridTemplateColumns: string;\n gridTemplateRows: string;\n };\n items: ConfigurationItem[];\n}\n\nconst configuration: Configuration[] = [\n {\n count: 4,\n layout: {\n gridTemplateColumns: 'repeat(15, 10vw)',\n gridTemplateRows: 'repeat(15, 8vh)',\n },\n items: [\n {\n column: '3 / 8',\n row: '4 / 5',\n zIndex: 9,\n offset: {\n top: '-10%',\n left: '-5%',\n },\n },\n {\n column: '12 / 15',\n row: '2 / 6',\n offset: {\n top: '-1%',\n right: '-4%',\n },\n },\n {\n column: '4 / 7',\n row: '10 / 15',\n zIndex: 9,\n offset: {\n bottom: '-13%',\n left: '-4%',\n },\n },\n {\n column: '13 / 15',\n row: '10 / 14',\n offset: {\n right: '-8%',\n bottom: '-3%',\n },\n },\n ],\n },\n {\n count: 5,\n layout: {\n gridTemplateColumns: 'repeat(15, 10vw)',\n gridTemplateRows: 'repeat(15, 8vh)',\n },\n items: [\n {\n column: '2 / 6',\n row: '4 / 9',\n zIndex: 9,\n offset: {\n top: '-10%',\n left: '-6%',\n },\n },\n {\n column: '12 / 15',\n row: '2 / 5',\n offset: {\n top: '-3%',\n right: '-5%',\n },\n },\n {\n column: '10 / 12',\n row: '3 / 5',\n offset: {\n bottom: '-20%',\n right: '-1%',\n },\n },\n {\n column: '1 / 4',\n row: '8/ 13',\n zIndex: 9,\n offset: {\n bottom: '-10%',\n left: '-10%',\n },\n },\n {\n column: '12 / 15',\n row: '10 / 14',\n offset: {\n right: '-10%',\n bottom: '-7%',\n },\n },\n ],\n },\n {\n count: 6,\n layout: {\n gridTemplateColumns: 'repeat(15, 10vw)',\n gridTemplateRows: 'repeat(15, 8vh)',\n },\n items: [\n {\n column: '2 / 6',\n row: '4 / 9',\n zIndex: 9,\n offset: {\n top: '-10%',\n left: '-6%',\n },\n },\n {\n column: '12 / 15',\n row: '2 / 5',\n offset: {\n top: '-3%',\n right: '-5%',\n },\n },\n {\n column: '10 / 12',\n row: '3 / 5',\n offset: {\n bottom: '-20%',\n right: '-1%',\n },\n },\n {\n column: '12 / 15',\n row: '6 / 8',\n offset: {\n bottom: '-5%',\n right: '-20%',\n },\n },\n {\n column: '1 / 4',\n row: '8/ 13',\n zIndex: 9,\n offset: {\n bottom: '-10%',\n left: '-10%',\n },\n },\n {\n column: '12 / 15',\n row: '10 / 14',\n offset: {\n right: '-10%',\n bottom: '-7%',\n },\n },\n ],\n },\n {\n count: 7,\n layout: {\n gridTemplateColumns: 'repeat(15, 10vw)',\n gridTemplateRows: 'repeat(15, 8vh)',\n },\n items: [\n {\n column: '2 / 6',\n row: '4 / 9',\n zIndex: 9,\n offset: {\n top: '-10%',\n left: '-6%',\n },\n },\n {\n column: '12 / 15',\n row: '2 / 5',\n offset: {\n top: '-3%',\n right: '-5%',\n },\n },\n {\n column: '10 / 12',\n row: '3 / 5',\n offset: {\n bottom: '-20%',\n right: '-1%',\n },\n },\n {\n column: '12 / 15',\n row: '6 / 8',\n offset: {\n bottom: '-5%',\n right: '-20%',\n },\n },\n {\n column: '1 / 4',\n row: '8/ 13',\n zIndex: 9,\n offset: {\n bottom: '-10%',\n left: '-10%',\n },\n },\n {\n column: '12 / 15',\n row: '10 / 14',\n offset: {\n right: '-10%',\n bottom: '-7%',\n },\n },\n {\n column: '6 / 9',\n row: '10 / 15',\n offset: {\n right: '-10%',\n bottom: '-25%',\n },\n },\n ],\n },\n {\n count: 8,\n layout: {\n gridTemplateColumns: 'repeat(15, 10vw)',\n gridTemplateRows: 'repeat(15, 8vh)',\n },\n items: [\n {\n column: '2 / 6',\n row: '4 / 9',\n zIndex: 9,\n offset: {\n top: '-10%',\n left: '-6%',\n },\n },\n {\n column: '12 / 15',\n row: '2 / 5',\n offset: {\n top: '-3%',\n right: '-5%',\n },\n },\n {\n column: '10 / 12',\n row: '3 / 5',\n offset: {\n bottom: '-20%',\n right: '-1%',\n },\n },\n {\n column: '3 / 9',\n row: '1 / 3',\n offset: {\n right: '-10%',\n top: '-25%',\n },\n },\n {\n column: '12 / 15',\n row: '6 / 8',\n offset: {\n bottom: '-5%',\n right: '-20%',\n },\n },\n {\n column: '1 / 4',\n row: '8/ 13',\n zIndex: 9,\n offset: {\n bottom: '-10%',\n left: '-10%',\n },\n },\n {\n column: '12 / 15',\n row: '10 / 14',\n offset: {\n right: '-10%',\n bottom: '-7%',\n },\n },\n {\n column: '6 / 9',\n row: '10 / 15',\n offset: {\n right: '-10%',\n bottom: '-25%',\n },\n },\n ],\n },\n];\n\n// Class name constants\nconst STACK_CONTAINER_CLASS = 'brand-animations-card-stack';\nconst STACK_ELEMENT_CLASS = `${STACK_CONTAINER_CLASS}-element`;\nconst STACK_GRID_CLASS = `${STACK_CONTAINER_CLASS}-grid`;\nconst STACK_ITEM_CLASS = `${STACK_CONTAINER_CLASS}-item`;\nconst STACK_GRID_ERROR_CLASS = `${STACK_GRID_CLASS}-error`;\n\nconst KEY_FRAME_GRID_EXPAND = 'grid-expand';\nconst KEY_FRAME_GRID_ITEM = 'grid-item';\nconst KEY_FRAME_FEATURED_SIZE = 'featured-size';\n\nconst isPreferReducedMotion = isPreferredReducedMotion();\nconst isScrollTimelineSupported = () =>\n 'ScrollTimeline' in window || CSS.supports('animation-timeline', 'scroll()');\nconst isDisplayWithoutAnimation =\n isPreferReducedMotion || !isScrollTimelineSupported();\n\nconst getResponsiveSizes = () => {\n const windowWidth = window.innerWidth;\n\n if (windowWidth >= 1024) {\n return { width: 0.4, height: 0.4 };\n } else if (windowWidth >= 768) {\n return { width: 0.5, height: 0.5 };\n } else {\n return { width: 0.8, height: 0.5 };\n }\n};\n\nconst keyFrameGridExpand = `\n @keyframes ${KEY_FRAME_GRID_EXPAND} {\n to {\n transform: translate(0, 0);\n width: inherit;\n }\n }\n`;\n\nconst keyFrameGridItem = `\n @keyframes ${KEY_FRAME_GRID_ITEM} {\n to {\n opacity: 0;\n }\n }\n`;\n\nconst keyFrameFeaturedSize = `\n @keyframes ${KEY_FRAME_FEATURED_SIZE} {\n to {\n width: 100%;\n height: 100vh;\n top: 0%;\n }\n }\n`;\n\n/**\n * Waits for all media elements (images and videos) to load and render.\n *\n * @param container - The container element containing the media\n * @returns Promise that resolves when all media is loaded and rendered\n */\nconst waitForMediaLoad = async (container: HTMLElement): Promise<void> => {\n const images = Array.from(container.querySelectorAll('img'));\n const videos = Array.from(container.querySelectorAll('video'));\n\n const imagePromises = images.map((img) => {\n if (img.complete) {\n // Check if image loaded successfully or failed\n if (img.naturalWidth > 0) {\n return Promise.resolve();\n } else {\n // Image is complete but has no natural dimensions - it failed to load\n return Promise.reject(new Error(`Failed to load image: ${img.src}`));\n }\n }\n return new Promise<void>((resolve, reject) => {\n img.addEventListener('load', () => resolve(), { once: true });\n img.addEventListener(\n 'error',\n () => reject(new Error(`Failed to load image: ${img.src}`)),\n { once: true },\n );\n });\n });\n\n const videoPromises = videos.map((video) => {\n if (video.readyState >= 3) {\n return Promise.resolve();\n }\n return new Promise<void>((resolve, reject) => {\n video.addEventListener('loadeddata', () => resolve(), { once: true });\n video.addEventListener(\n 'error',\n () => reject(new Error(`Failed to load video: ${video.src}`)),\n { once: true },\n );\n });\n });\n\n await Promise.all([...imagePromises, ...videoPromises]);\n\n return new Promise<void>((resolve) => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n resolve();\n });\n });\n });\n};\n\n/**\n * Retrieves the configuration object for a specific element count.\n *\n * @param count - The number of elements to display\n * @returns The configuration object for the given count, or undefined if not found\n */\nconst getConfigurationByCount = (count: number) => {\n return configuration.find((c) => c.count === count);\n};\n\n/**\n * Gets the stack element from a grid item.\n *\n * @param gridItem - The grid item element\n * @param index - The index of the stack element\n * @returns The stack element or null if not found\n */\nconst getStackElementFromGridItem = (\n gridItem: HTMLElement,\n index: number,\n): HTMLElement | null => {\n return gridItem.querySelector(\n `.${STACK_ELEMENT_CLASS}-${index}`,\n ) as HTMLElement;\n};\n\n/**\n * Calculates the transform values (x, y) needed to center an element\n * relative to the brand-animations-card-stack-grid container with optional offset.\n *\n * @param element - The element to be centered\n * @param gridContainer - The grid container element\n * @param offset - Optional offset values in percentages\n * @returns Transform values {x, y} in pixels to center the element with offset\n */\nconst calculateCenterTransform = (\n element: HTMLElement,\n centerElement: HTMLElement,\n offset?: {\n top?: string;\n left?: string;\n right?: string;\n bottom?: string;\n },\n): { x: number; y: number } => {\n const elementRect = element.getBoundingClientRect();\n const centerRect = centerElement.getBoundingClientRect();\n\n const centerX = centerRect.left + centerRect.width / 2;\n const centerY = centerRect.top + centerRect.height / 2;\n\n const elementCenterX = elementRect.left + elementRect.width / 2;\n const elementCenterY = elementRect.top + elementRect.height / 2;\n\n let translateX = centerX - elementCenterX;\n let translateY = centerY - elementCenterY;\n\n if (offset) {\n const applyOffset = (\n value: string | undefined,\n dimension: number,\n ): number => {\n return value ? (parseFloat(value) / 100) * dimension : 0;\n };\n\n translateX += applyOffset(offset.left, centerRect.width);\n translateX -= applyOffset(offset.right, centerRect.width);\n translateY += applyOffset(offset.top, centerRect.height);\n translateY -= applyOffset(offset.bottom, centerRect.height);\n }\n\n return {\n x: translateX,\n y: translateY,\n };\n};\n\n/**\n * Clears animations from elements.\n *\n * @param featuredElement - The featured element\n * @param gridContainer - The grid container element\n */\nconst clearElementAnimations = (\n featuredElement: HTMLElement | null,\n gridContainer: HTMLElement | null,\n): void => {\n if (featuredElement) {\n featuredElement.style.animation = 'none';\n }\n if (gridContainer) {\n gridContainer.style.animation = 'none';\n }\n};\n\n/**\n * Checks if the current device is mobile based on viewport width.\n *\n * @returns True if device is mobile (width < 768px)\n */\nconst isMobileDevice = (): boolean => {\n return window.innerWidth < 768;\n};\n\n/**\n * Creates a resize handler function that only executes on actual window resizes.\n *\n * @param onResize - Callback to execute on resize\n * @param delay - Delay in milliseconds before executing callback\n * @returns Resize handler function\n */\nconst createResizeHandler = (\n onResize: () => void,\n delay: number = 300,\n): (() => void) => {\n let timeoutId: NodeJS.Timeout | null = null;\n let previousWidth = window.innerWidth;\n\n return () => {\n const currentWidth = window.innerWidth;\n\n // Only trigger on width changes (actual resize, not mobile scroll)\n if (currentWidth === previousWidth) {\n return;\n }\n\n previousWidth = currentWidth;\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n onResize();\n timeoutId = null;\n }, delay);\n };\n};\n\n/**\n * Sets opacity with optional transition.\n *\n * @param element - The element to modify\n * @param opacity - The opacity value\n * @param transition - Optional transition string\n */\nconst setElementOpacity = (\n element: HTMLElement,\n opacity: string,\n transition?: string,\n): void => {\n element.style.opacity = opacity;\n if (transition) {\n element.style.transition = transition;\n }\n};\n\n/**\n * Validates required elements for animation.\n *\n * @param gridContainer - The grid container element\n * @param config - Configuration object\n * @returns True if all required elements are present\n */\nconst validateAnimationElements = (\n gridContainer: HTMLElement | null,\n config: Configuration | undefined,\n): boolean => {\n return gridContainer !== null && config !== undefined;\n};\n\n/**\n * Applies dimension and position transforms to a grid element.\n *\n * @param element - The element to transform\n * @param itemConfig - Configuration for this specific item\n * @param featuredElement - The featured element for sizing reference\n * @param gridContainer - The grid container for position reference\n */\nconst applyElementTransforms = (\n element: HTMLElement,\n itemConfig: ConfigurationItem,\n featuredElement: HTMLElement,\n): void => {\n if (featuredElement) {\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const featuredWidth = featuredElement.offsetWidth;\n const featuredHeight = featuredElement.offsetHeight;\n const isLargerThan40Percent =\n featuredWidth > windowWidth * 0.41 ||\n featuredHeight > windowHeight * 0.41;\n\n if (!isLargerThan40Percent) {\n element.style.width = `${featuredWidth}px`;\n element.style.height = `${featuredHeight}px`;\n } else {\n const parentContainer = featuredElement.parentElement;\n const parentWidth = parentContainer\n ? parentContainer.offsetWidth\n : windowWidth;\n\n const { width: widthPercentage, height: heightVh } = getResponsiveSizes();\n const width = Math.round(parentWidth * widthPercentage);\n const height = Math.round(windowHeight * heightVh);\n\n element.style.width = `${width}px`;\n element.style.height = `${height}px`;\n }\n }\n\n const transform = calculateCenterTransform(\n element,\n featuredElement,\n itemConfig?.offset,\n );\n element.style.transform = `translate(${transform.x}px, ${transform.y}px)`;\n};\n\n/**\n * Processes all grid items for animation.\n *\n * @param gridContainer - The grid container element\n * @param config - Configuration object\n * @returns void\n */\nconst processGridAnimation = (\n featuredElement: HTMLElement,\n gridContainer: HTMLElement,\n config: Configuration,\n): void => {\n const gridItems = Array.from(gridContainer.children) as HTMLElement[];\n\n gridItems.forEach((gridItem, index) => {\n const element = getStackElementFromGridItem(gridItem, index);\n\n if (!element) {\n return;\n }\n\n const itemConfig = config.items[index];\n\n applyElementTransforms(element, itemConfig, featuredElement);\n });\n};\n\nconst createGridElement = (\n element: HTMLImageElement | HTMLVideoElement,\n index: number,\n placement: ConfigurationItem,\n) => {\n const children: ElementVisual[] = [];\n\n if (element.tagName === 'IMG') {\n children.push(\n assets.image.background({\n element: element as HTMLImageElement,\n isScaled: true,\n }),\n );\n }\n\n const rowStart = placement.row ? parseInt(placement.row.split(' / ')[0]) : 0;\n\n const getStartRange = (row: number): number => {\n if (row >= 13) return -70;\n if (row >= 10 && row <= 12) return -40;\n if (row >= 6 && row < 10) return 40;\n return 80;\n };\n\n const getEndRange = (row: number): number => {\n if (row >= 13) return 120;\n if (row >= 10 && row <= 12) return 140;\n if (row >= 6 && row < 10) return 160;\n return 170;\n };\n\n const startRange = getStartRange(rowStart);\n const endRange = getEndRange(rowStart);\n const animationRangeStart = `${startRange}vh`;\n const animationRangeEnd = `${endRange}vh`;\n\n return ElementModel.createDiv({\n className: `${STACK_ELEMENT_CLASS}-${index}`,\n children,\n elementStyles: {\n element: {\n overflow: 'clip',\n height: '100%',\n width: '100%',\n\n ...withViewTimelineAnimation({\n animation: `${KEY_FRAME_GRID_EXPAND} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart,\n animationRangeEnd,\n animationDuration: '1ms',\n }),\n },\n },\n });\n};\n\nconst createGridItem = (\n element: HTMLImageElement | HTMLVideoElement,\n placement: ConfigurationItem,\n index: number,\n) => {\n const rowStart = placement.row ? parseInt(placement.row.split(' / ')[0]) : 0;\n const startRange = rowStart > 8 ? 0 : 80;\n const endRange = rowStart > 8 ? 200 : 200;\n const animationRangeStart = `${startRange}vh`;\n const animationRangeEnd = `${endRange}vh`;\n\n return ElementModel.createDiv({\n className: `${STACK_ITEM_CLASS}-${index}`,\n children: [createGridElement(element, index, placement)],\n elementStyles: {\n element: {\n gridColumn: placement.column,\n gridRow: placement.row,\n zIndex: placement.zIndex || 1,\n width: '100%',\n height: '100%',\n\n [`@media (${token.media.queries.large.max})`]: {\n [`@supports not (animation-timeline: scroll())`]: {\n display: 'none',\n },\n },\n\n ...(isDisplayWithoutAnimation && {\n display: 'none',\n }),\n\n ...withViewTimelineAnimation({\n animation: `${KEY_FRAME_GRID_ITEM} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart,\n animationRangeEnd,\n }),\n },\n },\n });\n};\n\nconst createGrid = (props: CardStackProps) => {\n const totalCount = props.images.length;\n const config = getConfigurationByCount(totalCount);\n\n if (!config) {\n console.warn(`No configuration found for ${totalCount} elements`);\n return ElementModel.createDiv({\n className: STACK_GRID_ERROR_CLASS,\n });\n }\n\n const gridItems = props.images.map((element, index) => {\n const placement = config.items[index];\n return createGridItem(element, placement, index);\n });\n\n return ElementModel.createDiv({\n className: STACK_GRID_CLASS,\n children: gridItems,\n elementStyles: {\n element: {\n display: 'grid',\n gridTemplateColumns: 'repeat(16, 1fr)',\n gridTemplateRows: 'repeat(16, 2vh)',\n gap: token.spacing.min,\n minHeight: '300px',\n\n [`@media (${token.media.queries.large.max})`]: {\n '@supports not (animation-timeline: scroll())': {\n width: '100%',\n },\n },\n\n ...withViewTimelineAnimation({\n gridTemplateColumns: config.layout.gridTemplateColumns,\n gridTemplateRows: config.layout.gridTemplateRows,\n transform: 'translate(-50%, -25%)',\n }),\n },\n },\n });\n};\n\nconst createFeatured = (\n element: HTMLImageElement | HTMLVideoElement,\n isExpand: boolean,\n totalCount: number,\n) => {\n const children: ElementVisual[] = [];\n let video: (ElementVisual & { events: { setPlay: () => void } }) | undefined;\n\n if (element.tagName === 'IMG') {\n children.push(\n assets.image.background({\n element: element as HTMLImageElement,\n isScaled: true,\n }),\n );\n }\n\n if (element.tagName === 'VIDEO') {\n element.setAttribute('muted', 'true');\n element.setAttribute('playsinline', 'true');\n element.setAttribute('loop', 'true');\n\n video = assets.video.toggle({\n video: element as HTMLVideoElement,\n isScaled: true,\n });\n children.push(video);\n }\n\n const { width: widthPercentage, height: heightVh } = getResponsiveSizes();\n\n const featuredElement = ElementModel.createDiv({\n className: `${STACK_ELEMENT_CLASS}-featured`,\n children,\n elementStyles: {\n element: {\n position: 'absolute',\n top: '20vh',\n left: '50%',\n transform: 'translateX(-50%)',\n zIndex: 999,\n width: `${widthPercentage * 100}%`,\n height: `${heightVh * 100}vh`,\n\n ...(isDisplayWithoutAnimation && {\n top: '0',\n }),\n\n [`@media (${token.media.queries.large.max})`]: {\n '@supports not (animation-timeline: view())': {\n width: '100% !important',\n height: '100% !important',\n top: '0',\n },\n },\n\n ...(isExpand && {\n ...withViewTimelineAnimation({\n top: '30vh',\n animation: `${KEY_FRAME_FEATURED_SIZE} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart: `${100 + (totalCount - 4) * 10}vh`,\n animationRangeEnd: '250vh',\n }),\n }),\n },\n },\n });\n\n if (isExpand && featuredElement.element instanceof HTMLElement) {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (video) video.events.setPlay();\n observer.disconnect();\n }\n });\n },\n {\n rootMargin: `-${100 + (totalCount - 4) * 10}px 0px 0px 0px`,\n threshold: 0,\n },\n );\n\n observer.observe(featuredElement.element);\n }\n\n return featuredElement;\n};\n\nconst createSticky = (props: CardStackProps) => {\n const wrapper = ElementModel.createDiv({\n className: `${STACK_CONTAINER_CLASS}-sticky-wrapper`,\n children: [\n createGrid(props),\n createFeatured(\n props.featured,\n props.isExpandFeature,\n props.images.length,\n ),\n ],\n elementStyles: {\n element: {\n position: 'relative',\n\n ...withViewTimelineAnimation({\n position: 'sticky',\n top: 0,\n }),\n },\n },\n });\n\n return ElementModel.createDiv({\n className: `${STACK_CONTAINER_CLASS}-sticky`,\n children: [wrapper],\n elementStyles: {\n element: {\n ...withViewTimelineAnimation({\n height: '200vh',\n\n ...(props.isExpandFeature && {\n height: '250vh',\n }),\n }),\n },\n },\n });\n};\n\nexport default (props: CardStackProps) => {\n const composite = ElementModel.createDiv({\n className: STACK_CONTAINER_CLASS,\n children: [createSticky(props)],\n elementStyles: {\n element: {\n containerType: 'inline-size',\n opacity: '0',\n overflow: 'clip',\n },\n },\n });\n\n const loadAnimation = async () => {\n const totalCount = props.images.length;\n const config = getConfigurationByCount(totalCount);\n const gridContainer = composite.element.querySelector(\n `.${STACK_GRID_CLASS}`,\n ) as HTMLElement;\n const featuredElement = composite.element.querySelector(\n `.${STACK_ELEMENT_CLASS}-featured`,\n ) as HTMLElement;\n let animationsCleared = false;\n\n if (!validateAnimationElements(gridContainer, config)) {\n return;\n }\n\n const clearAnimations = () => {\n if (animationsCleared) return;\n\n clearElementAnimations(featuredElement, gridContainer);\n animationsCleared = true;\n\n setTimeout(() => {\n processGridAnimation(props.featured, gridContainer!, config!);\n }, 100);\n };\n\n try {\n await waitForMediaLoad(gridContainer!);\n } catch (error) {\n console.warn('Media loading failed, proceeding with animation:', error);\n }\n\n processGridAnimation(props.featured, gridContainer!, config!);\n setElementOpacity(composite.element, '1');\n\n if (!isMobileDevice()) {\n const resizeHandler = createResizeHandler(() => {\n setTimeout(() => {\n processGridAnimation(props.featured, gridContainer!, config!);\n setTimeout(() => {\n setElementOpacity(composite.element, '1');\n animationsCleared = false;\n }, 100);\n }, 200);\n });\n\n window.addEventListener('resize', () => {\n if (isMobileDevice()) {\n return;\n }\n\n if (composite.element.style.opacity === '1') {\n setElementOpacity(composite.element, '0', 'opacity 0.3s ease-in-out');\n }\n\n clearAnimations();\n resizeHandler();\n });\n }\n };\n\n composite.styles += keyFrameGridExpand;\n composite.styles += keyFrameGridItem;\n composite.styles += keyFrameFeaturedSize;\n\n return {\n ...composite,\n events: {\n loadAnimation,\n },\n };\n};\n"],"names":["index","assets.image.background","ElementModel.createDiv","assets.video.toggle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"card-stack.mjs","sources":["../../../../source/atomic/animations/brand/card-stack.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport { isPreferredReducedMotion } from '@universityofmaryland/web-utilities-library/accessibility';\nimport { withViewTimelineAnimation } from '@universityofmaryland/web-utilities-library/styles';\nimport { assets } from 'atomic';\nimport { type ElementModel } from '../../../_types';\n\ninterface CardStackProps {\n featured: HTMLImageElement | HTMLVideoElement;\n images: HTMLImageElement[];\n isExpandFeature: boolean;\n}\n\ninterface ConfigurationItem {\n column?: string;\n row?: string;\n zIndex?: number;\n featured?: boolean;\n matchWidth?: boolean;\n offset?: {\n top?: string;\n left?: string;\n right?: string;\n bottom?: string;\n };\n}\n\ninterface Configuration {\n count: number;\n layout: {\n gridTemplateColumns: string;\n gridTemplateRows: string;\n };\n items: ConfigurationItem[];\n}\n\nconst configuration: Configuration[] = [\n {\n count: 4,\n layout: {\n gridTemplateColumns: 'repeat(15, 10vw)',\n gridTemplateRows: 'repeat(15, 8vh)',\n },\n items: [\n {\n column: '3 / 8',\n row: '4 / 5',\n zIndex: 9,\n offset: {\n top: '-10%',\n left: '-5%',\n },\n },\n {\n column: '12 / 15',\n row: '2 / 6',\n offset: {\n top: '-1%',\n right: '-4%',\n },\n },\n {\n column: '4 / 7',\n row: '10 / 15',\n zIndex: 9,\n offset: {\n bottom: '-13%',\n left: '-4%',\n },\n },\n {\n column: '13 / 15',\n row: '10 / 14',\n offset: {\n right: '-8%',\n bottom: '-3%',\n },\n },\n ],\n },\n {\n count: 5,\n layout: {\n gridTemplateColumns: 'repeat(15, 10vw)',\n gridTemplateRows: 'repeat(15, 8vh)',\n },\n items: [\n {\n column: '2 / 6',\n row: '4 / 9',\n zIndex: 9,\n offset: {\n top: '-10%',\n left: '-6%',\n },\n },\n {\n column: '12 / 15',\n row: '2 / 5',\n offset: {\n top: '-3%',\n right: '-5%',\n },\n },\n {\n column: '10 / 12',\n row: '3 / 5',\n offset: {\n bottom: '-20%',\n right: '-1%',\n },\n },\n {\n column: '1 / 4',\n row: '8/ 13',\n zIndex: 9,\n offset: {\n bottom: '-10%',\n left: '-10%',\n },\n },\n {\n column: '12 / 15',\n row: '10 / 14',\n offset: {\n right: '-10%',\n bottom: '-7%',\n },\n },\n ],\n },\n {\n count: 6,\n layout: {\n gridTemplateColumns: 'repeat(15, 10vw)',\n gridTemplateRows: 'repeat(15, 8vh)',\n },\n items: [\n {\n column: '2 / 6',\n row: '4 / 9',\n zIndex: 9,\n offset: {\n top: '-10%',\n left: '-6%',\n },\n },\n {\n column: '12 / 15',\n row: '2 / 5',\n offset: {\n top: '-3%',\n right: '-5%',\n },\n },\n {\n column: '10 / 12',\n row: '3 / 5',\n offset: {\n bottom: '-20%',\n right: '-1%',\n },\n },\n {\n column: '12 / 15',\n row: '6 / 8',\n offset: {\n bottom: '-5%',\n right: '-20%',\n },\n },\n {\n column: '1 / 4',\n row: '8/ 13',\n zIndex: 9,\n offset: {\n bottom: '-10%',\n left: '-10%',\n },\n },\n {\n column: '12 / 15',\n row: '10 / 14',\n offset: {\n right: '-10%',\n bottom: '-7%',\n },\n },\n ],\n },\n {\n count: 7,\n layout: {\n gridTemplateColumns: 'repeat(15, 10vw)',\n gridTemplateRows: 'repeat(15, 8vh)',\n },\n items: [\n {\n column: '2 / 6',\n row: '4 / 9',\n zIndex: 9,\n offset: {\n top: '-10%',\n left: '-6%',\n },\n },\n {\n column: '12 / 15',\n row: '2 / 5',\n offset: {\n top: '-3%',\n right: '-5%',\n },\n },\n {\n column: '10 / 12',\n row: '3 / 5',\n offset: {\n bottom: '-20%',\n right: '-1%',\n },\n },\n {\n column: '12 / 15',\n row: '6 / 8',\n offset: {\n bottom: '-5%',\n right: '-20%',\n },\n },\n {\n column: '1 / 4',\n row: '8/ 13',\n zIndex: 9,\n offset: {\n bottom: '-10%',\n left: '-10%',\n },\n },\n {\n column: '12 / 15',\n row: '10 / 14',\n offset: {\n right: '-10%',\n bottom: '-7%',\n },\n },\n {\n column: '6 / 9',\n row: '10 / 15',\n offset: {\n right: '-10%',\n bottom: '-25%',\n },\n },\n ],\n },\n {\n count: 8,\n layout: {\n gridTemplateColumns: 'repeat(15, 10vw)',\n gridTemplateRows: 'repeat(15, 8vh)',\n },\n items: [\n {\n column: '2 / 6',\n row: '4 / 9',\n zIndex: 9,\n offset: {\n top: '-10%',\n left: '-6%',\n },\n },\n {\n column: '12 / 15',\n row: '2 / 5',\n offset: {\n top: '-3%',\n right: '-5%',\n },\n },\n {\n column: '10 / 12',\n row: '3 / 5',\n offset: {\n bottom: '-20%',\n right: '-1%',\n },\n },\n {\n column: '3 / 9',\n row: '1 / 3',\n offset: {\n right: '-10%',\n top: '-25%',\n },\n },\n {\n column: '12 / 15',\n row: '6 / 8',\n offset: {\n bottom: '-5%',\n right: '-20%',\n },\n },\n {\n column: '1 / 4',\n row: '8/ 13',\n zIndex: 9,\n offset: {\n bottom: '-10%',\n left: '-10%',\n },\n },\n {\n column: '12 / 15',\n row: '10 / 14',\n offset: {\n right: '-10%',\n bottom: '-7%',\n },\n },\n {\n column: '6 / 9',\n row: '10 / 15',\n offset: {\n right: '-10%',\n bottom: '-25%',\n },\n },\n ],\n },\n];\n\n// Class name constants\nconst STACK_CONTAINER_CLASS = 'brand-animations-card-stack';\nconst STACK_ELEMENT_CLASS = `${STACK_CONTAINER_CLASS}-element`;\nconst STACK_GRID_CLASS = `${STACK_CONTAINER_CLASS}-grid`;\nconst STACK_ITEM_CLASS = `${STACK_CONTAINER_CLASS}-item`;\nconst STACK_GRID_ERROR_CLASS = `${STACK_GRID_CLASS}-error`;\n\nconst KEY_FRAME_GRID_EXPAND = 'grid-expand';\nconst KEY_FRAME_GRID_ITEM = 'grid-item';\nconst KEY_FRAME_FEATURED_SIZE = 'featured-size';\n\nconst isPreferReducedMotion = isPreferredReducedMotion();\nconst isScrollTimelineSupported = () =>\n 'ScrollTimeline' in window || CSS.supports('animation-timeline', 'scroll()');\nconst isDisplayWithoutAnimation =\n isPreferReducedMotion || !isScrollTimelineSupported();\n\nconst getResponsiveSizes = () => {\n const windowWidth = window.innerWidth;\n\n if (windowWidth >= 1024) {\n return { width: 0.4, height: 0.4 };\n } else if (windowWidth >= 768) {\n return { width: 0.5, height: 0.5 };\n } else {\n return { width: 0.8, height: 0.5 };\n }\n};\n\nconst keyFrameGridExpand = `\n @keyframes ${KEY_FRAME_GRID_EXPAND} {\n to {\n transform: translate(0, 0);\n width: inherit;\n }\n }\n`;\n\nconst keyFrameGridItem = `\n @keyframes ${KEY_FRAME_GRID_ITEM} {\n to {\n opacity: 0;\n }\n }\n`;\n\nconst keyFrameFeaturedSize = `\n @keyframes ${KEY_FRAME_FEATURED_SIZE} {\n to {\n width: 100%;\n height: 100vh;\n top: 0%;\n }\n }\n`;\n\n/**\n * Waits for all media elements (images and videos) to load and render.\n *\n * @param container - The container element containing the media\n * @returns Promise that resolves when all media is loaded and rendered\n */\nconst waitForMediaLoad = async (container: HTMLElement): Promise<void> => {\n const images = Array.from(container.querySelectorAll('img'));\n const videos = Array.from(container.querySelectorAll('video'));\n\n const imagePromises = images.map((img) => {\n if (img.complete) {\n // Check if image loaded successfully or failed\n if (img.naturalWidth > 0) {\n return Promise.resolve();\n } else {\n // Image is complete but has no natural dimensions - it failed to load\n return Promise.reject(new Error(`Failed to load image: ${img.src}`));\n }\n }\n return new Promise<void>((resolve, reject) => {\n img.addEventListener('load', () => resolve(), { once: true });\n img.addEventListener(\n 'error',\n () => reject(new Error(`Failed to load image: ${img.src}`)),\n { once: true },\n );\n });\n });\n\n const videoPromises = videos.map((video) => {\n if (video.readyState >= 3) {\n return Promise.resolve();\n }\n return new Promise<void>((resolve, reject) => {\n video.addEventListener('loadeddata', () => resolve(), { once: true });\n video.addEventListener(\n 'error',\n () => reject(new Error(`Failed to load video: ${video.src}`)),\n { once: true },\n );\n });\n });\n\n await Promise.all([...imagePromises, ...videoPromises]);\n\n return new Promise<void>((resolve) => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n resolve();\n });\n });\n });\n};\n\n/**\n * Retrieves the configuration object for a specific element count.\n *\n * @param count - The number of elements to display\n * @returns The configuration object for the given count, or undefined if not found\n */\nconst getConfigurationByCount = (count: number) => {\n return configuration.find((c) => c.count === count);\n};\n\n/**\n * Gets the stack element from a grid item.\n *\n * @param gridItem - The grid item element\n * @param index - The index of the stack element\n * @returns The stack element or null if not found\n */\nconst getStackElementFromGridItem = (\n gridItem: HTMLElement,\n index: number,\n): HTMLElement | null => {\n return gridItem.querySelector(\n `.${STACK_ELEMENT_CLASS}-${index}`,\n ) as HTMLElement;\n};\n\n/**\n * Calculates the transform values (x, y) needed to center an element\n * relative to the brand-animations-card-stack-grid container with optional offset.\n *\n * @param element - The element to be centered\n * @param gridContainer - The grid container element\n * @param offset - Optional offset values in percentages\n * @returns Transform values {x, y} in pixels to center the element with offset\n */\nconst calculateCenterTransform = (\n element: HTMLElement,\n centerElement: HTMLElement,\n offset?: {\n top?: string;\n left?: string;\n right?: string;\n bottom?: string;\n },\n): { x: number; y: number } => {\n const elementRect = element.getBoundingClientRect();\n const centerRect = centerElement.getBoundingClientRect();\n\n const centerX = centerRect.left + centerRect.width / 2;\n const centerY = centerRect.top + centerRect.height / 2;\n\n const elementCenterX = elementRect.left + elementRect.width / 2;\n const elementCenterY = elementRect.top + elementRect.height / 2;\n\n let translateX = centerX - elementCenterX;\n let translateY = centerY - elementCenterY;\n\n if (offset) {\n const applyOffset = (\n value: string | undefined,\n dimension: number,\n ): number => {\n return value ? (parseFloat(value) / 100) * dimension : 0;\n };\n\n translateX += applyOffset(offset.left, centerRect.width);\n translateX -= applyOffset(offset.right, centerRect.width);\n translateY += applyOffset(offset.top, centerRect.height);\n translateY -= applyOffset(offset.bottom, centerRect.height);\n }\n\n return {\n x: translateX,\n y: translateY,\n };\n};\n\n/**\n * Clears animations from elements.\n *\n * @param featuredElement - The featured element\n * @param gridContainer - The grid container element\n */\nconst clearElementAnimations = (\n featuredElement: HTMLElement | null,\n gridContainer: HTMLElement | null,\n): void => {\n if (featuredElement) {\n featuredElement.style.animation = 'none';\n }\n if (gridContainer) {\n gridContainer.style.animation = 'none';\n }\n};\n\n/**\n * Checks if the current device is mobile based on viewport width.\n *\n * @returns True if device is mobile (width < 768px)\n */\nconst isMobileDevice = (): boolean => {\n return window.innerWidth < 768;\n};\n\n/**\n * Creates a resize handler function that only executes on actual window resizes.\n *\n * @param onResize - Callback to execute on resize\n * @param delay - Delay in milliseconds before executing callback\n * @returns Resize handler function\n */\nconst createResizeHandler = (\n onResize: () => void,\n delay: number = 300,\n): (() => void) => {\n let timeoutId: NodeJS.Timeout | null = null;\n let previousWidth = window.innerWidth;\n\n return () => {\n const currentWidth = window.innerWidth;\n\n // Only trigger on width changes (actual resize, not mobile scroll)\n if (currentWidth === previousWidth) {\n return;\n }\n\n previousWidth = currentWidth;\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n onResize();\n timeoutId = null;\n }, delay);\n };\n};\n\n/**\n * Sets opacity with optional transition.\n *\n * @param element - The element to modify\n * @param opacity - The opacity value\n * @param transition - Optional transition string\n */\nconst setElementOpacity = (\n element: HTMLElement,\n opacity: string,\n transition?: string,\n): void => {\n element.style.opacity = opacity;\n if (transition) {\n element.style.transition = transition;\n }\n};\n\n/**\n * Validates required elements for animation.\n *\n * @param gridContainer - The grid container element\n * @param config - Configuration object\n * @returns True if all required elements are present\n */\nconst validateAnimationElements = (\n gridContainer: HTMLElement | null,\n config: Configuration | undefined,\n): boolean => {\n return gridContainer !== null && config !== undefined;\n};\n\n/**\n * Applies dimension and position transforms to a grid element.\n *\n * @param element - The element to transform\n * @param itemConfig - Configuration for this specific item\n * @param featuredElement - The featured element for sizing reference\n * @param gridContainer - The grid container for position reference\n */\nconst applyElementTransforms = (\n element: HTMLElement,\n itemConfig: ConfigurationItem,\n featuredElement: HTMLElement,\n): void => {\n if (featuredElement) {\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const featuredWidth = featuredElement.offsetWidth;\n const featuredHeight = featuredElement.offsetHeight;\n const isLargerThan40Percent =\n featuredWidth > windowWidth * 0.41 ||\n featuredHeight > windowHeight * 0.41;\n\n if (!isLargerThan40Percent) {\n element.style.width = `${featuredWidth}px`;\n element.style.height = `${featuredHeight}px`;\n } else {\n const parentContainer = featuredElement.parentElement;\n const parentWidth = parentContainer\n ? parentContainer.offsetWidth\n : windowWidth;\n\n const { width: widthPercentage, height: heightVh } = getResponsiveSizes();\n const width = Math.round(parentWidth * widthPercentage);\n const height = Math.round(windowHeight * heightVh);\n\n element.style.width = `${width}px`;\n element.style.height = `${height}px`;\n }\n }\n\n const transform = calculateCenterTransform(\n element,\n featuredElement,\n itemConfig?.offset,\n );\n element.style.transform = `translate(${transform.x}px, ${transform.y}px)`;\n};\n\n/**\n * Processes all grid items for animation.\n *\n * @param gridContainer - The grid container element\n * @param config - Configuration object\n * @returns void\n */\nconst processGridAnimation = (\n featuredElement: HTMLElement,\n gridContainer: HTMLElement,\n config: Configuration,\n): void => {\n const gridItems = Array.from(gridContainer.children) as HTMLElement[];\n\n gridItems.forEach((gridItem, index) => {\n const element = getStackElementFromGridItem(gridItem, index);\n\n if (!element) {\n return;\n }\n\n const itemConfig = config.items[index];\n\n applyElementTransforms(element, itemConfig, featuredElement);\n });\n};\n\nconst createGridElement = (\n element: HTMLImageElement | HTMLVideoElement,\n index: number,\n placement: ConfigurationItem,\n) => {\n const rowStart = placement.row ? parseInt(placement.row.split(' / ')[0]) : 0;\n\n const getStartRange = (row: number): number => {\n if (row >= 13) return -70;\n if (row >= 10 && row <= 12) return -40;\n if (row >= 6 && row < 10) return 40;\n return 80;\n };\n\n const getEndRange = (row: number): number => {\n if (row >= 13) return 120;\n if (row >= 10 && row <= 12) return 140;\n if (row >= 6 && row < 10) return 160;\n return 170;\n };\n\n const startRange = getStartRange(rowStart);\n const endRange = getEndRange(rowStart);\n const animationRangeStart = `${startRange}vh`;\n const animationRangeEnd = `${endRange}vh`;\n\n const builder = new ElementBuilder()\n .withClassName(`${STACK_ELEMENT_CLASS}-${index}`)\n .withStyles({\n element: {\n overflow: 'clip',\n height: '100%',\n width: '100%',\n\n ...withViewTimelineAnimation({\n animation: `${KEY_FRAME_GRID_EXPAND} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart,\n animationRangeEnd,\n animationDuration: '1ms',\n }),\n },\n });\n\n if (element.tagName === 'IMG') {\n const backgroundImage = assets.image.background({\n element: element as HTMLImageElement,\n isScaled: true,\n });\n builder.withChild(backgroundImage);\n }\n\n return builder.build();\n};\n\nconst createGridItem = (\n element: HTMLImageElement | HTMLVideoElement,\n placement: ConfigurationItem,\n index: number,\n) => {\n const rowStart = placement.row ? parseInt(placement.row.split(' / ')[0]) : 0;\n const startRange = rowStart > 8 ? 0 : 80;\n const endRange = rowStart > 8 ? 200 : 200;\n const animationRangeStart = `${startRange}vh`;\n const animationRangeEnd = `${endRange}vh`;\n\n const gridElement = createGridElement(element, index, placement);\n\n return new ElementBuilder()\n .withClassName(`${STACK_ITEM_CLASS}-${index}`)\n .withStyles({\n element: {\n gridColumn: placement.column,\n gridRow: placement.row,\n zIndex: placement.zIndex || 1,\n width: '100%',\n height: '100%',\n\n [`@media (${token.media.queries.large.max})`]: {\n [`@supports not (animation-timeline: scroll())`]: {\n display: 'none',\n },\n },\n\n ...(isDisplayWithoutAnimation && {\n display: 'none',\n }),\n\n ...withViewTimelineAnimation({\n animation: `${KEY_FRAME_GRID_ITEM} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart,\n animationRangeEnd,\n }),\n },\n })\n .withChild(gridElement)\n .build();\n};\n\nconst createGrid = (props: CardStackProps) => {\n const totalCount = props.images.length;\n const config = getConfigurationByCount(totalCount);\n\n if (!config) {\n console.warn(`No configuration found for ${totalCount} elements`);\n return new ElementBuilder().withClassName(STACK_GRID_ERROR_CLASS).build();\n }\n\n const gridItems = props.images.map((element, index) => {\n const placement = config.items[index];\n return createGridItem(element, placement, index);\n });\n\n const gridItemElements = gridItems.map((item) => item);\n\n return new ElementBuilder()\n .withClassName(STACK_GRID_CLASS)\n .withStyles({\n element: {\n display: 'grid',\n gridTemplateColumns: 'repeat(16, 1fr)',\n gridTemplateRows: 'repeat(16, 2vh)',\n gap: token.spacing.min,\n minHeight: '300px',\n\n [`@media (${token.media.queries.large.max})`]: {\n '@supports not (animation-timeline: scroll())': {\n width: '100%',\n },\n },\n\n ...withViewTimelineAnimation({\n gridTemplateColumns: config.layout.gridTemplateColumns,\n gridTemplateRows: config.layout.gridTemplateRows,\n transform: 'translate(-50%, -25%)',\n }),\n },\n })\n .withChildren(...gridItemElements)\n .build();\n};\n\nconst createFeatured = (\n element: HTMLImageElement | HTMLVideoElement,\n isExpand: boolean,\n totalCount: number,\n) => {\n let video: ElementModel | undefined;\n const { width: widthPercentage, height: heightVh } = getResponsiveSizes();\n\n const builder = new ElementBuilder()\n .withClassName(`${STACK_ELEMENT_CLASS}-featured`)\n .withStyles({\n element: {\n position: 'absolute',\n top: '20vh',\n left: '50%',\n transform: 'translateX(-50%)',\n zIndex: 999,\n width: `${widthPercentage * 100}%`,\n height: `${heightVh * 100}vh`,\n\n ...(isDisplayWithoutAnimation && {\n top: '0',\n }),\n\n [`@media (${token.media.queries.large.max})`]: {\n '@supports not (animation-timeline: view())': {\n width: '100% !important',\n height: '100% !important',\n top: '0',\n },\n },\n\n ...(isExpand && {\n ...withViewTimelineAnimation({\n top: '30vh',\n animation: `${KEY_FRAME_FEATURED_SIZE} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart: `${100 + (totalCount - 4) * 10}vh`,\n animationRangeEnd: '250vh',\n }),\n }),\n },\n });\n\n if (element.tagName === 'IMG') {\n const backgroundImage = assets.image.background({\n element: element as HTMLImageElement,\n isScaled: true,\n });\n builder.withChild(backgroundImage);\n }\n\n if (element.tagName === 'VIDEO') {\n element.setAttribute('muted', 'true');\n element.setAttribute('playsinline', 'true');\n element.setAttribute('loop', 'true');\n\n video = assets.video.toggle({\n video: element as HTMLVideoElement,\n isScaled: true,\n });\n\n if (video && video.element instanceof HTMLElement) {\n builder.withChild(video as ElementModel & { element: HTMLElement });\n }\n }\n\n const featuredElement = builder.build();\n\n if (isExpand && featuredElement.element instanceof HTMLElement) {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (video?.events?.setPlay) video.events.setPlay();\n observer.disconnect();\n }\n });\n },\n {\n rootMargin: `-${100 + (totalCount - 4) * 10}px 0px 0px 0px`,\n threshold: 0,\n },\n );\n\n observer.observe(featuredElement.element);\n }\n\n return featuredElement;\n};\n\nconst createSticky = (props: CardStackProps) => {\n const grid = createGrid(props);\n const featured = createFeatured(\n props.featured,\n props.isExpandFeature,\n props.images.length,\n );\n\n const wrapper = new ElementBuilder()\n .withClassName(`${STACK_CONTAINER_CLASS}-sticky-wrapper`)\n .withStyles({\n element: {\n position: 'relative',\n\n ...withViewTimelineAnimation({\n position: 'sticky',\n top: 0,\n }),\n },\n })\n .withChildren(grid, featured)\n .build();\n\n return new ElementBuilder()\n .withClassName(`${STACK_CONTAINER_CLASS}-sticky`)\n .withStyles({\n element: {\n ...withViewTimelineAnimation({\n height: '200vh',\n\n ...(props.isExpandFeature && {\n height: '250vh',\n }),\n }),\n },\n })\n .withChild(wrapper)\n .build();\n};\n\nexport default (props: CardStackProps) => {\n const sticky = createSticky(props);\n\n const composite = new ElementBuilder()\n .withClassName(STACK_CONTAINER_CLASS)\n .withStyles({\n element: {\n containerType: 'inline-size',\n opacity: '0',\n overflow: 'clip',\n },\n })\n .withChild(sticky)\n .build();\n\n const loadAnimation = async () => {\n const totalCount = props.images.length;\n const config = getConfigurationByCount(totalCount);\n const gridContainer = composite.element.querySelector(\n `.${STACK_GRID_CLASS}`,\n ) as HTMLElement;\n const featuredElement = composite.element.querySelector(\n `.${STACK_ELEMENT_CLASS}-featured`,\n ) as HTMLElement;\n let animationsCleared = false;\n\n if (!validateAnimationElements(gridContainer, config)) {\n return;\n }\n\n const clearAnimations = () => {\n if (animationsCleared) return;\n\n clearElementAnimations(featuredElement, gridContainer);\n animationsCleared = true;\n\n setTimeout(() => {\n processGridAnimation(props.featured, gridContainer!, config!);\n }, 100);\n };\n\n try {\n await waitForMediaLoad(gridContainer!);\n } catch (error) {\n console.warn('Media loading failed, proceeding with animation:', error);\n }\n\n processGridAnimation(props.featured, gridContainer!, config!);\n setElementOpacity(composite.element, '1');\n\n if (!isMobileDevice()) {\n const resizeHandler = createResizeHandler(() => {\n setTimeout(() => {\n processGridAnimation(props.featured, gridContainer!, config!);\n setTimeout(() => {\n setElementOpacity(composite.element, '1');\n animationsCleared = false;\n }, 100);\n }, 200);\n });\n\n window.addEventListener('resize', () => {\n if (isMobileDevice()) {\n return;\n }\n\n if (composite.element.style.opacity === '1') {\n setElementOpacity(composite.element, '0', 'opacity 0.3s ease-in-out');\n }\n\n clearAnimations();\n resizeHandler();\n });\n }\n };\n\n composite.styles += keyFrameGridExpand;\n composite.styles += keyFrameGridItem;\n composite.styles += keyFrameFeaturedSize;\n\n return {\n ...composite,\n events: {\n loadAnimation,\n },\n };\n};\n"],"names":["index","assets.image.background","assets.video.toggle"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const token = require("@universityofmaryland/web-
|
|
2
|
+
const token = require("@universityofmaryland/web-token-library");
|
|
3
3
|
function _interopNamespaceDefault(e) {
|
|
4
4
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
5
5
|
if (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chevron-scroll.js","sources":["../../../../source/atomic/animations/brand/chevron-scroll.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-
|
|
1
|
+
{"version":3,"file":"chevron-scroll.js","sources":["../../../../source/atomic/animations/brand/chevron-scroll.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\n\nconst ICON_CHEVRON_BIG = `<svg width=\"252\" height=\"306\" aria-hidden=\"true\" viewBox=\"0 0 252 306\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M126 0H0L126 152.706L0 305.411H126L252 152.706L126 0Z\" /></svg>`;\nconst ICON_CHEVRON_SMALL = `<svg width=\"144\" height=\"202\" aria-hidden=\"true\" viewBox=\"0 0 144 202\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M60.3972 0H0L83.6028 100.765L0 201.529H60.3972L144 100.765L60.3972 0Z\" /></svg>`;\n\nconst ELEMENT_ANIMATION_BRAND_LOGO = 'brand-logo-container';\nconst ELEMENT_FIRST_CHEVRON = 'brand-logo-first-chevron';\nconst ELEMENT_SECOND_CHEVRON = 'brand-logo-second-chevron';\nconst ELEMENT_THIRD_CHEVRON = 'brand-logo-third-chevron';\n\nconst FirstChevronStyles = `\n @keyframes chevron-one {\n from { transform: translateX(-80%); }\n to { transform: translateX(40%); }\n }\n\n .${ELEMENT_FIRST_CHEVRON} {\n top: 0;\n transform: translateX(-80%);\n }\n\n .${ELEMENT_FIRST_CHEVRON} svg {\n fill: ${token.color.gold};\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${ELEMENT_FIRST_CHEVRON} {\n transform: translateX(40%);\n animation: chevron-one forwards;\n animation-timeline: view();\n animation-range-start: cover;\n animation-range-end: contain;\n }\n }\n }\n`;\n\nconst SecondChevronStyles = `\n @keyframes chevron-two {\n from { transform: translateX(-40%); }\n to { transform: translateX(24%); }\n }\n\n .${ELEMENT_SECOND_CHEVRON} {\n top: 10%;\n z-index: 99;\n transform: translateX(-40%);\n }\n\n @media (${token.media.queries.highDef.min}) {\n .${ELEMENT_SECOND_CHEVRON} {\n top: 95px;\n }\n }\n\n .${ELEMENT_SECOND_CHEVRON} svg {\n fill: ${token.color.red};\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${ELEMENT_SECOND_CHEVRON} {\n transform: translateX(24%);\n animation: chevron-two forwards;\n animation-timeline: view();\n animation-range-start: cover;\n animation-range-end: contain;\n }\n }\n }\n`;\n\nconst ThirdChevronStyles = `\n @keyframes chevron-three {\n from { transform: translateX(-30%); }\n to { transform: translateX(60%); }\n }\n\n .${ELEMENT_THIRD_CHEVRON} {\n top: 25%;\n transform: translateX(-30%);\n }\n\n @media (${token.media.queries.highDef.min}) {\n .${ELEMENT_THIRD_CHEVRON} {\n top: 195px;\n }\n }\n\n .${ELEMENT_THIRD_CHEVRON} svg {\n fill: ${token.color.black};\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${ELEMENT_THIRD_CHEVRON} {\n transform: translateX(60%);\n animation: chevron-three forwards;\n animation-timeline: view();\n animation-range-start: 0;\n animation-range-end: 100vh;\n }\n }\n }\n`;\n\nconst STYLES_ANIMATION_BRAND_LOGO = `\n .${ELEMENT_ANIMATION_BRAND_LOGO} {\n position: relative;\n height: 50vw;\n width: 100vw;\n }\n\n .${ELEMENT_ANIMATION_BRAND_LOGO} > * {\n position: absolute;\n height: 100%;\n right: 0;\n transform: none;\n }\n\n .${ELEMENT_SECOND_CHEVRON} svg,\n .${ELEMENT_THIRD_CHEVRON} svg {\n height: 10vw;\n width: 8.2vw;\n }\n\n @media (${token.media.queries.highDef.min}) {\n .${ELEMENT_SECOND_CHEVRON} svg,\n .${ELEMENT_THIRD_CHEVRON} svg {\n height: 306px;\n width: 252px;\n }\n }\n\n .${FirstChevronStyles} svg {\n height: 7vw;\n width: 5vw;\n }\n\n @media (${token.media.queries.highDef.min}) {\n .${FirstChevronStyles} svg {\n height: 202px;\n width: 144px;\n }\n }\n\n ${FirstChevronStyles} \n ${SecondChevronStyles} \n ${ThirdChevronStyles} \n`;\n\nexport default () =>\n (() => {\n const container = document.createElement('div');\n const first = document.createElement('div');\n const second = document.createElement('div');\n const third = document.createElement('div');\n\n first.classList.add(ELEMENT_FIRST_CHEVRON);\n first.innerHTML = ICON_CHEVRON_SMALL;\n\n second.classList.add(ELEMENT_SECOND_CHEVRON);\n second.innerHTML = ICON_CHEVRON_BIG;\n\n third.classList.add(ELEMENT_THIRD_CHEVRON);\n third.innerHTML = ICON_CHEVRON_BIG;\n\n container.classList.add(ELEMENT_ANIMATION_BRAND_LOGO);\n container.appendChild(first);\n container.appendChild(second);\n container.appendChild(third);\n\n return {\n element: container,\n styles: STYLES_ANIMATION_BRAND_LOGO,\n };\n })();\n"],"names":["token"],"mappings":";;;;;;;;;;;;;;;;;;;AAEA,MAAM,mBAAmB;AACzB,MAAM,qBAAqB;AAE3B,MAAM,+BAA+B;AACrC,MAAM,wBAAwB;AAC9B,MAAM,yBAAyB;AAC/B,MAAM,wBAAwB;AAE9B,MAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMtB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,KAKrB,qBAAqB;AAAA,YACdA,iBAAM,MAAM,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,SAKnB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAW9B,MAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMvB,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMfA,iBAAM,MAAM,QAAQ,QAAQ,GAAG;AAAA,OACpC,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,KAKxB,sBAAsB;AAAA,YACfA,iBAAM,MAAM,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA,SAKlB,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAW/B,MAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMtB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,YAKdA,iBAAM,MAAM,QAAQ,QAAQ,GAAG;AAAA,OACpC,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,KAKvB,qBAAqB;AAAA,YACdA,iBAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,SAKpB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAW9B,MAAM,8BAA8B;AAAA,KAC/B,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAM5B,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAO5B,sBAAsB;AAAA,KACtB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,YAKdA,iBAAM,MAAM,QAAQ,QAAQ,GAAG;AAAA,OACpC,sBAAsB;AAAA,OACtB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMvB,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,YAKXA,iBAAM,MAAM,QAAQ,QAAQ,GAAG;AAAA,OACpC,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMrB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,kBAAkB;AAAA;AAGtB,MAAA,gBAAe,OACZ,MAAM;AACL,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,QAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,QAAM,SAAS,SAAS,cAAc,KAAK;AAC3C,QAAM,QAAQ,SAAS,cAAc,KAAK;AAE1C,QAAM,UAAU,IAAI,qBAAqB;AACzC,QAAM,YAAY;AAElB,SAAO,UAAU,IAAI,sBAAsB;AAC3C,SAAO,YAAY;AAEnB,QAAM,UAAU,IAAI,qBAAqB;AACzC,QAAM,YAAY;AAElB,YAAU,UAAU,IAAI,4BAA4B;AACpD,YAAU,YAAY,KAAK;AAC3B,YAAU,YAAY,MAAM;AAC5B,YAAU,YAAY,KAAK;AAE3B,SAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,EAAA;AAEZ,GAAA;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as token from "@universityofmaryland/web-
|
|
1
|
+
import * as token from "@universityofmaryland/web-token-library";
|
|
2
2
|
const ICON_CHEVRON_BIG = `<svg width="252" height="306" aria-hidden="true" viewBox="0 0 252 306" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M126 0H0L126 152.706L0 305.411H126L252 152.706L126 0Z" /></svg>`;
|
|
3
3
|
const ICON_CHEVRON_SMALL = `<svg width="144" height="202" aria-hidden="true" viewBox="0 0 144 202" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M60.3972 0H0L83.6028 100.765L0 201.529H60.3972L144 100.765L60.3972 0Z" /></svg>`;
|
|
4
4
|
const ELEMENT_ANIMATION_BRAND_LOGO = "brand-logo-container";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chevron-scroll.mjs","sources":["../../../../source/atomic/animations/brand/chevron-scroll.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-
|
|
1
|
+
{"version":3,"file":"chevron-scroll.mjs","sources":["../../../../source/atomic/animations/brand/chevron-scroll.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\n\nconst ICON_CHEVRON_BIG = `<svg width=\"252\" height=\"306\" aria-hidden=\"true\" viewBox=\"0 0 252 306\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M126 0H0L126 152.706L0 305.411H126L252 152.706L126 0Z\" /></svg>`;\nconst ICON_CHEVRON_SMALL = `<svg width=\"144\" height=\"202\" aria-hidden=\"true\" viewBox=\"0 0 144 202\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M60.3972 0H0L83.6028 100.765L0 201.529H60.3972L144 100.765L60.3972 0Z\" /></svg>`;\n\nconst ELEMENT_ANIMATION_BRAND_LOGO = 'brand-logo-container';\nconst ELEMENT_FIRST_CHEVRON = 'brand-logo-first-chevron';\nconst ELEMENT_SECOND_CHEVRON = 'brand-logo-second-chevron';\nconst ELEMENT_THIRD_CHEVRON = 'brand-logo-third-chevron';\n\nconst FirstChevronStyles = `\n @keyframes chevron-one {\n from { transform: translateX(-80%); }\n to { transform: translateX(40%); }\n }\n\n .${ELEMENT_FIRST_CHEVRON} {\n top: 0;\n transform: translateX(-80%);\n }\n\n .${ELEMENT_FIRST_CHEVRON} svg {\n fill: ${token.color.gold};\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${ELEMENT_FIRST_CHEVRON} {\n transform: translateX(40%);\n animation: chevron-one forwards;\n animation-timeline: view();\n animation-range-start: cover;\n animation-range-end: contain;\n }\n }\n }\n`;\n\nconst SecondChevronStyles = `\n @keyframes chevron-two {\n from { transform: translateX(-40%); }\n to { transform: translateX(24%); }\n }\n\n .${ELEMENT_SECOND_CHEVRON} {\n top: 10%;\n z-index: 99;\n transform: translateX(-40%);\n }\n\n @media (${token.media.queries.highDef.min}) {\n .${ELEMENT_SECOND_CHEVRON} {\n top: 95px;\n }\n }\n\n .${ELEMENT_SECOND_CHEVRON} svg {\n fill: ${token.color.red};\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${ELEMENT_SECOND_CHEVRON} {\n transform: translateX(24%);\n animation: chevron-two forwards;\n animation-timeline: view();\n animation-range-start: cover;\n animation-range-end: contain;\n }\n }\n }\n`;\n\nconst ThirdChevronStyles = `\n @keyframes chevron-three {\n from { transform: translateX(-30%); }\n to { transform: translateX(60%); }\n }\n\n .${ELEMENT_THIRD_CHEVRON} {\n top: 25%;\n transform: translateX(-30%);\n }\n\n @media (${token.media.queries.highDef.min}) {\n .${ELEMENT_THIRD_CHEVRON} {\n top: 195px;\n }\n }\n\n .${ELEMENT_THIRD_CHEVRON} svg {\n fill: ${token.color.black};\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${ELEMENT_THIRD_CHEVRON} {\n transform: translateX(60%);\n animation: chevron-three forwards;\n animation-timeline: view();\n animation-range-start: 0;\n animation-range-end: 100vh;\n }\n }\n }\n`;\n\nconst STYLES_ANIMATION_BRAND_LOGO = `\n .${ELEMENT_ANIMATION_BRAND_LOGO} {\n position: relative;\n height: 50vw;\n width: 100vw;\n }\n\n .${ELEMENT_ANIMATION_BRAND_LOGO} > * {\n position: absolute;\n height: 100%;\n right: 0;\n transform: none;\n }\n\n .${ELEMENT_SECOND_CHEVRON} svg,\n .${ELEMENT_THIRD_CHEVRON} svg {\n height: 10vw;\n width: 8.2vw;\n }\n\n @media (${token.media.queries.highDef.min}) {\n .${ELEMENT_SECOND_CHEVRON} svg,\n .${ELEMENT_THIRD_CHEVRON} svg {\n height: 306px;\n width: 252px;\n }\n }\n\n .${FirstChevronStyles} svg {\n height: 7vw;\n width: 5vw;\n }\n\n @media (${token.media.queries.highDef.min}) {\n .${FirstChevronStyles} svg {\n height: 202px;\n width: 144px;\n }\n }\n\n ${FirstChevronStyles} \n ${SecondChevronStyles} \n ${ThirdChevronStyles} \n`;\n\nexport default () =>\n (() => {\n const container = document.createElement('div');\n const first = document.createElement('div');\n const second = document.createElement('div');\n const third = document.createElement('div');\n\n first.classList.add(ELEMENT_FIRST_CHEVRON);\n first.innerHTML = ICON_CHEVRON_SMALL;\n\n second.classList.add(ELEMENT_SECOND_CHEVRON);\n second.innerHTML = ICON_CHEVRON_BIG;\n\n third.classList.add(ELEMENT_THIRD_CHEVRON);\n third.innerHTML = ICON_CHEVRON_BIG;\n\n container.classList.add(ELEMENT_ANIMATION_BRAND_LOGO);\n container.appendChild(first);\n container.appendChild(second);\n container.appendChild(third);\n\n return {\n element: container,\n styles: STYLES_ANIMATION_BRAND_LOGO,\n };\n })();\n"],"names":[],"mappings":";AAEA,MAAM,mBAAmB;AACzB,MAAM,qBAAqB;AAE3B,MAAM,+BAA+B;AACrC,MAAM,wBAAwB;AAC9B,MAAM,yBAAyB;AAC/B,MAAM,wBAAwB;AAE9B,MAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMtB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,KAKrB,qBAAqB;AAAA,YACd,MAAM,MAAM,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,SAKnB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAW9B,MAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMvB,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMf,MAAM,MAAM,QAAQ,QAAQ,GAAG;AAAA,OACpC,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,KAKxB,sBAAsB;AAAA,YACf,MAAM,MAAM,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA,SAKlB,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAW/B,MAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMtB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,YAKd,MAAM,MAAM,QAAQ,QAAQ,GAAG;AAAA,OACpC,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,KAKvB,qBAAqB;AAAA,YACd,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,SAKpB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAW9B,MAAM,8BAA8B;AAAA,KAC/B,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAM5B,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAO5B,sBAAsB;AAAA,KACtB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,YAKd,MAAM,MAAM,QAAQ,QAAQ,GAAG;AAAA,OACpC,sBAAsB;AAAA,OACtB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMvB,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,YAKX,MAAM,MAAM,QAAQ,QAAQ,GAAG;AAAA,OACpC,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMrB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,kBAAkB;AAAA;AAGtB,MAAA,gBAAe,OACZ,MAAM;AACL,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,QAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,QAAM,SAAS,SAAS,cAAc,KAAK;AAC3C,QAAM,QAAQ,SAAS,cAAc,KAAK;AAE1C,QAAM,UAAU,IAAI,qBAAqB;AACzC,QAAM,YAAY;AAElB,SAAO,UAAU,IAAI,sBAAsB;AAC3C,SAAO,YAAY;AAEnB,QAAM,UAAU,IAAI,qBAAqB;AACzC,QAAM,YAAY;AAElB,YAAU,UAAU,IAAI,4BAA4B;AACpD,YAAU,YAAY,KAAK;AAC3B,YAAU,YAAY,MAAM;AAC5B,YAAU,YAAY,KAAK;AAE3B,SAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,EAAA;AAEZ,GAAA;"}
|
|
@@ -10,10 +10,6 @@ interface Props extends Asset {
|
|
|
10
10
|
isShowCaption?: boolean;
|
|
11
11
|
customStyles?: Record<string, any>;
|
|
12
12
|
}
|
|
13
|
-
declare const _default: (props: Props) =>
|
|
14
|
-
element: HTMLElement;
|
|
15
|
-
className: string;
|
|
16
|
-
styles: string;
|
|
17
|
-
};
|
|
13
|
+
declare const _default: (props: Props) => import('@universityofmaryland/web-builder-library').ElementModel<HTMLElement>;
|
|
18
14
|
export default _default;
|
|
19
15
|
//# sourceMappingURL=background.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../../../../source/atomic/assets/image/background.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../../../../source/atomic/assets/image/background.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKlD,UAAU,KAAK;IACb,OAAO,EAAE,gBAAgB,GAAG,iBAAiB,CAAC;IAC9C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,KAAM,SAAQ,KAAK;IAC3B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACpC;yBA4Fe,OAAO,KAAK;AAA5B,wBAyCE"}
|
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const
|
|
2
|
+
const Styles = require("@universityofmaryland/web-styles-library");
|
|
3
|
+
const webBuilderLibrary = require("@universityofmaryland/web-builder-library");
|
|
3
4
|
const gif = require("./gif.js");
|
|
4
|
-
|
|
5
|
-
const
|
|
5
|
+
function _interopNamespaceDefault(e) {
|
|
6
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
7
|
+
if (e) {
|
|
8
|
+
for (const k in e) {
|
|
9
|
+
if (k !== "default") {
|
|
10
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
11
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: () => e[k]
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
n.default = e;
|
|
19
|
+
return Object.freeze(n);
|
|
20
|
+
}
|
|
21
|
+
const Styles__namespace = /* @__PURE__ */ _interopNamespaceDefault(Styles);
|
|
6
22
|
const ATTRIBUTE_CAPTION = "data-caption";
|
|
7
23
|
const ATTRIBUTE_CREDIT = "data-credit";
|
|
8
24
|
const isImageElement = (element) => {
|
|
@@ -35,11 +51,7 @@ const createCaption = (element, isShowCaption) => {
|
|
|
35
51
|
}
|
|
36
52
|
const text = attributeCaption || attributeCredit;
|
|
37
53
|
if (!text) return null;
|
|
38
|
-
|
|
39
|
-
caption.textContent = text;
|
|
40
|
-
return assets.imageCaption({
|
|
41
|
-
element: caption
|
|
42
|
-
});
|
|
54
|
+
return new webBuilderLibrary.ElementBuilder("span").withText(text).styled(Styles__namespace.element.asset.image.caption).build();
|
|
43
55
|
};
|
|
44
56
|
const embedAsset = ({
|
|
45
57
|
element,
|
|
@@ -57,22 +69,15 @@ const embedAsset = ({
|
|
|
57
69
|
return;
|
|
58
70
|
}
|
|
59
71
|
if (isAspectStandard) {
|
|
60
|
-
return
|
|
61
|
-
element
|
|
62
|
-
});
|
|
72
|
+
return new webBuilderLibrary.ElementBuilder().styled(Styles__namespace.element.asset.image.aspectStandard).withChild(element).build();
|
|
63
73
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
width: "100%",
|
|
70
|
-
height: "100%"
|
|
71
|
-
}
|
|
74
|
+
return new webBuilderLibrary.ElementBuilder().withClassName("image-container").withStyles({
|
|
75
|
+
element: {
|
|
76
|
+
position: "relative",
|
|
77
|
+
width: "100%",
|
|
78
|
+
height: "100%"
|
|
72
79
|
}
|
|
73
|
-
});
|
|
74
|
-
defaultContainer.element.appendChild(element);
|
|
75
|
-
return defaultContainer;
|
|
80
|
+
}).withChild(element).build();
|
|
76
81
|
};
|
|
77
82
|
const imageContainer = (props) => {
|
|
78
83
|
const {
|
|
@@ -86,31 +91,26 @@ const imageContainer = (props) => {
|
|
|
86
91
|
} = props;
|
|
87
92
|
const asset = embedAsset({ element, isAspectStandard, isGifAllowed });
|
|
88
93
|
const caption = createCaption(element, isShowCaption);
|
|
89
|
-
const
|
|
94
|
+
const defaultStyles = Styles__namespace.element.asset.image.composeWrapper({
|
|
95
|
+
scaled: isScaled
|
|
96
|
+
});
|
|
97
|
+
const composite = new webBuilderLibrary.ElementBuilder().styled(defaultStyles).withStyles({
|
|
98
|
+
element: {
|
|
99
|
+
...customStyles
|
|
100
|
+
}
|
|
101
|
+
});
|
|
90
102
|
if (caption) {
|
|
91
|
-
|
|
103
|
+
composite.withChild(caption);
|
|
92
104
|
}
|
|
93
105
|
if (dateSign) {
|
|
94
|
-
|
|
95
|
-
layout.
|
|
96
|
-
element: document.createElement("div"),
|
|
97
|
-
children: [dateSign]
|
|
98
|
-
})
|
|
106
|
+
composite.withChild(
|
|
107
|
+
new webBuilderLibrary.ElementBuilder().styled(Styles__namespace.layout.background.box.white).withChild(dateSign).build()
|
|
99
108
|
);
|
|
100
109
|
}
|
|
101
110
|
if (asset) {
|
|
102
|
-
|
|
111
|
+
composite.withChild(asset);
|
|
103
112
|
}
|
|
104
|
-
return
|
|
105
|
-
element: document.createElement("div"),
|
|
106
|
-
children,
|
|
107
|
-
isScaled,
|
|
108
|
-
elementStyles: {
|
|
109
|
-
element: {
|
|
110
|
-
...customStyles
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
});
|
|
113
|
+
return composite.build();
|
|
114
114
|
};
|
|
115
115
|
module.exports = imageContainer;
|
|
116
116
|
//# sourceMappingURL=background.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background.js","sources":["../../../../source/atomic/assets/image/background.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"background.js","sources":["../../../../source/atomic/assets/image/background.ts"],"sourcesContent":["import * as Styles from '@universityofmaryland/web-styles-library';\nimport { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport { default as gifToggle } from './gif';\nimport { type UMDElement } from '../../../_types';\n\nconst ATTRIBUTE_CAPTION = 'data-caption';\nconst ATTRIBUTE_CREDIT = 'data-credit';\n\ninterface Asset {\n element: HTMLImageElement | HTMLAnchorElement;\n isAspectStandard?: boolean;\n isScaled?: boolean;\n isGifAllowed?: boolean;\n}\n\ninterface Props extends Asset {\n dateSign?: UMDElement;\n isShowCaption?: boolean;\n customStyles?: Record<string, any>;\n}\n\nconst isImageElement = (element: HTMLElement): element is HTMLImageElement => {\n return element instanceof HTMLImageElement;\n};\n\nconst checkIsGif = (element: HTMLImageElement | HTMLAnchorElement): boolean => {\n if (isImageElement(element)) {\n return element.src !== null && element.src.toLowerCase().includes('.gif');\n }\n\n if (element instanceof HTMLAnchorElement) {\n const imgChild = element.querySelector('img');\n const isGif =\n imgChild !== null &&\n imgChild.src !== null &&\n imgChild.src.toLowerCase().includes('.gif');\n\n if (isGif) {\n console.error(\n `GIFs are not allowed in <a>. Please upload a different format.`,\n );\n }\n\n return isGif;\n }\n\n return false;\n};\n\nconst createCaption = (\n element: HTMLImageElement | HTMLAnchorElement,\n isShowCaption: boolean,\n) => {\n if (!isShowCaption) return null;\n\n const attributeCaption = element.getAttribute(ATTRIBUTE_CAPTION);\n const attributeCredit = element.getAttribute(ATTRIBUTE_CREDIT);\n\n if (attributeCaption) {\n console.log(\n `Attribute \"data-caption\" is deprecated. Use \"data-credit\" instead. This attribute will be removed in version 2.0.`,\n );\n }\n\n const text = attributeCaption || attributeCredit;\n if (!text) return null;\n\n return new ElementBuilder('span')\n .withText(text)\n .styled(Styles.element.asset.image.caption)\n .build();\n};\n\nconst embedAsset = ({\n element,\n isAspectStandard,\n isGifAllowed,\n}: Pick<Asset, 'element' | 'isAspectStandard' | 'isGifAllowed'>) => {\n const isTypeGif = checkIsGif(element);\n\n if (isGifAllowed && isTypeGif) {\n return gifToggle({ element });\n }\n\n if (!isGifAllowed && isTypeGif) {\n console.error(\n `GIFs are not allowed in <${element.localName}>. Please upload a different format.`,\n );\n return;\n }\n\n if (isAspectStandard) {\n return new ElementBuilder()\n .styled(Styles.element.asset.image.aspectStandard)\n .withChild(element)\n .build();\n }\n\n return new ElementBuilder()\n .withClassName('image-container')\n .withStyles({\n element: {\n position: 'relative',\n width: '100%',\n height: '100%',\n },\n })\n .withChild(element)\n .build();\n};\n\nexport default (props: Props) => {\n const {\n customStyles,\n dateSign,\n element,\n isAspectStandard = false,\n isScaled,\n isShowCaption = false,\n isGifAllowed = false,\n } = props;\n\n const asset = embedAsset({ element, isAspectStandard, isGifAllowed });\n const caption = createCaption(element, isShowCaption);\n const defaultStyles = Styles.element.asset.image.composeWrapper({\n scaled: isScaled,\n });\n\n const composite = new ElementBuilder().styled(defaultStyles).withStyles({\n element: {\n ...customStyles,\n },\n });\n\n if (caption) {\n composite.withChild(caption);\n }\n\n if (dateSign) {\n composite.withChild(\n new ElementBuilder()\n .styled(Styles.layout.background.box.white)\n .withChild(dateSign)\n .build(),\n );\n }\n\n if (asset) {\n composite.withChild(asset);\n }\n\n return composite.build();\n};\n"],"names":["ElementBuilder","Styles","gifToggle"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAKA,MAAM,oBAAoB;AAC1B,MAAM,mBAAmB;AAezB,MAAM,iBAAiB,CAAC,YAAsD;AAC5E,SAAO,mBAAmB;AAC5B;AAEA,MAAM,aAAa,CAAC,YAA2D;AAC7E,MAAI,eAAe,OAAO,GAAG;AAC3B,WAAO,QAAQ,QAAQ,QAAQ,QAAQ,IAAI,YAAA,EAAc,SAAS,MAAM;AAAA,EAC1E;AAEA,MAAI,mBAAmB,mBAAmB;AACxC,UAAM,WAAW,QAAQ,cAAc,KAAK;AAC5C,UAAM,QACJ,aAAa,QACb,SAAS,QAAQ,QACjB,SAAS,IAAI,cAAc,SAAS,MAAM;AAE5C,QAAI,OAAO;AACT,cAAQ;AAAA,QACN;AAAA,MAAA;AAAA,IAEJ;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,MAAM,gBAAgB,CACpB,SACA,kBACG;AACH,MAAI,CAAC,cAAe,QAAO;AAE3B,QAAM,mBAAmB,QAAQ,aAAa,iBAAiB;AAC/D,QAAM,kBAAkB,QAAQ,aAAa,gBAAgB;AAE7D,MAAI,kBAAkB;AACpB,YAAQ;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,OAAO,oBAAoB;AACjC,MAAI,CAAC,KAAM,QAAO;AAElB,SAAO,IAAIA,kBAAAA,eAAe,MAAM,EAC7B,SAAS,IAAI,EACb,OAAOC,kBAAO,QAAQ,MAAM,MAAM,OAAO,EACzC,MAAA;AACL;AAEA,MAAM,aAAa,CAAC;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AACF,MAAoE;AAClE,QAAM,YAAY,WAAW,OAAO;AAEpC,MAAI,gBAAgB,WAAW;AAC7B,WAAOC,IAAU,EAAE,SAAS;AAAA,EAC9B;AAEA,MAAI,CAAC,gBAAgB,WAAW;AAC9B,YAAQ;AAAA,MACN,4BAA4B,QAAQ,SAAS;AAAA,IAAA;AAE/C;AAAA,EACF;AAEA,MAAI,kBAAkB;AACpB,WAAO,IAAIF,kBAAAA,eAAA,EACR,OAAOC,kBAAO,QAAQ,MAAM,MAAM,cAAc,EAChD,UAAU,OAAO,EACjB,MAAA;AAAA,EACL;AAEA,SAAO,IAAID,kBAAAA,eAAA,EACR,cAAc,iBAAiB,EAC/B,WAAW;AAAA,IACV,SAAS;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA;AAAA,EACV,CACD,EACA,UAAU,OAAO,EACjB,MAAA;AACL;AAEA,MAAA,iBAAe,CAAC,UAAiB;AAC/B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,IACnB;AAAA,IACA,gBAAgB;AAAA,IAChB,eAAe;AAAA,EAAA,IACb;AAEJ,QAAM,QAAQ,WAAW,EAAE,SAAS,kBAAkB,cAAc;AACpE,QAAM,UAAU,cAAc,SAAS,aAAa;AACpD,QAAM,gBAAgBC,kBAAO,QAAQ,MAAM,MAAM,eAAe;AAAA,IAC9D,QAAQ;AAAA,EAAA,CACT;AAED,QAAM,YAAY,IAAID,kBAAAA,eAAA,EAAiB,OAAO,aAAa,EAAE,WAAW;AAAA,IACtE,SAAS;AAAA,MACP,GAAG;AAAA,IAAA;AAAA,EACL,CACD;AAED,MAAI,SAAS;AACX,cAAU,UAAU,OAAO;AAAA,EAC7B;AAEA,MAAI,UAAU;AACZ,cAAU;AAAA,MACR,IAAIA,iCAAA,EACD,OAAOC,kBAAO,OAAO,WAAW,IAAI,KAAK,EACzC,UAAU,QAAQ,EAClB,MAAA;AAAA,IAAM;AAAA,EAEb;AAEA,MAAI,OAAO;AACT,cAAU,UAAU,KAAK;AAAA,EAC3B;AAEA,SAAO,UAAU,MAAA;AACnB;;"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as Styles from "@universityofmaryland/web-styles-library";
|
|
2
|
+
import { ElementBuilder } from "@universityofmaryland/web-builder-library";
|
|
2
3
|
import gifToggle from "./gif.mjs";
|
|
3
|
-
import { backgroundBoxWhite } from "../../../model/elements/layout.mjs";
|
|
4
|
-
import { imageWrapper, imageAspect, imageCaption } from "../../../model/elements/assets.mjs";
|
|
5
4
|
const ATTRIBUTE_CAPTION = "data-caption";
|
|
6
5
|
const ATTRIBUTE_CREDIT = "data-credit";
|
|
7
6
|
const isImageElement = (element) => {
|
|
@@ -34,11 +33,7 @@ const createCaption = (element, isShowCaption) => {
|
|
|
34
33
|
}
|
|
35
34
|
const text = attributeCaption || attributeCredit;
|
|
36
35
|
if (!text) return null;
|
|
37
|
-
|
|
38
|
-
caption.textContent = text;
|
|
39
|
-
return imageCaption({
|
|
40
|
-
element: caption
|
|
41
|
-
});
|
|
36
|
+
return new ElementBuilder("span").withText(text).styled(Styles.element.asset.image.caption).build();
|
|
42
37
|
};
|
|
43
38
|
const embedAsset = ({
|
|
44
39
|
element,
|
|
@@ -56,22 +51,15 @@ const embedAsset = ({
|
|
|
56
51
|
return;
|
|
57
52
|
}
|
|
58
53
|
if (isAspectStandard) {
|
|
59
|
-
return
|
|
60
|
-
element
|
|
61
|
-
});
|
|
54
|
+
return new ElementBuilder().styled(Styles.element.asset.image.aspectStandard).withChild(element).build();
|
|
62
55
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
width: "100%",
|
|
69
|
-
height: "100%"
|
|
70
|
-
}
|
|
56
|
+
return new ElementBuilder().withClassName("image-container").withStyles({
|
|
57
|
+
element: {
|
|
58
|
+
position: "relative",
|
|
59
|
+
width: "100%",
|
|
60
|
+
height: "100%"
|
|
71
61
|
}
|
|
72
|
-
});
|
|
73
|
-
defaultContainer.element.appendChild(element);
|
|
74
|
-
return defaultContainer;
|
|
62
|
+
}).withChild(element).build();
|
|
75
63
|
};
|
|
76
64
|
const imageContainer = (props) => {
|
|
77
65
|
const {
|
|
@@ -85,31 +73,26 @@ const imageContainer = (props) => {
|
|
|
85
73
|
} = props;
|
|
86
74
|
const asset = embedAsset({ element, isAspectStandard, isGifAllowed });
|
|
87
75
|
const caption = createCaption(element, isShowCaption);
|
|
88
|
-
const
|
|
76
|
+
const defaultStyles = Styles.element.asset.image.composeWrapper({
|
|
77
|
+
scaled: isScaled
|
|
78
|
+
});
|
|
79
|
+
const composite = new ElementBuilder().styled(defaultStyles).withStyles({
|
|
80
|
+
element: {
|
|
81
|
+
...customStyles
|
|
82
|
+
}
|
|
83
|
+
});
|
|
89
84
|
if (caption) {
|
|
90
|
-
|
|
85
|
+
composite.withChild(caption);
|
|
91
86
|
}
|
|
92
87
|
if (dateSign) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
element: document.createElement("div"),
|
|
96
|
-
children: [dateSign]
|
|
97
|
-
})
|
|
88
|
+
composite.withChild(
|
|
89
|
+
new ElementBuilder().styled(Styles.layout.background.box.white).withChild(dateSign).build()
|
|
98
90
|
);
|
|
99
91
|
}
|
|
100
92
|
if (asset) {
|
|
101
|
-
|
|
93
|
+
composite.withChild(asset);
|
|
102
94
|
}
|
|
103
|
-
return
|
|
104
|
-
element: document.createElement("div"),
|
|
105
|
-
children,
|
|
106
|
-
isScaled,
|
|
107
|
-
elementStyles: {
|
|
108
|
-
element: {
|
|
109
|
-
...customStyles
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
});
|
|
95
|
+
return composite.build();
|
|
113
96
|
};
|
|
114
97
|
export {
|
|
115
98
|
imageContainer as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background.mjs","sources":["../../../../source/atomic/assets/image/background.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"background.mjs","sources":["../../../../source/atomic/assets/image/background.ts"],"sourcesContent":["import * as Styles from '@universityofmaryland/web-styles-library';\nimport { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport { default as gifToggle } from './gif';\nimport { type UMDElement } from '../../../_types';\n\nconst ATTRIBUTE_CAPTION = 'data-caption';\nconst ATTRIBUTE_CREDIT = 'data-credit';\n\ninterface Asset {\n element: HTMLImageElement | HTMLAnchorElement;\n isAspectStandard?: boolean;\n isScaled?: boolean;\n isGifAllowed?: boolean;\n}\n\ninterface Props extends Asset {\n dateSign?: UMDElement;\n isShowCaption?: boolean;\n customStyles?: Record<string, any>;\n}\n\nconst isImageElement = (element: HTMLElement): element is HTMLImageElement => {\n return element instanceof HTMLImageElement;\n};\n\nconst checkIsGif = (element: HTMLImageElement | HTMLAnchorElement): boolean => {\n if (isImageElement(element)) {\n return element.src !== null && element.src.toLowerCase().includes('.gif');\n }\n\n if (element instanceof HTMLAnchorElement) {\n const imgChild = element.querySelector('img');\n const isGif =\n imgChild !== null &&\n imgChild.src !== null &&\n imgChild.src.toLowerCase().includes('.gif');\n\n if (isGif) {\n console.error(\n `GIFs are not allowed in <a>. Please upload a different format.`,\n );\n }\n\n return isGif;\n }\n\n return false;\n};\n\nconst createCaption = (\n element: HTMLImageElement | HTMLAnchorElement,\n isShowCaption: boolean,\n) => {\n if (!isShowCaption) return null;\n\n const attributeCaption = element.getAttribute(ATTRIBUTE_CAPTION);\n const attributeCredit = element.getAttribute(ATTRIBUTE_CREDIT);\n\n if (attributeCaption) {\n console.log(\n `Attribute \"data-caption\" is deprecated. Use \"data-credit\" instead. This attribute will be removed in version 2.0.`,\n );\n }\n\n const text = attributeCaption || attributeCredit;\n if (!text) return null;\n\n return new ElementBuilder('span')\n .withText(text)\n .styled(Styles.element.asset.image.caption)\n .build();\n};\n\nconst embedAsset = ({\n element,\n isAspectStandard,\n isGifAllowed,\n}: Pick<Asset, 'element' | 'isAspectStandard' | 'isGifAllowed'>) => {\n const isTypeGif = checkIsGif(element);\n\n if (isGifAllowed && isTypeGif) {\n return gifToggle({ element });\n }\n\n if (!isGifAllowed && isTypeGif) {\n console.error(\n `GIFs are not allowed in <${element.localName}>. Please upload a different format.`,\n );\n return;\n }\n\n if (isAspectStandard) {\n return new ElementBuilder()\n .styled(Styles.element.asset.image.aspectStandard)\n .withChild(element)\n .build();\n }\n\n return new ElementBuilder()\n .withClassName('image-container')\n .withStyles({\n element: {\n position: 'relative',\n width: '100%',\n height: '100%',\n },\n })\n .withChild(element)\n .build();\n};\n\nexport default (props: Props) => {\n const {\n customStyles,\n dateSign,\n element,\n isAspectStandard = false,\n isScaled,\n isShowCaption = false,\n isGifAllowed = false,\n } = props;\n\n const asset = embedAsset({ element, isAspectStandard, isGifAllowed });\n const caption = createCaption(element, isShowCaption);\n const defaultStyles = Styles.element.asset.image.composeWrapper({\n scaled: isScaled,\n });\n\n const composite = new ElementBuilder().styled(defaultStyles).withStyles({\n element: {\n ...customStyles,\n },\n });\n\n if (caption) {\n composite.withChild(caption);\n }\n\n if (dateSign) {\n composite.withChild(\n new ElementBuilder()\n .styled(Styles.layout.background.box.white)\n .withChild(dateSign)\n .build(),\n );\n }\n\n if (asset) {\n composite.withChild(asset);\n }\n\n return composite.build();\n};\n"],"names":[],"mappings":";;;AAKA,MAAM,oBAAoB;AAC1B,MAAM,mBAAmB;AAezB,MAAM,iBAAiB,CAAC,YAAsD;AAC5E,SAAO,mBAAmB;AAC5B;AAEA,MAAM,aAAa,CAAC,YAA2D;AAC7E,MAAI,eAAe,OAAO,GAAG;AAC3B,WAAO,QAAQ,QAAQ,QAAQ,QAAQ,IAAI,YAAA,EAAc,SAAS,MAAM;AAAA,EAC1E;AAEA,MAAI,mBAAmB,mBAAmB;AACxC,UAAM,WAAW,QAAQ,cAAc,KAAK;AAC5C,UAAM,QACJ,aAAa,QACb,SAAS,QAAQ,QACjB,SAAS,IAAI,cAAc,SAAS,MAAM;AAE5C,QAAI,OAAO;AACT,cAAQ;AAAA,QACN;AAAA,MAAA;AAAA,IAEJ;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,MAAM,gBAAgB,CACpB,SACA,kBACG;AACH,MAAI,CAAC,cAAe,QAAO;AAE3B,QAAM,mBAAmB,QAAQ,aAAa,iBAAiB;AAC/D,QAAM,kBAAkB,QAAQ,aAAa,gBAAgB;AAE7D,MAAI,kBAAkB;AACpB,YAAQ;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,OAAO,oBAAoB;AACjC,MAAI,CAAC,KAAM,QAAO;AAElB,SAAO,IAAI,eAAe,MAAM,EAC7B,SAAS,IAAI,EACb,OAAO,OAAO,QAAQ,MAAM,MAAM,OAAO,EACzC,MAAA;AACL;AAEA,MAAM,aAAa,CAAC;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AACF,MAAoE;AAClE,QAAM,YAAY,WAAW,OAAO;AAEpC,MAAI,gBAAgB,WAAW;AAC7B,WAAO,UAAU,EAAE,SAAS;AAAA,EAC9B;AAEA,MAAI,CAAC,gBAAgB,WAAW;AAC9B,YAAQ;AAAA,MACN,4BAA4B,QAAQ,SAAS;AAAA,IAAA;AAE/C;AAAA,EACF;AAEA,MAAI,kBAAkB;AACpB,WAAO,IAAI,eAAA,EACR,OAAO,OAAO,QAAQ,MAAM,MAAM,cAAc,EAChD,UAAU,OAAO,EACjB,MAAA;AAAA,EACL;AAEA,SAAO,IAAI,eAAA,EACR,cAAc,iBAAiB,EAC/B,WAAW;AAAA,IACV,SAAS;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA;AAAA,EACV,CACD,EACA,UAAU,OAAO,EACjB,MAAA;AACL;AAEA,MAAA,iBAAe,CAAC,UAAiB;AAC/B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,IACnB;AAAA,IACA,gBAAgB;AAAA,IAChB,eAAe;AAAA,EAAA,IACb;AAEJ,QAAM,QAAQ,WAAW,EAAE,SAAS,kBAAkB,cAAc;AACpE,QAAM,UAAU,cAAc,SAAS,aAAa;AACpD,QAAM,gBAAgB,OAAO,QAAQ,MAAM,MAAM,eAAe;AAAA,IAC9D,QAAQ;AAAA,EAAA,CACT;AAED,QAAM,YAAY,IAAI,eAAA,EAAiB,OAAO,aAAa,EAAE,WAAW;AAAA,IACtE,SAAS;AAAA,MACP,GAAG;AAAA,IAAA;AAAA,EACL,CACD;AAED,MAAI,SAAS;AACX,cAAU,UAAU,OAAO;AAAA,EAC7B;AAEA,MAAI,UAAU;AACZ,cAAU;AAAA,MACR,IAAI,eAAA,EACD,OAAO,OAAO,OAAO,WAAW,IAAI,KAAK,EACzC,UAAU,QAAQ,EAClB,MAAA;AAAA,IAAM;AAAA,EAEb;AAEA,MAAI,OAAO;AACT,cAAU,UAAU,KAAK;AAAA,EAC3B;AAEA,SAAO,UAAU,MAAA;AACnB;"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
declare const _default: ({ element, }: {
|
|
2
2
|
element: HTMLImageElement | HTMLAnchorElement;
|
|
3
|
-
}) =>
|
|
4
|
-
element: HTMLElement;
|
|
5
|
-
className: string;
|
|
6
|
-
styles: string;
|
|
7
|
-
};
|
|
3
|
+
}) => import('@universityofmaryland/web-builder-library').ElementModel<HTMLAnchorElement | HTMLDivElement>;
|
|
8
4
|
export default _default;
|
|
9
5
|
//# sourceMappingURL=gif.d.ts.map
|