@universityofmaryland/web-components-library 1.14.10 → 1.14.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{_event-BzvNLqqf.js → _event-zkKU3M5w.js} +3 -3
- package/dist/{_event-BzvNLqqf.js.map → _event-zkKU3M5w.js.map} +1 -1
- package/dist/api/pathway/image.d.ts.map +1 -1
- package/dist/cdn.js +53 -53
- package/dist/cdn.js.map +1 -1
- package/dist/{chevron-scroll-OMtKW5S9.js → chevron-scroll-BZtdKUuJ.js} +3 -3
- package/dist/{chevron-scroll-OMtKW5S9.js.map → chevron-scroll-BZtdKUuJ.js.map} +1 -1
- package/dist/components/accordion.js +1 -1
- package/dist/components/actions.js +1 -1
- package/dist/components/alert.js +1 -1
- package/dist/components/brand.js +1 -1
- package/dist/components/card.js +1 -1
- package/dist/components/carousel.js +1 -1
- package/dist/components/feed.js +1 -1
- package/dist/components/footer.js +1 -1
- package/dist/components/hero.js +1 -1
- package/dist/components/layout.js +1 -1
- package/dist/components/media.js +1 -1
- package/dist/components/navigation.js +1 -1
- package/dist/components/pathway.js +1 -1
- package/dist/components/person.js +1 -1
- package/dist/components/quote.js +1 -1
- package/dist/components/slider.js +1 -1
- package/dist/components/social.js +1 -1
- package/dist/components/stat.js +1 -1
- package/dist/components/tab.js +1 -1
- package/dist/components/text.js +1 -1
- package/dist/content.js +1 -1
- package/dist/{display-wE0il7rr.js → display-BAWPSZWk.js} +3 -3
- package/dist/{display-wE0il7rr.js.map → display-BAWPSZWk.js.map} +1 -1
- package/dist/{display-DECqmVEZ.js → display-DvhD-oDO.js} +3 -3
- package/dist/{display-DECqmVEZ.js.map → display-DvhD-oDO.js.map} +1 -1
- package/dist/{display-D2GEPqCW.js → display-HZowWri1.js} +3 -3
- package/dist/{display-D2GEPqCW.js.map → display-HZowWri1.js.map} +1 -1
- package/dist/{display-BCa3axfI.js → display-yOrx8Qu7.js} +3 -3
- package/dist/{display-BCa3axfI.js.map → display-yOrx8Qu7.js.map} +1 -1
- package/dist/{event-lockup-DQgwp3gO.js → event-lockup-DJPiglgR.js} +3 -3
- package/dist/{event-lockup-DQgwp3gO.js.map → event-lockup-DJPiglgR.js.map} +1 -1
- package/dist/{feed-BSntlEBA.js → feed-D5nqCXw5.js} +3 -3
- package/dist/{feed-BSntlEBA.js.map → feed-D5nqCXw5.js.map} +1 -1
- package/dist/feed.js +1 -1
- package/dist/{gif-DFmy3K6d.js → gif-DcCErswK.js} +3 -3
- package/dist/{gif-DFmy3K6d.js.map → gif-DcCErswK.js.map} +1 -1
- package/dist/{hero-DJY4qxON.js → hero-Bn4rdy_N.js} +3 -3
- package/dist/{hero-DJY4qxON.js.map → hero-Bn4rdy_N.js.map} +1 -1
- package/dist/{highlight-DHa9w3Pn.js → highlight-C3vD7SBd.js} +44 -41
- package/dist/highlight-C3vD7SBd.js.map +1 -0
- package/dist/index.js +2 -2
- package/dist/interactive.js +1 -1
- package/dist/{item-CbhwHIpH.js → item-DwMV1mFy.js} +3 -3
- package/dist/{item-CbhwHIpH.js.map → item-DwMV1mFy.js.map} +1 -1
- package/dist/{list-CWGH3XBG.js → list-Dwa6U7aH.js} +3 -3
- package/dist/{list-CWGH3XBG.js.map → list-Dwa6U7aH.js.map} +1 -1
- package/dist/{loader-xwmpwCXk.js → loader-8wYd7fUZ.js} +23 -23
- package/dist/{loader-xwmpwCXk.js.map → loader-8wYd7fUZ.js.map} +1 -1
- package/dist/{minimal-DxGUDvv6.js → minimal-DPc0ZoRw.js} +3 -3
- package/dist/{minimal-DxGUDvv6.js.map → minimal-DPc0ZoRw.js.map} +1 -1
- package/dist/model/attributes/checks.d.ts.map +1 -1
- package/dist/{options-BvmHmwsE.js → options-CZuC7PDp.js} +3 -3
- package/dist/{options-BvmHmwsE.js.map → options-CZuC7PDp.js.map} +1 -1
- package/dist/shared/{model-4-WQm2Le.js → model-CHS3WnCo.js} +112 -118
- package/dist/shared/model-CHS3WnCo.js.map +1 -0
- package/dist/shared/{utilities-B_sPVa-m.js → utilities-CZHe-tKs.js} +2 -2
- package/dist/shared/{utilities-B_sPVa-m.js.map → utilities-CZHe-tKs.js.map} +1 -1
- package/dist/{sharing-jgM675YU.js → sharing--wGjj16l.js} +3 -3
- package/dist/{sharing-jgM675YU.js.map → sharing--wGjj16l.js.map} +1 -1
- package/dist/{site-DtjJCbAC.js → site-CpSb21QB.js} +3 -3
- package/dist/{site-DtjJCbAC.js.map → site-CpSb21QB.js.map} +1 -1
- package/dist/{sticky-OTUETMNA.js → sticky-CMFVqgPc.js} +3 -3
- package/dist/{sticky-OTUETMNA.js.map → sticky-CMFVqgPc.js.map} +1 -1
- package/dist/{sticky-columns-BZWi9zSi.js → sticky-columns-DlAAdaT4.js} +3 -3
- package/dist/{sticky-columns-BZWi9zSi.js.map → sticky-columns-DlAAdaT4.js.map} +1 -1
- package/dist/structural.js +1 -1
- package/dist/{video-n1zTWSI8.js → video-Cm_iBOTt.js} +4 -4
- package/dist/{video-n1zTWSI8.js.map → video-Cm_iBOTt.js.map} +1 -1
- package/dist/{wide-CoHOWBGB.js → wide-omTQQ6Wr.js} +3 -3
- package/dist/{wide-CoHOWBGB.js.map → wide-omTQQ6Wr.js.map} +1 -1
- package/package.json +1 -1
- package/dist/highlight-DHa9w3Pn.js.map +0 -1
- package/dist/shared/model-4-WQm2Le.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-CHS3WnCo.js","sources":["../../source/model/attributes/names.ts","../../source/model/attributes/values.ts","../../source/model/attributes/handler.ts","../../source/model/attributes/checks.ts","../../source/model/model/index.ts","../../source/model/slots/mapping.ts","../../source/model/slots/create.ts","../../source/model/slots/element.ts","../../source/model/slots/index.ts"],"sourcesContent":["/**\n * Attribute name constants organized by category.\n *\n * Single-value attributes use a 'default' property for consistency:\n * - display.default = 'data-display'\n * - theme.default = 'data-theme'\n *\n * Multi-value attributes use descriptive property names:\n * - visual.size = 'data-visual-size'\n * - layout.HIDDEN = 'data-layout-hidden'\n */\n\nconst decoration = {\n line: 'data-decoration-line',\n};\n\nconst display = {\n default: 'data-display',\n};\n\nconst feature = {\n animation: 'data-animation',\n lazyLoad: 'data-lazy-load',\n imageExpand: 'data-image-expand',\n};\n\nconst feed = {\n type: 'data-feed-type',\n};\n\nconst information = {\n admissions: 'data-admissions',\n alertUrl: 'data-alert-url',\n events: 'data-events',\n filterIds: 'data-filter-group-ids',\n removeIds: 'data-remove-entry-ids',\n gift: 'data-gift',\n news: 'data-news',\n schools: 'data-schools',\n search: 'data-search',\n searchType: 'data-search-type',\n title: 'data-title',\n token: 'data-token',\n url: 'data-url',\n};\n\nconst layout = {\n alertOff: 'data-alert-off',\n alignment: 'data-layout-alignment',\n columnCount: 'data-layout-column-count',\n fixed: 'data-layout-fixed',\n height: 'data-layout-height',\n hidden: 'data-layout-hidden',\n imageScaled: 'data-layout-image-scaled',\n imagePosition: 'data-layout-image-position',\n interior: 'data-layout-interior',\n lock: 'data-layout-lock',\n position: 'data-layout-position',\n reverse: 'data-layout-reverse',\n rowCount: 'data-layout-row-count',\n spaceHorizontal: 'data-layout-space-horizontal',\n text: 'data-layout-text',\n};\n\nconst sharing = {\n email: 'data-email',\n print: 'data-print',\n};\n\nconst social = {\n facebook: 'data-facebook',\n twitter: 'data-twitter',\n};\n\nconst theme = {\n default: 'data-theme',\n};\n\nconst visual = {\n bordered: 'data-visual-bordered',\n imageAligned: 'data-visual-image-aligned',\n icon: 'data-visual-icon',\n iconSeal: 'data-visual-icon-seal',\n hiddenDays: 'data-days-to-hide',\n open: 'data-visual-open',\n play: 'data-visual-play',\n size: 'data-visual-size',\n time: 'data-visual-time',\n transparent: 'data-visual-transparent',\n};\n\n// Deprecated\n\nconst deprecated = {\n feature: {\n FULLSCREEN: 'option-full-screen',\n SHOW_TIME: 'show-time',\n },\n display: {\n DISPLAY_SIZE: 'size',\n DISPLAY_TYPE: 'display-type',\n DISPLAY: 'display',\n },\n feed: {\n FEED_CATEGORIES: 'categories',\n FEED_COLUMN_COUNT: 'show-count',\n FEED_LAZY_LOAD: 'lazyload',\n FEED_NOT_ENTRIES: 'not',\n FEED_ROW_COUNT: 'row-count',\n FEED_TOKEN: 'token',\n FEED_UNION: 'union',\n },\n option: {\n OPTIONAL_HAS_LINE: 'has-line',\n OPTIONAL_HAS_SEPARATOR: 'include-separator',\n OPTIONAL_STICKY_FIRST: 'isStickyFirst',\n },\n layout: {\n DEFAULT: 'layout',\n LAYOUT_FIXED: 'fixed',\n LAYOUT_ALIGNMENT: 'alignment',\n LAYOUT_IMAGE_POSITION: 'image-position',\n LAYOUT_IMAGE_SCALED: 'image-scaled',\n LAYOUT_STICKY_TOP: 'position-top',\n },\n state: {\n RESIZE: 'resize',\n STATE_DEPRECATD: 'state',\n STATE: 'data-state',\n },\n theme: {\n THEME_DEPRECATD: 'theme',\n },\n type: {\n TYPE: 'type',\n },\n visual: {\n VISUAL_ALIGN: 'aligned',\n VISUAL_BORDER: 'border',\n VISUAL_DAYS_TO_HIDE: 'days-to-hide',\n VISUAL_HAS_LOGO: 'hasLogo',\n VISUAL_ICON: 'icon',\n VISUAL_TRANSPARENT: 'transparent',\n VISUAL_QUOTE: 'quote',\n VISUAL_TEXT_CENTER: 'text-center',\n VISUAL_STYLE_PROPS: 'styleProps',\n },\n};\n\nconst AttributeNames = {\n decoration,\n display,\n feature,\n feed,\n information,\n layout,\n sharing,\n social,\n theme,\n visual,\n deprecated,\n} as const;\n\nexport default AttributeNames;\n","// Values\n\nconst data = {\n type: {\n academic: 'academic',\n },\n};\n\nconst display = {\n block: 'block',\n feature: 'feature',\n featured: 'featured',\n hero: 'hero',\n image: 'image',\n list: 'list',\n minimal: 'minimal',\n overlay: 'overlay',\n promo: 'promo',\n short: 'short',\n stacked: 'stacked',\n standard: 'standard',\n statement: 'statement',\n sticky: 'sticky',\n tabular: 'tabular',\n};\n\nconst layout = {\n center: 'center',\n defaultCentered: 'default-centered',\n defaultInteriorCentered: 'default-interior-centered',\n defaultInterior: 'default-interior',\n fixed: 'fixed',\n fullImage: 'full-image',\n full: 'full',\n large: 'large',\n small: 'small',\n left: 'left',\n right: 'right',\n stackedInterior: 'stacked-interior',\n};\n\nconst search = {\n domain: 'domain',\n};\n\nconst size = {\n NORMAL: 'normal',\n LARGE: 'large',\n};\n\nconst state = {\n CLOSED: 'closed',\n FALSE: 'false',\n OPENED: 'open',\n TRUE: 'true',\n};\n\nconst theme = {\n DARK: 'dark',\n GOLD: 'gold',\n LIGHT: 'light',\n MARYLAND: 'maryland',\n};\n\nconst type = {\n OUTLINE: 'outline',\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n};\n\nconst AttributeValues = {\n data,\n display,\n layout,\n search,\n size,\n state,\n theme,\n type,\n};\n\nexport default AttributeValues;\n","import AttributeNames from './names';\nimport AttributeValues from './values';\n\n/**\n * Attribute Handler System\n *\n * Provides reactive attribute observation for web components.\n * Handlers watch for specific attribute changes and execute callbacks.\n *\n * ## Handler Types:\n *\n * 1. **State Transitions**: Watch for specific value changes\n * - e.g., state changing from \"closed\" to \"open\"\n *\n * 2. **Boolean Triggers**: Watch for true/false changes\n * - e.g., resize=\"true\" triggers recalculation\n *\n * 3. **Value Changes**: Watch for any value change\n * - e.g., data-layout-position updates\n *\n * ## Usage Example:\n * ```typescript\n * const attributes = Attributes.handler.combine(\n * Attributes.handler.observe.resize({\n * callback: (element) => element.events?.recalculate()\n * }),\n * Attributes.handler.observe.visuallyOpen({\n * callback: (element) => element.events?.open({ hasAnimation: true })\n * })\n * );\n * ```\n */\n/**\n * Reference to an element with optional event handlers\n */\nexport interface AttributeElementRef {\n /** The HTML element being observed */\n element: HTMLElement;\n /** Optional event handlers attached to the element */\n events?: Record<string, Function>;\n}\n\n/**\n * Callback function type for attribute handlers\n */\nexport type AttributeCallback = (arg: AttributeElementRef, arg2?: any) => void;\n\n/**\n * Configuration for an attribute handler\n */\nexport interface AttributeHandlerConfig {\n /** The attribute name to observe */\n name: string;\n /** Handler function called when the attribute changes */\n handler: (\n ref: AttributeElementRef,\n oldValue: string | null,\n newValue: string | null,\n ) => void;\n}\n\n/**\n * Properties for creating attribute handlers\n */\nexport interface AttributeHandlerProps {\n /** Callback function to execute when attribute changes */\n callback: AttributeCallback;\n /** Optional attribute name override */\n name?: string;\n}\n\n/**\n * Combines multiple attribute handlers for the same attribute name.\n * When multiple handlers target the same attribute, they execute in sequence.\n *\n * @param configs - Array of attribute handler configurations\n * @returns Combined handler configurations\n *\n * @example\n * ```typescript\n * const handlers = combine(\n * handler1, // First to execute\n * handler2 // Second to execute\n * );\n * ```\n */\nconst combine = (\n ...configs: AttributeHandlerConfig[]\n): AttributeHandlerConfig[] => {\n const handlerMap = new Map<\n string,\n ((\n ref: AttributeElementRef,\n oldValue: string | null,\n newValue: string | null,\n ) => void)[]\n >();\n\n configs.forEach((config) => {\n const handlers = handlerMap.get(config.name) || [];\n handlers.push(config.handler);\n handlerMap.set(config.name, handlers);\n });\n\n return Array.from(handlerMap.entries()).map(([name, handlers]) => ({\n name,\n handler: (\n ref: AttributeElementRef,\n oldValue: string | null,\n newValue: string | null,\n ) => {\n handlers.forEach((handler) => handler(ref, oldValue, newValue));\n },\n }));\n};\n\n/**\n * Observes the 'resize' attribute.\n * Triggers callback when resize=\"true\" and dispatches component:resize event.\n * Commonly used to recalculate component dimensions.\n */\nconst resize = ({\n callback,\n name,\n}: AttributeHandlerProps): AttributeHandlerConfig => ({\n name: name || AttributeNames.deprecated.state.RESIZE,\n handler: (ref, _, newValue) => {\n if (newValue === AttributeValues.state.TRUE) {\n const element = ref.element;\n\n // Capture dimensions before resize\n const previousSize = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n };\n\n // Execute resize callback\n callback(ref);\n\n // Dispatch resize event after callback with updated dimensions\n setTimeout(() => {\n const currentSize = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n };\n\n element.dispatchEvent(\n new CustomEvent('component:resize', {\n detail: {\n tagName: element.tagName.toLowerCase(),\n element,\n timestamp: Date.now(),\n previousSize,\n currentSize,\n source: 'attribute',\n },\n bubbles: true,\n composed: true,\n }),\n );\n }, 0);\n }\n },\n});\n\n/**\n * @deprecated Use visuallyOpen instead\n * Observes 'state' attribute transition from \"closed\" to \"open\".\n */\nconst stateOpen = ({\n callback,\n name,\n}: AttributeHandlerProps): AttributeHandlerConfig => ({\n name: name || AttributeNames.deprecated.state.STATE,\n handler: (ref, oldValue, newValue) => {\n if (\n newValue === AttributeValues.state.OPENED &&\n oldValue === AttributeValues.state.CLOSED\n ) {\n callback(ref);\n }\n },\n});\n\n/**\n * @deprecated Use visuallyClosed instead\n * Observes 'state' attribute transition from \"open\" to \"closed\".\n */\nconst stateClosed = ({\n callback,\n name,\n}: AttributeHandlerProps): AttributeHandlerConfig => ({\n name: name || AttributeNames.deprecated.state.STATE,\n handler: (ref, oldValue, newValue) => {\n if (\n newValue === AttributeValues.state.CLOSED &&\n oldValue === AttributeValues.state.OPENED\n ) {\n callback(ref);\n }\n },\n});\n\n/**\n * Observes 'data-visual-open' attribute.\n * Triggers callback when changing from \"true\" to \"false\".\n * Used for closing animations and transitions.\n */\nconst visuallyClosed = ({\n callback,\n name,\n}: AttributeHandlerProps): AttributeHandlerConfig => ({\n name: name || AttributeNames.visual.open,\n handler: (ref, oldValue, newValue) => {\n if (\n newValue === AttributeValues.state.FALSE &&\n oldValue === AttributeValues.state.TRUE\n ) {\n callback(ref);\n }\n },\n});\n\nconst visuallyHide = ({\n callback,\n name,\n}: AttributeHandlerProps): AttributeHandlerConfig => ({\n name: name || AttributeNames.layout.hidden,\n handler: (ref, oldValue, newValue) => {\n if (\n newValue === AttributeValues.state.TRUE &&\n oldValue === AttributeValues.state.FALSE\n ) {\n callback(ref);\n }\n },\n});\n\nconst visuallyOpen = ({\n callback,\n name,\n}: AttributeHandlerProps): AttributeHandlerConfig => ({\n name: name || AttributeNames.visual.open,\n handler: (ref, oldValue, newValue) => {\n if (\n newValue === AttributeValues.state.TRUE &&\n oldValue === AttributeValues.state.FALSE\n ) {\n callback(ref);\n }\n },\n});\n\nconst visuallyPosition = ({\n callback,\n name,\n}: AttributeHandlerProps): AttributeHandlerConfig => ({\n name: name || AttributeNames.layout.position,\n handler: (ref, oldValue, newValue) => {\n if (newValue !== oldValue) {\n const top = newValue ? parseInt(newValue) : null;\n if (top) {\n callback(ref, top);\n } else {\n callback(ref);\n }\n }\n },\n});\n\nconst visuallyShow = ({\n callback,\n name,\n}: AttributeHandlerProps): AttributeHandlerConfig => ({\n name: name || AttributeNames.layout.hidden,\n handler: (ref, oldValue, newValue) => {\n if (\n newValue === AttributeValues.state.FALSE &&\n oldValue === AttributeValues.state.TRUE\n ) {\n callback(ref);\n }\n },\n});\n\nconst observe = {\n resize,\n stateOpen,\n stateClosed,\n visuallyHide,\n visuallyOpen,\n visuallyClosed,\n visuallyPosition,\n visuallyShow,\n};\n\n/**\n * Common attribute handler combinations for standard component behaviors.\n * These pre-configured handlers simplify component implementation.\n */\nconst common = {\n /**\n * Resize observer for responsive components\n */\n resize: (callback: (element: AttributeElementRef) => void) =>\n resize({ callback }),\n\n /**\n * Visual show/hide handlers for modals and overlays\n */\n visualShowHide: (options: {\n onShow?: (element: AttributeElementRef) => void;\n onHide?: (element: AttributeElementRef) => void;\n }) =>\n combine(\n ...(options.onShow\n ? [\n visuallyShow({\n callback: options.onShow,\n }),\n ]\n : []),\n ...(options.onHide\n ? [\n visuallyHide({\n callback: options.onHide,\n }),\n ]\n : []),\n ),\n\n /**\n * Visual open/close handlers for expandable components\n */\n visualToggle: (options: {\n onOpen?: (element: AttributeElementRef) => void;\n onClose?: (element: AttributeElementRef) => void;\n }) =>\n combine(\n ...(options.onOpen\n ? [\n visuallyOpen({\n callback: options.onOpen,\n }),\n ]\n : []),\n ...(options.onClose\n ? [\n visuallyClosed({\n callback: options.onClose,\n }),\n ]\n : []),\n ),\n\n /**\n * Standard accordion handlers with open/close transitions\n */\n accordion: () =>\n combine(\n resize({\n callback: (element) => element.events?.open({ hasAnimation: false }),\n }),\n visuallyOpen({\n callback: (element) => element.events?.open({ hasAnimation: true }),\n }),\n visuallyClosed({\n callback: (element) => element.events?.close({ hasAnimation: true }),\n }),\n // Deprecated handlers for backwards compatibility\n stateClosed({\n callback: (element) => element.events?.close({ hasAnimation: true }),\n }),\n stateOpen({\n callback: (element) => element.events?.open({ hasAnimation: true }),\n }),\n ),\n};\n\n/**\n * @deprecated Use Attributes.handler.common instead\n */\nexport const CommonAttributeHandlers = common;\n\nexport default { combine, observe, common };\n// Types are now exported directly, not through namespace\n","/**\n * Attribute Check Utilities\n *\n * Provides a comprehensive set of functions to check attribute states on HTML elements.\n * These utilities form the foundation of the component attribute system.\n *\n * ## Function Categories:\n *\n * 1. **isTheme**: Theme-related checks (dark, light, gold, maryland)\n * 2. **isVisual**: Visual state checks (aligned, bordered, transparent, etc.)\n * 3. **isDisplay**: Display mode checks (feature, list, promo, etc.)\n * 4. **isLayout**: Layout configuration checks (fixed, hidden, position)\n * 5. **isInfo**: Content type checks (admissions, events, news, etc.)\n * 6. **includesFeature**: Feature flag checks (animation, lazyLoad, etc.)\n * 7. **getValue**: Attribute value getters (url, title, styleProps)\n *\n * ## Naming Convention:\n * - `is*` functions return boolean values\n * - `includes*` functions check for feature presence\n * - `getValue*` functions return string values\n *\n * ## Deprecation Handling:\n * Many functions handle both current (data-*) and deprecated attribute names,\n * logging warnings when deprecated attributes are used.\n */\nimport * as Styles from '@universityofmaryland/web-styles-library';\nimport AttributeNames from './names';\nimport AttributesValues from './values';\n\n// Types\n/**\n * Properties for attribute checking functions\n */\ninterface AttributeElementProps {\n /** The HTML element to check attributes on */\n element: HTMLElement;\n /** Default value to return if attribute is not found */\n defaultValue?: boolean;\n}\n\ninterface AttributeProps extends AttributeElementProps {\n attributeName: string;\n attributeValue: string;\n}\n\ntype AttributeNullProps = Omit<AttributeProps, 'attributeValue'>;\n\ninterface DeprecatedAttributeProps extends AttributeElementProps {\n attributeNameOld: string;\n attributeNameNew: string;\n attributeValue: string;\n}\n\ninterface ValueGetterConfig {\n currentName: string;\n deprecatedName?: string;\n}\n\n// Core attribute check utilities\n\n/**\n * Checks if an attribute equals a specific value.\n * Returns defaultValue if attribute is not present.\n * Special handling: 'false' string always returns false.\n *\n * @internal\n */\nconst isAttributeTrue = ({\n element,\n attributeName,\n attributeValue,\n defaultValue = false,\n}: AttributeProps): boolean => {\n const value = element.getAttribute(attributeName);\n\n if (value === null) {\n return defaultValue;\n }\n\n if (value === 'false') {\n return false;\n }\n\n return value === attributeValue;\n};\n\nconst isAttributeNotNull = ({\n element,\n attributeName,\n}: AttributeNullProps): boolean => {\n const value = element.getAttribute(attributeName);\n\n if (value === 'true') return true;\n if (value === 'false') return false;\n\n return value !== null;\n};\n\nconst depcreationWarning = ({\n element,\n attributeNameOld,\n attributeNameNew,\n}: {\n element: HTMLElement;\n attributeNameOld: string;\n attributeNameNew: string;\n}) => {\n console.warn(\n `UMD Web Component: ${element.nodeName} - Attribute \"${attributeNameOld}\" is deprecated. ` +\n `Use \"${attributeNameNew}\" instead. This attribute will be removed in version 2.0.`,\n );\n};\n\nconst checkDeprecatedAttribute = (props: DeprecatedAttributeProps): boolean => {\n const {\n element,\n attributeNameOld,\n attributeNameNew,\n attributeValue,\n ...rest\n } = props;\n const isDeprecatedUsed = isAttributeTrue({\n ...rest,\n element,\n attributeName: attributeNameOld,\n attributeValue,\n });\n\n if (isDeprecatedUsed) {\n depcreationWarning(props);\n return true;\n }\n\n return false;\n};\n\nconst createAttributeCheck =\n (attributeName: string, attributeValue: string, defaultValue = false) =>\n (props: AttributeElementProps): boolean =>\n isAttributeTrue({\n ...props,\n attributeName,\n attributeValue,\n defaultValue,\n });\n\nconst createValueGetter = ({\n currentName,\n deprecatedName,\n}: ValueGetterConfig) => {\n return ({ element }: AttributeElementProps): string | null => {\n if (deprecatedName) {\n const deprecatedValue = element.getAttribute(deprecatedName);\n if (deprecatedValue !== null) {\n depcreationWarning({\n element,\n attributeNameOld: deprecatedName,\n attributeNameNew: currentName,\n });\n\n return deprecatedValue;\n }\n }\n\n const value = element.getAttribute(currentName);\n if (value !== null) {\n return value;\n }\n\n return null;\n };\n};\n\n// Value checks with null checks\nconst hasInfo = {\n gifts: (props: AttributeElementProps) =>\n isAttributeNotNull({\n ...props,\n attributeName: AttributeNames.information.gift,\n }),\n search: (props: AttributeElementProps) =>\n isAttributeNotNull({\n ...props,\n attributeName: AttributeNames.information.search,\n }),\n};\n\n// Decoration checks\nconst hasDecoration = {\n line: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.option.OPTIONAL_HAS_LINE,\n attributeNameNew: AttributeNames.decoration.line,\n attributeValue: '',\n }) ||\n isAttributeNotNull({\n ...props,\n attributeName: AttributeNames.decoration.line,\n }),\n};\n\n// Feature checks\nconst includesFeature = {\n animation: createAttributeCheck(\n AttributeNames.feature.animation,\n AttributesValues.state.TRUE,\n true,\n ),\n imageExpand: createAttributeCheck(\n AttributeNames.feature.imageExpand,\n AttributesValues.state.TRUE,\n true,\n ),\n fullScreenOption: createAttributeCheck(\n AttributeNames.deprecated.feature.FULLSCREEN,\n AttributesValues.state.TRUE,\n true,\n ),\n visualTime: createAttributeCheck(\n AttributeNames.deprecated.feature.SHOW_TIME,\n AttributesValues.state.TRUE,\n true,\n ),\n lazyLoad: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.feed.FEED_LAZY_LOAD,\n attributeNameNew: AttributeNames.feature.lazyLoad,\n attributeValue: AttributesValues.state.TRUE,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.feature.lazyLoad,\n attributeValue: AttributesValues.state.TRUE,\n }),\n} as const;\n\n// Data checks\nconst isData = {\n type: {\n academic: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.type.TYPE,\n attributeNameNew: AttributeNames.feed.type,\n attributeValue: AttributesValues.data.type.academic,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.feed.type,\n attributeValue: AttributesValues.data.type.academic,\n }),\n },\n union: createAttributeCheck(\n AttributeNames.deprecated.feed.FEED_UNION,\n AttributesValues.state.FALSE,\n true,\n ),\n} as const;\n\n// Display checks\nconst isDisplay = {\n block: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.display.DISPLAY_TYPE,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.display.block,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.display.default,\n attributeValue: AttributesValues.display.block,\n }),\n feature: createAttributeCheck(\n AttributeNames.deprecated.display.DISPLAY,\n AttributesValues.display.feature,\n ),\n featured: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.type.TYPE,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.display.featured,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.display.default,\n attributeValue: AttributesValues.display.featured,\n }),\n hero: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.type.TYPE,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.display.hero,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.display.default,\n attributeValue: AttributesValues.display.hero,\n }),\n list: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.display.DISPLAY,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.display.list,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.display.default,\n attributeValue: AttributesValues.display.list,\n }),\n outline: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.type.TYPE,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.type.OUTLINE,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.display.default,\n attributeValue: AttributesValues.type.OUTLINE,\n }),\n overlay: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.type.TYPE,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.display.overlay,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.display.default,\n attributeValue: AttributesValues.display.overlay,\n }),\n promo: createAttributeCheck(\n AttributeNames.deprecated.display.DISPLAY,\n AttributesValues.display.promo,\n ),\n primary: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.type.TYPE,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.type.PRIMARY,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.display.default,\n attributeValue: AttributesValues.type.PRIMARY,\n }),\n secondary: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.type.TYPE,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.type.SECONDARY,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.display.default,\n attributeValue: AttributesValues.type.SECONDARY,\n }),\n short: createAttributeCheck(\n AttributeNames.display.default,\n AttributesValues.display.short,\n ),\n standardCentered: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.type.TYPE,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.layout.defaultCentered,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.deprecated.type.TYPE,\n attributeValue: AttributesValues.layout.defaultCentered,\n }),\n standardInterior: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.type.TYPE,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.layout.defaultInterior,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.deprecated.type.TYPE,\n attributeValue: AttributesValues.layout.defaultInterior,\n }),\n standardInteriorCentered: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.type.TYPE,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.layout.defaultInteriorCentered,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.deprecated.type.TYPE,\n attributeValue: AttributesValues.layout.defaultInteriorCentered,\n }),\n statement: createAttributeCheck(\n AttributeNames.deprecated.display.DISPLAY,\n AttributesValues.display.statement,\n ),\n sticky: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.type.TYPE,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.display.sticky,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.display.default,\n attributeValue: AttributesValues.display.sticky,\n }),\n stacked: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.type.TYPE,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.display.stacked,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.display.default,\n attributeValue: AttributesValues.display.stacked,\n }),\n stackedInteriorDeprecated: createAttributeCheck(\n AttributeNames.deprecated.type.TYPE,\n AttributesValues.layout.stackedInterior,\n ),\n stackedInterior: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.type.TYPE,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.layout.stackedInterior,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.display.default,\n attributeValue: AttributesValues.layout.stackedInterior,\n }),\n tabular: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.display.DISPLAY,\n attributeNameNew: AttributeNames.display.default,\n attributeValue: AttributesValues.display.tabular,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.display.default,\n attributeValue: AttributesValues.display.tabular,\n }),\n} as const;\n\n// Information checks\nconst isInfo = {\n admissions: createAttributeCheck(\n AttributeNames.information.admissions,\n AttributesValues.state.TRUE,\n ),\n events: createAttributeCheck(\n AttributeNames.information.events,\n AttributesValues.state.TRUE,\n ),\n news: createAttributeCheck(\n AttributeNames.information.news,\n AttributesValues.state.TRUE,\n ),\n schools: createAttributeCheck(\n AttributeNames.information.schools,\n AttributesValues.state.TRUE,\n ),\n searchDomain: createAttributeCheck(\n AttributeNames.information.searchType,\n AttributesValues.search.domain,\n ),\n} as const;\n\n// Layout checks\nconst isLayout = {\n alertOff: createAttributeCheck(\n AttributeNames.layout.alertOff,\n AttributesValues.state.TRUE,\n ),\n alignmentRight: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.layout.LAYOUT_ALIGNMENT,\n attributeNameNew: AttributeNames.layout.alignment,\n attributeValue: AttributesValues.layout.right,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.layout.alignment,\n attributeValue: AttributesValues.layout.right,\n }),\n fixed: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.layout.LAYOUT_FIXED,\n attributeNameNew: AttributeNames.layout.fixed,\n attributeValue: '',\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.layout.fixed,\n attributeValue: AttributesValues.state.TRUE,\n }),\n fullImage: createAttributeCheck(\n AttributeNames.deprecated.type.TYPE,\n AttributesValues.layout.fullImage,\n ),\n heightSmall: (props: AttributeElementProps): boolean =>\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.layout.height,\n attributeValue: AttributesValues.layout.small,\n }),\n hidden: createAttributeCheck(\n AttributeNames.layout.hidden,\n AttributesValues.state.TRUE,\n ),\n image: createAttributeCheck(\n AttributeNames.deprecated.type.TYPE,\n AttributesValues.display.image,\n ),\n imagePositionRight: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.layout.LAYOUT_IMAGE_POSITION,\n attributeNameNew: AttributeNames.layout.imagePosition,\n attributeValue: AttributesValues.layout.right,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.layout.imagePosition,\n attributeValue: AttributesValues.layout.right,\n defaultValue: true,\n }),\n imagePositionLeft: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.layout.LAYOUT_IMAGE_POSITION,\n attributeNameNew: AttributeNames.layout.imagePosition,\n attributeValue: AttributesValues.layout.left,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.layout.imagePosition,\n attributeValue: AttributesValues.layout.left,\n defaultValue: false,\n }),\n imageScaled: (props: AttributeElementProps): boolean =>\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.layout.imageScaled,\n attributeValue: AttributesValues.state.TRUE,\n defaultValue: true,\n }),\n interior: createAttributeCheck(\n AttributeNames.layout.interior,\n AttributesValues.state.TRUE,\n ),\n lock: createAttributeCheck(\n AttributeNames.layout.lock,\n AttributesValues.state.TRUE,\n ),\n lockFull: createAttributeCheck(\n AttributeNames.layout.lock,\n AttributesValues.layout.large,\n ),\n reverse: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.layout.DEFAULT,\n attributeNameNew: AttributeNames.layout.reverse,\n attributeValue: AttributesValues.state.TRUE,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.layout.reverse,\n attributeValue: AttributesValues.state.TRUE,\n }),\n spaceHorizontalLarge: (props: AttributeElementProps): boolean =>\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.layout.spaceHorizontal,\n attributeValue: AttributesValues.layout.large,\n }),\n textCentered: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.visual.VISUAL_TEXT_CENTER,\n attributeNameNew: AttributeNames.layout.text,\n attributeValue: AttributesValues.layout.center,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.layout.text,\n attributeValue: AttributesValues.layout.center,\n }),\n} as const;\n\n// Social checks\n\nconst isSharing = {\n email: createAttributeCheck(\n AttributeNames.sharing.email,\n AttributesValues.state.TRUE,\n ),\n print: createAttributeCheck(\n AttributeNames.sharing.print,\n AttributesValues.state.TRUE,\n ),\n} as const;\n\nconst includesSharing = {\n facebook: createAttributeCheck(\n AttributeNames.social.facebook,\n AttributesValues.state.TRUE,\n true,\n ),\n twitter: createAttributeCheck(\n AttributeNames.social.twitter,\n AttributesValues.state.TRUE,\n true,\n ),\n} as const;\n\n// Theme checks\nconst isTheme = {\n dark: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.theme.THEME_DEPRECATD,\n attributeNameNew: AttributeNames.theme.default,\n attributeValue: AttributesValues.theme.DARK,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.theme.default,\n attributeValue: AttributesValues.theme.DARK,\n }),\n gold: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.theme.THEME_DEPRECATD,\n attributeNameNew: AttributeNames.theme.default,\n attributeValue: AttributesValues.theme.GOLD,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.theme.default,\n attributeValue: AttributesValues.theme.GOLD,\n }),\n light: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.theme.THEME_DEPRECATD,\n attributeNameNew: AttributeNames.theme.default,\n attributeValue: AttributesValues.theme.LIGHT,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.theme.default,\n attributeValue: AttributesValues.theme.LIGHT,\n }),\n maryland: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.theme.THEME_DEPRECATD,\n attributeNameNew: AttributeNames.theme.default,\n attributeValue: AttributesValues.theme.MARYLAND,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.theme.default,\n attributeValue: AttributesValues.theme.MARYLAND,\n }),\n} as const;\n\n// Visual checks\nconst isVisual = {\n aligned: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.visual.VISUAL_ALIGN,\n attributeNameNew: AttributeNames.visual.imageAligned,\n attributeValue: AttributesValues.state.TRUE,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.visual.imageAligned,\n attributeValue: AttributesValues.state.TRUE,\n }),\n bordered: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.visual.VISUAL_BORDER,\n attributeNameNew: AttributeNames.visual.bordered,\n attributeValue: AttributesValues.state.TRUE,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.visual.bordered,\n attributeValue: AttributesValues.state.TRUE,\n }),\n icon_seal: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.visual.VISUAL_HAS_LOGO,\n attributeNameNew: AttributeNames.visual.iconSeal,\n attributeValue: AttributesValues.state.TRUE,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.visual.iconSeal,\n attributeValue: AttributesValues.state.TRUE,\n }),\n open: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.state.STATE_DEPRECATD,\n attributeNameNew: AttributeNames.visual.open,\n attributeValue: AttributesValues.state.OPENED,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.visual.open,\n attributeValue: AttributesValues.state.TRUE,\n }),\n play: createAttributeCheck(\n AttributeNames.visual.play,\n AttributesValues.state.TRUE,\n ),\n quote: createAttributeCheck(\n AttributeNames.deprecated.visual.VISUAL_QUOTE,\n AttributesValues.state.TRUE,\n ),\n showIcon: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.visual.VISUAL_ICON,\n attributeNameNew: AttributeNames.visual.icon,\n attributeValue: AttributesValues.state.TRUE,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.visual.icon,\n attributeValue: AttributesValues.state.TRUE,\n }),\n sizeNormal: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.display.DISPLAY_SIZE,\n attributeNameNew: AttributeNames.visual.size,\n attributeValue: AttributesValues.size.NORMAL,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.visual.size,\n attributeValue: AttributesValues.size.NORMAL,\n }),\n showTime: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.feature.SHOW_TIME,\n attributeNameNew: AttributeNames.visual.time,\n attributeValue: AttributesValues.state.TRUE,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.visual.time,\n attributeValue: AttributesValues.state.TRUE,\n defaultValue: true,\n }),\n sizeLarge: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.display.DISPLAY_SIZE,\n attributeNameNew: AttributeNames.visual.size,\n attributeValue: AttributesValues.size.LARGE,\n }) ||\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.display.DISPLAY_SIZE,\n attributeNameNew: AttributeNames.visual.size,\n attributeValue: '',\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.visual.size,\n attributeValue: AttributesValues.size.LARGE,\n }),\n stickyFirst: createAttributeCheck(\n AttributeNames.deprecated.option.OPTIONAL_STICKY_FIRST,\n AttributesValues.state.TRUE,\n true,\n ),\n transparent: (props: AttributeElementProps): boolean =>\n checkDeprecatedAttribute({\n ...props,\n attributeNameOld: AttributeNames.deprecated.visual.VISUAL_TRANSPARENT,\n attributeNameNew: AttributeNames.visual.transparent,\n attributeValue: AttributesValues.state.TRUE,\n }) ||\n isAttributeTrue({\n ...props,\n attributeName: AttributeNames.visual.transparent,\n attributeValue: AttributesValues.state.TRUE,\n }),\n} as const;\n\n// Value getters\nconst getValue = {\n alertUrl: createValueGetter({\n currentName: AttributeNames.information.alertUrl,\n }),\n daysToHide: createValueGetter({\n currentName: AttributeNames.visual.hiddenDays,\n deprecatedName: AttributeNames.deprecated.visual.VISUAL_DAYS_TO_HIDE,\n }),\n feedEntryRemoveIds: createValueGetter({\n currentName: AttributeNames.information.removeIds,\n deprecatedName: AttributeNames.deprecated.feed.FEED_NOT_ENTRIES,\n }),\n feedFilterIds: createValueGetter({\n currentName: AttributeNames.information.filterIds,\n deprecatedName: AttributeNames.deprecated.feed.FEED_CATEGORIES,\n }),\n feedToken: createValueGetter({\n currentName: AttributeNames.information.token,\n deprecatedName: AttributeNames.deprecated.feed.FEED_TOKEN,\n }),\n giftUrl: createValueGetter({\n currentName: AttributeNames.information.gift,\n }),\n layoutColumnCount: createValueGetter({\n currentName: AttributeNames.layout.columnCount,\n deprecatedName: AttributeNames.deprecated.feed.FEED_COLUMN_COUNT,\n }),\n layoutLock: createValueGetter({\n currentName: AttributeNames.layout.lock,\n }),\n layoutRowCount: createValueGetter({\n currentName: AttributeNames.layout.rowCount,\n deprecatedName: AttributeNames.deprecated.feed.FEED_ROW_COUNT,\n }),\n title: createValueGetter({\n currentName: AttributeNames.information.title,\n }),\n topPosition: createValueGetter({\n currentName: AttributeNames.layout.position,\n deprecatedName: AttributeNames.deprecated.layout.LAYOUT_STICKY_TOP,\n }),\n styleProps: (props: AttributeElementProps) => {\n const cssString = createValueGetter({\n ...props,\n currentName: AttributeNames.deprecated.visual.VISUAL_STYLE_PROPS,\n });\n\n if (cssString && typeof cssString === 'string') {\n return Styles.utilities.create.jss.objectFromString(cssString);\n }\n },\n url: createValueGetter({\n currentName: AttributeNames.information.url,\n }),\n} as const;\n\n// Public API\nexport {\n hasInfo,\n hasDecoration,\n includesFeature,\n isDisplay,\n isData,\n isInfo,\n isLayout,\n isSharing,\n includesSharing,\n isTheme,\n isVisual,\n getValue,\n};\n\nexport type {\n AttributeElementProps,\n AttributeProps,\n AttributeNullProps,\n DeprecatedAttributeProps,\n};\n","/**\n * Custom Element Model System\n *\n * Provides a base class and utilities for creating web components with:\n * - Shadow DOM encapsulation\n * - Attribute observation and handling\n * - Slot validation\n * - Lifecycle management\n * - Error handling\n *\n * ## Key Features:\n *\n * 1. **Attribute Handling**: Automatic observation and callback execution\n * 2. **Slot Validation**: Required slots, deprecated warnings, element type checking\n * 3. **Lifecycle Hooks**: beforeConnect, afterConnect, onReady\n * 4. **Error Management**: Centralized error handling with custom events\n *\n * ## Usage:\n * ```typescript\n * const element = createCustomElement({\n * tagName: 'my-component',\n * slots: {\n * headline: { required: true, allowedElements: ['h2', 'h3'] },\n * content: { allowedElements: ['div', 'p'] }\n * },\n * attributes: [{\n * name: 'theme',\n * handler: (ref, oldValue, newValue) => {\n * // Handle theme change\n * }\n * }],\n * createComponent: (host) => {\n * // Create and return component\n * }\n * });\n * ```\n */\nimport StylesTemplate from '../utilities/styles';\nimport type {\n SlotConfig,\n ComponentEventDetail,\n ComponentReadyDetail,\n ComponentErrorDetail,\n ElementRef\n} from '../../_types';\n\ninterface AttributeConfig {\n name: string;\n handler: (element: ElementRef, oldValue: string, newValue: string) => void;\n}\n\ninterface SlotValidationError {\n slot: string;\n error: 'missing' | 'deprecated' | 'invalid-elements';\n message: string;\n invalidElements?: Element[];\n}\n\ninterface ComponentLifecycle {\n beforeConnect?: (ref: ElementRef, shadow: ShadowRoot) => void;\n afterConnect?: (ref: ElementRef, shadow: ShadowRoot) => void;\n onReady?: (ref: ElementRef, shadow: ShadowRoot) => void;\n}\n\ninterface ComponentConfig extends ComponentLifecycle {\n tagName: string;\n attributes?: AttributeConfig[];\n slots?: Record<string, SlotConfig>;\n createComponent: (host: HTMLElement) => ElementRef;\n}\n\n// Store the config on the constructor itself\nconst ComponentConfig = (config: ComponentConfig) => {\n return function <T extends typeof BaseComponent>(constructor: T) {\n constructor.componentConfig = config;\n return constructor;\n };\n};\n\n/**\n * Base class for all web components created by the Model system.\n * Extends HTMLElement with shadow DOM support, attribute observation,\n * slot validation, and lifecycle management.\n *\n * @internal This class is not meant to be extended directly.\n * Use `createCustomElement` to create components.\n */\nclass BaseComponent extends HTMLElement {\n static componentConfig: ComponentConfig;\n\n protected shadow: ShadowRoot;\n protected elementRef: ElementRef | null = null;\n protected config: ComponentConfig;\n\n constructor() {\n super();\n\n const constructor = this.constructor as typeof BaseComponent;\n this.config = constructor.componentConfig;\n\n if (!this.config) {\n throw new Error(\n 'Component config not found. Did you forget to use the @Component decorator?',\n );\n }\n\n this.shadow = this.attachShadow({ mode: 'open' });\n this.validateConfig();\n }\n\n static get observedAttributes(): string[] {\n return this.componentConfig?.attributes?.map((attr) => attr.name) || [];\n }\n\n connectedCallback(): void {\n try {\n this.initializeComponent();\n } catch (error) {\n this.handleError('Failed to initialize component', error);\n }\n }\n\n disconnectedCallback(): void {\n this.cleanup();\n }\n\n attributeChangedCallback(\n name: string,\n oldValue: string,\n newValue: string,\n ): void {\n if (oldValue === newValue) return;\n\n try {\n this.handleAttributeChange(name, oldValue, newValue);\n } catch (error) {\n this.handleError(`Failed to handle attribute change: ${name}`, error);\n }\n }\n\n protected initializeComponent(): void {\n try {\n this.validateSlots();\n\n const componentRef = this.config.createComponent(this);\n\n if (!componentRef || !componentRef.element) {\n throw new Error(\n 'Component creation failed: Invalid component reference',\n );\n }\n\n this.elementRef = componentRef;\n this.setupShadowDom(componentRef);\n this.afterInit();\n } catch (error) {\n this.handleError('Failed to initialize component', error);\n }\n }\n\n protected setupShadowDom(component: ElementRef): void {\n this.shadow.appendChild(\n StylesTemplate({ styles: component.styles || '' }).content.cloneNode(true),\n );\n this.shadow.appendChild(component.element);\n }\n\n protected validateConfig(): void {\n const requiredFields: (keyof ComponentConfig)[] = [\n 'tagName',\n 'createComponent',\n ];\n\n requiredFields.forEach((field) => {\n if (!this.config[field]) {\n throw new Error(`Missing required config field: ${field}`);\n }\n });\n\n if (this.config.attributes) {\n this.config.attributes.forEach((attr) => {\n if (!attr.name || !attr.handler) {\n throw new Error(\n 'Invalid attribute config: requires name and handler',\n );\n }\n });\n }\n }\n\n protected async afterInit(): Promise<void> {\n if (!this.elementRef) {\n this.handleError('Cannot initialize - missing element reference', null);\n return;\n }\n\n await this.executeLifecycleCallbacks();\n\n // Dispatch umdComponent:ready event after all lifecycle callbacks complete\n this.dispatchComponentEvent<ComponentReadyDetail>('umdComponent:ready', {\n shadowRoot: this.shadow,\n ref: this.elementRef,\n });\n }\n\n protected handleAttributeChange(\n name: string,\n oldValue: string,\n newValue: string,\n ): void {\n if (!this.elementRef) return;\n\n const handler = this.config.attributes?.find(\n (attr) => attr.name === name,\n )?.handler;\n\n if (handler) {\n handler(this.elementRef, oldValue, newValue);\n }\n }\n\n protected cleanup(): void {\n this.elementRef = null;\n }\n\n /**\n * Helper method to dispatch component events with consistent structure\n */\n protected dispatchComponentEvent<T extends ComponentEventDetail>(\n eventName: string,\n detail: Omit<T, 'tagName' | 'element' | 'timestamp'>,\n ): void {\n const fullDetail = {\n ...detail,\n tagName: this.config.tagName,\n element: this,\n timestamp: Date.now(),\n } as unknown as T;\n\n this.dispatchEvent(\n new CustomEvent<T>(eventName, {\n detail: fullDetail,\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n protected handleError(message: string, error: unknown): void {\n console.error(`[${this.config.tagName}]`, message, error);\n\n // Determine error type based on component state and message\n const errorType = this.elementRef\n ? 'runtime'\n : message.toLowerCase().includes('validation')\n ? 'validation'\n : 'initialization';\n\n this.dispatchComponentEvent<ComponentErrorDetail>('umdComponent:error', {\n type: errorType,\n message,\n details: error,\n });\n }\n\n private validateSlots(): void {\n if (!this.config.slots) return;\n\n const errors: SlotValidationError[] = [];\n\n Object.entries(this.config.slots).forEach(([name, config]) => {\n const type = name\n .replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`)\n .replace(/^-/, '');\n\n if (config.required) {\n const slotElement = this.querySelector(`[slot=\"${type}\"]`);\n if (!slotElement) {\n errors.push({\n slot: name,\n error: 'missing',\n message: `Required slot \"${type}\" is missing`,\n });\n }\n }\n\n if (config.deprecated) {\n const slotElement = this.querySelector(`[slot=\"${type}\"]`);\n if (slotElement) {\n errors.push({\n slot: name,\n error: 'deprecated',\n message: `Slot \"${type}\" is deprecated. ${config.deprecated}`,\n });\n }\n }\n\n if (config.allowedElements) {\n const slotElements = Array.from(\n this.querySelectorAll(`[slot=\"${type}\"]`),\n );\n const invalidElements = slotElements.filter(\n (element) =>\n !config.allowedElements!.includes(element.tagName.toLowerCase()),\n );\n\n if (invalidElements.length > 0) {\n errors.push({\n slot: name,\n error: 'invalid-elements',\n message: `Slot \"${type}\" contains invalid elements. Allowed: ${config.allowedElements.join(\n ', ',\n )}`,\n invalidElements,\n });\n }\n }\n });\n\n if (errors.length > 0) {\n this.handleError('Slot validation failed', errors);\n\n errors.forEach((error) => {\n console.warn(`[${this.config.tagName}]`, error.message, error);\n });\n }\n }\n\n private async executeLifecycleCallbacks(): Promise<void> {\n const lifecycleMethods = [\n 'beforeConnect',\n 'afterConnect',\n 'onReady',\n ] as const;\n\n for (const method of lifecycleMethods) {\n await this.executeCallback(method);\n }\n }\n\n private async executeCallback(name: keyof ComponentLifecycle): Promise<void> {\n const callback = this.config[name];\n\n if (!callback) {\n return;\n }\n\n try {\n await Promise.resolve(callback(this.elementRef!, this.shadow));\n } catch (error) {\n this.handleError(`Failed to execute ${name} callback`, error);\n }\n }\n\n public getRef(): ElementRef | null {\n return this.elementRef;\n }\n}\n\n/**\n * Factory function to create a custom element class.\n *\n * @param config - Component configuration including tagName, slots, attributes, and lifecycle hooks\n * @returns Custom element class that extends BaseComponent\n *\n * @example\n * ```typescript\n * export default () => {\n * Register.registerWebComponent({\n * name: tagName,\n * element: createCustomElement({\n * tagName,\n * slots,\n * attributes,\n * createComponent\n * })\n * });\n * };\n * ```\n */\nconst createCustomElement = (config: ComponentConfig): typeof BaseComponent => {\n @ComponentConfig(config)\n class Component extends BaseComponent {\n constructor() {\n super();\n }\n }\n\n return Component;\n};\n\nexport {\n createCustomElement,\n BaseComponent,\n type ComponentConfig,\n type AttributeConfig,\n};\n","type SlotName = string;\n\n// Slot Names\n\nconst actions = {\n default: 'actions',\n};\n\nconst assets = {\n image: 'image',\n images: 'images',\n video: 'video',\n featured: 'featured',\n};\n\nconst date = {\n default: 'date',\n};\n\nconst contact = {\n additional: 'additional-contact',\n address: 'address',\n email: 'email',\n location: 'location',\n phone: 'phone',\n};\n\nconst content = {\n default: 'content',\n};\n\nconst deprecated = {\n body: 'body',\n plainText: 'plain-text',\n stat: 'stat',\n wrappingText: 'wrapping-text',\n};\n\nconst eyebrows = {\n default: 'eyebrow',\n};\n\nconst headline = {\n default: 'headline',\n};\n\nconst person = {\n association: 'association',\n jobTitle: 'job-title',\n name: 'name',\n pronouns: 'pronouns',\n};\n\nconst text = {\n caption: 'caption',\n default: 'text',\n stat: 'stat',\n stats: 'stats',\n sub: 'sub-text',\n};\n\nconst social = {\n linkedin: 'linkedin',\n};\n\nconst NEEDS_CLEANUP = {\n ADDITIONAL: 'additional',\n ATTRIBUTION_SUB_TEXT: 'attribution-sub-text',\n ATTRIBUTION: 'attribution',\n BLOCKS: 'blocks',\n BREADCRUMB_COPY: 'breadcrumb-copy',\n BREADCRUMB: 'breadcrumb',\n CARDS: 'cards',\n CHILDREN_SLIDES: 'children-slides',\n\n CTA_ICON: 'cta-icon',\n DATE_END_ISO: 'end-date-iso',\n DATE_START_ISO: 'start-date-iso',\n DESCRIPTION: 'description',\n EVENT_LIST: 'event-list',\n HEADLINES: 'headlines',\n HIGHLIGHT_ATTRIBUTION: 'highlight-attribution',\n HIGHLIGHT: 'highlight',\n IMAGES: 'images',\n PATHS: 'paths',\n\n PRIMARY_SLIDE_CONTENT: 'primary-slide-content',\n PRIMARY_SLIDE_LINKS: 'primary-slide-links',\n PRIMARY_SLIDE_SECONDARY_LINKS: 'primary-slide-secondary-links',\n QUOTE: 'quote',\n\n STATIC_COLUMN: 'static-column',\n STATS: 'stats',\n STICKY_COLUMN: 'sticky-column',\n TABS: 'tabs',\n TEXTS: 'texts',\n};\n\nconst SlotNames = {\n actions,\n assets,\n content,\n contact,\n eyebrows,\n date,\n deprecated,\n headline,\n text,\n social,\n person,\n ...NEEDS_CLEANUP,\n} as const;\n\nexport { SlotNames, type SlotName };\n","/**\n * Base properties required for slot creation\n */\nexport interface BaseProps {\n /** The HTML element to extract slot content from */\n element: HTMLElement;\n}\n\ninterface BaseConfig extends BaseProps {\n type: string;\n}\n\n/**\n * Optional properties for slot configuration\n */\nexport interface OptionalProps {\n /** Whether to apply default styling to the slot content */\n isDefaultStyling: boolean;\n /** Whether this slot is required */\n isRequired: boolean;\n}\n\ninterface ValidatonErrors {\n errors: string[];\n}\n\ninterface SlotValidation extends ValidatonErrors {\n isValid: boolean;\n}\n\ntype SlotConfig = BaseConfig & Partial<OptionalProps>;\n\n/**\n * Result type for slot creation operations\n * Returns either the processed slot element or null if not found\n */\nexport type SlotResult = HTMLElement | null;\n\nconst createEmptySlot = (type: string): HTMLSlotElement => {\n const slot = document.createElement('slot');\n slot.setAttribute('name', type);\n return slot;\n};\n\nconst validateSlotRequirements = (\n element: HTMLElement,\n type: string,\n isRequired: boolean,\n): SlotValidation => {\n const errors: string[] = [];\n const slottedContent = element.querySelector(`[slot=\"${type}\"]`);\n\n if (isRequired && !slottedContent) {\n errors.push(`Required slot \"${type}\" is missing in ${element.tagName}`);\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n };\n};\n\nconst cloneWithoutSlotAttribute = (element: HTMLElement): HTMLElement => {\n const clone = element.cloneNode(true) as HTMLElement;\n clone.removeAttribute('slot');\n return clone;\n};\n\nconst processDefaultStyling = (\n element: HTMLElement,\n slotRef: string,\n): SlotResult => {\n const elementRef = element.querySelector(\n `:scope > [slot=${slotRef}]`,\n ) as HTMLElement;\n\n if (!elementRef) {\n return null;\n }\n\n return elementRef.hasAttribute('styled')\n ? createEmptySlot(slotRef)\n : cloneWithoutSlotAttribute(elementRef);\n};\n\nconst createSlot = ({\n element,\n type,\n isDefaultStyling = true,\n isRequired = false,\n}: SlotConfig): SlotResult => {\n const validation = validateSlotRequirements(element, type, isRequired);\n if (!validation.isValid) {\n return null;\n }\n\n const slottedContent = element.querySelector(`[slot=\"${type}\"]`);\n if (!slottedContent) {\n return null;\n }\n\n return isDefaultStyling\n ? processDefaultStyling(element, type)\n : createEmptySlot(type);\n};\n\nexport { createSlot };\n","/**\n * Common Slot Configurations\n *\n * This module provides pre-defined slot configurations that are commonly used\n * across multiple components. These configurations ensure consistency in how\n * components accept and validate slotted content.\n */\n\nimport type { SlotConfig } from '../../_types';\n\nconst subHeadlineElements = ['h2', 'h3', 'h4', 'h5', 'h6', 'p', 'span'];\nconst textElements = ['div', 'p', 'span', 'strong'];\n\n/**\n * Common slot configurations used across multiple components\n *\n * These pre-defined configurations promote consistency and reduce duplication\n * when defining component slots.\n */\nexport const allowed: Record<string, SlotConfig> = {\n actions: {\n allowedElements: ['div', 'a', 'button', 'umd-element-call-to-action'],\n },\n body: {\n deprecated:\n 'Use \"text\" instead. This attribute will be removed in version 2.0.',\n allowedElements: [...textElements],\n },\n content: {\n allowedElements: ['div'],\n },\n eyebrow: {\n allowedElements: ['span', 'p'],\n },\n headline: {\n allowedElements: ['h1', ...subHeadlineElements],\n },\n image: {\n allowedElements: ['img'],\n },\n images: {\n allowedElements: ['div'],\n },\n imageLink: {\n allowedElements: ['img', 'a'],\n },\n subHeadline: {\n allowedElements: subHeadlineElements,\n },\n text: {\n allowedElements: [...textElements],\n },\n time: {\n allowedElements: ['time'],\n },\n};\n","import { SlotNames, type SlotName } from './mapping';\nimport { createSlot, type BaseProps, type OptionalProps } from './create';\nimport * as element from './element';\n\n/**\n * Properties for creating slot content\n * Combines base properties with optional configuration\n */\nexport type SlotProps = BaseProps & Partial<OptionalProps>;\n\nconst createSlotFactory =\n (type: SlotName, config: Partial<SlotProps> = {}) =>\n (props: SlotProps) =>\n createSlot({ ...props, type, ...config });\n\n// Defined common usage\n\nconst actions = {\n default: createSlotFactory(SlotNames.actions.default),\n} as const;\n\nconst assets = {\n image: createSlotFactory(SlotNames.assets.image),\n images: createSlotFactory(SlotNames.assets.images),\n video: createSlotFactory(SlotNames.assets.video),\n} as const;\n\nconst contact = {\n additional: createSlotFactory(SlotNames.contact.additional),\n address: createSlotFactory(SlotNames.contact.address),\n email: createSlotFactory(SlotNames.contact.email),\n location: createSlotFactory(SlotNames.contact.location),\n phone: createSlotFactory(SlotNames.contact.phone),\n} as const;\n\nconst content = {\n default: createSlotFactory(SlotNames.content.default),\n} as const;\n\nconst date = {\n default: createSlotFactory(SlotNames.date.default),\n} as const;\n\nconst eyebrow = {\n default: createSlotFactory(SlotNames.eyebrows.default),\n} as const;\n\nconst headline = {\n default: createSlotFactory(SlotNames.headline.default),\n} as const;\n\nconst person = {\n association: createSlotFactory(SlotNames.person.association),\n name: createSlotFactory(SlotNames.person.name),\n jobTitle: createSlotFactory(SlotNames.person.jobTitle),\n pronouns: createSlotFactory(SlotNames.person.pronouns),\n} as const;\n\nconst social = {\n linkedin: createSlotFactory(SlotNames.social.linkedin),\n} as const;\n\nconst text = {\n caption: createSlotFactory(SlotNames.text.caption),\n default: createSlotFactory(SlotNames.text.default),\n stat: createSlotFactory(SlotNames.text.stat),\n stats: createSlotFactory(SlotNames.text.stats),\n subText: createSlotFactory(SlotNames.text.sub),\n} as const;\n\n// Deprecated slots (marked for removal)\n/** @deprecated Use CommonSlots instead */\nconst deprecated = {\n ADDITIONAL: createSlotFactory(SlotNames.ADDITIONAL),\n body: createSlotFactory(SlotNames.deprecated.body),\n wrappingText: createSlotFactory(SlotNames.deprecated.wrappingText),\n plainText: createSlotFactory(SlotNames.deprecated.plainText),\n stat: createSlotFactory(SlotNames.deprecated.stat),\n} as const;\n\nexport default {\n actions,\n assets,\n contact,\n content,\n date,\n deprecated,\n element,\n eyebrow,\n person,\n name: SlotNames,\n headline,\n social,\n text,\n ...element,\n};\nexport type { SlotName };\n"],"names":["decoration","display","feature","feed","information","layout","sharing","social","theme","visual","deprecated","AttributeNames","names_default","data","search","size","state","type","AttributeValues","values_default","combine","configs","handlerMap","config","handlers","name","ref","oldValue","newValue","handler","resize","callback","_","element","previousSize","currentSize","stateOpen","stateClosed","visuallyClosed","visuallyHide","visuallyOpen","visuallyPosition","top","visuallyShow","observe","common","options","handler_default","isAttributeTrue","attributeName","attributeValue","defaultValue","value","isAttributeNotNull","depcreationWarning","attributeNameOld","attributeNameNew","checkDeprecatedAttribute","props","rest","createAttributeCheck","createValueGetter","currentName","deprecatedName","deprecatedValue","hasInfo","hasDecoration","includesFeature","AttributesValues","isData","isDisplay","isInfo","isLayout","isSharing","includesSharing","isTheme","isVisual","getValue","cssString","Styles","ComponentConfig","constructor","BaseComponent","attr","error","componentRef","component","StylesTemplate","field","eventName","detail","fullDetail","message","errorType","errors","letter","invalidElements","lifecycleMethods","method","createCustomElement","_Component_decorators","_init","_a","Component","__decoratorStart","__decorateElement","__runInitializers","actions","assets","date","contact","content","eyebrows","headline","person","text","NEEDS_CLEANUP","SlotNames","createEmptySlot","slot","validateSlotRequirements","isRequired","slottedContent","cloneWithoutSlotAttribute","clone","processDefaultStyling","slotRef","elementRef","createSlot","isDefaultStyling","subHeadlineElements","textElements","allowed","createSlotFactory","eyebrow","slots_default"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { token as ye, animation as li } from "@universityofmaryland/web-styles-library";
|
|
2
|
-
import { c as fi } from "./model-
|
|
2
|
+
import { c as fi } from "./model-CHS3WnCo.js";
|
|
3
3
|
import { Utilities as lr } from "@universityofmaryland/web-elements-library";
|
|
4
4
|
var fr = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
|
|
5
5
|
function rt(e) {
|
|
@@ -5534,4 +5534,4 @@ export {
|
|
|
5534
5534
|
zi as v,
|
|
5535
5535
|
Is as w
|
|
5536
5536
|
};
|
|
5537
|
-
//# sourceMappingURL=utilities-
|
|
5537
|
+
//# sourceMappingURL=utilities-CZHe-tKs.js.map
|