@universityofmaryland/web-feeds-library 1.2.6 → 1.3.0-beta.1

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 (386) hide show
  1. package/README.md +1 -1
  2. package/dist/academic.d.ts +1 -1
  3. package/dist/academic.js +4 -4
  4. package/dist/academic.js.map +1 -1
  5. package/dist/events.d.ts +1 -1
  6. package/dist/events.js +10 -10
  7. package/dist/events.js.map +1 -1
  8. package/dist/experts.d.ts +2 -0
  9. package/dist/experts.js +9 -0
  10. package/dist/experts.js.map +1 -0
  11. package/dist/factory/core/createBaseFeed.d.ts +3 -0
  12. package/dist/factory/core/createBaseFeed.d.ts.map +1 -0
  13. package/dist/factory/core/createBaseFeed.js +116 -0
  14. package/dist/factory/core/createBaseFeed.js.map +1 -0
  15. package/dist/factory/core/index.d.ts +3 -0
  16. package/dist/factory/core/index.d.ts.map +1 -0
  17. package/dist/factory/core/types.d.ts +92 -0
  18. package/dist/factory/core/types.d.ts.map +1 -0
  19. package/dist/factory/helpers/displayHandler.d.ts +29 -0
  20. package/dist/factory/helpers/displayHandler.d.ts.map +1 -0
  21. package/dist/factory/helpers/displayHandler.js +169 -0
  22. package/dist/factory/helpers/displayHandler.js.map +1 -0
  23. package/dist/factory/helpers/feedHelpers.d.ts +10 -0
  24. package/dist/factory/helpers/feedHelpers.d.ts.map +1 -0
  25. package/dist/factory/helpers/feedHelpers.js +32 -0
  26. package/dist/factory/helpers/feedHelpers.js.map +1 -0
  27. package/dist/factory/helpers/fetchHandler.d.ts +22 -0
  28. package/dist/factory/helpers/fetchHandler.d.ts.map +1 -0
  29. package/dist/factory/helpers/fetchHandler.js +123 -0
  30. package/dist/factory/helpers/fetchHandler.js.map +1 -0
  31. package/dist/factory/helpers/index.d.ts +4 -0
  32. package/dist/factory/helpers/index.d.ts.map +1 -0
  33. package/dist/factory/index.d.ts +4 -0
  34. package/dist/factory/index.d.ts.map +1 -0
  35. package/dist/feeds/academic/_types.d.ts.map +1 -0
  36. package/dist/feeds/academic/index.d.ts +2 -0
  37. package/dist/feeds/academic/index.d.ts.map +1 -0
  38. package/dist/feeds/academic/slider.d.ts +4 -0
  39. package/dist/feeds/academic/slider.d.ts.map +1 -0
  40. package/dist/feeds/academic/slider.js +11 -0
  41. package/dist/feeds/academic/slider.js.map +1 -0
  42. package/dist/feeds/events/_types.d.ts.map +1 -0
  43. package/dist/feeds/events/grid.d.ts +4 -0
  44. package/dist/feeds/events/grid.d.ts.map +1 -0
  45. package/dist/feeds/events/grid.js +32 -0
  46. package/dist/feeds/events/grid.js.map +1 -0
  47. package/dist/feeds/events/grouped.d.ts +4 -0
  48. package/dist/feeds/events/grouped.d.ts.map +1 -0
  49. package/dist/feeds/events/grouped.js +337 -0
  50. package/dist/feeds/events/grouped.js.map +1 -0
  51. package/dist/feeds/events/index.d.ts +5 -0
  52. package/dist/feeds/events/index.d.ts.map +1 -0
  53. package/dist/feeds/events/list.d.ts +4 -0
  54. package/dist/feeds/events/list.d.ts.map +1 -0
  55. package/dist/feeds/events/list.js +33 -0
  56. package/dist/feeds/events/list.js.map +1 -0
  57. package/dist/feeds/events/slider.d.ts +4 -0
  58. package/dist/feeds/events/slider.d.ts.map +1 -0
  59. package/dist/feeds/events/slider.js +11 -0
  60. package/dist/feeds/events/slider.js.map +1 -0
  61. package/dist/feeds/experts/_types.d.ts +23 -0
  62. package/dist/feeds/experts/_types.d.ts.map +1 -0
  63. package/dist/feeds/experts/bio.d.ts +4 -0
  64. package/dist/feeds/experts/bio.d.ts.map +1 -0
  65. package/dist/feeds/experts/bio.js +147 -0
  66. package/dist/feeds/experts/bio.js.map +1 -0
  67. package/dist/feeds/experts/grid.d.ts +4 -0
  68. package/dist/feeds/experts/grid.d.ts.map +1 -0
  69. package/dist/feeds/experts/grid.js +37 -0
  70. package/dist/feeds/experts/grid.js.map +1 -0
  71. package/dist/feeds/experts/index.d.ts +4 -0
  72. package/dist/feeds/experts/index.d.ts.map +1 -0
  73. package/dist/feeds/experts/list.d.ts +4 -0
  74. package/dist/feeds/experts/list.d.ts.map +1 -0
  75. package/dist/feeds/experts/list.js +26 -0
  76. package/dist/feeds/experts/list.js.map +1 -0
  77. package/dist/feeds/news/_types.d.ts.map +1 -0
  78. package/dist/feeds/news/featured.d.ts +4 -0
  79. package/dist/feeds/news/featured.d.ts.map +1 -0
  80. package/dist/feeds/news/featured.js +379 -0
  81. package/dist/feeds/news/featured.js.map +1 -0
  82. package/dist/feeds/news/grid.d.ts +4 -0
  83. package/dist/feeds/news/grid.d.ts.map +1 -0
  84. package/dist/feeds/news/grid.js +37 -0
  85. package/dist/feeds/news/grid.js.map +1 -0
  86. package/dist/feeds/news/index.d.ts +4 -0
  87. package/dist/feeds/news/index.d.ts.map +1 -0
  88. package/dist/feeds/news/list.d.ts +4 -0
  89. package/dist/feeds/news/list.d.ts.map +1 -0
  90. package/dist/feeds/news/list.js +34 -0
  91. package/dist/feeds/news/list.js.map +1 -0
  92. package/dist/{utilities → helpers}/events/index.d.ts +1 -0
  93. package/dist/helpers/events/index.d.ts.map +1 -0
  94. package/dist/{utilities/events/index.mjs → helpers/events/index.js} +3 -1
  95. package/dist/helpers/events/index.js.map +1 -0
  96. package/dist/helpers/grouping/events.d.ts +14 -0
  97. package/dist/helpers/grouping/events.d.ts.map +1 -0
  98. package/dist/helpers/grouping/events.js +147 -0
  99. package/dist/helpers/grouping/events.js.map +1 -0
  100. package/dist/helpers/grouping/index.d.ts +2 -0
  101. package/dist/helpers/grouping/index.d.ts.map +1 -0
  102. package/dist/helpers/index.d.ts +5 -0
  103. package/dist/helpers/index.d.ts.map +1 -0
  104. package/dist/helpers/network/fetch.d.ts.map +1 -0
  105. package/dist/helpers/network/index.d.ts.map +1 -0
  106. package/dist/helpers/styles/index.d.ts +2 -0
  107. package/dist/helpers/styles/index.d.ts.map +1 -0
  108. package/dist/helpers/styles/shadow.d.ts +10 -0
  109. package/dist/helpers/styles/shadow.d.ts.map +1 -0
  110. package/dist/helpers/styles/shadow.js +16 -0
  111. package/dist/helpers/styles/shadow.js.map +1 -0
  112. package/dist/index.d.ts +4 -3
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +10 -8
  115. package/dist/index.js.map +1 -1
  116. package/dist/news.d.ts +1 -1
  117. package/dist/news.js +8 -8
  118. package/dist/news.js.map +1 -1
  119. package/dist/states/_types.d.ts +36 -0
  120. package/dist/states/_types.d.ts.map +1 -0
  121. package/dist/states/_types.js +12 -0
  122. package/dist/states/_types.js.map +1 -0
  123. package/dist/states/announcer.d.ts +14 -0
  124. package/dist/states/announcer.d.ts.map +1 -0
  125. package/dist/states/announcer.js +62 -0
  126. package/dist/states/announcer.js.map +1 -0
  127. package/dist/states/empty.d.ts +15 -0
  128. package/dist/states/empty.d.ts.map +1 -0
  129. package/dist/states/empty.js +104 -0
  130. package/dist/states/empty.js.map +1 -0
  131. package/dist/states/index.d.ts +6 -0
  132. package/dist/states/index.d.ts.map +1 -0
  133. package/dist/states/loading.d.ts +15 -0
  134. package/dist/states/loading.d.ts.map +1 -0
  135. package/dist/{macros/loader.mjs → states/loading.js} +71 -28
  136. package/dist/states/loading.js.map +1 -0
  137. package/dist/states/pagination.d.ts +17 -0
  138. package/dist/states/pagination.d.ts.map +1 -0
  139. package/dist/states/pagination.js +102 -0
  140. package/dist/states/pagination.js.map +1 -0
  141. package/dist/strategies/display/events.d.ts +4 -0
  142. package/dist/strategies/display/events.d.ts.map +1 -0
  143. package/dist/strategies/display/events.js +60 -0
  144. package/dist/strategies/display/events.js.map +1 -0
  145. package/dist/strategies/display/experts.d.ts +19 -0
  146. package/dist/strategies/display/experts.d.ts.map +1 -0
  147. package/dist/strategies/display/experts.js +266 -0
  148. package/dist/strategies/display/experts.js.map +1 -0
  149. package/dist/strategies/display/index.d.ts +5 -0
  150. package/dist/strategies/display/index.d.ts.map +1 -0
  151. package/dist/strategies/display/news.d.ts +4 -0
  152. package/dist/strategies/display/news.d.ts.map +1 -0
  153. package/dist/strategies/display/news.js +58 -0
  154. package/dist/strategies/display/news.js.map +1 -0
  155. package/dist/strategies/fetch/academic.d.ts +2 -0
  156. package/dist/strategies/fetch/academic.d.ts.map +1 -0
  157. package/dist/strategies/fetch/academic.js +30 -0
  158. package/dist/strategies/fetch/academic.js.map +1 -0
  159. package/dist/strategies/fetch/events.d.ts +20 -0
  160. package/dist/strategies/fetch/events.d.ts.map +1 -0
  161. package/dist/strategies/fetch/events.js +223 -0
  162. package/dist/strategies/fetch/events.js.map +1 -0
  163. package/dist/strategies/fetch/experts.d.ts +4 -0
  164. package/dist/strategies/fetch/experts.d.ts.map +1 -0
  165. package/dist/strategies/fetch/experts.js +194 -0
  166. package/dist/strategies/fetch/experts.js.map +1 -0
  167. package/dist/strategies/fetch/graphql.d.ts +13 -0
  168. package/dist/strategies/fetch/graphql.d.ts.map +1 -0
  169. package/dist/strategies/fetch/graphql.js +104 -0
  170. package/dist/strategies/fetch/graphql.js.map +1 -0
  171. package/dist/strategies/fetch/index.d.ts +10 -0
  172. package/dist/strategies/fetch/index.d.ts.map +1 -0
  173. package/dist/strategies/fetch/news.d.ts +4 -0
  174. package/dist/strategies/fetch/news.d.ts.map +1 -0
  175. package/dist/strategies/fetch/news.js +95 -0
  176. package/dist/strategies/fetch/news.js.map +1 -0
  177. package/dist/strategies/index.d.ts +7 -0
  178. package/dist/strategies/index.d.ts.map +1 -0
  179. package/dist/strategies/layout/featured.d.ts +8 -0
  180. package/dist/strategies/layout/featured.d.ts.map +1 -0
  181. package/dist/strategies/layout/grid.d.ts +7 -0
  182. package/dist/strategies/layout/grid.d.ts.map +1 -0
  183. package/dist/strategies/layout/grid.js +36 -0
  184. package/dist/strategies/layout/grid.js.map +1 -0
  185. package/dist/strategies/layout/index.d.ts +4 -0
  186. package/dist/strategies/layout/index.d.ts.map +1 -0
  187. package/dist/types/api.d.ts +34 -0
  188. package/dist/types/api.d.ts.map +1 -0
  189. package/dist/types/core.d.ts +40 -0
  190. package/dist/types/core.d.ts.map +1 -0
  191. package/dist/types/data/academic.d.ts +6 -0
  192. package/dist/types/data/academic.d.ts.map +1 -0
  193. package/dist/types/data/events.d.ts +21 -0
  194. package/dist/types/data/events.d.ts.map +1 -0
  195. package/dist/types/data/experts.d.ts +53 -0
  196. package/dist/types/data/experts.d.ts.map +1 -0
  197. package/dist/types/data/index.d.ts +5 -0
  198. package/dist/types/data/index.d.ts.map +1 -0
  199. package/dist/types/data/news.d.ts +6 -0
  200. package/dist/types/data/news.d.ts.map +1 -0
  201. package/dist/types/feeds.d.ts +35 -0
  202. package/dist/types/feeds.d.ts.map +1 -0
  203. package/dist/types/index.d.ts +5 -0
  204. package/dist/types/index.d.ts.map +1 -0
  205. package/dist/widgets/index.d.ts +2 -0
  206. package/dist/widgets/index.d.ts.map +1 -0
  207. package/dist/{macros → widgets}/slider.d.ts +1 -2
  208. package/dist/widgets/slider.d.ts.map +1 -0
  209. package/dist/{macros/slider.mjs → widgets/slider.js} +10 -10
  210. package/dist/widgets/slider.js.map +1 -0
  211. package/package.json +18 -12
  212. package/dist/academic.mjs +0 -5
  213. package/dist/academic.mjs.map +0 -1
  214. package/dist/composite/academic/_types.d.ts.map +0 -1
  215. package/dist/composite/academic/index.d.ts +0 -2
  216. package/dist/composite/academic/index.d.ts.map +0 -1
  217. package/dist/composite/academic/slider.d.ts +0 -5
  218. package/dist/composite/academic/slider.d.ts.map +0 -1
  219. package/dist/composite/academic/slider.js +0 -36
  220. package/dist/composite/academic/slider.js.map +0 -1
  221. package/dist/composite/academic/slider.mjs +0 -37
  222. package/dist/composite/academic/slider.mjs.map +0 -1
  223. package/dist/composite/events/_types.d.ts.map +0 -1
  224. package/dist/composite/events/common/data.d.ts +0 -44
  225. package/dist/composite/events/common/data.d.ts.map +0 -1
  226. package/dist/composite/events/common/data.js +0 -54
  227. package/dist/composite/events/common/data.js.map +0 -1
  228. package/dist/composite/events/common/data.mjs +0 -54
  229. package/dist/composite/events/common/data.mjs.map +0 -1
  230. package/dist/composite/events/common/display.d.ts +0 -18
  231. package/dist/composite/events/common/display.d.ts.map +0 -1
  232. package/dist/composite/events/common/display.js +0 -147
  233. package/dist/composite/events/common/display.js.map +0 -1
  234. package/dist/composite/events/common/display.mjs +0 -130
  235. package/dist/composite/events/common/display.mjs.map +0 -1
  236. package/dist/composite/events/common/fetch.d.ts +0 -24
  237. package/dist/composite/events/common/fetch.d.ts.map +0 -1
  238. package/dist/composite/events/common/fetch.js +0 -119
  239. package/dist/composite/events/common/fetch.js.map +0 -1
  240. package/dist/composite/events/common/fetch.mjs +0 -119
  241. package/dist/composite/events/common/fetch.mjs.map +0 -1
  242. package/dist/composite/events/common/queries.d.ts +0 -5
  243. package/dist/composite/events/common/queries.d.ts.map +0 -1
  244. package/dist/composite/events/common/queries.js +0 -113
  245. package/dist/composite/events/common/queries.js.map +0 -1
  246. package/dist/composite/events/common/queries.mjs +0 -113
  247. package/dist/composite/events/common/queries.mjs.map +0 -1
  248. package/dist/composite/events/grid.d.ts +0 -5
  249. package/dist/composite/events/grid.d.ts.map +0 -1
  250. package/dist/composite/events/grid.js +0 -92
  251. package/dist/composite/events/grid.js.map +0 -1
  252. package/dist/composite/events/grid.mjs +0 -93
  253. package/dist/composite/events/grid.mjs.map +0 -1
  254. package/dist/composite/events/grouped.d.ts +0 -5
  255. package/dist/composite/events/grouped.d.ts.map +0 -1
  256. package/dist/composite/events/grouped.js +0 -290
  257. package/dist/composite/events/grouped.js.map +0 -1
  258. package/dist/composite/events/grouped.mjs +0 -274
  259. package/dist/composite/events/grouped.mjs.map +0 -1
  260. package/dist/composite/events/index.d.ts +0 -5
  261. package/dist/composite/events/index.d.ts.map +0 -1
  262. package/dist/composite/events/list.d.ts +0 -5
  263. package/dist/composite/events/list.d.ts.map +0 -1
  264. package/dist/composite/events/list.js +0 -92
  265. package/dist/composite/events/list.js.map +0 -1
  266. package/dist/composite/events/list.mjs +0 -93
  267. package/dist/composite/events/list.mjs.map +0 -1
  268. package/dist/composite/events/slider.d.ts +0 -5
  269. package/dist/composite/events/slider.d.ts.map +0 -1
  270. package/dist/composite/events/slider.js +0 -37
  271. package/dist/composite/events/slider.js.map +0 -1
  272. package/dist/composite/events/slider.mjs +0 -38
  273. package/dist/composite/events/slider.mjs.map +0 -1
  274. package/dist/composite/news/_types.d.ts.map +0 -1
  275. package/dist/composite/news/common/data.d.ts +0 -47
  276. package/dist/composite/news/common/data.d.ts.map +0 -1
  277. package/dist/composite/news/common/data.js +0 -63
  278. package/dist/composite/news/common/data.js.map +0 -1
  279. package/dist/composite/news/common/data.mjs +0 -63
  280. package/dist/composite/news/common/data.mjs.map +0 -1
  281. package/dist/composite/news/common/display.d.ts +0 -17
  282. package/dist/composite/news/common/display.d.ts.map +0 -1
  283. package/dist/composite/news/common/display.js +0 -147
  284. package/dist/composite/news/common/display.js.map +0 -1
  285. package/dist/composite/news/common/display.mjs +0 -130
  286. package/dist/composite/news/common/display.mjs.map +0 -1
  287. package/dist/composite/news/common/fetch.d.ts +0 -22
  288. package/dist/composite/news/common/fetch.d.ts.map +0 -1
  289. package/dist/composite/news/common/fetch.js +0 -89
  290. package/dist/composite/news/common/fetch.js.map +0 -1
  291. package/dist/composite/news/common/fetch.mjs +0 -89
  292. package/dist/composite/news/common/fetch.mjs.map +0 -1
  293. package/dist/composite/news/common/queries.d.ts +0 -2
  294. package/dist/composite/news/common/queries.d.ts.map +0 -1
  295. package/dist/composite/news/common/queries.js +0 -37
  296. package/dist/composite/news/common/queries.js.map +0 -1
  297. package/dist/composite/news/common/queries.mjs +0 -37
  298. package/dist/composite/news/common/queries.mjs.map +0 -1
  299. package/dist/composite/news/featured.d.ts +0 -5
  300. package/dist/composite/news/featured.d.ts.map +0 -1
  301. package/dist/composite/news/featured.js +0 -184
  302. package/dist/composite/news/featured.js.map +0 -1
  303. package/dist/composite/news/featured.mjs +0 -185
  304. package/dist/composite/news/featured.mjs.map +0 -1
  305. package/dist/composite/news/grid.d.ts +0 -5
  306. package/dist/composite/news/grid.d.ts.map +0 -1
  307. package/dist/composite/news/grid.js +0 -100
  308. package/dist/composite/news/grid.js.map +0 -1
  309. package/dist/composite/news/grid.mjs +0 -101
  310. package/dist/composite/news/grid.mjs.map +0 -1
  311. package/dist/composite/news/index.d.ts +0 -4
  312. package/dist/composite/news/index.d.ts.map +0 -1
  313. package/dist/composite/news/list.d.ts +0 -5
  314. package/dist/composite/news/list.d.ts.map +0 -1
  315. package/dist/composite/news/list.js +0 -87
  316. package/dist/composite/news/list.js.map +0 -1
  317. package/dist/composite/news/list.mjs +0 -88
  318. package/dist/composite/news/list.mjs.map +0 -1
  319. package/dist/elements/asset.d.ts +0 -10
  320. package/dist/elements/asset.d.ts.map +0 -1
  321. package/dist/elements/asset.js +0 -27
  322. package/dist/elements/asset.js.map +0 -1
  323. package/dist/elements/asset.mjs +0 -27
  324. package/dist/elements/asset.mjs.map +0 -1
  325. package/dist/elements/index.d.ts +0 -4
  326. package/dist/elements/index.d.ts.map +0 -1
  327. package/dist/elements/layout.d.ts +0 -15
  328. package/dist/elements/layout.d.ts.map +0 -1
  329. package/dist/elements/layout.js +0 -113
  330. package/dist/elements/layout.js.map +0 -1
  331. package/dist/elements/layout.mjs +0 -96
  332. package/dist/elements/layout.mjs.map +0 -1
  333. package/dist/elements/text.d.ts +0 -12
  334. package/dist/elements/text.d.ts.map +0 -1
  335. package/dist/elements/text.js +0 -41
  336. package/dist/elements/text.js.map +0 -1
  337. package/dist/elements/text.mjs +0 -41
  338. package/dist/elements/text.mjs.map +0 -1
  339. package/dist/events.mjs +0 -11
  340. package/dist/events.mjs.map +0 -1
  341. package/dist/index.mjs +0 -9
  342. package/dist/index.mjs.map +0 -1
  343. package/dist/macros/aria-live.d.ts +0 -11
  344. package/dist/macros/aria-live.d.ts.map +0 -1
  345. package/dist/macros/aria-live.js +0 -25
  346. package/dist/macros/aria-live.js.map +0 -1
  347. package/dist/macros/aria-live.mjs +0 -26
  348. package/dist/macros/aria-live.mjs.map +0 -1
  349. package/dist/macros/index.d.ts +0 -6
  350. package/dist/macros/index.d.ts.map +0 -1
  351. package/dist/macros/lazy-load.d.ts +0 -16
  352. package/dist/macros/lazy-load.d.ts.map +0 -1
  353. package/dist/macros/lazy-load.js +0 -54
  354. package/dist/macros/lazy-load.js.map +0 -1
  355. package/dist/macros/lazy-load.mjs +0 -38
  356. package/dist/macros/lazy-load.mjs.map +0 -1
  357. package/dist/macros/loader.d.ts +0 -15
  358. package/dist/macros/loader.d.ts.map +0 -1
  359. package/dist/macros/loader.js +0 -128
  360. package/dist/macros/loader.js.map +0 -1
  361. package/dist/macros/loader.mjs.map +0 -1
  362. package/dist/macros/no-results.d.ts +0 -12
  363. package/dist/macros/no-results.d.ts.map +0 -1
  364. package/dist/macros/no-results.js +0 -66
  365. package/dist/macros/no-results.js.map +0 -1
  366. package/dist/macros/no-results.mjs +0 -50
  367. package/dist/macros/no-results.mjs.map +0 -1
  368. package/dist/macros/slider.d.ts.map +0 -1
  369. package/dist/macros/slider.js +0 -103
  370. package/dist/macros/slider.js.map +0 -1
  371. package/dist/macros/slider.mjs.map +0 -1
  372. package/dist/news.mjs +0 -9
  373. package/dist/news.mjs.map +0 -1
  374. package/dist/utilities/events/index.d.ts.map +0 -1
  375. package/dist/utilities/events/index.js +0 -19
  376. package/dist/utilities/events/index.js.map +0 -1
  377. package/dist/utilities/events/index.mjs.map +0 -1
  378. package/dist/utilities/index.d.ts +0 -3
  379. package/dist/utilities/index.d.ts.map +0 -1
  380. package/dist/utilities/network/fetch.d.ts.map +0 -1
  381. package/dist/utilities/network/index.d.ts.map +0 -1
  382. /package/dist/{composite → feeds}/academic/_types.d.ts +0 -0
  383. /package/dist/{composite → feeds}/events/_types.d.ts +0 -0
  384. /package/dist/{composite → feeds}/news/_types.d.ts +0 -0
  385. /package/dist/{utilities → helpers}/network/fetch.d.ts +0 -0
  386. /package/dist/{utilities → helpers}/network/index.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchHandler.d.ts","sourceRoot":"","sources":["../../../source/factory/helpers/fetchHandler.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK3D,UAAU,kBAAkB,CAAC,KAAK,EAAE,UAAU;IAE5C,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAEhD,OAAO,EAAE,WAAW,CAAC;IAErB,SAAS,EAAE,GAAG,CAAC;IAEf,eAAe,EAAE;QACf,kBAAkB,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,cAAc,EAAE,CAAC,KAAK,EAAE;YAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAChE,gBAAgB,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;KACxC,CAAC;IAEF,aAAa,EAAE,GAAG,CAAC;IAEnB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AA8BD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EACnD,MAAM,EAAE,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC;iBAoErB,OAAO,CAAC,IAAI,CAAC;oBArDV,OAAO,CAAC,IAAI,CAAC;EA6IzC"}
@@ -0,0 +1,123 @@
1
+ import * as Styles from "@universityofmaryland/web-styles-library";
2
+ import { LoadingState } from "../../states/loading.js";
3
+ import "@universityofmaryland/web-builder-library";
4
+ import "@universityofmaryland/web-elements-library";
5
+ import "@universityofmaryland/web-utilities-library/theme";
6
+ import { Announcer } from "../../states/announcer.js";
7
+ function createFetchHandlers(config) {
8
+ const {
9
+ fetchStrategy,
10
+ helpers,
11
+ baseProps,
12
+ displayHandlers,
13
+ layoutElement,
14
+ isThemeDark,
15
+ enableCategoryFallback = false
16
+ } = config;
17
+ const loadMore = async () => {
18
+ const container = helpers.getContainer();
19
+ const currentCount = helpers.getOffset();
20
+ const totalEntries = helpers.getTotalEntries();
21
+ const existingPagination = container.querySelector(
22
+ `.${Styles.layout.alignment.block.center.className}`
23
+ );
24
+ existingPagination?.remove();
25
+ const loading = new LoadingState({ isThemeDark });
26
+ loading.show(container);
27
+ const variables = fetchStrategy.composeApiVariables({
28
+ ...baseProps,
29
+ getOffset: helpers.getOffset
30
+ });
31
+ const feedData = await fetchStrategy.fetchEntries(variables);
32
+ if (feedData) {
33
+ loading.hide();
34
+ await displayHandlers.displayResults({ feedData });
35
+ const message = `Showing ${currentCount + feedData.length} of ${totalEntries} articles`;
36
+ const existingAnnouncer = container.querySelector(
37
+ '[role="status"]'
38
+ );
39
+ if (existingAnnouncer) {
40
+ existingAnnouncer.textContent = message;
41
+ } else {
42
+ const announcer = new Announcer({ message });
43
+ container.appendChild(announcer.getElement());
44
+ }
45
+ } else {
46
+ loading.hide();
47
+ displayHandlers.displayNoResults({
48
+ message: "An error occurred while loading more results."
49
+ });
50
+ }
51
+ };
52
+ const start = async () => {
53
+ const variables = fetchStrategy.composeApiVariables({
54
+ ...baseProps,
55
+ getOffset: helpers.getOffset
56
+ });
57
+ const count = await fetchStrategy.fetchCount(variables);
58
+ if (count === 0) {
59
+ if (enableCategoryFallback && baseProps.categories && baseProps.categories.length > 0) {
60
+ const fallbackVariables = fetchStrategy.composeApiVariables({
61
+ ...baseProps,
62
+ categories: void 0,
63
+ getOffset: helpers.getOffset
64
+ });
65
+ const fallbackCount = await fetchStrategy.fetchCount(fallbackVariables);
66
+ if (fallbackCount && fallbackCount > 0) {
67
+ helpers.setTotalEntries(fallbackCount);
68
+ const fallbackData = await fetchStrategy.fetchEntries(
69
+ fallbackVariables
70
+ );
71
+ if (fallbackData && fallbackData.length > 0) {
72
+ let categoryNames = await fetchStrategy.fetchCategoryNames?.(
73
+ baseProps.categories,
74
+ baseProps.token
75
+ );
76
+ if (!categoryNames || categoryNames.length === 0) {
77
+ categoryNames = baseProps.categories.map(
78
+ (id) => id.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ")
79
+ );
80
+ }
81
+ await displayHandlers.displayResultStart({
82
+ feedData: fallbackData,
83
+ layoutElement,
84
+ isFallback: true,
85
+ categoryNames
86
+ });
87
+ return;
88
+ }
89
+ }
90
+ }
91
+ displayHandlers.displayNoResults({});
92
+ return;
93
+ }
94
+ if (count === null) {
95
+ displayHandlers.displayNoResults({
96
+ message: "An error occurred while fetching the data."
97
+ });
98
+ return;
99
+ }
100
+ if (count) {
101
+ helpers.setTotalEntries(count);
102
+ }
103
+ const feedData = await fetchStrategy.fetchEntries(variables);
104
+ if (feedData && feedData.length > 0) {
105
+ await displayHandlers.displayResultStart({
106
+ feedData,
107
+ layoutElement
108
+ });
109
+ } else {
110
+ displayHandlers.displayNoResults({
111
+ message: "An error occurred while fetching the data."
112
+ });
113
+ }
114
+ };
115
+ return {
116
+ start,
117
+ loadMore
118
+ };
119
+ }
120
+ export {
121
+ createFetchHandlers
122
+ };
123
+ //# sourceMappingURL=fetchHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchHandler.js","sources":["../../../source/factory/helpers/fetchHandler.ts"],"sourcesContent":["/**\n * Fetch Handler Utilities\n *\n * Creates handlers for fetching feed data using a fetch strategy.\n * Handles both initial fetch and lazy-loaded fetches.\n *\n * @module factory/helpers/fetchHandler\n */\n\nimport * as Styles from '@universityofmaryland/web-styles-library';\nimport { LoadingState, Announcer } from '../../states';\nimport { FetchStrategy, FeedHelpers } from '../core/types';\n\n/**\n * Configuration for creating fetch handlers\n */\ninterface FetchHandlerConfig<TData, TVariables> {\n /** Strategy for fetching data */\n fetchStrategy: FetchStrategy<TData, TVariables>;\n /** Feed helper functions */\n helpers: FeedHelpers;\n /** Base props for composing API variables */\n baseProps: any;\n /** Display handlers */\n displayHandlers: {\n displayResultStart: (props: any) => Promise<void>;\n displayResults: (props: { feedData: TData[] }) => Promise<void>;\n displayNoResults: (props: any) => void;\n };\n /** Layout element */\n layoutElement: any;\n /** Whether theme is dark */\n isThemeDark?: boolean;\n /** Whether to enable category fallback (show all results when no category results found) */\n enableCategoryFallback?: boolean;\n}\n\n/**\n * Create fetch handlers for a feed\n *\n * Returns handlers for:\n * - Initial data fetch (with count)\n * - Lazy load fetch (pagination)\n *\n * @param config - Configuration for the fetch handlers\n * @returns Fetch handler functions\n *\n * @example\n * ```typescript\n * const fetchHandlers = createFetchHandlers({\n * fetchStrategy: eventsFetchStrategy,\n * helpers: feedHelpers,\n * baseProps: { token, categories },\n * displayHandlers,\n * layoutElement,\n * isThemeDark: false,\n * });\n *\n * // Start initial fetch\n * await fetchHandlers.start();\n *\n * // Fetch more results\n * await fetchHandlers.loadMore();\n * ```\n */\nexport function createFetchHandlers<TData, TVariables>(\n config: FetchHandlerConfig<TData, TVariables>,\n) {\n const {\n fetchStrategy,\n helpers,\n baseProps,\n displayHandlers,\n layoutElement,\n isThemeDark,\n enableCategoryFallback = false,\n } = config;\n\n /**\n * Handle lazy loading more results\n */\n const loadMore = async (): Promise<void> => {\n const container = helpers.getContainer();\n const currentCount = helpers.getOffset();\n const totalEntries = helpers.getTotalEntries();\n\n // Remove existing pagination\n const existingPagination = container.querySelector(\n `.${Styles.layout.alignment.block.center.className}`,\n );\n existingPagination?.remove();\n\n // Show loading state\n const loading = new LoadingState({ isThemeDark });\n loading.show(container);\n\n // Compose API variables\n const variables = fetchStrategy.composeApiVariables({\n ...baseProps,\n getOffset: helpers.getOffset,\n });\n\n // Fetch entries\n const feedData = await fetchStrategy.fetchEntries(variables);\n\n if (feedData) {\n loading.hide();\n await displayHandlers.displayResults({ feedData });\n\n // Update announcer with new count\n const message = `Showing ${\n currentCount + feedData.length\n } of ${totalEntries} articles`;\n\n const existingAnnouncer = container.querySelector(\n '[role=\"status\"]',\n ) as HTMLElement;\n if (existingAnnouncer) {\n existingAnnouncer.textContent = message;\n } else {\n const announcer = new Announcer({ message });\n container.appendChild(announcer.getElement());\n }\n } else {\n loading.hide();\n displayHandlers.displayNoResults({\n message: 'An error occurred while loading more results.',\n });\n }\n };\n\n /**\n * Handle initial fetch (with count)\n */\n const start = async (): Promise<void> => {\n const variables = fetchStrategy.composeApiVariables({\n ...baseProps,\n getOffset: helpers.getOffset,\n });\n\n const count = await fetchStrategy.fetchCount(variables);\n\n if (count === 0) {\n // Only attempt category fallback if explicitly enabled (for events feeds)\n if (enableCategoryFallback && baseProps.categories && baseProps.categories.length > 0) {\n const fallbackVariables = fetchStrategy.composeApiVariables({\n ...baseProps,\n categories: undefined,\n getOffset: helpers.getOffset,\n });\n\n const fallbackCount = await fetchStrategy.fetchCount(fallbackVariables);\n\n if (fallbackCount && fallbackCount > 0) {\n helpers.setTotalEntries(fallbackCount);\n\n const fallbackData = await fetchStrategy.fetchEntries(\n fallbackVariables,\n );\n\n if (fallbackData && fallbackData.length > 0) {\n // Fetch category names from API\n let categoryNames = await fetchStrategy.fetchCategoryNames?.(\n baseProps.categories,\n baseProps.token,\n );\n\n // If fetch fails, format IDs as fallback\n if (!categoryNames || categoryNames.length === 0) {\n categoryNames = baseProps.categories.map((id: string) =>\n id\n .split('-')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' '),\n );\n }\n\n await displayHandlers.displayResultStart({\n feedData: fallbackData,\n layoutElement,\n isFallback: true,\n categoryNames,\n });\n return;\n }\n }\n }\n\n displayHandlers.displayNoResults({});\n return;\n }\n\n if (count === null) {\n displayHandlers.displayNoResults({\n message: 'An error occurred while fetching the data.',\n });\n return;\n }\n\n if (count) {\n helpers.setTotalEntries(count);\n }\n\n // Fetch entries\n const feedData = await fetchStrategy.fetchEntries(variables);\n\n if (feedData && feedData.length > 0) {\n await displayHandlers.displayResultStart({\n feedData,\n layoutElement,\n });\n } else {\n displayHandlers.displayNoResults({\n message: 'An error occurred while fetching the data.',\n });\n }\n };\n\n return {\n start,\n loadMore,\n };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { createFeedHelpers, updateShadowRoot } from './feedHelpers';
2
+ export { createDisplayHandlers, setShadowStyles } from './displayHandler';
3
+ export { createFetchHandlers } from './fetchHandler';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/factory/helpers/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { createBaseFeed } from './core';
2
+ export type { BaseFeedConfig, FeedHelpers, FetchStrategy, DisplayStrategy, LayoutStrategy, CardMappingOptions, ImageConfig, DisplayResultsProps, NoResultsConfig, FeedLifecycle, FeedEvents, FeedFactoryResult, LayoutOptions, } from './core/types';
3
+ export { createFeedHelpers, createDisplayHandlers, createFetchHandlers, setShadowStyles, } from './helpers';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/factory/index.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAGxC,YAAY,EACV,cAAc,EACd,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,GACd,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,GAChB,MAAM,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../../source/feeds/academic/_types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
@@ -0,0 +1,2 @@
1
+ export { academicSlider as slider } from './slider';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/feeds/academic/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { AcademicSliderProps } from './_types';
2
+ import { ElementModel } from '../../_types';
3
+ export declare const academicSlider: (props: AcademicSliderProps) => ElementModel;
4
+ //# sourceMappingURL=slider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../source/feeds/academic/slider.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAiBjD,eAAO,MAAM,cAAc,GAAI,OAAO,mBAAmB,KAAG,YAKxD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { createSliderWidget } from "../../widgets/slider.js";
2
+ import { ACADEMIC_SLIDER_QUERY } from "../../strategies/fetch/academic.js";
3
+ const academicSlider = (props) => createSliderWidget({
4
+ ...props,
5
+ query: ACADEMIC_SLIDER_QUERY,
6
+ url: "https://provost.umd.edu/graphql"
7
+ });
8
+ export {
9
+ academicSlider
10
+ };
11
+ //# sourceMappingURL=slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider.js","sources":["../../../source/feeds/academic/slider.ts"],"sourcesContent":["/**\n * Academic Slider Feed (Migrated)\n *\n * Displays academic events in a horizontal carousel layout.\n * Uses strategy pattern for GraphQL queries.\n *\n * @module composite/academic/slider-new\n */\n\nimport { slider } from '../../widgets';\nimport { ACADEMIC_SLIDER_QUERY } from '../../strategies/fetch/academic';\nimport { type AcademicSliderProps } from './_types';\nimport { type ElementModel } from '../../_types';\n\n/**\n * Creates an academic events slider feed\n *\n * @param props - Slider configuration options\n * @returns ElementModel with slider element and styles\n *\n * @example\n * ```typescript\n * const academicSlider = slider({\n * token: 'your-token',\n * categories: 'engineering,science',\n * isThemeDark: false,\n * });\n * ```\n */\nexport const academicSlider = (props: AcademicSliderProps): ElementModel =>\n slider({\n ...props,\n query: ACADEMIC_SLIDER_QUERY,\n url: 'https://provost.umd.edu/graphql',\n });\n"],"names":["slider"],"mappings":";;AA6BO,MAAM,iBAAiB,CAAC,UAC7BA,mBAAO;AAAA,EACL,GAAG;AAAA,EACH,OAAO;AAAA,EACP,KAAK;AACP,CAAC;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../../source/feeds/events/_types.ts"],"names":[],"mappings":"AAAA,UAAU,SAAS;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,EAAE,CAAC;AAEJ,UAAU,mBAAmB;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,SAAU,SAAQ,mBAAmB;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,SAAS,EAAE,CAAC;CACvB;AAED,UAAU,mBAAmB;IAC3B,YAAY,EAAE,MAAM,WAAW,CAAC;IAChC,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC;IACvC,eAAe,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,WACf,SAAQ,mBAAmB,EACzB,UAAU,EACV,SAAS;CAAG;AAEhB,MAAM,WAAW,YAAa,SAAQ,WAAW,EAAE,mBAAmB;CAAG;AAEzE,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,aAAa,EAAE;QAAE,OAAO,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAED,MAAM,WAAW,wBACf,SAAQ,iBAAiB,EACvB,WAAW;IACb,aAAa,EAAE;QAAE,OAAO,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAED,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;CAAG;AAE/C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
@@ -0,0 +1,4 @@
1
+ import { BlockProps } from './_types';
2
+ import { ElementModel } from '../../_types';
3
+ export declare const eventsGrid: (props: BlockProps) => ElementModel;
4
+ //# sourceMappingURL=grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../source/feeds/events/grid.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAqBjD,eAAO,MAAM,UAAU,GAAI,OAAO,UAAU,KAAG,YAa3C,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { createBaseFeed } from "../../factory/core/createBaseFeed.js";
2
+ import "@universityofmaryland/web-builder-library";
3
+ import "@universityofmaryland/web-styles-library";
4
+ import "@universityofmaryland/web-styles-library/typography";
5
+ import "@universityofmaryland/web-utilities-library/theme";
6
+ import "@universityofmaryland/web-elements-library";
7
+ import { eventsDisplayStrategy } from "../../strategies/display/events.js";
8
+ import "@universityofmaryland/web-elements-library/composite";
9
+ import "@universityofmaryland/web-utilities-library/elements";
10
+ import "@universityofmaryland/web-utilities-library/network";
11
+ import { eventsFetchStrategy } from "../../strategies/fetch/events.js";
12
+ import "../../strategies/fetch/news.js";
13
+ import "../../strategies/fetch/experts.js";
14
+ import { gridGapLayout } from "../../strategies/layout/grid.js";
15
+ import "@universityofmaryland/web-elements-library/layout";
16
+ const eventsGrid = (props) => createBaseFeed({
17
+ ...props,
18
+ enableCategoryFallback: true,
19
+ fetchStrategy: eventsFetchStrategy,
20
+ displayStrategy: eventsDisplayStrategy,
21
+ layoutStrategy: gridGapLayout,
22
+ imageConfig: (entry) => ({
23
+ imageUrl: entry.image[0].url,
24
+ altText: entry.image[0].altText || "Event Image",
25
+ linkUrl: entry.url,
26
+ linkLabel: "University of Maryland Event"
27
+ })
28
+ });
29
+ export {
30
+ eventsGrid
31
+ };
32
+ //# sourceMappingURL=grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.js","sources":["../../../source/feeds/events/grid.ts"],"sourcesContent":["/**\n * Events Grid Feed (Factory Pattern)\n *\n * Grid layout for event entries using the feed factory pattern.\n * This is the NEW implementation using factory + strategies.\n *\n * @module composite/events/grid-new\n */\n\nimport { createBaseFeed } from 'factory';\nimport {\n eventsFetchStrategy,\n eventsDisplayStrategy,\n gridGapLayout,\n} from 'strategies';\nimport { type BlockProps } from './_types';\nimport { type ElementModel } from '../../_types';\n\n/**\n * Create an events grid feed\n *\n * @param props - Feed configuration\n * @returns ElementModel with feed element and styles\n *\n * @example\n * ```typescript\n * const feed = eventsGrid({\n * token: 'my-token',\n * numberOfColumnsToShow: 3,\n * numberOfRowsToStart: 2,\n * isLazyLoad: true,\n * categories: ['sports', 'arts'],\n * });\n *\n * document.body.appendChild(feed.element);\n * ```\n */\nexport const eventsGrid = (props: BlockProps): ElementModel =>\n createBaseFeed({\n ...props,\n enableCategoryFallback: true,\n fetchStrategy: eventsFetchStrategy,\n displayStrategy: eventsDisplayStrategy,\n layoutStrategy: gridGapLayout,\n imageConfig: (entry) => ({\n imageUrl: entry.image[0].url,\n altText: entry.image[0].altText || 'Event Image',\n linkUrl: entry.url,\n linkLabel: 'University of Maryland Event',\n }),\n });\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAqCO,MAAM,aAAa,CAAC,UACzB,eAAe;AAAA,EACb,GAAG;AAAA,EACH,wBAAwB;AAAA,EACxB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,aAAa,CAAC,WAAW;AAAA,IACvB,UAAU,MAAM,MAAM,CAAC,EAAE;AAAA,IACzB,SAAS,MAAM,MAAM,CAAC,EAAE,WAAW;AAAA,IACnC,SAAS,MAAM;AAAA,IACf,WAAW;AAAA,EAAA;AAEf,CAAC;"}
@@ -0,0 +1,4 @@
1
+ import { ListProps } from './_types';
2
+ import { ElementModel } from '../../_types';
3
+ export declare const eventsGrouped: (props: ListProps) => ElementModel;
4
+ //# sourceMappingURL=grouped.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grouped.d.ts","sourceRoot":"","sources":["../../../source/feeds/events/grouped.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAibjD,eAAO,MAAM,aAAa,GAAI,OAAO,SAAS,KAAG,YA+HhD,CAAC"}
@@ -0,0 +1,337 @@
1
+ import * as Styles from "@universityofmaryland/web-styles-library";
2
+ import { ElementBuilder } from "@universityofmaryland/web-builder-library";
3
+ import { card } from "@universityofmaryland/web-elements-library/composite";
4
+ import { events } from "@universityofmaryland/web-elements-library/atomic";
5
+ import { createImageOrLinkedImage, createTextContainer, createTextWithLink } from "@universityofmaryland/web-utilities-library/elements";
6
+ import { LoadingState } from "../../states/loading.js";
7
+ import { EmptyState } from "../../states/empty.js";
8
+ import { PaginationState } from "../../states/pagination.js";
9
+ import { Announcer } from "../../states/announcer.js";
10
+ import "@universityofmaryland/web-utilities-library/network";
11
+ import { eventsFetchStrategyRange } from "../../strategies/fetch/events.js";
12
+ import "../../strategies/fetch/news.js";
13
+ import "../../strategies/fetch/experts.js";
14
+ import "@universityofmaryland/web-elements-library/layout";
15
+ import { dispatch, eventNames } from "../../helpers/events/index.js";
16
+ import { groupEventsByDate } from "../../helpers/grouping/events.js";
17
+ import { setShadowStyles } from "../../helpers/styles/shadow.js";
18
+ const createFetchProps = (props, offset) => ({
19
+ token: props.token,
20
+ categories: props.categories,
21
+ numberOfColumnsToShow: 1,
22
+ numberOfRowsToStart: props.numberOfRowsToStart,
23
+ getOffset: () => offset
24
+ });
25
+ const createImageConfig = (entry) => ({
26
+ imageUrl: entry.image[0].url,
27
+ altText: entry.image[0].altText || "Event Image",
28
+ linkUrl: entry.url,
29
+ linkLabel: "University of Maryland Event"
30
+ });
31
+ const createAnnouncerMessage = (count, total, isLazyLoad) => {
32
+ return isLazyLoad ? `Showing ${count} of ${total} events` : `Showing ${count} events`;
33
+ };
34
+ class GroupedFeedState {
35
+ /**
36
+ * Initialize state with initial styles
37
+ *
38
+ * @param initialStyles - Initial CSS styles
39
+ */
40
+ constructor(initialStyles) {
41
+ this.stylesArray = [];
42
+ this.shadowRoot = null;
43
+ this.totalEntries = 0;
44
+ this.offset = 0;
45
+ this.lastDateHeadline = null;
46
+ this.stylesArray.push(initialStyles);
47
+ }
48
+ /**
49
+ * Add styles to the accumulated styles
50
+ *
51
+ * @param styles - CSS styles to add
52
+ */
53
+ addStyles(styles) {
54
+ this.stylesArray.push(styles);
55
+ }
56
+ /**
57
+ * Set shadow root reference for style updates
58
+ *
59
+ * @param shadow - Shadow root element
60
+ */
61
+ setShadowRoot(shadow) {
62
+ this.shadowRoot = shadow;
63
+ }
64
+ /**
65
+ * Update shadow DOM styles
66
+ *
67
+ * @returns Promise that resolves when styles are updated
68
+ */
69
+ async updateShadowStyles() {
70
+ if (!this.shadowRoot) return;
71
+ await setShadowStyles({
72
+ shadowRoot: this.shadowRoot,
73
+ styles: this.getStyles()
74
+ });
75
+ }
76
+ /**
77
+ * Get accumulated styles as single string
78
+ *
79
+ * @returns Combined CSS styles
80
+ */
81
+ getStyles() {
82
+ return this.stylesArray.join("\n");
83
+ }
84
+ /**
85
+ * Get shadow root callback for events
86
+ *
87
+ * @returns Callback function for shadow root
88
+ */
89
+ getShadowCallback() {
90
+ return (shadow) => this.setShadowRoot(shadow);
91
+ }
92
+ /**
93
+ * Get current offset
94
+ *
95
+ * @returns Current offset
96
+ */
97
+ getOffset() {
98
+ return this.offset;
99
+ }
100
+ /**
101
+ * Increment offset by count
102
+ *
103
+ * @param count - Number to increment by
104
+ */
105
+ incrementOffset(count) {
106
+ this.offset += count;
107
+ }
108
+ /**
109
+ * Get total entries
110
+ *
111
+ * @returns Total entries
112
+ */
113
+ getTotalEntries() {
114
+ return this.totalEntries;
115
+ }
116
+ /**
117
+ * Set total entries
118
+ *
119
+ * @param total - Total entries
120
+ */
121
+ setTotalEntries(total) {
122
+ this.totalEntries = total;
123
+ }
124
+ /**
125
+ * Get last date headline
126
+ *
127
+ * @returns Last date headline or null
128
+ */
129
+ getLastDateHeadline() {
130
+ return this.lastDateHeadline;
131
+ }
132
+ /**
133
+ * Set last date headline
134
+ *
135
+ * @param headline - Date headline
136
+ */
137
+ setLastDateHeadline(headline) {
138
+ this.lastDateHeadline = headline;
139
+ }
140
+ }
141
+ const createDateHeader = (date, state) => {
142
+ const dateHeadline = document.createElement("p");
143
+ dateHeadline.textContent = date;
144
+ const headerElement = new ElementBuilder(dateHeadline).styled(Styles.element.text.decoration.ribbon).withStyles({
145
+ element: {
146
+ margin: `${Styles.token.spacing.lg} 0`
147
+ }
148
+ }).build();
149
+ state.addStyles(headerElement.styles);
150
+ return headerElement;
151
+ };
152
+ const createEventCard = (entry, isThemeDark) => {
153
+ return card.list({
154
+ headline: createTextWithLink({ text: entry.title, url: entry.url }),
155
+ text: createTextContainer({ text: entry.summary, allowHTML: true }),
156
+ dateSign: events.sign({
157
+ startMonth: entry.startMonth,
158
+ startDay: entry.startDay,
159
+ endMonth: entry.endMonth,
160
+ endDay: entry.endDay,
161
+ isThemeDark,
162
+ isLargeSize: true
163
+ }),
164
+ eventMeta: events.meta({
165
+ ...entry,
166
+ isThemeDark
167
+ }),
168
+ image: createImageOrLinkedImage(createImageConfig(entry)),
169
+ isAligned: false,
170
+ isThemeDark
171
+ });
172
+ };
173
+ const createGroupContainer = (events2, state, isThemeDark) => {
174
+ const entriesBuilder = new ElementBuilder("div").withClassName("umd-feed-events-grouped-entries").withStyles({
175
+ element: {
176
+ [` > *:not(:last-child)`]: {
177
+ paddingBottom: Styles.token.spacing.md,
178
+ marginBottom: Styles.token.spacing.md,
179
+ borderBottom: `1px solid ${isThemeDark ? Styles.token.color.gray.dark : Styles.token.color.gray.light}`
180
+ },
181
+ [`+ .umd-feed-events-grouped-entries`]: {
182
+ paddingTop: Styles.token.spacing.md,
183
+ marginTop: Styles.token.spacing.md,
184
+ borderTop: `1px solid ${isThemeDark ? Styles.token.color.gray.dark : Styles.token.color.gray.light}`
185
+ }
186
+ }
187
+ });
188
+ events2.forEach((entry) => {
189
+ const eventCard = createEventCard(entry, isThemeDark);
190
+ entriesBuilder.withChild(eventCard);
191
+ state.addStyles(eventCard.styles);
192
+ });
193
+ const groupElement = entriesBuilder.build();
194
+ state.addStyles(groupElement.styles);
195
+ return groupElement;
196
+ };
197
+ const renderGroupedEvents = async (container, events2, state, isThemeDark, isLazyLoad, loadMore) => {
198
+ const grid = container.querySelector(
199
+ "#umd-feed-events-grouped-container"
200
+ );
201
+ if (!grid) return;
202
+ container.querySelector(".umd-loader-container")?.remove();
203
+ container.querySelector(`.${Styles.layout.alignment.block.center.className}`)?.remove();
204
+ const groupedEvents = groupEventsByDate(events2);
205
+ let actualEventCount = 0;
206
+ groupedEvents.forEach((group) => {
207
+ if (group.date !== state.getLastDateHeadline()) {
208
+ const headerElement = createDateHeader(group.date, state);
209
+ grid.appendChild(headerElement.element);
210
+ state.setLastDateHeadline(group.date);
211
+ }
212
+ const groupElement = createGroupContainer(group.events, state, isThemeDark);
213
+ grid.appendChild(groupElement.element);
214
+ actualEventCount += group.events.length;
215
+ });
216
+ state.incrementOffset(actualEventCount);
217
+ if (isLazyLoad && state.getTotalEntries() > state.getOffset()) {
218
+ const pagination = new PaginationState({
219
+ totalEntries: state.getTotalEntries(),
220
+ offset: state.getOffset(),
221
+ isLazyLoad: true,
222
+ callback: loadMore
223
+ });
224
+ const paginationElement = pagination.render(container);
225
+ if (paginationElement) {
226
+ state.addStyles(paginationElement.styles);
227
+ }
228
+ }
229
+ await state.updateShadowStyles();
230
+ };
231
+ const renderError = async (container, state, isThemeDark) => {
232
+ const emptyState = new EmptyState({
233
+ message: "No events found",
234
+ isThemeDark
235
+ });
236
+ emptyState.render(container);
237
+ state.addStyles(emptyState.styles);
238
+ const announcer = new Announcer({ message: "No events found" });
239
+ container.appendChild(announcer.getElement());
240
+ dispatch(container, eventNames.FEED_ERROR, {
241
+ error: "No results found"
242
+ });
243
+ await state.updateShadowStyles();
244
+ };
245
+ const eventsGrouped = (props) => {
246
+ const {
247
+ token,
248
+ isThemeDark = false,
249
+ isLazyLoad = false,
250
+ numberOfRowsToStart,
251
+ categories
252
+ } = props;
253
+ const containerBuilder = new ElementBuilder("div").withClassName(
254
+ "events-grouped-feed"
255
+ );
256
+ const container = containerBuilder.getElement();
257
+ const loading = new LoadingState({ isThemeDark });
258
+ const state = new GroupedFeedState(loading.styles);
259
+ const layoutElement = new ElementBuilder("div").withClassName("umd-feed-events-grouped").build();
260
+ state.addStyles(layoutElement.styles);
261
+ const loadMore = async () => {
262
+ const fetchProps = createFetchProps(
263
+ { token, categories, numberOfRowsToStart },
264
+ state.getOffset()
265
+ );
266
+ const variables = eventsFetchStrategyRange.composeApiVariables(fetchProps);
267
+ const entries = await eventsFetchStrategyRange.fetchEntries(variables);
268
+ if (entries && entries.length > 0) {
269
+ await renderGroupedEvents(
270
+ container,
271
+ entries,
272
+ state,
273
+ isThemeDark,
274
+ isLazyLoad,
275
+ loadMore
276
+ );
277
+ }
278
+ };
279
+ const initialize = async () => {
280
+ loading.show(container);
281
+ const fetchProps = createFetchProps(
282
+ { token, categories, numberOfRowsToStart },
283
+ 0
284
+ );
285
+ const variables = eventsFetchStrategyRange.composeApiVariables(fetchProps);
286
+ const [count, entries] = await Promise.all([
287
+ eventsFetchStrategyRange.fetchCount(variables),
288
+ eventsFetchStrategyRange.fetchEntries(variables)
289
+ ]);
290
+ loading.hide();
291
+ if (!entries || entries.length === 0) {
292
+ await renderError(container, state, isThemeDark);
293
+ return;
294
+ }
295
+ state.setTotalEntries(count || entries.length);
296
+ layoutElement.element.setAttribute(
297
+ "id",
298
+ "umd-feed-events-grouped-container"
299
+ );
300
+ container.appendChild(layoutElement.element);
301
+ dispatch(container, eventNames.FEED_LOADED, {
302
+ items: entries,
303
+ count: entries.length,
304
+ total: state.getTotalEntries()
305
+ });
306
+ await renderGroupedEvents(
307
+ container,
308
+ entries,
309
+ state,
310
+ isThemeDark,
311
+ isLazyLoad,
312
+ loadMore
313
+ );
314
+ const message = createAnnouncerMessage(
315
+ entries.length,
316
+ state.getTotalEntries(),
317
+ isLazyLoad
318
+ );
319
+ const announcer = new Announcer({ message });
320
+ container.appendChild(announcer.getElement());
321
+ };
322
+ initialize();
323
+ const model = containerBuilder.build();
324
+ return {
325
+ element: model.element,
326
+ get styles() {
327
+ return state.getStyles();
328
+ },
329
+ events: {
330
+ callback: state.getShadowCallback()
331
+ }
332
+ };
333
+ };
334
+ export {
335
+ eventsGrouped
336
+ };
337
+ //# sourceMappingURL=grouped.js.map