@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.
- package/README.md +1 -1
- package/dist/academic.d.ts +1 -1
- package/dist/academic.js +1 -1
- package/dist/academic.mjs +1 -1
- package/dist/events.d.ts +1 -1
- package/dist/events.js +4 -4
- package/dist/events.mjs +4 -4
- package/dist/experts.d.ts +2 -0
- package/dist/experts.js +9 -0
- package/dist/experts.js.map +1 -0
- package/dist/experts.mjs +9 -0
- package/dist/experts.mjs.map +1 -0
- package/dist/factory/core/createBaseFeed.d.ts +3 -0
- package/dist/factory/core/createBaseFeed.d.ts.map +1 -0
- package/dist/factory/core/createBaseFeed.js +114 -0
- package/dist/factory/core/createBaseFeed.js.map +1 -0
- package/dist/factory/core/createBaseFeed.mjs +114 -0
- package/dist/factory/core/createBaseFeed.mjs.map +1 -0
- package/dist/factory/core/index.d.ts +3 -0
- package/dist/factory/core/index.d.ts.map +1 -0
- package/dist/factory/core/types.d.ts +91 -0
- package/dist/factory/core/types.d.ts.map +1 -0
- package/dist/factory/helpers/displayHandler.d.ts +29 -0
- package/dist/factory/helpers/displayHandler.d.ts.map +1 -0
- package/dist/factory/helpers/displayHandler.js +187 -0
- package/dist/factory/helpers/displayHandler.js.map +1 -0
- package/dist/factory/helpers/displayHandler.mjs +169 -0
- package/dist/factory/helpers/displayHandler.mjs.map +1 -0
- package/dist/factory/helpers/feedHelpers.d.ts +10 -0
- package/dist/factory/helpers/feedHelpers.d.ts.map +1 -0
- package/dist/factory/helpers/feedHelpers.js +32 -0
- package/dist/factory/helpers/feedHelpers.js.map +1 -0
- package/dist/factory/helpers/feedHelpers.mjs +32 -0
- package/dist/factory/helpers/feedHelpers.mjs.map +1 -0
- package/dist/factory/helpers/fetchHandler.d.ts +22 -0
- package/dist/factory/helpers/fetchHandler.d.ts.map +1 -0
- package/dist/factory/helpers/fetchHandler.js +140 -0
- package/dist/factory/helpers/fetchHandler.js.map +1 -0
- package/dist/factory/helpers/fetchHandler.mjs +123 -0
- package/dist/factory/helpers/fetchHandler.mjs.map +1 -0
- package/dist/factory/helpers/index.d.ts +4 -0
- package/dist/factory/helpers/index.d.ts.map +1 -0
- package/dist/factory/index.d.ts +4 -0
- package/dist/factory/index.d.ts.map +1 -0
- package/dist/feeds/academic/_types.d.ts.map +1 -0
- package/dist/feeds/academic/index.d.ts.map +1 -0
- package/dist/feeds/academic/slider.d.ts.map +1 -0
- package/dist/feeds/academic/slider.js +10 -0
- package/dist/feeds/academic/slider.js.map +1 -0
- package/dist/feeds/academic/slider.mjs +11 -0
- package/dist/feeds/academic/slider.mjs.map +1 -0
- package/dist/feeds/events/_types.d.ts.map +1 -0
- package/dist/feeds/events/grid.d.ts.map +1 -0
- package/dist/feeds/events/grid.js +31 -0
- package/dist/feeds/events/grid.js.map +1 -0
- package/dist/feeds/events/grid.mjs +32 -0
- package/dist/feeds/events/grid.mjs.map +1 -0
- package/dist/feeds/events/grouped.d.ts.map +1 -0
- package/dist/feeds/events/grouped.js +353 -0
- package/dist/feeds/events/grouped.js.map +1 -0
- package/dist/feeds/events/grouped.mjs +337 -0
- package/dist/feeds/events/grouped.mjs.map +1 -0
- package/dist/feeds/events/index.d.ts.map +1 -0
- package/dist/feeds/events/list.d.ts.map +1 -0
- package/dist/feeds/events/list.js +32 -0
- package/dist/feeds/events/list.js.map +1 -0
- package/dist/feeds/events/list.mjs +33 -0
- package/dist/feeds/events/list.mjs.map +1 -0
- package/dist/feeds/events/slider.d.ts.map +1 -0
- package/dist/feeds/events/slider.js +10 -0
- package/dist/feeds/events/slider.js.map +1 -0
- package/dist/feeds/events/slider.mjs +11 -0
- package/dist/feeds/events/slider.mjs.map +1 -0
- package/dist/feeds/experts/_types.d.ts +22 -0
- package/dist/feeds/experts/_types.d.ts.map +1 -0
- package/dist/feeds/experts/bio.d.ts +5 -0
- package/dist/feeds/experts/bio.d.ts.map +1 -0
- package/dist/feeds/experts/bio.js +146 -0
- package/dist/feeds/experts/bio.js.map +1 -0
- package/dist/feeds/experts/bio.mjs +147 -0
- package/dist/feeds/experts/bio.mjs.map +1 -0
- package/dist/feeds/experts/grid.d.ts +5 -0
- package/dist/feeds/experts/grid.d.ts.map +1 -0
- package/dist/feeds/experts/grid.js +36 -0
- package/dist/feeds/experts/grid.js.map +1 -0
- package/dist/feeds/experts/grid.mjs +37 -0
- package/dist/feeds/experts/grid.mjs.map +1 -0
- package/dist/feeds/experts/index.d.ts +4 -0
- package/dist/feeds/experts/index.d.ts.map +1 -0
- package/dist/feeds/experts/list.d.ts.map +1 -0
- package/dist/feeds/experts/list.js +25 -0
- package/dist/feeds/experts/list.js.map +1 -0
- package/dist/feeds/experts/list.mjs +26 -0
- package/dist/feeds/experts/list.mjs.map +1 -0
- package/dist/feeds/news/_types.d.ts.map +1 -0
- package/dist/feeds/news/featured.d.ts.map +1 -0
- package/dist/feeds/news/featured.js +378 -0
- package/dist/feeds/news/featured.js.map +1 -0
- package/dist/feeds/news/featured.mjs +379 -0
- package/dist/feeds/news/featured.mjs.map +1 -0
- package/dist/feeds/news/grid.d.ts.map +1 -0
- package/dist/feeds/news/grid.js +36 -0
- package/dist/feeds/news/grid.js.map +1 -0
- package/dist/feeds/news/grid.mjs +37 -0
- package/dist/feeds/news/grid.mjs.map +1 -0
- package/dist/feeds/news/index.d.ts.map +1 -0
- package/dist/feeds/news/list.d.ts +5 -0
- package/dist/feeds/news/list.d.ts.map +1 -0
- package/dist/feeds/news/list.js +33 -0
- package/dist/feeds/news/list.js.map +1 -0
- package/dist/feeds/news/list.mjs +34 -0
- package/dist/feeds/news/list.mjs.map +1 -0
- package/dist/{utilities → helpers}/events/index.d.ts +1 -0
- package/dist/helpers/events/index.d.ts.map +1 -0
- package/dist/{utilities → helpers}/events/index.js +2 -0
- package/dist/helpers/events/index.js.map +1 -0
- package/dist/{utilities → helpers}/events/index.mjs +2 -0
- package/dist/helpers/events/index.mjs.map +1 -0
- package/dist/helpers/grouping/events.d.ts +14 -0
- package/dist/helpers/grouping/events.d.ts.map +1 -0
- package/dist/helpers/grouping/events.js +147 -0
- package/dist/helpers/grouping/events.js.map +1 -0
- package/dist/helpers/grouping/events.mjs +147 -0
- package/dist/helpers/grouping/events.mjs.map +1 -0
- package/dist/helpers/grouping/index.d.ts +2 -0
- package/dist/helpers/grouping/index.d.ts.map +1 -0
- package/dist/helpers/index.d.ts +5 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/network/fetch.d.ts.map +1 -0
- package/dist/helpers/network/index.d.ts.map +1 -0
- package/dist/helpers/styles/index.d.ts +2 -0
- package/dist/helpers/styles/index.d.ts.map +1 -0
- package/dist/helpers/styles/shadow.d.ts +10 -0
- package/dist/helpers/styles/shadow.d.ts.map +1 -0
- package/dist/helpers/styles/shadow.js +33 -0
- package/dist/helpers/styles/shadow.js.map +1 -0
- package/dist/helpers/styles/shadow.mjs +16 -0
- package/dist/helpers/styles/shadow.mjs.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -1
- package/dist/news.d.ts +1 -1
- package/dist/news.js +3 -3
- package/dist/news.mjs +3 -3
- package/dist/states/_types.d.ts +60 -0
- package/dist/states/_types.d.ts.map +1 -0
- package/dist/states/_types.js +12 -0
- package/dist/states/_types.js.map +1 -0
- package/dist/states/_types.mjs +12 -0
- package/dist/states/_types.mjs.map +1 -0
- package/dist/states/announcer.d.ts +16 -0
- package/dist/states/announcer.d.ts.map +1 -0
- package/dist/states/announcer.js +62 -0
- package/dist/states/announcer.js.map +1 -0
- package/dist/states/announcer.mjs +62 -0
- package/dist/states/announcer.mjs.map +1 -0
- package/dist/states/empty.d.ts +17 -0
- package/dist/states/empty.d.ts.map +1 -0
- package/dist/states/empty.js +121 -0
- package/dist/states/empty.js.map +1 -0
- package/dist/states/empty.mjs +104 -0
- package/dist/states/empty.mjs.map +1 -0
- package/dist/states/index.d.ts +10 -0
- package/dist/states/index.d.ts.map +1 -0
- package/dist/states/loading.d.ts +17 -0
- package/dist/states/loading.d.ts.map +1 -0
- package/dist/states/loading.js +155 -0
- package/dist/states/loading.js.map +1 -0
- package/dist/states/loading.mjs +155 -0
- package/dist/states/loading.mjs.map +1 -0
- package/dist/states/pagination.d.ts +19 -0
- package/dist/states/pagination.d.ts.map +1 -0
- package/dist/states/pagination.js +119 -0
- package/dist/states/pagination.js.map +1 -0
- package/dist/states/pagination.mjs +102 -0
- package/dist/states/pagination.mjs.map +1 -0
- package/dist/strategies/display/events.d.ts +4 -0
- package/dist/strategies/display/events.d.ts.map +1 -0
- package/dist/strategies/display/events.js +60 -0
- package/dist/strategies/display/events.js.map +1 -0
- package/dist/strategies/display/events.mjs +60 -0
- package/dist/strategies/display/events.mjs.map +1 -0
- package/dist/strategies/display/experts.d.ts +19 -0
- package/dist/strategies/display/experts.d.ts.map +1 -0
- package/dist/strategies/display/experts.js +266 -0
- package/dist/strategies/display/experts.js.map +1 -0
- package/dist/strategies/display/experts.mjs +266 -0
- package/dist/strategies/display/experts.mjs.map +1 -0
- package/dist/strategies/display/index.d.ts +5 -0
- package/dist/strategies/display/index.d.ts.map +1 -0
- package/dist/strategies/display/news.d.ts +4 -0
- package/dist/strategies/display/news.d.ts.map +1 -0
- package/dist/strategies/display/news.js +58 -0
- package/dist/strategies/display/news.js.map +1 -0
- package/dist/strategies/display/news.mjs +58 -0
- package/dist/strategies/display/news.mjs.map +1 -0
- package/dist/strategies/fetch/academic.d.ts +2 -0
- package/dist/strategies/fetch/academic.d.ts.map +1 -0
- package/dist/strategies/fetch/academic.js +30 -0
- package/dist/strategies/fetch/academic.js.map +1 -0
- package/dist/strategies/fetch/academic.mjs +30 -0
- package/dist/strategies/fetch/academic.mjs.map +1 -0
- package/dist/strategies/fetch/events.d.ts +20 -0
- package/dist/strategies/fetch/events.d.ts.map +1 -0
- package/dist/strategies/fetch/events.js +223 -0
- package/dist/strategies/fetch/events.js.map +1 -0
- package/dist/strategies/fetch/events.mjs +223 -0
- package/dist/strategies/fetch/events.mjs.map +1 -0
- package/dist/strategies/fetch/experts.d.ts +4 -0
- package/dist/strategies/fetch/experts.d.ts.map +1 -0
- package/dist/strategies/fetch/experts.js +189 -0
- package/dist/strategies/fetch/experts.js.map +1 -0
- package/dist/strategies/fetch/experts.mjs +189 -0
- package/dist/strategies/fetch/experts.mjs.map +1 -0
- package/dist/strategies/fetch/graphql.d.ts +13 -0
- package/dist/strategies/fetch/graphql.d.ts.map +1 -0
- package/dist/strategies/fetch/graphql.js +100 -0
- package/dist/strategies/fetch/graphql.js.map +1 -0
- package/dist/strategies/fetch/graphql.mjs +100 -0
- package/dist/strategies/fetch/graphql.mjs.map +1 -0
- package/dist/strategies/fetch/index.d.ts +10 -0
- package/dist/strategies/fetch/index.d.ts.map +1 -0
- package/dist/strategies/fetch/news.d.ts +4 -0
- package/dist/strategies/fetch/news.d.ts.map +1 -0
- package/dist/strategies/fetch/news.js +95 -0
- package/dist/strategies/fetch/news.js.map +1 -0
- package/dist/strategies/fetch/news.mjs +95 -0
- package/dist/strategies/fetch/news.mjs.map +1 -0
- package/dist/strategies/index.d.ts +7 -0
- package/dist/strategies/index.d.ts.map +1 -0
- package/dist/strategies/layout/featured.d.ts +8 -0
- package/dist/strategies/layout/featured.d.ts.map +1 -0
- package/dist/strategies/layout/grid.d.ts +7 -0
- package/dist/strategies/layout/grid.d.ts.map +1 -0
- package/dist/strategies/layout/grid.js +36 -0
- package/dist/strategies/layout/grid.js.map +1 -0
- package/dist/strategies/layout/grid.mjs +36 -0
- package/dist/strategies/layout/grid.mjs.map +1 -0
- package/dist/strategies/layout/index.d.ts +4 -0
- package/dist/strategies/layout/index.d.ts.map +1 -0
- package/dist/types/api.d.ts +34 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/core.d.ts +40 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/data/academic.d.ts +6 -0
- package/dist/types/data/academic.d.ts.map +1 -0
- package/dist/types/data/events.d.ts +21 -0
- package/dist/types/data/events.d.ts.map +1 -0
- package/dist/types/data/experts.d.ts +53 -0
- package/dist/types/data/experts.d.ts.map +1 -0
- package/dist/types/data/index.d.ts +5 -0
- package/dist/types/data/index.d.ts.map +1 -0
- package/dist/types/data/news.d.ts +6 -0
- package/dist/types/data/news.d.ts.map +1 -0
- package/dist/types/feeds.d.ts +35 -0
- package/dist/types/feeds.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/widgets/index.d.ts +2 -0
- package/dist/widgets/index.d.ts.map +1 -0
- package/dist/widgets/slider.d.ts.map +1 -0
- package/dist/{macros → widgets}/slider.js +2 -4
- package/dist/{macros/slider.mjs.map → widgets/slider.js.map} +1 -1
- package/dist/{macros → widgets}/slider.mjs +2 -4
- package/dist/widgets/slider.mjs.map +1 -0
- package/package.json +17 -3
- package/dist/composite/academic/_types.d.ts.map +0 -1
- package/dist/composite/academic/index.d.ts.map +0 -1
- package/dist/composite/academic/slider.d.ts.map +0 -1
- package/dist/composite/academic/slider.js +0 -34
- package/dist/composite/academic/slider.js.map +0 -1
- package/dist/composite/academic/slider.mjs +0 -35
- package/dist/composite/academic/slider.mjs.map +0 -1
- package/dist/composite/events/_types.d.ts.map +0 -1
- package/dist/composite/events/common/data.d.ts +0 -48
- package/dist/composite/events/common/data.d.ts.map +0 -1
- package/dist/composite/events/common/data.js +0 -53
- package/dist/composite/events/common/data.js.map +0 -1
- package/dist/composite/events/common/data.mjs +0 -53
- package/dist/composite/events/common/data.mjs.map +0 -1
- package/dist/composite/events/common/display.d.ts +0 -18
- package/dist/composite/events/common/display.d.ts.map +0 -1
- package/dist/composite/events/common/display.js +0 -147
- package/dist/composite/events/common/display.js.map +0 -1
- package/dist/composite/events/common/display.mjs +0 -130
- package/dist/composite/events/common/display.mjs.map +0 -1
- package/dist/composite/events/common/fetch.d.ts +0 -24
- package/dist/composite/events/common/fetch.d.ts.map +0 -1
- package/dist/composite/events/common/fetch.js +0 -117
- package/dist/composite/events/common/fetch.js.map +0 -1
- package/dist/composite/events/common/fetch.mjs +0 -117
- package/dist/composite/events/common/fetch.mjs.map +0 -1
- package/dist/composite/events/common/queries.d.ts +0 -5
- package/dist/composite/events/common/queries.d.ts.map +0 -1
- package/dist/composite/events/common/queries.js +0 -113
- package/dist/composite/events/common/queries.js.map +0 -1
- package/dist/composite/events/common/queries.mjs +0 -113
- package/dist/composite/events/common/queries.mjs.map +0 -1
- package/dist/composite/events/grid.d.ts.map +0 -1
- package/dist/composite/events/grid.js +0 -90
- package/dist/composite/events/grid.js.map +0 -1
- package/dist/composite/events/grid.mjs +0 -91
- package/dist/composite/events/grid.mjs.map +0 -1
- package/dist/composite/events/grouped.d.ts.map +0 -1
- package/dist/composite/events/grouped.js +0 -300
- package/dist/composite/events/grouped.js.map +0 -1
- package/dist/composite/events/grouped.mjs +0 -284
- package/dist/composite/events/grouped.mjs.map +0 -1
- package/dist/composite/events/index.d.ts.map +0 -1
- package/dist/composite/events/list.d.ts.map +0 -1
- package/dist/composite/events/list.js +0 -90
- package/dist/composite/events/list.js.map +0 -1
- package/dist/composite/events/list.mjs +0 -91
- package/dist/composite/events/list.mjs.map +0 -1
- package/dist/composite/events/slider.d.ts.map +0 -1
- package/dist/composite/events/slider.js +0 -35
- package/dist/composite/events/slider.js.map +0 -1
- package/dist/composite/events/slider.mjs +0 -36
- package/dist/composite/events/slider.mjs.map +0 -1
- package/dist/composite/news/_types.d.ts.map +0 -1
- package/dist/composite/news/common/data.d.ts +0 -47
- package/dist/composite/news/common/data.d.ts.map +0 -1
- package/dist/composite/news/common/data.js +0 -62
- package/dist/composite/news/common/data.js.map +0 -1
- package/dist/composite/news/common/data.mjs +0 -62
- package/dist/composite/news/common/data.mjs.map +0 -1
- package/dist/composite/news/common/display.d.ts +0 -17
- package/dist/composite/news/common/display.d.ts.map +0 -1
- package/dist/composite/news/common/display.js +0 -147
- package/dist/composite/news/common/display.js.map +0 -1
- package/dist/composite/news/common/display.mjs +0 -130
- package/dist/composite/news/common/display.mjs.map +0 -1
- package/dist/composite/news/common/fetch.d.ts +0 -22
- package/dist/composite/news/common/fetch.d.ts.map +0 -1
- package/dist/composite/news/common/fetch.js +0 -87
- package/dist/composite/news/common/fetch.js.map +0 -1
- package/dist/composite/news/common/fetch.mjs +0 -87
- package/dist/composite/news/common/fetch.mjs.map +0 -1
- package/dist/composite/news/common/queries.d.ts +0 -2
- package/dist/composite/news/common/queries.d.ts.map +0 -1
- package/dist/composite/news/common/queries.js +0 -37
- package/dist/composite/news/common/queries.js.map +0 -1
- package/dist/composite/news/common/queries.mjs +0 -37
- package/dist/composite/news/common/queries.mjs.map +0 -1
- package/dist/composite/news/featured.d.ts.map +0 -1
- package/dist/composite/news/featured.js +0 -182
- package/dist/composite/news/featured.js.map +0 -1
- package/dist/composite/news/featured.mjs +0 -183
- package/dist/composite/news/featured.mjs.map +0 -1
- package/dist/composite/news/grid.d.ts.map +0 -1
- package/dist/composite/news/grid.js +0 -98
- package/dist/composite/news/grid.js.map +0 -1
- package/dist/composite/news/grid.mjs +0 -99
- package/dist/composite/news/grid.mjs.map +0 -1
- package/dist/composite/news/index.d.ts.map +0 -1
- package/dist/composite/news/list.d.ts.map +0 -1
- package/dist/composite/news/list.js +0 -85
- package/dist/composite/news/list.js.map +0 -1
- package/dist/composite/news/list.mjs +0 -86
- package/dist/composite/news/list.mjs.map +0 -1
- package/dist/elements/asset.d.ts +0 -10
- package/dist/elements/asset.d.ts.map +0 -1
- package/dist/elements/asset.js +0 -27
- package/dist/elements/asset.js.map +0 -1
- package/dist/elements/asset.mjs +0 -27
- package/dist/elements/asset.mjs.map +0 -1
- package/dist/elements/index.d.ts +0 -4
- package/dist/elements/index.d.ts.map +0 -1
- package/dist/elements/layout.d.ts +0 -27
- package/dist/elements/layout.d.ts.map +0 -1
- package/dist/elements/layout.js +0 -121
- package/dist/elements/layout.js.map +0 -1
- package/dist/elements/layout.mjs +0 -104
- package/dist/elements/layout.mjs.map +0 -1
- package/dist/elements/text.d.ts +0 -12
- package/dist/elements/text.d.ts.map +0 -1
- package/dist/elements/text.js +0 -41
- package/dist/elements/text.js.map +0 -1
- package/dist/elements/text.mjs +0 -41
- package/dist/elements/text.mjs.map +0 -1
- package/dist/macros/aria-live.d.ts +0 -11
- package/dist/macros/aria-live.d.ts.map +0 -1
- package/dist/macros/aria-live.js +0 -25
- package/dist/macros/aria-live.js.map +0 -1
- package/dist/macros/aria-live.mjs +0 -26
- package/dist/macros/aria-live.mjs.map +0 -1
- package/dist/macros/index.d.ts +0 -6
- package/dist/macros/index.d.ts.map +0 -1
- package/dist/macros/lazy-load.d.ts +0 -19
- package/dist/macros/lazy-load.d.ts.map +0 -1
- package/dist/macros/lazy-load.js +0 -63
- package/dist/macros/lazy-load.js.map +0 -1
- package/dist/macros/lazy-load.mjs +0 -47
- package/dist/macros/lazy-load.mjs.map +0 -1
- package/dist/macros/loader.d.ts +0 -18
- package/dist/macros/loader.d.ts.map +0 -1
- package/dist/macros/loader.js +0 -148
- package/dist/macros/loader.js.map +0 -1
- package/dist/macros/loader.mjs +0 -132
- package/dist/macros/loader.mjs.map +0 -1
- package/dist/macros/no-results.d.ts +0 -15
- package/dist/macros/no-results.d.ts.map +0 -1
- package/dist/macros/no-results.js +0 -71
- package/dist/macros/no-results.js.map +0 -1
- package/dist/macros/no-results.mjs +0 -55
- package/dist/macros/no-results.mjs.map +0 -1
- package/dist/macros/slider.d.ts.map +0 -1
- package/dist/macros/slider.js.map +0 -1
- package/dist/utilities/events/index.d.ts.map +0 -1
- package/dist/utilities/events/index.js.map +0 -1
- package/dist/utilities/events/index.mjs.map +0 -1
- package/dist/utilities/index.d.ts +0 -3
- package/dist/utilities/index.d.ts.map +0 -1
- package/dist/utilities/network/fetch.d.ts.map +0 -1
- package/dist/utilities/network/index.d.ts.map +0 -1
- /package/dist/{composite → feeds}/academic/_types.d.ts +0 -0
- /package/dist/{composite → feeds}/academic/index.d.ts +0 -0
- /package/dist/{composite → feeds}/academic/slider.d.ts +0 -0
- /package/dist/{composite → feeds}/events/_types.d.ts +0 -0
- /package/dist/{composite → feeds}/events/grid.d.ts +0 -0
- /package/dist/{composite → feeds}/events/grouped.d.ts +0 -0
- /package/dist/{composite → feeds}/events/index.d.ts +0 -0
- /package/dist/{composite → feeds}/events/list.d.ts +0 -0
- /package/dist/{composite → feeds}/events/slider.d.ts +0 -0
- /package/dist/{composite/news → feeds/experts}/list.d.ts +0 -0
- /package/dist/{composite → feeds}/news/_types.d.ts +0 -0
- /package/dist/{composite → feeds}/news/featured.d.ts +0 -0
- /package/dist/{composite → feeds}/news/grid.d.ts +0 -0
- /package/dist/{composite → feeds}/news/index.d.ts +0 -0
- /package/dist/{utilities → helpers}/network/fetch.d.ts +0 -0
- /package/dist/{utilities → helpers}/network/index.d.ts +0 -0
- /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"}
|