@dso-toolkit/core 83.0.0 → 83.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/bundle/dso-document-component.js +1 -1
  2. package/dist/bundle/dso-ozon-content.js +1 -1
  3. package/dist/bundle/dsot-document-component-demo.js +2 -2
  4. package/dist/bundle/{p-CuHWsfA3.js → p-C0fad0Tz.js} +5 -5
  5. package/dist/bundle/{p-CuHWsfA3.js.map → p-C0fad0Tz.js.map} +1 -1
  6. package/dist/bundle/{p-C7zjA7YV.js → p-vXXTDKh5.js} +36 -26
  7. package/dist/bundle/p-vXXTDKh5.js.map +1 -0
  8. package/dist/cjs/dso-alert.dso-badge.dso-image-overlay.dso-ozon-content.dso-ozon-content-toggletip.dso-panel.dso-table.entry.cjs.js.map +1 -1
  9. package/dist/cjs/dso-alert_7.cjs.entry.js +34 -24
  10. package/dist/cjs/dso-alert_7.cjs.entry.js.map +1 -1
  11. package/dist/cjs/dso-annotation-locatie.dso-document-component.entry.cjs.js.map +1 -1
  12. package/dist/cjs/dso-annotation-locatie_2.cjs.entry.js +2 -2
  13. package/dist/cjs/dso-annotation-locatie_2.cjs.entry.js.map +1 -1
  14. package/dist/collection/components/document-component/document-component.js +4 -7
  15. package/dist/collection/components/document-component/document-component.js.map +1 -1
  16. package/dist/collection/components/ozon-content/nodes/ext-ref.node.js +5 -2
  17. package/dist/collection/components/ozon-content/nodes/ext-ref.node.js.map +1 -1
  18. package/dist/collection/components/ozon-content/nodes/figuur.node.js +5 -5
  19. package/dist/collection/components/ozon-content/nodes/figuur.node.js.map +1 -1
  20. package/dist/collection/components/ozon-content/nodes/inline-tekst-afbeelding.node.js +4 -4
  21. package/dist/collection/components/ozon-content/nodes/inline-tekst-afbeelding.node.js.map +1 -1
  22. package/dist/collection/components/ozon-content/nodes/int-io-ref.node.js +3 -3
  23. package/dist/collection/components/ozon-content/nodes/int-io-ref.node.js.map +1 -1
  24. package/dist/collection/components/ozon-content/nodes/int-ref.node.js +15 -8
  25. package/dist/collection/components/ozon-content/nodes/int-ref.node.js.map +1 -1
  26. package/dist/collection/components/ozon-content/ozon-content.css +4 -0
  27. package/dist/collection/components/ozon-content/ozon-content.interfaces.js.map +1 -1
  28. package/dist/collection/components/ozon-content/ozon-content.js +2 -2
  29. package/dist/collection/components/ozon-content/ozon-content.js.map +1 -1
  30. package/dist/components/document-component.js +2 -2
  31. package/dist/components/document-component.js.map +1 -1
  32. package/dist/components/ozon-content.js +34 -24
  33. package/dist/components/ozon-content.js.map +1 -1
  34. package/dist/dso-toolkit/dso-alert.dso-badge.dso-image-overlay.dso-ozon-content.dso-ozon-content-toggletip.dso-panel.dso-table.entry.esm.js.map +1 -1
  35. package/dist/dso-toolkit/dso-annotation-locatie.dso-document-component.entry.esm.js.map +1 -1
  36. package/dist/dso-toolkit/dso-toolkit.esm.js +1 -1
  37. package/dist/dso-toolkit/p-a9b2ea7e.entry.js +2 -0
  38. package/dist/dso-toolkit/p-a9b2ea7e.entry.js.map +1 -0
  39. package/dist/dso-toolkit/{p-3dfe5dde.entry.js → p-d0ffada0.entry.js} +2 -2
  40. package/dist/dso-toolkit/{p-3dfe5dde.entry.js.map → p-d0ffada0.entry.js.map} +1 -1
  41. package/dist/esm/dso-alert.dso-badge.dso-image-overlay.dso-ozon-content.dso-ozon-content-toggletip.dso-panel.dso-table.entry.js.map +1 -1
  42. package/dist/esm/dso-alert_7.entry.js +34 -24
  43. package/dist/esm/dso-alert_7.entry.js.map +1 -1
  44. package/dist/esm/dso-annotation-locatie.dso-document-component.entry.js.map +1 -1
  45. package/dist/esm/dso-annotation-locatie_2.entry.js +2 -2
  46. package/dist/esm/dso-annotation-locatie_2.entry.js.map +1 -1
  47. package/dist/types/components/document-component/document-component.d.ts +2 -1
  48. package/dist/types/components/ozon-content/ozon-content.d.ts +2 -1
  49. package/dist/types/components/ozon-content/ozon-content.interfaces.d.ts +3 -3
  50. package/dist/types/components.d.ts +4 -6
  51. package/package.json +3 -3
  52. package/dist/bundle/p-C7zjA7YV.js.map +0 -1
  53. package/dist/dso-toolkit/p-61106c2d.entry.js +0 -2
  54. package/dist/dso-toolkit/p-61106c2d.entry.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["translations","en","close","success","info","warning","error","nl","alertCss","Alert","constructor","hostRef","this","closable","text","i18n","host","render","status","Error","h","key","class","clsx","compact","role","roleAlert","undefined","icon","label","variant","onDsoClick","e","dsoClose","emit","originalEvent","badgeCss","Badge","imageOverlayCss","wijzigactieLabels","verwijder","voegtoe","Dimmer","active","src","alt","ref","click","children","ImageOverlay","zoomable","titelSlot","bijschriftSlot","loadListener","event","target","HTMLImageElement","setZoomable","connectedCallback","querySelector","componentDidLoad","resizeObserver","ResizeObserver","debounce","imgElement","mutationObserver","MutationObserver","forceUpdate","_a","type","_b","disconnect","initZoomableImage","observe","attributes","subtree","attributeFilter","childList","disconnectedCallback","trap","deactivate","_c","complete","imageElement","width","naturalWidth","height","naturalHeight","isWijzigactie","wijzigactie","editActionLabel","button","element","iconButtonElement","Host","onClick","setFocus","wrapperElement","name","hidden","componentDidRender","createFocusTrap","escapeDeactivates","clickOutsideDeactivates","MouseEvent","composedPath","setReturnFocus","onDeactivate","tabbableOptions","getShadowRoot","node","shadowRoot","activate","getNodeName","Element","localName","nodeName","includes","substring","indexOf","OzonContentAbbrNode","mapNodeToJsx","title","getAttribute","childNodes","WrapWijzigactie","wijzigactieToClassName","isNestedAl","path","some","n","OzonContentAlNode","inline","content","parseWijzigactieFromNode","className","Term","begripWijzigactie","Definitie","OzonContentBegripNode","Array","from","terms","filter","definitions","map","term","definition","OzonContentBegrippenlijstNode","OzonContentBronNode","OzonContentDocumentNode","Fragment","symbolTag","reAsciiWord","reLatin","rsAstralRange","rsComboMarksRange","rsComboSymbolsRange","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsVarRange","rsBreakRange","rsApos","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsLowerMisc","rsUpperMisc","rsOptLowerContr","rsOptUpperContr","reOptMod","rsOptVar","rsOptJoin","join","rsSeq","rsEmoji","reApos","RegExp","reComboMark","reUnicodeWord","reHasUnicodeWord","deburredLetters","freeGlobal","global","Object","freeSelf","self","root","Function","arrayReduce","array","iteratee","accumulator","initAccum","index","length","asciiWords","string","match","basePropertyOf","object","deburrLetter","hasUnicodeWord","test","unicodeWords","objectProto","prototype","objectToString","toString","Symbol","symbolProto","symbolToString","baseToString","value","isSymbol","call","result","Infinity","createCompounder","callback","words","deburr","replace","isObjectLike","kebabCase","word","toLowerCase","pattern","guard","lodash_kebabcase","OzonContentExtRefNode","urlResolver","tagName","href","rel","OzonContentFallbackNode","Bijschrift","bijschrift","bron","bronText","textContent","trim","inhoud","OzonContentFiguurNode","getStyle","illustratie","widthPixels","Number","breedte","heightPixels","hoogte","style","uitlijning","widthPercentage","Math","min","dpi","assign","mapIllustratieNode","naam","find","u","titel","illustratieNode","bijschriftNode","locatie","slot","_d","OzonContentInhoudNode","richContent","OzonContentInlineTekstAfbeeldingNode","OzonContentInlineNodes","Tag","OzonContentIntIoRefNode","emitClick","intIoRefOnClick","OzonContentIntRefNode","begripResolver","definitie","definitieXMLDocument","parseXml","documentElement","hasChildNodes","handleIntRefClick","isModifiedEvent","mapData","nummer","opschrift","subtitels","querySelectorAll","OzonContentKopNode","handles","handleKopClick","wijzigactieLabel","wijzigactieNummer","wijzigactieOpschrift","part","subtitel","wijzigactieSubtitel","OzonContentLijstNode","parseTypeFromLijstNode","aanhef","sluiting","listItems","item","itemNodes","liNummer","liWijzigactie","OzonContentNieuweTekstNode","OzonContentNootNode","identify","state","openNoteId","setState","noteId","console","noteControlsId","nootNummer","onBlur","id","stateless","descriptive","mapColspecs","count","nodeList","elements","totalWidth","getTotalWidth","columns","colNumber","colsep","number","parseInt","rowsep","getWidth","reduce","colWidth","isNaN","round","Colgroup","colspecs","colspec","getColspecStartColsep","nameStart","colspecStart","c","getColspecStartRowsep","getData","cell","row","parentElement","tgroup","table","moreRows","nameEnd","getColspan","colspecEnd","colspan","Cell","context","rowSpan","colSpan","Rows","rows","colAttribute","columnCount","caption","headRows","bodyRows","frame","OzonContentTableNode","uuidv4","OzonContentTextNode","mark","emitMarkItemHighlight","MarkText","OzonContentVerwijderdeTekstNode","Mapper","mappers","skip","t","m","push","fallbackNode","findMapper","isArray","NodeList","mapper","identity","s","transform","input","doc","getRootNode","ozonContentCss","OzonContent","handleMarkItemHighlight","elementRef","dsoOzonContentMarkItemHighlight","contentWatcher","dsoClick","transformed","ozonContentToggletipCss","ozonContentToggletip","showToggletip","open","addEventListener","keyDownListener","focusOutListener","removeEventListener","contains","relatedTarget","tooltip","showPopover","hidePopover","cleanUp","container","tooltipArrow","positionTooltip","referenceElement","tipRef","tipArrowRef","placementTip","Tooltip","visible","onAfterHidden","tipElementRef","tipArrowElementRef","panelCss","Panel","emphasized","dsoCloseClick","detail","closeButtonLabel","tableCss","Table","labelledbyId","v4","noModal","modalActive","startResponsiveBehavior","componentWillLoad","entries","setResponsiveTable","setFocusTrap","isResponsive","placeholderHeight","focusTrapElement","display","buttonElement","openModal","closeModal","clientHeight","dsoTable","tableElement","HTMLTableElement","floor","getBoundingClientRect","contentRect"],"sources":["src/components/alert/alert.i18n.ts","src/components/alert/alert.scss?tag=dso-alert&encapsulation=shadow","src/components/alert/alert.tsx","src/components/badge/badge.scss?tag=dso-badge&encapsulation=shadow","src/components/badge/badge.tsx","src/components/image-overlay/image-overlay.scss?tag=dso-image-overlay&encapsulation=shadow","src/components/image-overlay/image-overlay.tsx","src/components/ozon-content/get-node-name.function.ts","src/components/ozon-content/nodes/abbr.node.tsx","src/components/ozon-content/functional-components/wrap-wijzigactie.functional-component.tsx","src/components/ozon-content/functions/wijzigactie-to-class-name.function.ts","src/components/ozon-content/nodes/al.node.tsx","src/components/ozon-content/nodes/begrip.node.tsx","src/components/ozon-content/nodes/begrippenlijst.node.tsx","src/components/ozon-content/nodes/bron.node.tsx","src/components/ozon-content/nodes/document.node.tsx","../../node_modules/lodash.kebabcase/index.js","src/components/ozon-content/nodes/ext-ref.node.tsx","src/components/ozon-content/nodes/fallback.node.tsx","src/components/ozon-content/nodes/figuur.node.tsx","src/components/ozon-content/nodes/inhoud.node.tsx","src/components/ozon-content/nodes/inline-tekst-afbeelding.node.tsx","src/components/ozon-content/nodes/inline.nodes.tsx","src/components/ozon-content/nodes/int-io-ref.node.tsx","src/components/ozon-content/nodes/int-ref.node.tsx","src/components/ozon-content/nodes/kop.node.tsx","src/components/ozon-content/nodes/lijst.node.tsx","src/components/ozon-content/nodes/nieuwe-tekst.node.tsx","src/components/ozon-content/nodes/noot.node.tsx","src/components/ozon-content/nodes/table.node/colspec/colspec-mapper.ts","src/components/ozon-content/nodes/table.node/table-colgroup.tsx","src/components/ozon-content/nodes/table.node/table-cell.tsx","src/components/ozon-content/nodes/table.node/table-rows.tsx","src/components/ozon-content/nodes/table.node/table.node.tsx","src/components/ozon-content/nodes/text.node.tsx","src/components/ozon-content/nodes/verwijderde-tekst.node.tsx","src/components/ozon-content/ozon-content-mapper.tsx","src/components/ozon-content/ozon-content.scss?tag=dso-ozon-content&encapsulation=shadow","src/components/ozon-content/ozon-content.tsx","src/components/ozon-content/components/ozon-content-toggletip/ozon-content-toggletip.scss?tag=dso-ozon-content-toggletip&encapsulation=shadow","src/components/ozon-content/components/ozon-content-toggletip/ozon-content-toggletip.tsx","src/components/panel/panel.i18n.ts","src/components/panel/panel.scss?tag=dso-panel&encapsulation=shadow","src/components/panel/panel.tsx","src/components/table/table.scss?tag=dso-table&encapsulation=shadow","src/components/table/table.tsx"],"sourcesContent":["import { Resource } from \"../../utils/i18n\";\r\n\r\nexport const translations: Resource = {\r\n en: {\r\n \"dso-alert\": {\r\n close: \"Close\",\r\n success: \"Success\",\r\n info: \"Notice\",\r\n warning: \"Warning\",\r\n error: \"Error\",\r\n },\r\n },\r\n nl: {\r\n \"dso-alert\": {\r\n close: \"Sluiten\",\r\n success: \"Gelukt\",\r\n info: \"Opmerking\",\r\n warning: \"Waarschuwing\",\r\n error: \"Fout\",\r\n },\r\n },\r\n};\r\n","@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/components/alert\";\r\n\r\n:host {\r\n display: block;\r\n}\r\n\r\n:host(:not(:first-child)) {\r\n margin-block-start: units.$u3;\r\n}\r\n\r\n@include utilities.box-sizing();\r\n\r\n.sr-only {\r\n @include utilities.sr-only();\r\n}\r\n\r\n.alert {\r\n @include alert.root();\r\n\r\n dso-icon-button {\r\n position: absolute;\r\n inset-block-start: units.$u1 - alert.$border-size;\r\n inset-inline-end: units.$u1 - alert.$border-size;\r\n }\r\n\r\n &.dso-compact {\r\n min-block-size: alert.$inline-padding;\r\n }\r\n}\r\n","import { Component, Element, Event, EventEmitter, Prop, h } from \"@stencil/core\";\r\nimport { clsx } from \"clsx\";\r\n\r\nimport { i18n } from \"../../utils/i18n\";\r\n\r\nimport { translations } from \"./alert.i18n\";\r\nimport { AlertCloseEvent } from \"./alert.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-alert\",\r\n styleUrl: \"alert.scss\",\r\n shadow: true,\r\n})\r\nexport class Alert {\r\n @Element()\r\n host!: HTMLDsoAlertElement;\r\n\r\n /**\r\n * Set status of alert\r\n */\r\n @Prop({ reflect: true })\r\n status!: \"success\" | \"info\" | \"warning\" | \"error\";\r\n\r\n /**\r\n * Whether or not to show the role attribute with value \"alert\". To control the tooltip add the `role-alert` attribute.\r\n */\r\n @Prop()\r\n roleAlert?: boolean;\r\n\r\n /**\r\n * Show alert as compact variant (without icon)\r\n */\r\n @Prop({ reflect: true })\r\n compact?: boolean;\r\n\r\n /**\r\n * When `false` the close button in the alert will not be rendered.\r\n */\r\n @Prop()\r\n closable = false;\r\n\r\n /**\r\n * Emitted when the user closes the Alert.\r\n */\r\n @Event()\r\n dsoClose!: EventEmitter<AlertCloseEvent>;\r\n\r\n private text = i18n(() => this.host, translations);\r\n\r\n render() {\r\n const status = this.text(this.status);\r\n if (!status) {\r\n throw new Error(`Invalid status ${this.status}`);\r\n }\r\n\r\n return (\r\n <div\r\n class={clsx(\"alert\", `alert-${this.status}`, { \"dso-compact\": this.compact })}\r\n role={this.roleAlert ? \"alert\" : undefined}\r\n >\r\n {!this.compact && <dso-icon class=\"icon-status\" icon={\"status-\" + this.status} />}\r\n <span class=\"sr-only\">{status}:</span>\r\n <slot></slot>\r\n\r\n {this.closable && (\r\n <dso-icon-button\r\n label={this.text(\"close\")}\r\n variant=\"tertiary\"\r\n icon=\"times\"\r\n onDsoClick={(e) => this.dsoClose.emit({ originalEvent: e })}\r\n />\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n","@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/components/badge\";\r\n\r\n:host {\r\n display: inline-block;\r\n}\r\n\r\n@include utilities.box-sizing();\r\n\r\n.sr-only {\r\n @include utilities.sr-only();\r\n}\r\n\r\n.dso-badge {\r\n @include badge.root();\r\n}\r\n","import { Component, Prop, h } from \"@stencil/core\";\r\nimport { clsx } from \"clsx\";\r\n\r\nimport { BadgeStatus } from \"./badge.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-badge\",\r\n styleUrl: \"badge.scss\",\r\n shadow: true,\r\n})\r\nexport class Badge {\r\n /**\r\n * The status of the Badge.\r\n */\r\n @Prop()\r\n status?: BadgeStatus;\r\n\r\n render() {\r\n return (\r\n <span class={clsx(\"dso-badge\", { [`badge-${this.status}`]: this.status })}>\r\n <slot></slot>\r\n </span>\r\n );\r\n }\r\n}\r\n","@use \"sass:color\";\r\n\r\n@use \"~dso-toolkit/src/utilities\";\r\n\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n\r\n@use \"~dso-toolkit/src/components/button\";\r\n@use \"~dso-toolkit/src/components/insert\";\r\n@use \"~dso-toolkit/src/components/delete\";\r\n\r\n:host {\r\n display: inline-block;\r\n position: relative;\r\n}\r\n\r\n:host(:hover) .open,\r\n.open:focus {\r\n opacity: 1;\r\n}\r\n\r\n.open {\r\n // stylelint-disable-next-line no-duplicate-selectors -- needed to fix sass deprecation warnings: #2724\r\n & {\r\n opacity: 0;\r\n position: absolute;\r\n inset-inline-end: units.$u2;\r\n inset-block-start: units.$u2;\r\n }\r\n}\r\n\r\n.dimmer {\r\n position: fixed;\r\n inset: 0;\r\n z-index: zindex.$image-overlay - 1;\r\n display: flex;\r\n padding: units.$u4;\r\n background-color: color.scale(colors.$wit, $alpha: -20%);\r\n justify-content: center;\r\n}\r\n\r\n.wrapper {\r\n align-self: center;\r\n box-shadow: 0 units.$u1 units.$u3 0 rgba(25, 25, 25, 0.4);\r\n line-height: 0;\r\n outline: 4px solid colors.$wit;\r\n position: relative;\r\n z-index: zindex.$image-overlay;\r\n\r\n .title {\r\n background-color: colors.$wit;\r\n font-weight: 700;\r\n line-height: initial;\r\n padding: units.$u1;\r\n position: absolute;\r\n }\r\n\r\n img {\r\n inline-size: auto;\r\n block-size: auto;\r\n max-inline-size: 100%;\r\n max-block-size: calc(100vh - #{units.$u8});\r\n }\r\n\r\n .figuur-bijschrift:not([hidden]) {\r\n display: block;\r\n font-size: 0.75rem;\r\n font-style: italic;\r\n padding-block-end: units.$u1 * 1.5;\r\n padding-block-start: units.$u2;\r\n }\r\n}\r\n\r\n.close {\r\n // stylelint-disable-next-line no-duplicate-selectors -- needed to fix sass deprecation warnings: #2724\r\n & {\r\n position: absolute;\r\n inset-block-start: units.$u2;\r\n inset-inline-end: units.$u2;\r\n }\r\n}\r\n\r\nins.editaction-add {\r\n display: inline-block;\r\n margin-block-end: units.$u1;\r\n padding: units.$u1;\r\n @include insert.element();\r\n @include insert.root();\r\n\r\n .wrapper {\r\n outline: none;\r\n padding: units.$u1;\r\n @include insert.root();\r\n\r\n .editaction-label {\r\n line-height: 1.5;\r\n }\r\n\r\n .close {\r\n inset-block-start: units.$u6;\r\n }\r\n }\r\n\r\n .open {\r\n inset-block-start: units.$u6;\r\n }\r\n}\r\n\r\ndel.editaction-remove {\r\n display: inline-block;\r\n margin-block-end: units.$u1;\r\n padding: units.$u1;\r\n @include delete.root();\r\n\r\n .wrapper {\r\n outline: none;\r\n padding: units.$u1;\r\n @include delete.root();\r\n\r\n .title {\r\n text-decoration: line-through;\r\n }\r\n\r\n .editaction-label {\r\n line-height: 1.5;\r\n }\r\n\r\n .close {\r\n inset-block-start: units.$u6;\r\n }\r\n }\r\n\r\n .open {\r\n inset-block-start: units.$u6;\r\n }\r\n}\r\n\r\n.editaction-label {\r\n font-style: italic;\r\n margin-block-end: units.$u1;\r\n}\r\n","import {\r\n Component,\r\n ComponentInterface,\r\n Element,\r\n FunctionalComponent,\r\n Host,\r\n Listen,\r\n Prop,\r\n State,\r\n forceUpdate,\r\n h,\r\n} from \"@stencil/core\";\r\nimport debounce from \"debounce\";\r\nimport { FocusTrap, createFocusTrap } from \"focus-trap\";\r\n\r\ntype ImageOverlayWijzigactie = \"voegtoe\" | \"verwijder\";\r\n\r\nconst wijzigactieLabels: { [wijzigactie in ImageOverlayWijzigactie]: string } = {\r\n verwijder: \"Verwijderd\",\r\n voegtoe: \"Toegevoegd\",\r\n};\r\n\r\nconst Dimmer: FunctionalComponent<{\r\n active: boolean;\r\n src: string | undefined;\r\n alt: string | undefined;\r\n ref: (element: HTMLHeadingElement | undefined) => void;\r\n click: () => void;\r\n}> = ({ active, src, alt, ref, click }, children) =>\r\n active &&\r\n src && (\r\n <div class=\"dimmer\">\r\n <div class=\"wrapper\" ref={ref}>\r\n {children[2]}\r\n {children[0]}\r\n <img src={src} alt={alt} />\r\n <dso-icon-button icon=\"times\" variant=\"map\" class=\"close\" label=\"Sluiten\" onDsoClick={click} />\r\n {children[1]}\r\n </div>\r\n </div>\r\n );\r\n\r\n@Component({\r\n tag: \"dso-image-overlay\",\r\n styleUrl: \"./image-overlay.scss\",\r\n shadow: true,\r\n})\r\nexport class ImageOverlay implements ComponentInterface {\r\n @Element()\r\n host!: HTMLDsoImageOverlayElement;\r\n\r\n /**\r\n * The wijzigactie.\r\n */\r\n @Prop()\r\n wijzigactie?: string;\r\n\r\n @State()\r\n active = false;\r\n\r\n @State()\r\n zoomable = false;\r\n\r\n private iconButtonElement: HTMLDsoIconButtonElement | undefined;\r\n\r\n private wrapperElement: HTMLDivElement | undefined;\r\n\r\n private trap: FocusTrap | undefined;\r\n\r\n private titelSlot: HTMLElement | null = null;\r\n\r\n private bijschriftSlot: HTMLElement | null = null;\r\n\r\n private mutationObserver?: MutationObserver;\r\n\r\n private resizeObserver?: ResizeObserver;\r\n\r\n @Listen(\"load\", { capture: true })\r\n loadListener(event: Event) {\r\n if (event.target instanceof HTMLImageElement) {\r\n this.setZoomable(event.target);\r\n }\r\n }\r\n\r\n connectedCallback() {\r\n this.titelSlot = this.host.querySelector<HTMLDivElement>(\"div[slot='titel']\");\r\n\r\n this.bijschriftSlot = this.host.querySelector<HTMLDivElement>(\"div[slot='bijschrift']\");\r\n }\r\n\r\n componentDidLoad() {\r\n this.resizeObserver = new ResizeObserver(\r\n debounce(() => {\r\n const imgElement = this.host.querySelector(\"img\");\r\n\r\n if (imgElement instanceof HTMLImageElement) {\r\n this.setZoomable(imgElement);\r\n }\r\n }, 200),\r\n );\r\n\r\n this.mutationObserver = new MutationObserver((e) => {\r\n forceUpdate(this.host);\r\n\r\n if (e[0]?.type === \"childList\") {\r\n this.resizeObserver?.disconnect();\r\n // <img> is gone or a new element.\r\n this.initZoomableImage();\r\n }\r\n });\r\n\r\n this.mutationObserver.observe(this.host, {\r\n attributes: true,\r\n subtree: true,\r\n attributeFilter: [\"src\", \"alt\"],\r\n childList: true,\r\n });\r\n\r\n this.initZoomableImage();\r\n }\r\n\r\n disconnectedCallback() {\r\n this.trap?.deactivate();\r\n this.mutationObserver?.disconnect();\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n private initZoomableImage(): void {\r\n const imgElement = this.host.querySelector(\"img\");\r\n\r\n if (!(imgElement instanceof HTMLImageElement)) {\r\n return;\r\n }\r\n\r\n // Due to timing issues where the image is loaded before we listen to load events we double check if the image is already complete.\r\n if (imgElement.complete) {\r\n this.setZoomable(imgElement);\r\n }\r\n\r\n this.resizeObserver?.observe(imgElement);\r\n }\r\n\r\n private setZoomable(imageElement: HTMLImageElement): void {\r\n const { width, naturalWidth, height, naturalHeight } = imageElement;\r\n\r\n this.zoomable = width < naturalWidth || height < naturalHeight;\r\n }\r\n\r\n private isWijzigactie(wijzigactie: string): wijzigactie is ImageOverlayWijzigactie {\r\n return wijzigactie === \"voegtoe\" || wijzigactie === \"verwijder\";\r\n }\r\n\r\n render() {\r\n const { src, alt } = this.host.querySelector(\"img\") ?? {};\r\n\r\n const editActionLabel: string | undefined =\r\n (this.wijzigactie && this.isWijzigactie(this.wijzigactie) && wijzigactieLabels[this.wijzigactie]) || undefined;\r\n\r\n const button = this.zoomable && (\r\n <dso-icon-button\r\n icon=\"external-link\"\r\n class=\"open\"\r\n variant=\"map\"\r\n label=\"Afbeelding vergroot weergeven\"\r\n ref={(element) => (this.iconButtonElement = element)}\r\n onDsoClick={() => (this.active = true)}\r\n />\r\n );\r\n\r\n if (this.wijzigactie === \"verwijder\") {\r\n return (\r\n <Host onClick={() => this.iconButtonElement?.setFocus()}>\r\n <del class=\"editaction-remove\">\r\n <div class=\"editaction-label\">{editActionLabel}:</div>\r\n <Dimmer\r\n active={this.active}\r\n src={src}\r\n alt={alt}\r\n ref={(element) => (this.wrapperElement = element)}\r\n click={() => (this.active = false)}\r\n >\r\n {this.titelSlot && (\r\n <div class=\"title\">\r\n <slot name=\"titel\" />\r\n </div>\r\n )}\r\n <div class=\"figuur-bijschrift\" hidden={!this.bijschriftSlot}>\r\n <slot name=\"bijschrift\" />\r\n </div>\r\n {<div class=\"editaction-label\">{editActionLabel}:</div>}\r\n </Dimmer>\r\n <slot />\r\n {button}\r\n </del>\r\n </Host>\r\n );\r\n }\r\n\r\n if (this.wijzigactie === \"voegtoe\") {\r\n return (\r\n <Host onClick={() => this.iconButtonElement?.setFocus()}>\r\n <ins class=\"editaction-add\">\r\n <div class=\"editaction-label\">{editActionLabel}:</div>\r\n <Dimmer\r\n active={this.active}\r\n src={src}\r\n alt={alt}\r\n ref={(element) => (this.wrapperElement = element)}\r\n click={() => (this.active = false)}\r\n >\r\n {this.titelSlot && (\r\n <div class=\"title\">\r\n <slot name=\"titel\" />\r\n </div>\r\n )}\r\n <div class=\"figuur-bijschrift\" hidden={!this.bijschriftSlot}>\r\n <slot name=\"bijschrift\" />\r\n </div>\r\n {<div class=\"editaction-label\">{editActionLabel}:</div>}\r\n </Dimmer>\r\n <slot />\r\n {button}\r\n </ins>\r\n </Host>\r\n );\r\n }\r\n\r\n return (\r\n <Host onClick={() => this.iconButtonElement?.setFocus()}>\r\n <Dimmer\r\n active={this.active}\r\n src={src}\r\n alt={alt}\r\n ref={(element) => (this.wrapperElement = element)}\r\n click={() => (this.active = false)}\r\n >\r\n {this.titelSlot && (\r\n <div class=\"title\">\r\n <slot name=\"titel\" />\r\n </div>\r\n )}\r\n <div class=\"figuur-bijschrift\" hidden={!this.bijschriftSlot}>\r\n <slot name=\"bijschrift\" />\r\n </div>\r\n </Dimmer>\r\n <slot />\r\n {button}\r\n </Host>\r\n );\r\n }\r\n\r\n componentDidRender() {\r\n if (this.active && this.wrapperElement && !this.trap) {\r\n this.trap = createFocusTrap(this.wrapperElement, {\r\n escapeDeactivates: true,\r\n clickOutsideDeactivates: (e) => {\r\n if (e instanceof MouseEvent && e.composedPath()[0] === this.wrapperElement) {\r\n this.active = false;\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n setReturnFocus: this.iconButtonElement ?? false,\r\n onDeactivate: () => (this.active = false),\r\n tabbableOptions: {\r\n getShadowRoot: (node) => node.shadowRoot ?? undefined,\r\n },\r\n }).activate();\r\n } else if (!this.active && this.trap) {\r\n this.trap?.deactivate();\r\n\r\n delete this.trap;\r\n }\r\n }\r\n}\r\n","export function getNodeName(node: Node): string {\r\n if (node instanceof Element) {\r\n return node.localName;\r\n }\r\n\r\n if (node.nodeName.includes(\":\")) {\r\n return node.nodeName.substring(node.nodeName.indexOf(\":\") + 1);\r\n }\r\n\r\n return node.nodeName;\r\n}\r\n","import { h } from \"@stencil/core\";\r\n\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentAbbrNode implements OzonContentNode {\r\n name = \"abbr\";\r\n\r\n render(node: Element, { mapNodeToJsx }: OzonContentNodeContext) {\r\n const title = node.getAttribute(\"title\");\r\n\r\n return (\r\n <span class=\"od-abbr\">\r\n <abbr>{mapNodeToJsx(node.childNodes)}</abbr>\r\n {title && ` (${title})`}\r\n </span>\r\n );\r\n }\r\n}\r\n","import { FunctionalComponent, h } from \"@stencil/core\";\r\n\r\nimport { OzonContentWijzigActie } from \"../ozon-content.interfaces\";\r\n\r\nexport interface WrapWijzigactieProps {\r\n wijzigactie: OzonContentWijzigActie | undefined;\r\n}\r\n\r\nexport const WrapWijzigactie: FunctionalComponent<WrapWijzigactieProps> = ({ wijzigactie }, children) => {\r\n if (wijzigactie === \"voegtoe\") {\r\n return <ins>{children}</ins>;\r\n }\r\n\r\n if (wijzigactie === \"verwijder\") {\r\n return <del>{children}</del>;\r\n }\r\n\r\n return children;\r\n};\r\n","import { OzonContentWijzigActie } from \"../ozon-content.interfaces\";\r\n\r\nexport function wijzigactieToClassName(wijzigactie: OzonContentWijzigActie | undefined): string | undefined {\r\n if (wijzigactie === \"voegtoe\") {\r\n return \"editaction-add\";\r\n }\r\n\r\n if (wijzigactie === \"verwijder\") {\r\n return \"editaction-remove\";\r\n }\r\n\r\n return undefined;\r\n}\r\n","import { h } from \"@stencil/core\";\r\n\r\nimport { WrapWijzigactie } from \"../functional-components/wrap-wijzigactie.functional-component\";\r\nimport { parseWijzigactieFromNode } from \"../functions/parse-wijzigactie-from-node.function\";\r\nimport { wijzigactieToClassName } from \"../functions/wijzigactie-to-class-name.function\";\r\nimport { getNodeName } from \"../get-node-name.function\";\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nfunction isNestedAl(path: Node[]) {\r\n return path.some((n) => {\r\n const nodeName = getNodeName(n);\r\n\r\n return nodeName === \"Al\" || nodeName === \"Opschrift\";\r\n });\r\n}\r\n\r\nexport class OzonContentAlNode implements OzonContentNode {\r\n name = \"Al\";\r\n\r\n render(node: Element, { mapNodeToJsx, path, inline }: OzonContentNodeContext) {\r\n let content = mapNodeToJsx(node.childNodes);\r\n const wijzigactie = parseWijzigactieFromNode(node);\r\n const className = wijzigactieToClassName(wijzigactie);\r\n\r\n if (inline || isNestedAl(path)) {\r\n content = (\r\n <span role=\"paragraph\" class={className}>\r\n {content}\r\n </span>\r\n );\r\n } else {\r\n content = <p class={className}>{content}</p>;\r\n }\r\n\r\n return <WrapWijzigactie wijzigactie={wijzigactie}>{content}</WrapWijzigactie>;\r\n }\r\n}\r\n","import { FunctionalComponent, JSX, h } from \"@stencil/core\";\r\n\r\nimport { WrapWijzigactie } from \"../functional-components/wrap-wijzigactie.functional-component\";\r\nimport { parseWijzigactieFromNode } from \"../functions/parse-wijzigactie-from-node.function\";\r\nimport { wijzigactieToClassName } from \"../functions/wijzigactie-to-class-name.function\";\r\nimport { getNodeName } from \"../get-node-name.function\";\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\nimport { OzonContentWijzigActie } from \"../ozon-content.interfaces\";\r\n\r\ninterface BegripProps {\r\n begripWijzigactie: OzonContentWijzigActie | undefined;\r\n node: ChildNode;\r\n mapNodeToJsx: (node: Node | NodeList | Node[]) => JSX.Element;\r\n}\r\n\r\nconst Term: FunctionalComponent<BegripProps> = ({ begripWijzigactie, node, mapNodeToJsx }) => {\r\n const content = mapNodeToJsx(node.childNodes);\r\n const wijzigactie = parseWijzigactieFromNode(node);\r\n const className = wijzigactieToClassName(wijzigactie);\r\n\r\n return (\r\n <dt class={className}>\r\n <WrapWijzigactie wijzigactie={begripWijzigactie || wijzigactie}>{content}</WrapWijzigactie>\r\n </dt>\r\n );\r\n};\r\n\r\nconst Definitie: FunctionalComponent<BegripProps> = ({ begripWijzigactie, node, mapNodeToJsx }) => {\r\n const content = mapNodeToJsx(node.childNodes);\r\n const wijzigactie = parseWijzigactieFromNode(node);\r\n const className = wijzigactieToClassName(wijzigactie);\r\n\r\n return (\r\n <dd class={className}>\r\n <WrapWijzigactie wijzigactie={begripWijzigactie || wijzigactie}>{content}</WrapWijzigactie>\r\n </dd>\r\n );\r\n};\r\n\r\nexport class OzonContentBegripNode implements OzonContentNode {\r\n name = \"Begrip\";\r\n\r\n render(node: Element, { mapNodeToJsx }: OzonContentNodeContext) {\r\n const wijzigactie = parseWijzigactieFromNode(node);\r\n const className = wijzigactieToClassName(wijzigactie);\r\n\r\n const childNodes = Array.from(node.childNodes);\r\n const terms = childNodes.filter((n) => getNodeName(n) === \"Term\");\r\n const definitions = childNodes.filter((n) => getNodeName(n) === \"Definitie\");\r\n\r\n return (\r\n <div class={className}>\r\n {terms.map((term) => (\r\n <Term node={term} begripWijzigactie={wijzigactie} mapNodeToJsx={mapNodeToJsx} />\r\n ))}\r\n {definitions.map((definition) => (\r\n <Definitie node={definition} begripWijzigactie={wijzigactie} mapNodeToJsx={mapNodeToJsx} />\r\n ))}\r\n </div>\r\n );\r\n }\r\n}\r\n","import { h } from \"@stencil/core\";\r\n\r\nimport { WrapWijzigactie } from \"../functional-components/wrap-wijzigactie.functional-component\";\r\nimport { parseWijzigactieFromNode } from \"../functions/parse-wijzigactie-from-node.function\";\r\nimport { wijzigactieToClassName } from \"../functions/wijzigactie-to-class-name.function\";\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentBegrippenlijstNode implements OzonContentNode {\r\n name = \"Begrippenlijst\";\r\n\r\n render(node: Element, { mapNodeToJsx }: OzonContentNodeContext) {\r\n const content = mapNodeToJsx(node.childNodes);\r\n const wijzigactie = parseWijzigactieFromNode(node);\r\n const className = wijzigactieToClassName(wijzigactie);\r\n\r\n return (\r\n <div class=\"begrippenlijst\">\r\n <WrapWijzigactie wijzigactie={wijzigactie}>\r\n <dl class={className}>{content}</dl>\r\n </WrapWijzigactie>\r\n </div>\r\n );\r\n }\r\n}\r\n","import { h } from \"@stencil/core\";\r\n\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentBronNode implements OzonContentNode {\r\n name = \"Bron\";\r\n\r\n render(node: Element, { mapNodeToJsx }: OzonContentNodeContext) {\r\n return <span class=\"dso-ozon-bron\">{mapNodeToJsx(node.childNodes)}</span>;\r\n }\r\n}\r\n","import { Fragment, h } from \"@stencil/core\";\r\n\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentDocumentNode implements OzonContentNode {\r\n name = \"#document\";\r\n\r\n render(node: Node, { mapNodeToJsx }: OzonContentNodeContext) {\r\n return <Fragment>{mapNodeToJsx(node.childNodes)}</Fragment>;\r\n }\r\n}\r\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',\n rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',\n rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,\n rsUpper + '+' + rsOptUpperContr,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 'ss'\n};\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\n/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = kebabCase;\n","import { h } from \"@stencil/core\";\r\nimport kebabCase from \"lodash.kebabcase\";\r\n\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentExtRefNode implements OzonContentNode {\r\n name = [\"ExtRef\", \"ExtIoRef\"];\r\n\r\n render(node: Element, { mapNodeToJsx, urlResolver }: OzonContentNodeContext) {\r\n const className = kebabCase(node.tagName);\r\n const ref = node.getAttribute(\"ref\");\r\n const name: \"ExtRef\" | \"ExtIoRef\" = node.tagName === \"ExtRef\" ? \"ExtRef\" : \"ExtIoRef\";\r\n\r\n if (!ref) {\r\n return mapNodeToJsx(node.childNodes);\r\n }\r\n\r\n const href = urlResolver ? urlResolver(name, \"ref\", ref, node) : ref;\r\n\r\n return (\r\n <a\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n href={href ?? undefined}\r\n class={className}\r\n title=\"Opent andere website in nieuw tabblad\"\r\n >\r\n <span>{mapNodeToJsx(node.childNodes)}</span>\r\n <dso-icon icon=\"external-link\"></dso-icon>\r\n </a>\r\n );\r\n }\r\n}\r\n","import { h } from \"@stencil/core\";\r\n\r\nimport { getNodeName } from \"../get-node-name.function\";\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentFallbackNode implements OzonContentNode {\r\n // This name does not match any elements\r\n name = [\"<fallback>\"];\r\n\r\n render(node: Node, { mapNodeToJsx }: OzonContentNodeContext) {\r\n return <span class={`fallback od-${getNodeName(node)}`}>{mapNodeToJsx(node.childNodes)}</span>;\r\n }\r\n}\r\n","import { Fragment, FunctionalComponent, JSX, h } from \"@stencil/core\";\r\n\r\nimport { getNodeName } from \"../get-node-name.function\";\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\ntype BijschriftProps = {\r\n bijschrift?: IBijschrift;\r\n bron?: ChildNode;\r\n mapNodeToJsx: (node: Node | NodeList | Node[]) => JSX.Element;\r\n};\r\n\r\ninterface IBijschrift {\r\n inhoud: NodeListOf<ChildNode>;\r\n locatie: string;\r\n}\r\n\r\ninterface Illustratie {\r\n naam: string | null;\r\n breedte: number;\r\n hoogte: number;\r\n dpi: number;\r\n uitlijning: \"start\" | \"center\" | \"end\";\r\n alt: string | null;\r\n}\r\n\r\nconst Bijschrift: FunctionalComponent<BijschriftProps> = ({ bijschrift, bron, mapNodeToJsx }) => {\r\n const bronText = bron && bron.textContent?.trim();\r\n\r\n return (\r\n <span class=\"figuur-bijschrift\">\r\n {bijschrift && bijschrift.inhoud && mapNodeToJsx(bijschrift.inhoud)}\r\n {bronText && (\r\n <Fragment>\r\n {`${bijschrift ? \" \" : \"\"}(bron: `}\r\n {mapNodeToJsx(bron)})\r\n </Fragment>\r\n )}\r\n </span>\r\n );\r\n};\r\n\r\nexport class OzonContentFiguurNode implements OzonContentNode {\r\n name = [\"Figuur\"];\r\n\r\n private getStyle(illustratie: Illustratie) {\r\n const widthPixels = Number(illustratie.breedte);\r\n const heightPixels = Number(illustratie.hoogte);\r\n\r\n const style = {\r\n \"--_dso-ozon-content-illustratie-uitlijning\": illustratie.uitlijning,\r\n };\r\n\r\n if (widthPixels && heightPixels) {\r\n // This is the STOP formula to calculate the width in percentage\r\n // see: https://koop.gitlab.io/stop/standaard/1.4.0-ic/regeltekst_afbeelding.html\r\n // We maximise it to 100% in the case of missing dpi or a calculated percentage greater than 100%\r\n const widthPercentage = Math.min(illustratie.dpi ? (16.4 * widthPixels) / Number(illustratie.dpi) : 100, 100);\r\n\r\n Object.assign(style, {\r\n \"--_dso-ozon-content-illustratie-aspect-ratio\": (widthPixels / heightPixels).toString(),\r\n \"--_dso-ozon-content-illustratie-width\": `${widthPercentage}%`,\r\n });\r\n }\r\n\r\n return style;\r\n }\r\n\r\n private mapIllustratieNode(node: Element): Illustratie {\r\n return {\r\n naam: node.getAttribute(\"naam\"),\r\n breedte: Number(node.getAttribute(\"breedte\")),\r\n hoogte: Number(node.getAttribute(\"hoogte\")),\r\n dpi: Number(node.getAttribute(\"dpi\")),\r\n uitlijning:\r\n [\"start\", \"center\", \"end\"].find((u): u is Illustratie[\"uitlijning\"] => node.getAttribute(\"uitlijning\") === u) ??\r\n \"start\",\r\n alt: node.getAttribute(\"alt\"),\r\n };\r\n }\r\n\r\n render(node: Element, { mapNodeToJsx, urlResolver }: OzonContentNodeContext) {\r\n const childNodes = Array.from(node.childNodes);\r\n const titel = childNodes.find((n) => getNodeName(n) === \"Titel\");\r\n const bron = childNodes.find((n) => getNodeName(n) === \"Bron\");\r\n\r\n const illustratieNode = childNodes.find((n) => getNodeName(n) === \"Illustratie\");\r\n const bijschriftNode = childNodes.find((n) => getNodeName(n) === \"Bijschrift\");\r\n\r\n const wijzigactie = node.getAttribute(\"wijzigactie\") || undefined;\r\n\r\n if (illustratieNode instanceof Element) {\r\n const illustratie = this.mapIllustratieNode(illustratieNode);\r\n\r\n const bijschrift =\r\n bijschriftNode instanceof Element\r\n ? {\r\n inhoud: bijschriftNode.childNodes,\r\n locatie: bijschriftNode.getAttribute(\"locatie\") ?? \"onder\",\r\n }\r\n : undefined;\r\n\r\n const src =\r\n urlResolver && illustratie.naam ? urlResolver(\"Illustratie\", \"naam\", illustratie.naam, node) : illustratie.naam;\r\n\r\n return (\r\n <div\r\n class={`dso-ozon-figuur ${bijschrift ? `bijschrift-${bijschrift.locatie}` : \"onder\"}`}\r\n style={this.getStyle(illustratie)}\r\n >\r\n {titel && <span class=\"figuur-titel\">{mapNodeToJsx(titel)}</span>}\r\n {bijschrift?.locatie === \"boven\" && (\r\n <Bijschrift bijschrift={bijschrift} bron={bron} mapNodeToJsx={mapNodeToJsx} />\r\n )}\r\n <dso-image-overlay wijzigactie={wijzigactie}>\r\n {titel && (\r\n <div slot=\"titel\">\r\n <span>{mapNodeToJsx(titel)}</span>\r\n </div>\r\n )}\r\n <img src={src ?? undefined} alt={illustratie.alt ?? titel?.textContent ?? illustratie.naam ?? undefined} />\r\n {(bijschrift || bron) && (\r\n <div slot=\"bijschrift\">\r\n <Bijschrift bijschrift={bijschrift} bron={bron} mapNodeToJsx={mapNodeToJsx} />\r\n </div>\r\n )}\r\n </dso-image-overlay>\r\n {(bijschrift?.locatie === \"onder\" || (!bijschrift && bron)) && (\r\n <Bijschrift bijschrift={bijschrift} bron={bron} mapNodeToJsx={mapNodeToJsx} />\r\n )}\r\n </div>\r\n );\r\n }\r\n }\r\n}\r\n","import { h } from \"@stencil/core\";\r\n\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentInhoudNode implements OzonContentNode {\r\n name = [\"Inhoud\", \"ContainerBlocksType\", \"BlockMixedcontentMetMaximaleInlinesMarkersPopupsType\"];\r\n\r\n render(node: Element, { mapNodeToJsx }: OzonContentNodeContext) {\r\n const wijzigactie = node.getAttribute(\"wijzigactie\");\r\n\r\n const richContent = <div class=\"dso-rich-content\">{mapNodeToJsx(node.childNodes)}</div>;\r\n\r\n if (wijzigactie === \"verwijder\") {\r\n return <del class=\"editaction-remove\">{richContent}</del>;\r\n }\r\n\r\n if (wijzigactie === \"voegtoe\") {\r\n return <ins class=\"editaction-add\">{richContent}</ins>;\r\n }\r\n\r\n return richContent;\r\n }\r\n}\r\n","import { h } from \"@stencil/core\";\r\n\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentInlineTekstAfbeeldingNode implements OzonContentNode {\r\n name = [\"InlineTekstAfbeelding\", \"Illustratie\"];\r\n\r\n render(node: Element, { urlResolver }: OzonContentNodeContext) {\r\n const naam = node.getAttribute(\"naam\");\r\n const name: \"InlineTekstAfbeelding\" | \"Illustratie\" =\r\n node.tagName === \"InlineTekstAfbeelding\" ? \"InlineTekstAfbeelding\" : \"Illustratie\";\r\n const src = urlResolver && naam ? urlResolver(name, \"naam\", naam, node) : naam;\r\n\r\n return (\r\n <img\r\n src={src ?? undefined}\r\n alt={naam ?? undefined}\r\n height={node.getAttribute(\"hoogte\") ?? undefined}\r\n width={node.getAttribute(\"breedte\") ?? undefined}\r\n />\r\n );\r\n }\r\n}\r\n","import { h } from \"@stencil/core\";\r\n\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentInlineNodes implements OzonContentNode {\r\n name = [\"sub\", \"sup\", \"strong\", \"b\", \"u\", \"i\", \"br\"];\r\n\r\n render(node: Element, { mapNodeToJsx }: OzonContentNodeContext) {\r\n if (node.localName === \"br\") {\r\n return <br />;\r\n }\r\n\r\n const Tag = node.localName;\r\n\r\n return <Tag>{mapNodeToJsx(node.childNodes)}</Tag>;\r\n }\r\n}\r\n","import { Fragment, h } from \"@stencil/core\";\r\n\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentIntIoRefNode implements OzonContentNode {\r\n name = \"IntIoRef\";\r\n\r\n render(node: Element, { mapNodeToJsx, emitClick, urlResolver }: OzonContentNodeContext) {\r\n const ref = node.getAttribute(\"ref\");\r\n\r\n if (!ref) {\r\n return mapNodeToJsx(node.childNodes);\r\n }\r\n\r\n const href = urlResolver ? urlResolver(\"IntIoRef\", \"ref\", ref, node) : ref;\r\n\r\n const intIoRefOnClick = (event: MouseEvent) => {\r\n emitClick({\r\n type: \"IntIoRef\",\r\n node,\r\n originalEvent: event,\r\n });\r\n };\r\n\r\n return (\r\n <Fragment>\r\n <dso-ozon-content-toggletip icon=\"map-location\">\r\n <span slot=\"label\">{mapNodeToJsx(node.childNodes)}</span>\r\n <p>\r\n Gebieden op de kaart tonen:{\" \"}\r\n <button type=\"button\" class=\"dso-tertiary\" onClick={intIoRefOnClick}>\r\n <span>Kenmerken en kaart</span>\r\n <dso-icon icon=\"label\" />\r\n </button>\r\n </p>\r\n <p>\r\n Officiële publicaties:{\" \"}\r\n <a\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n href={href ?? undefined}\r\n title=\"Opent andere website in nieuw tabblad\"\r\n >\r\n <span>{mapNodeToJsx(node.childNodes)}</span>\r\n <dso-icon icon=\"external-link\" />\r\n </a>\r\n </p>\r\n </dso-ozon-content-toggletip>\r\n </Fragment>\r\n );\r\n }\r\n}\r\n","import { h } from \"@stencil/core\";\r\n\r\nimport { isModifiedEvent } from \"../../../utils/is-modified-event\";\r\nimport { parseXml } from \"../../../utils/parse-xml\";\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentIntRefNode implements OzonContentNode {\r\n name = \"IntRef\";\r\n\r\n render(node: Element, { mapNodeToJsx, emitClick, begripResolver, urlResolver }: OzonContentNodeContext) {\r\n const ref = node.getAttribute(\"ref\");\r\n\r\n if (!ref) {\r\n return mapNodeToJsx(node.childNodes);\r\n }\r\n\r\n const definitie = begripResolver?.(ref, node);\r\n\r\n if (definitie) {\r\n const definitieXMLDocument = typeof definitie === \"string\" ? parseXml(definitie) : definitie;\r\n\r\n if (\r\n !definitieXMLDocument ||\r\n definitieXMLDocument.documentElement.tagName !== \"Definitie\" ||\r\n !definitieXMLDocument.documentElement.hasChildNodes()\r\n ) {\r\n return mapNodeToJsx(node.childNodes);\r\n }\r\n\r\n return (\r\n <dso-ozon-content-toggletip icon=\"info\">\r\n <span slot=\"label\">{mapNodeToJsx(node.childNodes)}</span>\r\n {mapNodeToJsx(Array.from(definitieXMLDocument.documentElement.childNodes))}\r\n </dso-ozon-content-toggletip>\r\n );\r\n }\r\n\r\n const handleIntRefClick = (event: MouseEvent) => {\r\n emitClick({\r\n type: \"IntRef\",\r\n node,\r\n originalEvent: event,\r\n isModifiedEvent: isModifiedEvent(event),\r\n });\r\n };\r\n\r\n const href = urlResolver ? urlResolver(\"IntRef\", \"ref\", ref, node) : ref;\r\n\r\n return (\r\n <a href={href} onClick={handleIntRefClick}>\r\n {mapNodeToJsx(node.childNodes)}\r\n </a>\r\n );\r\n }\r\n}\r\n","import { Fragment, h } from \"@stencil/core\";\r\n\r\nimport { WrapWijzigactie } from \"../functional-components/wrap-wijzigactie.functional-component\";\r\nimport { parseWijzigactieFromNode } from \"../functions/parse-wijzigactie-from-node.function\";\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nfunction mapData(node: Element) {\r\n return {\r\n label: node.querySelector(\"Label\"),\r\n nummer: node.querySelector(\"Nummer\"),\r\n opschrift: node.querySelector(\"Opschrift\"),\r\n subtitels: Array.from(node.querySelectorAll(\"Subtitel\")),\r\n };\r\n}\r\n\r\nexport class OzonContentKopNode implements OzonContentNode {\r\n name = \"Kop\";\r\n\r\n handles = [\"Label\", \"Nummer\", \"Opschrift\", \"Subtitel\"];\r\n\r\n render(node: Element, { mapNodeToJsx, emitClick }: OzonContentNodeContext) {\r\n const handleKopClick = (event: MouseEvent) => {\r\n emitClick({\r\n type: \"Kop\",\r\n node,\r\n originalEvent: event,\r\n });\r\n };\r\n\r\n const { label, nummer, opschrift, subtitels } = mapData(node);\r\n\r\n const wijzigactieLabel = label ? parseWijzigactieFromNode(label) : undefined;\r\n const wijzigactieNummer = nummer ? parseWijzigactieFromNode(nummer) : undefined;\r\n const wijzigactieOpschrift = opschrift ? parseWijzigactieFromNode(opschrift) : undefined;\r\n\r\n return (\r\n <WrapWijzigactie wijzigactie={parseWijzigactieFromNode(node)}>\r\n <div onClick={handleKopClick} part=\"_kop\" class=\"kop\">\r\n {label && <WrapWijzigactie wijzigactie={wijzigactieLabel}>{mapNodeToJsx(label.childNodes)}</WrapWijzigactie>}\r\n {nummer && (\r\n <Fragment>\r\n {\" \"}\r\n <WrapWijzigactie wijzigactie={wijzigactieNummer}>{mapNodeToJsx(nummer.childNodes)}</WrapWijzigactie>\r\n </Fragment>\r\n )}\r\n {opschrift && (\r\n <Fragment>\r\n {\" \"}\r\n <WrapWijzigactie wijzigactie={wijzigactieOpschrift}>{mapNodeToJsx(opschrift.childNodes)}</WrapWijzigactie>\r\n </Fragment>\r\n )}\r\n </div>\r\n {subtitels.length > 0 && (\r\n <div class=\"subtitels-container\" part=\"_subtitels\">\r\n {subtitels.map((subtitel) => {\r\n const wijzigactieSubtitel = parseWijzigactieFromNode(subtitel);\r\n\r\n return (\r\n <div class=\"subtitel\">\r\n <WrapWijzigactie wijzigactie={wijzigactieSubtitel}>\r\n {mapNodeToJsx(subtitel.childNodes)}\r\n </WrapWijzigactie>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </WrapWijzigactie>\r\n );\r\n }\r\n}\r\n","import { h } from \"@stencil/core\";\r\nimport { clsx } from \"clsx\";\r\n\r\nimport { WrapWijzigactie } from \"../functional-components/wrap-wijzigactie.functional-component\";\r\nimport { parseWijzigactieFromNode } from \"../functions/parse-wijzigactie-from-node.function\";\r\nimport { wijzigactieToClassName } from \"../functions/wijzigactie-to-class-name.function\";\r\nimport { getNodeName } from \"../get-node-name.function\";\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentLijstNode implements OzonContentNode {\r\n name = \"Lijst\";\r\n\r\n render(node: Element, { mapNodeToJsx }: OzonContentNodeContext) {\r\n const wijzigactie = parseWijzigactieFromNode(node);\r\n const childNodes = Array.from(node.childNodes);\r\n const type = parseTypeFromLijstNode(node);\r\n const aanhef = childNodes.find((n) => getNodeName(n) === \"Lijstaanhef\");\r\n const sluiting = childNodes.find((n) => getNodeName(n) === \"Lijstsluiting\");\r\n const listItems = childNodes.filter((n) => getNodeName(n) === \"Li\");\r\n\r\n return (\r\n <WrapWijzigactie wijzigactie={wijzigactie}>\r\n <div class={clsx(\"dso-ozon-lijst od-Lijst\", wijzigactieToClassName(wijzigactie))}>\r\n {aanhef && mapNodeToJsx(aanhef)}\r\n <ul class={type}>\r\n {listItems.map((item) => {\r\n const itemNodes = Array.from(item.childNodes);\r\n const liNummer = itemNodes.find((n) => getNodeName(n) === \"LiNummer\")?.childNodes;\r\n const liWijzigactie = parseWijzigactieFromNode(item);\r\n\r\n return (\r\n <li class={clsx(\"od-Li\", wijzigactieToClassName(liWijzigactie))}>\r\n {liNummer && <span class=\"od-LiNummer\">{mapNodeToJsx(liNummer)}</span>}\r\n <WrapWijzigactie wijzigactie={liWijzigactie}>\r\n {mapNodeToJsx(itemNodes.filter((n) => getNodeName(n) !== \"LiNummer\"))}\r\n </WrapWijzigactie>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n {sluiting && mapNodeToJsx(sluiting)}\r\n </div>\r\n </WrapWijzigactie>\r\n );\r\n }\r\n}\r\n\r\nfunction parseTypeFromLijstNode(node: Node): LijstType | undefined {\r\n const type = node instanceof Element ? node.getAttribute(\"type\") : undefined;\r\n\r\n return type === \"expliciet\" || type === \"ongemarkeerd\" ? type : undefined;\r\n}\r\n\r\ntype LijstType = \"expliciet\" | \"ongemarkeerd\";\r\n","import { h } from \"@stencil/core\";\r\n\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentNieuweTekstNode implements OzonContentNode {\r\n name = \"NieuweTekst\";\r\n\r\n render(node: Element, { mapNodeToJsx }: OzonContentNodeContext) {\r\n return <ins class=\"new-text\">{mapNodeToJsx(node.childNodes)}</ins>;\r\n }\r\n}\r\n","import { Fragment, h } from \"@stencil/core\";\r\n\r\nimport { getNodeName } from \"../get-node-name.function\";\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentNootNode implements OzonContentNode {\r\n name = \"Noot\";\r\n\r\n handles = [\"NootNummer\"];\r\n\r\n identify(): string | undefined {\r\n return \"Noot\";\r\n }\r\n\r\n render(node: Element, { mapNodeToJsx, state: openNoteId, setState }: OzonContentNodeContext<string | undefined>) {\r\n const noteId = node.getAttribute(\"id\");\r\n if (!noteId) {\r\n console.error(\"Noot node without id\", node);\r\n\r\n return <Fragment />;\r\n }\r\n\r\n const noteControlsId = `dso-ozon-note-${noteId}`;\r\n\r\n const childNodes = Array.from(node.childNodes);\r\n const nootNummer = childNodes.find((n) => getNodeName(n) === \"NootNummer\")?.textContent ?? noteId;\r\n\r\n return (\r\n <Fragment>\r\n <sup>\r\n <button\r\n type=\"button\"\r\n class=\"toggle-note\"\r\n aria-describedby={noteControlsId}\r\n onClick={() => setState?.(openNoteId === noteId ? undefined : noteId)}\r\n onBlur={() => setState?.(undefined)}\r\n aria-expanded={openNoteId === noteId ? \"true\" : \"false\"}\r\n >\r\n {nootNummer}\r\n </button>\r\n </sup>\r\n <dso-tooltip active={openNoteId === noteId} id={noteControlsId} stateless descriptive>\r\n <span role=\"section\">{mapNodeToJsx(Array.from(node.querySelectorAll(\":scope > Al\")))}</span>\r\n </dso-tooltip>\r\n </Fragment>\r\n );\r\n }\r\n}\r\n","import { Colspec, Colspecs } from \"./colspec.interface\";\r\n\r\nexport function mapColspecs(count: number, nodeList: NodeListOf<Element>): Colspecs {\r\n const elements = Array.from(nodeList);\r\n const totalWidth = getTotalWidth(elements);\r\n\r\n return {\r\n totalWidth,\r\n count,\r\n columns: elements.map((element, index): Colspec => {\r\n const colNumber = element.getAttribute(\"colnum\");\r\n\r\n return {\r\n colsep: element.getAttribute(\"colsep\"),\r\n name: element.getAttribute(\"colname\") ?? \"\",\r\n number: colNumber ? parseInt(colNumber, 10) : index + 1,\r\n rowsep: element.getAttribute(\"rowsep\"),\r\n width: getWidth(totalWidth, element),\r\n };\r\n }),\r\n };\r\n}\r\n\r\nfunction getTotalWidth(elements: Element[]): number {\r\n return elements.reduce((totalWidth, element) => {\r\n const width = element.getAttribute(\"colwidth\")?.replace(/[^0-9]/, \"\") ?? \"\";\r\n const colWidth = parseInt(width, 10);\r\n\r\n return totalWidth + (isNaN(colWidth) ? 0 : colWidth);\r\n }, 0);\r\n}\r\n\r\nfunction getWidth(totalWidth: number, element: Element): string | undefined {\r\n const width = element.getAttribute(\"colwidth\");\r\n\r\n if (!width) {\r\n return undefined;\r\n }\r\n\r\n if (width === \"*\") {\r\n return \"100%\";\r\n }\r\n\r\n if (width.includes(\"*\") || width.match(/^[\\d+]$/)) {\r\n const colWidth = parseInt(width.replace(/[^0-9]/, \"\"), 10);\r\n\r\n return `${Math.round((colWidth / totalWidth) * 100)}%`;\r\n }\r\n\r\n return width;\r\n}\r\n","import { Fragment, FunctionalComponent, h } from \"@stencil/core\";\r\n\r\nimport { Colspecs } from \"./colspec/colspec.interface\";\r\n\r\nexport const Colgroup: FunctionalComponent<{ colspecs: Colspecs }> = ({ colspecs }) =>\r\n colspecs.columns.length > 0 ? (\r\n <colgroup>\r\n {colspecs.columns.map((colspec) => (\r\n <col style={{ width: colspec.width }} />\r\n ))}\r\n </colgroup>\r\n ) : (\r\n <Fragment />\r\n );\r\n","import { FunctionalComponent } from \"@stencil/core\";\r\nimport { h } from \"@stencil/core/internal\";\r\nimport { clsx } from \"clsx\";\r\n\r\nimport { WrapWijzigactie } from \"../../functional-components/wrap-wijzigactie.functional-component\";\r\nimport { wijzigactieToClassName } from \"../../functions/wijzigactie-to-class-name.function\";\r\nimport { OzonContentNodeContext } from \"../../ozon-content-node-context.interface\";\r\nimport { OzonContentWijzigActie } from \"../../ozon-content.interfaces\";\r\n\r\nimport { Colspecs } from \"./colspec/colspec.interface\";\r\n\r\nfunction getColspecStartColsep({ columns }: Colspecs, nameStart: string): string | null {\r\n const colspecStart = columns.find((c) => c.name === nameStart);\r\n\r\n return colspecStart ? colspecStart.colsep : null;\r\n}\r\n\r\nfunction getColspecStartRowsep({ columns }: Colspecs, nameStart: string): string | null {\r\n const colspecStart = columns.find((c) => c.name === nameStart);\r\n\r\n return colspecStart ? colspecStart.rowsep : null;\r\n}\r\n\r\nfunction getData(cell: Element, colspecs?: Colspecs) {\r\n const nameStart = cell.getAttribute(\"namest\");\r\n const row = cell.parentElement;\r\n const tgroup = row?.parentElement?.parentElement;\r\n const table = tgroup?.parentElement;\r\n const colsep =\r\n cell.getAttribute(\"colsep\") ||\r\n (colspecs && nameStart ? getColspecStartColsep(colspecs, nameStart) : null) ||\r\n (tgroup && tgroup.getAttribute(\"colsep\")) ||\r\n (table && table.getAttribute(\"colsep\"));\r\n const rowsep =\r\n cell.getAttribute(\"rowsep\") ||\r\n (row && row.getAttribute(\"rowsep\")) ||\r\n (colspecs && nameStart ? getColspecStartRowsep(colspecs, nameStart) : null) ||\r\n (tgroup && tgroup.getAttribute(\"rowsep\")) ||\r\n (table && table.getAttribute(\"rowsep\"));\r\n\r\n return {\r\n moreRows: cell.getAttribute(\"morerows\"),\r\n nameStart,\r\n nameEnd: cell.getAttribute(\"nameend\"),\r\n colsep,\r\n rowsep,\r\n };\r\n}\r\n\r\nfunction getColspan({ columns }: Colspecs, nameStart: string, nameEnd: string): number | undefined {\r\n const colspecStart = columns.find((c) => c.name === nameStart);\r\n const colspecEnd = columns.find((c) => c.name === nameEnd);\r\n if (!colspecStart || !colspecEnd) {\r\n return undefined;\r\n }\r\n\r\n const colspan = colspecEnd.number - colspecStart.number + 1;\r\n\r\n return colspan === 1 ? undefined : colspan;\r\n}\r\n\r\nexport const Cell: FunctionalComponent<{\r\n context: OzonContentNodeContext;\r\n colspecs: Colspecs | undefined;\r\n cell: Element;\r\n wijzigactie: OzonContentWijzigActie | undefined;\r\n}> = ({ context: { mapNodeToJsx }, colspecs, cell, wijzigactie }) => {\r\n const { moreRows, nameStart, nameEnd, colsep, rowsep } = getData(cell, colspecs);\r\n\r\n return (\r\n <td\r\n class={clsx(\r\n { \"dso-horizontal-line\": rowsep !== \"0\" },\r\n { \"dso-vertical-line\": colsep !== \"0\" },\r\n wijzigactieToClassName(wijzigactie),\r\n )}\r\n rowSpan={moreRows ? parseInt(moreRows, 10) + 1 : undefined}\r\n colSpan={colspecs && nameStart && nameEnd ? getColspan(colspecs, nameStart, nameEnd) : undefined}\r\n >\r\n <WrapWijzigactie wijzigactie={wijzigactie}>{mapNodeToJsx(cell.childNodes)}</WrapWijzigactie>\r\n </td>\r\n );\r\n};\r\n","import { Fragment, FunctionalComponent, h } from \"@stencil/core\";\r\n\r\nimport { parseWijzigactieFromNode } from \"../../functions/parse-wijzigactie-from-node.function\";\r\nimport { OzonContentNodeContext } from \"../../ozon-content-node-context.interface\";\r\n\r\nimport { Colspecs } from \"./colspec/colspec.interface\";\r\nimport { Cell } from \"./table-cell\";\r\n\r\nexport const Rows: FunctionalComponent<{\r\n context: OzonContentNodeContext;\r\n colspecs: Colspecs | undefined;\r\n rows: Element[];\r\n}> = ({ context, colspecs, rows }) => {\r\n return (\r\n <Fragment>\r\n {rows.map((row) => (\r\n <tr>\r\n {Array.from(row.children).map((cell) => (\r\n <Cell cell={cell} colspecs={colspecs} context={context} wijzigactie={parseWijzigactieFromNode(row)} />\r\n ))}\r\n </tr>\r\n ))}\r\n </Fragment>\r\n );\r\n};\r\n","import { h } from \"@stencil/core\";\r\nimport { clsx } from \"clsx\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\n\r\nimport { getNodeName } from \"../../get-node-name.function\";\r\nimport { OzonContentNodeContext } from \"../../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../../ozon-content-node.interface\";\r\n\r\nimport { mapColspecs } from \"./colspec/colspec-mapper\";\r\nimport { Colgroup } from \"./table-colgroup\";\r\nimport { Rows } from \"./table-rows\";\r\n\r\nfunction mapData(node: Element) {\r\n const tgroup = node.querySelector(\":scope > tgroup\");\r\n const colAttribute = tgroup?.getAttribute(\"cols\") ?? undefined;\r\n const columnCount = colAttribute ? parseInt(colAttribute, 10) : undefined;\r\n\r\n return {\r\n caption: node.querySelector(\":scope > title\")?.textContent ?? undefined,\r\n colspecs: tgroup && columnCount ? mapColspecs(columnCount, tgroup.querySelectorAll(\":scope > colspec\")) : undefined,\r\n headRows: Array.from(node.querySelectorAll(\":scope > tgroup > thead > row\")),\r\n bodyRows: Array.from(node.querySelectorAll(\":scope > tgroup > tbody > row\")),\r\n wijzigactie: node.getAttribute(\"wijzigactie\"),\r\n frame: node.getAttribute(\"frame\") ? node.getAttribute(\"frame\") : \"all\",\r\n };\r\n}\r\n\r\nexport class OzonContentTableNode implements OzonContentNode {\r\n name = \"table\";\r\n\r\n handles = [\"title\", \"tgroup\", \"colspec\", \"thead\", \"tbody\", \"row\", \"cell\"];\r\n\r\n id = uuidv4();\r\n\r\n render(node: Element, context: OzonContentNodeContext) {\r\n const { caption, colspecs, headRows, bodyRows, wijzigactie, frame } = mapData(node);\r\n\r\n const bron = Array.from(node.childNodes).find((n) => getNodeName(n) === \"Bron\");\r\n\r\n return (\r\n <dso-table>\r\n <table\r\n class={clsx(\"table\", {\r\n \"editaction-add\": wijzigactie === \"voegtoe\",\r\n \"editaction-remove\": wijzigactie === \"verwijder\",\r\n [`dso-table-outside-lines-${frame}`]: frame,\r\n })}\r\n {...(bron ? { \"aria-describedby\": this.id } : {})}\r\n >\r\n {caption && <caption>{caption}</caption>}\r\n {colspecs && <Colgroup colspecs={colspecs} />}\r\n {headRows.length > 0 && (\r\n <thead>\r\n <Rows rows={headRows} colspecs={colspecs} context={context}></Rows>\r\n </thead>\r\n )}\r\n {bodyRows.length > 0 && (\r\n <tbody>\r\n <Rows rows={bodyRows} colspecs={colspecs} context={context}></Rows>\r\n </tbody>\r\n )}\r\n </table>\r\n {bron && <div id={this.id}>{context.mapNodeToJsx(bron)}</div>}\r\n </dso-table>\r\n );\r\n }\r\n}\r\n","import { Fragment, h } from \"@stencil/core\";\r\n\r\nimport { MarkText } from \"../../../functional-components/mark-text/mark-text.functional-component\";\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentTextNode implements OzonContentNode {\r\n name = \"#text\";\r\n\r\n render({ textContent }: Node, { mark, emitMarkItemHighlight }: OzonContentNodeContext) {\r\n if (!mark || !textContent) {\r\n return <Fragment>{textContent}</Fragment>;\r\n }\r\n\r\n return <MarkText mark={mark} text={textContent} emitMarkItemHighlight={emitMarkItemHighlight} />;\r\n }\r\n}\r\n","import { h } from \"@stencil/core\";\r\n\r\nimport { OzonContentNodeContext } from \"../ozon-content-node-context.interface\";\r\nimport { OzonContentNode } from \"../ozon-content-node.interface\";\r\n\r\nexport class OzonContentVerwijderdeTekstNode implements OzonContentNode {\r\n name = \"VerwijderdeTekst\";\r\n\r\n render(node: Element, { mapNodeToJsx }: OzonContentNodeContext) {\r\n return <del class=\"removed-text\">{mapNodeToJsx(node.childNodes)}</del>;\r\n }\r\n}\r\n","import { Fragment, JSX, h } from \"@stencil/core\";\r\n\r\nimport { parseXml } from \"../../utils/parse-xml\";\r\n\r\nimport { getNodeName } from \"./get-node-name.function\";\r\nimport { OzonContentAbbrNode } from \"./nodes/abbr.node\";\r\nimport { OzonContentAlNode } from \"./nodes/al.node\";\r\nimport { OzonContentBegripNode } from \"./nodes/begrip.node\";\r\nimport { OzonContentBegrippenlijstNode } from \"./nodes/begrippenlijst.node\";\r\nimport { OzonContentBronNode } from \"./nodes/bron.node\";\r\nimport { OzonContentDocumentNode } from \"./nodes/document.node\";\r\nimport { OzonContentExtRefNode } from \"./nodes/ext-ref.node\";\r\nimport { OzonContentFallbackNode } from \"./nodes/fallback.node\";\r\nimport { OzonContentFiguurNode } from \"./nodes/figuur.node\";\r\nimport { OzonContentInhoudNode } from \"./nodes/inhoud.node\";\r\nimport { OzonContentInlineTekstAfbeeldingNode } from \"./nodes/inline-tekst-afbeelding.node\";\r\nimport { OzonContentInlineNodes } from \"./nodes/inline.nodes\";\r\nimport { OzonContentIntIoRefNode } from \"./nodes/int-io-ref.node\";\r\nimport { OzonContentIntRefNode } from \"./nodes/int-ref.node\";\r\nimport { OzonContentKopNode } from \"./nodes/kop.node\";\r\nimport { OzonContentLijstNode } from \"./nodes/lijst.node\";\r\nimport { OzonContentNieuweTekstNode } from \"./nodes/nieuwe-tekst.node\";\r\nimport { OzonContentNootNode } from \"./nodes/noot.node\";\r\nimport { OzonContentTableNode } from \"./nodes/table.node\";\r\nimport { OzonContentTextNode } from \"./nodes/text.node\";\r\nimport { OzonContentVerwijderdeTekstNode } from \"./nodes/verwijderde-tekst.node\";\r\nimport { OzonContentContext } from \"./ozon-content-context.interface\";\r\nimport { OzonContentNode } from \"./ozon-content-node.interface\";\r\nimport { OzonContentInputType } from \"./ozon-content.interfaces\";\r\n\r\nexport class Mapper {\r\n private mappers: OzonContentNode[] = [\r\n new OzonContentAbbrNode(),\r\n new OzonContentBegrippenlijstNode(),\r\n new OzonContentBegripNode(),\r\n new OzonContentTextNode(),\r\n new OzonContentDocumentNode(),\r\n new OzonContentInhoudNode(),\r\n new OzonContentKopNode(),\r\n new OzonContentIntRefNode(),\r\n new OzonContentExtRefNode(),\r\n new OzonContentAlNode(),\r\n new OzonContentInlineNodes(),\r\n new OzonContentInlineTekstAfbeeldingNode(),\r\n new OzonContentNootNode(),\r\n new OzonContentTableNode(),\r\n new OzonContentIntIoRefNode(),\r\n new OzonContentFiguurNode(),\r\n new OzonContentLijstNode(),\r\n new OzonContentBronNode(),\r\n new OzonContentNieuweTekstNode(),\r\n new OzonContentVerwijderdeTekstNode(),\r\n ];\r\n\r\n private skip = this.mappers.reduce<string[]>((t, m) => {\r\n if (m.handles) {\r\n t.push(...m.handles);\r\n }\r\n\r\n return t;\r\n }, []);\r\n\r\n private fallbackNode = new OzonContentFallbackNode();\r\n\r\n private findMapper(name: string): OzonContentNode | undefined {\r\n if (this.skip.includes(name)) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n this.mappers.find((m) => {\r\n if (Array.isArray(m.name)) {\r\n return m.name.includes(name);\r\n }\r\n\r\n return m.name === name;\r\n }) ?? this.fallbackNode\r\n );\r\n }\r\n\r\n mapNodeToJsx(node: Node | Node[] | NodeList, context: OzonContentContext, path: Node[]): JSX.Element {\r\n if (node instanceof NodeList) {\r\n return <Fragment>{Array.from(node).map((n) => this.mapNodeToJsx(n, context, path))}</Fragment>;\r\n }\r\n\r\n if (Array.isArray(node)) {\r\n return <Fragment>{node.map((n) => this.mapNodeToJsx(n, context, path))}</Fragment>;\r\n }\r\n\r\n const nodeName = getNodeName(node);\r\n const mapper = this.findMapper(nodeName);\r\n if (!mapper) {\r\n return <Fragment />;\r\n }\r\n\r\n const identity = mapper.identify?.(node);\r\n\r\n const state = identity ? context.state[identity] : undefined;\r\n const setState = identity ? (s: unknown) => context.setState({ ...context.state, [identity]: s }) : undefined;\r\n\r\n return mapper.render(node, {\r\n inline: context.inline,\r\n mark: context.mark,\r\n mapNodeToJsx: (n) => this.mapNodeToJsx(n, context, [...path, node]),\r\n emitClick: context.emitClick,\r\n setState,\r\n emitMarkItemHighlight: context.emitMarkItemHighlight,\r\n state,\r\n path,\r\n urlResolver: context.urlResolver,\r\n begripResolver: context.begripResolver,\r\n });\r\n }\r\n\r\n transform(input: OzonContentInputType | undefined, context: OzonContentContext): JSX.Element {\r\n if (!input) {\r\n return <Fragment />;\r\n }\r\n\r\n const doc = typeof input === \"string\" ? parseXml(input) : input;\r\n\r\n if (!doc) {\r\n return <Fragment />;\r\n }\r\n\r\n return this.mapNodeToJsx(doc.getRootNode(), context, []);\r\n }\r\n}\r\n","@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n\r\n@use \"~dso-toolkit/src/components/link\";\r\n@use \"~dso-toolkit/src/components/button/button.mixins\" as button-mixins;\r\n@use \"~dso-toolkit/src/components/insert\";\r\n@use \"~dso-toolkit/src/components/delete\";\r\n@use \"~dso-toolkit/src/components/rich-content\";\r\n\r\n@use \"~dso-toolkit/src/components/button/button\";\r\n@use \"~dso-toolkit/src/components/mark/mark\";\r\n@use \"~dso-toolkit/src/components/superscript/superscript\";\r\n@use \"~dso-toolkit/src/components/subscript/subscript\";\r\n@use \"~dso-toolkit/src/components/table/table\";\r\n\r\n@use \"./ozon-content.variables\" as ozon-content-variables;\r\n\r\n:host(:not([inline])) {\r\n display: block;\r\n}\r\n\r\n:host([inline]) {\r\n display: inline;\r\n}\r\n\r\nbutton.toggle-note {\r\n @include button-mixins.tertiary($modifiers: false);\r\n}\r\n\r\nspan[role=\"section\"],\r\nspan[role=\"paragraph\"] {\r\n display: block;\r\n}\r\n\r\nspan[role=\"paragraph\"] + span[role=\"paragraph\"] {\r\n margin-block: units.$u2 0;\r\n}\r\n\r\n:host(:not([inline])) .fallback {\r\n display: block;\r\n}\r\n\r\na {\r\n @include link.root();\r\n}\r\n\r\n// Styling below copied from DSO Viewer 20211011\r\n\r\n.od-Term {\r\n font-weight: 700;\r\n}\r\n\r\n.od-Definitie,\r\n.od-Tussenkop {\r\n font-style: italic;\r\n}\r\n\r\n.od-Inhoud,\r\n.od-Inhoud > .od-Lijst,\r\n.od-Lidnr,\r\n.od-LiNr,\r\n.od-Opschrift,\r\n.od-Tussenkop {\r\n display: inline;\r\n}\r\n\r\n.od-Al {\r\n margin-block-end: 0.75em;\r\n}\r\n\r\n.dso-ozon-bron {\r\n font-style: italic;\r\n font-size: 0.75rem;\r\n}\r\n\r\n.dso-ozon-figuur {\r\n text-align: var(--_dso-ozon-content-illustratie-uitlijning);\r\n margin-block-end: units.$u1;\r\n\r\n .figuur-bijschrift {\r\n display: block;\r\n font-size: 0.75rem;\r\n font-style: italic;\r\n }\r\n\r\n &.bijschrift-boven {\r\n .figuur-bijschrift {\r\n padding-block-end: 0.25rem;\r\n }\r\n }\r\n\r\n &.bijschrift-onder {\r\n .figuur-bijschrift {\r\n padding-block-start: 0.25rem;\r\n }\r\n }\r\n\r\n .figuur-titel {\r\n color: colors.$mauve;\r\n display: block;\r\n font-weight: 500;\r\n padding-block-end: 0.5rem;\r\n }\r\n\r\n > dso-image-overlay {\r\n inline-size: var(--_dso-ozon-content-illustratie-width);\r\n block-size: auto;\r\n max-block-size: 200vh;\r\n aspect-ratio: var(--_dso-ozon-content-illustratie-aspect-ratio);\r\n\r\n img {\r\n block-size: 100%;\r\n inline-size: 100%;\r\n }\r\n }\r\n}\r\n\r\n.dso-ozon-lijst {\r\n span.od-Lijstaanhef,\r\n span.od-Lijstsluiting {\r\n margin-block-end: units.$u1;\r\n }\r\n\r\n ul {\r\n margin-block-end: units.$u1 !important;\r\n margin-block-start: units.$u1;\r\n\r\n p {\r\n margin-block-end: units.$u1;\r\n }\r\n\r\n &.expliciet {\r\n list-style: none;\r\n\r\n > .od-Li {\r\n position: relative;\r\n\r\n > span.od-LiNummer {\r\n position: absolute;\r\n inset-inline-start: units.$u6 * -1 + 4;\r\n text-align: end;\r\n inline-size: units.$u5;\r\n }\r\n }\r\n }\r\n }\r\n\r\n p {\r\n margin: 0;\r\n }\r\n}\r\n\r\n.od-Tabel thead {\r\n font-weight: 600;\r\n}\r\n\r\n.od-Kadertekst {\r\n border: 1px solid #e5e5e5;\r\n margin-block-end: units.$u1;\r\n padding: units.$u1;\r\n}\r\n\r\np,\r\nspan[role=\"paragraph\"],\r\n.dso-ozon-lijst,\r\n.dso-ozon-lijst > ul > li,\r\ntable {\r\n &.editaction-add {\r\n @include insert.root();\r\n }\r\n\r\n &.editaction-remove {\r\n @include delete.root();\r\n }\r\n}\r\n\r\nins {\r\n @include insert.element();\r\n\r\n &.new-text {\r\n @include insert.root();\r\n }\r\n\r\n &.editaction-add {\r\n display: inline-block;\r\n margin-block-end: units.$u1;\r\n padding: units.$u1;\r\n\r\n @include insert.root();\r\n\r\n p:last-child {\r\n margin: 0;\r\n }\r\n }\r\n}\r\n\r\ndel {\r\n &.removed-text {\r\n @include delete.root();\r\n }\r\n\r\n &.editaction-remove {\r\n display: inline-block;\r\n margin-block-end: units.$u1;\r\n padding: units.$u1;\r\n @include delete.root();\r\n\r\n p:last-child {\r\n margin: 0;\r\n }\r\n }\r\n}\r\n\r\n.editaction-label {\r\n font-style: italic;\r\n}\r\n\r\n.dso-rich-content {\r\n @include rich-content.children();\r\n}\r\n\r\n.od-abbr {\r\n text-decoration: underline dotted;\r\n}\r\n\r\n.subtitels-container {\r\n cursor: default;\r\n}\r\n\r\n.subtitel {\r\n color: ozon-content-variables.$subtitel-color;\r\n font-weight: 700;\r\n margin-block: 0 units.$u2;\r\n margin-inline: 0;\r\n\r\n &:has(del, ins) {\r\n display: inline-block;\r\n inline-size: 100%;\r\n margin-inline: units.$u1 * -0.5;\r\n padding-inline: units.$u1 * 0.5;\r\n }\r\n\r\n &:has(del:not(.removed-text)) {\r\n @include delete.root();\r\n }\r\n\r\n &:has(ins:not(.new-text)) {\r\n @include insert.element();\r\n @include insert.root();\r\n }\r\n\r\n ins,\r\n del {\r\n color: ozon-content-variables.$subtitel-renvooi-color;\r\n }\r\n}\r\n\r\ntd {\r\n &.editaction-remove {\r\n @include delete.root();\r\n }\r\n &.editaction-add {\r\n @include insert.root();\r\n }\r\n}\r\n\r\n.begrippenlijst {\r\n .editaction-add {\r\n @include insert.root();\r\n }\r\n\r\n .editaction-remove {\r\n @include delete.root();\r\n\r\n dt,\r\n dd {\r\n @include delete.strikethrough();\r\n }\r\n }\r\n\r\n dt {\r\n display: inline-block;\r\n }\r\n}\r\n\r\n.kop {\r\n ins {\r\n @include insert.element();\r\n @include insert.root();\r\n }\r\n\r\n del {\r\n @include delete.root();\r\n }\r\n}\r\n","import {\r\n Component,\r\n ComponentInterface,\r\n Event,\r\n EventEmitter,\r\n Fragment,\r\n JSX,\r\n Prop,\r\n State,\r\n Watch,\r\n h,\r\n} from \"@stencil/core\";\r\n\r\nimport { MarkTextMarkFunction } from \"../../functional-components/mark-text/mark-text.interfaces\";\r\n\r\nimport { OzonContentContext } from \"./ozon-content-context.interface\";\r\nimport { Mapper } from \"./ozon-content-mapper\";\r\nimport { OzonContentNodeState } from \"./ozon-content-node-state.interface\";\r\nimport {\r\n OzonContentBegripResolver,\r\n OzonContentClickEvent,\r\n OzonContentInputType,\r\n OzonContentMarkItemHighlightEvent,\r\n OzonContentUrlResolver,\r\n} from \"./ozon-content.interfaces\";\r\n\r\nconst mapper = new Mapper();\r\n\r\n@Component({\r\n tag: \"dso-ozon-content\",\r\n styleUrl: \"ozon-content.scss\",\r\n shadow: true,\r\n})\r\nexport class OzonContent implements ComponentInterface {\r\n /**\r\n * The XML to be rendered.\r\n */\r\n @Prop()\r\n content?: OzonContentInputType;\r\n\r\n /**\r\n * Setting this property creates dso-ozon-content as inline element instead of a block element.\r\n */\r\n @Prop({ reflect: true })\r\n inline = false;\r\n\r\n /**\r\n * To mark text.\r\n */\r\n @Prop()\r\n mark?: MarkTextMarkFunction;\r\n\r\n /**\r\n * A UrlResolver that will be called for all STOP elements that render to HTML5 elements with external references.\r\n */\r\n @Prop()\r\n urlResolver?: OzonContentUrlResolver;\r\n\r\n /**\r\n * A BegripResolver that will be called for STOP element \"IntRef\". If the ref-attribute of IntRef points to a Begrip it\r\n * should return the `<Definitie>` of that Begrip otherwise it should return undefined.\r\n */\r\n @Prop()\r\n begripResolver?: OzonContentBegripResolver;\r\n\r\n /**\r\n * Emitted when an interactive element is clicked.\r\n */\r\n @Event({ bubbles: false })\r\n dsoClick!: EventEmitter<OzonContentClickEvent>;\r\n\r\n /**\r\n * Emitted when a marked item is highlighted.\r\n */\r\n @Event({ bubbles: false })\r\n dsoOzonContentMarkItemHighlight!: EventEmitter<OzonContentMarkItemHighlightEvent>;\r\n\r\n @Watch(\"content\")\r\n contentWatcher() {\r\n this.state = {};\r\n }\r\n\r\n @State()\r\n state: OzonContentNodeState = {};\r\n\r\n private handleMarkItemHighlight = (text: string, elementRef: HTMLElement) => {\r\n this.dsoOzonContentMarkItemHighlight.emit({ text, elementRef });\r\n };\r\n\r\n render(): JSX.Element {\r\n const context: OzonContentContext = {\r\n state: this.state,\r\n inline: this.inline,\r\n mark: this.mark,\r\n setState: (state) => (this.state = state),\r\n emitMarkItemHighlight: this.handleMarkItemHighlight,\r\n emitClick: this.dsoClick.emit,\r\n urlResolver: this.urlResolver,\r\n begripResolver: this.begripResolver,\r\n };\r\n\r\n const transformed = mapper.transform(this.content, context);\r\n\r\n return <Fragment>{transformed}</Fragment>;\r\n }\r\n}\r\n\r\nconst dependencies = () => {\r\n dependencies();\r\n\r\n return (\r\n <Fragment>\r\n <dso-icon />\r\n <dso-image-overlay />\r\n <dso-ozon-content-toggletip />\r\n <dso-tooltip />\r\n <dso-table />\r\n </Fragment>\r\n );\r\n};\r\n","@use \"~dso-toolkit/src/components/button\";\r\n@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/units\";\r\n\r\n@use \"../../../../functional-components/tooltip\";\r\n\r\n@include utilities.box-sizing();\r\n@include tooltip.include($max-inline-size: 60 * units.$u1);\r\n\r\n:host {\r\n display: inline-block;\r\n --_dt-rich-content-margin-block: #{units.$u1};\r\n}\r\n\r\n::slotted(:not([slot=\"label\"])) {\r\n cursor: default !important;\r\n}\r\n\r\n.toggletip-button {\r\n @include button.base($modifiers: false);\r\n\r\n // stylelint-disable-next-line no-duplicate-selectors -- needed to fix sass deprecation warnings: #2724\r\n & {\r\n border: 0;\r\n color: var(--_dso-ozon-content-toggletip-color, colors.$donkerblauw);\r\n line-height: 1;\r\n padding: 0;\r\n background-color: transparent;\r\n cursor: pointer;\r\n vertical-align: baseline;\r\n }\r\n\r\n &,\r\n &:hover,\r\n &:focus-visible,\r\n &:active {\r\n text-decoration-line: var(--_dso-ozon-content-toggletip-text-decoration, underline);\r\n text-decoration-style: dotted;\r\n text-underline-offset: 15%;\r\n }\r\n\r\n dso-icon {\r\n margin-inline-start: units.$u1 * 0.5;\r\n vertical-align: middle;\r\n }\r\n}\r\n","import { Component, ComponentInterface, Element, Fragment, Prop, State, h } from \"@stencil/core\";\r\n\r\nimport { positionTooltip } from \"../../../../functional-components/tooltip/position-tooltip.function\";\r\nimport { Tooltip } from \"../../../../functional-components/tooltip/tooltip.functional-component\";\r\nimport { TooltipClean } from \"../../../../functional-components/tooltip/tooltip.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-ozon-content-toggletip\",\r\n styleUrl: \"./ozon-content-toggletip.scss\",\r\n shadow: true,\r\n})\r\nexport class ozonContentToggletip implements ComponentInterface {\r\n @Element()\r\n host!: HTMLDsoOzonContentToggletipElement;\r\n\r\n /**\r\n * The alias of the icon in the button.\r\n */\r\n @Prop({ reflect: true })\r\n icon?: string;\r\n\r\n @State()\r\n active = false;\r\n\r\n @State()\r\n showToggletip = false;\r\n\r\n private container: HTMLButtonElement | undefined;\r\n private tooltip: HTMLElement | undefined;\r\n private tooltipArrow: HTMLElement | undefined;\r\n\r\n private click = () => {\r\n if (this.active) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n };\r\n\r\n private open = () => {\r\n this.active = true;\r\n this.host.addEventListener(\"keydown\", this.keyDownListener);\r\n this.host.addEventListener(\"focusout\", this.focusOutListener);\r\n };\r\n\r\n private close = () => {\r\n this.host.removeEventListener(\"focusout\", this.focusOutListener);\r\n this.host.removeEventListener(\"keydown\", this.keyDownListener);\r\n this.active = false;\r\n };\r\n\r\n private focusOutListener = (event: FocusEvent) => {\r\n if (!this.host.contains(event.relatedTarget as Node)) {\r\n this.close();\r\n }\r\n };\r\n\r\n private keyDownListener = (event: KeyboardEvent) => {\r\n if (event.key === \"Escape\") {\r\n this.close();\r\n }\r\n\r\n return;\r\n };\r\n\r\n componentDidRender() {\r\n if (this.tooltip) {\r\n if (this.active && !this.showToggletip) {\r\n this.tooltip.showPopover();\r\n this.showToggletip = true;\r\n } else if (!this.active && this.showToggletip) {\r\n this.tooltip?.hidePopover();\r\n this.showToggletip = false;\r\n }\r\n }\r\n\r\n let cleanUp: TooltipClean | undefined;\r\n\r\n if (this.active && !cleanUp && this.container && this.tooltip && this.tooltipArrow) {\r\n cleanUp = positionTooltip({\r\n referenceElement: this.container,\r\n tipRef: this.tooltip,\r\n tipArrowRef: this.tooltipArrow,\r\n placementTip: \"top\",\r\n });\r\n }\r\n\r\n if (!this.active && cleanUp) {\r\n cleanUp();\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <Fragment>\r\n <button class=\"toggletip-button\" ref={(element) => (this.container = element)} onClick={this.click}>\r\n <slot name=\"label\" />\r\n <dso-icon icon={this.icon} />\r\n <Tooltip\r\n visible\r\n onAfterHidden={() => {}}\r\n tipElementRef={(element) => (this.tooltip = element)}\r\n tipArrowElementRef={(element) => (this.tooltipArrow = element)}\r\n >\r\n <slot />\r\n </Tooltip>\r\n </button>\r\n </Fragment>\r\n );\r\n }\r\n}\r\n","import { Resource } from \"../../utils/i18n\";\r\n\r\nexport const translations: Resource = {\r\n en: {\r\n \"dso-panel\": {\r\n close: \"Close\",\r\n },\r\n },\r\n nl: {\r\n \"dso-panel\": {\r\n close: \"Sluiten\",\r\n },\r\n },\r\n};\r\n","@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/global/mixins/set-colors.mixin\" as set-colors;\r\n@use \"~dso-toolkit/src/di\";\r\n\r\n@use \"panel.variables\" as panel-variables;\r\n\r\n:host {\r\n display: block;\r\n\r\n border: 1px solid colors.$grijs-30;\r\n border-radius: units.$u1 * 0.5;\r\n\r\n overflow: hidden;\r\n}\r\n\r\n@include utilities.box-sizing();\r\n\r\n.panel-heading {\r\n display: flex;\r\n gap: units.$u2;\r\n justify-content: space-between;\r\n align-items: flex-start;\r\n\r\n padding-block: units.$u1;\r\n padding-inline-start: var(--panel-heading-padding-inline-start, panel-variables.$panel-heading-padding-inline-start);\r\n padding-inline-end: units.$u1;\r\n\r\n border-block-end: 1px solid colors.$grijs-30;\r\n\r\n border-start-start-radius: units.$u1 * 0.5;\r\n border-start-end-radius: units.$u1 * 0.5;\r\n border-color: colors.$grijs-30;\r\n\r\n @include set-colors.apply(colors.$grijs-10, \"panel\");\r\n\r\n .sr-only {\r\n @include utilities.sr-only();\r\n }\r\n}\r\n\r\n.emphasized .panel-heading {\r\n background-color: panel-variables.$background-color-emphasized;\r\n}\r\n\r\n::slotted([slot=\"heading\"]) {\r\n margin: 0 !important;\r\n font-size: 1rem !important;\r\n font-weight: 600 !important;\r\n line-height: 1.5 !important;\r\n color: colors.$zwart !important;\r\n}\r\n\r\n.panel-body {\r\n padding-block: units.$u2;\r\n padding-inline: var(--panel-body-padding-inline, panel-variables.$panel-body-padding-inline);\r\n\r\n background-color: var(--_dso-panel-body-background-color, transparent);\r\n}\r\n","import { Component, ComponentInterface, Element, Event, EventEmitter, Prop, h } from \"@stencil/core\";\r\nimport { clsx } from \"clsx\";\r\n\r\nimport { i18n } from \"../../utils/i18n\";\r\n\r\nimport { translations } from \"./panel.i18n\";\r\n\r\nexport interface PanelCloseEvent {\r\n originalEvent: Event;\r\n}\r\n\r\n/**\r\n * @slot - The contents to be highlighted within the panel\r\n * @slot heading - The heading (h2 - h6) with the title of the panel\r\n */\r\n@Component({\r\n tag: \"dso-panel\",\r\n styleUrl: \"panel.scss\",\r\n shadow: true,\r\n})\r\nexport class Panel implements ComponentInterface {\r\n @Element()\r\n host!: HTMLDsoPanelElement;\r\n\r\n /**\r\n * The accessible name for the close button.\r\n */\r\n @Prop()\r\n closeButtonLabel?: string;\r\n\r\n /**\r\n * To display the panel as an emphasized panel.\r\n */\r\n @Prop()\r\n emphasized = false;\r\n\r\n /**\r\n * Emitted when the user click the close button.\r\n */\r\n @Event()\r\n dsoCloseClick!: EventEmitter<PanelCloseEvent>;\r\n\r\n private text = i18n(() => this.host, translations);\r\n\r\n render() {\r\n return (\r\n <div class={clsx([\"dso-panel\", { emphasized: this.emphasized }])}>\r\n <div class=\"panel-heading\">\r\n <slot name=\"heading\" />\r\n <dso-icon-button\r\n icon=\"times\"\r\n variant=\"tertiary\"\r\n onDsoClick={(e) => this.dsoCloseClick.emit({ originalEvent: e.detail.originalEvent })}\r\n label={this.closeButtonLabel || this.text(\"close\")}\r\n />\r\n </div>\r\n <div class=\"panel-body\">\r\n <slot></slot>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n","@use \"sass:color\";\r\n\r\n@use \"~dso-toolkit/src/components/grid/grid.variables\" as grid-variables;\r\n@use \"~dso-toolkit/src/components/modal/modal.variables\" as modal-variables;\r\n\r\n@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/media-query-breakpoints\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n@use \"~dso-toolkit/src/utilities\";\r\n\r\n@use \"~dso-toolkit/src/components/button/button\";\r\n@use \"~dso-toolkit/src/components/modal\";\r\n@use \"~dso-toolkit/src/components/rich-content\";\r\n@use \"~dso-toolkit/src/components/table\";\r\n\r\n:host {\r\n display: block;\r\n margin-block-end: units.$u3;\r\n}\r\n\r\n.dso-header {\r\n min-block-size: units.$u4;\r\n\r\n h2 {\r\n color: colors.$bosgroen;\r\n font-size: units.$font-size-h2;\r\n font-weight: 700;\r\n }\r\n\r\n .dso-close {\r\n color: colors.$bosgroen;\r\n }\r\n}\r\n\r\n:host .dso-modal {\r\n inset: 0px;\r\n block-size: 100%;\r\n position: fixed;\r\n z-index: zindex.$modal;\r\n\r\n @include modal.root();\r\n}\r\n\r\n.dso-modal .dso-dialog.dso-table-dialog {\r\n margin-block-start: 1rem;\r\n max-inline-size: calc(100% - 2rem);\r\n margin-inline-start: auto;\r\n margin-inline-end: auto;\r\n inline-size: auto;\r\n\r\n .dso-body {\r\n $dso-body-unavailable-height: (\r\n (2 * modal.$header-padding) + (modal.$footer-button-block-size + modal.$footer-padding)\r\n );\r\n max-block-size: calc(100vh - #{$dso-body-unavailable-height} - 1.5em - 2rem); // margin\r\n }\r\n\r\n @media screen and (max-width: media-query-breakpoints.$screen-xs-max) {\r\n max-inline-size: 100%;\r\n }\r\n}\r\n\r\n:host([is-responsive=\"true\"]) {\r\n .dso-table-body {\r\n border: 1px solid table.$border-color;\r\n margin-block-end: 0;\r\n overflow-y: auto;\r\n inline-size: 100%;\r\n\r\n &.dso-body {\r\n inline-size: calc(100% - modal.$body-padding * 2);\r\n }\r\n }\r\n}\r\n\r\n.dso-table-utilities {\r\n align-items: center;\r\n display: flex;\r\n justify-content: space-between;\r\n margin-block-end: units.$u1;\r\n\r\n .dso-responsive-message {\r\n margin-block-end: 0;\r\n\r\n &:only-child {\r\n inline-size: 100%;\r\n }\r\n }\r\n\r\n .open-modal-button {\r\n &:only-child {\r\n margin-inline-start: auto;\r\n }\r\n }\r\n}\r\n\r\n.dso-responsive-message {\r\n font-size: 0.8em;\r\n margin-block-end: units.$u1;\r\n position: relative;\r\n text-align: center;\r\n}\r\n\r\n.sr-only {\r\n @include utilities.sr-only();\r\n}\r\n\r\n.dso-modal-overlay {\r\n background-color: color.scale(modal-variables.$backdrop-bg, $alpha: modal-variables.$backdrop-opacity);\r\n display: block;\r\n position: fixed;\r\n inset: 0;\r\n z-index: zindex.$modal-background-overlay;\r\n}\r\n\r\n.dso-table-placeholder {\r\n box-shadow: inset 0 0 0 1px table.$border-color;\r\n display: grid;\r\n place-content: center;\r\n}\r\n","import { Component, ComponentInterface, Element, Host, Prop, State, h } from \"@stencil/core\";\r\nimport debounce from \"debounce\";\r\nimport { FocusTrap, createFocusTrap } from \"focus-trap\";\r\nimport { v4 } from \"uuid\";\r\n\r\n@Component({\r\n tag: \"dso-table\",\r\n styleUrl: \"table.scss\",\r\n shadow: true,\r\n})\r\nexport class Table implements ComponentInterface {\r\n private resizeObserver?: ResizeObserver;\r\n\r\n private focusTrapElement?: HTMLDivElement;\r\n\r\n private buttonElement?: HTMLButtonElement;\r\n\r\n private trap?: FocusTrap;\r\n\r\n private labelledbyId = v4();\r\n\r\n @Element()\r\n host!: HTMLDsoTableElement;\r\n\r\n /**\r\n * Prevents the table being opened in a modal.\r\n */\r\n @Prop({ reflect: true })\r\n noModal = false;\r\n\r\n @State()\r\n isResponsive?: boolean;\r\n\r\n @State()\r\n modalActive = false;\r\n\r\n @State()\r\n placeholderHeight?: number;\r\n\r\n private startResponsiveBehavior(): void {\r\n this.resizeObserver?.observe(this.host);\r\n }\r\n\r\n componentWillLoad(): void {\r\n this.resizeObserver = new ResizeObserver(debounce((entries) => this.setResponsiveTable(entries), 200));\r\n }\r\n\r\n componentDidLoad(): void {\r\n this.startResponsiveBehavior();\r\n }\r\n\r\n componentDidRender() {\r\n this.setFocusTrap();\r\n }\r\n\r\n disconnectedCallback() {\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n render() {\r\n const caption = this.host.querySelector(\":scope > table > caption\")?.textContent?.trim();\r\n\r\n return (\r\n <Host is-responsive={this.isResponsive?.toString()}>\r\n {this.modalActive && this.placeholderHeight && (\r\n <div class=\"dso-table-placeholder\" style={{ height: `${this.placeholderHeight}px` }} />\r\n )}\r\n\r\n {this.modalActive && <div class=\"dso-modal-overlay\"></div>}\r\n\r\n <div class={{ \"dso-modal\": this.modalActive }}>\r\n <div\r\n class={{ \"dso-dialog\": this.modalActive, \"dso-table-dialog\": true }}\r\n ref={(element) => (this.focusTrapElement = element)}\r\n {...(this.modalActive ? { [\"aria-labelledby\"]: this.labelledbyId, role: \"dialog\" } : {})}\r\n >\r\n {(this.isResponsive || !this.noModal) && (\r\n <div class=\"dso-table-utilities\" style={this.modalActive ? { display: \"none\" } : undefined}>\r\n {this.isResponsive && (\r\n <div class=\"dso-responsive-message\">\r\n <span>beweeg de tabel van links naar rechts</span>\r\n </div>\r\n )}\r\n\r\n {!this.noModal && (\r\n <button\r\n type=\"button\"\r\n class=\"dso-tertiary open-modal-button\"\r\n ref={(element) => (this.buttonElement = element)}\r\n onClick={() => this.openModal()}\r\n >\r\n <span class=\"sr-only\">tabel {caption ?? \"\"} </span>\r\n <span>vergroten</span>\r\n <dso-icon icon=\"external-link\"></dso-icon>\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n\r\n {this.modalActive && (\r\n <div class=\"dso-header\">\r\n <h2 id={this.labelledbyId} class={{ \"sr-only\": !caption }}>\r\n {caption || \"Uitvergrote tabel dialoog\"}\r\n </h2>\r\n <button type=\"button\" class=\"dso-close\" onClick={() => this.closeModal()}>\r\n <dso-icon icon=\"times\"></dso-icon>\r\n <span class=\"sr-only\">Sluiten</span>\r\n </button>\r\n </div>\r\n )}\r\n\r\n <div class={{ \"dso-body\": this.modalActive, \"dso-table-body\": true }}>\r\n <slot></slot>\r\n </div>\r\n </div>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n private openModal() {\r\n this.placeholderHeight = this.host.clientHeight;\r\n this.modalActive = true;\r\n }\r\n\r\n private closeModal() {\r\n this.placeholderHeight = undefined;\r\n this.modalActive = false;\r\n }\r\n\r\n private setFocusTrap() {\r\n if (this.modalActive && this.focusTrapElement && !this.trap) {\r\n this.trap = createFocusTrap([this.host, this.focusTrapElement], {\r\n escapeDeactivates: true,\r\n clickOutsideDeactivates: (e) => {\r\n if (e instanceof MouseEvent && e.composedPath()[0] === this.focusTrapElement) {\r\n this.closeModal();\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n setReturnFocus: this.buttonElement ?? false,\r\n onDeactivate: () => this.closeModal(),\r\n tabbableOptions: {\r\n getShadowRoot: true,\r\n },\r\n }).activate();\r\n } else if (!this.modalActive && this.trap) {\r\n this.trap?.deactivate();\r\n\r\n delete this.trap;\r\n }\r\n }\r\n\r\n private setResponsiveTable([dsoTable]: ResizeObserverEntry[]): void {\r\n if (!dsoTable) {\r\n throw new Error(\"No dsoTable found\");\r\n }\r\n\r\n const tableElement = dsoTable.target.querySelector(\"table\");\r\n\r\n if (dsoTable && tableElement instanceof HTMLTableElement) {\r\n this.isResponsive =\r\n Math.floor(tableElement.getBoundingClientRect().width) > Math.floor(dsoTable.contentRect.width);\r\n }\r\n }\r\n}\r\n"],"mappings":"4eAEO,MAAMA,EAAyB,CACpCC,GAAI,CACF,YAAa,CACXC,MAAO,QACPC,QAAS,UACTC,KAAM,SACNC,QAAS,UACTC,MAAO,UAGXC,GAAI,CACF,YAAa,CACXL,MAAO,UACPC,QAAS,SACTC,KAAM,YACNC,QAAS,eACTC,MAAO,UClBb,MAAME,EAAW,2gN,MCaJC,EAAK,MALlB,WAAAC,CAAAC,G,6CA+BEC,KAAQC,SAAG,MAQHD,KAAAE,KAAOC,GAAK,IAAMH,KAAKI,MAAMhB,EA4BtC,CA1BC,MAAAiB,GACE,MAAMC,EAASN,KAAKE,KAAKF,KAAKM,QAC9B,IAAKA,EAAQ,CACX,MAAM,IAAIC,MAAM,kBAAkBP,KAAKM,S,CAGzC,OACEE,EAAA,OAAAC,IAAA,2CACEC,MAAOC,EAAK,QAAS,SAASX,KAAKM,SAAU,CAAE,cAAeN,KAAKY,UACnEC,KAAMb,KAAKc,UAAY,QAAUC,YAE/Bf,KAAKY,SAAWJ,EAAA,YAAAC,IAAA,2CAAUC,MAAM,cAAcM,KAAM,UAAYhB,KAAKM,SACvEE,EAAM,QAAAC,IAAA,2CAAAC,MAAM,WAAWJ,EAAe,KACtCE,EAAa,QAAAC,IAAA,6CAEZT,KAAKC,UACJO,EAAA,mBAAAC,IAAA,2CACEQ,MAAOjB,KAAKE,KAAK,SACjBgB,QAAQ,WACRF,KAAK,QACLG,WAAaC,GAAMpB,KAAKqB,SAASC,KAAK,CAAEC,cAAeH,M,uCCrEnE,MAAMI,EAAW,49S,MCUJC,EAAK,M,yBAOhB,MAAApB,GACE,OACEG,EAAA,QAAAC,IAAA,2CAAMC,MAAOC,EAAK,YAAa,CAAE,CAAC,SAASX,KAAKM,UAAWN,KAAKM,UAC9DE,EAAa,QAAAC,IAAA,6C,aCpBrB,MAAMiB,EAAkB,+yPCiBxB,MAAMC,EAA0E,CAC9EC,UAAW,aACXC,QAAS,cAGX,MAAMC,EAMD,EAAGC,SAAQC,MAAKC,MAAKC,MAAKC,SAASC,IACtCL,GACAC,GACExB,EAAK,OAAAE,MAAM,UACTF,EAAA,OAAKE,MAAM,UAAUwB,IAAKA,GACvBE,EAAS,GACTA,EAAS,GACV5B,EAAA,OAAKwB,IAAKA,EAAKC,IAAKA,IACpBzB,EAAA,mBAAiBQ,KAAK,QAAQE,QAAQ,MAAMR,MAAM,QAAQO,MAAM,UAAUE,WAAYgB,IACrFC,EAAS,K,MAULC,EAAY,MALzB,WAAAvC,CAAAC,G,UAgBEC,KAAM+B,OAAG,MAGT/B,KAAQsC,SAAG,MAQHtC,KAASuC,UAAuB,KAEhCvC,KAAcwC,eAAuB,IA6M9C,CAtMC,YAAAC,CAAaC,GACX,GAAIA,EAAMC,kBAAkBC,iBAAkB,CAC5C5C,KAAK6C,YAAYH,EAAMC,O,EAI3B,iBAAAG,GACE9C,KAAKuC,UAAYvC,KAAKI,KAAK2C,cAA8B,qBAEzD/C,KAAKwC,eAAiBxC,KAAKI,KAAK2C,cAA8B,yB,CAGhE,gBAAAC,GACEhD,KAAKiD,eAAiB,IAAIC,eACxBC,GAAS,KACP,MAAMC,EAAapD,KAAKI,KAAK2C,cAAc,OAE3C,GAAIK,aAAsBR,iBAAkB,CAC1C5C,KAAK6C,YAAYO,E,IAElB,MAGLpD,KAAKqD,iBAAmB,IAAIC,kBAAkBlC,I,QAC5CmC,EAAYvD,KAAKI,MAEjB,KAAIoD,EAAApC,EAAE,MAAE,MAAAoC,SAAA,SAAAA,EAAEC,QAAS,YAAa,EAC9BC,EAAA1D,KAAKiD,kBAAgB,MAAAS,SAAA,SAAAA,EAAAC,aAErB3D,KAAK4D,mB,KAIT5D,KAAKqD,iBAAiBQ,QAAQ7D,KAAKI,KAAM,CACvC0D,WAAY,KACZC,QAAS,KACTC,gBAAiB,CAAC,MAAO,OACzBC,UAAW,OAGbjE,KAAK4D,mB,CAGP,oBAAAM,G,WACEV,EAAAxD,KAAKmE,QAAM,MAAAX,SAAA,SAAAA,EAAAY,cACXV,EAAA1D,KAAKqD,oBAAkB,MAAAK,SAAA,SAAAA,EAAAC,cACvBU,EAAArE,KAAKiD,kBAAgB,MAAAoB,SAAA,SAAAA,EAAAV,Y,CAGf,iBAAAC,G,MACN,MAAMR,EAAapD,KAAKI,KAAK2C,cAAc,OAE3C,KAAMK,aAAsBR,kBAAmB,CAC7C,M,CAIF,GAAIQ,EAAWkB,SAAU,CACvBtE,KAAK6C,YAAYO,E,EAGnBI,EAAAxD,KAAKiD,kBAAc,MAAAO,SAAA,SAAAA,EAAEK,QAAQT,E,CAGvB,WAAAP,CAAY0B,GAClB,MAAMC,MAAEA,EAAKC,aAAEA,EAAYC,OAAEA,EAAMC,cAAEA,GAAkBJ,EAEvDvE,KAAKsC,SAAWkC,EAAQC,GAAgBC,EAASC,C,CAG3C,aAAAC,CAAcC,GACpB,OAAOA,IAAgB,WAAaA,IAAgB,W,CAGtD,MAAAxE,G,MACE,MAAM2B,IAAEA,EAAGC,IAAEA,IAAQuB,EAAAxD,KAAKI,KAAK2C,cAAc,UAAM,MAAAS,SAAA,EAAAA,EAAI,GAEvD,MAAMsB,EACH9E,KAAK6E,aAAe7E,KAAK4E,cAAc5E,KAAK6E,cAAgBlD,EAAkB3B,KAAK6E,cAAiB9D,UAEvG,MAAMgE,EAAS/E,KAAKsC,UAClB9B,EAAA,mBACEQ,KAAK,gBACLN,MAAM,OACNQ,QAAQ,MACRD,MAAM,gCACNiB,IAAM8C,GAAahF,KAAKiF,kBAAoBD,EAC5C7D,WAAY,IAAOnB,KAAK+B,OAAS,OAIrC,GAAI/B,KAAK6E,cAAgB,YAAa,CACpC,OACErE,EAAC0E,EAAI,CAACC,QAAS,KAAK,IAAA3B,EAAC,OAAAA,EAAAxD,KAAKiF,qBAAiB,MAAAzB,SAAA,SAAAA,EAAE4B,UAAU,GACrD5E,EAAK,OAAAE,MAAM,qBACTF,EAAK,OAAAE,MAAM,oBAAoBoE,EAAuB,KACtDtE,EAACsB,EACC,CAAAC,OAAQ/B,KAAK+B,OACbC,IAAKA,EACLC,IAAKA,EACLC,IAAM8C,GAAahF,KAAKqF,eAAiBL,EACzC7C,MAAO,IAAOnC,KAAK+B,OAAS,OAE3B/B,KAAKuC,WACJ/B,EAAK,OAAAE,MAAM,SACTF,EAAA,QAAM8E,KAAK,WAGf9E,EAAK,OAAAE,MAAM,oBAAoB6E,QAASvF,KAAKwC,gBAC3ChC,EAAA,QAAM8E,KAAK,gBAEZ9E,EAAK,OAAAE,MAAM,oBAAoBoE,EAAe,MAEjDtE,EAAQ,aACPuE,G,CAMT,GAAI/E,KAAK6E,cAAgB,UAAW,CAClC,OACErE,EAAC0E,EAAI,CAACC,QAAS,KAAK,IAAA3B,EAAC,OAAAA,EAAAxD,KAAKiF,qBAAiB,MAAAzB,SAAA,SAAAA,EAAE4B,UAAU,GACrD5E,EAAK,OAAAE,MAAM,kBACTF,EAAK,OAAAE,MAAM,oBAAoBoE,EAAuB,KACtDtE,EAACsB,EACC,CAAAC,OAAQ/B,KAAK+B,OACbC,IAAKA,EACLC,IAAKA,EACLC,IAAM8C,GAAahF,KAAKqF,eAAiBL,EACzC7C,MAAO,IAAOnC,KAAK+B,OAAS,OAE3B/B,KAAKuC,WACJ/B,EAAK,OAAAE,MAAM,SACTF,EAAA,QAAM8E,KAAK,WAGf9E,EAAK,OAAAE,MAAM,oBAAoB6E,QAASvF,KAAKwC,gBAC3ChC,EAAA,QAAM8E,KAAK,gBAEZ9E,EAAK,OAAAE,MAAM,oBAAoBoE,EAAe,MAEjDtE,EAAQ,aACPuE,G,CAMT,OACEvE,EAAC0E,EAAI,CAACC,QAAS,KAAK,IAAA3B,EAAC,OAAAA,EAAAxD,KAAKiF,qBAAiB,MAAAzB,SAAA,SAAAA,EAAE4B,UAAU,GACrD5E,EAACsB,EACC,CAAAC,OAAQ/B,KAAK+B,OACbC,IAAKA,EACLC,IAAKA,EACLC,IAAM8C,GAAahF,KAAKqF,eAAiBL,EACzC7C,MAAO,IAAOnC,KAAK+B,OAAS,OAE3B/B,KAAKuC,WACJ/B,EAAK,OAAAE,MAAM,SACTF,EAAA,QAAM8E,KAAK,WAGf9E,EAAK,OAAAE,MAAM,oBAAoB6E,QAASvF,KAAKwC,gBAC3ChC,EAAA,QAAM8E,KAAK,iBAGf9E,EAAQ,aACPuE,E,CAKP,kBAAAS,G,QACE,GAAIxF,KAAK+B,QAAU/B,KAAKqF,iBAAmBrF,KAAKmE,KAAM,CACpDnE,KAAKmE,KAAOsB,EAAgBzF,KAAKqF,eAAgB,CAC/CK,kBAAmB,KACnBC,wBAA0BvE,IACxB,GAAIA,aAAawE,YAAcxE,EAAEyE,eAAe,KAAO7F,KAAKqF,eAAgB,CAC1ErF,KAAK+B,OAAS,MAEd,OAAO,K,CAGT,OAAO,IAAI,EAEb+D,gBAAgBtC,EAAAxD,KAAKiF,qBAAiB,MAAAzB,SAAA,EAAAA,EAAI,MAC1CuC,aAAc,IAAO/F,KAAK+B,OAAS,MACnCiE,gBAAiB,CACfC,cAAgBC,IAAS,IAAA1C,EAAA,OAAAA,EAAA0C,EAAKC,cAAc,MAAA3C,SAAA,EAAAA,EAAAzC,SAAS,KAEtDqF,U,MACE,IAAKpG,KAAK+B,QAAU/B,KAAKmE,KAAM,EACpCT,EAAA1D,KAAKmE,QAAM,MAAAT,SAAA,SAAAA,EAAAU,oBAEJpE,KAAKmE,I,wCCjRZ,SAAUkC,EAAYH,GAC1B,GAAIA,aAAgBI,QAAS,CAC3B,OAAOJ,EAAKK,S,CAGd,GAAIL,EAAKM,SAASC,SAAS,KAAM,CAC/B,OAAOP,EAAKM,SAASE,UAAUR,EAAKM,SAASG,QAAQ,KAAO,E,CAG9D,OAAOT,EAAKM,QACd,C,MCLaI,EAAb,WAAA9G,GACEE,KAAIsF,KAAG,M,CAEP,MAAAjF,CAAO6F,GAAeW,aAAEA,IACtB,MAAMC,EAAQZ,EAAKa,aAAa,SAEhC,OACEvG,EAAA,QAAME,MAAM,WACVF,EAAA,YAAOqG,EAAaX,EAAKc,aACxBF,GAAS,KAAKA,K,ECNhB,MAAMG,EAA6D,EAAGpC,eAAezC,KAC1F,GAAIyC,IAAgB,UAAW,CAC7B,OAAOrE,EAAA,WAAM4B,E,CAGf,GAAIyC,IAAgB,YAAa,CAC/B,OAAOrE,EAAA,WAAM4B,E,CAGf,OAAOA,CAAQ,ECfX,SAAU8E,EAAuBrC,GACrC,GAAIA,IAAgB,UAAW,CAC7B,MAAO,gB,CAGT,GAAIA,IAAgB,YAAa,CAC/B,MAAO,mB,CAGT,OAAO9D,SACT,CCHA,SAASoG,EAAWC,GAClB,OAAOA,EAAKC,MAAMC,IAChB,MAAMd,EAAWH,EAAYiB,GAE7B,OAAOd,IAAa,MAAQA,IAAa,WAAW,GAExD,C,MAEae,EAAb,WAAAzH,GACEE,KAAIsF,KAAG,I,CAEP,MAAAjF,CAAO6F,GAAeW,aAAEA,EAAYO,KAAEA,EAAII,OAAEA,IAC1C,IAAIC,EAAUZ,EAAaX,EAAKc,YAChC,MAAMnC,EAAc6C,EAAyBxB,GAC7C,MAAMyB,EAAYT,EAAuBrC,GAEzC,GAAI2C,GAAUL,EAAWC,GAAO,CAC9BK,EACEjH,EAAM,QAAAK,KAAK,YAAYH,MAAOiH,GAC3BF,E,KAGA,CACLA,EAAUjH,EAAA,KAAGE,MAAOiH,GAAYF,E,CAGlC,OAAOjH,EAACyG,EAAgB,CAAApC,YAAaA,GAAc4C,E,ECnBvD,MAAMG,EAAyC,EAAGC,oBAAmB3B,OAAMW,mBACzE,MAAMY,EAAUZ,EAAaX,EAAKc,YAClC,MAAMnC,EAAc6C,EAAyBxB,GAC7C,MAAMyB,EAAYT,EAAuBrC,GAEzC,OACErE,EAAA,MAAIE,MAAOiH,GACTnH,EAACyG,EAAe,CAACpC,YAAagD,GAAqBhD,GAAc4C,GAC9D,EAIT,MAAMK,EAA8C,EAAGD,oBAAmB3B,OAAMW,mBAC9E,MAAMY,EAAUZ,EAAaX,EAAKc,YAClC,MAAMnC,EAAc6C,EAAyBxB,GAC7C,MAAMyB,EAAYT,EAAuBrC,GAEzC,OACErE,EAAA,MAAIE,MAAOiH,GACTnH,EAACyG,EAAe,CAACpC,YAAagD,GAAqBhD,GAAc4C,GAC9D,E,MAIIM,EAAb,WAAAjI,GACEE,KAAIsF,KAAG,Q,CAEP,MAAAjF,CAAO6F,GAAeW,aAAEA,IACtB,MAAMhC,EAAc6C,EAAyBxB,GAC7C,MAAMyB,EAAYT,EAAuBrC,GAEzC,MAAMmC,EAAagB,MAAMC,KAAK/B,EAAKc,YACnC,MAAMkB,EAAQlB,EAAWmB,QAAQb,GAAMjB,EAAYiB,KAAO,SAC1D,MAAMc,EAAcpB,EAAWmB,QAAQb,GAAMjB,EAAYiB,KAAO,cAEhE,OACE9G,EAAA,OAAKE,MAAOiH,GACTO,EAAMG,KAAKC,GACV9H,EAACoH,EAAI,CAAC1B,KAAMoC,EAAMT,kBAAmBhD,EAAagC,aAAcA,MAEjEuB,EAAYC,KAAKE,GAChB/H,EAACsH,EAAS,CAAC5B,KAAMqC,EAAYV,kBAAmBhD,EAAagC,aAAcA,M,QCjDxE2B,EAAb,WAAA1I,GACEE,KAAIsF,KAAG,gB,CAEP,MAAAjF,CAAO6F,GAAeW,aAAEA,IACtB,MAAMY,EAAUZ,EAAaX,EAAKc,YAClC,MAAMnC,EAAc6C,EAAyBxB,GAC7C,MAAMyB,EAAYT,EAAuBrC,GAEzC,OACErE,EAAA,OAAKE,MAAM,kBACTF,EAACyG,EAAe,CAACpC,YAAaA,GAC5BrE,EAAI,MAAAE,MAAOiH,GAAYF,I,QCdpBgB,EAAb,WAAA3I,GACEE,KAAIsF,KAAG,M,CAEP,MAAAjF,CAAO6F,GAAeW,aAAEA,IACtB,OAAOrG,EAAM,QAAAE,MAAM,iBAAiBmG,EAAaX,EAAKc,Y,QCJ7C0B,EAAb,WAAA5I,GACEE,KAAIsF,KAAG,W,CAEP,MAAAjF,CAAO6F,GAAYW,aAAEA,IACnB,OAAOrG,EAACmI,EAAQ,KAAE9B,EAAaX,EAAKc,Y,6CCIxC,IAAI4B,EAAY,kBAGhB,IAAIC,EAAc,4CAGlB,IAAIC,EAAU,8CAGd,IAAIC,EAAgB,kBAChBC,EAAoB,iCACpBC,EAAsB,kBACtBC,EAAiB,kBACjBC,EAAe,4BACfC,EAAgB,uBAChBC,EAAiB,+CACjBC,EAAqB,kBACrBC,EAAe,+JACfC,EAAe,4BACfC,EAAa,iBACbC,EAAeN,EAAgBC,EAAiBC,EAAqBC,EAGzE,IAAII,EAAS,OACTC,EAAU,IAAMF,EAAe,IAC/BG,EAAU,IAAMb,EAAoBC,EAAsB,IAC1Da,EAAW,OACXC,EAAY,IAAMb,EAAiB,IACnCc,EAAU,IAAMb,EAAe,IAC/Bc,EAAS,KAAOlB,EAAgBW,EAAeI,EAAWZ,EAAiBC,EAAeK,EAAe,IACzGU,EAAS,2BACTC,EAAa,MAAQN,EAAU,IAAMK,EAAS,IAC9CE,EAAc,KAAOrB,EAAgB,IACrCsB,EAAa,kCACbC,EAAa,qCACbC,EAAU,IAAMf,EAAe,IAC/BgB,EAAQ,UAGZ,IAAIC,EAAc,MAAQT,EAAU,IAAMC,EAAS,IAC/CS,EAAc,MAAQH,EAAU,IAAMN,EAAS,IAC/CU,EAAkB,MAAQhB,EAAS,yBACnCiB,EAAkB,MAAQjB,EAAS,yBACnCkB,EAAWV,EAAa,IACxBW,EAAW,IAAMrB,EAAa,KAC9BsB,EAAY,MAAQP,EAAQ,MAAQ,CAACJ,EAAaC,EAAYC,GAAYU,KAAK,KAAO,IAAMF,EAAWD,EAAW,KAClHI,EAAQH,EAAWD,EAAWE,EAC9BG,EAAU,MAAQ,CAACnB,EAAWM,EAAYC,GAAYU,KAAK,KAAO,IAAMC,EAG5E,IAAIE,EAASC,OAAOzB,EAAQ,KAM5B,IAAI0B,EAAcD,OAAOvB,EAAS,KAGlC,IAAIyB,EAAgBF,OAAO,CACzBb,EAAU,IAAMP,EAAU,IAAMW,EAAkB,MAAQ,CAACf,EAASW,EAAS,KAAKS,KAAK,KAAO,IAC9FN,EAAc,IAAME,EAAkB,MAAQ,CAAChB,EAASW,EAAUE,EAAa,KAAKO,KAAK,KAAO,IAChGT,EAAU,IAAME,EAAc,IAAME,EACpCJ,EAAU,IAAMK,EAChBd,EACAoB,GACAF,KAAK,KAAM,KAGb,IAAIO,EAAmB,sEAGvB,IAAIC,EAAkB,CAEpB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IACnC,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAER,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,MAI5B,IAAIC,SAAoBC,GAAU,UAAYA,GAAUA,EAAOC,SAAWA,QAAUD,EAGpF,IAAIE,SAAkBC,MAAQ,UAAYA,MAAQA,KAAKF,SAAWA,QAAUE,KAG5E,IAAIC,EAAOL,GAAcG,GAAYG,SAAS,cAATA,GAcrC,SAASC,EAAYC,EAAOC,EAAUC,EAAaC,GACjD,IAAIC,GAAQ,EACRC,EAASL,EAAQA,EAAMK,OAAS,EAKpC,QAASD,EAAQC,EAAQ,CACvBH,EAAcD,EAASC,EAAaF,EAAMI,GAAQA,EAAOJ,EAC7D,CACE,OAAOE,CACT,CASA,SAASI,EAAWC,GAClB,OAAOA,EAAOC,MAAM5D,IAAgB,EACtC,CASA,SAAS6D,EAAeC,GACtB,OAAO,SAASlM,GACd,OAAOkM,GAAU,KAAO5L,UAAY4L,EAAOlM,E,CAE/C,CAUA,IAAImM,EAAeF,EAAelB,GASlC,SAASqB,EAAeL,GACtB,OAAOjB,EAAiBuB,KAAKN,EAC/B,CASA,SAASO,GAAaP,GACpB,OAAOA,EAAOC,MAAMnB,IAAkB,EACxC,CAGA,IAAI0B,GAAcrB,OAAOsB,UAOzB,IAAIC,GAAiBF,GAAYG,SAGjC,IAAIC,GAAStB,EAAKsB,OAGlB,IAAIC,GAAcD,GAASA,GAAOH,UAAYlM,UAC1CuM,GAAiBD,GAAcA,GAAYF,SAAWpM,UAU1D,SAASwM,GAAaC,GAEpB,UAAWA,GAAS,SAAU,CAC5B,OAAOA,CACX,CACE,GAAIC,GAASD,GAAQ,CACnB,OAAOF,GAAiBA,GAAeI,KAAKF,GAAS,EACzD,CACE,IAAIG,EAAUH,EAAQ,GACtB,OAAQG,GAAU,KAAQ,EAAIH,IAAUI,SAAa,KAAOD,CAC9D,CASA,SAASE,GAAiBC,GACxB,OAAO,SAAStB,GACd,OAAOR,EAAY+B,GAAMC,GAAOxB,GAAQyB,QAAQ9C,EAAQ,KAAM2C,EAAU,G,CAE5E,CA0BA,SAASI,GAAaV,GACpB,QAASA,UAAgBA,GAAS,QACpC,CAmBA,SAASC,GAASD,GAChB,cAAcA,GAAS,UACpBU,GAAaV,IAAUN,GAAeQ,KAAKF,IAAU5E,CAC1D,CAuBA,SAASuE,GAASK,GAChB,OAAOA,GAAS,KAAO,GAAKD,GAAaC,EAC3C,CAoBA,SAASQ,GAAOxB,GACdA,EAASW,GAASX,GAClB,OAAOA,GAAUA,EAAOyB,QAAQnF,EAAS8D,GAAcqB,QAAQ5C,EAAa,GAC9E,CAuBA,IAAI8C,GAAYN,IAAiB,SAASF,EAAQS,EAAM/B,GACtD,OAAOsB,GAAUtB,EAAQ,IAAM,IAAM+B,EAAKC,aAC5C,IAqBA,SAASN,GAAMvB,EAAQ8B,EAASC,GAC9B/B,EAASW,GAASX,GAClB8B,EAA8BA,EAE9B,GAAIA,IAAYvN,UAAW,CACzB,OAAO8L,EAAeL,GAAUO,GAAaP,GAAUD,EAAWC,EACtE,CACE,OAAOA,EAAOC,MAAM6B,IAAY,EAClC,CAEAE,EAAiBL,G,oCC5aJM,EAAb,WAAA3O,GACEE,KAAAsF,KAAO,CAAC,SAAU,W,CAElB,MAAAjF,CAAO6F,GAAeW,aAAEA,EAAY6H,YAAEA,IACpC,MAAM/G,EAAYwG,EAAUjI,EAAKyI,SACjC,MAAMzM,EAAMgE,EAAKa,aAAa,OAC9B,MAAMzB,EAA8BY,EAAKyI,UAAY,SAAW,SAAW,WAE3E,IAAKzM,EAAK,CACR,OAAO2E,EAAaX,EAAKc,W,CAG3B,MAAM4H,EAAOF,EAAcA,EAAYpJ,EAAM,MAAOpD,EAAKgE,GAAQhE,EAEjE,OACE1B,EACE,KAAAmC,OAAO,SACPkM,IAAI,sBACJD,KAAMA,IAAI,MAAJA,SAAI,EAAJA,EAAQ7N,UACdL,MAAOiH,EACPb,MAAM,yCAENtG,EAAA,YAAOqG,EAAaX,EAAKc,aACzBxG,EAAA,YAAUQ,KAAK,kB,QCvBV8N,EAAb,WAAAhP,GAEEE,KAAAsF,KAAO,CAAC,a,CAER,MAAAjF,CAAO6F,GAAYW,aAAEA,IACnB,OAAOrG,EAAA,QAAME,MAAO,eAAe2F,EAAYH,MAAUW,EAAaX,EAAKc,Y,ECe/E,MAAM+H,EAAmD,EAAGC,aAAYC,OAAMpI,mB,MAC5E,MAAMqI,EAAWD,KAAQzL,EAAAyL,EAAKE,eAAa,MAAA3L,SAAA,SAAAA,EAAA4L,QAE3C,OACE5O,EAAA,QAAME,MAAM,qBACTsO,GAAcA,EAAWK,QAAUxI,EAAamI,EAAWK,QAC3DH,GACC1O,EAACmI,EAAQ,KACN,GAAGqG,EAAa,IAAM,YACtBnI,EAAaoI,G,KAGb,E,MAIEK,EAAb,WAAAxP,GACEE,KAAAsF,KAAO,CAAC,S,CAEA,QAAAiK,CAASC,GACf,MAAMC,EAAcC,OAAOF,EAAYG,SACvC,MAAMC,EAAeF,OAAOF,EAAYK,QAExC,MAAMC,EAAQ,CACZ,6CAA8CN,EAAYO,YAG5D,GAAIN,GAAeG,EAAc,CAI/B,MAAMI,EAAkBC,KAAKC,IAAIV,EAAYW,IAAO,KAAOV,EAAeC,OAAOF,EAAYW,KAAO,IAAK,KAEzGxE,OAAOyE,OAAON,EAAO,CACnB,gDAAiDL,EAAcG,GAAczC,WAC7E,wCAAyC,GAAG6C,M,CAIhD,OAAOF,C,CAGD,kBAAAO,CAAmBnK,G,MACzB,MAAO,CACLoK,KAAMpK,EAAKa,aAAa,QACxB4I,QAASD,OAAOxJ,EAAKa,aAAa,YAClC8I,OAAQH,OAAOxJ,EAAKa,aAAa,WACjCoJ,IAAKT,OAAOxJ,EAAKa,aAAa,QAC9BgJ,YACEvM,EAAA,CAAC,QAAS,SAAU,OAAO+M,MAAMC,GAAsCtK,EAAKa,aAAa,gBAAkByJ,OAAE,MAAAhN,SAAA,EAAAA,EAC7G,QACFvB,IAAKiE,EAAKa,aAAa,O,CAI3B,MAAA1G,CAAO6F,GAAeW,aAAEA,EAAY6H,YAAEA,I,YACpC,MAAM1H,EAAagB,MAAMC,KAAK/B,EAAKc,YACnC,MAAMyJ,EAAQzJ,EAAWuJ,MAAMjJ,GAAMjB,EAAYiB,KAAO,UACxD,MAAM2H,EAAOjI,EAAWuJ,MAAMjJ,GAAMjB,EAAYiB,KAAO,SAEvD,MAAMoJ,EAAkB1J,EAAWuJ,MAAMjJ,GAAMjB,EAAYiB,KAAO,gBAClE,MAAMqJ,EAAiB3J,EAAWuJ,MAAMjJ,GAAMjB,EAAYiB,KAAO,eAEjE,MAAMzC,EAAcqB,EAAKa,aAAa,gBAAkBhG,UAExD,GAAI2P,aAA2BpK,QAAS,CACtC,MAAMkJ,EAAcxP,KAAKqQ,mBAAmBK,GAE5C,MAAM1B,EACJ2B,aAA0BrK,QACtB,CACE+I,OAAQsB,EAAe3J,WACvB4J,SAASpN,EAAAmN,EAAe5J,aAAa,cAAU,MAAAvD,SAAA,EAAAA,EAAI,SAErDzC,UAEN,MAAMiB,EACJ0M,GAAec,EAAYc,KAAO5B,EAAY,cAAe,OAAQc,EAAYc,KAAMpK,GAAQsJ,EAAYc,KAE7G,OACE9P,EACE,OAAAE,MAAO,mBAAmBsO,EAAa,cAAcA,EAAW4B,UAAY,UAC5Ed,MAAO9P,KAAKuP,SAASC,IAEpBiB,GAASjQ,EAAM,QAAAE,MAAM,gBAAgBmG,EAAa4J,KAClDzB,IAAA,MAAAA,SAAA,SAAAA,EAAY4B,WAAY,SACvBpQ,EAACuO,EAAU,CAACC,WAAYA,EAAYC,KAAMA,EAAMpI,aAAcA,IAEhErG,EAAmB,qBAAAqE,YAAaA,GAC7B4L,GACCjQ,EAAK,OAAAqQ,KAAK,SACRrQ,EAAA,YAAOqG,EAAa4J,KAGxBjQ,EAAA,OAAKwB,IAAKA,IAAG,MAAHA,SAAA,EAAAA,EAAOjB,UAAWkB,KAAK6O,GAAAzM,GAAAX,EAAA8L,EAAYvN,OAAO,MAAAyB,SAAA,EAAAA,EAAA+M,IAAA,MAAAA,SAAK,SAALA,EAAOtB,eAAW,MAAA9K,SAAA,EAAAA,EAAImL,EAAYc,QAAI,MAAAQ,SAAA,EAAAA,EAAI/P,aAC5FiO,GAAcC,IACdzO,EAAA,OAAKqQ,KAAK,cACRrQ,EAACuO,EAAW,CAAAC,WAAYA,EAAYC,KAAMA,EAAMpI,aAAcA,QAIlEmI,IAAU,MAAVA,SAAU,SAAVA,EAAY4B,WAAY,UAAa5B,GAAcC,IACnDzO,EAACuO,EAAW,CAAAC,WAAYA,EAAYC,KAAMA,EAAMpI,aAAcA,I,SC3H7DkK,EAAb,WAAAjR,GACEE,KAAIsF,KAAG,CAAC,SAAU,sBAAuB,uD,CAEzC,MAAAjF,CAAO6F,GAAeW,aAAEA,IACtB,MAAMhC,EAAcqB,EAAKa,aAAa,eAEtC,MAAMiK,EAAcxQ,EAAK,OAAAE,MAAM,oBAAoBmG,EAAaX,EAAKc,aAErE,GAAInC,IAAgB,YAAa,CAC/B,OAAOrE,EAAA,OAAKE,MAAM,qBAAqBsQ,E,CAGzC,GAAInM,IAAgB,UAAW,CAC7B,OAAOrE,EAAA,OAAKE,MAAM,kBAAkBsQ,E,CAGtC,OAAOA,C,QChBEC,EAAb,WAAAnR,GACEE,KAAAsF,KAAO,CAAC,wBAAyB,c,CAEjC,MAAAjF,CAAO6F,GAAewI,YAAEA,I,QACtB,MAAM4B,EAAOpK,EAAKa,aAAa,QAC/B,MAAMzB,EACJY,EAAKyI,UAAY,wBAA0B,wBAA0B,cACvE,MAAM3M,EAAM0M,GAAe4B,EAAO5B,EAAYpJ,EAAM,OAAQgL,EAAMpK,GAAQoK,EAE1E,OACE9P,EAAA,OACEwB,IAAKA,IAAA,MAAAA,SAAG,EAAHA,EAAOjB,UACZkB,IAAKqO,IAAI,MAAJA,SAAA,EAAAA,EAAQvP,UACb2D,QAAQlB,EAAA0C,EAAKa,aAAa,aAAS,MAAAvD,SAAA,EAAAA,EAAIzC,UACvCyD,OAAOd,EAAAwC,EAAKa,aAAa,cAAc,MAAArD,SAAA,EAAAA,EAAA3C,W,QCdlCmQ,EAAb,WAAApR,GACEE,KAAAsF,KAAO,CAAC,MAAO,MAAO,SAAU,IAAK,IAAK,IAAK,K,CAE/C,MAAAjF,CAAO6F,GAAeW,aAAEA,IACtB,GAAIX,EAAKK,YAAc,KAAM,CAC3B,OAAO/F,EAAA,U,CAGT,MAAM2Q,EAAMjL,EAAKK,UAEjB,OAAO/F,EAAC2Q,EAAG,KAAEtK,EAAaX,EAAKc,Y,QCVtBoK,EAAb,WAAAtR,GACEE,KAAIsF,KAAG,U,CAEP,MAAAjF,CAAO6F,GAAeW,aAAEA,EAAYwK,UAAEA,EAAS3C,YAAEA,IAC/C,MAAMxM,EAAMgE,EAAKa,aAAa,OAE9B,IAAK7E,EAAK,CACR,OAAO2E,EAAaX,EAAKc,W,CAG3B,MAAM4H,EAAOF,EAAcA,EAAY,WAAY,MAAOxM,EAAKgE,GAAQhE,EAEvE,MAAMoP,EAAmB5O,IACvB2O,EAAU,CACR5N,KAAM,WACNyC,OACA3E,cAAemB,GACf,EAGJ,OACElC,EAACmI,EAAQ,KACPnI,EAA4B,8BAAAQ,KAAK,gBAC/BR,EAAM,QAAAqQ,KAAK,SAAShK,EAAaX,EAAKc,aACtCxG,EAAA,S,8BAC8B,IAC5BA,EAAQ,UAAAiD,KAAK,SAAS/C,MAAM,eAAeyE,QAASmM,GAClD9Q,EAA+B,kCAC/BA,EAAA,YAAUQ,KAAK,YAGnBR,EAAA,S,yBACyB,IACvBA,EACE,KAAAmC,OAAO,SACPkM,IAAI,sBACJD,KAAMA,IAAA,MAAAA,SAAI,EAAJA,EAAQ7N,UACd+F,MAAM,yCAENtG,EAAA,YAAOqG,EAAaX,EAAKc,aACzBxG,EAAU,YAAAQ,KAAK,qB,QCtChBuQ,GAAb,WAAAzR,GACEE,KAAIsF,KAAG,Q,CAEP,MAAAjF,CAAO6F,GAAeW,aAAEA,EAAYwK,UAAEA,EAASG,eAAEA,EAAc9C,YAAEA,IAC/D,MAAMxM,EAAMgE,EAAKa,aAAa,OAE9B,IAAK7E,EAAK,CACR,OAAO2E,EAAaX,EAAKc,W,CAG3B,MAAMyK,EAAYD,IAAc,MAAdA,SAAc,SAAdA,EAAiBtP,EAAKgE,GAExC,GAAIuL,EAAW,CACb,MAAMC,SAA8BD,IAAc,SAAWE,EAASF,GAAaA,EAEnF,IACGC,GACDA,EAAqBE,gBAAgBjD,UAAY,cAChD+C,EAAqBE,gBAAgBC,gBACtC,CACA,OAAOhL,EAAaX,EAAKc,W,CAG3B,OACExG,EAAA,8BAA4BQ,KAAK,QAC/BR,EAAM,QAAAqQ,KAAK,SAAShK,EAAaX,EAAKc,aACrCH,EAAamB,MAAMC,KAAKyJ,EAAqBE,gBAAgB5K,a,CAKpE,MAAM8K,EAAqBpP,IACzB2O,EAAU,CACR5N,KAAM,SACNyC,OACA3E,cAAemB,EACfqP,gBAAiBA,EAAgBrP,IACjC,EAGJ,MAAMkM,EAAOF,EAAcA,EAAY,SAAU,MAAOxM,EAAKgE,GAAQhE,EAErE,OACE1B,EAAG,KAAAoO,KAAMA,EAAMzJ,QAAS2M,GACrBjL,EAAaX,EAAKc,Y,EC5C3B,SAASgL,GAAQ9L,GACf,MAAO,CACLjF,MAAOiF,EAAKnD,cAAc,SAC1BkP,OAAQ/L,EAAKnD,cAAc,UAC3BmP,UAAWhM,EAAKnD,cAAc,aAC9BoP,UAAWnK,MAAMC,KAAK/B,EAAKkM,iBAAiB,aAEhD,C,MAEaC,GAAb,WAAAvS,GACEE,KAAIsF,KAAG,MAEPtF,KAAOsS,QAAG,CAAC,QAAS,SAAU,YAAa,W,CAE3C,MAAAjS,CAAO6F,GAAeW,aAAEA,EAAYwK,UAAEA,IACpC,MAAMkB,EAAkB7P,IACtB2O,EAAU,CACR5N,KAAM,MACNyC,OACA3E,cAAemB,GACf,EAGJ,MAAMzB,MAAEA,EAAKgR,OAAEA,EAAMC,UAAEA,EAASC,UAAEA,GAAcH,GAAQ9L,GAExD,MAAMsM,EAAmBvR,EAAQyG,EAAyBzG,GAASF,UACnE,MAAM0R,EAAoBR,EAASvK,EAAyBuK,GAAUlR,UACtE,MAAM2R,EAAuBR,EAAYxK,EAAyBwK,GAAanR,UAE/E,OACEP,EAACyG,EAAe,CAACpC,YAAa6C,EAAyBxB,IACrD1F,EAAK,OAAA2E,QAASoN,EAAgBI,KAAK,OAAOjS,MAAM,OAC7CO,GAAST,EAACyG,EAAe,CAACpC,YAAa2N,GAAmB3L,EAAa5F,EAAM+F,aAC7EiL,GACCzR,EAACmI,EAAQ,KACN,IACDnI,EAACyG,EAAe,CAACpC,YAAa4N,GAAoB5L,EAAaoL,EAAOjL,cAGzEkL,GACC1R,EAACmI,EAAQ,KACN,IACDnI,EAACyG,EAAe,CAACpC,YAAa6N,GAAuB7L,EAAaqL,EAAUlL,eAIjFmL,EAAU7F,OAAS,GAClB9L,EAAA,OAAKE,MAAM,sBAAsBiS,KAAK,cACnCR,EAAU9J,KAAKuK,IACd,MAAMC,EAAsBnL,EAAyBkL,GAErD,OACEpS,EAAA,OAAKE,MAAM,YACTF,EAACyG,EAAe,CAACpC,YAAagO,GAC3BhM,EAAa+L,EAAS5L,aAErB,K,QCrDT8L,GAAb,WAAAhT,GACEE,KAAIsF,KAAG,O,CAEP,MAAAjF,CAAO6F,GAAeW,aAAEA,IACtB,MAAMhC,EAAc6C,EAAyBxB,GAC7C,MAAMc,EAAagB,MAAMC,KAAK/B,EAAKc,YACnC,MAAMvD,EAAOsP,GAAuB7M,GACpC,MAAM8M,EAAShM,EAAWuJ,MAAMjJ,GAAMjB,EAAYiB,KAAO,gBACzD,MAAM2L,EAAWjM,EAAWuJ,MAAMjJ,GAAMjB,EAAYiB,KAAO,kBAC3D,MAAM4L,EAAYlM,EAAWmB,QAAQb,GAAMjB,EAAYiB,KAAO,OAE9D,OACE9G,EAACyG,EAAgB,CAAApC,YAAaA,GAC5BrE,EAAK,OAAAE,MAAOC,EAAK,0BAA2BuG,EAAuBrC,KAChEmO,GAAUnM,EAAamM,GACxBxS,EAAI,MAAAE,MAAO+C,GACRyP,EAAU7K,KAAK8K,I,MACd,MAAMC,EAAYpL,MAAMC,KAAKkL,EAAKnM,YAClC,MAAMqM,GAAW7P,EAAA4P,EAAU7C,MAAMjJ,GAAMjB,EAAYiB,KAAO,gBAAa,MAAA9D,SAAA,SAAAA,EAAAwD,WACvE,MAAMsM,EAAgB5L,EAAyByL,GAE/C,OACE3S,EAAA,MAAIE,MAAOC,EAAK,QAASuG,EAAuBoM,KAC7CD,GAAY7S,EAAM,QAAAE,MAAM,eAAemG,EAAawM,IACrD7S,EAACyG,EAAe,CAACpC,YAAayO,GAC3BzM,EAAauM,EAAUjL,QAAQb,GAAMjB,EAAYiB,KAAO,eAExD,KAIV2L,GAAYpM,EAAaoM,I,EAOpC,SAASF,GAAuB7M,GAC9B,MAAMzC,EAAOyC,aAAgBI,QAAUJ,EAAKa,aAAa,QAAUhG,UAEnE,OAAO0C,IAAS,aAAeA,IAAS,eAAiBA,EAAO1C,SAClE,C,MC/CawS,GAAb,WAAAzT,GACEE,KAAIsF,KAAG,a,CAEP,MAAAjF,CAAO6F,GAAeW,aAAEA,IACtB,OAAOrG,EAAK,OAAAE,MAAM,YAAYmG,EAAaX,EAAKc,Y,QCHvCwM,GAAb,WAAA1T,GACEE,KAAIsF,KAAG,OAEPtF,KAAAsS,QAAU,CAAC,a,CAEX,QAAAmB,GACE,MAAO,M,CAGT,MAAApT,CAAO6F,GAAeW,aAAEA,EAAc6M,MAAOC,EAAUC,SAAEA,I,QACvD,MAAMC,EAAS3N,EAAKa,aAAa,MACjC,IAAK8M,EAAQ,CACXC,QAAQpU,MAAM,uBAAwBwG,GAEtC,OAAO1F,EAACmI,EAAQ,K,CAGlB,MAAMoL,EAAiB,iBAAiBF,IAExC,MAAM7M,EAAagB,MAAMC,KAAK/B,EAAKc,YACnC,MAAMgN,GAAatQ,GAAAF,EAAAwD,EAAWuJ,MAAMjJ,GAAMjB,EAAYiB,KAAO,kBAAe,MAAA9D,SAAA,SAAAA,EAAA2L,eAAe,MAAAzL,SAAA,EAAAA,EAAAmQ,EAE3F,OACErT,EAACmI,EAAQ,KACPnI,EAAA,WACEA,EAAA,UACEiD,KAAK,SACL/C,MAAM,cAAa,mBACDqT,EAClB5O,QAAS,IAAMyO,IAAA,MAAAA,SAAA,SAAAA,EAAWD,IAAeE,EAAS9S,UAAY8S,GAC9DI,OAAQ,IAAML,IAAQ,MAARA,SAAQ,SAARA,EAAW7S,WACV,gBAAA4S,IAAeE,EAAS,OAAS,SAE/CG,IAGLxT,EAAA,eAAauB,OAAQ4R,IAAeE,EAAQK,GAAIH,EAAgBI,UAAS,KAACC,YAAW,MACnF5T,EAAM,QAAAK,KAAK,WAAWgG,EAAamB,MAAMC,KAAK/B,EAAKkM,iBAAiB,mB,ECzC9D,SAAAiC,GAAYC,EAAeC,GACzC,MAAMC,EAAWxM,MAAMC,KAAKsM,GAC5B,MAAME,EAAaC,GAAcF,GAEjC,MAAO,CACLC,aACAH,QACAK,QAASH,EAASnM,KAAI,CAACrD,EAASqH,K,MAC9B,MAAMuI,EAAY5P,EAAQ+B,aAAa,UAEvC,MAAO,CACL8N,OAAQ7P,EAAQ+B,aAAa,UAC7BzB,MAAM9B,EAAAwB,EAAQ+B,aAAa,cAAU,MAAAvD,SAAA,EAAAA,EAAI,GACzCsR,OAAQF,EAAYG,SAASH,EAAW,IAAMvI,EAAQ,EACtD2I,OAAQhQ,EAAQ+B,aAAa,UAC7BvC,MAAOyQ,GAASR,EAAYzP,GAC7B,IAGP,CAEA,SAAS0P,GAAcF,GACrB,OAAOA,EAASU,QAAO,CAACT,EAAYzP,K,QAClC,MAAMR,GAAQd,GAAAF,EAAAwB,EAAQ+B,aAAa,eAAa,MAAAvD,SAAA,SAAAA,EAAAyK,QAAQ,SAAU,OAAG,MAAAvK,SAAA,EAAAA,EAAI,GACzE,MAAMyR,EAAWJ,SAASvQ,EAAO,IAEjC,OAAOiQ,GAAcW,MAAMD,GAAY,EAAIA,EAAS,GACnD,EACL,CAEA,SAASF,GAASR,EAAoBzP,GACpC,MAAMR,EAAQQ,EAAQ+B,aAAa,YAEnC,IAAKvC,EAAO,CACV,OAAOzD,S,CAGT,GAAIyD,IAAU,IAAK,CACjB,MAAO,M,CAGT,GAAIA,EAAMiC,SAAS,MAAQjC,EAAMiI,MAAM,WAAY,CACjD,MAAM0I,EAAWJ,SAASvQ,EAAMyJ,QAAQ,SAAU,IAAK,IAEvD,MAAO,GAAGgC,KAAKoF,MAAOF,EAAWV,EAAc,O,CAGjD,OAAOjQ,CACT,CC9CO,MAAM8Q,GAAwD,EAAGC,cACtEA,EAASZ,QAAQrI,OAAS,EACxB9L,EAAA,gBACG+U,EAASZ,QAAQtM,KAAKmN,GACrBhV,EAAA,OAAKsP,MAAO,CAAEtL,MAAOgR,EAAQhR,YAIjChE,EAACmI,EAAW,MCDhB,SAAS8M,IAAsBd,QAAEA,GAAqBe,GACpD,MAAMC,EAAehB,EAAQpE,MAAMqF,GAAMA,EAAEtQ,OAASoQ,IAEpD,OAAOC,EAAeA,EAAad,OAAS,IAC9C,CAEA,SAASgB,IAAsBlB,QAAEA,GAAqBe,GACpD,MAAMC,EAAehB,EAAQpE,MAAMqF,GAAMA,EAAEtQ,OAASoQ,IAEpD,OAAOC,EAAeA,EAAaX,OAAS,IAC9C,CAEA,SAASc,GAAQC,EAAeR,G,MAC9B,MAAMG,EAAYK,EAAKhP,aAAa,UACpC,MAAMiP,EAAMD,EAAKE,cACjB,MAAMC,GAAS1S,EAAAwS,IAAA,MAAAA,SAAA,SAAAA,EAAKC,iBAAe,MAAAzS,SAAA,SAAAA,EAAAyS,cACnC,MAAME,EAAQD,IAAM,MAANA,SAAA,SAAAA,EAAQD,cACtB,MAAMpB,EACJkB,EAAKhP,aAAa,YACjBwO,GAAYG,EAAYD,GAAsBF,EAAUG,GAAa,OACrEQ,GAAUA,EAAOnP,aAAa,WAC9BoP,GAASA,EAAMpP,aAAa,UAC/B,MAAMiO,EACJe,EAAKhP,aAAa,WACjBiP,GAAOA,EAAIjP,aAAa,YACxBwO,GAAYG,EAAYG,GAAsBN,EAAUG,GAAa,OACrEQ,GAAUA,EAAOnP,aAAa,WAC9BoP,GAASA,EAAMpP,aAAa,UAE/B,MAAO,CACLqP,SAAUL,EAAKhP,aAAa,YAC5B2O,YACAW,QAASN,EAAKhP,aAAa,WAC3B8N,SACAG,SAEJ,CAEA,SAASsB,IAAW3B,QAAEA,GAAqBe,EAAmBW,GAC5D,MAAMV,EAAehB,EAAQpE,MAAMqF,GAAMA,EAAEtQ,OAASoQ,IACpD,MAAMa,EAAa5B,EAAQpE,MAAMqF,GAAMA,EAAEtQ,OAAS+Q,IAClD,IAAKV,IAAiBY,EAAY,CAChC,OAAOxV,S,CAGT,MAAMyV,EAAUD,EAAWzB,OAASa,EAAab,OAAS,EAE1D,OAAO0B,IAAY,EAAIzV,UAAYyV,CACrC,CAEO,MAAMC,GAKR,EAAGC,SAAW7P,gBAAgB0O,WAAUQ,OAAMlR,kBACjD,MAAMuR,SAAEA,EAAQV,UAAEA,EAASW,QAAEA,EAAOxB,OAAEA,EAAMG,OAAEA,GAAWc,GAAQC,EAAMR,GAEvE,OACE/U,EAAA,MACEE,MAAOC,EACL,CAAE,sBAAuBqU,IAAW,KACpC,CAAE,oBAAqBH,IAAW,KAClC3N,EAAuBrC,IAEzB8R,QAASP,EAAWrB,SAASqB,EAAU,IAAM,EAAIrV,UACjD6V,QAASrB,GAAYG,GAAaW,EAAUC,GAAWf,EAAUG,EAAWW,GAAWtV,WAEvFP,EAACyG,EAAe,CAACpC,YAAaA,GAAcgC,EAAakP,EAAK/O,aAC3D,ECxEF,MAAM6P,GAIR,EAAGH,UAASnB,WAAUuB,UAEvBtW,EAACmI,EAAQ,KACNmO,EAAKzO,KAAK2N,GACTxV,EACG,UAAAwH,MAAMC,KAAK+N,EAAI5T,UAAUiG,KAAK0N,GAC7BvV,EAACiW,GAAK,CAAAV,KAAMA,EAAMR,SAAUA,EAAUmB,QAASA,EAAS7R,YAAa6C,EAAyBsO,WCN1G,SAAShE,GAAQ9L,G,UACf,MAAMgQ,EAAShQ,EAAKnD,cAAc,mBAClC,MAAMgU,GAAevT,EAAA0S,IAAM,MAANA,SAAM,SAANA,EAAQnP,aAAa,WAAO,MAAAvD,SAAA,EAAAA,EAAIzC,UACrD,MAAMiW,EAAcD,EAAehC,SAASgC,EAAc,IAAMhW,UAEhE,MAAO,CACLkW,SAAS5S,GAAAX,EAAAwC,EAAKnD,cAAc,qBAAiB,MAAAW,SAAA,SAAAA,EAAEyL,eAAW,MAAA9K,SAAA,EAAAA,EAAItD,UAC9DwU,SAAUW,GAAUc,EAAc3C,GAAY2C,EAAad,EAAO9D,iBAAiB,qBAAuBrR,UAC1GmW,SAAUlP,MAAMC,KAAK/B,EAAKkM,iBAAiB,kCAC3C+E,SAAUnP,MAAMC,KAAK/B,EAAKkM,iBAAiB,kCAC3CvN,YAAaqB,EAAKa,aAAa,eAC/BqQ,MAAOlR,EAAKa,aAAa,SAAWb,EAAKa,aAAa,SAAW,MAErE,C,MAEasQ,GAAb,WAAAvX,GACEE,KAAIsF,KAAG,QAEPtF,KAAAsS,QAAU,CAAC,QAAS,SAAU,UAAW,QAAS,QAAS,MAAO,QAElEtS,KAAEkU,GAAGoD,G,CAEL,MAAAjX,CAAO6F,EAAewQ,GACpB,MAAMO,QAAEA,EAAO1B,SAAEA,EAAQ2B,SAAEA,EAAQC,SAAEA,EAAQtS,YAAEA,EAAWuS,MAAEA,GAAUpF,GAAQ9L,GAE9E,MAAM+I,EAAOjH,MAAMC,KAAK/B,EAAKc,YAAYuJ,MAAMjJ,GAAMjB,EAAYiB,KAAO,SAExE,OACE9G,EAAA,iBACEA,EAAA,QAAAmL,OAAAyE,OAAA,CACE1P,MAAOC,EAAK,QAAS,CACnB,iBAAkBkE,IAAgB,UAClC,oBAAqBA,IAAgB,YACrC,CAAC,2BAA2BuS,KAAUA,KAEnCnI,EAAO,CAAE,mBAAoBjP,KAAKkU,IAAO,IAE7C+C,GAAWzW,EAAU,eAAAyW,GACrB1B,GAAY/U,EAAC8U,GAAQ,CAACC,SAAUA,IAChC2B,EAAS5K,OAAS,GACjB9L,EAAA,aACEA,EAACqW,GAAI,CAACC,KAAMI,EAAU3B,SAAUA,EAAUmB,QAASA,KAGtDS,EAAS7K,OAAS,GACjB9L,EAAA,aACEA,EAACqW,GAAK,CAAAC,KAAMK,EAAU5B,SAAUA,EAAUmB,QAASA,MAIxDzH,GAAQzO,EAAK,OAAA0T,GAAIlU,KAAKkU,IAAKwC,EAAQ7P,aAAaoI,I,QCxD5CsI,GAAb,WAAAzX,GACEE,KAAIsF,KAAG,O,CAEP,MAAAjF,EAAO8O,YAAEA,IAAqBqI,KAAEA,EAAIC,sBAAEA,IACpC,IAAKD,IAASrI,EAAa,CACzB,OAAO3O,EAACmI,EAAU,KAAAwG,E,CAGpB,OAAO3O,EAACkX,EAAS,CAAAF,KAAMA,EAAMtX,KAAMiP,EAAasI,sBAAuBA,G,QCT9DE,GAAb,WAAA7X,GACEE,KAAIsF,KAAG,kB,CAEP,MAAAjF,CAAO6F,GAAeW,aAAEA,IACtB,OAAOrG,EAAK,OAAAE,MAAM,gBAAgBmG,EAAaX,EAAKc,Y,QCqB3C4Q,GAAb,WAAA9X,GACUE,KAAA6X,QAA6B,CACnC,IAAIjR,EACJ,IAAI4B,EACJ,IAAIT,EACJ,IAAIwP,GACJ,IAAI7O,EACJ,IAAIqI,EACJ,IAAIsB,GACJ,IAAId,GACJ,IAAI9C,EACJ,IAAIlH,EACJ,IAAI2J,EACJ,IAAID,EACJ,IAAIuC,GACJ,IAAI6D,GACJ,IAAIjG,EACJ,IAAI9B,EACJ,IAAIwD,GACJ,IAAIrK,EACJ,IAAI8K,GACJ,IAAIoE,IAGE3X,KAAA8X,KAAO9X,KAAK6X,QAAQ3C,QAAiB,CAAC6C,EAAGC,KAC/C,GAAIA,EAAE1F,QAAS,CACbyF,EAAEE,QAAQD,EAAE1F,Q,CAGd,OAAOyF,CAAC,GACP,IAEK/X,KAAAkY,aAAe,IAAIpJ,C,CAEnB,UAAAqJ,CAAW7S,G,MACjB,GAAItF,KAAK8X,KAAKrR,SAASnB,GAAO,CAC5B,OAAOvE,S,CAGT,OACEyC,EAAAxD,KAAK6X,QAAQtH,MAAMyH,IACjB,GAAIhQ,MAAMoQ,QAAQJ,EAAE1S,MAAO,CACzB,OAAO0S,EAAE1S,KAAKmB,SAASnB,E,CAGzB,OAAO0S,EAAE1S,OAASA,CAAI,OAClB,MAAA9B,SAAA,EAAAA,EAAAxD,KAAKkY,Y,CAIf,YAAArR,CAAaX,EAAgCwQ,EAA6BtP,G,MACxE,GAAIlB,aAAgBmS,SAAU,CAC5B,OAAO7X,EAACmI,EAAU,KAAAX,MAAMC,KAAK/B,GAAMmC,KAAKf,GAAMtH,KAAK6G,aAAaS,EAAGoP,EAAStP,K,CAG9E,GAAIY,MAAMoQ,QAAQlS,GAAO,CACvB,OAAO1F,EAACmI,EAAQ,KAAEzC,EAAKmC,KAAKf,GAAMtH,KAAK6G,aAAaS,EAAGoP,EAAStP,K,CAGlE,MAAMZ,EAAWH,EAAYH,GAC7B,MAAMoS,EAAStY,KAAKmY,WAAW3R,GAC/B,IAAK8R,EAAQ,CACX,OAAO9X,EAACmI,EAAQ,K,CAGlB,MAAM4P,GAAW/U,EAAA8U,EAAO7E,YAAQ,MAAAjQ,SAAA,SAAAA,EAAAkK,KAAA4K,EAAGpS,GAEnC,MAAMwN,EAAQ6E,EAAW7B,EAAQhD,MAAM6E,GAAYxX,UACnD,MAAM6S,EAAW2E,EAAYC,GAAe9B,EAAQ9C,SAAcjI,OAAAyE,OAAAzE,OAAAyE,OAAA,GAAAsG,EAAQhD,OAAO,CAAA6E,CAACA,GAAWC,KAAOzX,UAEpG,OAAOuX,EAAOjY,OAAO6F,EAAM,CACzBsB,OAAQkP,EAAQlP,OAChBgQ,KAAMd,EAAQc,KACd3Q,aAAeS,GAAMtH,KAAK6G,aAAaS,EAAGoP,EAAS,IAAItP,EAAMlB,IAC7DmL,UAAWqF,EAAQrF,UACnBuC,WACA6D,sBAAuBf,EAAQe,sBAC/B/D,QACAtM,OACAsH,YAAagI,EAAQhI,YACrB8C,eAAgBkF,EAAQlF,gB,CAI5B,SAAAiH,CAAUC,EAAyChC,GACjD,IAAKgC,EAAO,CACV,OAAOlY,EAACmI,EAAQ,K,CAGlB,MAAMgQ,SAAaD,IAAU,SAAW/G,EAAS+G,GAASA,EAE1D,IAAKC,EAAK,CACR,OAAOnY,EAACmI,EAAQ,K,CAGlB,OAAO3I,KAAK6G,aAAa8R,EAAIC,cAAelC,EAAS,G,EC7HzD,MAAMmC,GAAiB,iv9FC0BvB,MAAMP,GAAS,IAAIV,G,MAONkB,GAAW,MALxB,WAAAhZ,CAAAC,G,8HAgBEC,KAAMwH,OAAG,MAuCTxH,KAAK0T,MAAyB,GAEtB1T,KAAA+Y,wBAA0B,CAAC7Y,EAAc8Y,KAC/ChZ,KAAKiZ,gCAAgC3X,KAAK,CAAEpB,OAAM8Y,cAAa,CAmBlE,CA3BC,cAAAE,GACElZ,KAAK0T,MAAQ,E,CAUf,MAAArT,GACE,MAAMqW,EAA8B,CAClChD,MAAO1T,KAAK0T,MACZlM,OAAQxH,KAAKwH,OACbgQ,KAAMxX,KAAKwX,KACX5D,SAAWF,GAAW1T,KAAK0T,MAAQA,EACnC+D,sBAAuBzX,KAAK+Y,wBAC5B1H,UAAWrR,KAAKmZ,SAAS7X,KACzBoN,YAAa1O,KAAK0O,YAClB8C,eAAgBxR,KAAKwR,gBAGvB,MAAM4H,EAAcd,GAAOG,UAAUzY,KAAKyH,QAASiP,GAEnD,OAAOlW,EAACmI,EAAU,CAAAlI,IAAA,4CAAA2Y,E,wECvGtB,MAAMC,GAA0B,wnE,MCWnBC,GAAoB,MALjC,WAAAxZ,CAAAC,G,UAgBEC,KAAM+B,OAAG,MAGT/B,KAAauZ,cAAG,MAMRvZ,KAAKmC,MAAG,KACd,GAAInC,KAAK+B,OAAQ,CACf/B,KAAKV,O,KACA,CACLU,KAAKwZ,M,GAIDxZ,KAAIwZ,KAAG,KACbxZ,KAAK+B,OAAS,KACd/B,KAAKI,KAAKqZ,iBAAiB,UAAWzZ,KAAK0Z,iBAC3C1Z,KAAKI,KAAKqZ,iBAAiB,WAAYzZ,KAAK2Z,iBAAiB,EAGvD3Z,KAAKV,MAAG,KACdU,KAAKI,KAAKwZ,oBAAoB,WAAY5Z,KAAK2Z,kBAC/C3Z,KAAKI,KAAKwZ,oBAAoB,UAAW5Z,KAAK0Z,iBAC9C1Z,KAAK+B,OAAS,KAAK,EAGb/B,KAAA2Z,iBAAoBjX,IAC1B,IAAK1C,KAAKI,KAAKyZ,SAASnX,EAAMoX,eAAwB,CACpD9Z,KAAKV,O,GAIDU,KAAA0Z,gBAAmBhX,IACzB,GAAIA,EAAMjC,MAAQ,SAAU,CAC1BT,KAAKV,O,CAGP,OAgDH,CA7CC,kBAAAkG,G,MACE,GAAIxF,KAAK+Z,QAAS,CAChB,GAAI/Z,KAAK+B,SAAW/B,KAAKuZ,cAAe,CACtCvZ,KAAK+Z,QAAQC,cACbha,KAAKuZ,cAAgB,I,MAChB,IAAKvZ,KAAK+B,QAAU/B,KAAKuZ,cAAe,EAC7C/V,EAAAxD,KAAK+Z,WAAS,MAAAvW,SAAA,SAAAA,EAAAyW,cACdja,KAAKuZ,cAAgB,K,EAIzB,IAAIW,EAEJ,GAAIla,KAAK+B,SAAWmY,GAAWla,KAAKma,WAAana,KAAK+Z,SAAW/Z,KAAKoa,aAAc,CAClFF,EAAUG,EAAgB,CACxBC,iBAAkBta,KAAKma,UACvBI,OAAQva,KAAK+Z,QACbS,YAAaxa,KAAKoa,aAClBK,aAAc,O,CAIlB,IAAKza,KAAK+B,QAAUmY,EAAS,CAC3BA,G,EAIJ,MAAA7Z,GACE,OACEG,EAACmI,EAAQ,CAAAlI,IAAA,4CACPD,EAAQ,UAAAC,IAAA,2CAAAC,MAAM,mBAAmBwB,IAAM8C,GAAahF,KAAKma,UAAYnV,EAAUG,QAASnF,KAAKmC,OAC3F3B,EAAM,QAAAC,IAAA,2CAAA6E,KAAK,UACX9E,EAAA,YAAAC,IAAA,2CAAUO,KAAMhB,KAAKgB,OACrBR,EAACka,EACC,CAAAja,IAAA,2CAAAka,QACA,KAAAC,cAAe,OACfC,cAAgB7V,GAAahF,KAAK+Z,QAAU/U,EAC5C8V,mBAAqB9V,GAAahF,KAAKoa,aAAepV,GAEtDxE,EAAA,QAAAC,IAAA,+C,yCCtGL,MAAMrB,GAAyB,CACpCC,GAAI,CACF,YAAa,CACXC,MAAO,UAGXK,GAAI,CACF,YAAa,CACXL,MAAO,aCVb,MAAMyb,GAAW,+tE,MCoBJC,GAAK,MALlB,WAAAlb,CAAAC,G,uDAmBEC,KAAUib,WAAG,MAQLjb,KAAAE,KAAOC,GAAK,IAAMH,KAAKI,MAAMhB,GAoBtC,CAlBC,MAAAiB,GACE,OACEG,EAAK,OAAAC,IAAA,2CAAAC,MAAOC,EAAK,CAAC,YAAa,CAAEsa,WAAYjb,KAAKib,eAChDza,EAAK,OAAAC,IAAA,2CAAAC,MAAM,iBACTF,EAAM,QAAAC,IAAA,2CAAA6E,KAAK,YACX9E,EACE,mBAAAC,IAAA,2CAAAO,KAAK,QACLE,QAAQ,WACRC,WAAaC,GAAMpB,KAAKkb,cAAc5Z,KAAK,CAAEC,cAAeH,EAAE+Z,OAAO5Z,gBACrEN,MAAOjB,KAAKob,kBAAoBpb,KAAKE,KAAK,YAG9CM,EAAK,OAAAC,IAAA,2CAAAC,MAAM,cACTF,EAAa,QAAAC,IAAA,8C,yCCzDvB,MAAM4a,GAAW,k6hD,MCUJC,GAAK,MALlB,WAAAxb,CAAAC,G,UAcUC,KAAYub,aAAGC,IASvBxb,KAAOyb,QAAG,MAMVzb,KAAW0b,YAAG,KAsIf,CAjIS,uBAAAC,G,OACNnY,EAAAxD,KAAKiD,kBAAgB,MAAAO,SAAA,SAAAA,EAAAK,QAAQ7D,KAAKI,K,CAGpC,iBAAAwb,GACE5b,KAAKiD,eAAiB,IAAIC,eAAeC,GAAU0Y,GAAY7b,KAAK8b,mBAAmBD,IAAU,K,CAGnG,gBAAA7Y,GACEhD,KAAK2b,yB,CAGP,kBAAAnW,GACExF,KAAK+b,c,CAGP,oBAAA7X,G,OACEV,EAAAxD,KAAKiD,kBAAgB,MAAAO,SAAA,SAAAA,EAAAG,Y,CAGvB,MAAAtD,G,UACE,MAAM4W,GAAUvT,GAAAF,EAAAxD,KAAKI,KAAK2C,cAAc,+BAA2B,MAAAS,SAAA,SAAAA,EAAE2L,eAAa,MAAAzL,SAAA,SAAAA,EAAA0L,OAElF,OACE5O,EAAC0E,EAAoB,CAAAzE,IAAA,4DAAA4D,EAAArE,KAAKgc,gBAAc,MAAA3X,SAAA,SAAAA,EAAA8I,YACrCnN,KAAK0b,aAAe1b,KAAKic,mBACxBzb,EAAK,OAAAC,IAAA,2CAAAC,MAAM,wBAAwBoP,MAAO,CAAEpL,OAAQ,GAAG1E,KAAKic,yBAG7Djc,KAAK0b,aAAelb,EAAA,OAAAC,IAAA,2CAAKC,MAAM,sBAEhCF,EAAK,OAAAC,IAAA,2CAAAC,MAAO,CAAE,YAAaV,KAAK0b,cAC9Blb,EACE,MAAAmL,OAAAyE,OAAA,CAAA3P,IAAA,2CAAAC,MAAO,CAAE,aAAcV,KAAK0b,YAAa,mBAAoB,MAC7DxZ,IAAM8C,GAAahF,KAAKkc,iBAAmBlX,GACtChF,KAAK0b,YAAc,CAAE,CAAC,mBAAoB1b,KAAKub,aAAc1a,KAAM,UAAa,KAEnFb,KAAKgc,eAAiBhc,KAAKyb,UAC3Bjb,EAAK,OAAAC,IAAA,2CAAAC,MAAM,sBAAsBoP,MAAO9P,KAAK0b,YAAc,CAAES,QAAS,QAAWpb,WAC9Ef,KAAKgc,cACJxb,EAAK,OAAAC,IAAA,2CAAAC,MAAM,0BACTF,EAAA,QAAAC,IAAA,uFAIFT,KAAKyb,SACLjb,EAAA,UAAAC,IAAA,2CACEgD,KAAK,SACL/C,MAAM,iCACNwB,IAAM8C,GAAahF,KAAKoc,cAAgBpX,EACxCG,QAAS,IAAMnF,KAAKqc,aAEpB7b,EAAM,QAAAC,IAAA,2CAAAC,MAAM,WAAiB,SAAAuW,IAAA,MAAAA,SAAA,EAAAA,EAAW,GAAW,KACnDzW,EAAsB,QAAAC,IAAA,yDACtBD,EAAA,YAAAC,IAAA,2CAAUO,KAAK,oBAMtBhB,KAAK0b,aACJlb,EAAK,OAAAC,IAAA,2CAAAC,MAAM,cACTF,EAAA,MAAAC,IAAA,2CAAIyT,GAAIlU,KAAKub,aAAc7a,MAAO,CAAE,WAAYuW,IAC7CA,GAAW,6BAEdzW,EAAA,UAAAC,IAAA,2CAAQgD,KAAK,SAAS/C,MAAM,YAAYyE,QAAS,IAAMnF,KAAKsc,cAC1D9b,EAAU,YAAAC,IAAA,2CAAAO,KAAK,UACfR,EAAA,QAAAC,IAAA,2CAAMC,MAAM,WAAwB,aAK1CF,EAAA,OAAAC,IAAA,2CAAKC,MAAO,CAAE,WAAYV,KAAK0b,YAAa,iBAAkB,OAC5Dlb,EAAA,QAAAC,IAAA,gD,CAQJ,SAAA4b,GACNrc,KAAKic,kBAAoBjc,KAAKI,KAAKmc,aACnCvc,KAAK0b,YAAc,I,CAGb,UAAAY,GACNtc,KAAKic,kBAAoBlb,UACzBf,KAAK0b,YAAc,K,CAGb,YAAAK,G,QACN,GAAI/b,KAAK0b,aAAe1b,KAAKkc,mBAAqBlc,KAAKmE,KAAM,CAC3DnE,KAAKmE,KAAOsB,EAAgB,CAACzF,KAAKI,KAAMJ,KAAKkc,kBAAmB,CAC9DxW,kBAAmB,KACnBC,wBAA0BvE,IACxB,GAAIA,aAAawE,YAAcxE,EAAEyE,eAAe,KAAO7F,KAAKkc,iBAAkB,CAC5Elc,KAAKsc,aAEL,OAAO,K,CAGT,OAAO,IAAI,EAEbxW,gBAAgBtC,EAAAxD,KAAKoc,iBAAa,MAAA5Y,SAAA,EAAAA,EAAI,MACtCuC,aAAc,IAAM/F,KAAKsc,aACzBtW,gBAAiB,CACfC,cAAe,QAEhBG,U,MACE,IAAKpG,KAAK0b,aAAe1b,KAAKmE,KAAM,EACzCT,EAAA1D,KAAKmE,QAAM,MAAAT,SAAA,SAAAA,EAAAU,oBAEJpE,KAAKmE,I,EAIR,kBAAA2X,EAAoBU,IAC1B,IAAKA,EAAU,CACb,MAAM,IAAIjc,MAAM,oB,CAGlB,MAAMkc,EAAeD,EAAS7Z,OAAOI,cAAc,SAEnD,GAAIyZ,GAAYC,aAAwBC,iBAAkB,CACxD1c,KAAKgc,aACH/L,KAAK0M,MAAMF,EAAaG,wBAAwBpY,OAASyL,KAAK0M,MAAMH,EAASK,YAAYrY,M","ignoreList":[]}