@acorex/cdk 22.4.6 → 22.4.8

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-cdk-overlay-scrollbar.mjs","sources":["../../../../packages/cdk/overlay-scrollbar/src/lib/overlay-scrollbar.directive.ts","../../../../packages/cdk/overlay-scrollbar/src/acorex-cdk-overlay-scrollbar.ts"],"sourcesContent":["import { DOCUMENT, isPlatformBrowser } from '@angular/common';\n\nimport {\n afterNextRender,\n afterRenderEffect,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n PLATFORM_ID,\n} from '@angular/core';\n\n/** CSS custom properties for overlay scrollbar styling (set on the scroll host or in CSS). */\nexport const AX_OVERLAY_SCROLLBAR_CSS_VARS = {\n size: '--ax-comp-overlay-scrollbar-size',\n thumbRadius: '--ax-comp-overlay-scrollbar-thumb-radius',\n trackRadius: '--ax-comp-overlay-scrollbar-track-radius',\n trackColor: '--ax-comp-overlay-scrollbar-track-color',\n thumbColor: '--ax-comp-overlay-scrollbar-thumb-color',\n thumbActiveColor: '--ax-comp-overlay-scrollbar-thumb-active-color',\n thumbHoverColor: '--ax-comp-overlay-scrollbar-thumb-hover-color',\n trackActiveColor: '--ax-comp-overlay-scrollbar-track-active-color',\n thumbBorderWidth: '--ax-comp-overlay-scrollbar-thumb-border-width',\n thumbBorderColor: '--ax-comp-overlay-scrollbar-thumb-border-color',\n trackBorderWidth: '--ax-comp-overlay-scrollbar-track-border-width',\n trackBorderColor: '--ax-comp-overlay-scrollbar-track-border-color',\n fadeDuration: '--ax-comp-overlay-scrollbar-fade-duration',\n} as const;\n\nconst OVERLAY_SCROLLBAR_TOKEN_NAMES = Object.values(AX_OVERLAY_SCROLLBAR_CSS_VARS);\n\nconst ROOT_CLASS = 'ax-cdk-overlay-scrollbar-root';\nconst RAIL_CLASS = 'ax-cdk-overlay-scrollbar__rail';\nconst TRACK_CLASS = 'ax-cdk-overlay-scrollbar__rail-track';\nconst THUMB_CLASS = 'ax-cdk-overlay-scrollbar__rail-thumb';\nconst NAV_BTN_CLASS = 'ax-cdk-overlay-scrollbar__nav-button';\nconst NAV_BTN_PRESSED_CLASS = 'ax-cdk-overlay-scrollbar__nav-button--pressed';\nconst NAV_ARROW_CLASS = 'ax-cdk-overlay-scrollbar__nav-arrow';\nconst RAIL_WITH_NAV_CLASS = 'ax-cdk-overlay-scrollbar__rail--with-nav';\nconst VISIBLE_CLASS = 'ax-cdk-overlay-scrollbar--active';\n/** Applied while dragging the thumb (active fill; not used during wheel/content scroll). */\nconst ENGAGED_CLASS = 'ax-cdk-overlay-scrollbar--engaged';\n/** Primary button down on the track (outside thumb); `:active` is unreliable with `preventDefault`. */\nconst TRACK_PRESSED_CLASS = 'ax-cdk-overlay-scrollbar--track-pressed';\n\nconst OVERLAY_SCROLLBAR_STYLES = `\n.ax-cdk-overlay-scrollbar-root {\n position: relative;\n display: block;\n min-height: 0;\n --ax-comp-overlay-scrollbar-size: 6px;\n --ax-comp-overlay-scrollbar-fade-duration: 0.35s;\n --ax-comp-overlay-scrollbar-thumb-radius: 4px;\n --ax-comp-overlay-scrollbar-track-radius: 4px;\n --ax-comp-overlay-scrollbar-track-color: transparent;\n --ax-comp-overlay-scrollbar-thumb-color: var(--ax-sys-scroller-thumb-color, #64748b);\n --ax-comp-overlay-scrollbar-thumb-border-width: 0;\n --ax-comp-overlay-scrollbar-thumb-border-color: transparent;\n --ax-comp-overlay-scrollbar-track-border-width: 0;\n --ax-comp-overlay-scrollbar-track-border-color: transparent;\n}\n\n.ax-cdk-overlay-scrollbar {\n position: relative;\n --ax-comp-overlay-scrollbar-size: 6px;\n --ax-comp-overlay-scrollbar-fade-duration: 0.35s;\n --ax-comp-overlay-scrollbar-thumb-radius: 4px;\n --ax-comp-overlay-scrollbar-track-radius: 4px;\n --ax-comp-overlay-scrollbar-track-color: transparent;\n --ax-comp-overlay-scrollbar-thumb-color: var(--ax-sys-scroller-thumb-color, #64748b);\n --ax-comp-overlay-scrollbar-thumb-border-width: 0;\n --ax-comp-overlay-scrollbar-thumb-border-color: transparent;\n --ax-comp-overlay-scrollbar-track-border-width: 0;\n --ax-comp-overlay-scrollbar-track-border-color: transparent;\n\n scrollbar-width: none !important;\n -ms-overflow-style: none;\n}\n\n.ax-cdk-overlay-scrollbar::-webkit-scrollbar {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n background: transparent !important;\n}\n\n.ax-cdk-overlay-scrollbar__rail {\n position: absolute;\n top: 0;\n bottom: 0;\n inset-inline-end: 0;\n width: var(--ax-comp-overlay-scrollbar-size, 6px);\n overflow: hidden;\n pointer-events: auto;\n opacity: 0;\n z-index: 10;\n box-sizing: border-box;\n border-radius: var(--ax-comp-overlay-scrollbar-track-radius, 4px);\n background-color: var(--ax-comp-overlay-scrollbar-track-color, transparent);\n border-width: var(--ax-comp-overlay-scrollbar-track-border-width, 0);\n border-style: solid;\n border-color: var(--ax-comp-overlay-scrollbar-track-border-color, transparent);\n transition:\n opacity var(--ax-comp-overlay-scrollbar-fade-duration, 0.35s) ease,\n background-color 0.15s ease;\n}\n\n.ax-cdk-overlay-scrollbar-root.ax-cdk-overlay-scrollbar--active .ax-cdk-overlay-scrollbar__rail,\n.ax-cdk-overlay-scrollbar.ax-cdk-overlay-scrollbar--active .ax-cdk-overlay-scrollbar__rail {\n opacity: 1;\n}\n\n.ax-cdk-overlay-scrollbar__rail-track {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n}\n\n.ax-cdk-overlay-scrollbar-root.ax-cdk-overlay-scrollbar--active.ax-cdk-overlay-scrollbar--track-pressed\n .ax-cdk-overlay-scrollbar__rail,\n.ax-cdk-overlay-scrollbar.ax-cdk-overlay-scrollbar--active.ax-cdk-overlay-scrollbar--track-pressed\n .ax-cdk-overlay-scrollbar__rail,\n.ax-cdk-overlay-scrollbar-root.ax-cdk-overlay-scrollbar--active.ax-cdk-overlay-scrollbar--engaged\n .ax-cdk-overlay-scrollbar__rail,\n.ax-cdk-overlay-scrollbar.ax-cdk-overlay-scrollbar--active.ax-cdk-overlay-scrollbar--engaged\n .ax-cdk-overlay-scrollbar__rail {\n background-color: var(\n --ax-comp-overlay-scrollbar-track-active-color,\n var(--ax-comp-overlay-scrollbar-track-color, transparent)\n );\n}\n\n.ax-cdk-overlay-scrollbar__rail--with-nav {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.ax-cdk-overlay-scrollbar__rail--with-nav .ax-cdk-overlay-scrollbar__rail-track {\n position: relative;\n flex: 1 1 auto;\n min-height: 0;\n inset: auto;\n}\n\n.ax-cdk-overlay-scrollbar__nav-button {\n display: none;\n flex: 0 0 var(--ax-comp-overlay-scrollbar-size, 6px);\n width: 100%;\n min-height: var(--ax-comp-overlay-scrollbar-size, 6px);\n margin: 0;\n padding: 0;\n border: none;\n box-sizing: border-box;\n cursor: default;\n align-items: center;\n justify-content: center;\n background-color: transparent;\n color: var(--ax-comp-overlay-scrollbar-thumb-color, var(--ax-sys-scroller-thumb-color, #64748b));\n}\n\n.ax-cdk-overlay-scrollbar__rail--with-nav .ax-cdk-overlay-scrollbar__nav-button {\n display: flex;\n}\n\n.ax-cdk-overlay-scrollbar__nav-arrow {\n width: 0;\n height: 0;\n border-left: 3px solid transparent;\n border-right: 3px solid transparent;\n pointer-events: none;\n}\n\n.ax-cdk-overlay-scrollbar__nav-arrow--up {\n border-bottom: 4px solid currentColor;\n}\n\n.ax-cdk-overlay-scrollbar__nav-arrow--down {\n border-top: 4px solid currentColor;\n}\n\n.ax-cdk-overlay-scrollbar__rail-thumb {\n position: absolute;\n top: 0;\n inset-inline-start: 0;\n width: 100%;\n box-sizing: border-box;\n border-radius: var(--ax-comp-overlay-scrollbar-thumb-radius, 4px);\n background-color: var(--ax-comp-overlay-scrollbar-thumb-color, var(--ax-sys-scroller-thumb-color, #64748b));\n border-width: var(--ax-comp-overlay-scrollbar-thumb-border-width, 0);\n border-style: solid;\n border-color: var(--ax-comp-overlay-scrollbar-thumb-border-color, transparent);\n transition: background-color 0.15s ease;\n pointer-events: auto;\n touch-action: none;\n}\n\n.ax-cdk-overlay-scrollbar__rail-thumb::before {\n content: '';\n position: absolute;\n inset: -4px -8px;\n}\n\n.ax-cdk-overlay-scrollbar-root.ax-cdk-overlay-scrollbar--active .ax-cdk-overlay-scrollbar__rail-thumb:hover,\n.ax-cdk-overlay-scrollbar.ax-cdk-overlay-scrollbar--active .ax-cdk-overlay-scrollbar__rail-thumb:hover {\n background-color: var(\n --ax-comp-overlay-scrollbar-thumb-hover-color,\n var(\n --ax-comp-overlay-scrollbar-thumb-active-color,\n var(--ax-comp-overlay-scrollbar-thumb-color, var(--ax-sys-scroller-thumb-color, #64748b))\n )\n );\n}\n\n.ax-cdk-overlay-scrollbar-root.ax-cdk-overlay-scrollbar--active.ax-cdk-overlay-scrollbar--engaged\n .ax-cdk-overlay-scrollbar__rail-thumb,\n.ax-cdk-overlay-scrollbar.ax-cdk-overlay-scrollbar--active.ax-cdk-overlay-scrollbar--engaged\n .ax-cdk-overlay-scrollbar__rail-thumb,\n.ax-cdk-overlay-scrollbar-root.ax-cdk-overlay-scrollbar--active.ax-cdk-overlay-scrollbar--engaged\n .ax-cdk-overlay-scrollbar__rail-thumb:hover,\n.ax-cdk-overlay-scrollbar.ax-cdk-overlay-scrollbar--active.ax-cdk-overlay-scrollbar--engaged\n .ax-cdk-overlay-scrollbar__rail-thumb:hover {\n background-color: var(\n --ax-comp-overlay-scrollbar-thumb-active-color,\n var(--ax-comp-overlay-scrollbar-thumb-color, var(--ax-sys-scroller-thumb-color, #64748b))\n );\n}\n`.trim();\n\nconst STYLE_ELEMENT_ID = 'ax-overlay-scrollbar-styles';\nconst DEFAULT_HIDE_DELAY_MS = 800;\nconst MIN_SCROLLBAR_WIDTH_PX = 2;\nconst MAX_SCROLLBAR_WIDTH_PX = 32;\nconst DEFAULT_SCROLLBAR_WIDTH_PX = 6;\nconst MIN_THUMB_HEIGHT_PX = 20;\nconst DEFAULT_NAV_SCROLL_STEP_PX = 40;\n\nexport function clampOverlayScrollbarWidth(px: number): number {\n if (!Number.isFinite(px)) {\n return DEFAULT_SCROLLBAR_WIDTH_PX;\n }\n return Math.min(MAX_SCROLLBAR_WIDTH_PX, Math.max(MIN_SCROLLBAR_WIDTH_PX, Math.round(px)));\n}\n\nfunction injectOverlayScrollbarStyles(document: Document): void {\n const existing = document.getElementById(STYLE_ELEMENT_ID);\n if (existing) {\n existing.textContent = OVERLAY_SCROLLBAR_STYLES;\n return;\n }\n\n const style = document.createElement('style');\n style.id = STYLE_ELEMENT_ID;\n style.textContent = OVERLAY_SCROLLBAR_STYLES;\n document.head.appendChild(style);\n}\n\n/** Rail is a sibling of the host; copy resolved tokens from the host so the rail can use them. */\nfunction syncOverlayScrollbarDesignTokens(host: HTMLElement, root: HTMLElement | null): void {\n if (!root) {\n return;\n }\n\n const computed = getComputedStyle(host);\n for (const varName of OVERLAY_SCROLLBAR_TOKEN_NAMES) {\n const value = computed.getPropertyValue(varName).trim();\n if (value) {\n root.style.setProperty(varName, value);\n } else {\n root.style.removeProperty(varName);\n }\n }\n}\n\nfunction readRailWidthPx(rail: HTMLElement): number {\n const width = rail.offsetWidth;\n if (width > 0) {\n return width;\n }\n const parsed = Number.parseFloat(getComputedStyle(rail).width);\n if (Number.isFinite(parsed) && parsed > 0) {\n return parsed;\n }\n const sizeToken = getComputedStyle(rail).getPropertyValue(AX_OVERLAY_SCROLLBAR_CSS_VARS.size).trim();\n const fromToken = Number.parseFloat(sizeToken);\n if (Number.isFinite(fromToken) && fromToken > 0) {\n return fromToken;\n }\n return DEFAULT_SCROLLBAR_WIDTH_PX;\n}\n\n/**\n * Custom overlay scrollbar: native scrollbars are hidden; a positioned thumb reflects scroll position.\n * Styles are injected once by this directive.\n */\n@Directive({\n selector: '[axOverlayScrollbar]',\n exportAs: 'axOverlayScrollbar',\n host: {\n class: 'ax-cdk-overlay-scrollbar',\n },\n})\nexport class AXOverlayScrollbarDirective {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly document = inject(DOCUMENT);\n\n private rootEl: HTMLElement | null = null;\n private railEl: HTMLElement | null = null;\n private trackEl: HTMLElement | null = null;\n private navUpEl: HTMLButtonElement | null = null;\n private navDownEl: HTMLButtonElement | null = null;\n private thumbEl: HTMLElement | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private designTokenMutationObserver: MutationObserver | null = null;\n private designTokenSyncFrame: number | null = null;\n private thumbDragPointerId: number | null = null;\n private pointerOverRail = false;\n private trackPressReleaseListener: (() => void) | null = null;\n private unbindRailInteraction: (() => void) | null = null;\n /** Thumb size derived from layout; position updates on scroll without re-measuring scrollHeight. */\n private thumbLayout: {\n thumbHeight: number;\n maxScroll: number;\n maxThumbOffset: number;\n } | null = null;\n\n readonly hideDelay = input(DEFAULT_HIDE_DELAY_MS);\n\n /**\n * When true, shows browser-style up/down arrow buttons on the rail.\n * Styling follows track/thumb CSS tokens.\n */\n readonly navigationButtons = input(false);\n\n /** Pixels to scroll per arrow click. */\n readonly navScrollStep = input(DEFAULT_NAV_SCROLL_STEP_PX);\n\n private hideTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n afterRenderEffect(() => {\n if (!isPlatformBrowser(this.platformId) || !this.rootEl) {\n return;\n }\n syncOverlayScrollbarDesignTokens(this.host.nativeElement, this.rootEl);\n });\n\n effect(() => {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n this.navigationButtons();\n this.remeasureCustomThumb();\n });\n\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n injectOverlayScrollbarStyles(this.document);\n const element = this.host.nativeElement;\n this.mountCustomScrollbar(element);\n\n const interactionRoot = () => this.rootEl ?? element;\n\n const onScroll = () => {\n this.syncThumbPosition();\n this.bumpVisibility();\n };\n const onScrollEnd = () => {\n this.scheduleHide();\n this.syncEngagedAfterScroll();\n };\n const onPointerEnter = () => this.bumpVisibility();\n const onPointerMove = () => this.bumpVisibility();\n const onPointerLeave = () => {\n if (this.thumbDragPointerId === null) {\n this.setScrollbarEngaged(false);\n }\n this.deactivateThumb();\n };\n\n element.addEventListener('scroll', onScroll, { passive: true });\n element.addEventListener('scrollend', onScrollEnd);\n\n const root = interactionRoot();\n root.addEventListener('pointerenter', onPointerEnter);\n root.addEventListener('pointermove', onPointerMove);\n root.addEventListener('pointerleave', onPointerLeave);\n\n this.bindRailInteraction(element);\n\n this.resizeObserver = new ResizeObserver(() => this.remeasureCustomThumb());\n this.resizeObserver.observe(element);\n\n this.observeHostDesignTokenChanges(element);\n this.queueDesignTokenSync();\n this.remeasureCustomThumb();\n\n this.destroyRef.onDestroy(() => {\n this.clearHideTimer();\n this.clearTrackPressed();\n this.unbindRailInteraction?.();\n this.unbindRailInteraction = null;\n if (this.thumbEl && this.thumbDragPointerId !== null) {\n try {\n this.thumbEl.releasePointerCapture(this.thumbDragPointerId);\n } catch {\n /* already released */\n }\n }\n this.thumbDragPointerId = null;\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.designTokenMutationObserver?.disconnect();\n this.designTokenMutationObserver = null;\n if (this.designTokenSyncFrame !== null) {\n cancelAnimationFrame(this.designTokenSyncFrame);\n this.designTokenSyncFrame = null;\n }\n element.removeEventListener('scroll', onScroll);\n element.removeEventListener('scrollend', onScrollEnd);\n root.removeEventListener('pointerenter', onPointerEnter);\n root.removeEventListener('pointermove', onPointerMove);\n root.removeEventListener('pointerleave', onPointerLeave);\n this.unmountCustomScrollbar(element);\n });\n });\n }\n\n /** Host and rail are siblings under the root; mirror CSS variables when the host style/class changes. */\n private observeHostDesignTokenChanges(host: HTMLElement): void {\n this.designTokenMutationObserver?.disconnect();\n this.designTokenMutationObserver = new MutationObserver(() => this.queueDesignTokenSync());\n this.designTokenMutationObserver.observe(host, {\n attributes: true,\n attributeFilter: ['style', 'class'],\n });\n }\n\n private queueDesignTokenSync(): void {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n if (this.designTokenSyncFrame !== null) {\n cancelAnimationFrame(this.designTokenSyncFrame);\n }\n this.designTokenSyncFrame = requestAnimationFrame(() => {\n this.designTokenSyncFrame = null;\n syncOverlayScrollbarDesignTokens(this.host.nativeElement, this.rootEl);\n this.remeasureCustomThumb();\n });\n }\n\n /** Rail lives on a wrapper so it stays fixed while the host scrolls. */\n private ensureScrollRoot(scroller: HTMLElement): HTMLElement {\n const parent = scroller.parentElement;\n if (parent?.classList.contains(ROOT_CLASS)) {\n this.rootEl = parent;\n return parent;\n }\n\n const root = this.document.createElement('div');\n root.className = ROOT_CLASS;\n parent?.insertBefore(root, scroller);\n root.appendChild(scroller);\n this.rootEl = root;\n return root;\n }\n\n private mountCustomScrollbar(element: HTMLElement): void {\n const root = this.ensureScrollRoot(element);\n const existingRail = root.querySelector<HTMLElement>(`.${RAIL_CLASS}`);\n if (existingRail) {\n this.railEl = existingRail;\n this.ensureRailStructure(existingRail);\n this.bindRailInteraction(element);\n return;\n }\n\n const rail = this.document.createElement('div');\n rail.className = RAIL_CLASS;\n rail.setAttribute('aria-hidden', 'true');\n this.ensureRailStructure(rail);\n root.appendChild(rail);\n this.railEl = rail;\n this.bindRailInteraction(element);\n }\n\n private ensureRailStructure(rail: HTMLElement): void {\n let thumb = rail.querySelector<HTMLElement>(`.${THUMB_CLASS}`);\n if (!thumb) {\n thumb = this.document.createElement('div');\n thumb.className = THUMB_CLASS;\n thumb.addEventListener('pointerdown', (event) => this.onThumbPointerDown(event));\n }\n\n let track = rail.querySelector<HTMLElement>(`.${TRACK_CLASS}`);\n if (!track) {\n const navUp = this.createNavButton('up');\n const navDown = this.createNavButton('down');\n track = this.document.createElement('div');\n track.className = TRACK_CLASS;\n rail.replaceChildren(navUp, track, navDown);\n track.appendChild(thumb);\n this.navUpEl = navUp;\n this.navDownEl = navDown;\n } else if (!track.contains(thumb)) {\n track.appendChild(thumb);\n this.navUpEl = rail.querySelector<HTMLButtonElement>(`.${NAV_BTN_CLASS}--up`);\n this.navDownEl = rail.querySelector<HTMLButtonElement>(`.${NAV_BTN_CLASS}--down`);\n } else {\n this.navUpEl = rail.querySelector<HTMLButtonElement>(`.${NAV_BTN_CLASS}--up`);\n this.navDownEl = rail.querySelector<HTMLButtonElement>(`.${NAV_BTN_CLASS}--down`);\n }\n\n this.trackEl = track;\n this.thumbEl = thumb;\n }\n\n private createNavButton(direction: 'up' | 'down'): HTMLButtonElement {\n const button = this.document.createElement('button');\n button.type = 'button';\n button.className = `${NAV_BTN_CLASS} ${NAV_BTN_CLASS}--${direction}`;\n button.setAttribute('aria-label', direction === 'up' ? 'Scroll up' : 'Scroll down');\n\n const arrow = this.document.createElement('span');\n arrow.className = `${NAV_ARROW_CLASS} ${NAV_ARROW_CLASS}--${direction}`;\n arrow.setAttribute('aria-hidden', 'true');\n button.appendChild(arrow);\n return button;\n }\n\n private resolveNavScrollStepPx(): number {\n const step = this.navScrollStep();\n if (Number.isFinite(step) && step > 0) {\n return Math.round(step);\n }\n return DEFAULT_NAV_SCROLL_STEP_PX;\n }\n\n private scrollByNavStep(scroller: HTMLElement, direction: -1 | 1): void {\n scroller.scrollTop += direction * this.resolveNavScrollStepPx();\n this.syncThumbPosition();\n this.bumpVisibility();\n }\n\n private bindRailInteraction(scroller: HTMLElement): void {\n const rail = this.railEl;\n if (!rail) {\n return;\n }\n\n this.unbindRailInteraction?.();\n\n const onRailPointerEnter = () => {\n this.pointerOverRail = true;\n this.showScrollbar();\n this.clearHideTimer();\n };\n const onRailPointerLeave = () => {\n this.pointerOverRail = false;\n this.clearTrackPressed();\n this.syncEngagedAfterScroll();\n this.scheduleHide();\n };\n const onRailWheel = (event: WheelEvent) => {\n event.preventDefault();\n event.stopPropagation();\n scroller.scrollTop += event.deltaY;\n this.bumpVisibility();\n };\n const onRailPointerDown = (event: PointerEvent) => {\n const thumb = this.thumbEl;\n const target = event.target as Node;\n if (thumb && (event.target === thumb || thumb.contains(target))) {\n return;\n }\n if (\n this.navUpEl?.contains(target) ||\n this.navDownEl?.contains(target) ||\n event.target === this.navUpEl ||\n event.target === this.navDownEl\n ) {\n return;\n }\n const track = this.trackEl;\n if (!track || (event.target !== track && !track.contains(target))) {\n return;\n }\n if (this.isPointerOverThumbVisual(event.clientX, event.clientY)) {\n return;\n }\n event.preventDefault();\n this.beginTrackPressed();\n this.jumpScrollToTrackPointer(event, scroller);\n };\n\n const bindNavButton = (button: HTMLButtonElement | null, direction: -1 | 1): (() => void) => {\n if (!button) {\n return () => undefined;\n }\n\n const onNavPointerLeave = () => {\n button.classList.remove(NAV_BTN_PRESSED_CLASS);\n };\n const onNavPointerDown = (event: PointerEvent) => {\n event.preventDefault();\n event.stopPropagation();\n button.classList.add(NAV_BTN_PRESSED_CLASS);\n this.beginTrackPressed();\n this.scrollByNavStep(scroller, direction);\n };\n const onNavPointerUp = () => {\n button.classList.remove(NAV_BTN_PRESSED_CLASS);\n };\n\n button.addEventListener('pointerleave', onNavPointerLeave);\n button.addEventListener('pointerdown', onNavPointerDown);\n button.addEventListener('pointerup', onNavPointerUp);\n button.addEventListener('pointercancel', onNavPointerUp);\n\n return () => {\n button.removeEventListener('pointerleave', onNavPointerLeave);\n button.removeEventListener('pointerdown', onNavPointerDown);\n button.removeEventListener('pointerup', onNavPointerUp);\n button.removeEventListener('pointercancel', onNavPointerUp);\n button.classList.remove(NAV_BTN_PRESSED_CLASS);\n };\n };\n\n const unbindNavUp = bindNavButton(this.navUpEl, -1);\n const unbindNavDown = bindNavButton(this.navDownEl, 1);\n\n rail.addEventListener('pointerenter', onRailPointerEnter);\n rail.addEventListener('pointerleave', onRailPointerLeave);\n rail.addEventListener('wheel', onRailWheel, { passive: false });\n rail.addEventListener('pointerdown', onRailPointerDown);\n\n this.unbindRailInteraction = () => {\n rail.removeEventListener('pointerenter', onRailPointerEnter);\n rail.removeEventListener('pointerleave', onRailPointerLeave);\n this.clearTrackPressed();\n rail.removeEventListener('wheel', onRailWheel);\n rail.removeEventListener('pointerdown', onRailPointerDown);\n unbindNavUp?.();\n unbindNavDown?.();\n };\n }\n\n private unmountCustomScrollbar(scroller: HTMLElement): void {\n this.railEl?.remove();\n this.railEl = null;\n this.trackEl = null;\n this.navUpEl = null;\n this.navDownEl = null;\n this.thumbEl = null;\n this.thumbLayout = null;\n\n const root = this.rootEl;\n if (!root?.classList.contains(ROOT_CLASS)) {\n this.rootEl = null;\n return;\n }\n\n const parent = root.parentElement;\n if (parent) {\n parent.insertBefore(scroller, root);\n root.remove();\n }\n this.rootEl = null;\n }\n\n private remeasureCustomThumb(): void {\n const element = this.host.nativeElement;\n const rail = this.railEl;\n const thumb = this.thumbEl;\n if (!rail || !thumb) {\n return;\n }\n\n syncOverlayScrollbarDesignTokens(element, this.rootEl);\n\n const clientHeight = element.clientHeight;\n rail.style.height = `${clientHeight}px`;\n\n const widthPx = readRailWidthPx(rail);\n const navigationEnabled = this.navigationButtons() === true;\n rail.classList.toggle(RAIL_WITH_NAV_CLASS, navigationEnabled);\n\n const track = this.trackEl;\n let trackViewportHeight = track?.clientHeight ?? 0;\n if (trackViewportHeight <= 0) {\n trackViewportHeight = navigationEnabled ? Math.max(0, clientHeight - 2 * widthPx) : clientHeight;\n }\n\n const scrollHeight = element.scrollHeight;\n const isScrollable = scrollHeight > clientHeight + 1;\n rail.hidden = !isScrollable;\n if (!isScrollable) {\n this.thumbLayout = null;\n thumb.style.height = '';\n thumb.style.top = '';\n return;\n }\n\n const thumbHeight = Math.max(MIN_THUMB_HEIGHT_PX, (trackViewportHeight / scrollHeight) * trackViewportHeight);\n const maxScroll = scrollHeight - clientHeight;\n const maxThumbOffset = Math.max(0, trackViewportHeight - thumbHeight);\n\n this.thumbLayout = { thumbHeight, maxScroll, maxThumbOffset };\n thumb.style.height = `${thumbHeight}px`;\n this.syncThumbPosition();\n }\n\n private syncThumbPosition(): void {\n const element = this.host.nativeElement;\n const thumb = this.thumbEl;\n const layout = this.thumbLayout;\n if (!thumb || !layout) {\n return;\n }\n\n const { maxScroll, maxThumbOffset } = layout;\n const scrollTop = element.scrollTop;\n const thumbOffset = maxScroll > 0 ? (scrollTop / maxScroll) * maxThumbOffset : 0;\n thumb.style.top = `${thumbOffset}px`;\n }\n\n /** Move thumb (and scroll position) to the pointer Y on the track. */\n private jumpScrollToTrackPointer(event: PointerEvent, scroller: HTMLElement): void {\n const rail = this.railEl;\n const layout = this.thumbLayout;\n if (!rail || !layout || layout.maxScroll <= 0 || layout.maxThumbOffset <= 0) {\n return;\n }\n\n const track = this.trackEl ?? rail;\n const rect = track.getBoundingClientRect();\n const offsetY = event.clientY - rect.top;\n const thumbTop = Math.min(layout.maxThumbOffset, Math.max(0, offsetY - layout.thumbHeight / 2));\n scroller.scrollTop = (thumbTop / layout.maxThumbOffset) * layout.maxScroll;\n this.syncThumbPosition();\n this.bumpVisibility();\n }\n\n private onThumbPointerDown(event: PointerEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const element = this.host.nativeElement;\n const thumb = this.thumbEl;\n if (!thumb) {\n return;\n }\n\n this.setScrollbarEngaged(true);\n this.bumpVisibility();\n thumb.setPointerCapture(event.pointerId);\n\n const startY = event.clientY;\n const startScrollTop = element.scrollTop;\n const layout = this.thumbLayout;\n const clientHeight = element.clientHeight;\n const maxScroll = layout?.maxScroll ?? element.scrollHeight - clientHeight;\n const maxThumbOffset = layout?.maxThumbOffset ?? clientHeight - thumb.offsetHeight;\n\n const onPointerMove = (moveEvent: PointerEvent) => {\n if (maxThumbOffset <= 0 || maxScroll <= 0) {\n return;\n }\n const deltaY = moveEvent.clientY - startY;\n const scrollDelta = (deltaY / maxThumbOffset) * maxScroll;\n element.scrollTop = startScrollTop + scrollDelta;\n };\n\n const onPointerUp = (upEvent: PointerEvent) => {\n thumb.releasePointerCapture(upEvent.pointerId);\n thumb.removeEventListener('pointermove', onPointerMove);\n thumb.removeEventListener('pointerup', onPointerUp);\n thumb.removeEventListener('pointercancel', onPointerUp);\n this.thumbDragPointerId = null;\n this.setScrollbarEngaged(false);\n };\n\n this.thumbDragPointerId = event.pointerId;\n thumb.addEventListener('pointermove', onPointerMove);\n thumb.addEventListener('pointerup', onPointerUp);\n thumb.addEventListener('pointercancel', onPointerUp);\n }\n\n private showScrollbar(): void {\n this.host.nativeElement.classList.add(VISIBLE_CLASS);\n this.rootEl?.classList.add(VISIBLE_CLASS);\n }\n\n private bumpVisibility(): void {\n this.showScrollbar();\n if (this.pointerOverRail) {\n this.clearHideTimer();\n return;\n }\n this.scheduleHide();\n }\n\n private deactivateThumb(): void {\n if (this.pointerOverRail) {\n return;\n }\n this.clearHideTimer();\n this.host.nativeElement.classList.remove(VISIBLE_CLASS);\n this.rootEl?.classList.remove(VISIBLE_CLASS);\n this.setScrollbarEngaged(false);\n }\n\n private setScrollbarEngaged(engaged: boolean): void {\n this.host.nativeElement.classList.toggle(ENGAGED_CLASS, engaged);\n this.rootEl?.classList.toggle(ENGAGED_CLASS, engaged);\n }\n\n private setTrackPressed(pressed: boolean): void {\n this.host.nativeElement.classList.toggle(TRACK_PRESSED_CLASS, pressed);\n this.rootEl?.classList.toggle(TRACK_PRESSED_CLASS, pressed);\n }\n\n private isPointerOverThumbVisual(clientX: number, clientY: number): boolean {\n const thumb = this.thumbEl;\n if (!thumb) {\n return false;\n }\n const rect = thumb.getBoundingClientRect();\n return clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom;\n }\n\n private beginTrackPressed(): void {\n this.clearTrackPressed();\n this.setTrackPressed(true);\n const release = () => {\n this.setTrackPressed(false);\n this.document.removeEventListener('pointerup', release);\n this.document.removeEventListener('pointercancel', release);\n this.trackPressReleaseListener = null;\n };\n this.trackPressReleaseListener = release;\n this.document.addEventListener('pointerup', release);\n this.document.addEventListener('pointercancel', release);\n }\n\n private clearTrackPressed(): void {\n if (this.trackPressReleaseListener) {\n this.document.removeEventListener('pointerup', this.trackPressReleaseListener);\n this.document.removeEventListener('pointercancel', this.trackPressReleaseListener);\n this.trackPressReleaseListener = null;\n }\n this.setTrackPressed(false);\n }\n\n private syncEngagedAfterScroll(): void {\n if (this.thumbDragPointerId !== null) {\n return;\n }\n this.setScrollbarEngaged(false);\n }\n\n private scheduleHide(): void {\n if (this.pointerOverRail) {\n this.clearHideTimer();\n return;\n }\n this.clearHideTimer();\n const delay = Math.max(0, this.hideDelay());\n this.hideTimer = setTimeout(() => {\n this.deactivateThumb();\n this.hideTimer = null;\n }, delay);\n }\n\n private clearHideTimer(): void {\n if (this.hideTimer !== null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = null;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -236,6 +236,9 @@ async function loadAXWysiwygExtensions(options) {
236
236
  return extensions;
237
237
  }
238
238
 
239
+ /**
240
+ * @deprecated Use `AXTextEditorService` from `@acorex/components/text-editor` instead.
241
+ */
239
242
  class AXWysiwyg {
240
243
  constructor() {
241
244
  this.editor = signal(null, /* @ts-ignore */
@@ -732,6 +735,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
732
735
  type: Injectable
733
736
  }] });
734
737
 
738
+ /** @deprecated Use `@acorex/components/text-editor` instead. */
739
+
735
740
  /**
736
741
  * Generated bundle index. Do not edit.
737
742
  */
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-cdk-wysiwyg.mjs","sources":["../../../../packages/cdk/wysiwyg/src/lib/wysiwyg-font-size.extension.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg.types.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg-text-direction.extension.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg-video.extension.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg.extensions.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg.class.ts","../../../../packages/cdk/wysiwyg/src/acorex-cdk-wysiwyg.ts"],"sourcesContent":["import { Extension } from '@tiptap/core';\nimport type { AXWysiwygFontSizeToken } from './wysiwyg.types';\n\nexport const AX_WYSIWYG_FONT_SIZE_VALUES: Record<AXWysiwygFontSizeToken, string> = {\n small: '0.75em',\n large: '1.5em',\n huge: '2.5em',\n};\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n axWysiwygFontSize: {\n setAxWysiwygFontSize: (size: AXWysiwygFontSizeToken | null) => ReturnType;\n };\n }\n}\n\nexport const AXWysiwygFontSizeExtension = Extension.create({\n name: 'axWysiwygFontSize',\n\n addGlobalAttributes() {\n return [\n {\n types: ['textStyle'],\n attributes: {\n fontSize: {\n default: null,\n parseHTML: (element) => element.style.fontSize?.replace(/['\"]+/g, '') || null,\n renderHTML: (attributes) => {\n if (!attributes['fontSize']) {\n return {};\n }\n return { style: `font-size: ${attributes['fontSize']}` };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setAxWysiwygFontSize:\n (size: AXWysiwygFontSizeToken | null) =>\n ({ chain }) => {\n if (!size) {\n return chain().focus().unsetMark('textStyle').run();\n }\n const cssSize = AX_WYSIWYG_FONT_SIZE_VALUES[size];\n return chain().focus().setMark('textStyle', { fontSize: cssSize }).run();\n },\n };\n },\n});\n","import type { Editor, Extensions } from '@tiptap/core';\n\nexport type AXWysiwygEditor = Editor;\n\nexport type AXWysiwygHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type AXWysiwygTextAlign = 'left' | 'center' | 'right' | 'justify';\n\nexport type AXWysiwygFontSizeToken = 'small' | 'large' | 'huge';\n\nexport type AXWysiwygTextDirection = 'rtl' | 'ltr';\n\nexport interface AXWysiwygRange {\n index: number;\n length: number;\n}\n\nexport type AXWysiwygCommand =\n | 'bold'\n | 'italic'\n | 'underline'\n | 'strike'\n | 'code'\n | 'codeBlock'\n | 'heading'\n | 'paragraph'\n | 'bulletList'\n | 'orderedList'\n | 'blockquote'\n | 'textAlign'\n | 'color'\n | 'highlight'\n | 'link'\n | 'image'\n | 'video'\n | 'undo'\n | 'redo'\n | 'clearFormatting'\n | 'direction'\n | 'fontSize';\n\nexport interface AXWysiwygFeatures {\n textAlign?: boolean;\n image?: boolean;\n link?: boolean;\n video?: boolean;\n color?: boolean;\n highlight?: boolean;\n placeholder?: boolean;\n fontSize?: boolean;\n textDirection?: boolean;\n}\n\nexport const AX_DEFAULT_WYSIWYG_FEATURES: AXWysiwygFeatures = {\n textAlign: true,\n image: true,\n link: true,\n video: true,\n color: true,\n highlight: true,\n placeholder: true,\n fontSize: true,\n textDirection: true,\n};\n\nexport interface AXWysiwygState {\n bold: boolean;\n italic: boolean;\n underline: boolean;\n strike: boolean;\n code: boolean;\n codeBlock: boolean;\n headingLevel: AXWysiwygHeadingLevel | null;\n bulletList: boolean;\n orderedList: boolean;\n blockquote: boolean;\n textAlign: AXWysiwygTextAlign | null;\n textColor: string | null;\n highlightColor: string | null;\n linkHref: string | null;\n fontSize: AXWysiwygFontSizeToken | null;\n textDirection: AXWysiwygTextDirection | null;\n canUndo: boolean;\n canRedo: boolean;\n isEmpty: boolean;\n isFocused: boolean;\n}\n\nexport const AX_EMPTY_WYSIWYG_STATE: AXWysiwygState = {\n bold: false,\n italic: false,\n underline: false,\n strike: false,\n code: false,\n codeBlock: false,\n headingLevel: null,\n bulletList: false,\n orderedList: false,\n blockquote: false,\n textAlign: null,\n textColor: null,\n highlightColor: null,\n linkHref: null,\n fontSize: null,\n textDirection: null,\n canUndo: false,\n canRedo: false,\n isEmpty: true,\n isFocused: false,\n};\n\nexport interface AXWysiwygInitOptions {\n content?: string;\n editable?: boolean;\n placeholder?: string;\n features?: AXWysiwygFeatures;\n extensions?: Extensions;\n /** @deprecated Use `editable: false` instead. */\n readOnly?: boolean;\n onUpdate?: (editor: AXWysiwygEditor) => void;\n onFocus?: (editor: AXWysiwygEditor) => void;\n onBlur?: (editor: AXWysiwygEditor) => void;\n onSelectionUpdate?: (editor: AXWysiwygEditor) => void;\n}\n\nexport interface AXWysiwygLoadExtensionsOptions {\n features?: AXWysiwygFeatures;\n placeholder?: string;\n}\n","import { Extension } from '@tiptap/core';\nimport type { AXWysiwygTextDirection } from './wysiwyg.types';\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n axWysiwygTextDirection: {\n setAxWysiwygTextDirection: (direction: AXWysiwygTextDirection | null) => ReturnType;\n };\n }\n}\n\nexport const AXWysiwygTextDirectionExtension = Extension.create({\n name: 'axWysiwygTextDirection',\n\n addGlobalAttributes() {\n return [\n {\n types: ['paragraph', 'heading'],\n attributes: {\n dir: {\n default: null,\n parseHTML: (element) => element.getAttribute('dir'),\n renderHTML: (attributes) => {\n if (!attributes['dir']) {\n return {};\n }\n return { dir: attributes['dir'] };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setAxWysiwygTextDirection:\n (direction: AXWysiwygTextDirection | null) =>\n ({ chain }) =>\n chain()\n .focus()\n .updateAttributes('paragraph', { dir: direction })\n .updateAttributes('heading', { dir: direction })\n .run(),\n };\n },\n});\n","import { mergeAttributes, Node } from '@tiptap/core';\n\nexport interface AXWysiwygVideoOptions {\n inline: boolean;\n allowBase64: boolean;\n HTMLAttributes: Record<string, unknown>;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n axWysiwygVideo: {\n setVideo: (options: { src: string }) => ReturnType;\n };\n }\n}\n\nfunction toEmbedSrc(src: string): string {\n const trimmed = src.trim();\n if (!trimmed) {\n return trimmed;\n }\n try {\n const url = new URL(trimmed);\n if (url.hostname.includes('youtube.com') && url.searchParams.get('v')) {\n return `https://www.youtube.com/embed/${url.searchParams.get('v')}`;\n }\n if (url.hostname === 'youtu.be') {\n return `https://www.youtube.com/embed/${url.pathname.slice(1)}`;\n }\n } catch {\n return trimmed;\n }\n return trimmed;\n}\n\nexport const AXWysiwygVideoExtension = Node.create<AXWysiwygVideoOptions>({\n name: 'video',\n\n group: 'block',\n\n atom: true,\n\n addOptions() {\n return {\n inline: false,\n allowBase64: false,\n HTMLAttributes: {},\n };\n },\n\n addAttributes() {\n return {\n src: {\n default: null,\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'div[data-wysiwyg-video] iframe',\n },\n {\n tag: 'iframe[src]',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n const src = HTMLAttributes['src'] as string | undefined;\n return [\n 'div',\n mergeAttributes(this.options.HTMLAttributes, { 'data-wysiwyg-video': '' }),\n [\n 'iframe',\n mergeAttributes({\n src,\n frameborder: '0',\n allowfullscreen: 'true',\n allow: 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture',\n }),\n ],\n ];\n },\n\n addCommands() {\n return {\n setVideo:\n ({ src }) =>\n ({ commands }) =>\n commands.insertContent({\n type: this.name,\n attrs: { src: toEmbedSrc(src) },\n }),\n };\n },\n});\n","import type { Extensions } from '@tiptap/core';\nimport {\n AX_DEFAULT_WYSIWYG_FEATURES,\n type AXWysiwygFeatures,\n type AXWysiwygLoadExtensionsOptions,\n} from './wysiwyg.types';\nimport { AXWysiwygFontSizeExtension } from './wysiwyg-font-size.extension';\nimport { AXWysiwygTextDirectionExtension } from './wysiwyg-text-direction.extension';\nimport { AXWysiwygVideoExtension } from './wysiwyg-video.extension';\n\nexport async function loadAXWysiwygExtensions(options?: AXWysiwygLoadExtensionsOptions): Promise<Extensions> {\n const features: AXWysiwygFeatures = { ...AX_DEFAULT_WYSIWYG_FEATURES, ...options?.features };\n\n const [starterKitMod, textStyleMod, colorMod, highlightMod, underlineMod] = await Promise.all([\n import('@tiptap/starter-kit'),\n import('@tiptap/extension-text-style'),\n import('@tiptap/extension-color'),\n import('@tiptap/extension-highlight'),\n import('@tiptap/extension-underline'),\n ]);\n\n const extensions: Extensions = [\n starterKitMod.default.configure({\n link: features.link ? { openOnClick: false } : false,\n }),\n underlineMod.default,\n ];\n\n if (features.color || features.fontSize) {\n extensions.push(textStyleMod.TextStyle);\n }\n\n if (features.color) {\n extensions.push(colorMod.Color);\n }\n\n if (features.highlight) {\n extensions.push(highlightMod.default.configure({ multicolor: true }));\n }\n\n if (features.fontSize) {\n extensions.push(AXWysiwygFontSizeExtension);\n }\n\n if (features.textDirection) {\n extensions.push(AXWysiwygTextDirectionExtension);\n }\n\n if (features.textAlign) {\n const textAlignMod = await import('@tiptap/extension-text-align');\n extensions.push(\n textAlignMod.default.configure({\n types: ['heading', 'paragraph'],\n }),\n );\n }\n\n if (features.image) {\n const imageMod = await import('@tiptap/extension-image');\n extensions.push(\n imageMod.default.configure({\n inline: true,\n allowBase64: true,\n }),\n );\n }\n\n if (features.video) {\n extensions.push(AXWysiwygVideoExtension);\n }\n\n if (features.placeholder && options?.placeholder) {\n const { Placeholder } = await import('@tiptap/extensions');\n extensions.push(\n Placeholder.configure({\n placeholder: options.placeholder,\n }),\n );\n }\n\n return extensions;\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport type { Editor } from '@tiptap/core';\nimport { AX_WYSIWYG_FONT_SIZE_VALUES } from './wysiwyg-font-size.extension';\nimport { loadAXWysiwygExtensions } from './wysiwyg.extensions';\nimport {\n AX_EMPTY_WYSIWYG_STATE,\n type AXWysiwygCommand,\n type AXWysiwygEditor,\n type AXWysiwygFontSizeToken,\n type AXWysiwygHeadingLevel,\n type AXWysiwygInitOptions,\n type AXWysiwygRange,\n type AXWysiwygState,\n type AXWysiwygTextAlign,\n type AXWysiwygTextDirection,\n} from './wysiwyg.types';\n\n@Injectable()\nexport class AXWysiwyg {\n readonly editor = signal<AXWysiwygEditor | null>(null);\n readonly state = signal<AXWysiwygState>(AX_EMPTY_WYSIWYG_STATE);\n readonly ready = signal(false);\n\n private readonly platformId = inject(PLATFORM_ID);\n private destroyed = false;\n private applyingContent = false;\n\n async init(container: HTMLElement | string, options: AXWysiwygInitOptions = {}): Promise<void> {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const element =\n typeof container === 'string' ? (document.querySelector(container) as HTMLElement | null) : container;\n if (!element) {\n return;\n }\n\n this.destroyed = false;\n const editable = options.readOnly === true ? false : (options.editable ?? true);\n\n const extensions = await loadAXWysiwygExtensions({\n features: options.features,\n placeholder: options.placeholder,\n });\n\n if (this.destroyed) {\n return;\n }\n\n const { Editor } = await import('@tiptap/core');\n if (this.destroyed) {\n return;\n }\n\n const allExtensions = [...extensions, ...(options.extensions ?? [])];\n\n const editor = new Editor({\n element,\n extensions: allExtensions,\n content: options.content ?? '',\n editable,\n editorProps: {\n attributes: {\n class: 'tiptap',\n },\n },\n onUpdate: ({ editor: ed }) => {\n this.refreshState(ed);\n if (!this.applyingContent) {\n options.onUpdate?.(ed);\n }\n },\n onSelectionUpdate: ({ editor: ed }) => {\n this.refreshState(ed);\n options.onSelectionUpdate?.(ed);\n },\n onFocus: ({ editor: ed }) => {\n this.refreshState(ed);\n options.onFocus?.(ed);\n },\n onBlur: ({ editor: ed }) => {\n this.refreshState(ed);\n options.onBlur?.(ed);\n },\n });\n\n this.editor.set(editor);\n this.ready.set(true);\n this.refreshState(editor);\n }\n\n destroy(): void {\n this.destroyed = true;\n const ed = this.editor();\n ed?.destroy();\n this.editor.set(null);\n this.ready.set(false);\n this.state.set(AX_EMPTY_WYSIWYG_STATE);\n }\n\n setContent(value: string | null | undefined, emit = false): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n\n const html = value?.trim() ? value : '';\n this.applyingContent = true;\n try {\n ed.commands.setContent(html, { emitUpdate: emit });\n this.refreshState(ed);\n } finally {\n this.applyingContent = false;\n }\n }\n\n getHTML(): string {\n return this.editor()?.getHTML() ?? '';\n }\n\n get JSONoutput(): unknown {\n return this.editor()?.getJSON() ?? null;\n }\n\n getText(): string {\n return this.editor()?.getText() ?? '';\n }\n\n isEmpty(): boolean {\n return this.editor()?.isEmpty ?? true;\n }\n\n setEditable(editable: boolean): void {\n this.editor()?.setEditable(editable);\n const ed = this.editor();\n if (ed) {\n this.refreshState(ed);\n }\n }\n\n get HTMLoutput(): string {\n return this.getHTML();\n }\n\n bold(value: boolean): void {\n this.setMarkActive('bold', value);\n }\n\n italic(value: boolean): void {\n this.setMarkActive('italic', value);\n }\n\n underLine(value: boolean): void {\n this.setMarkActive('underline', value);\n }\n\n strike(value: boolean): void {\n this.setMarkActive('strike', value);\n }\n\n color(value: string): void {\n if (value) {\n this.setColor(value);\n } else {\n this.unsetColor();\n }\n }\n\n header(value: number): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n if (value >= 1 && value <= 6) {\n ed.chain()\n .focus()\n .toggleHeading({ level: value as AXWysiwygHeadingLevel })\n .run();\n } else {\n ed.chain().focus().setParagraph().run();\n }\n }\n\n list(value: 'ordered' | 'bullet' | ''): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n const chain = ed.chain().focus();\n if (value === 'bullet') {\n chain.toggleBulletList().run();\n } else if (value === 'ordered') {\n chain.toggleOrderedList().run();\n } else {\n chain.liftListItem('listItem').run();\n }\n }\n\n align(value: 'center' | 'right' | 'left' | 'justify'): void {\n if (value === 'left') {\n this.setTextAlign('left');\n } else {\n this.setTextAlign(value);\n }\n }\n\n direction(value: AXWysiwygTextDirection): void {\n this.setTextDirection(value);\n }\n\n fontSize(value: 'small' | false | 'large' | 'huge', range: AXWysiwygRange): void {\n const ed = this.editor();\n if (!ed || !range) {\n return;\n }\n const from = range.index;\n const to = range.index + range.length;\n if (value === false) {\n ed.chain().focus().setTextSelection({ from, to }).setAxWysiwygFontSize(null).run();\n return;\n }\n ed.chain().focus().setTextSelection({ from, to }).setAxWysiwygFontSize(value).run();\n }\n\n background(value: string): void {\n if (value) {\n this.setHighlight(value);\n } else {\n this.unsetHighlight();\n }\n }\n\n addImage(value: string): void {\n this.insertImage(value);\n }\n\n insertVideo(src: string): void {\n this.editor()?.chain().focus().setVideo({ src }).run();\n }\n\n codeBlock(range: AXWysiwygRange, status: boolean): void {\n const ed = this.editor();\n if (!ed || !range) {\n return;\n }\n const from = range.index;\n const to = range.index + range.length;\n if (status) {\n ed.chain().focus().setTextSelection({ from, to }).toggleCodeBlock().run();\n } else {\n ed.chain().focus().setTextSelection({ from, to }).setParagraph().run();\n }\n }\n\n focus(): void {\n this.editor()?.commands.focus();\n }\n\n blur(): void {\n this.editor()?.commands.blur();\n }\n\n toggleBold(): void {\n this.editor()?.chain().focus().toggleBold().run();\n }\n\n toggleItalic(): void {\n this.editor()?.chain().focus().toggleItalic().run();\n }\n\n toggleUnderline(): void {\n this.editor()?.chain().focus().toggleUnderline().run();\n }\n\n toggleStrike(): void {\n this.editor()?.chain().focus().toggleStrike().run();\n }\n\n toggleCode(): void {\n this.editor()?.chain().focus().toggleCode().run();\n }\n\n toggleCodeBlock(): void {\n this.editor()?.chain().focus().toggleCodeBlock().run();\n }\n\n toggleHeading(level: AXWysiwygHeadingLevel): void {\n this.editor()?.chain().focus().toggleHeading({ level }).run();\n }\n\n setParagraph(): void {\n this.editor()?.chain().focus().setParagraph().run();\n }\n\n toggleBulletList(): void {\n this.editor()?.chain().focus().toggleBulletList().run();\n }\n\n toggleOrderedList(): void {\n this.editor()?.chain().focus().toggleOrderedList().run();\n }\n\n toggleBlockquote(): void {\n this.editor()?.chain().focus().toggleBlockquote().run();\n }\n\n setTextAlign(align: AXWysiwygTextAlign): void {\n this.editor()?.chain().focus().setTextAlign(align).run();\n }\n\n setTextDirection(direction: AXWysiwygTextDirection | null): void {\n this.editor()?.chain().focus().setAxWysiwygTextDirection(direction).run();\n }\n\n setFontSize(size: AXWysiwygFontSizeToken | null): void {\n this.editor()?.chain().focus().setAxWysiwygFontSize(size).run();\n }\n\n setColor(color: string): void {\n this.editor()?.chain().focus().setColor(color).run();\n }\n\n unsetColor(): void {\n this.editor()?.chain().focus().unsetColor().run();\n }\n\n setHighlight(color: string): void {\n this.editor()?.chain().focus().setHighlight({ color }).run();\n }\n\n unsetHighlight(): void {\n this.editor()?.chain().focus().unsetHighlight().run();\n }\n\n setLink(href: string): void {\n this.editor()?.chain().focus().extendMarkRange('link').setLink({ href }).run();\n }\n\n unsetLink(): void {\n this.editor()?.chain().focus().unsetLink().run();\n }\n\n insertImage(src: string, alt?: string): void {\n this.editor()?.chain().focus().setImage({ src, alt }).run();\n }\n\n undo(): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n ed.chain().focus().undo().run();\n this.refreshState(ed);\n }\n\n redo(): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n ed.chain().focus().redo().run();\n this.refreshState(ed);\n }\n\n clearFormatting(): void {\n this.editor()?.chain().focus().clearNodes().unsetAllMarks().run();\n }\n\n execute(command: AXWysiwygCommand, payload?: unknown): void {\n switch (command) {\n case 'bold':\n this.toggleBold();\n break;\n case 'italic':\n this.toggleItalic();\n break;\n case 'underline':\n this.toggleUnderline();\n break;\n case 'strike':\n this.toggleStrike();\n break;\n case 'code':\n this.toggleCode();\n break;\n case 'codeBlock':\n this.toggleCodeBlock();\n break;\n case 'heading':\n if (typeof payload === 'number') {\n this.toggleHeading(payload as AXWysiwygHeadingLevel);\n }\n break;\n case 'paragraph':\n this.setParagraph();\n break;\n case 'bulletList':\n this.toggleBulletList();\n break;\n case 'orderedList':\n this.toggleOrderedList();\n break;\n case 'blockquote':\n this.toggleBlockquote();\n break;\n case 'textAlign':\n if (typeof payload === 'string') {\n this.setTextAlign(payload as AXWysiwygTextAlign);\n }\n break;\n case 'direction':\n if (payload === 'rtl' || payload === 'ltr') {\n this.setTextDirection(payload);\n }\n break;\n case 'fontSize':\n if (payload === null) {\n this.setFontSize(null);\n } else if (payload === 'small' || payload === 'large' || payload === 'huge') {\n this.setFontSize(payload);\n }\n break;\n case 'color':\n if (typeof payload === 'string') {\n this.setColor(payload);\n } else {\n this.unsetColor();\n }\n break;\n case 'highlight':\n if (typeof payload === 'string') {\n this.setHighlight(payload);\n } else {\n this.unsetHighlight();\n }\n break;\n case 'link':\n if (typeof payload === 'string' && payload) {\n this.setLink(payload);\n } else {\n this.unsetLink();\n }\n break;\n case 'image':\n if (typeof payload === 'string') {\n this.insertImage(payload);\n }\n break;\n case 'video':\n if (typeof payload === 'string') {\n this.insertVideo(payload);\n }\n break;\n case 'undo':\n this.undo();\n break;\n case 'redo':\n this.redo();\n break;\n case 'clearFormatting':\n this.clearFormatting();\n break;\n }\n }\n\n isActive(name: string, attrs?: Record<string, unknown>): boolean {\n return this.editor()?.isActive(name, attrs) ?? false;\n }\n\n can(command: 'undo' | 'redo'): boolean {\n const ed = this.editor();\n if (!ed) {\n return false;\n }\n if (command === 'undo') {\n return ed.can().undo();\n }\n return ed.can().redo();\n }\n\n private setMarkActive(name: 'bold' | 'italic' | 'underline' | 'strike', active: boolean): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n const chain = ed.chain().focus();\n switch (name) {\n case 'bold':\n active ? chain.setBold().run() : chain.unsetBold().run();\n break;\n case 'italic':\n active ? chain.setItalic().run() : chain.unsetItalic().run();\n break;\n case 'underline':\n active ? chain.setUnderline().run() : chain.unsetUnderline().run();\n break;\n case 'strike':\n active ? chain.setStrike().run() : chain.unsetStrike().run();\n break;\n }\n }\n\n private refreshState(editor: Editor): void {\n const textColor = editor.getAttributes('textStyle')['color'] as string | undefined;\n const fontSizeCss = editor.getAttributes('textStyle')['fontSize'] as string | undefined;\n const highlightColor = editor.getAttributes('highlight')['color'] as string | undefined;\n const linkHref = editor.getAttributes('link')['href'] as string | undefined;\n const dir = (editor.getAttributes('paragraph')['dir'] || editor.getAttributes('heading')['dir']) as\n | AXWysiwygTextDirection\n | undefined;\n\n let headingLevel: AXWysiwygHeadingLevel | null = null;\n for (let level = 1; level <= 6; level++) {\n if (editor.isActive('heading', { level })) {\n headingLevel = level as AXWysiwygHeadingLevel;\n break;\n }\n }\n\n let textAlign: AXWysiwygTextAlign | null = null;\n for (const align of ['left', 'center', 'right', 'justify'] as AXWysiwygTextAlign[]) {\n if (editor.isActive({ textAlign: align })) {\n textAlign = align;\n break;\n }\n }\n\n let fontSize: AXWysiwygFontSizeToken | null = null;\n if (fontSizeCss) {\n for (const [token, css] of Object.entries(AX_WYSIWYG_FONT_SIZE_VALUES) as [AXWysiwygFontSizeToken, string][]) {\n if (fontSizeCss === css) {\n fontSize = token;\n break;\n }\n }\n }\n\n this.state.set({\n bold: editor.isActive('bold'),\n italic: editor.isActive('italic'),\n underline: editor.isActive('underline'),\n strike: editor.isActive('strike'),\n code: editor.isActive('code'),\n codeBlock: editor.isActive('codeBlock'),\n headingLevel,\n bulletList: editor.isActive('bulletList'),\n orderedList: editor.isActive('orderedList'),\n blockquote: editor.isActive('blockquote'),\n textAlign,\n textColor: textColor ?? null,\n highlightColor: highlightColor ?? null,\n linkHref: linkHref ?? null,\n fontSize,\n textDirection: dir ?? null,\n canUndo: editor.can().undo(),\n canRedo: editor.can().redo(),\n isEmpty: editor.isEmpty,\n isFocused: editor.isFocused,\n });\n }\n}\n\nexport type { AXWysiwygRange };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAGO,MAAM,2BAA2B,GAA2C;AACjF,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,OAAO;CACd;AAUM,MAAM,0BAA0B,GAAG,SAAS,CAAC,MAAM,CAAC;AACzD,IAAA,IAAI,EAAE,mBAAmB;IAEzB,mBAAmB,GAAA;QACjB,OAAO;AACL,YAAA;gBACE,KAAK,EAAE,CAAC,WAAW,CAAC;AACpB,gBAAA,UAAU,EAAE;AACV,oBAAA,QAAQ,EAAE;AACR,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,SAAS,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,IAAI;AAC7E,wBAAA,UAAU,EAAE,CAAC,UAAU,KAAI;AACzB,4BAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AAC3B,gCAAA,OAAO,EAAE;4BACX;4BACA,OAAO,EAAE,KAAK,EAAE,CAAA,WAAA,EAAc,UAAU,CAAC,UAAU,CAAC,CAAA,CAAE,EAAE;wBAC1D,CAAC;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;IACH,CAAC;IAED,WAAW,GAAA;QACT,OAAO;YACL,oBAAoB,EAClB,CAAC,IAAmC,KACpC,CAAC,EAAE,KAAK,EAAE,KAAI;gBACZ,IAAI,CAAC,IAAI,EAAE;AACT,oBAAA,OAAO,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE;gBACrD;AACA,gBAAA,MAAM,OAAO,GAAG,2BAA2B,CAAC,IAAI,CAAC;AACjD,gBAAA,OAAO,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE;YAC1E,CAAC;SACJ;IACH,CAAC;AACF,CAAA,CAAC;;ACAK,MAAM,2BAA2B,GAAsB;AAC5D,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,aAAa,EAAE,IAAI;;AA0Bd,MAAM,sBAAsB,GAAmB;AACpD,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,cAAc,EAAE,IAAI;AACpB,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,SAAS,EAAE,KAAK;;;ACjGX,MAAM,+BAA+B,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9D,IAAA,IAAI,EAAE,wBAAwB;IAE9B,mBAAmB,GAAA;QACjB,OAAO;AACL,YAAA;AACE,gBAAA,KAAK,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;AAC/B,gBAAA,UAAU,EAAE;AACV,oBAAA,GAAG,EAAE;AACH,wBAAA,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,wBAAA,UAAU,EAAE,CAAC,UAAU,KAAI;AACzB,4BAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACtB,gCAAA,OAAO,EAAE;4BACX;4BACA,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE;wBACnC,CAAC;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;IACH,CAAC;IAED,WAAW,GAAA;QACT,OAAO;AACL,YAAA,yBAAyB,EACvB,CAAC,SAAwC,KACzC,CAAC,EAAE,KAAK,EAAE,KACR,KAAK;AACF,iBAAA,KAAK;iBACL,gBAAgB,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE;iBAChD,gBAAgB,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE;AAC9C,iBAAA,GAAG,EAAE;SACb;IACH,CAAC;AACF,CAAA,CAAC;;AC9BF,SAAS,UAAU,CAAC,GAAW,EAAA;AAC7B,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE;IAC1B,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,IAAI;AACF,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACrE,OAAO,CAAA,8BAAA,EAAiC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,CAAE;QACrE;AACA,QAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;YAC/B,OAAO,CAAA,8BAAA,EAAiC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE;QACjE;IACF;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,OAAO,OAAO;AAChB;AAEO,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAwB;AACxE,IAAA,IAAI,EAAE,OAAO;AAEb,IAAA,KAAK,EAAE,OAAO;AAEd,IAAA,IAAI,EAAE,IAAI;IAEV,UAAU,GAAA;QACR,OAAO;AACL,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,cAAc,EAAE,EAAE;SACnB;IACH,CAAC;IAED,aAAa,GAAA;QACX,OAAO;AACL,YAAA,GAAG,EAAE;AACH,gBAAA,OAAO,EAAE,IAAI;AACd,aAAA;SACF;IACH,CAAC;IAED,SAAS,GAAA;QACP,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,gCAAgC;AACtC,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,aAAa;AACnB,aAAA;SACF;IACH,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE,EAAA;AAC3B,QAAA,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAuB;QACvD,OAAO;YACL,KAAK;AACL,YAAA,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,CAAC;AAC1E,YAAA;gBACE,QAAQ;AACR,gBAAA,eAAe,CAAC;oBACd,GAAG;AACH,oBAAA,WAAW,EAAE,GAAG;AAChB,oBAAA,eAAe,EAAE,MAAM;AACvB,oBAAA,KAAK,EAAE,0FAA0F;iBAClG,CAAC;AACH,aAAA;SACF;IACH,CAAC;IAED,WAAW,GAAA;QACT,OAAO;AACL,YAAA,QAAQ,EACN,CAAC,EAAE,GAAG,EAAE,KACR,CAAC,EAAE,QAAQ,EAAE,KACX,QAAQ,CAAC,aAAa,CAAC;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE;aAChC,CAAC;SACP;IACH,CAAC;AACF,CAAA,CAAC;;ACvFK,eAAe,uBAAuB,CAAC,OAAwC,EAAA;IACpF,MAAM,QAAQ,GAAsB,EAAE,GAAG,2BAA2B,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE;AAE5F,IAAA,MAAM,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5F,OAAO,qBAAqB,CAAC;QAC7B,OAAO,8BAA8B,CAAC;QACtC,OAAO,yBAAyB,CAAC;QACjC,OAAO,6BAA6B,CAAC;QACrC,OAAO,6BAA6B,CAAC;AACtC,KAAA,CAAC;AAEF,IAAA,MAAM,UAAU,GAAe;AAC7B,QAAA,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;AAC9B,YAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,KAAK;SACrD,CAAC;AACF,QAAA,YAAY,CAAC,OAAO;KACrB;IAED,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACvC,QAAA,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;IACzC;AAEA,IAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,QAAA,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACjC;AAEA,IAAA,IAAI,QAAQ,CAAC,SAAS,EAAE;AACtB,QAAA,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE;AAEA,IAAA,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACrB,QAAA,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC;IAC7C;AAEA,IAAA,IAAI,QAAQ,CAAC,aAAa,EAAE;AAC1B,QAAA,UAAU,CAAC,IAAI,CAAC,+BAA+B,CAAC;IAClD;AAEA,IAAA,IAAI,QAAQ,CAAC,SAAS,EAAE;AACtB,QAAA,MAAM,YAAY,GAAG,MAAM,OAAO,8BAA8B,CAAC;QACjE,UAAU,CAAC,IAAI,CACb,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC;AAC7B,YAAA,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;AAChC,SAAA,CAAC,CACH;IACH;AAEA,IAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,QAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,yBAAyB,CAAC;QACxD,UAAU,CAAC,IAAI,CACb,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;AACzB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,WAAW,EAAE,IAAI;AAClB,SAAA,CAAC,CACH;IACH;AAEA,IAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,QAAA,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC;IAC1C;IAEA,IAAI,QAAQ,CAAC,WAAW,IAAI,OAAO,EAAE,WAAW,EAAE;QAChD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,OAAO,oBAAoB,CAAC;AAC1D,QAAA,UAAU,CAAC,IAAI,CACb,WAAW,CAAC,SAAS,CAAC;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;AACjC,SAAA,CAAC,CACH;IACH;AAEA,IAAA,OAAO,UAAU;AACnB;;MC9Da,SAAS,CAAA;AADtB,IAAA,WAAA,GAAA;QAEW,IAAA,CAAA,MAAM,GAAG,MAAM,CAAyB,IAAI;mFAAC;QAC7C,IAAA,CAAA,KAAK,GAAG,MAAM,CAAiB,sBAAsB;kFAAC;QACtD,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK;kFAAC;AAEb,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QACzC,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,eAAe,GAAG,KAAK;AAwhBhC,IAAA;AAthBC,IAAA,MAAM,IAAI,CAAC,SAA+B,EAAE,UAAgC,EAAE,EAAA;QAC5E,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACvC;QACF;AAEA,QAAA,MAAM,OAAO,GACX,OAAO,SAAS,KAAK,QAAQ,GAAI,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAwB,GAAG,SAAS;QACvG,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;AAE/E,QAAA,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC;YAC/C,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;AACjC,SAAA,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB;QACF;QAEA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,cAAc,CAAC;AAC/C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB;QACF;AAEA,QAAA,MAAM,aAAa,GAAG,CAAC,GAAG,UAAU,EAAE,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;AAEpE,QAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,OAAO;AACP,YAAA,UAAU,EAAE,aAAa;AACzB,YAAA,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,QAAQ;AACR,YAAA,WAAW,EAAE;AACX,gBAAA,UAAU,EAAE;AACV,oBAAA,KAAK,EAAE,QAAQ;AAChB,iBAAA;AACF,aAAA;YACD,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAI;AAC3B,gBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,oBAAA,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACxB;YACF,CAAC;YACD,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAI;AACpC,gBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,gBAAA,OAAO,CAAC,iBAAiB,GAAG,EAAE,CAAC;YACjC,CAAC;YACD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAI;AAC1B,gBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,gBAAA,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;YACvB,CAAC;YACD,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAI;AACzB,gBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,gBAAA,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;YACtB,CAAC;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAC3B;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,EAAE,EAAE,OAAO,EAAE;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACxC;AAEA,IAAA,UAAU,CAAC,KAAgC,EAAE,IAAI,GAAG,KAAK,EAAA;AACvD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;YACP;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,GAAG,EAAE;AACvC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI;AACF,YAAA,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAClD,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACvB;gBAAU;AACR,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;QAC9B;IACF;IAEA,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IACvC;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,IAAI;IACzC;IAEA,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IACvC;IAEA,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,IAAI;IACvC;AAEA,IAAA,WAAW,CAAC,QAAiB,EAAA;QAC3B,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC;AACpC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,EAAE,EAAE;AACN,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACvB;IACF;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;IACvB;AAEA,IAAA,IAAI,CAAC,KAAc,EAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC;IACnC;AAEA,IAAA,MAAM,CAAC,KAAc,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC;IACrC;AAEA,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC;IACxC;AAEA,IAAA,MAAM,CAAC,KAAc,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC;IACrC;AAEA,IAAA,KAAK,CAAC,KAAa,EAAA;QACjB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB;aAAO;YACL,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;AAEA,IAAA,MAAM,CAAC,KAAa,EAAA;AAClB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;YACP;QACF;QACA,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;YAC5B,EAAE,CAAC,KAAK;AACL,iBAAA,KAAK;AACL,iBAAA,aAAa,CAAC,EAAE,KAAK,EAAE,KAA8B,EAAE;AACvD,iBAAA,GAAG,EAAE;QACV;aAAO;AACL,YAAA,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;QACzC;IACF;AAEA,IAAA,IAAI,CAAC,KAAgC,EAAA;AACnC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;YACP;QACF;QACA,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE;AAChC,QAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AACtB,YAAA,KAAK,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE;QAChC;AAAO,aAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AAC9B,YAAA,KAAK,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE;QACjC;aAAO;YACL,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE;QACtC;IACF;AAEA,IAAA,KAAK,CAAC,KAA8C,EAAA;AAClD,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAC3B;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA,IAAA,SAAS,CAAC,KAA6B,EAAA;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC9B;IAEA,QAAQ,CAAC,KAAyC,EAAE,KAAqB,EAAA;AACvE,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;AACxB,QAAA,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE;YACjB;QACF;AACA,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK;QACxB,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM;AACrC,QAAA,IAAI,KAAK,KAAK,KAAK,EAAE;YACnB,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;YAClF;QACF;QACA,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;IACrF;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAC1B;aAAO;YACL,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACzB;AAEA,IAAA,WAAW,CAAC,GAAW,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IACxD;IAEA,SAAS,CAAC,KAAqB,EAAE,MAAe,EAAA;AAC9C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;AACxB,QAAA,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE;YACjB;QACF;AACA,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK;QACxB,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM;QACrC,IAAI,MAAM,EAAE;YACV,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE;QAC3E;aAAO;YACL,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;QACxE;IACF;IAEA,KAAK,GAAA;QACH,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE;IACjC;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE;IAChC;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE;IACnD;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;IACrD;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE;IACxD;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;IACrD;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE;IACnD;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE;IACxD;AAEA,IAAA,aAAa,CAAC,KAA4B,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE;IAC/D;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;IACrD;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE;IACzD;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE;IAC1D;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE;IACzD;AAEA,IAAA,YAAY,CAAC,KAAyB,EAAA;AACpC,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;IAC1D;AAEA,IAAA,gBAAgB,CAAC,SAAwC,EAAA;AACvD,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE;IAC3E;AAEA,IAAA,WAAW,CAAC,IAAmC,EAAA;AAC7C,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;IACjE;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;IACtD;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE;IACnD;AAEA,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE;IAC9D;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE;IACvD;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;QAClB,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE;IAChF;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE;IAClD;IAEA,WAAW,CAAC,GAAW,EAAE,GAAY,EAAA;QACnC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IAC7D;IAEA,IAAI,GAAA;AACF,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;YACP;QACF;AACA,QAAA,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;IACvB;IAEA,IAAI,GAAA;AACF,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;YACP;QACF;AACA,QAAA,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;IACvB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE;IACnE;IAEA,OAAO,CAAC,OAAyB,EAAE,OAAiB,EAAA;QAClD,QAAQ,OAAO;AACb,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,UAAU,EAAE;gBACjB;AACF,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,YAAY,EAAE;gBACnB;AACF,YAAA,KAAK,WAAW;gBACd,IAAI,CAAC,eAAe,EAAE;gBACtB;AACF,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,YAAY,EAAE;gBACnB;AACF,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,UAAU,EAAE;gBACjB;AACF,YAAA,KAAK,WAAW;gBACd,IAAI,CAAC,eAAe,EAAE;gBACtB;AACF,YAAA,KAAK,SAAS;AACZ,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,oBAAA,IAAI,CAAC,aAAa,CAAC,OAAgC,CAAC;gBACtD;gBACA;AACF,YAAA,KAAK,WAAW;gBACd,IAAI,CAAC,YAAY,EAAE;gBACnB;AACF,YAAA,KAAK,YAAY;gBACf,IAAI,CAAC,gBAAgB,EAAE;gBACvB;AACF,YAAA,KAAK,aAAa;gBAChB,IAAI,CAAC,iBAAiB,EAAE;gBACxB;AACF,YAAA,KAAK,YAAY;gBACf,IAAI,CAAC,gBAAgB,EAAE;gBACvB;AACF,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,oBAAA,IAAI,CAAC,YAAY,CAAC,OAA6B,CAAC;gBAClD;gBACA;AACF,YAAA,KAAK,WAAW;gBACd,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,EAAE;AAC1C,oBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;gBAChC;gBACA;AACF,YAAA,KAAK,UAAU;AACb,gBAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACxB;AAAO,qBAAA,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,MAAM,EAAE;AAC3E,oBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBAC3B;gBACA;AACF,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,oBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACxB;qBAAO;oBACL,IAAI,CAAC,UAAU,EAAE;gBACnB;gBACA;AACF,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,oBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC5B;qBAAO;oBACL,IAAI,CAAC,cAAc,EAAE;gBACvB;gBACA;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,EAAE;AAC1C,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBACvB;qBAAO;oBACL,IAAI,CAAC,SAAS,EAAE;gBAClB;gBACA;AACF,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,oBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBAC3B;gBACA;AACF,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,oBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBAC3B;gBACA;AACF,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,EAAE;gBACX;AACF,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,EAAE;gBACX;AACF,YAAA,KAAK,iBAAiB;gBACpB,IAAI,CAAC,eAAe,EAAE;gBACtB;;IAEN;IAEA,QAAQ,CAAC,IAAY,EAAE,KAA+B,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK;IACtD;AAEA,IAAA,GAAG,CAAC,OAAwB,EAAA;AAC1B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;AACP,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,OAAO,KAAK,MAAM,EAAE;AACtB,YAAA,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;QACxB;AACA,QAAA,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;IACxB;IAEQ,aAAa,CAAC,IAAgD,EAAE,MAAe,EAAA;AACrF,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;YACP;QACF;QACA,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE;QAChC,QAAQ,IAAI;AACV,YAAA,KAAK,MAAM;gBACT,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE;gBACxD;AACF,YAAA,KAAK,QAAQ;gBACX,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE;gBAC5D;AACF,YAAA,KAAK,WAAW;gBACd,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE;gBAClE;AACF,YAAA,KAAK,QAAQ;gBACX,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE;gBAC5D;;IAEN;AAEQ,IAAA,YAAY,CAAC,MAAc,EAAA;QACjC,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,OAAO,CAAuB;QAClF,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,UAAU,CAAuB;QACvF,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,OAAO,CAAuB;QACvF,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAuB;QAC3E,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAElF;QAEb,IAAI,YAAY,GAAiC,IAAI;AACrD,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;YACvC,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;gBACzC,YAAY,GAAG,KAA8B;gBAC7C;YACF;QACF;QAEA,IAAI,SAAS,GAA8B,IAAI;AAC/C,QAAA,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAyB,EAAE;YAClF,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;gBACzC,SAAS,GAAG,KAAK;gBACjB;YACF;QACF;QAEA,IAAI,QAAQ,GAAkC,IAAI;QAClD,IAAI,WAAW,EAAE;AACf,YAAA,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAuC,EAAE;AAC5G,gBAAA,IAAI,WAAW,KAAK,GAAG,EAAE;oBACvB,QAAQ,GAAG,KAAK;oBAChB;gBACF;YACF;QACF;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACb,YAAA,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7B,YAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACjC,YAAA,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;AACvC,YAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACjC,YAAA,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7B,YAAA,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;YACvC,YAAY;AACZ,YAAA,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;AACzC,YAAA,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC3C,YAAA,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;YACzC,SAAS;YACT,SAAS,EAAE,SAAS,IAAI,IAAI;YAC5B,cAAc,EAAE,cAAc,IAAI,IAAI;YACtC,QAAQ,EAAE,QAAQ,IAAI,IAAI;YAC1B,QAAQ;YACR,aAAa,EAAE,GAAG,IAAI,IAAI;AAC1B,YAAA,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;AAC5B,YAAA,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;YAC5B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;AAC5B,SAAA,CAAC;IACJ;8GA9hBW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAT,SAAS,EAAA,CAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB;;;AClBD;;AAEG;;"}
1
+ {"version":3,"file":"acorex-cdk-wysiwyg.mjs","sources":["../../../../packages/cdk/wysiwyg/src/lib/wysiwyg-font-size.extension.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg.types.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg-text-direction.extension.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg-video.extension.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg.extensions.ts","../../../../packages/cdk/wysiwyg/src/lib/wysiwyg.class.ts","../../../../packages/cdk/wysiwyg/src/index.ts","../../../../packages/cdk/wysiwyg/src/acorex-cdk-wysiwyg.ts"],"sourcesContent":["import { Extension } from '@tiptap/core';\nimport type { AXWysiwygFontSizeToken } from './wysiwyg.types';\n\nexport const AX_WYSIWYG_FONT_SIZE_VALUES: Record<AXWysiwygFontSizeToken, string> = {\n small: '0.75em',\n large: '1.5em',\n huge: '2.5em',\n};\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n axWysiwygFontSize: {\n setAxWysiwygFontSize: (size: AXWysiwygFontSizeToken | null) => ReturnType;\n };\n }\n}\n\nexport const AXWysiwygFontSizeExtension = Extension.create({\n name: 'axWysiwygFontSize',\n\n addGlobalAttributes() {\n return [\n {\n types: ['textStyle'],\n attributes: {\n fontSize: {\n default: null,\n parseHTML: (element) => element.style.fontSize?.replace(/['\"]+/g, '') || null,\n renderHTML: (attributes) => {\n if (!attributes['fontSize']) {\n return {};\n }\n return { style: `font-size: ${attributes['fontSize']}` };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setAxWysiwygFontSize:\n (size: AXWysiwygFontSizeToken | null) =>\n ({ chain }) => {\n if (!size) {\n return chain().focus().unsetMark('textStyle').run();\n }\n const cssSize = AX_WYSIWYG_FONT_SIZE_VALUES[size];\n return chain().focus().setMark('textStyle', { fontSize: cssSize }).run();\n },\n };\n },\n});\n","import type { Editor, Extensions } from '@tiptap/core';\n\nexport type AXWysiwygEditor = Editor;\n\nexport type AXWysiwygHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type AXWysiwygTextAlign = 'left' | 'center' | 'right' | 'justify';\n\nexport type AXWysiwygFontSizeToken = 'small' | 'large' | 'huge';\n\nexport type AXWysiwygTextDirection = 'rtl' | 'ltr';\n\nexport interface AXWysiwygRange {\n index: number;\n length: number;\n}\n\nexport type AXWysiwygCommand =\n | 'bold'\n | 'italic'\n | 'underline'\n | 'strike'\n | 'code'\n | 'codeBlock'\n | 'heading'\n | 'paragraph'\n | 'bulletList'\n | 'orderedList'\n | 'blockquote'\n | 'textAlign'\n | 'color'\n | 'highlight'\n | 'link'\n | 'image'\n | 'video'\n | 'undo'\n | 'redo'\n | 'clearFormatting'\n | 'direction'\n | 'fontSize';\n\nexport interface AXWysiwygFeatures {\n textAlign?: boolean;\n image?: boolean;\n link?: boolean;\n video?: boolean;\n color?: boolean;\n highlight?: boolean;\n placeholder?: boolean;\n fontSize?: boolean;\n textDirection?: boolean;\n}\n\nexport const AX_DEFAULT_WYSIWYG_FEATURES: AXWysiwygFeatures = {\n textAlign: true,\n image: true,\n link: true,\n video: true,\n color: true,\n highlight: true,\n placeholder: true,\n fontSize: true,\n textDirection: true,\n};\n\nexport interface AXWysiwygState {\n bold: boolean;\n italic: boolean;\n underline: boolean;\n strike: boolean;\n code: boolean;\n codeBlock: boolean;\n headingLevel: AXWysiwygHeadingLevel | null;\n bulletList: boolean;\n orderedList: boolean;\n blockquote: boolean;\n textAlign: AXWysiwygTextAlign | null;\n textColor: string | null;\n highlightColor: string | null;\n linkHref: string | null;\n fontSize: AXWysiwygFontSizeToken | null;\n textDirection: AXWysiwygTextDirection | null;\n canUndo: boolean;\n canRedo: boolean;\n isEmpty: boolean;\n isFocused: boolean;\n}\n\nexport const AX_EMPTY_WYSIWYG_STATE: AXWysiwygState = {\n bold: false,\n italic: false,\n underline: false,\n strike: false,\n code: false,\n codeBlock: false,\n headingLevel: null,\n bulletList: false,\n orderedList: false,\n blockquote: false,\n textAlign: null,\n textColor: null,\n highlightColor: null,\n linkHref: null,\n fontSize: null,\n textDirection: null,\n canUndo: false,\n canRedo: false,\n isEmpty: true,\n isFocused: false,\n};\n\nexport interface AXWysiwygInitOptions {\n content?: string;\n editable?: boolean;\n placeholder?: string;\n features?: AXWysiwygFeatures;\n extensions?: Extensions;\n /** @deprecated Use `editable: false` instead. */\n readOnly?: boolean;\n onUpdate?: (editor: AXWysiwygEditor) => void;\n onFocus?: (editor: AXWysiwygEditor) => void;\n onBlur?: (editor: AXWysiwygEditor) => void;\n onSelectionUpdate?: (editor: AXWysiwygEditor) => void;\n}\n\nexport interface AXWysiwygLoadExtensionsOptions {\n features?: AXWysiwygFeatures;\n placeholder?: string;\n}\n","import { Extension } from '@tiptap/core';\nimport type { AXWysiwygTextDirection } from './wysiwyg.types';\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n axWysiwygTextDirection: {\n setAxWysiwygTextDirection: (direction: AXWysiwygTextDirection | null) => ReturnType;\n };\n }\n}\n\nexport const AXWysiwygTextDirectionExtension = Extension.create({\n name: 'axWysiwygTextDirection',\n\n addGlobalAttributes() {\n return [\n {\n types: ['paragraph', 'heading'],\n attributes: {\n dir: {\n default: null,\n parseHTML: (element) => element.getAttribute('dir'),\n renderHTML: (attributes) => {\n if (!attributes['dir']) {\n return {};\n }\n return { dir: attributes['dir'] };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setAxWysiwygTextDirection:\n (direction: AXWysiwygTextDirection | null) =>\n ({ chain }) =>\n chain()\n .focus()\n .updateAttributes('paragraph', { dir: direction })\n .updateAttributes('heading', { dir: direction })\n .run(),\n };\n },\n});\n","import { mergeAttributes, Node } from '@tiptap/core';\n\nexport interface AXWysiwygVideoOptions {\n inline: boolean;\n allowBase64: boolean;\n HTMLAttributes: Record<string, unknown>;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n axWysiwygVideo: {\n setVideo: (options: { src: string }) => ReturnType;\n };\n }\n}\n\nfunction toEmbedSrc(src: string): string {\n const trimmed = src.trim();\n if (!trimmed) {\n return trimmed;\n }\n try {\n const url = new URL(trimmed);\n if (url.hostname.includes('youtube.com') && url.searchParams.get('v')) {\n return `https://www.youtube.com/embed/${url.searchParams.get('v')}`;\n }\n if (url.hostname === 'youtu.be') {\n return `https://www.youtube.com/embed/${url.pathname.slice(1)}`;\n }\n } catch {\n return trimmed;\n }\n return trimmed;\n}\n\nexport const AXWysiwygVideoExtension = Node.create<AXWysiwygVideoOptions>({\n name: 'video',\n\n group: 'block',\n\n atom: true,\n\n addOptions() {\n return {\n inline: false,\n allowBase64: false,\n HTMLAttributes: {},\n };\n },\n\n addAttributes() {\n return {\n src: {\n default: null,\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'div[data-wysiwyg-video] iframe',\n },\n {\n tag: 'iframe[src]',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n const src = HTMLAttributes['src'] as string | undefined;\n return [\n 'div',\n mergeAttributes(this.options.HTMLAttributes, { 'data-wysiwyg-video': '' }),\n [\n 'iframe',\n mergeAttributes({\n src,\n frameborder: '0',\n allowfullscreen: 'true',\n allow: 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture',\n }),\n ],\n ];\n },\n\n addCommands() {\n return {\n setVideo:\n ({ src }) =>\n ({ commands }) =>\n commands.insertContent({\n type: this.name,\n attrs: { src: toEmbedSrc(src) },\n }),\n };\n },\n});\n","import type { Extensions } from '@tiptap/core';\nimport {\n AX_DEFAULT_WYSIWYG_FEATURES,\n type AXWysiwygFeatures,\n type AXWysiwygLoadExtensionsOptions,\n} from './wysiwyg.types';\nimport { AXWysiwygFontSizeExtension } from './wysiwyg-font-size.extension';\nimport { AXWysiwygTextDirectionExtension } from './wysiwyg-text-direction.extension';\nimport { AXWysiwygVideoExtension } from './wysiwyg-video.extension';\n\nexport async function loadAXWysiwygExtensions(options?: AXWysiwygLoadExtensionsOptions): Promise<Extensions> {\n const features: AXWysiwygFeatures = { ...AX_DEFAULT_WYSIWYG_FEATURES, ...options?.features };\n\n const [starterKitMod, textStyleMod, colorMod, highlightMod, underlineMod] = await Promise.all([\n import('@tiptap/starter-kit'),\n import('@tiptap/extension-text-style'),\n import('@tiptap/extension-color'),\n import('@tiptap/extension-highlight'),\n import('@tiptap/extension-underline'),\n ]);\n\n const extensions: Extensions = [\n starterKitMod.default.configure({\n link: features.link ? { openOnClick: false } : false,\n }),\n underlineMod.default,\n ];\n\n if (features.color || features.fontSize) {\n extensions.push(textStyleMod.TextStyle);\n }\n\n if (features.color) {\n extensions.push(colorMod.Color);\n }\n\n if (features.highlight) {\n extensions.push(highlightMod.default.configure({ multicolor: true }));\n }\n\n if (features.fontSize) {\n extensions.push(AXWysiwygFontSizeExtension);\n }\n\n if (features.textDirection) {\n extensions.push(AXWysiwygTextDirectionExtension);\n }\n\n if (features.textAlign) {\n const textAlignMod = await import('@tiptap/extension-text-align');\n extensions.push(\n textAlignMod.default.configure({\n types: ['heading', 'paragraph'],\n }),\n );\n }\n\n if (features.image) {\n const imageMod = await import('@tiptap/extension-image');\n extensions.push(\n imageMod.default.configure({\n inline: true,\n allowBase64: true,\n }),\n );\n }\n\n if (features.video) {\n extensions.push(AXWysiwygVideoExtension);\n }\n\n if (features.placeholder && options?.placeholder) {\n const { Placeholder } = await import('@tiptap/extensions');\n extensions.push(\n Placeholder.configure({\n placeholder: options.placeholder,\n }),\n );\n }\n\n return extensions;\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport type { Editor } from '@tiptap/core';\nimport { AX_WYSIWYG_FONT_SIZE_VALUES } from './wysiwyg-font-size.extension';\nimport { loadAXWysiwygExtensions } from './wysiwyg.extensions';\nimport {\n AX_EMPTY_WYSIWYG_STATE,\n type AXWysiwygCommand,\n type AXWysiwygEditor,\n type AXWysiwygFontSizeToken,\n type AXWysiwygHeadingLevel,\n type AXWysiwygInitOptions,\n type AXWysiwygRange,\n type AXWysiwygState,\n type AXWysiwygTextAlign,\n type AXWysiwygTextDirection,\n} from './wysiwyg.types';\n\n/**\n * @deprecated Use `AXTextEditorService` from `@acorex/components/text-editor` instead.\n */\n@Injectable()\nexport class AXWysiwyg {\n readonly editor = signal<AXWysiwygEditor | null>(null);\n readonly state = signal<AXWysiwygState>(AX_EMPTY_WYSIWYG_STATE);\n readonly ready = signal(false);\n\n private readonly platformId = inject(PLATFORM_ID);\n private destroyed = false;\n private applyingContent = false;\n\n async init(container: HTMLElement | string, options: AXWysiwygInitOptions = {}): Promise<void> {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const element =\n typeof container === 'string' ? (document.querySelector(container) as HTMLElement | null) : container;\n if (!element) {\n return;\n }\n\n this.destroyed = false;\n const editable = options.readOnly === true ? false : (options.editable ?? true);\n\n const extensions = await loadAXWysiwygExtensions({\n features: options.features,\n placeholder: options.placeholder,\n });\n\n if (this.destroyed) {\n return;\n }\n\n const { Editor } = await import('@tiptap/core');\n if (this.destroyed) {\n return;\n }\n\n const allExtensions = [...extensions, ...(options.extensions ?? [])];\n\n const editor = new Editor({\n element,\n extensions: allExtensions,\n content: options.content ?? '',\n editable,\n editorProps: {\n attributes: {\n class: 'tiptap',\n },\n },\n onUpdate: ({ editor: ed }) => {\n this.refreshState(ed);\n if (!this.applyingContent) {\n options.onUpdate?.(ed);\n }\n },\n onSelectionUpdate: ({ editor: ed }) => {\n this.refreshState(ed);\n options.onSelectionUpdate?.(ed);\n },\n onFocus: ({ editor: ed }) => {\n this.refreshState(ed);\n options.onFocus?.(ed);\n },\n onBlur: ({ editor: ed }) => {\n this.refreshState(ed);\n options.onBlur?.(ed);\n },\n });\n\n this.editor.set(editor);\n this.ready.set(true);\n this.refreshState(editor);\n }\n\n destroy(): void {\n this.destroyed = true;\n const ed = this.editor();\n ed?.destroy();\n this.editor.set(null);\n this.ready.set(false);\n this.state.set(AX_EMPTY_WYSIWYG_STATE);\n }\n\n setContent(value: string | null | undefined, emit = false): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n\n const html = value?.trim() ? value : '';\n this.applyingContent = true;\n try {\n ed.commands.setContent(html, { emitUpdate: emit });\n this.refreshState(ed);\n } finally {\n this.applyingContent = false;\n }\n }\n\n getHTML(): string {\n return this.editor()?.getHTML() ?? '';\n }\n\n get JSONoutput(): unknown {\n return this.editor()?.getJSON() ?? null;\n }\n\n getText(): string {\n return this.editor()?.getText() ?? '';\n }\n\n isEmpty(): boolean {\n return this.editor()?.isEmpty ?? true;\n }\n\n setEditable(editable: boolean): void {\n this.editor()?.setEditable(editable);\n const ed = this.editor();\n if (ed) {\n this.refreshState(ed);\n }\n }\n\n get HTMLoutput(): string {\n return this.getHTML();\n }\n\n bold(value: boolean): void {\n this.setMarkActive('bold', value);\n }\n\n italic(value: boolean): void {\n this.setMarkActive('italic', value);\n }\n\n underLine(value: boolean): void {\n this.setMarkActive('underline', value);\n }\n\n strike(value: boolean): void {\n this.setMarkActive('strike', value);\n }\n\n color(value: string): void {\n if (value) {\n this.setColor(value);\n } else {\n this.unsetColor();\n }\n }\n\n header(value: number): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n if (value >= 1 && value <= 6) {\n ed.chain()\n .focus()\n .toggleHeading({ level: value as AXWysiwygHeadingLevel })\n .run();\n } else {\n ed.chain().focus().setParagraph().run();\n }\n }\n\n list(value: 'ordered' | 'bullet' | ''): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n const chain = ed.chain().focus();\n if (value === 'bullet') {\n chain.toggleBulletList().run();\n } else if (value === 'ordered') {\n chain.toggleOrderedList().run();\n } else {\n chain.liftListItem('listItem').run();\n }\n }\n\n align(value: 'center' | 'right' | 'left' | 'justify'): void {\n if (value === 'left') {\n this.setTextAlign('left');\n } else {\n this.setTextAlign(value);\n }\n }\n\n direction(value: AXWysiwygTextDirection): void {\n this.setTextDirection(value);\n }\n\n fontSize(value: 'small' | false | 'large' | 'huge', range: AXWysiwygRange): void {\n const ed = this.editor();\n if (!ed || !range) {\n return;\n }\n const from = range.index;\n const to = range.index + range.length;\n if (value === false) {\n ed.chain().focus().setTextSelection({ from, to }).setAxWysiwygFontSize(null).run();\n return;\n }\n ed.chain().focus().setTextSelection({ from, to }).setAxWysiwygFontSize(value).run();\n }\n\n background(value: string): void {\n if (value) {\n this.setHighlight(value);\n } else {\n this.unsetHighlight();\n }\n }\n\n addImage(value: string): void {\n this.insertImage(value);\n }\n\n insertVideo(src: string): void {\n this.editor()?.chain().focus().setVideo({ src }).run();\n }\n\n codeBlock(range: AXWysiwygRange, status: boolean): void {\n const ed = this.editor();\n if (!ed || !range) {\n return;\n }\n const from = range.index;\n const to = range.index + range.length;\n if (status) {\n ed.chain().focus().setTextSelection({ from, to }).toggleCodeBlock().run();\n } else {\n ed.chain().focus().setTextSelection({ from, to }).setParagraph().run();\n }\n }\n\n focus(): void {\n this.editor()?.commands.focus();\n }\n\n blur(): void {\n this.editor()?.commands.blur();\n }\n\n toggleBold(): void {\n this.editor()?.chain().focus().toggleBold().run();\n }\n\n toggleItalic(): void {\n this.editor()?.chain().focus().toggleItalic().run();\n }\n\n toggleUnderline(): void {\n this.editor()?.chain().focus().toggleUnderline().run();\n }\n\n toggleStrike(): void {\n this.editor()?.chain().focus().toggleStrike().run();\n }\n\n toggleCode(): void {\n this.editor()?.chain().focus().toggleCode().run();\n }\n\n toggleCodeBlock(): void {\n this.editor()?.chain().focus().toggleCodeBlock().run();\n }\n\n toggleHeading(level: AXWysiwygHeadingLevel): void {\n this.editor()?.chain().focus().toggleHeading({ level }).run();\n }\n\n setParagraph(): void {\n this.editor()?.chain().focus().setParagraph().run();\n }\n\n toggleBulletList(): void {\n this.editor()?.chain().focus().toggleBulletList().run();\n }\n\n toggleOrderedList(): void {\n this.editor()?.chain().focus().toggleOrderedList().run();\n }\n\n toggleBlockquote(): void {\n this.editor()?.chain().focus().toggleBlockquote().run();\n }\n\n setTextAlign(align: AXWysiwygTextAlign): void {\n this.editor()?.chain().focus().setTextAlign(align).run();\n }\n\n setTextDirection(direction: AXWysiwygTextDirection | null): void {\n this.editor()?.chain().focus().setAxWysiwygTextDirection(direction).run();\n }\n\n setFontSize(size: AXWysiwygFontSizeToken | null): void {\n this.editor()?.chain().focus().setAxWysiwygFontSize(size).run();\n }\n\n setColor(color: string): void {\n this.editor()?.chain().focus().setColor(color).run();\n }\n\n unsetColor(): void {\n this.editor()?.chain().focus().unsetColor().run();\n }\n\n setHighlight(color: string): void {\n this.editor()?.chain().focus().setHighlight({ color }).run();\n }\n\n unsetHighlight(): void {\n this.editor()?.chain().focus().unsetHighlight().run();\n }\n\n setLink(href: string): void {\n this.editor()?.chain().focus().extendMarkRange('link').setLink({ href }).run();\n }\n\n unsetLink(): void {\n this.editor()?.chain().focus().unsetLink().run();\n }\n\n insertImage(src: string, alt?: string): void {\n this.editor()?.chain().focus().setImage({ src, alt }).run();\n }\n\n undo(): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n ed.chain().focus().undo().run();\n this.refreshState(ed);\n }\n\n redo(): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n ed.chain().focus().redo().run();\n this.refreshState(ed);\n }\n\n clearFormatting(): void {\n this.editor()?.chain().focus().clearNodes().unsetAllMarks().run();\n }\n\n execute(command: AXWysiwygCommand, payload?: unknown): void {\n switch (command) {\n case 'bold':\n this.toggleBold();\n break;\n case 'italic':\n this.toggleItalic();\n break;\n case 'underline':\n this.toggleUnderline();\n break;\n case 'strike':\n this.toggleStrike();\n break;\n case 'code':\n this.toggleCode();\n break;\n case 'codeBlock':\n this.toggleCodeBlock();\n break;\n case 'heading':\n if (typeof payload === 'number') {\n this.toggleHeading(payload as AXWysiwygHeadingLevel);\n }\n break;\n case 'paragraph':\n this.setParagraph();\n break;\n case 'bulletList':\n this.toggleBulletList();\n break;\n case 'orderedList':\n this.toggleOrderedList();\n break;\n case 'blockquote':\n this.toggleBlockquote();\n break;\n case 'textAlign':\n if (typeof payload === 'string') {\n this.setTextAlign(payload as AXWysiwygTextAlign);\n }\n break;\n case 'direction':\n if (payload === 'rtl' || payload === 'ltr') {\n this.setTextDirection(payload);\n }\n break;\n case 'fontSize':\n if (payload === null) {\n this.setFontSize(null);\n } else if (payload === 'small' || payload === 'large' || payload === 'huge') {\n this.setFontSize(payload);\n }\n break;\n case 'color':\n if (typeof payload === 'string') {\n this.setColor(payload);\n } else {\n this.unsetColor();\n }\n break;\n case 'highlight':\n if (typeof payload === 'string') {\n this.setHighlight(payload);\n } else {\n this.unsetHighlight();\n }\n break;\n case 'link':\n if (typeof payload === 'string' && payload) {\n this.setLink(payload);\n } else {\n this.unsetLink();\n }\n break;\n case 'image':\n if (typeof payload === 'string') {\n this.insertImage(payload);\n }\n break;\n case 'video':\n if (typeof payload === 'string') {\n this.insertVideo(payload);\n }\n break;\n case 'undo':\n this.undo();\n break;\n case 'redo':\n this.redo();\n break;\n case 'clearFormatting':\n this.clearFormatting();\n break;\n }\n }\n\n isActive(name: string, attrs?: Record<string, unknown>): boolean {\n return this.editor()?.isActive(name, attrs) ?? false;\n }\n\n can(command: 'undo' | 'redo'): boolean {\n const ed = this.editor();\n if (!ed) {\n return false;\n }\n if (command === 'undo') {\n return ed.can().undo();\n }\n return ed.can().redo();\n }\n\n private setMarkActive(name: 'bold' | 'italic' | 'underline' | 'strike', active: boolean): void {\n const ed = this.editor();\n if (!ed) {\n return;\n }\n const chain = ed.chain().focus();\n switch (name) {\n case 'bold':\n active ? chain.setBold().run() : chain.unsetBold().run();\n break;\n case 'italic':\n active ? chain.setItalic().run() : chain.unsetItalic().run();\n break;\n case 'underline':\n active ? chain.setUnderline().run() : chain.unsetUnderline().run();\n break;\n case 'strike':\n active ? chain.setStrike().run() : chain.unsetStrike().run();\n break;\n }\n }\n\n private refreshState(editor: Editor): void {\n const textColor = editor.getAttributes('textStyle')['color'] as string | undefined;\n const fontSizeCss = editor.getAttributes('textStyle')['fontSize'] as string | undefined;\n const highlightColor = editor.getAttributes('highlight')['color'] as string | undefined;\n const linkHref = editor.getAttributes('link')['href'] as string | undefined;\n const dir = (editor.getAttributes('paragraph')['dir'] || editor.getAttributes('heading')['dir']) as\n | AXWysiwygTextDirection\n | undefined;\n\n let headingLevel: AXWysiwygHeadingLevel | null = null;\n for (let level = 1; level <= 6; level++) {\n if (editor.isActive('heading', { level })) {\n headingLevel = level as AXWysiwygHeadingLevel;\n break;\n }\n }\n\n let textAlign: AXWysiwygTextAlign | null = null;\n for (const align of ['left', 'center', 'right', 'justify'] as AXWysiwygTextAlign[]) {\n if (editor.isActive({ textAlign: align })) {\n textAlign = align;\n break;\n }\n }\n\n let fontSize: AXWysiwygFontSizeToken | null = null;\n if (fontSizeCss) {\n for (const [token, css] of Object.entries(AX_WYSIWYG_FONT_SIZE_VALUES) as [AXWysiwygFontSizeToken, string][]) {\n if (fontSizeCss === css) {\n fontSize = token;\n break;\n }\n }\n }\n\n this.state.set({\n bold: editor.isActive('bold'),\n italic: editor.isActive('italic'),\n underline: editor.isActive('underline'),\n strike: editor.isActive('strike'),\n code: editor.isActive('code'),\n codeBlock: editor.isActive('codeBlock'),\n headingLevel,\n bulletList: editor.isActive('bulletList'),\n orderedList: editor.isActive('orderedList'),\n blockquote: editor.isActive('blockquote'),\n textAlign,\n textColor: textColor ?? null,\n highlightColor: highlightColor ?? null,\n linkHref: linkHref ?? null,\n fontSize,\n textDirection: dir ?? null,\n canUndo: editor.can().undo(),\n canRedo: editor.can().redo(),\n isEmpty: editor.isEmpty,\n isFocused: editor.isFocused,\n });\n }\n}\n\nexport type { AXWysiwygRange };\n","/** @deprecated Use `@acorex/components/text-editor` instead. */\nexport * from './lib/wysiwyg.class';\nexport * from './lib/wysiwyg.extensions';\nexport * from './lib/wysiwyg.types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAGO,MAAM,2BAA2B,GAA2C;AACjF,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,OAAO;CACd;AAUM,MAAM,0BAA0B,GAAG,SAAS,CAAC,MAAM,CAAC;AACzD,IAAA,IAAI,EAAE,mBAAmB;IAEzB,mBAAmB,GAAA;QACjB,OAAO;AACL,YAAA;gBACE,KAAK,EAAE,CAAC,WAAW,CAAC;AACpB,gBAAA,UAAU,EAAE;AACV,oBAAA,QAAQ,EAAE;AACR,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,SAAS,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,IAAI;AAC7E,wBAAA,UAAU,EAAE,CAAC,UAAU,KAAI;AACzB,4BAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AAC3B,gCAAA,OAAO,EAAE;4BACX;4BACA,OAAO,EAAE,KAAK,EAAE,CAAA,WAAA,EAAc,UAAU,CAAC,UAAU,CAAC,CAAA,CAAE,EAAE;wBAC1D,CAAC;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;IACH,CAAC;IAED,WAAW,GAAA;QACT,OAAO;YACL,oBAAoB,EAClB,CAAC,IAAmC,KACpC,CAAC,EAAE,KAAK,EAAE,KAAI;gBACZ,IAAI,CAAC,IAAI,EAAE;AACT,oBAAA,OAAO,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE;gBACrD;AACA,gBAAA,MAAM,OAAO,GAAG,2BAA2B,CAAC,IAAI,CAAC;AACjD,gBAAA,OAAO,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE;YAC1E,CAAC;SACJ;IACH,CAAC;AACF,CAAA,CAAC;;ACAK,MAAM,2BAA2B,GAAsB;AAC5D,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,aAAa,EAAE,IAAI;;AA0Bd,MAAM,sBAAsB,GAAmB;AACpD,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,cAAc,EAAE,IAAI;AACpB,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,SAAS,EAAE,KAAK;;;ACjGX,MAAM,+BAA+B,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9D,IAAA,IAAI,EAAE,wBAAwB;IAE9B,mBAAmB,GAAA;QACjB,OAAO;AACL,YAAA;AACE,gBAAA,KAAK,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;AAC/B,gBAAA,UAAU,EAAE;AACV,oBAAA,GAAG,EAAE;AACH,wBAAA,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;AACnD,wBAAA,UAAU,EAAE,CAAC,UAAU,KAAI;AACzB,4BAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACtB,gCAAA,OAAO,EAAE;4BACX;4BACA,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE;wBACnC,CAAC;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;IACH,CAAC;IAED,WAAW,GAAA;QACT,OAAO;AACL,YAAA,yBAAyB,EACvB,CAAC,SAAwC,KACzC,CAAC,EAAE,KAAK,EAAE,KACR,KAAK;AACF,iBAAA,KAAK;iBACL,gBAAgB,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE;iBAChD,gBAAgB,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE;AAC9C,iBAAA,GAAG,EAAE;SACb;IACH,CAAC;AACF,CAAA,CAAC;;AC9BF,SAAS,UAAU,CAAC,GAAW,EAAA;AAC7B,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE;IAC1B,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,IAAI;AACF,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACrE,OAAO,CAAA,8BAAA,EAAiC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,CAAE;QACrE;AACA,QAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;YAC/B,OAAO,CAAA,8BAAA,EAAiC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE;QACjE;IACF;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,OAAO,OAAO;AAChB;AAEO,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAwB;AACxE,IAAA,IAAI,EAAE,OAAO;AAEb,IAAA,KAAK,EAAE,OAAO;AAEd,IAAA,IAAI,EAAE,IAAI;IAEV,UAAU,GAAA;QACR,OAAO;AACL,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,cAAc,EAAE,EAAE;SACnB;IACH,CAAC;IAED,aAAa,GAAA;QACX,OAAO;AACL,YAAA,GAAG,EAAE;AACH,gBAAA,OAAO,EAAE,IAAI;AACd,aAAA;SACF;IACH,CAAC;IAED,SAAS,GAAA;QACP,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,gCAAgC;AACtC,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,aAAa;AACnB,aAAA;SACF;IACH,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE,EAAA;AAC3B,QAAA,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAuB;QACvD,OAAO;YACL,KAAK;AACL,YAAA,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,CAAC;AAC1E,YAAA;gBACE,QAAQ;AACR,gBAAA,eAAe,CAAC;oBACd,GAAG;AACH,oBAAA,WAAW,EAAE,GAAG;AAChB,oBAAA,eAAe,EAAE,MAAM;AACvB,oBAAA,KAAK,EAAE,0FAA0F;iBAClG,CAAC;AACH,aAAA;SACF;IACH,CAAC;IAED,WAAW,GAAA;QACT,OAAO;AACL,YAAA,QAAQ,EACN,CAAC,EAAE,GAAG,EAAE,KACR,CAAC,EAAE,QAAQ,EAAE,KACX,QAAQ,CAAC,aAAa,CAAC;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE;aAChC,CAAC;SACP;IACH,CAAC;AACF,CAAA,CAAC;;ACvFK,eAAe,uBAAuB,CAAC,OAAwC,EAAA;IACpF,MAAM,QAAQ,GAAsB,EAAE,GAAG,2BAA2B,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE;AAE5F,IAAA,MAAM,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5F,OAAO,qBAAqB,CAAC;QAC7B,OAAO,8BAA8B,CAAC;QACtC,OAAO,yBAAyB,CAAC;QACjC,OAAO,6BAA6B,CAAC;QACrC,OAAO,6BAA6B,CAAC;AACtC,KAAA,CAAC;AAEF,IAAA,MAAM,UAAU,GAAe;AAC7B,QAAA,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;AAC9B,YAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,KAAK;SACrD,CAAC;AACF,QAAA,YAAY,CAAC,OAAO;KACrB;IAED,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACvC,QAAA,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;IACzC;AAEA,IAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,QAAA,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACjC;AAEA,IAAA,IAAI,QAAQ,CAAC,SAAS,EAAE;AACtB,QAAA,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE;AAEA,IAAA,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACrB,QAAA,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC;IAC7C;AAEA,IAAA,IAAI,QAAQ,CAAC,aAAa,EAAE;AAC1B,QAAA,UAAU,CAAC,IAAI,CAAC,+BAA+B,CAAC;IAClD;AAEA,IAAA,IAAI,QAAQ,CAAC,SAAS,EAAE;AACtB,QAAA,MAAM,YAAY,GAAG,MAAM,OAAO,8BAA8B,CAAC;QACjE,UAAU,CAAC,IAAI,CACb,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC;AAC7B,YAAA,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;AAChC,SAAA,CAAC,CACH;IACH;AAEA,IAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,QAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,yBAAyB,CAAC;QACxD,UAAU,CAAC,IAAI,CACb,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;AACzB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,WAAW,EAAE,IAAI;AAClB,SAAA,CAAC,CACH;IACH;AAEA,IAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,QAAA,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC;IAC1C;IAEA,IAAI,QAAQ,CAAC,WAAW,IAAI,OAAO,EAAE,WAAW,EAAE;QAChD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,OAAO,oBAAoB,CAAC;AAC1D,QAAA,UAAU,CAAC,IAAI,CACb,WAAW,CAAC,SAAS,CAAC;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;AACjC,SAAA,CAAC,CACH;IACH;AAEA,IAAA,OAAO,UAAU;AACnB;;AC/DA;;AAEG;MAEU,SAAS,CAAA;AADtB,IAAA,WAAA,GAAA;QAEW,IAAA,CAAA,MAAM,GAAG,MAAM,CAAyB,IAAI;mFAAC;QAC7C,IAAA,CAAA,KAAK,GAAG,MAAM,CAAiB,sBAAsB;kFAAC;QACtD,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK;kFAAC;AAEb,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QACzC,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,eAAe,GAAG,KAAK;AAwhBhC,IAAA;AAthBC,IAAA,MAAM,IAAI,CAAC,SAA+B,EAAE,UAAgC,EAAE,EAAA;QAC5E,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACvC;QACF;AAEA,QAAA,MAAM,OAAO,GACX,OAAO,SAAS,KAAK,QAAQ,GAAI,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAwB,GAAG,SAAS;QACvG,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;AAE/E,QAAA,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC;YAC/C,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;AACjC,SAAA,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB;QACF;QAEA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,cAAc,CAAC;AAC/C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB;QACF;AAEA,QAAA,MAAM,aAAa,GAAG,CAAC,GAAG,UAAU,EAAE,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;AAEpE,QAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,OAAO;AACP,YAAA,UAAU,EAAE,aAAa;AACzB,YAAA,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,QAAQ;AACR,YAAA,WAAW,EAAE;AACX,gBAAA,UAAU,EAAE;AACV,oBAAA,KAAK,EAAE,QAAQ;AAChB,iBAAA;AACF,aAAA;YACD,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAI;AAC3B,gBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,oBAAA,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACxB;YACF,CAAC;YACD,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAI;AACpC,gBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,gBAAA,OAAO,CAAC,iBAAiB,GAAG,EAAE,CAAC;YACjC,CAAC;YACD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAI;AAC1B,gBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,gBAAA,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;YACvB,CAAC;YACD,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAI;AACzB,gBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,gBAAA,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;YACtB,CAAC;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAC3B;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,EAAE,EAAE,OAAO,EAAE;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACxC;AAEA,IAAA,UAAU,CAAC,KAAgC,EAAE,IAAI,GAAG,KAAK,EAAA;AACvD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;YACP;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,GAAG,EAAE;AACvC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI;AACF,YAAA,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAClD,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACvB;gBAAU;AACR,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;QAC9B;IACF;IAEA,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IACvC;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,IAAI;IACzC;IAEA,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IACvC;IAEA,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,IAAI;IACvC;AAEA,IAAA,WAAW,CAAC,QAAiB,EAAA;QAC3B,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC;AACpC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,EAAE,EAAE;AACN,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACvB;IACF;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;IACvB;AAEA,IAAA,IAAI,CAAC,KAAc,EAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC;IACnC;AAEA,IAAA,MAAM,CAAC,KAAc,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC;IACrC;AAEA,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC;IACxC;AAEA,IAAA,MAAM,CAAC,KAAc,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC;IACrC;AAEA,IAAA,KAAK,CAAC,KAAa,EAAA;QACjB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB;aAAO;YACL,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;AAEA,IAAA,MAAM,CAAC,KAAa,EAAA;AAClB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;YACP;QACF;QACA,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;YAC5B,EAAE,CAAC,KAAK;AACL,iBAAA,KAAK;AACL,iBAAA,aAAa,CAAC,EAAE,KAAK,EAAE,KAA8B,EAAE;AACvD,iBAAA,GAAG,EAAE;QACV;aAAO;AACL,YAAA,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;QACzC;IACF;AAEA,IAAA,IAAI,CAAC,KAAgC,EAAA;AACnC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;YACP;QACF;QACA,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE;AAChC,QAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AACtB,YAAA,KAAK,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE;QAChC;AAAO,aAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AAC9B,YAAA,KAAK,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE;QACjC;aAAO;YACL,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE;QACtC;IACF;AAEA,IAAA,KAAK,CAAC,KAA8C,EAAA;AAClD,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAC3B;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA,IAAA,SAAS,CAAC,KAA6B,EAAA;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC9B;IAEA,QAAQ,CAAC,KAAyC,EAAE,KAAqB,EAAA;AACvE,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;AACxB,QAAA,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE;YACjB;QACF;AACA,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK;QACxB,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM;AACrC,QAAA,IAAI,KAAK,KAAK,KAAK,EAAE;YACnB,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;YAClF;QACF;QACA,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;IACrF;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAC1B;aAAO;YACL,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACzB;AAEA,IAAA,WAAW,CAAC,GAAW,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IACxD;IAEA,SAAS,CAAC,KAAqB,EAAE,MAAe,EAAA;AAC9C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;AACxB,QAAA,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE;YACjB;QACF;AACA,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK;QACxB,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM;QACrC,IAAI,MAAM,EAAE;YACV,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE;QAC3E;aAAO;YACL,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;QACxE;IACF;IAEA,KAAK,GAAA;QACH,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE;IACjC;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE;IAChC;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE;IACnD;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;IACrD;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE;IACxD;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;IACrD;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE;IACnD;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE;IACxD;AAEA,IAAA,aAAa,CAAC,KAA4B,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE;IAC/D;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;IACrD;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE;IACzD;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE;IAC1D;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE;IACzD;AAEA,IAAA,YAAY,CAAC,KAAyB,EAAA;AACpC,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;IAC1D;AAEA,IAAA,gBAAgB,CAAC,SAAwC,EAAA;AACvD,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE;IAC3E;AAEA,IAAA,WAAW,CAAC,IAAmC,EAAA;AAC7C,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;IACjE;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;IACtD;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE;IACnD;AAEA,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE;IAC9D;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE;IACvD;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;QAClB,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE;IAChF;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE;IAClD;IAEA,WAAW,CAAC,GAAW,EAAE,GAAY,EAAA;QACnC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IAC7D;IAEA,IAAI,GAAA;AACF,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;YACP;QACF;AACA,QAAA,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;IACvB;IAEA,IAAI,GAAA;AACF,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;YACP;QACF;AACA,QAAA,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;IACvB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE;IACnE;IAEA,OAAO,CAAC,OAAyB,EAAE,OAAiB,EAAA;QAClD,QAAQ,OAAO;AACb,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,UAAU,EAAE;gBACjB;AACF,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,YAAY,EAAE;gBACnB;AACF,YAAA,KAAK,WAAW;gBACd,IAAI,CAAC,eAAe,EAAE;gBACtB;AACF,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,YAAY,EAAE;gBACnB;AACF,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,UAAU,EAAE;gBACjB;AACF,YAAA,KAAK,WAAW;gBACd,IAAI,CAAC,eAAe,EAAE;gBACtB;AACF,YAAA,KAAK,SAAS;AACZ,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,oBAAA,IAAI,CAAC,aAAa,CAAC,OAAgC,CAAC;gBACtD;gBACA;AACF,YAAA,KAAK,WAAW;gBACd,IAAI,CAAC,YAAY,EAAE;gBACnB;AACF,YAAA,KAAK,YAAY;gBACf,IAAI,CAAC,gBAAgB,EAAE;gBACvB;AACF,YAAA,KAAK,aAAa;gBAChB,IAAI,CAAC,iBAAiB,EAAE;gBACxB;AACF,YAAA,KAAK,YAAY;gBACf,IAAI,CAAC,gBAAgB,EAAE;gBACvB;AACF,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,oBAAA,IAAI,CAAC,YAAY,CAAC,OAA6B,CAAC;gBAClD;gBACA;AACF,YAAA,KAAK,WAAW;gBACd,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,EAAE;AAC1C,oBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;gBAChC;gBACA;AACF,YAAA,KAAK,UAAU;AACb,gBAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACxB;AAAO,qBAAA,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,MAAM,EAAE;AAC3E,oBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBAC3B;gBACA;AACF,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,oBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACxB;qBAAO;oBACL,IAAI,CAAC,UAAU,EAAE;gBACnB;gBACA;AACF,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,oBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC5B;qBAAO;oBACL,IAAI,CAAC,cAAc,EAAE;gBACvB;gBACA;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,EAAE;AAC1C,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBACvB;qBAAO;oBACL,IAAI,CAAC,SAAS,EAAE;gBAClB;gBACA;AACF,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,oBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBAC3B;gBACA;AACF,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,oBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBAC3B;gBACA;AACF,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,EAAE;gBACX;AACF,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,EAAE;gBACX;AACF,YAAA,KAAK,iBAAiB;gBACpB,IAAI,CAAC,eAAe,EAAE;gBACtB;;IAEN;IAEA,QAAQ,CAAC,IAAY,EAAE,KAA+B,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK;IACtD;AAEA,IAAA,GAAG,CAAC,OAAwB,EAAA;AAC1B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;AACP,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,OAAO,KAAK,MAAM,EAAE;AACtB,YAAA,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;QACxB;AACA,QAAA,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;IACxB;IAEQ,aAAa,CAAC,IAAgD,EAAE,MAAe,EAAA;AACrF,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;YACP;QACF;QACA,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE;QAChC,QAAQ,IAAI;AACV,YAAA,KAAK,MAAM;gBACT,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE;gBACxD;AACF,YAAA,KAAK,QAAQ;gBACX,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE;gBAC5D;AACF,YAAA,KAAK,WAAW;gBACd,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE;gBAClE;AACF,YAAA,KAAK,QAAQ;gBACX,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE;gBAC5D;;IAEN;AAEQ,IAAA,YAAY,CAAC,MAAc,EAAA;QACjC,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,OAAO,CAAuB;QAClF,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,UAAU,CAAuB;QACvF,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,OAAO,CAAuB;QACvF,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAuB;QAC3E,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAElF;QAEb,IAAI,YAAY,GAAiC,IAAI;AACrD,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;YACvC,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;gBACzC,YAAY,GAAG,KAA8B;gBAC7C;YACF;QACF;QAEA,IAAI,SAAS,GAA8B,IAAI;AAC/C,QAAA,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAyB,EAAE;YAClF,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;gBACzC,SAAS,GAAG,KAAK;gBACjB;YACF;QACF;QAEA,IAAI,QAAQ,GAAkC,IAAI;QAClD,IAAI,WAAW,EAAE;AACf,YAAA,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAuC,EAAE;AAC5G,gBAAA,IAAI,WAAW,KAAK,GAAG,EAAE;oBACvB,QAAQ,GAAG,KAAK;oBAChB;gBACF;YACF;QACF;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACb,YAAA,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7B,YAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACjC,YAAA,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;AACvC,YAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACjC,YAAA,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7B,YAAA,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;YACvC,YAAY;AACZ,YAAA,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;AACzC,YAAA,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC3C,YAAA,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;YACzC,SAAS;YACT,SAAS,EAAE,SAAS,IAAI,IAAI;YAC5B,cAAc,EAAE,cAAc,IAAI,IAAI;YACtC,QAAQ,EAAE,QAAQ,IAAI,IAAI;YAC1B,QAAQ;YACR,aAAa,EAAE,GAAG,IAAI,IAAI;AAC1B,YAAA,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;AAC5B,YAAA,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;YAC5B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;AAC5B,SAAA,CAAC;IACJ;8GA9hBW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAT,SAAS,EAAA,CAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB;;;ACrBD;;ACAA;;AAEG;;"}
@@ -0,0 +1,27 @@
1
+ # @acorex/cdk/overlay-scrollbar
2
+
3
+ Thin overlay scrollbars: hidden while idle, visible while scrolling. **Behavior** is configured with directive inputs; **visuals** use CSS custom properties (`--ax-comp-overlay-scrollbar-*`) on the scroll host.
4
+
5
+ ```typescript
6
+ import { AXOverlayScrollbarDirective } from '@acorex/cdk/overlay-scrollbar';
7
+ ```
8
+
9
+ ```html
10
+ <div
11
+ class="h-64 overflow-y-auto my-scroll-panel"
12
+ axOverlayScrollbar
13
+ [hideDelay]="800"
14
+ ></div>
15
+ ```
16
+
17
+ ```css
18
+ .my-scroll-panel {
19
+ --ax-comp-overlay-scrollbar-size: 8px;
20
+ --ax-comp-overlay-scrollbar-thumb-color: #64748b;
21
+ --ax-comp-overlay-scrollbar-track-color: rgba(148, 163, 184, 0.35);
22
+ --ax-comp-overlay-scrollbar-thumb-radius: 6px;
23
+ --ax-comp-overlay-scrollbar-track-radius: 4px;
24
+ }
25
+ ```
26
+
27
+ On first use the directive injects scrollbar rules and default design tokens into the document. No `@acorex/styles` import is required.
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@acorex/cdk",
3
- "version": "22.4.6",
3
+ "version": "22.4.8",
4
4
  "peerDependencies": {
5
- "@acorex/core": "22.4.6",
5
+ "@acorex/core": "22.4.8",
6
6
  "@tiptap/core": ">=3.31.4",
7
7
  "@tiptap/extension-color": ">=3.31.4",
8
8
  "@tiptap/extension-highlight": ">=3.31.4",
@@ -96,6 +96,10 @@
96
96
  "types": "./types/acorex-cdk-overlay.d.ts",
97
97
  "default": "./fesm2022/acorex-cdk-overlay.mjs"
98
98
  },
99
+ "./overlay-scrollbar": {
100
+ "types": "./types/acorex-cdk-overlay-scrollbar.d.ts",
101
+ "default": "./fesm2022/acorex-cdk-overlay-scrollbar.mjs"
102
+ },
99
103
  "./pan-view": {
100
104
  "types": "./types/acorex-cdk-pan-view.d.ts",
101
105
  "default": "./fesm2022/acorex-cdk-pan-view.mjs"
@@ -0,0 +1,86 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /** CSS custom properties for overlay scrollbar styling (set on the scroll host or in CSS). */
4
+ declare const AX_OVERLAY_SCROLLBAR_CSS_VARS: {
5
+ readonly size: "--ax-comp-overlay-scrollbar-size";
6
+ readonly thumbRadius: "--ax-comp-overlay-scrollbar-thumb-radius";
7
+ readonly trackRadius: "--ax-comp-overlay-scrollbar-track-radius";
8
+ readonly trackColor: "--ax-comp-overlay-scrollbar-track-color";
9
+ readonly thumbColor: "--ax-comp-overlay-scrollbar-thumb-color";
10
+ readonly thumbActiveColor: "--ax-comp-overlay-scrollbar-thumb-active-color";
11
+ readonly thumbHoverColor: "--ax-comp-overlay-scrollbar-thumb-hover-color";
12
+ readonly trackActiveColor: "--ax-comp-overlay-scrollbar-track-active-color";
13
+ readonly thumbBorderWidth: "--ax-comp-overlay-scrollbar-thumb-border-width";
14
+ readonly thumbBorderColor: "--ax-comp-overlay-scrollbar-thumb-border-color";
15
+ readonly trackBorderWidth: "--ax-comp-overlay-scrollbar-track-border-width";
16
+ readonly trackBorderColor: "--ax-comp-overlay-scrollbar-track-border-color";
17
+ readonly fadeDuration: "--ax-comp-overlay-scrollbar-fade-duration";
18
+ };
19
+ declare function clampOverlayScrollbarWidth(px: number): number;
20
+ /**
21
+ * Custom overlay scrollbar: native scrollbars are hidden; a positioned thumb reflects scroll position.
22
+ * Styles are injected once by this directive.
23
+ */
24
+ declare class AXOverlayScrollbarDirective {
25
+ private readonly host;
26
+ private readonly destroyRef;
27
+ private readonly platformId;
28
+ private readonly document;
29
+ private rootEl;
30
+ private railEl;
31
+ private trackEl;
32
+ private navUpEl;
33
+ private navDownEl;
34
+ private thumbEl;
35
+ private resizeObserver;
36
+ private designTokenMutationObserver;
37
+ private designTokenSyncFrame;
38
+ private thumbDragPointerId;
39
+ private pointerOverRail;
40
+ private trackPressReleaseListener;
41
+ private unbindRailInteraction;
42
+ /** Thumb size derived from layout; position updates on scroll without re-measuring scrollHeight. */
43
+ private thumbLayout;
44
+ readonly hideDelay: _angular_core.InputSignal<number>;
45
+ /**
46
+ * When true, shows browser-style up/down arrow buttons on the rail.
47
+ * Styling follows track/thumb CSS tokens.
48
+ */
49
+ readonly navigationButtons: _angular_core.InputSignal<boolean>;
50
+ /** Pixels to scroll per arrow click. */
51
+ readonly navScrollStep: _angular_core.InputSignal<number>;
52
+ private hideTimer;
53
+ constructor();
54
+ /** Host and rail are siblings under the root; mirror CSS variables when the host style/class changes. */
55
+ private observeHostDesignTokenChanges;
56
+ private queueDesignTokenSync;
57
+ /** Rail lives on a wrapper so it stays fixed while the host scrolls. */
58
+ private ensureScrollRoot;
59
+ private mountCustomScrollbar;
60
+ private ensureRailStructure;
61
+ private createNavButton;
62
+ private resolveNavScrollStepPx;
63
+ private scrollByNavStep;
64
+ private bindRailInteraction;
65
+ private unmountCustomScrollbar;
66
+ private remeasureCustomThumb;
67
+ private syncThumbPosition;
68
+ /** Move thumb (and scroll position) to the pointer Y on the track. */
69
+ private jumpScrollToTrackPointer;
70
+ private onThumbPointerDown;
71
+ private showScrollbar;
72
+ private bumpVisibility;
73
+ private deactivateThumb;
74
+ private setScrollbarEngaged;
75
+ private setTrackPressed;
76
+ private isPointerOverThumbVisual;
77
+ private beginTrackPressed;
78
+ private clearTrackPressed;
79
+ private syncEngagedAfterScroll;
80
+ private scheduleHide;
81
+ private clearHideTimer;
82
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXOverlayScrollbarDirective, never>;
83
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXOverlayScrollbarDirective, "[axOverlayScrollbar]", ["axOverlayScrollbar"], { "hideDelay": { "alias": "hideDelay"; "required": false; "isSignal": true; }; "navigationButtons": { "alias": "navigationButtons"; "required": false; "isSignal": true; }; "navScrollStep": { "alias": "navScrollStep"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
84
+ }
85
+
86
+ export { AXOverlayScrollbarDirective, AX_OVERLAY_SCROLLBAR_CSS_VARS, clampOverlayScrollbarWidth };
@@ -64,6 +64,9 @@ interface AXWysiwygLoadExtensionsOptions {
64
64
  placeholder?: string;
65
65
  }
66
66
 
67
+ /**
68
+ * @deprecated Use `AXTextEditorService` from `@acorex/components/text-editor` instead.
69
+ */
67
70
  declare class AXWysiwyg {
68
71
  readonly editor: _angular_core.WritableSignal<Editor>;
69
72
  readonly state: _angular_core.WritableSignal<AXWysiwygState>;