@universityofmaryland/web-elements-library 1.4.3 → 1.4.5
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/atomic/animations/brand/chevron-scroll.js +3 -3
- package/dist/atomic/animations/brand/chevron-scroll.js.map +1 -1
- package/dist/atomic/animations/brand/chevron-scroll.mjs +3 -3
- package/dist/atomic/animations/brand/chevron-scroll.mjs.map +1 -1
- package/dist/composite/carousel/cards/index.js +1 -1
- package/dist/composite/carousel/cards/index.js.map +1 -1
- package/dist/composite/carousel/cards/index.mjs +1 -1
- package/dist/composite/carousel/cards/index.mjs.map +1 -1
- package/dist/composite/hero/stacked.js +1 -1
- package/dist/composite/hero/stacked.js.map +1 -1
- package/dist/composite/hero/stacked.mjs +1 -1
- package/dist/composite/hero/stacked.mjs.map +1 -1
- package/dist/composite/layout/image/expand.js +10 -10
- package/dist/composite/layout/image/expand.js.map +1 -1
- package/dist/composite/layout/image/expand.mjs +10 -10
- package/dist/composite/layout/image/expand.mjs.map +1 -1
- package/dist/composite/pathway/hero.d.ts.map +1 -1
- package/dist/composite/pathway/hero.js +1 -2
- package/dist/composite/pathway/hero.js.map +1 -1
- package/dist/composite/pathway/hero.mjs +1 -2
- package/dist/composite/pathway/hero.mjs.map +1 -1
- package/dist/composite/pathway/overlay.js +4 -4
- package/dist/composite/pathway/overlay.js.map +1 -1
- package/dist/composite/pathway/overlay.mjs +4 -4
- package/dist/composite/pathway/overlay.mjs.map +1 -1
- package/dist/utilities/theme/media.d.ts +1 -1
- package/dist/utilities/theme/media.js +1 -1
- package/dist/utilities/theme/media.js.map +1 -1
- package/dist/utilities/theme/media.mjs +1 -1
- package/dist/utilities/theme/media.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# University of Maryland Web Elements Library
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/@universityofmaryland/web-elements-library)
|
|
4
4
|
|
|
5
5
|
Foundational UI building blocks for the UMD Design System, providing atomic elements that combine to create complex, accessible, and brand-compliant University of Maryland digital experiences.
|
|
6
6
|
|
|
@@ -22,7 +22,7 @@ const FirstChevronStyles = `
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
@media (prefers-reduced-motion: no-preference) {
|
|
25
|
-
@supports (animation-timeline:
|
|
25
|
+
@supports (animation-timeline: scroll()) {
|
|
26
26
|
.${ELEMENT_FIRST_CHEVRON} {
|
|
27
27
|
transform: translateX(40%);
|
|
28
28
|
animation: chevron-one forwards;
|
|
@@ -56,7 +56,7 @@ const SecondChevronStyles = `
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
@media (prefers-reduced-motion: no-preference) {
|
|
59
|
-
@supports (animation-timeline:
|
|
59
|
+
@supports (animation-timeline: scroll()) {
|
|
60
60
|
.${ELEMENT_SECOND_CHEVRON} {
|
|
61
61
|
transform: translateX(24%);
|
|
62
62
|
animation: chevron-two forwards;
|
|
@@ -89,7 +89,7 @@ const ThirdChevronStyles = `
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
@media (prefers-reduced-motion: no-preference) {
|
|
92
|
-
@supports (animation-timeline:
|
|
92
|
+
@supports (animation-timeline: scroll()) {
|
|
93
93
|
.${ELEMENT_THIRD_CHEVRON} {
|
|
94
94
|
transform: translateX(60%);
|
|
95
95
|
animation: chevron-three forwards;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chevron-scroll.js","sources":["../../../../source/atomic/animations/brand/chevron-scroll.ts"],"sourcesContent":["import { token } from '@universityofmaryland/web-styles-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:
|
|
1
|
+
{"version":3,"file":"chevron-scroll.js","sources":["../../../../source/atomic/animations/brand/chevron-scroll.ts"],"sourcesContent":["import { token } from '@universityofmaryland/web-styles-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,OAAAA,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,YAMfA,OAAAA,MAAM,MAAM,QAAQ,QAAQ,GAAG;AAAA,OACpC,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,KAKxB,sBAAsB;AAAA,YACfA,OAAAA,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,YAKdA,OAAAA,MAAM,MAAM,QAAQ,QAAQ,GAAG;AAAA,OACpC,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,KAKvB,qBAAqB;AAAA,YACdA,OAAAA,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,YAKdA,OAAAA,MAAM,MAAM,QAAQ,QAAQ,GAAG;AAAA,OACpC,sBAAsB;AAAA,OACtB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMvB,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,YAKXA,OAAAA,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;;"}
|
|
@@ -21,7 +21,7 @@ const FirstChevronStyles = `
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
@media (prefers-reduced-motion: no-preference) {
|
|
24
|
-
@supports (animation-timeline:
|
|
24
|
+
@supports (animation-timeline: scroll()) {
|
|
25
25
|
.${ELEMENT_FIRST_CHEVRON} {
|
|
26
26
|
transform: translateX(40%);
|
|
27
27
|
animation: chevron-one forwards;
|
|
@@ -55,7 +55,7 @@ const SecondChevronStyles = `
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
@media (prefers-reduced-motion: no-preference) {
|
|
58
|
-
@supports (animation-timeline:
|
|
58
|
+
@supports (animation-timeline: scroll()) {
|
|
59
59
|
.${ELEMENT_SECOND_CHEVRON} {
|
|
60
60
|
transform: translateX(24%);
|
|
61
61
|
animation: chevron-two forwards;
|
|
@@ -88,7 +88,7 @@ const ThirdChevronStyles = `
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
@media (prefers-reduced-motion: no-preference) {
|
|
91
|
-
@supports (animation-timeline:
|
|
91
|
+
@supports (animation-timeline: scroll()) {
|
|
92
92
|
.${ELEMENT_THIRD_CHEVRON} {
|
|
93
93
|
transform: translateX(60%);
|
|
94
94
|
animation: chevron-three forwards;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chevron-scroll.mjs","sources":["../../../../source/atomic/animations/brand/chevron-scroll.ts"],"sourcesContent":["import { token } from '@universityofmaryland/web-styles-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:
|
|
1
|
+
{"version":3,"file":"chevron-scroll.mjs","sources":["../../../../source/atomic/animations/brand/chevron-scroll.ts"],"sourcesContent":["import { token } from '@universityofmaryland/web-styles-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;"}
|
|
@@ -207,7 +207,7 @@ const ContainerStyles = `
|
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
@media (prefers-reduced-motion: no-preference) {
|
|
210
|
-
@supports (animation-timeline:
|
|
210
|
+
@supports (animation-timeline: scroll()) {
|
|
211
211
|
.${CAROUSEL_CONTAINER} > svg {
|
|
212
212
|
animation: card-carousel-slide-in ease-in-out forwards;
|
|
213
213
|
animation-timeline: view();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../source/composite/carousel/cards/index.ts"],"sourcesContent":["import {\n element,\n layout,\n token,\n typography,\n} from '@universityofmaryland/web-styles-library';\nimport * as Utility from 'utilities';\nimport * as carouselElements from '../elements';\n\ntype TypeCarouselCardsRequirements = {\n headline?: HTMLElement | null;\n text?: HTMLElement | null;\n actions?: HTMLElement | null;\n slide: HTMLElement;\n shadowRef?: HTMLElement;\n cards: HTMLElement[];\n};\n\nconst MEDIUM = 768;\nconst LARGE = 1024;\n\nconst BACKGROUND_TEXTURE = `<svg aria-hidden=\"true\" width=\"1599\" height=\"618\" viewBox=\"0 0 1599 618\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n\"><mask id=\"mask0_2135_11278\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"1600\" height=\"618\"><rect width=\"1600\" height=\"618\" fill=\"#242424\"></rect></mask><g mask=\"url(#mask0_2135_11278)\"><g opacity=\"0.5\"><mask id=\"mask1_2135_11278\" style=\"mask-type:luminance\" maskUnits=\"userSpaceOnUse\" x=\"-17\" y=\"-56\" width=\"1823\" height=\"408\"><path d=\"M-17 351.98V-56H1806V351.98\" fill=\"white\"></path></mask><g mask=\"url(#mask1_2135_11278)\"><path d=\"M807.562 -68.3515L-433.759 1173.58L-217.501 1389.94L1023.82 148.012L807.562 -68.3515Z\" fill=\"#262626\"></path><path d=\"M360.649 -82.8017L-880.672 1159.13L-649.997 1389.92L591.324 147.986L360.649 -82.8017Z\" fill=\"black\"></path><path d=\"M1154.8 1173.26L-533.139 -515.499L-677.311 -371.256L1010.63 1317.51L1154.8 1173.26Z\" fill=\"#262626\"></path><path d=\"M2162.77 710.525L1312.18 -140.478L1168.01 3.76505L2018.6 854.768L2162.77 710.525Z\" fill=\"black\"></path><path d=\"M1312.16 -140.485L202.096 -1251.09L57.9241 -1106.85L1167.99 3.75794L1312.16 -140.485Z\" fill=\"#EDEDED\"></path><path d=\"M2133.89 -1251.07L1023.83 -140.458L1168 3.78455L2278.07 -1106.83L2133.89 -1251.07Z\" fill=\"#383838\"></path><path d=\"M591.343 147.968L-634.061 -1078.04L-864.736 -847.248L360.668 378.756L591.343 147.968Z\" fill=\"black\"></path><path d=\"M1023.82 147.97L-217.503 -1093.96L-433.761 -877.595L807.559 364.333L1023.82 147.97Z\" fill=\"#383838\"></path></g><mask id=\"mask2_2135_11278\" style=\"mask-type:luminance\" maskUnits=\"userSpaceOnUse\" x=\"-17\" y=\"351\" width=\"1823\" height=\"780\"><path d=\"M-17 351.938V753.629L837.67 753.672L845.662 1130.18L1806 1130.26V352.094\" fill=\"white\"></path></mask><g mask=\"url(#mask2_2135_11278)\"><path d=\"M1023.81 555.952L-217.506 -685.977L-433.764 -469.613L807.557 772.316L1023.81 555.952Z\" fill=\"#262626\"></path><path d=\"M591.347 555.967L-649.973 -685.962L-880.648 -455.174L360.672 786.755L591.347 555.967Z\" fill=\"black\"></path><path d=\"M1010.63 -613.543L-677.305 1075.22L-533.133 1219.46L1154.8 -469.3L1010.63 -613.543Z\" fill=\"#262626\"></path><path d=\"M1760.63 110.929L910.039 961.932L1054.21 1106.17L1904.8 255.172L1760.63 110.929Z\" fill=\"black\"></path><path d=\"M360.674 325.168L-864.73 1551.17L-634.055 1781.96L591.349 555.956L360.674 325.168Z\" fill=\"black\"></path><path d=\"M807.565 339.631L-433.756 1581.56L-217.498 1797.92L1023.82 555.995L807.565 339.631Z\" fill=\"#383838\"></path></g></g></g></svg>`;\n\nconst ELEMENT_NAME = 'umd-element-carousel-cards';\n\nconst ELEMENT_DECLARATION = 'carousel-cards-declaration';\nconst CAROUSEL_CONTAINER = 'element-carousel-container';\nconst CAROUSEL_LOCK = 'element-carousel-lock';\n\nconst INTRO_CONTAINER = 'carousel-cards-intro-container';\nconst INTRO_CONTAINER_LOCK = 'carousel-cards-intro-container-lock';\nconst INTRO_CONTAINER_HEADLINE = 'carousel-cards-intro-container-headline';\nconst INTRO_CONTAINER_TEXT = 'carousel-cards-intro-container-text';\nconst INTRO_CONTAINER_CTA = 'carousel-cards-intro-container-cta';\n\nconst OVERWRITE_ANIMATION_CAROUSEL_DECLARATION = `.${CAROUSEL_CONTAINER} .${carouselElements.blocks.Elements.declaration}`;\nconst OVERWRITE_ANIMATION_CAROUSEL_CONTAINER = `.${CAROUSEL_CONTAINER} .${carouselElements.blocks.Elements.container}`;\nconst OVERWRITE_ANIMATION_CAROUSEL_BUTTON = `.${CAROUSEL_CONTAINER} .${carouselElements.blocks.Elements.button}`;\n\n// prettier-ignore\nconst OverwriteCarouselStyles = `\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_CONTAINER} {\n padding-bottom: 60px;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_DECLARATION} {\n width: 60%;\n }\n }\n\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON} {\n bottom: 0;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON} {\n top: 50%;\n transform: translateY(-50%);\n }\n }\n\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:first-of-type {\n left: 49px;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:first-of-type {\n right: -52px;\n }\n }\n\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:last-of-type {\n left: 0;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:last-of-type {\n left: -52px;\n }\n }\n`;\n\n// prettier-ignore\nconst HeadlineStyles = `\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_HEADLINE}`]: typography.sans.largest,\n },\n })}\n\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_HEADLINE} *`]: typography.sans.largest,\n },\n })}\n\n .${INTRO_CONTAINER_HEADLINE},\n .${INTRO_CONTAINER_HEADLINE} * {\n color: ${token.color.white};\n font-weight: 800;\n text-transform: uppercase;\n }\n`;\n\n// prettier-ignore\nconst TextStyles = `\n * + .${INTRO_CONTAINER_TEXT} {\n margin-top: ${token.spacing.md};\n }\n\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_TEXT}`]: element.text.rich.advancedDark,\n },\n })}\n\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_TEXT}`]: typography.sans.medium,\n },\n })}\n`;\n\n// prettier-ignore\nconst ActionStyles = `\n * + .${INTRO_CONTAINER_CTA} {\n margin-top: ${token.spacing.md};\n }\n\n .${INTRO_CONTAINER_CTA} a {\n color: ${token.color.white};\n }\n`;\n\n// prettier-ignore\nconst IntroContainer = `\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n .${INTRO_CONTAINER} {\n margin-bottom: ${token.spacing.md};\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n .${INTRO_CONTAINER} {\n width: calc(40% - ${token.spacing['2xl']});\n padding-right: ${token.spacing['2xl']};\n }\n }\n\n @media (min-width: ${LARGE}px) {\n .${INTRO_CONTAINER} .${INTRO_CONTAINER_LOCK} {\n max-width: inherit;\n padding: 0;\n }\n }\n`;\n\n// prettier-ignore\nconst ContainerLock = `\n .${CAROUSEL_LOCK} {\n position: relative;\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: layout.space.horizontal.larger,\n })}\n }\n\n @media (max-width: ${MEDIUM - 1}px) {\n .${CAROUSEL_LOCK} {\n padding-right: 0;\n }\n }\n\n @media (min-width: ${LARGE}px) {\n .${CAROUSEL_LOCK} {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n\n @media umd-carousel-card (max-width: ${LARGE - 1}px) {\n .${CAROUSEL_LOCK} {\n max-width: inherit;\n padding: 0;\n }\n }\n`;\n\n// prettier-ignore\nconst ContainerStyles = `\n @keyframes card-carousel-slide-in {\n from { transform: translateX(-25vw); }\n to { transform: translateX(0);}\n }\n\n .${CAROUSEL_CONTAINER} {\n background-color: ${token.color.black};\n padding: ${token.spacing['3xl']} 0;\n position: relative;\n overflow: clip;\n }\n\n @container ${ELEMENT_NAME} (max-width: 300px) {\n .${CAROUSEL_CONTAINER} {\n display: none;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${MEDIUM}px) {\n .${CAROUSEL_CONTAINER} {\n padding: ${token.spacing['4xl']} 0;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n .${CAROUSEL_CONTAINER} {\n padding: ${token.spacing['max']} 0;\n }\n }\n\n .${CAROUSEL_CONTAINER} > svg {\n width: auto;\n height: 100%;\n object-fit: cover;\n position: absolute;\n top: 0;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: view()) {\n .${CAROUSEL_CONTAINER} > svg {\n animation: card-carousel-slide-in ease-in-out forwards;\n animation-timeline: view();\n animation-range-start: 0;\n animation-range-end: 100vh;\n transform: translateX(-15vw);\n }\n }\n }\n`\n\n// prettier-ignore\nconst STYLES_CAROUSEL_CARDS_ELEMENT = `\n .${ELEMENT_DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n .${ELEMENT_DECLARATION} * {\n color: ${token.color.white};\n }\n \n ${carouselElements.blocks.Styles}\n ${ContainerStyles}\n ${ContainerLock}\n ${HeadlineStyles}\n ${TextStyles}\n ${ActionStyles}\n ${IntroContainer}\n ${OverwriteCarouselStyles}\n`;\n\nconst CreateIntro = (props: TypeCarouselCardsRequirements) => {\n const { headline, text, actions } = props;\n const introContainer = document.createElement('div');\n const introWrapper = document.createElement('div');\n\n introWrapper.classList.add(INTRO_CONTAINER_LOCK);\n\n if (headline) {\n headline.classList.add(INTRO_CONTAINER_HEADLINE);\n introWrapper.appendChild(headline);\n }\n\n if (text) {\n text.classList.add(INTRO_CONTAINER_TEXT);\n introWrapper.appendChild(text);\n }\n\n if (actions) {\n actions.classList.add(INTRO_CONTAINER_CTA);\n introWrapper.appendChild(actions);\n }\n\n introContainer.classList.add(INTRO_CONTAINER);\n introContainer.appendChild(introWrapper);\n\n return introContainer;\n};\n\nexport default (props: TypeCarouselCardsRequirements) =>\n (() => {\n const { slide, shadowRef } = props;\n const declaration = document.createElement('div');\n const container = document.createElement('div');\n const wrapper = document.createElement('div');\n\n if (slide) slide.style.minHeight = '450px';\n if (shadowRef) shadowRef.style.minHeight = '450px';\n\n const carouselContainer = carouselElements.blocks.CreateElement({\n ...props,\n blocks: props.cards,\n overwriteDisplayLogic: {\n mobileBreakpoint: 650,\n tabletBreakpoint: 1024,\n desktopBreakpoint: 1024,\n mobileCount: 1,\n tabletCount: 2,\n desktopCount: 2,\n maxCount: 2,\n showMobileHint: true,\n showHint: false,\n },\n });\n const introContainer = CreateIntro(props);\n\n wrapper.classList.add(CAROUSEL_LOCK);\n wrapper.appendChild(introContainer);\n wrapper.appendChild(carouselContainer.element);\n\n container.classList.add(CAROUSEL_CONTAINER);\n container.innerHTML = BACKGROUND_TEXTURE;\n container.appendChild(wrapper);\n\n declaration.classList.add(ELEMENT_DECLARATION);\n declaration.appendChild(container);\n\n return {\n element: declaration,\n styles: STYLES_CAROUSEL_CARDS_ELEMENT,\n events: {\n resize: carouselContainer.events.resize,\n load: carouselContainer.events.load,\n },\n };\n })();\n"],"names":["carouselElements.blocks","Utility.theme.convertJSSObjectToStyles","typography","token","element","layout"],"mappings":";;;;;;;AAkBA,MAAM,SAAS;AACf,MAAM,QAAQ;AAEd,MAAM,qBAAqB;AAAA;AAG3B,MAAM,eAAe;AAErB,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,gBAAgB;AAEtB,MAAM,kBAAkB;AACxB,MAAM,uBAAuB;AAC7B,MAAM,2BAA2B;AACjC,MAAM,uBAAuB;AAC7B,MAAM,sBAAsB;AAE5B,MAAM,2CAA2C,IAAI,kBAAkB,KAAKA,OAAwB,SAAS,WAAW;AACxH,MAAM,yCAAyC,IAAI,kBAAkB,KAAKA,OAAwB,SAAS,SAAS;AACpH,MAAM,sCAAsC,IAAI,kBAAkB,KAAKA,OAAwB,SAAS,MAAM;AAG9G,MAAM,0BAA0B;AAAA,eACjB,YAAY,gBAAgB,QAAQ,CAAC;AAAA,MAC9C,sCAAsC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK7B,YAAY,gBAAgB,KAAK;AAAA,MAC1C,wCAAwC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK/B,YAAY,gBAAgB,QAAQ,CAAC;AAAA,MAC9C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK1B,YAAY,gBAAgB,KAAK;AAAA,MAC1C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAM1B,YAAY,gBAAgB,QAAQ,CAAC;AAAA,MAC9C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK1B,YAAY,gBAAgB,KAAK;AAAA,MAC1C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK1B,YAAY,gBAAgB,QAAQ,CAAC;AAAA,MAC9C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK1B,YAAY,gBAAgB,KAAK;AAAA,MAC1C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAOzC,MAAM,iBAAiB;AAAA,IACnBC,iCAAuC;AAAA,EACvC,UAAU;AAAA,IACR,CAAC,IAAI,wBAAwB,EAAE,GAAGC,OAAAA,WAAW,KAAK;AAAA,EAAA;AAEtD,CAAC,CAAC;AAAA;AAAA,IAEAD,iCAAuC;AAAA,EACvC,UAAU;AAAA,IACR,CAAC,IAAI,wBAAwB,IAAI,GAAGC,OAAAA,WAAW,KAAK;AAAA,EAAA;AAExD,CAAC,CAAC;AAAA;AAAA,KAEC,wBAAwB;AAAA,KACxB,wBAAwB;AAAA,aAChBC,OAAAA,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAO9B,MAAM,aAAa;AAAA,SACV,oBAAoB;AAAA,kBACXA,OAAAA,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,IAG9BF,iCAAuC;AAAA,EACvC,UAAU;AAAA,IACR,CAAC,IAAI,oBAAoB,EAAE,GAAGG,OAAAA,QAAQ,KAAK,KAAK;AAAA,EAAA;AAEpD,CAAC,CAAC;AAAA;AAAA,IAEAH,iCAAuC;AAAA,EACvC,UAAU;AAAA,IACR,CAAC,IAAI,oBAAoB,EAAE,GAAGC,OAAAA,WAAW,KAAK;AAAA,EAAA;AAElD,CAAC,CAAC;AAAA;AAIJ,MAAM,eAAe;AAAA,SACZ,mBAAmB;AAAA,kBACVC,OAAAA,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,KAG7B,mBAAmB;AAAA,aACXA,OAAAA,MAAM,MAAM,KAAK;AAAA;AAAA;AAK9B,MAAM,iBAAiB;AAAA,eACR,YAAY,gBAAgB,QAAQ,CAAC;AAAA,OAC7C,eAAe;AAAA,uBACCA,OAAAA,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA;AAAA,eAIxB,YAAY,gBAAgB,KAAK;AAAA,OACzC,eAAe;AAAA,0BACIA,OAAAA,MAAM,QAAQ,KAAK,CAAC;AAAA,uBACvBA,OAAAA,MAAM,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA,uBAIpB,KAAK;AAAA,OACrB,eAAe,KAAK,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ/C,MAAM,gBAAgB;AAAA,KACjB,aAAa;AAAA;AAAA,MAEZF,iCAAuC;AAAA,EACvC,UAAUI,OAAAA,OAAO,MAAM,WAAW;AACpC,CAAC,CAAC;AAAA;AAAA;AAAA,uBAGiB,SAAS,CAAC;AAAA,OAC1B,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,uBAKG,KAAK;AAAA,OACrB,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yCAOqB,QAAQ,CAAC;AAAA,OAC3C,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAQpB,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMnB,kBAAkB;AAAA,wBACCF,OAAAA,MAAM,MAAM,KAAK;AAAA,eAC1BA,OAAAA,MAAM,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,eAKpB,YAAY;AAAA,OACpB,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,eAKV,YAAY,gBAAgB,MAAM;AAAA,OAC1C,kBAAkB;AAAA,iBACRA,OAAAA,MAAM,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA,eAItB,YAAY,gBAAgB,KAAK;AAAA,OACzC,kBAAkB;AAAA,iBACRA,OAAAA,MAAM,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA,KAIhC,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAUd,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAY3B,MAAM,gCAAgC;AAAA,KACjC,mBAAmB;AAAA,iBACP,YAAY;AAAA;AAAA;AAAA,KAGxB,mBAAmB;AAAA,aACXA,OAAAA,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA,IAG1BH,OAAwB,MAAM;AAAA,IAC9B,eAAe;AAAA,IACf,aAAa;AAAA,IACb,cAAc;AAAA,IACd,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,uBAAuB;AAAA;AAG3B,MAAM,cAAc,CAAC,UAAyC;AAC5D,QAAM,EAAE,UAAU,MAAM,QAAA,IAAY;AACpC,QAAM,iBAAiB,SAAS,cAAc,KAAK;AACnD,QAAM,eAAe,SAAS,cAAc,KAAK;AAEjD,eAAa,UAAU,IAAI,oBAAoB;AAE/C,MAAI,UAAU;AACZ,aAAS,UAAU,IAAI,wBAAwB;AAC/C,iBAAa,YAAY,QAAQ;AAAA,EACnC;AAEA,MAAI,MAAM;AACR,SAAK,UAAU,IAAI,oBAAoB;AACvC,iBAAa,YAAY,IAAI;AAAA,EAC/B;AAEA,MAAI,SAAS;AACX,YAAQ,UAAU,IAAI,mBAAmB;AACzC,iBAAa,YAAY,OAAO;AAAA,EAClC;AAEA,iBAAe,UAAU,IAAI,eAAe;AAC5C,iBAAe,YAAY,YAAY;AAEvC,SAAO;AACT;AAEA,MAAA,QAAe,CAAC,WACb,MAAM;AACL,QAAM,EAAE,OAAO,UAAA,IAAc;AAC7B,QAAM,cAAc,SAAS,cAAc,KAAK;AAChD,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,QAAM,UAAU,SAAS,cAAc,KAAK;AAE5C,MAAI,MAAO,OAAM,MAAM,YAAY;AACnC,MAAI,UAAW,WAAU,MAAM,YAAY;AAE3C,QAAM,oBAAoBA,OAAwB,cAAc;AAAA,IAC9D,GAAG;AAAA,IACH,QAAQ,MAAM;AAAA,IACd,uBAAuB;AAAA,MACrB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,cAAc;AAAA,MACd,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,UAAU;AAAA,IAAA;AAAA,EACZ,CACD;AACD,QAAM,iBAAiB,YAAY,KAAK;AAExC,UAAQ,UAAU,IAAI,aAAa;AACnC,UAAQ,YAAY,cAAc;AAClC,UAAQ,YAAY,kBAAkB,OAAO;AAE7C,YAAU,UAAU,IAAI,kBAAkB;AAC1C,YAAU,YAAY;AACtB,YAAU,YAAY,OAAO;AAE7B,cAAY,UAAU,IAAI,mBAAmB;AAC7C,cAAY,YAAY,SAAS;AAEjC,SAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,MACN,QAAQ,kBAAkB,OAAO;AAAA,MACjC,MAAM,kBAAkB,OAAO;AAAA,IAAA;AAAA,EACjC;AAEJ,GAAA;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../source/composite/carousel/cards/index.ts"],"sourcesContent":["import {\n element,\n layout,\n token,\n typography,\n} from '@universityofmaryland/web-styles-library';\nimport * as Utility from 'utilities';\nimport * as carouselElements from '../elements';\n\ntype TypeCarouselCardsRequirements = {\n headline?: HTMLElement | null;\n text?: HTMLElement | null;\n actions?: HTMLElement | null;\n slide: HTMLElement;\n shadowRef?: HTMLElement;\n cards: HTMLElement[];\n};\n\nconst MEDIUM = 768;\nconst LARGE = 1024;\n\nconst BACKGROUND_TEXTURE = `<svg aria-hidden=\"true\" width=\"1599\" height=\"618\" viewBox=\"0 0 1599 618\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n\"><mask id=\"mask0_2135_11278\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"1600\" height=\"618\"><rect width=\"1600\" height=\"618\" fill=\"#242424\"></rect></mask><g mask=\"url(#mask0_2135_11278)\"><g opacity=\"0.5\"><mask id=\"mask1_2135_11278\" style=\"mask-type:luminance\" maskUnits=\"userSpaceOnUse\" x=\"-17\" y=\"-56\" width=\"1823\" height=\"408\"><path d=\"M-17 351.98V-56H1806V351.98\" fill=\"white\"></path></mask><g mask=\"url(#mask1_2135_11278)\"><path d=\"M807.562 -68.3515L-433.759 1173.58L-217.501 1389.94L1023.82 148.012L807.562 -68.3515Z\" fill=\"#262626\"></path><path d=\"M360.649 -82.8017L-880.672 1159.13L-649.997 1389.92L591.324 147.986L360.649 -82.8017Z\" fill=\"black\"></path><path d=\"M1154.8 1173.26L-533.139 -515.499L-677.311 -371.256L1010.63 1317.51L1154.8 1173.26Z\" fill=\"#262626\"></path><path d=\"M2162.77 710.525L1312.18 -140.478L1168.01 3.76505L2018.6 854.768L2162.77 710.525Z\" fill=\"black\"></path><path d=\"M1312.16 -140.485L202.096 -1251.09L57.9241 -1106.85L1167.99 3.75794L1312.16 -140.485Z\" fill=\"#EDEDED\"></path><path d=\"M2133.89 -1251.07L1023.83 -140.458L1168 3.78455L2278.07 -1106.83L2133.89 -1251.07Z\" fill=\"#383838\"></path><path d=\"M591.343 147.968L-634.061 -1078.04L-864.736 -847.248L360.668 378.756L591.343 147.968Z\" fill=\"black\"></path><path d=\"M1023.82 147.97L-217.503 -1093.96L-433.761 -877.595L807.559 364.333L1023.82 147.97Z\" fill=\"#383838\"></path></g><mask id=\"mask2_2135_11278\" style=\"mask-type:luminance\" maskUnits=\"userSpaceOnUse\" x=\"-17\" y=\"351\" width=\"1823\" height=\"780\"><path d=\"M-17 351.938V753.629L837.67 753.672L845.662 1130.18L1806 1130.26V352.094\" fill=\"white\"></path></mask><g mask=\"url(#mask2_2135_11278)\"><path d=\"M1023.81 555.952L-217.506 -685.977L-433.764 -469.613L807.557 772.316L1023.81 555.952Z\" fill=\"#262626\"></path><path d=\"M591.347 555.967L-649.973 -685.962L-880.648 -455.174L360.672 786.755L591.347 555.967Z\" fill=\"black\"></path><path d=\"M1010.63 -613.543L-677.305 1075.22L-533.133 1219.46L1154.8 -469.3L1010.63 -613.543Z\" fill=\"#262626\"></path><path d=\"M1760.63 110.929L910.039 961.932L1054.21 1106.17L1904.8 255.172L1760.63 110.929Z\" fill=\"black\"></path><path d=\"M360.674 325.168L-864.73 1551.17L-634.055 1781.96L591.349 555.956L360.674 325.168Z\" fill=\"black\"></path><path d=\"M807.565 339.631L-433.756 1581.56L-217.498 1797.92L1023.82 555.995L807.565 339.631Z\" fill=\"#383838\"></path></g></g></g></svg>`;\n\nconst ELEMENT_NAME = 'umd-element-carousel-cards';\n\nconst ELEMENT_DECLARATION = 'carousel-cards-declaration';\nconst CAROUSEL_CONTAINER = 'element-carousel-container';\nconst CAROUSEL_LOCK = 'element-carousel-lock';\n\nconst INTRO_CONTAINER = 'carousel-cards-intro-container';\nconst INTRO_CONTAINER_LOCK = 'carousel-cards-intro-container-lock';\nconst INTRO_CONTAINER_HEADLINE = 'carousel-cards-intro-container-headline';\nconst INTRO_CONTAINER_TEXT = 'carousel-cards-intro-container-text';\nconst INTRO_CONTAINER_CTA = 'carousel-cards-intro-container-cta';\n\nconst OVERWRITE_ANIMATION_CAROUSEL_DECLARATION = `.${CAROUSEL_CONTAINER} .${carouselElements.blocks.Elements.declaration}`;\nconst OVERWRITE_ANIMATION_CAROUSEL_CONTAINER = `.${CAROUSEL_CONTAINER} .${carouselElements.blocks.Elements.container}`;\nconst OVERWRITE_ANIMATION_CAROUSEL_BUTTON = `.${CAROUSEL_CONTAINER} .${carouselElements.blocks.Elements.button}`;\n\n// prettier-ignore\nconst OverwriteCarouselStyles = `\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_CONTAINER} {\n padding-bottom: 60px;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_DECLARATION} {\n width: 60%;\n }\n }\n\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON} {\n bottom: 0;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON} {\n top: 50%;\n transform: translateY(-50%);\n }\n }\n\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:first-of-type {\n left: 49px;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:first-of-type {\n right: -52px;\n }\n }\n\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:last-of-type {\n left: 0;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:last-of-type {\n left: -52px;\n }\n }\n`;\n\n// prettier-ignore\nconst HeadlineStyles = `\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_HEADLINE}`]: typography.sans.largest,\n },\n })}\n\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_HEADLINE} *`]: typography.sans.largest,\n },\n })}\n\n .${INTRO_CONTAINER_HEADLINE},\n .${INTRO_CONTAINER_HEADLINE} * {\n color: ${token.color.white};\n font-weight: 800;\n text-transform: uppercase;\n }\n`;\n\n// prettier-ignore\nconst TextStyles = `\n * + .${INTRO_CONTAINER_TEXT} {\n margin-top: ${token.spacing.md};\n }\n\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_TEXT}`]: element.text.rich.advancedDark,\n },\n })}\n\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_TEXT}`]: typography.sans.medium,\n },\n })}\n`;\n\n// prettier-ignore\nconst ActionStyles = `\n * + .${INTRO_CONTAINER_CTA} {\n margin-top: ${token.spacing.md};\n }\n\n .${INTRO_CONTAINER_CTA} a {\n color: ${token.color.white};\n }\n`;\n\n// prettier-ignore\nconst IntroContainer = `\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n .${INTRO_CONTAINER} {\n margin-bottom: ${token.spacing.md};\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n .${INTRO_CONTAINER} {\n width: calc(40% - ${token.spacing['2xl']});\n padding-right: ${token.spacing['2xl']};\n }\n }\n\n @media (min-width: ${LARGE}px) {\n .${INTRO_CONTAINER} .${INTRO_CONTAINER_LOCK} {\n max-width: inherit;\n padding: 0;\n }\n }\n`;\n\n// prettier-ignore\nconst ContainerLock = `\n .${CAROUSEL_LOCK} {\n position: relative;\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: layout.space.horizontal.larger,\n })}\n }\n\n @media (max-width: ${MEDIUM - 1}px) {\n .${CAROUSEL_LOCK} {\n padding-right: 0;\n }\n }\n\n @media (min-width: ${LARGE}px) {\n .${CAROUSEL_LOCK} {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n\n @media umd-carousel-card (max-width: ${LARGE - 1}px) {\n .${CAROUSEL_LOCK} {\n max-width: inherit;\n padding: 0;\n }\n }\n`;\n\n// prettier-ignore\nconst ContainerStyles = `\n @keyframes card-carousel-slide-in {\n from { transform: translateX(-25vw); }\n to { transform: translateX(0);}\n }\n\n .${CAROUSEL_CONTAINER} {\n background-color: ${token.color.black};\n padding: ${token.spacing['3xl']} 0;\n position: relative;\n overflow: clip;\n }\n\n @container ${ELEMENT_NAME} (max-width: 300px) {\n .${CAROUSEL_CONTAINER} {\n display: none;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${MEDIUM}px) {\n .${CAROUSEL_CONTAINER} {\n padding: ${token.spacing['4xl']} 0;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n .${CAROUSEL_CONTAINER} {\n padding: ${token.spacing['max']} 0;\n }\n }\n\n .${CAROUSEL_CONTAINER} > svg {\n width: auto;\n height: 100%;\n object-fit: cover;\n position: absolute;\n top: 0;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${CAROUSEL_CONTAINER} > svg {\n animation: card-carousel-slide-in ease-in-out forwards;\n animation-timeline: view();\n animation-range-start: 0;\n animation-range-end: 100vh;\n transform: translateX(-15vw);\n }\n }\n }\n`\n\n// prettier-ignore\nconst STYLES_CAROUSEL_CARDS_ELEMENT = `\n .${ELEMENT_DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n .${ELEMENT_DECLARATION} * {\n color: ${token.color.white};\n }\n \n ${carouselElements.blocks.Styles}\n ${ContainerStyles}\n ${ContainerLock}\n ${HeadlineStyles}\n ${TextStyles}\n ${ActionStyles}\n ${IntroContainer}\n ${OverwriteCarouselStyles}\n`;\n\nconst CreateIntro = (props: TypeCarouselCardsRequirements) => {\n const { headline, text, actions } = props;\n const introContainer = document.createElement('div');\n const introWrapper = document.createElement('div');\n\n introWrapper.classList.add(INTRO_CONTAINER_LOCK);\n\n if (headline) {\n headline.classList.add(INTRO_CONTAINER_HEADLINE);\n introWrapper.appendChild(headline);\n }\n\n if (text) {\n text.classList.add(INTRO_CONTAINER_TEXT);\n introWrapper.appendChild(text);\n }\n\n if (actions) {\n actions.classList.add(INTRO_CONTAINER_CTA);\n introWrapper.appendChild(actions);\n }\n\n introContainer.classList.add(INTRO_CONTAINER);\n introContainer.appendChild(introWrapper);\n\n return introContainer;\n};\n\nexport default (props: TypeCarouselCardsRequirements) =>\n (() => {\n const { slide, shadowRef } = props;\n const declaration = document.createElement('div');\n const container = document.createElement('div');\n const wrapper = document.createElement('div');\n\n if (slide) slide.style.minHeight = '450px';\n if (shadowRef) shadowRef.style.minHeight = '450px';\n\n const carouselContainer = carouselElements.blocks.CreateElement({\n ...props,\n blocks: props.cards,\n overwriteDisplayLogic: {\n mobileBreakpoint: 650,\n tabletBreakpoint: 1024,\n desktopBreakpoint: 1024,\n mobileCount: 1,\n tabletCount: 2,\n desktopCount: 2,\n maxCount: 2,\n showMobileHint: true,\n showHint: false,\n },\n });\n const introContainer = CreateIntro(props);\n\n wrapper.classList.add(CAROUSEL_LOCK);\n wrapper.appendChild(introContainer);\n wrapper.appendChild(carouselContainer.element);\n\n container.classList.add(CAROUSEL_CONTAINER);\n container.innerHTML = BACKGROUND_TEXTURE;\n container.appendChild(wrapper);\n\n declaration.classList.add(ELEMENT_DECLARATION);\n declaration.appendChild(container);\n\n return {\n element: declaration,\n styles: STYLES_CAROUSEL_CARDS_ELEMENT,\n events: {\n resize: carouselContainer.events.resize,\n load: carouselContainer.events.load,\n },\n };\n })();\n"],"names":["carouselElements.blocks","Utility.theme.convertJSSObjectToStyles","typography","token","element","layout"],"mappings":"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"}
|
|
@@ -206,7 +206,7 @@ const ContainerStyles = `
|
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
@media (prefers-reduced-motion: no-preference) {
|
|
209
|
-
@supports (animation-timeline:
|
|
209
|
+
@supports (animation-timeline: scroll()) {
|
|
210
210
|
.${CAROUSEL_CONTAINER} > svg {
|
|
211
211
|
animation: card-carousel-slide-in ease-in-out forwards;
|
|
212
212
|
animation-timeline: view();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../source/composite/carousel/cards/index.ts"],"sourcesContent":["import {\n element,\n layout,\n token,\n typography,\n} from '@universityofmaryland/web-styles-library';\nimport * as Utility from 'utilities';\nimport * as carouselElements from '../elements';\n\ntype TypeCarouselCardsRequirements = {\n headline?: HTMLElement | null;\n text?: HTMLElement | null;\n actions?: HTMLElement | null;\n slide: HTMLElement;\n shadowRef?: HTMLElement;\n cards: HTMLElement[];\n};\n\nconst MEDIUM = 768;\nconst LARGE = 1024;\n\nconst BACKGROUND_TEXTURE = `<svg aria-hidden=\"true\" width=\"1599\" height=\"618\" viewBox=\"0 0 1599 618\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n\"><mask id=\"mask0_2135_11278\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"1600\" height=\"618\"><rect width=\"1600\" height=\"618\" fill=\"#242424\"></rect></mask><g mask=\"url(#mask0_2135_11278)\"><g opacity=\"0.5\"><mask id=\"mask1_2135_11278\" style=\"mask-type:luminance\" maskUnits=\"userSpaceOnUse\" x=\"-17\" y=\"-56\" width=\"1823\" height=\"408\"><path d=\"M-17 351.98V-56H1806V351.98\" fill=\"white\"></path></mask><g mask=\"url(#mask1_2135_11278)\"><path d=\"M807.562 -68.3515L-433.759 1173.58L-217.501 1389.94L1023.82 148.012L807.562 -68.3515Z\" fill=\"#262626\"></path><path d=\"M360.649 -82.8017L-880.672 1159.13L-649.997 1389.92L591.324 147.986L360.649 -82.8017Z\" fill=\"black\"></path><path d=\"M1154.8 1173.26L-533.139 -515.499L-677.311 -371.256L1010.63 1317.51L1154.8 1173.26Z\" fill=\"#262626\"></path><path d=\"M2162.77 710.525L1312.18 -140.478L1168.01 3.76505L2018.6 854.768L2162.77 710.525Z\" fill=\"black\"></path><path d=\"M1312.16 -140.485L202.096 -1251.09L57.9241 -1106.85L1167.99 3.75794L1312.16 -140.485Z\" fill=\"#EDEDED\"></path><path d=\"M2133.89 -1251.07L1023.83 -140.458L1168 3.78455L2278.07 -1106.83L2133.89 -1251.07Z\" fill=\"#383838\"></path><path d=\"M591.343 147.968L-634.061 -1078.04L-864.736 -847.248L360.668 378.756L591.343 147.968Z\" fill=\"black\"></path><path d=\"M1023.82 147.97L-217.503 -1093.96L-433.761 -877.595L807.559 364.333L1023.82 147.97Z\" fill=\"#383838\"></path></g><mask id=\"mask2_2135_11278\" style=\"mask-type:luminance\" maskUnits=\"userSpaceOnUse\" x=\"-17\" y=\"351\" width=\"1823\" height=\"780\"><path d=\"M-17 351.938V753.629L837.67 753.672L845.662 1130.18L1806 1130.26V352.094\" fill=\"white\"></path></mask><g mask=\"url(#mask2_2135_11278)\"><path d=\"M1023.81 555.952L-217.506 -685.977L-433.764 -469.613L807.557 772.316L1023.81 555.952Z\" fill=\"#262626\"></path><path d=\"M591.347 555.967L-649.973 -685.962L-880.648 -455.174L360.672 786.755L591.347 555.967Z\" fill=\"black\"></path><path d=\"M1010.63 -613.543L-677.305 1075.22L-533.133 1219.46L1154.8 -469.3L1010.63 -613.543Z\" fill=\"#262626\"></path><path d=\"M1760.63 110.929L910.039 961.932L1054.21 1106.17L1904.8 255.172L1760.63 110.929Z\" fill=\"black\"></path><path d=\"M360.674 325.168L-864.73 1551.17L-634.055 1781.96L591.349 555.956L360.674 325.168Z\" fill=\"black\"></path><path d=\"M807.565 339.631L-433.756 1581.56L-217.498 1797.92L1023.82 555.995L807.565 339.631Z\" fill=\"#383838\"></path></g></g></g></svg>`;\n\nconst ELEMENT_NAME = 'umd-element-carousel-cards';\n\nconst ELEMENT_DECLARATION = 'carousel-cards-declaration';\nconst CAROUSEL_CONTAINER = 'element-carousel-container';\nconst CAROUSEL_LOCK = 'element-carousel-lock';\n\nconst INTRO_CONTAINER = 'carousel-cards-intro-container';\nconst INTRO_CONTAINER_LOCK = 'carousel-cards-intro-container-lock';\nconst INTRO_CONTAINER_HEADLINE = 'carousel-cards-intro-container-headline';\nconst INTRO_CONTAINER_TEXT = 'carousel-cards-intro-container-text';\nconst INTRO_CONTAINER_CTA = 'carousel-cards-intro-container-cta';\n\nconst OVERWRITE_ANIMATION_CAROUSEL_DECLARATION = `.${CAROUSEL_CONTAINER} .${carouselElements.blocks.Elements.declaration}`;\nconst OVERWRITE_ANIMATION_CAROUSEL_CONTAINER = `.${CAROUSEL_CONTAINER} .${carouselElements.blocks.Elements.container}`;\nconst OVERWRITE_ANIMATION_CAROUSEL_BUTTON = `.${CAROUSEL_CONTAINER} .${carouselElements.blocks.Elements.button}`;\n\n// prettier-ignore\nconst OverwriteCarouselStyles = `\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_CONTAINER} {\n padding-bottom: 60px;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_DECLARATION} {\n width: 60%;\n }\n }\n\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON} {\n bottom: 0;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON} {\n top: 50%;\n transform: translateY(-50%);\n }\n }\n\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:first-of-type {\n left: 49px;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:first-of-type {\n right: -52px;\n }\n }\n\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:last-of-type {\n left: 0;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:last-of-type {\n left: -52px;\n }\n }\n`;\n\n// prettier-ignore\nconst HeadlineStyles = `\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_HEADLINE}`]: typography.sans.largest,\n },\n })}\n\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_HEADLINE} *`]: typography.sans.largest,\n },\n })}\n\n .${INTRO_CONTAINER_HEADLINE},\n .${INTRO_CONTAINER_HEADLINE} * {\n color: ${token.color.white};\n font-weight: 800;\n text-transform: uppercase;\n }\n`;\n\n// prettier-ignore\nconst TextStyles = `\n * + .${INTRO_CONTAINER_TEXT} {\n margin-top: ${token.spacing.md};\n }\n\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_TEXT}`]: element.text.rich.advancedDark,\n },\n })}\n\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_TEXT}`]: typography.sans.medium,\n },\n })}\n`;\n\n// prettier-ignore\nconst ActionStyles = `\n * + .${INTRO_CONTAINER_CTA} {\n margin-top: ${token.spacing.md};\n }\n\n .${INTRO_CONTAINER_CTA} a {\n color: ${token.color.white};\n }\n`;\n\n// prettier-ignore\nconst IntroContainer = `\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n .${INTRO_CONTAINER} {\n margin-bottom: ${token.spacing.md};\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n .${INTRO_CONTAINER} {\n width: calc(40% - ${token.spacing['2xl']});\n padding-right: ${token.spacing['2xl']};\n }\n }\n\n @media (min-width: ${LARGE}px) {\n .${INTRO_CONTAINER} .${INTRO_CONTAINER_LOCK} {\n max-width: inherit;\n padding: 0;\n }\n }\n`;\n\n// prettier-ignore\nconst ContainerLock = `\n .${CAROUSEL_LOCK} {\n position: relative;\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: layout.space.horizontal.larger,\n })}\n }\n\n @media (max-width: ${MEDIUM - 1}px) {\n .${CAROUSEL_LOCK} {\n padding-right: 0;\n }\n }\n\n @media (min-width: ${LARGE}px) {\n .${CAROUSEL_LOCK} {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n\n @media umd-carousel-card (max-width: ${LARGE - 1}px) {\n .${CAROUSEL_LOCK} {\n max-width: inherit;\n padding: 0;\n }\n }\n`;\n\n// prettier-ignore\nconst ContainerStyles = `\n @keyframes card-carousel-slide-in {\n from { transform: translateX(-25vw); }\n to { transform: translateX(0);}\n }\n\n .${CAROUSEL_CONTAINER} {\n background-color: ${token.color.black};\n padding: ${token.spacing['3xl']} 0;\n position: relative;\n overflow: clip;\n }\n\n @container ${ELEMENT_NAME} (max-width: 300px) {\n .${CAROUSEL_CONTAINER} {\n display: none;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${MEDIUM}px) {\n .${CAROUSEL_CONTAINER} {\n padding: ${token.spacing['4xl']} 0;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n .${CAROUSEL_CONTAINER} {\n padding: ${token.spacing['max']} 0;\n }\n }\n\n .${CAROUSEL_CONTAINER} > svg {\n width: auto;\n height: 100%;\n object-fit: cover;\n position: absolute;\n top: 0;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: view()) {\n .${CAROUSEL_CONTAINER} > svg {\n animation: card-carousel-slide-in ease-in-out forwards;\n animation-timeline: view();\n animation-range-start: 0;\n animation-range-end: 100vh;\n transform: translateX(-15vw);\n }\n }\n }\n`\n\n// prettier-ignore\nconst STYLES_CAROUSEL_CARDS_ELEMENT = `\n .${ELEMENT_DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n .${ELEMENT_DECLARATION} * {\n color: ${token.color.white};\n }\n \n ${carouselElements.blocks.Styles}\n ${ContainerStyles}\n ${ContainerLock}\n ${HeadlineStyles}\n ${TextStyles}\n ${ActionStyles}\n ${IntroContainer}\n ${OverwriteCarouselStyles}\n`;\n\nconst CreateIntro = (props: TypeCarouselCardsRequirements) => {\n const { headline, text, actions } = props;\n const introContainer = document.createElement('div');\n const introWrapper = document.createElement('div');\n\n introWrapper.classList.add(INTRO_CONTAINER_LOCK);\n\n if (headline) {\n headline.classList.add(INTRO_CONTAINER_HEADLINE);\n introWrapper.appendChild(headline);\n }\n\n if (text) {\n text.classList.add(INTRO_CONTAINER_TEXT);\n introWrapper.appendChild(text);\n }\n\n if (actions) {\n actions.classList.add(INTRO_CONTAINER_CTA);\n introWrapper.appendChild(actions);\n }\n\n introContainer.classList.add(INTRO_CONTAINER);\n introContainer.appendChild(introWrapper);\n\n return introContainer;\n};\n\nexport default (props: TypeCarouselCardsRequirements) =>\n (() => {\n const { slide, shadowRef } = props;\n const declaration = document.createElement('div');\n const container = document.createElement('div');\n const wrapper = document.createElement('div');\n\n if (slide) slide.style.minHeight = '450px';\n if (shadowRef) shadowRef.style.minHeight = '450px';\n\n const carouselContainer = carouselElements.blocks.CreateElement({\n ...props,\n blocks: props.cards,\n overwriteDisplayLogic: {\n mobileBreakpoint: 650,\n tabletBreakpoint: 1024,\n desktopBreakpoint: 1024,\n mobileCount: 1,\n tabletCount: 2,\n desktopCount: 2,\n maxCount: 2,\n showMobileHint: true,\n showHint: false,\n },\n });\n const introContainer = CreateIntro(props);\n\n wrapper.classList.add(CAROUSEL_LOCK);\n wrapper.appendChild(introContainer);\n wrapper.appendChild(carouselContainer.element);\n\n container.classList.add(CAROUSEL_CONTAINER);\n container.innerHTML = BACKGROUND_TEXTURE;\n container.appendChild(wrapper);\n\n declaration.classList.add(ELEMENT_DECLARATION);\n declaration.appendChild(container);\n\n return {\n element: declaration,\n styles: STYLES_CAROUSEL_CARDS_ELEMENT,\n events: {\n resize: carouselContainer.events.resize,\n load: carouselContainer.events.load,\n },\n };\n })();\n"],"names":["carouselElements.blocks","Utility.theme.convertJSSObjectToStyles"],"mappings":";;;;;;AAkBA,MAAM,SAAS;AACf,MAAM,QAAQ;AAEd,MAAM,qBAAqB;AAAA;AAG3B,MAAM,eAAe;AAErB,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,gBAAgB;AAEtB,MAAM,kBAAkB;AACxB,MAAM,uBAAuB;AAC7B,MAAM,2BAA2B;AACjC,MAAM,uBAAuB;AAC7B,MAAM,sBAAsB;AAE5B,MAAM,2CAA2C,IAAI,kBAAkB,KAAKA,OAAwB,SAAS,WAAW;AACxH,MAAM,yCAAyC,IAAI,kBAAkB,KAAKA,OAAwB,SAAS,SAAS;AACpH,MAAM,sCAAsC,IAAI,kBAAkB,KAAKA,OAAwB,SAAS,MAAM;AAG9G,MAAM,0BAA0B;AAAA,eACjB,YAAY,gBAAgB,QAAQ,CAAC;AAAA,MAC9C,sCAAsC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK7B,YAAY,gBAAgB,KAAK;AAAA,MAC1C,wCAAwC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK/B,YAAY,gBAAgB,QAAQ,CAAC;AAAA,MAC9C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK1B,YAAY,gBAAgB,KAAK;AAAA,MAC1C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAM1B,YAAY,gBAAgB,QAAQ,CAAC;AAAA,MAC9C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK1B,YAAY,gBAAgB,KAAK;AAAA,MAC1C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK1B,YAAY,gBAAgB,QAAQ,CAAC;AAAA,MAC9C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK1B,YAAY,gBAAgB,KAAK;AAAA,MAC1C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAOzC,MAAM,iBAAiB;AAAA,IACnBC,yBAAuC;AAAA,EACvC,UAAU;AAAA,IACR,CAAC,IAAI,wBAAwB,EAAE,GAAG,WAAW,KAAK;AAAA,EAAA;AAEtD,CAAC,CAAC;AAAA;AAAA,IAEAA,yBAAuC;AAAA,EACvC,UAAU;AAAA,IACR,CAAC,IAAI,wBAAwB,IAAI,GAAG,WAAW,KAAK;AAAA,EAAA;AAExD,CAAC,CAAC;AAAA;AAAA,KAEC,wBAAwB;AAAA,KACxB,wBAAwB;AAAA,aAChB,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAO9B,MAAM,aAAa;AAAA,SACV,oBAAoB;AAAA,kBACX,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,IAG9BA,yBAAuC;AAAA,EACvC,UAAU;AAAA,IACR,CAAC,IAAI,oBAAoB,EAAE,GAAG,QAAQ,KAAK,KAAK;AAAA,EAAA;AAEpD,CAAC,CAAC;AAAA;AAAA,IAEAA,yBAAuC;AAAA,EACvC,UAAU;AAAA,IACR,CAAC,IAAI,oBAAoB,EAAE,GAAG,WAAW,KAAK;AAAA,EAAA;AAElD,CAAC,CAAC;AAAA;AAIJ,MAAM,eAAe;AAAA,SACZ,mBAAmB;AAAA,kBACV,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,KAG7B,mBAAmB;AAAA,aACX,MAAM,MAAM,KAAK;AAAA;AAAA;AAK9B,MAAM,iBAAiB;AAAA,eACR,YAAY,gBAAgB,QAAQ,CAAC;AAAA,OAC7C,eAAe;AAAA,uBACC,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA;AAAA,eAIxB,YAAY,gBAAgB,KAAK;AAAA,OACzC,eAAe;AAAA,0BACI,MAAM,QAAQ,KAAK,CAAC;AAAA,uBACvB,MAAM,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA,uBAIpB,KAAK;AAAA,OACrB,eAAe,KAAK,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ/C,MAAM,gBAAgB;AAAA,KACjB,aAAa;AAAA;AAAA,MAEZA,yBAAuC;AAAA,EACvC,UAAU,OAAO,MAAM,WAAW;AACpC,CAAC,CAAC;AAAA;AAAA;AAAA,uBAGiB,SAAS,CAAC;AAAA,OAC1B,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,uBAKG,KAAK;AAAA,OACrB,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yCAOqB,QAAQ,CAAC;AAAA,OAC3C,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAQpB,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMnB,kBAAkB;AAAA,wBACC,MAAM,MAAM,KAAK;AAAA,eAC1B,MAAM,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,eAKpB,YAAY;AAAA,OACpB,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,eAKV,YAAY,gBAAgB,MAAM;AAAA,OAC1C,kBAAkB;AAAA,iBACR,MAAM,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA,eAItB,YAAY,gBAAgB,KAAK;AAAA,OACzC,kBAAkB;AAAA,iBACR,MAAM,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA,KAIhC,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAUd,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAY3B,MAAM,gCAAgC;AAAA,KACjC,mBAAmB;AAAA,iBACP,YAAY;AAAA;AAAA;AAAA,KAGxB,mBAAmB;AAAA,aACX,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA,IAG1BD,OAAwB,MAAM;AAAA,IAC9B,eAAe;AAAA,IACf,aAAa;AAAA,IACb,cAAc;AAAA,IACd,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,uBAAuB;AAAA;AAG3B,MAAM,cAAc,CAAC,UAAyC;AAC5D,QAAM,EAAE,UAAU,MAAM,QAAA,IAAY;AACpC,QAAM,iBAAiB,SAAS,cAAc,KAAK;AACnD,QAAM,eAAe,SAAS,cAAc,KAAK;AAEjD,eAAa,UAAU,IAAI,oBAAoB;AAE/C,MAAI,UAAU;AACZ,aAAS,UAAU,IAAI,wBAAwB;AAC/C,iBAAa,YAAY,QAAQ;AAAA,EACnC;AAEA,MAAI,MAAM;AACR,SAAK,UAAU,IAAI,oBAAoB;AACvC,iBAAa,YAAY,IAAI;AAAA,EAC/B;AAEA,MAAI,SAAS;AACX,YAAQ,UAAU,IAAI,mBAAmB;AACzC,iBAAa,YAAY,OAAO;AAAA,EAClC;AAEA,iBAAe,UAAU,IAAI,eAAe;AAC5C,iBAAe,YAAY,YAAY;AAEvC,SAAO;AACT;AAEA,MAAA,QAAe,CAAC,WACb,MAAM;AACL,QAAM,EAAE,OAAO,UAAA,IAAc;AAC7B,QAAM,cAAc,SAAS,cAAc,KAAK;AAChD,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,QAAM,UAAU,SAAS,cAAc,KAAK;AAE5C,MAAI,MAAO,OAAM,MAAM,YAAY;AACnC,MAAI,UAAW,WAAU,MAAM,YAAY;AAE3C,QAAM,oBAAoBA,OAAwB,cAAc;AAAA,IAC9D,GAAG;AAAA,IACH,QAAQ,MAAM;AAAA,IACd,uBAAuB;AAAA,MACrB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,cAAc;AAAA,MACd,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,UAAU;AAAA,IAAA;AAAA,EACZ,CACD;AACD,QAAM,iBAAiB,YAAY,KAAK;AAExC,UAAQ,UAAU,IAAI,aAAa;AACnC,UAAQ,YAAY,cAAc;AAClC,UAAQ,YAAY,kBAAkB,OAAO;AAE7C,YAAU,UAAU,IAAI,kBAAkB;AAC1C,YAAU,YAAY;AACtB,YAAU,YAAY,OAAO;AAE7B,cAAY,UAAU,IAAI,mBAAmB;AAC7C,cAAY,YAAY,SAAS;AAEjC,SAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,MACN,QAAQ,kBAAkB,OAAO;AAAA,MACjC,MAAM,kBAAkB,OAAO;AAAA,IAAA;AAAA,EACjC;AAEJ,GAAA;"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../source/composite/carousel/cards/index.ts"],"sourcesContent":["import {\n element,\n layout,\n token,\n typography,\n} from '@universityofmaryland/web-styles-library';\nimport * as Utility from 'utilities';\nimport * as carouselElements from '../elements';\n\ntype TypeCarouselCardsRequirements = {\n headline?: HTMLElement | null;\n text?: HTMLElement | null;\n actions?: HTMLElement | null;\n slide: HTMLElement;\n shadowRef?: HTMLElement;\n cards: HTMLElement[];\n};\n\nconst MEDIUM = 768;\nconst LARGE = 1024;\n\nconst BACKGROUND_TEXTURE = `<svg aria-hidden=\"true\" width=\"1599\" height=\"618\" viewBox=\"0 0 1599 618\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n\"><mask id=\"mask0_2135_11278\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"1600\" height=\"618\"><rect width=\"1600\" height=\"618\" fill=\"#242424\"></rect></mask><g mask=\"url(#mask0_2135_11278)\"><g opacity=\"0.5\"><mask id=\"mask1_2135_11278\" style=\"mask-type:luminance\" maskUnits=\"userSpaceOnUse\" x=\"-17\" y=\"-56\" width=\"1823\" height=\"408\"><path d=\"M-17 351.98V-56H1806V351.98\" fill=\"white\"></path></mask><g mask=\"url(#mask1_2135_11278)\"><path d=\"M807.562 -68.3515L-433.759 1173.58L-217.501 1389.94L1023.82 148.012L807.562 -68.3515Z\" fill=\"#262626\"></path><path d=\"M360.649 -82.8017L-880.672 1159.13L-649.997 1389.92L591.324 147.986L360.649 -82.8017Z\" fill=\"black\"></path><path d=\"M1154.8 1173.26L-533.139 -515.499L-677.311 -371.256L1010.63 1317.51L1154.8 1173.26Z\" fill=\"#262626\"></path><path d=\"M2162.77 710.525L1312.18 -140.478L1168.01 3.76505L2018.6 854.768L2162.77 710.525Z\" fill=\"black\"></path><path d=\"M1312.16 -140.485L202.096 -1251.09L57.9241 -1106.85L1167.99 3.75794L1312.16 -140.485Z\" fill=\"#EDEDED\"></path><path d=\"M2133.89 -1251.07L1023.83 -140.458L1168 3.78455L2278.07 -1106.83L2133.89 -1251.07Z\" fill=\"#383838\"></path><path d=\"M591.343 147.968L-634.061 -1078.04L-864.736 -847.248L360.668 378.756L591.343 147.968Z\" fill=\"black\"></path><path d=\"M1023.82 147.97L-217.503 -1093.96L-433.761 -877.595L807.559 364.333L1023.82 147.97Z\" fill=\"#383838\"></path></g><mask id=\"mask2_2135_11278\" style=\"mask-type:luminance\" maskUnits=\"userSpaceOnUse\" x=\"-17\" y=\"351\" width=\"1823\" height=\"780\"><path d=\"M-17 351.938V753.629L837.67 753.672L845.662 1130.18L1806 1130.26V352.094\" fill=\"white\"></path></mask><g mask=\"url(#mask2_2135_11278)\"><path d=\"M1023.81 555.952L-217.506 -685.977L-433.764 -469.613L807.557 772.316L1023.81 555.952Z\" fill=\"#262626\"></path><path d=\"M591.347 555.967L-649.973 -685.962L-880.648 -455.174L360.672 786.755L591.347 555.967Z\" fill=\"black\"></path><path d=\"M1010.63 -613.543L-677.305 1075.22L-533.133 1219.46L1154.8 -469.3L1010.63 -613.543Z\" fill=\"#262626\"></path><path d=\"M1760.63 110.929L910.039 961.932L1054.21 1106.17L1904.8 255.172L1760.63 110.929Z\" fill=\"black\"></path><path d=\"M360.674 325.168L-864.73 1551.17L-634.055 1781.96L591.349 555.956L360.674 325.168Z\" fill=\"black\"></path><path d=\"M807.565 339.631L-433.756 1581.56L-217.498 1797.92L1023.82 555.995L807.565 339.631Z\" fill=\"#383838\"></path></g></g></g></svg>`;\n\nconst ELEMENT_NAME = 'umd-element-carousel-cards';\n\nconst ELEMENT_DECLARATION = 'carousel-cards-declaration';\nconst CAROUSEL_CONTAINER = 'element-carousel-container';\nconst CAROUSEL_LOCK = 'element-carousel-lock';\n\nconst INTRO_CONTAINER = 'carousel-cards-intro-container';\nconst INTRO_CONTAINER_LOCK = 'carousel-cards-intro-container-lock';\nconst INTRO_CONTAINER_HEADLINE = 'carousel-cards-intro-container-headline';\nconst INTRO_CONTAINER_TEXT = 'carousel-cards-intro-container-text';\nconst INTRO_CONTAINER_CTA = 'carousel-cards-intro-container-cta';\n\nconst OVERWRITE_ANIMATION_CAROUSEL_DECLARATION = `.${CAROUSEL_CONTAINER} .${carouselElements.blocks.Elements.declaration}`;\nconst OVERWRITE_ANIMATION_CAROUSEL_CONTAINER = `.${CAROUSEL_CONTAINER} .${carouselElements.blocks.Elements.container}`;\nconst OVERWRITE_ANIMATION_CAROUSEL_BUTTON = `.${CAROUSEL_CONTAINER} .${carouselElements.blocks.Elements.button}`;\n\n// prettier-ignore\nconst OverwriteCarouselStyles = `\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_CONTAINER} {\n padding-bottom: 60px;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_DECLARATION} {\n width: 60%;\n }\n }\n\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON} {\n bottom: 0;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON} {\n top: 50%;\n transform: translateY(-50%);\n }\n }\n\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:first-of-type {\n left: 49px;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:first-of-type {\n right: -52px;\n }\n }\n\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:last-of-type {\n left: 0;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:last-of-type {\n left: -52px;\n }\n }\n`;\n\n// prettier-ignore\nconst HeadlineStyles = `\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_HEADLINE}`]: typography.sans.largest,\n },\n })}\n\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_HEADLINE} *`]: typography.sans.largest,\n },\n })}\n\n .${INTRO_CONTAINER_HEADLINE},\n .${INTRO_CONTAINER_HEADLINE} * {\n color: ${token.color.white};\n font-weight: 800;\n text-transform: uppercase;\n }\n`;\n\n// prettier-ignore\nconst TextStyles = `\n * + .${INTRO_CONTAINER_TEXT} {\n margin-top: ${token.spacing.md};\n }\n\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_TEXT}`]: element.text.rich.advancedDark,\n },\n })}\n\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: {\n [`.${INTRO_CONTAINER_TEXT}`]: typography.sans.medium,\n },\n })}\n`;\n\n// prettier-ignore\nconst ActionStyles = `\n * + .${INTRO_CONTAINER_CTA} {\n margin-top: ${token.spacing.md};\n }\n\n .${INTRO_CONTAINER_CTA} a {\n color: ${token.color.white};\n }\n`;\n\n// prettier-ignore\nconst IntroContainer = `\n @container ${ELEMENT_NAME} (max-width: ${LARGE - 1}px) {\n .${INTRO_CONTAINER} {\n margin-bottom: ${token.spacing.md};\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n .${INTRO_CONTAINER} {\n width: calc(40% - ${token.spacing['2xl']});\n padding-right: ${token.spacing['2xl']};\n }\n }\n\n @media (min-width: ${LARGE}px) {\n .${INTRO_CONTAINER} .${INTRO_CONTAINER_LOCK} {\n max-width: inherit;\n padding: 0;\n }\n }\n`;\n\n// prettier-ignore\nconst ContainerLock = `\n .${CAROUSEL_LOCK} {\n position: relative;\n ${Utility.theme.convertJSSObjectToStyles({\n styleObj: layout.space.horizontal.larger,\n })}\n }\n\n @media (max-width: ${MEDIUM - 1}px) {\n .${CAROUSEL_LOCK} {\n padding-right: 0;\n }\n }\n\n @media (min-width: ${LARGE}px) {\n .${CAROUSEL_LOCK} {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n\n @media umd-carousel-card (max-width: ${LARGE - 1}px) {\n .${CAROUSEL_LOCK} {\n max-width: inherit;\n padding: 0;\n }\n }\n`;\n\n// prettier-ignore\nconst ContainerStyles = `\n @keyframes card-carousel-slide-in {\n from { transform: translateX(-25vw); }\n to { transform: translateX(0);}\n }\n\n .${CAROUSEL_CONTAINER} {\n background-color: ${token.color.black};\n padding: ${token.spacing['3xl']} 0;\n position: relative;\n overflow: clip;\n }\n\n @container ${ELEMENT_NAME} (max-width: 300px) {\n .${CAROUSEL_CONTAINER} {\n display: none;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${MEDIUM}px) {\n .${CAROUSEL_CONTAINER} {\n padding: ${token.spacing['4xl']} 0;\n }\n }\n\n @container ${ELEMENT_NAME} (min-width: ${LARGE}px) {\n .${CAROUSEL_CONTAINER} {\n padding: ${token.spacing['max']} 0;\n }\n }\n\n .${CAROUSEL_CONTAINER} > svg {\n width: auto;\n height: 100%;\n object-fit: cover;\n position: absolute;\n top: 0;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${CAROUSEL_CONTAINER} > svg {\n animation: card-carousel-slide-in ease-in-out forwards;\n animation-timeline: view();\n animation-range-start: 0;\n animation-range-end: 100vh;\n transform: translateX(-15vw);\n }\n }\n }\n`\n\n// prettier-ignore\nconst STYLES_CAROUSEL_CARDS_ELEMENT = `\n .${ELEMENT_DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n .${ELEMENT_DECLARATION} * {\n color: ${token.color.white};\n }\n \n ${carouselElements.blocks.Styles}\n ${ContainerStyles}\n ${ContainerLock}\n ${HeadlineStyles}\n ${TextStyles}\n ${ActionStyles}\n ${IntroContainer}\n ${OverwriteCarouselStyles}\n`;\n\nconst CreateIntro = (props: TypeCarouselCardsRequirements) => {\n const { headline, text, actions } = props;\n const introContainer = document.createElement('div');\n const introWrapper = document.createElement('div');\n\n introWrapper.classList.add(INTRO_CONTAINER_LOCK);\n\n if (headline) {\n headline.classList.add(INTRO_CONTAINER_HEADLINE);\n introWrapper.appendChild(headline);\n }\n\n if (text) {\n text.classList.add(INTRO_CONTAINER_TEXT);\n introWrapper.appendChild(text);\n }\n\n if (actions) {\n actions.classList.add(INTRO_CONTAINER_CTA);\n introWrapper.appendChild(actions);\n }\n\n introContainer.classList.add(INTRO_CONTAINER);\n introContainer.appendChild(introWrapper);\n\n return introContainer;\n};\n\nexport default (props: TypeCarouselCardsRequirements) =>\n (() => {\n const { slide, shadowRef } = props;\n const declaration = document.createElement('div');\n const container = document.createElement('div');\n const wrapper = document.createElement('div');\n\n if (slide) slide.style.minHeight = '450px';\n if (shadowRef) shadowRef.style.minHeight = '450px';\n\n const carouselContainer = carouselElements.blocks.CreateElement({\n ...props,\n blocks: props.cards,\n overwriteDisplayLogic: {\n mobileBreakpoint: 650,\n tabletBreakpoint: 1024,\n desktopBreakpoint: 1024,\n mobileCount: 1,\n tabletCount: 2,\n desktopCount: 2,\n maxCount: 2,\n showMobileHint: true,\n showHint: false,\n },\n });\n const introContainer = CreateIntro(props);\n\n wrapper.classList.add(CAROUSEL_LOCK);\n wrapper.appendChild(introContainer);\n wrapper.appendChild(carouselContainer.element);\n\n container.classList.add(CAROUSEL_CONTAINER);\n container.innerHTML = BACKGROUND_TEXTURE;\n container.appendChild(wrapper);\n\n declaration.classList.add(ELEMENT_DECLARATION);\n declaration.appendChild(container);\n\n return {\n element: declaration,\n styles: STYLES_CAROUSEL_CARDS_ELEMENT,\n events: {\n resize: carouselContainer.events.resize,\n load: carouselContainer.events.load,\n },\n };\n })();\n"],"names":["carouselElements.blocks","Utility.theme.convertJSSObjectToStyles"],"mappings":";;;;;;AAkBA,MAAM,SAAS;AACf,MAAM,QAAQ;AAEd,MAAM,qBAAqB;AAAA;AAG3B,MAAM,eAAe;AAErB,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,gBAAgB;AAEtB,MAAM,kBAAkB;AACxB,MAAM,uBAAuB;AAC7B,MAAM,2BAA2B;AACjC,MAAM,uBAAuB;AAC7B,MAAM,sBAAsB;AAE5B,MAAM,2CAA2C,IAAI,kBAAkB,KAAKA,OAAwB,SAAS,WAAW;AACxH,MAAM,yCAAyC,IAAI,kBAAkB,KAAKA,OAAwB,SAAS,SAAS;AACpH,MAAM,sCAAsC,IAAI,kBAAkB,KAAKA,OAAwB,SAAS,MAAM;AAG9G,MAAM,0BAA0B;AAAA,eACjB,YAAY,gBAAgB,QAAQ,CAAC;AAAA,MAC9C,sCAAsC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK7B,YAAY,gBAAgB,KAAK;AAAA,MAC1C,wCAAwC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK/B,YAAY,gBAAgB,QAAQ,CAAC;AAAA,MAC9C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK1B,YAAY,gBAAgB,KAAK;AAAA,MAC1C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAM1B,YAAY,gBAAgB,QAAQ,CAAC;AAAA,MAC9C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK1B,YAAY,gBAAgB,KAAK;AAAA,MAC1C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK1B,YAAY,gBAAgB,QAAQ,CAAC;AAAA,MAC9C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA,eAK1B,YAAY,gBAAgB,KAAK;AAAA,MAC1C,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAOzC,MAAM,iBAAiB;AAAA,IACnBC,yBAAuC;AAAA,EACvC,UAAU;AAAA,IACR,CAAC,IAAI,wBAAwB,EAAE,GAAG,WAAW,KAAK;AAAA,EAAA;AAEtD,CAAC,CAAC;AAAA;AAAA,IAEAA,yBAAuC;AAAA,EACvC,UAAU;AAAA,IACR,CAAC,IAAI,wBAAwB,IAAI,GAAG,WAAW,KAAK;AAAA,EAAA;AAExD,CAAC,CAAC;AAAA;AAAA,KAEC,wBAAwB;AAAA,KACxB,wBAAwB;AAAA,aAChB,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAO9B,MAAM,aAAa;AAAA,SACV,oBAAoB;AAAA,kBACX,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,IAG9BA,yBAAuC;AAAA,EACvC,UAAU;AAAA,IACR,CAAC,IAAI,oBAAoB,EAAE,GAAG,QAAQ,KAAK,KAAK;AAAA,EAAA;AAEpD,CAAC,CAAC;AAAA;AAAA,IAEAA,yBAAuC;AAAA,EACvC,UAAU;AAAA,IACR,CAAC,IAAI,oBAAoB,EAAE,GAAG,WAAW,KAAK;AAAA,EAAA;AAElD,CAAC,CAAC;AAAA;AAIJ,MAAM,eAAe;AAAA,SACZ,mBAAmB;AAAA,kBACV,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,KAG7B,mBAAmB;AAAA,aACX,MAAM,MAAM,KAAK;AAAA;AAAA;AAK9B,MAAM,iBAAiB;AAAA,eACR,YAAY,gBAAgB,QAAQ,CAAC;AAAA,OAC7C,eAAe;AAAA,uBACC,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA;AAAA,eAIxB,YAAY,gBAAgB,KAAK;AAAA,OACzC,eAAe;AAAA,0BACI,MAAM,QAAQ,KAAK,CAAC;AAAA,uBACvB,MAAM,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA,uBAIpB,KAAK;AAAA,OACrB,eAAe,KAAK,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ/C,MAAM,gBAAgB;AAAA,KACjB,aAAa;AAAA;AAAA,MAEZA,yBAAuC;AAAA,EACvC,UAAU,OAAO,MAAM,WAAW;AACpC,CAAC,CAAC;AAAA;AAAA;AAAA,uBAGiB,SAAS,CAAC;AAAA,OAC1B,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,uBAKG,KAAK;AAAA,OACrB,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yCAOqB,QAAQ,CAAC;AAAA,OAC3C,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAQpB,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMnB,kBAAkB;AAAA,wBACC,MAAM,MAAM,KAAK;AAAA,eAC1B,MAAM,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,eAKpB,YAAY;AAAA,OACpB,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,eAKV,YAAY,gBAAgB,MAAM;AAAA,OAC1C,kBAAkB;AAAA,iBACR,MAAM,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA,eAItB,YAAY,gBAAgB,KAAK;AAAA,OACzC,kBAAkB;AAAA,iBACR,MAAM,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA,KAIhC,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAUd,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAY3B,MAAM,gCAAgC;AAAA,KACjC,mBAAmB;AAAA,iBACP,YAAY;AAAA;AAAA;AAAA,KAGxB,mBAAmB;AAAA,aACX,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA,IAG1BD,OAAwB,MAAM;AAAA,IAC9B,eAAe;AAAA,IACf,aAAa;AAAA,IACb,cAAc;AAAA,IACd,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,uBAAuB;AAAA;AAG3B,MAAM,cAAc,CAAC,UAAyC;AAC5D,QAAM,EAAE,UAAU,MAAM,QAAA,IAAY;AACpC,QAAM,iBAAiB,SAAS,cAAc,KAAK;AACnD,QAAM,eAAe,SAAS,cAAc,KAAK;AAEjD,eAAa,UAAU,IAAI,oBAAoB;AAE/C,MAAI,UAAU;AACZ,aAAS,UAAU,IAAI,wBAAwB;AAC/C,iBAAa,YAAY,QAAQ;AAAA,EACnC;AAEA,MAAI,MAAM;AACR,SAAK,UAAU,IAAI,oBAAoB;AACvC,iBAAa,YAAY,IAAI;AAAA,EAC/B;AAEA,MAAI,SAAS;AACX,YAAQ,UAAU,IAAI,mBAAmB;AACzC,iBAAa,YAAY,OAAO;AAAA,EAClC;AAEA,iBAAe,UAAU,IAAI,eAAe;AAC5C,iBAAe,YAAY,YAAY;AAEvC,SAAO;AACT;AAEA,MAAA,QAAe,CAAC,WACb,MAAM;AACL,QAAM,EAAE,OAAO,UAAA,IAAc;AAC7B,QAAM,cAAc,SAAS,cAAc,KAAK;AAChD,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,QAAM,UAAU,SAAS,cAAc,KAAK;AAE5C,MAAI,MAAO,OAAM,MAAM,YAAY;AACnC,MAAI,UAAW,WAAU,MAAM,YAAY;AAE3C,QAAM,oBAAoBA,OAAwB,cAAc;AAAA,IAC9D,GAAG;AAAA,IACH,QAAQ,MAAM;AAAA,IACd,uBAAuB;AAAA,MACrB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,cAAc;AAAA,MACd,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,UAAU;AAAA,IAAA;AAAA,EACZ,CACD;AACD,QAAM,iBAAiB,YAAY,KAAK;AAExC,UAAQ,UAAU,IAAI,aAAa;AACnC,UAAQ,YAAY,cAAc;AAClC,UAAQ,YAAY,kBAAkB,OAAO;AAE7C,YAAU,UAAU,IAAI,kBAAkB;AAC1C,YAAU,YAAY;AACtB,YAAU,YAAY,OAAO;AAE7B,cAAY,UAAU,IAAI,mBAAmB;AAC7C,cAAY,YAAY,SAAS;AAEjC,SAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,MACN,QAAQ,kBAAkB,OAAO;AAAA,MACjC,MAAM,kBAAkB,OAAO;AAAA,IAAA;AAAA,EACjC;AAEJ,GAAA;"}
|
|
@@ -95,7 +95,7 @@ const createOverlay = (includesAnimation) => {
|
|
|
95
95
|
...includesAnimation && {
|
|
96
96
|
[`@media (${Styles__namespace.token.media.queries.tablet.min})`]: {
|
|
97
97
|
[`@media (prefers-reduced-motion: no-preference)`]: {
|
|
98
|
-
[`@supports (animation-timeline:
|
|
98
|
+
[`@supports (animation-timeline: scroll())`]: {
|
|
99
99
|
animation: `${REF_KEY_FRAME_FADE_OVER} ease-in-out forwards`,
|
|
100
100
|
animationTimeline: "view()",
|
|
101
101
|
animationRangeStart: "30vh",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stacked.js","sources":["../../../source/composite/hero/stacked.ts"],"sourcesContent":["import * as Styles from '@universityofmaryland/web-styles-library';\nimport * as Utils from 'utilities';\nimport { assets, textLockup } from 'atomic';\nimport { ElementModel } from 'model';\nimport { type ElementVisual } from '../../_types';\nimport { type HeroStackedProps } from './_types';\n\nconst REF_KEY_FRAME_FADE_OVER = 'hero-stacked-fade-over';\nconst REF_KEY_FRAME_FONT_COLOR = 'hero-stacked-font-color';\n\nconst keyFrameFadeOver = `\n @keyframes ${REF_KEY_FRAME_FADE_OVER} {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n`;\n\nconst keyFrameFontColor = `\n @keyframes ${REF_KEY_FRAME_FONT_COLOR} {\n from { color: ${Styles.token.color.black}; }\n to { color: ${Styles.token.color.white}; }\n }\n`;\n\nconst createVideoAsset = (video: HTMLVideoElement) => {\n return assets.video.observedAutoPlay({\n video,\n isScaled: true,\n });\n};\n\nconst createImageAsset = (image: HTMLImageElement) => {\n return assets.image.background({\n element: image,\n isScaled: true,\n isGifAllowed: true,\n isShowCaption: true,\n customStyles: {\n [`@media (${Styles.token.media.queries.large.max})`]: {\n [`&:has(.${Styles.element.asset.gif.toggle.className})`]: {\n minHeight: '56vw',\n },\n },\n\n [`@media (${Styles.token.media.queries.tablet.min})`]: {\n [`&:has(.${Styles.element.asset.gif.toggle.className})`]: {\n minHeight: '550px',\n },\n },\n\n [`& .${Styles.element.asset.gif.toggle.className} button`]: {\n zIndex: 99999,\n },\n },\n });\n};\n\nconst createOverlay = (includesAnimation?: boolean) => {\n return ElementModel.createDiv({\n className: 'umd-hero-stacked__overlay',\n elementStyles: {\n element: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n height: '100vh',\n width: '100vw',\n display: 'block',\n backgroundColor: 'rgba(0,0,0,.7)',\n zIndex: 99,\n opacity: 0,\n\n ...(includesAnimation && {\n [`@media (${Styles.token.media.queries.tablet.min})`]: {\n [`@media (prefers-reduced-motion: no-preference)`]: {\n [`@supports (animation-timeline: view())`]: {\n animation: `${REF_KEY_FRAME_FADE_OVER} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart: '30vh',\n animationRangeEnd: '70vh',\n },\n },\n },\n }),\n },\n },\n });\n};\n\nconst createAsset = ({\n image,\n video,\n includesAnimation,\n isWidthLarge = false,\n isHeightSmall = false,\n}: Pick<\n HeroStackedProps,\n 'image' | 'video' | 'includesAnimation' | 'isWidthLarge' | 'isHeightSmall'\n>) => {\n let mediaElement: ElementVisual | null = null;\n\n if (video && video instanceof HTMLVideoElement) {\n mediaElement = createVideoAsset(video);\n } else if (image) {\n mediaElement = createImageAsset(image);\n }\n\n if (!mediaElement) {\n return null;\n }\n\n const assetInteriorElement = ElementModel.createDiv({\n className: 'umd-hero-stacked__asset--interior',\n children: [mediaElement, createOverlay(includesAnimation)],\n elementStyles: {\n element: {\n overflow: 'clip',\n position: 'relative',\n height: '100%',\n },\n },\n });\n\n const horizontalLock = ElementModel.layout.spaceHorizontalLarger({\n element: document.createElement('div'),\n children: [assetInteriorElement],\n elementStyles: {\n element: {\n height: '100%',\n width: '100%',\n },\n },\n });\n\n const assetContainer = ElementModel.createDiv({\n className: 'umd-hero-stacked__asset',\n children: isWidthLarge\n ? [horizontalLock]\n : [mediaElement, createOverlay(includesAnimation)],\n elementStyles: {\n element: {\n position: 'relative',\n overflow: 'clip',\n display: 'grid',\n\n ['& img, & video']: {\n objectFit: 'cover',\n aspectRatio: '5 / 4',\n\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n maxHeight: '700px',\n minHeight: '300px',\n\n ...(!isHeightSmall && {\n minHeight: '400px',\n height: '65vh !important',\n }),\n },\n },\n },\n },\n });\n\n return assetContainer;\n};\n\nconst createHeadline = (\n props: Pick<\n HeroStackedProps,\n 'headline' | 'isHeightSmall' | 'includesAnimation' | 'isThemeDark'\n >,\n) => {\n const { headline, isHeightSmall, includesAnimation, isThemeDark } = props;\n const characterCount = headline?.textContent?.trim().length || 0;\n const isOverwriteHeadline = characterCount < 30;\n\n if (!headline) return null;\n\n const desktopStyles = {\n [`@container (${Styles.token.media.queries.desktop.min})`]: {\n ...(isOverwriteHeadline && {\n fontSize: '80px',\n }),\n },\n };\n\n const animationStyles = {\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n ...Utils.theme.media.withViewTimelineAnimation({\n animation: `${REF_KEY_FRAME_FONT_COLOR} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart: '100vh',\n animationRangeEnd: '130vh',\n\n ...(isHeightSmall && {\n animationRangeStart: '120vh',\n animationRangeEnd: '150vh',\n }),\n }),\n },\n };\n\n const elementStyles = {\n element: {\n color: Styles.token.color.black,\n maxWidth: '700px',\n margin: '0 auto',\n textTransform: 'uppercase',\n marginTop: `${Styles.token.spacing.sm}`,\n\n ...(isThemeDark && {\n color: Styles.token.color.white,\n }),\n\n ...(includesAnimation && {\n ...(!isThemeDark && {\n ...animationStyles,\n }),\n }),\n\n ...desktopStyles,\n },\n siblingAfter: {\n marginTop: `${Styles.token.spacing.md}`,\n },\n };\n\n return ElementModel.headline.campaignLarge({\n element: headline,\n elementStyles,\n });\n};\n\nconst createText = (\n props: Omit<HeroStackedProps, 'image' | 'video' | 'isWidthLarge'>,\n) => {\n const { topPosition, isThemeDark, includesAnimation, isHeightSmall } = props;\n const additionalSpread = topPosition ? parseInt(topPosition) : null;\n const textLockupElement = textLockup.large({\n ...props,\n ribbon: props.eyebrow,\n headlineComposite: createHeadline(props),\n textLargest: props.text,\n });\n\n const lock = ElementModel.layout.spaceHorizontalSmall({\n element: document.createElement('div'),\n children: [textLockupElement],\n elementStyles: {\n element: {\n position: 'relative',\n },\n },\n });\n\n return ElementModel.createDiv({\n className: 'umd-hero-stacked__text',\n children: [lock],\n elementStyles: {\n element: {\n padding: `${Styles.token.spacing.lg} 0`,\n display: 'flex',\n justifyContent: 'center',\n textAlign: 'center',\n position: 'relative',\n zIndex: '999',\n\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n padding: `${Styles.token.spacing['6xl']} 0 ${Styles.token.spacing['3xl']}`,\n },\n\n ...(includesAnimation && {\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n ...Utils.theme.media.withViewTimelineAnimation({\n position: 'sticky',\n top: additionalSpread || 0,\n }),\n },\n }),\n\n [`& *`]: {\n ...(includesAnimation && {\n ...(!isThemeDark && {\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n ...Utils.theme.media.withViewTimelineAnimation({\n animation: `${REF_KEY_FRAME_FONT_COLOR} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart: '90vh',\n animationRangeEnd: '110vh',\n\n ...(isHeightSmall && {\n animationRangeStart: '90vh',\n animationRangeEnd: '110vh',\n }),\n }),\n },\n }),\n }),\n },\n\n [`& .${Styles.element.text.decoration.ribbon.className[0]}`]: {\n animation: 'none !important',\n },\n\n [`& .${Styles.element.text.rich.simpleLargest.className}`]: {\n maxWidth: '860px',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n },\n },\n });\n};\n\nexport default (props: HeroStackedProps) => {\n const asset = createAsset(props);\n const hasAsset = asset !== null;\n const shouldAnimateText = hasAsset && props.includesAnimation;\n\n const text = createText({\n ...props,\n includesAnimation: shouldAnimateText,\n });\n\n const children: ElementVisual[] = [text];\n if (hasAsset) {\n children.push(asset);\n }\n\n const composite = ElementModel.createDiv({\n className: 'umd-hero-stacked',\n children,\n elementStyles: {\n element: {\n containerType: 'inline-size',\n\n ...(props.isThemeDark && {\n backgroundColor: Styles.token.color.black,\n }),\n },\n },\n });\n\n composite.styles += keyFrameFadeOver;\n composite.styles += keyFrameFontColor;\n\n return composite;\n};\n"],"names":["Styles","assets.video.observedAutoPlay","assets.image.background","ElementModel.createDiv","ElementModel.layout.spaceHorizontalLarger","headline","Utils.theme.media.withViewTimelineAnimation","ElementModel.headline.campaignLarge","textLockup.large","ElementModel.layout.spaceHorizontalSmall"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stacked.js","sources":["../../../source/composite/hero/stacked.ts"],"sourcesContent":["import * as Styles from '@universityofmaryland/web-styles-library';\nimport * as Utils from 'utilities';\nimport { assets, textLockup } from 'atomic';\nimport { ElementModel } from 'model';\nimport { type ElementVisual } from '../../_types';\nimport { type HeroStackedProps } from './_types';\n\nconst REF_KEY_FRAME_FADE_OVER = 'hero-stacked-fade-over';\nconst REF_KEY_FRAME_FONT_COLOR = 'hero-stacked-font-color';\n\nconst keyFrameFadeOver = `\n @keyframes ${REF_KEY_FRAME_FADE_OVER} {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n`;\n\nconst keyFrameFontColor = `\n @keyframes ${REF_KEY_FRAME_FONT_COLOR} {\n from { color: ${Styles.token.color.black}; }\n to { color: ${Styles.token.color.white}; }\n }\n`;\n\nconst createVideoAsset = (video: HTMLVideoElement) => {\n return assets.video.observedAutoPlay({\n video,\n isScaled: true,\n });\n};\n\nconst createImageAsset = (image: HTMLImageElement) => {\n return assets.image.background({\n element: image,\n isScaled: true,\n isGifAllowed: true,\n isShowCaption: true,\n customStyles: {\n [`@media (${Styles.token.media.queries.large.max})`]: {\n [`&:has(.${Styles.element.asset.gif.toggle.className})`]: {\n minHeight: '56vw',\n },\n },\n\n [`@media (${Styles.token.media.queries.tablet.min})`]: {\n [`&:has(.${Styles.element.asset.gif.toggle.className})`]: {\n minHeight: '550px',\n },\n },\n\n [`& .${Styles.element.asset.gif.toggle.className} button`]: {\n zIndex: 99999,\n },\n },\n });\n};\n\nconst createOverlay = (includesAnimation?: boolean) => {\n return ElementModel.createDiv({\n className: 'umd-hero-stacked__overlay',\n elementStyles: {\n element: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n height: '100vh',\n width: '100vw',\n display: 'block',\n backgroundColor: 'rgba(0,0,0,.7)',\n zIndex: 99,\n opacity: 0,\n\n ...(includesAnimation && {\n [`@media (${Styles.token.media.queries.tablet.min})`]: {\n [`@media (prefers-reduced-motion: no-preference)`]: {\n [`@supports (animation-timeline: scroll())`]: {\n animation: `${REF_KEY_FRAME_FADE_OVER} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart: '30vh',\n animationRangeEnd: '70vh',\n },\n },\n },\n }),\n },\n },\n });\n};\n\nconst createAsset = ({\n image,\n video,\n includesAnimation,\n isWidthLarge = false,\n isHeightSmall = false,\n}: Pick<\n HeroStackedProps,\n 'image' | 'video' | 'includesAnimation' | 'isWidthLarge' | 'isHeightSmall'\n>) => {\n let mediaElement: ElementVisual | null = null;\n\n if (video && video instanceof HTMLVideoElement) {\n mediaElement = createVideoAsset(video);\n } else if (image) {\n mediaElement = createImageAsset(image);\n }\n\n if (!mediaElement) {\n return null;\n }\n\n const assetInteriorElement = ElementModel.createDiv({\n className: 'umd-hero-stacked__asset--interior',\n children: [mediaElement, createOverlay(includesAnimation)],\n elementStyles: {\n element: {\n overflow: 'clip',\n position: 'relative',\n height: '100%',\n },\n },\n });\n\n const horizontalLock = ElementModel.layout.spaceHorizontalLarger({\n element: document.createElement('div'),\n children: [assetInteriorElement],\n elementStyles: {\n element: {\n height: '100%',\n width: '100%',\n },\n },\n });\n\n const assetContainer = ElementModel.createDiv({\n className: 'umd-hero-stacked__asset',\n children: isWidthLarge\n ? [horizontalLock]\n : [mediaElement, createOverlay(includesAnimation)],\n elementStyles: {\n element: {\n position: 'relative',\n overflow: 'clip',\n display: 'grid',\n\n ['& img, & video']: {\n objectFit: 'cover',\n aspectRatio: '5 / 4',\n\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n maxHeight: '700px',\n minHeight: '300px',\n\n ...(!isHeightSmall && {\n minHeight: '400px',\n height: '65vh !important',\n }),\n },\n },\n },\n },\n });\n\n return assetContainer;\n};\n\nconst createHeadline = (\n props: Pick<\n HeroStackedProps,\n 'headline' | 'isHeightSmall' | 'includesAnimation' | 'isThemeDark'\n >,\n) => {\n const { headline, isHeightSmall, includesAnimation, isThemeDark } = props;\n const characterCount = headline?.textContent?.trim().length || 0;\n const isOverwriteHeadline = characterCount < 30;\n\n if (!headline) return null;\n\n const desktopStyles = {\n [`@container (${Styles.token.media.queries.desktop.min})`]: {\n ...(isOverwriteHeadline && {\n fontSize: '80px',\n }),\n },\n };\n\n const animationStyles = {\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n ...Utils.theme.media.withViewTimelineAnimation({\n animation: `${REF_KEY_FRAME_FONT_COLOR} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart: '100vh',\n animationRangeEnd: '130vh',\n\n ...(isHeightSmall && {\n animationRangeStart: '120vh',\n animationRangeEnd: '150vh',\n }),\n }),\n },\n };\n\n const elementStyles = {\n element: {\n color: Styles.token.color.black,\n maxWidth: '700px',\n margin: '0 auto',\n textTransform: 'uppercase',\n marginTop: `${Styles.token.spacing.sm}`,\n\n ...(isThemeDark && {\n color: Styles.token.color.white,\n }),\n\n ...(includesAnimation && {\n ...(!isThemeDark && {\n ...animationStyles,\n }),\n }),\n\n ...desktopStyles,\n },\n siblingAfter: {\n marginTop: `${Styles.token.spacing.md}`,\n },\n };\n\n return ElementModel.headline.campaignLarge({\n element: headline,\n elementStyles,\n });\n};\n\nconst createText = (\n props: Omit<HeroStackedProps, 'image' | 'video' | 'isWidthLarge'>,\n) => {\n const { topPosition, isThemeDark, includesAnimation, isHeightSmall } = props;\n const additionalSpread = topPosition ? parseInt(topPosition) : null;\n const textLockupElement = textLockup.large({\n ...props,\n ribbon: props.eyebrow,\n headlineComposite: createHeadline(props),\n textLargest: props.text,\n });\n\n const lock = ElementModel.layout.spaceHorizontalSmall({\n element: document.createElement('div'),\n children: [textLockupElement],\n elementStyles: {\n element: {\n position: 'relative',\n },\n },\n });\n\n return ElementModel.createDiv({\n className: 'umd-hero-stacked__text',\n children: [lock],\n elementStyles: {\n element: {\n padding: `${Styles.token.spacing.lg} 0`,\n display: 'flex',\n justifyContent: 'center',\n textAlign: 'center',\n position: 'relative',\n zIndex: '999',\n\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n padding: `${Styles.token.spacing['6xl']} 0 ${Styles.token.spacing['3xl']}`,\n },\n\n ...(includesAnimation && {\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n ...Utils.theme.media.withViewTimelineAnimation({\n position: 'sticky',\n top: additionalSpread || 0,\n }),\n },\n }),\n\n [`& *`]: {\n ...(includesAnimation && {\n ...(!isThemeDark && {\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n ...Utils.theme.media.withViewTimelineAnimation({\n animation: `${REF_KEY_FRAME_FONT_COLOR} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart: '90vh',\n animationRangeEnd: '110vh',\n\n ...(isHeightSmall && {\n animationRangeStart: '90vh',\n animationRangeEnd: '110vh',\n }),\n }),\n },\n }),\n }),\n },\n\n [`& .${Styles.element.text.decoration.ribbon.className[0]}`]: {\n animation: 'none !important',\n },\n\n [`& .${Styles.element.text.rich.simpleLargest.className}`]: {\n maxWidth: '860px',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n },\n },\n });\n};\n\nexport default (props: HeroStackedProps) => {\n const asset = createAsset(props);\n const hasAsset = asset !== null;\n const shouldAnimateText = hasAsset && props.includesAnimation;\n\n const text = createText({\n ...props,\n includesAnimation: shouldAnimateText,\n });\n\n const children: ElementVisual[] = [text];\n if (hasAsset) {\n children.push(asset);\n }\n\n const composite = ElementModel.createDiv({\n className: 'umd-hero-stacked',\n children,\n elementStyles: {\n element: {\n containerType: 'inline-size',\n\n ...(props.isThemeDark && {\n backgroundColor: Styles.token.color.black,\n }),\n },\n },\n });\n\n composite.styles += keyFrameFadeOver;\n composite.styles += keyFrameFontColor;\n\n return composite;\n};\n"],"names":["Styles","assets.video.observedAutoPlay","assets.image.background","ElementModel.createDiv","ElementModel.layout.spaceHorizontalLarger","headline","Utils.theme.media.withViewTimelineAnimation","ElementModel.headline.campaignLarge","textLockup.large","ElementModel.layout.spaceHorizontalSmall"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,0BAA0B;AAChC,MAAM,2BAA2B;AAEjC,MAAM,mBAAmB;AAAA,eACV,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAMtC,MAAM,oBAAoB;AAAA,eACX,wBAAwB;AAAA,oBACnBA,kBAAO,MAAM,MAAM,KAAK;AAAA,kBAC1BA,kBAAO,MAAM,MAAM,KAAK;AAAA;AAAA;AAI1C,MAAM,mBAAmB,CAAC,UAA4B;AACpD,SAAOC,iBAA8B;AAAA,IACnC;AAAA,IACA,UAAU;AAAA,EAAA,CACX;AACH;AAEA,MAAM,mBAAmB,CAAC,UAA4B;AACpD,SAAOC,WAAwB;AAAA,IAC7B,SAAS;AAAA,IACT,UAAU;AAAA,IACV,cAAc;AAAA,IACd,eAAe;AAAA,IACf,cAAc;AAAA,MACZ,CAAC,WAAWF,kBAAO,MAAM,MAAM,QAAQ,MAAM,GAAG,GAAG,GAAG;AAAA,QACpD,CAAC,UAAUA,kBAAO,QAAQ,MAAM,IAAI,OAAO,SAAS,GAAG,GAAG;AAAA,UACxD,WAAW;AAAA,QAAA;AAAA,MACb;AAAA,MAGF,CAAC,WAAWA,kBAAO,MAAM,MAAM,QAAQ,OAAO,GAAG,GAAG,GAAG;AAAA,QACrD,CAAC,UAAUA,kBAAO,QAAQ,MAAM,IAAI,OAAO,SAAS,GAAG,GAAG;AAAA,UACxD,WAAW;AAAA,QAAA;AAAA,MACb;AAAA,MAGF,CAAC,MAAMA,kBAAO,QAAQ,MAAM,IAAI,OAAO,SAAS,SAAS,GAAG;AAAA,QAC1D,QAAQ;AAAA,MAAA;AAAA,IACV;AAAA,EACF,CACD;AACH;AAEA,MAAM,gBAAgB,CAAC,sBAAgC;AACrD,SAAOG,gBAAuB;AAAA,IAC5B,WAAW;AAAA,IACX,eAAe;AAAA,MACb,SAAS;AAAA,QACP,UAAU;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,QACN,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,iBAAiB;AAAA,QACjB,QAAQ;AAAA,QACR,SAAS;AAAA,QAET,GAAI,qBAAqB;AAAA,UACvB,CAAC,WAAWH,kBAAO,MAAM,MAAM,QAAQ,OAAO,GAAG,GAAG,GAAG;AAAA,YACrD,CAAC,gDAAgD,GAAG;AAAA,cAClD,CAAC,0CAA0C,GAAG;AAAA,gBAC5C,WAAW,GAAG,uBAAuB;AAAA,gBACrC,mBAAmB;AAAA,gBACnB,qBAAqB;AAAA,gBACrB,mBAAmB;AAAA,cAAA;AAAA,YACrB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CACD;AACH;AAEA,MAAM,cAAc,CAAC;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,gBAAgB;AAClB,MAGM;AACJ,MAAI,eAAqC;AAEzC,MAAI,SAAS,iBAAiB,kBAAkB;AAC9C,mBAAe,iBAAiB,KAAK;AAAA,EACvC,WAAW,OAAO;AAChB,mBAAe,iBAAiB,KAAK;AAAA,EACvC;AAEA,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA,EACT;AAEA,QAAM,uBAAuBG,MAAAA,UAAuB;AAAA,IAClD,WAAW;AAAA,IACX,UAAU,CAAC,cAAc,cAAc,iBAAiB,CAAC;AAAA,IACzD,eAAe;AAAA,MACb,SAAS;AAAA,QACP,UAAU;AAAA,QACV,UAAU;AAAA,QACV,QAAQ;AAAA,MAAA;AAAA,IACV;AAAA,EACF,CACD;AAED,QAAM,iBAAiBC,OAAAA,sBAA0C;AAAA,IAC/D,SAAS,SAAS,cAAc,KAAK;AAAA,IACrC,UAAU,CAAC,oBAAoB;AAAA,IAC/B,eAAe;AAAA,MACb,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF,CACD;AAED,QAAM,iBAAiBD,MAAAA,UAAuB;AAAA,IAC5C,WAAW;AAAA,IACX,UAAU,eACN,CAAC,cAAc,IACf,CAAC,cAAc,cAAc,iBAAiB,CAAC;AAAA,IACnD,eAAe;AAAA,MACb,SAAS;AAAA,QACP,UAAU;AAAA,QACV,UAAU;AAAA,QACV,SAAS;AAAA,QAET,CAAC,gBAAgB,GAAG;AAAA,UAClB,WAAW;AAAA,UACX,aAAa;AAAA,UAEb,CAAC,eAAeH,kBAAO,MAAM,MAAM,QAAQ,OAAO,GAAG,GAAG,GAAG;AAAA,YACzD,WAAW;AAAA,YACX,WAAW;AAAA,YAEX,GAAI,CAAC,iBAAiB;AAAA,cACpB,WAAW;AAAA,cACX,QAAQ;AAAA,YAAA;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CACD;AAED,SAAO;AACT;AAEA,MAAM,iBAAiB,CACrB,UAIG;AACH,QAAM,EAAA,UAAEK,YAAU,eAAe,mBAAmB,gBAAgB;AACpE,QAAM,iBAAiBA,YAAU,aAAa,KAAA,EAAO,UAAU;AAC/D,QAAM,sBAAsB,iBAAiB;AAE7C,MAAI,CAACA,WAAU,QAAO;AAEtB,QAAM,gBAAgB;AAAA,IACpB,CAAC,eAAeL,kBAAO,MAAM,MAAM,QAAQ,QAAQ,GAAG,GAAG,GAAG;AAAA,MAC1D,GAAI,uBAAuB;AAAA,QACzB,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,EACF;AAGF,QAAM,kBAAkB;AAAA,IACtB,CAAC,eAAeA,kBAAO,MAAM,MAAM,QAAQ,OAAO,GAAG,GAAG,GAAG;AAAA,MACzD,GAAGM,gCAA4C;AAAA,QAC7C,WAAW,GAAG,wBAAwB;AAAA,QACtC,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QAEnB,GAAI,iBAAiB;AAAA,UACnB,qBAAqB;AAAA,UACrB,mBAAmB;AAAA,QAAA;AAAA,MACrB,CACD;AAAA,IAAA;AAAA,EACH;AAGF,QAAM,gBAAgB;AAAA,IACpB,SAAS;AAAA,MACP,OAAON,kBAAO,MAAM,MAAM;AAAA,MAC1B,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,WAAW,GAAGA,kBAAO,MAAM,QAAQ,EAAE;AAAA,MAErC,GAAI,eAAe;AAAA,QACjB,OAAOA,kBAAO,MAAM,MAAM;AAAA,MAAA;AAAA,MAG5B,GAAI,qBAAqB;AAAA,QACvB,GAAI,CAAC,eAAe;AAAA,UAClB,GAAG;AAAA,QAAA;AAAA,MACL;AAAA,MAGF,GAAG;AAAA,IAAA;AAAA,IAEL,cAAc;AAAA,MACZ,WAAW,GAAGA,kBAAO,MAAM,QAAQ,EAAE;AAAA,IAAA;AAAA,EACvC;AAGF,SAAOO,uBAAoC;AAAA,IACzC,SAASF;AAAAA,IACT;AAAA,EAAA,CACD;AACH;AAEA,MAAM,aAAa,CACjB,UACG;AACH,QAAM,EAAE,aAAa,aAAa,mBAAmB,kBAAkB;AACvE,QAAM,mBAAmB,cAAc,SAAS,WAAW,IAAI;AAC/D,QAAM,oBAAoBG,MAAiB;AAAA,IACzC,GAAG;AAAA,IACH,QAAQ,MAAM;AAAA,IACd,mBAAmB,eAAe,KAAK;AAAA,IACvC,aAAa,MAAM;AAAA,EAAA,CACpB;AAED,QAAM,OAAOC,OAAAA,qBAAyC;AAAA,IACpD,SAAS,SAAS,cAAc,KAAK;AAAA,IACrC,UAAU,CAAC,iBAAiB;AAAA,IAC5B,eAAe;AAAA,MACb,SAAS;AAAA,QACP,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,EACF,CACD;AAED,SAAON,gBAAuB;AAAA,IAC5B,WAAW;AAAA,IACX,UAAU,CAAC,IAAI;AAAA,IACf,eAAe;AAAA,MACb,SAAS;AAAA,QACP,SAAS,GAAGH,kBAAO,MAAM,QAAQ,EAAE;AAAA,QACnC,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX,UAAU;AAAA,QACV,QAAQ;AAAA,QAER,CAAC,eAAeA,kBAAO,MAAM,MAAM,QAAQ,OAAO,GAAG,GAAG,GAAG;AAAA,UACzD,SAAS,GAAGA,kBAAO,MAAM,QAAQ,KAAK,CAAC,MAAMA,kBAAO,MAAM,QAAQ,KAAK,CAAC;AAAA,QAAA;AAAA,QAG1E,GAAI,qBAAqB;AAAA,UACvB,CAAC,eAAeA,kBAAO,MAAM,MAAM,QAAQ,OAAO,GAAG,GAAG,GAAG;AAAA,YACzD,GAAGM,gCAA4C;AAAA,cAC7C,UAAU;AAAA,cACV,KAAK,oBAAoB;AAAA,YAAA,CAC1B;AAAA,UAAA;AAAA,QACH;AAAA,QAGF,CAAC,KAAK,GAAG;AAAA,UACP,GAAI,qBAAqB;AAAA,YACvB,GAAI,CAAC,eAAe;AAAA,cAClB,CAAC,eAAeN,kBAAO,MAAM,MAAM,QAAQ,OAAO,GAAG,GAAG,GAAG;AAAA,gBACzD,GAAGM,gCAA4C;AAAA,kBAC7C,WAAW,GAAG,wBAAwB;AAAA,kBACtC,mBAAmB;AAAA,kBACnB,qBAAqB;AAAA,kBACrB,mBAAmB;AAAA,kBAEnB,GAAI,iBAAiB;AAAA,oBACnB,qBAAqB;AAAA,oBACrB,mBAAmB;AAAA,kBAAA;AAAA,gBACrB,CACD;AAAA,cAAA;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAAA,QAGF,CAAC,MAAMN,kBAAO,QAAQ,KAAK,WAAW,OAAO,UAAU,CAAC,CAAC,EAAE,GAAG;AAAA,UAC5D,WAAW;AAAA,QAAA;AAAA,QAGb,CAAC,MAAMA,kBAAO,QAAQ,KAAK,KAAK,cAAc,SAAS,EAAE,GAAG;AAAA,UAC1D,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,aAAa;AAAA,QAAA;AAAA,MACf;AAAA,IACF;AAAA,EACF,CACD;AACH;AAEA,MAAA,UAAe,CAAC,UAA4B;AAC1C,QAAM,QAAQ,YAAY,KAAK;AAC/B,QAAM,WAAW,UAAU;AAC3B,QAAM,oBAAoB,YAAY,MAAM;AAE5C,QAAM,OAAO,WAAW;AAAA,IACtB,GAAG;AAAA,IACH,mBAAmB;AAAA,EAAA,CACpB;AAED,QAAM,WAA4B,CAAC,IAAI;AACvC,MAAI,UAAU;AACZ,aAAS,KAAK,KAAK;AAAA,EACrB;AAEA,QAAM,YAAYG,MAAAA,UAAuB;AAAA,IACvC,WAAW;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,SAAS;AAAA,QACP,eAAe;AAAA,QAEf,GAAI,MAAM,eAAe;AAAA,UACvB,iBAAiBH,kBAAO,MAAM,MAAM;AAAA,QAAA;AAAA,MACtC;AAAA,IACF;AAAA,EACF,CACD;AAED,YAAU,UAAU;AACpB,YAAU,UAAU;AAEpB,SAAO;AACT;;"}
|
|
@@ -77,7 +77,7 @@ const createOverlay = (includesAnimation) => {
|
|
|
77
77
|
...includesAnimation && {
|
|
78
78
|
[`@media (${Styles.token.media.queries.tablet.min})`]: {
|
|
79
79
|
[`@media (prefers-reduced-motion: no-preference)`]: {
|
|
80
|
-
[`@supports (animation-timeline:
|
|
80
|
+
[`@supports (animation-timeline: scroll())`]: {
|
|
81
81
|
animation: `${REF_KEY_FRAME_FADE_OVER} ease-in-out forwards`,
|
|
82
82
|
animationTimeline: "view()",
|
|
83
83
|
animationRangeStart: "30vh",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stacked.mjs","sources":["../../../source/composite/hero/stacked.ts"],"sourcesContent":["import * as Styles from '@universityofmaryland/web-styles-library';\nimport * as Utils from 'utilities';\nimport { assets, textLockup } from 'atomic';\nimport { ElementModel } from 'model';\nimport { type ElementVisual } from '../../_types';\nimport { type HeroStackedProps } from './_types';\n\nconst REF_KEY_FRAME_FADE_OVER = 'hero-stacked-fade-over';\nconst REF_KEY_FRAME_FONT_COLOR = 'hero-stacked-font-color';\n\nconst keyFrameFadeOver = `\n @keyframes ${REF_KEY_FRAME_FADE_OVER} {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n`;\n\nconst keyFrameFontColor = `\n @keyframes ${REF_KEY_FRAME_FONT_COLOR} {\n from { color: ${Styles.token.color.black}; }\n to { color: ${Styles.token.color.white}; }\n }\n`;\n\nconst createVideoAsset = (video: HTMLVideoElement) => {\n return assets.video.observedAutoPlay({\n video,\n isScaled: true,\n });\n};\n\nconst createImageAsset = (image: HTMLImageElement) => {\n return assets.image.background({\n element: image,\n isScaled: true,\n isGifAllowed: true,\n isShowCaption: true,\n customStyles: {\n [`@media (${Styles.token.media.queries.large.max})`]: {\n [`&:has(.${Styles.element.asset.gif.toggle.className})`]: {\n minHeight: '56vw',\n },\n },\n\n [`@media (${Styles.token.media.queries.tablet.min})`]: {\n [`&:has(.${Styles.element.asset.gif.toggle.className})`]: {\n minHeight: '550px',\n },\n },\n\n [`& .${Styles.element.asset.gif.toggle.className} button`]: {\n zIndex: 99999,\n },\n },\n });\n};\n\nconst createOverlay = (includesAnimation?: boolean) => {\n return ElementModel.createDiv({\n className: 'umd-hero-stacked__overlay',\n elementStyles: {\n element: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n height: '100vh',\n width: '100vw',\n display: 'block',\n backgroundColor: 'rgba(0,0,0,.7)',\n zIndex: 99,\n opacity: 0,\n\n ...(includesAnimation && {\n [`@media (${Styles.token.media.queries.tablet.min})`]: {\n [`@media (prefers-reduced-motion: no-preference)`]: {\n [`@supports (animation-timeline: view())`]: {\n animation: `${REF_KEY_FRAME_FADE_OVER} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart: '30vh',\n animationRangeEnd: '70vh',\n },\n },\n },\n }),\n },\n },\n });\n};\n\nconst createAsset = ({\n image,\n video,\n includesAnimation,\n isWidthLarge = false,\n isHeightSmall = false,\n}: Pick<\n HeroStackedProps,\n 'image' | 'video' | 'includesAnimation' | 'isWidthLarge' | 'isHeightSmall'\n>) => {\n let mediaElement: ElementVisual | null = null;\n\n if (video && video instanceof HTMLVideoElement) {\n mediaElement = createVideoAsset(video);\n } else if (image) {\n mediaElement = createImageAsset(image);\n }\n\n if (!mediaElement) {\n return null;\n }\n\n const assetInteriorElement = ElementModel.createDiv({\n className: 'umd-hero-stacked__asset--interior',\n children: [mediaElement, createOverlay(includesAnimation)],\n elementStyles: {\n element: {\n overflow: 'clip',\n position: 'relative',\n height: '100%',\n },\n },\n });\n\n const horizontalLock = ElementModel.layout.spaceHorizontalLarger({\n element: document.createElement('div'),\n children: [assetInteriorElement],\n elementStyles: {\n element: {\n height: '100%',\n width: '100%',\n },\n },\n });\n\n const assetContainer = ElementModel.createDiv({\n className: 'umd-hero-stacked__asset',\n children: isWidthLarge\n ? [horizontalLock]\n : [mediaElement, createOverlay(includesAnimation)],\n elementStyles: {\n element: {\n position: 'relative',\n overflow: 'clip',\n display: 'grid',\n\n ['& img, & video']: {\n objectFit: 'cover',\n aspectRatio: '5 / 4',\n\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n maxHeight: '700px',\n minHeight: '300px',\n\n ...(!isHeightSmall && {\n minHeight: '400px',\n height: '65vh !important',\n }),\n },\n },\n },\n },\n });\n\n return assetContainer;\n};\n\nconst createHeadline = (\n props: Pick<\n HeroStackedProps,\n 'headline' | 'isHeightSmall' | 'includesAnimation' | 'isThemeDark'\n >,\n) => {\n const { headline, isHeightSmall, includesAnimation, isThemeDark } = props;\n const characterCount = headline?.textContent?.trim().length || 0;\n const isOverwriteHeadline = characterCount < 30;\n\n if (!headline) return null;\n\n const desktopStyles = {\n [`@container (${Styles.token.media.queries.desktop.min})`]: {\n ...(isOverwriteHeadline && {\n fontSize: '80px',\n }),\n },\n };\n\n const animationStyles = {\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n ...Utils.theme.media.withViewTimelineAnimation({\n animation: `${REF_KEY_FRAME_FONT_COLOR} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart: '100vh',\n animationRangeEnd: '130vh',\n\n ...(isHeightSmall && {\n animationRangeStart: '120vh',\n animationRangeEnd: '150vh',\n }),\n }),\n },\n };\n\n const elementStyles = {\n element: {\n color: Styles.token.color.black,\n maxWidth: '700px',\n margin: '0 auto',\n textTransform: 'uppercase',\n marginTop: `${Styles.token.spacing.sm}`,\n\n ...(isThemeDark && {\n color: Styles.token.color.white,\n }),\n\n ...(includesAnimation && {\n ...(!isThemeDark && {\n ...animationStyles,\n }),\n }),\n\n ...desktopStyles,\n },\n siblingAfter: {\n marginTop: `${Styles.token.spacing.md}`,\n },\n };\n\n return ElementModel.headline.campaignLarge({\n element: headline,\n elementStyles,\n });\n};\n\nconst createText = (\n props: Omit<HeroStackedProps, 'image' | 'video' | 'isWidthLarge'>,\n) => {\n const { topPosition, isThemeDark, includesAnimation, isHeightSmall } = props;\n const additionalSpread = topPosition ? parseInt(topPosition) : null;\n const textLockupElement = textLockup.large({\n ...props,\n ribbon: props.eyebrow,\n headlineComposite: createHeadline(props),\n textLargest: props.text,\n });\n\n const lock = ElementModel.layout.spaceHorizontalSmall({\n element: document.createElement('div'),\n children: [textLockupElement],\n elementStyles: {\n element: {\n position: 'relative',\n },\n },\n });\n\n return ElementModel.createDiv({\n className: 'umd-hero-stacked__text',\n children: [lock],\n elementStyles: {\n element: {\n padding: `${Styles.token.spacing.lg} 0`,\n display: 'flex',\n justifyContent: 'center',\n textAlign: 'center',\n position: 'relative',\n zIndex: '999',\n\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n padding: `${Styles.token.spacing['6xl']} 0 ${Styles.token.spacing['3xl']}`,\n },\n\n ...(includesAnimation && {\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n ...Utils.theme.media.withViewTimelineAnimation({\n position: 'sticky',\n top: additionalSpread || 0,\n }),\n },\n }),\n\n [`& *`]: {\n ...(includesAnimation && {\n ...(!isThemeDark && {\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n ...Utils.theme.media.withViewTimelineAnimation({\n animation: `${REF_KEY_FRAME_FONT_COLOR} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart: '90vh',\n animationRangeEnd: '110vh',\n\n ...(isHeightSmall && {\n animationRangeStart: '90vh',\n animationRangeEnd: '110vh',\n }),\n }),\n },\n }),\n }),\n },\n\n [`& .${Styles.element.text.decoration.ribbon.className[0]}`]: {\n animation: 'none !important',\n },\n\n [`& .${Styles.element.text.rich.simpleLargest.className}`]: {\n maxWidth: '860px',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n },\n },\n });\n};\n\nexport default (props: HeroStackedProps) => {\n const asset = createAsset(props);\n const hasAsset = asset !== null;\n const shouldAnimateText = hasAsset && props.includesAnimation;\n\n const text = createText({\n ...props,\n includesAnimation: shouldAnimateText,\n });\n\n const children: ElementVisual[] = [text];\n if (hasAsset) {\n children.push(asset);\n }\n\n const composite = ElementModel.createDiv({\n className: 'umd-hero-stacked',\n children,\n elementStyles: {\n element: {\n containerType: 'inline-size',\n\n ...(props.isThemeDark && {\n backgroundColor: Styles.token.color.black,\n }),\n },\n },\n });\n\n composite.styles += keyFrameFadeOver;\n composite.styles += keyFrameFontColor;\n\n return composite;\n};\n"],"names":["assets.video.observedAutoPlay","assets.image.background","ElementModel.createDiv","ElementModel.layout.spaceHorizontalLarger","Utils.theme.media.withViewTimelineAnimation","ElementModel.headline.campaignLarge","textLockup.large","ElementModel.layout.spaceHorizontalSmall"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stacked.mjs","sources":["../../../source/composite/hero/stacked.ts"],"sourcesContent":["import * as Styles from '@universityofmaryland/web-styles-library';\nimport * as Utils from 'utilities';\nimport { assets, textLockup } from 'atomic';\nimport { ElementModel } from 'model';\nimport { type ElementVisual } from '../../_types';\nimport { type HeroStackedProps } from './_types';\n\nconst REF_KEY_FRAME_FADE_OVER = 'hero-stacked-fade-over';\nconst REF_KEY_FRAME_FONT_COLOR = 'hero-stacked-font-color';\n\nconst keyFrameFadeOver = `\n @keyframes ${REF_KEY_FRAME_FADE_OVER} {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n`;\n\nconst keyFrameFontColor = `\n @keyframes ${REF_KEY_FRAME_FONT_COLOR} {\n from { color: ${Styles.token.color.black}; }\n to { color: ${Styles.token.color.white}; }\n }\n`;\n\nconst createVideoAsset = (video: HTMLVideoElement) => {\n return assets.video.observedAutoPlay({\n video,\n isScaled: true,\n });\n};\n\nconst createImageAsset = (image: HTMLImageElement) => {\n return assets.image.background({\n element: image,\n isScaled: true,\n isGifAllowed: true,\n isShowCaption: true,\n customStyles: {\n [`@media (${Styles.token.media.queries.large.max})`]: {\n [`&:has(.${Styles.element.asset.gif.toggle.className})`]: {\n minHeight: '56vw',\n },\n },\n\n [`@media (${Styles.token.media.queries.tablet.min})`]: {\n [`&:has(.${Styles.element.asset.gif.toggle.className})`]: {\n minHeight: '550px',\n },\n },\n\n [`& .${Styles.element.asset.gif.toggle.className} button`]: {\n zIndex: 99999,\n },\n },\n });\n};\n\nconst createOverlay = (includesAnimation?: boolean) => {\n return ElementModel.createDiv({\n className: 'umd-hero-stacked__overlay',\n elementStyles: {\n element: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n height: '100vh',\n width: '100vw',\n display: 'block',\n backgroundColor: 'rgba(0,0,0,.7)',\n zIndex: 99,\n opacity: 0,\n\n ...(includesAnimation && {\n [`@media (${Styles.token.media.queries.tablet.min})`]: {\n [`@media (prefers-reduced-motion: no-preference)`]: {\n [`@supports (animation-timeline: scroll())`]: {\n animation: `${REF_KEY_FRAME_FADE_OVER} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart: '30vh',\n animationRangeEnd: '70vh',\n },\n },\n },\n }),\n },\n },\n });\n};\n\nconst createAsset = ({\n image,\n video,\n includesAnimation,\n isWidthLarge = false,\n isHeightSmall = false,\n}: Pick<\n HeroStackedProps,\n 'image' | 'video' | 'includesAnimation' | 'isWidthLarge' | 'isHeightSmall'\n>) => {\n let mediaElement: ElementVisual | null = null;\n\n if (video && video instanceof HTMLVideoElement) {\n mediaElement = createVideoAsset(video);\n } else if (image) {\n mediaElement = createImageAsset(image);\n }\n\n if (!mediaElement) {\n return null;\n }\n\n const assetInteriorElement = ElementModel.createDiv({\n className: 'umd-hero-stacked__asset--interior',\n children: [mediaElement, createOverlay(includesAnimation)],\n elementStyles: {\n element: {\n overflow: 'clip',\n position: 'relative',\n height: '100%',\n },\n },\n });\n\n const horizontalLock = ElementModel.layout.spaceHorizontalLarger({\n element: document.createElement('div'),\n children: [assetInteriorElement],\n elementStyles: {\n element: {\n height: '100%',\n width: '100%',\n },\n },\n });\n\n const assetContainer = ElementModel.createDiv({\n className: 'umd-hero-stacked__asset',\n children: isWidthLarge\n ? [horizontalLock]\n : [mediaElement, createOverlay(includesAnimation)],\n elementStyles: {\n element: {\n position: 'relative',\n overflow: 'clip',\n display: 'grid',\n\n ['& img, & video']: {\n objectFit: 'cover',\n aspectRatio: '5 / 4',\n\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n maxHeight: '700px',\n minHeight: '300px',\n\n ...(!isHeightSmall && {\n minHeight: '400px',\n height: '65vh !important',\n }),\n },\n },\n },\n },\n });\n\n return assetContainer;\n};\n\nconst createHeadline = (\n props: Pick<\n HeroStackedProps,\n 'headline' | 'isHeightSmall' | 'includesAnimation' | 'isThemeDark'\n >,\n) => {\n const { headline, isHeightSmall, includesAnimation, isThemeDark } = props;\n const characterCount = headline?.textContent?.trim().length || 0;\n const isOverwriteHeadline = characterCount < 30;\n\n if (!headline) return null;\n\n const desktopStyles = {\n [`@container (${Styles.token.media.queries.desktop.min})`]: {\n ...(isOverwriteHeadline && {\n fontSize: '80px',\n }),\n },\n };\n\n const animationStyles = {\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n ...Utils.theme.media.withViewTimelineAnimation({\n animation: `${REF_KEY_FRAME_FONT_COLOR} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart: '100vh',\n animationRangeEnd: '130vh',\n\n ...(isHeightSmall && {\n animationRangeStart: '120vh',\n animationRangeEnd: '150vh',\n }),\n }),\n },\n };\n\n const elementStyles = {\n element: {\n color: Styles.token.color.black,\n maxWidth: '700px',\n margin: '0 auto',\n textTransform: 'uppercase',\n marginTop: `${Styles.token.spacing.sm}`,\n\n ...(isThemeDark && {\n color: Styles.token.color.white,\n }),\n\n ...(includesAnimation && {\n ...(!isThemeDark && {\n ...animationStyles,\n }),\n }),\n\n ...desktopStyles,\n },\n siblingAfter: {\n marginTop: `${Styles.token.spacing.md}`,\n },\n };\n\n return ElementModel.headline.campaignLarge({\n element: headline,\n elementStyles,\n });\n};\n\nconst createText = (\n props: Omit<HeroStackedProps, 'image' | 'video' | 'isWidthLarge'>,\n) => {\n const { topPosition, isThemeDark, includesAnimation, isHeightSmall } = props;\n const additionalSpread = topPosition ? parseInt(topPosition) : null;\n const textLockupElement = textLockup.large({\n ...props,\n ribbon: props.eyebrow,\n headlineComposite: createHeadline(props),\n textLargest: props.text,\n });\n\n const lock = ElementModel.layout.spaceHorizontalSmall({\n element: document.createElement('div'),\n children: [textLockupElement],\n elementStyles: {\n element: {\n position: 'relative',\n },\n },\n });\n\n return ElementModel.createDiv({\n className: 'umd-hero-stacked__text',\n children: [lock],\n elementStyles: {\n element: {\n padding: `${Styles.token.spacing.lg} 0`,\n display: 'flex',\n justifyContent: 'center',\n textAlign: 'center',\n position: 'relative',\n zIndex: '999',\n\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n padding: `${Styles.token.spacing['6xl']} 0 ${Styles.token.spacing['3xl']}`,\n },\n\n ...(includesAnimation && {\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n ...Utils.theme.media.withViewTimelineAnimation({\n position: 'sticky',\n top: additionalSpread || 0,\n }),\n },\n }),\n\n [`& *`]: {\n ...(includesAnimation && {\n ...(!isThemeDark && {\n [`@container (${Styles.token.media.queries.tablet.min})`]: {\n ...Utils.theme.media.withViewTimelineAnimation({\n animation: `${REF_KEY_FRAME_FONT_COLOR} ease-in-out forwards`,\n animationTimeline: 'view()',\n animationRangeStart: '90vh',\n animationRangeEnd: '110vh',\n\n ...(isHeightSmall && {\n animationRangeStart: '90vh',\n animationRangeEnd: '110vh',\n }),\n }),\n },\n }),\n }),\n },\n\n [`& .${Styles.element.text.decoration.ribbon.className[0]}`]: {\n animation: 'none !important',\n },\n\n [`& .${Styles.element.text.rich.simpleLargest.className}`]: {\n maxWidth: '860px',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n },\n },\n });\n};\n\nexport default (props: HeroStackedProps) => {\n const asset = createAsset(props);\n const hasAsset = asset !== null;\n const shouldAnimateText = hasAsset && props.includesAnimation;\n\n const text = createText({\n ...props,\n includesAnimation: shouldAnimateText,\n });\n\n const children: ElementVisual[] = [text];\n if (hasAsset) {\n children.push(asset);\n }\n\n const composite = ElementModel.createDiv({\n className: 'umd-hero-stacked',\n children,\n elementStyles: {\n element: {\n containerType: 'inline-size',\n\n ...(props.isThemeDark && {\n backgroundColor: Styles.token.color.black,\n }),\n },\n },\n });\n\n composite.styles += keyFrameFadeOver;\n composite.styles += keyFrameFontColor;\n\n return composite;\n};\n"],"names":["assets.video.observedAutoPlay","assets.image.background","ElementModel.createDiv","ElementModel.layout.spaceHorizontalLarger","Utils.theme.media.withViewTimelineAnimation","ElementModel.headline.campaignLarge","textLockup.large","ElementModel.layout.spaceHorizontalSmall"],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ const TextAnimation = `
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
@media (prefers-reduced-motion: no-preference) {
|
|
43
|
-
@supports (animation-timeline:
|
|
43
|
+
@supports (animation-timeline: scroll()) {
|
|
44
44
|
.${ELEMENT_EXPAND_TEXT_ANIMATION} {
|
|
45
45
|
position: absolute;
|
|
46
46
|
top: 0;
|
|
@@ -52,7 +52,7 @@ const TextAnimation = `
|
|
|
52
52
|
|
|
53
53
|
@media (${Styles.token.media.queries.tablet.min}) {
|
|
54
54
|
@media (prefers-reduced-motion: no-preference) {
|
|
55
|
-
@supports (animation-timeline:
|
|
55
|
+
@supports (animation-timeline: scroll()) {
|
|
56
56
|
.${ELEMENT_EXPAND_TEXT_ANIMATION} {
|
|
57
57
|
transform: translateY(100vh);
|
|
58
58
|
}
|
|
@@ -77,7 +77,7 @@ const ImageOverlayContainer = `
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
@media (prefers-reduced-motion: no-preference) {
|
|
80
|
-
@supports (animation-timeline:
|
|
80
|
+
@supports (animation-timeline: scroll()) {
|
|
81
81
|
.${ELEMENT_EXPAND_IMAGE_OVERLAY} {
|
|
82
82
|
opacity: 1;
|
|
83
83
|
animation: img-overlay forwards;
|
|
@@ -99,7 +99,7 @@ const ImageSizeContainer = `
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
@media (prefers-reduced-motion: no-preference) {
|
|
102
|
-
@supports (animation-timeline:
|
|
102
|
+
@supports (animation-timeline: scroll()) {
|
|
103
103
|
.${ELEMENT_EXPAND_IMAGE_SIZE} {
|
|
104
104
|
width: ${Styles.token.spacing.maxWidth.smallest};
|
|
105
105
|
height: 70vh;
|
|
@@ -111,7 +111,7 @@ const ImageSizeContainer = `
|
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
@supports not (animation-timeline:
|
|
114
|
+
@supports not (animation-timeline: scroll()) {
|
|
115
115
|
.${ELEMENT_EXPAND_IMAGE_SIZE} {
|
|
116
116
|
height: 100%;
|
|
117
117
|
}
|
|
@@ -130,7 +130,7 @@ const ImagePosition = `
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
@media (prefers-reduced-motion: no-preference) {
|
|
133
|
-
@supports (animation-timeline:
|
|
133
|
+
@supports (animation-timeline: scroll()) {
|
|
134
134
|
.${ELEMENT_EXPAND_IMAGE_POSITION} {
|
|
135
135
|
display: flex;
|
|
136
136
|
justify-content: center;
|
|
@@ -144,7 +144,7 @@ const ImagePosition = `
|
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
@supports not (animation-timeline:
|
|
147
|
+
@supports not (animation-timeline: scroll()) {
|
|
148
148
|
.${ELEMENT_EXPAND_IMAGE_POSITION} {
|
|
149
149
|
height: 100%;
|
|
150
150
|
}
|
|
@@ -166,7 +166,7 @@ const ImageContainer = `
|
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
@media (prefers-reduced-motion: no-preference) {
|
|
169
|
-
@supports (animation-timeline:
|
|
169
|
+
@supports (animation-timeline: scroll()) {
|
|
170
170
|
.${ELEMENT_EXPAND_IMAGE_CONTAINER} {
|
|
171
171
|
position: relative;
|
|
172
172
|
}
|
|
@@ -187,7 +187,7 @@ const STYLES_LAYOUT_IMAGE_EXPAND = `
|
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
@media (prefers-reduced-motion: no-preference) {
|
|
190
|
-
@supports (animation-timeline:
|
|
190
|
+
@supports (animation-timeline: scroll()) {
|
|
191
191
|
.${ELEMENT_EXPLAND_DECLARATION} {
|
|
192
192
|
height: 180vh;
|
|
193
193
|
}
|
|
@@ -196,7 +196,7 @@ const STYLES_LAYOUT_IMAGE_EXPAND = `
|
|
|
196
196
|
|
|
197
197
|
@media (${Styles.token.media.queries.tablet.min}) {
|
|
198
198
|
@media (prefers-reduced-motion: no-preference) {
|
|
199
|
-
@supports (animation-timeline:
|
|
199
|
+
@supports (animation-timeline: scroll()) {
|
|
200
200
|
.${ELEMENT_EXPLAND_DECLARATION} {
|
|
201
201
|
height: 200vh;
|
|
202
202
|
}
|