{"version":3,"file":"myrmidon-cadmus-part-lexicography-word-forms.mjs","sources":["../../../../projects/myrmidon/cadmus-part-lexicography-word-forms/src/lib/lex-word-forms-part.ts","../../../../projects/myrmidon/cadmus-part-lexicography-word-forms/src/lib/components/lex-word-forms-part-editor/lex-word-forms-part-editor.ts","../../../../projects/myrmidon/cadmus-part-lexicography-word-forms/src/lib/components/lex-word-forms-part-editor/lex-word-forms-part-editor.html","../../../../projects/myrmidon/cadmus-part-lexicography-word-forms/src/lib/components/lex-word-forms-part-feature/lex-word-forms-part-feature.ts","../../../../projects/myrmidon/cadmus-part-lexicography-word-forms/src/lib/components/lex-word-forms-part-feature/lex-word-forms-part-feature.html","../../../../projects/myrmidon/cadmus-part-lexicography-word-forms/src/public-api.ts","../../../../projects/myrmidon/cadmus-part-lexicography-word-forms/src/myrmidon-cadmus-part-lexicography-word-forms.ts"],"sourcesContent":["import { Part } from '@myrmidon/cadmus-core';\r\n\r\nimport { WordForm } from '@myrmidon/cadmus-part-lexicography-lemma';\r\n\r\n/**\r\n * The LexWordForms part model.\r\n */\r\nexport interface LexWordFormsPart extends Part {\r\n  forms: WordForm[];\r\n}\r\n\r\n/**\r\n * The type ID used to identify the LexWordFormsPart type.\r\n */\r\nexport const LEX_WORD_FORMS_PART_TYPEID = 'it.vedph.lexicography.word-forms';\r\n\r\n/**\r\n * JSON schema for the LexWordForms part.\r\n * You can use the JSON schema tool at https://jsonschema.net/.\r\n */\r\nexport const LEX_WORD_FORMS_PART_SCHEMA = {\r\n  $schema: 'http://json-schema.org/draft-07/schema#',\r\n  $id: 'www.vedph.it/cadmus/parts/lexicography/' + LEX_WORD_FORMS_PART_TYPEID + '.json',\r\n  type: 'object',\r\n  title: 'LexWordFormsPart',\r\n  required: [\r\n    'id',\r\n    'itemId',\r\n    'typeId',\r\n    'timeCreated',\r\n    'creatorId',\r\n    'timeModified',\r\n    'userId',\r\n    'forms',\r\n  ],\r\n  properties: {\r\n    timeCreated: {\r\n      type: 'string',\r\n      pattern: '^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d+Z$',\r\n    },\r\n    creatorId: {\r\n      type: 'string',\r\n    },\r\n    timeModified: {\r\n      type: 'string',\r\n      pattern: '^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d+Z$',\r\n    },\r\n    userId: {\r\n      type: 'string',\r\n    },\r\n    id: {\r\n      type: 'string',\r\n      pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$',\r\n    },\r\n    itemId: {\r\n      type: 'string',\r\n      pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$',\r\n    },\r\n    typeId: {\r\n      type: 'string',\r\n      pattern: '^[a-z][-0-9a-z._]*$',\r\n    },\r\n    roleId: {\r\n      type: ['string', 'null'],\r\n      pattern: '^([a-z][-0-9a-z._]*)?$',\r\n    },\r\n    forms: {\r\n      type: 'array',\r\n      minItems: 1,\r\n      items: {\r\n        type: 'object',\r\n        required: ['type', 'value', 'pos'],\r\n        properties: {\r\n          type: {\r\n            type: 'string',\r\n          },\r\n          prefix: {\r\n            type: 'string',\r\n          },\r\n          value: {\r\n            type: 'string',\r\n          },\r\n          suffix: {\r\n            type: 'string',\r\n          },\r\n          pos: {\r\n            type: 'string',\r\n          },\r\n          features: {\r\n            type: 'array',\r\n            items: {\r\n              type: 'string',\r\n            },\r\n          },\r\n          tags: {\r\n            type: 'array',\r\n            items: {\r\n              type: 'string',\r\n            },\r\n          },\r\n          note: {\r\n            type: 'string',\r\n          },\r\n        },\r\n        additionalProperties: false,\r\n      },\r\n    },\r\n  },\r\n};\r\n","import { Component, OnInit, signal } from '@angular/core';\r\nimport {\r\n  FormControl,\r\n  FormBuilder,\r\n  FormGroup,\r\n  UntypedFormGroup,\r\n  ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TitleCasePipe } from '@angular/common';\r\n\r\nimport {\r\n  MatCard,\r\n  MatCardActions,\r\n  MatCardContent,\r\n  MatCardHeader,\r\n  MatCardTitle,\r\n} from '@angular/material/card';\r\nimport { MatError, MatFormField, MatLabel } from '@angular/material/form-field';\r\nimport { MatIconButton } from '@angular/material/button';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\nimport { AuthJwtService } from '@myrmidon/auth-jwt-login';\r\nimport { EditedObject, ThesauriSet, ThesaurusEntry } from '@myrmidon/cadmus-core';\r\nimport { CloseSaveButtonsComponent, ModelEditorComponentBase } from '@myrmidon/cadmus-ui';\r\nimport { WordForm, WordFormSetEditor } from '@myrmidon/cadmus-part-lexicography-lemma';\r\nimport { LEX_WORD_FORMS_PART_TYPEID, LexWordFormsPart } from '../../lex-word-forms-part';\r\n\r\n/**\r\n * Lexicography word forms part editor component.\r\n * Thesauri: lex-word-form-types, lex-word-form-prefixes, lex-word-form-suffixes,\r\n * lex-pos-tags, lex-word-form-features, lex-word-form-tags.\r\n */\r\n@Component({\r\n  selector: 'cadmus-lex-word-forms-part-editor',\r\n  imports: [\r\n    ReactiveFormsModule,\r\n    MatCard,\r\n    MatCardActions,\r\n    MatCardContent,\r\n    MatCardHeader,\r\n    MatCardTitle,\r\n    MatIcon,\r\n    MatTooltip,\r\n    TitleCasePipe,\r\n    CloseSaveButtonsComponent,\r\n    WordFormSetEditor,\r\n  ],\r\n  templateUrl: './lex-word-forms-part-editor.html',\r\n  styleUrl: './lex-word-forms-part-editor.css',\r\n})\r\nexport class LexWordFormsPartEditor\r\n  extends ModelEditorComponentBase<LexWordFormsPart>\r\n  implements OnInit\r\n{\r\n  public forms: FormControl<WordForm[]>;\r\n\r\n  // lex-word-form-types\r\n  public readonly typeEntries = signal<ThesaurusEntry[] | undefined>(undefined);\r\n  // lex-word-form-prefixes\r\n  public readonly prefixEntries = signal<ThesaurusEntry[] | undefined>(undefined);\r\n  // lex-word-form-suffixes\r\n  public readonly suffixEntries = signal<ThesaurusEntry[] | undefined>(undefined);\r\n  // lex-pos-tags (required)\r\n  public readonly posEntries = signal<ThesaurusEntry[]>([]);\r\n  // lex-word-form-features\r\n  public readonly featureEntries = signal<ThesaurusEntry[] | undefined>(undefined);\r\n  // lex-word-form-tags\r\n  public readonly tagEntries = signal<ThesaurusEntry[] | undefined>(undefined);\r\n\r\n  constructor(authService: AuthJwtService, formBuilder: FormBuilder) {\r\n    super(authService, formBuilder);\r\n    // form\r\n    this.forms = formBuilder.control([], { nonNullable: true });\r\n  }\r\n\r\n  public override ngOnInit(): void {\r\n    super.ngOnInit();\r\n  }\r\n\r\n  protected buildForm(formBuilder: FormBuilder): FormGroup | UntypedFormGroup {\r\n    return formBuilder.group({\r\n      forms: this.forms,\r\n    });\r\n  }\r\n\r\n  private updateThesauri(thesauri: ThesauriSet): void {\r\n    let key = 'lex-word-form-types';\r\n    if (this.hasThesaurus(key)) {\r\n      this.typeEntries.set(thesauri[key].entries);\r\n    } else {\r\n      this.typeEntries.set(undefined);\r\n    }\r\n    key = 'lex-word-form-prefixes';\r\n    if (this.hasThesaurus(key)) {\r\n      this.prefixEntries.set(thesauri[key].entries);\r\n    } else {\r\n      this.prefixEntries.set(undefined);\r\n    }\r\n    key = 'lex-word-form-suffixes';\r\n    if (this.hasThesaurus(key)) {\r\n      this.suffixEntries.set(thesauri[key].entries);\r\n    } else {\r\n      this.suffixEntries.set(undefined);\r\n    }\r\n    key = 'lex-pos-tags';\r\n    if (this.hasThesaurus(key)) {\r\n      this.posEntries.set(thesauri[key].entries!);\r\n    } else {\r\n      this.posEntries.set([]);\r\n    }\r\n    key = 'lex-word-form-features';\r\n    if (this.hasThesaurus(key)) {\r\n      this.featureEntries.set(thesauri[key].entries);\r\n    } else {\r\n      this.featureEntries.set(undefined);\r\n    }\r\n    key = 'lex-word-form-tags';\r\n    if (this.hasThesaurus(key)) {\r\n      this.tagEntries.set(thesauri[key].entries);\r\n    } else {\r\n      this.tagEntries.set(undefined);\r\n    }\r\n  }\r\n\r\n  private updateForm(part?: LexWordFormsPart | null): void {\r\n    if (!part) {\r\n      this.form.reset();\r\n      return;\r\n    }\r\n    this.forms.setValue(part.forms || []);\r\n    this.form.markAsPristine();\r\n  }\r\n\r\n  public onFormsChange(forms: WordForm[]): void {\r\n    this.forms.setValue(forms || []);\r\n    this.form.markAsDirty();\r\n    this.forms.updateValueAndValidity();\r\n  }\r\n\r\n  protected override onDataSet(data?: EditedObject<LexWordFormsPart>): void {\r\n    // thesauri\r\n    if (data?.thesauri) {\r\n      this.updateThesauri(data.thesauri);\r\n    }\r\n\r\n    // form\r\n    this.updateForm(data?.value);\r\n  }\r\n\r\n  protected getValue(): LexWordFormsPart {\r\n    let part = this.getEditedPart(LEX_WORD_FORMS_PART_TYPEID) as LexWordFormsPart;\r\n    part.forms = this.forms.value || [];\r\n    return part;\r\n  }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n  <mat-card>\r\n    <mat-card-header>\r\n      <div mat-card-avatar>\r\n        <mat-icon>picture_in_picture</mat-icon>\r\n      </div>\r\n      <mat-card-title>\r\n        {{ (modelName() | titlecase) || 'Word Forms Part' }}\r\n      </mat-card-title>\r\n    </mat-card-header>\r\n    <mat-card-content>\r\n      <!-- forms -->\r\n      <div>\r\n        <fieldset>\r\n          <legend>\r\n            forms @if (!this.forms.value.length) {\r\n            <span id=\"forms-error\" matTooltip=\"Form(s) required\"\r\n              ><mat-icon class=\"mat-warn\">error</mat-icon></span\r\n            >\r\n            }\r\n          </legend>\r\n          <cadmus-word-form-set-editor\r\n            [typeEntries]=\"typeEntries()\"\r\n            [prefixEntries]=\"prefixEntries()\"\r\n            [suffixEntries]=\"suffixEntries()\"\r\n            [posEntries]=\"posEntries()\"\r\n            [featureEntries]=\"featureEntries()\"\r\n            [tagEntries]=\"tagEntries()\"\r\n            [forms]=\"forms.value\"\r\n            (formsChange)=\"onFormsChange($event)\"\r\n          />\r\n        </fieldset>\r\n      </div>\r\n    </mat-card-content>\r\n    <mat-card-actions>\r\n      <cadmus-close-save-buttons [form]=\"form\" [noSave]=\"userLevel < 2\" (closeRequest)=\"close()\" />\r\n    </mat-card-actions>\r\n  </mat-card>\r\n</form>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\nimport { ItemService, ThesaurusService } from '@myrmidon/cadmus-api';\r\nimport { EditPartFeatureBase, PartEditorService } from '@myrmidon/cadmus-state';\r\nimport { CurrentItemBarComponent } from '@myrmidon/cadmus-ui-pg';\r\n\r\nimport { LexWordFormsPartEditor } from '../lex-word-forms-part-editor/lex-word-forms-part-editor';\r\n\r\n@Component({\r\n  selector: 'cadmus-lex-word-forms-part-feature',\r\n  imports: [CurrentItemBarComponent, LexWordFormsPartEditor],\r\n  templateUrl: './lex-word-forms-part-feature.html',\r\n  styleUrl: './lex-word-forms-part-feature.css',\r\n})\r\nexport class LexWordFormsPartFeature extends EditPartFeatureBase implements OnInit {\r\n  constructor(\r\n    router: Router,\r\n    route: ActivatedRoute,\r\n    snackbar: MatSnackBar,\r\n    itemService: ItemService,\r\n    thesaurusService: ThesaurusService,\r\n    editorService: PartEditorService\r\n  ) {\r\n    super(router, route, snackbar, itemService, thesaurusService, editorService);\r\n  }\r\n\r\n  protected override getReqThesauriIds(): string[] {\r\n    this.roleIdInThesauri = true;\r\n\r\n    return [\r\n      'lex-word-form-types',\r\n      'lex-word-form-prefixes',\r\n      'lex-word-form-suffixes',\r\n      'lex-pos-tags',\r\n      'lex-word-form-features',\r\n      'lex-word-form-tags',\r\n    ];\r\n  }\r\n}\r\n","<cadmus-current-item-bar />\r\n<cadmus-lex-word-forms-part-editor\r\n  [identity]=\"identity\"\r\n  [data]=\"$any(data)\"\r\n  (dataChange)=\"save($event!.value!)\"\r\n  (editorClose)=\"close()\"\r\n  (dirtyChange)=\"onDirtyChange($event)\"\r\n/>\r\n","/*\r\n * Public API Surface of cadmus-part-lexicography-word-forms\r\n */\r\n\r\nexport * from './lib/lex-word-forms-part';\r\nexport * from './lib/components/lex-word-forms-part-editor/lex-word-forms-part-editor';\r\nexport * from './lib/components/lex-word-forms-part-feature/lex-word-forms-part-feature';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}