@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":"experts.js","sources":["../../../source/strategies/fetch/experts.ts"],"sourcesContent":["/**\n * Experts Fetch Strategy\n *\n * Strategy for fetching expert profile data from the UMD Experts GraphQL API.\n *\n * @module strategies/fetch/experts\n */\n\nimport { createGraphQLFetchStrategy } from './graphql';\nimport { ExpertEntry } from 'types/data';\n\n/**\n * GraphQL fragments for expert data\n */\nconst FRAGMENT_CATEGORIES_NATIVE_FIELDS = `\n fragment CategoryFields on CategoryInterface {\n title\n url\n id\n }\n`;\n\nconst FRAGMENT_ENTRIES_NATIVE_FIELDS = `\n fragment EntriesNativeFields on EntryInterface {\n id\n uid\n status\n enabled\n slug\n title\n type: typeHandle\n postDate\n expiryDate\n dateUpdated\n dateCreated\n }\n`;\n\nconst FRAGMENT_EXPERT_JOBS = `\n fragment Jobs on expertsOrganizationJob_Entry {\n id\n url\n title: expertsOrganizationJobTitle\n roomNumber: expertsOrganizationJobRoomNumber\n campusUnits: categoryCampusUnit {\n title\n ... on campusUnits_Category {\n link: externalLink {\n url\n }\n }\n }\n }\n`;\n\nconst FRAGMENT_EXPERT_NAME = `\n fragment Name on expertsContent_Entry {\n prefix: expertsNamePrefix\n firstName: expertsNameFirst\n middleName: expertsNameMiddle\n lastName: expertsNameLast\n suffix: expertsNameSuffix\n pronouns: expertsNamePronouns\n }\n`;\n\nconst FRAGMENT_EXPERT_IMAGERY = `\n fragment Imagery on expertsContent_Entry {\n headshot: expertsImageHeadShot {\n ... on experts_Asset {\n url\n }\n }\n }\n`;\n\nconst FRAGMENT_EXPERT_BIOGRAPHY = `\n fragment Biography on expertsContent_Entry {\n summary: expertsSummary {\n html\n }\n bio: expertsBiography {\n html\n }\n }\n`;\n\nconst FRAGMENT_ENTRIES_ORGANIZATIONS = `\n fragment Organizations on expertsOrganization_Entry {\n id\n title\n url\n jobs: expertsOrganizationJob {\n ...Jobs\n }\n }\n`;\n\nconst FRAGMENT_EXPERT_CONTACT = `\n fragment Contact on expertsContent_Entry {\n email: expertsContactEmail\n linkedin: expertsContactLinkedin\n website: expertsContactWebsite\n twitter: expertsContactTwitter\n }\n`;\n\nconst FRAGMENT_EXPERT_SKILLS = `\n fragment Skills on expertsContent_Entry {\n languages: expertsLanguages\n mediaTrained: expertsMediaTrained\n }\n`;\n\nconst FRAGMENT_EXPERT_CONTENT = `\n fragment Content on expertsContent_Entry {\n ...Name\n ...Imagery\n ...Biography\n organizations: expertsOrganization {\n ...Organizations\n }\n ...Contact\n ...Skills\n }\n`;\n\nconst FRAGMENT_EXPERT_CATEGORIES = `\n fragment Categories on expertsContent_Entry {\n areasOfExpertise: expertsCategoryAreaOfExpertise {\n ...CategoryFields\n }\n campusUnits: categoryCampusUnit {\n ...CategoryFields\n }\n tags: expertsCategoryTags {\n ...CategoryFields\n }\n }\n`;\n\n/**\n * GraphQL query for experts\n * Supports filtering by ID, relatedTo, or fetching all experts\n */\nexport const EXPERTS_QUERY = `\n query getExpertsContent($limit: Int, $offset: Int, $id: [QueryArgument], $relatedTo: [QueryArgument], $isMediaTrained:Boolean) {\n entryCount(\n section: \"experts\"\n limit: $limit\n offset: $offset\n type: \"expertsContent\"\n id: $id\n relatedTo: $relatedTo\n expertsMediaTrained: $isMediaTrained\n )\n entries(\n section: \"experts\"\n limit: $limit\n offset: $offset\n type: \"expertsContent\"\n id: $id\n relatedTo: $relatedTo\n expertsMediaTrained: $isMediaTrained\n orderBy: \"expertsNameLast\"\n ) {\n ...EntriesNativeFields\n ... on expertsContent_Entry {\n ...Content\n ...Categories\n }\n }\n }\n ${FRAGMENT_ENTRIES_NATIVE_FIELDS}\n ${FRAGMENT_CATEGORIES_NATIVE_FIELDS}\n ${FRAGMENT_EXPERT_CONTENT}\n ${FRAGMENT_EXPERT_CATEGORIES}\n ${FRAGMENT_EXPERT_NAME}\n ${FRAGMENT_EXPERT_IMAGERY}\n ${FRAGMENT_EXPERT_BIOGRAPHY}\n ${FRAGMENT_ENTRIES_ORGANIZATIONS}\n ${FRAGMENT_EXPERT_JOBS}\n ${FRAGMENT_EXPERT_CONTACT}\n ${FRAGMENT_EXPERT_SKILLS}\n`;\n\n/**\n * Experts fetch strategy\n *\n * Fetches expert profile data from the UMD Experts GraphQL API.\n * Handles category filtering via relatedTo parameter, pagination,\n * and entry exclusion.\n *\n * @example\n * ```typescript\n * const feed = createBaseFeed({\n * token: 'my-token',\n * fetchStrategy: expertsFetchStrategy,\n * categories: ['computer-science', 'engineering'],\n * // ...\n * });\n * ```\n */\nexport const expertsFetchStrategy = createGraphQLFetchStrategy<ExpertEntry>({\n endpoint: 'https://umd-api.production.servd.dev/graphql',\n\n queries: {\n entries: EXPERTS_QUERY,\n },\n\n transformResponse: (data) => {\n if (!data || !data.data || !data.data.entries) {\n return null;\n }\n return data.data.entries || null;\n },\n\n transformCount: (data) => {\n if (!data || !data.data) {\n return 0;\n }\n return data.data.entryCount || 0;\n },\n\n composeVariables: (baseVariables) => {\n const { categories, entriesToRemove, id, isMediaTrained, ...rest } =\n baseVariables;\n\n const variables: any = { ...rest };\n\n // Handle fetching by ID (for single expert bio)\n if (id) {\n variables.id = Array.isArray(id) ? id : [id];\n }\n\n if (categories) {\n variables.relatedTo = categories;\n }\n\n if (isMediaTrained) {\n variables.isMediaTrained = isMediaTrained;\n }\n\n return variables;\n },\n});\n"],"names":[],"mappings":";AAcA,MAAM,oCAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ1C,MAAM,iCAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBvC,MAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiB7B,MAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAW7B,MAAM,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUhC,MAAM,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWlC,MAAM,iCAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWvC,MAAM,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAShC,MAAM,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAO/B,MAAM,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAahC,MAAM,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB5B,MAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA4BzB,8BAA8B;AAAA,IAC9B,iCAAiC;AAAA,IACjC,uBAAuB;AAAA,IACvB,0BAA0B;AAAA,IAC1B,oBAAoB;AAAA,IACpB,uBAAuB;AAAA,IACvB,yBAAyB;AAAA,IACzB,8BAA8B;AAAA,IAC9B,oBAAoB;AAAA,IACpB,uBAAuB;AAAA,IACvB,sBAAsB;AAAA;AAoBnB,MAAM,uBAAuB,2BAAwC;AAAA,EAC1E,UAAU;AAAA,EAEV,SAAS;AAAA,IACP,SAAS;AAAA,EAAA;AAAA,EAGX,mBAAmB,CAAC,SAAS;AAC3B,QAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,KAAK,SAAS;AAC7C,aAAO;AAAA,IACT;AACA,WAAO,KAAK,KAAK,WAAW;AAAA,EAC9B;AAAA,EAEA,gBAAgB,CAAC,SAAS;AACxB,QAAI,CAAC,QAAQ,CAAC,KAAK,MAAM;AACvB,aAAO;AAAA,IACT;AACA,WAAO,KAAK,KAAK,cAAc;AAAA,EACjC;AAAA,EAEA,kBAAkB,CAAC,kBAAkB;AACnC,UAAM,EAAE,YAAY,iBAAiB,IAAI,gBAAgB,GAAG,SAC1D;AAEF,UAAM,YAAiB,EAAE,GAAG,KAAA;AAG5B,QAAI,IAAI;AACN,gBAAU,KAAK,MAAM,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE;AAAA,IAC7C;AAEA,QAAI,YAAY;AACd,gBAAU,YAAY;AAAA,IACxB;AAEA,QAAI,gBAAgB;AAClB,gBAAU,iBAAiB;AAAA,IAC7B;AAEA,WAAO;AAAA,EACT;AACF,CAAC;"}
@@ -0,0 +1,13 @@
1
+ import { FetchStrategy } from '../../factory/core/types';
2
+ export interface GraphQLFetchConfig<TData, TResponse = any> {
3
+ endpoint: string;
4
+ queries: {
5
+ entries: string;
6
+ count?: string;
7
+ };
8
+ transformResponse: (data: TResponse) => TData[] | null;
9
+ transformCount: (data: TResponse) => number;
10
+ composeVariables?: (baseVariables: any) => any;
11
+ }
12
+ export declare function createGraphQLFetchStrategy<TData, TResponse = any, TVariables = any>(config: GraphQLFetchConfig<TData, TResponse>): FetchStrategy<TData, TVariables>;
13
+ //# sourceMappingURL=graphql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../../source/strategies/fetch/graphql.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAKzD,MAAM,WAAW,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG;IAExD,QAAQ,EAAE,MAAM,CAAC;IAGjB,OAAO,EAAE;QAEP,OAAO,EAAE,MAAM,CAAC;QAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAGF,iBAAiB,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,KAAK,EAAE,GAAG,IAAI,CAAC;IAGvD,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,MAAM,CAAC;IAG5C,gBAAgB,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,KAAK,GAAG,CAAC;CAChD;AA+BD,wBAAgB,0BAA0B,CACxC,KAAK,EACL,SAAS,GAAG,GAAG,EACf,UAAU,GAAG,GAAG,EAEhB,MAAM,EAAE,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,GAC3C,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CA6HlC"}
@@ -0,0 +1,104 @@
1
+ import { fetchGraphQL } from "@universityofmaryland/web-utilities-library/network";
2
+ function createGraphQLFetchStrategy(config) {
3
+ const {
4
+ endpoint,
5
+ queries,
6
+ transformResponse,
7
+ transformCount,
8
+ composeVariables
9
+ } = config;
10
+ return {
11
+ /**
12
+ * Fetch the total count of entries
13
+ */
14
+ fetchCount: async (variables) => {
15
+ try {
16
+ const query = queries.count || queries.entries;
17
+ const response = await fetchGraphQL({
18
+ url: endpoint,
19
+ query,
20
+ token: variables.token,
21
+ variables
22
+ });
23
+ if (!response || !response.data || response.message) {
24
+ if (response?.message) {
25
+ console.error(`GraphQL Error: ${response.message}`);
26
+ }
27
+ return null;
28
+ }
29
+ return transformCount(response);
30
+ } catch (error) {
31
+ console.error("Fetch count error:", error);
32
+ return null;
33
+ }
34
+ },
35
+ /**
36
+ * Fetch the actual entries
37
+ */
38
+ fetchEntries: async (variables) => {
39
+ try {
40
+ const response = await fetchGraphQL({
41
+ url: endpoint,
42
+ query: queries.entries,
43
+ token: variables.token,
44
+ variables
45
+ });
46
+ if (!response || !response.data || response.message) {
47
+ if (response?.message) {
48
+ console.error(`GraphQL Error: ${response.message}`);
49
+ }
50
+ return null;
51
+ }
52
+ return transformResponse(response);
53
+ } catch (error) {
54
+ console.error("Fetch entries error:", error);
55
+ return null;
56
+ }
57
+ },
58
+ /**
59
+ * Compose API variables from feed props
60
+ */
61
+ composeApiVariables: (props) => {
62
+ const {
63
+ token,
64
+ categories,
65
+ numberOfColumnsToShow = 1,
66
+ numberOfRowsToStart,
67
+ getOffset,
68
+ entriesToRemove,
69
+ id,
70
+ isMediaTrained
71
+ } = props;
72
+ const baseVariables = {
73
+ token,
74
+ limit: numberOfColumnsToShow * numberOfRowsToStart,
75
+ offset: getOffset ? getOffset() : 0
76
+ };
77
+ if (categories) {
78
+ baseVariables.categories = categories;
79
+ }
80
+ if (entriesToRemove) {
81
+ baseVariables.entriesToRemove = entriesToRemove;
82
+ }
83
+ if (id) {
84
+ baseVariables.id = id;
85
+ }
86
+ if (isMediaTrained !== void 0) {
87
+ baseVariables.isMediaTrained = isMediaTrained;
88
+ }
89
+ if (composeVariables) {
90
+ return composeVariables(baseVariables);
91
+ }
92
+ const defaultVariables = { ...baseVariables };
93
+ if (categories) {
94
+ defaultVariables.related = categories;
95
+ delete defaultVariables.categories;
96
+ }
97
+ return defaultVariables;
98
+ }
99
+ };
100
+ }
101
+ export {
102
+ createGraphQLFetchStrategy
103
+ };
104
+ //# sourceMappingURL=graphql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.js","sources":["../../../source/strategies/fetch/graphql.ts"],"sourcesContent":["/**\n * GraphQL Fetch Strategy Factory\n *\n * Generic factory for creating GraphQL-based fetch strategies.\n * Handles common GraphQL patterns: queries, variables, transformations.\n *\n * @module strategies/fetch/graphql\n */\n\nimport {\n fetchGraphQL,\n GraphQLVariables,\n} from '@universityofmaryland/web-utilities-library/network';\nimport { FetchStrategy } from '../../factory/core/types';\n\n/**\n * Configuration for creating a GraphQL fetch strategy\n */\nexport interface GraphQLFetchConfig<TData, TResponse = any> {\n /** GraphQL endpoint URL */\n endpoint: string;\n\n /** GraphQL queries */\n queries: {\n /** Query for fetching entries */\n entries: string;\n /** Optional separate query for count (if not in entries query) */\n count?: string;\n };\n\n /** Transform GraphQL response to entries array */\n transformResponse: (data: TResponse) => TData[] | null;\n\n /** Transform GraphQL response to count */\n transformCount: (data: TResponse) => number;\n\n /** Optional: Compose additional variables */\n composeVariables?: (baseVariables: any) => any;\n}\n\n/**\n * Create a GraphQL fetch strategy\n *\n * This factory handles the common patterns for GraphQL APIs:\n * - Fetching with variables\n * - Response transformation\n * - Count vs entries queries\n * - Error handling\n *\n * @template TData - The type of entry data\n * @template TResponse - The type of raw GraphQL response\n * @template TVariables - The type of GraphQL variables\n *\n * @param config - Configuration for the strategy\n * @returns Fetch strategy for use with createBaseFeed\n *\n * @example\n * ```typescript\n * const eventsFetchStrategy = createGraphQLFetchStrategy({\n * endpoint: 'https://calendar.umd.edu/graphql',\n * queries: {\n * entries: EVENTS_QUERY,\n * count: EVENTS_COUNT_QUERY,\n * },\n * transformResponse: (data) => data?.data?.entries?.events || null,\n * transformCount: (data) => data?.data?.count?.events?.length || 0,\n * });\n * ```\n */\nexport function createGraphQLFetchStrategy<\n TData,\n TResponse = any,\n TVariables = any,\n>(\n config: GraphQLFetchConfig<TData, TResponse>,\n): FetchStrategy<TData, TVariables> {\n const {\n endpoint,\n queries,\n transformResponse,\n transformCount,\n composeVariables,\n } = config;\n\n return {\n /**\n * Fetch the total count of entries\n */\n fetchCount: async (variables: TVariables): Promise<number | null> => {\n try {\n // Use count query if provided, otherwise use entries query\n const query = queries.count || queries.entries;\n const response = await fetchGraphQL({\n url: endpoint,\n query,\n token: (variables as any).token,\n variables: variables as GraphQLVariables,\n });\n\n // Check for errors\n if (!response || !response.data || response.message) {\n if (response?.message) {\n console.error(`GraphQL Error: ${response.message}`);\n }\n return null;\n }\n\n return transformCount(response);\n } catch (error) {\n console.error('Fetch count error:', error);\n return null;\n }\n },\n\n /**\n * Fetch the actual entries\n */\n fetchEntries: async (variables: TVariables): Promise<TData[] | null> => {\n try {\n const response = await fetchGraphQL({\n url: endpoint,\n query: queries.entries,\n token: (variables as any).token,\n variables: variables as GraphQLVariables,\n });\n\n // Check for errors\n if (!response || !response.data || response.message) {\n if (response?.message) {\n console.error(`GraphQL Error: ${response.message}`);\n }\n return null;\n }\n\n return transformResponse(response);\n } catch (error) {\n console.error('Fetch entries error:', error);\n return null;\n }\n },\n\n /**\n * Compose API variables from feed props\n */\n composeApiVariables: (props: any): TVariables => {\n const {\n token,\n categories,\n numberOfColumnsToShow = 1,\n numberOfRowsToStart,\n getOffset,\n entriesToRemove,\n id,\n isMediaTrained,\n } = props;\n\n // Base variables - pass all props through\n const baseVariables: any = {\n token,\n limit: numberOfColumnsToShow * numberOfRowsToStart,\n offset: getOffset ? getOffset() : 0,\n };\n\n // Pass categories through (let composeVariables decide how to map it)\n if (categories) {\n baseVariables.categories = categories;\n }\n\n // Pass entriesToRemove through\n if (entriesToRemove) {\n baseVariables.entriesToRemove = entriesToRemove;\n }\n\n // Pass id through\n if (id) {\n baseVariables.id = id;\n }\n\n // Pass isMediaTrained through (can be true, false, or null)\n if (isMediaTrained !== undefined) {\n baseVariables.isMediaTrained = isMediaTrained;\n }\n\n // Allow custom variable composition\n if (composeVariables) {\n return composeVariables(baseVariables);\n }\n\n // Default mapping (for strategies without custom composeVariables)\n const defaultVariables: any = { ...baseVariables };\n\n // Default: map categories to 'related' if not customized\n if (categories) {\n defaultVariables.related = categories;\n delete defaultVariables.categories;\n }\n\n return defaultVariables as TVariables;\n },\n };\n}\n"],"names":[],"mappings":";AAqEO,SAAS,2BAKd,QACkC;AAClC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AAEJ,SAAO;AAAA;AAAA;AAAA;AAAA,IAIL,YAAY,OAAO,cAAkD;AACnE,UAAI;AAEF,cAAM,QAAQ,QAAQ,SAAS,QAAQ;AACvC,cAAM,WAAW,MAAM,aAAa;AAAA,UAClC,KAAK;AAAA,UACL;AAAA,UACA,OAAQ,UAAkB;AAAA,UAC1B;AAAA,QAAA,CACD;AAGD,YAAI,CAAC,YAAY,CAAC,SAAS,QAAQ,SAAS,SAAS;AACnD,cAAI,UAAU,SAAS;AACrB,oBAAQ,MAAM,kBAAkB,SAAS,OAAO,EAAE;AAAA,UACpD;AACA,iBAAO;AAAA,QACT;AAEA,eAAO,eAAe,QAAQ;AAAA,MAChC,SAAS,OAAO;AACd,gBAAQ,MAAM,sBAAsB,KAAK;AACzC,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc,OAAO,cAAmD;AACtE,UAAI;AACF,cAAM,WAAW,MAAM,aAAa;AAAA,UAClC,KAAK;AAAA,UACL,OAAO,QAAQ;AAAA,UACf,OAAQ,UAAkB;AAAA,UAC1B;AAAA,QAAA,CACD;AAGD,YAAI,CAAC,YAAY,CAAC,SAAS,QAAQ,SAAS,SAAS;AACnD,cAAI,UAAU,SAAS;AACrB,oBAAQ,MAAM,kBAAkB,SAAS,OAAO,EAAE;AAAA,UACpD;AACA,iBAAO;AAAA,QACT;AAEA,eAAO,kBAAkB,QAAQ;AAAA,MACnC,SAAS,OAAO;AACd,gBAAQ,MAAM,wBAAwB,KAAK;AAC3C,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAqB,CAAC,UAA2B;AAC/C,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA,wBAAwB;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,IACE;AAGJ,YAAM,gBAAqB;AAAA,QACzB;AAAA,QACA,OAAO,wBAAwB;AAAA,QAC/B,QAAQ,YAAY,cAAc;AAAA,MAAA;AAIpC,UAAI,YAAY;AACd,sBAAc,aAAa;AAAA,MAC7B;AAGA,UAAI,iBAAiB;AACnB,sBAAc,kBAAkB;AAAA,MAClC;AAGA,UAAI,IAAI;AACN,sBAAc,KAAK;AAAA,MACrB;AAGA,UAAI,mBAAmB,QAAW;AAChC,sBAAc,iBAAiB;AAAA,MACjC;AAGA,UAAI,kBAAkB;AACpB,eAAO,iBAAiB,aAAa;AAAA,MACvC;AAGA,YAAM,mBAAwB,EAAE,GAAG,cAAA;AAGnC,UAAI,YAAY;AACd,yBAAiB,UAAU;AAC3B,eAAO,iBAAiB;AAAA,MAC1B;AAEA,aAAO;AAAA,IACT;AAAA,EAAA;AAEJ;"}
@@ -0,0 +1,10 @@
1
+ export { createGraphQLFetchStrategy } from './graphql';
2
+ export type { GraphQLFetchConfig } from './graphql';
3
+ export { eventsFetchStrategy, eventsFetchStrategyRange } from './events';
4
+ export { EVENTS_QUERY, EVENTS_COUNT_QUERY, EVENTS_SLIDER_QUERY } from './events';
5
+ export { newsFetchStrategy } from './news';
6
+ export { ARTICLES_QUERY } from './news';
7
+ export { expertsFetchStrategy } from './experts';
8
+ export { EXPERTS_QUERY } from './experts';
9
+ export { ACADEMIC_SLIDER_QUERY } from './academic';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/strategies/fetch/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { NewsEntry } from '../../types/data';
2
+ export declare const ARTICLES_QUERY = "\n query getArticles($related: [QueryArgument], $relatedToAll: [QueryArgument], $limit: Int, $offset: Int, $not: [QueryArgument]) {\n entryCount(section: \"articles\", relatedTo: $related, relatedToAll: $relatedToAll)\n entries(\n section: \"articles\",\n relatedTo: $related,\n relatedToAll: $relatedToAll,\n limit: $limit,\n offset: $offset,\n id: $not\n ) {\n ... on articles_today_Entry {\n ...ArticleBasicFields\n ...ArticleDateFields\n ...ArticleContentFields\n ...ArticleCategoryFields\n }\n }\n }\n \n fragment ArticleBasicFields on articles_today_Entry {\n id\n title\n url\n }\n\n \n fragment ArticleDateFields on articles_today_Entry {\n date: postDate\n dateFormatted: postDate @formatDateTime(format: \"M d, Y\")\n }\n\n \n fragment ArticleContentFields on articles_today_Entry {\n summary: genericText\n image: articlesHeroImage {\n url\n ... on hero_Asset {\n id\n altText: genericText\n }\n }\n }\n\n \n fragment ArticleCategoryFields on articles_today_Entry {\n categories: categoryTodaySectionMultiple {\n title\n url\n }\n }\n\n";
3
+ export declare const newsFetchStrategy: import('../../factory').FetchStrategy<NewsEntry, any>;
4
+ //# sourceMappingURL=news.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"news.d.ts","sourceRoot":"","sources":["../../../source/strategies/fetch/news.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA6CvC,eAAO,MAAM,cAAc,+rCAuB1B,CAAC;AAmBF,eAAO,MAAM,iBAAiB,uDA0C5B,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { createGraphQLFetchStrategy } from "./graphql.js";
2
+ const FRAGMENT_ARTICLE_BASIC = `
3
+ fragment ArticleBasicFields on articles_today_Entry {
4
+ id
5
+ title
6
+ url
7
+ }
8
+ `;
9
+ const FRAGMENT_ARTICLE_DATES = `
10
+ fragment ArticleDateFields on articles_today_Entry {
11
+ date: postDate
12
+ dateFormatted: postDate @formatDateTime(format: "M d, Y")
13
+ }
14
+ `;
15
+ const FRAGMENT_ARTICLE_CONTENT = `
16
+ fragment ArticleContentFields on articles_today_Entry {
17
+ summary: genericText
18
+ image: articlesHeroImage {
19
+ url
20
+ ... on hero_Asset {
21
+ id
22
+ altText: genericText
23
+ }
24
+ }
25
+ }
26
+ `;
27
+ const FRAGMENT_ARTICLE_CATEGORIES = `
28
+ fragment ArticleCategoryFields on articles_today_Entry {
29
+ categories: categoryTodaySectionMultiple {
30
+ title
31
+ url
32
+ }
33
+ }
34
+ `;
35
+ const ARTICLES_QUERY = `
36
+ query getArticles($related: [QueryArgument], $relatedToAll: [QueryArgument], $limit: Int, $offset: Int, $not: [QueryArgument]) {
37
+ entryCount(section: "articles", relatedTo: $related, relatedToAll: $relatedToAll)
38
+ entries(
39
+ section: "articles",
40
+ relatedTo: $related,
41
+ relatedToAll: $relatedToAll,
42
+ limit: $limit,
43
+ offset: $offset,
44
+ id: $not
45
+ ) {
46
+ ... on articles_today_Entry {
47
+ ...ArticleBasicFields
48
+ ...ArticleDateFields
49
+ ...ArticleContentFields
50
+ ...ArticleCategoryFields
51
+ }
52
+ }
53
+ }
54
+ ${FRAGMENT_ARTICLE_BASIC}
55
+ ${FRAGMENT_ARTICLE_DATES}
56
+ ${FRAGMENT_ARTICLE_CONTENT}
57
+ ${FRAGMENT_ARTICLE_CATEGORIES}
58
+ `;
59
+ const newsFetchStrategy = createGraphQLFetchStrategy({
60
+ endpoint: "https://today.umd.edu/graphql",
61
+ queries: {
62
+ entries: ARTICLES_QUERY
63
+ },
64
+ transformResponse: (data) => {
65
+ if (!data || !data.data || !data.data.entries) {
66
+ return null;
67
+ }
68
+ return data.data.entries || null;
69
+ },
70
+ transformCount: (data) => {
71
+ if (!data || !data.data) {
72
+ return 0;
73
+ }
74
+ return data.data.entryCount || 0;
75
+ },
76
+ composeVariables: (baseVariables) => {
77
+ const { categories, isUnion, entriesToRemove, ...rest } = baseVariables;
78
+ const variables = { ...rest };
79
+ if (!isUnion && categories) {
80
+ variables.relatedToAll = categories;
81
+ }
82
+ if (isUnion && categories) {
83
+ variables.related = categories;
84
+ }
85
+ if (entriesToRemove) {
86
+ variables.not = ["not", ...entriesToRemove];
87
+ }
88
+ return variables;
89
+ }
90
+ });
91
+ export {
92
+ ARTICLES_QUERY,
93
+ newsFetchStrategy
94
+ };
95
+ //# sourceMappingURL=news.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"news.js","sources":["../../../source/strategies/fetch/news.ts"],"sourcesContent":["/**\n * News Fetch Strategy\n *\n * Strategy for fetching news article data from the Maryland Today GraphQL API.\n *\n * @module strategies/fetch/news\n */\n\nimport { createGraphQLFetchStrategy } from './graphql';\nimport { NewsEntry } from 'types/data';\n\n/**\n * GraphQL fragments for news article data\n */\nconst FRAGMENT_ARTICLE_BASIC = `\n fragment ArticleBasicFields on articles_today_Entry {\n id\n title\n url\n }\n`;\n\nconst FRAGMENT_ARTICLE_DATES = `\n fragment ArticleDateFields on articles_today_Entry {\n date: postDate\n dateFormatted: postDate @formatDateTime(format: \"M d, Y\")\n }\n`;\n\nconst FRAGMENT_ARTICLE_CONTENT = `\n fragment ArticleContentFields on articles_today_Entry {\n summary: genericText\n image: articlesHeroImage {\n url\n ... on hero_Asset {\n id\n altText: genericText\n }\n }\n }\n`;\n\nconst FRAGMENT_ARTICLE_CATEGORIES = `\n fragment ArticleCategoryFields on articles_today_Entry {\n categories: categoryTodaySectionMultiple {\n title\n url\n }\n }\n`;\n\n/**\n * GraphQL query for news articles\n */\nexport const ARTICLES_QUERY = `\n query getArticles($related: [QueryArgument], $relatedToAll: [QueryArgument], $limit: Int, $offset: Int, $not: [QueryArgument]) {\n entryCount(section: \"articles\", relatedTo: $related, relatedToAll: $relatedToAll)\n entries(\n section: \"articles\",\n relatedTo: $related,\n relatedToAll: $relatedToAll,\n limit: $limit,\n offset: $offset,\n id: $not\n ) {\n ... on articles_today_Entry {\n ...ArticleBasicFields\n ...ArticleDateFields\n ...ArticleContentFields\n ...ArticleCategoryFields\n }\n }\n }\n ${FRAGMENT_ARTICLE_BASIC}\n ${FRAGMENT_ARTICLE_DATES}\n ${FRAGMENT_ARTICLE_CONTENT}\n ${FRAGMENT_ARTICLE_CATEGORIES}\n`;\n\n/**\n * News fetch strategy\n *\n * Fetches news article data from the Maryland Today GraphQL API.\n * Handles category filtering (both union and intersection), pagination,\n * and entry exclusion.\n *\n * @example\n * ```typescript\n * const feed = createBaseFeed({\n * token: 'my-token',\n * fetchStrategy: newsFetchStrategy,\n * categories: ['research', 'campus-news'],\n * // ...\n * });\n * ```\n */\nexport const newsFetchStrategy = createGraphQLFetchStrategy<NewsEntry>({\n endpoint: 'https://today.umd.edu/graphql',\n\n queries: {\n entries: ARTICLES_QUERY,\n },\n\n transformResponse: (data) => {\n if (!data || !data.data || !data.data.entries) {\n return null;\n }\n return data.data.entries || null;\n },\n\n transformCount: (data) => {\n if (!data || !data.data) {\n return 0;\n }\n return data.data.entryCount || 0;\n },\n\n composeVariables: (baseVariables) => {\n const { categories, isUnion, entriesToRemove, ...rest } = baseVariables;\n\n const variables: any = { ...rest };\n\n // Handle categories (union vs intersection)\n if (!isUnion && categories) {\n variables.relatedToAll = categories;\n }\n\n if (isUnion && categories) {\n variables.related = categories;\n }\n\n // Handle entry exclusion\n if (entriesToRemove) {\n variables.not = ['not', ...entriesToRemove];\n }\n\n return variables;\n },\n});\n"],"names":[],"mappings":";AAcA,MAAM,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ/B,MAAM,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAO/B,MAAM,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAajC,MAAM,8BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAY7B,MAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAmB1B,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,wBAAwB;AAAA,IACxB,2BAA2B;AAAA;AAoBxB,MAAM,oBAAoB,2BAAsC;AAAA,EACrE,UAAU;AAAA,EAEV,SAAS;AAAA,IACP,SAAS;AAAA,EAAA;AAAA,EAGX,mBAAmB,CAAC,SAAS;AAC3B,QAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,KAAK,SAAS;AAC7C,aAAO;AAAA,IACT;AACA,WAAO,KAAK,KAAK,WAAW;AAAA,EAC9B;AAAA,EAEA,gBAAgB,CAAC,SAAS;AACxB,QAAI,CAAC,QAAQ,CAAC,KAAK,MAAM;AACvB,aAAO;AAAA,IACT;AACA,WAAO,KAAK,KAAK,cAAc;AAAA,EACjC;AAAA,EAEA,kBAAkB,CAAC,kBAAkB;AACnC,UAAM,EAAE,YAAY,SAAS,iBAAiB,GAAG,SAAS;AAE1D,UAAM,YAAiB,EAAE,GAAG,KAAA;AAG5B,QAAI,CAAC,WAAW,YAAY;AAC1B,gBAAU,eAAe;AAAA,IAC3B;AAEA,QAAI,WAAW,YAAY;AACzB,gBAAU,UAAU;AAAA,IACtB;AAGA,QAAI,iBAAiB;AACnB,gBAAU,MAAM,CAAC,OAAO,GAAG,eAAe;AAAA,IAC5C;AAEA,WAAO;AAAA,EACT;AACF,CAAC;"}
@@ -0,0 +1,7 @@
1
+ export { eventsDisplayStrategy, newsDisplayStrategy, expertsDisplayStrategy, } from './display';
2
+ export type { EventEntry, NewsEntry, ExpertEntry } from './display';
3
+ export { createGraphQLFetchStrategy, eventsFetchStrategy, eventsFetchStrategyRange, newsFetchStrategy, expertsFetchStrategy, } from './fetch';
4
+ export type { GraphQLFetchConfig } from './fetch';
5
+ export { gridLayout, gridGapLayout, gridBorderLayout, stackedLayout, gridOffsetLayout, createFeaturedLayoutStrategy, } from './layout';
6
+ export type { FeaturedLayoutConfig } from './layout';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/strategies/index.ts"],"names":[],"mappings":"AA4BA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAEnB,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGpE,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD,OAAO,EACL,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,4BAA4B,GAC7B,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { LayoutStrategy } from '../../factory/core/types';
2
+ export interface FeaturedLayoutConfig {
3
+ isLayoutReversed?: boolean;
4
+ stickyTopPosition?: number;
5
+ minEntriesForOffset?: number;
6
+ }
7
+ export declare function createFeaturedLayoutStrategy(config?: FeaturedLayoutConfig): LayoutStrategy;
8
+ //# sourceMappingURL=featured.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"featured.d.ts","sourceRoot":"","sources":["../../../source/strategies/layout/featured.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AAKzE,MAAM,WAAW,oBAAoB;IAEnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAuBD,wBAAgB,4BAA4B,CAC1C,MAAM,GAAE,oBAAyB,GAChC,cAAc,CA2BhB"}
@@ -0,0 +1,7 @@
1
+ import { LayoutStrategy } from '../../factory/core/types';
2
+ export declare const gridLayout: LayoutStrategy;
3
+ export declare const gridGapLayout: LayoutStrategy;
4
+ export declare const gridBorderLayout: LayoutStrategy;
5
+ export declare const stackedLayout: LayoutStrategy;
6
+ export declare const gridOffsetLayout: LayoutStrategy;
7
+ //# sourceMappingURL=grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../source/strategies/layout/grid.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AAQzE,eAAO,MAAM,UAAU,EAAE,cAMxB,CAAC;AAQF,eAAO,MAAM,aAAa,EAAE,cAM3B,CAAC;AAQF,eAAO,MAAM,gBAAgB,EAAE,cAM9B,CAAC;AAQF,eAAO,MAAM,aAAa,EAAE,cAM3B,CAAC;AAQF,eAAO,MAAM,gBAAgB,EAAE,cAe9B,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { gridGap, stacked, grid, gridBorder } from "@universityofmaryland/web-elements-library/layout";
2
+ const gridLayout = {
3
+ create: (options) => {
4
+ const { columns = 3 } = options;
5
+ return grid({ columns, minHeight: "560px" });
6
+ },
7
+ getId: () => "umd-grid-layout-container"
8
+ };
9
+ const gridGapLayout = {
10
+ create: (options) => {
11
+ const { columns = 3 } = options;
12
+ return gridGap({ columns });
13
+ },
14
+ getId: () => "umd-grid-gap-layout-container"
15
+ };
16
+ const gridBorderLayout = {
17
+ create: (options) => {
18
+ const { columns = 3, isThemeDark = false } = options;
19
+ return gridBorder({ columns, isThemeDark });
20
+ },
21
+ getId: () => "umd-grid-border-layout-container"
22
+ };
23
+ const stackedLayout = {
24
+ create: (options) => {
25
+ const { isThemeDark, showDividers = true } = options;
26
+ return stacked({ isThemeDark, showDividers, gap: "0" });
27
+ },
28
+ getId: () => "umd-stacked-layout-container"
29
+ };
30
+ export {
31
+ gridBorderLayout,
32
+ gridGapLayout,
33
+ gridLayout,
34
+ stackedLayout
35
+ };
36
+ //# sourceMappingURL=grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.js","sources":["../../../source/strategies/layout/grid.ts"],"sourcesContent":["/**\n * Grid Layout Strategies\n *\n * Layout strategies for grid-based feed displays.\n *\n * @module strategies/layout/grid\n */\n\nimport {\n grid,\n gridGap,\n gridBorder,\n gridOffset,\n stacked,\n} from '@universityofmaryland/web-elements-library/layout';\nimport { LayoutStrategy, LayoutOptions } from '../../factory/core/types';\n\n/**\n * Standard grid layout strategy\n *\n * Creates a responsive grid layout with specified columns.\n * Uses standard grid spacing.\n */\nexport const gridLayout: LayoutStrategy = {\n create: (options: LayoutOptions) => {\n const { columns = 3 } = options;\n return grid({ columns: columns as 2 | 3 | 4, minHeight: '560px' });\n },\n getId: () => 'umd-grid-layout-container',\n};\n\n/**\n * Grid gap layout strategy\n *\n * Creates a responsive grid layout with visual gaps between items.\n * Provides more pronounced spacing than standard grid.\n */\nexport const gridGapLayout: LayoutStrategy = {\n create: (options: LayoutOptions) => {\n const { columns = 3 } = options;\n return gridGap({ columns: columns as 2 | 3 | 4 });\n },\n getId: () => 'umd-grid-gap-layout-container',\n};\n\n/**\n * Grid border layout strategy\n *\n * Creates a responsive grid layout with borders between items.\n * Supports light and dark theme variants.\n */\nexport const gridBorderLayout: LayoutStrategy = {\n create: (options: LayoutOptions) => {\n const { columns = 3, isThemeDark = false } = options;\n return gridBorder({ columns: columns as 2 | 3 | 4, isThemeDark });\n },\n getId: () => 'umd-grid-border-layout-container',\n};\n\n/**\n * Stacked layout strategy\n *\n * Creates a vertical stack layout with optional dividers.\n * Good for list-style displays.\n */\nexport const stackedLayout: LayoutStrategy = {\n create: (options: LayoutOptions) => {\n const { isThemeDark, showDividers = true } = options;\n return stacked({ isThemeDark, showDividers, gap: '0' });\n },\n getId: () => 'umd-stacked-layout-container',\n};\n\n/**\n * Grid offset layout strategy\n *\n * Creates a grid with sticky offset positioning for the first item.\n * Used for featured layouts where the first item is prominently displayed.\n */\nexport const gridOffsetLayout: LayoutStrategy = {\n create: (options: LayoutOptions) => {\n const {\n columns = 2,\n isLayoutReversed = false,\n stickyTopPosition,\n } = options;\n\n return gridOffset({\n columns: columns as 2 | 3 | 4,\n isLayoutReversed,\n stickyTopPosition,\n });\n },\n getId: () => 'umd-grid-offset-layout-container',\n};\n"],"names":[],"mappings":";AAuBO,MAAM,aAA6B;AAAA,EACxC,QAAQ,CAAC,YAA2B;AAClC,UAAM,EAAE,UAAU,EAAA,IAAM;AACxB,WAAO,KAAK,EAAE,SAA+B,WAAW,SAAS;AAAA,EACnE;AAAA,EACA,OAAO,MAAM;AACf;AAQO,MAAM,gBAAgC;AAAA,EAC3C,QAAQ,CAAC,YAA2B;AAClC,UAAM,EAAE,UAAU,EAAA,IAAM;AACxB,WAAO,QAAQ,EAAE,SAA+B;AAAA,EAClD;AAAA,EACA,OAAO,MAAM;AACf;AAQO,MAAM,mBAAmC;AAAA,EAC9C,QAAQ,CAAC,YAA2B;AAClC,UAAM,EAAE,UAAU,GAAG,cAAc,UAAU;AAC7C,WAAO,WAAW,EAAE,SAA+B,aAAa;AAAA,EAClE;AAAA,EACA,OAAO,MAAM;AACf;AAQO,MAAM,gBAAgC;AAAA,EAC3C,QAAQ,CAAC,YAA2B;AAClC,UAAM,EAAE,aAAa,eAAe,KAAA,IAAS;AAC7C,WAAO,QAAQ,EAAE,aAAa,cAAc,KAAK,KAAK;AAAA,EACxD;AAAA,EACA,OAAO,MAAM;AACf;"}
@@ -0,0 +1,4 @@
1
+ export { gridLayout, gridGapLayout, gridBorderLayout, stackedLayout, gridOffsetLayout, } from './grid';
2
+ export { createFeaturedLayoutStrategy } from './featured';
3
+ export type { FeaturedLayoutConfig } from './featured';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/strategies/layout/index.ts"],"names":[],"mappings":"AASA,OAAO,EACL,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,gBAAgB,GACjB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,34 @@
1
+ export interface GraphQLResponse<T = any> {
2
+ data?: {
3
+ entries?: T[];
4
+ entryCount?: number;
5
+ [key: string]: any;
6
+ };
7
+ errors?: GraphQLError[];
8
+ message?: string;
9
+ }
10
+ export interface GraphQLError {
11
+ message: string;
12
+ path?: string[];
13
+ extensions?: Record<string, any>;
14
+ }
15
+ export interface BaseApiVariables {
16
+ token: string;
17
+ limit?: number;
18
+ offset?: number;
19
+ }
20
+ export interface CategoryApiVariables extends BaseApiVariables {
21
+ related?: string[];
22
+ relatedToAll?: string[];
23
+ relatedTo?: string[];
24
+ }
25
+ export interface ExclusionApiVariables extends BaseApiVariables {
26
+ not?: (string | number)[];
27
+ id?: string[];
28
+ }
29
+ export interface FeedApiVariables extends CategoryApiVariables, ExclusionApiVariables {
30
+ startDate?: string;
31
+ rangeStart?: string;
32
+ [key: string]: any;
33
+ }
34
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../source/types/api.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IAEtC,IAAI,CAAC,EAAE;QAEL,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAEd,UAAU,CAAC,EAAE,MAAM,CAAC;QAEpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IAEF,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IAExB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAOD,MAAM,WAAW,YAAY;IAE3B,OAAO,EAAE,MAAM,CAAC;IAEhB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC;AAOD,MAAM,WAAW,gBAAgB;IAE/B,KAAK,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAOD,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAE5D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAOD,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAE7D,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAE1B,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;CACf;AAQD,MAAM,WAAW,gBAAiB,SAChC,oBAAoB,EACpB,qBAAqB;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
@@ -0,0 +1,40 @@
1
+ export interface ElementModel<T = HTMLElement> {
2
+ element: T;
3
+ styles: string;
4
+ events?: Record<string, Function>;
5
+ }
6
+ export interface Image {
7
+ url: string;
8
+ altText?: string;
9
+ id?: string;
10
+ }
11
+ export interface Category {
12
+ id?: string;
13
+ title: string;
14
+ url: string;
15
+ }
16
+ export interface BaseEntry {
17
+ id: number | string;
18
+ title: string;
19
+ url: string;
20
+ slug?: string;
21
+ status?: string;
22
+ }
23
+ export interface ImageEntry extends BaseEntry {
24
+ image: Image[];
25
+ }
26
+ export interface CategorizedEntry extends BaseEntry {
27
+ categories?: Category[];
28
+ }
29
+ export interface DatedEntry extends BaseEntry {
30
+ date: string;
31
+ dateFormatted?: string;
32
+ postDate?: string;
33
+ }
34
+ export interface SummarizedEntry extends BaseEntry {
35
+ summary?: string;
36
+ description?: string;
37
+ }
38
+ export interface ContentEntry extends ImageEntry, CategorizedEntry, DatedEntry, SummarizedEntry {
39
+ }
40
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../source/types/core.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,WAAW;IAE3C,OAAO,EAAE,CAAC,CAAC;IAEX,MAAM,EAAE,MAAM,CAAC;IAEf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACnC;AAOD,MAAM,WAAW,KAAK;IAEpB,GAAG,EAAE,MAAM,CAAC;IAEZ,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAOD,MAAM,WAAW,QAAQ;IAEvB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,KAAK,EAAE,MAAM,CAAC;IAEd,GAAG,EAAE,MAAM,CAAC;CACb;AAQD,MAAM,WAAW,SAAS;IAExB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAEpB,KAAK,EAAE,MAAM,CAAC;IAEd,GAAG,EAAE,MAAM,CAAC;IAEZ,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAOD,MAAM,WAAW,UAAW,SAAQ,SAAS;IAE3C,KAAK,EAAE,KAAK,EAAE,CAAC;CAChB;AAOD,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAEjD,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;CACzB;AAOD,MAAM,WAAW,UAAW,SAAQ,SAAS;IAE3C,IAAI,EAAE,MAAM,CAAC;IAEb,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAEhD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAcD,MAAM,WAAW,YAAa,SAC5B,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,eAAe;CAAG"}
@@ -0,0 +1,6 @@
1
+ import { BaseEntry, Image } from '../core';
2
+ export interface AcademicEntry extends BaseEntry {
3
+ summary?: string;
4
+ image?: Image[];
5
+ }
6
+ //# sourceMappingURL=academic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"academic.d.ts","sourceRoot":"","sources":["../../../source/types/data/academic.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAQ3C,MAAM,WAAW,aAAc,SAAQ,SAAS;IAE9C,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;CAEjB"}
@@ -0,0 +1,21 @@
1
+ import { ContentEntry } from '../core';
2
+ export interface EventDateInfo {
3
+ startDayOfWeek: string;
4
+ startStamp: string;
5
+ startMonth: string;
6
+ startDay: string;
7
+ startTime: string;
8
+ endDayOfWeek: string;
9
+ endMonth: string;
10
+ endDay: string;
11
+ endTime: string;
12
+ allDay: boolean;
13
+ }
14
+ export interface EventLocation {
15
+ title: string;
16
+ }
17
+ export interface EventEntry extends ContentEntry, EventDateInfo {
18
+ location: EventLocation[];
19
+ summary: string;
20
+ }
21
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../source/types/data/events.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAOvC,MAAM,WAAW,aAAa;IAE5B,cAAc,EAAE,MAAM,CAAC;IAEvB,UAAU,EAAE,MAAM,CAAC;IAEnB,UAAU,EAAE,MAAM,CAAC;IAEnB,QAAQ,EAAE,MAAM,CAAC;IAEjB,SAAS,EAAE,MAAM,CAAC;IAElB,YAAY,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,MAAM,CAAC;IAEjB,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,EAAE,MAAM,CAAC;IAEhB,MAAM,EAAE,OAAO,CAAC;CACjB;AAOD,MAAM,WAAW,aAAa;IAE5B,KAAK,EAAE,MAAM,CAAC;CACf;AAQD,MAAM,WAAW,UAAW,SAAQ,YAAY,EAAE,aAAa;IAE7D,QAAQ,EAAE,aAAa,EAAE,CAAC;IAE1B,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,53 @@
1
+ import { BaseEntry, Image } from '../core';
2
+ export interface CampusUnit {
3
+ title: string;
4
+ link?: {
5
+ url: string;
6
+ } | null;
7
+ }
8
+ export interface ExpertJob {
9
+ id: string;
10
+ title: string;
11
+ url: string;
12
+ roomNumber?: string;
13
+ campusUnits?: CampusUnit[] | null;
14
+ }
15
+ export interface ExpertOrganization {
16
+ id: string;
17
+ title: string;
18
+ url: string;
19
+ jobs: ExpertJob[];
20
+ }
21
+ export interface ExpertContact {
22
+ email?: string | null;
23
+ linkedin?: string | null;
24
+ website?: string | null;
25
+ twitter?: string | null;
26
+ }
27
+ export interface ExpertSkills {
28
+ languages?: string[] | null;
29
+ mediaTrained?: boolean | null;
30
+ }
31
+ export interface ExpertEntry extends BaseEntry {
32
+ prefix?: string | null;
33
+ firstName: string;
34
+ middleName?: string | null;
35
+ lastName: string;
36
+ suffix?: string | null;
37
+ pronouns?: string | null;
38
+ headshot?: Image[] | null;
39
+ summary?: {
40
+ html: string;
41
+ } | null;
42
+ bio?: {
43
+ html: string;
44
+ } | null;
45
+ organizations?: ExpertOrganization[];
46
+ email?: string | null;
47
+ linkedin?: string | null;
48
+ website?: string | null;
49
+ twitter?: string | null;
50
+ languages?: string[] | null;
51
+ mediaTrained?: boolean | null;
52
+ }
53
+ //# sourceMappingURL=experts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experts.d.ts","sourceRoot":"","sources":["../../../source/types/data/experts.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAO3C,MAAM,WAAW,UAAU;IAEzB,KAAK,EAAE,MAAM,CAAC;IAEd,IAAI,CAAC,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;KACb,GAAG,IAAI,CAAC;CACV;AAOD,MAAM,WAAW,SAAS;IAExB,EAAE,EAAE,MAAM,CAAC;IAEX,KAAK,EAAE,MAAM,CAAC;IAEd,GAAG,EAAE,MAAM,CAAC;IAEZ,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;CACnC;AAOD,MAAM,WAAW,kBAAkB;IAEjC,EAAE,EAAE,MAAM,CAAC;IAEX,KAAK,EAAE,MAAM,CAAC;IAEd,GAAG,EAAE,MAAM,CAAC;IAEZ,IAAI,EAAE,SAAS,EAAE,CAAC;CACnB;AAOD,MAAM,WAAW,aAAa;IAE5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAOD,MAAM,WAAW,YAAY;IAE3B,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE5B,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B;AAQD,MAAM,WAAW,WAAY,SAAQ,SAAS;IAE5C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,SAAS,EAAE,MAAM,CAAC;IAElB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,QAAQ,EAAE,MAAM,CAAC;IAEjB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAE1B,OAAO,CAAC,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,IAAI,CAAC;IAET,GAAG,CAAC,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,IAAI,CAAC;IAET,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAErC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B"}
@@ -0,0 +1,5 @@
1
+ export * from './events';
2
+ export * from './news';
3
+ export * from './experts';
4
+ export * from './academic';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/types/data/index.ts"],"names":[],"mappings":"AAcA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { ContentEntry } from '../core';
2
+ export interface NewsEntry extends ContentEntry {
3
+ summary: string;
4
+ dateFormatted: string;
5
+ }
6
+ //# sourceMappingURL=news.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"news.d.ts","sourceRoot":"","sources":["../../../source/types/data/news.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQvC,MAAM,WAAW,SAAU,SAAQ,YAAY;IAE7C,OAAO,EAAE,MAAM,CAAC;IAEhB,aAAa,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,35 @@
1
+ export interface BaseFeedProps {
2
+ token: string;
3
+ numberOfRowsToStart: number;
4
+ categories?: string[];
5
+ isThemeDark?: boolean;
6
+ isLazyLoad: boolean;
7
+ entriesToRemove?: string[];
8
+ styleCallback?: (cssString: string) => void;
9
+ }
10
+ export interface GridFeedProps extends BaseFeedProps {
11
+ numberOfColumnsToShow?: 2 | 3 | 4;
12
+ isTransparent?: boolean;
13
+ }
14
+ export interface ListFeedProps extends BaseFeedProps {
15
+ }
16
+ export interface SliderFeedProps {
17
+ token: string;
18
+ categories?: string | null;
19
+ isThemeDark?: boolean;
20
+ }
21
+ export interface NewsFeedProps extends BaseFeedProps {
22
+ isUnion: boolean;
23
+ }
24
+ export interface FeaturedFeedProps extends NewsFeedProps {
25
+ isTransparent?: boolean;
26
+ isLayoutReversed?: boolean;
27
+ overwriteStickyPosition?: number;
28
+ }
29
+ export interface EventFeedProps extends BaseFeedProps {
30
+ isShowTime?: boolean;
31
+ }
32
+ export interface EventGridFeedProps extends GridFeedProps {
33
+ isShowTime?: boolean;
34
+ }
35
+ //# sourceMappingURL=feeds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../../source/types/feeds.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,aAAa;IAE5B,KAAK,EAAE,MAAM,CAAC;IAEd,mBAAmB,EAAE,MAAM,CAAC;IAE5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,UAAU,EAAE,OAAO,CAAC;IAEpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAOD,MAAM,WAAW,aAAc,SAAQ,aAAa;IAElD,qBAAqB,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAElC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAOD,MAAM,WAAW,aAAc,SAAQ,aAAa;CAEnD;AAOD,MAAM,WAAW,eAAe;IAE9B,KAAK,EAAE,MAAM,CAAC;IAEd,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAOD,MAAM,WAAW,aAAc,SAAQ,aAAa;IAElD,OAAO,EAAE,OAAO,CAAC;CAClB;AAYD,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IAEtD,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAOD,MAAM,WAAW,cAAe,SAAQ,aAAa;IAEnD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAOD,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IAEvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}