@acorex/cdk 22.3.24 → 22.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,7 +32,7 @@ class AXDrawerItemDirective {
32
32
  ...(ngDevMode ? [{ debugName: "transition" }] : /* istanbul ignore next */ []));
33
33
  this.closeOnBackdropClick = model(false, /* @ts-ignore */
34
34
  ...(ngDevMode ? [{ debugName: "closeOnBackdropClick" }] : /* istanbul ignore next */ []));
35
- this.backdropClass = model('ax-bg-black/45', /* @ts-ignore */
35
+ this.backdropClass = model('bg-black/45', /* @ts-ignore */
36
36
  ...(ngDevMode ? [{ debugName: "backdropClass" }] : /* istanbul ignore next */ []));
37
37
  this.onBackdropClick = output();
38
38
  this.singleOpenMode = model(true, /* @ts-ignore */
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-cdk-drawer.mjs","sources":["../../../../packages/cdk/drawer/src/lib/drawer-item.directive.ts","../../../../packages/cdk/drawer/src/lib/drawer-container.directive.ts","../../../../packages/cdk/drawer/src/lib/drawer.module.ts","../../../../packages/cdk/drawer/src/acorex-cdk-drawer.ts"],"sourcesContent":["import { AXClickEvent } from '@acorex/cdk/common';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n Directive,\n effect,\n ElementRef,\n inject,\n model,\n OnDestroy,\n output,\n PLATFORM_ID,\n signal,\n} from '@angular/core';\nimport { AXDrawerContainerDirective } from './drawer-container.directive';\nexport type AXDrawerMode = 'push' | 'overlay';\nexport type AXDrawerLocation = 'start' | 'end' | 'top' | 'bottom';\n\n@Directive({\n selector: '[axDrawerItem]',\n exportAs: 'axDrawerItem',\n})\nexport class AXDrawerItemDirective implements OnDestroy {\n private el = inject(ElementRef);\n private htmlElem = signal<HTMLElement>(null);\n private parent = inject(AXDrawerContainerDirective);\n private platformID = inject(PLATFORM_ID);\n private zIndexService = inject(AXZIndexService);\n private localeService = inject(AXLocaleService);\n private zToken: AXZToken | null = null;\n private collapseState = signal(false);\n private resizeObserver: ResizeObserver;\n // Reactive RTL flag derived from the active locale profile so the drawer\n // re-positions itself whenever the user switches language at runtime.\n private readonly isRtl = this.localeService.isRtl;\n collapseStateChanged = output<boolean>();\n\n location = model<AXDrawerLocation>('start');\n collapsed = model(true);\n backDrop = model(true);\n mode = model<AXDrawerMode>('overlay');\n transition = model<number>(100);\n closeOnBackdropClick = model(false);\n backdropClass = model('ax-bg-black/45');\n onBackdropClick = output<AXClickEvent>();\n singleOpenMode = model(true);\n id = Math.random();\n\n #init = afterNextRender(() => {\n this.htmlElem.set(this.el.nativeElement as HTMLElement);\n\n if (this.collapsed()) {\n this.htmlElem().style.display = 'none';\n }\n\n this.htmlElem().style.height = '100%';\n\n window.addEventListener('resize', this.removeBackDropOnResize);\n\n this.resizeObserver = new ResizeObserver(() => {\n if (this.collapsed()) {\n this.hide();\n }\n });\n this.resizeObserver.observe(this.htmlElem());\n });\n\n #eff2 = effect(() => {\n if (this.collapsed()) {\n this.hide();\n } else {\n this.show();\n }\n });\n\n #eff3 = effect(() => {\n if (!this.htmlElem()) return;\n\n if (this.mode() === 'overlay') {\n this.htmlElem().style.position = 'absolute';\n this.htmlElem().style.marginInlineEnd = 'auto';\n this.htmlElem().style.marginInlineStart = 'auto';\n this.htmlElem().style.marginBlockStart = 'auto';\n this.htmlElem().style.marginBlockEnd = 'auto';\n }\n });\n\n #eff4 = effect(() => {\n if (!this.htmlElem()) return;\n\n if (this.mode() === 'push') {\n this.htmlElem().style.position = 'relative';\n this.htmlElem().style.top = 'auto';\n this.htmlElem().style.left = 'auto';\n this.htmlElem().style.right = 'auto';\n this.htmlElem().style.bottom = 'auto';\n\n switch (this.location()) {\n case 'end':\n this.htmlElem().style.order = '999';\n this.parent.el.nativeElement.style.justifyContent = 'space-between';\n break;\n case 'start':\n this.htmlElem().style.order = '-999';\n break;\n case 'bottom':\n this.htmlElem().style.order = '999';\n this.parent.el.nativeElement.style.flexDirection = 'column';\n break;\n case 'top':\n this.htmlElem().style.order = '-999';\n this.parent.el.nativeElement.style.flexDirection = 'column';\n break;\n }\n }\n });\n\n /**\n * Shows the drawer by animating it into view.\n *\n * @returns void - No return value. The drawer becomes visible.\n */\n public show() {\n if (!this.htmlElem()) return;\n\n // Idempotency guard: if the drawer is already shown, do not re-acquire a\n // new z-index. Without this guard, repeated show() calls (e.g. from effects\n // re-evaluating on window resize or input changes) would keep incrementing\n // the z-index via AXZIndexService, causing the drawer to jump above other\n // overlays like popup/modal that were opened later.\n if (this.collapseState() && this.zToken) {\n return;\n }\n\n if (this.singleOpenMode()) {\n this.parent.drawerItem().forEach((item) => {\n if (item.location() === this.location() && item.id !== this.id) item.hide();\n });\n }\n\n this.resizeObserver.unobserve(this.htmlElem());\n\n // Release any stale token before acquiring a new one so we never leak\n // tokens inside AXZIndexService.\n if (this.zToken) {\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n }\n\n // Acquire z-index from service\n this.zToken = this.zIndexService.acquire();\n this.htmlElem().style.zIndex = String(this.zToken.zIndex);\n\n this.htmlElem().style.transition = `${this.transition()}ms all ease`;\n this.htmlElem().style.display = 'block';\n\n if (this.mode() === 'overlay') {\n if (this.location() === 'start') {\n this.isRtl() ? (this.htmlElem().style.right = `0px`) : (this.htmlElem().style.left = `0px`);\n }\n\n if (this.location() === 'end') {\n this.isRtl() ? (this.htmlElem().style.left = `0px`) : (this.htmlElem().style.right = `0px`);\n }\n\n if (this.location() === 'top' || this.location() === 'bottom') {\n this.htmlElem().style.top = `0px`;\n }\n }\n\n if (this.mode() === 'push') {\n if (this.location() === 'start') {\n this.htmlElem().style.marginInlineStart = '0px';\n }\n\n if (this.location() === 'end') {\n this.htmlElem().style.marginInlineEnd = '0px';\n }\n\n if (this.location() === 'bottom') {\n this.htmlElem().style.marginBlockStart = '0px';\n }\n\n if (this.location() === 'top') {\n this.htmlElem().style.marginBlockStart = '0px';\n }\n }\n\n if (this.backDrop() && this.mode() === 'overlay') {\n this.addBackdrop();\n }\n\n this.collapseState.set(true);\n this.collapseStateChanged.emit(true);\n }\n\n /**\n * Hides the drawer by animating it out of view.\n *\n * @returns void - No return value. The drawer becomes hidden.\n */\n public hide() {\n if (!this.htmlElem()) return;\n\n // Release z-index token\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n this.htmlElem().style.zIndex = '';\n\n const rect = this.htmlElem().getBoundingClientRect();\n\n if (this.mode() === 'push') {\n if (this.location() === 'end') {\n this.htmlElem().style.marginInlineEnd = `-${rect.width}px`;\n }\n\n if (this.location() === 'start') {\n this.htmlElem().style.marginInlineStart = `-${rect.width}px`;\n }\n\n if (this.location() === 'bottom') {\n this.htmlElem().style.marginBlockStart = `${rect.height}px`;\n }\n\n if (this.location() === 'top') {\n this.htmlElem().style.marginBlockStart = `-${rect.height}px`;\n }\n }\n\n if (this.mode() === 'overlay') {\n if (this.location() === 'start') {\n this.isRtl()\n ? (this.htmlElem().style.right = `-${rect.width}px`)\n : (this.htmlElem().style.left = `-${rect.width}px`);\n }\n\n if (this.location() === 'end') {\n this.isRtl()\n ? (this.htmlElem().style.left = `-${rect.width}px`)\n : (this.htmlElem().style.right = `-${rect.width}px`);\n }\n\n if (this.location() === 'top') {\n this.isRtl()\n ? (this.htmlElem().style.bottom = `-${rect.height}px`)\n : (this.htmlElem().style.top = `-${rect.height}px`);\n }\n\n if (this.location() === 'bottom') {\n this.isRtl()\n ? (this.htmlElem().style.top = `${rect.height}px`)\n : (this.htmlElem().style.bottom = `${rect.height}px`);\n }\n }\n\n if (this.backDrop() && this.mode() === 'overlay') {\n this.removeBackdrop();\n }\n\n this.collapseState.set(false);\n this.collapseStateChanged.emit(false);\n }\n\n /**\n * Toggles the drawer state between visible and hidden.\n *\n * @returns void - No return value. The drawer state is toggled.\n */\n public toggle() {\n if (this.collapseState()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private addBackdrop() {\n const backdropElem = document.createElement('div');\n backdropElem.classList.add('ax-cdk-drawer-backdrop');\n backdropElem.style.position = 'absolute';\n backdropElem.style.top = '0';\n backdropElem.style.width = '100vw';\n backdropElem.style.height = '100vh';\n // Set backdrop z-index just below the drawer's z-index\n backdropElem.style.zIndex = String((this.zToken?.zIndex ?? 1001) - 1);\n backdropElem.style.opacity = '0';\n backdropElem.style.transition = `opacity ${this.transition()}ms ease`;\n backdropElem.classList.add(...this.backdropClass().split(' '));\n\n this.parent.el.nativeElement.appendChild(backdropElem);\n\n // Trigger animation after element is added to DOM\n requestAnimationFrame(() => {\n backdropElem.style.opacity = '1';\n });\n backdropElem.addEventListener('pointerdown', (event: MouseEvent) => {\n event.stopPropagation();\n if (!this.htmlElem().contains(event.target as Node) && this.collapseState()) {\n this.onBackdropClick.emit({ nativeEvent: event, component: this });\n if (this.closeOnBackdropClick()) {\n this.hide();\n }\n }\n });\n }\n\n private removeBackdrop() {\n const backdropElem = this.parent.el.nativeElement.querySelector('.ax-cdk-drawer-backdrop');\n if (backdropElem) {\n backdropElem.style.opacity = '0';\n\n // Remove element after animation completes\n setTimeout(\n () => {\n if (backdropElem.parentNode) {\n backdropElem.remove();\n }\n },\n parseFloat(String(this.transition())),\n );\n }\n }\n\n private removeBackDropOnResize = () => {\n if (this.collapseState() && this.mode() === 'overlay') {\n this.removeBackdrop();\n }\n };\n\n ngOnDestroy(): void {\n // Release z-index token on destroy\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n\n if (this.resizeObserver && this.htmlElem()) {\n this.resizeObserver.unobserve(this.htmlElem());\n }\n\n if (isPlatformBrowser(this.platformID)) {\n window.removeEventListener('resize', this.removeBackDropOnResize);\n }\n }\n}\n","import { afterNextRender, contentChildren, Directive, ElementRef, inject } from '@angular/core';\nimport { AXDrawerItemDirective } from './drawer-item.directive';\n\n@Directive({\n selector: '[axDrawerContainer]',\n exportAs: 'axDrawerContainer',\n})\nexport class AXDrawerContainerDirective {\n el = inject(ElementRef);\n drawerItem = contentChildren(AXDrawerItemDirective, { descendants: true });\n\n #init = afterNextRender(() => {\n const htmlElem = this.el.nativeElement as HTMLElement;\n htmlElem.style.position = 'relative';\n htmlElem.style.overflow = 'hidden';\n htmlElem.style.display = 'flex';\n htmlElem.style.touchAction = 'none';\n htmlElem.style.width = '100%';\n });\n}\n","import { NgModule } from '@angular/core';\nimport { AXDrawerContainerDirective } from './drawer-container.directive';\nimport { AXDrawerItemDirective } from './drawer-item.directive';\n\nconst COMPONENT = [AXDrawerContainerDirective, AXDrawerItemDirective];\n\nconst MODULES = [];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXDrawerDirectiveModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-cdk-drawer.mjs","sources":["../../../../packages/cdk/drawer/src/lib/drawer-item.directive.ts","../../../../packages/cdk/drawer/src/lib/drawer-container.directive.ts","../../../../packages/cdk/drawer/src/lib/drawer.module.ts","../../../../packages/cdk/drawer/src/acorex-cdk-drawer.ts"],"sourcesContent":["import { AXClickEvent } from '@acorex/cdk/common';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n Directive,\n effect,\n ElementRef,\n inject,\n model,\n OnDestroy,\n output,\n PLATFORM_ID,\n signal,\n} from '@angular/core';\nimport { AXDrawerContainerDirective } from './drawer-container.directive';\nexport type AXDrawerMode = 'push' | 'overlay';\nexport type AXDrawerLocation = 'start' | 'end' | 'top' | 'bottom';\n\n@Directive({\n selector: '[axDrawerItem]',\n exportAs: 'axDrawerItem',\n})\nexport class AXDrawerItemDirective implements OnDestroy {\n private el = inject(ElementRef);\n private htmlElem = signal<HTMLElement>(null);\n private parent = inject(AXDrawerContainerDirective);\n private platformID = inject(PLATFORM_ID);\n private zIndexService = inject(AXZIndexService);\n private localeService = inject(AXLocaleService);\n private zToken: AXZToken | null = null;\n private collapseState = signal(false);\n private resizeObserver: ResizeObserver;\n // Reactive RTL flag derived from the active locale profile so the drawer\n // re-positions itself whenever the user switches language at runtime.\n private readonly isRtl = this.localeService.isRtl;\n collapseStateChanged = output<boolean>();\n\n location = model<AXDrawerLocation>('start');\n collapsed = model(true);\n backDrop = model(true);\n mode = model<AXDrawerMode>('overlay');\n transition = model<number>(100);\n closeOnBackdropClick = model(false);\n backdropClass = model('bg-black/45');\n onBackdropClick = output<AXClickEvent>();\n singleOpenMode = model(true);\n id = Math.random();\n\n #init = afterNextRender(() => {\n this.htmlElem.set(this.el.nativeElement as HTMLElement);\n\n if (this.collapsed()) {\n this.htmlElem().style.display = 'none';\n }\n\n this.htmlElem().style.height = '100%';\n\n window.addEventListener('resize', this.removeBackDropOnResize);\n\n this.resizeObserver = new ResizeObserver(() => {\n if (this.collapsed()) {\n this.hide();\n }\n });\n this.resizeObserver.observe(this.htmlElem());\n });\n\n #eff2 = effect(() => {\n if (this.collapsed()) {\n this.hide();\n } else {\n this.show();\n }\n });\n\n #eff3 = effect(() => {\n if (!this.htmlElem()) return;\n\n if (this.mode() === 'overlay') {\n this.htmlElem().style.position = 'absolute';\n this.htmlElem().style.marginInlineEnd = 'auto';\n this.htmlElem().style.marginInlineStart = 'auto';\n this.htmlElem().style.marginBlockStart = 'auto';\n this.htmlElem().style.marginBlockEnd = 'auto';\n }\n });\n\n #eff4 = effect(() => {\n if (!this.htmlElem()) return;\n\n if (this.mode() === 'push') {\n this.htmlElem().style.position = 'relative';\n this.htmlElem().style.top = 'auto';\n this.htmlElem().style.left = 'auto';\n this.htmlElem().style.right = 'auto';\n this.htmlElem().style.bottom = 'auto';\n\n switch (this.location()) {\n case 'end':\n this.htmlElem().style.order = '999';\n this.parent.el.nativeElement.style.justifyContent = 'space-between';\n break;\n case 'start':\n this.htmlElem().style.order = '-999';\n break;\n case 'bottom':\n this.htmlElem().style.order = '999';\n this.parent.el.nativeElement.style.flexDirection = 'column';\n break;\n case 'top':\n this.htmlElem().style.order = '-999';\n this.parent.el.nativeElement.style.flexDirection = 'column';\n break;\n }\n }\n });\n\n /**\n * Shows the drawer by animating it into view.\n *\n * @returns void - No return value. The drawer becomes visible.\n */\n public show() {\n if (!this.htmlElem()) return;\n\n // Idempotency guard: if the drawer is already shown, do not re-acquire a\n // new z-index. Without this guard, repeated show() calls (e.g. from effects\n // re-evaluating on window resize or input changes) would keep incrementing\n // the z-index via AXZIndexService, causing the drawer to jump above other\n // overlays like popup/modal that were opened later.\n if (this.collapseState() && this.zToken) {\n return;\n }\n\n if (this.singleOpenMode()) {\n this.parent.drawerItem().forEach((item) => {\n if (item.location() === this.location() && item.id !== this.id) item.hide();\n });\n }\n\n this.resizeObserver.unobserve(this.htmlElem());\n\n // Release any stale token before acquiring a new one so we never leak\n // tokens inside AXZIndexService.\n if (this.zToken) {\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n }\n\n // Acquire z-index from service\n this.zToken = this.zIndexService.acquire();\n this.htmlElem().style.zIndex = String(this.zToken.zIndex);\n\n this.htmlElem().style.transition = `${this.transition()}ms all ease`;\n this.htmlElem().style.display = 'block';\n\n if (this.mode() === 'overlay') {\n if (this.location() === 'start') {\n this.isRtl() ? (this.htmlElem().style.right = `0px`) : (this.htmlElem().style.left = `0px`);\n }\n\n if (this.location() === 'end') {\n this.isRtl() ? (this.htmlElem().style.left = `0px`) : (this.htmlElem().style.right = `0px`);\n }\n\n if (this.location() === 'top' || this.location() === 'bottom') {\n this.htmlElem().style.top = `0px`;\n }\n }\n\n if (this.mode() === 'push') {\n if (this.location() === 'start') {\n this.htmlElem().style.marginInlineStart = '0px';\n }\n\n if (this.location() === 'end') {\n this.htmlElem().style.marginInlineEnd = '0px';\n }\n\n if (this.location() === 'bottom') {\n this.htmlElem().style.marginBlockStart = '0px';\n }\n\n if (this.location() === 'top') {\n this.htmlElem().style.marginBlockStart = '0px';\n }\n }\n\n if (this.backDrop() && this.mode() === 'overlay') {\n this.addBackdrop();\n }\n\n this.collapseState.set(true);\n this.collapseStateChanged.emit(true);\n }\n\n /**\n * Hides the drawer by animating it out of view.\n *\n * @returns void - No return value. The drawer becomes hidden.\n */\n public hide() {\n if (!this.htmlElem()) return;\n\n // Release z-index token\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n this.htmlElem().style.zIndex = '';\n\n const rect = this.htmlElem().getBoundingClientRect();\n\n if (this.mode() === 'push') {\n if (this.location() === 'end') {\n this.htmlElem().style.marginInlineEnd = `-${rect.width}px`;\n }\n\n if (this.location() === 'start') {\n this.htmlElem().style.marginInlineStart = `-${rect.width}px`;\n }\n\n if (this.location() === 'bottom') {\n this.htmlElem().style.marginBlockStart = `${rect.height}px`;\n }\n\n if (this.location() === 'top') {\n this.htmlElem().style.marginBlockStart = `-${rect.height}px`;\n }\n }\n\n if (this.mode() === 'overlay') {\n if (this.location() === 'start') {\n this.isRtl()\n ? (this.htmlElem().style.right = `-${rect.width}px`)\n : (this.htmlElem().style.left = `-${rect.width}px`);\n }\n\n if (this.location() === 'end') {\n this.isRtl()\n ? (this.htmlElem().style.left = `-${rect.width}px`)\n : (this.htmlElem().style.right = `-${rect.width}px`);\n }\n\n if (this.location() === 'top') {\n this.isRtl()\n ? (this.htmlElem().style.bottom = `-${rect.height}px`)\n : (this.htmlElem().style.top = `-${rect.height}px`);\n }\n\n if (this.location() === 'bottom') {\n this.isRtl()\n ? (this.htmlElem().style.top = `${rect.height}px`)\n : (this.htmlElem().style.bottom = `${rect.height}px`);\n }\n }\n\n if (this.backDrop() && this.mode() === 'overlay') {\n this.removeBackdrop();\n }\n\n this.collapseState.set(false);\n this.collapseStateChanged.emit(false);\n }\n\n /**\n * Toggles the drawer state between visible and hidden.\n *\n * @returns void - No return value. The drawer state is toggled.\n */\n public toggle() {\n if (this.collapseState()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private addBackdrop() {\n const backdropElem = document.createElement('div');\n backdropElem.classList.add('ax-cdk-drawer-backdrop');\n backdropElem.style.position = 'absolute';\n backdropElem.style.top = '0';\n backdropElem.style.width = '100vw';\n backdropElem.style.height = '100vh';\n // Set backdrop z-index just below the drawer's z-index\n backdropElem.style.zIndex = String((this.zToken?.zIndex ?? 1001) - 1);\n backdropElem.style.opacity = '0';\n backdropElem.style.transition = `opacity ${this.transition()}ms ease`;\n backdropElem.classList.add(...this.backdropClass().split(' '));\n\n this.parent.el.nativeElement.appendChild(backdropElem);\n\n // Trigger animation after element is added to DOM\n requestAnimationFrame(() => {\n backdropElem.style.opacity = '1';\n });\n backdropElem.addEventListener('pointerdown', (event: MouseEvent) => {\n event.stopPropagation();\n if (!this.htmlElem().contains(event.target as Node) && this.collapseState()) {\n this.onBackdropClick.emit({ nativeEvent: event, component: this });\n if (this.closeOnBackdropClick()) {\n this.hide();\n }\n }\n });\n }\n\n private removeBackdrop() {\n const backdropElem = this.parent.el.nativeElement.querySelector('.ax-cdk-drawer-backdrop');\n if (backdropElem) {\n backdropElem.style.opacity = '0';\n\n // Remove element after animation completes\n setTimeout(\n () => {\n if (backdropElem.parentNode) {\n backdropElem.remove();\n }\n },\n parseFloat(String(this.transition())),\n );\n }\n }\n\n private removeBackDropOnResize = () => {\n if (this.collapseState() && this.mode() === 'overlay') {\n this.removeBackdrop();\n }\n };\n\n ngOnDestroy(): void {\n // Release z-index token on destroy\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n\n if (this.resizeObserver && this.htmlElem()) {\n this.resizeObserver.unobserve(this.htmlElem());\n }\n\n if (isPlatformBrowser(this.platformID)) {\n window.removeEventListener('resize', this.removeBackDropOnResize);\n }\n }\n}\n","import { afterNextRender, contentChildren, Directive, ElementRef, inject } from '@angular/core';\nimport { AXDrawerItemDirective } from './drawer-item.directive';\n\n@Directive({\n selector: '[axDrawerContainer]',\n exportAs: 'axDrawerContainer',\n})\nexport class AXDrawerContainerDirective {\n el = inject(ElementRef);\n drawerItem = contentChildren(AXDrawerItemDirective, { descendants: true });\n\n #init = afterNextRender(() => {\n const htmlElem = this.el.nativeElement as HTMLElement;\n htmlElem.style.position = 'relative';\n htmlElem.style.overflow = 'hidden';\n htmlElem.style.display = 'flex';\n htmlElem.style.touchAction = 'none';\n htmlElem.style.width = '100%';\n });\n}\n","import { NgModule } from '@angular/core';\nimport { AXDrawerContainerDirective } from './drawer-container.directive';\nimport { AXDrawerItemDirective } from './drawer-item.directive';\n\nconst COMPONENT = [AXDrawerContainerDirective, AXDrawerItemDirective];\n\nconst MODULES = [];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXDrawerDirectiveModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,88 +1,740 @@
1
1
  import { isPlatformBrowser } from '@angular/common';
2
- import { signal, inject, PLATFORM_ID } from '@angular/core';
2
+ import * as i0 from '@angular/core';
3
+ import { signal, inject, PLATFORM_ID, Injectable } from '@angular/core';
4
+ import { Extension, Node, mergeAttributes } from '@tiptap/core';
5
+
6
+ const AX_WYSIWYG_FONT_SIZE_VALUES = {
7
+ small: '0.75em',
8
+ large: '1.5em',
9
+ huge: '2.5em',
10
+ };
11
+ const AXWysiwygFontSizeExtension = Extension.create({
12
+ name: 'axWysiwygFontSize',
13
+ addGlobalAttributes() {
14
+ return [
15
+ {
16
+ types: ['textStyle'],
17
+ attributes: {
18
+ fontSize: {
19
+ default: null,
20
+ parseHTML: (element) => element.style.fontSize?.replace(/['"]+/g, '') || null,
21
+ renderHTML: (attributes) => {
22
+ if (!attributes['fontSize']) {
23
+ return {};
24
+ }
25
+ return { style: `font-size: ${attributes['fontSize']}` };
26
+ },
27
+ },
28
+ },
29
+ },
30
+ ];
31
+ },
32
+ addCommands() {
33
+ return {
34
+ setAxWysiwygFontSize: (size) => ({ chain }) => {
35
+ if (!size) {
36
+ return chain().focus().unsetMark('textStyle').run();
37
+ }
38
+ const cssSize = AX_WYSIWYG_FONT_SIZE_VALUES[size];
39
+ return chain().focus().setMark('textStyle', { fontSize: cssSize }).run();
40
+ },
41
+ };
42
+ },
43
+ });
44
+
45
+ const AX_DEFAULT_WYSIWYG_FEATURES = {
46
+ textAlign: true,
47
+ image: true,
48
+ link: true,
49
+ video: true,
50
+ color: true,
51
+ highlight: true,
52
+ placeholder: true,
53
+ fontSize: true,
54
+ textDirection: true,
55
+ };
56
+ const AX_EMPTY_WYSIWYG_STATE = {
57
+ bold: false,
58
+ italic: false,
59
+ underline: false,
60
+ strike: false,
61
+ code: false,
62
+ codeBlock: false,
63
+ headingLevel: null,
64
+ bulletList: false,
65
+ orderedList: false,
66
+ blockquote: false,
67
+ textAlign: null,
68
+ textColor: null,
69
+ highlightColor: null,
70
+ linkHref: null,
71
+ fontSize: null,
72
+ textDirection: null,
73
+ canUndo: false,
74
+ canRedo: false,
75
+ isEmpty: true,
76
+ isFocused: false,
77
+ };
78
+
79
+ const AXWysiwygTextDirectionExtension = Extension.create({
80
+ name: 'axWysiwygTextDirection',
81
+ addGlobalAttributes() {
82
+ return [
83
+ {
84
+ types: ['paragraph', 'heading'],
85
+ attributes: {
86
+ dir: {
87
+ default: null,
88
+ parseHTML: (element) => element.getAttribute('dir'),
89
+ renderHTML: (attributes) => {
90
+ if (!attributes['dir']) {
91
+ return {};
92
+ }
93
+ return { dir: attributes['dir'] };
94
+ },
95
+ },
96
+ },
97
+ },
98
+ ];
99
+ },
100
+ addCommands() {
101
+ return {
102
+ setAxWysiwygTextDirection: (direction) => ({ chain }) => chain()
103
+ .focus()
104
+ .updateAttributes('paragraph', { dir: direction })
105
+ .updateAttributes('heading', { dir: direction })
106
+ .run(),
107
+ };
108
+ },
109
+ });
110
+
111
+ function toEmbedSrc(src) {
112
+ const trimmed = src.trim();
113
+ if (!trimmed) {
114
+ return trimmed;
115
+ }
116
+ try {
117
+ const url = new URL(trimmed);
118
+ if (url.hostname.includes('youtube.com') && url.searchParams.get('v')) {
119
+ return `https://www.youtube.com/embed/${url.searchParams.get('v')}`;
120
+ }
121
+ if (url.hostname === 'youtu.be') {
122
+ return `https://www.youtube.com/embed/${url.pathname.slice(1)}`;
123
+ }
124
+ }
125
+ catch {
126
+ return trimmed;
127
+ }
128
+ return trimmed;
129
+ }
130
+ const AXWysiwygVideoExtension = Node.create({
131
+ name: 'video',
132
+ group: 'block',
133
+ atom: true,
134
+ addOptions() {
135
+ return {
136
+ inline: false,
137
+ allowBase64: false,
138
+ HTMLAttributes: {},
139
+ };
140
+ },
141
+ addAttributes() {
142
+ return {
143
+ src: {
144
+ default: null,
145
+ },
146
+ };
147
+ },
148
+ parseHTML() {
149
+ return [
150
+ {
151
+ tag: 'div[data-wysiwyg-video] iframe',
152
+ },
153
+ {
154
+ tag: 'iframe[src]',
155
+ },
156
+ ];
157
+ },
158
+ renderHTML({ HTMLAttributes }) {
159
+ const src = HTMLAttributes['src'];
160
+ return [
161
+ 'div',
162
+ mergeAttributes(this.options.HTMLAttributes, { 'data-wysiwyg-video': '' }),
163
+ [
164
+ 'iframe',
165
+ mergeAttributes({
166
+ src,
167
+ frameborder: '0',
168
+ allowfullscreen: 'true',
169
+ allow: 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture',
170
+ }),
171
+ ],
172
+ ];
173
+ },
174
+ addCommands() {
175
+ return {
176
+ setVideo: ({ src }) => ({ commands }) => commands.insertContent({
177
+ type: this.name,
178
+ attrs: { src: toEmbedSrc(src) },
179
+ }),
180
+ };
181
+ },
182
+ });
183
+
184
+ async function loadAXWysiwygExtensions(options) {
185
+ const features = { ...AX_DEFAULT_WYSIWYG_FEATURES, ...options?.features };
186
+ const [starterKitMod, textStyleMod, colorMod, highlightMod, underlineMod] = await Promise.all([
187
+ import('@tiptap/starter-kit'),
188
+ import('@tiptap/extension-text-style'),
189
+ import('@tiptap/extension-color'),
190
+ import('@tiptap/extension-highlight'),
191
+ import('@tiptap/extension-underline'),
192
+ ]);
193
+ const extensions = [
194
+ starterKitMod.default.configure({
195
+ link: features.link ? { openOnClick: false } : false,
196
+ }),
197
+ underlineMod.default,
198
+ ];
199
+ if (features.color || features.fontSize) {
200
+ extensions.push(textStyleMod.TextStyle);
201
+ }
202
+ if (features.color) {
203
+ extensions.push(colorMod.Color);
204
+ }
205
+ if (features.highlight) {
206
+ extensions.push(highlightMod.default.configure({ multicolor: true }));
207
+ }
208
+ if (features.fontSize) {
209
+ extensions.push(AXWysiwygFontSizeExtension);
210
+ }
211
+ if (features.textDirection) {
212
+ extensions.push(AXWysiwygTextDirectionExtension);
213
+ }
214
+ if (features.textAlign) {
215
+ const textAlignMod = await import('@tiptap/extension-text-align');
216
+ extensions.push(textAlignMod.default.configure({
217
+ types: ['heading', 'paragraph'],
218
+ }));
219
+ }
220
+ if (features.image) {
221
+ const imageMod = await import('@tiptap/extension-image');
222
+ extensions.push(imageMod.default.configure({
223
+ inline: true,
224
+ allowBase64: true,
225
+ }));
226
+ }
227
+ if (features.video) {
228
+ extensions.push(AXWysiwygVideoExtension);
229
+ }
230
+ if (features.placeholder && options?.placeholder) {
231
+ const { Placeholder } = await import('@tiptap/extensions');
232
+ extensions.push(Placeholder.configure({
233
+ placeholder: options.placeholder,
234
+ }));
235
+ }
236
+ return extensions;
237
+ }
3
238
 
4
239
  class AXWysiwyg {
5
240
  constructor() {
6
- this.quillObj = signal(null, /* @ts-ignore */
7
- ...(ngDevMode ? [{ debugName: "quillObj" }] : /* istanbul ignore next */ []));
241
+ this.editor = signal(null, /* @ts-ignore */
242
+ ...(ngDevMode ? [{ debugName: "editor" }] : /* istanbul ignore next */ []));
243
+ this.state = signal(AX_EMPTY_WYSIWYG_STATE, /* @ts-ignore */
244
+ ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
245
+ this.ready = signal(false, /* @ts-ignore */
246
+ ...(ngDevMode ? [{ debugName: "ready" }] : /* istanbul ignore next */ []));
8
247
  this.platformId = inject(PLATFORM_ID);
248
+ this.destroyed = false;
249
+ this.applyingContent = false;
9
250
  }
10
- async init(container, option) {
11
- if (!isPlatformBrowser(this.platformId))
251
+ async init(container, options = {}) {
252
+ if (!isPlatformBrowser(this.platformId)) {
253
+ return;
254
+ }
255
+ const element = typeof container === 'string' ? document.querySelector(container) : container;
256
+ if (!element) {
12
257
  return;
13
- await import('quill').then((e) => {
14
- const wysiwygObject = new e.default(container, option);
15
- this.quillObj.set(wysiwygObject);
258
+ }
259
+ this.destroyed = false;
260
+ const editable = options.readOnly === true ? false : (options.editable ?? true);
261
+ const extensions = await loadAXWysiwygExtensions({
262
+ features: options.features,
263
+ placeholder: options.placeholder,
16
264
  });
265
+ if (this.destroyed) {
266
+ return;
267
+ }
268
+ const { Editor } = await import('@tiptap/core');
269
+ if (this.destroyed) {
270
+ return;
271
+ }
272
+ const allExtensions = [...extensions, ...(options.extensions ?? [])];
273
+ const editor = new Editor({
274
+ element,
275
+ extensions: allExtensions,
276
+ content: options.content ?? '',
277
+ editable,
278
+ editorProps: {
279
+ attributes: {
280
+ class: 'tiptap',
281
+ },
282
+ },
283
+ onUpdate: ({ editor: ed }) => {
284
+ this.refreshState(ed);
285
+ if (!this.applyingContent) {
286
+ options.onUpdate?.(ed);
287
+ }
288
+ },
289
+ onSelectionUpdate: ({ editor: ed }) => {
290
+ this.refreshState(ed);
291
+ options.onSelectionUpdate?.(ed);
292
+ },
293
+ onFocus: ({ editor: ed }) => {
294
+ this.refreshState(ed);
295
+ options.onFocus?.(ed);
296
+ },
297
+ onBlur: ({ editor: ed }) => {
298
+ this.refreshState(ed);
299
+ options.onBlur?.(ed);
300
+ },
301
+ });
302
+ this.editor.set(editor);
303
+ this.ready.set(true);
304
+ this.refreshState(editor);
305
+ }
306
+ destroy() {
307
+ this.destroyed = true;
308
+ const ed = this.editor();
309
+ ed?.destroy();
310
+ this.editor.set(null);
311
+ this.ready.set(false);
312
+ this.state.set(AX_EMPTY_WYSIWYG_STATE);
313
+ }
314
+ setContent(value, emit = false) {
315
+ const ed = this.editor();
316
+ if (!ed) {
317
+ return;
318
+ }
319
+ const html = value?.trim() ? value : '';
320
+ this.applyingContent = true;
321
+ try {
322
+ ed.commands.setContent(html, { emitUpdate: emit });
323
+ this.refreshState(ed);
324
+ }
325
+ finally {
326
+ this.applyingContent = false;
327
+ }
328
+ }
329
+ getHTML() {
330
+ return this.editor()?.getHTML() ?? '';
331
+ }
332
+ get JSONoutput() {
333
+ return this.editor()?.getJSON() ?? null;
334
+ }
335
+ getText() {
336
+ return this.editor()?.getText() ?? '';
337
+ }
338
+ isEmpty() {
339
+ return this.editor()?.isEmpty ?? true;
340
+ }
341
+ setEditable(editable) {
342
+ this.editor()?.setEditable(editable);
343
+ const ed = this.editor();
344
+ if (ed) {
345
+ this.refreshState(ed);
346
+ }
347
+ }
348
+ get HTMLoutput() {
349
+ return this.getHTML();
17
350
  }
18
351
  bold(value) {
19
- this.quillObj().format('bold', value);
352
+ this.setMarkActive('bold', value);
20
353
  }
21
354
  italic(value) {
22
- this.quillObj().format('italic', value);
355
+ this.setMarkActive('italic', value);
23
356
  }
24
357
  underLine(value) {
25
- this.quillObj().format('underline', value);
358
+ this.setMarkActive('underline', value);
26
359
  }
27
360
  strike(value) {
28
- this.quillObj().format('strike', value);
361
+ this.setMarkActive('strike', value);
29
362
  }
30
363
  color(value) {
31
- this.quillObj().format('color', value);
364
+ if (value) {
365
+ this.setColor(value);
366
+ }
367
+ else {
368
+ this.unsetColor();
369
+ }
32
370
  }
33
371
  header(value) {
34
- this.quillObj().format('header', value);
372
+ const ed = this.editor();
373
+ if (!ed) {
374
+ return;
375
+ }
376
+ if (value >= 1 && value <= 6) {
377
+ ed.chain()
378
+ .focus()
379
+ .toggleHeading({ level: value })
380
+ .run();
381
+ }
382
+ else {
383
+ ed.chain().focus().setParagraph().run();
384
+ }
35
385
  }
36
386
  list(value) {
37
- this.quillObj().format('list', value);
387
+ const ed = this.editor();
388
+ if (!ed) {
389
+ return;
390
+ }
391
+ const chain = ed.chain().focus();
392
+ if (value === 'bullet') {
393
+ chain.toggleBulletList().run();
394
+ }
395
+ else if (value === 'ordered') {
396
+ chain.toggleOrderedList().run();
397
+ }
398
+ else {
399
+ chain.liftListItem('listItem').run();
400
+ }
38
401
  }
39
402
  align(value) {
40
403
  if (value === 'left') {
41
- this.quillObj().format('align', '');
404
+ this.setTextAlign('left');
42
405
  }
43
406
  else {
44
- this.quillObj().format('align', value);
407
+ this.setTextAlign(value);
45
408
  }
46
409
  }
47
410
  direction(value) {
48
- this.quillObj().format('direction', value);
411
+ this.setTextDirection(value);
49
412
  }
50
413
  fontSize(value, range) {
51
- this.quillObj().formatText(range.index, range.length, 'size', value);
414
+ const ed = this.editor();
415
+ if (!ed || !range) {
416
+ return;
417
+ }
418
+ const from = range.index;
419
+ const to = range.index + range.length;
420
+ if (value === false) {
421
+ ed.chain().focus().setTextSelection({ from, to }).setAxWysiwygFontSize(null).run();
422
+ return;
423
+ }
424
+ ed.chain().focus().setTextSelection({ from, to }).setAxWysiwygFontSize(value).run();
52
425
  }
53
- get HTMLoutput() {
54
- return this.quillObj().root.innerHTML;
426
+ background(value) {
427
+ if (value) {
428
+ this.setHighlight(value);
429
+ }
430
+ else {
431
+ this.unsetHighlight();
432
+ }
433
+ }
434
+ addImage(value) {
435
+ this.insertImage(value);
436
+ }
437
+ insertVideo(src) {
438
+ this.editor()?.chain().focus().setVideo({ src }).run();
439
+ }
440
+ codeBlock(range, status) {
441
+ const ed = this.editor();
442
+ if (!ed || !range) {
443
+ return;
444
+ }
445
+ const from = range.index;
446
+ const to = range.index + range.length;
447
+ if (status) {
448
+ ed.chain().focus().setTextSelection({ from, to }).toggleCodeBlock().run();
449
+ }
450
+ else {
451
+ ed.chain().focus().setTextSelection({ from, to }).setParagraph().run();
452
+ }
453
+ }
454
+ focus() {
455
+ this.editor()?.commands.focus();
456
+ }
457
+ blur() {
458
+ this.editor()?.commands.blur();
459
+ }
460
+ toggleBold() {
461
+ this.editor()?.chain().focus().toggleBold().run();
462
+ }
463
+ toggleItalic() {
464
+ this.editor()?.chain().focus().toggleItalic().run();
465
+ }
466
+ toggleUnderline() {
467
+ this.editor()?.chain().focus().toggleUnderline().run();
468
+ }
469
+ toggleStrike() {
470
+ this.editor()?.chain().focus().toggleStrike().run();
471
+ }
472
+ toggleCode() {
473
+ this.editor()?.chain().focus().toggleCode().run();
474
+ }
475
+ toggleCodeBlock() {
476
+ this.editor()?.chain().focus().toggleCodeBlock().run();
477
+ }
478
+ toggleHeading(level) {
479
+ this.editor()?.chain().focus().toggleHeading({ level }).run();
480
+ }
481
+ setParagraph() {
482
+ this.editor()?.chain().focus().setParagraph().run();
483
+ }
484
+ toggleBulletList() {
485
+ this.editor()?.chain().focus().toggleBulletList().run();
486
+ }
487
+ toggleOrderedList() {
488
+ this.editor()?.chain().focus().toggleOrderedList().run();
489
+ }
490
+ toggleBlockquote() {
491
+ this.editor()?.chain().focus().toggleBlockquote().run();
492
+ }
493
+ setTextAlign(align) {
494
+ this.editor()?.chain().focus().setTextAlign(align).run();
495
+ }
496
+ setTextDirection(direction) {
497
+ this.editor()?.chain().focus().setAxWysiwygTextDirection(direction).run();
498
+ }
499
+ setFontSize(size) {
500
+ this.editor()?.chain().focus().setAxWysiwygFontSize(size).run();
501
+ }
502
+ setColor(color) {
503
+ this.editor()?.chain().focus().setColor(color).run();
504
+ }
505
+ unsetColor() {
506
+ this.editor()?.chain().focus().unsetColor().run();
507
+ }
508
+ setHighlight(color) {
509
+ this.editor()?.chain().focus().setHighlight({ color }).run();
510
+ }
511
+ unsetHighlight() {
512
+ this.editor()?.chain().focus().unsetHighlight().run();
513
+ }
514
+ setLink(href) {
515
+ this.editor()?.chain().focus().extendMarkRange('link').setLink({ href }).run();
516
+ }
517
+ unsetLink() {
518
+ this.editor()?.chain().focus().unsetLink().run();
519
+ }
520
+ insertImage(src, alt) {
521
+ this.editor()?.chain().focus().setImage({ src, alt }).run();
55
522
  }
56
523
  undo() {
57
- this.quillObj().history.undo();
524
+ const ed = this.editor();
525
+ if (!ed) {
526
+ return;
527
+ }
528
+ ed.chain().focus().undo().run();
529
+ this.refreshState(ed);
58
530
  }
59
531
  redo() {
60
- this.quillObj().history.redo();
532
+ const ed = this.editor();
533
+ if (!ed) {
534
+ return;
535
+ }
536
+ ed.chain().focus().redo().run();
537
+ this.refreshState(ed);
61
538
  }
62
- background(value) {
63
- this.quillObj().format('background', value);
539
+ clearFormatting() {
540
+ this.editor()?.chain().focus().clearNodes().unsetAllMarks().run();
64
541
  }
65
- addImage(value) {
66
- const range = this.quillObj().getSelection();
67
- const currentIndex = range?.index;
68
- this.quillObj().insertEmbed(currentIndex, 'image', value);
542
+ execute(command, payload) {
543
+ switch (command) {
544
+ case 'bold':
545
+ this.toggleBold();
546
+ break;
547
+ case 'italic':
548
+ this.toggleItalic();
549
+ break;
550
+ case 'underline':
551
+ this.toggleUnderline();
552
+ break;
553
+ case 'strike':
554
+ this.toggleStrike();
555
+ break;
556
+ case 'code':
557
+ this.toggleCode();
558
+ break;
559
+ case 'codeBlock':
560
+ this.toggleCodeBlock();
561
+ break;
562
+ case 'heading':
563
+ if (typeof payload === 'number') {
564
+ this.toggleHeading(payload);
565
+ }
566
+ break;
567
+ case 'paragraph':
568
+ this.setParagraph();
569
+ break;
570
+ case 'bulletList':
571
+ this.toggleBulletList();
572
+ break;
573
+ case 'orderedList':
574
+ this.toggleOrderedList();
575
+ break;
576
+ case 'blockquote':
577
+ this.toggleBlockquote();
578
+ break;
579
+ case 'textAlign':
580
+ if (typeof payload === 'string') {
581
+ this.setTextAlign(payload);
582
+ }
583
+ break;
584
+ case 'direction':
585
+ if (payload === 'rtl' || payload === 'ltr') {
586
+ this.setTextDirection(payload);
587
+ }
588
+ break;
589
+ case 'fontSize':
590
+ if (payload === null) {
591
+ this.setFontSize(null);
592
+ }
593
+ else if (payload === 'small' || payload === 'large' || payload === 'huge') {
594
+ this.setFontSize(payload);
595
+ }
596
+ break;
597
+ case 'color':
598
+ if (typeof payload === 'string') {
599
+ this.setColor(payload);
600
+ }
601
+ else {
602
+ this.unsetColor();
603
+ }
604
+ break;
605
+ case 'highlight':
606
+ if (typeof payload === 'string') {
607
+ this.setHighlight(payload);
608
+ }
609
+ else {
610
+ this.unsetHighlight();
611
+ }
612
+ break;
613
+ case 'link':
614
+ if (typeof payload === 'string' && payload) {
615
+ this.setLink(payload);
616
+ }
617
+ else {
618
+ this.unsetLink();
619
+ }
620
+ break;
621
+ case 'image':
622
+ if (typeof payload === 'string') {
623
+ this.insertImage(payload);
624
+ }
625
+ break;
626
+ case 'video':
627
+ if (typeof payload === 'string') {
628
+ this.insertVideo(payload);
629
+ }
630
+ break;
631
+ case 'undo':
632
+ this.undo();
633
+ break;
634
+ case 'redo':
635
+ this.redo();
636
+ break;
637
+ case 'clearFormatting':
638
+ this.clearFormatting();
639
+ break;
640
+ }
69
641
  }
70
- focus() {
71
- this.quillObj().focus();
642
+ isActive(name, attrs) {
643
+ return this.editor()?.isActive(name, attrs) ?? false;
72
644
  }
73
- blur() {
74
- this.quillObj().blur();
645
+ can(command) {
646
+ const ed = this.editor();
647
+ if (!ed) {
648
+ return false;
649
+ }
650
+ if (command === 'undo') {
651
+ return ed.can().undo();
652
+ }
653
+ return ed.can().redo();
75
654
  }
76
- codeBlock(range, status) {
77
- if (!range)
655
+ setMarkActive(name, active) {
656
+ const ed = this.editor();
657
+ if (!ed) {
78
658
  return;
79
- this.quillObj().formatLine(range.index, range.length, 'code-block', status);
659
+ }
660
+ const chain = ed.chain().focus();
661
+ switch (name) {
662
+ case 'bold':
663
+ active ? chain.setBold().run() : chain.unsetBold().run();
664
+ break;
665
+ case 'italic':
666
+ active ? chain.setItalic().run() : chain.unsetItalic().run();
667
+ break;
668
+ case 'underline':
669
+ active ? chain.setUnderline().run() : chain.unsetUnderline().run();
670
+ break;
671
+ case 'strike':
672
+ active ? chain.setStrike().run() : chain.unsetStrike().run();
673
+ break;
674
+ }
675
+ }
676
+ refreshState(editor) {
677
+ const textColor = editor.getAttributes('textStyle')['color'];
678
+ const fontSizeCss = editor.getAttributes('textStyle')['fontSize'];
679
+ const highlightColor = editor.getAttributes('highlight')['color'];
680
+ const linkHref = editor.getAttributes('link')['href'];
681
+ const dir = (editor.getAttributes('paragraph')['dir'] || editor.getAttributes('heading')['dir']);
682
+ let headingLevel = null;
683
+ for (let level = 1; level <= 6; level++) {
684
+ if (editor.isActive('heading', { level })) {
685
+ headingLevel = level;
686
+ break;
687
+ }
688
+ }
689
+ let textAlign = null;
690
+ for (const align of ['left', 'center', 'right', 'justify']) {
691
+ if (editor.isActive({ textAlign: align })) {
692
+ textAlign = align;
693
+ break;
694
+ }
695
+ }
696
+ let fontSize = null;
697
+ if (fontSizeCss) {
698
+ for (const [token, css] of Object.entries(AX_WYSIWYG_FONT_SIZE_VALUES)) {
699
+ if (fontSizeCss === css) {
700
+ fontSize = token;
701
+ break;
702
+ }
703
+ }
704
+ }
705
+ this.state.set({
706
+ bold: editor.isActive('bold'),
707
+ italic: editor.isActive('italic'),
708
+ underline: editor.isActive('underline'),
709
+ strike: editor.isActive('strike'),
710
+ code: editor.isActive('code'),
711
+ codeBlock: editor.isActive('codeBlock'),
712
+ headingLevel,
713
+ bulletList: editor.isActive('bulletList'),
714
+ orderedList: editor.isActive('orderedList'),
715
+ blockquote: editor.isActive('blockquote'),
716
+ textAlign,
717
+ textColor: textColor ?? null,
718
+ highlightColor: highlightColor ?? null,
719
+ linkHref: linkHref ?? null,
720
+ fontSize,
721
+ textDirection: dir ?? null,
722
+ canUndo: editor.can().undo(),
723
+ canRedo: editor.can().redo(),
724
+ isEmpty: editor.isEmpty,
725
+ isFocused: editor.isFocused,
726
+ });
80
727
  }
728
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwyg, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
729
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwyg }); }
81
730
  }
731
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwyg, decorators: [{
732
+ type: Injectable
733
+ }] });
82
734
 
83
735
  /**
84
736
  * Generated bundle index. Do not edit.
85
737
  */
86
738
 
87
- export { AXWysiwyg };
739
+ export { AXWysiwyg, AX_DEFAULT_WYSIWYG_FEATURES, AX_EMPTY_WYSIWYG_STATE, loadAXWysiwygExtensions };
88
740
  //# sourceMappingURL=acorex-cdk-wysiwyg.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-cdk-wysiwyg.mjs","sources":["../../../../packages/cdk/wysiwyg/src/wysiwyg.class.ts","../../../../packages/cdk/wysiwyg/src/acorex-cdk-wysiwyg.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { inject, PLATFORM_ID, signal } from '@angular/core';\nimport type Quill from 'quill/quill.d.ts';\nimport type { QuillOptions, Range } from 'quill/quill.d.ts';\n\nexport type Wysiwyg = Quill;\nexport type WysiwygOptions = QuillOptions;\n\nexport class AXWysiwyg {\n quillObj = signal<Wysiwyg | null>(null);\n\n private platformId = inject(PLATFORM_ID);\n\n async init(container: HTMLElement | string, option?: WysiwygOptions) {\n if (!isPlatformBrowser(this.platformId)) return;\n await import('quill').then((e) => {\n const wysiwygObject = new e.default(container, option);\n this.quillObj.set(wysiwygObject);\n });\n }\n\n bold(value: boolean) {\n this.quillObj().format('bold', value);\n }\n\n italic(value: boolean) {\n this.quillObj().format('italic', value);\n }\n\n underLine(value: boolean) {\n this.quillObj().format('underline', value);\n }\n\n strike(value: boolean) {\n this.quillObj().format('strike', value);\n }\n\n color(value: string) {\n this.quillObj().format('color', value);\n }\n\n header(value: number) {\n this.quillObj().format('header', value);\n }\n\n list(value: 'ordered' | 'bullet' | '') {\n this.quillObj().format('list', value);\n }\n\n align(value: 'center' | 'right' | 'left' | 'justify') {\n if (value === 'left') {\n this.quillObj().format('align', '');\n } else {\n this.quillObj().format('align', value);\n }\n }\n\n direction(value: 'rtl' | 'ltr') {\n this.quillObj().format('direction', value);\n }\n\n fontSize(value: 'small' | false | 'large' | 'huge', range: Range) {\n this.quillObj().formatText(range.index, range.length, 'size', value);\n }\n\n get HTMLoutput() {\n return this.quillObj().root.innerHTML;\n }\n\n undo() {\n this.quillObj().history.undo();\n }\n\n redo() {\n this.quillObj().history.redo();\n }\n\n background(value: string) {\n this.quillObj().format('background', value);\n }\n\n addImage(value: string) {\n const range = this.quillObj().getSelection();\n const currentIndex = range?.index;\n this.quillObj().insertEmbed(currentIndex, 'image', value);\n }\n\n focus() {\n this.quillObj().focus();\n }\n\n blur() {\n this.quillObj().blur();\n }\n\n codeBlock(range: Range, status: boolean) {\n if (!range) return;\n this.quillObj().formatLine(range.index, range.length, 'code-block', status);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
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":"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"}
package/package.json CHANGED
@@ -1,9 +1,17 @@
1
1
  {
2
2
  "name": "@acorex/cdk",
3
- "version": "22.3.24",
3
+ "version": "22.4.0",
4
4
  "peerDependencies": {
5
- "@acorex/core": "22.3.24",
6
- "quill": ">=2.0.2",
5
+ "@acorex/core": "22.4.0",
6
+ "@tiptap/core": ">=3.31.4",
7
+ "@tiptap/extension-color": ">=3.31.4",
8
+ "@tiptap/extension-highlight": ">=3.31.4",
9
+ "@tiptap/extension-image": ">=3.31.4",
10
+ "@tiptap/extension-text-align": ">=3.31.4",
11
+ "@tiptap/extension-text-style": ">=3.31.4",
12
+ "@tiptap/extension-underline": ">=3.31.4",
13
+ "@tiptap/extensions": ">=3.31.4",
14
+ "@tiptap/starter-kit": ">=3.31.4",
7
15
  "qrcode": ">=1.5.4",
8
16
  "swiper": ">=11.1.15",
9
17
  "maska": ">=3.1.1",
@@ -1,12 +1,85 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import Quill, { QuillOptions, Range } from 'quill/quill.d.ts';
2
+ import { Extensions, Editor } from '@tiptap/core';
3
+
4
+ type AXWysiwygEditor = Editor;
5
+ type AXWysiwygHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
6
+ type AXWysiwygTextAlign = 'left' | 'center' | 'right' | 'justify';
7
+ type AXWysiwygFontSizeToken = 'small' | 'large' | 'huge';
8
+ type AXWysiwygTextDirection = 'rtl' | 'ltr';
9
+ interface AXWysiwygRange {
10
+ index: number;
11
+ length: number;
12
+ }
13
+ type AXWysiwygCommand = 'bold' | 'italic' | 'underline' | 'strike' | 'code' | 'codeBlock' | 'heading' | 'paragraph' | 'bulletList' | 'orderedList' | 'blockquote' | 'textAlign' | 'color' | 'highlight' | 'link' | 'image' | 'video' | 'undo' | 'redo' | 'clearFormatting' | 'direction' | 'fontSize';
14
+ interface AXWysiwygFeatures {
15
+ textAlign?: boolean;
16
+ image?: boolean;
17
+ link?: boolean;
18
+ video?: boolean;
19
+ color?: boolean;
20
+ highlight?: boolean;
21
+ placeholder?: boolean;
22
+ fontSize?: boolean;
23
+ textDirection?: boolean;
24
+ }
25
+ declare const AX_DEFAULT_WYSIWYG_FEATURES: AXWysiwygFeatures;
26
+ interface AXWysiwygState {
27
+ bold: boolean;
28
+ italic: boolean;
29
+ underline: boolean;
30
+ strike: boolean;
31
+ code: boolean;
32
+ codeBlock: boolean;
33
+ headingLevel: AXWysiwygHeadingLevel | null;
34
+ bulletList: boolean;
35
+ orderedList: boolean;
36
+ blockquote: boolean;
37
+ textAlign: AXWysiwygTextAlign | null;
38
+ textColor: string | null;
39
+ highlightColor: string | null;
40
+ linkHref: string | null;
41
+ fontSize: AXWysiwygFontSizeToken | null;
42
+ textDirection: AXWysiwygTextDirection | null;
43
+ canUndo: boolean;
44
+ canRedo: boolean;
45
+ isEmpty: boolean;
46
+ isFocused: boolean;
47
+ }
48
+ declare const AX_EMPTY_WYSIWYG_STATE: AXWysiwygState;
49
+ interface AXWysiwygInitOptions {
50
+ content?: string;
51
+ editable?: boolean;
52
+ placeholder?: string;
53
+ features?: AXWysiwygFeatures;
54
+ extensions?: Extensions;
55
+ /** @deprecated Use `editable: false` instead. */
56
+ readOnly?: boolean;
57
+ onUpdate?: (editor: AXWysiwygEditor) => void;
58
+ onFocus?: (editor: AXWysiwygEditor) => void;
59
+ onBlur?: (editor: AXWysiwygEditor) => void;
60
+ onSelectionUpdate?: (editor: AXWysiwygEditor) => void;
61
+ }
62
+ interface AXWysiwygLoadExtensionsOptions {
63
+ features?: AXWysiwygFeatures;
64
+ placeholder?: string;
65
+ }
3
66
 
4
- type Wysiwyg = Quill;
5
- type WysiwygOptions = QuillOptions;
6
67
  declare class AXWysiwyg {
7
- quillObj: _angular_core.WritableSignal<Quill>;
8
- private platformId;
9
- init(container: HTMLElement | string, option?: WysiwygOptions): Promise<void>;
68
+ readonly editor: _angular_core.WritableSignal<Editor>;
69
+ readonly state: _angular_core.WritableSignal<AXWysiwygState>;
70
+ readonly ready: _angular_core.WritableSignal<boolean>;
71
+ private readonly platformId;
72
+ private destroyed;
73
+ private applyingContent;
74
+ init(container: HTMLElement | string, options?: AXWysiwygInitOptions): Promise<void>;
75
+ destroy(): void;
76
+ setContent(value: string | null | undefined, emit?: boolean): void;
77
+ getHTML(): string;
78
+ get JSONoutput(): unknown;
79
+ getText(): string;
80
+ isEmpty(): boolean;
81
+ setEditable(editable: boolean): void;
82
+ get HTMLoutput(): string;
10
83
  bold(value: boolean): void;
11
84
  italic(value: boolean): void;
12
85
  underLine(value: boolean): void;
@@ -15,17 +88,48 @@ declare class AXWysiwyg {
15
88
  header(value: number): void;
16
89
  list(value: 'ordered' | 'bullet' | ''): void;
17
90
  align(value: 'center' | 'right' | 'left' | 'justify'): void;
18
- direction(value: 'rtl' | 'ltr'): void;
19
- fontSize(value: 'small' | false | 'large' | 'huge', range: Range): void;
20
- get HTMLoutput(): string;
21
- undo(): void;
22
- redo(): void;
91
+ direction(value: AXWysiwygTextDirection): void;
92
+ fontSize(value: 'small' | false | 'large' | 'huge', range: AXWysiwygRange): void;
23
93
  background(value: string): void;
24
94
  addImage(value: string): void;
95
+ insertVideo(src: string): void;
96
+ codeBlock(range: AXWysiwygRange, status: boolean): void;
25
97
  focus(): void;
26
98
  blur(): void;
27
- codeBlock(range: Range, status: boolean): void;
99
+ toggleBold(): void;
100
+ toggleItalic(): void;
101
+ toggleUnderline(): void;
102
+ toggleStrike(): void;
103
+ toggleCode(): void;
104
+ toggleCodeBlock(): void;
105
+ toggleHeading(level: AXWysiwygHeadingLevel): void;
106
+ setParagraph(): void;
107
+ toggleBulletList(): void;
108
+ toggleOrderedList(): void;
109
+ toggleBlockquote(): void;
110
+ setTextAlign(align: AXWysiwygTextAlign): void;
111
+ setTextDirection(direction: AXWysiwygTextDirection | null): void;
112
+ setFontSize(size: AXWysiwygFontSizeToken | null): void;
113
+ setColor(color: string): void;
114
+ unsetColor(): void;
115
+ setHighlight(color: string): void;
116
+ unsetHighlight(): void;
117
+ setLink(href: string): void;
118
+ unsetLink(): void;
119
+ insertImage(src: string, alt?: string): void;
120
+ undo(): void;
121
+ redo(): void;
122
+ clearFormatting(): void;
123
+ execute(command: AXWysiwygCommand, payload?: unknown): void;
124
+ isActive(name: string, attrs?: Record<string, unknown>): boolean;
125
+ can(command: 'undo' | 'redo'): boolean;
126
+ private setMarkActive;
127
+ private refreshState;
128
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXWysiwyg, never>;
129
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
28
130
  }
29
131
 
30
- export { AXWysiwyg };
31
- export type { Wysiwyg, WysiwygOptions };
132
+ declare function loadAXWysiwygExtensions(options?: AXWysiwygLoadExtensionsOptions): Promise<Extensions>;
133
+
134
+ export { AXWysiwyg, AX_DEFAULT_WYSIWYG_FEATURES, AX_EMPTY_WYSIWYG_STATE, loadAXWysiwygExtensions };
135
+ export type { AXWysiwygCommand, AXWysiwygEditor, AXWysiwygFeatures, AXWysiwygFontSizeToken, AXWysiwygHeadingLevel, AXWysiwygInitOptions, AXWysiwygLoadExtensionsOptions, AXWysiwygRange, AXWysiwygState, AXWysiwygTextAlign, AXWysiwygTextDirection };
package/wysiwyg/README.md CHANGED
@@ -1,3 +1,5 @@
1
1
  # @acorex/cdk/wysiwyg
2
2
 
3
- Secondary entry point of `@acorex/cdk`. It can be used by importing from `@acorex/cdk/wysiwyg`.
3
+ Secondary entry point of `@acorex/cdk`. Headless TipTap-powered rich text API. Import from `@acorex/cdk/wysiwyg`.
4
+
5
+ Requires `@tiptap/*` peer dependencies (lazy-loaded at runtime).