@universityofmaryland/web-feeds-library 1.0.3 → 1.0.4

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # University of Maryland Feeds Library
2
2
 
3
- [![Feeds Version](https://img.shields.io/badge/Feeds-v1.0.3-blue)](https://www.npmjs.com/package/@universityofmaryland/web-feeds-library)
3
+ [![Feeds Version](https://img.shields.io/badge/Feeds-v1.0.4-blue)](https://www.npmjs.com/package/@universityofmaryland/web-feeds-library)
4
4
 
5
5
  A collection of dynamic feed components for displaying University of Maryland content feeds including news articles, events, and academic information. This library simplifies the integration of live, updating content from UMD sources while maintaining brand consistency and performance optimization.
6
6
 
@@ -69,7 +69,6 @@ export interface BaseProps {
69
69
  categories?: string[];
70
70
  isThemeDark?: boolean;
71
71
  isLazyLoad: boolean;
72
- isUnion: boolean;
73
72
  styleCallback?: (cssString: string) => void;
74
73
  }
75
74
  export interface BlockProps extends BaseProps {
@@ -1 +1 @@
1
- {"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../../source/composite/events/_types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../../source/composite/events/_types.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,6 @@ export declare const lazyLoadVariables: (props: LazyLoadProps) => {
26
26
  categories?: string[];
27
27
  isThemeDark?: boolean;
28
28
  isLazyLoad: boolean;
29
- isUnion: boolean;
30
29
  styleCallback?: (cssString: string) => void;
31
30
  displayResults: (props: FeedDisplay) => void;
32
31
  };
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../../source/composite/events/common/data.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,WAAW,EACZ,MAAM,WAAW,CAAC;AAEnB,UAAU,aAAc,SAAQ,YAAY;IAC1C,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAED,UAAU,YAAa,SAAQ,WAAW;CAAG;AAE7C,eAAO,MAAM,iBAAiB,UAAW,aAAa;;;;;;;;;;;;;;;;;;;;;;;;CAMpD,CAAC;AAEH,eAAO,MAAM,YAAY,UAChB,YAAY,KAClB,SAAS,CAAC,oBAwBZ,CAAC;AAEF,eAAO,MAAM,OAAO,4BAGjB;IACD,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;;;;;;;;CAWC,CAAC"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../../source/composite/events/common/data.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,WAAW,EACZ,MAAM,WAAW,CAAC;AAEnB,UAAU,aAAc,SAAQ,YAAY;IAC1C,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAED,UAAU,YAAa,SAAQ,WAAW;CAAG;AAE7C,eAAO,MAAM,iBAAiB,UAAW,aAAa;;;;;;;;;;;;;;;;;;;;;;;CAMpD,CAAC;AAEH,eAAO,MAAM,YAAY,UAChB,YAAY,KAClB,SAAS,CAAC,oBAuBZ,CAAC;AAEF,eAAO,MAAM,OAAO,4BAGjB;IACD,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;;;;;;;;CAWC,CAAC"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- !function(e,n){if("object"==typeof exports&&"object"==typeof module)module.exports=n(require("@universityofmaryland/web-styles-library"),require("@universityofmaryland/web-elements-library"));else if("function"==typeof define&&define.amd)define(["@universityofmaryland/web-styles-library","@universityofmaryland/web-elements-library"],n);else{var t="object"==typeof exports?n(require("@universityofmaryland/web-styles-library"),require("@universityofmaryland/web-elements-library")):n(e["@universityofmaryland/web-styles-library"],e["@universityofmaryland/web-elements-library"]);for(var a in t)("object"==typeof exports?exports:e)[a]=t[a]}}(self,((__WEBPACK_EXTERNAL_MODULE__708__,__WEBPACK_EXTERNAL_MODULE__149__)=>(()=>{"use strict";var __webpack_modules__={572:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n academic: () => (/* reexport */ academic_namespaceObject),\n events: () => (/* reexport */ composite_events_namespaceObject),\n news: () => (/* reexport */ news_namespaceObject)\n});\n\n// NAMESPACE OBJECT: ./source/composite/academic/index.ts\nvar academic_namespaceObject = {};\n__webpack_require__.r(academic_namespaceObject);\n__webpack_require__.d(academic_namespaceObject, {\n slider: () => (academic_slider)\n});\n\n// NAMESPACE OBJECT: ./source/composite/events/index.ts\nvar composite_events_namespaceObject = {};\n__webpack_require__.r(composite_events_namespaceObject);\n__webpack_require__.d(composite_events_namespaceObject, {\n grid: () => (events_grid),\n list: () => (list),\n slider: () => (events_slider)\n});\n\n// NAMESPACE OBJECT: ./source/composite/news/index.ts\nvar news_namespaceObject = {};\n__webpack_require__.r(news_namespaceObject);\n__webpack_require__.d(news_namespaceObject, {\n featured: () => (featured),\n grid: () => (news_grid),\n list: () => (news_list)\n});\n\n;// CONCATENATED MODULE: ./source/macros/aria-live.ts\nconst create = ({ message }) => {\n const container = document.createElement('div');\n const textElement = document.createElement('p');\n container.setAttribute('aria-live', 'polite');\n container.setAttribute('role', 'status');\n container.classList.add('sr-only');\n textElement.innerHTML = message;\n container.appendChild(textElement);\n return container;\n};\nconst update = ({ container, message, }) => {\n const element = container.querySelector(`[aria-live]`);\n const textElement = element.querySelector('p');\n if (textElement)\n textElement.innerHTML = message;\n};\n/* harmony default export */ const aria_live = ({\n create,\n update,\n});\n\n// EXTERNAL MODULE: external \"@universityofmaryland/web-styles-library\"\nvar web_styles_library_ = __webpack_require__(708);\n// EXTERNAL MODULE: external \"@universityofmaryland/web-elements-library\"\nvar web_elements_library_ = __webpack_require__(149);\n;// CONCATENATED MODULE: ./source/macros/lazy-load.ts\n\n\nconst lazy_load_create = ({ callback, isThemeDark, isLazyLoad, totalEntries, offset, }) => {\n if (!isLazyLoad)\n return;\n if (!totalEntries)\n return;\n if (!offset)\n return;\n if (!callback)\n return;\n if (offset >= totalEntries)\n return;\n const composite = web_elements_library_.Model.ElementModel.layout.alignedCenter({\n element: document.createElement('div'),\n isThemeDark,\n elementStyles: {\n element: {\n marginTop: `${web_styles_library_.token.spacing.lg}`,\n },\n },\n });\n const ctaButton = web_elements_library_.Model.ElementModel.actions.outlineOptions({\n element: document.createElement('button'),\n isThemeDark,\n });\n ctaButton.element.innerHTML = 'Load more';\n ctaButton.element.addEventListener('click', callback);\n composite.element.appendChild(ctaButton.element);\n composite.styles += ctaButton.styles;\n return composite;\n};\nconst remove = ({ container }) => {\n const button = container.querySelector(`.${web_styles_library_.layout.alignment.block.center.className}`);\n if (button)\n button.remove();\n};\n/* harmony default export */ const lazy_load = ({\n remove,\n create: lazy_load_create,\n});\n\n;// CONCATENATED MODULE: ./source/macros/loader.ts\nconst ID_UMD_LOADER = 'umd-loader-container';\nconst loader_styles = `\n @keyframes loader-first-animation {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n }\n \n @keyframes loader-last-animation {\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(0);\n }\n }\n \n @keyframes loader-middle-animation {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n }\n\n .${ID_UMD_LOADER} {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 10px 0;\n min-height: 40px;\n position: relative;\n grid-column: 1 / -1;\n }\n\n .${ID_UMD_LOADER} > div {\n position: relative;\n }\n\n .${ID_UMD_LOADER} > div > div {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--grayDark);\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n }\n\n .${ID_UMD_LOADER} > div > div:first-child {\n left: 5px;\n animation: loader-first-animation 0.6s infinite;\n }\n\n .${ID_UMD_LOADER} > div > div:nth-child(2) {\n left: 5px;\n animation: loader-middle-animation 0.6s infinite;\n }\n\n .${ID_UMD_LOADER} > div > div:nth-child(3) {\n left: 24px;\n animation: loader-middle-animation 0.6s infinite;\n }\n\n .${ID_UMD_LOADER} > div > div:last-child {\n left: 45px;\n animation: loader-last-animation 0.6s infinite;\n }\n`;\nconst loader_create = () => {\n const container = document.createElement('div');\n const wrapper = document.createElement('div');\n const innerElmOne = document.createElement('div');\n const innerElmTwo = document.createElement('div');\n const innerElmThree = document.createElement('div');\n const innerElmFour = document.createElement('div');\n container.classList.add(ID_UMD_LOADER);\n wrapper.appendChild(innerElmOne);\n wrapper.appendChild(innerElmTwo);\n wrapper.appendChild(innerElmThree);\n wrapper.appendChild(innerElmFour);\n container.appendChild(wrapper);\n return container;\n};\nconst loader_remove = ({ container }) => {\n const loader = container.querySelector(`.${ID_UMD_LOADER}`);\n if (loader)\n loader.remove();\n};\nconst display = ({ container }) => {\n const loader = loader_create();\n container.appendChild(loader);\n};\n/* harmony default export */ const macros_loader = ({\n create: loader_create,\n display,\n remove: loader_remove,\n});\n\n;// CONCATENATED MODULE: ./source/macros/no-results.ts\n\n\n/* harmony default export */ const no_results = (({ message, linkUrl, linkText, isThemeDark, isAlignedCenter = true, }) => {\n const composite = web_elements_library_.Model.ElementModel.layout.gridStacked({\n element: document.createElement('div'),\n isThemeDark,\n elementStyles: {\n element: {\n [`& *`]: {\n textAlign: isAlignedCenter ? 'center' : 'left',\n },\n [`& *:not(:first-child)`]: {\n marginTop: `${web_styles_library_.token.spacing.md}`,\n },\n },\n },\n });\n const headline = web_elements_library_.Model.ElementModel.headline.sansExtraLarge({\n element: document.createElement('p'),\n isThemeDark,\n elementStyles: {\n element: {\n textTransform: 'uppercase',\n },\n },\n });\n headline.element.innerHTML = message || 'No results found';\n composite.element.appendChild(headline.element);\n composite.styles += headline.styles;\n if (linkUrl && linkText) {\n const link = document.createElement('a');\n link.innerHTML = linkText;\n link.setAttribute('href', linkUrl);\n link.setAttribute('target', '_blank');\n link.setAttribute('rel', 'noopener noreferrer');\n const ctaButton = web_elements_library_.Atomic.actions.options({\n element: link,\n isTypeOutline: true,\n isThemeDark,\n });\n composite.element.appendChild(ctaButton.element);\n composite.styles += ctaButton.styles;\n }\n return composite;\n});\n\n;// CONCATENATED MODULE: ./source/macros/slider.ts\n\nconst { FetchGraphQL } = web_elements_library_.Utilities.network;\n/* harmony default export */ const slider = (({ token, query, url, categories, isThemeDark, headline, actions, }) => {\n const dataSlider = document.createElement('div');\n const slider = web_elements_library_.Composite.slider.events({\n isThemeDark,\n dataSlider,\n headline,\n actions,\n });\n let variables = { startDate: new Date().toDateString() };\n let shadowRoot = null;\n const setShadowStyles = async ({ shadowRoot, styles, }) => {\n const styleElement = document.createElement('style');\n const optimizedCss = await web_elements_library_.Utilities.styles.optimizedCss(styles);\n styleElement.textContent = optimizedCss;\n shadowRoot.appendChild(styleElement);\n };\n const callback = (shadow) => {\n shadowRoot = shadow;\n };\n const loadEvents = async () => {\n if (categories) {\n const related = categories.split(',');\n variables.related = related;\n }\n const fetchVariables = {\n query,\n url,\n token,\n variables,\n };\n const feedData = await FetchGraphQL(fetchVariables);\n const slides = feedData?.data?.entries?.events.map((data, i) => {\n const headline = document.createElement('p');\n headline.textContent = data.title;\n const dateSign = web_elements_library_.Atomic.events.sign({\n startMonth: data.startMonth,\n startDay: data.startDay,\n endDay: data.endDay,\n endMonth: data.endMonth,\n isThemeDark,\n });\n const textLockup = web_elements_library_.Atomic.textLockup.date({\n headline,\n isThemeDark,\n dateSign,\n });\n if (i === 0) {\n slider.styles += textLockup.styles;\n slider.styles += dateSign.styles;\n }\n return textLockup;\n });\n slides?.forEach((slide) => dataSlider.appendChild(slide.element));\n if (shadowRoot)\n setShadowStyles({ shadowRoot, styles: slider.styles });\n setTimeout(() => {\n slider.events.load();\n }, 100);\n };\n loadEvents();\n return {\n ...slider,\n events: {\n callback,\n },\n };\n});\n\n;// CONCATENATED MODULE: ./source/macros/index.ts\n\n\n\n\n\n\n;// CONCATENATED MODULE: ./source/composite/academic/slider.ts\n\nconst QUERY_DATA = `\n title\n url\n startMonth: startDate @formatDateTime(format: \"M\")\n startDay: startDate @formatDateTime(format: \"d\")\n endMonth: endDate @formatDateTime(format: \"M\")\n endDay: endDate @formatDateTime(format: \"d\")\n`;\nconst query = `\n query getEvents($startDate: String!, $related: [QueryArgument]) {\n entries: solspace_calendar {\n events(\n relatedTo: $related\n loadOccurrences: true\n startsAfterOrAt: $startDate\n limit: 12\n calendarId: 5\n ) {\n ${QUERY_DATA}\n }\n }\n }\n`;\n/* harmony default export */ const academic_slider = ((props) => slider({\n ...props,\n query,\n url: 'https://provost.umd.edu/graphql',\n}));\n\n;// CONCATENATED MODULE: ./source/composite/academic/index.ts\n\n\n;// CONCATENATED MODULE: ./source/elements/asset.ts\nconst standard = ({ images, url, }) => {\n const image = images[0];\n const imageElement = document.createElement('img');\n imageElement.src = image.url;\n imageElement.alt = image.altText;\n if (url) {\n const link = document.createElement('a');\n link.setAttribute('target', '_blank');\n link.setAttribute('href', url);\n link.setAttribute('aria-label', `Maryland Today Article with image ${image.altText}`);\n link.appendChild(imageElement);\n return link;\n }\n return imageElement;\n};\n\n;// CONCATENATED MODULE: ./source/elements/layout.ts\n\n\nconst stacked = () => web_elements_library_.Model.ElementModel.layout.gridStacked({\n element: document.createElement('div'),\n elementStyles: {\n element: {\n gridGap: `${web_styles_library_.token.spacing.md}`,\n [` > *`]: {\n containerType: 'inline-size',\n },\n [`& .${web_styles_library_.element.asset.image.wrapperScaled.className}`]: {\n alignSelf: 'flex-start',\n },\n },\n },\n});\nconst grid = ({ count = 2, }) => web_elements_library_.Model.ElementModel.layout.grid({\n element: document.createElement('div'),\n elementStyles: {\n element: {\n [` > *`]: {\n containerType: 'inline-size',\n [`@media (${web_styles_library_.token.media.queries.large.min})`]: {\n minHeight: '560px !important',\n },\n },\n },\n },\n isGap: false,\n isColumnsTwo: count === 2,\n isColumnsThree: count === 3,\n isColumnsFour: count === 4,\n});\nconst gridGap = ({ count = 2, }) => web_elements_library_.Model.ElementModel.layout.grid({\n element: document.createElement('div'),\n elementStyles: {\n element: {\n [` > *`]: {\n alignSelf: 'flex-start',\n containerType: 'inline-size',\n },\n },\n },\n isGap: true,\n isColumnsTwo: count === 2,\n isColumnsThree: count === 3,\n isColumnsFour: count === 4,\n});\nconst gridOffsetGap = ({ count = 2, isLayoutReversed, overwriteStickyPosition = 0, }) => web_elements_library_.Model.ElementModel.layout.grid({\n element: document.createElement('div'),\n elementStyles: {\n element: {\n [` > *`]: {\n alignSelf: 'flex-start',\n containerType: 'inline-size',\n },\n [` > *:first-child`]: {\n order: isLayoutReversed ? 2 : -1,\n },\n [`& .${web_styles_library_.element.composite.card.overlay.image.tint.className}`]: {\n [`@media (${web_styles_library_.token.media.queries.large.min})`]: {\n minHeight: '560px !important',\n height: 'inherit',\n position: 'sticky',\n top: `${overwriteStickyPosition}px`,\n },\n [`*`]: {\n color: `${web_styles_library_.token.color.white}`,\n },\n },\n },\n },\n isGap: true,\n isColumnsTwo: count === 2,\n isColumnsThree: count === 3,\n isColumnsFour: count === 4,\n});\n\n;// CONCATENATED MODULE: ./source/elements/text.ts\nconst summary = ({ text }) => {\n if (text) {\n const textElement = document.createElement('div');\n const textNode = document.createElement('p');\n textNode.innerHTML = text;\n textElement.appendChild(textNode);\n return textElement;\n }\n return null;\n};\nconst headline = ({ text, url }) => {\n if (text && url) {\n const headline = document.createElement('p');\n const headlineLink = document.createElement('a');\n headlineLink.href = url;\n headlineLink.innerHTML = text;\n headlineLink.target = '_blank';\n headlineLink.rel = 'noopener noreferrer';\n headline.appendChild(headlineLink);\n return headline;\n }\n return null;\n};\nconst date = ({ date, dateFormatted, }) => {\n if (date && dateFormatted) {\n const dateElement = document.createElement('time');\n dateElement.innerHTML = dateFormatted;\n dateElement.setAttribute('datetime', date);\n return dateElement;\n }\n return null;\n};\n\n;// CONCATENATED MODULE: ./source/elements/index.ts\n\n\n\n\n;// CONCATENATED MODULE: ./source/composite/events/common/queries.ts\nconst EVENTS_COUNT_QUERY = `\nquery getEventsCount($startDate: String!, $related: [QueryArgument]) {\n count: solspace_calendar {\n events(relatedTo: $related, loadOccurrences: true, startsAfterOrAt: $startDate) {\n ... on communications_Event {\n id\n }\n ... on submission_Event {\n id\n }\n }\n }\n}\n`;\nconst EVENTS_QUERY = `\nquery getEvents($startDate: String!, $related: [QueryArgument], $limit: Int, $offset: Int) {\n entries: solspace_calendar {\n events(\n relatedTo: $related\n loadOccurrences: true\n startsAfterOrAt: $startDate\n limit: $limit\n offset: $offset\n ) {\n ... on communications_Event {\n id\n title\n url\n startDayOfWeek: startDate @formatDateTime(format: \"D\")\n startMonth: startDate @formatDateTime(format: \"M\")\n startDay: startDate @formatDateTime(format: \"d\")\n startStamp: startDate @formatDateTime(format: \"Y-m-d\")\n startTime: startDate @formatDateTime(format: \"g:ia\")\n endDayOfWeek: endDate @formatDateTime(format: \"D\")\n endMonth: endDate @formatDateTime(format: \"M\")\n endDay: endDate @formatDateTime(format: \"d\")\n endTime: endDate @formatDateTime(format: \"g:ia\")\n allDay\n desciption: commonRichText\n summary: commonRichTextTwo\n image: commonAssetHeroImageSingle {\n title\n commonPlainTextTwo: alt\n url\n }\n location: categoriesCampusBuildingSingle {\n title\n }\n link: commonEntriesLinkSingle {\n ... on links_links_Entry {\n type: linksDropdownSelector\n externalUrl: commonPlainTextThree\n altTitle: commonPlainTextTwo\n title\n internalLinks: calendarEntriesEvent {\n id\n url\n }\n }\n }\n }\n ... on submission_Event {\n id\n title\n url\n startDayOfWeek: startDate @formatDateTime(format: \"D\")\n startMonth: startDate @formatDateTime(format: \"M\")\n startDay: startDate @formatDateTime(format: \"d\")\n startStamp: startDate @formatDateTime(format: \"Y-m-d\")\n startTime: startDate @formatDateTime(format: \"g:ia\")\n endDayOfWeek: endDate @formatDateTime(format: \"D\")\n endMonth: endDate @formatDateTime(format: \"M\")\n endDay: endDate @formatDateTime(format: \"d\")\n endTime: endDate @formatDateTime(format: \"g:ia\")\n allDay\n desciption: commonRichText\n summary: commonRichTextTwo\n image: commonAssetHeroImageSingle {\n title\n commonPlainTextTwo: alt\n url\n }\n location: categoriesCampusBuildingSingle {\n title\n }\n link: commonEntriesLinkSingle {\n ... on links_links_Entry {\n type: linksDropdownSelector\n externalUrl: commonPlainTextThree\n altTitle: commonPlainTextTwo\n title\n internalLinks: calendarEntriesEvent {\n id\n url\n }\n }\n }\n }\n }\n }\n}\n`;\n\n;// CONCATENATED MODULE: ./source/composite/events/common/data.ts\n\n\n\nconst lazyLoadVariables = (props) => ({\n ...props,\n totalEntries: props.getTotalEntries(),\n offset: props.getOffset(),\n container: props.getContainer(),\n callback: () => load(props),\n});\nconst apiVariables = (props) => {\n const { isUnion, categories, getOffset, token, numberOfRowsToStart, numberOfColumnsToShow = 1, } = props;\n const obj = {\n offset: getOffset(),\n token,\n limit: numberOfRowsToStart,\n };\n if (numberOfColumnsToShow) {\n obj.limit = numberOfColumnsToShow * numberOfRowsToStart;\n }\n if (isUnion && categories) {\n obj.related = categories;\n }\n return obj;\n};\nconst data_display = ({ entry, isThemeDark, }) => ({\n headline: headline({\n text: entry.title,\n url: entry.url,\n }),\n text: summary({ text: entry.summary }),\n eventMeta: web_elements_library_.Atomic.events.meta({\n ...entry,\n isThemeDark,\n }),\n isThemeDark,\n});\n\n;// CONCATENATED MODULE: ./source/composite/events/common/fetch.ts\n\n\n\n\nconst ID_GRID_LAYOUT_CONTAINER = 'umd-grid-gap-layout-container';\nconst fetchFeed = async ({ limit, related, offset, token, query, }) => {\n if (!token)\n throw new Error('Token not found');\n const variables = {\n startDate: new Date().toDateString(),\n limit,\n related,\n offset,\n };\n return await web_elements_library_.Utilities.network.FetchGraphQL({\n query,\n url: 'https://calendar.umd.edu/graphql',\n token: token,\n variables,\n });\n};\nconst getCount = async ({ variables }) => {\n const feedData = await fetchFeed({\n ...variables,\n query: EVENTS_COUNT_QUERY,\n });\n if (!feedData) {\n console.error('Feed not found');\n console.error(feedData);\n return null;\n }\n const count = feedData?.data?.count?.events?.length;\n if (count) {\n return count;\n }\n return null;\n};\nconst getEntries = async ({ variables, }) => {\n const feedData = await fetchFeed({ ...variables, query: EVENTS_QUERY });\n const graceFail = ({ message }) => {\n throw new Error(message);\n };\n if (!feedData ||\n !feedData.data ||\n !feedData.data.entries ||\n feedData.message) {\n if (!feedData)\n graceFail({ message: 'Feed not found' });\n if (!feedData.data)\n graceFail({ message: 'Feed data not found' });\n if (!feedData.data.entries)\n graceFail({ message: 'Feed entries not found' });\n if (!feedData.data.entries.events)\n graceFail({ message: 'Feed events not found' });\n if (!feedData.message)\n graceFail({ message: `Feed data errors: ${feedData.message}` });\n }\n return feedData.data.entries.events;\n};\nconst load = async (props) => {\n const { getContainer, getOffset, displayResults, getTotalEntries } = props;\n const container = getContainer();\n const currentCount = getOffset();\n const totalEntries = getTotalEntries();\n lazy_load.remove({ container });\n macros_loader.display({ container });\n getEntries({\n variables: apiVariables(props),\n }).then((feedData) => {\n displayResults({ feedData });\n aria_live.update({\n container,\n message: `Showing ${currentCount + feedData.length} of ${totalEntries} articles`,\n });\n });\n};\nconst start = async (props) => {\n const { displayNoResults, displayResultStart, setTotalEntries, setStyles } = props;\n await getCount({\n variables: apiVariables(props),\n }).then((count) => {\n if (count) {\n setTotalEntries(count);\n }\n });\n getEntries({\n variables: apiVariables(props),\n }).then((feedData) => {\n const totalEntries = feedData.length;\n if (totalEntries === 0) {\n displayNoResults({ ...props });\n return;\n }\n return displayResultStart({ ...props, feedData });\n });\n};\n\n;// CONCATENATED MODULE: ./source/utilities/events/index.ts\nconst eventNames = {\n FEED_LOADED: 'feed:loaded',\n FEED_ERROR: 'feed:error',\n};\nconst dispatch = (element, eventName, detail) => {\n const event = new CustomEvent(eventName, {\n detail,\n bubbles: true,\n cancelable: true,\n });\n return element.dispatchEvent(event);\n};\nconst listen = (element, eventName, callback, options) => {\n const eventListener = (event) => {\n const customEvent = event;\n callback(customEvent.detail);\n };\n element.addEventListener(eventName, eventListener, options);\n return () => {\n element.removeEventListener(eventName, eventListener, options);\n };\n};\n\n;// CONCATENATED MODULE: ./source/utilities/index.ts\n\n\n\n;// CONCATENATED MODULE: ./source/composite/events/common/display.ts\n\n\n\n\n\nconst display_ID_GRID_LAYOUT_CONTAINER = 'umd-grid-gap-layout-container';\nconst setShadowStyles = async ({ shadowRoot, styles, }) => {\n const styleElement = document.createElement('style');\n const optimizedCss = await web_elements_library_.Utilities.styles.optimizedCss(styles);\n styleElement.textContent = optimizedCss;\n shadowRoot.appendChild(styleElement);\n};\nconst noResults = ({ getContainer, getStyles, getShadowRoot, setStyles, isThemeDark, message = 'No events found', linkUrl = 'https://calendar.umd.edu', linkText = 'View all events', }) => {\n const container = getContainer();\n const shadowRoot = getShadowRoot();\n const noResultsContent = no_results({\n message,\n linkUrl,\n linkText,\n isThemeDark,\n });\n const ariaLiveContent = aria_live.create({\n message,\n });\n container.innerHTML = '';\n container.appendChild(noResultsContent.element);\n container.appendChild(ariaLiveContent);\n setStyles(noResultsContent.styles);\n dispatch(container, eventNames.FEED_ERROR, {\n error: 'No results found',\n message,\n });\n setTimeout(() => {\n const styles = getStyles();\n if (shadowRoot) {\n setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n }, 100);\n};\nconst resultLoad = async (props) => {\n const { entries, getContainer, setStyles, setOffset } = props;\n const container = getContainer();\n const grid = container.querySelector(`#${display_ID_GRID_LAYOUT_CONTAINER}`);\n macros_loader.remove({ container });\n lazy_load.remove({ container });\n setOffset(entries.length);\n return new Promise((resolve) => {\n entries.forEach((entry) => {\n grid.appendChild(entry.element);\n setStyles(entry.styles);\n });\n const lazyLoadButton = lazy_load.create(lazyLoadVariables({\n ...props,\n callback: load,\n }));\n if (lazyLoadButton) {\n container.appendChild(lazyLoadButton.element);\n setStyles(lazyLoadButton.styles);\n }\n resolve();\n });\n};\nconst resultStart = (props) => {\n const { feedData, numberOfColumnsToShow = 1, numberOfRowsToStart, isLazyLoad, displayResults, getContainer, getTotalEntries, setOffset, setStyles, layoutElement, } = props;\n const container = getContainer();\n const totalEntries = getTotalEntries();\n const showAmount = numberOfColumnsToShow || 1 * numberOfRowsToStart;\n const message = isLazyLoad\n ? `Showing ${showAmount} of ${totalEntries} articles`\n : `Showing ${showAmount} articles`;\n layoutElement.element.setAttribute('id', display_ID_GRID_LAYOUT_CONTAINER);\n container.appendChild(layoutElement.element);\n setStyles(layoutElement.styles);\n dispatch(container, eventNames.FEED_LOADED, {\n items: feedData,\n count: feedData.length,\n total: totalEntries || feedData.length,\n });\n displayResults({ feedData });\n container.appendChild(aria_live.create({\n message,\n }));\n};\n\n;// CONCATENATED MODULE: ./source/composite/events/grid.ts\n\n\n\n\n\n\n/* harmony default export */ const events_grid = ((props) => (() => {\n const { isThemeDark, isTransparent, numberOfColumnsToShow } = props;\n const loader = macros_loader.create();\n const container = document.createElement('div');\n const setTotalEntries = (count) => (totalEntries = count);\n const setOffset = (count) => (offset = offset + count);\n const setStyles = (additonalStyles) => (styles += additonalStyles);\n const getContainer = () => container;\n const getTotalEntries = () => totalEntries;\n const getOffset = () => offset;\n const getStyles = () => styles;\n const getShadowRoot = () => shadowRoot;\n let totalEntries = 0;\n let offset = 0;\n let styles = `\n ${loader_styles}\n `;\n let shadowRoot = null;\n const helperFunctions = {\n setTotalEntries,\n setOffset,\n setStyles,\n getContainer,\n getOffset,\n getTotalEntries,\n getStyles,\n getShadowRoot,\n };\n const callback = (shadow) => {\n shadowRoot = shadow;\n };\n const displayResults = async ({ feedData }) => {\n await resultLoad({\n ...props,\n ...helperFunctions,\n displayResults,\n entries: feedData.map((entry) => web_elements_library_.Composite.card.block({\n ...data_display({ entry, isThemeDark }),\n image: standard({\n images: entry.image,\n url: entry.url,\n }),\n isAligned: false,\n isTransparent,\n })),\n });\n if (shadowRoot) {\n setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n };\n const layoutElement = gridGap({\n count: numberOfColumnsToShow,\n });\n container.appendChild(loader);\n start({\n ...props,\n ...helperFunctions,\n displayResults,\n displayResultStart: resultStart,\n displayNoResults: noResults,\n layoutElement,\n isThemeDark,\n });\n return {\n element: container,\n styles,\n events: {\n callback,\n },\n };\n})());\n\n;// CONCATENATED MODULE: ./source/composite/events/list.ts\n\n\n\n\n\n\n/* harmony default export */ const list = ((props) => (() => {\n const { isThemeDark } = props;\n const loader = macros_loader.create();\n const container = document.createElement('div');\n const setTotalEntries = (count) => (totalEntries = count);\n const setOffset = (count) => (offset = offset + count);\n const setStyles = (additonalStyles) => (styles += additonalStyles);\n const getContainer = () => container;\n const getTotalEntries = () => totalEntries;\n const getOffset = () => offset;\n const getStyles = () => styles;\n const getShadowRoot = () => shadowRoot;\n let totalEntries = 0;\n let offset = 0;\n let styles = `\n ${loader_styles}\n `;\n let shadowRoot = null;\n const helperFunctions = {\n setTotalEntries,\n setOffset,\n setStyles,\n getContainer,\n getOffset,\n getTotalEntries,\n getStyles,\n getShadowRoot,\n };\n const callback = (shadow) => {\n shadowRoot = shadow;\n };\n const displayResults = async ({ feedData }) => {\n await resultLoad({\n ...props,\n ...helperFunctions,\n displayResults,\n entries: feedData.map((entry) => web_elements_library_.Composite.card.list({\n ...data_display({ entry, isThemeDark }),\n dateSign: web_elements_library_.Atomic.events.sign({\n ...entry,\n isThemeDark,\n isLargeSize: true,\n }),\n image: standard({\n images: entry.image,\n url: entry.url,\n }),\n isAligned: false,\n })),\n });\n if (shadowRoot) {\n setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n };\n container.appendChild(loader);\n start({\n ...props,\n ...helperFunctions,\n displayResults,\n displayResultStart: resultStart,\n displayNoResults: noResults,\n layoutElement: stacked(),\n });\n return {\n element: container,\n styles,\n events: {\n callback,\n },\n };\n})());\n\n;// CONCATENATED MODULE: ./source/composite/events/slider.ts\n\nconst slider_QUERY_DATA = `\n title\n url\n startMonth: startDate @formatDateTime(format: \"M\")\n startDay: startDate @formatDateTime(format: \"d\")\n endMonth: endDate @formatDateTime(format: \"M\")\n endDay: endDate @formatDateTime(format: \"d\")\n`;\nconst slider_query = `\n query getEvents($startDate: String!, $related: [QueryArgument]) {\n entries: solspace_calendar {\n events(\n relatedTo: $related\n loadOccurrences: true\n startsAfterOrAt: $startDate\n limit: 12\n ) {\n ... on submission_Event {\n ${slider_QUERY_DATA}\n }\n }\n }\n }\n`;\n/* harmony default export */ const events_slider = ((props) => slider({\n ...props,\n query: slider_query,\n url: 'https://calendar.umd.edu/graphql',\n}));\n\n;// CONCATENATED MODULE: ./source/composite/events/index.ts\n\n\n\n\n;// CONCATENATED MODULE: ./source/composite/news/common/queries.ts\nconst ARTICLES_QUERY = `\n query getArticles($related: [QueryArgument], $relatedToAll: [QueryArgument], $limit: Int, $offset: Int, $not: [QueryArgument]) {\n entryCount(section: \"articles\", relatedTo: $related,relatedToAll: $relatedToAll)\n entries(\n section: \"articles\",\n relatedTo: $related,\n relatedToAll: $relatedToAll,\n limit: $limit,\n offset: $offset,\n id: $not\n ) {\n ... on articles_today_Entry {\n id\n title\n date: postDate\n dateFormatted: postDate @formatDateTime(format: \"M d, Y\")\n summary: genericText\n url\n image:articlesHeroImage {\n url\n ... on hero_Asset {\n id\n altText: genericText\n }\n }\n categories:categoryTodaySectionMultiple {\n title\n url\n }\n }\n }\n }\n`;\n\n;// CONCATENATED MODULE: ./source/composite/news/common/data.ts\n\n\nconst data_lazyLoadVariables = (props) => ({\n ...props,\n totalEntries: props.getTotalEntries(),\n offset: props.getOffset(),\n container: props.getContainer(),\n callback: () => fetch_load(props),\n});\nconst data_apiVariables = (props) => {\n const { isUnion, categories, getOffset, token, numberOfRowsToStart, numberOfColumnsToShow = 1, entriesToRemove, } = props;\n const obj = {\n offset: getOffset(),\n token,\n limit: numberOfRowsToStart,\n };\n if (numberOfColumnsToShow) {\n obj.limit = numberOfColumnsToShow * numberOfRowsToStart;\n }\n if (!isUnion && categories) {\n obj.relatedToAll = categories;\n }\n if (isUnion && categories) {\n obj.related = categories;\n }\n if (entriesToRemove) {\n obj.not = ['not', ...entriesToRemove];\n }\n return obj;\n};\nconst common_data_display = ({ entry, isThemeDark, }) => ({\n newsId: entry.id.toString(),\n headline: headline({\n text: entry.title,\n url: entry.url,\n }),\n text: summary({ text: entry.summary }),\n date: date({\n date: entry.date,\n dateFormatted: entry.dateFormatted,\n }),\n isThemeDark,\n});\n\n;// CONCATENATED MODULE: ./source/composite/news/common/fetch.ts\n\n\n\n\nconst fetch_ID_GRID_LAYOUT_CONTAINER = 'umd-grid-gap-layout-container';\nconst fetch_getEntries = async ({ limit, related, relatedToAll, offset, not, token, }) => {\n if (!token)\n throw new Error('Token not found');\n const graceFail = ({ message }) => {\n throw new Error(message);\n };\n const variables = {\n limit,\n related,\n relatedToAll,\n offset,\n not,\n };\n const feedData = await web_elements_library_.Utilities.network.FetchGraphQL({\n query: ARTICLES_QUERY,\n url: 'https://today.umd.edu/graphql',\n token: token,\n variables,\n });\n if (!feedData ||\n !feedData.data ||\n !feedData.data.entries ||\n feedData.message) {\n if (!feedData)\n graceFail({ message: 'Feed not found' });\n if (!feedData.data)\n graceFail({ message: 'Feed data not found' });\n if (!feedData.data.entries)\n graceFail({ message: 'Feed entries not found' });\n if (!feedData.message)\n graceFail({ message: `Feed data errors: ${feedData.message}` });\n }\n return {\n entries: feedData.data.entries,\n count: feedData.data.entryCount,\n };\n};\nconst fetch_load = async (props) => {\n const { getContainer, getOffset, displayResults, getTotalEntries } = props;\n const container = getContainer();\n const currentCount = getOffset();\n const totalEntries = getTotalEntries();\n lazy_load.remove({ container });\n macros_loader.display({ container });\n fetch_getEntries(data_apiVariables(props)).then((feedData) => {\n displayResults({ feedData: feedData.entries });\n aria_live.update({\n container,\n message: `Showing ${currentCount + feedData.entries.length} of ${totalEntries} articles`,\n });\n });\n};\nconst fetch_start = async (props) => {\n const { displayNoResults, displayResultStart, setTotalEntries } = props;\n fetch_getEntries(data_apiVariables(props)).then((feedData) => {\n const totalEntries = feedData.count;\n if (totalEntries === 0) {\n displayNoResults({ ...props });\n return;\n }\n setTotalEntries(totalEntries);\n return displayResultStart({ ...props, feedData: feedData.entries });\n });\n};\n\n;// CONCATENATED MODULE: ./source/composite/news/common/display.ts\n\n\n\n\n\nconst common_display_ID_GRID_LAYOUT_CONTAINER = 'umd-grid-gap-layout-container';\nconst display_setShadowStyles = async ({ shadowRoot, styles, }) => {\n const styleElement = document.createElement('style');\n const optimizedCss = await web_elements_library_.Utilities.styles.optimizedCss(styles);\n styleElement.textContent = optimizedCss;\n shadowRoot.appendChild(styleElement);\n};\nconst display_noResults = ({ getContainer, getStyles, getShadowRoot, setStyles, message = 'No results found', linkUrl = 'https://today.umd.edu', linkText = 'View all articles', isThemeDark, }) => {\n const container = getContainer();\n const shadowRoot = getShadowRoot();\n const noResultsContent = no_results({\n message,\n linkUrl,\n linkText,\n isThemeDark,\n });\n const ariaLiveContent = aria_live.create({\n message,\n });\n container.innerHTML = '';\n container.appendChild(noResultsContent.element);\n container.appendChild(ariaLiveContent);\n setStyles(noResultsContent.styles);\n dispatch(container, eventNames.FEED_ERROR, {\n error: 'No results found',\n message,\n });\n setTimeout(() => {\n const styles = getStyles();\n if (shadowRoot) {\n display_setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n }, 100);\n};\nconst display_resultLoad = async (props) => {\n const { entries, getContainer, setStyles, setOffset } = props;\n const container = getContainer();\n const grid = container.querySelector(`#${common_display_ID_GRID_LAYOUT_CONTAINER}`);\n macros_loader.remove({ container });\n lazy_load.remove({ container });\n setOffset(entries.length);\n return new Promise((resolve) => {\n entries.forEach((entry) => {\n grid.appendChild(entry.element);\n setStyles(entry.styles);\n });\n const lazyLoadButton = lazy_load.create(data_lazyLoadVariables({\n ...props,\n callback: fetch_load,\n }));\n if (lazyLoadButton) {\n container.appendChild(lazyLoadButton.element);\n setStyles(lazyLoadButton.styles);\n }\n resolve();\n });\n};\nconst display_resultStart = (props) => {\n const { feedData, numberOfColumnsToShow = 1, numberOfRowsToStart, isLazyLoad, displayResults, getContainer, getTotalEntries, setTotalEntries, setStyles, layoutElement, } = props;\n const container = getContainer();\n const totalEntries = getTotalEntries();\n const showAmount = numberOfColumnsToShow || 1 * numberOfRowsToStart;\n const message = isLazyLoad\n ? `Showing ${showAmount} of ${totalEntries} articles`\n : `Showing ${showAmount} articles`;\n if (totalEntries)\n setTotalEntries(totalEntries);\n layoutElement.element.setAttribute('id', common_display_ID_GRID_LAYOUT_CONTAINER);\n container.appendChild(layoutElement.element);\n setStyles(layoutElement.styles);\n dispatch(container, eventNames.FEED_LOADED, {\n items: feedData,\n count: feedData.length,\n total: totalEntries || feedData.length,\n });\n displayResults({ feedData });\n container.appendChild(aria_live.create({\n message,\n }));\n};\n\n;// CONCATENATED MODULE: ./source/composite/news/featured.ts\n\n\n\n\n\n\n\n/* harmony default export */ const featured = ((props) => (() => {\n const { isThemeDark, isLazyLoad, isLayoutReversed, isTransparent, overwriteStickyPosition, } = props;\n const loader = macros_loader.create();\n const container = document.createElement('div');\n const setTotalEntries = (count) => (totalEntries = count);\n const setOffset = (count) => (offset = offset + count);\n const setStyles = (additonalStyles) => (styles += additonalStyles);\n const getContainer = () => container;\n const getTotalEntries = () => totalEntries;\n const getOffset = () => offset;\n const getStyles = () => styles;\n const getShadowRoot = () => shadowRoot;\n let numberOfColumnsToShow = 3;\n let totalEntries = 0;\n let offset = 0;\n let styles = `\n ${loader_styles}\n `;\n let shadowRoot = null;\n const helperFunctions = {\n setTotalEntries,\n setOffset,\n setStyles,\n getContainer,\n getOffset,\n getTotalEntries,\n getStyles,\n getShadowRoot,\n };\n const callback = (shadow) => {\n shadowRoot = shadow;\n };\n const setPosition = (position) => {\n const overlayElement = container.querySelector(`.${web_styles_library_.element.composite.card.overlay.image.tint.className}`);\n if (overlayElement)\n overlayElement.style.top = `${position}px`;\n };\n const layoutElement = gridGap({ count: 2 });\n const displayGridOffsetResults = async ({ feedData }) => {\n let entries = [];\n if (feedData.length >= 2) {\n const offsetLayout = gridOffsetGap({\n count: 2,\n isLayoutReversed,\n overwriteStickyPosition,\n });\n const firstEntry = feedData[0];\n const overlayCard = web_elements_library_.Composite.card.overlay.image({\n ...common_data_display({ entry: firstEntry }),\n backgroundImage: standard({\n images: firstEntry.image,\n url: firstEntry.url,\n }),\n });\n offsetLayout.element.appendChild(overlayCard.element);\n offsetLayout.element.appendChild(layoutElement.element);\n container.appendChild(offsetLayout.element);\n setStyles(offsetLayout.styles);\n setStyles(overlayCard.styles);\n entries = feedData.slice(1, 3).map((entry) => web_elements_library_.Composite.card.block({\n ...common_data_display({ entry, isThemeDark }),\n image: standard({\n images: entry.image,\n url: entry.url,\n }),\n isAligned: true,\n isTransparent,\n }));\n }\n else {\n entries = feedData.map((entry) => web_elements_library_.Composite.card.overlay.image({\n ...common_data_display({ entry, isThemeDark }),\n backgroundImage: standard({\n images: entry.image,\n url: entry.url,\n }),\n }));\n container.appendChild(layoutElement.element);\n }\n await display_resultLoad({\n ...props,\n ...helperFunctions,\n numberOfColumnsToShow: 2,\n displayResults,\n entries,\n });\n if (shadowRoot) {\n display_setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n };\n const displayResults = async ({ feedData }) => {\n const entries = feedData.map((entry) => web_elements_library_.Composite.card.block({\n ...common_data_display({ entry, isThemeDark }),\n image: standard({\n images: entry.image,\n url: entry.url,\n }),\n isAligned: true,\n isTransparent,\n }));\n await display_resultLoad({\n ...props,\n ...helperFunctions,\n numberOfColumnsToShow: 2,\n displayResults,\n entries,\n });\n if (shadowRoot) {\n display_setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n };\n const resultStart = (props) => {\n const { feedData, setOffset, getOffset } = props;\n const totalEntries = getTotalEntries();\n const showAmount = 3;\n const message = isLazyLoad\n ? `Showing ${showAmount} of ${totalEntries} articles`\n : `Showing ${showAmount} articles`;\n setOffset(getOffset() + 1);\n if (totalEntries)\n setTotalEntries(totalEntries);\n layoutElement.element.setAttribute('id', common_display_ID_GRID_LAYOUT_CONTAINER);\n setStyles(layoutElement.styles);\n displayGridOffsetResults({ feedData });\n container.appendChild(aria_live.create({\n message,\n }));\n };\n container.appendChild(loader);\n fetch_start({\n ...props,\n ...helperFunctions,\n numberOfColumnsToShow,\n displayResults,\n displayResultStart: resultStart,\n displayNoResults: display_noResults,\n layoutElement,\n });\n return {\n element: container,\n styles,\n events: {\n callback,\n setPosition,\n },\n };\n})());\n\n;// CONCATENATED MODULE: ./source/composite/news/grid.ts\n\n\n\n\n\n\n/* harmony default export */ const news_grid = ((props) => (() => {\n const { isThemeDark, isTransparent, numberOfColumnsToShow, isTypeOverlay } = props;\n const loader = macros_loader.create();\n const container = document.createElement('div');\n const setTotalEntries = (count) => (totalEntries = count);\n const setOffset = (count) => (offset = offset + count);\n const setStyles = (additonalStyles) => (styles += additonalStyles);\n const getContainer = () => container;\n const getTotalEntries = () => totalEntries;\n const getOffset = () => offset;\n const getStyles = () => styles;\n const getShadowRoot = () => shadowRoot;\n let totalEntries = 0;\n let offset = 0;\n let styles = `\n ${loader_styles}\n `;\n let shadowRoot = null;\n const helperFunctions = {\n setTotalEntries,\n setOffset,\n setStyles,\n getContainer,\n getOffset,\n getTotalEntries,\n getStyles,\n getShadowRoot,\n };\n const callback = (shadow) => {\n shadowRoot = shadow;\n };\n const displayResults = async ({ feedData }) => {\n const entries = feedData.map((entry) => {\n if (isTypeOverlay) {\n return web_elements_library_.Composite.card.overlay.image({\n ...common_data_display({ entry }),\n backgroundImage: standard({\n images: entry.image,\n url: entry.url,\n }),\n });\n }\n return web_elements_library_.Composite.card.block({\n ...common_data_display({ entry, isThemeDark }),\n image: standard({\n images: entry.image,\n url: entry.url,\n }),\n isAligned: true,\n isTransparent,\n });\n });\n await display_resultLoad({\n ...props,\n ...helperFunctions,\n displayResults,\n entries,\n });\n if (shadowRoot) {\n display_setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n };\n const layoutElement = isTypeOverlay\n ? grid({ count: numberOfColumnsToShow })\n : gridGap({ count: numberOfColumnsToShow });\n container.appendChild(loader);\n fetch_start({\n ...props,\n ...helperFunctions,\n displayResults,\n displayResultStart: display_resultStart,\n displayNoResults: display_noResults,\n layoutElement,\n isThemeDark,\n });\n return {\n element: container,\n styles,\n events: {\n callback,\n },\n };\n})());\n\n;// CONCATENATED MODULE: ./source/composite/news/list.ts\n\n\n\n\n\n\n/* harmony default export */ const news_list = ((props) => (() => {\n const { isThemeDark } = props;\n const loader = macros_loader.create();\n const container = document.createElement('div');\n const setTotalEntries = (count) => (totalEntries = count);\n const setOffset = (count) => (offset = offset + count);\n const setStyles = (additonalStyles) => (styles += additonalStyles);\n const getContainer = () => container;\n const getTotalEntries = () => totalEntries;\n const getOffset = () => offset;\n const getStyles = () => styles;\n const getShadowRoot = () => shadowRoot;\n let totalEntries = 0;\n let offset = 0;\n let styles = `\n ${loader_styles}\n `;\n let shadowRoot = null;\n const helperFunctions = {\n setTotalEntries,\n setOffset,\n setStyles,\n getContainer,\n getOffset,\n getTotalEntries,\n getStyles,\n getShadowRoot,\n };\n const callback = (shadow) => {\n shadowRoot = shadow;\n };\n const displayResults = async ({ feedData }) => {\n await display_resultLoad({\n ...props,\n ...helperFunctions,\n displayResults,\n entries: feedData.map((entry) => web_elements_library_.Composite.card.list({\n ...common_data_display({ entry, isThemeDark }),\n image: standard({\n images: entry.image,\n url: entry.url,\n }),\n isAligned: false,\n })),\n });\n if (shadowRoot) {\n display_setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n };\n container.appendChild(loader);\n fetch_start({\n ...props,\n ...helperFunctions,\n displayResults,\n displayResultStart: display_resultStart,\n displayNoResults: display_noResults,\n layoutElement: stacked(),\n });\n return {\n element: container,\n styles,\n events: {\n callback,\n },\n };\n})());\n\n;// CONCATENATED MODULE: ./source/composite/news/index.ts\n\n\n\n\n;// CONCATENATED MODULE: ./source/index.ts\n\n\n\n\n\n//# sourceURL=webpack://@universityofmaryland/web-feeds-library/./source/index.ts_+_30_modules?")},149:e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__149__},708:e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__708__}},__webpack_module_cache__={};function __webpack_require__(e){var n=__webpack_module_cache__[e];if(void 0!==n)return n.exports;var t=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](t,t.exports,__webpack_require__),t.exports}__webpack_require__.d=(e,n)=>{for(var t in n)__webpack_require__.o(n,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},__webpack_require__.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__=__webpack_require__(572);return __webpack_exports__})()));
1
+ !function(e,n){if("object"==typeof exports&&"object"==typeof module)module.exports=n(require("@universityofmaryland/web-styles-library"),require("@universityofmaryland/web-elements-library"));else if("function"==typeof define&&define.amd)define(["@universityofmaryland/web-styles-library","@universityofmaryland/web-elements-library"],n);else{var t="object"==typeof exports?n(require("@universityofmaryland/web-styles-library"),require("@universityofmaryland/web-elements-library")):n(e["@universityofmaryland/web-styles-library"],e["@universityofmaryland/web-elements-library"]);for(var a in t)("object"==typeof exports?exports:e)[a]=t[a]}}(self,((__WEBPACK_EXTERNAL_MODULE__708__,__WEBPACK_EXTERNAL_MODULE__149__)=>(()=>{"use strict";var __webpack_modules__={572:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n academic: () => (/* reexport */ academic_namespaceObject),\n events: () => (/* reexport */ composite_events_namespaceObject),\n news: () => (/* reexport */ news_namespaceObject)\n});\n\n// NAMESPACE OBJECT: ./source/composite/academic/index.ts\nvar academic_namespaceObject = {};\n__webpack_require__.r(academic_namespaceObject);\n__webpack_require__.d(academic_namespaceObject, {\n slider: () => (academic_slider)\n});\n\n// NAMESPACE OBJECT: ./source/composite/events/index.ts\nvar composite_events_namespaceObject = {};\n__webpack_require__.r(composite_events_namespaceObject);\n__webpack_require__.d(composite_events_namespaceObject, {\n grid: () => (events_grid),\n list: () => (list),\n slider: () => (events_slider)\n});\n\n// NAMESPACE OBJECT: ./source/composite/news/index.ts\nvar news_namespaceObject = {};\n__webpack_require__.r(news_namespaceObject);\n__webpack_require__.d(news_namespaceObject, {\n featured: () => (featured),\n grid: () => (news_grid),\n list: () => (news_list)\n});\n\n;// CONCATENATED MODULE: ./source/macros/aria-live.ts\nconst create = ({ message }) => {\n const container = document.createElement('div');\n const textElement = document.createElement('p');\n container.setAttribute('aria-live', 'polite');\n container.setAttribute('role', 'status');\n container.classList.add('sr-only');\n textElement.innerHTML = message;\n container.appendChild(textElement);\n return container;\n};\nconst update = ({ container, message, }) => {\n const element = container.querySelector(`[aria-live]`);\n const textElement = element.querySelector('p');\n if (textElement)\n textElement.innerHTML = message;\n};\n/* harmony default export */ const aria_live = ({\n create,\n update,\n});\n\n// EXTERNAL MODULE: external \"@universityofmaryland/web-styles-library\"\nvar web_styles_library_ = __webpack_require__(708);\n// EXTERNAL MODULE: external \"@universityofmaryland/web-elements-library\"\nvar web_elements_library_ = __webpack_require__(149);\n;// CONCATENATED MODULE: ./source/macros/lazy-load.ts\n\n\nconst lazy_load_create = ({ callback, isThemeDark, isLazyLoad, totalEntries, offset, }) => {\n if (!isLazyLoad)\n return;\n if (!totalEntries)\n return;\n if (!offset)\n return;\n if (!callback)\n return;\n if (offset >= totalEntries)\n return;\n const composite = web_elements_library_.Model.ElementModel.layout.alignedCenter({\n element: document.createElement('div'),\n isThemeDark,\n elementStyles: {\n element: {\n marginTop: `${web_styles_library_.token.spacing.lg}`,\n },\n },\n });\n const ctaButton = web_elements_library_.Model.ElementModel.actions.outlineOptions({\n element: document.createElement('button'),\n isThemeDark,\n });\n ctaButton.element.innerHTML = 'Load more';\n ctaButton.element.addEventListener('click', callback);\n composite.element.appendChild(ctaButton.element);\n composite.styles += ctaButton.styles;\n return composite;\n};\nconst remove = ({ container }) => {\n const button = container.querySelector(`.${web_styles_library_.layout.alignment.block.center.className}`);\n if (button)\n button.remove();\n};\n/* harmony default export */ const lazy_load = ({\n remove,\n create: lazy_load_create,\n});\n\n;// CONCATENATED MODULE: ./source/macros/loader.ts\nconst ID_UMD_LOADER = 'umd-loader-container';\nconst loader_styles = `\n @keyframes loader-first-animation {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n }\n \n @keyframes loader-last-animation {\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(0);\n }\n }\n \n @keyframes loader-middle-animation {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n }\n\n .${ID_UMD_LOADER} {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 10px 0;\n min-height: 40px;\n position: relative;\n grid-column: 1 / -1;\n }\n\n .${ID_UMD_LOADER} > div {\n position: relative;\n }\n\n .${ID_UMD_LOADER} > div > div {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--grayDark);\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n }\n\n .${ID_UMD_LOADER} > div > div:first-child {\n left: 5px;\n animation: loader-first-animation 0.6s infinite;\n }\n\n .${ID_UMD_LOADER} > div > div:nth-child(2) {\n left: 5px;\n animation: loader-middle-animation 0.6s infinite;\n }\n\n .${ID_UMD_LOADER} > div > div:nth-child(3) {\n left: 24px;\n animation: loader-middle-animation 0.6s infinite;\n }\n\n .${ID_UMD_LOADER} > div > div:last-child {\n left: 45px;\n animation: loader-last-animation 0.6s infinite;\n }\n`;\nconst loader_create = () => {\n const container = document.createElement('div');\n const wrapper = document.createElement('div');\n const innerElmOne = document.createElement('div');\n const innerElmTwo = document.createElement('div');\n const innerElmThree = document.createElement('div');\n const innerElmFour = document.createElement('div');\n container.classList.add(ID_UMD_LOADER);\n wrapper.appendChild(innerElmOne);\n wrapper.appendChild(innerElmTwo);\n wrapper.appendChild(innerElmThree);\n wrapper.appendChild(innerElmFour);\n container.appendChild(wrapper);\n return container;\n};\nconst loader_remove = ({ container }) => {\n const loader = container.querySelector(`.${ID_UMD_LOADER}`);\n if (loader)\n loader.remove();\n};\nconst display = ({ container }) => {\n const loader = loader_create();\n container.appendChild(loader);\n};\n/* harmony default export */ const macros_loader = ({\n create: loader_create,\n display,\n remove: loader_remove,\n});\n\n;// CONCATENATED MODULE: ./source/macros/no-results.ts\n\n\n/* harmony default export */ const no_results = (({ message, linkUrl, linkText, isThemeDark, isAlignedCenter = true, }) => {\n const composite = web_elements_library_.Model.ElementModel.layout.gridStacked({\n element: document.createElement('div'),\n isThemeDark,\n elementStyles: {\n element: {\n [`& *`]: {\n textAlign: isAlignedCenter ? 'center' : 'left',\n },\n [`& *:not(:first-child)`]: {\n marginTop: `${web_styles_library_.token.spacing.md}`,\n },\n },\n },\n });\n const headline = web_elements_library_.Model.ElementModel.headline.sansExtraLarge({\n element: document.createElement('p'),\n isThemeDark,\n elementStyles: {\n element: {\n textTransform: 'uppercase',\n },\n },\n });\n headline.element.innerHTML = message || 'No results found';\n composite.element.appendChild(headline.element);\n composite.styles += headline.styles;\n if (linkUrl && linkText) {\n const link = document.createElement('a');\n link.innerHTML = linkText;\n link.setAttribute('href', linkUrl);\n link.setAttribute('target', '_blank');\n link.setAttribute('rel', 'noopener noreferrer');\n const ctaButton = web_elements_library_.Atomic.actions.options({\n element: link,\n isTypeOutline: true,\n isThemeDark,\n });\n composite.element.appendChild(ctaButton.element);\n composite.styles += ctaButton.styles;\n }\n return composite;\n});\n\n;// CONCATENATED MODULE: ./source/macros/slider.ts\n\nconst { FetchGraphQL } = web_elements_library_.Utilities.network;\n/* harmony default export */ const slider = (({ token, query, url, categories, isThemeDark, headline, actions, }) => {\n const dataSlider = document.createElement('div');\n const slider = web_elements_library_.Composite.slider.events({\n isThemeDark,\n dataSlider,\n headline,\n actions,\n });\n let variables = { startDate: new Date().toDateString() };\n let shadowRoot = null;\n const setShadowStyles = async ({ shadowRoot, styles, }) => {\n const styleElement = document.createElement('style');\n const optimizedCss = await web_elements_library_.Utilities.styles.optimizedCss(styles);\n styleElement.textContent = optimizedCss;\n shadowRoot.appendChild(styleElement);\n };\n const callback = (shadow) => {\n shadowRoot = shadow;\n };\n const loadEvents = async () => {\n if (categories) {\n const related = categories.split(',');\n variables.related = related;\n }\n const fetchVariables = {\n query,\n url,\n token,\n variables,\n };\n const feedData = await FetchGraphQL(fetchVariables);\n const slides = feedData?.data?.entries?.events.map((data, i) => {\n const headline = document.createElement('p');\n headline.textContent = data.title;\n const dateSign = web_elements_library_.Atomic.events.sign({\n startMonth: data.startMonth,\n startDay: data.startDay,\n endDay: data.endDay,\n endMonth: data.endMonth,\n isThemeDark,\n });\n const textLockup = web_elements_library_.Atomic.textLockup.date({\n headline,\n isThemeDark,\n dateSign,\n });\n if (i === 0) {\n slider.styles += textLockup.styles;\n slider.styles += dateSign.styles;\n }\n return textLockup;\n });\n slides?.forEach((slide) => dataSlider.appendChild(slide.element));\n if (shadowRoot)\n setShadowStyles({ shadowRoot, styles: slider.styles });\n setTimeout(() => {\n slider.events.load();\n }, 100);\n };\n loadEvents();\n return {\n ...slider,\n events: {\n callback,\n },\n };\n});\n\n;// CONCATENATED MODULE: ./source/macros/index.ts\n\n\n\n\n\n\n;// CONCATENATED MODULE: ./source/composite/academic/slider.ts\n\nconst QUERY_DATA = `\n title\n url\n startMonth: startDate @formatDateTime(format: \"M\")\n startDay: startDate @formatDateTime(format: \"d\")\n endMonth: endDate @formatDateTime(format: \"M\")\n endDay: endDate @formatDateTime(format: \"d\")\n`;\nconst query = `\n query getEvents($startDate: String!, $related: [QueryArgument]) {\n entries: solspace_calendar {\n events(\n relatedTo: $related\n loadOccurrences: true\n startsAfterOrAt: $startDate\n limit: 12\n calendarId: 5\n ) {\n ${QUERY_DATA}\n }\n }\n }\n`;\n/* harmony default export */ const academic_slider = ((props) => slider({\n ...props,\n query,\n url: 'https://provost.umd.edu/graphql',\n}));\n\n;// CONCATENATED MODULE: ./source/composite/academic/index.ts\n\n\n;// CONCATENATED MODULE: ./source/elements/asset.ts\nconst standard = ({ images, url, }) => {\n const image = images[0];\n const imageElement = document.createElement('img');\n imageElement.src = image.url;\n imageElement.alt = image.altText;\n if (url) {\n const link = document.createElement('a');\n link.setAttribute('target', '_blank');\n link.setAttribute('href', url);\n link.setAttribute('aria-label', `Maryland Today Article with image ${image.altText}`);\n link.appendChild(imageElement);\n return link;\n }\n return imageElement;\n};\n\n;// CONCATENATED MODULE: ./source/elements/layout.ts\n\n\nconst stacked = () => web_elements_library_.Model.ElementModel.layout.gridStacked({\n element: document.createElement('div'),\n elementStyles: {\n element: {\n gridGap: `${web_styles_library_.token.spacing.md}`,\n [` > *`]: {\n containerType: 'inline-size',\n },\n [`& .${web_styles_library_.element.asset.image.wrapperScaled.className}`]: {\n alignSelf: 'flex-start',\n },\n },\n },\n});\nconst grid = ({ count = 2, }) => web_elements_library_.Model.ElementModel.layout.grid({\n element: document.createElement('div'),\n elementStyles: {\n element: {\n [` > *`]: {\n containerType: 'inline-size',\n [`@media (${web_styles_library_.token.media.queries.large.min})`]: {\n minHeight: '560px !important',\n },\n },\n },\n },\n isGap: false,\n isColumnsTwo: count === 2,\n isColumnsThree: count === 3,\n isColumnsFour: count === 4,\n});\nconst gridGap = ({ count = 2, }) => web_elements_library_.Model.ElementModel.layout.grid({\n element: document.createElement('div'),\n elementStyles: {\n element: {\n [` > *`]: {\n alignSelf: 'flex-start',\n containerType: 'inline-size',\n },\n },\n },\n isGap: true,\n isColumnsTwo: count === 2,\n isColumnsThree: count === 3,\n isColumnsFour: count === 4,\n});\nconst gridOffsetGap = ({ count = 2, isLayoutReversed, overwriteStickyPosition = 0, }) => web_elements_library_.Model.ElementModel.layout.grid({\n element: document.createElement('div'),\n elementStyles: {\n element: {\n [` > *`]: {\n alignSelf: 'flex-start',\n containerType: 'inline-size',\n },\n [` > *:first-child`]: {\n order: isLayoutReversed ? 2 : -1,\n },\n [`& .${web_styles_library_.element.composite.card.overlay.image.tint.className}`]: {\n [`@media (${web_styles_library_.token.media.queries.large.min})`]: {\n minHeight: '560px !important',\n height: 'inherit',\n position: 'sticky',\n top: `${overwriteStickyPosition}px`,\n },\n [`*`]: {\n color: `${web_styles_library_.token.color.white}`,\n },\n },\n },\n },\n isGap: true,\n isColumnsTwo: count === 2,\n isColumnsThree: count === 3,\n isColumnsFour: count === 4,\n});\n\n;// CONCATENATED MODULE: ./source/elements/text.ts\nconst summary = ({ text }) => {\n if (text) {\n const textElement = document.createElement('div');\n const textNode = document.createElement('p');\n textNode.innerHTML = text;\n textElement.appendChild(textNode);\n return textElement;\n }\n return null;\n};\nconst headline = ({ text, url }) => {\n if (text && url) {\n const headline = document.createElement('p');\n const headlineLink = document.createElement('a');\n headlineLink.href = url;\n headlineLink.innerHTML = text;\n headlineLink.target = '_blank';\n headlineLink.rel = 'noopener noreferrer';\n headline.appendChild(headlineLink);\n return headline;\n }\n return null;\n};\nconst date = ({ date, dateFormatted, }) => {\n if (date && dateFormatted) {\n const dateElement = document.createElement('time');\n dateElement.innerHTML = dateFormatted;\n dateElement.setAttribute('datetime', date);\n return dateElement;\n }\n return null;\n};\n\n;// CONCATENATED MODULE: ./source/elements/index.ts\n\n\n\n\n;// CONCATENATED MODULE: ./source/composite/events/common/queries.ts\nconst EVENTS_COUNT_QUERY = `\nquery getEventsCount($startDate: String!, $related: [QueryArgument]) {\n count: solspace_calendar {\n events(relatedTo: $related, loadOccurrences: true, startsAfterOrAt: $startDate) {\n ... on communications_Event {\n id\n }\n ... on submission_Event {\n id\n }\n }\n }\n}\n`;\nconst EVENTS_QUERY = `\nquery getEvents($startDate: String!, $related: [QueryArgument], $limit: Int, $offset: Int) {\n entries: solspace_calendar {\n events(\n relatedTo: $related\n loadOccurrences: true\n startsAfterOrAt: $startDate\n limit: $limit\n offset: $offset\n ) {\n ... on communications_Event {\n id\n title\n url\n startDayOfWeek: startDate @formatDateTime(format: \"D\")\n startMonth: startDate @formatDateTime(format: \"M\")\n startDay: startDate @formatDateTime(format: \"d\")\n startStamp: startDate @formatDateTime(format: \"Y-m-d\")\n startTime: startDate @formatDateTime(format: \"g:ia\")\n endDayOfWeek: endDate @formatDateTime(format: \"D\")\n endMonth: endDate @formatDateTime(format: \"M\")\n endDay: endDate @formatDateTime(format: \"d\")\n endTime: endDate @formatDateTime(format: \"g:ia\")\n allDay\n desciption: commonRichText\n summary: commonRichTextTwo\n image: commonAssetHeroImageSingle {\n title\n commonPlainTextTwo: alt\n url\n }\n location: categoriesCampusBuildingSingle {\n title\n }\n link: commonEntriesLinkSingle {\n ... on links_links_Entry {\n type: linksDropdownSelector\n externalUrl: commonPlainTextThree\n altTitle: commonPlainTextTwo\n title\n internalLinks: calendarEntriesEvent {\n id\n url\n }\n }\n }\n }\n ... on submission_Event {\n id\n title\n url\n startDayOfWeek: startDate @formatDateTime(format: \"D\")\n startMonth: startDate @formatDateTime(format: \"M\")\n startDay: startDate @formatDateTime(format: \"d\")\n startStamp: startDate @formatDateTime(format: \"Y-m-d\")\n startTime: startDate @formatDateTime(format: \"g:ia\")\n endDayOfWeek: endDate @formatDateTime(format: \"D\")\n endMonth: endDate @formatDateTime(format: \"M\")\n endDay: endDate @formatDateTime(format: \"d\")\n endTime: endDate @formatDateTime(format: \"g:ia\")\n allDay\n desciption: commonRichText\n summary: commonRichTextTwo\n image: commonAssetHeroImageSingle {\n title\n commonPlainTextTwo: alt\n url\n }\n location: categoriesCampusBuildingSingle {\n title\n }\n link: commonEntriesLinkSingle {\n ... on links_links_Entry {\n type: linksDropdownSelector\n externalUrl: commonPlainTextThree\n altTitle: commonPlainTextTwo\n title\n internalLinks: calendarEntriesEvent {\n id\n url\n }\n }\n }\n }\n }\n }\n}\n`;\n\n;// CONCATENATED MODULE: ./source/composite/events/common/data.ts\n\n\n\nconst lazyLoadVariables = (props) => ({\n ...props,\n totalEntries: props.getTotalEntries(),\n offset: props.getOffset(),\n container: props.getContainer(),\n callback: () => load(props),\n});\nconst apiVariables = (props) => {\n const { categories, getOffset, token, numberOfRowsToStart, numberOfColumnsToShow = 1, } = props;\n const obj = {\n offset: getOffset(),\n token,\n limit: numberOfRowsToStart,\n };\n if (numberOfColumnsToShow) {\n obj.limit = numberOfColumnsToShow * numberOfRowsToStart;\n }\n if (categories) {\n obj.related = categories;\n }\n return obj;\n};\nconst data_display = ({ entry, isThemeDark, }) => ({\n headline: headline({\n text: entry.title,\n url: entry.url,\n }),\n text: summary({ text: entry.summary }),\n eventMeta: web_elements_library_.Atomic.events.meta({\n ...entry,\n isThemeDark,\n }),\n isThemeDark,\n});\n\n;// CONCATENATED MODULE: ./source/composite/events/common/fetch.ts\n\n\n\n\nconst ID_GRID_LAYOUT_CONTAINER = 'umd-grid-gap-layout-container';\nconst fetchFeed = async ({ limit, related, offset, token, query, }) => {\n if (!token)\n throw new Error('Token not found');\n const variables = {\n startDate: new Date().toDateString(),\n limit,\n related,\n offset,\n };\n return await web_elements_library_.Utilities.network.FetchGraphQL({\n query,\n url: 'https://calendar.umd.edu/graphql',\n token: token,\n variables,\n });\n};\nconst getCount = async ({ variables }) => {\n const feedData = await fetchFeed({\n ...variables,\n query: EVENTS_COUNT_QUERY,\n });\n if (!feedData) {\n console.error('Feed not found');\n console.error(feedData);\n return null;\n }\n const count = feedData?.data?.count?.events?.length;\n if (count) {\n return count;\n }\n return null;\n};\nconst getEntries = async ({ variables, }) => {\n const feedData = await fetchFeed({ ...variables, query: EVENTS_QUERY });\n const graceFail = ({ message }) => {\n throw new Error(message);\n };\n if (!feedData ||\n !feedData.data ||\n !feedData.data.entries ||\n feedData.message) {\n if (!feedData)\n graceFail({ message: 'Feed not found' });\n if (!feedData.data)\n graceFail({ message: 'Feed data not found' });\n if (!feedData.data.entries)\n graceFail({ message: 'Feed entries not found' });\n if (!feedData.data.entries.events)\n graceFail({ message: 'Feed events not found' });\n if (!feedData.message)\n graceFail({ message: `Feed data errors: ${feedData.message}` });\n }\n return feedData.data.entries.events;\n};\nconst load = async (props) => {\n const { getContainer, getOffset, displayResults, getTotalEntries } = props;\n const container = getContainer();\n const currentCount = getOffset();\n const totalEntries = getTotalEntries();\n lazy_load.remove({ container });\n macros_loader.display({ container });\n getEntries({\n variables: apiVariables(props),\n }).then((feedData) => {\n displayResults({ feedData });\n aria_live.update({\n container,\n message: `Showing ${currentCount + feedData.length} of ${totalEntries} articles`,\n });\n });\n};\nconst start = async (props) => {\n const { displayNoResults, displayResultStart, setTotalEntries, setStyles } = props;\n await getCount({\n variables: apiVariables(props),\n }).then((count) => {\n if (count) {\n setTotalEntries(count);\n }\n });\n getEntries({\n variables: apiVariables(props),\n }).then((feedData) => {\n const totalEntries = feedData.length;\n if (totalEntries === 0) {\n displayNoResults({ ...props });\n return;\n }\n return displayResultStart({ ...props, feedData });\n });\n};\n\n;// CONCATENATED MODULE: ./source/utilities/events/index.ts\nconst eventNames = {\n FEED_LOADED: 'feed:loaded',\n FEED_ERROR: 'feed:error',\n};\nconst dispatch = (element, eventName, detail) => {\n const event = new CustomEvent(eventName, {\n detail,\n bubbles: true,\n cancelable: true,\n });\n return element.dispatchEvent(event);\n};\nconst listen = (element, eventName, callback, options) => {\n const eventListener = (event) => {\n const customEvent = event;\n callback(customEvent.detail);\n };\n element.addEventListener(eventName, eventListener, options);\n return () => {\n element.removeEventListener(eventName, eventListener, options);\n };\n};\n\n;// CONCATENATED MODULE: ./source/utilities/index.ts\n\n\n\n;// CONCATENATED MODULE: ./source/composite/events/common/display.ts\n\n\n\n\n\nconst display_ID_GRID_LAYOUT_CONTAINER = 'umd-grid-gap-layout-container';\nconst setShadowStyles = async ({ shadowRoot, styles, }) => {\n const styleElement = document.createElement('style');\n const optimizedCss = await web_elements_library_.Utilities.styles.optimizedCss(styles);\n styleElement.textContent = optimizedCss;\n shadowRoot.appendChild(styleElement);\n};\nconst noResults = ({ getContainer, getStyles, getShadowRoot, setStyles, isThemeDark, message = 'No events found', linkUrl = 'https://calendar.umd.edu', linkText = 'View all events', }) => {\n const container = getContainer();\n const shadowRoot = getShadowRoot();\n const noResultsContent = no_results({\n message,\n linkUrl,\n linkText,\n isThemeDark,\n });\n const ariaLiveContent = aria_live.create({\n message,\n });\n container.innerHTML = '';\n container.appendChild(noResultsContent.element);\n container.appendChild(ariaLiveContent);\n setStyles(noResultsContent.styles);\n dispatch(container, eventNames.FEED_ERROR, {\n error: 'No results found',\n message,\n });\n setTimeout(() => {\n const styles = getStyles();\n if (shadowRoot) {\n setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n }, 100);\n};\nconst resultLoad = async (props) => {\n const { entries, getContainer, setStyles, setOffset } = props;\n const container = getContainer();\n const grid = container.querySelector(`#${display_ID_GRID_LAYOUT_CONTAINER}`);\n macros_loader.remove({ container });\n lazy_load.remove({ container });\n setOffset(entries.length);\n return new Promise((resolve) => {\n entries.forEach((entry) => {\n grid.appendChild(entry.element);\n setStyles(entry.styles);\n });\n const lazyLoadButton = lazy_load.create(lazyLoadVariables({\n ...props,\n callback: load,\n }));\n if (lazyLoadButton) {\n container.appendChild(lazyLoadButton.element);\n setStyles(lazyLoadButton.styles);\n }\n resolve();\n });\n};\nconst resultStart = (props) => {\n const { feedData, numberOfColumnsToShow = 1, numberOfRowsToStart, isLazyLoad, displayResults, getContainer, getTotalEntries, setOffset, setStyles, layoutElement, } = props;\n const container = getContainer();\n const totalEntries = getTotalEntries();\n const showAmount = numberOfColumnsToShow || 1 * numberOfRowsToStart;\n const message = isLazyLoad\n ? `Showing ${showAmount} of ${totalEntries} articles`\n : `Showing ${showAmount} articles`;\n layoutElement.element.setAttribute('id', display_ID_GRID_LAYOUT_CONTAINER);\n container.appendChild(layoutElement.element);\n setStyles(layoutElement.styles);\n dispatch(container, eventNames.FEED_LOADED, {\n items: feedData,\n count: feedData.length,\n total: totalEntries || feedData.length,\n });\n displayResults({ feedData });\n container.appendChild(aria_live.create({\n message,\n }));\n};\n\n;// CONCATENATED MODULE: ./source/composite/events/grid.ts\n\n\n\n\n\n\n/* harmony default export */ const events_grid = ((props) => (() => {\n const { isThemeDark, isTransparent, numberOfColumnsToShow } = props;\n const loader = macros_loader.create();\n const container = document.createElement('div');\n const setTotalEntries = (count) => (totalEntries = count);\n const setOffset = (count) => (offset = offset + count);\n const setStyles = (additonalStyles) => (styles += additonalStyles);\n const getContainer = () => container;\n const getTotalEntries = () => totalEntries;\n const getOffset = () => offset;\n const getStyles = () => styles;\n const getShadowRoot = () => shadowRoot;\n let totalEntries = 0;\n let offset = 0;\n let styles = `\n ${loader_styles}\n `;\n let shadowRoot = null;\n const helperFunctions = {\n setTotalEntries,\n setOffset,\n setStyles,\n getContainer,\n getOffset,\n getTotalEntries,\n getStyles,\n getShadowRoot,\n };\n const callback = (shadow) => {\n shadowRoot = shadow;\n };\n const displayResults = async ({ feedData }) => {\n await resultLoad({\n ...props,\n ...helperFunctions,\n displayResults,\n entries: feedData.map((entry) => web_elements_library_.Composite.card.block({\n ...data_display({ entry, isThemeDark }),\n image: standard({\n images: entry.image,\n url: entry.url,\n }),\n isAligned: false,\n isTransparent,\n })),\n });\n if (shadowRoot) {\n setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n };\n const layoutElement = gridGap({\n count: numberOfColumnsToShow,\n });\n container.appendChild(loader);\n start({\n ...props,\n ...helperFunctions,\n displayResults,\n displayResultStart: resultStart,\n displayNoResults: noResults,\n layoutElement,\n isThemeDark,\n });\n return {\n element: container,\n styles,\n events: {\n callback,\n },\n };\n})());\n\n;// CONCATENATED MODULE: ./source/composite/events/list.ts\n\n\n\n\n\n\n/* harmony default export */ const list = ((props) => (() => {\n const { isThemeDark } = props;\n const loader = macros_loader.create();\n const container = document.createElement('div');\n const setTotalEntries = (count) => (totalEntries = count);\n const setOffset = (count) => (offset = offset + count);\n const setStyles = (additonalStyles) => (styles += additonalStyles);\n const getContainer = () => container;\n const getTotalEntries = () => totalEntries;\n const getOffset = () => offset;\n const getStyles = () => styles;\n const getShadowRoot = () => shadowRoot;\n let totalEntries = 0;\n let offset = 0;\n let styles = `\n ${loader_styles}\n `;\n let shadowRoot = null;\n const helperFunctions = {\n setTotalEntries,\n setOffset,\n setStyles,\n getContainer,\n getOffset,\n getTotalEntries,\n getStyles,\n getShadowRoot,\n };\n const callback = (shadow) => {\n shadowRoot = shadow;\n };\n const displayResults = async ({ feedData }) => {\n await resultLoad({\n ...props,\n ...helperFunctions,\n displayResults,\n entries: feedData.map((entry) => web_elements_library_.Composite.card.list({\n ...data_display({ entry, isThemeDark }),\n dateSign: web_elements_library_.Atomic.events.sign({\n ...entry,\n isThemeDark,\n isLargeSize: true,\n }),\n image: standard({\n images: entry.image,\n url: entry.url,\n }),\n isAligned: false,\n })),\n });\n if (shadowRoot) {\n setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n };\n container.appendChild(loader);\n start({\n ...props,\n ...helperFunctions,\n displayResults,\n displayResultStart: resultStart,\n displayNoResults: noResults,\n layoutElement: stacked(),\n });\n return {\n element: container,\n styles,\n events: {\n callback,\n },\n };\n})());\n\n;// CONCATENATED MODULE: ./source/composite/events/slider.ts\n\nconst slider_QUERY_DATA = `\n title\n url\n startMonth: startDate @formatDateTime(format: \"M\")\n startDay: startDate @formatDateTime(format: \"d\")\n endMonth: endDate @formatDateTime(format: \"M\")\n endDay: endDate @formatDateTime(format: \"d\")\n`;\nconst slider_query = `\n query getEvents($startDate: String!, $related: [QueryArgument]) {\n entries: solspace_calendar {\n events(\n relatedTo: $related\n loadOccurrences: true\n startsAfterOrAt: $startDate\n limit: 12\n ) {\n ... on submission_Event {\n ${slider_QUERY_DATA}\n }\n }\n }\n }\n`;\n/* harmony default export */ const events_slider = ((props) => slider({\n ...props,\n query: slider_query,\n url: 'https://calendar.umd.edu/graphql',\n}));\n\n;// CONCATENATED MODULE: ./source/composite/events/index.ts\n\n\n\n\n;// CONCATENATED MODULE: ./source/composite/news/common/queries.ts\nconst ARTICLES_QUERY = `\n query getArticles($related: [QueryArgument], $relatedToAll: [QueryArgument], $limit: Int, $offset: Int, $not: [QueryArgument]) {\n entryCount(section: \"articles\", relatedTo: $related,relatedToAll: $relatedToAll)\n entries(\n section: \"articles\",\n relatedTo: $related,\n relatedToAll: $relatedToAll,\n limit: $limit,\n offset: $offset,\n id: $not\n ) {\n ... on articles_today_Entry {\n id\n title\n date: postDate\n dateFormatted: postDate @formatDateTime(format: \"M d, Y\")\n summary: genericText\n url\n image:articlesHeroImage {\n url\n ... on hero_Asset {\n id\n altText: genericText\n }\n }\n categories:categoryTodaySectionMultiple {\n title\n url\n }\n }\n }\n }\n`;\n\n;// CONCATENATED MODULE: ./source/composite/news/common/data.ts\n\n\nconst data_lazyLoadVariables = (props) => ({\n ...props,\n totalEntries: props.getTotalEntries(),\n offset: props.getOffset(),\n container: props.getContainer(),\n callback: () => fetch_load(props),\n});\nconst data_apiVariables = (props) => {\n const { isUnion, categories, getOffset, token, numberOfRowsToStart, numberOfColumnsToShow = 1, entriesToRemove, } = props;\n const obj = {\n offset: getOffset(),\n token,\n limit: numberOfRowsToStart,\n };\n if (numberOfColumnsToShow) {\n obj.limit = numberOfColumnsToShow * numberOfRowsToStart;\n }\n if (!isUnion && categories) {\n obj.relatedToAll = categories;\n }\n if (isUnion && categories) {\n obj.related = categories;\n }\n if (entriesToRemove) {\n obj.not = ['not', ...entriesToRemove];\n }\n return obj;\n};\nconst common_data_display = ({ entry, isThemeDark, }) => ({\n newsId: entry.id.toString(),\n headline: headline({\n text: entry.title,\n url: entry.url,\n }),\n text: summary({ text: entry.summary }),\n date: date({\n date: entry.date,\n dateFormatted: entry.dateFormatted,\n }),\n isThemeDark,\n});\n\n;// CONCATENATED MODULE: ./source/composite/news/common/fetch.ts\n\n\n\n\nconst fetch_ID_GRID_LAYOUT_CONTAINER = 'umd-grid-gap-layout-container';\nconst fetch_getEntries = async ({ limit, related, relatedToAll, offset, not, token, }) => {\n if (!token)\n throw new Error('Token not found');\n const graceFail = ({ message }) => {\n throw new Error(message);\n };\n const variables = {\n limit,\n related,\n relatedToAll,\n offset,\n not,\n };\n const feedData = await web_elements_library_.Utilities.network.FetchGraphQL({\n query: ARTICLES_QUERY,\n url: 'https://today.umd.edu/graphql',\n token: token,\n variables,\n });\n if (!feedData ||\n !feedData.data ||\n !feedData.data.entries ||\n feedData.message) {\n if (!feedData)\n graceFail({ message: 'Feed not found' });\n if (!feedData.data)\n graceFail({ message: 'Feed data not found' });\n if (!feedData.data.entries)\n graceFail({ message: 'Feed entries not found' });\n if (!feedData.message)\n graceFail({ message: `Feed data errors: ${feedData.message}` });\n }\n return {\n entries: feedData.data.entries,\n count: feedData.data.entryCount,\n };\n};\nconst fetch_load = async (props) => {\n const { getContainer, getOffset, displayResults, getTotalEntries } = props;\n const container = getContainer();\n const currentCount = getOffset();\n const totalEntries = getTotalEntries();\n lazy_load.remove({ container });\n macros_loader.display({ container });\n fetch_getEntries(data_apiVariables(props)).then((feedData) => {\n displayResults({ feedData: feedData.entries });\n aria_live.update({\n container,\n message: `Showing ${currentCount + feedData.entries.length} of ${totalEntries} articles`,\n });\n });\n};\nconst fetch_start = async (props) => {\n const { displayNoResults, displayResultStart, setTotalEntries } = props;\n fetch_getEntries(data_apiVariables(props)).then((feedData) => {\n const totalEntries = feedData.count;\n if (totalEntries === 0) {\n displayNoResults({ ...props });\n return;\n }\n setTotalEntries(totalEntries);\n return displayResultStart({ ...props, feedData: feedData.entries });\n });\n};\n\n;// CONCATENATED MODULE: ./source/composite/news/common/display.ts\n\n\n\n\n\nconst common_display_ID_GRID_LAYOUT_CONTAINER = 'umd-grid-gap-layout-container';\nconst display_setShadowStyles = async ({ shadowRoot, styles, }) => {\n const styleElement = document.createElement('style');\n const optimizedCss = await web_elements_library_.Utilities.styles.optimizedCss(styles);\n styleElement.textContent = optimizedCss;\n shadowRoot.appendChild(styleElement);\n};\nconst display_noResults = ({ getContainer, getStyles, getShadowRoot, setStyles, message = 'No results found', linkUrl = 'https://today.umd.edu', linkText = 'View all articles', isThemeDark, }) => {\n const container = getContainer();\n const shadowRoot = getShadowRoot();\n const noResultsContent = no_results({\n message,\n linkUrl,\n linkText,\n isThemeDark,\n });\n const ariaLiveContent = aria_live.create({\n message,\n });\n container.innerHTML = '';\n container.appendChild(noResultsContent.element);\n container.appendChild(ariaLiveContent);\n setStyles(noResultsContent.styles);\n dispatch(container, eventNames.FEED_ERROR, {\n error: 'No results found',\n message,\n });\n setTimeout(() => {\n const styles = getStyles();\n if (shadowRoot) {\n display_setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n }, 100);\n};\nconst display_resultLoad = async (props) => {\n const { entries, getContainer, setStyles, setOffset } = props;\n const container = getContainer();\n const grid = container.querySelector(`#${common_display_ID_GRID_LAYOUT_CONTAINER}`);\n macros_loader.remove({ container });\n lazy_load.remove({ container });\n setOffset(entries.length);\n return new Promise((resolve) => {\n entries.forEach((entry) => {\n grid.appendChild(entry.element);\n setStyles(entry.styles);\n });\n const lazyLoadButton = lazy_load.create(data_lazyLoadVariables({\n ...props,\n callback: fetch_load,\n }));\n if (lazyLoadButton) {\n container.appendChild(lazyLoadButton.element);\n setStyles(lazyLoadButton.styles);\n }\n resolve();\n });\n};\nconst display_resultStart = (props) => {\n const { feedData, numberOfColumnsToShow = 1, numberOfRowsToStart, isLazyLoad, displayResults, getContainer, getTotalEntries, setTotalEntries, setStyles, layoutElement, } = props;\n const container = getContainer();\n const totalEntries = getTotalEntries();\n const showAmount = numberOfColumnsToShow || 1 * numberOfRowsToStart;\n const message = isLazyLoad\n ? `Showing ${showAmount} of ${totalEntries} articles`\n : `Showing ${showAmount} articles`;\n if (totalEntries)\n setTotalEntries(totalEntries);\n layoutElement.element.setAttribute('id', common_display_ID_GRID_LAYOUT_CONTAINER);\n container.appendChild(layoutElement.element);\n setStyles(layoutElement.styles);\n dispatch(container, eventNames.FEED_LOADED, {\n items: feedData,\n count: feedData.length,\n total: totalEntries || feedData.length,\n });\n displayResults({ feedData });\n container.appendChild(aria_live.create({\n message,\n }));\n};\n\n;// CONCATENATED MODULE: ./source/composite/news/featured.ts\n\n\n\n\n\n\n\n/* harmony default export */ const featured = ((props) => (() => {\n const { isThemeDark, isLazyLoad, isLayoutReversed, isTransparent, overwriteStickyPosition, } = props;\n const loader = macros_loader.create();\n const container = document.createElement('div');\n const setTotalEntries = (count) => (totalEntries = count);\n const setOffset = (count) => (offset = offset + count);\n const setStyles = (additonalStyles) => (styles += additonalStyles);\n const getContainer = () => container;\n const getTotalEntries = () => totalEntries;\n const getOffset = () => offset;\n const getStyles = () => styles;\n const getShadowRoot = () => shadowRoot;\n let numberOfColumnsToShow = 3;\n let totalEntries = 0;\n let offset = 0;\n let styles = `\n ${loader_styles}\n `;\n let shadowRoot = null;\n const helperFunctions = {\n setTotalEntries,\n setOffset,\n setStyles,\n getContainer,\n getOffset,\n getTotalEntries,\n getStyles,\n getShadowRoot,\n };\n const callback = (shadow) => {\n shadowRoot = shadow;\n };\n const setPosition = (position) => {\n const overlayElement = container.querySelector(`.${web_styles_library_.element.composite.card.overlay.image.tint.className}`);\n if (overlayElement)\n overlayElement.style.top = `${position}px`;\n };\n const layoutElement = gridGap({ count: 2 });\n const displayGridOffsetResults = async ({ feedData }) => {\n let entries = [];\n if (feedData.length >= 2) {\n const offsetLayout = gridOffsetGap({\n count: 2,\n isLayoutReversed,\n overwriteStickyPosition,\n });\n const firstEntry = feedData[0];\n const overlayCard = web_elements_library_.Composite.card.overlay.image({\n ...common_data_display({ entry: firstEntry }),\n backgroundImage: standard({\n images: firstEntry.image,\n url: firstEntry.url,\n }),\n });\n offsetLayout.element.appendChild(overlayCard.element);\n offsetLayout.element.appendChild(layoutElement.element);\n container.appendChild(offsetLayout.element);\n setStyles(offsetLayout.styles);\n setStyles(overlayCard.styles);\n entries = feedData.slice(1, 3).map((entry) => web_elements_library_.Composite.card.block({\n ...common_data_display({ entry, isThemeDark }),\n image: standard({\n images: entry.image,\n url: entry.url,\n }),\n isAligned: true,\n isTransparent,\n }));\n }\n else {\n entries = feedData.map((entry) => web_elements_library_.Composite.card.overlay.image({\n ...common_data_display({ entry, isThemeDark }),\n backgroundImage: standard({\n images: entry.image,\n url: entry.url,\n }),\n }));\n container.appendChild(layoutElement.element);\n }\n await display_resultLoad({\n ...props,\n ...helperFunctions,\n numberOfColumnsToShow: 2,\n displayResults,\n entries,\n });\n if (shadowRoot) {\n display_setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n };\n const displayResults = async ({ feedData }) => {\n const entries = feedData.map((entry) => web_elements_library_.Composite.card.block({\n ...common_data_display({ entry, isThemeDark }),\n image: standard({\n images: entry.image,\n url: entry.url,\n }),\n isAligned: true,\n isTransparent,\n }));\n await display_resultLoad({\n ...props,\n ...helperFunctions,\n numberOfColumnsToShow: 2,\n displayResults,\n entries,\n });\n if (shadowRoot) {\n display_setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n };\n const resultStart = (props) => {\n const { feedData, setOffset, getOffset } = props;\n const totalEntries = getTotalEntries();\n const showAmount = 3;\n const message = isLazyLoad\n ? `Showing ${showAmount} of ${totalEntries} articles`\n : `Showing ${showAmount} articles`;\n setOffset(getOffset() + 1);\n if (totalEntries)\n setTotalEntries(totalEntries);\n layoutElement.element.setAttribute('id', common_display_ID_GRID_LAYOUT_CONTAINER);\n setStyles(layoutElement.styles);\n displayGridOffsetResults({ feedData });\n container.appendChild(aria_live.create({\n message,\n }));\n };\n container.appendChild(loader);\n fetch_start({\n ...props,\n ...helperFunctions,\n numberOfColumnsToShow,\n displayResults,\n displayResultStart: resultStart,\n displayNoResults: display_noResults,\n layoutElement,\n });\n return {\n element: container,\n styles,\n events: {\n callback,\n setPosition,\n },\n };\n})());\n\n;// CONCATENATED MODULE: ./source/composite/news/grid.ts\n\n\n\n\n\n\n/* harmony default export */ const news_grid = ((props) => (() => {\n const { isThemeDark, isTransparent, numberOfColumnsToShow, isTypeOverlay } = props;\n const loader = macros_loader.create();\n const container = document.createElement('div');\n const setTotalEntries = (count) => (totalEntries = count);\n const setOffset = (count) => (offset = offset + count);\n const setStyles = (additonalStyles) => (styles += additonalStyles);\n const getContainer = () => container;\n const getTotalEntries = () => totalEntries;\n const getOffset = () => offset;\n const getStyles = () => styles;\n const getShadowRoot = () => shadowRoot;\n let totalEntries = 0;\n let offset = 0;\n let styles = `\n ${loader_styles}\n `;\n let shadowRoot = null;\n const helperFunctions = {\n setTotalEntries,\n setOffset,\n setStyles,\n getContainer,\n getOffset,\n getTotalEntries,\n getStyles,\n getShadowRoot,\n };\n const callback = (shadow) => {\n shadowRoot = shadow;\n };\n const displayResults = async ({ feedData }) => {\n const entries = feedData.map((entry) => {\n if (isTypeOverlay) {\n return web_elements_library_.Composite.card.overlay.image({\n ...common_data_display({ entry }),\n backgroundImage: standard({\n images: entry.image,\n url: entry.url,\n }),\n });\n }\n return web_elements_library_.Composite.card.block({\n ...common_data_display({ entry, isThemeDark }),\n image: standard({\n images: entry.image,\n url: entry.url,\n }),\n isAligned: true,\n isTransparent,\n });\n });\n await display_resultLoad({\n ...props,\n ...helperFunctions,\n displayResults,\n entries,\n });\n if (shadowRoot) {\n display_setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n };\n const layoutElement = isTypeOverlay\n ? grid({ count: numberOfColumnsToShow })\n : gridGap({ count: numberOfColumnsToShow });\n container.appendChild(loader);\n fetch_start({\n ...props,\n ...helperFunctions,\n displayResults,\n displayResultStart: display_resultStart,\n displayNoResults: display_noResults,\n layoutElement,\n isThemeDark,\n });\n return {\n element: container,\n styles,\n events: {\n callback,\n },\n };\n})());\n\n;// CONCATENATED MODULE: ./source/composite/news/list.ts\n\n\n\n\n\n\n/* harmony default export */ const news_list = ((props) => (() => {\n const { isThemeDark } = props;\n const loader = macros_loader.create();\n const container = document.createElement('div');\n const setTotalEntries = (count) => (totalEntries = count);\n const setOffset = (count) => (offset = offset + count);\n const setStyles = (additonalStyles) => (styles += additonalStyles);\n const getContainer = () => container;\n const getTotalEntries = () => totalEntries;\n const getOffset = () => offset;\n const getStyles = () => styles;\n const getShadowRoot = () => shadowRoot;\n let totalEntries = 0;\n let offset = 0;\n let styles = `\n ${loader_styles}\n `;\n let shadowRoot = null;\n const helperFunctions = {\n setTotalEntries,\n setOffset,\n setStyles,\n getContainer,\n getOffset,\n getTotalEntries,\n getStyles,\n getShadowRoot,\n };\n const callback = (shadow) => {\n shadowRoot = shadow;\n };\n const displayResults = async ({ feedData }) => {\n await display_resultLoad({\n ...props,\n ...helperFunctions,\n displayResults,\n entries: feedData.map((entry) => web_elements_library_.Composite.card.list({\n ...common_data_display({ entry, isThemeDark }),\n image: standard({\n images: entry.image,\n url: entry.url,\n }),\n isAligned: false,\n })),\n });\n if (shadowRoot) {\n display_setShadowStyles({\n shadowRoot,\n styles,\n });\n }\n };\n container.appendChild(loader);\n fetch_start({\n ...props,\n ...helperFunctions,\n displayResults,\n displayResultStart: display_resultStart,\n displayNoResults: display_noResults,\n layoutElement: stacked(),\n });\n return {\n element: container,\n styles,\n events: {\n callback,\n },\n };\n})());\n\n;// CONCATENATED MODULE: ./source/composite/news/index.ts\n\n\n\n\n;// CONCATENATED MODULE: ./source/index.ts\n\n\n\n\n\n//# sourceURL=webpack://@universityofmaryland/web-feeds-library/./source/index.ts_+_30_modules?")},149:e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__149__},708:e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__708__}},__webpack_module_cache__={};function __webpack_require__(e){var n=__webpack_module_cache__[e];if(void 0!==n)return n.exports;var t=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](t,t.exports,__webpack_require__),t.exports}__webpack_require__.d=(e,n)=>{for(var t in n)__webpack_require__.o(n,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},__webpack_require__.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__=__webpack_require__(572);return __webpack_exports__})()));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@universityofmaryland/web-feeds-library",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "UMD Feed Elements",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",