@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.
Files changed (195) hide show
  1. package/README.md +1 -1
  2. package/dist/atomic/animations/brand/card-stack.js +2 -3
  3. package/dist/atomic/animations/brand/card-stack.js.map +1 -1
  4. package/dist/atomic/animations/brand/chevron-flow.d.ts +1 -7
  5. package/dist/atomic/animations/brand/chevron-flow.d.ts.map +1 -1
  6. package/dist/atomic/animations/brand/chevron-flow.js +82 -159
  7. package/dist/atomic/animations/brand/chevron-flow.js.map +1 -1
  8. package/dist/atomic/animations/brand/chevron-scroll.d.ts +1 -4
  9. package/dist/atomic/animations/brand/chevron-scroll.d.ts.map +1 -1
  10. package/dist/atomic/animations/brand/chevron-scroll.js +89 -143
  11. package/dist/atomic/animations/brand/chevron-scroll.js.map +1 -1
  12. package/dist/atomic/assets/image/caption.d.ts +9 -0
  13. package/dist/atomic/assets/image/caption.d.ts.map +1 -0
  14. package/dist/atomic/assets/image/caption.js +166 -0
  15. package/dist/atomic/assets/image/caption.js.map +1 -0
  16. package/dist/atomic/assets/image/gif.d.ts.map +1 -1
  17. package/dist/atomic/assets/image/gif.js +6 -1
  18. package/dist/atomic/assets/image/gif.js.map +1 -1
  19. package/dist/atomic/assets/image/index.d.ts +1 -0
  20. package/dist/atomic/assets/image/index.d.ts.map +1 -1
  21. package/dist/atomic/assets/image/index.js +2 -0
  22. package/dist/atomic/assets/image/index.js.map +1 -1
  23. package/dist/atomic/assets/video/toggle.d.ts.map +1 -1
  24. package/dist/atomic/assets/video/toggle.js +9 -2
  25. package/dist/atomic/assets/video/toggle.js.map +1 -1
  26. package/dist/atomic/buttons/fullscreen.d.ts +1 -0
  27. package/dist/atomic/buttons/fullscreen.d.ts.map +1 -1
  28. package/dist/atomic/buttons/fullscreen.js +35 -3
  29. package/dist/atomic/buttons/fullscreen.js.map +1 -1
  30. package/dist/atomic/layout/overlay/modal.d.ts +1 -10
  31. package/dist/atomic/layout/overlay/modal.d.ts.map +1 -1
  32. package/dist/atomic/layout/overlay/modal.js +28 -44
  33. package/dist/atomic/layout/overlay/modal.js.map +1 -1
  34. package/dist/atomic/layout/person/columns.js +2 -3
  35. package/dist/atomic/layout/person/columns.js.map +1 -1
  36. package/dist/atomic/text-lockup/date.d.ts +1 -4
  37. package/dist/atomic/text-lockup/date.d.ts.map +1 -1
  38. package/dist/atomic/text-lockup/date.js +42 -75
  39. package/dist/atomic/text-lockup/date.js.map +1 -1
  40. package/dist/composite/accordion/item.d.ts +3 -16
  41. package/dist/composite/accordion/item.d.ts.map +1 -1
  42. package/dist/composite/accordion/item.js +152 -245
  43. package/dist/composite/accordion/item.js.map +1 -1
  44. package/dist/composite/card/block.js +2 -3
  45. package/dist/composite/card/block.js.map +1 -1
  46. package/dist/composite/card/event-time.js +2 -3
  47. package/dist/composite/card/event-time.js.map +1 -1
  48. package/dist/composite/card/list.js +2 -3
  49. package/dist/composite/card/list.js.map +1 -1
  50. package/dist/composite/card/overlay/color.js +3 -3
  51. package/dist/composite/card/overlay/icon.js +3 -3
  52. package/dist/composite/card/overlay/image.d.ts.map +1 -1
  53. package/dist/composite/card/overlay/image.js +9 -12
  54. package/dist/composite/card/overlay/image.js.map +1 -1
  55. package/dist/composite/card/video/block.js +4 -3
  56. package/dist/composite/card/video/block.js.map +1 -1
  57. package/dist/composite/carousel/cards/index.d.ts +1 -8
  58. package/dist/composite/carousel/cards/index.d.ts.map +1 -1
  59. package/dist/composite/carousel/cards/index.js +163 -282
  60. package/dist/composite/carousel/cards/index.js.map +1 -1
  61. package/dist/composite/carousel/default/index.d.ts +9 -15
  62. package/dist/composite/carousel/default/index.d.ts.map +1 -1
  63. package/dist/composite/carousel/default/index.js +78 -129
  64. package/dist/composite/carousel/default/index.js.map +1 -1
  65. package/dist/composite/carousel/elements/equal-width-items.d.ts +37 -0
  66. package/dist/composite/carousel/elements/equal-width-items.d.ts.map +1 -0
  67. package/dist/composite/carousel/elements/{blocks.js → equal-width-items.js} +157 -227
  68. package/dist/composite/carousel/elements/equal-width-items.js.map +1 -0
  69. package/dist/composite/carousel/elements/full-screen.d.ts +3 -2
  70. package/dist/composite/carousel/elements/full-screen.d.ts.map +1 -1
  71. package/dist/composite/carousel/elements/full-screen.js +34 -41
  72. package/dist/composite/carousel/elements/full-screen.js.map +1 -1
  73. package/dist/composite/carousel/elements/image.d.ts +15 -2
  74. package/dist/composite/carousel/elements/image.d.ts.map +1 -1
  75. package/dist/composite/carousel/elements/image.js +176 -151
  76. package/dist/composite/carousel/elements/image.js.map +1 -1
  77. package/dist/composite/carousel/elements/index.d.ts +4 -1
  78. package/dist/composite/carousel/elements/index.d.ts.map +1 -1
  79. package/dist/composite/carousel/elements/indicator-wrapper.d.ts +13 -0
  80. package/dist/composite/carousel/elements/indicator-wrapper.d.ts.map +1 -0
  81. package/dist/composite/carousel/elements/indicator-wrapper.js +67 -0
  82. package/dist/composite/carousel/elements/indicator-wrapper.js.map +1 -0
  83. package/dist/composite/carousel/elements/nav-button.d.ts +82 -0
  84. package/dist/composite/carousel/elements/nav-button.d.ts.map +1 -0
  85. package/dist/composite/carousel/elements/nav-button.js +164 -0
  86. package/dist/composite/carousel/elements/nav-button.js.map +1 -0
  87. package/dist/composite/carousel/elements/overlay.d.ts +3 -2
  88. package/dist/composite/carousel/elements/overlay.d.ts.map +1 -1
  89. package/dist/composite/carousel/elements/overlay.js +85 -55
  90. package/dist/composite/carousel/elements/overlay.js.map +1 -1
  91. package/dist/composite/carousel/image/multiple.d.ts +2 -7
  92. package/dist/composite/carousel/image/multiple.d.ts.map +1 -1
  93. package/dist/composite/carousel/image/multiple.js +85 -150
  94. package/dist/composite/carousel/image/multiple.js.map +1 -1
  95. package/dist/composite/carousel/image/standard.d.ts +2 -7
  96. package/dist/composite/carousel/image/standard.d.ts.map +1 -1
  97. package/dist/composite/carousel/image/standard.js +148 -262
  98. package/dist/composite/carousel/image/standard.js.map +1 -1
  99. package/dist/composite/carousel/thumbnail/index.d.ts +1 -8
  100. package/dist/composite/carousel/thumbnail/index.d.ts.map +1 -1
  101. package/dist/composite/carousel/thumbnail/index.js +72 -113
  102. package/dist/composite/carousel/thumbnail/index.js.map +1 -1
  103. package/dist/composite/carousel/wide/container.d.ts +21 -20
  104. package/dist/composite/carousel/wide/container.d.ts.map +1 -1
  105. package/dist/composite/carousel/wide/container.js +37 -12
  106. package/dist/composite/carousel/wide/container.js.map +1 -1
  107. package/dist/composite/carousel/wide/controls.d.ts +5 -10
  108. package/dist/composite/carousel/wide/controls.d.ts.map +1 -1
  109. package/dist/composite/carousel/wide/controls.js +24 -94
  110. package/dist/composite/carousel/wide/controls.js.map +1 -1
  111. package/dist/composite/carousel/wide/frames.d.ts +18 -10
  112. package/dist/composite/carousel/wide/frames.d.ts.map +1 -1
  113. package/dist/composite/carousel/wide/frames.js +60 -78
  114. package/dist/composite/carousel/wide/frames.js.map +1 -1
  115. package/dist/composite/carousel/wide/index.d.ts.map +1 -1
  116. package/dist/composite/carousel/wide/index.js +11 -19
  117. package/dist/composite/carousel/wide/index.js.map +1 -1
  118. package/dist/composite/hero/custom/expand.js +3 -4
  119. package/dist/composite/hero/custom/expand.js.map +1 -1
  120. package/dist/composite/hero/custom/grid.js +2 -3
  121. package/dist/composite/hero/custom/grid.js.map +1 -1
  122. package/dist/composite/hero/custom/video-arrow.js +4 -3
  123. package/dist/composite/hero/custom/video-arrow.js.map +1 -1
  124. package/dist/composite/hero/logo.js +3 -3
  125. package/dist/composite/hero/minimal.js +3 -3
  126. package/dist/composite/hero/overlay.js +5 -4
  127. package/dist/composite/hero/overlay.js.map +1 -1
  128. package/dist/composite/hero/stacked.js +3 -3
  129. package/dist/composite/hero/standard.js +4 -3
  130. package/dist/composite/hero/standard.js.map +1 -1
  131. package/dist/composite/layout/box/logo.d.ts +1 -4
  132. package/dist/composite/layout/box/logo.d.ts.map +1 -1
  133. package/dist/composite/layout/box/logo.js +55 -103
  134. package/dist/composite/layout/box/logo.js.map +1 -1
  135. package/dist/composite/layout/image/expand.d.ts +1 -4
  136. package/dist/composite/layout/image/expand.d.ts.map +1 -1
  137. package/dist/composite/layout/image/expand.js +136 -243
  138. package/dist/composite/layout/image/expand.js.map +1 -1
  139. package/dist/composite/layout/scroll-top/index.d.ts +1 -7
  140. package/dist/composite/layout/scroll-top/index.d.ts.map +1 -1
  141. package/dist/composite/layout/scroll-top/index.js +65 -77
  142. package/dist/composite/layout/scroll-top/index.js.map +1 -1
  143. package/dist/composite/layout/sticky-columns/index.d.ts +2 -2
  144. package/dist/composite/layout/sticky-columns/index.d.ts.map +1 -1
  145. package/dist/composite/layout/sticky-columns/index.js +42 -70
  146. package/dist/composite/layout/sticky-columns/index.js.map +1 -1
  147. package/dist/composite/media/elements/gif.js +3 -3
  148. package/dist/composite/media/inline/caption.d.ts +4 -2
  149. package/dist/composite/media/inline/caption.d.ts.map +1 -1
  150. package/dist/composite/media/inline/caption.js +56 -67
  151. package/dist/composite/media/inline/caption.js.map +1 -1
  152. package/dist/composite/media/inline/index.d.ts +9 -8
  153. package/dist/composite/media/inline/index.d.ts.map +1 -1
  154. package/dist/composite/media/inline/standard.d.ts +1 -4
  155. package/dist/composite/media/inline/standard.d.ts.map +1 -1
  156. package/dist/composite/media/inline/standard.js +16 -24
  157. package/dist/composite/media/inline/standard.js.map +1 -1
  158. package/dist/composite/media/inline/wrapped.d.ts +4 -2
  159. package/dist/composite/media/inline/wrapped.d.ts.map +1 -1
  160. package/dist/composite/media/inline/wrapped.js +80 -83
  161. package/dist/composite/media/inline/wrapped.js.map +1 -1
  162. package/dist/composite/navigation/utility/alert.js +3 -4
  163. package/dist/composite/navigation/utility/alert.js.map +1 -1
  164. package/dist/composite/pathway/_common.js +4 -3
  165. package/dist/composite/pathway/_common.js.map +1 -1
  166. package/dist/composite/pathway/hero.js +3 -3
  167. package/dist/composite/person/bio/full.js +3 -3
  168. package/dist/composite/person/bio/small.js +2 -3
  169. package/dist/composite/person/bio/small.js.map +1 -1
  170. package/dist/composite/person/block.js +2 -3
  171. package/dist/composite/person/block.js.map +1 -1
  172. package/dist/composite/person/hero.js +3 -3
  173. package/dist/composite/person/list.js +2 -3
  174. package/dist/composite/person/list.js.map +1 -1
  175. package/dist/composite/person/tabular.js +2 -3
  176. package/dist/composite/person/tabular.js.map +1 -1
  177. package/dist/composite/slider/events.d.ts +6 -12
  178. package/dist/composite/slider/events.d.ts.map +1 -1
  179. package/dist/composite/slider/events.js +304 -428
  180. package/dist/composite/slider/events.js.map +1 -1
  181. package/dist/layout/image.d.ts +5 -10
  182. package/dist/layout/image.d.ts.map +1 -1
  183. package/dist/layout/image.js +27 -88
  184. package/dist/layout/image.js.map +1 -1
  185. package/dist/layout/index.d.ts +1 -1
  186. package/dist/layout/index.d.ts.map +1 -1
  187. package/dist/layout.js +2 -2
  188. package/package.json +6 -6
  189. package/dist/composite/carousel/elements/blocks.d.ts +0 -42
  190. package/dist/composite/carousel/elements/blocks.d.ts.map +0 -1
  191. package/dist/composite/carousel/elements/blocks.js.map +0 -1
  192. package/dist/composite/carousel/wide/_elementModel.d.ts +0 -18
  193. package/dist/composite/carousel/wide/_elementModel.d.ts.map +0 -1
  194. package/dist/composite/carousel/wide/_elementModel.js +0 -29
  195. 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
- const ELEMENT_MEDIA_INLINE_CONTAINER = "element-media-with-caption-container";
8
- const ELEMENT_OBJECT_CAPTION_CONTAINER = "element-media-caption-container";
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 elementContainer = document.createElement("div");
31
- const objectContainer = document.createElement("div");
32
- const sizeCaption = () => {
33
- const imageContainer = elementContainer.querySelector(
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 eventResize = () => {
45
- sizeCaption();
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
- if (image) {
48
- objectContainer.appendChild(
49
- layoutImage.CreateElement({
50
- image,
51
- showCaption: true
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 caption2 = objectContainer.querySelector(
55
+ const captionElement2 = objectContainer.querySelector(
58
56
  `.${createCompositeMediaCaption.Elements.container}`
59
57
  );
60
- if (caption2) {
61
- caption2.style.opacity = `1`;
58
+ if (captionElement2) {
59
+ captionElement2.style.opacity = `1`;
62
60
  }
63
61
  };
64
- image?.addEventListener("load", () => {
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
- eventResize();
76
+ sizeCaption();
88
77
  }, 20)
89
78
  );
90
79
  setTimeout(() => {
91
- eventResize();
80
+ sizeCaption();
92
81
  }, 100);
82
+ containerModel.styles += createCompositeMediaCaption.Styles;
93
83
  return {
94
- element: elementContainer,
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 { Image as LayoutImage } from 'layout';\n\nexport type TypeMediaInlineRequirements = {\n image?: HTMLImageElement | null;\n caption?: HTMLElement | null;\n isThemeDark?: boolean;\n};\n\nconst { spacing } = token;\n\nconst ELEMENT_MEDIA_INLINE_CONTAINER = 'element-media-with-caption-container';\nconst ELEMENT_OBJECT_CAPTION_CONTAINER = 'element-media-caption-container';\n\n// prettier-ignore\nconst ObjectContainer = `\n .${ELEMENT_OBJECT_CAPTION_CONTAINER} {\n display: flex;\n flex-direction: column;\n padding-bottom: ${token.spacing.sm};\n max-width: 100%;\n }\n`;\n\n// prettier-ignore\nconst STYLES_MEDIA_INLINE_ELEMENT = `\n .${ELEMENT_MEDIA_INLINE_CONTAINER} {\n display: inline-block;\n max-width: 100%;\n }\n\n ${LayoutImage.Styles}\n ${CaptionContainer.Styles}\n ${ObjectContainer}\n`;\n\nconst CreateMediaWithCaption = (props: TypeMediaInlineRequirements) =>\n (() => {\n const { caption, image, isThemeDark } = props;\n const hasCaption = caption && caption !== null;\n const elementContainer = document.createElement('div');\n const objectContainer = document.createElement('div');\n const sizeCaption = () => {\n const imageContainer = elementContainer.querySelector(\n `.${LayoutImage.Elements.container}`,\n ) as HTMLElement;\n const caption = elementContainer.querySelector(\n `.${CaptionContainer.Elements.container}`,\n ) as HTMLElement;\n\n if (caption) {\n caption.style.width = `${imageContainer.offsetWidth}px`;\n caption.style.display = `block`;\n }\n };\n const eventResize = () => {\n sizeCaption();\n };\n\n if (image) {\n objectContainer.appendChild(\n LayoutImage.CreateElement({\n image,\n showCaption: true,\n }),\n );\n }\n\n const load = () => {\n const checkSizing = () => {\n const caption = objectContainer.querySelector(\n `.${CaptionContainer.Elements.container}`,\n ) as HTMLElement;\n\n if (caption) {\n caption.style.opacity = `1`;\n }\n };\n\n image?.addEventListener('load', () => {\n checkSizing();\n\n setTimeout(() => {\n checkSizing();\n }, 500);\n });\n };\n\n if (hasCaption) {\n const captionElement = CaptionContainer.CreateElement({\n caption,\n isThemeDark,\n });\n captionElement.style.display = `none`;\n objectContainer.appendChild(captionElement);\n }\n\n if (objectContainer.children.length > 0) {\n elementContainer.appendChild(objectContainer);\n }\n\n objectContainer.classList.add(ELEMENT_OBJECT_CAPTION_CONTAINER);\n elementContainer.classList.add(ELEMENT_MEDIA_INLINE_CONTAINER);\n\n window.addEventListener(\n 'resize',\n debounce(() => {\n eventResize();\n }, 20),\n );\n\n setTimeout(() => {\n eventResize();\n }, 100);\n\n return {\n element: elementContainer,\n events: {\n load,\n },\n styles: STYLES_MEDIA_INLINE_ELEMENT,\n };\n })();\n\nexport const createCompositeMediaInlineCaption = CreateMediaWithCaption;\n"],"names":["LayoutImage","CaptionContainer","caption"],"mappings":";;;;;;AAaA,MAAM,iCAAiC;AACvC,MAAM,mCAAmC;AAGzC,MAAM,kBAAkB;AAAA,KACnB,gCAAgC;AAAA;AAAA;AAAA,sBAGf,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA;AAMtC,MAAM,8BAA8B;AAAA,KAC/B,8BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA,IAK/BA,YAAY,MAAM;AAAA,IAClBC,4BAAiB,MAAM;AAAA,IACvB,eAAe;AAAA;AAGnB,MAAM,yBAAyB,CAAC,WAC7B,MAAM;AACL,QAAM,EAAE,SAAS,OAAO,YAAA,IAAgB;AACxC,QAAM,aAAa,WAAW,YAAY;AAC1C,QAAM,mBAAmB,SAAS,cAAc,KAAK;AACrD,QAAM,kBAAkB,SAAS,cAAc,KAAK;AACpD,QAAM,cAAc,MAAM;AACxB,UAAM,iBAAiB,iBAAiB;AAAA,MACtC,IAAID,YAAY,SAAS,SAAS;AAAA,IAAA;AAEpC,UAAME,WAAU,iBAAiB;AAAA,MAC/B,IAAID,4BAAiB,SAAS,SAAS;AAAA,IAAA;AAGzC,QAAIC,UAAS;AACXA,eAAQ,MAAM,QAAQ,GAAG,eAAe,WAAW;AACnDA,eAAQ,MAAM,UAAU;AAAA,IAC1B;AAAA,EACF;AACA,QAAM,cAAc,MAAM;AACxB,gBAAA;AAAA,EACF;AAEA,MAAI,OAAO;AACT,oBAAgB;AAAA,MACdF,YAAY,cAAc;AAAA,QACxB;AAAA,QACA,aAAa;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EAEL;AAEA,QAAM,OAAO,MAAM;AACjB,UAAM,cAAc,MAAM;AACxB,YAAME,WAAU,gBAAgB;AAAA,QAC9B,IAAID,4BAAiB,SAAS,SAAS;AAAA,MAAA;AAGzC,UAAIC,UAAS;AACXA,iBAAQ,MAAM,UAAU;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,iBAAiB,QAAQ,MAAM;AACpC,kBAAA;AAEA,iBAAW,MAAM;AACf,oBAAA;AAAA,MACF,GAAG,GAAG;AAAA,IACR,CAAC;AAAA,EACH;AAEA,MAAI,YAAY;AACd,UAAM,iBAAiBD,4BAAiB,cAAc;AAAA,MACpD;AAAA,MACA;AAAA,IAAA,CACD;AACD,mBAAe,MAAM,UAAU;AAC/B,oBAAgB,YAAY,cAAc;AAAA,EAC5C;AAEA,MAAI,gBAAgB,SAAS,SAAS,GAAG;AACvC,qBAAiB,YAAY,eAAe;AAAA,EAC9C;AAEA,kBAAgB,UAAU,IAAI,gCAAgC;AAC9D,mBAAiB,UAAU,IAAI,8BAA8B;AAE7D,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,SAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,MACN;AAAA,IAAA;AAAA,IAEF,QAAQ;AAAA,EAAA;AAEZ,GAAA;AAEK,MAAM,oCAAoC;"}
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: () => void;
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: () => void;
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;;;;;;;;;;;;;;;;;;;CAItC,CAAC"}
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":"AAEA,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACjC,CAAC;AAoCF,eAAO,MAAM,kCAAkC,UAtBb,2BAA2B;;;CAsBM,CAAC"}
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 { layoutImage } from "../../../layout/image.js";
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
- if (image) {
18
- elementContainer.appendChild(
19
- layoutImage.CreateElement({
20
- image,
21
- showCaption: true
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 { Image as LayoutImage } from 'layout';\n\nexport type TypeMediaInlineRequirements = {\n image?: HTMLImageElement | null;\n};\n\nconst ELEMENT_MEDIA_INLINE_CONTAINER = 'element-media-inline-container';\n\n// prettier-ignore\nconst STYLES_MEDIA_INLINE_ELEMENT = `\n .${ELEMENT_MEDIA_INLINE_CONTAINER} {\n display: block;\n max-width: 100%;\n }\n\n ${LayoutImage.Styles}\n`;\n\nconst CreateMediaInline = (props: TypeMediaInlineRequirements) =>\n (() => {\n const elementContainer = document.createElement('div');\n const { image } = props;\n\n if (image) {\n elementContainer.appendChild(\n LayoutImage.CreateElement({\n image,\n showCaption: true,\n }),\n );\n }\n\n elementContainer.classList.add(ELEMENT_MEDIA_INLINE_CONTAINER);\n\n return {\n element: elementContainer,\n styles: STYLES_MEDIA_INLINE_ELEMENT,\n };\n })();\n\nexport const createCompositeMediaInlineStandard = CreateMediaInline;\n"],"names":["LayoutImage"],"mappings":";;;;AAMA,MAAM,iCAAiC;AAGvC,MAAM,8BAA8B;AAAA,KAC/B,8BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA,IAK/BA,YAAY,MAAM;AAAA;AAGtB,MAAM,oBAAoB,CAAC,WACxB,MAAM;AACL,QAAM,mBAAmB,SAAS,cAAc,KAAK;AACrD,QAAM,EAAE,UAAU;AAElB,MAAI,OAAO;AACT,qBAAiB;AAAA,MACfA,YAAY,cAAc;AAAA,QACxB;AAAA,QACA,aAAa;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EAEL;AAEA,mBAAiB,UAAU,IAAI,8BAA8B;AAE7D,SAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,EAAA;AAEZ,GAAA;AAEK,MAAM,qCAAqC;"}
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: () => void;
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":"AAKA,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;AAkMF,eAAO,MAAM,iCAAiC,UA9IL,kCAAkC;;;;;;CA8IF,CAAC"}
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 elementContainer = document.createElement("div");
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
- const imageContainer = elementContainer.querySelector(
50
- `.${layoutImage.Elements.container}`
51
- );
52
- const caption2 = elementContainer.querySelector(
67
+ if (!imageElement) return;
68
+ const captionContainer = elementContainer.querySelector(
53
69
  `.${createCompositeMediaCaption.Elements.container}`
54
70
  );
55
- if (caption2) {
56
- caption2.style.width = `${imageContainer.offsetWidth}px`;
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({ elementContainer, image });
67
- objectContainer2.style.width = `${objectSize}px`;
68
- objectContainer2.style.display = "inline-block";
69
- objectContainer2.style.textAlign = "left";
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
- objectContainer2.style.float = `right`;
72
- objectContainer2.style.paddingLeft = `${token.spacing.md}`;
87
+ objectContainer.style.float = `right`;
88
+ objectContainer.style.paddingLeft = `${token.spacing.md}`;
73
89
  } else {
74
- objectContainer2.style.float = "left";
75
- objectContainer2.style.paddingRight = `${token.spacing.md}`;
90
+ objectContainer.style.float = "left";
91
+ objectContainer.style.paddingRight = `${token.spacing.md}`;
76
92
  }
77
93
  } else {
78
- objectContainer2.style.width = "100%";
79
- objectContainer2.style.float = "none";
80
- objectContainer2.style.textAlign = "center";
81
- objectContainer2.style.paddingLeft = `0`;
82
- objectContainer2.style.paddingRight = `0`;
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 (hasWrappingtext) {
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 caption2 = objectContainer.querySelector(
114
+ const captionContainer = objectContainer.querySelector(
99
115
  `.${createCompositeMediaCaption.Elements.container}`
100
116
  );
101
- if (caption2) {
102
- caption2.style.opacity = `1`;
117
+ if (captionContainer) {
118
+ captionContainer.style.opacity = `1`;
103
119
  }
104
120
  };
105
- image?.addEventListener("load", () => {
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
- element: elementContainer,
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 { Image as LayoutImage } 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 { spacing } = token;\n\nconst BREAKPOINT = 400;\n\nconst ATTRIBUTE_IS_WRAPPING_TEXT = 'is-wrapping-text';\n\nconst ELEMENT_MEDIA_INLINE_CONTAINER = 'element-media-inline-wrapped-container';\nconst ELEMENT_OBJECT_WRAPPED_CONTAINER = 'element-object-wrapped-container';\n\n// prettier-ignore\nconst ObjectContainer = `\n .${ELEMENT_OBJECT_WRAPPED_CONTAINER} {\n display: inline-block;\n padding-bottom: ${token.spacing.sm};\n max-width: 100%;\n }\n`;\n\n// prettier-ignore\nconst STYLES_MEDIA_INLINE_WRAPPED_ELEMENT = `\n .${ELEMENT_MEDIA_INLINE_CONTAINER} {\n display: inline-block;\n max-width: 100%;\n }\n\n ${LayoutImage.Styles}\n ${CaptionContainer.Styles}\n ${ObjectContainer}\n`;\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\n const elementContainer = document.createElement('div');\n const objectContainer = document.createElement('div');\n const hasWrappingtext = wrappingText && wrappingText !== null;\n const hasCaption = caption && caption !== null;\n const sizeCaption = () => {\n const imageContainer = elementContainer.querySelector(\n `.${LayoutImage.Elements.container}`,\n ) as HTMLElement;\n const caption = elementContainer.querySelector(\n `.${CaptionContainer.Elements.container}`,\n ) as HTMLElement;\n\n if (caption) {\n caption.style.width = `${imageContainer.offsetWidth}px`;\n }\n };\n const sizeObject = () => {\n const isAboveBreakPoint = elementContainer.offsetWidth > BREAKPOINT;\n const objectContainer = elementContainer.querySelector(\n `.${ELEMENT_OBJECT_WRAPPED_CONTAINER}`,\n ) as HTMLElement;\n\n if (!image) return;\n\n if (isAboveBreakPoint) {\n const objectSize = GetObjectSize({ elementContainer, image });\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 const eventResize = () => {\n if (hasWrappingtext) {\n sizeObject();\n }\n if (hasCaption) {\n sizeCaption();\n }\n };\n\n const load = () => {\n const checkSizing = () => {\n const caption = objectContainer.querySelector(\n `.${CaptionContainer.Elements.container}`,\n ) as HTMLElement;\n\n if (caption) {\n caption.style.opacity = `1`;\n }\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 objectContainer.classList.add(ELEMENT_OBJECT_WRAPPED_CONTAINER);\n\n if (image) {\n objectContainer.appendChild(\n LayoutImage.CreateElement({\n image,\n showCaption: true,\n }),\n );\n }\n\n if (hasCaption) {\n const captionElement = CaptionContainer.CreateElement({\n caption,\n isThemeDark,\n });\n captionElement.style.opacity = `0`;\n objectContainer.appendChild(captionElement);\n }\n\n if (objectContainer.children.length > 0) {\n elementContainer.appendChild(objectContainer);\n }\n\n if (hasWrappingtext) {\n elementContainer.appendChild(wrappingText);\n elementContainer.setAttribute(ATTRIBUTE_IS_WRAPPING_TEXT, '');\n setTimeout(() => {\n sizeObject();\n }, 100);\n }\n\n elementContainer.classList.add(ELEMENT_MEDIA_INLINE_CONTAINER);\n\n window.addEventListener(\n 'resize',\n debounce(() => {\n eventResize();\n }, 20),\n );\n\n setTimeout(() => {\n eventResize();\n }, 200);\n\n return {\n element: elementContainer,\n events: {\n load,\n },\n styles: STYLES_MEDIA_INLINE_WRAPPED_ELEMENT,\n };\n })();\n\nexport const createCompositeMediaInlineWrapped = CreateMediaInlineWrapped;\n"],"names":["LayoutImage","CaptionContainer","caption","objectContainer"],"mappings":"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"}
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":";;;;;;AAcA,MAAM,aAAa;AAEnB,MAAM,gBAAgB,CAAC;AAAA,EACrB;AAAA,EACA;AACF,MAGM;AACJ,QAAM,gBAAgB,iBAAiB;AACvC,QAAM,aAAa,MAAM;AACzB,QAAM,eAAe,gBAAgB;AACrC,MAAI,QAAQ;AAEZ,MAAI,cAAc;AAChB,UAAM,iBAAiB,aAAa,gBAAgB;AACpD,QAAI,wBAAwB,gBAAgB;AAAA,EAC9C;AAEA,SAAO;AACT;AAEA,MAAM,2BAA2B,CAAC,WAC/B,MAAM;AACL,QAAM,EAAE,OAAO,kBAAkB,aAAa,SAAS,iBACrD;AACF,QAAM,kBAAkB,gBAAgB,iBAAiB;AACzD,QAAM,aAAa,WAAW,YAAY;AAE1C,QAAM,cAAc,MAAM;AACxB,QAAI,CAAC,OAAO;AACV,cAAQ,KAAK,6CAA6C;AAC1D,aAAO;AAAA,IACT;AACA,WAAO,2BAA2B,EAAE,OAAO,aAAa,MAAM;AAAA,EAChE;AAEA,QAAM,gBAAgB,MAAM;AAC1B,QAAI,CAAC,YAAY;AACf,cAAQ,KAAK,+CAA+C;AAC5D,aAAO;AAAA,IACT;AACA,UAAMA,kBAAiBC,4BAAiB,cAAc,EAAE,SAAS,aAAa;AAC9ED,oBAAe,MAAM,UAAU;AAC/B,WAAOA;AAAAA,EACT;AAEF,QAAM,eAAe,YAAA;AACrB,QAAM,iBAAiB,cAAA;AAErB,QAAM,cAAc,IAAI,eAAA,EACrB,cAAc,kCAAkC,EAChD,WAAW;AAAA,IACV,SAAS;AAAA,MACP,SAAS;AAAA,MACT,eAAe,MAAM,QAAQ;AAAA,MAC7B,UAAU;AAAA,IAAA;AAAA,EACZ,CACD,EACA,UAAU,YAAY,EACtB,UAAU,cAAc,EACxB,MAAA;AAEH,QAAM,kBAAkB,YAAY;AAEpC,QAAM,mBAAmB,IAAI,eAAA,EAC1B,cAAc,wCAAwC,EACtD,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,MAAI,mBAAmB,cAAc;AACnC,qBAAiB,UAAU,YAAY,EAAE,cAAc,oBAAoB,EAAE;AAAA,EAC/E;AAEA,QAAM,iBAAiB,iBAAiB,MAAA;AACxC,QAAM,mBAAmB,eAAe;AAExC,QAAM,cAAc,MAAM;AACxB,QAAI,CAAC,aAAc;AACnB,UAAM,mBAAmB,iBAAiB;AAAA,MACxC,IAAIC,4BAAiB,SAAS,SAAS;AAAA,IAAA;AAGzC,QAAI,kBAAkB;AACpB,uBAAiB,MAAM,QAAQ,GAAG,aAAa,QAAQ,WAAW;AAAA,IACpE;AAAA,EACF;AAEA,QAAM,aAAa,MAAM;AACvB,UAAM,oBAAoB,iBAAiB,cAAc;AAEzD,QAAI,CAAC,MAAO;AAEZ,QAAI,mBAAmB;AACrB,YAAM,aAAa,cAAc;AAAA,QAC/B;AAAA,QACA;AAAA,MAAA,CACD;AAED,sBAAgB,MAAM,QAAQ,GAAG,UAAU;AAC3C,sBAAgB,MAAM,UAAU;AAChC,sBAAgB,MAAM,YAAY;AAElC,UAAI,kBAAkB;AACpB,wBAAgB,MAAM,QAAQ;AAC9B,wBAAgB,MAAM,cAAc,GAAG,MAAM,QAAQ,EAAE;AAAA,MACzD,OAAO;AACL,wBAAgB,MAAM,QAAQ;AAC9B,wBAAgB,MAAM,eAAe,GAAG,MAAM,QAAQ,EAAE;AAAA,MAC1D;AAAA,IACF,OAAO;AACL,sBAAgB,MAAM,QAAQ;AAC9B,sBAAgB,MAAM,QAAQ;AAC9B,sBAAgB,MAAM,YAAY;AAClC,sBAAgB,MAAM,cAAc;AACpC,sBAAgB,MAAM,eAAe;AAAA,IACvC;AAEA,eAAW,MAAM;AACf,kBAAA;AAAA,IACF,GAAG,GAAG;AAAA,EACR;AAEA,QAAM,cAAc,MAAM;AACxB,QAAI,iBAAiB;AACnB,iBAAA;AAAA,IACF;AACA,QAAI,YAAY;AACd,kBAAA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,OAAO,MAAM;AACjB,UAAM,cAAc,MAAM;AACxB,YAAM,mBAAmB,gBAAgB;AAAA,QACvC,IAAIA,4BAAiB,SAAS,SAAS;AAAA,MAAA;AAGzC,UAAI,kBAAkB;AACpB,yBAAiB,MAAM,UAAU;AAAA,MACnC;AAAA,IACF;AAEH,QAAI,CAAC,OAAO;AACP,cAAQ,KAAK,wBAAwB;AACrC,aAAO;AAAA,IACT;AAEA,UAAM,iBAAiB,QAAQ,MAAM;AACnC,kBAAA;AAEA,iBAAW,MAAM;AACf,oBAAA;AAAA,MACF,GAAG,GAAG;AAEN,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,MAAI,iBAAiB;AACnB,eAAW,MAAM;AACf,iBAAA;AAAA,IACF,GAAG,GAAG;AAAA,EACR;AAEA,aAAW,MAAM;AACf,gBAAA;AAAA,EACF,GAAG,GAAG;AAEN,iBAAe,UAAUA,4BAAiB;AAE1C,SAAO;AAAA,IACL,GAAG;AAAA,IACH,QAAQ;AAAA,MACN;AAAA,IAAA;AAAA,EACF;AAEJ,GAAA;AAEK,MAAM,oCAAoC;"}
@@ -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 = `