@universityofmaryland/web-feeds-library 1.0.8 → 1.1.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/academic.d.ts +2 -0
  3. package/dist/academic.js +5 -0
  4. package/dist/academic.js.map +1 -0
  5. package/dist/academic.mjs +5 -0
  6. package/dist/academic.mjs.map +1 -0
  7. package/dist/composite/academic/slider.d.ts +2 -2
  8. package/dist/composite/academic/slider.d.ts.map +1 -1
  9. package/dist/composite/academic/slider.js +34 -0
  10. package/dist/composite/academic/slider.js.map +1 -0
  11. package/dist/composite/academic/slider.mjs +35 -0
  12. package/dist/composite/academic/slider.mjs.map +1 -0
  13. package/dist/composite/events/common/data.d.ts +1 -1
  14. package/dist/composite/events/common/data.d.ts.map +1 -1
  15. package/dist/composite/events/common/data.js +53 -0
  16. package/dist/composite/events/common/data.js.map +1 -0
  17. package/dist/composite/events/common/data.mjs +53 -0
  18. package/dist/composite/events/common/data.mjs.map +1 -0
  19. package/dist/composite/events/common/display.d.ts.map +1 -1
  20. package/dist/composite/events/common/display.js +144 -0
  21. package/dist/composite/events/common/display.js.map +1 -0
  22. package/dist/composite/events/common/display.mjs +127 -0
  23. package/dist/composite/events/common/display.mjs.map +1 -0
  24. package/dist/composite/events/common/fetch.d.ts.map +1 -1
  25. package/dist/composite/events/common/fetch.js +105 -0
  26. package/dist/composite/events/common/fetch.js.map +1 -0
  27. package/dist/composite/events/common/fetch.mjs +105 -0
  28. package/dist/composite/events/common/fetch.mjs.map +1 -0
  29. package/dist/composite/events/common/queries.js +107 -0
  30. package/dist/composite/events/common/queries.js.map +1 -0
  31. package/dist/composite/events/common/queries.mjs +107 -0
  32. package/dist/composite/events/common/queries.mjs.map +1 -0
  33. package/dist/composite/events/grid.d.ts +2 -2
  34. package/dist/composite/events/grid.d.ts.map +1 -1
  35. package/dist/composite/events/grid.js +88 -0
  36. package/dist/composite/events/grid.js.map +1 -0
  37. package/dist/composite/events/grid.mjs +89 -0
  38. package/dist/composite/events/grid.mjs.map +1 -0
  39. package/dist/composite/events/grouped.d.ts +2 -2
  40. package/dist/composite/events/grouped.d.ts.map +1 -1
  41. package/dist/composite/events/grouped.js +221 -0
  42. package/dist/composite/events/grouped.js.map +1 -0
  43. package/dist/composite/events/grouped.mjs +205 -0
  44. package/dist/composite/events/grouped.mjs.map +1 -0
  45. package/dist/composite/events/list.d.ts +2 -2
  46. package/dist/composite/events/list.d.ts.map +1 -1
  47. package/dist/composite/events/list.js +88 -0
  48. package/dist/composite/events/list.js.map +1 -0
  49. package/dist/composite/events/list.mjs +89 -0
  50. package/dist/composite/events/list.mjs.map +1 -0
  51. package/dist/composite/events/slider.d.ts +2 -2
  52. package/dist/composite/events/slider.d.ts.map +1 -1
  53. package/dist/composite/events/slider.js +35 -0
  54. package/dist/composite/events/slider.js.map +1 -0
  55. package/dist/composite/events/slider.mjs +36 -0
  56. package/dist/composite/events/slider.mjs.map +1 -0
  57. package/dist/composite/news/common/data.d.ts +1 -1
  58. package/dist/composite/news/common/data.d.ts.map +1 -1
  59. package/dist/composite/news/common/data.js +62 -0
  60. package/dist/composite/news/common/data.js.map +1 -0
  61. package/dist/composite/news/common/data.mjs +62 -0
  62. package/dist/composite/news/common/data.mjs.map +1 -0
  63. package/dist/composite/news/common/display.d.ts.map +1 -1
  64. package/dist/composite/news/common/display.js +145 -0
  65. package/dist/composite/news/common/display.js.map +1 -0
  66. package/dist/composite/news/common/display.mjs +128 -0
  67. package/dist/composite/news/common/display.mjs.map +1 -0
  68. package/dist/composite/news/common/fetch.d.ts.map +1 -1
  69. package/dist/composite/news/common/fetch.js +85 -0
  70. package/dist/composite/news/common/fetch.js.map +1 -0
  71. package/dist/composite/news/common/fetch.mjs +85 -0
  72. package/dist/composite/news/common/fetch.mjs.map +1 -0
  73. package/dist/composite/news/common/queries.js +37 -0
  74. package/dist/composite/news/common/queries.js.map +1 -0
  75. package/dist/composite/news/common/queries.mjs +37 -0
  76. package/dist/composite/news/common/queries.mjs.map +1 -0
  77. package/dist/composite/news/featured.d.ts +2 -2
  78. package/dist/composite/news/featured.d.ts.map +1 -1
  79. package/dist/composite/news/featured.js +180 -0
  80. package/dist/composite/news/featured.js.map +1 -0
  81. package/dist/composite/news/featured.mjs +181 -0
  82. package/dist/composite/news/featured.mjs.map +1 -0
  83. package/dist/composite/news/grid.d.ts +2 -2
  84. package/dist/composite/news/grid.d.ts.map +1 -1
  85. package/dist/composite/news/grid.js +96 -0
  86. package/dist/composite/news/grid.js.map +1 -0
  87. package/dist/composite/news/grid.mjs +97 -0
  88. package/dist/composite/news/grid.mjs.map +1 -0
  89. package/dist/composite/news/list.d.ts +2 -2
  90. package/dist/composite/news/list.d.ts.map +1 -1
  91. package/dist/composite/news/list.js +83 -0
  92. package/dist/composite/news/list.js.map +1 -0
  93. package/dist/composite/news/list.mjs +84 -0
  94. package/dist/composite/news/list.mjs.map +1 -0
  95. package/dist/elements/asset.d.ts +1 -1
  96. package/dist/elements/asset.d.ts.map +1 -1
  97. package/dist/elements/asset.js +27 -0
  98. package/dist/elements/asset.js.map +1 -0
  99. package/dist/elements/asset.mjs +27 -0
  100. package/dist/elements/asset.mjs.map +1 -0
  101. package/dist/elements/layout.d.ts +1 -1
  102. package/dist/elements/layout.d.ts.map +1 -1
  103. package/dist/elements/layout.js +121 -0
  104. package/dist/elements/layout.js.map +1 -0
  105. package/dist/elements/layout.mjs +104 -0
  106. package/dist/elements/layout.mjs.map +1 -0
  107. package/dist/elements/text.d.ts.map +1 -1
  108. package/dist/elements/text.js +41 -0
  109. package/dist/elements/text.js.map +1 -0
  110. package/dist/elements/text.mjs +41 -0
  111. package/dist/elements/text.mjs.map +1 -0
  112. package/dist/events.d.ts +2 -0
  113. package/dist/events.js +11 -0
  114. package/dist/events.js.map +1 -0
  115. package/dist/events.mjs +11 -0
  116. package/dist/events.mjs.map +1 -0
  117. package/dist/index.js +9 -1
  118. package/dist/index.js.map +1 -0
  119. package/dist/index.mjs +9 -0
  120. package/dist/index.mjs.map +1 -0
  121. package/dist/macros/aria-live.js +25 -0
  122. package/dist/macros/aria-live.js.map +1 -0
  123. package/dist/macros/aria-live.mjs +26 -0
  124. package/dist/macros/aria-live.mjs.map +1 -0
  125. package/dist/macros/lazy-load.js +63 -0
  126. package/dist/macros/lazy-load.js.map +1 -0
  127. package/dist/macros/lazy-load.mjs +47 -0
  128. package/dist/macros/lazy-load.mjs.map +1 -0
  129. package/dist/macros/loader.js +148 -0
  130. package/dist/macros/loader.js.map +1 -0
  131. package/dist/macros/loader.mjs +132 -0
  132. package/dist/macros/loader.mjs.map +1 -0
  133. package/dist/macros/no-results.d.ts.map +1 -1
  134. package/dist/macros/no-results.js +71 -0
  135. package/dist/macros/no-results.js.map +1 -0
  136. package/dist/macros/no-results.mjs +55 -0
  137. package/dist/macros/no-results.mjs.map +1 -0
  138. package/dist/macros/slider.d.ts.map +1 -1
  139. package/dist/macros/slider.js +104 -0
  140. package/dist/macros/slider.js.map +1 -0
  141. package/dist/macros/slider.mjs +88 -0
  142. package/dist/macros/slider.mjs.map +1 -0
  143. package/dist/news.d.ts +2 -0
  144. package/dist/news.js +9 -0
  145. package/dist/news.js.map +1 -0
  146. package/dist/news.mjs +9 -0
  147. package/dist/news.mjs.map +1 -0
  148. package/dist/utilities/events/index.d.ts.map +1 -1
  149. package/dist/utilities/events/index.js +19 -0
  150. package/dist/utilities/events/index.js.map +1 -0
  151. package/dist/utilities/events/index.mjs +19 -0
  152. package/dist/utilities/events/index.mjs.map +1 -0
  153. package/dist/utilities/network/fetch.d.ts.map +1 -1
  154. package/package.json +31 -5
  155. package/dist/composite/academic/__tests__/index.test.d.ts +0 -2
  156. package/dist/composite/academic/__tests__/index.test.d.ts.map +0 -1
  157. package/dist/composite/academic/__tests__/slider.test.d.ts +0 -2
  158. package/dist/composite/academic/__tests__/slider.test.d.ts.map +0 -1
  159. package/dist/composite/events/__tests__/fetch.test.d.ts +0 -2
  160. package/dist/composite/events/__tests__/fetch.test.d.ts.map +0 -1
  161. package/dist/composite/events/__tests__/grid.test.d.ts +0 -2
  162. package/dist/composite/events/__tests__/grid.test.d.ts.map +0 -1
  163. package/dist/composite/events/__tests__/grouped.test.d.ts +0 -2
  164. package/dist/composite/events/__tests__/grouped.test.d.ts.map +0 -1
  165. package/dist/composite/events/__tests__/list.test.d.ts +0 -2
  166. package/dist/composite/events/__tests__/list.test.d.ts.map +0 -1
  167. package/dist/composite/events/__tests__/slider.test.d.ts +0 -2
  168. package/dist/composite/events/__tests__/slider.test.d.ts.map +0 -1
  169. package/dist/composite/news/__tests__/featured.test.d.ts +0 -2
  170. package/dist/composite/news/__tests__/featured.test.d.ts.map +0 -1
  171. package/dist/composite/news/__tests__/grid.test.d.ts +0 -2
  172. package/dist/composite/news/__tests__/grid.test.d.ts.map +0 -1
  173. package/dist/composite/news/__tests__/list.test.d.ts +0 -2
  174. package/dist/composite/news/__tests__/list.test.d.ts.map +0 -1
  175. package/dist/elements/__tests__/asset.test.d.ts +0 -2
  176. package/dist/elements/__tests__/asset.test.d.ts.map +0 -1
  177. package/dist/elements/__tests__/layout.test.d.ts +0 -2
  178. package/dist/elements/__tests__/layout.test.d.ts.map +0 -1
  179. package/dist/elements/__tests__/text.test.d.ts +0 -2
  180. package/dist/elements/__tests__/text.test.d.ts.map +0 -1
  181. package/dist/index.js.LICENSE.txt +0 -143
  182. package/dist/macros/__tests__/aria-live.test.d.ts +0 -2
  183. package/dist/macros/__tests__/aria-live.test.d.ts.map +0 -1
  184. package/dist/macros/__tests__/lazy-load.test.d.ts +0 -2
  185. package/dist/macros/__tests__/lazy-load.test.d.ts.map +0 -1
  186. package/dist/macros/__tests__/loader.test.d.ts +0 -2
  187. package/dist/macros/__tests__/loader.test.d.ts.map +0 -1
  188. package/dist/macros/__tests__/no-results.test.d.ts +0 -2
  189. package/dist/macros/__tests__/no-results.test.d.ts.map +0 -1
  190. package/dist/macros/__tests__/slider.test.d.ts +0 -2
  191. package/dist/macros/__tests__/slider.test.d.ts.map +0 -1
  192. package/dist/utilities/events/__tests__/events.test.d.ts +0 -2
  193. package/dist/utilities/events/__tests__/events.test.d.ts.map +0 -1
  194. package/dist/utilities/network/__tests__/fetch.test.d.ts +0 -2
  195. package/dist/utilities/network/__tests__/fetch.test.d.ts.map +0 -1
@@ -0,0 +1,128 @@
1
+ import * as Styles from "@universityofmaryland/web-styles-library";
2
+ import ariaLive from "../../../macros/aria-live.mjs";
3
+ import lazyLoad from "../../../macros/lazy-load.mjs";
4
+ import loader from "../../../macros/loader.mjs";
5
+ import noResults$1 from "../../../macros/no-results.mjs";
6
+ import "../../../macros/slider.mjs";
7
+ import { load } from "./fetch.mjs";
8
+ import { lazyLoadVariables } from "./data.mjs";
9
+ import { dispatch, eventNames } from "../../../utilities/events/index.mjs";
10
+ const ID_GRID_LAYOUT_CONTAINER = "umd-grid-gap-layout-container";
11
+ const setShadowStyles = async ({
12
+ shadowRoot,
13
+ styles
14
+ }) => {
15
+ const styleElement = document.createElement("style");
16
+ const optimizedCss = await Styles.utilities.transform.css.removeDuplicates(
17
+ styles
18
+ );
19
+ styleElement.textContent = optimizedCss;
20
+ shadowRoot.appendChild(styleElement);
21
+ };
22
+ const noResults = ({
23
+ getContainer,
24
+ getStyles,
25
+ getShadowRoot,
26
+ setStyles,
27
+ message = "No results found",
28
+ linkUrl = "https://today.umd.edu",
29
+ linkText = "View all articles",
30
+ isThemeDark
31
+ }) => {
32
+ const container = getContainer();
33
+ const shadowRoot = getShadowRoot();
34
+ const noResultsContent = noResults$1({
35
+ message,
36
+ linkUrl,
37
+ linkText,
38
+ isThemeDark
39
+ });
40
+ const ariaLiveContent = ariaLive.create({
41
+ message
42
+ });
43
+ container.innerHTML = "";
44
+ container.appendChild(noResultsContent.element);
45
+ container.appendChild(ariaLiveContent);
46
+ setStyles(noResultsContent.styles);
47
+ dispatch(container, eventNames.FEED_ERROR, {
48
+ error: "No results found",
49
+ message
50
+ });
51
+ setTimeout(() => {
52
+ const styles = getStyles();
53
+ if (shadowRoot) {
54
+ setShadowStyles({
55
+ shadowRoot,
56
+ styles
57
+ });
58
+ }
59
+ }, 100);
60
+ };
61
+ const resultLoad = async (props) => {
62
+ const { entries, getContainer, setStyles, setOffset } = props;
63
+ const container = getContainer();
64
+ const grid = container.querySelector(
65
+ `#${ID_GRID_LAYOUT_CONTAINER}`
66
+ );
67
+ loader.remove({ container });
68
+ lazyLoad.remove({ container });
69
+ setOffset(entries.length);
70
+ return new Promise((resolve) => {
71
+ entries.forEach((entry) => {
72
+ grid.appendChild(entry.element);
73
+ setStyles(entry.styles);
74
+ });
75
+ const lazyLoadButton = lazyLoad.create(
76
+ lazyLoadVariables({
77
+ ...props,
78
+ callback: load
79
+ })
80
+ );
81
+ if (lazyLoadButton) {
82
+ container.appendChild(lazyLoadButton.element);
83
+ setStyles(lazyLoadButton.styles);
84
+ }
85
+ resolve();
86
+ });
87
+ };
88
+ const resultStart = (props) => {
89
+ const {
90
+ feedData,
91
+ numberOfColumnsToShow = 1,
92
+ numberOfRowsToStart,
93
+ isLazyLoad,
94
+ displayResults,
95
+ getContainer,
96
+ getTotalEntries,
97
+ setTotalEntries,
98
+ setStyles,
99
+ layoutElement
100
+ } = props;
101
+ const container = getContainer();
102
+ const totalEntries = getTotalEntries();
103
+ const showAmount = numberOfColumnsToShow || 1 * numberOfRowsToStart;
104
+ const message = isLazyLoad ? `Showing ${showAmount} of ${totalEntries} articles` : `Showing ${showAmount} articles`;
105
+ if (totalEntries) setTotalEntries(totalEntries);
106
+ layoutElement.element.setAttribute("id", ID_GRID_LAYOUT_CONTAINER);
107
+ container.appendChild(layoutElement.element);
108
+ setStyles(layoutElement.styles);
109
+ dispatch(container, eventNames.FEED_LOADED, {
110
+ items: feedData,
111
+ count: feedData.length,
112
+ total: totalEntries || feedData.length
113
+ });
114
+ displayResults({ feedData });
115
+ container.appendChild(
116
+ ariaLive.create({
117
+ message
118
+ })
119
+ );
120
+ };
121
+ export {
122
+ ID_GRID_LAYOUT_CONTAINER,
123
+ noResults,
124
+ resultLoad,
125
+ resultStart,
126
+ setShadowStyles
127
+ };
128
+ //# sourceMappingURL=display.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.mjs","sources":["../../../../source/composite/news/common/display.ts"],"sourcesContent":["import * as Styles from '@universityofmaryland/web-styles-library';\nimport * as feedMacros from 'macros';\nimport * as feedFetch from './fetch';\nimport * as dataComposed from './data';\nimport { events } from '../../../utilities';\nimport {\n NoResultsProps,\n DisplayStartResultsProps,\n DisplayProps,\n} from '../_types';\n\ninterface DisplayLoadProps extends DisplayProps {\n entries: { element: HTMLElement; styles: string }[];\n}\n\nexport const ID_GRID_LAYOUT_CONTAINER = 'umd-grid-gap-layout-container';\n\nexport const setShadowStyles = async ({\n shadowRoot,\n styles,\n}: {\n shadowRoot: ShadowRoot;\n styles: string;\n}) => {\n const styleElement = document.createElement('style');\n const optimizedCss = await Styles.utilities.transform.css.removeDuplicates(\n styles,\n );\n styleElement.textContent = optimizedCss;\n shadowRoot.appendChild(styleElement);\n};\n\nexport const noResults = ({\n getContainer,\n getStyles,\n getShadowRoot,\n setStyles,\n message = 'No results found',\n linkUrl = 'https://today.umd.edu',\n linkText = 'View all articles',\n isThemeDark,\n}: NoResultsProps) => {\n const container = getContainer();\n const shadowRoot = getShadowRoot();\n const noResultsContent = feedMacros.noResults({\n message,\n linkUrl,\n linkText,\n isThemeDark,\n });\n const ariaLiveContent = feedMacros.ariaLive.create({\n message,\n });\n\n container.innerHTML = '';\n\n container.appendChild(noResultsContent.element);\n container.appendChild(ariaLiveContent);\n\n setStyles(noResultsContent.styles);\n\n events.dispatch(container, events.eventNames.FEED_ERROR, {\n error: 'No results found',\n message,\n });\n\n setTimeout(() => {\n const styles = getStyles();\n if (shadowRoot) {\n setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n }, 100);\n};\n\nexport const resultLoad = async (props: DisplayLoadProps): Promise<void> => {\n const { entries, getContainer, setStyles, setOffset } = props;\n const container = getContainer();\n const grid = container.querySelector(\n `#${ID_GRID_LAYOUT_CONTAINER}`,\n ) as HTMLDivElement;\n\n feedMacros.loader.remove({ container });\n feedMacros.buttonLazyLoad.remove({ container });\n setOffset(entries.length);\n\n return new Promise<void>((resolve) => {\n entries.forEach((entry) => {\n grid.appendChild(entry.element);\n setStyles(entry.styles);\n });\n\n const lazyLoadButton = feedMacros.buttonLazyLoad.create(\n dataComposed.lazyLoadVariables({\n ...props,\n callback: feedFetch.load,\n }),\n );\n\n if (lazyLoadButton) {\n container.appendChild(lazyLoadButton.element);\n setStyles(lazyLoadButton.styles);\n }\n\n resolve();\n });\n};\n\nexport const resultStart = (props: DisplayStartResultsProps) => {\n const {\n feedData,\n numberOfColumnsToShow = 1,\n numberOfRowsToStart,\n isLazyLoad,\n displayResults,\n getContainer,\n getTotalEntries,\n setTotalEntries,\n setStyles,\n layoutElement,\n } = props;\n\n const container = getContainer();\n const totalEntries = getTotalEntries();\n const showAmount = numberOfColumnsToShow || 1 * numberOfRowsToStart;\n const message = isLazyLoad\n ? `Showing ${showAmount} of ${totalEntries} articles`\n : `Showing ${showAmount} articles`;\n\n if (totalEntries) setTotalEntries(totalEntries);\n\n layoutElement.element.setAttribute('id', ID_GRID_LAYOUT_CONTAINER);\n container.appendChild(layoutElement.element);\n setStyles(layoutElement.styles);\n\n events.dispatch(container, events.eventNames.FEED_LOADED, {\n items: feedData,\n count: feedData.length,\n total: totalEntries || feedData.length,\n });\n\n displayResults({ feedData });\n container.appendChild(\n feedMacros.ariaLive.create({\n message,\n }),\n );\n};\n"],"names":["feedMacros.noResults","feedMacros.ariaLive","events.dispatch","events.eventNames","feedMacros.loader","feedMacros.buttonLazyLoad","dataComposed.lazyLoadVariables","feedFetch.load"],"mappings":";;;;;;;;;AAeO,MAAM,2BAA2B;AAEjC,MAAM,kBAAkB,OAAO;AAAA,EACpC;AAAA,EACA;AACF,MAGM;AACJ,QAAM,eAAe,SAAS,cAAc,OAAO;AACnD,QAAM,eAAe,MAAM,OAAO,UAAU,UAAU,IAAI;AAAA,IACxD;AAAA,EAAA;AAEF,eAAa,cAAc;AAC3B,aAAW,YAAY,YAAY;AACrC;AAEO,MAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX;AACF,MAAsB;AACpB,QAAM,YAAY,aAAA;AAClB,QAAM,aAAa,cAAA;AACnB,QAAM,mBAAmBA,YAAqB;AAAA,IAC5C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AACD,QAAM,kBAAkBC,SAAoB,OAAO;AAAA,IACjD;AAAA,EAAA,CACD;AAED,YAAU,YAAY;AAEtB,YAAU,YAAY,iBAAiB,OAAO;AAC9C,YAAU,YAAY,eAAe;AAErC,YAAU,iBAAiB,MAAM;AAEjCC,WAAgB,WAAWC,WAAkB,YAAY;AAAA,IACvD,OAAO;AAAA,IACP;AAAA,EAAA,CACD;AAED,aAAW,MAAM;AACf,UAAM,SAAS,UAAA;AACf,QAAI,YAAY;AACd,sBAAgB;AAAA,QACd;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IACH;AAAA,EACF,GAAG,GAAG;AACR;AAEO,MAAM,aAAa,OAAO,UAA2C;AAC1E,QAAM,EAAE,SAAS,cAAc,WAAW,cAAc;AACxD,QAAM,YAAY,aAAA;AAClB,QAAM,OAAO,UAAU;AAAA,IACrB,IAAI,wBAAwB;AAAA,EAAA;AAG9BC,SAAkB,OAAO,EAAE,WAAW;AACtCC,WAA0B,OAAO,EAAE,WAAW;AAC9C,YAAU,QAAQ,MAAM;AAExB,SAAO,IAAI,QAAc,CAAC,YAAY;AACpC,YAAQ,QAAQ,CAAC,UAAU;AACzB,WAAK,YAAY,MAAM,OAAO;AAC9B,gBAAU,MAAM,MAAM;AAAA,IACxB,CAAC;AAED,UAAM,iBAAiBA,SAA0B;AAAA,MAC/CC,kBAA+B;AAAA,QAC7B,GAAG;AAAA,QACH,UAAUC;AAAAA,MAAU,CACrB;AAAA,IAAA;AAGH,QAAI,gBAAgB;AAClB,gBAAU,YAAY,eAAe,OAAO;AAC5C,gBAAU,eAAe,MAAM;AAAA,IACjC;AAEA,YAAA;AAAA,EACF,CAAC;AACH;AAEO,MAAM,cAAc,CAAC,UAAoC;AAC9D,QAAM;AAAA,IACJ;AAAA,IACA,wBAAwB;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AAEJ,QAAM,YAAY,aAAA;AAClB,QAAM,eAAe,gBAAA;AACrB,QAAM,aAAa,yBAAyB,IAAI;AAChD,QAAM,UAAU,aACZ,WAAW,UAAU,OAAO,YAAY,cACxC,WAAW,UAAU;AAEzB,MAAI,8BAA8B,YAAY;AAE9C,gBAAc,QAAQ,aAAa,MAAM,wBAAwB;AACjE,YAAU,YAAY,cAAc,OAAO;AAC3C,YAAU,cAAc,MAAM;AAE9BL,WAAgB,WAAWC,WAAkB,aAAa;AAAA,IACxD,OAAO;AAAA,IACP,OAAO,SAAS;AAAA,IAChB,OAAO,gBAAgB,SAAS;AAAA,EAAA,CACjC;AAED,iBAAe,EAAE,UAAU;AAC3B,YAAU;AAAA,IACRF,SAAoB,OAAO;AAAA,MACzB;AAAA,IAAA,CACD;AAAA,EAAA;AAEL;"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../source/composite/news/common/fetch.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EACxB,YAAY,EACb,MAAM,WAAW,CAAC;AAEnB,UAAU,aAAc,SAAQ,YAAY;CAAG;AAE/C,UAAU,WAAY,SAAQ,iBAAiB;IAC7C,kBAAkB,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAC9D,gBAAgB,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,wBAAwB,kCAAkC,CAAC;AAiDxE,eAAO,MAAM,IAAI,UAAiB,aAAa,kBAqB9C,CAAC;AAEF,eAAO,MAAM,KAAK,UAAiB,WAAW,kBAuB7C,CAAC"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../source/composite/news/common/fetch.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EACxB,YAAY,EACb,MAAM,WAAW,CAAC;AAEnB,UAAU,aAAc,SAAQ,YAAY;CAAG;AAE/C,UAAU,WAAY,SAAQ,iBAAiB;IAC7C,kBAAkB,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAC9D,gBAAgB,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,wBAAwB,kCAAkC,CAAC;AAiDxE,eAAO,MAAM,IAAI,GAAU,OAAO,aAAa,kBAqB9C,CAAC;AAEF,eAAO,MAAM,KAAK,GAAU,OAAO,WAAW,kBAuB7C,CAAC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const webElementsLibrary = require("@universityofmaryland/web-elements-library");
4
+ const ariaLive = require("../../../macros/aria-live.js");
5
+ const lazyLoad = require("../../../macros/lazy-load.js");
6
+ const loader = require("../../../macros/loader.js");
7
+ require("@universityofmaryland/web-styles-library");
8
+ require("../../../macros/slider.js");
9
+ const queries = require("./queries.js");
10
+ const data = require("./data.js");
11
+ const getEntries = async ({
12
+ limit,
13
+ not,
14
+ offset,
15
+ related,
16
+ relatedToAll,
17
+ token
18
+ }) => {
19
+ if (!token) throw new Error("Token not found");
20
+ const graceFail = ({ message }) => {
21
+ console.error(message);
22
+ };
23
+ const variables = {
24
+ limit,
25
+ related,
26
+ relatedToAll,
27
+ offset,
28
+ not
29
+ };
30
+ const feedData = await webElementsLibrary.Utilities.network.FetchGraphQL({
31
+ query: queries.ARTICLES_QUERY,
32
+ url: "https://today.umd.edu/graphql",
33
+ token,
34
+ variables
35
+ });
36
+ if (!feedData || !feedData.data || !feedData.data.entries || feedData.message) {
37
+ if (!feedData) graceFail({ message: "Feed not found" });
38
+ if (feedData?.message)
39
+ graceFail({ message: `Feed data errors: ${feedData.message}` });
40
+ return null;
41
+ }
42
+ return {
43
+ entries: feedData.data.entries,
44
+ count: feedData.data.entryCount
45
+ };
46
+ };
47
+ const load = async (props) => {
48
+ const { getContainer, getOffset, displayResults, getTotalEntries } = props;
49
+ const container = getContainer();
50
+ const currentCount = getOffset();
51
+ const totalEntries = getTotalEntries();
52
+ lazyLoad.remove({ container });
53
+ loader.display({ container });
54
+ getEntries(data.apiVariables(props)).then((feedData) => {
55
+ if (feedData) {
56
+ displayResults({ feedData: feedData.entries });
57
+ ariaLive.update({
58
+ container,
59
+ message: `Showing ${currentCount + feedData.entries.length} of ${totalEntries} articles`
60
+ });
61
+ }
62
+ });
63
+ };
64
+ const start = async (props) => {
65
+ const { displayNoResults, displayResultStart, setTotalEntries } = props;
66
+ getEntries(data.apiVariables(props)).then((feedData) => {
67
+ if (!feedData || !feedData.entries) {
68
+ displayNoResults({
69
+ ...props,
70
+ message: "An error occurred while fetching the data."
71
+ });
72
+ return;
73
+ }
74
+ const totalEntries = feedData.count;
75
+ if (totalEntries === 0) {
76
+ displayNoResults({ ...props });
77
+ return;
78
+ }
79
+ setTotalEntries(totalEntries);
80
+ return displayResultStart({ ...props, feedData: feedData.entries });
81
+ });
82
+ };
83
+ exports.load = load;
84
+ exports.start = start;
85
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sources":["../../../../source/composite/news/common/fetch.ts"],"sourcesContent":["import { Utilities } from '@universityofmaryland/web-elements-library';\nimport * as feedMacros from 'macros';\nimport { ARTICLES_QUERY } from './queries';\nimport * as dataComposed from './data';\nimport {\n NoResultsProps,\n DisplayStartProps,\n DisplayStartResultsProps,\n DisplayProps,\n} from '../_types';\n\ninterface LoadMoreProps extends DisplayProps {}\n\ninterface CreateProps extends DisplayStartProps {\n displayResultStart: (props: DisplayStartResultsProps) => void;\n displayNoResults: (props: NoResultsProps) => void;\n}\n\nexport interface TypeFetchVariables {\n related?: string[];\n relatedToAll?: string[];\n limit?: number;\n offset?: number;\n not?: Array<string | number>;\n}\n\nexport interface TypeAPIFeedVariables extends TypeFetchVariables {\n token: string | null;\n}\n\nexport const ID_GRID_LAYOUT_CONTAINER = 'umd-grid-gap-layout-container';\n\nconst getEntries = async ({\n limit,\n not,\n offset,\n related,\n relatedToAll,\n token,\n}: TypeAPIFeedVariables) => {\n if (!token) throw new Error('Token not found');\n const graceFail = ({ message }: { message: string }) => {\n console.error(message);\n };\n\n const variables: TypeFetchVariables = {\n limit,\n related,\n relatedToAll,\n offset,\n not,\n };\n\n const feedData = await Utilities.network.FetchGraphQL({\n query: ARTICLES_QUERY,\n url: 'https://today.umd.edu/graphql',\n token: token,\n variables,\n });\n\n if (\n !feedData ||\n !feedData.data ||\n !feedData.data.entries ||\n feedData.message\n ) {\n if (!feedData) graceFail({ message: 'Feed not found' });\n if (feedData?.message)\n graceFail({ message: `Feed data errors: ${feedData.message}` });\n\n return null;\n }\n\n return {\n entries: feedData.data.entries,\n count: feedData.data.entryCount,\n };\n};\n\nexport const load = async (props: LoadMoreProps) => {\n const { getContainer, getOffset, displayResults, getTotalEntries } = props;\n const container = getContainer();\n const currentCount = getOffset();\n const totalEntries = getTotalEntries();\n\n feedMacros.buttonLazyLoad.remove({ container });\n feedMacros.loader.display({ container });\n\n getEntries(dataComposed.apiVariables(props)).then((feedData) => {\n if (feedData) {\n displayResults({ feedData: feedData.entries });\n\n feedMacros.ariaLive.update({\n container,\n message: `Showing ${\n currentCount + feedData.entries.length\n } of ${totalEntries} articles`,\n });\n }\n });\n};\n\nexport const start = async (props: CreateProps) => {\n const { displayNoResults, displayResultStart, setTotalEntries } = props;\n\n getEntries(dataComposed.apiVariables(props)).then((feedData) => {\n if (!feedData || !feedData.entries) {\n displayNoResults({\n ...props,\n message: 'An error occurred while fetching the data.',\n });\n return;\n }\n\n const totalEntries = feedData.count;\n\n if (totalEntries === 0) {\n displayNoResults({ ...props });\n return;\n }\n\n setTotalEntries(totalEntries);\n\n return displayResultStart({ ...props, feedData: feedData.entries });\n });\n};\n"],"names":["Utilities","ARTICLES_QUERY","feedMacros.buttonLazyLoad","feedMacros.loader","dataComposed.apiVariables","feedMacros.ariaLive"],"mappings":";;;;;;;;;;AAgCA,MAAM,aAAa,OAAO;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA4B;AAC1B,MAAI,CAAC,MAAO,OAAM,IAAI,MAAM,iBAAiB;AAC7C,QAAM,YAAY,CAAC,EAAE,cAAmC;AACtD,YAAQ,MAAM,OAAO;AAAA,EACvB;AAEA,QAAM,YAAgC;AAAA,IACpC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAGF,QAAM,WAAW,MAAMA,6BAAU,QAAQ,aAAa;AAAA,IACpD,OAAOC,QAAAA;AAAAA,IACP,KAAK;AAAA,IACL;AAAA,IACA;AAAA,EAAA,CACD;AAED,MACE,CAAC,YACD,CAAC,SAAS,QACV,CAAC,SAAS,KAAK,WACf,SAAS,SACT;AACA,QAAI,CAAC,SAAU,WAAU,EAAE,SAAS,kBAAkB;AACtD,QAAI,UAAU;AACZ,gBAAU,EAAE,SAAS,qBAAqB,SAAS,OAAO,IAAI;AAEhE,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,SAAS,SAAS,KAAK;AAAA,IACvB,OAAO,SAAS,KAAK;AAAA,EAAA;AAEzB;AAEO,MAAM,OAAO,OAAO,UAAyB;AAClD,QAAM,EAAE,cAAc,WAAW,gBAAgB,oBAAoB;AACrE,QAAM,YAAY,aAAA;AAClB,QAAM,eAAe,UAAA;AACrB,QAAM,eAAe,gBAAA;AAErBC,WAA0B,OAAO,EAAE,WAAW;AAC9CC,SAAkB,QAAQ,EAAE,WAAW;AAEvC,aAAWC,KAAAA,aAA0B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa;AAC9D,QAAI,UAAU;AACZ,qBAAe,EAAE,UAAU,SAAS,QAAA,CAAS;AAE7CC,eAAoB,OAAO;AAAA,QACzB;AAAA,QACA,SAAS,WACP,eAAe,SAAS,QAAQ,MAClC,OAAO,YAAY;AAAA,MAAA,CACpB;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEO,MAAM,QAAQ,OAAO,UAAuB;AACjD,QAAM,EAAE,kBAAkB,oBAAoB,gBAAA,IAAoB;AAElE,aAAWD,KAAAA,aAA0B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa;AAC9D,QAAI,CAAC,YAAY,CAAC,SAAS,SAAS;AAClC,uBAAiB;AAAA,QACf,GAAG;AAAA,QACH,SAAS;AAAA,MAAA,CACV;AACD;AAAA,IACF;AAEA,UAAM,eAAe,SAAS;AAE9B,QAAI,iBAAiB,GAAG;AACtB,uBAAiB,EAAE,GAAG,OAAO;AAC7B;AAAA,IACF;AAEA,oBAAgB,YAAY;AAE5B,WAAO,mBAAmB,EAAE,GAAG,OAAO,UAAU,SAAS,SAAS;AAAA,EACpE,CAAC;AACH;;;"}
@@ -0,0 +1,85 @@
1
+ import { Utilities } from "@universityofmaryland/web-elements-library";
2
+ import ariaLive from "../../../macros/aria-live.mjs";
3
+ import lazyLoad from "../../../macros/lazy-load.mjs";
4
+ import loader from "../../../macros/loader.mjs";
5
+ import "@universityofmaryland/web-styles-library";
6
+ import "../../../macros/slider.mjs";
7
+ import { ARTICLES_QUERY } from "./queries.mjs";
8
+ import { apiVariables } from "./data.mjs";
9
+ const getEntries = async ({
10
+ limit,
11
+ not,
12
+ offset,
13
+ related,
14
+ relatedToAll,
15
+ token
16
+ }) => {
17
+ if (!token) throw new Error("Token not found");
18
+ const graceFail = ({ message }) => {
19
+ console.error(message);
20
+ };
21
+ const variables = {
22
+ limit,
23
+ related,
24
+ relatedToAll,
25
+ offset,
26
+ not
27
+ };
28
+ const feedData = await Utilities.network.FetchGraphQL({
29
+ query: ARTICLES_QUERY,
30
+ url: "https://today.umd.edu/graphql",
31
+ token,
32
+ variables
33
+ });
34
+ if (!feedData || !feedData.data || !feedData.data.entries || feedData.message) {
35
+ if (!feedData) graceFail({ message: "Feed not found" });
36
+ if (feedData?.message)
37
+ graceFail({ message: `Feed data errors: ${feedData.message}` });
38
+ return null;
39
+ }
40
+ return {
41
+ entries: feedData.data.entries,
42
+ count: feedData.data.entryCount
43
+ };
44
+ };
45
+ const load = async (props) => {
46
+ const { getContainer, getOffset, displayResults, getTotalEntries } = props;
47
+ const container = getContainer();
48
+ const currentCount = getOffset();
49
+ const totalEntries = getTotalEntries();
50
+ lazyLoad.remove({ container });
51
+ loader.display({ container });
52
+ getEntries(apiVariables(props)).then((feedData) => {
53
+ if (feedData) {
54
+ displayResults({ feedData: feedData.entries });
55
+ ariaLive.update({
56
+ container,
57
+ message: `Showing ${currentCount + feedData.entries.length} of ${totalEntries} articles`
58
+ });
59
+ }
60
+ });
61
+ };
62
+ const start = async (props) => {
63
+ const { displayNoResults, displayResultStart, setTotalEntries } = props;
64
+ getEntries(apiVariables(props)).then((feedData) => {
65
+ if (!feedData || !feedData.entries) {
66
+ displayNoResults({
67
+ ...props,
68
+ message: "An error occurred while fetching the data."
69
+ });
70
+ return;
71
+ }
72
+ const totalEntries = feedData.count;
73
+ if (totalEntries === 0) {
74
+ displayNoResults({ ...props });
75
+ return;
76
+ }
77
+ setTotalEntries(totalEntries);
78
+ return displayResultStart({ ...props, feedData: feedData.entries });
79
+ });
80
+ };
81
+ export {
82
+ load,
83
+ start
84
+ };
85
+ //# sourceMappingURL=fetch.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.mjs","sources":["../../../../source/composite/news/common/fetch.ts"],"sourcesContent":["import { Utilities } from '@universityofmaryland/web-elements-library';\nimport * as feedMacros from 'macros';\nimport { ARTICLES_QUERY } from './queries';\nimport * as dataComposed from './data';\nimport {\n NoResultsProps,\n DisplayStartProps,\n DisplayStartResultsProps,\n DisplayProps,\n} from '../_types';\n\ninterface LoadMoreProps extends DisplayProps {}\n\ninterface CreateProps extends DisplayStartProps {\n displayResultStart: (props: DisplayStartResultsProps) => void;\n displayNoResults: (props: NoResultsProps) => void;\n}\n\nexport interface TypeFetchVariables {\n related?: string[];\n relatedToAll?: string[];\n limit?: number;\n offset?: number;\n not?: Array<string | number>;\n}\n\nexport interface TypeAPIFeedVariables extends TypeFetchVariables {\n token: string | null;\n}\n\nexport const ID_GRID_LAYOUT_CONTAINER = 'umd-grid-gap-layout-container';\n\nconst getEntries = async ({\n limit,\n not,\n offset,\n related,\n relatedToAll,\n token,\n}: TypeAPIFeedVariables) => {\n if (!token) throw new Error('Token not found');\n const graceFail = ({ message }: { message: string }) => {\n console.error(message);\n };\n\n const variables: TypeFetchVariables = {\n limit,\n related,\n relatedToAll,\n offset,\n not,\n };\n\n const feedData = await Utilities.network.FetchGraphQL({\n query: ARTICLES_QUERY,\n url: 'https://today.umd.edu/graphql',\n token: token,\n variables,\n });\n\n if (\n !feedData ||\n !feedData.data ||\n !feedData.data.entries ||\n feedData.message\n ) {\n if (!feedData) graceFail({ message: 'Feed not found' });\n if (feedData?.message)\n graceFail({ message: `Feed data errors: ${feedData.message}` });\n\n return null;\n }\n\n return {\n entries: feedData.data.entries,\n count: feedData.data.entryCount,\n };\n};\n\nexport const load = async (props: LoadMoreProps) => {\n const { getContainer, getOffset, displayResults, getTotalEntries } = props;\n const container = getContainer();\n const currentCount = getOffset();\n const totalEntries = getTotalEntries();\n\n feedMacros.buttonLazyLoad.remove({ container });\n feedMacros.loader.display({ container });\n\n getEntries(dataComposed.apiVariables(props)).then((feedData) => {\n if (feedData) {\n displayResults({ feedData: feedData.entries });\n\n feedMacros.ariaLive.update({\n container,\n message: `Showing ${\n currentCount + feedData.entries.length\n } of ${totalEntries} articles`,\n });\n }\n });\n};\n\nexport const start = async (props: CreateProps) => {\n const { displayNoResults, displayResultStart, setTotalEntries } = props;\n\n getEntries(dataComposed.apiVariables(props)).then((feedData) => {\n if (!feedData || !feedData.entries) {\n displayNoResults({\n ...props,\n message: 'An error occurred while fetching the data.',\n });\n return;\n }\n\n const totalEntries = feedData.count;\n\n if (totalEntries === 0) {\n displayNoResults({ ...props });\n return;\n }\n\n setTotalEntries(totalEntries);\n\n return displayResultStart({ ...props, feedData: feedData.entries });\n });\n};\n"],"names":["feedMacros.buttonLazyLoad","feedMacros.loader","dataComposed.apiVariables","feedMacros.ariaLive"],"mappings":";;;;;;;;AAgCA,MAAM,aAAa,OAAO;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA4B;AAC1B,MAAI,CAAC,MAAO,OAAM,IAAI,MAAM,iBAAiB;AAC7C,QAAM,YAAY,CAAC,EAAE,cAAmC;AACtD,YAAQ,MAAM,OAAO;AAAA,EACvB;AAEA,QAAM,YAAgC;AAAA,IACpC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAGF,QAAM,WAAW,MAAM,UAAU,QAAQ,aAAa;AAAA,IACpD,OAAO;AAAA,IACP,KAAK;AAAA,IACL;AAAA,IACA;AAAA,EAAA,CACD;AAED,MACE,CAAC,YACD,CAAC,SAAS,QACV,CAAC,SAAS,KAAK,WACf,SAAS,SACT;AACA,QAAI,CAAC,SAAU,WAAU,EAAE,SAAS,kBAAkB;AACtD,QAAI,UAAU;AACZ,gBAAU,EAAE,SAAS,qBAAqB,SAAS,OAAO,IAAI;AAEhE,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,SAAS,SAAS,KAAK;AAAA,IACvB,OAAO,SAAS,KAAK;AAAA,EAAA;AAEzB;AAEO,MAAM,OAAO,OAAO,UAAyB;AAClD,QAAM,EAAE,cAAc,WAAW,gBAAgB,oBAAoB;AACrE,QAAM,YAAY,aAAA;AAClB,QAAM,eAAe,UAAA;AACrB,QAAM,eAAe,gBAAA;AAErBA,WAA0B,OAAO,EAAE,WAAW;AAC9CC,SAAkB,QAAQ,EAAE,WAAW;AAEvC,aAAWC,aAA0B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa;AAC9D,QAAI,UAAU;AACZ,qBAAe,EAAE,UAAU,SAAS,QAAA,CAAS;AAE7CC,eAAoB,OAAO;AAAA,QACzB;AAAA,QACA,SAAS,WACP,eAAe,SAAS,QAAQ,MAClC,OAAO,YAAY;AAAA,MAAA,CACpB;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEO,MAAM,QAAQ,OAAO,UAAuB;AACjD,QAAM,EAAE,kBAAkB,oBAAoB,gBAAA,IAAoB;AAElE,aAAWD,aAA0B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa;AAC9D,QAAI,CAAC,YAAY,CAAC,SAAS,SAAS;AAClC,uBAAiB;AAAA,QACf,GAAG;AAAA,QACH,SAAS;AAAA,MAAA,CACV;AACD;AAAA,IACF;AAEA,UAAM,eAAe,SAAS;AAE9B,QAAI,iBAAiB,GAAG;AACtB,uBAAiB,EAAE,GAAG,OAAO;AAC7B;AAAA,IACF;AAEA,oBAAgB,YAAY;AAE5B,WAAO,mBAAmB,EAAE,GAAG,OAAO,UAAU,SAAS,SAAS;AAAA,EACpE,CAAC;AACH;"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const ARTICLES_QUERY = `
4
+ query getArticles($related: [QueryArgument], $relatedToAll: [QueryArgument], $limit: Int, $offset: Int, $not: [QueryArgument]) {
5
+ entryCount(section: "articles", relatedTo: $related,relatedToAll: $relatedToAll)
6
+ entries(
7
+ section: "articles",
8
+ relatedTo: $related,
9
+ relatedToAll: $relatedToAll,
10
+ limit: $limit,
11
+ offset: $offset,
12
+ id: $not
13
+ ) {
14
+ ... on articles_today_Entry {
15
+ id
16
+ title
17
+ date: postDate
18
+ dateFormatted: postDate @formatDateTime(format: "M d, Y")
19
+ summary: genericText
20
+ url
21
+ image:articlesHeroImage {
22
+ url
23
+ ... on hero_Asset {
24
+ id
25
+ altText: genericText
26
+ }
27
+ }
28
+ categories:categoryTodaySectionMultiple {
29
+ title
30
+ url
31
+ }
32
+ }
33
+ }
34
+ }
35
+ `;
36
+ exports.ARTICLES_QUERY = ARTICLES_QUERY;
37
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sources":["../../../../source/composite/news/common/queries.ts"],"sourcesContent":["export const ARTICLES_QUERY = `\n query getArticles($related: [QueryArgument], $relatedToAll: [QueryArgument], $limit: Int, $offset: Int, $not: [QueryArgument]) {\n entryCount(section: \"articles\", relatedTo: $related,relatedToAll: $relatedToAll)\n entries(\n section: \"articles\",\n relatedTo: $related,\n relatedToAll: $relatedToAll,\n limit: $limit,\n offset: $offset,\n id: $not\n ) {\n ... on articles_today_Entry {\n id\n title\n date: postDate\n dateFormatted: postDate @formatDateTime(format: \"M d, Y\")\n summary: genericText\n url\n image:articlesHeroImage {\n url\n ... on hero_Asset {\n id\n altText: genericText\n }\n }\n categories:categoryTodaySectionMultiple {\n title\n url\n }\n }\n }\n }\n`;\n"],"names":[],"mappings":";;AAAO,MAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;"}
@@ -0,0 +1,37 @@
1
+ const ARTICLES_QUERY = `
2
+ query getArticles($related: [QueryArgument], $relatedToAll: [QueryArgument], $limit: Int, $offset: Int, $not: [QueryArgument]) {
3
+ entryCount(section: "articles", relatedTo: $related,relatedToAll: $relatedToAll)
4
+ entries(
5
+ section: "articles",
6
+ relatedTo: $related,
7
+ relatedToAll: $relatedToAll,
8
+ limit: $limit,
9
+ offset: $offset,
10
+ id: $not
11
+ ) {
12
+ ... on articles_today_Entry {
13
+ id
14
+ title
15
+ date: postDate
16
+ dateFormatted: postDate @formatDateTime(format: "M d, Y")
17
+ summary: genericText
18
+ url
19
+ image:articlesHeroImage {
20
+ url
21
+ ... on hero_Asset {
22
+ id
23
+ altText: genericText
24
+ }
25
+ }
26
+ categories:categoryTodaySectionMultiple {
27
+ title
28
+ url
29
+ }
30
+ }
31
+ }
32
+ }
33
+ `;
34
+ export {
35
+ ARTICLES_QUERY
36
+ };
37
+ //# sourceMappingURL=queries.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.mjs","sources":["../../../../source/composite/news/common/queries.ts"],"sourcesContent":["export const ARTICLES_QUERY = `\n query getArticles($related: [QueryArgument], $relatedToAll: [QueryArgument], $limit: Int, $offset: Int, $not: [QueryArgument]) {\n entryCount(section: \"articles\", relatedTo: $related,relatedToAll: $relatedToAll)\n entries(\n section: \"articles\",\n relatedTo: $related,\n relatedToAll: $relatedToAll,\n limit: $limit,\n offset: $offset,\n id: $not\n ) {\n ... on articles_today_Entry {\n id\n title\n date: postDate\n dateFormatted: postDate @formatDateTime(format: \"M d, Y\")\n summary: genericText\n url\n image:articlesHeroImage {\n url\n ... on hero_Asset {\n id\n altText: genericText\n }\n }\n categories:categoryTodaySectionMultiple {\n title\n url\n }\n }\n }\n }\n`;\n"],"names":[],"mappings":"AAAO,MAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1,5 +1,5 @@
1
- import { type FeaturedProps } from './_types';
2
- import { type ElementModel } from '../../_types';
1
+ import { FeaturedProps } from './_types';
2
+ import { ElementModel } from '../../_types';
3
3
  declare const _default: (props: FeaturedProps) => ElementModel;
4
4
  export default _default;
5
5
  //# sourceMappingURL=featured.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"featured.d.ts","sourceRoot":"","sources":["../../../source/composite/news/featured.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;gCAE1B,aAAa,KAAG,YAAY;AAAnD,wBAgMO"}
1
+ {"version":3,"file":"featured.d.ts","sourceRoot":"","sources":["../../../source/composite/news/featured.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;yBAEjC,OAAO,aAAa,KAAG,YAAY;AAAnD,wBAgMO"}
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ const webElementsLibrary = require("@universityofmaryland/web-elements-library");
3
+ const asset = require("../../elements/asset.js");
4
+ const layout = require("../../elements/layout.js");
5
+ const ariaLive = require("../../macros/aria-live.js");
6
+ require("@universityofmaryland/web-styles-library");
7
+ const loader = require("../../macros/loader.js");
8
+ require("../../macros/slider.js");
9
+ const fetch = require("./common/fetch.js");
10
+ const display = require("./common/display.js");
11
+ const data = require("./common/data.js");
12
+ const featured = (props) => (() => {
13
+ const {
14
+ isThemeDark,
15
+ isLazyLoad,
16
+ isLayoutReversed,
17
+ isTransparent,
18
+ overwriteStickyPosition
19
+ } = props;
20
+ const loader$1 = loader.create({ isThemeDark });
21
+ const container = document.createElement("div");
22
+ const setTotalEntries = (count) => totalEntries = count;
23
+ const setOffset = (count) => offset = offset + count;
24
+ const setStyles = (additonalStyles) => styles += additonalStyles;
25
+ const getContainer = () => container;
26
+ const getTotalEntries = () => totalEntries;
27
+ const getOffset = () => offset;
28
+ const getStyles = () => styles;
29
+ const getShadowRoot = () => shadowRoot;
30
+ let numberOfColumnsToShow = 3;
31
+ let totalEntries = 0;
32
+ let offset = 0;
33
+ let styles = `
34
+ ${loader$1.styles}
35
+ `;
36
+ let shadowRoot = null;
37
+ const helperFunctions = {
38
+ setTotalEntries,
39
+ setOffset,
40
+ setStyles,
41
+ getContainer,
42
+ getOffset,
43
+ getTotalEntries,
44
+ getStyles,
45
+ getShadowRoot
46
+ };
47
+ const callback = (shadow) => {
48
+ shadowRoot = shadow;
49
+ };
50
+ const setPosition = (position) => {
51
+ const overlayElement = container.querySelector(
52
+ `.${webElementsLibrary.Composite.card.overlay.imageClassRef}`
53
+ );
54
+ if (overlayElement) overlayElement.style.top = `${position}px`;
55
+ };
56
+ const layoutElement = layout.gridGap({ count: 2 });
57
+ const displayGridOffsetResults = async ({ feedData }) => {
58
+ let entries = [];
59
+ if (feedData.length >= 2) {
60
+ const offsetLayout = layout.gridOffsetGap({
61
+ count: 2,
62
+ isLayoutReversed,
63
+ overwriteStickyPosition
64
+ });
65
+ const firstEntry = feedData[0];
66
+ const overlayCard = webElementsLibrary.Composite.card.overlay.image({
67
+ ...data.display({ entry: firstEntry }),
68
+ backgroundImage: asset.standard({
69
+ images: firstEntry.image,
70
+ url: firstEntry.url
71
+ })
72
+ });
73
+ offsetLayout.element.appendChild(overlayCard.element);
74
+ offsetLayout.element.appendChild(layoutElement.element);
75
+ container.appendChild(offsetLayout.element);
76
+ setStyles(offsetLayout.styles);
77
+ setStyles(overlayCard.styles);
78
+ entries = feedData.slice(1, 3).map(
79
+ (entry) => webElementsLibrary.Composite.card.block({
80
+ ...data.display({ entry, isThemeDark }),
81
+ image: asset.standard({
82
+ images: entry.image,
83
+ url: entry.url
84
+ }),
85
+ isAligned: true,
86
+ isTransparent
87
+ })
88
+ );
89
+ } else {
90
+ entries = feedData.map(
91
+ (entry) => webElementsLibrary.Composite.card.overlay.image({
92
+ ...data.display({ entry, isThemeDark }),
93
+ backgroundImage: asset.standard({
94
+ images: entry.image,
95
+ url: entry.url
96
+ })
97
+ })
98
+ );
99
+ container.appendChild(layoutElement.element);
100
+ }
101
+ await display.resultLoad({
102
+ ...props,
103
+ ...helperFunctions,
104
+ numberOfColumnsToShow: 2,
105
+ displayResults,
106
+ entries
107
+ });
108
+ if (shadowRoot) {
109
+ display.setShadowStyles({
110
+ shadowRoot,
111
+ styles
112
+ });
113
+ }
114
+ };
115
+ const displayResults = async ({ feedData }) => {
116
+ const entries = feedData.map(
117
+ (entry) => webElementsLibrary.Composite.card.block({
118
+ ...data.display({ entry, isThemeDark }),
119
+ image: asset.standard({
120
+ images: entry.image,
121
+ url: entry.url
122
+ }),
123
+ isAligned: true,
124
+ isTransparent
125
+ })
126
+ );
127
+ await display.resultLoad({
128
+ ...props,
129
+ ...helperFunctions,
130
+ numberOfColumnsToShow: 2,
131
+ displayResults,
132
+ entries
133
+ });
134
+ if (shadowRoot) {
135
+ display.setShadowStyles({
136
+ shadowRoot,
137
+ styles
138
+ });
139
+ }
140
+ };
141
+ const resultStart = (props2) => {
142
+ const { feedData, setOffset: setOffset2, getOffset: getOffset2 } = props2;
143
+ const totalEntries2 = getTotalEntries();
144
+ const showAmount = 3;
145
+ const message = isLazyLoad ? `Showing ${showAmount} of ${totalEntries2} articles` : `Showing ${showAmount} articles`;
146
+ setOffset2(getOffset2() + 1);
147
+ if (totalEntries2) setTotalEntries(totalEntries2);
148
+ layoutElement.element.setAttribute(
149
+ "id",
150
+ display.ID_GRID_LAYOUT_CONTAINER
151
+ );
152
+ setStyles(layoutElement.styles);
153
+ displayGridOffsetResults({ feedData });
154
+ container.appendChild(
155
+ ariaLive.create({
156
+ message
157
+ })
158
+ );
159
+ };
160
+ container.appendChild(loader$1.element);
161
+ fetch.start({
162
+ ...props,
163
+ ...helperFunctions,
164
+ numberOfColumnsToShow,
165
+ displayResults,
166
+ displayResultStart: resultStart,
167
+ displayNoResults: display.noResults,
168
+ layoutElement
169
+ });
170
+ return {
171
+ element: container,
172
+ styles,
173
+ events: {
174
+ callback,
175
+ setPosition
176
+ }
177
+ };
178
+ })();
179
+ module.exports = featured;
180
+ //# sourceMappingURL=featured.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"featured.js","sources":["../../../source/composite/news/featured.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport * as feedElements from 'elements';\nimport * as feedMacros from 'macros';\nimport * as feedFetch from './common/fetch';\nimport * as feedDisplay from './common/display';\nimport * as dataComposed from './common/data';\nimport {\n type DisplayStartResultsProps,\n type FeaturedProps,\n type FeedDisplay,\n} from './_types';\nimport { type ElementModel } from '../../_types';\n\nexport default (props: FeaturedProps): ElementModel =>\n (() => {\n const {\n isThemeDark,\n isLazyLoad,\n isLayoutReversed,\n isTransparent,\n overwriteStickyPosition,\n } = props;\n const loader = feedMacros.loader.create({ isThemeDark });\n const container = document.createElement('div');\n const setTotalEntries = (count: number) => (totalEntries = count);\n const setOffset = (count: number) => (offset = offset + count);\n const setStyles = (additonalStyles: string) => (styles += additonalStyles);\n const getContainer = () => container;\n const getTotalEntries = () => totalEntries;\n const getOffset = () => offset;\n const getStyles = () => styles;\n const getShadowRoot = () => shadowRoot;\n let numberOfColumnsToShow = 3;\n let totalEntries = 0;\n let offset = 0;\n let styles = `\n ${loader.styles}\n `;\n let shadowRoot: ShadowRoot | null = null;\n\n const helperFunctions = {\n setTotalEntries,\n setOffset,\n setStyles,\n getContainer,\n getOffset,\n getTotalEntries,\n getStyles,\n getShadowRoot,\n };\n\n const callback = (shadow: ShadowRoot) => {\n shadowRoot = shadow;\n };\n const setPosition = (position: number) => {\n const overlayElement = container.querySelector(\n `.${Composite.card.overlay.imageClassRef}`,\n ) as HTMLElement;\n if (overlayElement) overlayElement.style.top = `${position}px`;\n };\n\n const layoutElement = feedElements.layout.gridGap({ count: 2 });\n\n const displayGridOffsetResults = async ({ feedData }: FeedDisplay) => {\n let entries = [];\n\n if (feedData.length >= 2) {\n const offsetLayout = feedElements.layout.gridOffsetGap({\n count: 2,\n isLayoutReversed,\n overwriteStickyPosition,\n });\n const firstEntry = feedData[0];\n const overlayCard = Composite.card.overlay.image({\n ...dataComposed.display({ entry: firstEntry }),\n backgroundImage: feedElements.asset.standard({\n images: firstEntry.image,\n url: firstEntry.url,\n }),\n });\n\n offsetLayout.element.appendChild(overlayCard.element);\n offsetLayout.element.appendChild(layoutElement.element);\n container.appendChild(offsetLayout.element);\n setStyles(offsetLayout.styles);\n setStyles(overlayCard.styles);\n\n entries = feedData.slice(1, 3).map((entry) =>\n Composite.card.block({\n ...dataComposed.display({ entry, isThemeDark }),\n image: feedElements.asset.standard({\n images: entry.image,\n url: entry.url,\n }),\n isAligned: true,\n isTransparent,\n }),\n );\n } else {\n entries = feedData.map((entry) =>\n Composite.card.overlay.image({\n ...dataComposed.display({ entry, isThemeDark }),\n backgroundImage: feedElements.asset.standard({\n images: entry.image,\n url: entry.url,\n }),\n }),\n );\n\n container.appendChild(layoutElement.element);\n }\n\n await feedDisplay.resultLoad({\n ...props,\n ...helperFunctions,\n numberOfColumnsToShow: 2,\n displayResults,\n entries,\n });\n\n if (shadowRoot) {\n feedDisplay.setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n };\n\n const displayResults = async ({ feedData }: FeedDisplay) => {\n const entries = feedData.map((entry) =>\n Composite.card.block({\n ...dataComposed.display({ entry, isThemeDark }),\n image: feedElements.asset.standard({\n images: entry.image,\n url: entry.url,\n }),\n isAligned: true,\n isTransparent,\n }),\n );\n\n await feedDisplay.resultLoad({\n ...props,\n ...helperFunctions,\n numberOfColumnsToShow: 2,\n displayResults,\n entries,\n });\n\n if (shadowRoot) {\n feedDisplay.setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n };\n\n const resultStart = (props: DisplayStartResultsProps) => {\n const { feedData, setOffset, getOffset } = props;\n const totalEntries = getTotalEntries();\n const showAmount = 3;\n const message = isLazyLoad\n ? `Showing ${showAmount} of ${totalEntries} articles`\n : `Showing ${showAmount} articles`;\n\n setOffset(getOffset() + 1);\n\n if (totalEntries) setTotalEntries(totalEntries);\n\n layoutElement.element.setAttribute(\n 'id',\n feedDisplay.ID_GRID_LAYOUT_CONTAINER,\n );\n\n setStyles(layoutElement.styles);\n\n displayGridOffsetResults({ feedData });\n\n container.appendChild(\n feedMacros.ariaLive.create({\n message,\n }),\n );\n };\n\n container.appendChild(loader.element);\n\n feedFetch.start({\n ...props,\n ...helperFunctions,\n numberOfColumnsToShow,\n displayResults,\n displayResultStart: resultStart,\n displayNoResults: feedDisplay.noResults,\n layoutElement,\n });\n\n return {\n element: container,\n styles,\n events: {\n callback,\n setPosition,\n },\n };\n })();\n"],"names":["loader","feedMacros.loader","Composite","feedElements.layout.gridGap","feedElements.layout.gridOffsetGap","dataComposed.display","feedElements.asset.standard","feedDisplay.resultLoad","feedDisplay.setShadowStyles","props","setOffset","getOffset","totalEntries","feedDisplay.ID_GRID_LAYOUT_CONTAINER","feedMacros.ariaLive","feedFetch.start","feedDisplay.noResults"],"mappings":";;;;;;;;;;;AAaA,MAAA,WAAe,CAAC,WACb,MAAM;AACL,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AACJ,QAAMA,WAASC,OAAkB,OAAO,EAAE,aAAa;AACvD,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,QAAM,kBAAkB,CAAC,UAAmB,eAAe;AAC3D,QAAM,YAAY,CAAC,UAAmB,SAAS,SAAS;AACxD,QAAM,YAAY,CAAC,oBAA6B,UAAU;AAC1D,QAAM,eAAe,MAAM;AAC3B,QAAM,kBAAkB,MAAM;AAC9B,QAAM,YAAY,MAAM;AACxB,QAAM,YAAY,MAAM;AACxB,QAAM,gBAAgB,MAAM;AAC5B,MAAI,wBAAwB;AAC5B,MAAI,eAAe;AACnB,MAAI,SAAS;AACb,MAAI,SAAS;AAAA,QACTD,SAAO,MAAM;AAAA;AAEjB,MAAI,aAAgC;AAEpC,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAGF,QAAM,WAAW,CAAC,WAAuB;AACvC,iBAAa;AAAA,EACf;AACA,QAAM,cAAc,CAAC,aAAqB;AACxC,UAAM,iBAAiB,UAAU;AAAA,MAC/B,IAAIE,mBAAAA,UAAU,KAAK,QAAQ,aAAa;AAAA,IAAA;AAE1C,QAAI,eAAgB,gBAAe,MAAM,MAAM,GAAG,QAAQ;AAAA,EAC5D;AAEA,QAAM,gBAAgBC,OAAAA,QAA4B,EAAE,OAAO,GAAG;AAE9D,QAAM,2BAA2B,OAAO,EAAE,eAA4B;AACpE,QAAI,UAAU,CAAA;AAEd,QAAI,SAAS,UAAU,GAAG;AACxB,YAAM,eAAeC,OAAAA,cAAkC;AAAA,QACrD,OAAO;AAAA,QACP;AAAA,QACA;AAAA,MAAA,CACD;AACD,YAAM,aAAa,SAAS,CAAC;AAC7B,YAAM,cAAcF,mBAAAA,UAAU,KAAK,QAAQ,MAAM;AAAA,QAC/C,GAAGG,aAAqB,EAAE,OAAO,YAAY;AAAA,QAC7C,iBAAiBC,MAAAA,SAA4B;AAAA,UAC3C,QAAQ,WAAW;AAAA,UACnB,KAAK,WAAW;AAAA,QAAA,CACjB;AAAA,MAAA,CACF;AAED,mBAAa,QAAQ,YAAY,YAAY,OAAO;AACpD,mBAAa,QAAQ,YAAY,cAAc,OAAO;AACtD,gBAAU,YAAY,aAAa,OAAO;AAC1C,gBAAU,aAAa,MAAM;AAC7B,gBAAU,YAAY,MAAM;AAE5B,gBAAU,SAAS,MAAM,GAAG,CAAC,EAAE;AAAA,QAAI,CAAC,UAClCJ,mBAAAA,UAAU,KAAK,MAAM;AAAA,UACnB,GAAGG,aAAqB,EAAE,OAAO,aAAa;AAAA,UAC9C,OAAOC,MAAAA,SAA4B;AAAA,YACjC,QAAQ,MAAM;AAAA,YACd,KAAK,MAAM;AAAA,UAAA,CACZ;AAAA,UACD,WAAW;AAAA,UACX;AAAA,QAAA,CACD;AAAA,MAAA;AAAA,IAEL,OAAO;AACL,gBAAU,SAAS;AAAA,QAAI,CAAC,UACtBJ,mBAAAA,UAAU,KAAK,QAAQ,MAAM;AAAA,UAC3B,GAAGG,aAAqB,EAAE,OAAO,aAAa;AAAA,UAC9C,iBAAiBC,MAAAA,SAA4B;AAAA,YAC3C,QAAQ,MAAM;AAAA,YACd,KAAK,MAAM;AAAA,UAAA,CACZ;AAAA,QAAA,CACF;AAAA,MAAA;AAGH,gBAAU,YAAY,cAAc,OAAO;AAAA,IAC7C;AAEA,UAAMC,mBAAuB;AAAA,MAC3B,GAAG;AAAA,MACH,GAAG;AAAA,MACH,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,IAAA,CACD;AAED,QAAI,YAAY;AACdC,8BAA4B;AAAA,QAC1B;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IACH;AAAA,EACF;AAEA,QAAM,iBAAiB,OAAO,EAAE,eAA4B;AAC1D,UAAM,UAAU,SAAS;AAAA,MAAI,CAAC,UAC5BN,mBAAAA,UAAU,KAAK,MAAM;AAAA,QACnB,GAAGG,aAAqB,EAAE,OAAO,aAAa;AAAA,QAC9C,OAAOC,MAAAA,SAA4B;AAAA,UACjC,QAAQ,MAAM;AAAA,UACd,KAAK,MAAM;AAAA,QAAA,CACZ;AAAA,QACD,WAAW;AAAA,QACX;AAAA,MAAA,CACD;AAAA,IAAA;AAGH,UAAMC,mBAAuB;AAAA,MAC3B,GAAG;AAAA,MACH,GAAG;AAAA,MACH,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,IAAA,CACD;AAED,QAAI,YAAY;AACdC,8BAA4B;AAAA,QAC1B;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IACH;AAAA,EACF;AAEA,QAAM,cAAc,CAACC,WAAoC;AACvD,UAAM,EAAE,UAAU,WAAAC,YAAW,WAAAC,eAAcF;AAC3C,UAAMG,gBAAe,gBAAA;AACrB,UAAM,aAAa;AACnB,UAAM,UAAU,aACZ,WAAW,UAAU,OAAOA,aAAY,cACxC,WAAW,UAAU;AAEzBF,eAAUC,WAAAA,IAAc,CAAC;AAEzB,QAAIC,+BAA8BA,aAAY;AAE9C,kBAAc,QAAQ;AAAA,MACpB;AAAA,MACAC,QAAAA;AAAAA,IAAY;AAGd,cAAU,cAAc,MAAM;AAE9B,6BAAyB,EAAE,UAAU;AAErC,cAAU;AAAA,MACRC,SAAoB,OAAO;AAAA,QACzB;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL;AAEA,YAAU,YAAYd,SAAO,OAAO;AAEpCe,cAAgB;AAAA,IACd,GAAG;AAAA,IACH,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA,oBAAoB;AAAA,IACpB,kBAAkBC,QAAAA;AAAAA,IAClB;AAAA,EAAA,CACD;AAED,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEJ,GAAA;;"}