@universityofmaryland/web-feeds-library 1.2.3 → 1.3.0-beta.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 (435) hide show
  1. package/README.md +1 -1
  2. package/dist/academic.d.ts +1 -1
  3. package/dist/academic.js +1 -1
  4. package/dist/academic.mjs +1 -1
  5. package/dist/events.d.ts +1 -1
  6. package/dist/events.js +4 -4
  7. package/dist/events.mjs +4 -4
  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/experts.mjs +9 -0
  12. package/dist/experts.mjs.map +1 -0
  13. package/dist/factory/core/createBaseFeed.d.ts +3 -0
  14. package/dist/factory/core/createBaseFeed.d.ts.map +1 -0
  15. package/dist/factory/core/createBaseFeed.js +114 -0
  16. package/dist/factory/core/createBaseFeed.js.map +1 -0
  17. package/dist/factory/core/createBaseFeed.mjs +114 -0
  18. package/dist/factory/core/createBaseFeed.mjs.map +1 -0
  19. package/dist/factory/core/index.d.ts +3 -0
  20. package/dist/factory/core/index.d.ts.map +1 -0
  21. package/dist/factory/core/types.d.ts +91 -0
  22. package/dist/factory/core/types.d.ts.map +1 -0
  23. package/dist/factory/helpers/displayHandler.d.ts +29 -0
  24. package/dist/factory/helpers/displayHandler.d.ts.map +1 -0
  25. package/dist/factory/helpers/displayHandler.js +187 -0
  26. package/dist/factory/helpers/displayHandler.js.map +1 -0
  27. package/dist/factory/helpers/displayHandler.mjs +169 -0
  28. package/dist/factory/helpers/displayHandler.mjs.map +1 -0
  29. package/dist/factory/helpers/feedHelpers.d.ts +10 -0
  30. package/dist/factory/helpers/feedHelpers.d.ts.map +1 -0
  31. package/dist/factory/helpers/feedHelpers.js +32 -0
  32. package/dist/factory/helpers/feedHelpers.js.map +1 -0
  33. package/dist/factory/helpers/feedHelpers.mjs +32 -0
  34. package/dist/factory/helpers/feedHelpers.mjs.map +1 -0
  35. package/dist/factory/helpers/fetchHandler.d.ts +22 -0
  36. package/dist/factory/helpers/fetchHandler.d.ts.map +1 -0
  37. package/dist/factory/helpers/fetchHandler.js +140 -0
  38. package/dist/factory/helpers/fetchHandler.js.map +1 -0
  39. package/dist/factory/helpers/fetchHandler.mjs +123 -0
  40. package/dist/factory/helpers/fetchHandler.mjs.map +1 -0
  41. package/dist/factory/helpers/index.d.ts +4 -0
  42. package/dist/factory/helpers/index.d.ts.map +1 -0
  43. package/dist/factory/index.d.ts +4 -0
  44. package/dist/factory/index.d.ts.map +1 -0
  45. package/dist/feeds/academic/_types.d.ts.map +1 -0
  46. package/dist/feeds/academic/index.d.ts.map +1 -0
  47. package/dist/feeds/academic/slider.d.ts.map +1 -0
  48. package/dist/feeds/academic/slider.js +10 -0
  49. package/dist/feeds/academic/slider.js.map +1 -0
  50. package/dist/feeds/academic/slider.mjs +11 -0
  51. package/dist/feeds/academic/slider.mjs.map +1 -0
  52. package/dist/feeds/events/_types.d.ts.map +1 -0
  53. package/dist/feeds/events/grid.d.ts.map +1 -0
  54. package/dist/feeds/events/grid.js +31 -0
  55. package/dist/feeds/events/grid.js.map +1 -0
  56. package/dist/feeds/events/grid.mjs +32 -0
  57. package/dist/feeds/events/grid.mjs.map +1 -0
  58. package/dist/feeds/events/grouped.d.ts.map +1 -0
  59. package/dist/feeds/events/grouped.js +353 -0
  60. package/dist/feeds/events/grouped.js.map +1 -0
  61. package/dist/feeds/events/grouped.mjs +337 -0
  62. package/dist/feeds/events/grouped.mjs.map +1 -0
  63. package/dist/feeds/events/index.d.ts.map +1 -0
  64. package/dist/feeds/events/list.d.ts.map +1 -0
  65. package/dist/feeds/events/list.js +32 -0
  66. package/dist/feeds/events/list.js.map +1 -0
  67. package/dist/feeds/events/list.mjs +33 -0
  68. package/dist/feeds/events/list.mjs.map +1 -0
  69. package/dist/feeds/events/slider.d.ts.map +1 -0
  70. package/dist/feeds/events/slider.js +10 -0
  71. package/dist/feeds/events/slider.js.map +1 -0
  72. package/dist/feeds/events/slider.mjs +11 -0
  73. package/dist/feeds/events/slider.mjs.map +1 -0
  74. package/dist/feeds/experts/_types.d.ts +22 -0
  75. package/dist/feeds/experts/_types.d.ts.map +1 -0
  76. package/dist/feeds/experts/bio.d.ts +5 -0
  77. package/dist/feeds/experts/bio.d.ts.map +1 -0
  78. package/dist/feeds/experts/bio.js +146 -0
  79. package/dist/feeds/experts/bio.js.map +1 -0
  80. package/dist/feeds/experts/bio.mjs +147 -0
  81. package/dist/feeds/experts/bio.mjs.map +1 -0
  82. package/dist/feeds/experts/grid.d.ts +5 -0
  83. package/dist/feeds/experts/grid.d.ts.map +1 -0
  84. package/dist/feeds/experts/grid.js +36 -0
  85. package/dist/feeds/experts/grid.js.map +1 -0
  86. package/dist/feeds/experts/grid.mjs +37 -0
  87. package/dist/feeds/experts/grid.mjs.map +1 -0
  88. package/dist/feeds/experts/index.d.ts +4 -0
  89. package/dist/feeds/experts/index.d.ts.map +1 -0
  90. package/dist/feeds/experts/list.d.ts.map +1 -0
  91. package/dist/feeds/experts/list.js +25 -0
  92. package/dist/feeds/experts/list.js.map +1 -0
  93. package/dist/feeds/experts/list.mjs +26 -0
  94. package/dist/feeds/experts/list.mjs.map +1 -0
  95. package/dist/feeds/news/_types.d.ts.map +1 -0
  96. package/dist/feeds/news/featured.d.ts.map +1 -0
  97. package/dist/feeds/news/featured.js +378 -0
  98. package/dist/feeds/news/featured.js.map +1 -0
  99. package/dist/feeds/news/featured.mjs +379 -0
  100. package/dist/feeds/news/featured.mjs.map +1 -0
  101. package/dist/feeds/news/grid.d.ts.map +1 -0
  102. package/dist/feeds/news/grid.js +36 -0
  103. package/dist/feeds/news/grid.js.map +1 -0
  104. package/dist/feeds/news/grid.mjs +37 -0
  105. package/dist/feeds/news/grid.mjs.map +1 -0
  106. package/dist/feeds/news/index.d.ts.map +1 -0
  107. package/dist/feeds/news/list.d.ts +5 -0
  108. package/dist/feeds/news/list.d.ts.map +1 -0
  109. package/dist/feeds/news/list.js +33 -0
  110. package/dist/feeds/news/list.js.map +1 -0
  111. package/dist/feeds/news/list.mjs +34 -0
  112. package/dist/feeds/news/list.mjs.map +1 -0
  113. package/dist/{utilities → helpers}/events/index.d.ts +1 -0
  114. package/dist/helpers/events/index.d.ts.map +1 -0
  115. package/dist/{utilities → helpers}/events/index.js +2 -0
  116. package/dist/helpers/events/index.js.map +1 -0
  117. package/dist/{utilities → helpers}/events/index.mjs +2 -0
  118. package/dist/helpers/events/index.mjs.map +1 -0
  119. package/dist/helpers/grouping/events.d.ts +14 -0
  120. package/dist/helpers/grouping/events.d.ts.map +1 -0
  121. package/dist/helpers/grouping/events.js +147 -0
  122. package/dist/helpers/grouping/events.js.map +1 -0
  123. package/dist/helpers/grouping/events.mjs +147 -0
  124. package/dist/helpers/grouping/events.mjs.map +1 -0
  125. package/dist/helpers/grouping/index.d.ts +2 -0
  126. package/dist/helpers/grouping/index.d.ts.map +1 -0
  127. package/dist/helpers/index.d.ts +5 -0
  128. package/dist/helpers/index.d.ts.map +1 -0
  129. package/dist/helpers/network/fetch.d.ts.map +1 -0
  130. package/dist/helpers/network/index.d.ts.map +1 -0
  131. package/dist/helpers/styles/index.d.ts +2 -0
  132. package/dist/helpers/styles/index.d.ts.map +1 -0
  133. package/dist/helpers/styles/shadow.d.ts +10 -0
  134. package/dist/helpers/styles/shadow.d.ts.map +1 -0
  135. package/dist/helpers/styles/shadow.js +33 -0
  136. package/dist/helpers/styles/shadow.js.map +1 -0
  137. package/dist/helpers/styles/shadow.mjs +16 -0
  138. package/dist/helpers/styles/shadow.mjs.map +1 -0
  139. package/dist/index.d.ts +4 -3
  140. package/dist/index.d.ts.map +1 -1
  141. package/dist/index.js +2 -0
  142. package/dist/index.js.map +1 -1
  143. package/dist/index.mjs +2 -0
  144. package/dist/index.mjs.map +1 -1
  145. package/dist/news.d.ts +1 -1
  146. package/dist/news.js +3 -3
  147. package/dist/news.mjs +3 -3
  148. package/dist/states/_types.d.ts +60 -0
  149. package/dist/states/_types.d.ts.map +1 -0
  150. package/dist/states/_types.js +12 -0
  151. package/dist/states/_types.js.map +1 -0
  152. package/dist/states/_types.mjs +12 -0
  153. package/dist/states/_types.mjs.map +1 -0
  154. package/dist/states/announcer.d.ts +16 -0
  155. package/dist/states/announcer.d.ts.map +1 -0
  156. package/dist/states/announcer.js +62 -0
  157. package/dist/states/announcer.js.map +1 -0
  158. package/dist/states/announcer.mjs +62 -0
  159. package/dist/states/announcer.mjs.map +1 -0
  160. package/dist/states/empty.d.ts +17 -0
  161. package/dist/states/empty.d.ts.map +1 -0
  162. package/dist/states/empty.js +121 -0
  163. package/dist/states/empty.js.map +1 -0
  164. package/dist/states/empty.mjs +104 -0
  165. package/dist/states/empty.mjs.map +1 -0
  166. package/dist/states/index.d.ts +10 -0
  167. package/dist/states/index.d.ts.map +1 -0
  168. package/dist/states/loading.d.ts +17 -0
  169. package/dist/states/loading.d.ts.map +1 -0
  170. package/dist/states/loading.js +155 -0
  171. package/dist/states/loading.js.map +1 -0
  172. package/dist/states/loading.mjs +155 -0
  173. package/dist/states/loading.mjs.map +1 -0
  174. package/dist/states/pagination.d.ts +19 -0
  175. package/dist/states/pagination.d.ts.map +1 -0
  176. package/dist/states/pagination.js +119 -0
  177. package/dist/states/pagination.js.map +1 -0
  178. package/dist/states/pagination.mjs +102 -0
  179. package/dist/states/pagination.mjs.map +1 -0
  180. package/dist/strategies/display/events.d.ts +4 -0
  181. package/dist/strategies/display/events.d.ts.map +1 -0
  182. package/dist/strategies/display/events.js +60 -0
  183. package/dist/strategies/display/events.js.map +1 -0
  184. package/dist/strategies/display/events.mjs +60 -0
  185. package/dist/strategies/display/events.mjs.map +1 -0
  186. package/dist/strategies/display/experts.d.ts +19 -0
  187. package/dist/strategies/display/experts.d.ts.map +1 -0
  188. package/dist/strategies/display/experts.js +266 -0
  189. package/dist/strategies/display/experts.js.map +1 -0
  190. package/dist/strategies/display/experts.mjs +266 -0
  191. package/dist/strategies/display/experts.mjs.map +1 -0
  192. package/dist/strategies/display/index.d.ts +5 -0
  193. package/dist/strategies/display/index.d.ts.map +1 -0
  194. package/dist/strategies/display/news.d.ts +4 -0
  195. package/dist/strategies/display/news.d.ts.map +1 -0
  196. package/dist/strategies/display/news.js +58 -0
  197. package/dist/strategies/display/news.js.map +1 -0
  198. package/dist/strategies/display/news.mjs +58 -0
  199. package/dist/strategies/display/news.mjs.map +1 -0
  200. package/dist/strategies/fetch/academic.d.ts +2 -0
  201. package/dist/strategies/fetch/academic.d.ts.map +1 -0
  202. package/dist/strategies/fetch/academic.js +30 -0
  203. package/dist/strategies/fetch/academic.js.map +1 -0
  204. package/dist/strategies/fetch/academic.mjs +30 -0
  205. package/dist/strategies/fetch/academic.mjs.map +1 -0
  206. package/dist/strategies/fetch/events.d.ts +20 -0
  207. package/dist/strategies/fetch/events.d.ts.map +1 -0
  208. package/dist/strategies/fetch/events.js +223 -0
  209. package/dist/strategies/fetch/events.js.map +1 -0
  210. package/dist/strategies/fetch/events.mjs +223 -0
  211. package/dist/strategies/fetch/events.mjs.map +1 -0
  212. package/dist/strategies/fetch/experts.d.ts +4 -0
  213. package/dist/strategies/fetch/experts.d.ts.map +1 -0
  214. package/dist/strategies/fetch/experts.js +189 -0
  215. package/dist/strategies/fetch/experts.js.map +1 -0
  216. package/dist/strategies/fetch/experts.mjs +189 -0
  217. package/dist/strategies/fetch/experts.mjs.map +1 -0
  218. package/dist/strategies/fetch/graphql.d.ts +13 -0
  219. package/dist/strategies/fetch/graphql.d.ts.map +1 -0
  220. package/dist/strategies/fetch/graphql.js +100 -0
  221. package/dist/strategies/fetch/graphql.js.map +1 -0
  222. package/dist/strategies/fetch/graphql.mjs +100 -0
  223. package/dist/strategies/fetch/graphql.mjs.map +1 -0
  224. package/dist/strategies/fetch/index.d.ts +10 -0
  225. package/dist/strategies/fetch/index.d.ts.map +1 -0
  226. package/dist/strategies/fetch/news.d.ts +4 -0
  227. package/dist/strategies/fetch/news.d.ts.map +1 -0
  228. package/dist/strategies/fetch/news.js +95 -0
  229. package/dist/strategies/fetch/news.js.map +1 -0
  230. package/dist/strategies/fetch/news.mjs +95 -0
  231. package/dist/strategies/fetch/news.mjs.map +1 -0
  232. package/dist/strategies/index.d.ts +7 -0
  233. package/dist/strategies/index.d.ts.map +1 -0
  234. package/dist/strategies/layout/featured.d.ts +8 -0
  235. package/dist/strategies/layout/featured.d.ts.map +1 -0
  236. package/dist/strategies/layout/grid.d.ts +7 -0
  237. package/dist/strategies/layout/grid.d.ts.map +1 -0
  238. package/dist/strategies/layout/grid.js +36 -0
  239. package/dist/strategies/layout/grid.js.map +1 -0
  240. package/dist/strategies/layout/grid.mjs +36 -0
  241. package/dist/strategies/layout/grid.mjs.map +1 -0
  242. package/dist/strategies/layout/index.d.ts +4 -0
  243. package/dist/strategies/layout/index.d.ts.map +1 -0
  244. package/dist/types/api.d.ts +34 -0
  245. package/dist/types/api.d.ts.map +1 -0
  246. package/dist/types/core.d.ts +40 -0
  247. package/dist/types/core.d.ts.map +1 -0
  248. package/dist/types/data/academic.d.ts +6 -0
  249. package/dist/types/data/academic.d.ts.map +1 -0
  250. package/dist/types/data/events.d.ts +21 -0
  251. package/dist/types/data/events.d.ts.map +1 -0
  252. package/dist/types/data/experts.d.ts +53 -0
  253. package/dist/types/data/experts.d.ts.map +1 -0
  254. package/dist/types/data/index.d.ts +5 -0
  255. package/dist/types/data/index.d.ts.map +1 -0
  256. package/dist/types/data/news.d.ts +6 -0
  257. package/dist/types/data/news.d.ts.map +1 -0
  258. package/dist/types/feeds.d.ts +35 -0
  259. package/dist/types/feeds.d.ts.map +1 -0
  260. package/dist/types/index.d.ts +5 -0
  261. package/dist/types/index.d.ts.map +1 -0
  262. package/dist/widgets/index.d.ts +2 -0
  263. package/dist/widgets/index.d.ts.map +1 -0
  264. package/dist/widgets/slider.d.ts.map +1 -0
  265. package/dist/{macros → widgets}/slider.js +2 -4
  266. package/dist/{macros/slider.mjs.map → widgets/slider.js.map} +1 -1
  267. package/dist/{macros → widgets}/slider.mjs +2 -4
  268. package/dist/widgets/slider.mjs.map +1 -0
  269. package/package.json +17 -3
  270. package/dist/composite/academic/_types.d.ts.map +0 -1
  271. package/dist/composite/academic/index.d.ts.map +0 -1
  272. package/dist/composite/academic/slider.d.ts.map +0 -1
  273. package/dist/composite/academic/slider.js +0 -34
  274. package/dist/composite/academic/slider.js.map +0 -1
  275. package/dist/composite/academic/slider.mjs +0 -35
  276. package/dist/composite/academic/slider.mjs.map +0 -1
  277. package/dist/composite/events/_types.d.ts.map +0 -1
  278. package/dist/composite/events/common/data.d.ts +0 -48
  279. package/dist/composite/events/common/data.d.ts.map +0 -1
  280. package/dist/composite/events/common/data.js +0 -53
  281. package/dist/composite/events/common/data.js.map +0 -1
  282. package/dist/composite/events/common/data.mjs +0 -53
  283. package/dist/composite/events/common/data.mjs.map +0 -1
  284. package/dist/composite/events/common/display.d.ts +0 -18
  285. package/dist/composite/events/common/display.d.ts.map +0 -1
  286. package/dist/composite/events/common/display.js +0 -147
  287. package/dist/composite/events/common/display.js.map +0 -1
  288. package/dist/composite/events/common/display.mjs +0 -130
  289. package/dist/composite/events/common/display.mjs.map +0 -1
  290. package/dist/composite/events/common/fetch.d.ts +0 -24
  291. package/dist/composite/events/common/fetch.d.ts.map +0 -1
  292. package/dist/composite/events/common/fetch.js +0 -117
  293. package/dist/composite/events/common/fetch.js.map +0 -1
  294. package/dist/composite/events/common/fetch.mjs +0 -117
  295. package/dist/composite/events/common/fetch.mjs.map +0 -1
  296. package/dist/composite/events/common/queries.d.ts +0 -5
  297. package/dist/composite/events/common/queries.d.ts.map +0 -1
  298. package/dist/composite/events/common/queries.js +0 -113
  299. package/dist/composite/events/common/queries.js.map +0 -1
  300. package/dist/composite/events/common/queries.mjs +0 -113
  301. package/dist/composite/events/common/queries.mjs.map +0 -1
  302. package/dist/composite/events/grid.d.ts.map +0 -1
  303. package/dist/composite/events/grid.js +0 -90
  304. package/dist/composite/events/grid.js.map +0 -1
  305. package/dist/composite/events/grid.mjs +0 -91
  306. package/dist/composite/events/grid.mjs.map +0 -1
  307. package/dist/composite/events/grouped.d.ts.map +0 -1
  308. package/dist/composite/events/grouped.js +0 -300
  309. package/dist/composite/events/grouped.js.map +0 -1
  310. package/dist/composite/events/grouped.mjs +0 -284
  311. package/dist/composite/events/grouped.mjs.map +0 -1
  312. package/dist/composite/events/index.d.ts.map +0 -1
  313. package/dist/composite/events/list.d.ts.map +0 -1
  314. package/dist/composite/events/list.js +0 -90
  315. package/dist/composite/events/list.js.map +0 -1
  316. package/dist/composite/events/list.mjs +0 -91
  317. package/dist/composite/events/list.mjs.map +0 -1
  318. package/dist/composite/events/slider.d.ts.map +0 -1
  319. package/dist/composite/events/slider.js +0 -35
  320. package/dist/composite/events/slider.js.map +0 -1
  321. package/dist/composite/events/slider.mjs +0 -36
  322. package/dist/composite/events/slider.mjs.map +0 -1
  323. package/dist/composite/news/_types.d.ts.map +0 -1
  324. package/dist/composite/news/common/data.d.ts +0 -47
  325. package/dist/composite/news/common/data.d.ts.map +0 -1
  326. package/dist/composite/news/common/data.js +0 -62
  327. package/dist/composite/news/common/data.js.map +0 -1
  328. package/dist/composite/news/common/data.mjs +0 -62
  329. package/dist/composite/news/common/data.mjs.map +0 -1
  330. package/dist/composite/news/common/display.d.ts +0 -17
  331. package/dist/composite/news/common/display.d.ts.map +0 -1
  332. package/dist/composite/news/common/display.js +0 -147
  333. package/dist/composite/news/common/display.js.map +0 -1
  334. package/dist/composite/news/common/display.mjs +0 -130
  335. package/dist/composite/news/common/display.mjs.map +0 -1
  336. package/dist/composite/news/common/fetch.d.ts +0 -22
  337. package/dist/composite/news/common/fetch.d.ts.map +0 -1
  338. package/dist/composite/news/common/fetch.js +0 -87
  339. package/dist/composite/news/common/fetch.js.map +0 -1
  340. package/dist/composite/news/common/fetch.mjs +0 -87
  341. package/dist/composite/news/common/fetch.mjs.map +0 -1
  342. package/dist/composite/news/common/queries.d.ts +0 -2
  343. package/dist/composite/news/common/queries.d.ts.map +0 -1
  344. package/dist/composite/news/common/queries.js +0 -37
  345. package/dist/composite/news/common/queries.js.map +0 -1
  346. package/dist/composite/news/common/queries.mjs +0 -37
  347. package/dist/composite/news/common/queries.mjs.map +0 -1
  348. package/dist/composite/news/featured.d.ts.map +0 -1
  349. package/dist/composite/news/featured.js +0 -182
  350. package/dist/composite/news/featured.js.map +0 -1
  351. package/dist/composite/news/featured.mjs +0 -183
  352. package/dist/composite/news/featured.mjs.map +0 -1
  353. package/dist/composite/news/grid.d.ts.map +0 -1
  354. package/dist/composite/news/grid.js +0 -98
  355. package/dist/composite/news/grid.js.map +0 -1
  356. package/dist/composite/news/grid.mjs +0 -99
  357. package/dist/composite/news/grid.mjs.map +0 -1
  358. package/dist/composite/news/index.d.ts.map +0 -1
  359. package/dist/composite/news/list.d.ts.map +0 -1
  360. package/dist/composite/news/list.js +0 -85
  361. package/dist/composite/news/list.js.map +0 -1
  362. package/dist/composite/news/list.mjs +0 -86
  363. package/dist/composite/news/list.mjs.map +0 -1
  364. package/dist/elements/asset.d.ts +0 -10
  365. package/dist/elements/asset.d.ts.map +0 -1
  366. package/dist/elements/asset.js +0 -27
  367. package/dist/elements/asset.js.map +0 -1
  368. package/dist/elements/asset.mjs +0 -27
  369. package/dist/elements/asset.mjs.map +0 -1
  370. package/dist/elements/index.d.ts +0 -4
  371. package/dist/elements/index.d.ts.map +0 -1
  372. package/dist/elements/layout.d.ts +0 -27
  373. package/dist/elements/layout.d.ts.map +0 -1
  374. package/dist/elements/layout.js +0 -121
  375. package/dist/elements/layout.js.map +0 -1
  376. package/dist/elements/layout.mjs +0 -104
  377. package/dist/elements/layout.mjs.map +0 -1
  378. package/dist/elements/text.d.ts +0 -12
  379. package/dist/elements/text.d.ts.map +0 -1
  380. package/dist/elements/text.js +0 -41
  381. package/dist/elements/text.js.map +0 -1
  382. package/dist/elements/text.mjs +0 -41
  383. package/dist/elements/text.mjs.map +0 -1
  384. package/dist/macros/aria-live.d.ts +0 -11
  385. package/dist/macros/aria-live.d.ts.map +0 -1
  386. package/dist/macros/aria-live.js +0 -25
  387. package/dist/macros/aria-live.js.map +0 -1
  388. package/dist/macros/aria-live.mjs +0 -26
  389. package/dist/macros/aria-live.mjs.map +0 -1
  390. package/dist/macros/index.d.ts +0 -6
  391. package/dist/macros/index.d.ts.map +0 -1
  392. package/dist/macros/lazy-load.d.ts +0 -19
  393. package/dist/macros/lazy-load.d.ts.map +0 -1
  394. package/dist/macros/lazy-load.js +0 -63
  395. package/dist/macros/lazy-load.js.map +0 -1
  396. package/dist/macros/lazy-load.mjs +0 -47
  397. package/dist/macros/lazy-load.mjs.map +0 -1
  398. package/dist/macros/loader.d.ts +0 -18
  399. package/dist/macros/loader.d.ts.map +0 -1
  400. package/dist/macros/loader.js +0 -148
  401. package/dist/macros/loader.js.map +0 -1
  402. package/dist/macros/loader.mjs +0 -132
  403. package/dist/macros/loader.mjs.map +0 -1
  404. package/dist/macros/no-results.d.ts +0 -15
  405. package/dist/macros/no-results.d.ts.map +0 -1
  406. package/dist/macros/no-results.js +0 -71
  407. package/dist/macros/no-results.js.map +0 -1
  408. package/dist/macros/no-results.mjs +0 -55
  409. package/dist/macros/no-results.mjs.map +0 -1
  410. package/dist/macros/slider.d.ts.map +0 -1
  411. package/dist/macros/slider.js.map +0 -1
  412. package/dist/utilities/events/index.d.ts.map +0 -1
  413. package/dist/utilities/events/index.js.map +0 -1
  414. package/dist/utilities/events/index.mjs.map +0 -1
  415. package/dist/utilities/index.d.ts +0 -3
  416. package/dist/utilities/index.d.ts.map +0 -1
  417. package/dist/utilities/network/fetch.d.ts.map +0 -1
  418. package/dist/utilities/network/index.d.ts.map +0 -1
  419. /package/dist/{composite → feeds}/academic/_types.d.ts +0 -0
  420. /package/dist/{composite → feeds}/academic/index.d.ts +0 -0
  421. /package/dist/{composite → feeds}/academic/slider.d.ts +0 -0
  422. /package/dist/{composite → feeds}/events/_types.d.ts +0 -0
  423. /package/dist/{composite → feeds}/events/grid.d.ts +0 -0
  424. /package/dist/{composite → feeds}/events/grouped.d.ts +0 -0
  425. /package/dist/{composite → feeds}/events/index.d.ts +0 -0
  426. /package/dist/{composite → feeds}/events/list.d.ts +0 -0
  427. /package/dist/{composite → feeds}/events/slider.d.ts +0 -0
  428. /package/dist/{composite/news → feeds/experts}/list.d.ts +0 -0
  429. /package/dist/{composite → feeds}/news/_types.d.ts +0 -0
  430. /package/dist/{composite → feeds}/news/featured.d.ts +0 -0
  431. /package/dist/{composite → feeds}/news/grid.d.ts +0 -0
  432. /package/dist/{composite → feeds}/news/index.d.ts +0 -0
  433. /package/dist/{utilities → helpers}/network/fetch.d.ts +0 -0
  434. /package/dist/{utilities → helpers}/network/index.d.ts +0 -0
  435. /package/dist/{macros → widgets}/slider.d.ts +0 -0
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const webBuilderLibrary = require("@universityofmaryland/web-builder-library");
4
+ const Styles = require("@universityofmaryland/web-styles-library");
5
+ const typography = require("@universityofmaryland/web-styles-library/typography");
6
+ const theme = require("@universityofmaryland/web-utilities-library/theme");
7
+ const empty = require("../../states/empty.js");
8
+ const pagination = require("../../states/pagination.js");
9
+ const announcer = require("../../states/announcer.js");
10
+ const index = require("../../helpers/events/index.js");
11
+ function _interopNamespaceDefault(e) {
12
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
13
+ if (e) {
14
+ for (const k in e) {
15
+ if (k !== "default") {
16
+ const d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: () => e[k]
20
+ });
21
+ }
22
+ }
23
+ }
24
+ n.default = e;
25
+ return Object.freeze(n);
26
+ }
27
+ const Styles__namespace = /* @__PURE__ */ _interopNamespaceDefault(Styles);
28
+ const typography__namespace = /* @__PURE__ */ _interopNamespaceDefault(typography);
29
+ async function setShadowStyles({
30
+ shadowRoot,
31
+ styles
32
+ }) {
33
+ const styleElement = document.createElement("style");
34
+ const optimizedCss = await Styles__namespace.utilities.transform.css.removeDuplicates(
35
+ styles
36
+ );
37
+ styleElement.textContent = optimizedCss;
38
+ shadowRoot.appendChild(styleElement);
39
+ }
40
+ function createFallbackMessage(categoryNames, isThemeDark = false) {
41
+ const formattedNames = categoryNames.join(", ");
42
+ const message = `No events found for "${formattedNames}" <span> Other upcoming events:</span>`;
43
+ const messageElement = new webBuilderLibrary.ElementBuilder(document.createElement("p")).styled(
44
+ typography__namespace.sans.compose("extralarge", {
45
+ theme: theme.theme.fontColor(isThemeDark)
46
+ })
47
+ ).withStyles({
48
+ textAlign: "center",
49
+ margin: "0 auto",
50
+ ["& span"]: {
51
+ display: "block"
52
+ }
53
+ }).withHTML(message);
54
+ const container = new webBuilderLibrary.ElementBuilder(document.createElement("div")).withClassName("feed-events-fallback-message").withChild(messageElement).withStyles({
55
+ element: {
56
+ marginBottom: Styles__namespace.token.spacing.lg,
57
+ padding: `${Styles__namespace.token.spacing.md} ${Styles__namespace.token.spacing.lg}`
58
+ }
59
+ }).build();
60
+ return container;
61
+ }
62
+ function createDisplayHandlers(config) {
63
+ const {
64
+ displayStrategy,
65
+ layoutStrategy,
66
+ helpers,
67
+ cardMappingOptions,
68
+ isLazyLoad,
69
+ numberOfColumnsToShow = 1,
70
+ numberOfRowsToStart,
71
+ noResultsConfig = {},
72
+ lazyLoadCallback
73
+ } = config;
74
+ const displayNoResults = (props) => {
75
+ const container = helpers.getContainer();
76
+ const shadowRoot = helpers.getShadowRoot();
77
+ const { message, linkUrl, linkText, isThemeDark } = {
78
+ ...noResultsConfig,
79
+ ...props
80
+ };
81
+ const emptyState = new empty.EmptyState({
82
+ message,
83
+ linkUrl,
84
+ linkText,
85
+ isThemeDark
86
+ });
87
+ const announcer$1 = new announcer.Announcer({ message: message || "No results found" });
88
+ container.innerHTML = "";
89
+ emptyState.render(container);
90
+ container.appendChild(announcer$1.getElement());
91
+ helpers.setStyles(emptyState.styles);
92
+ index.dispatch(container, index.eventNames.FEED_ERROR, {
93
+ error: "No results found",
94
+ message,
95
+ isThemeDark
96
+ });
97
+ setTimeout(() => {
98
+ const styles = helpers.getStyles();
99
+ if (shadowRoot) {
100
+ setShadowStyles({ shadowRoot, styles });
101
+ }
102
+ }, 100);
103
+ };
104
+ const displayResults = async (props) => {
105
+ const { feedData } = props;
106
+ const container = helpers.getContainer();
107
+ const grid = container.querySelector(
108
+ `#${layoutStrategy.getId()}`
109
+ );
110
+ const existingLoader = container.querySelector(".umd-loader-container");
111
+ existingLoader?.remove();
112
+ const existingPagination = container.querySelector(
113
+ `.${Styles__namespace.layout.alignment.block.center.className}`
114
+ );
115
+ existingPagination?.remove();
116
+ helpers.setOffset(feedData.length);
117
+ const entries = feedData.map(
118
+ (entry) => displayStrategy.mapEntryToCard(entry, cardMappingOptions)
119
+ );
120
+ entries.forEach((entry) => {
121
+ grid.appendChild(entry.element);
122
+ helpers.setStyles(entry.styles);
123
+ });
124
+ if (isLazyLoad && lazyLoadCallback) {
125
+ const pagination$1 = new pagination.PaginationState({
126
+ totalEntries: helpers.getTotalEntries(),
127
+ offset: helpers.getOffset(),
128
+ isLazyLoad: true,
129
+ callback: lazyLoadCallback
130
+ });
131
+ const paginationElement = pagination$1.render(container);
132
+ if (paginationElement) {
133
+ helpers.setStyles(paginationElement.styles);
134
+ }
135
+ }
136
+ const shadowRoot = helpers.getShadowRoot();
137
+ if (shadowRoot) {
138
+ await setShadowStyles({
139
+ shadowRoot,
140
+ styles: helpers.getStyles()
141
+ });
142
+ }
143
+ };
144
+ const displayResultStart = async (props) => {
145
+ const { feedData, layoutElement, isFallback, categoryNames } = props;
146
+ const container = helpers.getContainer();
147
+ const totalEntries = helpers.getTotalEntries();
148
+ const showAmount = numberOfColumnsToShow * numberOfRowsToStart;
149
+ const message = isLazyLoad ? `Showing ${showAmount} of ${totalEntries} articles` : `Showing ${showAmount} articles`;
150
+ if (isFallback && categoryNames && categoryNames.length > 0) {
151
+ const fallbackMessage = createFallbackMessage(
152
+ categoryNames,
153
+ cardMappingOptions.isThemeDark || false
154
+ );
155
+ container.appendChild(fallbackMessage.element);
156
+ helpers.setStyles(fallbackMessage.styles);
157
+ const shadowRoot = helpers.getShadowRoot();
158
+ if (shadowRoot) {
159
+ await setShadowStyles({
160
+ shadowRoot,
161
+ styles: helpers.getStyles()
162
+ });
163
+ }
164
+ }
165
+ layoutElement.element.setAttribute("id", layoutStrategy.getId());
166
+ container.appendChild(layoutElement.element);
167
+ helpers.setStyles(layoutElement.styles);
168
+ index.dispatch(container, index.eventNames.FEED_LOADED, {
169
+ items: feedData,
170
+ count: feedData.length,
171
+ total: totalEntries || feedData.length,
172
+ isFallback,
173
+ categoryNames
174
+ });
175
+ await displayResults({ feedData });
176
+ const announcer$1 = new announcer.Announcer({ message });
177
+ container.appendChild(announcer$1.getElement());
178
+ };
179
+ return {
180
+ displayNoResults,
181
+ displayResults,
182
+ displayResultStart
183
+ };
184
+ }
185
+ exports.createDisplayHandlers = createDisplayHandlers;
186
+ exports.setShadowStyles = setShadowStyles;
187
+ //# sourceMappingURL=displayHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"displayHandler.js","sources":["../../../source/factory/helpers/displayHandler.ts"],"sourcesContent":["/**\n * Display Handler Utilities\n *\n * Creates handlers for displaying feed results using a display strategy.\n * Handles both initial display and lazy-loaded results.\n *\n * @module factory/helpers/displayHandler\n */\n\nimport { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as Styles from '@universityofmaryland/web-styles-library';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport { theme } from '@universityofmaryland/web-utilities-library/theme';\nimport { PaginationState, EmptyState, Announcer } from '../../states';\nimport { events } from '../../helpers';\nimport {\n DisplayStrategy,\n FeedHelpers,\n LayoutStrategy,\n CardMappingOptions,\n DisplayResultsProps,\n NoResultsConfig,\n} from '../core/types';\nimport { ElementModel } from '../../_types';\n\n/**\n * Configuration for creating display handlers\n */\ninterface DisplayHandlerConfig<TData> {\n /** Strategy for displaying entries */\n displayStrategy: DisplayStrategy<TData>;\n /** Strategy for creating layout */\n layoutStrategy: LayoutStrategy;\n /** Feed helper functions */\n helpers: FeedHelpers;\n /** Options for card mapping */\n cardMappingOptions: CardMappingOptions;\n /** Whether lazy loading is enabled */\n isLazyLoad?: boolean;\n /** Number of columns to show */\n numberOfColumnsToShow?: number;\n /** Number of rows to start with */\n numberOfRowsToStart: number;\n /** Configuration for no results state */\n noResultsConfig?: NoResultsConfig;\n /** Callback for lazy load */\n lazyLoadCallback?: () => Promise<void>;\n}\n\n/**\n * Set shadow root styles with CSS optimization\n */\nexport async function setShadowStyles({\n shadowRoot,\n styles,\n}: {\n shadowRoot: ShadowRoot;\n styles: string;\n}): Promise<void> {\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\n/**\n * Create fallback message for category-filtered feeds with no results\n */\nfunction createFallbackMessage(\n categoryNames: string[],\n isThemeDark: boolean = false,\n): ElementModel {\n const formattedNames = categoryNames.join(', ');\n const message = `No events found for \"${formattedNames}\" <span> Other upcoming events:</span>`;\n\n const messageElement = new ElementBuilder(document.createElement('p'))\n .styled(\n typography.sans.compose('extralarge', {\n theme: theme.fontColor(isThemeDark),\n }),\n )\n .withStyles({\n textAlign: 'center',\n margin: '0 auto',\n\n ['& span']: {\n display: 'block',\n },\n })\n .withHTML(message);\n\n const container = new ElementBuilder(document.createElement('div'))\n .withClassName('feed-events-fallback-message')\n .withChild(messageElement)\n .withStyles({\n element: {\n marginBottom: Styles.token.spacing.lg,\n padding: `${Styles.token.spacing.md} ${Styles.token.spacing.lg}`,\n },\n })\n .build();\n\n return container;\n}\n\n/**\n * Create display handlers for a feed\n *\n * Returns handlers for:\n * - Displaying initial results\n * - Displaying lazy-loaded results\n * - Displaying no results state\n *\n * @param config - Configuration for the display handlers\n * @returns Display handler functions\n *\n * @example\n * ```typescript\n * const handlers = createDisplayHandlers({\n * displayStrategy: eventsDisplayStrategy,\n * layoutStrategy: gridGapLayout,\n * helpers: feedHelpers,\n * cardMappingOptions: { isThemeDark: false },\n * isLazyLoad: true,\n * numberOfColumnsToShow: 3,\n * numberOfRowsToStart: 2,\n * });\n *\n * // Use handlers\n * handlers.displayResultStart({ feedData, layoutElement });\n * await handlers.displayResults({ feedData });\n * ```\n */\nexport function createDisplayHandlers<TData>(\n config: DisplayHandlerConfig<TData>,\n) {\n const {\n displayStrategy,\n layoutStrategy,\n helpers,\n cardMappingOptions,\n isLazyLoad,\n numberOfColumnsToShow = 1,\n numberOfRowsToStart,\n noResultsConfig = {},\n lazyLoadCallback,\n } = config;\n\n /**\n * Handle displaying no results\n */\n const displayNoResults = (props: any) => {\n const container = helpers.getContainer();\n const shadowRoot = helpers.getShadowRoot();\n const { message, linkUrl, linkText, isThemeDark } = {\n ...noResultsConfig,\n ...props,\n };\n\n const emptyState = new EmptyState({\n message,\n linkUrl,\n linkText,\n isThemeDark,\n });\n\n const announcer = new Announcer({ message: message || 'No results found' });\n\n container.innerHTML = '';\n emptyState.render(container);\n container.appendChild(announcer.getElement());\n helpers.setStyles(emptyState.styles);\n\n events.dispatch(container, events.eventNames.FEED_ERROR, {\n error: 'No results found',\n message,\n isThemeDark,\n });\n\n setTimeout(() => {\n const styles = helpers.getStyles();\n if (shadowRoot) {\n setShadowStyles({ shadowRoot, styles });\n }\n }, 100);\n };\n\n /**\n * Handle displaying lazy-loaded results\n */\n const displayResults = async (\n props: DisplayResultsProps<TData>,\n ): Promise<void> => {\n const { feedData } = props;\n const container = helpers.getContainer();\n const grid = container.querySelector(\n `#${layoutStrategy.getId()}`,\n ) as HTMLDivElement;\n\n // Remove existing loading and pagination states\n const existingLoader = container.querySelector('.umd-loader-container');\n existingLoader?.remove();\n\n const existingPagination = container.querySelector(\n `.${Styles.layout.alignment.block.center.className}`,\n );\n existingPagination?.remove();\n\n helpers.setOffset(feedData.length);\n\n // Map entries to cards using display strategy\n const entries = feedData.map((entry) =>\n displayStrategy.mapEntryToCard(entry, cardMappingOptions),\n );\n\n // Append entries to grid\n entries.forEach((entry) => {\n grid.appendChild(entry.element);\n helpers.setStyles(entry.styles);\n });\n\n // Add pagination if lazy load is enabled\n if (isLazyLoad && lazyLoadCallback) {\n const pagination = new PaginationState({\n totalEntries: helpers.getTotalEntries(),\n offset: helpers.getOffset(),\n isLazyLoad: true,\n callback: lazyLoadCallback,\n });\n\n const paginationElement = pagination.render(container);\n if (paginationElement) {\n helpers.setStyles(paginationElement.styles);\n }\n }\n\n // Update shadow root styles if needed\n const shadowRoot = helpers.getShadowRoot();\n if (shadowRoot) {\n await setShadowStyles({\n shadowRoot,\n styles: helpers.getStyles(),\n });\n }\n };\n\n /**\n * Handle displaying initial results\n */\n const displayResultStart = async (props: {\n feedData: TData[];\n layoutElement: ElementModel;\n isFallback?: boolean;\n categoryNames?: string[];\n }): Promise<void> => {\n const { feedData, layoutElement, isFallback, categoryNames } = props;\n const container = helpers.getContainer();\n const totalEntries = helpers.getTotalEntries();\n const showAmount = numberOfColumnsToShow * numberOfRowsToStart;\n const message = isLazyLoad\n ? `Showing ${showAmount} of ${totalEntries} articles`\n : `Showing ${showAmount} articles`;\n\n // If this is a fallback, add a message about the category FIRST\n if (isFallback && categoryNames && categoryNames.length > 0) {\n const fallbackMessage = createFallbackMessage(\n categoryNames,\n cardMappingOptions.isThemeDark || false,\n );\n container.appendChild(fallbackMessage.element);\n helpers.setStyles(fallbackMessage.styles);\n\n // Inject fallback message styles into shadow DOM immediately\n const shadowRoot = helpers.getShadowRoot();\n if (shadowRoot) {\n await setShadowStyles({\n shadowRoot,\n styles: helpers.getStyles(),\n });\n }\n }\n\n // Set layout ID and append to container\n layoutElement.element.setAttribute('id', layoutStrategy.getId());\n container.appendChild(layoutElement.element);\n helpers.setStyles(layoutElement.styles);\n\n // Dispatch feed loaded event\n events.dispatch(container, events.eventNames.FEED_LOADED, {\n items: feedData,\n count: feedData.length,\n total: totalEntries || feedData.length,\n isFallback,\n categoryNames,\n });\n\n // Display the results\n await displayResults({ feedData });\n\n // Add announcer\n const announcer = new Announcer({ message });\n container.appendChild(announcer.getElement());\n };\n\n return {\n displayNoResults,\n displayResults,\n displayResultStart,\n };\n}\n"],"names":["Styles","ElementBuilder","typography","theme","EmptyState","announcer","Announcer","events.dispatch","events.eventNames","pagination","PaginationState"],"mappings":"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"}
@@ -0,0 +1,169 @@
1
+ import { ElementBuilder } from "@universityofmaryland/web-builder-library";
2
+ import * as Styles from "@universityofmaryland/web-styles-library";
3
+ import * as typography from "@universityofmaryland/web-styles-library/typography";
4
+ import { theme } from "@universityofmaryland/web-utilities-library/theme";
5
+ import { EmptyState } from "../../states/empty.mjs";
6
+ import { PaginationState } from "../../states/pagination.mjs";
7
+ import { Announcer } from "../../states/announcer.mjs";
8
+ import { dispatch, eventNames } from "../../helpers/events/index.mjs";
9
+ async function setShadowStyles({
10
+ shadowRoot,
11
+ styles
12
+ }) {
13
+ const styleElement = document.createElement("style");
14
+ const optimizedCss = await Styles.utilities.transform.css.removeDuplicates(
15
+ styles
16
+ );
17
+ styleElement.textContent = optimizedCss;
18
+ shadowRoot.appendChild(styleElement);
19
+ }
20
+ function createFallbackMessage(categoryNames, isThemeDark = false) {
21
+ const formattedNames = categoryNames.join(", ");
22
+ const message = `No events found for "${formattedNames}" <span> Other upcoming events:</span>`;
23
+ const messageElement = new ElementBuilder(document.createElement("p")).styled(
24
+ typography.sans.compose("extralarge", {
25
+ theme: theme.fontColor(isThemeDark)
26
+ })
27
+ ).withStyles({
28
+ textAlign: "center",
29
+ margin: "0 auto",
30
+ ["& span"]: {
31
+ display: "block"
32
+ }
33
+ }).withHTML(message);
34
+ const container = new ElementBuilder(document.createElement("div")).withClassName("feed-events-fallback-message").withChild(messageElement).withStyles({
35
+ element: {
36
+ marginBottom: Styles.token.spacing.lg,
37
+ padding: `${Styles.token.spacing.md} ${Styles.token.spacing.lg}`
38
+ }
39
+ }).build();
40
+ return container;
41
+ }
42
+ function createDisplayHandlers(config) {
43
+ const {
44
+ displayStrategy,
45
+ layoutStrategy,
46
+ helpers,
47
+ cardMappingOptions,
48
+ isLazyLoad,
49
+ numberOfColumnsToShow = 1,
50
+ numberOfRowsToStart,
51
+ noResultsConfig = {},
52
+ lazyLoadCallback
53
+ } = config;
54
+ const displayNoResults = (props) => {
55
+ const container = helpers.getContainer();
56
+ const shadowRoot = helpers.getShadowRoot();
57
+ const { message, linkUrl, linkText, isThemeDark } = {
58
+ ...noResultsConfig,
59
+ ...props
60
+ };
61
+ const emptyState = new EmptyState({
62
+ message,
63
+ linkUrl,
64
+ linkText,
65
+ isThemeDark
66
+ });
67
+ const announcer = new Announcer({ message: message || "No results found" });
68
+ container.innerHTML = "";
69
+ emptyState.render(container);
70
+ container.appendChild(announcer.getElement());
71
+ helpers.setStyles(emptyState.styles);
72
+ dispatch(container, eventNames.FEED_ERROR, {
73
+ error: "No results found",
74
+ message,
75
+ isThemeDark
76
+ });
77
+ setTimeout(() => {
78
+ const styles = helpers.getStyles();
79
+ if (shadowRoot) {
80
+ setShadowStyles({ shadowRoot, styles });
81
+ }
82
+ }, 100);
83
+ };
84
+ const displayResults = async (props) => {
85
+ const { feedData } = props;
86
+ const container = helpers.getContainer();
87
+ const grid = container.querySelector(
88
+ `#${layoutStrategy.getId()}`
89
+ );
90
+ const existingLoader = container.querySelector(".umd-loader-container");
91
+ existingLoader?.remove();
92
+ const existingPagination = container.querySelector(
93
+ `.${Styles.layout.alignment.block.center.className}`
94
+ );
95
+ existingPagination?.remove();
96
+ helpers.setOffset(feedData.length);
97
+ const entries = feedData.map(
98
+ (entry) => displayStrategy.mapEntryToCard(entry, cardMappingOptions)
99
+ );
100
+ entries.forEach((entry) => {
101
+ grid.appendChild(entry.element);
102
+ helpers.setStyles(entry.styles);
103
+ });
104
+ if (isLazyLoad && lazyLoadCallback) {
105
+ const pagination = new PaginationState({
106
+ totalEntries: helpers.getTotalEntries(),
107
+ offset: helpers.getOffset(),
108
+ isLazyLoad: true,
109
+ callback: lazyLoadCallback
110
+ });
111
+ const paginationElement = pagination.render(container);
112
+ if (paginationElement) {
113
+ helpers.setStyles(paginationElement.styles);
114
+ }
115
+ }
116
+ const shadowRoot = helpers.getShadowRoot();
117
+ if (shadowRoot) {
118
+ await setShadowStyles({
119
+ shadowRoot,
120
+ styles: helpers.getStyles()
121
+ });
122
+ }
123
+ };
124
+ const displayResultStart = async (props) => {
125
+ const { feedData, layoutElement, isFallback, categoryNames } = props;
126
+ const container = helpers.getContainer();
127
+ const totalEntries = helpers.getTotalEntries();
128
+ const showAmount = numberOfColumnsToShow * numberOfRowsToStart;
129
+ const message = isLazyLoad ? `Showing ${showAmount} of ${totalEntries} articles` : `Showing ${showAmount} articles`;
130
+ if (isFallback && categoryNames && categoryNames.length > 0) {
131
+ const fallbackMessage = createFallbackMessage(
132
+ categoryNames,
133
+ cardMappingOptions.isThemeDark || false
134
+ );
135
+ container.appendChild(fallbackMessage.element);
136
+ helpers.setStyles(fallbackMessage.styles);
137
+ const shadowRoot = helpers.getShadowRoot();
138
+ if (shadowRoot) {
139
+ await setShadowStyles({
140
+ shadowRoot,
141
+ styles: helpers.getStyles()
142
+ });
143
+ }
144
+ }
145
+ layoutElement.element.setAttribute("id", layoutStrategy.getId());
146
+ container.appendChild(layoutElement.element);
147
+ helpers.setStyles(layoutElement.styles);
148
+ dispatch(container, eventNames.FEED_LOADED, {
149
+ items: feedData,
150
+ count: feedData.length,
151
+ total: totalEntries || feedData.length,
152
+ isFallback,
153
+ categoryNames
154
+ });
155
+ await displayResults({ feedData });
156
+ const announcer = new Announcer({ message });
157
+ container.appendChild(announcer.getElement());
158
+ };
159
+ return {
160
+ displayNoResults,
161
+ displayResults,
162
+ displayResultStart
163
+ };
164
+ }
165
+ export {
166
+ createDisplayHandlers,
167
+ setShadowStyles
168
+ };
169
+ //# sourceMappingURL=displayHandler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"displayHandler.mjs","sources":["../../../source/factory/helpers/displayHandler.ts"],"sourcesContent":["/**\n * Display Handler Utilities\n *\n * Creates handlers for displaying feed results using a display strategy.\n * Handles both initial display and lazy-loaded results.\n *\n * @module factory/helpers/displayHandler\n */\n\nimport { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as Styles from '@universityofmaryland/web-styles-library';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport { theme } from '@universityofmaryland/web-utilities-library/theme';\nimport { PaginationState, EmptyState, Announcer } from '../../states';\nimport { events } from '../../helpers';\nimport {\n DisplayStrategy,\n FeedHelpers,\n LayoutStrategy,\n CardMappingOptions,\n DisplayResultsProps,\n NoResultsConfig,\n} from '../core/types';\nimport { ElementModel } from '../../_types';\n\n/**\n * Configuration for creating display handlers\n */\ninterface DisplayHandlerConfig<TData> {\n /** Strategy for displaying entries */\n displayStrategy: DisplayStrategy<TData>;\n /** Strategy for creating layout */\n layoutStrategy: LayoutStrategy;\n /** Feed helper functions */\n helpers: FeedHelpers;\n /** Options for card mapping */\n cardMappingOptions: CardMappingOptions;\n /** Whether lazy loading is enabled */\n isLazyLoad?: boolean;\n /** Number of columns to show */\n numberOfColumnsToShow?: number;\n /** Number of rows to start with */\n numberOfRowsToStart: number;\n /** Configuration for no results state */\n noResultsConfig?: NoResultsConfig;\n /** Callback for lazy load */\n lazyLoadCallback?: () => Promise<void>;\n}\n\n/**\n * Set shadow root styles with CSS optimization\n */\nexport async function setShadowStyles({\n shadowRoot,\n styles,\n}: {\n shadowRoot: ShadowRoot;\n styles: string;\n}): Promise<void> {\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\n/**\n * Create fallback message for category-filtered feeds with no results\n */\nfunction createFallbackMessage(\n categoryNames: string[],\n isThemeDark: boolean = false,\n): ElementModel {\n const formattedNames = categoryNames.join(', ');\n const message = `No events found for \"${formattedNames}\" <span> Other upcoming events:</span>`;\n\n const messageElement = new ElementBuilder(document.createElement('p'))\n .styled(\n typography.sans.compose('extralarge', {\n theme: theme.fontColor(isThemeDark),\n }),\n )\n .withStyles({\n textAlign: 'center',\n margin: '0 auto',\n\n ['& span']: {\n display: 'block',\n },\n })\n .withHTML(message);\n\n const container = new ElementBuilder(document.createElement('div'))\n .withClassName('feed-events-fallback-message')\n .withChild(messageElement)\n .withStyles({\n element: {\n marginBottom: Styles.token.spacing.lg,\n padding: `${Styles.token.spacing.md} ${Styles.token.spacing.lg}`,\n },\n })\n .build();\n\n return container;\n}\n\n/**\n * Create display handlers for a feed\n *\n * Returns handlers for:\n * - Displaying initial results\n * - Displaying lazy-loaded results\n * - Displaying no results state\n *\n * @param config - Configuration for the display handlers\n * @returns Display handler functions\n *\n * @example\n * ```typescript\n * const handlers = createDisplayHandlers({\n * displayStrategy: eventsDisplayStrategy,\n * layoutStrategy: gridGapLayout,\n * helpers: feedHelpers,\n * cardMappingOptions: { isThemeDark: false },\n * isLazyLoad: true,\n * numberOfColumnsToShow: 3,\n * numberOfRowsToStart: 2,\n * });\n *\n * // Use handlers\n * handlers.displayResultStart({ feedData, layoutElement });\n * await handlers.displayResults({ feedData });\n * ```\n */\nexport function createDisplayHandlers<TData>(\n config: DisplayHandlerConfig<TData>,\n) {\n const {\n displayStrategy,\n layoutStrategy,\n helpers,\n cardMappingOptions,\n isLazyLoad,\n numberOfColumnsToShow = 1,\n numberOfRowsToStart,\n noResultsConfig = {},\n lazyLoadCallback,\n } = config;\n\n /**\n * Handle displaying no results\n */\n const displayNoResults = (props: any) => {\n const container = helpers.getContainer();\n const shadowRoot = helpers.getShadowRoot();\n const { message, linkUrl, linkText, isThemeDark } = {\n ...noResultsConfig,\n ...props,\n };\n\n const emptyState = new EmptyState({\n message,\n linkUrl,\n linkText,\n isThemeDark,\n });\n\n const announcer = new Announcer({ message: message || 'No results found' });\n\n container.innerHTML = '';\n emptyState.render(container);\n container.appendChild(announcer.getElement());\n helpers.setStyles(emptyState.styles);\n\n events.dispatch(container, events.eventNames.FEED_ERROR, {\n error: 'No results found',\n message,\n isThemeDark,\n });\n\n setTimeout(() => {\n const styles = helpers.getStyles();\n if (shadowRoot) {\n setShadowStyles({ shadowRoot, styles });\n }\n }, 100);\n };\n\n /**\n * Handle displaying lazy-loaded results\n */\n const displayResults = async (\n props: DisplayResultsProps<TData>,\n ): Promise<void> => {\n const { feedData } = props;\n const container = helpers.getContainer();\n const grid = container.querySelector(\n `#${layoutStrategy.getId()}`,\n ) as HTMLDivElement;\n\n // Remove existing loading and pagination states\n const existingLoader = container.querySelector('.umd-loader-container');\n existingLoader?.remove();\n\n const existingPagination = container.querySelector(\n `.${Styles.layout.alignment.block.center.className}`,\n );\n existingPagination?.remove();\n\n helpers.setOffset(feedData.length);\n\n // Map entries to cards using display strategy\n const entries = feedData.map((entry) =>\n displayStrategy.mapEntryToCard(entry, cardMappingOptions),\n );\n\n // Append entries to grid\n entries.forEach((entry) => {\n grid.appendChild(entry.element);\n helpers.setStyles(entry.styles);\n });\n\n // Add pagination if lazy load is enabled\n if (isLazyLoad && lazyLoadCallback) {\n const pagination = new PaginationState({\n totalEntries: helpers.getTotalEntries(),\n offset: helpers.getOffset(),\n isLazyLoad: true,\n callback: lazyLoadCallback,\n });\n\n const paginationElement = pagination.render(container);\n if (paginationElement) {\n helpers.setStyles(paginationElement.styles);\n }\n }\n\n // Update shadow root styles if needed\n const shadowRoot = helpers.getShadowRoot();\n if (shadowRoot) {\n await setShadowStyles({\n shadowRoot,\n styles: helpers.getStyles(),\n });\n }\n };\n\n /**\n * Handle displaying initial results\n */\n const displayResultStart = async (props: {\n feedData: TData[];\n layoutElement: ElementModel;\n isFallback?: boolean;\n categoryNames?: string[];\n }): Promise<void> => {\n const { feedData, layoutElement, isFallback, categoryNames } = props;\n const container = helpers.getContainer();\n const totalEntries = helpers.getTotalEntries();\n const showAmount = numberOfColumnsToShow * numberOfRowsToStart;\n const message = isLazyLoad\n ? `Showing ${showAmount} of ${totalEntries} articles`\n : `Showing ${showAmount} articles`;\n\n // If this is a fallback, add a message about the category FIRST\n if (isFallback && categoryNames && categoryNames.length > 0) {\n const fallbackMessage = createFallbackMessage(\n categoryNames,\n cardMappingOptions.isThemeDark || false,\n );\n container.appendChild(fallbackMessage.element);\n helpers.setStyles(fallbackMessage.styles);\n\n // Inject fallback message styles into shadow DOM immediately\n const shadowRoot = helpers.getShadowRoot();\n if (shadowRoot) {\n await setShadowStyles({\n shadowRoot,\n styles: helpers.getStyles(),\n });\n }\n }\n\n // Set layout ID and append to container\n layoutElement.element.setAttribute('id', layoutStrategy.getId());\n container.appendChild(layoutElement.element);\n helpers.setStyles(layoutElement.styles);\n\n // Dispatch feed loaded event\n events.dispatch(container, events.eventNames.FEED_LOADED, {\n items: feedData,\n count: feedData.length,\n total: totalEntries || feedData.length,\n isFallback,\n categoryNames,\n });\n\n // Display the results\n await displayResults({ feedData });\n\n // Add announcer\n const announcer = new Announcer({ message });\n container.appendChild(announcer.getElement());\n };\n\n return {\n displayNoResults,\n displayResults,\n displayResultStart,\n };\n}\n"],"names":["events.dispatch","events.eventNames"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { FeedHelpers } from '../core/types';
2
+ interface FeedHelpersConfig {
3
+ container: HTMLElement;
4
+ initialStyles?: string;
5
+ shadowRoot?: ShadowRoot | null;
6
+ }
7
+ export declare function createFeedHelpers(config: FeedHelpersConfig): FeedHelpers;
8
+ export declare function updateShadowRoot(helpers: FeedHelpers, shadowRoot: ShadowRoot): void;
9
+ export {};
10
+ //# sourceMappingURL=feedHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedHelpers.d.ts","sourceRoot":"","sources":["../../../source/factory/helpers/feedHelpers.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,UAAU,iBAAiB;IAEzB,SAAS,EAAE,WAAW,CAAC;IAEvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAChC;AAgCD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAsCxE;AAaD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,UAAU,GACrB,IAAI,CAKN"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ function createFeedHelpers(config) {
4
+ const { container, initialStyles = "", shadowRoot: initialShadowRoot = null } = config;
5
+ const state = {
6
+ totalEntries: 0,
7
+ offset: 0,
8
+ styles: initialStyles,
9
+ shadowRoot: initialShadowRoot
10
+ };
11
+ return {
12
+ setTotalEntries: (count) => {
13
+ state.totalEntries = count;
14
+ },
15
+ setOffset: (count) => {
16
+ state.offset = state.offset + count;
17
+ },
18
+ setStyles: (additionalStyles) => {
19
+ state.styles += additionalStyles;
20
+ },
21
+ setShadowRoot: (shadow) => {
22
+ state.shadowRoot = shadow;
23
+ },
24
+ getContainer: () => container,
25
+ getOffset: () => state.offset,
26
+ getTotalEntries: () => state.totalEntries,
27
+ getStyles: () => state.styles,
28
+ getShadowRoot: () => state.shadowRoot
29
+ };
30
+ }
31
+ exports.createFeedHelpers = createFeedHelpers;
32
+ //# sourceMappingURL=feedHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedHelpers.js","sources":["../../../source/factory/helpers/feedHelpers.ts"],"sourcesContent":["/**\n * Feed Helper Utilities\n *\n * Creates standard helper functions for managing feed state.\n * These helpers are passed to all strategies and lifecycle handlers.\n *\n * @module factory/helpers/feedHelpers\n */\n\nimport { FeedHelpers } from '../core/types';\n\n/**\n * Configuration for creating feed helpers\n */\ninterface FeedHelpersConfig {\n /** The feed container element */\n container: HTMLElement;\n /** Initial styles */\n initialStyles?: string;\n /** Shadow root if available */\n shadowRoot?: ShadowRoot | null;\n}\n\n/**\n * Internal state managed by the helpers\n */\ninterface FeedState {\n totalEntries: number;\n offset: number;\n styles: string;\n shadowRoot: ShadowRoot | null;\n}\n\n/**\n * Create feed helper functions\n *\n * These helpers provide a consistent API for managing feed state\n * across different feed types and layouts.\n *\n * @param config - Configuration for the helpers\n * @returns Feed helper functions\n *\n * @example\n * ```typescript\n * const container = document.createElement('div');\n * const helpers = createFeedHelpers({ container });\n *\n * helpers.setTotalEntries(100);\n * helpers.setOffset(10);\n * console.log(helpers.getTotalEntries()); // 100\n * console.log(helpers.getOffset()); // 10\n * ```\n */\nexport function createFeedHelpers(config: FeedHelpersConfig): FeedHelpers {\n const { container, initialStyles = '', shadowRoot: initialShadowRoot = null } = config;\n\n // Internal state\n const state: FeedState = {\n totalEntries: 0,\n offset: 0,\n styles: initialStyles,\n shadowRoot: initialShadowRoot,\n };\n\n return {\n setTotalEntries: (count: number) => {\n state.totalEntries = count;\n },\n\n setOffset: (count: number) => {\n state.offset = state.offset + count;\n },\n\n setStyles: (additionalStyles: string) => {\n state.styles += additionalStyles;\n },\n\n setShadowRoot: (shadow: ShadowRoot) => {\n state.shadowRoot = shadow;\n },\n\n getContainer: () => container,\n\n getOffset: () => state.offset,\n\n getTotalEntries: () => state.totalEntries,\n\n getStyles: () => state.styles,\n\n getShadowRoot: () => state.shadowRoot,\n };\n}\n\n/**\n * Update the shadow root reference in helpers\n *\n * This is called when a shadow root becomes available\n * (typically from a web component callback)\n *\n * @param helpers - The feed helpers\n * @param shadowRoot - The shadow root to set\n *\n * @internal\n */\nexport function updateShadowRoot(\n helpers: FeedHelpers,\n shadowRoot: ShadowRoot\n): void {\n // We need to mutate the internal state\n // This is safe because helpers is always created fresh per feed instance\n const state = (helpers as any).state || {};\n state.shadowRoot = shadowRoot;\n}\n"],"names":[],"mappings":";;AAqDO,SAAS,kBAAkB,QAAwC;AACxE,QAAM,EAAE,WAAW,gBAAgB,IAAI,YAAY,oBAAoB,SAAS;AAGhF,QAAM,QAAmB;AAAA,IACvB,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,EAAA;AAGd,SAAO;AAAA,IACL,iBAAiB,CAAC,UAAkB;AAClC,YAAM,eAAe;AAAA,IACvB;AAAA,IAEA,WAAW,CAAC,UAAkB;AAC5B,YAAM,SAAS,MAAM,SAAS;AAAA,IAChC;AAAA,IAEA,WAAW,CAAC,qBAA6B;AACvC,YAAM,UAAU;AAAA,IAClB;AAAA,IAEA,eAAe,CAAC,WAAuB;AACrC,YAAM,aAAa;AAAA,IACrB;AAAA,IAEA,cAAc,MAAM;AAAA,IAEpB,WAAW,MAAM,MAAM;AAAA,IAEvB,iBAAiB,MAAM,MAAM;AAAA,IAE7B,WAAW,MAAM,MAAM;AAAA,IAEvB,eAAe,MAAM,MAAM;AAAA,EAAA;AAE/B;;"}
@@ -0,0 +1,32 @@
1
+ function createFeedHelpers(config) {
2
+ const { container, initialStyles = "", shadowRoot: initialShadowRoot = null } = config;
3
+ const state = {
4
+ totalEntries: 0,
5
+ offset: 0,
6
+ styles: initialStyles,
7
+ shadowRoot: initialShadowRoot
8
+ };
9
+ return {
10
+ setTotalEntries: (count) => {
11
+ state.totalEntries = count;
12
+ },
13
+ setOffset: (count) => {
14
+ state.offset = state.offset + count;
15
+ },
16
+ setStyles: (additionalStyles) => {
17
+ state.styles += additionalStyles;
18
+ },
19
+ setShadowRoot: (shadow) => {
20
+ state.shadowRoot = shadow;
21
+ },
22
+ getContainer: () => container,
23
+ getOffset: () => state.offset,
24
+ getTotalEntries: () => state.totalEntries,
25
+ getStyles: () => state.styles,
26
+ getShadowRoot: () => state.shadowRoot
27
+ };
28
+ }
29
+ export {
30
+ createFeedHelpers
31
+ };
32
+ //# sourceMappingURL=feedHelpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedHelpers.mjs","sources":["../../../source/factory/helpers/feedHelpers.ts"],"sourcesContent":["/**\n * Feed Helper Utilities\n *\n * Creates standard helper functions for managing feed state.\n * These helpers are passed to all strategies and lifecycle handlers.\n *\n * @module factory/helpers/feedHelpers\n */\n\nimport { FeedHelpers } from '../core/types';\n\n/**\n * Configuration for creating feed helpers\n */\ninterface FeedHelpersConfig {\n /** The feed container element */\n container: HTMLElement;\n /** Initial styles */\n initialStyles?: string;\n /** Shadow root if available */\n shadowRoot?: ShadowRoot | null;\n}\n\n/**\n * Internal state managed by the helpers\n */\ninterface FeedState {\n totalEntries: number;\n offset: number;\n styles: string;\n shadowRoot: ShadowRoot | null;\n}\n\n/**\n * Create feed helper functions\n *\n * These helpers provide a consistent API for managing feed state\n * across different feed types and layouts.\n *\n * @param config - Configuration for the helpers\n * @returns Feed helper functions\n *\n * @example\n * ```typescript\n * const container = document.createElement('div');\n * const helpers = createFeedHelpers({ container });\n *\n * helpers.setTotalEntries(100);\n * helpers.setOffset(10);\n * console.log(helpers.getTotalEntries()); // 100\n * console.log(helpers.getOffset()); // 10\n * ```\n */\nexport function createFeedHelpers(config: FeedHelpersConfig): FeedHelpers {\n const { container, initialStyles = '', shadowRoot: initialShadowRoot = null } = config;\n\n // Internal state\n const state: FeedState = {\n totalEntries: 0,\n offset: 0,\n styles: initialStyles,\n shadowRoot: initialShadowRoot,\n };\n\n return {\n setTotalEntries: (count: number) => {\n state.totalEntries = count;\n },\n\n setOffset: (count: number) => {\n state.offset = state.offset + count;\n },\n\n setStyles: (additionalStyles: string) => {\n state.styles += additionalStyles;\n },\n\n setShadowRoot: (shadow: ShadowRoot) => {\n state.shadowRoot = shadow;\n },\n\n getContainer: () => container,\n\n getOffset: () => state.offset,\n\n getTotalEntries: () => state.totalEntries,\n\n getStyles: () => state.styles,\n\n getShadowRoot: () => state.shadowRoot,\n };\n}\n\n/**\n * Update the shadow root reference in helpers\n *\n * This is called when a shadow root becomes available\n * (typically from a web component callback)\n *\n * @param helpers - The feed helpers\n * @param shadowRoot - The shadow root to set\n *\n * @internal\n */\nexport function updateShadowRoot(\n helpers: FeedHelpers,\n shadowRoot: ShadowRoot\n): void {\n // We need to mutate the internal state\n // This is safe because helpers is always created fresh per feed instance\n const state = (helpers as any).state || {};\n state.shadowRoot = shadowRoot;\n}\n"],"names":[],"mappings":"AAqDO,SAAS,kBAAkB,QAAwC;AACxE,QAAM,EAAE,WAAW,gBAAgB,IAAI,YAAY,oBAAoB,SAAS;AAGhF,QAAM,QAAmB;AAAA,IACvB,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,EAAA;AAGd,SAAO;AAAA,IACL,iBAAiB,CAAC,UAAkB;AAClC,YAAM,eAAe;AAAA,IACvB;AAAA,IAEA,WAAW,CAAC,UAAkB;AAC5B,YAAM,SAAS,MAAM,SAAS;AAAA,IAChC;AAAA,IAEA,WAAW,CAAC,qBAA6B;AACvC,YAAM,UAAU;AAAA,IAClB;AAAA,IAEA,eAAe,CAAC,WAAuB;AACrC,YAAM,aAAa;AAAA,IACrB;AAAA,IAEA,cAAc,MAAM;AAAA,IAEpB,WAAW,MAAM,MAAM;AAAA,IAEvB,iBAAiB,MAAM,MAAM;AAAA,IAE7B,WAAW,MAAM,MAAM;AAAA,IAEvB,eAAe,MAAM,MAAM;AAAA,EAAA;AAE/B;"}
@@ -0,0 +1,22 @@
1
+ import { FetchStrategy, FeedHelpers } from '../core/types';
2
+ interface FetchHandlerConfig<TData, TVariables> {
3
+ fetchStrategy: FetchStrategy<TData, TVariables>;
4
+ helpers: FeedHelpers;
5
+ baseProps: any;
6
+ displayHandlers: {
7
+ displayResultStart: (props: any) => Promise<void>;
8
+ displayResults: (props: {
9
+ feedData: TData[];
10
+ }) => Promise<void>;
11
+ displayNoResults: (props: any) => void;
12
+ };
13
+ layoutElement: any;
14
+ isThemeDark?: boolean;
15
+ enableCategoryFallback?: boolean;
16
+ }
17
+ export declare function createFetchHandlers<TData, TVariables>(config: FetchHandlerConfig<TData, TVariables>): {
18
+ start: () => Promise<void>;
19
+ loadMore: () => Promise<void>;
20
+ };
21
+ export {};
22
+ //# sourceMappingURL=fetchHandler.d.ts.map
@@ -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"}