@universityofmaryland/web-elements-library 1.5.0-beta.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/composite/banner/promo.d.ts.map +1 -1
- package/dist/composite/banner/promo.js +6 -3
- package/dist/composite/banner/promo.js.map +1 -1
- package/dist/composite/banner/promo.mjs +6 -3
- package/dist/composite/banner/promo.mjs.map +1 -1
- package/dist/composite/quote/elements/icon.d.ts +3 -2
- package/dist/composite/quote/elements/icon.d.ts.map +1 -1
- package/dist/composite/quote/elements/icon.js +23 -16
- package/dist/composite/quote/elements/icon.js.map +1 -1
- package/dist/composite/quote/elements/icon.mjs +23 -16
- package/dist/composite/quote/elements/icon.mjs.map +1 -1
- package/dist/composite/quote/elements/image.d.ts.map +1 -1
- package/dist/composite/quote/elements/image.js +6 -6
- package/dist/composite/quote/elements/image.js.map +1 -1
- package/dist/composite/quote/elements/image.mjs +6 -6
- package/dist/composite/quote/elements/image.mjs.map +1 -1
- package/dist/composite/quote/elements/index.d.ts +1 -0
- package/dist/composite/quote/elements/index.d.ts.map +1 -1
- package/dist/composite/quote/elements/index.js +2 -0
- package/dist/composite/quote/elements/index.js.map +1 -1
- package/dist/composite/quote/elements/index.mjs +2 -0
- package/dist/composite/quote/elements/index.mjs.map +1 -1
- package/dist/composite/quote/elements/quote.d.ts +13 -0
- package/dist/composite/quote/elements/quote.d.ts.map +1 -0
- package/dist/composite/quote/elements/quote.js +114 -0
- package/dist/composite/quote/elements/quote.js.map +1 -0
- package/dist/composite/quote/elements/quote.mjs +97 -0
- package/dist/composite/quote/elements/quote.mjs.map +1 -0
- package/dist/composite/quote/elements/text.d.ts +1 -1
- package/dist/composite/quote/elements/text.d.ts.map +1 -1
- package/dist/composite/quote/elements/text.js +103 -172
- package/dist/composite/quote/elements/text.js.map +1 -1
- package/dist/composite/quote/elements/text.mjs +103 -172
- package/dist/composite/quote/elements/text.mjs.map +1 -1
- package/dist/composite/quote/featured.d.ts +3 -0
- package/dist/composite/quote/featured.d.ts.map +1 -1
- package/dist/composite/quote/featured.js +14 -7
- package/dist/composite/quote/featured.js.map +1 -1
- package/dist/composite/quote/featured.mjs +14 -7
- package/dist/composite/quote/featured.mjs.map +1 -1
- package/dist/composite/quote/helper/animation.d.ts.map +1 -1
- package/dist/composite/quote/helper/animation.js +67 -36
- package/dist/composite/quote/helper/animation.js.map +1 -1
- package/dist/composite/quote/helper/animation.mjs +67 -36
- package/dist/composite/quote/helper/animation.mjs.map +1 -1
- package/dist/composite/quote/inline.d.ts +3 -0
- package/dist/composite/quote/inline.d.ts.map +1 -1
- package/dist/composite/quote/inline.js +15 -7
- package/dist/composite/quote/inline.js.map +1 -1
- package/dist/composite/quote/inline.mjs +15 -7
- package/dist/composite/quote/inline.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,201 +1,132 @@
|
|
|
1
1
|
import * as token from "@universityofmaryland/web-styles-library/token";
|
|
2
2
|
import * as typography from "@universityofmaryland/web-styles-library/typography";
|
|
3
3
|
import { createDiv, create } from "../../../model/elements/index.mjs";
|
|
4
|
-
import elementIcon from "./icon.mjs";
|
|
5
4
|
import elementAction from "./action.mjs";
|
|
5
|
+
import elementQuote from "./quote.mjs";
|
|
6
6
|
import { SMALL } from "../_constants.mjs";
|
|
7
|
-
const
|
|
7
|
+
const createChildren = (props) => {
|
|
8
8
|
const {
|
|
9
|
-
|
|
10
|
-
isThemeMaryland,
|
|
11
|
-
isSizeLarge = false,
|
|
12
|
-
isTypeFeatured = false,
|
|
13
|
-
image,
|
|
14
|
-
quote,
|
|
9
|
+
action,
|
|
15
10
|
attribution,
|
|
16
11
|
attributionSubText,
|
|
17
|
-
|
|
18
|
-
includesAnimation
|
|
12
|
+
hasImage,
|
|
13
|
+
includesAnimation,
|
|
14
|
+
isThemeDark,
|
|
15
|
+
quote,
|
|
16
|
+
shouldHaveWhiteText
|
|
19
17
|
} = props;
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
element: quoteTextElement,
|
|
31
|
-
className: "quote-container-quote",
|
|
32
|
-
children: quoteChildren,
|
|
18
|
+
const wrapperChildren = [];
|
|
19
|
+
if (quote) {
|
|
20
|
+
wrapperChildren.push(
|
|
21
|
+
elementQuote({ ...props, shouldHaveWhiteText, quote, hasImage })
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
if (attribution) {
|
|
25
|
+
const attributionElement = create({
|
|
26
|
+
element: attribution,
|
|
27
|
+
className: "quote-container-attribution",
|
|
33
28
|
elementStyles: {
|
|
34
29
|
element: {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
...(isThemeDark || isThemeMaryland) && {
|
|
41
|
-
color: token.color.white
|
|
30
|
+
marginTop: token.spacing.sm,
|
|
31
|
+
...includesAnimation && {
|
|
32
|
+
opacity: "0",
|
|
33
|
+
transform: "translateY(20px)",
|
|
34
|
+
transition: "opacity 1s ease, transform 0.5s ease"
|
|
42
35
|
},
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
position: "absolute",
|
|
46
|
-
left: `-${token.spacing.md}`,
|
|
47
|
-
top: "7px",
|
|
48
|
-
height: "calc(100% - 14px)",
|
|
49
|
-
width: "2px",
|
|
50
|
-
display: "block",
|
|
51
|
-
backgroundColor: token.color.red,
|
|
52
|
-
...isThemeMaryland && { backgroundColor: token.color.gold },
|
|
53
|
-
...image && !isTypeFeatured && {
|
|
54
|
-
display: "none"
|
|
55
|
-
},
|
|
56
|
-
[`@container (min-width: ${SMALL}px)`]: {
|
|
57
|
-
left: `-${token.spacing.md}`
|
|
58
|
-
},
|
|
59
|
-
[`@container (max-width: ${SMALL - 1}px)`]: {
|
|
60
|
-
...!isTypeFeatured && {
|
|
61
|
-
display: "block"
|
|
62
|
-
}
|
|
63
|
-
}
|
|
36
|
+
...isThemeDark && {
|
|
37
|
+
color: token.color.white
|
|
64
38
|
},
|
|
65
|
-
[
|
|
39
|
+
[`& *`]: {
|
|
66
40
|
color: "currentColor",
|
|
67
|
-
...typography.sans.
|
|
68
|
-
...isSizeLarge && { ...typography.sans.extraLarge }
|
|
41
|
+
...typography.sans.medium
|
|
69
42
|
}
|
|
70
43
|
}
|
|
71
44
|
}
|
|
72
45
|
});
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
element: {
|
|
92
|
-
marginTop: token.spacing.sm,
|
|
93
|
-
...includesAnimation && {
|
|
94
|
-
opacity: "0",
|
|
95
|
-
transform: "translateY(20px)",
|
|
96
|
-
transition: "opacity 1s ease, transform 0.5s ease"
|
|
97
|
-
},
|
|
98
|
-
...isThemeDark && {
|
|
99
|
-
color: token.color.white
|
|
100
|
-
},
|
|
101
|
-
[`& *`]: {
|
|
102
|
-
color: "currentColor",
|
|
103
|
-
...typography.sans.medium
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
wrapperChildren.push(attributionElement);
|
|
109
|
-
}
|
|
110
|
-
if (attributionSubText) {
|
|
111
|
-
const attributionSubTextElement = create({
|
|
112
|
-
element: attributionSubText,
|
|
113
|
-
className: "quote-container-text-attribution-sub-text",
|
|
114
|
-
elementStyles: {
|
|
115
|
-
element: {
|
|
116
|
-
color: token.color.gray.dark,
|
|
117
|
-
fontStyle: "italic",
|
|
118
|
-
...typography.sans.small,
|
|
119
|
-
...includesAnimation && {
|
|
120
|
-
opacity: "0",
|
|
121
|
-
transform: "translateY(20px)",
|
|
122
|
-
transition: "opacity 1s ease, transform 0.5s ease"
|
|
123
|
-
},
|
|
124
|
-
...(isThemeDark || isThemeMaryland) && {
|
|
125
|
-
color: token.color.white
|
|
126
|
-
}
|
|
46
|
+
wrapperChildren.push(attributionElement);
|
|
47
|
+
}
|
|
48
|
+
if (attributionSubText) {
|
|
49
|
+
const attributionSubTextElement = create({
|
|
50
|
+
element: attributionSubText,
|
|
51
|
+
className: "quote-container-text-attribution-sub-text",
|
|
52
|
+
elementStyles: {
|
|
53
|
+
element: {
|
|
54
|
+
color: token.color.gray.dark,
|
|
55
|
+
fontStyle: "italic",
|
|
56
|
+
...typography.sans.small,
|
|
57
|
+
...includesAnimation && {
|
|
58
|
+
opacity: "0",
|
|
59
|
+
transform: "translateY(20px)",
|
|
60
|
+
transition: "opacity 1s ease, transform 0.5s ease"
|
|
61
|
+
},
|
|
62
|
+
...shouldHaveWhiteText && {
|
|
63
|
+
color: token.color.white
|
|
127
64
|
}
|
|
128
65
|
}
|
|
129
|
-
}
|
|
130
|
-
wrapperChildren.push(attributionSubTextElement);
|
|
131
|
-
}
|
|
132
|
-
if (action) {
|
|
133
|
-
const actionElement = elementAction({
|
|
134
|
-
...props2,
|
|
135
|
-
action
|
|
136
|
-
});
|
|
137
|
-
wrapperChildren.push(actionElement);
|
|
138
|
-
}
|
|
139
|
-
return wrapperChildren;
|
|
140
|
-
};
|
|
141
|
-
const splitWords = (quote2) => {
|
|
142
|
-
const text = quote2.textContent ?? "";
|
|
143
|
-
const words = text.trim().split(/\s+/);
|
|
144
|
-
const wordElements = words.map((word, index) => {
|
|
145
|
-
const wordElement = document.createElement("div");
|
|
146
|
-
wordElement.classList.add("quote-text-split-word");
|
|
147
|
-
Object.assign(wordElement.style, {
|
|
148
|
-
display: "inline-block",
|
|
149
|
-
whiteSpace: "pre-wrap",
|
|
150
|
-
opacity: "0",
|
|
151
|
-
transform: "translateY(20px)",
|
|
152
|
-
transition: "opacity 1s ease, transform 0.5s ease"
|
|
153
|
-
});
|
|
154
|
-
wordElement.textContent = word + (index < words.length - 1 ? " " : "");
|
|
155
|
-
return wordElement;
|
|
66
|
+
}
|
|
156
67
|
});
|
|
157
|
-
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
children: wrapperChildren
|
|
68
|
+
wrapperChildren.push(attributionSubTextElement);
|
|
69
|
+
}
|
|
70
|
+
if (action) {
|
|
71
|
+
const actionElement = elementAction({
|
|
72
|
+
...props,
|
|
73
|
+
action
|
|
164
74
|
});
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
75
|
+
wrapperChildren.push(actionElement);
|
|
76
|
+
}
|
|
77
|
+
return wrapperChildren;
|
|
78
|
+
};
|
|
79
|
+
const elementText = (props) => {
|
|
80
|
+
const {
|
|
81
|
+
image,
|
|
82
|
+
isSizeLarge = false,
|
|
83
|
+
isThemeDark,
|
|
84
|
+
isThemeMaryland,
|
|
85
|
+
isTypeFeatured = false
|
|
86
|
+
} = props;
|
|
87
|
+
const shouldHaveWhiteText = isThemeDark || isThemeMaryland;
|
|
88
|
+
const isSizeLargeAndNotFeatured = isSizeLarge && !isTypeFeatured;
|
|
89
|
+
const hasImage = image != null;
|
|
90
|
+
const isHasImageAndNotFeatured = hasImage && !isTypeFeatured;
|
|
91
|
+
const wrapper = createDiv({
|
|
92
|
+
className: "quote-text-container-wrapper",
|
|
93
|
+
children: [
|
|
94
|
+
...createChildren({
|
|
95
|
+
...props,
|
|
96
|
+
shouldHaveWhiteText,
|
|
97
|
+
hasImage
|
|
98
|
+
})
|
|
99
|
+
]
|
|
100
|
+
});
|
|
101
|
+
return createDiv({
|
|
102
|
+
className: "quote-text-container",
|
|
103
|
+
children: [wrapper],
|
|
104
|
+
elementStyles: {
|
|
105
|
+
element: {
|
|
106
|
+
width: "100%",
|
|
107
|
+
...typography.sans.medium,
|
|
108
|
+
[`@container (max-width: ${SMALL - 1}px)`]: {
|
|
109
|
+
paddingLeft: token.spacing.md,
|
|
110
|
+
...!hasImage && {
|
|
111
|
+
paddingTop: token.spacing.lg
|
|
184
112
|
},
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
113
|
+
...isSizeLargeAndNotFeatured && {
|
|
114
|
+
paddingTop: token.spacing["2xl"]
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
[`@container (min-width: ${SMALL}px)`]: {
|
|
118
|
+
paddingLeft: token.spacing["4xl"],
|
|
119
|
+
...isHasImageAndNotFeatured && { paddingLeft: "0" }
|
|
120
|
+
},
|
|
121
|
+
[`& *`]: {
|
|
122
|
+
...typography.sans.medium,
|
|
123
|
+
...shouldHaveWhiteText && {
|
|
124
|
+
color: token.color.white
|
|
193
125
|
}
|
|
194
126
|
}
|
|
195
127
|
}
|
|
196
|
-
}
|
|
197
|
-
};
|
|
198
|
-
return CreateQuoteTextContainer(props);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
199
130
|
};
|
|
200
131
|
export {
|
|
201
132
|
elementText as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.mjs","sources":["../../../../source/composite/quote/elements/text.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport { ElementModel } from 'model';\nimport { default as elementIcon } from './icon';\nimport { default as elementAction } from './action';\nimport { SMALL } from '../_constants';\nimport { type QuoteTextProps } from '../_types';\nimport { type ElementVisual } from '../../../_types';\n\nexport default (props: QuoteTextProps) => {\n const {\n isThemeDark,\n isThemeMaryland,\n isSizeLarge = false,\n isTypeFeatured = false,\n image,\n quote,\n attribution,\n attributionSubText,\n action,\n includesAnimation,\n } = props;\n\n const createQuoteText = (\n quote: HTMLElement,\n quoteChildren: ElementVisual[],\n ) => {\n let quoteTextElement: HTMLElement = quote;\n const wordsList = splitWords(quote);\n\n if (includesAnimation) {\n quoteTextElement = document.createElement('div');\n\n wordsList.map((word) => {\n quoteTextElement.appendChild(word);\n });\n }\n\n const quoteElement = ElementModel.create({\n element: quoteTextElement,\n className: 'quote-container-quote',\n children: quoteChildren,\n elementStyles: {\n element: {\n position: 'relative',\n fontWeight: '700',\n color: token.color.black,\n ...typography.sans.larger,\n\n ...(isSizeLarge && { ...typography.sans.extraLarge }),\n\n ...((isThemeDark || isThemeMaryland) && {\n color: token.color.white,\n }),\n\n [`&::before`]: {\n content: '\"\"',\n position: 'absolute',\n left: `-${token.spacing.md}`,\n top: '7px',\n height: 'calc(100% - 14px)',\n width: '2px',\n display: 'block',\n backgroundColor: token.color.red,\n ...(isThemeMaryland && { backgroundColor: token.color.gold }),\n\n ...(image &&\n !isTypeFeatured && {\n display: 'none',\n }),\n\n [`@container (min-width: ${SMALL}px)`]: {\n left: `-${token.spacing.md}`,\n },\n\n [`@container (max-width: ${SMALL - 1}px)`]: {\n ...(!isTypeFeatured && {\n display: 'block',\n }),\n },\n },\n\n ['& *']: {\n color: 'currentColor',\n ...typography.sans.larger,\n ...(isSizeLarge && { ...typography.sans.extraLarge }),\n },\n },\n },\n });\n\n return quoteElement;\n };\n\n const getQuoteTextContainerChildren = (props: QuoteTextProps) => {\n const wrapperChildren: ElementVisual[] = [];\n\n if (quote) {\n const quoteChildren: ElementVisual[] = [];\n const iconSpan = elementIcon(props);\n\n if (!image) {\n quoteChildren.push(iconSpan);\n }\n\n const quoteElement = createQuoteText(quote, quoteChildren);\n\n wrapperChildren.push(quoteElement);\n }\n\n if (attribution) {\n const attributionElement = ElementModel.create({\n element: attribution,\n className: 'quote-container-attribution',\n elementStyles: {\n element: {\n marginTop: token.spacing.sm,\n\n ...(includesAnimation && {\n opacity: '0',\n transform: 'translateY(20px)',\n transition: 'opacity 1s ease, transform 0.5s ease',\n }),\n\n ...(isThemeDark && {\n color: token.color.white,\n }),\n\n [`& *`]: {\n color: 'currentColor',\n ...typography.sans.medium,\n },\n },\n },\n });\n\n wrapperChildren.push(attributionElement);\n }\n\n if (attributionSubText) {\n const attributionSubTextElement = ElementModel.create({\n element: attributionSubText,\n className: 'quote-container-text-attribution-sub-text',\n elementStyles: {\n element: {\n color: token.color.gray.dark,\n fontStyle: 'italic',\n ...typography.sans.small,\n\n ...(includesAnimation && {\n opacity: '0',\n transform: 'translateY(20px)',\n transition: 'opacity 1s ease, transform 0.5s ease',\n }),\n\n ...((isThemeDark || isThemeMaryland) && {\n color: token.color.white,\n }),\n },\n },\n });\n\n wrapperChildren.push(attributionSubTextElement);\n }\n\n if (action) {\n const actionElement = elementAction({\n ...props,\n action,\n });\n\n wrapperChildren.push(actionElement);\n }\n\n return wrapperChildren;\n };\n\n const splitWords = (quote: HTMLElement) => {\n const text = quote.textContent ?? '';\n const words = text.trim().split(/\\s+/);\n\n const wordElements = words.map((word, index) => {\n const wordElement = document.createElement('div');\n wordElement.classList.add('quote-text-split-word');\n\n Object.assign(wordElement.style, {\n display: 'inline-block',\n whiteSpace: 'pre-wrap',\n opacity: '0',\n transform: 'translateY(20px)',\n transition: 'opacity 1s ease, transform 0.5s ease',\n });\n\n wordElement.textContent = word + (index < words.length - 1 ? ' ' : '');\n\n return wordElement;\n });\n\n return wordElements;\n };\n\n const CreateQuoteTextContainer = (props: QuoteTextProps) => {\n const wrapperChildren = getQuoteTextContainerChildren(props);\n\n const wrapper = ElementModel.createDiv({\n className: 'quote-text-container-wrapper',\n children: wrapperChildren,\n });\n\n return ElementModel.createDiv({\n className: 'quote-text-container',\n children: [wrapper],\n elementStyles: {\n element: {\n width: '100%',\n ...typography.sans.medium,\n\n [`@container (max-width: ${SMALL - 1}px)`]: {\n paddingTop: token.spacing.lg,\n paddingLeft: token.spacing.md,\n\n ...(!isTypeFeatured && {\n ...(isSizeLarge && { paddingTop: token.spacing['2xl'] }),\n }),\n },\n\n [`@container (min-width: ${SMALL}px)`]: {\n paddingLeft: token.spacing['4xl'],\n\n ...(!isTypeFeatured && {\n ...(image && { paddingLeft: '0' }),\n }),\n },\n\n [`& *`]: {\n ...typography.sans.medium,\n\n ...(isThemeDark && {\n color: token.color.white,\n }),\n\n ...(isThemeMaryland && {\n color: token.color.white,\n }),\n },\n },\n },\n });\n };\n\n return CreateQuoteTextContainer(props);\n};\n"],"names":["quote","ElementModel.create","props","ElementModel.createDiv"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"text.mjs","sources":["../../../../source/composite/quote/elements/text.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport { ElementModel } from 'model';\nimport { default as elementAction } from './action';\nimport { default as elementQuote } from './quote';\nimport { SMALL } from '../_constants';\nimport { type QuoteTextProps } from '../_types';\nimport { type ElementVisual } from '../../../_types';\n\ninterface ChildrenProps\n extends Pick<\n QuoteTextProps,\n | 'quote'\n | 'image'\n | 'attribution'\n | 'attributionSubText'\n | 'action'\n | 'isThemeDark'\n | 'isSizeLarge'\n | 'isTypeFeatured'\n | 'includesAnimation'\n > {\n shouldHaveWhiteText?: boolean;\n hasImage: boolean;\n}\n\nconst createChildren = (props: ChildrenProps) => {\n const {\n action,\n attribution,\n attributionSubText,\n hasImage,\n includesAnimation,\n isThemeDark,\n quote,\n shouldHaveWhiteText,\n } = props;\n const wrapperChildren: ElementVisual[] = [];\n\n if (quote) {\n wrapperChildren.push(\n elementQuote({ ...props, shouldHaveWhiteText, quote, hasImage }),\n );\n }\n\n if (attribution) {\n const attributionElement = ElementModel.create({\n element: attribution,\n className: 'quote-container-attribution',\n elementStyles: {\n element: {\n marginTop: token.spacing.sm,\n\n ...(includesAnimation && {\n opacity: '0',\n transform: 'translateY(20px)',\n transition: 'opacity 1s ease, transform 0.5s ease',\n }),\n\n ...(isThemeDark && {\n color: token.color.white,\n }),\n\n [`& *`]: {\n color: 'currentColor',\n ...typography.sans.medium,\n },\n },\n },\n });\n\n wrapperChildren.push(attributionElement);\n }\n\n if (attributionSubText) {\n const attributionSubTextElement = ElementModel.create({\n element: attributionSubText,\n className: 'quote-container-text-attribution-sub-text',\n elementStyles: {\n element: {\n color: token.color.gray.dark,\n fontStyle: 'italic',\n ...typography.sans.small,\n\n ...(includesAnimation && {\n opacity: '0',\n transform: 'translateY(20px)',\n transition: 'opacity 1s ease, transform 0.5s ease',\n }),\n\n ...(shouldHaveWhiteText && {\n color: token.color.white,\n }),\n },\n },\n });\n\n wrapperChildren.push(attributionSubTextElement);\n }\n\n if (action) {\n const actionElement = elementAction({\n ...props,\n action,\n });\n\n wrapperChildren.push(actionElement);\n }\n\n return wrapperChildren;\n};\n\nexport default (\n props: Pick<\n QuoteTextProps,\n | 'isThemeDark'\n | 'isThemeMaryland'\n | 'isSizeLarge'\n | 'isTypeFeatured'\n | 'image'\n | 'quote'\n | 'attribution'\n | 'attributionSubText'\n | 'action'\n | 'includesAnimation'\n >,\n) => {\n const {\n image,\n isSizeLarge = false,\n isThemeDark,\n isThemeMaryland,\n isTypeFeatured = false,\n } = props;\n const shouldHaveWhiteText = isThemeDark || isThemeMaryland;\n const isSizeLargeAndNotFeatured = isSizeLarge && !isTypeFeatured;\n const hasImage = image != null;\n const isHasImageAndNotFeatured = hasImage && !isTypeFeatured;\n\n const wrapper = ElementModel.createDiv({\n className: 'quote-text-container-wrapper',\n children: [\n ...createChildren({\n ...props,\n shouldHaveWhiteText,\n hasImage,\n }),\n ],\n });\n\n return ElementModel.createDiv({\n className: 'quote-text-container',\n children: [wrapper],\n elementStyles: {\n element: {\n width: '100%',\n ...typography.sans.medium,\n\n [`@container (max-width: ${SMALL - 1}px)`]: {\n paddingLeft: token.spacing.md,\n\n ...(!hasImage && {\n paddingTop: token.spacing.lg,\n }),\n\n ...(isSizeLargeAndNotFeatured && {\n paddingTop: token.spacing['2xl'],\n }),\n },\n\n [`@container (min-width: ${SMALL}px)`]: {\n paddingLeft: token.spacing['4xl'],\n\n ...(isHasImageAndNotFeatured && { paddingLeft: '0' }),\n },\n\n [`& *`]: {\n ...typography.sans.medium,\n\n ...(shouldHaveWhiteText && {\n color: token.color.white,\n }),\n },\n },\n },\n });\n};\n"],"names":["ElementModel.create","ElementModel.createDiv"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"featured.d.ts","sourceRoot":"","sources":["../../../source/composite/quote/featured.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;yBAsInC,OAAO,kBAAkB
|
|
1
|
+
{"version":3,"file":"featured.d.ts","sourceRoot":"","sources":["../../../source/composite/quote/featured.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;yBAsInC,OAAO,kBAAkB;;;;;;;;AAAzC,wBAwGE"}
|
|
@@ -5,9 +5,9 @@ const index = require("../../model/elements/index.js");
|
|
|
5
5
|
const inline = require("./inline.js");
|
|
6
6
|
const image = require("./elements/image.js");
|
|
7
7
|
require("@universityofmaryland/web-styles-library/typography");
|
|
8
|
+
const action = require("./elements/action.js");
|
|
8
9
|
require("@universityofmaryland/web-icons-library/brand");
|
|
9
10
|
const _constants = require("./_constants.js");
|
|
10
|
-
const action = require("./elements/action.js");
|
|
11
11
|
const animation = require("./helper/animation.js");
|
|
12
12
|
function _interopNamespaceDefault(e) {
|
|
13
13
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
@@ -136,7 +136,7 @@ const createTextureContainer = ({
|
|
|
136
136
|
const featured = (props) => {
|
|
137
137
|
const { isThemeDark, isThemeMaryland, image: image2, isTransparent } = props;
|
|
138
138
|
const wrapperChildren = [];
|
|
139
|
-
const inlineQuote = inline(props);
|
|
139
|
+
const inlineQuote = inline({ ...props, isTypeFeatured: true });
|
|
140
140
|
const textContainer = index.createDiv({
|
|
141
141
|
className: "quote-featured-text",
|
|
142
142
|
children: [inlineQuote],
|
|
@@ -207,11 +207,18 @@ const featured = (props) => {
|
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
209
|
});
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
210
|
+
const loadAnimation = () => {
|
|
211
|
+
animation.quoteAnimation({
|
|
212
|
+
...props,
|
|
213
|
+
quoteElement: container
|
|
214
|
+
});
|
|
215
|
+
};
|
|
216
|
+
return {
|
|
217
|
+
...container,
|
|
218
|
+
events: {
|
|
219
|
+
loadAnimation
|
|
220
|
+
}
|
|
221
|
+
};
|
|
215
222
|
};
|
|
216
223
|
module.exports = featured;
|
|
217
224
|
//# sourceMappingURL=featured.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"featured.js","sources":["../../../source/composite/quote/featured.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport { imageFromSvg } from '@universityofmaryland/web-utilities-library/media';\nimport { ElementModel } from 'model';\nimport InlineQuote from './inline';\nimport { image as elementImage, action as elementAction } from './elements';\nimport { quoteAnimation } from './helper/animation';\nimport { MEDIUM, SMALL } from './_constants';\nimport { type QuoteFeaturedProps } from './_types';\nimport { type ElementVisual } from '../../_types';\n\nconst BACKGROUND_TEXTURE_LIGHT = `<svg id=\"quote_background_light\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 850.5 532.1\"><path d=\"M.3,0h332.7L.3,326.6V0Z\" fill=\"#757575\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/><path d=\"M517.9,532.1h332.7L308.6,0H0v23.6l517.9,508.5Z\" fill=\"#000\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/></svg>`;\nconst BACKGROUND_TEXTURE_DARK = `<svg id=\"quote_background_dark\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 614.86 300.65\"><defs><style>.cls-1{opacity:.25;}.cls-1,.cls-2{fill:#757575;fill-rule:evenodd;isolation:isolate;}.cls-2{opacity:.1;}</style></defs><path class=\"cls-2\" d=\"m.27,0h332.67L27.46,299.93H.27V0Z\"/><path class=\"cls-1\" d=\"m0,0h308.65l306.21,300.65h-332.67L0,23.59V0Z\"/></svg>`;\n\nconst createImageContainer = (props: QuoteFeaturedProps) => {\n const { image, action } = props;\n\n const getContainerChildren = () => {\n const containerChildren: ElementVisual[] = [];\n\n if (image) {\n const imageElement = elementImage({\n ...props,\n isTypeFeatured: true,\n image,\n });\n containerChildren.push(imageElement);\n }\n\n if (action) {\n const actionElement = elementAction({\n isTypeFeatured: true,\n action,\n });\n containerChildren.push(actionElement);\n }\n\n return containerChildren;\n };\n\n const createImageContainerElement = () => {\n return ElementModel.createDiv({\n className: 'quote-featured-image',\n children: containerChildren,\n elementStyles: {\n element: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: `-${token.spacing.lg}`,\n\n ['&[align-center=true]']: {\n marginTop: '0',\n justifyContent: 'center',\n },\n\n [`@container (max-width: ${SMALL - 1}px)`]: {\n padding: `0 ${token.spacing.lg}`,\n },\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${\n MEDIUM - 1\n }px)`]: {\n margin: '0 auto',\n marginTop: `-${token.spacing['8xl']}`,\n maxWidth: '300px',\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n paddingLeft: token.spacing['6xl'],\n width: `calc(300px + ${token.spacing['6xl']})`,\n },\n },\n },\n });\n };\n\n const containerChildren = getContainerChildren();\n const container = createImageContainerElement();\n\n if (window.innerWidth >= MEDIUM && image instanceof HTMLImageElement) {\n image.addEventListener('load', () => {\n const parent = container;\n\n if (!parent) return;\n\n const aspectRatio = image.offsetHeight / parent.element.offsetHeight;\n\n if (aspectRatio < 0.5) {\n container.element.setAttribute('align-center', 'true');\n }\n });\n }\n\n return container;\n};\n\nconst createTextureContainer = ({\n isThemeDark,\n isThemeMaryland,\n}: QuoteFeaturedProps) => {\n const isDarkText = isThemeDark || isThemeMaryland;\n const backgroundTexture = imageFromSvg({\n SVG: isDarkText ? BACKGROUND_TEXTURE_DARK : BACKGROUND_TEXTURE_LIGHT,\n });\n\n const backgroundTextureElement = ElementModel.create({\n element: backgroundTexture,\n className: 'quote-background-texture',\n });\n const container = ElementModel.createDiv({\n className: 'quote-featured-texture',\n children: [backgroundTextureElement],\n elementStyles: {\n element: {\n overflow: 'hidden',\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n\n [`& > img`]: {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '70%',\n height: '120%',\n objectFit: 'cover',\n },\n\n [`@container (max-width: ${MEDIUM - 1}px)`]: {\n display: 'none',\n },\n },\n },\n });\n\n return container;\n};\n\nexport default (props: QuoteFeaturedProps) => {\n const { isThemeDark, isThemeMaryland, image, isTransparent } = props;\n const wrapperChildren: ElementVisual[] = [];\n\n const inlineQuote = InlineQuote(props);\n\n const textContainer = ElementModel.createDiv({\n className: 'quote-featured-text',\n children: [inlineQuote],\n elementStyles: {\n element: {\n padding: token.spacing.lg,\n position: 'relative',\n width: '100%',\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px)`]: {\n padding: `${token.spacing['2xl']}`,\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n padding: `${token.spacing['4xl']}`,\n },\n },\n },\n });\n\n if (!isTransparent) {\n wrapperChildren.push(createTextureContainer(props));\n }\n\n if (image) {\n wrapperChildren.push(createImageContainer(props));\n }\n\n wrapperChildren.push(textContainer);\n\n const wrapper = ElementModel.createDiv({\n className: 'quote-featured-container-wrapper',\n children: wrapperChildren,\n elementStyles: {\n element: {\n backgroundColor: token.color.gray.lightest,\n position: 'relative',\n ...(isThemeDark && { backgroundColor: token.color.black }),\n ...(isThemeMaryland && { backgroundColor: token.color.red }),\n ...(isTransparent && { backgroundColor: 'transparent' }),\n\n ...(image && {\n display: 'flex',\n flexDirection: 'column',\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n display: 'flex',\n flexDirection: 'row',\n },\n }),\n },\n },\n });\n\n const spacer = ElementModel.createDiv({\n className: 'quote-featured-container-spacer',\n children: [wrapper],\n elementStyles: {\n element: {\n paddingTop: token.spacing.lg,\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${MEDIUM - 1}px)`]:\n {\n ...(image && {\n paddingTop: token.spacing['8xl'],\n }),\n },\n },\n },\n });\n\n const container = ElementModel.createDiv({\n className: 'quote-featured-container',\n children: [spacer],\n elementStyles: {\n element: {\n containerType: 'inline-size',\n },\n },\n });\n\n quoteAnimation({\n ...props,\n quoteElement: container,\n });\n\n return container;\n};\n"],"names":["image","action","containerChildren","elementImage","elementAction","ElementModel.createDiv","token","SMALL","MEDIUM","imageFromSvg","ElementModel.create","InlineQuote","quoteAnimation"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAM,2BAA2B;AACjC,MAAM,0BAA0B;AAEhC,MAAM,uBAAuB,CAAC,UAA8B;AAC1D,QAAM,EAAA,OAAEA,iBAAOC,SAAA,IAAW;AAE1B,QAAM,uBAAuB,MAAM;AACjC,UAAMC,qBAAqC,CAAA;AAE3C,QAAIF,SAAO;AACT,YAAM,eAAeG,MAAa;AAAA,QAChC,GAAG;AAAA,QACH,gBAAgB;AAAA,QAAA,OAChBH;AAAAA,MAAA,CACD;AACDE,yBAAkB,KAAK,YAAY;AAAA,IACrC;AAEA,QAAID,UAAQ;AACV,YAAM,gBAAgBG,OAAc;AAAA,QAClC,gBAAgB;AAAA,QAAA,QAChBH;AAAAA,MAAA,CACD;AACDC,yBAAkB,KAAK,aAAa;AAAA,IACtC;AAEA,WAAOA;AAAAA,EACT;AAEA,QAAM,8BAA8B,MAAM;AACxC,WAAOG,gBAAuB;AAAA,MAC5B,WAAW;AAAA,MACX,UAAU;AAAA,MACV,eAAe;AAAA,QACb,SAAS;AAAA,UACP,UAAU;AAAA,UACV,SAAS;AAAA,UACT,eAAe;AAAA,UACf,YAAY;AAAA,UACZ,WAAW,IAAIC,iBAAM,QAAQ,EAAE;AAAA,UAE/B,CAAC,sBAAsB,GAAG;AAAA,YACxB,WAAW;AAAA,YACX,gBAAgB;AAAA,UAAA;AAAA,UAGlB,CAAC,0BAA0BC,WAAAA,QAAQ,CAAC,KAAK,GAAG;AAAA,YAC1C,SAAS,KAAKD,iBAAM,QAAQ,EAAE;AAAA,UAAA;AAAA,UAGhC,CAAC,0BAA0BC,gBAAK,uBAC9BC,WAAAA,SAAS,CACX,KAAK,GAAG;AAAA,YACN,QAAQ;AAAA,YACR,WAAW,IAAIF,iBAAM,QAAQ,KAAK,CAAC;AAAA,YACnC,UAAU;AAAA,UAAA;AAAA,UAGZ,CAAC,0BAA0BE,iBAAM,KAAK,GAAG;AAAA,YACvC,aAAaF,iBAAM,QAAQ,KAAK;AAAA,YAChC,OAAO,gBAAgBA,iBAAM,QAAQ,KAAK,CAAC;AAAA,UAAA;AAAA,QAC7C;AAAA,MACF;AAAA,IACF,CACD;AAAA,EACH;AAEA,QAAM,oBAAoB,qBAAA;AAC1B,QAAM,YAAY,4BAAA;AAElB,MAAI,OAAO,cAAcE,qBAAUR,mBAAiB,kBAAkB;AACpEA,YAAM,iBAAiB,QAAQ,MAAM;AACnC,YAAM,SAAS;AAEf,UAAI,CAAC,OAAQ;AAEb,YAAM,cAAcA,QAAM,eAAe,OAAO,QAAQ;AAExD,UAAI,cAAc,KAAK;AACrB,kBAAU,QAAQ,aAAa,gBAAgB,MAAM;AAAA,MACvD;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEA,MAAM,yBAAyB,CAAC;AAAA,EAC9B;AAAA,EACA;AACF,MAA0B;AACxB,QAAM,aAAa,eAAe;AAClC,QAAM,oBAAoBS,MAAAA,aAAa;AAAA,IACrC,KAAK,aAAa,0BAA0B;AAAA,EAAA,CAC7C;AAED,QAAM,2BAA2BC,MAAAA,OAAoB;AAAA,IACnD,SAAS;AAAA,IACT,WAAW;AAAA,EAAA,CACZ;AACD,QAAM,YAAYL,MAAAA,UAAuB;AAAA,IACvC,WAAW;AAAA,IACX,UAAU,CAAC,wBAAwB;AAAA,IACnC,eAAe;AAAA,MACb,SAAS;AAAA,QACP,UAAU;AAAA,QACV,UAAU;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QAER,CAAC,SAAS,GAAG;AAAA,UACX,UAAU;AAAA,UACV,KAAK;AAAA,UACL,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,WAAW;AAAA,QAAA;AAAA,QAGb,CAAC,0BAA0BG,WAAAA,SAAS,CAAC,KAAK,GAAG;AAAA,UAC3C,SAAS;AAAA,QAAA;AAAA,MACX;AAAA,IACF;AAAA,EACF,CACD;AAED,SAAO;AACT;AAEA,MAAA,WAAe,CAAC,UAA8B;AAC5C,QAAM,EAAE,aAAa,iBAAiB,OAAAR,QAAO,kBAAkB;AAC/D,QAAM,kBAAmC,CAAA;AAEzC,QAAM,cAAcW,OAAY,KAAK;AAErC,QAAM,gBAAgBN,MAAAA,UAAuB;AAAA,IAC3C,WAAW;AAAA,IACX,UAAU,CAAC,WAAW;AAAA,IACtB,eAAe;AAAA,MACb,SAAS;AAAA,QACP,SAASC,iBAAM,QAAQ;AAAA,QACvB,UAAU;AAAA,QACV,OAAO;AAAA,QAEP,GAAI,iBAAiB,EAAE,SAAS,IAAA;AAAA,QAEhC,CAAC,0BAA0BC,gBAAK,KAAK,GAAG;AAAA,UACtC,SAAS,GAAGD,iBAAM,QAAQ,KAAK,CAAC;AAAA,QAAA;AAAA,QAGlC,CAAC,0BAA0BE,iBAAM,KAAK,GAAG;AAAA,UACvC,SAAS,GAAGF,iBAAM,QAAQ,KAAK,CAAC;AAAA,QAAA;AAAA,MAClC;AAAA,IACF;AAAA,EACF,CACD;AAED,MAAI,CAAC,eAAe;AAClB,oBAAgB,KAAK,uBAAuB,KAAK,CAAC;AAAA,EACpD;AAEA,MAAIN,QAAO;AACT,oBAAgB,KAAK,qBAAqB,KAAK,CAAC;AAAA,EAClD;AAEA,kBAAgB,KAAK,aAAa;AAElC,QAAM,UAAUK,MAAAA,UAAuB;AAAA,IACrC,WAAW;AAAA,IACX,UAAU;AAAA,IACV,eAAe;AAAA,MACb,SAAS;AAAA,QACP,iBAAiBC,iBAAM,MAAM,KAAK;AAAA,QAClC,UAAU;AAAA,QACV,GAAI,eAAe,EAAE,iBAAiBA,iBAAM,MAAM,MAAA;AAAA,QAClD,GAAI,mBAAmB,EAAE,iBAAiBA,iBAAM,MAAM,IAAA;AAAA,QACtD,GAAI,iBAAiB,EAAE,iBAAiB,cAAA;AAAA,QAExC,GAAIN,UAAS;AAAA,UACX,SAAS;AAAA,UACT,eAAe;AAAA,UAEf,CAAC,0BAA0BQ,iBAAM,KAAK,GAAG;AAAA,YACvC,SAAS;AAAA,YACT,eAAe;AAAA,UAAA;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAAA,EACF,CACD;AAED,QAAM,SAASH,MAAAA,UAAuB;AAAA,IACpC,WAAW;AAAA,IACX,UAAU,CAAC,OAAO;AAAA,IAClB,eAAe;AAAA,MACb,SAAS;AAAA,QACP,YAAYC,iBAAM,QAAQ;AAAA,QAE1B,GAAI,iBAAiB,EAAE,SAAS,IAAA;AAAA,QAEhC,CAAC,0BAA0BC,gBAAK,uBAAuBC,WAAAA,SAAS,CAAC,KAAK,GACpE;AAAA,UACE,GAAIR,UAAS;AAAA,YACX,YAAYM,iBAAM,QAAQ,KAAK;AAAA,UAAA;AAAA,QACjC;AAAA,MACF;AAAA,IACJ;AAAA,EACF,CACD;AAED,QAAM,YAAYD,MAAAA,UAAuB;AAAA,IACvC,WAAW;AAAA,IACX,UAAU,CAAC,MAAM;AAAA,IACjB,eAAe;AAAA,MACb,SAAS;AAAA,QACP,eAAe;AAAA,MAAA;AAAA,IACjB;AAAA,EACF,CACD;AAEDO,2BAAe;AAAA,IACb,GAAG;AAAA,IACH,cAAc;AAAA,EAAA,CACf;AAED,SAAO;AACT;;"}
|
|
1
|
+
{"version":3,"file":"featured.js","sources":["../../../source/composite/quote/featured.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport { imageFromSvg } from '@universityofmaryland/web-utilities-library/media';\nimport { ElementModel } from 'model';\nimport InlineQuote from './inline';\nimport { image as elementImage, action as elementAction } from './elements';\nimport { quoteAnimation } from './helper/animation';\nimport { MEDIUM, SMALL } from './_constants';\nimport { type QuoteFeaturedProps } from './_types';\nimport { type ElementVisual } from '../../_types';\n\nconst BACKGROUND_TEXTURE_LIGHT = `<svg id=\"quote_background_light\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 850.5 532.1\"><path d=\"M.3,0h332.7L.3,326.6V0Z\" fill=\"#757575\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/><path d=\"M517.9,532.1h332.7L308.6,0H0v23.6l517.9,508.5Z\" fill=\"#000\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/></svg>`;\nconst BACKGROUND_TEXTURE_DARK = `<svg id=\"quote_background_dark\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 614.86 300.65\"><defs><style>.cls-1{opacity:.25;}.cls-1,.cls-2{fill:#757575;fill-rule:evenodd;isolation:isolate;}.cls-2{opacity:.1;}</style></defs><path class=\"cls-2\" d=\"m.27,0h332.67L27.46,299.93H.27V0Z\"/><path class=\"cls-1\" d=\"m0,0h308.65l306.21,300.65h-332.67L0,23.59V0Z\"/></svg>`;\n\nconst createImageContainer = (props: QuoteFeaturedProps) => {\n const { image, action } = props;\n\n const getContainerChildren = () => {\n const containerChildren: ElementVisual[] = [];\n\n if (image) {\n const imageElement = elementImage({\n ...props,\n isTypeFeatured: true,\n image,\n });\n containerChildren.push(imageElement);\n }\n\n if (action) {\n const actionElement = elementAction({\n isTypeFeatured: true,\n action,\n });\n containerChildren.push(actionElement);\n }\n\n return containerChildren;\n };\n\n const createImageContainerElement = () => {\n return ElementModel.createDiv({\n className: 'quote-featured-image',\n children: containerChildren,\n elementStyles: {\n element: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: `-${token.spacing.lg}`,\n\n ['&[align-center=true]']: {\n marginTop: '0',\n justifyContent: 'center',\n },\n\n [`@container (max-width: ${SMALL - 1}px)`]: {\n padding: `0 ${token.spacing.lg}`,\n },\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${\n MEDIUM - 1\n }px)`]: {\n margin: '0 auto',\n marginTop: `-${token.spacing['8xl']}`,\n maxWidth: '300px',\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n paddingLeft: token.spacing['6xl'],\n width: `calc(300px + ${token.spacing['6xl']})`,\n },\n },\n },\n });\n };\n\n const containerChildren = getContainerChildren();\n const container = createImageContainerElement();\n\n if (window.innerWidth >= MEDIUM && image instanceof HTMLImageElement) {\n image.addEventListener('load', () => {\n const parent = container;\n\n if (!parent) return;\n\n const aspectRatio = image.offsetHeight / parent.element.offsetHeight;\n\n if (aspectRatio < 0.5) {\n container.element.setAttribute('align-center', 'true');\n }\n });\n }\n\n return container;\n};\n\nconst createTextureContainer = ({\n isThemeDark,\n isThemeMaryland,\n}: QuoteFeaturedProps) => {\n const isDarkText = isThemeDark || isThemeMaryland;\n const backgroundTexture = imageFromSvg({\n SVG: isDarkText ? BACKGROUND_TEXTURE_DARK : BACKGROUND_TEXTURE_LIGHT,\n });\n\n const backgroundTextureElement = ElementModel.create({\n element: backgroundTexture,\n className: 'quote-background-texture',\n });\n const container = ElementModel.createDiv({\n className: 'quote-featured-texture',\n children: [backgroundTextureElement],\n elementStyles: {\n element: {\n overflow: 'hidden',\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n\n [`& > img`]: {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '70%',\n height: '120%',\n objectFit: 'cover',\n },\n\n [`@container (max-width: ${MEDIUM - 1}px)`]: {\n display: 'none',\n },\n },\n },\n });\n\n return container;\n};\n\nexport default (props: QuoteFeaturedProps) => {\n const { isThemeDark, isThemeMaryland, image, isTransparent } = props;\n const wrapperChildren: ElementVisual[] = [];\n\n const inlineQuote = InlineQuote({ ...props, isTypeFeatured: true });\n\n const textContainer = ElementModel.createDiv({\n className: 'quote-featured-text',\n children: [inlineQuote],\n elementStyles: {\n element: {\n padding: token.spacing.lg,\n position: 'relative',\n width: '100%',\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px)`]: {\n padding: `${token.spacing['2xl']}`,\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n padding: `${token.spacing['4xl']}`,\n },\n },\n },\n });\n\n if (!isTransparent) {\n wrapperChildren.push(createTextureContainer(props));\n }\n\n if (image) {\n wrapperChildren.push(createImageContainer(props));\n }\n\n wrapperChildren.push(textContainer);\n\n const wrapper = ElementModel.createDiv({\n className: 'quote-featured-container-wrapper',\n children: wrapperChildren,\n elementStyles: {\n element: {\n backgroundColor: token.color.gray.lightest,\n position: 'relative',\n ...(isThemeDark && { backgroundColor: token.color.black }),\n ...(isThemeMaryland && { backgroundColor: token.color.red }),\n ...(isTransparent && { backgroundColor: 'transparent' }),\n\n ...(image && {\n display: 'flex',\n flexDirection: 'column',\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n display: 'flex',\n flexDirection: 'row',\n },\n }),\n },\n },\n });\n\n const spacer = ElementModel.createDiv({\n className: 'quote-featured-container-spacer',\n children: [wrapper],\n elementStyles: {\n element: {\n paddingTop: token.spacing.lg,\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${MEDIUM - 1}px)`]:\n {\n ...(image && {\n paddingTop: token.spacing['8xl'],\n }),\n },\n },\n },\n });\n\n const container = ElementModel.createDiv({\n className: 'quote-featured-container',\n children: [spacer],\n elementStyles: {\n element: {\n containerType: 'inline-size',\n },\n },\n });\n\n const loadAnimation = () => {\n quoteAnimation({\n ...props,\n quoteElement: container,\n });\n };\n\n return {\n ...container,\n events: {\n loadAnimation,\n },\n };\n};\n"],"names":["image","action","containerChildren","elementImage","elementAction","ElementModel.createDiv","token","SMALL","MEDIUM","imageFromSvg","ElementModel.create","InlineQuote","quoteAnimation"],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ import { createDiv, create } from "../../model/elements/index.mjs";
|
|
|
4
4
|
import InlineQuote from "./inline.mjs";
|
|
5
5
|
import elementImage from "./elements/image.mjs";
|
|
6
6
|
import "@universityofmaryland/web-styles-library/typography";
|
|
7
|
+
import elementAction from "./elements/action.mjs";
|
|
7
8
|
import "@universityofmaryland/web-icons-library/brand";
|
|
8
9
|
import { MEDIUM, SMALL } from "./_constants.mjs";
|
|
9
|
-
import elementAction from "./elements/action.mjs";
|
|
10
10
|
import { quoteAnimation } from "./helper/animation.mjs";
|
|
11
11
|
const BACKGROUND_TEXTURE_LIGHT = `<svg id="quote_background_light" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 850.5 532.1"><path d="M.3,0h332.7L.3,326.6V0Z" fill="#757575" fill-rule="evenodd" isolation="isolate" opacity=".04" stroke-width="0"/><path d="M517.9,532.1h332.7L308.6,0H0v23.6l517.9,508.5Z" fill="#000" fill-rule="evenodd" isolation="isolate" opacity=".04" stroke-width="0"/></svg>`;
|
|
12
12
|
const BACKGROUND_TEXTURE_DARK = `<svg id="quote_background_dark" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 614.86 300.65"><defs><style>.cls-1{opacity:.25;}.cls-1,.cls-2{fill:#757575;fill-rule:evenodd;isolation:isolate;}.cls-2{opacity:.1;}</style></defs><path class="cls-2" d="m.27,0h332.67L27.46,299.93H.27V0Z"/><path class="cls-1" d="m0,0h308.65l306.21,300.65h-332.67L0,23.59V0Z"/></svg>`;
|
|
@@ -118,7 +118,7 @@ const createTextureContainer = ({
|
|
|
118
118
|
const featured = (props) => {
|
|
119
119
|
const { isThemeDark, isThemeMaryland, image, isTransparent } = props;
|
|
120
120
|
const wrapperChildren = [];
|
|
121
|
-
const inlineQuote = InlineQuote(props);
|
|
121
|
+
const inlineQuote = InlineQuote({ ...props, isTypeFeatured: true });
|
|
122
122
|
const textContainer = createDiv({
|
|
123
123
|
className: "quote-featured-text",
|
|
124
124
|
children: [inlineQuote],
|
|
@@ -189,11 +189,18 @@ const featured = (props) => {
|
|
|
189
189
|
}
|
|
190
190
|
}
|
|
191
191
|
});
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
192
|
+
const loadAnimation = () => {
|
|
193
|
+
quoteAnimation({
|
|
194
|
+
...props,
|
|
195
|
+
quoteElement: container
|
|
196
|
+
});
|
|
197
|
+
};
|
|
198
|
+
return {
|
|
199
|
+
...container,
|
|
200
|
+
events: {
|
|
201
|
+
loadAnimation
|
|
202
|
+
}
|
|
203
|
+
};
|
|
197
204
|
};
|
|
198
205
|
export {
|
|
199
206
|
featured as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"featured.mjs","sources":["../../../source/composite/quote/featured.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport { imageFromSvg } from '@universityofmaryland/web-utilities-library/media';\nimport { ElementModel } from 'model';\nimport InlineQuote from './inline';\nimport { image as elementImage, action as elementAction } from './elements';\nimport { quoteAnimation } from './helper/animation';\nimport { MEDIUM, SMALL } from './_constants';\nimport { type QuoteFeaturedProps } from './_types';\nimport { type ElementVisual } from '../../_types';\n\nconst BACKGROUND_TEXTURE_LIGHT = `<svg id=\"quote_background_light\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 850.5 532.1\"><path d=\"M.3,0h332.7L.3,326.6V0Z\" fill=\"#757575\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/><path d=\"M517.9,532.1h332.7L308.6,0H0v23.6l517.9,508.5Z\" fill=\"#000\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/></svg>`;\nconst BACKGROUND_TEXTURE_DARK = `<svg id=\"quote_background_dark\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 614.86 300.65\"><defs><style>.cls-1{opacity:.25;}.cls-1,.cls-2{fill:#757575;fill-rule:evenodd;isolation:isolate;}.cls-2{opacity:.1;}</style></defs><path class=\"cls-2\" d=\"m.27,0h332.67L27.46,299.93H.27V0Z\"/><path class=\"cls-1\" d=\"m0,0h308.65l306.21,300.65h-332.67L0,23.59V0Z\"/></svg>`;\n\nconst createImageContainer = (props: QuoteFeaturedProps) => {\n const { image, action } = props;\n\n const getContainerChildren = () => {\n const containerChildren: ElementVisual[] = [];\n\n if (image) {\n const imageElement = elementImage({\n ...props,\n isTypeFeatured: true,\n image,\n });\n containerChildren.push(imageElement);\n }\n\n if (action) {\n const actionElement = elementAction({\n isTypeFeatured: true,\n action,\n });\n containerChildren.push(actionElement);\n }\n\n return containerChildren;\n };\n\n const createImageContainerElement = () => {\n return ElementModel.createDiv({\n className: 'quote-featured-image',\n children: containerChildren,\n elementStyles: {\n element: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: `-${token.spacing.lg}`,\n\n ['&[align-center=true]']: {\n marginTop: '0',\n justifyContent: 'center',\n },\n\n [`@container (max-width: ${SMALL - 1}px)`]: {\n padding: `0 ${token.spacing.lg}`,\n },\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${\n MEDIUM - 1\n }px)`]: {\n margin: '0 auto',\n marginTop: `-${token.spacing['8xl']}`,\n maxWidth: '300px',\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n paddingLeft: token.spacing['6xl'],\n width: `calc(300px + ${token.spacing['6xl']})`,\n },\n },\n },\n });\n };\n\n const containerChildren = getContainerChildren();\n const container = createImageContainerElement();\n\n if (window.innerWidth >= MEDIUM && image instanceof HTMLImageElement) {\n image.addEventListener('load', () => {\n const parent = container;\n\n if (!parent) return;\n\n const aspectRatio = image.offsetHeight / parent.element.offsetHeight;\n\n if (aspectRatio < 0.5) {\n container.element.setAttribute('align-center', 'true');\n }\n });\n }\n\n return container;\n};\n\nconst createTextureContainer = ({\n isThemeDark,\n isThemeMaryland,\n}: QuoteFeaturedProps) => {\n const isDarkText = isThemeDark || isThemeMaryland;\n const backgroundTexture = imageFromSvg({\n SVG: isDarkText ? BACKGROUND_TEXTURE_DARK : BACKGROUND_TEXTURE_LIGHT,\n });\n\n const backgroundTextureElement = ElementModel.create({\n element: backgroundTexture,\n className: 'quote-background-texture',\n });\n const container = ElementModel.createDiv({\n className: 'quote-featured-texture',\n children: [backgroundTextureElement],\n elementStyles: {\n element: {\n overflow: 'hidden',\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n\n [`& > img`]: {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '70%',\n height: '120%',\n objectFit: 'cover',\n },\n\n [`@container (max-width: ${MEDIUM - 1}px)`]: {\n display: 'none',\n },\n },\n },\n });\n\n return container;\n};\n\nexport default (props: QuoteFeaturedProps) => {\n const { isThemeDark, isThemeMaryland, image, isTransparent } = props;\n const wrapperChildren: ElementVisual[] = [];\n\n const inlineQuote = InlineQuote(props);\n\n const textContainer = ElementModel.createDiv({\n className: 'quote-featured-text',\n children: [inlineQuote],\n elementStyles: {\n element: {\n padding: token.spacing.lg,\n position: 'relative',\n width: '100%',\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px)`]: {\n padding: `${token.spacing['2xl']}`,\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n padding: `${token.spacing['4xl']}`,\n },\n },\n },\n });\n\n if (!isTransparent) {\n wrapperChildren.push(createTextureContainer(props));\n }\n\n if (image) {\n wrapperChildren.push(createImageContainer(props));\n }\n\n wrapperChildren.push(textContainer);\n\n const wrapper = ElementModel.createDiv({\n className: 'quote-featured-container-wrapper',\n children: wrapperChildren,\n elementStyles: {\n element: {\n backgroundColor: token.color.gray.lightest,\n position: 'relative',\n ...(isThemeDark && { backgroundColor: token.color.black }),\n ...(isThemeMaryland && { backgroundColor: token.color.red }),\n ...(isTransparent && { backgroundColor: 'transparent' }),\n\n ...(image && {\n display: 'flex',\n flexDirection: 'column',\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n display: 'flex',\n flexDirection: 'row',\n },\n }),\n },\n },\n });\n\n const spacer = ElementModel.createDiv({\n className: 'quote-featured-container-spacer',\n children: [wrapper],\n elementStyles: {\n element: {\n paddingTop: token.spacing.lg,\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${MEDIUM - 1}px)`]:\n {\n ...(image && {\n paddingTop: token.spacing['8xl'],\n }),\n },\n },\n },\n });\n\n const container = ElementModel.createDiv({\n className: 'quote-featured-container',\n children: [spacer],\n elementStyles: {\n element: {\n containerType: 'inline-size',\n },\n },\n });\n\n quoteAnimation({\n ...props,\n quoteElement: container,\n });\n\n return container;\n};\n"],"names":["containerChildren","ElementModel.createDiv","ElementModel.create"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"featured.mjs","sources":["../../../source/composite/quote/featured.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport { imageFromSvg } from '@universityofmaryland/web-utilities-library/media';\nimport { ElementModel } from 'model';\nimport InlineQuote from './inline';\nimport { image as elementImage, action as elementAction } from './elements';\nimport { quoteAnimation } from './helper/animation';\nimport { MEDIUM, SMALL } from './_constants';\nimport { type QuoteFeaturedProps } from './_types';\nimport { type ElementVisual } from '../../_types';\n\nconst BACKGROUND_TEXTURE_LIGHT = `<svg id=\"quote_background_light\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 850.5 532.1\"><path d=\"M.3,0h332.7L.3,326.6V0Z\" fill=\"#757575\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/><path d=\"M517.9,532.1h332.7L308.6,0H0v23.6l517.9,508.5Z\" fill=\"#000\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/></svg>`;\nconst BACKGROUND_TEXTURE_DARK = `<svg id=\"quote_background_dark\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 614.86 300.65\"><defs><style>.cls-1{opacity:.25;}.cls-1,.cls-2{fill:#757575;fill-rule:evenodd;isolation:isolate;}.cls-2{opacity:.1;}</style></defs><path class=\"cls-2\" d=\"m.27,0h332.67L27.46,299.93H.27V0Z\"/><path class=\"cls-1\" d=\"m0,0h308.65l306.21,300.65h-332.67L0,23.59V0Z\"/></svg>`;\n\nconst createImageContainer = (props: QuoteFeaturedProps) => {\n const { image, action } = props;\n\n const getContainerChildren = () => {\n const containerChildren: ElementVisual[] = [];\n\n if (image) {\n const imageElement = elementImage({\n ...props,\n isTypeFeatured: true,\n image,\n });\n containerChildren.push(imageElement);\n }\n\n if (action) {\n const actionElement = elementAction({\n isTypeFeatured: true,\n action,\n });\n containerChildren.push(actionElement);\n }\n\n return containerChildren;\n };\n\n const createImageContainerElement = () => {\n return ElementModel.createDiv({\n className: 'quote-featured-image',\n children: containerChildren,\n elementStyles: {\n element: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: `-${token.spacing.lg}`,\n\n ['&[align-center=true]']: {\n marginTop: '0',\n justifyContent: 'center',\n },\n\n [`@container (max-width: ${SMALL - 1}px)`]: {\n padding: `0 ${token.spacing.lg}`,\n },\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${\n MEDIUM - 1\n }px)`]: {\n margin: '0 auto',\n marginTop: `-${token.spacing['8xl']}`,\n maxWidth: '300px',\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n paddingLeft: token.spacing['6xl'],\n width: `calc(300px + ${token.spacing['6xl']})`,\n },\n },\n },\n });\n };\n\n const containerChildren = getContainerChildren();\n const container = createImageContainerElement();\n\n if (window.innerWidth >= MEDIUM && image instanceof HTMLImageElement) {\n image.addEventListener('load', () => {\n const parent = container;\n\n if (!parent) return;\n\n const aspectRatio = image.offsetHeight / parent.element.offsetHeight;\n\n if (aspectRatio < 0.5) {\n container.element.setAttribute('align-center', 'true');\n }\n });\n }\n\n return container;\n};\n\nconst createTextureContainer = ({\n isThemeDark,\n isThemeMaryland,\n}: QuoteFeaturedProps) => {\n const isDarkText = isThemeDark || isThemeMaryland;\n const backgroundTexture = imageFromSvg({\n SVG: isDarkText ? BACKGROUND_TEXTURE_DARK : BACKGROUND_TEXTURE_LIGHT,\n });\n\n const backgroundTextureElement = ElementModel.create({\n element: backgroundTexture,\n className: 'quote-background-texture',\n });\n const container = ElementModel.createDiv({\n className: 'quote-featured-texture',\n children: [backgroundTextureElement],\n elementStyles: {\n element: {\n overflow: 'hidden',\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n\n [`& > img`]: {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '70%',\n height: '120%',\n objectFit: 'cover',\n },\n\n [`@container (max-width: ${MEDIUM - 1}px)`]: {\n display: 'none',\n },\n },\n },\n });\n\n return container;\n};\n\nexport default (props: QuoteFeaturedProps) => {\n const { isThemeDark, isThemeMaryland, image, isTransparent } = props;\n const wrapperChildren: ElementVisual[] = [];\n\n const inlineQuote = InlineQuote({ ...props, isTypeFeatured: true });\n\n const textContainer = ElementModel.createDiv({\n className: 'quote-featured-text',\n children: [inlineQuote],\n elementStyles: {\n element: {\n padding: token.spacing.lg,\n position: 'relative',\n width: '100%',\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px)`]: {\n padding: `${token.spacing['2xl']}`,\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n padding: `${token.spacing['4xl']}`,\n },\n },\n },\n });\n\n if (!isTransparent) {\n wrapperChildren.push(createTextureContainer(props));\n }\n\n if (image) {\n wrapperChildren.push(createImageContainer(props));\n }\n\n wrapperChildren.push(textContainer);\n\n const wrapper = ElementModel.createDiv({\n className: 'quote-featured-container-wrapper',\n children: wrapperChildren,\n elementStyles: {\n element: {\n backgroundColor: token.color.gray.lightest,\n position: 'relative',\n ...(isThemeDark && { backgroundColor: token.color.black }),\n ...(isThemeMaryland && { backgroundColor: token.color.red }),\n ...(isTransparent && { backgroundColor: 'transparent' }),\n\n ...(image && {\n display: 'flex',\n flexDirection: 'column',\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n display: 'flex',\n flexDirection: 'row',\n },\n }),\n },\n },\n });\n\n const spacer = ElementModel.createDiv({\n className: 'quote-featured-container-spacer',\n children: [wrapper],\n elementStyles: {\n element: {\n paddingTop: token.spacing.lg,\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${MEDIUM - 1}px)`]:\n {\n ...(image && {\n paddingTop: token.spacing['8xl'],\n }),\n },\n },\n },\n });\n\n const container = ElementModel.createDiv({\n className: 'quote-featured-container',\n children: [spacer],\n elementStyles: {\n element: {\n containerType: 'inline-size',\n },\n },\n });\n\n const loadAnimation = () => {\n quoteAnimation({\n ...props,\n quoteElement: container,\n });\n };\n\n return {\n ...container,\n events: {\n loadAnimation,\n },\n };\n};\n"],"names":["containerChildren","ElementModel.createDiv","ElementModel.create"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../../../source/composite/quote/helper/animation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,UAAU,mBACR,SAAQ,iBAAiB,EACvB,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,mBAAmB,GAAG,OAAO,CAAC;IAC/D,YAAY,EAAE,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,cAAc,GAAI,oEAM5B,mBAAmB,
|
|
1
|
+
{"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../../../source/composite/quote/helper/animation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,UAAU,mBACR,SAAQ,iBAAiB,EACvB,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,mBAAmB,GAAG,OAAO,CAAC;IAC/D,YAAY,EAAE,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,cAAc,GAAI,oEAM5B,mBAAmB,SAgHrB,CAAC"}
|