{"version":3,"file":"acorex-components-editor.mjs","sources":["../../../../packages/components/editor/src/lib/editor.component.ts","../../../../packages/components/editor/src/lib/editor.module.ts","../../../../packages/components/editor/src/acorex-components-editor.ts"],"sourcesContent":["import {\n  AXComponent,\n  AXFocusableComponent,\n  AXValuableComponent,\n  MXInputBaseValueComponent,\n  MXLookComponent,\n} from '@acorex/cdk/common';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXHtmlUtil } from '@acorex/core/utils';\nimport {\n  afterNextRender,\n  Component,\n  ElementRef,\n  forwardRef,\n  HostBinding,\n  inject,\n  input,\n  viewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type EditorJS from '@editorjs/editorjs';\nimport type { OutputData } from '@editorjs/editorjs';\nimport { classes } from 'polytype';\nimport { EditorJsTool, type ImageToolConfig } from './editor.type';\n\n@Component({\n  selector: 'ax-editor',\n  template: `\n    <div class=\"ax-editor-container ax-default {{ look }}\">\n      <div class=\"ax-editor-holder\" #r></div>\n    </div>\n    <ng-content select=\"ax-validation-rule\"> </ng-content>\n    <div class=\"ax-error-container\"></div>\n  `,\n  styleUrl: './editor.component.css',\n  providers: [\n    { provide: AXComponent, useExisting: AXEditorComponent },\n    { provide: AXFocusableComponent, useExisting: AXEditorComponent },\n    { provide: AXValuableComponent, useExisting: AXEditorComponent },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => AXEditorComponent),\n      multi: true,\n    },\n  ],\n  inputs: ['look', 'readonly', 'disabled', 'value'],\n  outputs: ['onValueChanged'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class AXEditorComponent extends classes(MXInputBaseValueComponent<OutputData>, MXLookComponent) {\n  private toolLoaders: Record<EditorJsTool, () => Promise<any>> = {\n    header: () => import('@editorjs/header'),\n    list: () => import('@editorjs/list'),\n    raw: () => import('@editorjs/raw'),\n    quote: () => import('@editorjs/quote'),\n    codeBox: () => import('@bomdi/codebox'),\n    underline: () => import('@editorjs/underline'),\n    color: () => import('editorjs-text-color-plugin'),\n    image: () => import('@editorjs/image'),\n    // linkTool: () => import('@editorjs/link'),\n    // table: () => import('@editorjs/table'),\n    // attaches: () => import('@editorjs/attaches'),\n    // alignmentTuneTool: () => import('editorjs-text-alignment-blocktune'),\n    // hyperlink: () => import('editorjs-hyperlink'),\n    // delimiter: () => import('@editorjs/delimiter'),\n    // inlineCode: () => import('@editorjs/inline-code'),\n    // embed: () => import('@editorjs/embed'),\n    // warning: () => import('@editorjs/warning'),\n    // checklist: () => import('@editorjs/checklist'),\n    // marker: () => import('@editorjs/marker'),\n    // dragDrop: () => import('editorjs-drag-drop'),\n    // undo: () => import('editorjs-undo'),\n    // nestedList: () => import('@editorjs/nested-list'),\n    // tooltip: () => import('editorjs-tooltip'),\n    // paragraphWithAlignment: () => import('editorjs-paragraph-with-alignment'),\n  };\n\n  private editorHolder = viewChild<ElementRef<HTMLDivElement>>('r');\n\n  private platform = inject(AXPlatform);\n\n  modules = input<EditorJsTool[]>(['header', 'list', 'codeBox', 'underline', 'color']);\n\n  imageConfig = input<ImageToolConfig>();\n\n  protected editorClass: EditorJS;\n\n  private colorConfig: any = {\n    defaultColor: '#FF1300',\n    type: 'text',\n    customPicker: true,\n    colorCollections: [\n      '#EC7878',\n      '#9C27B0',\n      '#673AB7',\n      '#3F51B5',\n      '#0070FF',\n      '#03A9F4',\n      '#00BCD4',\n      '#4CAF50',\n      '#8BC34A',\n      '#CDDC39',\n      '#FFF',\n    ],\n  };\n\n  private markerConfig: any = {\n    defaultColor: '#FFBF00',\n    type: 'marker',\n  };\n\n  private async loadEditorJsTools(selectedTools: EditorJsTool[]): Promise<Record<string, any>> {\n    const results = await Promise.all(\n      selectedTools.map(async (name) => {\n        try {\n          const mod = await this.toolLoaders[name]();\n          const ToolClass = mod.default || mod;\n          return [name, ToolClass];\n        } catch (error) {\n          console.error(`❌ Failed to load ${name}:`, error);\n          return null;\n        }\n      }),\n    );\n\n    return Object.fromEntries(results.filter((r) => r).map(([key, value]) => [key, { class: value }]));\n  }\n\n  #init = afterNextRender(async () => {\n    const tools = await this.loadEditorJsTools(this.modules());\n\n    if (tools['color']) {\n      tools['marker'] = { ...tools['color'] };\n      tools['color'].config = this.colorConfig;\n      tools['marker'].config = this.markerConfig;\n    }\n\n    if (tools['image'] && this.imageConfig()) {\n      tools['image'].config = this.imageConfig();\n    }\n\n    if (tools['codeBox']) {\n      let theme: any;\n      if (this.platform.themeMode() === 'dark' || this.platform.themeMode() === 'light') {\n        theme = this.platform.themeMode();\n      } else {\n        theme = 'light';\n      }\n      tools['codeBox'].config = { useDefaultTheme: theme };\n    }\n\n    const EditorJS = (await import('@editorjs/editorjs')).default;\n\n    if (tools['codeBox'].class.default) tools['codeBox'].class = tools['codeBox'].class.default;\n\n    this.editorClass = new EditorJS({\n      holder: this.editorHolder().nativeElement,\n      tools,\n      onChange: async (e) => {\n        const content = await e.saver.save();\n        if (content.blocks.length) {\n          this.commitValue(content, true);\n        } else {\n          this.commitValue(null, true);\n        }\n      },\n      data: this.value,\n      readOnly: this.readonly || this.disabled,\n    });\n  });\n\n  @HostBinding('class')\n  private get __hostClass(): string[] {\n    const style = [];\n    if (this.disabled) style.push('ax-disable');\n    if (AXHtmlUtil.isRtl()) style.push('ax-rtl');\n    return style;\n  }\n\n  @HostBinding('attr.name')\n  private get __hostName(): string {\n    return this.name;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { AXEditorComponent } from './editor.component';\n\nconst COMPONENT = [AXEditorComponent];\n\nconst MODULES = [];\n\n@NgModule({\n  imports: [...MODULES, ...COMPONENT],\n  exports: [...COMPONENT],\n  providers: [],\n})\nexport class EditorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}