@universityofmaryland/web-elements-library 1.6.17 → 1.7.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/atomic/animations/brand/card-stack.js +2 -3
- package/dist/atomic/animations/brand/card-stack.js.map +1 -1
- package/dist/atomic/animations/brand/chevron-flow.d.ts +1 -7
- package/dist/atomic/animations/brand/chevron-flow.d.ts.map +1 -1
- package/dist/atomic/animations/brand/chevron-flow.js +82 -159
- package/dist/atomic/animations/brand/chevron-flow.js.map +1 -1
- package/dist/atomic/animations/brand/chevron-scroll.d.ts +1 -4
- package/dist/atomic/animations/brand/chevron-scroll.d.ts.map +1 -1
- package/dist/atomic/animations/brand/chevron-scroll.js +89 -143
- package/dist/atomic/animations/brand/chevron-scroll.js.map +1 -1
- package/dist/atomic/assets/image/caption.d.ts +9 -0
- package/dist/atomic/assets/image/caption.d.ts.map +1 -0
- package/dist/atomic/assets/image/caption.js +166 -0
- package/dist/atomic/assets/image/caption.js.map +1 -0
- package/dist/atomic/assets/image/gif.d.ts.map +1 -1
- package/dist/atomic/assets/image/gif.js +6 -1
- package/dist/atomic/assets/image/gif.js.map +1 -1
- package/dist/atomic/assets/image/index.d.ts +1 -0
- package/dist/atomic/assets/image/index.d.ts.map +1 -1
- package/dist/atomic/assets/image/index.js +2 -0
- package/dist/atomic/assets/image/index.js.map +1 -1
- package/dist/atomic/assets/video/toggle.d.ts.map +1 -1
- package/dist/atomic/assets/video/toggle.js +9 -2
- package/dist/atomic/assets/video/toggle.js.map +1 -1
- package/dist/atomic/buttons/fullscreen.d.ts +1 -0
- package/dist/atomic/buttons/fullscreen.d.ts.map +1 -1
- package/dist/atomic/buttons/fullscreen.js +35 -3
- package/dist/atomic/buttons/fullscreen.js.map +1 -1
- package/dist/atomic/layout/overlay/modal.d.ts +1 -10
- package/dist/atomic/layout/overlay/modal.d.ts.map +1 -1
- package/dist/atomic/layout/overlay/modal.js +28 -44
- package/dist/atomic/layout/overlay/modal.js.map +1 -1
- package/dist/atomic/layout/person/columns.js +2 -3
- package/dist/atomic/layout/person/columns.js.map +1 -1
- package/dist/atomic/text-lockup/date.d.ts +1 -4
- package/dist/atomic/text-lockup/date.d.ts.map +1 -1
- package/dist/atomic/text-lockup/date.js +42 -75
- package/dist/atomic/text-lockup/date.js.map +1 -1
- package/dist/composite/accordion/item.d.ts +3 -16
- package/dist/composite/accordion/item.d.ts.map +1 -1
- package/dist/composite/accordion/item.js +152 -245
- package/dist/composite/accordion/item.js.map +1 -1
- package/dist/composite/card/block.js +2 -3
- package/dist/composite/card/block.js.map +1 -1
- package/dist/composite/card/event-time.js +2 -3
- package/dist/composite/card/event-time.js.map +1 -1
- package/dist/composite/card/list.js +2 -3
- package/dist/composite/card/list.js.map +1 -1
- package/dist/composite/card/overlay/color.js +3 -3
- package/dist/composite/card/overlay/icon.js +3 -3
- package/dist/composite/card/overlay/image.d.ts.map +1 -1
- package/dist/composite/card/overlay/image.js +9 -12
- package/dist/composite/card/overlay/image.js.map +1 -1
- package/dist/composite/card/video/block.js +4 -3
- package/dist/composite/card/video/block.js.map +1 -1
- package/dist/composite/carousel/cards/index.d.ts +1 -8
- package/dist/composite/carousel/cards/index.d.ts.map +1 -1
- package/dist/composite/carousel/cards/index.js +163 -282
- package/dist/composite/carousel/cards/index.js.map +1 -1
- package/dist/composite/carousel/default/index.d.ts +9 -15
- package/dist/composite/carousel/default/index.d.ts.map +1 -1
- package/dist/composite/carousel/default/index.js +78 -129
- package/dist/composite/carousel/default/index.js.map +1 -1
- package/dist/composite/carousel/elements/equal-width-items.d.ts +37 -0
- package/dist/composite/carousel/elements/equal-width-items.d.ts.map +1 -0
- package/dist/composite/carousel/elements/{blocks.js → equal-width-items.js} +157 -227
- package/dist/composite/carousel/elements/equal-width-items.js.map +1 -0
- package/dist/composite/carousel/elements/full-screen.d.ts +3 -2
- package/dist/composite/carousel/elements/full-screen.d.ts.map +1 -1
- package/dist/composite/carousel/elements/full-screen.js +34 -41
- package/dist/composite/carousel/elements/full-screen.js.map +1 -1
- package/dist/composite/carousel/elements/image.d.ts +15 -2
- package/dist/composite/carousel/elements/image.d.ts.map +1 -1
- package/dist/composite/carousel/elements/image.js +176 -151
- package/dist/composite/carousel/elements/image.js.map +1 -1
- package/dist/composite/carousel/elements/index.d.ts +4 -1
- package/dist/composite/carousel/elements/index.d.ts.map +1 -1
- package/dist/composite/carousel/elements/indicator-wrapper.d.ts +13 -0
- package/dist/composite/carousel/elements/indicator-wrapper.d.ts.map +1 -0
- package/dist/composite/carousel/elements/indicator-wrapper.js +67 -0
- package/dist/composite/carousel/elements/indicator-wrapper.js.map +1 -0
- package/dist/composite/carousel/elements/nav-button.d.ts +82 -0
- package/dist/composite/carousel/elements/nav-button.d.ts.map +1 -0
- package/dist/composite/carousel/elements/nav-button.js +164 -0
- package/dist/composite/carousel/elements/nav-button.js.map +1 -0
- package/dist/composite/carousel/elements/overlay.d.ts +3 -2
- package/dist/composite/carousel/elements/overlay.d.ts.map +1 -1
- package/dist/composite/carousel/elements/overlay.js +85 -55
- package/dist/composite/carousel/elements/overlay.js.map +1 -1
- package/dist/composite/carousel/image/multiple.d.ts +2 -7
- package/dist/composite/carousel/image/multiple.d.ts.map +1 -1
- package/dist/composite/carousel/image/multiple.js +85 -150
- package/dist/composite/carousel/image/multiple.js.map +1 -1
- package/dist/composite/carousel/image/standard.d.ts +2 -7
- package/dist/composite/carousel/image/standard.d.ts.map +1 -1
- package/dist/composite/carousel/image/standard.js +148 -262
- package/dist/composite/carousel/image/standard.js.map +1 -1
- package/dist/composite/carousel/thumbnail/index.d.ts +1 -8
- package/dist/composite/carousel/thumbnail/index.d.ts.map +1 -1
- package/dist/composite/carousel/thumbnail/index.js +72 -113
- package/dist/composite/carousel/thumbnail/index.js.map +1 -1
- package/dist/composite/carousel/wide/container.d.ts +21 -20
- package/dist/composite/carousel/wide/container.d.ts.map +1 -1
- package/dist/composite/carousel/wide/container.js +37 -12
- package/dist/composite/carousel/wide/container.js.map +1 -1
- package/dist/composite/carousel/wide/controls.d.ts +5 -10
- package/dist/composite/carousel/wide/controls.d.ts.map +1 -1
- package/dist/composite/carousel/wide/controls.js +24 -94
- package/dist/composite/carousel/wide/controls.js.map +1 -1
- package/dist/composite/carousel/wide/frames.d.ts +18 -10
- package/dist/composite/carousel/wide/frames.d.ts.map +1 -1
- package/dist/composite/carousel/wide/frames.js +60 -78
- package/dist/composite/carousel/wide/frames.js.map +1 -1
- package/dist/composite/carousel/wide/index.d.ts.map +1 -1
- package/dist/composite/carousel/wide/index.js +11 -19
- package/dist/composite/carousel/wide/index.js.map +1 -1
- package/dist/composite/hero/custom/expand.js +3 -4
- package/dist/composite/hero/custom/expand.js.map +1 -1
- package/dist/composite/hero/custom/grid.js +2 -3
- package/dist/composite/hero/custom/grid.js.map +1 -1
- package/dist/composite/hero/custom/video-arrow.js +4 -3
- package/dist/composite/hero/custom/video-arrow.js.map +1 -1
- package/dist/composite/hero/logo.js +3 -3
- package/dist/composite/hero/minimal.js +3 -3
- package/dist/composite/hero/overlay.js +5 -4
- package/dist/composite/hero/overlay.js.map +1 -1
- package/dist/composite/hero/stacked.js +3 -3
- package/dist/composite/hero/standard.js +4 -3
- package/dist/composite/hero/standard.js.map +1 -1
- package/dist/composite/layout/box/logo.d.ts +1 -4
- package/dist/composite/layout/box/logo.d.ts.map +1 -1
- package/dist/composite/layout/box/logo.js +55 -103
- package/dist/composite/layout/box/logo.js.map +1 -1
- package/dist/composite/layout/image/expand.d.ts +1 -4
- package/dist/composite/layout/image/expand.d.ts.map +1 -1
- package/dist/composite/layout/image/expand.js +136 -243
- package/dist/composite/layout/image/expand.js.map +1 -1
- package/dist/composite/layout/scroll-top/index.d.ts +1 -7
- package/dist/composite/layout/scroll-top/index.d.ts.map +1 -1
- package/dist/composite/layout/scroll-top/index.js +65 -77
- package/dist/composite/layout/scroll-top/index.js.map +1 -1
- package/dist/composite/layout/sticky-columns/index.d.ts +2 -2
- package/dist/composite/layout/sticky-columns/index.d.ts.map +1 -1
- package/dist/composite/layout/sticky-columns/index.js +42 -70
- package/dist/composite/layout/sticky-columns/index.js.map +1 -1
- package/dist/composite/media/elements/gif.js +3 -3
- package/dist/composite/media/inline/caption.d.ts +4 -2
- package/dist/composite/media/inline/caption.d.ts.map +1 -1
- package/dist/composite/media/inline/caption.js +56 -67
- package/dist/composite/media/inline/caption.js.map +1 -1
- package/dist/composite/media/inline/index.d.ts +9 -8
- package/dist/composite/media/inline/index.d.ts.map +1 -1
- package/dist/composite/media/inline/standard.d.ts +1 -4
- package/dist/composite/media/inline/standard.d.ts.map +1 -1
- package/dist/composite/media/inline/standard.js +16 -24
- package/dist/composite/media/inline/standard.js.map +1 -1
- package/dist/composite/media/inline/wrapped.d.ts +4 -2
- package/dist/composite/media/inline/wrapped.d.ts.map +1 -1
- package/dist/composite/media/inline/wrapped.js +80 -83
- package/dist/composite/media/inline/wrapped.js.map +1 -1
- package/dist/composite/navigation/utility/alert.js +3 -4
- package/dist/composite/navigation/utility/alert.js.map +1 -1
- package/dist/composite/pathway/_common.js +4 -3
- package/dist/composite/pathway/_common.js.map +1 -1
- package/dist/composite/pathway/hero.js +3 -3
- package/dist/composite/person/bio/full.js +3 -3
- package/dist/composite/person/bio/small.js +2 -3
- package/dist/composite/person/bio/small.js.map +1 -1
- package/dist/composite/person/block.js +2 -3
- package/dist/composite/person/block.js.map +1 -1
- package/dist/composite/person/hero.js +3 -3
- package/dist/composite/person/list.js +2 -3
- package/dist/composite/person/list.js.map +1 -1
- package/dist/composite/person/tabular.js +2 -3
- package/dist/composite/person/tabular.js.map +1 -1
- package/dist/composite/slider/events.d.ts +6 -12
- package/dist/composite/slider/events.d.ts.map +1 -1
- package/dist/composite/slider/events.js +304 -428
- package/dist/composite/slider/events.js.map +1 -1
- package/dist/layout/image.d.ts +5 -10
- package/dist/layout/image.d.ts.map +1 -1
- package/dist/layout/image.js +27 -88
- package/dist/layout/image.js.map +1 -1
- package/dist/layout/index.d.ts +1 -1
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout.js +2 -2
- package/package.json +6 -6
- package/dist/composite/carousel/elements/blocks.d.ts +0 -42
- package/dist/composite/carousel/elements/blocks.d.ts.map +0 -1
- package/dist/composite/carousel/elements/blocks.js.map +0 -1
- package/dist/composite/carousel/wide/_elementModel.d.ts +0 -18
- package/dist/composite/carousel/wide/_elementModel.d.ts.map +0 -1
- package/dist/composite/carousel/wide/_elementModel.js +0 -29
- package/dist/composite/carousel/wide/_elementModel.js.map +0 -1
|
@@ -1,103 +1,92 @@
|
|
|
1
1
|
import * as token from "@universityofmaryland/web-token-library";
|
|
2
|
+
import { ElementBuilder } from "@universityofmaryland/web-builder-library";
|
|
2
3
|
import { debounce } from "@universityofmaryland/web-utilities-library/performance";
|
|
3
4
|
import { createCompositeMediaCaption } from "../elements/caption.js";
|
|
4
|
-
import { layoutImage } from "../../../layout/image.js";
|
|
5
|
-
import "@universityofmaryland/web-builder-library";
|
|
6
5
|
import "@universityofmaryland/web-styles-library";
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
const ObjectContainer = `
|
|
10
|
-
.${ELEMENT_OBJECT_CAPTION_CONTAINER} {
|
|
11
|
-
display: flex;
|
|
12
|
-
flex-direction: column;
|
|
13
|
-
padding-bottom: ${token.spacing.sm};
|
|
14
|
-
max-width: 100%;
|
|
15
|
-
}
|
|
16
|
-
`;
|
|
17
|
-
const STYLES_MEDIA_INLINE_ELEMENT = `
|
|
18
|
-
.${ELEMENT_MEDIA_INLINE_CONTAINER} {
|
|
19
|
-
display: inline-block;
|
|
20
|
-
max-width: 100%;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
${layoutImage.Styles}
|
|
24
|
-
${createCompositeMediaCaption.Styles}
|
|
25
|
-
${ObjectContainer}
|
|
26
|
-
`;
|
|
27
|
-
const CreateMediaWithCaption = (props) => (() => {
|
|
6
|
+
import { createLayoutImageContainer } from "../../../layout/image.js";
|
|
7
|
+
const CreateMediaWithCaption = (props) => {
|
|
28
8
|
const { caption, image, isThemeDark } = props;
|
|
29
9
|
const hasCaption = caption && caption !== null;
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
`.${layoutImage.Elements.container}`
|
|
35
|
-
);
|
|
36
|
-
const caption2 = elementContainer.querySelector(
|
|
37
|
-
`.${createCompositeMediaCaption.Elements.container}`
|
|
38
|
-
);
|
|
39
|
-
if (caption2) {
|
|
40
|
-
caption2.style.width = `${imageContainer.offsetWidth}px`;
|
|
41
|
-
caption2.style.display = `block`;
|
|
10
|
+
const createImage = () => {
|
|
11
|
+
if (!image) {
|
|
12
|
+
console.warn("CreateMediaWithCaption: No image provided");
|
|
13
|
+
return null;
|
|
42
14
|
}
|
|
15
|
+
return createLayoutImageContainer({ image, showCaption: true });
|
|
43
16
|
};
|
|
44
|
-
const
|
|
45
|
-
|
|
17
|
+
const createCaption = () => {
|
|
18
|
+
if (!hasCaption) {
|
|
19
|
+
console.warn("CreateMediaWithCaption: No caption provided");
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const captionContainer = createCompositeMediaCaption.CreateElement({ caption, isThemeDark });
|
|
23
|
+
captionContainer.style.display = "none";
|
|
24
|
+
return captionContainer;
|
|
46
25
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
26
|
+
const imageElement = createImage();
|
|
27
|
+
const captionElement = createCaption();
|
|
28
|
+
const children = [imageElement, captionElement].filter((child) => child != null);
|
|
29
|
+
const objectModel = new ElementBuilder().withClassName("element-media-caption-container").withStyles({
|
|
30
|
+
element: {
|
|
31
|
+
display: "flex",
|
|
32
|
+
flexDirection: "column",
|
|
33
|
+
paddingBottom: token.spacing.sm,
|
|
34
|
+
maxWidth: "100%"
|
|
35
|
+
}
|
|
36
|
+
}).withChildren(...children).build();
|
|
37
|
+
const containerBuilder = new ElementBuilder().withClassName("element-media-with-caption-container").withStyles({
|
|
38
|
+
element: {
|
|
39
|
+
display: "inline-block",
|
|
40
|
+
maxWidth: "100%"
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
if (image || hasCaption) {
|
|
44
|
+
containerBuilder.withChild(objectModel);
|
|
54
45
|
}
|
|
46
|
+
const containerModel = containerBuilder.build();
|
|
47
|
+
const objectContainer = objectModel.element;
|
|
48
|
+
const sizeCaption = () => {
|
|
49
|
+
if (!imageElement || !captionElement) return;
|
|
50
|
+
captionElement.style.width = `${imageElement.element.offsetWidth}px`;
|
|
51
|
+
captionElement.style.display = `block`;
|
|
52
|
+
};
|
|
55
53
|
const load = () => {
|
|
56
54
|
const checkSizing = () => {
|
|
57
|
-
const
|
|
55
|
+
const captionElement2 = objectContainer.querySelector(
|
|
58
56
|
`.${createCompositeMediaCaption.Elements.container}`
|
|
59
57
|
);
|
|
60
|
-
if (
|
|
61
|
-
|
|
58
|
+
if (captionElement2) {
|
|
59
|
+
captionElement2.style.opacity = `1`;
|
|
62
60
|
}
|
|
63
61
|
};
|
|
64
|
-
|
|
62
|
+
if (!image) {
|
|
63
|
+
console.warn("CreateMediaWithCaption: No image provided");
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
image.addEventListener("load", () => {
|
|
65
67
|
checkSizing();
|
|
66
68
|
setTimeout(() => {
|
|
67
69
|
checkSizing();
|
|
68
70
|
}, 500);
|
|
69
71
|
});
|
|
70
72
|
};
|
|
71
|
-
if (hasCaption) {
|
|
72
|
-
const captionElement = createCompositeMediaCaption.CreateElement({
|
|
73
|
-
caption,
|
|
74
|
-
isThemeDark
|
|
75
|
-
});
|
|
76
|
-
captionElement.style.display = `none`;
|
|
77
|
-
objectContainer.appendChild(captionElement);
|
|
78
|
-
}
|
|
79
|
-
if (objectContainer.children.length > 0) {
|
|
80
|
-
elementContainer.appendChild(objectContainer);
|
|
81
|
-
}
|
|
82
|
-
objectContainer.classList.add(ELEMENT_OBJECT_CAPTION_CONTAINER);
|
|
83
|
-
elementContainer.classList.add(ELEMENT_MEDIA_INLINE_CONTAINER);
|
|
84
73
|
window.addEventListener(
|
|
85
74
|
"resize",
|
|
86
75
|
debounce(() => {
|
|
87
|
-
|
|
76
|
+
sizeCaption();
|
|
88
77
|
}, 20)
|
|
89
78
|
);
|
|
90
79
|
setTimeout(() => {
|
|
91
|
-
|
|
80
|
+
sizeCaption();
|
|
92
81
|
}, 100);
|
|
82
|
+
containerModel.styles += createCompositeMediaCaption.Styles;
|
|
93
83
|
return {
|
|
94
|
-
|
|
84
|
+
...containerModel,
|
|
95
85
|
events: {
|
|
96
86
|
load
|
|
97
|
-
}
|
|
98
|
-
styles: STYLES_MEDIA_INLINE_ELEMENT
|
|
87
|
+
}
|
|
99
88
|
};
|
|
100
|
-
}
|
|
89
|
+
};
|
|
101
90
|
const createCompositeMediaInlineCaption = CreateMediaWithCaption;
|
|
102
91
|
export {
|
|
103
92
|
createCompositeMediaInlineCaption
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caption.js","sources":["../../../../source/composite/media/inline/caption.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport { debounce } from '@universityofmaryland/web-utilities-library/performance';\nimport { createCompositeMediaCaption as CaptionContainer } from '../elements/caption';\nimport {
|
|
1
|
+
{"version":3,"file":"caption.js","sources":["../../../../source/composite/media/inline/caption.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport { debounce } from '@universityofmaryland/web-utilities-library/performance';\nimport { createCompositeMediaCaption as CaptionContainer } from '../elements/caption';\nimport { createLayoutImageContainer } from 'layout';\n\nexport type TypeMediaInlineRequirements = {\n image?: HTMLImageElement | null;\n caption?: HTMLElement | null;\n isThemeDark?: boolean;\n};\n\nconst CreateMediaWithCaption = (props: TypeMediaInlineRequirements) =>\n {\n const { caption, image, isThemeDark } = props;\n const hasCaption = caption && caption !== null;\n\n const createImage = () => {\n if (!image) {\n console.warn('CreateMediaWithCaption: No image provided');\n return null;\n }\n return createLayoutImageContainer({ image, showCaption: true });\n };\n\n const createCaption = () => {\n if (!hasCaption) {\n console.warn('CreateMediaWithCaption: No caption provided');\n return null;\n }\n const captionContainer = CaptionContainer.CreateElement({ caption, isThemeDark });\n captionContainer.style.display = 'none';\n return captionContainer;\n };\n\n const imageElement = createImage();\n const captionElement = createCaption();\n const children = [imageElement, captionElement].filter((child) => child != null);\n\n const objectModel = new ElementBuilder()\n .withClassName('element-media-caption-container')\n .withStyles({\n element: {\n display: 'flex',\n flexDirection: 'column',\n paddingBottom: token.spacing.sm,\n maxWidth: '100%',\n },\n })\n .withChildren(...children)\n .build();\n\n const containerBuilder = new ElementBuilder()\n .withClassName('element-media-with-caption-container')\n .withStyles({\n element: {\n display: 'inline-block',\n maxWidth: '100%',\n },\n });\n\n if (image || hasCaption) {\n containerBuilder.withChild(objectModel);\n }\n\n const containerModel = containerBuilder.build();\n const objectContainer = objectModel.element;\n\n const sizeCaption = () => {\n if (!imageElement || !captionElement) return;\n captionElement.style.width = `${imageElement.element.offsetWidth}px`;\n captionElement.style.display = `block`;\n };\n\n const load = () => {\n const checkSizing = () => {\n const captionElement = objectContainer.querySelector(\n `.${CaptionContainer.Elements.container}`,\n ) as HTMLElement;\n\n if (captionElement) {\n captionElement.style.opacity = `1`;\n }\n };\n\n if (!image) {\n console.warn('CreateMediaWithCaption: No image provided');\n return null;\n }\n\n image.addEventListener('load', () => {\n checkSizing();\n\n setTimeout(() => {\n checkSizing();\n }, 500);\n });\n };\n\n window.addEventListener(\n 'resize',\n debounce(() => {\n sizeCaption();\n }, 20),\n );\n\n setTimeout(() => {\n sizeCaption();\n }, 100);\n\n containerModel.styles += CaptionContainer.Styles;\n\n return {\n ...containerModel,\n events: {\n load,\n },\n };\n };\n\nexport const createCompositeMediaInlineCaption = CreateMediaWithCaption;\n"],"names":["CaptionContainer","captionElement"],"mappings":";;;;;;AAYA,MAAM,yBAAyB,CAAC,UAC9B;AACE,QAAM,EAAE,SAAS,OAAO,YAAA,IAAgB;AACxC,QAAM,aAAa,WAAW,YAAY;AAE1C,QAAM,cAAc,MAAM;AACxB,QAAI,CAAC,OAAO;AACV,cAAQ,KAAK,2CAA2C;AACxD,aAAO;AAAA,IACT;AACA,WAAO,2BAA2B,EAAE,OAAO,aAAa,MAAM;AAAA,EAChE;AAEA,QAAM,gBAAgB,MAAM;AAC1B,QAAI,CAAC,YAAY;AACf,cAAQ,KAAK,6CAA6C;AAC1D,aAAO;AAAA,IACT;AACA,UAAM,mBAAmBA,4BAAiB,cAAc,EAAE,SAAS,aAAa;AAChF,qBAAiB,MAAM,UAAU;AACjC,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,YAAA;AACrB,QAAM,iBAAiB,cAAA;AACvB,QAAM,WAAW,CAAC,cAAc,cAAc,EAAE,OAAO,CAAC,UAAU,SAAS,IAAI;AAE/E,QAAM,cAAc,IAAI,eAAA,EACrB,cAAc,iCAAiC,EAC/C,WAAW;AAAA,IACV,SAAS;AAAA,MACP,SAAS;AAAA,MACT,eAAe;AAAA,MACf,eAAe,MAAM,QAAQ;AAAA,MAC7B,UAAU;AAAA,IAAA;AAAA,EACZ,CACD,EACA,aAAa,GAAG,QAAQ,EACxB,MAAA;AAEH,QAAM,mBAAmB,IAAI,eAAA,EAC1B,cAAc,sCAAsC,EACpD,WAAW;AAAA,IACV,SAAS;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,IAAA;AAAA,EACZ,CACD;AAEH,MAAI,SAAS,YAAY;AACvB,qBAAiB,UAAU,WAAW;AAAA,EACxC;AAEA,QAAM,iBAAiB,iBAAiB,MAAA;AACxC,QAAM,kBAAkB,YAAY;AAEpC,QAAM,cAAc,MAAM;AACxB,QAAI,CAAC,gBAAgB,CAAC,eAAgB;AACtC,mBAAe,MAAM,QAAQ,GAAG,aAAa,QAAQ,WAAW;AAChE,mBAAe,MAAM,UAAU;AAAA,EACjC;AAEA,QAAM,OAAO,MAAM;AACjB,UAAM,cAAc,MAAM;AACxB,YAAMC,kBAAiB,gBAAgB;AAAA,QACrC,IAAID,4BAAiB,SAAS,SAAS;AAAA,MAAA;AAGzC,UAAIC,iBAAgB;AAClBA,wBAAe,MAAM,UAAU;AAAA,MACjC;AAAA,IACF;AAEA,QAAI,CAAC,OAAO;AACV,cAAQ,KAAK,2CAA2C;AACxD,aAAO;AAAA,IACT;AAEA,UAAM,iBAAiB,QAAQ,MAAM;AACnC,kBAAA;AAEA,iBAAW,MAAM;AACf,oBAAA;AAAA,MACF,GAAG,GAAG;AAAA,IACR,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA,SAAS,MAAM;AACb,kBAAA;AAAA,IACF,GAAG,EAAE;AAAA,EAAA;AAGP,aAAW,MAAM;AACf,gBAAA;AAAA,EACF,GAAG,GAAG;AAEN,iBAAe,UAAUD,4BAAiB;AAE1C,SAAO;AAAA,IACL,GAAG;AAAA,IACH,QAAQ;AAAA,MACN;AAAA,IAAA;AAAA,EACF;AAEJ;AAEK,MAAM,oCAAoC;"}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
export declare const createCompositeMediaInline: {
|
|
2
2
|
caption: (props: import('./caption').TypeMediaInlineRequirements) => {
|
|
3
|
-
element: HTMLDivElement;
|
|
4
3
|
events: {
|
|
5
|
-
load: () =>
|
|
4
|
+
load: () => null | undefined;
|
|
6
5
|
};
|
|
6
|
+
element: HTMLElement;
|
|
7
7
|
styles: string;
|
|
8
|
+
update?: (props: Partial<import('../../../../builder/dist/index.d.ts').BuilderOptions>) => void;
|
|
9
|
+
destroy?: () => void;
|
|
8
10
|
};
|
|
9
|
-
standard: (props: import('./standard').TypeMediaInlineRequirements) =>
|
|
10
|
-
element: HTMLDivElement;
|
|
11
|
-
styles: string;
|
|
12
|
-
};
|
|
11
|
+
standard: (props: import('./standard').TypeMediaInlineRequirements) => import('../../../../builder/dist/index.d.ts').ElementModel<HTMLElement>;
|
|
13
12
|
wrapped: (props: import('./wrapped').TypeMediaInlineWrappedRequirements) => {
|
|
14
|
-
element: HTMLDivElement;
|
|
15
13
|
events: {
|
|
16
|
-
load: () =>
|
|
14
|
+
load: () => null | undefined;
|
|
17
15
|
};
|
|
16
|
+
element: HTMLElement;
|
|
18
17
|
styles: string;
|
|
18
|
+
update?: (props: Partial<import('../../../../builder/dist/index.d.ts').BuilderOptions>) => void;
|
|
19
|
+
destroy?: () => void;
|
|
19
20
|
};
|
|
20
21
|
};
|
|
21
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../source/composite/media/inline/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,0BAA0B
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../source/composite/media/inline/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;CAItC,CAAC"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
export type TypeMediaInlineRequirements = {
|
|
2
2
|
image?: HTMLImageElement | null;
|
|
3
3
|
};
|
|
4
|
-
export declare const createCompositeMediaInlineStandard: (props: TypeMediaInlineRequirements) =>
|
|
5
|
-
element: HTMLDivElement;
|
|
6
|
-
styles: string;
|
|
7
|
-
};
|
|
4
|
+
export declare const createCompositeMediaInlineStandard: (props: TypeMediaInlineRequirements) => import('../../../../builder/dist/index.d.ts').ElementModel<HTMLElement>;
|
|
8
5
|
//# sourceMappingURL=standard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../../../source/composite/media/inline/standard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../../../source/composite/media/inline/standard.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACjC,CAAC;AA+BF,eAAO,MAAM,kCAAkC,UA7Bb,2BAA2B,kFA6BM,CAAC"}
|
|
@@ -1,32 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "@universityofmaryland/web-builder-library";
|
|
1
|
+
import { ElementBuilder } from "@universityofmaryland/web-builder-library";
|
|
3
2
|
import "@universityofmaryland/web-styles-library";
|
|
3
|
+
import { createLayoutImageContainer } from "../../../layout/image.js";
|
|
4
4
|
import "@universityofmaryland/web-token-library";
|
|
5
|
-
const ELEMENT_MEDIA_INLINE_CONTAINER = "element-media-inline-container";
|
|
6
|
-
const STYLES_MEDIA_INLINE_ELEMENT = `
|
|
7
|
-
.${ELEMENT_MEDIA_INLINE_CONTAINER} {
|
|
8
|
-
display: block;
|
|
9
|
-
max-width: 100%;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
${layoutImage.Styles}
|
|
13
|
-
`;
|
|
14
5
|
const CreateMediaInline = (props) => (() => {
|
|
15
|
-
const elementContainer = document.createElement("div");
|
|
16
6
|
const { image } = props;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
);
|
|
24
|
-
}
|
|
25
|
-
elementContainer.classList.add(ELEMENT_MEDIA_INLINE_CONTAINER);
|
|
26
|
-
return {
|
|
27
|
-
element: elementContainer,
|
|
28
|
-
styles: STYLES_MEDIA_INLINE_ELEMENT
|
|
7
|
+
const createImage = () => {
|
|
8
|
+
if (!image) {
|
|
9
|
+
console.warn("CreateMediaInline: No image provided");
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
return createLayoutImageContainer({ image, showCaption: true });
|
|
29
13
|
};
|
|
14
|
+
const imageElement = createImage();
|
|
15
|
+
const model = new ElementBuilder().withClassName("element-media-inline-container").withStyles({
|
|
16
|
+
element: {
|
|
17
|
+
display: "block",
|
|
18
|
+
maxWidth: "100%"
|
|
19
|
+
}
|
|
20
|
+
}).withChild(imageElement).build();
|
|
21
|
+
return model;
|
|
30
22
|
})();
|
|
31
23
|
const createCompositeMediaInlineStandard = CreateMediaInline;
|
|
32
24
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard.js","sources":["../../../../source/composite/media/inline/standard.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"standard.js","sources":["../../../../source/composite/media/inline/standard.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport { createLayoutImageContainer } from 'layout';\n\nexport type TypeMediaInlineRequirements = {\n image?: HTMLImageElement | null;\n};\n\nconst CreateMediaInline = (props: TypeMediaInlineRequirements) =>\n (() => {\n const { image } = props;\n\n const createImage = () => {\n if (!image) {\n console.warn('CreateMediaInline: No image provided');\n return null;\n }\n return createLayoutImageContainer({ image, showCaption: true });\n };\n\n const imageElement = createImage();\n\n const model = new ElementBuilder()\n .withClassName('element-media-inline-container')\n .withStyles({\n element: {\n display: 'block',\n maxWidth: '100%',\n },\n })\n .withChild(imageElement)\n .build();\n\n\n return model;\n })();\n\nexport const createCompositeMediaInlineStandard = CreateMediaInline;\n"],"names":[],"mappings":";;;;AAOA,MAAM,oBAAoB,CAAC,WACxB,MAAM;AACL,QAAM,EAAE,UAAU;AAElB,QAAM,cAAc,MAAM;AACxB,QAAI,CAAC,OAAO;AACV,cAAQ,KAAK,sCAAsC;AACnD,aAAO;AAAA,IACT;AACA,WAAO,2BAA2B,EAAE,OAAO,aAAa,MAAM;AAAA,EAChE;AAEA,QAAM,eAAe,YAAA;AAErB,QAAM,QAAQ,IAAI,eAAA,EACf,cAAc,gCAAgC,EAC9C,WAAW;AAAA,IACV,SAAS;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,IAAA;AAAA,EACZ,CACD,EACA,UAAU,YAAY,EACtB,MAAA;AAGH,SAAO;AACT,GAAA;AAEK,MAAM,qCAAqC;"}
|
|
@@ -6,10 +6,12 @@ export type TypeMediaInlineWrappedRequirements = {
|
|
|
6
6
|
isThemeDark?: boolean;
|
|
7
7
|
};
|
|
8
8
|
export declare const createCompositeMediaInlineWrapped: (props: TypeMediaInlineWrappedRequirements) => {
|
|
9
|
-
element: HTMLDivElement;
|
|
10
9
|
events: {
|
|
11
|
-
load: () =>
|
|
10
|
+
load: () => null | undefined;
|
|
12
11
|
};
|
|
12
|
+
element: HTMLElement;
|
|
13
13
|
styles: string;
|
|
14
|
+
update?: (props: Partial<import('../../../../builder/dist/index.d.ts').BuilderOptions>) => void;
|
|
15
|
+
destroy?: () => void;
|
|
14
16
|
};
|
|
15
17
|
//# sourceMappingURL=wrapped.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapped.d.ts","sourceRoot":"","sources":["../../../../source/composite/media/inline/wrapped.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wrapped.d.ts","sourceRoot":"","sources":["../../../../source/composite/media/inline/wrapped.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,kCAAkC,GAAG;IAC/C,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAsMF,eAAO,MAAM,iCAAiC,UA9KL,kCAAkC;;;;;;;;CA8KF,CAAC"}
|
|
@@ -1,30 +1,10 @@
|
|
|
1
1
|
import * as token from "@universityofmaryland/web-token-library";
|
|
2
|
+
import { ElementBuilder } from "@universityofmaryland/web-builder-library";
|
|
2
3
|
import { debounce } from "@universityofmaryland/web-utilities-library/performance";
|
|
3
4
|
import { createCompositeMediaCaption } from "../elements/caption.js";
|
|
4
|
-
import { layoutImage } from "../../../layout/image.js";
|
|
5
|
-
import "@universityofmaryland/web-builder-library";
|
|
6
5
|
import "@universityofmaryland/web-styles-library";
|
|
6
|
+
import { createLayoutImageContainer } from "../../../layout/image.js";
|
|
7
7
|
const BREAKPOINT = 400;
|
|
8
|
-
const ATTRIBUTE_IS_WRAPPING_TEXT = "is-wrapping-text";
|
|
9
|
-
const ELEMENT_MEDIA_INLINE_CONTAINER = "element-media-inline-wrapped-container";
|
|
10
|
-
const ELEMENT_OBJECT_WRAPPED_CONTAINER = "element-object-wrapped-container";
|
|
11
|
-
const ObjectContainer = `
|
|
12
|
-
.${ELEMENT_OBJECT_WRAPPED_CONTAINER} {
|
|
13
|
-
display: inline-block;
|
|
14
|
-
padding-bottom: ${token.spacing.sm};
|
|
15
|
-
max-width: 100%;
|
|
16
|
-
}
|
|
17
|
-
`;
|
|
18
|
-
const STYLES_MEDIA_INLINE_WRAPPED_ELEMENT = `
|
|
19
|
-
.${ELEMENT_MEDIA_INLINE_CONTAINER} {
|
|
20
|
-
display: inline-block;
|
|
21
|
-
max-width: 100%;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
${layoutImage.Styles}
|
|
25
|
-
${createCompositeMediaCaption.Styles}
|
|
26
|
-
${ObjectContainer}
|
|
27
|
-
`;
|
|
28
8
|
const GetObjectSize = ({
|
|
29
9
|
elementContainer,
|
|
30
10
|
image
|
|
@@ -41,52 +21,88 @@ const GetObjectSize = ({
|
|
|
41
21
|
};
|
|
42
22
|
const CreateMediaInlineWrapped = (props) => (() => {
|
|
43
23
|
const { image, isAlignmentRight, isThemeDark, caption, wrappingText } = props;
|
|
44
|
-
const
|
|
45
|
-
const objectContainer = document.createElement("div");
|
|
46
|
-
const hasWrappingtext = wrappingText && wrappingText !== null;
|
|
24
|
+
const hasWrappingText = wrappingText && wrappingText !== null;
|
|
47
25
|
const hasCaption = caption && caption !== null;
|
|
26
|
+
const createImage = () => {
|
|
27
|
+
if (!image) {
|
|
28
|
+
console.warn("CreateMediaInlineWrapped: No image provided");
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return createLayoutImageContainer({ image, showCaption: true });
|
|
32
|
+
};
|
|
33
|
+
const createCaption = () => {
|
|
34
|
+
if (!hasCaption) {
|
|
35
|
+
console.warn("CreateMediaInlineWrapped: No caption provided");
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const captionElement2 = createCompositeMediaCaption.CreateElement({ caption, isThemeDark });
|
|
39
|
+
captionElement2.style.opacity = "0";
|
|
40
|
+
return captionElement2;
|
|
41
|
+
};
|
|
42
|
+
const imageElement = createImage();
|
|
43
|
+
const captionElement = createCaption();
|
|
44
|
+
const objectModel = new ElementBuilder().withClassName("element-object-wrapped-container").withStyles({
|
|
45
|
+
element: {
|
|
46
|
+
display: "inline-block",
|
|
47
|
+
paddingBottom: token.spacing.sm,
|
|
48
|
+
maxWidth: "100%"
|
|
49
|
+
}
|
|
50
|
+
}).withChild(imageElement).withChild(captionElement).build();
|
|
51
|
+
const objectContainer = objectModel.element;
|
|
52
|
+
const containerBuilder = new ElementBuilder().withClassName("element-media-inline-wrapped-container").withStyles({
|
|
53
|
+
element: {
|
|
54
|
+
display: "inline-block",
|
|
55
|
+
maxWidth: "100%"
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
if (image || hasCaption) {
|
|
59
|
+
containerBuilder.withChild(objectModel);
|
|
60
|
+
}
|
|
61
|
+
if (hasWrappingText && wrappingText) {
|
|
62
|
+
containerBuilder.withChild(wrappingText).withAttribute("is-wrapping-text", "");
|
|
63
|
+
}
|
|
64
|
+
const containerModel = containerBuilder.build();
|
|
65
|
+
const elementContainer = containerModel.element;
|
|
48
66
|
const sizeCaption = () => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
);
|
|
52
|
-
const caption2 = elementContainer.querySelector(
|
|
67
|
+
if (!imageElement) return;
|
|
68
|
+
const captionContainer = elementContainer.querySelector(
|
|
53
69
|
`.${createCompositeMediaCaption.Elements.container}`
|
|
54
70
|
);
|
|
55
|
-
if (
|
|
56
|
-
|
|
71
|
+
if (captionContainer) {
|
|
72
|
+
captionContainer.style.width = `${imageElement.element.offsetWidth}px`;
|
|
57
73
|
}
|
|
58
74
|
};
|
|
59
75
|
const sizeObject = () => {
|
|
60
76
|
const isAboveBreakPoint = elementContainer.offsetWidth > BREAKPOINT;
|
|
61
|
-
const objectContainer2 = elementContainer.querySelector(
|
|
62
|
-
`.${ELEMENT_OBJECT_WRAPPED_CONTAINER}`
|
|
63
|
-
);
|
|
64
77
|
if (!image) return;
|
|
65
78
|
if (isAboveBreakPoint) {
|
|
66
|
-
const objectSize = GetObjectSize({
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
79
|
+
const objectSize = GetObjectSize({
|
|
80
|
+
elementContainer,
|
|
81
|
+
image
|
|
82
|
+
});
|
|
83
|
+
objectContainer.style.width = `${objectSize}px`;
|
|
84
|
+
objectContainer.style.display = "inline-block";
|
|
85
|
+
objectContainer.style.textAlign = "left";
|
|
70
86
|
if (isAlignmentRight) {
|
|
71
|
-
|
|
72
|
-
|
|
87
|
+
objectContainer.style.float = `right`;
|
|
88
|
+
objectContainer.style.paddingLeft = `${token.spacing.md}`;
|
|
73
89
|
} else {
|
|
74
|
-
|
|
75
|
-
|
|
90
|
+
objectContainer.style.float = "left";
|
|
91
|
+
objectContainer.style.paddingRight = `${token.spacing.md}`;
|
|
76
92
|
}
|
|
77
93
|
} else {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
94
|
+
objectContainer.style.width = "100%";
|
|
95
|
+
objectContainer.style.float = "none";
|
|
96
|
+
objectContainer.style.textAlign = "center";
|
|
97
|
+
objectContainer.style.paddingLeft = `0`;
|
|
98
|
+
objectContainer.style.paddingRight = `0`;
|
|
83
99
|
}
|
|
84
100
|
setTimeout(() => {
|
|
85
101
|
sizeCaption();
|
|
86
102
|
}, 100);
|
|
87
103
|
};
|
|
88
104
|
const eventResize = () => {
|
|
89
|
-
if (
|
|
105
|
+
if (hasWrappingText) {
|
|
90
106
|
sizeObject();
|
|
91
107
|
}
|
|
92
108
|
if (hasCaption) {
|
|
@@ -95,14 +111,18 @@ const CreateMediaInlineWrapped = (props) => (() => {
|
|
|
95
111
|
};
|
|
96
112
|
const load = () => {
|
|
97
113
|
const checkSizing = () => {
|
|
98
|
-
const
|
|
114
|
+
const captionContainer = objectContainer.querySelector(
|
|
99
115
|
`.${createCompositeMediaCaption.Elements.container}`
|
|
100
116
|
);
|
|
101
|
-
if (
|
|
102
|
-
|
|
117
|
+
if (captionContainer) {
|
|
118
|
+
captionContainer.style.opacity = `1`;
|
|
103
119
|
}
|
|
104
120
|
};
|
|
105
|
-
|
|
121
|
+
if (!image) {
|
|
122
|
+
console.warn("load(): No image found");
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
image.addEventListener("load", () => {
|
|
106
126
|
eventResize();
|
|
107
127
|
setTimeout(() => {
|
|
108
128
|
checkSizing();
|
|
@@ -112,49 +132,26 @@ const CreateMediaInlineWrapped = (props) => (() => {
|
|
|
112
132
|
}, 500);
|
|
113
133
|
});
|
|
114
134
|
};
|
|
115
|
-
objectContainer.classList.add(ELEMENT_OBJECT_WRAPPED_CONTAINER);
|
|
116
|
-
if (image) {
|
|
117
|
-
objectContainer.appendChild(
|
|
118
|
-
layoutImage.CreateElement({
|
|
119
|
-
image,
|
|
120
|
-
showCaption: true
|
|
121
|
-
})
|
|
122
|
-
);
|
|
123
|
-
}
|
|
124
|
-
if (hasCaption) {
|
|
125
|
-
const captionElement = createCompositeMediaCaption.CreateElement({
|
|
126
|
-
caption,
|
|
127
|
-
isThemeDark
|
|
128
|
-
});
|
|
129
|
-
captionElement.style.opacity = `0`;
|
|
130
|
-
objectContainer.appendChild(captionElement);
|
|
131
|
-
}
|
|
132
|
-
if (objectContainer.children.length > 0) {
|
|
133
|
-
elementContainer.appendChild(objectContainer);
|
|
134
|
-
}
|
|
135
|
-
if (hasWrappingtext) {
|
|
136
|
-
elementContainer.appendChild(wrappingText);
|
|
137
|
-
elementContainer.setAttribute(ATTRIBUTE_IS_WRAPPING_TEXT, "");
|
|
138
|
-
setTimeout(() => {
|
|
139
|
-
sizeObject();
|
|
140
|
-
}, 100);
|
|
141
|
-
}
|
|
142
|
-
elementContainer.classList.add(ELEMENT_MEDIA_INLINE_CONTAINER);
|
|
143
135
|
window.addEventListener(
|
|
144
136
|
"resize",
|
|
145
137
|
debounce(() => {
|
|
146
138
|
eventResize();
|
|
147
139
|
}, 20)
|
|
148
140
|
);
|
|
141
|
+
if (hasWrappingText) {
|
|
142
|
+
setTimeout(() => {
|
|
143
|
+
sizeObject();
|
|
144
|
+
}, 100);
|
|
145
|
+
}
|
|
149
146
|
setTimeout(() => {
|
|
150
147
|
eventResize();
|
|
151
148
|
}, 200);
|
|
149
|
+
containerModel.styles += createCompositeMediaCaption.Styles;
|
|
152
150
|
return {
|
|
153
|
-
|
|
151
|
+
...containerModel,
|
|
154
152
|
events: {
|
|
155
153
|
load
|
|
156
|
-
}
|
|
157
|
-
styles: STYLES_MEDIA_INLINE_WRAPPED_ELEMENT
|
|
154
|
+
}
|
|
158
155
|
};
|
|
159
156
|
})();
|
|
160
157
|
const createCompositeMediaInlineWrapped = CreateMediaInlineWrapped;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapped.js","sources":["../../../../source/composite/media/inline/wrapped.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport { debounce } from '@universityofmaryland/web-utilities-library/performance';\nimport { createCompositeMediaCaption as CaptionContainer } from '../elements/caption';\nimport {
|
|
1
|
+
{"version":3,"file":"wrapped.js","sources":["../../../../source/composite/media/inline/wrapped.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport { debounce } from '@universityofmaryland/web-utilities-library/performance';\nimport { createCompositeMediaCaption as CaptionContainer } from '../elements/caption';\nimport { createLayoutImageContainer } from 'layout';\n\nexport type TypeMediaInlineWrappedRequirements = {\n image?: HTMLImageElement | null;\n caption?: HTMLElement | null;\n wrappingText?: HTMLElement | null;\n isAlignmentRight?: boolean;\n isThemeDark?: boolean;\n};\n\nconst BREAKPOINT = 400;\n\nconst GetObjectSize = ({\n elementContainer,\n image,\n}: {\n elementContainer: HTMLElement;\n image: HTMLImageElement;\n}) => {\n const containerSize = elementContainer.offsetWidth;\n const imageWidth = image.naturalWidth;\n const isMediumView = containerSize > BREAKPOINT;\n let width = imageWidth;\n\n if (isMediumView) {\n const shouldMaxSized = imageWidth > containerSize / 2;\n if (shouldMaxSized) width = containerSize / 2;\n }\n\n return width;\n};\n\nconst CreateMediaInlineWrapped = (props: TypeMediaInlineWrappedRequirements) =>\n (() => {\n const { image, isAlignmentRight, isThemeDark, caption, wrappingText } =\n props;\n const hasWrappingText = wrappingText && wrappingText !== null;\n const hasCaption = caption && caption !== null;\n\n const createImage = () => {\n if (!image) {\n console.warn('CreateMediaInlineWrapped: No image provided');\n return null;\n }\n return createLayoutImageContainer({ image, showCaption: true });\n };\n\n const createCaption = () => {\n if (!hasCaption) {\n console.warn('CreateMediaInlineWrapped: No caption provided');\n return null;\n }\n const captionElement = CaptionContainer.CreateElement({ caption, isThemeDark });\n captionElement.style.opacity = '0';\n return captionElement;\n };\n\n\t\tconst imageElement = createImage()\n\t\tconst captionElement = createCaption()\n\n const objectModel = new ElementBuilder()\n .withClassName('element-object-wrapped-container')\n .withStyles({\n element: {\n display: 'inline-block',\n paddingBottom: token.spacing.sm,\n maxWidth: '100%',\n },\n })\n .withChild(imageElement)\n .withChild(captionElement)\n .build();\n\n const objectContainer = objectModel.element;\n\n const containerBuilder = new ElementBuilder()\n .withClassName('element-media-inline-wrapped-container')\n .withStyles({\n element: {\n display: 'inline-block',\n maxWidth: '100%',\n },\n });\n\n if (image || hasCaption) {\n containerBuilder.withChild(objectModel);\n }\n\n if (hasWrappingText && wrappingText) {\n containerBuilder.withChild(wrappingText).withAttribute('is-wrapping-text', '');\n }\n\n const containerModel = containerBuilder.build();\n const elementContainer = containerModel.element;\n\n const sizeCaption = () => {\n if (!imageElement) return;\n const captionContainer = elementContainer.querySelector(\n `.${CaptionContainer.Elements.container}`,\n ) as HTMLElement;\n\n if (captionContainer) {\n captionContainer.style.width = `${imageElement.element.offsetWidth}px`;\n }\n };\n\n const sizeObject = () => {\n const isAboveBreakPoint = elementContainer.offsetWidth > BREAKPOINT;\n\n if (!image) return;\n\n if (isAboveBreakPoint) {\n const objectSize = GetObjectSize({\n elementContainer,\n image,\n });\n\n objectContainer.style.width = `${objectSize}px`;\n objectContainer.style.display = 'inline-block';\n objectContainer.style.textAlign = 'left';\n\n if (isAlignmentRight) {\n objectContainer.style.float = `right`;\n objectContainer.style.paddingLeft = `${token.spacing.md}`;\n } else {\n objectContainer.style.float = 'left';\n objectContainer.style.paddingRight = `${token.spacing.md}`;\n }\n } else {\n objectContainer.style.width = '100%';\n objectContainer.style.float = 'none';\n objectContainer.style.textAlign = 'center';\n objectContainer.style.paddingLeft = `0`;\n objectContainer.style.paddingRight = `0`;\n }\n\n setTimeout(() => {\n sizeCaption();\n }, 100);\n };\n\n const eventResize = () => {\n if (hasWrappingText) {\n sizeObject();\n }\n if (hasCaption) {\n sizeCaption();\n }\n };\n\n const load = () => {\n const checkSizing = () => {\n const captionContainer = objectContainer.querySelector(\n `.${CaptionContainer.Elements.container}`,\n ) as HTMLElement;\n\n if (captionContainer) {\n captionContainer.style.opacity = `1`;\n }\n };\n\n\t\t\tif (!image) {\n console.warn('load(): No image found');\n return null;\n }\n\n image.addEventListener('load', () => {\n eventResize();\n\n setTimeout(() => {\n checkSizing();\n }, 100);\n\n setTimeout(() => {\n checkSizing();\n }, 500);\n });\n };\n\n window.addEventListener(\n 'resize',\n debounce(() => {\n eventResize();\n }, 20),\n );\n\n if (hasWrappingText) {\n setTimeout(() => {\n sizeObject();\n }, 100);\n }\n\n setTimeout(() => {\n eventResize();\n }, 200);\n\n containerModel.styles += CaptionContainer.Styles;\n\n return {\n ...containerModel,\n events: {\n load,\n },\n };\n })();\n\nexport const createCompositeMediaInlineWrapped = CreateMediaInlineWrapped;\n"],"names":["captionElement","CaptionContainer"],"mappings":"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"}
|
|
@@ -8,22 +8,21 @@ import "@universityofmaryland/web-token-library";
|
|
|
8
8
|
import "@universityofmaryland/web-icons-library/files";
|
|
9
9
|
import "@universityofmaryland/web-icons-library/arrows";
|
|
10
10
|
import "@universityofmaryland/web-utilities-library/performance";
|
|
11
|
-
import "../../../atomic/animations/brand/chevron-scroll.js";
|
|
12
11
|
import "../../../atomic/animations/brand/card-stack.js";
|
|
13
12
|
import "@universityofmaryland/web-utilities-library/accessibility";
|
|
13
|
+
import "@universityofmaryland/web-styles-library/typography";
|
|
14
14
|
import "@universityofmaryland/web-styles-library/element";
|
|
15
15
|
import "@universityofmaryland/web-icons-library/location";
|
|
16
16
|
import "@universityofmaryland/web-icons-library/calendar";
|
|
17
|
-
import "@universityofmaryland/web-styles-library/typography";
|
|
18
17
|
import "@universityofmaryland/web-utilities-library/theme";
|
|
19
18
|
import "../../../atomic/layout/block/stacked.js";
|
|
20
|
-
import "../../../atomic/layout/overlay/modal.js";
|
|
21
19
|
import "../../../atomic/layout/person/columns.js";
|
|
22
20
|
import "@universityofmaryland/web-styles-library/layout";
|
|
23
21
|
import "@universityofmaryland/web-icons-library/communication";
|
|
24
22
|
import "@universityofmaryland/web-icons-library/social";
|
|
25
|
-
import "../../../atomic/text-lockup/date.js";
|
|
26
23
|
import "@universityofmaryland/web-styles-library/animation";
|
|
24
|
+
import "@universityofmaryland/web-utilities-library/string";
|
|
25
|
+
import "@universityofmaryland/web-utilities-library/animation";
|
|
27
26
|
import "@universityofmaryland/web-utilities-library/dom";
|
|
28
27
|
import "../../../atomic/text-lockup/small.js";
|
|
29
28
|
const QUERY = `
|