@universityofmaryland/web-elements-library 1.6.16 → 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/elements/slider/slide-first.d.ts.map +1 -1
- package/dist/composite/navigation/elements/slider/slide-first.js +4 -1
- package/dist/composite/navigation/elements/slider/slide-first.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 +5 -5
- 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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slide-first.d.ts","sourceRoot":"","sources":["../../../../../source/composite/navigation/elements/slider/slide-first.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwD,eAAe,EAAE,MAAM,UAAU,CAAC;AAEjG,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG;IAClD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,iBAAiB,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,2BAA2B,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjD,mBAAmB,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACzC,eAAe,EAAE,CAAC,GAAG,EAAE;QACrB,OAAO,EAAE,WAAW,CAAC;QACrB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,KAAK,IAAI,CAAC;IACX,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG;IACjD,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;
|
|
1
|
+
{"version":3,"file":"slide-first.d.ts","sourceRoot":"","sources":["../../../../../source/composite/navigation/elements/slider/slide-first.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwD,eAAe,EAAE,MAAM,UAAU,CAAC;AAEjG,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG;IAClD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,iBAAiB,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,2BAA2B,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjD,mBAAmB,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACzC,eAAe,EAAE,CAAC,GAAG,EAAE;QACrB,OAAO,EAAE,WAAW,CAAC;QACrB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,KAAK,IAAI,CAAC;IACX,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG;IACjD,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAuJF,eAAO,MAAM,oCAAoC;2BAnCT,cAAc;;;;;CAyCrD,CAAC"}
|
|
@@ -93,6 +93,7 @@ const CreateSlideFirstElement = (props) => {
|
|
|
93
93
|
isContextMenu
|
|
94
94
|
} = props;
|
|
95
95
|
const sliderContainer = document.createElement("div");
|
|
96
|
+
const sliderOverflow = document.createElement("div");
|
|
96
97
|
const wrapper = document.createElement("div");
|
|
97
98
|
const primarlyLinkContent = createPrimaryLinks(props);
|
|
98
99
|
const secondaryLinkContent = createSecondaryLinks(props);
|
|
@@ -107,7 +108,9 @@ const CreateSlideFirstElement = (props) => {
|
|
|
107
108
|
if (secondaryLinkContent) wrapper.appendChild(secondaryLinkContent);
|
|
108
109
|
if (additionalContent) wrapper.appendChild(additionalContent);
|
|
109
110
|
wrapper.classList.add(createCompositeNavigationSlides.Elements.wrapper);
|
|
110
|
-
|
|
111
|
+
sliderOverflow.classList.add(createCompositeNavigationSlides.Elements.overflow);
|
|
112
|
+
sliderOverflow.appendChild(wrapper);
|
|
113
|
+
sliderContainer.appendChild(sliderOverflow);
|
|
111
114
|
return sliderContainer;
|
|
112
115
|
};
|
|
113
116
|
const createCompositeNavigationSliderFirst = {
|