{"version":3,"file":"widgets-mention.mjs","sources":["../../../../packages/form/widgets/mention/widget.ts","../../../../packages/form/widgets/mention/module.ts","../../../../packages/form/widgets/mention/index.ts","../../../../packages/form/widgets/mention/widgets-mention.ts"],"sourcesContent":["import { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { map, tap } from 'rxjs';\n\nimport { ControlUIWidget, DelonFormModule, SFSchemaEnum, getData, getEnum } from '@delon/form';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { MentionOnSearchTypes, NzMentionComponent, NzMentionModule } from 'ng-zorro-antd/mention';\n\nimport type { SFMentionWidgetSchema } from './schema';\n\n@Component({\n  selector: 'sf-mention',\n  template: `<sf-item-wrap\n    [id]=\"id\"\n    [schema]=\"schema\"\n    [ui]=\"ui\"\n    [showError]=\"showError\"\n    [error]=\"error\"\n    [showTitle]=\"schema.title\"\n  >\n    <nz-mention\n      #mentions\n      [nzSuggestions]=\"data\"\n      [nzValueWith]=\"i.valueWith\"\n      [nzLoading]=\"loading\"\n      [nzNotFoundContent]=\"i.notFoundContent\"\n      [nzPlacement]=\"i.placement\"\n      [nzPrefix]=\"i.prefix\"\n      (nzOnSelect)=\"_select($event)\"\n      (nzOnSearchChange)=\"_search($event)\"\n    >\n      @if (ui.inputStyle === 'textarea') {\n        <textarea\n          nzMentionTrigger\n          nz-input\n          [attr.id]=\"id\"\n          [disabled]=\"disabled\"\n          [attr.disabled]=\"disabled\"\n          [nzSize]=\"ui.size!\"\n          [ngModel]=\"value\"\n          (ngModelChange)=\"setValue($event)\"\n          [attr.maxLength]=\"schema.maxLength ?? null\"\n          [attr.placeholder]=\"ui.placeholder\"\n          cdkTextareaAutosize\n          [cdkAutosizeMinRows]=\"i.autosize?.minRows ?? 1\"\n          [cdkAutosizeMaxRows]=\"i.autosize?.maxRows ?? 0\"\n        >\n        </textarea>\n      } @else {\n        <input\n          nzMentionTrigger\n          nz-input\n          [attr.id]=\"id\"\n          [disabled]=\"disabled\"\n          [attr.disabled]=\"disabled\"\n          [nzSize]=\"ui.size!\"\n          [ngModel]=\"value\"\n          (ngModelChange)=\"setValue($event)\"\n          [attr.maxLength]=\"schema.maxLength ?? null\"\n          [attr.placeholder]=\"ui.placeholder\"\n          autocomplete=\"off\"\n        />\n      }\n    </nz-mention>\n  </sf-item-wrap>`,\n  encapsulation: ViewEncapsulation.None,\n  imports: [FormsModule, DelonFormModule, NzInputModule, NzMentionModule, CdkTextareaAutosize]\n})\nexport class MentionWidget extends ControlUIWidget<SFMentionWidgetSchema> implements OnInit {\n  static readonly KEY = 'mention';\n\n  @ViewChild('mentions', { static: true }) private mentionChild!: NzMentionComponent;\n  data: SFSchemaEnum[] = [];\n  i: NzSafeAny;\n  loading = false;\n\n  ngOnInit(): void {\n    const { valueWith, notFoundContent, placement, prefix, autosize } = this.ui;\n    this.i = {\n      valueWith: valueWith ?? (item => item.label),\n      notFoundContent: notFoundContent ?? '无匹配结果，轻敲空格完成输入',\n      placement: placement ?? 'bottom',\n      prefix: prefix ?? '@',\n      autosize: typeof autosize === 'undefined' ? true : this.ui.autosize\n    };\n\n    const { minimum, maximum } = this.schema;\n    const min = typeof minimum !== 'undefined' ? minimum : -1;\n    const max = typeof maximum !== 'undefined' ? maximum : -1;\n\n    if (!this.ui.validator && (min !== -1 || max !== -1)) {\n      this.ui.validator = (() => {\n        const count = this.mentionChild.getMentions().length;\n        if (min !== -1 && count < min) {\n          return [{ keyword: 'mention', message: `最少提及 ${min} 次` }];\n        }\n        if (max !== -1 && count > max) {\n          return [{ keyword: 'mention', message: `最多提及 ${max} 次` }];\n        }\n        return null;\n      }) as NzSafeAny;\n    }\n  }\n\n  reset(): void {\n    getData(this.schema, this.ui, null).subscribe(list => {\n      this.data = list;\n      this.detectChanges();\n    });\n  }\n\n  _select(options: NzSafeAny): void {\n    if (this.ui.select) this.ui.select(options);\n  }\n\n  _search(option: MentionOnSearchTypes): void {\n    if (typeof this.ui.loadData !== 'function') return;\n\n    this.loading = true;\n    this.ui\n      .loadData(option)\n      .pipe(\n        tap(() => (this.loading = false)),\n        map(res => getEnum(res, null, this.schema.readOnly!))\n      )\n      .subscribe(res => {\n        this.data = res;\n        this.detectChanges(true);\n      });\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { DelonFormModule, WidgetRegistry } from '@delon/form';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzMentionModule } from 'ng-zorro-antd/mention';\n\nimport { MentionWidget } from './widget';\n\n@NgModule({\n  imports: [FormsModule, DelonFormModule, NzMentionModule, NzInputModule, CommonModule, MentionWidget]\n})\nexport class MentionWidgetModule {\n  constructor(widgetRegistry: WidgetRegistry) {\n    widgetRegistry.register(MentionWidget.KEY, MentionWidget);\n  }\n}\n","import type { SFWidgetProvideConfig } from '@delon/form';\n\nimport { MentionWidget } from './widget';\n\nexport * from './widget';\nexport * from './schema';\nexport * from './module';\n\nexport function withMentionWidget(): SFWidgetProvideConfig {\n  return { KEY: MentionWidget.KEY, type: MentionWidget };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1"],"mappings":"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"}