@lblod/ember-rdfa-editor 13.1.0 → 13.1.1

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.
Files changed (94) hide show
  1. package/README.md +165 -95
  2. package/dist/commands/_private/rdfa-commands/remove-backlink.js +1 -1
  3. package/dist/commands/_private/rdfa-commands/select-node-by-rdfa-id.js +1 -1
  4. package/dist/commands/_private/rdfa-commands/select-node-by-subject.js +1 -1
  5. package/dist/commands/_private/rdfa-commands/wrap-inline-resource.js +1 -1
  6. package/dist/commands/_private/rdfa-commands/wrap-literal.js +1 -1
  7. package/dist/commands/_private/rdfa-commands/wrap-resource.js +1 -1
  8. package/dist/commands/rdfa-commands/add-property.js +1 -1
  9. package/dist/commands/rdfa-commands/remove-property.js +1 -1
  10. package/dist/components/_private/attribute-editor/index.js +1 -1
  11. package/dist/components/_private/attribute-editor/index.js.map +1 -1
  12. package/dist/components/_private/common/configurable-rdfa-display.js +1 -1
  13. package/dist/components/_private/common/property-details.js +1 -1
  14. package/dist/components/_private/debug-info/index.js +1 -1
  15. package/dist/components/_private/debug-info/index.js.map +1 -1
  16. package/dist/components/_private/doc-editor/info-pill.js.map +1 -1
  17. package/dist/components/_private/doc-editor/lang-pill.js.map +1 -1
  18. package/dist/components/_private/doc-imported-resource-editor/card.js +1 -1
  19. package/dist/components/_private/doc-imported-resource-editor/card.js.map +1 -1
  20. package/dist/components/_private/doc-imported-resource-editor/form.js.map +1 -1
  21. package/dist/components/_private/external-triple-editor/card.js +1 -1
  22. package/dist/components/_private/external-triple-editor/card.js.map +1 -1
  23. package/dist/components/_private/external-triple-editor/form.js.map +1 -1
  24. package/dist/components/_private/imported-resource-linker/card.js +1 -1
  25. package/dist/components/_private/imported-resource-linker/card.js.map +1 -1
  26. package/dist/components/_private/node-controls/card.js +1 -1
  27. package/dist/components/_private/node-controls/card.js.map +1 -1
  28. package/dist/components/_private/node-controls/remove-node.js.map +1 -1
  29. package/dist/components/_private/node-controls/wrapping-utils.js +1 -1
  30. package/dist/components/_private/node-controls/wrapping-utils.js.map +1 -1
  31. package/dist/components/_private/rdfa-visualiser/rdfa-explorer.js +1 -1
  32. package/dist/components/_private/rdfa-visualiser/rdfa-explorer.js.map +1 -1
  33. package/dist/components/_private/rdfa-visualiser/resource-info.js +1 -1
  34. package/dist/components/_private/rdfa-visualiser/resource-info.js.map +1 -1
  35. package/dist/components/_private/rdfa-visualiser/visualiser-card.js +2 -2
  36. package/dist/components/_private/rdfa-visualiser/visualiser-card.js.map +1 -1
  37. package/dist/components/_private/relationship-editor/card.js +1 -1
  38. package/dist/components/_private/relationship-editor/card.js.map +1 -1
  39. package/dist/components/_private/relationship-editor/content-predicate-form.js.map +1 -1
  40. package/dist/components/_private/relationship-editor/create-button.js.map +1 -1
  41. package/dist/components/_private/relationship-editor/modals/classic.js.map +1 -1
  42. package/dist/components/_private/relationship-editor/modals/dev-mode.js +1 -1
  43. package/dist/components/_private/relationship-editor/modals/dev-mode.js.map +1 -1
  44. package/dist/components/collapsible.js.map +1 -1
  45. package/dist/components/debug-tools.js.map +1 -1
  46. package/dist/components/editor.js +3 -3
  47. package/dist/components/editor.js.map +1 -1
  48. package/dist/components/ember-node/embedded-editor.js +2 -2
  49. package/dist/components/ember-node/embedded-editor.js.map +1 -1
  50. package/dist/components/ember-node/inline-rdfa.js.map +1 -1
  51. package/dist/components/plugins/alignment/alignment-menu.js +2 -2
  52. package/dist/components/plugins/alignment/alignment-menu.js.map +1 -1
  53. package/dist/components/plugins/heading/heading-menu.js +2 -2
  54. package/dist/components/plugins/heading/heading-menu.js.map +1 -1
  55. package/dist/components/plugins/html-editor/menu.js.map +1 -1
  56. package/dist/components/plugins/html-editor/modal.js.map +1 -1
  57. package/dist/components/plugins/image/insert-menu.js.map +1 -1
  58. package/dist/components/plugins/link/link-editor.js +1 -1
  59. package/dist/components/plugins/list/ordered.js +3 -3
  60. package/dist/components/plugins/list/ordered.js.map +1 -1
  61. package/dist/components/plugins/list/unordered.js +1 -1
  62. package/dist/components/plugins/table/color.js.map +1 -1
  63. package/dist/components/plugins/table/table-menu.js.map +1 -1
  64. package/dist/components/plugins/table/table-tooltip.js.map +1 -1
  65. package/dist/components/plugins/table/vertical-align.js +2 -2
  66. package/dist/components/plugins/table/vertical-align.js.map +1 -1
  67. package/dist/components/plugins/text-style/color.js.map +1 -1
  68. package/dist/components/plugins/text-style/highlight.js.map +1 -1
  69. package/dist/components/toolbar/dropdown.js.map +1 -1
  70. package/dist/components/toolbar/mark.js +1 -1
  71. package/dist/components/utils/au-pill-dropdown.js.map +1 -1
  72. package/dist/core/keymap.js +1 -1
  73. package/dist/core/rdfa-types.js +1 -1
  74. package/dist/core/say-controller.js +1 -1
  75. package/dist/core/say-controller.js.map +1 -1
  76. package/dist/core/say-data-factory/data-factory.js.map +1 -1
  77. package/dist/core/say-data-factory/named-node.js.map +1 -1
  78. package/dist/core/say-editor.js.map +1 -1
  79. package/dist/core/say-view.js.map +1 -1
  80. package/dist/{main-CBbqRlCI.js → main-dUbkrxFL.js} +133 -358
  81. package/dist/main-dUbkrxFL.js.map +1 -0
  82. package/dist/nodes/invisible-rdfa.js +1 -1
  83. package/dist/plugins/list/commands/lift-out-of-nested-lists.js +1 -1
  84. package/dist/plugins/list/nodes/on-changed.js +1 -1
  85. package/dist/plugins/list/nodes/on-changed.js.map +1 -1
  86. package/dist/plugins/rdfa-info/index.js +1 -1
  87. package/dist/plugins/rdfa-info/types.js +1 -1
  88. package/dist/plugins/remove-properties-of-deleted-nodes/index.js +1 -1
  89. package/dist/utils/_private/datastore/graphy-dataset.js +1 -1
  90. package/dist/utils/_private/datastore/term-mapping.js.map +1 -1
  91. package/dist/utils/_private/rdfa-parser/rdfa-parser.js.map +1 -1
  92. package/dist/utils/transaction-utils.js.map +1 -1
  93. package/package.json +42 -42
  94. package/dist/main-CBbqRlCI.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"classic.js","sources":["../../../../../src/components/_private/relationship-editor/modals/classic.gts"],"sourcesContent":["import AuFormRow from '@appuniversum/ember-appuniversum/components/au-form-row';\nimport AuLabel from '@appuniversum/ember-appuniversum/components/au-label';\nimport AuModal, {\n type AuModalSignature,\n} from '@appuniversum/ember-appuniversum/components/au-modal';\nimport Component from '@glimmer/component';\nimport WithUniqueId from '#root/components/_private/utils/with-unique-id.ts';\nimport PowerSelect, {\n type Select,\n} from 'ember-power-select/components/power-select';\nimport type { SayTerm } from '#root/core/say-data-factory/term.ts';\nimport { tracked, TrackedObject } from 'tracked-built-ins';\nimport AuIcon from '@appuniversum/ember-appuniversum/components/au-icon';\nimport { CommentIcon } from '@appuniversum/ember-appuniversum/components/icons/comment';\nimport { QuestionCircleIcon } from '@appuniversum/ember-appuniversum/components/icons/question-circle';\nimport { not, or } from 'ember-truth-helpers';\nimport AuBadge from '@appuniversum/ember-appuniversum/components/au-badge';\nimport AuButtonGroup from '@appuniversum/ember-appuniversum/components/au-button-group';\nimport AuButton from '@appuniversum/ember-appuniversum/components/au-button';\nimport { on } from '@ember/modifier';\nimport { HeadlessForm } from 'ember-headless-form';\nimport { fn } from '@ember/helper';\nimport * as yup from 'yup';\nimport { validateYup } from 'ember-headless-form-yup';\nimport AuAlert from '@appuniversum/ember-appuniversum/components/au-alert';\nimport { get } from '@ember/helper';\nimport t from 'ember-intl/helpers/t';\nimport { unwrap } from '#root/utils/_private/option.ts';\nimport type {\n ObjectOption,\n OptionGeneratorConfig,\n PredicateOption,\n SubjectOption,\n SubmissionBody,\n} from '../types.ts';\nimport { sayDataFactory } from '#root/core/say-data-factory/index.ts';\nimport { modifier } from 'ember-modifier';\n\ntype RelationshipEditorModalSig = {\n Element: AuModalSignature['Element'];\n Args: {\n source: SayTerm;\n onSubmit: (body: SubmissionBody) => unknown;\n onCancel: () => unknown;\n optionGeneratorConfig?: OptionGeneratorConfig;\n };\n};\n\ntype FormData = Partial<SubmissionBody>;\n\nconst formSchema = yup.object({\n predicate: yup\n .object()\n .required(\n 'ember-rdfa-editor.linking-ui-poc.modal.form.fields.predicate.validation.required',\n ),\n target: yup\n .object()\n .required(\n 'ember-rdfa-editor.linking-ui-poc.modal.form.fields.target.validation.required',\n ),\n});\n\nexport default class RelationshipEditorClassicModal extends Component<RelationshipEditorModalSig> {\n data: FormData = new TrackedObject({});\n\n @tracked initiallyFocusedElement?: HTMLElement;\n\n initialFocus = modifier((element: HTMLElement) => {\n this.initiallyFocusedElement = element;\n });\n\n resetForm?: () => void;\n assignResetForm = (resetFn: () => void) => {\n this.resetForm = resetFn;\n };\n\n onSubmit = (data: SubmissionBody) => {\n this.args.onSubmit(data);\n };\n\n onCancel = () => {\n this.resetForm?.();\n this.args.onCancel();\n };\n\n setPredicate = (\n validationFn: () => void,\n predicateOption?: PredicateOption,\n ) => {\n // @ts-expect-error fix PredicateOption types\n this.data.predicate = predicateOption;\n this.data.target = undefined;\n validationFn();\n };\n\n setTarget = (\n validationFn: () => void,\n targetOption?: ObjectOption | SubjectOption,\n ) => {\n this.data.target = targetOption;\n validationFn();\n };\n\n searchPredicates = async (searchString: string) => {\n const options = await this.args.optionGeneratorConfig?.predicates?.({\n searchString,\n selectedSource: this.args.source,\n });\n return options ?? [];\n };\n\n searchTargets = async (searchString: string) => {\n const generatorFunction =\n this.data.predicate?.direction === 'property'\n ? this.args.optionGeneratorConfig?.objects\n : this.args.optionGeneratorConfig?.subjects;\n const options = await generatorFunction?.({\n searchString,\n selectedPredicate: this.data.predicate?.term,\n selectedSource: this.args.source,\n });\n return options ?? [];\n };\n\n onTargetSelectKeydown = (select: Select, event: KeyboardEvent) => {\n if (\n event.key === 'Enter' &&\n select.isOpen &&\n !select.highlighted &&\n !!select.searchText\n ) {\n const { searchText } = select;\n if (\n this.data.predicate?.direction === 'property' &&\n this.data.predicate.allowFreeTextTarget\n ) {\n const term = sayDataFactory.literal(searchText);\n select.actions.choose({ term });\n }\n return false;\n }\n };\n\n <template>\n <AuModal\n @modalOpen={{true}}\n @closeModal={{@onCancel}}\n {{! @glint-expect-error appuniversum types should be adapted to accept an html element here }}\n @initialFocus={{this.initiallyFocusedElement}}\n >\n <:title>{{t \"ember-rdfa-editor.linking-ui-poc.modal.title\"}}</:title>\n <:body>\n <WithUniqueId as |formId|>\n <HeadlessForm\n id={{formId}}\n @data={{this.data}}\n @dataMode=\"mutable\"\n @onSubmit={{this.onSubmit}}\n @validate={{validateYup formSchema}}\n class=\"au-c-form\"\n as |form|\n >\n {{this.assignResetForm form.reset}}\n <form.Field @name=\"predicate\" as |field|>\n <AuFormRow>\n <AuLabel\n for={{field.id}}\n @required={{true}}\n @requiredLabel={{t \"ember-rdfa-editor.utils.required\"}}\n >\n {{t\n \"ember-rdfa-editor.linking-ui-poc.modal.form.fields.predicate.label\"\n }}\n <AuBadge\n @icon={{QuestionCircleIcon}}\n @size=\"small\"\n class=\"au-u-margin-left-tiny\"\n />\n </AuLabel>\n <PowerSelect\n id={{field.id}}\n {{this.initialFocus}}\n @selected={{field.value}}\n @onChange={{fn this.setPredicate field.triggerValidation}}\n @allowClear={{true}}\n @options={{this.searchPredicates \"\"}}\n @search={{this.searchPredicates}}\n @searchEnabled={{true}}\n class=\"au-u-1-1\"\n as |option|\n >\n <div\n class=\"au-u-flex au-u-flex--spaced-tiny au-u-flex--vertical-center\"\n >\n <AuIcon @icon={{CommentIcon}} />\n <p><strong>{{or\n option.label\n option.term.value\n }}</strong></p>\n </div>\n {{#if option.description}}\n <p>{{option.description}}</p>\n {{/if}}\n </PowerSelect>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert\n class=\"au-u-margin-none\"\n @skin=\"warning\"\n @size=\"small\"\n @icon=\"alert-triangle\"\n >\n {{#let (get errors 0) as |error|}}\n {{t (unwrap error.message)}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n </form.Field>\n <form.Field @name=\"target\" as |field|>\n <AuFormRow>\n <AuLabel\n for={{field.id}}\n @required={{true}}\n @requiredLabel={{t \"ember-rdfa-editor.utils.required\"}}\n >\n {{t\n \"ember-rdfa-editor.linking-ui-poc.modal.form.fields.target.label\"\n }}\n <AuBadge\n @icon={{QuestionCircleIcon}}\n @size=\"small\"\n class=\"au-u-margin-left-tiny\"\n />\n </AuLabel>\n <PowerSelect\n id={{field.id}}\n @selected={{field.value}}\n @onChange={{fn this.setTarget field.triggerValidation}}\n @allowClear={{true}}\n @disabled={{not this.data.predicate}}\n @options={{this.searchTargets \"\"}}\n @search={{this.searchTargets}}\n @onKeydown={{this.onTargetSelectKeydown}}\n @searchEnabled={{true}}\n class=\"au-u-1-1\"\n as |option|\n >\n <div\n class=\"au-u-flex au-u-flex--spaced-tiny au-u-flex--vertical-center\"\n >\n <AuIcon @icon={{CommentIcon}} />\n <p><strong>{{or\n option.label\n option.term.value\n }}</strong></p>\n </div>\n {{#if option.description}}\n <p>{{option.description}}</p>\n {{/if}}\n </PowerSelect>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert\n class=\"au-u-margin-none\"\n @skin=\"warning\"\n @size=\"small\"\n @icon=\"alert-triangle\"\n >\n {{#let (get errors 0) as |error|}}\n {{t (unwrap error.message)}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n </form.Field>\n <AuButtonGroup>\n <AuButton form={{formId}} type=\"submit\">{{t\n \"ember-rdfa-editor.linking-ui-poc.modal.form.submit.label\"\n }}</AuButton>\n <AuButton @skin=\"secondary\" {{on \"click\" this.onCancel}}>{{t\n \"ember-rdfa-editor.linking-ui-poc.modal.form.cancel.label\"\n }}</AuButton>\n </AuButtonGroup>\n </HeadlessForm>\n </WithUniqueId>\n </:body>\n </AuModal>\n </template>\n}\n"],"names":["formSchema","yup","object","predicate","required","target","RelationshipEditorClassicModal","Component","data","TrackedObject","g","prototype","tracked","i","void 0","initialFocus","modifier","element","initiallyFocusedElement","resetForm","assignResetForm","resetFn","onSubmit","args","onCancel","setPredicate","validationFn","predicateOption","undefined","setTarget","targetOption","searchPredicates","searchString","options","optionGeneratorConfig","predicates","selectedSource","source","searchTargets","generatorFunction","direction","objects","subjects","selectedPredicate","term","onTargetSelectKeydown","select","event","key","isOpen","highlighted","searchText","allowFreeTextTarget","sayDataFactory","literal","actions","choose","setComponentTemplate","precompileTemplate","strictMode","scope","AuModal","t","WithUniqueId","HeadlessForm","validateYup","AuFormRow","AuLabel","AuBadge","QuestionCircleIcon","PowerSelect","fn","AuIcon","CommentIcon","or","AuAlert","get","unwrap","not","AuButtonGroup","AuButton","on"],"mappings":"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"}
1
+ {"version":3,"file":"classic.js","sources":["../../../../../src/components/_private/relationship-editor/modals/classic.gts"],"sourcesContent":["import AuFormRow from '@appuniversum/ember-appuniversum/components/au-form-row';\nimport AuLabel from '@appuniversum/ember-appuniversum/components/au-label';\nimport AuModal, {\n type AuModalSignature,\n} from '@appuniversum/ember-appuniversum/components/au-modal';\nimport Component from '@glimmer/component';\nimport WithUniqueId from '#root/components/_private/utils/with-unique-id.ts';\nimport PowerSelect, {\n type Select,\n} from 'ember-power-select/components/power-select';\nimport type { SayTerm } from '#root/core/say-data-factory/term.ts';\nimport { tracked, TrackedObject } from 'tracked-built-ins';\nimport AuIcon from '@appuniversum/ember-appuniversum/components/au-icon';\nimport { CommentIcon } from '@appuniversum/ember-appuniversum/components/icons/comment';\nimport { QuestionCircleIcon } from '@appuniversum/ember-appuniversum/components/icons/question-circle';\nimport { not, or } from 'ember-truth-helpers';\nimport AuBadge from '@appuniversum/ember-appuniversum/components/au-badge';\nimport AuButtonGroup from '@appuniversum/ember-appuniversum/components/au-button-group';\nimport AuButton from '@appuniversum/ember-appuniversum/components/au-button';\nimport { on } from '@ember/modifier';\nimport { HeadlessForm } from 'ember-headless-form';\nimport { fn } from '@ember/helper';\nimport * as yup from 'yup';\nimport { validateYup } from 'ember-headless-form-yup';\nimport AuAlert from '@appuniversum/ember-appuniversum/components/au-alert';\nimport { get } from '@ember/helper';\nimport t from 'ember-intl/helpers/t';\nimport { unwrap } from '#root/utils/_private/option.ts';\nimport type {\n ObjectOption,\n OptionGeneratorConfig,\n PredicateOption,\n SubjectOption,\n SubmissionBody,\n} from '../types.ts';\nimport { sayDataFactory } from '#root/core/say-data-factory/index.ts';\nimport { modifier } from 'ember-modifier';\n\ntype RelationshipEditorModalSig = {\n Element: AuModalSignature['Element'];\n Args: {\n source: SayTerm;\n onSubmit: (body: SubmissionBody) => unknown;\n onCancel: () => unknown;\n optionGeneratorConfig?: OptionGeneratorConfig;\n };\n};\n\ntype FormData = Partial<SubmissionBody>;\n\nconst formSchema = yup.object({\n predicate: yup\n .object()\n .required(\n 'ember-rdfa-editor.linking-ui-poc.modal.form.fields.predicate.validation.required',\n ),\n target: yup\n .object()\n .required(\n 'ember-rdfa-editor.linking-ui-poc.modal.form.fields.target.validation.required',\n ),\n});\n\nexport default class RelationshipEditorClassicModal extends Component<RelationshipEditorModalSig> {\n data: FormData = new TrackedObject({});\n\n @tracked initiallyFocusedElement?: HTMLElement;\n\n initialFocus = modifier((element: HTMLElement) => {\n this.initiallyFocusedElement = element;\n });\n\n resetForm?: () => void;\n assignResetForm = (resetFn: () => void) => {\n this.resetForm = resetFn;\n };\n\n onSubmit = (data: SubmissionBody) => {\n this.args.onSubmit(data);\n };\n\n onCancel = () => {\n this.resetForm?.();\n this.args.onCancel();\n };\n\n setPredicate = (\n validationFn: () => void,\n predicateOption?: PredicateOption,\n ) => {\n // @ts-expect-error fix PredicateOption types\n this.data.predicate = predicateOption;\n this.data.target = undefined;\n validationFn();\n };\n\n setTarget = (\n validationFn: () => void,\n targetOption?: ObjectOption | SubjectOption,\n ) => {\n this.data.target = targetOption;\n validationFn();\n };\n\n searchPredicates = async (searchString: string) => {\n const options = await this.args.optionGeneratorConfig?.predicates?.({\n searchString,\n selectedSource: this.args.source,\n });\n return options ?? [];\n };\n\n searchTargets = async (searchString: string) => {\n const generatorFunction =\n this.data.predicate?.direction === 'property'\n ? this.args.optionGeneratorConfig?.objects\n : this.args.optionGeneratorConfig?.subjects;\n const options = await generatorFunction?.({\n searchString,\n selectedPredicate: this.data.predicate?.term,\n selectedSource: this.args.source,\n });\n return options ?? [];\n };\n\n onTargetSelectKeydown = (select: Select, event: KeyboardEvent) => {\n if (\n event.key === 'Enter' &&\n select.isOpen &&\n !select.highlighted &&\n !!select.searchText\n ) {\n const { searchText } = select;\n if (\n this.data.predicate?.direction === 'property' &&\n this.data.predicate.allowFreeTextTarget\n ) {\n const term = sayDataFactory.literal(searchText);\n select.actions.choose({ term });\n }\n return false;\n }\n };\n\n <template>\n <AuModal\n @modalOpen={{true}}\n @closeModal={{@onCancel}}\n {{! @glint-expect-error appuniversum types should be adapted to accept an html element here }}\n @initialFocus={{this.initiallyFocusedElement}}\n >\n <:title>{{t \"ember-rdfa-editor.linking-ui-poc.modal.title\"}}</:title>\n <:body>\n <WithUniqueId as |formId|>\n <HeadlessForm\n id={{formId}}\n @data={{this.data}}\n @dataMode=\"mutable\"\n @onSubmit={{this.onSubmit}}\n @validate={{validateYup formSchema}}\n class=\"au-c-form\"\n as |form|\n >\n {{this.assignResetForm form.reset}}\n <form.Field @name=\"predicate\" as |field|>\n <AuFormRow>\n <AuLabel\n for={{field.id}}\n @required={{true}}\n @requiredLabel={{t \"ember-rdfa-editor.utils.required\"}}\n >\n {{t\n \"ember-rdfa-editor.linking-ui-poc.modal.form.fields.predicate.label\"\n }}\n <AuBadge\n @icon={{QuestionCircleIcon}}\n @size=\"small\"\n class=\"au-u-margin-left-tiny\"\n />\n </AuLabel>\n <PowerSelect\n id={{field.id}}\n {{this.initialFocus}}\n @selected={{field.value}}\n @onChange={{fn this.setPredicate field.triggerValidation}}\n @allowClear={{true}}\n @options={{this.searchPredicates \"\"}}\n @search={{this.searchPredicates}}\n @searchEnabled={{true}}\n class=\"au-u-1-1\"\n as |option|\n >\n <div\n class=\"au-u-flex au-u-flex--spaced-tiny au-u-flex--vertical-center\"\n >\n <AuIcon @icon={{CommentIcon}} />\n <p><strong>{{or\n option.label\n option.term.value\n }}</strong></p>\n </div>\n {{#if option.description}}\n <p>{{option.description}}</p>\n {{/if}}\n </PowerSelect>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert\n class=\"au-u-margin-none\"\n @skin=\"warning\"\n @size=\"small\"\n @icon=\"alert-triangle\"\n >\n {{#let (get errors 0) as |error|}}\n {{t (unwrap error.message)}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n </form.Field>\n <form.Field @name=\"target\" as |field|>\n <AuFormRow>\n <AuLabel\n for={{field.id}}\n @required={{true}}\n @requiredLabel={{t \"ember-rdfa-editor.utils.required\"}}\n >\n {{t\n \"ember-rdfa-editor.linking-ui-poc.modal.form.fields.target.label\"\n }}\n <AuBadge\n @icon={{QuestionCircleIcon}}\n @size=\"small\"\n class=\"au-u-margin-left-tiny\"\n />\n </AuLabel>\n <PowerSelect\n id={{field.id}}\n @selected={{field.value}}\n @onChange={{fn this.setTarget field.triggerValidation}}\n @allowClear={{true}}\n @disabled={{not this.data.predicate}}\n @options={{this.searchTargets \"\"}}\n @search={{this.searchTargets}}\n @onKeydown={{this.onTargetSelectKeydown}}\n @searchEnabled={{true}}\n class=\"au-u-1-1\"\n as |option|\n >\n <div\n class=\"au-u-flex au-u-flex--spaced-tiny au-u-flex--vertical-center\"\n >\n <AuIcon @icon={{CommentIcon}} />\n <p><strong>{{or\n option.label\n option.term.value\n }}</strong></p>\n </div>\n {{#if option.description}}\n <p>{{option.description}}</p>\n {{/if}}\n </PowerSelect>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert\n class=\"au-u-margin-none\"\n @skin=\"warning\"\n @size=\"small\"\n @icon=\"alert-triangle\"\n >\n {{#let (get errors 0) as |error|}}\n {{t (unwrap error.message)}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n </form.Field>\n <AuButtonGroup>\n <AuButton form={{formId}} type=\"submit\">{{t\n \"ember-rdfa-editor.linking-ui-poc.modal.form.submit.label\"\n }}</AuButton>\n <AuButton @skin=\"secondary\" {{on \"click\" this.onCancel}}>{{t\n \"ember-rdfa-editor.linking-ui-poc.modal.form.cancel.label\"\n }}</AuButton>\n </AuButtonGroup>\n </HeadlessForm>\n </WithUniqueId>\n </:body>\n </AuModal>\n </template>\n}\n"],"names":["formSchema","yup","object","predicate","required","target","RelationshipEditorClassicModal","Component","data","TrackedObject","g","prototype","tracked","i","initialFocus","modifier","element","initiallyFocusedElement","resetForm","assignResetForm","resetFn","onSubmit","args","onCancel","setPredicate","validationFn","predicateOption","undefined","setTarget","targetOption","searchPredicates","searchString","options","optionGeneratorConfig","predicates","selectedSource","source","searchTargets","generatorFunction","direction","objects","subjects","selectedPredicate","term","onTargetSelectKeydown","select","event","key","isOpen","highlighted","searchText","allowFreeTextTarget","sayDataFactory","literal","actions","choose","setComponentTemplate","precompileTemplate","strictMode","scope","AuModal","t","WithUniqueId","HeadlessForm","validateYup","AuFormRow","AuLabel","AuBadge","QuestionCircleIcon","PowerSelect","fn","AuIcon","CommentIcon","or","AuAlert","get","unwrap","not","AuButtonGroup","AuButton","on"],"mappings":"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"}
@@ -236,7 +236,7 @@ class RelationshipEditorDevModeModal extends Component {
236
236
  return this.args.title ?? 'Add relationship';
237
237
  }
238
238
  static {
239
- setComponentTemplate(precompileTemplate("\n <AuModal @modalOpen={{true}} @closeModal={{@onCancel}} {{!-- @glint-expect-error appuniversum types should be adapted to accept an html element here --}} @initialFocus={{this.initiallyFocusedElement}}>\n <:title>{{this.title}}</:title>\n <:body>\n <WithUniqueId as |formId|>\n <HeadlessForm id={{formId}} @data={{this.data}} @dataMode=\"mutable\" @onSubmit={{this.onSubmit}} @validate={{validateYup formSchema}} class=\"au-o-flow--small\" as |form|>\n {{this.assignResetForm form.reset}}\n <AuFormRow>\n <AuLabel>\n Source\n </AuLabel>\n <p>{{@source.value}}</p>\n </AuFormRow>\n <form.Field @name=\"direction\" as |field|>\n <AuFormRow>\n <AuLabel for={{field.id}}>\n Direction\n </AuLabel>\n <PowerSelect id={{field.id}} @selected={{field.value}} @disabled={{this.directionFieldDisabled}} @onChange={{fn this.setDirection field.triggerValidation}} @options={{this.supportedDirections}} class=\"au-u-1-1\" as |option|>\n {{option}}\n </PowerSelect>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert class=\"au-u-margin-none\" @skin=\"warning\" @size=\"small\" @icon=\"alert-triangle\">\n {{#let (get errors 0) as |error|}}\n {{error.message}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n </form.Field>\n <form.Field @name=\"predicate\" as |field|>\n <AuFormRow>\n <AuLabel for={{field.id}}>\n Predicate\n </AuLabel>\n <PowerSelectWithCreate id={{field.id}} {{this.initialFocus}} @selected={{field.value}} @onKeydown={{this.onPowerSelectKeyDown}} @onChange={{fn this.setPredicate field.triggerValidation}} @onCreate={{fn this.setPredicate field.triggerValidation}} @showCreateWhen={{this.isValidPredicate}} @buildSuggestion={{this.buildPowerSelectWithCreateSuggestion}} @allowClear={{true}} @options={{this.searchPredicates \"\"}} @search={{this.searchPredicates}} @searchEnabled={{true}} class=\"au-u-1-1\" as |option|>\n <div class=\"au-u-flex au-u-flex--spaced-tiny au-u-flex--vertical-center\">\n <p><strong>{{this.optionRepr option}}</strong></p>\n </div>\n {{#if option.description}}\n <p>{{option.description}}</p>\n {{/if}}\n </PowerSelectWithCreate>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert class=\"au-u-margin-none\" @skin=\"warning\" @size=\"small\" @icon=\"alert-triangle\">\n {{#let (get errors 0) as |error|}}\n {{error.message}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n </form.Field>\n <form.Field @name=\"target\" as |field|>\n <AuFormRow>\n <AuLabel for={{field.id}}>\n {{this.targetLabel}}\n </AuLabel>\n <PowerSelectWithCreate id={{field.id}} @selected={{field.value}} @onKeydown={{this.onPowerSelectKeyDown}} @onChange={{fn this.setTarget field.triggerValidation}} @onCreate={{fn this.setTarget field.triggerValidation}} @showCreateWhen={{this.isValidTarget}} @buildSuggestion={{this.buildPowerSelectWithCreateSuggestion}} @allowClear={{true}} @disabled={{not this.data.predicate}} @options={{this.searchTargets \"\"}} @search={{this.searchTargets}} @searchEnabled={{true}} class=\"au-u-1-1\" as |option|>\n <div class=\"au-u-flex au-u-flex--spaced-tiny au-u-flex--vertical-center\">\n <p><strong>{{this.optionRepr option}}</strong></p>\n </div>\n {{#if option.description}}\n <p>{{option.description}}</p>\n {{/if}}\n </PowerSelectWithCreate>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert class=\"au-u-margin-none\" @skin=\"warning\" @size=\"small\" @icon=\"alert-triangle\">\n {{#let (get errors 0) as |error|}}\n {{error.message}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n {{#if this.showTargetTermTypeSelector}}\n <AuFormRow>\n <WithUniqueId as |id|>\n <AuLabel for={{id}}>Term type</AuLabel>\n <PowerSelect id={{id}} @selected={{this.data.target.term.termType}} @onChange={{this.setTermType}} {{!-- @glint-expect-error --}} @options={{OBJECT_TERM_TYPES}} class=\"au-u-1-1\" as |option|>\n {{option}}\n </PowerSelect>\n </WithUniqueId>\n </AuFormRow>\n {{/if}}\n {{#if this.showDatatypeAndLanguageOptions}}\n <div class=\"au-u-flex au-u-flex--row au-u-flex--spaced-tiny\">\n <WithUniqueId as |id|>\n <div class=\"au-u-1-5 au-u-flex au-u-flex--column\">\n <AuLabel for={{id}}>Language</AuLabel>\n <AuInput id={{id}} {{on \"input\" this.setLanguage}} {{!-- @glint-expect-error --}} value={{this.data.target.term.language}} />\n </div>\n </WithUniqueId>\n <WithUniqueId as |id|>\n <div class=\"au-u-4-5 au-u-flex au-u-flex--column\">\n <AuLabel for={{id}}>Datatype</AuLabel>\n <AuInput id={{id}} {{!-- @glint-expect-error --}} @disabled={{truthy this.data.target.term.language}} {{on \"input\" this.setDatatype}} {{!-- @glint-expect-error --}} value={{this.data.target.term.datatype.value}} />\n </div>\n </WithUniqueId>\n\n </div>\n <AuFormRow />\n {{/if}}\n </form.Field>\n\n <AuButtonGroup class=\"au-u-margin-top\">\n <AuButton form={{formId}} type=\"submit\">Insert</AuButton>\n <AuButton @skin=\"secondary\" {{on \"click\" this.onCancel}}>Cancel</AuButton>\n </AuButtonGroup>\n </HeadlessForm>\n </WithUniqueId>\n </:body>\n </AuModal>\n ", {
239
+ setComponentTemplate(precompileTemplate("\n <AuModal @modalOpen={{true}} @closeModal={{@onCancel}} {{!-- @glint-expect-error appuniversum types should be adapted to accept an html element here --}} @initialFocus={{this.initiallyFocusedElement}}>\n <:title>{{this.title}}</:title>\n <:body>\n <WithUniqueId as |formId|>\n <HeadlessForm id={{formId}} @data={{this.data}} @dataMode=\"mutable\" @onSubmit={{this.onSubmit}} @validate={{validateYup formSchema}} class=\"au-o-flow--small\" as |form|>\n {{this.assignResetForm form.reset}}\n <AuFormRow>\n <AuLabel>\n Source\n </AuLabel>\n <p>{{@source.value}}</p>\n </AuFormRow>\n <form.Field @name=\"direction\" as |field|>\n <AuFormRow>\n <AuLabel for={{field.id}}>\n Direction\n </AuLabel>\n <PowerSelect id={{field.id}} @selected={{field.value}} @disabled={{this.directionFieldDisabled}} @onChange={{fn this.setDirection field.triggerValidation}} @options={{this.supportedDirections}} class=\"au-u-1-1\" as |option|>\n {{option}}\n </PowerSelect>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert class=\"au-u-margin-none\" @skin=\"warning\" @size=\"small\" @icon=\"alert-triangle\">\n {{#let (get errors 0) as |error|}}\n {{error.message}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n </form.Field>\n <form.Field @name=\"predicate\" as |field|>\n <AuFormRow>\n <AuLabel for={{field.id}}>\n Predicate\n </AuLabel>\n <PowerSelectWithCreate id={{field.id}} {{this.initialFocus}} @selected={{field.value}} @onKeydown={{this.onPowerSelectKeyDown}} @onChange={{fn this.setPredicate field.triggerValidation}} @onCreate={{fn this.setPredicate field.triggerValidation}} @showCreateWhen={{this.isValidPredicate}} @buildSuggestion={{this.buildPowerSelectWithCreateSuggestion}} @allowClear={{true}} @options={{this.searchPredicates \"\"}} @search={{this.searchPredicates}} @searchEnabled={{true}} class=\"au-u-1-1\" as |option|>\n <div class=\"au-u-flex au-u-flex--spaced-tiny au-u-flex--vertical-center\">\n <p><strong>{{this.optionRepr option}}</strong></p>\n </div>\n {{#if option.description}}\n <p>{{option.description}}</p>\n {{/if}}\n </PowerSelectWithCreate>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert class=\"au-u-margin-none\" @skin=\"warning\" @size=\"small\" @icon=\"alert-triangle\">\n {{#let (get errors 0) as |error|}}\n {{error.message}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n </form.Field>\n <form.Field @name=\"target\" as |field|>\n <AuFormRow>\n <AuLabel for={{field.id}}>\n {{this.targetLabel}}\n </AuLabel>\n <PowerSelectWithCreate id={{field.id}} @selected={{field.value}} @onKeydown={{this.onPowerSelectKeyDown}} @onChange={{fn this.setTarget field.triggerValidation}} @onCreate={{fn this.setTarget field.triggerValidation}} @showCreateWhen={{this.isValidTarget}} @buildSuggestion={{this.buildPowerSelectWithCreateSuggestion}} @allowClear={{true}} @disabled={{not this.data.predicate}} @options={{this.searchTargets \"\"}} @search={{this.searchTargets}} @searchEnabled={{true}} class=\"au-u-1-1\" as |option|>\n <div class=\"au-u-flex au-u-flex--spaced-tiny au-u-flex--vertical-center\">\n <p><strong>{{this.optionRepr option}}</strong></p>\n </div>\n {{#if option.description}}\n <p>{{option.description}}</p>\n {{/if}}\n </PowerSelectWithCreate>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert class=\"au-u-margin-none\" @skin=\"warning\" @size=\"small\" @icon=\"alert-triangle\">\n {{#let (get errors 0) as |error|}}\n {{error.message}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n {{#if this.showTargetTermTypeSelector}}\n <AuFormRow>\n <WithUniqueId as |id|>\n <AuLabel for={{id}}>Term type</AuLabel>\n <PowerSelect id={{id}} @selected={{this.data.target.term.termType}} @onChange={{this.setTermType}} @options={{OBJECT_TERM_TYPES}} class=\"au-u-1-1\" as |option|>\n {{option}}\n </PowerSelect>\n </WithUniqueId>\n </AuFormRow>\n {{/if}}\n {{#if this.showDatatypeAndLanguageOptions}}\n <div class=\"au-u-flex au-u-flex--row au-u-flex--spaced-tiny\">\n <WithUniqueId as |id|>\n <div class=\"au-u-1-5 au-u-flex au-u-flex--column\">\n <AuLabel for={{id}}>Language</AuLabel>\n <AuInput id={{id}} {{on \"input\" this.setLanguage}} {{!-- @glint-expect-error --}} value={{this.data.target.term.language}} />\n </div>\n </WithUniqueId>\n <WithUniqueId as |id|>\n <div class=\"au-u-4-5 au-u-flex au-u-flex--column\">\n <AuLabel for={{id}}>Datatype</AuLabel>\n <AuInput id={{id}} {{!-- @glint-expect-error --}} @disabled={{truthy this.data.target.term.language}} {{on \"input\" this.setDatatype}} {{!-- @glint-expect-error --}} value={{this.data.target.term.datatype.value}} />\n </div>\n </WithUniqueId>\n\n </div>\n <AuFormRow />\n {{/if}}\n </form.Field>\n\n <AuButtonGroup class=\"au-u-margin-top\">\n <AuButton form={{formId}} type=\"submit\">Insert</AuButton>\n <AuButton @skin=\"secondary\" {{on \"click\" this.onCancel}}>Cancel</AuButton>\n </AuButtonGroup>\n </HeadlessForm>\n </WithUniqueId>\n </:body>\n </AuModal>\n ", {
240
240
  strictMode: true,
241
241
  scope: () => ({
242
242
  AuModal,
@@ -1 +1 @@
1
- {"version":3,"file":"dev-mode.js","sources":["../../../../../src/components/_private/relationship-editor/modals/dev-mode.gts"],"sourcesContent":["import AuFormRow from '@appuniversum/ember-appuniversum/components/au-form-row';\nimport AuLabel from '@appuniversum/ember-appuniversum/components/au-label';\nimport AuModal, {\n type AuModalSignature,\n} from '@appuniversum/ember-appuniversum/components/au-modal';\nimport Component from '@glimmer/component';\nimport WithUniqueId from '#root/components/_private/utils/with-unique-id.ts';\nimport PowerSelect, {\n type Select,\n} from 'ember-power-select/components/power-select';\nimport PowerSelectWithCreate from 'ember-power-select-with-create/components/power-select-with-create';\nimport { tracked, TrackedObject } from 'tracked-built-ins';\nimport { not } from 'ember-truth-helpers';\nimport AuButtonGroup from '@appuniversum/ember-appuniversum/components/au-button-group';\nimport AuButton from '@appuniversum/ember-appuniversum/components/au-button';\nimport { on } from '@ember/modifier';\nimport { HeadlessForm } from 'ember-headless-form';\nimport { fn } from '@ember/helper';\nimport * as yup from 'yup';\nimport { validateYup } from 'ember-headless-form-yup';\nimport AuAlert from '@appuniversum/ember-appuniversum/components/au-alert';\nimport { get } from '@ember/helper';\nimport { sayDataFactory } from '#root/core/say-data-factory/data-factory.ts';\nimport type {\n ContentLiteralTerm,\n LiteralNodeTerm,\n ResourceNodeTerm,\n SayLiteral,\n SayTerm,\n} from '#root/core/say-data-factory/index.ts';\nimport AuInput from '@appuniversum/ember-appuniversum/components/au-input';\nimport type {\n Direction,\n ObjectOption,\n OptionGeneratorConfig,\n PredicateOption,\n SubjectOption,\n SubmissionBody,\n TermOption,\n} from '../types.ts';\nimport { LANG_STRING } from '#root/utils/_private/constants.ts';\nimport { isFullUri, isPrefixedUri } from '@lblod/marawa/rdfa-helpers';\nimport { modifier } from 'ember-modifier';\n\nfunction truthy(obj: unknown) {\n return !!obj;\n}\n\nconst OBJECT_TERM_TYPES = [\n 'NamedNode',\n 'LiteralNode',\n 'ResourceNode',\n 'Literal',\n] as const;\n\ntype RelationshipEditorDevModalSig = {\n Element: AuModalSignature['Element'];\n Args: {\n title?: string;\n source: LiteralNodeTerm | ResourceNodeTerm<string>;\n supportedDirections?:\n | ['property']\n | ['backlink']\n | ['property', 'backlink'];\n onSubmit: (body: SubmissionBody) => unknown;\n onCancel: () => unknown;\n optionGeneratorConfig?: OptionGeneratorConfig;\n initialData?: Partial<FormData>;\n };\n};\n\nexport type FormData = Partial<SubmissionBody> & {\n direction?: Direction;\n};\n\nconst formSchema = yup.object({\n direction: yup.string().oneOf(['property', 'backlink']),\n predicate: yup.object(),\n target: yup.object(),\n});\n\nconst onFormKeyDown = (formElement: HTMLFormElement, event: KeyboardEvent) => {\n if (event.key === 'Enter' && (event.ctrlKey || event.metaKey)) {\n formElement.requestSubmit();\n }\n return true;\n};\n\nexport default class RelationshipEditorDevModeModal extends Component<RelationshipEditorDevModalSig> {\n formElement?: HTMLFormElement;\n setupFormElement = modifier((element: HTMLFormElement) => {\n this.formElement = element;\n const keyDownHandler = (event: KeyboardEvent) =>\n onFormKeyDown(element, event);\n window.addEventListener('keydown', keyDownHandler);\n return () => window.removeEventListener('keydown', keyDownHandler);\n });\n\n @tracked initiallyFocusedElement?: HTMLElement;\n\n initialFocus = modifier((element: HTMLElement) => {\n this.initiallyFocusedElement = element;\n });\n\n get supportedDirections(): Direction[] {\n return this.args.supportedDirections ?? ['property', 'backlink'];\n }\n\n get directionFieldDisabled() {\n return this.sourceIsLiteral || this.supportedDirections.length === 1;\n }\n\n get initialData(): FormData {\n const defaultDirection = this.sourceIsLiteral ? 'backlink' : 'property';\n if (this.args.initialData) {\n return {\n direction:\n this.args.initialData.direction ??\n this.args.initialData.predicate?.direction ??\n defaultDirection,\n ...this.args.initialData,\n };\n } else {\n return {\n direction: defaultDirection,\n };\n }\n }\n data: FormData = new TrackedObject(this.initialData);\n\n resetForm?: () => void;\n assignResetForm = (resetFn: () => void) => {\n this.resetForm = resetFn;\n };\n\n onSubmit = (data: SubmissionBody) => {\n this.args.onSubmit(data);\n };\n\n onCancel = () => {\n this.resetForm?.();\n this.args.onCancel();\n };\n\n setDirection = (validationFn: () => void, value: Direction) => {\n this.data.direction = value;\n validationFn();\n this.data.predicate = undefined;\n this.data.target = undefined;\n };\n\n isValidPredicate = (term: string) => {\n if (!term) {\n return false;\n }\n const isUri = isFullUri(term) || isPrefixedUri(term);\n return isUri;\n };\n\n setPredicate = (\n validationFn: () => void,\n predicateOption?: PredicateOption | string,\n ) => {\n if (!this.data.direction) {\n return;\n }\n if (typeof predicateOption === 'string') {\n const isUri =\n isFullUri(predicateOption) || isPrefixedUri(predicateOption);\n if (isUri) {\n this.data.predicate = {\n direction: this.data.direction,\n term: sayDataFactory.namedNode(predicateOption),\n };\n }\n } else {\n // @ts-expect-error fix PredicateOption types\n this.data.predicate = predicateOption && {\n ...predicateOption,\n direction: this.data.direction,\n };\n }\n this.data.target = undefined;\n validationFn();\n };\n\n isValidTarget = (term: string) => {\n if (!term) {\n return false;\n }\n const isUri = isFullUri(term) || isPrefixedUri(term);\n return (\n this.data.direction === 'property' ||\n (this.data.direction === 'backlink' && isUri)\n );\n };\n\n setTarget = (\n validationFn: () => void,\n targetOption?: ObjectOption | SubjectOption | string,\n ) => {\n if (typeof targetOption === 'string') {\n const isUri = isFullUri(targetOption) || isPrefixedUri(targetOption);\n if (\n this.data.direction === 'property' ||\n (this.data.direction === 'backlink' && isUri)\n ) {\n const term = isUri\n ? sayDataFactory.namedNode(targetOption)\n : sayDataFactory.literal(targetOption);\n this.data.target = {\n term,\n };\n }\n } else {\n this.data.target = targetOption;\n }\n validationFn();\n };\n\n buildPowerSelectWithCreateSuggestion = (term: string) => term;\n\n onPowerSelectKeyDown = (_select: Select, event: KeyboardEvent) => {\n if (this.formElement) {\n onFormKeyDown(this.formElement, event);\n }\n return true;\n };\n\n get showTargetTermTypeSelector() {\n return this.data.direction === 'property' && this.data.target;\n }\n\n get showDatatypeAndLanguageOptions() {\n return (\n this.data.target &&\n (this.data.target.term.termType === 'Literal' ||\n this.data.target.term.termType === 'ContentLiteral')\n );\n }\n\n setTermType = (termType: (typeof OBJECT_TERM_TYPES)[number]) => {\n if (!this.data.target) {\n return;\n }\n const targetTerm = this.data.target.term;\n this.data.target = {\n ...this.data.target,\n term: sayDataFactory.fromTerm({\n ...targetTerm,\n termType,\n }) as ObjectOption['term'],\n };\n };\n\n setDatatype = (event: Event) => {\n const datatype = (event.target as HTMLInputElement).value;\n if (!this.data.target) {\n return;\n }\n const targetTerm = this.data.target.term;\n if (\n targetTerm.termType !== 'Literal' &&\n targetTerm.termType !== 'ContentLiteral'\n ) {\n return;\n }\n this.data.target = {\n ...this.data.target,\n term: sayDataFactory.fromTerm({\n ...targetTerm,\n datatype: sayDataFactory.namedNode(datatype),\n }) as ContentLiteralTerm | SayLiteral,\n };\n };\n\n setLanguage = (event: Event) => {\n const language = (event.target as HTMLInputElement).value;\n if (!this.data.target) {\n return;\n }\n const targetTerm = this.data.target.term;\n if (\n targetTerm.termType !== 'Literal' &&\n targetTerm.termType !== 'ContentLiteral'\n ) {\n return;\n }\n this.data.target = {\n ...this.data.target,\n term: sayDataFactory.fromTerm({\n ...targetTerm,\n language,\n datatype: sayDataFactory.namedNode(LANG_STRING),\n }) as ContentLiteralTerm | SayLiteral,\n };\n };\n\n searchPredicates = async (searchString: string) => {\n const options = await this.args.optionGeneratorConfig?.predicates?.({\n searchString,\n selectedSource: this.args.source,\n direction: this.data.direction,\n });\n return options ?? [];\n };\n\n searchTargets = async (searchString: string) => {\n const generatorFunction =\n this.data.predicate?.direction === 'property'\n ? this.args.optionGeneratorConfig?.objects\n : this.args.optionGeneratorConfig?.subjects;\n const options = await generatorFunction?.({\n searchString,\n selectedPredicate: this.data.predicate?.term,\n selectedSource: this.args.source,\n });\n return options ?? [];\n };\n\n optionRepr = (option: TermOption<SayTerm>) => {\n if (option.label) {\n return `${option.term.value} (${option.label})`;\n } else {\n return option.term.value;\n }\n };\n\n get targetLabel() {\n return this.data.direction === 'property' ? 'Object' : 'Subject';\n }\n\n get sourceIsLiteral() {\n return this.args.source.termType === 'LiteralNode';\n }\n\n get title() {\n return this.args.title ?? 'Add relationship';\n }\n\n <template>\n <AuModal\n @modalOpen={{true}}\n @closeModal={{@onCancel}}\n {{! @glint-expect-error appuniversum types should be adapted to accept an html element here }}\n @initialFocus={{this.initiallyFocusedElement}}\n >\n <:title>{{this.title}}</:title>\n <:body>\n <WithUniqueId as |formId|>\n <HeadlessForm\n id={{formId}}\n @data={{this.data}}\n @dataMode=\"mutable\"\n @onSubmit={{this.onSubmit}}\n @validate={{validateYup formSchema}}\n class=\"au-o-flow--small\"\n as |form|\n >\n {{this.assignResetForm form.reset}}\n <AuFormRow>\n <AuLabel>\n Source\n </AuLabel>\n <p>{{@source.value}}</p>\n </AuFormRow>\n <form.Field @name=\"direction\" as |field|>\n <AuFormRow>\n <AuLabel for={{field.id}}>\n Direction\n </AuLabel>\n <PowerSelect\n id={{field.id}}\n @selected={{field.value}}\n @disabled={{this.directionFieldDisabled}}\n @onChange={{fn this.setDirection field.triggerValidation}}\n @options={{this.supportedDirections}}\n class=\"au-u-1-1\"\n as |option|\n >\n {{option}}\n </PowerSelect>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert\n class=\"au-u-margin-none\"\n @skin=\"warning\"\n @size=\"small\"\n @icon=\"alert-triangle\"\n >\n {{#let (get errors 0) as |error|}}\n {{error.message}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n </form.Field>\n <form.Field @name=\"predicate\" as |field|>\n <AuFormRow>\n <AuLabel for={{field.id}}>\n Predicate\n </AuLabel>\n <PowerSelectWithCreate\n id={{field.id}}\n {{this.initialFocus}}\n @selected={{field.value}}\n @onKeydown={{this.onPowerSelectKeyDown}}\n @onChange={{fn this.setPredicate field.triggerValidation}}\n @onCreate={{fn this.setPredicate field.triggerValidation}}\n @showCreateWhen={{this.isValidPredicate}}\n @buildSuggestion={{this.buildPowerSelectWithCreateSuggestion}}\n @allowClear={{true}}\n @options={{this.searchPredicates \"\"}}\n @search={{this.searchPredicates}}\n @searchEnabled={{true}}\n class=\"au-u-1-1\"\n as |option|\n >\n <div\n class=\"au-u-flex au-u-flex--spaced-tiny au-u-flex--vertical-center\"\n >\n <p><strong>{{this.optionRepr option}}</strong></p>\n </div>\n {{#if option.description}}\n <p>{{option.description}}</p>\n {{/if}}\n </PowerSelectWithCreate>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert\n class=\"au-u-margin-none\"\n @skin=\"warning\"\n @size=\"small\"\n @icon=\"alert-triangle\"\n >\n {{#let (get errors 0) as |error|}}\n {{error.message}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n </form.Field>\n <form.Field @name=\"target\" as |field|>\n <AuFormRow>\n <AuLabel for={{field.id}}>\n {{this.targetLabel}}\n </AuLabel>\n <PowerSelectWithCreate\n id={{field.id}}\n @selected={{field.value}}\n @onKeydown={{this.onPowerSelectKeyDown}}\n @onChange={{fn this.setTarget field.triggerValidation}}\n @onCreate={{fn this.setTarget field.triggerValidation}}\n @showCreateWhen={{this.isValidTarget}}\n @buildSuggestion={{this.buildPowerSelectWithCreateSuggestion}}\n @allowClear={{true}}\n @disabled={{not this.data.predicate}}\n @options={{this.searchTargets \"\"}}\n @search={{this.searchTargets}}\n @searchEnabled={{true}}\n class=\"au-u-1-1\"\n as |option|\n >\n <div\n class=\"au-u-flex au-u-flex--spaced-tiny au-u-flex--vertical-center\"\n >\n <p><strong>{{this.optionRepr option}}</strong></p>\n </div>\n {{#if option.description}}\n <p>{{option.description}}</p>\n {{/if}}\n </PowerSelectWithCreate>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert\n class=\"au-u-margin-none\"\n @skin=\"warning\"\n @size=\"small\"\n @icon=\"alert-triangle\"\n >\n {{#let (get errors 0) as |error|}}\n {{error.message}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n {{#if this.showTargetTermTypeSelector}}\n <AuFormRow>\n <WithUniqueId as |id|>\n <AuLabel for={{id}}>Term type</AuLabel>\n <PowerSelect\n id={{id}}\n @selected={{this.data.target.term.termType}}\n @onChange={{this.setTermType}}\n {{! @glint-expect-error }}\n @options={{OBJECT_TERM_TYPES}}\n class=\"au-u-1-1\"\n as |option|\n >\n {{option}}\n </PowerSelect>\n </WithUniqueId>\n </AuFormRow>\n {{/if}}\n {{#if this.showDatatypeAndLanguageOptions}}\n <div class=\"au-u-flex au-u-flex--row au-u-flex--spaced-tiny\">\n <WithUniqueId as |id|>\n <div class=\"au-u-1-5 au-u-flex au-u-flex--column\">\n <AuLabel for={{id}}>Language</AuLabel>\n <AuInput\n id={{id}}\n {{on \"input\" this.setLanguage}}\n {{! @glint-expect-error }}\n value={{this.data.target.term.language}}\n />\n </div>\n </WithUniqueId>\n <WithUniqueId as |id|>\n <div class=\"au-u-4-5 au-u-flex au-u-flex--column\">\n <AuLabel for={{id}}>Datatype</AuLabel>\n <AuInput\n id={{id}}\n {{! @glint-expect-error }}\n @disabled={{truthy this.data.target.term.language}}\n {{on \"input\" this.setDatatype}}\n {{! @glint-expect-error }}\n value={{this.data.target.term.datatype.value}}\n />\n </div>\n </WithUniqueId>\n\n </div>\n <AuFormRow />\n {{/if}}\n </form.Field>\n\n <AuButtonGroup class=\"au-u-margin-top\">\n <AuButton form={{formId}} type=\"submit\">Insert</AuButton>\n <AuButton\n @skin=\"secondary\"\n {{on \"click\" this.onCancel}}\n >Cancel</AuButton>\n </AuButtonGroup>\n </HeadlessForm>\n </WithUniqueId>\n </:body>\n </AuModal>\n </template>\n}\n"],"names":["truthy","obj","OBJECT_TERM_TYPES","formSchema","yup","object","direction","string","oneOf","predicate","target","onFormKeyDown","formElement","event","key","ctrlKey","metaKey","requestSubmit","RelationshipEditorDevModeModal","Component","setupFormElement","modifier","element","keyDownHandler","window","addEventListener","removeEventListener","g","prototype","tracked","i","void 0","initialFocus","initiallyFocusedElement","supportedDirections","args","directionFieldDisabled","sourceIsLiteral","length","initialData","defaultDirection","data","TrackedObject","resetForm","assignResetForm","resetFn","onSubmit","onCancel","setDirection","validationFn","value","undefined","isValidPredicate","term","isUri","isFullUri","isPrefixedUri","setPredicate","predicateOption","sayDataFactory","namedNode","isValidTarget","setTarget","targetOption","literal","buildPowerSelectWithCreateSuggestion","onPowerSelectKeyDown","_select","showTargetTermTypeSelector","showDatatypeAndLanguageOptions","termType","setTermType","targetTerm","fromTerm","setDatatype","datatype","setLanguage","language","LANG_STRING","searchPredicates","searchString","options","optionGeneratorConfig","predicates","selectedSource","source","searchTargets","generatorFunction","objects","subjects","selectedPredicate","optionRepr","option","label","targetLabel","title","setComponentTemplate","precompileTemplate","strictMode","scope","AuModal","WithUniqueId","HeadlessForm","validateYup","AuFormRow","AuLabel","PowerSelect","fn","AuAlert","get","PowerSelectWithCreate","not","AuInput","on","AuButtonGroup","AuButton"],"mappings":"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"}
1
+ {"version":3,"file":"dev-mode.js","sources":["../../../../../src/components/_private/relationship-editor/modals/dev-mode.gts"],"sourcesContent":["import AuFormRow from '@appuniversum/ember-appuniversum/components/au-form-row';\nimport AuLabel from '@appuniversum/ember-appuniversum/components/au-label';\nimport AuModal, {\n type AuModalSignature,\n} from '@appuniversum/ember-appuniversum/components/au-modal';\nimport Component from '@glimmer/component';\nimport WithUniqueId from '#root/components/_private/utils/with-unique-id.ts';\nimport PowerSelect, {\n type Select,\n} from 'ember-power-select/components/power-select';\nimport PowerSelectWithCreate from 'ember-power-select-with-create/components/power-select-with-create';\nimport { tracked, TrackedObject } from 'tracked-built-ins';\nimport { not } from 'ember-truth-helpers';\nimport AuButtonGroup from '@appuniversum/ember-appuniversum/components/au-button-group';\nimport AuButton from '@appuniversum/ember-appuniversum/components/au-button';\nimport { on } from '@ember/modifier';\nimport { HeadlessForm } from 'ember-headless-form';\nimport { fn } from '@ember/helper';\nimport * as yup from 'yup';\nimport { validateYup } from 'ember-headless-form-yup';\nimport AuAlert from '@appuniversum/ember-appuniversum/components/au-alert';\nimport { get } from '@ember/helper';\nimport { sayDataFactory } from '#root/core/say-data-factory/data-factory.ts';\nimport type {\n ContentLiteralTerm,\n LiteralNodeTerm,\n ResourceNodeTerm,\n SayLiteral,\n SayTerm,\n} from '#root/core/say-data-factory/index.ts';\nimport AuInput from '@appuniversum/ember-appuniversum/components/au-input';\nimport type {\n Direction,\n ObjectOption,\n OptionGeneratorConfig,\n PredicateOption,\n SubjectOption,\n SubmissionBody,\n TermOption,\n} from '../types.ts';\nimport { LANG_STRING } from '#root/utils/_private/constants.ts';\nimport { isFullUri, isPrefixedUri } from '@lblod/marawa/rdfa-helpers';\nimport { modifier } from 'ember-modifier';\n\nfunction truthy(obj: unknown) {\n return !!obj;\n}\n\nconst OBJECT_TERM_TYPES = [\n 'NamedNode',\n 'LiteralNode',\n 'ResourceNode',\n 'Literal',\n] as const;\n\ntype RelationshipEditorDevModalSig = {\n Element: AuModalSignature['Element'];\n Args: {\n title?: string;\n source: LiteralNodeTerm | ResourceNodeTerm<string>;\n supportedDirections?:\n | ['property']\n | ['backlink']\n | ['property', 'backlink'];\n onSubmit: (body: SubmissionBody) => unknown;\n onCancel: () => unknown;\n optionGeneratorConfig?: OptionGeneratorConfig;\n initialData?: Partial<FormData>;\n };\n};\n\nexport type FormData = Partial<SubmissionBody> & {\n direction?: Direction;\n};\n\nconst formSchema = yup.object({\n direction: yup.string().oneOf(['property', 'backlink']),\n predicate: yup.object(),\n target: yup.object(),\n});\n\nconst onFormKeyDown = (formElement: HTMLFormElement, event: KeyboardEvent) => {\n if (event.key === 'Enter' && (event.ctrlKey || event.metaKey)) {\n formElement.requestSubmit();\n }\n return true;\n};\n\nexport default class RelationshipEditorDevModeModal extends Component<RelationshipEditorDevModalSig> {\n formElement?: HTMLFormElement;\n setupFormElement = modifier((element: HTMLFormElement) => {\n this.formElement = element;\n const keyDownHandler = (event: KeyboardEvent) =>\n onFormKeyDown(element, event);\n window.addEventListener('keydown', keyDownHandler);\n return () => window.removeEventListener('keydown', keyDownHandler);\n });\n\n @tracked initiallyFocusedElement?: HTMLElement;\n\n initialFocus = modifier((element: HTMLElement) => {\n this.initiallyFocusedElement = element;\n });\n\n get supportedDirections(): Direction[] {\n return this.args.supportedDirections ?? ['property', 'backlink'];\n }\n\n get directionFieldDisabled() {\n return this.sourceIsLiteral || this.supportedDirections.length === 1;\n }\n\n get initialData(): FormData {\n const defaultDirection = this.sourceIsLiteral ? 'backlink' : 'property';\n if (this.args.initialData) {\n return {\n direction:\n this.args.initialData.direction ??\n this.args.initialData.predicate?.direction ??\n defaultDirection,\n ...this.args.initialData,\n };\n } else {\n return {\n direction: defaultDirection,\n };\n }\n }\n data: FormData = new TrackedObject(this.initialData);\n\n resetForm?: () => void;\n assignResetForm = (resetFn: () => void) => {\n this.resetForm = resetFn;\n };\n\n onSubmit = (data: SubmissionBody) => {\n this.args.onSubmit(data);\n };\n\n onCancel = () => {\n this.resetForm?.();\n this.args.onCancel();\n };\n\n setDirection = (validationFn: () => void, value: Direction) => {\n this.data.direction = value;\n validationFn();\n this.data.predicate = undefined;\n this.data.target = undefined;\n };\n\n isValidPredicate = (term: string) => {\n if (!term) {\n return false;\n }\n const isUri = isFullUri(term) || isPrefixedUri(term);\n return isUri;\n };\n\n setPredicate = (\n validationFn: () => void,\n predicateOption?: PredicateOption | string,\n ) => {\n if (!this.data.direction) {\n return;\n }\n if (typeof predicateOption === 'string') {\n const isUri =\n isFullUri(predicateOption) || isPrefixedUri(predicateOption);\n if (isUri) {\n this.data.predicate = {\n direction: this.data.direction,\n term: sayDataFactory.namedNode(predicateOption),\n };\n }\n } else {\n // @ts-expect-error fix PredicateOption types\n this.data.predicate = predicateOption && {\n ...predicateOption,\n direction: this.data.direction,\n };\n }\n this.data.target = undefined;\n validationFn();\n };\n\n isValidTarget = (term: string) => {\n if (!term) {\n return false;\n }\n const isUri = isFullUri(term) || isPrefixedUri(term);\n return (\n this.data.direction === 'property' ||\n (this.data.direction === 'backlink' && isUri)\n );\n };\n\n setTarget = (\n validationFn: () => void,\n targetOption?: ObjectOption | SubjectOption | string,\n ) => {\n if (typeof targetOption === 'string') {\n const isUri = isFullUri(targetOption) || isPrefixedUri(targetOption);\n if (\n this.data.direction === 'property' ||\n (this.data.direction === 'backlink' && isUri)\n ) {\n const term = isUri\n ? sayDataFactory.namedNode(targetOption)\n : sayDataFactory.literal(targetOption);\n this.data.target = {\n term,\n };\n }\n } else {\n this.data.target = targetOption;\n }\n validationFn();\n };\n\n buildPowerSelectWithCreateSuggestion = (term: string) => term;\n\n onPowerSelectKeyDown = (_select: Select, event: KeyboardEvent) => {\n if (this.formElement) {\n onFormKeyDown(this.formElement, event);\n }\n return true;\n };\n\n get showTargetTermTypeSelector() {\n return this.data.direction === 'property' && this.data.target;\n }\n\n get showDatatypeAndLanguageOptions() {\n return (\n this.data.target &&\n (this.data.target.term.termType === 'Literal' ||\n this.data.target.term.termType === 'ContentLiteral')\n );\n }\n\n setTermType = (termType: (typeof OBJECT_TERM_TYPES)[number]) => {\n if (!this.data.target) {\n return;\n }\n const targetTerm = this.data.target.term;\n this.data.target = {\n ...this.data.target,\n term: sayDataFactory.fromTerm({\n ...targetTerm,\n termType,\n }) as ObjectOption['term'],\n };\n };\n\n setDatatype = (event: Event) => {\n const datatype = (event.target as HTMLInputElement).value;\n if (!this.data.target) {\n return;\n }\n const targetTerm = this.data.target.term;\n if (\n targetTerm.termType !== 'Literal' &&\n targetTerm.termType !== 'ContentLiteral'\n ) {\n return;\n }\n this.data.target = {\n ...this.data.target,\n term: sayDataFactory.fromTerm({\n ...targetTerm,\n datatype: sayDataFactory.namedNode(datatype),\n }) as ContentLiteralTerm | SayLiteral,\n };\n };\n\n setLanguage = (event: Event) => {\n const language = (event.target as HTMLInputElement).value;\n if (!this.data.target) {\n return;\n }\n const targetTerm = this.data.target.term;\n if (\n targetTerm.termType !== 'Literal' &&\n targetTerm.termType !== 'ContentLiteral'\n ) {\n return;\n }\n this.data.target = {\n ...this.data.target,\n term: sayDataFactory.fromTerm({\n ...targetTerm,\n language,\n datatype: sayDataFactory.namedNode(LANG_STRING),\n }) as ContentLiteralTerm | SayLiteral,\n };\n };\n\n searchPredicates = async (searchString: string) => {\n const options = await this.args.optionGeneratorConfig?.predicates?.({\n searchString,\n selectedSource: this.args.source,\n direction: this.data.direction,\n });\n return options ?? [];\n };\n\n searchTargets = async (searchString: string) => {\n const generatorFunction =\n this.data.predicate?.direction === 'property'\n ? this.args.optionGeneratorConfig?.objects\n : this.args.optionGeneratorConfig?.subjects;\n const options = await generatorFunction?.({\n searchString,\n selectedPredicate: this.data.predicate?.term,\n selectedSource: this.args.source,\n });\n return options ?? [];\n };\n\n optionRepr = (option: TermOption<SayTerm>) => {\n if (option.label) {\n return `${option.term.value} (${option.label})`;\n } else {\n return option.term.value;\n }\n };\n\n get targetLabel() {\n return this.data.direction === 'property' ? 'Object' : 'Subject';\n }\n\n get sourceIsLiteral() {\n return this.args.source.termType === 'LiteralNode';\n }\n\n get title() {\n return this.args.title ?? 'Add relationship';\n }\n\n <template>\n <AuModal\n @modalOpen={{true}}\n @closeModal={{@onCancel}}\n {{! @glint-expect-error appuniversum types should be adapted to accept an html element here }}\n @initialFocus={{this.initiallyFocusedElement}}\n >\n <:title>{{this.title}}</:title>\n <:body>\n <WithUniqueId as |formId|>\n <HeadlessForm\n id={{formId}}\n @data={{this.data}}\n @dataMode=\"mutable\"\n @onSubmit={{this.onSubmit}}\n @validate={{validateYup formSchema}}\n class=\"au-o-flow--small\"\n as |form|\n >\n {{this.assignResetForm form.reset}}\n <AuFormRow>\n <AuLabel>\n Source\n </AuLabel>\n <p>{{@source.value}}</p>\n </AuFormRow>\n <form.Field @name=\"direction\" as |field|>\n <AuFormRow>\n <AuLabel for={{field.id}}>\n Direction\n </AuLabel>\n <PowerSelect\n id={{field.id}}\n @selected={{field.value}}\n @disabled={{this.directionFieldDisabled}}\n @onChange={{fn this.setDirection field.triggerValidation}}\n @options={{this.supportedDirections}}\n class=\"au-u-1-1\"\n as |option|\n >\n {{option}}\n </PowerSelect>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert\n class=\"au-u-margin-none\"\n @skin=\"warning\"\n @size=\"small\"\n @icon=\"alert-triangle\"\n >\n {{#let (get errors 0) as |error|}}\n {{error.message}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n </form.Field>\n <form.Field @name=\"predicate\" as |field|>\n <AuFormRow>\n <AuLabel for={{field.id}}>\n Predicate\n </AuLabel>\n <PowerSelectWithCreate\n id={{field.id}}\n {{this.initialFocus}}\n @selected={{field.value}}\n @onKeydown={{this.onPowerSelectKeyDown}}\n @onChange={{fn this.setPredicate field.triggerValidation}}\n @onCreate={{fn this.setPredicate field.triggerValidation}}\n @showCreateWhen={{this.isValidPredicate}}\n @buildSuggestion={{this.buildPowerSelectWithCreateSuggestion}}\n @allowClear={{true}}\n @options={{this.searchPredicates \"\"}}\n @search={{this.searchPredicates}}\n @searchEnabled={{true}}\n class=\"au-u-1-1\"\n as |option|\n >\n <div\n class=\"au-u-flex au-u-flex--spaced-tiny au-u-flex--vertical-center\"\n >\n <p><strong>{{this.optionRepr option}}</strong></p>\n </div>\n {{#if option.description}}\n <p>{{option.description}}</p>\n {{/if}}\n </PowerSelectWithCreate>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert\n class=\"au-u-margin-none\"\n @skin=\"warning\"\n @size=\"small\"\n @icon=\"alert-triangle\"\n >\n {{#let (get errors 0) as |error|}}\n {{error.message}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n </form.Field>\n <form.Field @name=\"target\" as |field|>\n <AuFormRow>\n <AuLabel for={{field.id}}>\n {{this.targetLabel}}\n </AuLabel>\n <PowerSelectWithCreate\n id={{field.id}}\n @selected={{field.value}}\n @onKeydown={{this.onPowerSelectKeyDown}}\n @onChange={{fn this.setTarget field.triggerValidation}}\n @onCreate={{fn this.setTarget field.triggerValidation}}\n @showCreateWhen={{this.isValidTarget}}\n @buildSuggestion={{this.buildPowerSelectWithCreateSuggestion}}\n @allowClear={{true}}\n @disabled={{not this.data.predicate}}\n @options={{this.searchTargets \"\"}}\n @search={{this.searchTargets}}\n @searchEnabled={{true}}\n class=\"au-u-1-1\"\n as |option|\n >\n <div\n class=\"au-u-flex au-u-flex--spaced-tiny au-u-flex--vertical-center\"\n >\n <p><strong>{{this.optionRepr option}}</strong></p>\n </div>\n {{#if option.description}}\n <p>{{option.description}}</p>\n {{/if}}\n </PowerSelectWithCreate>\n <field.Errors class=\"au-u-1-1 au-u-margin-top-tiny\" as |errors|>\n <AuAlert\n class=\"au-u-margin-none\"\n @skin=\"warning\"\n @size=\"small\"\n @icon=\"alert-triangle\"\n >\n {{#let (get errors 0) as |error|}}\n {{error.message}}\n {{/let}}\n </AuAlert>\n </field.Errors>\n </AuFormRow>\n {{#if this.showTargetTermTypeSelector}}\n <AuFormRow>\n <WithUniqueId as |id|>\n <AuLabel for={{id}}>Term type</AuLabel>\n <PowerSelect\n id={{id}}\n @selected={{this.data.target.term.termType}}\n @onChange={{this.setTermType}}\n @options={{OBJECT_TERM_TYPES}}\n class=\"au-u-1-1\"\n as |option|\n >\n {{option}}\n </PowerSelect>\n </WithUniqueId>\n </AuFormRow>\n {{/if}}\n {{#if this.showDatatypeAndLanguageOptions}}\n <div class=\"au-u-flex au-u-flex--row au-u-flex--spaced-tiny\">\n <WithUniqueId as |id|>\n <div class=\"au-u-1-5 au-u-flex au-u-flex--column\">\n <AuLabel for={{id}}>Language</AuLabel>\n <AuInput\n id={{id}}\n {{on \"input\" this.setLanguage}}\n {{! @glint-expect-error }}\n value={{this.data.target.term.language}}\n />\n </div>\n </WithUniqueId>\n <WithUniqueId as |id|>\n <div class=\"au-u-4-5 au-u-flex au-u-flex--column\">\n <AuLabel for={{id}}>Datatype</AuLabel>\n <AuInput\n id={{id}}\n {{! @glint-expect-error }}\n @disabled={{truthy this.data.target.term.language}}\n {{on \"input\" this.setDatatype}}\n {{! @glint-expect-error }}\n value={{this.data.target.term.datatype.value}}\n />\n </div>\n </WithUniqueId>\n\n </div>\n <AuFormRow />\n {{/if}}\n </form.Field>\n\n <AuButtonGroup class=\"au-u-margin-top\">\n <AuButton form={{formId}} type=\"submit\">Insert</AuButton>\n <AuButton\n @skin=\"secondary\"\n {{on \"click\" this.onCancel}}\n >Cancel</AuButton>\n </AuButtonGroup>\n </HeadlessForm>\n </WithUniqueId>\n </:body>\n </AuModal>\n </template>\n}\n"],"names":["truthy","obj","OBJECT_TERM_TYPES","formSchema","yup","object","direction","string","oneOf","predicate","target","onFormKeyDown","formElement","event","key","ctrlKey","metaKey","requestSubmit","RelationshipEditorDevModeModal","Component","setupFormElement","modifier","element","keyDownHandler","window","addEventListener","removeEventListener","g","prototype","tracked","i","initialFocus","initiallyFocusedElement","supportedDirections","args","directionFieldDisabled","sourceIsLiteral","length","initialData","defaultDirection","data","TrackedObject","resetForm","assignResetForm","resetFn","onSubmit","onCancel","setDirection","validationFn","value","undefined","isValidPredicate","term","isUri","isFullUri","isPrefixedUri","setPredicate","predicateOption","sayDataFactory","namedNode","isValidTarget","setTarget","targetOption","literal","buildPowerSelectWithCreateSuggestion","onPowerSelectKeyDown","_select","showTargetTermTypeSelector","showDatatypeAndLanguageOptions","termType","setTermType","targetTerm","fromTerm","setDatatype","datatype","setLanguage","language","LANG_STRING","searchPredicates","searchString","options","optionGeneratorConfig","predicates","selectedSource","source","searchTargets","generatorFunction","objects","subjects","selectedPredicate","optionRepr","option","label","targetLabel","title","setComponentTemplate","precompileTemplate","strictMode","scope","AuModal","WithUniqueId","HeadlessForm","validateYup","AuFormRow","AuLabel","PowerSelect","fn","AuAlert","get","PowerSelectWithCreate","not","AuInput","on","AuButtonGroup","AuButton"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"collapsible.js","sources":["../../src/components/collapsible.gts"],"sourcesContent":["import AuButton from '@appuniversum/ember-appuniversum/components/au-button';\nimport AuIcon from '@appuniversum/ember-appuniversum/components/au-icon';\nimport AuList, {\n type AuListSignature,\n} from '@appuniversum/ember-appuniversum/components/au-list';\nimport AuToolbar from '@appuniversum/ember-appuniversum/components/au-toolbar';\nimport { AddIcon } from '@appuniversum/ember-appuniversum/components/icons/add';\nimport { RemoveIcon } from '@appuniversum/ember-appuniversum/components/icons/remove';\nimport { on } from '@ember/modifier';\n\nimport { action } from '@ember/object';\nimport Component from '@glimmer/component';\nimport { localCopy } from 'tracked-toolbox';\ntype Args = {\n title: string;\n onToggle?: (expanded: boolean) => void;\n} & (\n | {\n /** @deprecated, use `expanded` instead */\n expandedInitially?: boolean;\n expanded: never;\n }\n | {\n /** @deprecated, use `expanded` instead */\n expandedInitially?: never;\n expanded?: boolean;\n }\n);\n\ntype CollapsibleSignature = {\n Args: Args;\n Element: HTMLDivElement;\n Blocks: {\n default: AuListSignature['Blocks']['default'];\n };\n};\nexport default class Collapsible extends Component<CollapsibleSignature> {\n @localCopy('args.expanded') _expanded?: boolean;\n\n get expanded() {\n return this._expanded ?? this.args.expandedInitially;\n }\n\n @action\n toggle() {\n const newState = !this.expanded;\n this._expanded = newState;\n this.args.onToggle?.(newState);\n }\n\n <template>\n <div class=\"say-editor-hints__insert\">\n <div\n class=\"au-c-accordion au-c-accordion--reverse au-c-accordion--border\"\n >\n <AuToolbar\n @nowrap={{true}}\n @reverse={{true}}\n {{on \"click\" this.toggle}}\n as |Group|\n >\n <Group>\n <div>\n <AuButton\n @skin=\"link\"\n aria-hidden=\"true\"\n focusable=\"false\"\n aria-expanded=\"{{if this.expanded 'true' 'false'}}\"\n >\n {{@title}}\n </AuButton>\n </div>\n </Group>\n <Group>\n {{#if this.expanded}}\n <AuIcon\n @icon={{RemoveIcon}}\n @alignment=\"left\"\n @size=\"large\"\n @ariaHidden=\"true\"\n />\n <span class=\"au-u-hidden-visually\">\n Open accordion\n </span>\n {{else}}\n <AuIcon\n @icon={{AddIcon}}\n @alignment=\"left\"\n @size=\"large\"\n @ariaHidden=\"true\"\n />\n <span class=\"au-u-hidden-visually\">\n Sluit accordion\n </span>\n {{/if}}\n </Group>\n </AuToolbar>\n <div class={{if this.expanded \"au-c-accordion__content\" \"au-u-hidden\"}}>\n <AuList @divider={{true}} as |Item|>\n {{yield Item}}\n </AuList>\n </div>\n </div>\n </div>\n </template>\n}\n"],"names":["Collapsible","Component","g","prototype","localCopy","i","void 0","expanded","_expanded","args","expandedInitially","toggle","newState","onToggle","n","action","setComponentTemplate","precompileTemplate","strictMode","scope","AuToolbar","on","AuButton","AuIcon","RemoveIcon","AddIcon","AuList"],"mappings":";;;;;;;;;;;;;;AAoCe,MAAMA,oBAAoBC,SAAA,CAAU;AAAA,EAAA;AAAAC,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CAChDC,SAAA,CAAU,eAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,MAAA;EAEX,IAAIC,QAAAA,GAAW;IACb,OAAO,IAAI,CAACC,SAAS,IAAI,IAAI,CAACC,IAAI,CAACC,iBAAiB;AACtD,EAAA;AAGAC,EAAAA,MAAAA,GAAS;AACP,IAAA,MAAMC,QAAA,GAAW,CAAC,IAAI,CAACL,QAAQ;IAC/B,IAAI,CAACC,SAAS,GAAGI,QAAA;AACjB,IAAA,IAAI,CAACH,IAAI,CAACI,QAAQ,GAAGD,QAAA,CAAA;AACvB,EAAA;AAAA,EAAA;IAAAE,CAAA,CAAA,IAAA,CAAAX,SAAA,EAAA,QAAA,EAAA,CALCY,MAAA,CAAA,CAAA;AAAA;AAOD,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,4wCAAA,EAsDA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,SAAA;QAAAC,EAAA;QAAAC,QAAA;QAAAC,MAAA;QAAAC,UAAA;QAAAC,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
1
+ {"version":3,"file":"collapsible.js","sources":["../../src/components/collapsible.gts"],"sourcesContent":["import AuButton from '@appuniversum/ember-appuniversum/components/au-button';\nimport AuIcon from '@appuniversum/ember-appuniversum/components/au-icon';\nimport AuList, {\n type AuListSignature,\n} from '@appuniversum/ember-appuniversum/components/au-list';\nimport AuToolbar from '@appuniversum/ember-appuniversum/components/au-toolbar';\nimport { AddIcon } from '@appuniversum/ember-appuniversum/components/icons/add';\nimport { RemoveIcon } from '@appuniversum/ember-appuniversum/components/icons/remove';\nimport { on } from '@ember/modifier';\n\nimport { action } from '@ember/object';\nimport Component from '@glimmer/component';\nimport { localCopy } from 'tracked-toolbox';\ntype Args = {\n title: string;\n onToggle?: (expanded: boolean) => void;\n} & (\n | {\n /** @deprecated, use `expanded` instead */\n expandedInitially?: boolean;\n expanded: never;\n }\n | {\n /** @deprecated, use `expanded` instead */\n expandedInitially?: never;\n expanded?: boolean;\n }\n);\n\ntype CollapsibleSignature = {\n Args: Args;\n Element: HTMLDivElement;\n Blocks: {\n default: AuListSignature['Blocks']['default'];\n };\n};\nexport default class Collapsible extends Component<CollapsibleSignature> {\n @localCopy('args.expanded') _expanded?: boolean;\n\n get expanded() {\n return this._expanded ?? this.args.expandedInitially;\n }\n\n @action\n toggle() {\n const newState = !this.expanded;\n this._expanded = newState;\n this.args.onToggle?.(newState);\n }\n\n <template>\n <div class=\"say-editor-hints__insert\">\n <div\n class=\"au-c-accordion au-c-accordion--reverse au-c-accordion--border\"\n >\n <AuToolbar\n @nowrap={{true}}\n @reverse={{true}}\n {{on \"click\" this.toggle}}\n as |Group|\n >\n <Group>\n <div>\n <AuButton\n @skin=\"link\"\n aria-hidden=\"true\"\n focusable=\"false\"\n aria-expanded=\"{{if this.expanded 'true' 'false'}}\"\n >\n {{@title}}\n </AuButton>\n </div>\n </Group>\n <Group>\n {{#if this.expanded}}\n <AuIcon\n @icon={{RemoveIcon}}\n @alignment=\"left\"\n @size=\"large\"\n @ariaHidden=\"true\"\n />\n <span class=\"au-u-hidden-visually\">\n Open accordion\n </span>\n {{else}}\n <AuIcon\n @icon={{AddIcon}}\n @alignment=\"left\"\n @size=\"large\"\n @ariaHidden=\"true\"\n />\n <span class=\"au-u-hidden-visually\">\n Sluit accordion\n </span>\n {{/if}}\n </Group>\n </AuToolbar>\n <div class={{if this.expanded \"au-c-accordion__content\" \"au-u-hidden\"}}>\n <AuList @divider={{true}} as |Item|>\n {{yield Item}}\n </AuList>\n </div>\n </div>\n </div>\n </template>\n}\n"],"names":["Collapsible","Component","g","prototype","localCopy","i","expanded","_expanded","args","expandedInitially","toggle","newState","onToggle","n","action","setComponentTemplate","precompileTemplate","strictMode","scope","AuToolbar","on","AuButton","AuIcon","RemoveIcon","AddIcon","AuList"],"mappings":";;;;;;;;;;;;;;AAoCe,MAAMA,oBAAoBC,SAAA,CAAU;AAAA,EAAA;AAAAC,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CAChDC,SAAA,CAAU,eAAA,CAAA,CAAA,CAAA;AAAA;EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAA,MAAA;EAEX,IAAIC,QAAAA,GAAW;IACb,OAAO,IAAI,CAACC,SAAS,IAAI,IAAI,CAACC,IAAI,CAACC,iBAAiB;AACtD,EAAA;AAGAC,EAAAA,MAAAA,GAAS;AACP,IAAA,MAAMC,QAAA,GAAW,CAAC,IAAI,CAACL,QAAQ;IAC/B,IAAI,CAACC,SAAS,GAAGI,QAAA;AACjB,IAAA,IAAI,CAACH,IAAI,CAACI,QAAQ,GAAGD,QAAA,CAAA;AACvB,EAAA;AAAA,EAAA;IAAAE,CAAA,CAAA,IAAA,CAAAV,SAAA,EAAA,QAAA,EAAA,CALCW,MAAA,CAAA,CAAA;AAAA;AAOD,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,4wCAAA,EAsDA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,SAAA;QAAAC,EAAA;QAAAC,QAAA;QAAAC,MAAA;QAAAC,UAAA;QAAAC,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"debug-tools.js","sources":["../../src/components/debug-tools.ts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport sampleData from '../config/sample-data.ts';\nimport SayController from '#root/core/say-controller.ts';\nimport { modifier } from 'ember-modifier';\nimport { generatePageForExport } from '#root/utils/export-utils.ts';\n\ninterface DebugToolArgs {\n controller?: SayController;\n}\n\nexport default class RdfaEditorDebugTools extends Component<DebugToolArgs> {\n @tracked htmlDebuggerOpen = false;\n @tracked sampleData = sampleData;\n\n get controller() {\n return this.args.controller;\n }\n\n setUpListeners = modifier(() => {\n const unloadListener = () => {\n this.saveEditorContentToLocalStorage();\n };\n window.addEventListener('beforeunload', unloadListener);\n return () => {\n window.removeEventListener('beforeunload', unloadListener);\n };\n });\n\n @action\n setEditorContent(content: string) {\n if (this.controller) {\n this.controller.setHtmlContent(content);\n this.saveEditorContentToLocalStorage();\n }\n }\n\n @action openContentDebugger() {\n if (this.controller) {\n this.htmlDebuggerOpen = true;\n }\n }\n\n @action onSave(content: string) {\n this.htmlDebuggerOpen = false;\n this.setEditorContent(content);\n }\n\n @action onCancel() {\n this.htmlDebuggerOpen = false;\n }\n\n @action\n showExportPreview(isStyled: boolean, filterForPublish: boolean) {\n const wnd = window.open('about:blank', '', '_blank');\n if (this.controller && wnd) {\n wnd.document.write(\n generatePageForExport(this.controller, isStyled, filterForPublish),\n );\n }\n }\n\n saveEditorContentToLocalStorage() {\n console.log('save editor content to local storage!!!');\n if (this.controller) {\n localStorage.setItem('EDITOR_CONTENT', this.controller.htmlContent);\n }\n }\n}\n"],"names":["RdfaEditorDebugTools","Component","g","prototype","tracked","i","void 0","sampleData","controller","args","setUpListeners","modifier","unloadListener","saveEditorContentToLocalStorage","window","addEventListener","removeEventListener","setEditorContent","content","setHtmlContent","n","action","openContentDebugger","htmlDebuggerOpen","onSave","onCancel","showExportPreview","isStyled","filterForPublish","wnd","open","document","write","generatePageForExport","console","log","localStorage","setItem","htmlContent","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"debug-tools.js","sources":["../../src/components/debug-tools.ts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport sampleData from '../config/sample-data.ts';\nimport SayController from '#root/core/say-controller.ts';\nimport { modifier } from 'ember-modifier';\nimport { generatePageForExport } from '#root/utils/export-utils.ts';\n\ninterface DebugToolArgs {\n controller?: SayController;\n}\n\nexport default class RdfaEditorDebugTools extends Component<DebugToolArgs> {\n @tracked htmlDebuggerOpen = false;\n @tracked sampleData = sampleData;\n\n get controller() {\n return this.args.controller;\n }\n\n setUpListeners = modifier(() => {\n const unloadListener = () => {\n this.saveEditorContentToLocalStorage();\n };\n window.addEventListener('beforeunload', unloadListener);\n return () => {\n window.removeEventListener('beforeunload', unloadListener);\n };\n });\n\n @action\n setEditorContent(content: string) {\n if (this.controller) {\n this.controller.setHtmlContent(content);\n this.saveEditorContentToLocalStorage();\n }\n }\n\n @action openContentDebugger() {\n if (this.controller) {\n this.htmlDebuggerOpen = true;\n }\n }\n\n @action onSave(content: string) {\n this.htmlDebuggerOpen = false;\n this.setEditorContent(content);\n }\n\n @action onCancel() {\n this.htmlDebuggerOpen = false;\n }\n\n @action\n showExportPreview(isStyled: boolean, filterForPublish: boolean) {\n const wnd = window.open('about:blank', '', '_blank');\n if (this.controller && wnd) {\n wnd.document.write(\n generatePageForExport(this.controller, isStyled, filterForPublish),\n );\n }\n }\n\n saveEditorContentToLocalStorage() {\n console.log('save editor content to local storage!!!');\n if (this.controller) {\n localStorage.setItem('EDITOR_CONTENT', this.controller.htmlContent);\n }\n }\n}\n"],"names":["RdfaEditorDebugTools","Component","g","prototype","tracked","i","sampleData","controller","args","setUpListeners","modifier","unloadListener","saveEditorContentToLocalStorage","window","addEventListener","removeEventListener","setEditorContent","content","setHtmlContent","n","action","openContentDebugger","htmlDebuggerOpen","onSave","onCancel","showExportPreview","isStyled","filterForPublish","wnd","open","document","write","generatePageForExport","console","log","localStorage","setItem","htmlContent","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -8,7 +8,7 @@ import { getOwner } from '@ember/application';
8
8
  import SayController from '../core/say-controller.js';
9
9
  import { deprecate } from '@ember/debug';
10
10
  import { notificationPlugin } from '../plugins/notification/index.js';
11
- import { inject } from '@ember/service';
11
+ import { service } from '@ember/service';
12
12
  import { precompileTemplate } from '@ember/template-compilation';
13
13
  import { g, i, n } from 'decorator-transforms/runtime';
14
14
  import { setComponentTemplate } from '@ember/component';
@@ -42,11 +42,11 @@ class RdfaEditor extends Component {
42
42
  }
43
43
  #controller = (i(this, "controller"), void 0);
44
44
  static {
45
- g(this.prototype, "toaster", [inject]);
45
+ g(this.prototype, "toaster", [service]);
46
46
  }
47
47
  #toaster = (i(this, "toaster"), void 0);
48
48
  static {
49
- g(this.prototype, "intl", [inject]);
49
+ g(this.prototype, "intl", [service]);
50
50
  }
51
51
  #intl = (i(this, "intl"), void 0);
52
52
  logger = createLogger(this.constructor.name);
@@ -1 +1 @@
1
- {"version":3,"file":"editor.js","sources":["../../src/components/editor.ts"],"sourcesContent":["import { action } from '@ember/object';\nimport Component from '@glimmer/component';\nimport {\n createLogger,\n type Logger,\n} from '#root/utils/_private/logging-utils.ts';\nimport { tracked } from 'tracked-built-ins';\nimport SayEditor, { type PluginConfig } from '#root/core/say-editor.ts';\nimport type { NodeViewConstructor } from 'prosemirror-view';\nimport { Schema } from 'prosemirror-model';\nimport { getOwner } from '@ember/application';\nimport type Owner from '@ember/owner';\nimport type { DefaultAttrGenPuginOptions } from '#root/plugins/default-attribute-value-generation/index.ts';\nimport SayController from '#root/core/say-controller.ts';\nimport type { KeymapOptions } from '../core/keymap.ts';\nimport { deprecate } from '@ember/debug';\nimport { notificationPlugin } from '#root/plugins/notification/index.ts';\nimport { inject as service } from '@ember/service';\nimport type {\n Notification,\n NotificationOptions,\n} from '#root/plugins/notification/index.ts';\nimport type IntlService from 'ember-intl/services/intl';\n\nexport interface RdfaEditorArgs {\n /**\n * callback that is called with an interface to the editor after editor init completed\n * @default 'default'\n * @public\n */\n rdfaEditorInit(editor: SayController): void;\n\n initializers?: Array<Promise<void>>;\n schema: Schema;\n baseIRI?: string;\n plugins?: PluginConfig;\n stealFocus?: boolean;\n nodeViews?: (controller: SayController) => {\n [node: string]: NodeViewConstructor;\n };\n defaultAttrGenerators?: DefaultAttrGenPuginOptions;\n keyMapOptions?: KeymapOptions;\n notificationCallback?: (notification: Notification) => void;\n notificationToaster?: boolean;\n}\n\n/**\n * RDFa editor\n *\n * This module contains all classes and components provided by the @lblod/ember-rdfa-editor addon.\n * The main entrypoint is the {{#crossLink \"RdfaEditorComponent\"}}{{/crossLink}}.\n * @module rdfa-editor\n * @main rdfa-editor\n */\n\n/**\n * RDFa editor component\n *\n * This component wraps around a {{#crossLink \"ContentEditableComponent\"}}{{/crossLink}}\n * and provides an architecture to interact with the document through plugins.\n * {{#crossLinkModule \"rdfa-editor\"}}rdfa-editor{{/crossLinkModule}}.\n * @module rdfa-editor\n * @class RdfaEditorComponent\n * @extends Component\n */\nexport default class RdfaEditor extends Component<RdfaEditorArgs> {\n @tracked controller: SayController | null = null;\n @service declare toaster: {\n notify: (\n message: string | undefined,\n title: string | undefined,\n options: NotificationOptions,\n ) => void;\n };\n @service declare intl: IntlService;\n\n private logger: Logger = createLogger(this.constructor.name);\n private prosemirror: SayEditor | null = null;\n\n get initializers() {\n return this.args.initializers || [];\n }\n\n get baseIRI() {\n return this.args.baseIRI || window.document.baseURI;\n }\n\n // We show the notification toaster unless told otherwise in the editor arguments\n get notificationToaster() {\n return this.args.notificationToaster === false ? false : true;\n }\n\n /**\n * Handle init of rawEditor\n *\n * @method handleRawEditorInit\n *\n * @param {Element} target the html element the editor will render into\n *\n * @private\n */\n @action\n async handleRawEditorInit(target: Element) {\n if (this.initializers.length) {\n await Promise.all(this.initializers);\n this.logger(`Awaited ${this.initializers.length} initializers.`);\n }\n\n if (this.args.keyMapOptions) {\n deprecate(\n '@keyMapOptions is deprecated. The behaviour of `selectBlockRdfaNode` is included by default.',\n false,\n {\n id: '@lblod/ember-rdfa-editor.editor.keyMapOptions-argument',\n until: '10.0.0',\n for: '@lblod/ember-rdfa-editor',\n since: {\n available: '9.6.0',\n enabled: '9.6.0',\n },\n },\n );\n }\n\n const notificationCallback =\n this.args.notificationCallback ??\n ((notification: Notification) =>\n this.toaster.notify(\n notification.message,\n notification.title,\n notification.options,\n ));\n let plugins: PluginConfig;\n const notificationPluginOptions = {\n notificationCallback: notificationCallback.bind(this),\n intl: this.intl,\n };\n if (Array.isArray(this.args.plugins)) {\n plugins = [\n ...this.args.plugins,\n notificationPlugin(notificationPluginOptions),\n ];\n } else if (this.args.plugins) {\n plugins = {\n plugins: [\n ...this.args.plugins.plugins,\n notificationPlugin(notificationPluginOptions),\n ],\n override: this.args.plugins.override,\n };\n } else {\n plugins = [notificationPlugin(notificationPluginOptions)];\n }\n\n this.prosemirror = new SayEditor({\n owner: getOwner(this) as Owner,\n target,\n schema: this.args.schema,\n baseIRI: this.baseIRI,\n plugins,\n nodeViews: this.args.nodeViews,\n defaultAttrGenerators: this.args.defaultAttrGenerators,\n keyMapOptions: this.args.keyMapOptions,\n });\n window.__PM = this.prosemirror;\n window.__PC = new SayController(this.prosemirror);\n this.controller = new SayController(this.prosemirror);\n if (this.args.rdfaEditorInit) {\n this.args.rdfaEditorInit(new SayController(this.prosemirror));\n }\n }\n}\n"],"names":["RdfaEditor","Component","g","prototype","tracked","i","void 0","service","logger","createLogger","constructor","name","prosemirror","initializers","args","baseIRI","window","document","baseURI","notificationToaster","handleRawEditorInit","target","length","Promise","all","keyMapOptions","deprecate","id","until","for","since","available","enabled","notificationCallback","notification","toaster","notify","message","title","options","plugins","notificationPluginOptions","bind","intl","Array","isArray","notificationPlugin","override","SayEditor","owner","getOwner","schema","nodeViews","defaultAttrGenerators","__PM","__PC","SayController","controller","rdfaEditorInit","n","action","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"editor.js","sources":["../../src/components/editor.ts"],"sourcesContent":["import { action } from '@ember/object';\nimport Component from '@glimmer/component';\nimport {\n createLogger,\n type Logger,\n} from '#root/utils/_private/logging-utils.ts';\nimport { tracked } from 'tracked-built-ins';\nimport SayEditor, { type PluginConfig } from '#root/core/say-editor.ts';\nimport type { NodeViewConstructor } from 'prosemirror-view';\nimport { Schema } from 'prosemirror-model';\nimport { getOwner } from '@ember/application';\nimport type Owner from '@ember/owner';\nimport type { DefaultAttrGenPuginOptions } from '#root/plugins/default-attribute-value-generation/index.ts';\nimport SayController from '#root/core/say-controller.ts';\nimport type { KeymapOptions } from '../core/keymap.ts';\nimport { deprecate } from '@ember/debug';\nimport { notificationPlugin } from '#root/plugins/notification/index.ts';\nimport { service } from '@ember/service';\nimport type {\n Notification,\n NotificationOptions,\n} from '#root/plugins/notification/index.ts';\nimport type IntlService from 'ember-intl/services/intl';\n\nexport interface RdfaEditorArgs {\n /**\n * callback that is called with an interface to the editor after editor init completed\n * @default 'default'\n * @public\n */\n rdfaEditorInit(editor: SayController): void;\n\n initializers?: Array<Promise<void>>;\n schema: Schema;\n baseIRI?: string;\n plugins?: PluginConfig;\n stealFocus?: boolean;\n nodeViews?: (controller: SayController) => {\n [node: string]: NodeViewConstructor;\n };\n defaultAttrGenerators?: DefaultAttrGenPuginOptions;\n keyMapOptions?: KeymapOptions;\n notificationCallback?: (notification: Notification) => void;\n notificationToaster?: boolean;\n}\n\n/**\n * RDFa editor\n *\n * This module contains all classes and components provided by the @lblod/ember-rdfa-editor addon.\n * The main entrypoint is the {{#crossLink \"RdfaEditorComponent\"}}{{/crossLink}}.\n * @module rdfa-editor\n * @main rdfa-editor\n */\n\n/**\n * RDFa editor component\n *\n * This component wraps around a {{#crossLink \"ContentEditableComponent\"}}{{/crossLink}}\n * and provides an architecture to interact with the document through plugins.\n * {{#crossLinkModule \"rdfa-editor\"}}rdfa-editor{{/crossLinkModule}}.\n * @module rdfa-editor\n * @class RdfaEditorComponent\n * @extends Component\n */\nexport default class RdfaEditor extends Component<RdfaEditorArgs> {\n @tracked controller: SayController | null = null;\n @service declare toaster: {\n notify: (\n message: string | undefined,\n title: string | undefined,\n options: NotificationOptions,\n ) => void;\n };\n @service declare intl: IntlService;\n\n private logger: Logger = createLogger(this.constructor.name);\n private prosemirror: SayEditor | null = null;\n\n get initializers() {\n return this.args.initializers || [];\n }\n\n get baseIRI() {\n return this.args.baseIRI || window.document.baseURI;\n }\n\n // We show the notification toaster unless told otherwise in the editor arguments\n get notificationToaster() {\n return this.args.notificationToaster === false ? false : true;\n }\n\n /**\n * Handle init of rawEditor\n *\n * @method handleRawEditorInit\n *\n * @param {Element} target the html element the editor will render into\n *\n * @private\n */\n @action\n async handleRawEditorInit(target: Element) {\n if (this.initializers.length) {\n await Promise.all(this.initializers);\n this.logger(`Awaited ${this.initializers.length} initializers.`);\n }\n\n if (this.args.keyMapOptions) {\n deprecate(\n '@keyMapOptions is deprecated. The behaviour of `selectBlockRdfaNode` is included by default.',\n false,\n {\n id: '@lblod/ember-rdfa-editor.editor.keyMapOptions-argument',\n until: '10.0.0',\n for: '@lblod/ember-rdfa-editor',\n since: {\n available: '9.6.0',\n enabled: '9.6.0',\n },\n },\n );\n }\n\n const notificationCallback =\n this.args.notificationCallback ??\n ((notification: Notification) =>\n this.toaster.notify(\n notification.message,\n notification.title,\n notification.options,\n ));\n let plugins: PluginConfig;\n const notificationPluginOptions = {\n notificationCallback: notificationCallback.bind(this),\n intl: this.intl,\n };\n if (Array.isArray(this.args.plugins)) {\n plugins = [\n ...this.args.plugins,\n notificationPlugin(notificationPluginOptions),\n ];\n } else if (this.args.plugins) {\n plugins = {\n plugins: [\n ...this.args.plugins.plugins,\n notificationPlugin(notificationPluginOptions),\n ],\n override: this.args.plugins.override,\n };\n } else {\n plugins = [notificationPlugin(notificationPluginOptions)];\n }\n\n this.prosemirror = new SayEditor({\n owner: getOwner(this) as Owner,\n target,\n schema: this.args.schema,\n baseIRI: this.baseIRI,\n plugins,\n nodeViews: this.args.nodeViews,\n defaultAttrGenerators: this.args.defaultAttrGenerators,\n keyMapOptions: this.args.keyMapOptions,\n });\n window.__PM = this.prosemirror;\n window.__PC = new SayController(this.prosemirror);\n this.controller = new SayController(this.prosemirror);\n if (this.args.rdfaEditorInit) {\n this.args.rdfaEditorInit(new SayController(this.prosemirror));\n }\n }\n}\n"],"names":["RdfaEditor","Component","g","prototype","tracked","i","service","logger","createLogger","constructor","name","prosemirror","initializers","args","baseIRI","window","document","baseURI","notificationToaster","handleRawEditorInit","target","length","Promise","all","keyMapOptions","deprecate","id","until","for","since","available","enabled","notificationCallback","notification","toaster","notify","message","title","options","plugins","notificationPluginOptions","bind","intl","Array","isArray","notificationPlugin","override","SayEditor","owner","getOwner","schema","nodeViews","defaultAttrGenerators","__PM","__PC","SayController","controller","rdfaEditorInit","n","action","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { action } from '@ember/object';
2
- import { inject } from '@ember/service';
2
+ import { service } from '@ember/service';
3
3
  import Component from '@glimmer/component';
4
4
  import { v4 } from 'uuid';
5
5
  import { redo, undo } from 'prosemirror-history';
@@ -46,7 +46,7 @@ var TEMPLATE = precompileTemplate("{{! @glint-nocheck: not typesafe yet }}\n{{!
46
46
  */
47
47
  class EmbeddedEditor extends Component {
48
48
  static {
49
- g(this.prototype, "intl", [inject]);
49
+ g(this.prototype, "intl", [service]);
50
50
  }
51
51
  #intl = (i(this, "intl"), void 0);
52
52
  innerView = null;
@@ -1 +1 @@
1
- {"version":3,"file":"embedded-editor.js","sources":["../../../src/components/ember-node/embedded-editor.ts"],"sourcesContent":["/**\n *\n * Based on the footnotes example from https://github.com/ProseMirror/website\n *\n * Copyright (C) 2015-2017 by Marijn Haverbeke <marijnh@gmail.com> and others\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Component from '@glimmer/component';\nimport type { EmberNodeArgs } from '#root/utils/ember-node.ts';\nimport type IntlService from 'ember-intl/services/intl';\nimport { v4 as uuid } from 'uuid';\nimport { redo, undo } from '#root/plugins/history/index.ts';\nimport { isSome, unwrap } from '#root/utils/_private/option.ts';\nimport { lastKeyPressedPluginKey } from '#root/plugins/last-key-pressed/index.ts';\nimport {\n EditorState,\n NodeSelection,\n Plugin,\n Selection,\n TextSelection,\n Transaction,\n type Command,\n} from 'prosemirror-state';\nimport { embeddedEditorBaseKeymap } from '#root/core/keymap.ts';\nimport SayView from '#root/core/say-view.ts';\nimport type { NodeViewConstructor } from 'prosemirror-view';\nimport { AttrStep, Step, StepMap } from 'prosemirror-transform';\nimport { keymap } from 'prosemirror-keymap';\n\ntype Args = EmberNodeArgs & {\n placeholder: string;\n initEditor?: (view: SayView) => void;\n /* override the keymap. */\n keymap?: { [key: string]: Command };\n /* editor plugins to add */\n plugins?: Plugin[];\n nodeViews?: {\n [node: string]: NodeViewConstructor;\n };\n onSelected?: (selected: boolean, innerState: EditorState) => void;\n};\n\n/**\n * An embedded editor to use for *inline* content. This way you can specify extra content for an\n * inline (atom) node. For block content, use content directly instead ({{yield}} in ember-nodes).\n */\nexport default class EmbeddedEditor extends Component<Args> {\n @service declare intl: IntlService;\n innerView: SayView | null = null;\n\n contentWrapper: Element | null = null;\n\n editorId = uuid();\n\n get outerView() {\n return this.args.view;\n }\n\n get node() {\n return this.args.node;\n }\n\n get schema() {\n return this.controller.schema;\n }\n\n get pos() {\n return this.args.getPos();\n }\n\n get controller() {\n return this.args.controller;\n }\n\n get plugins() {\n return this.args.plugins || [];\n }\n\n get keymap() {\n const undoRedoMap = {\n 'Mod-z': () =>\n undo(this.outerView.state, this.outerView.dispatch.bind(this)),\n 'Mod-Z': () =>\n undo(this.outerView.state, this.outerView.dispatch.bind(this)),\n 'Mod-y': () =>\n redo(this.outerView.state, this.outerView.dispatch.bind(this)),\n 'Mod-Y': () =>\n redo(this.outerView.state, this.outerView.dispatch.bind(this)),\n };\n\n if (this.args.keymap) {\n return {\n ...this.args.keymap,\n ...undoRedoMap,\n };\n } else {\n return { ...embeddedEditorBaseKeymap(this.schema), ...undoRedoMap };\n }\n }\n\n get nodeViews() {\n return this.outerView.props.nodeViews;\n }\n\n @action\n didInsertContentWrapper(target: Element) {\n this.contentWrapper = target;\n this.innerView = new SayView(\n this.contentWrapper,\n {\n decorations: () => this.args.contentDecorations,\n state: EditorState.create({\n doc: this.node,\n plugins: [keymap(this.keymap), ...this.plugins],\n // the schema is derived from 'doc' key and can't be customized\n }),\n attributes: {\n ...(this.args.placeholder && {\n 'data-placeholder': this.args.placeholder,\n }),\n },\n dispatchTransaction: this.dispatchInner,\n handleDOMEvents: {\n mousedown: () => {\n // Kludge to prevent issues due to the fact that the whole\n // footnote is node-selected (and thus DOM-selected) when\n // the parent editor is focused.\n\n if (this.outerView.hasFocus()) this.innerView?.focus();\n },\n focus: () => {\n const pos = this.pos;\n if (pos !== undefined) {\n const outerSelectionTr = this.outerView.state.tr;\n const outerSelection = new NodeSelection(\n this.outerView.state.doc.resolve(pos),\n );\n outerSelectionTr.setSelection(outerSelection);\n this.outerView.dispatch(outerSelectionTr);\n }\n\n if (this.innerView) {\n this.args.controller.setActiveView(this.innerView);\n }\n },\n },\n // These handlers are needed to fix part of a bug in Gecko (firefox): https://bugzilla.mozilla.org/show_bug.cgi?id=1612076\n handleKeyDown: ({ state: { selection, doc } }, event) => {\n if (selection.empty) {\n if (selection.from === 0) {\n // At the start of the embedded editor\n if (event.code === 'ArrowLeft' || event.code === 'Backspace') {\n this.outerView.focus();\n }\n if (event.code === 'Backspace' && doc.content.size !== 0) {\n // Prevent the deletion of the node as there is still content\n event.preventDefault();\n this.selectOutside('before');\n }\n }\n if (selection.from === doc.nodeSize - 2) {\n // At the end of the embedded editor\n if (event.code === 'ArrowRight' || event.code === 'Delete') {\n this.outerView.focus();\n }\n if (event.code === 'Delete' && doc.content.size !== 0) {\n // Prevent the deletion of the node as there is still content\n event.preventDefault();\n this.selectOutside('after');\n }\n }\n }\n },\n nodeViews: this.nodeViews,\n },\n this.outerView,\n );\n if (this.args.initEditor) {\n this.args.initEditor(this.innerView);\n }\n }\n\n @action\n onSelected(_: unknown, sel: [boolean]) {\n if (this.args.onSelected && this.innerView) {\n this.args.onSelected(sel[0], this.innerView.state);\n }\n if (this.args.selected && this.innerView) {\n const lastKeyPressedPluginState = lastKeyPressedPluginKey.getState(\n this.controller.mainEditorState,\n );\n\n const lastKeyPressed = lastKeyPressedPluginState?.lastKeyPressed;\n if (!this.innerView.hasFocus()) {\n this.innerView.dispatch(\n this.innerView.state.tr.setSelection(\n Selection[\n ['ArrowLeft', 'Backspace'].includes(lastKeyPressed ?? '')\n ? 'atEnd'\n : 'atStart'\n ](this.innerView.state.doc),\n ),\n );\n\n this.innerView.focus();\n }\n } else if (this.innerView) {\n const state = this.innerView.state;\n // De-select the inner node if we're no longer selected\n this.dispatchInner(\n state.tr.setSelection(TextSelection.create(state.doc, 0, 0)),\n );\n }\n }\n\n @action\n onNodeUpdate() {\n if (this.innerView) {\n const state = this.innerView.state;\n const start = this.node.content.findDiffStart(state.doc.content);\n const end = this.node.content.findDiffEnd(state.doc.content);\n const tr = state.tr;\n let trChanged = false;\n if (isSome(start) && isSome(end)) {\n let { a: endA, b: endB } = end;\n const overlap = start - Math.min(endA, endB);\n if (overlap > 0) {\n endA += overlap;\n endB += overlap;\n }\n tr.replace(start, endB, this.node.slice(start, endA)).setMeta(\n 'fromOutside',\n this.editorId,\n );\n trChanged = true;\n }\n // check if our top node has new attributes, and update the state\n // if so\n if (!this.node.hasMarkup(state.doc.type, state.doc.attrs)) {\n for (const [key, val] of Object.entries(this.node.attrs)) {\n tr.setDocAttribute(key, val);\n }\n\n tr.setMeta('fromOutside', this.editorId);\n trChanged = true;\n }\n if (trChanged) {\n this.innerView.dispatch(tr);\n }\n }\n }\n\n @action\n onDecorationsUpdate() {\n this.innerView?.dispatch(this.innerView.state.tr);\n }\n\n selectOutside(side: 'before' | 'after') {\n const selectionSide = side === 'after' ? '$head' : '$anchor';\n const outerState = this.outerView.state;\n this.outerView.dispatch(\n outerState.tr.setSelection(\n TextSelection.create(\n outerState.doc,\n outerState.selection[selectionSide].pos,\n ),\n ),\n );\n }\n\n dispatchInner = (tr: Transaction) => {\n const pos = this.pos;\n if (this.innerView && pos !== undefined) {\n const { state, transactions } = this.innerView.state.applyTransaction(tr);\n this.innerView.updateState(state);\n if (tr.getMeta('fromOutside') !== this.editorId) {\n const outerTr = this.outerView.state.tr,\n offsetMap = StepMap.offset(pos + 1);\n for (let i = 0; i < transactions.length; i++) {\n const steps = transactions[i].steps;\n for (let j = 0; j < steps.length; j++) {\n const step = steps[j];\n let mappedStep: Step;\n if (step instanceof AttrStep) {\n const mappedPos = offsetMap.mapResult(step.pos, 1);\n if (mappedPos.deleted) {\n throw new Error('Mapped position has been deleted');\n }\n mappedStep = new AttrStep(mappedPos.pos, step.attr, step.value);\n } else {\n mappedStep = unwrap(step.map(offsetMap));\n }\n outerTr.step(mappedStep);\n }\n }\n if (outerTr.docChanged) this.outerView.dispatch(outerTr);\n }\n }\n };\n\n willDestroy(): void {\n super.willDestroy();\n this.innerView?.destroy();\n this.innerView = null;\n }\n}\n"],"names":["EmbeddedEditor","Component","g","prototype","service","i","void 0","innerView","contentWrapper","editorId","uuid","outerView","args","view","node","schema","controller","pos","getPos","plugins","keymap","undoRedoMap","Mod-z","undo","state","dispatch","bind","Mod-Z","Mod-y","redo","Mod-Y","embeddedEditorBaseKeymap","nodeViews","props","didInsertContentWrapper","target","SayView","decorations","contentDecorations","EditorState","create","doc","attributes","placeholder","dispatchTransaction","dispatchInner","handleDOMEvents","mousedown","hasFocus","focus","undefined","outerSelectionTr","tr","outerSelection","NodeSelection","resolve","setSelection","setActiveView","handleKeyDown","selection","event","empty","from","code","content","size","preventDefault","selectOutside","nodeSize","initEditor","n","action","onSelected","_","sel","selected","lastKeyPressedPluginState","lastKeyPressedPluginKey","getState","mainEditorState","lastKeyPressed","Selection","includes","TextSelection","onNodeUpdate","start","findDiffStart","end","findDiffEnd","trChanged","isSome","a","endA","b","endB","overlap","Math","min","replace","slice","setMeta","hasMarkup","type","attrs","key","val","Object","entries","setDocAttribute","onDecorationsUpdate","side","selectionSide","outerState","transactions","applyTransaction","updateState","getMeta","outerTr","offsetMap","StepMap","offset","length","steps","j","step","mappedStep","AttrStep","mappedPos","mapResult","deleted","Error","attr","value","unwrap","map","docChanged","willDestroy","destroy","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"embedded-editor.js","sources":["../../../src/components/ember-node/embedded-editor.ts"],"sourcesContent":["/**\n *\n * Based on the footnotes example from https://github.com/ProseMirror/website\n *\n * Copyright (C) 2015-2017 by Marijn Haverbeke <marijnh@gmail.com> and others\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nimport { action } from '@ember/object';\nimport { service } from '@ember/service';\nimport Component from '@glimmer/component';\nimport type { EmberNodeArgs } from '#root/utils/ember-node.ts';\nimport type IntlService from 'ember-intl/services/intl';\nimport { v4 as uuid } from 'uuid';\nimport { redo, undo } from '#root/plugins/history/index.ts';\nimport { isSome, unwrap } from '#root/utils/_private/option.ts';\nimport { lastKeyPressedPluginKey } from '#root/plugins/last-key-pressed/index.ts';\nimport {\n EditorState,\n NodeSelection,\n Plugin,\n Selection,\n TextSelection,\n Transaction,\n type Command,\n} from 'prosemirror-state';\nimport { embeddedEditorBaseKeymap } from '#root/core/keymap.ts';\nimport SayView from '#root/core/say-view.ts';\nimport type { NodeViewConstructor } from 'prosemirror-view';\nimport { AttrStep, Step, StepMap } from 'prosemirror-transform';\nimport { keymap } from 'prosemirror-keymap';\n\ntype Args = EmberNodeArgs & {\n placeholder: string;\n initEditor?: (view: SayView) => void;\n /* override the keymap. */\n keymap?: { [key: string]: Command };\n /* editor plugins to add */\n plugins?: Plugin[];\n nodeViews?: {\n [node: string]: NodeViewConstructor;\n };\n onSelected?: (selected: boolean, innerState: EditorState) => void;\n};\n\n/**\n * An embedded editor to use for *inline* content. This way you can specify extra content for an\n * inline (atom) node. For block content, use content directly instead ({{yield}} in ember-nodes).\n */\nexport default class EmbeddedEditor extends Component<Args> {\n @service declare intl: IntlService;\n innerView: SayView | null = null;\n\n contentWrapper: Element | null = null;\n\n editorId = uuid();\n\n get outerView() {\n return this.args.view;\n }\n\n get node() {\n return this.args.node;\n }\n\n get schema() {\n return this.controller.schema;\n }\n\n get pos() {\n return this.args.getPos();\n }\n\n get controller() {\n return this.args.controller;\n }\n\n get plugins() {\n return this.args.plugins || [];\n }\n\n get keymap() {\n const undoRedoMap = {\n 'Mod-z': () =>\n undo(this.outerView.state, this.outerView.dispatch.bind(this)),\n 'Mod-Z': () =>\n undo(this.outerView.state, this.outerView.dispatch.bind(this)),\n 'Mod-y': () =>\n redo(this.outerView.state, this.outerView.dispatch.bind(this)),\n 'Mod-Y': () =>\n redo(this.outerView.state, this.outerView.dispatch.bind(this)),\n };\n\n if (this.args.keymap) {\n return {\n ...this.args.keymap,\n ...undoRedoMap,\n };\n } else {\n return { ...embeddedEditorBaseKeymap(this.schema), ...undoRedoMap };\n }\n }\n\n get nodeViews() {\n return this.outerView.props.nodeViews;\n }\n\n @action\n didInsertContentWrapper(target: Element) {\n this.contentWrapper = target;\n this.innerView = new SayView(\n this.contentWrapper,\n {\n decorations: () => this.args.contentDecorations,\n state: EditorState.create({\n doc: this.node,\n plugins: [keymap(this.keymap), ...this.plugins],\n // the schema is derived from 'doc' key and can't be customized\n }),\n attributes: {\n ...(this.args.placeholder && {\n 'data-placeholder': this.args.placeholder,\n }),\n },\n dispatchTransaction: this.dispatchInner,\n handleDOMEvents: {\n mousedown: () => {\n // Kludge to prevent issues due to the fact that the whole\n // footnote is node-selected (and thus DOM-selected) when\n // the parent editor is focused.\n\n if (this.outerView.hasFocus()) this.innerView?.focus();\n },\n focus: () => {\n const pos = this.pos;\n if (pos !== undefined) {\n const outerSelectionTr = this.outerView.state.tr;\n const outerSelection = new NodeSelection(\n this.outerView.state.doc.resolve(pos),\n );\n outerSelectionTr.setSelection(outerSelection);\n this.outerView.dispatch(outerSelectionTr);\n }\n\n if (this.innerView) {\n this.args.controller.setActiveView(this.innerView);\n }\n },\n },\n // These handlers are needed to fix part of a bug in Gecko (firefox): https://bugzilla.mozilla.org/show_bug.cgi?id=1612076\n handleKeyDown: ({ state: { selection, doc } }, event) => {\n if (selection.empty) {\n if (selection.from === 0) {\n // At the start of the embedded editor\n if (event.code === 'ArrowLeft' || event.code === 'Backspace') {\n this.outerView.focus();\n }\n if (event.code === 'Backspace' && doc.content.size !== 0) {\n // Prevent the deletion of the node as there is still content\n event.preventDefault();\n this.selectOutside('before');\n }\n }\n if (selection.from === doc.nodeSize - 2) {\n // At the end of the embedded editor\n if (event.code === 'ArrowRight' || event.code === 'Delete') {\n this.outerView.focus();\n }\n if (event.code === 'Delete' && doc.content.size !== 0) {\n // Prevent the deletion of the node as there is still content\n event.preventDefault();\n this.selectOutside('after');\n }\n }\n }\n },\n nodeViews: this.nodeViews,\n },\n this.outerView,\n );\n if (this.args.initEditor) {\n this.args.initEditor(this.innerView);\n }\n }\n\n @action\n onSelected(_: unknown, sel: [boolean]) {\n if (this.args.onSelected && this.innerView) {\n this.args.onSelected(sel[0], this.innerView.state);\n }\n if (this.args.selected && this.innerView) {\n const lastKeyPressedPluginState = lastKeyPressedPluginKey.getState(\n this.controller.mainEditorState,\n );\n\n const lastKeyPressed = lastKeyPressedPluginState?.lastKeyPressed;\n if (!this.innerView.hasFocus()) {\n this.innerView.dispatch(\n this.innerView.state.tr.setSelection(\n Selection[\n ['ArrowLeft', 'Backspace'].includes(lastKeyPressed ?? '')\n ? 'atEnd'\n : 'atStart'\n ](this.innerView.state.doc),\n ),\n );\n\n this.innerView.focus();\n }\n } else if (this.innerView) {\n const state = this.innerView.state;\n // De-select the inner node if we're no longer selected\n this.dispatchInner(\n state.tr.setSelection(TextSelection.create(state.doc, 0, 0)),\n );\n }\n }\n\n @action\n onNodeUpdate() {\n if (this.innerView) {\n const state = this.innerView.state;\n const start = this.node.content.findDiffStart(state.doc.content);\n const end = this.node.content.findDiffEnd(state.doc.content);\n const tr = state.tr;\n let trChanged = false;\n if (isSome(start) && isSome(end)) {\n let { a: endA, b: endB } = end;\n const overlap = start - Math.min(endA, endB);\n if (overlap > 0) {\n endA += overlap;\n endB += overlap;\n }\n tr.replace(start, endB, this.node.slice(start, endA)).setMeta(\n 'fromOutside',\n this.editorId,\n );\n trChanged = true;\n }\n // check if our top node has new attributes, and update the state\n // if so\n if (!this.node.hasMarkup(state.doc.type, state.doc.attrs)) {\n for (const [key, val] of Object.entries(this.node.attrs)) {\n tr.setDocAttribute(key, val);\n }\n\n tr.setMeta('fromOutside', this.editorId);\n trChanged = true;\n }\n if (trChanged) {\n this.innerView.dispatch(tr);\n }\n }\n }\n\n @action\n onDecorationsUpdate() {\n this.innerView?.dispatch(this.innerView.state.tr);\n }\n\n selectOutside(side: 'before' | 'after') {\n const selectionSide = side === 'after' ? '$head' : '$anchor';\n const outerState = this.outerView.state;\n this.outerView.dispatch(\n outerState.tr.setSelection(\n TextSelection.create(\n outerState.doc,\n outerState.selection[selectionSide].pos,\n ),\n ),\n );\n }\n\n dispatchInner = (tr: Transaction) => {\n const pos = this.pos;\n if (this.innerView && pos !== undefined) {\n const { state, transactions } = this.innerView.state.applyTransaction(tr);\n this.innerView.updateState(state);\n if (tr.getMeta('fromOutside') !== this.editorId) {\n const outerTr = this.outerView.state.tr,\n offsetMap = StepMap.offset(pos + 1);\n for (let i = 0; i < transactions.length; i++) {\n const steps = transactions[i].steps;\n for (let j = 0; j < steps.length; j++) {\n const step = steps[j];\n let mappedStep: Step;\n if (step instanceof AttrStep) {\n const mappedPos = offsetMap.mapResult(step.pos, 1);\n if (mappedPos.deleted) {\n throw new Error('Mapped position has been deleted');\n }\n mappedStep = new AttrStep(mappedPos.pos, step.attr, step.value);\n } else {\n mappedStep = unwrap(step.map(offsetMap));\n }\n outerTr.step(mappedStep);\n }\n }\n if (outerTr.docChanged) this.outerView.dispatch(outerTr);\n }\n }\n };\n\n willDestroy(): void {\n super.willDestroy();\n this.innerView?.destroy();\n this.innerView = null;\n }\n}\n"],"names":["EmbeddedEditor","Component","g","prototype","service","i","innerView","contentWrapper","editorId","uuid","outerView","args","view","node","schema","controller","pos","getPos","plugins","keymap","undoRedoMap","Mod-z","undo","state","dispatch","bind","Mod-Z","Mod-y","redo","Mod-Y","embeddedEditorBaseKeymap","nodeViews","props","didInsertContentWrapper","target","SayView","decorations","contentDecorations","EditorState","create","doc","attributes","placeholder","dispatchTransaction","dispatchInner","handleDOMEvents","mousedown","hasFocus","focus","undefined","outerSelectionTr","tr","outerSelection","NodeSelection","resolve","setSelection","setActiveView","handleKeyDown","selection","event","empty","from","code","content","size","preventDefault","selectOutside","nodeSize","initEditor","n","action","onSelected","_","sel","selected","lastKeyPressedPluginState","lastKeyPressedPluginKey","getState","mainEditorState","lastKeyPressed","Selection","includes","TextSelection","onNodeUpdate","start","findDiffStart","end","findDiffEnd","trChanged","isSome","a","endA","b","endB","overlap","Math","min","replace","slice","setMeta","hasMarkup","type","attrs","key","val","Object","entries","setDocAttribute","onDecorationsUpdate","side","selectionSide","outerState","transactions","applyTransaction","updateState","getMeta","outerTr","offsetMap","StepMap","offset","length","steps","j","step","mappedStep","AttrStep","mappedPos","mapResult","deleted","Error","attr","value","unwrap","map","docChanged","willDestroy","destroy","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAuCA;AACA;AACA;AACA;AACe,MAAMA,cAAc,SAASC,SAAS,CAAO;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,MAAA,EAAA,CACzDC,OAAO,CAAA,CAAA;AAAA;EAAA,KAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,MAAA;AACRC,EAAAA,SAAS,GAAmB,IAAI;AAEhCC,EAAAA,cAAc,GAAmB,IAAI;EAErCC,QAAQ,GAAGC,EAAI,EAAE;EAEjB,IAAIC,SAASA,GAAG;AACd,IAAA,OAAO,IAAI,CAACC,IAAI,CAACC,IAAI;AACvB,EAAA;EAEA,IAAIC,IAAIA,GAAG;AACT,IAAA,OAAO,IAAI,CAACF,IAAI,CAACE,IAAI;AACvB,EAAA;EAEA,IAAIC,MAAMA,GAAG;AACX,IAAA,OAAO,IAAI,CAACC,UAAU,CAACD,MAAM;AAC/B,EAAA;EAEA,IAAIE,GAAGA,GAAG;AACR,IAAA,OAAO,IAAI,CAACL,IAAI,CAACM,MAAM,EAAE;AAC3B,EAAA;EAEA,IAAIF,UAAUA,GAAG;AACf,IAAA,OAAO,IAAI,CAACJ,IAAI,CAACI,UAAU;AAC7B,EAAA;EAEA,IAAIG,OAAOA,GAAG;AACZ,IAAA,OAAO,IAAI,CAACP,IAAI,CAACO,OAAO,IAAI,EAAE;AAChC,EAAA;EAEA,IAAIC,MAAMA,GAAG;AACX,IAAA,MAAMC,WAAW,GAAG;MAClB,OAAO,EAAEC,MACPC,IAAI,CAAC,IAAI,CAACZ,SAAS,CAACa,KAAK,EAAE,IAAI,CAACb,SAAS,CAACc,QAAQ,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC;MAChE,OAAO,EAAEC,MACPJ,IAAI,CAAC,IAAI,CAACZ,SAAS,CAACa,KAAK,EAAE,IAAI,CAACb,SAAS,CAACc,QAAQ,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC;MAChE,OAAO,EAAEE,MACPC,IAAI,CAAC,IAAI,CAAClB,SAAS,CAACa,KAAK,EAAE,IAAI,CAACb,SAAS,CAACc,QAAQ,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC;MAChE,OAAO,EAAEI,MACPD,IAAI,CAAC,IAAI,CAAClB,SAAS,CAACa,KAAK,EAAE,IAAI,CAACb,SAAS,CAACc,QAAQ,CAACC,IAAI,CAAC,IAAI,CAAC;KAChE;AAED,IAAA,IAAI,IAAI,CAACd,IAAI,CAACQ,MAAM,EAAE;MACpB,OAAO;AACL,QAAA,GAAG,IAAI,CAACR,IAAI,CAACQ,MAAM;QACnB,GAAGC;OACJ;AACH,IAAA,CAAC,MAAM;MACL,OAAO;AAAE,QAAA,GAAGU,wBAAwB,CAAC,IAAI,CAAChB,MAAM,CAAC;QAAE,GAAGM;OAAa;AACrE,IAAA;AACF,EAAA;EAEA,IAAIW,SAASA,GAAG;AACd,IAAA,OAAO,IAAI,CAACrB,SAAS,CAACsB,KAAK,CAACD,SAAS;AACvC,EAAA;EAGAE,uBAAuBA,CAACC,MAAe,EAAE;IACvC,IAAI,CAAC3B,cAAc,GAAG2B,MAAM;IAC5B,IAAI,CAAC5B,SAAS,GAAG,IAAI6B,OAAO,CAC1B,IAAI,CAAC5B,cAAc,EACnB;AACE6B,MAAAA,WAAW,EAAEA,MAAM,IAAI,CAACzB,IAAI,CAAC0B,kBAAkB;AAC/Cd,MAAAA,KAAK,EAAEe,WAAW,CAACC,MAAM,CAAC;QACxBC,GAAG,EAAE,IAAI,CAAC3B,IAAI;AACdK,QAAAA,OAAO,EAAE,CAACC,MAAM,CAAC,IAAI,CAACA,MAAM,CAAC,EAAE,GAAG,IAAI,CAACD,OAAO;AAC9C;AACF,OAAC,CAAC;AACFuB,MAAAA,UAAU,EAAE;AACV,QAAA,IAAI,IAAI,CAAC9B,IAAI,CAAC+B,WAAW,IAAI;AAC3B,UAAA,kBAAkB,EAAE,IAAI,CAAC/B,IAAI,CAAC+B;SAC/B;OACF;MACDC,mBAAmB,EAAE,IAAI,CAACC,aAAa;AACvCC,MAAAA,eAAe,EAAE;QACfC,SAAS,EAAEA,MAAM;AACf;AACA;AACA;;AAEA,UAAA,IAAI,IAAI,CAACpC,SAAS,CAACqC,QAAQ,EAAE,EAAE,IAAI,CAACzC,SAAS,EAAE0C,KAAK,EAAE;QACxD,CAAC;QACDA,KAAK,EAAEA,MAAM;AACX,UAAA,MAAMhC,GAAG,GAAG,IAAI,CAACA,GAAG;UACpB,IAAIA,GAAG,KAAKiC,SAAS,EAAE;YACrB,MAAMC,gBAAgB,GAAG,IAAI,CAACxC,SAAS,CAACa,KAAK,CAAC4B,EAAE;AAChD,YAAA,MAAMC,cAAc,GAAG,IAAIC,aAAa,CACtC,IAAI,CAAC3C,SAAS,CAACa,KAAK,CAACiB,GAAG,CAACc,OAAO,CAACtC,GAAG,CACtC,CAAC;AACDkC,YAAAA,gBAAgB,CAACK,YAAY,CAACH,cAAc,CAAC;AAC7C,YAAA,IAAI,CAAC1C,SAAS,CAACc,QAAQ,CAAC0B,gBAAgB,CAAC;AAC3C,UAAA;UAEA,IAAI,IAAI,CAAC5C,SAAS,EAAE;YAClB,IAAI,CAACK,IAAI,CAACI,UAAU,CAACyC,aAAa,CAAC,IAAI,CAAClD,SAAS,CAAC;AACpD,UAAA;AACF,QAAA;OACD;AACD;AACAmD,MAAAA,aAAa,EAAEA,CAAC;AAAElC,QAAAA,KAAK,EAAE;UAAEmC,SAAS;AAAElB,UAAAA;AAAI;OAAG,EAAEmB,KAAK,KAAK;QACvD,IAAID,SAAS,CAACE,KAAK,EAAE;AACnB,UAAA,IAAIF,SAAS,CAACG,IAAI,KAAK,CAAC,EAAE;AACxB;YACA,IAAIF,KAAK,CAACG,IAAI,KAAK,WAAW,IAAIH,KAAK,CAACG,IAAI,KAAK,WAAW,EAAE;AAC5D,cAAA,IAAI,CAACpD,SAAS,CAACsC,KAAK,EAAE;AACxB,YAAA;AACA,YAAA,IAAIW,KAAK,CAACG,IAAI,KAAK,WAAW,IAAItB,GAAG,CAACuB,OAAO,CAACC,IAAI,KAAK,CAAC,EAAE;AACxD;cACAL,KAAK,CAACM,cAAc,EAAE;AACtB,cAAA,IAAI,CAACC,aAAa,CAAC,QAAQ,CAAC;AAC9B,YAAA;AACF,UAAA;UACA,IAAIR,SAAS,CAACG,IAAI,KAAKrB,GAAG,CAAC2B,QAAQ,GAAG,CAAC,EAAE;AACvC;YACA,IAAIR,KAAK,CAACG,IAAI,KAAK,YAAY,IAAIH,KAAK,CAACG,IAAI,KAAK,QAAQ,EAAE;AAC1D,cAAA,IAAI,CAACpD,SAAS,CAACsC,KAAK,EAAE;AACxB,YAAA;AACA,YAAA,IAAIW,KAAK,CAACG,IAAI,KAAK,QAAQ,IAAItB,GAAG,CAACuB,OAAO,CAACC,IAAI,KAAK,CAAC,EAAE;AACrD;cACAL,KAAK,CAACM,cAAc,EAAE;AACtB,cAAA,IAAI,CAACC,aAAa,CAAC,OAAO,CAAC;AAC7B,YAAA;AACF,UAAA;AACF,QAAA;MACF,CAAC;MACDnC,SAAS,EAAE,IAAI,CAACA;AAClB,KAAC,EACD,IAAI,CAACrB,SACP,CAAC;AACD,IAAA,IAAI,IAAI,CAACC,IAAI,CAACyD,UAAU,EAAE;MACxB,IAAI,CAACzD,IAAI,CAACyD,UAAU,CAAC,IAAI,CAAC9D,SAAS,CAAC;AACtC,IAAA;AACF,EAAA;AAAC,EAAA;IAAA+D,CAAA,CAAA,IAAA,CAAAlE,SAAA,EAAA,yBAAA,EAAA,CA5EAmE,MAAM,CAAA,CAAA;AAAA;AA+EPC,EAAAA,UAAUA,CAACC,CAAU,EAAEC,GAAc,EAAE;IACrC,IAAI,IAAI,CAAC9D,IAAI,CAAC4D,UAAU,IAAI,IAAI,CAACjE,SAAS,EAAE;AAC1C,MAAA,IAAI,CAACK,IAAI,CAAC4D,UAAU,CAACE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAACnE,SAAS,CAACiB,KAAK,CAAC;AACpD,IAAA;IACA,IAAI,IAAI,CAACZ,IAAI,CAAC+D,QAAQ,IAAI,IAAI,CAACpE,SAAS,EAAE;MACxC,MAAMqE,yBAAyB,GAAGC,uBAAuB,CAACC,QAAQ,CAChE,IAAI,CAAC9D,UAAU,CAAC+D,eAClB,CAAC;AAED,MAAA,MAAMC,cAAc,GAAGJ,yBAAyB,EAAEI,cAAc;MAChE,IAAI,CAAC,IAAI,CAACzE,SAAS,CAACyC,QAAQ,EAAE,EAAE;QAC9B,IAAI,CAACzC,SAAS,CAACkB,QAAQ,CACrB,IAAI,CAAClB,SAAS,CAACiB,KAAK,CAAC4B,EAAE,CAACI,YAAY,CAClCyB,SAAS,CACP,CAAC,WAAW,EAAE,WAAW,CAAC,CAACC,QAAQ,CAACF,cAAc,IAAI,EAAE,CAAC,GACrD,OAAO,GACP,SAAS,CACd,CAAC,IAAI,CAACzE,SAAS,CAACiB,KAAK,CAACiB,GAAG,CAC5B,CACF,CAAC;AAED,QAAA,IAAI,CAAClC,SAAS,CAAC0C,KAAK,EAAE;AACxB,MAAA;AACF,IAAA,CAAC,MAAM,IAAI,IAAI,CAAC1C,SAAS,EAAE;AACzB,MAAA,MAAMiB,KAAK,GAAG,IAAI,CAACjB,SAAS,CAACiB,KAAK;AAClC;MACA,IAAI,CAACqB,aAAa,CAChBrB,KAAK,CAAC4B,EAAE,CAACI,YAAY,CAAC2B,aAAa,CAAC3C,MAAM,CAAChB,KAAK,CAACiB,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAC7D,CAAC;AACH,IAAA;AACF,EAAA;AAAC,EAAA;IAAA6B,CAAA,CAAA,IAAA,CAAAlE,SAAA,EAAA,YAAA,EAAA,CA/BAmE,MAAM,CAAA,CAAA;AAAA;AAkCPa,EAAAA,YAAYA,GAAG;IACb,IAAI,IAAI,CAAC7E,SAAS,EAAE;AAClB,MAAA,MAAMiB,KAAK,GAAG,IAAI,CAACjB,SAAS,CAACiB,KAAK;AAClC,MAAA,MAAM6D,KAAK,GAAG,IAAI,CAACvE,IAAI,CAACkD,OAAO,CAACsB,aAAa,CAAC9D,KAAK,CAACiB,GAAG,CAACuB,OAAO,CAAC;AAChE,MAAA,MAAMuB,GAAG,GAAG,IAAI,CAACzE,IAAI,CAACkD,OAAO,CAACwB,WAAW,CAAChE,KAAK,CAACiB,GAAG,CAACuB,OAAO,CAAC;AAC5D,MAAA,MAAMZ,EAAE,GAAG5B,KAAK,CAAC4B,EAAE;MACnB,IAAIqC,SAAS,GAAG,KAAK;MACrB,IAAIC,MAAM,CAACL,KAAK,CAAC,IAAIK,MAAM,CAACH,GAAG,CAAC,EAAE;QAChC,IAAI;AAAEI,UAAAA,CAAC,EAAEC,IAAI;AAAEC,UAAAA,CAAC,EAAEC;AAAK,SAAC,GAAGP,GAAG;QAC9B,MAAMQ,OAAO,GAAGV,KAAK,GAAGW,IAAI,CAACC,GAAG,CAACL,IAAI,EAAEE,IAAI,CAAC;QAC5C,IAAIC,OAAO,GAAG,CAAC,EAAE;AACfH,UAAAA,IAAI,IAAIG,OAAO;AACfD,UAAAA,IAAI,IAAIC,OAAO;AACjB,QAAA;QACA3C,EAAE,CAAC8C,OAAO,CAACb,KAAK,EAAES,IAAI,EAAE,IAAI,CAAChF,IAAI,CAACqF,KAAK,CAACd,KAAK,EAAEO,IAAI,CAAC,CAAC,CAACQ,OAAO,CAC3D,aAAa,EACb,IAAI,CAAC3F,QACP,CAAC;AACDgF,QAAAA,SAAS,GAAG,IAAI;AAClB,MAAA;AACA;AACA;AACA,MAAA,IAAI,CAAC,IAAI,CAAC3E,IAAI,CAACuF,SAAS,CAAC7E,KAAK,CAACiB,GAAG,CAAC6D,IAAI,EAAE9E,KAAK,CAACiB,GAAG,CAAC8D,KAAK,CAAC,EAAE;AACzD,QAAA,KAAK,MAAM,CAACC,GAAG,EAAEC,GAAG,CAAC,IAAIC,MAAM,CAACC,OAAO,CAAC,IAAI,CAAC7F,IAAI,CAACyF,KAAK,CAAC,EAAE;AACxDnD,UAAAA,EAAE,CAACwD,eAAe,CAACJ,GAAG,EAAEC,GAAG,CAAC;AAC9B,QAAA;QAEArD,EAAE,CAACgD,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC3F,QAAQ,CAAC;AACxCgF,QAAAA,SAAS,GAAG,IAAI;AAClB,MAAA;AACA,MAAA,IAAIA,SAAS,EAAE;AACb,QAAA,IAAI,CAAClF,SAAS,CAACkB,QAAQ,CAAC2B,EAAE,CAAC;AAC7B,MAAA;AACF,IAAA;AACF,EAAA;AAAC,EAAA;IAAAkB,CAAA,CAAA,IAAA,CAAAlE,SAAA,EAAA,cAAA,EAAA,CAnCAmE,MAAM,CAAA,CAAA;AAAA;AAsCPsC,EAAAA,mBAAmBA,GAAG;AACpB,IAAA,IAAI,CAACtG,SAAS,EAAEkB,QAAQ,CAAC,IAAI,CAAClB,SAAS,CAACiB,KAAK,CAAC4B,EAAE,CAAC;AACnD,EAAA;AAAC,EAAA;IAAAkB,CAAA,CAAA,IAAA,CAAAlE,SAAA,EAAA,qBAAA,EAAA,CAHAmE,MAAM,CAAA,CAAA;AAAA;EAKPJ,aAAaA,CAAC2C,IAAwB,EAAE;IACtC,MAAMC,aAAa,GAAGD,IAAI,KAAK,OAAO,GAAG,OAAO,GAAG,SAAS;AAC5D,IAAA,MAAME,UAAU,GAAG,IAAI,CAACrG,SAAS,CAACa,KAAK;AACvC,IAAA,IAAI,CAACb,SAAS,CAACc,QAAQ,CACrBuF,UAAU,CAAC5D,EAAE,CAACI,YAAY,CACxB2B,aAAa,CAAC3C,MAAM,CAClBwE,UAAU,CAACvE,GAAG,EACduE,UAAU,CAACrD,SAAS,CAACoD,aAAa,CAAC,CAAC9F,GACtC,CACF,CACF,CAAC;AACH,EAAA;EAEA4B,aAAa,GAAIO,EAAe,IAAK;AACnC,IAAA,MAAMnC,GAAG,GAAG,IAAI,CAACA,GAAG;AACpB,IAAA,IAAI,IAAI,CAACV,SAAS,IAAIU,GAAG,KAAKiC,SAAS,EAAE;MACvC,MAAM;QAAE1B,KAAK;AAAEyF,QAAAA;OAAc,GAAG,IAAI,CAAC1G,SAAS,CAACiB,KAAK,CAAC0F,gBAAgB,CAAC9D,EAAE,CAAC;AACzE,MAAA,IAAI,CAAC7C,SAAS,CAAC4G,WAAW,CAAC3F,KAAK,CAAC;MACjC,IAAI4B,EAAE,CAACgE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC3G,QAAQ,EAAE;QAC/C,MAAM4G,OAAO,GAAG,IAAI,CAAC1G,SAAS,CAACa,KAAK,CAAC4B,EAAE;UACrCkE,SAAS,GAAGC,OAAO,CAACC,MAAM,CAACvG,GAAG,GAAG,CAAC,CAAC;AACrC,QAAA,KAAK,IAAIX,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2G,YAAY,CAACQ,MAAM,EAAEnH,CAAC,EAAE,EAAE;AAC5C,UAAA,MAAMoH,KAAK,GAAGT,YAAY,CAAC3G,CAAC,CAAC,CAACoH,KAAK;AACnC,UAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,KAAK,CAACD,MAAM,EAAEE,CAAC,EAAE,EAAE;AACrC,YAAA,MAAMC,IAAI,GAAGF,KAAK,CAACC,CAAC,CAAC;AACrB,YAAA,IAAIE,UAAgB;YACpB,IAAID,IAAI,YAAYE,QAAQ,EAAE;cAC5B,MAAMC,SAAS,GAAGT,SAAS,CAACU,SAAS,CAACJ,IAAI,CAAC3G,GAAG,EAAE,CAAC,CAAC;cAClD,IAAI8G,SAAS,CAACE,OAAO,EAAE;AACrB,gBAAA,MAAM,IAAIC,KAAK,CAAC,kCAAkC,CAAC;AACrD,cAAA;AACAL,cAAAA,UAAU,GAAG,IAAIC,QAAQ,CAACC,SAAS,CAAC9G,GAAG,EAAE2G,IAAI,CAACO,IAAI,EAAEP,IAAI,CAACQ,KAAK,CAAC;AACjE,YAAA,CAAC,MAAM;cACLP,UAAU,GAAGQ,MAAM,CAACT,IAAI,CAACU,GAAG,CAAChB,SAAS,CAAC,CAAC;AAC1C,YAAA;AACAD,YAAAA,OAAO,CAACO,IAAI,CAACC,UAAU,CAAC;AAC1B,UAAA;AACF,QAAA;QACA,IAAIR,OAAO,CAACkB,UAAU,EAAE,IAAI,CAAC5H,SAAS,CAACc,QAAQ,CAAC4F,OAAO,CAAC;AAC1D,MAAA;AACF,IAAA;EACF,CAAC;AAEDmB,EAAAA,WAAWA,GAAS;IAClB,KAAK,CAACA,WAAW,EAAE;AACnB,IAAA,IAAI,CAACjI,SAAS,EAAEkI,OAAO,EAAE;IACzB,IAAI,CAAClI,SAAS,GAAG,IAAI;AACvB,EAAA;AACF;AAACmI,oBAAA,CAAAC,QAAA,EAnQoB1I,cAAc,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"inline-rdfa.js","sources":["../../../src/components/ember-node/inline-rdfa.ts"],"sourcesContent":["import { action } from '@ember/object';\nimport Component from '@glimmer/component';\nimport SayView from '#root/core/say-view.ts';\nimport type { EmberNodeArgs } from '#root/utils/ember-node.ts';\nimport { tracked } from '@glimmer/tracking';\nimport { editableNodePlugin } from '#root/plugins/_private/editable-node/index.ts';\n\nexport default class InlineRdfaComponent extends Component<EmberNodeArgs> {\n @tracked innerView?: SayView;\n\n get plugins() {\n return [editableNodePlugin(this.args.getPos)];\n }\n get controller() {\n return this.args.controller;\n }\n\n @action\n initEditor(view: SayView) {\n this.innerView = view;\n }\n}\n"],"names":["InlineRdfaComponent","Component","g","prototype","tracked","i","void 0","plugins","editableNodePlugin","args","getPos","controller","initEditor","view","innerView","n","action","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;AAOe,MAAMA,mBAAmB,SAASC,SAAS,CAAgB;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CACvEC,OAAO,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,MAAA;EAER,IAAIC,OAAOA,GAAG;IACZ,OAAO,CAACC,kBAAkB,CAAC,IAAI,CAACC,IAAI,CAACC,MAAM,CAAC,CAAC;AAC/C,EAAA;EACA,IAAIC,UAAUA,GAAG;AACf,IAAA,OAAO,IAAI,CAACF,IAAI,CAACE,UAAU;AAC7B,EAAA;EAGAC,UAAUA,CAACC,IAAa,EAAE;IACxB,IAAI,CAACC,SAAS,GAAGD,IAAI;AACvB,EAAA;AAAC,EAAA;IAAAE,CAAA,CAAA,IAAA,CAAAZ,SAAA,EAAA,YAAA,EAAA,CAHAa,MAAM,CAAA,CAAA;AAAA;AAIT;AAACC,oBAAA,CAAAC,QAAA,EAdoBlB,mBAAmB,CAAA;;;;"}
1
+ {"version":3,"file":"inline-rdfa.js","sources":["../../../src/components/ember-node/inline-rdfa.ts"],"sourcesContent":["import { action } from '@ember/object';\nimport Component from '@glimmer/component';\nimport SayView from '#root/core/say-view.ts';\nimport type { EmberNodeArgs } from '#root/utils/ember-node.ts';\nimport { tracked } from '@glimmer/tracking';\nimport { editableNodePlugin } from '#root/plugins/_private/editable-node/index.ts';\n\nexport default class InlineRdfaComponent extends Component<EmberNodeArgs> {\n @tracked innerView?: SayView;\n\n get plugins() {\n return [editableNodePlugin(this.args.getPos)];\n }\n get controller() {\n return this.args.controller;\n }\n\n @action\n initEditor(view: SayView) {\n this.innerView = view;\n }\n}\n"],"names":["InlineRdfaComponent","Component","g","prototype","tracked","i","plugins","editableNodePlugin","args","getPos","controller","initEditor","view","innerView","n","action","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;AAOe,MAAMA,mBAAmB,SAASC,SAAS,CAAgB;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CACvEC,OAAO,CAAA,CAAA;AAAA;EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAA,MAAA;EAER,IAAIC,OAAOA,GAAG;IACZ,OAAO,CAACC,kBAAkB,CAAC,IAAI,CAACC,IAAI,CAACC,MAAM,CAAC,CAAC;AAC/C,EAAA;EACA,IAAIC,UAAUA,GAAG;AACf,IAAA,OAAO,IAAI,CAACF,IAAI,CAACE,UAAU;AAC7B,EAAA;EAGAC,UAAUA,CAACC,IAAa,EAAE;IACxB,IAAI,CAACC,SAAS,GAAGD,IAAI;AACvB,EAAA;AAAC,EAAA;IAAAE,CAAA,CAAA,IAAA,CAAAX,SAAA,EAAA,YAAA,EAAA,CAHAY,MAAM,CAAA,CAAA;AAAA;AAIT;AAACC,oBAAA,CAAAC,QAAA,EAdoBjB,mBAAmB,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { inject } from '@ember/service';
1
+ import { service } from '@ember/service';
2
2
  import Component from '@glimmer/component';
3
3
  import { ALIGNMENT_OPTIONS, DEFAULT_ALIGNMENT } from '../../../plugins/alignment/index.js';
4
4
  import { setAlignment } from '../../../plugins/alignment/commands.js';
@@ -38,7 +38,7 @@ class AlignmentMenu extends Component {
38
38
  }
39
39
  #dropdownOpen = (i(this, "dropdownOpen"), void 0);
40
40
  static {
41
- g(this.prototype, "intl", [inject]);
41
+ g(this.prototype, "intl", [service]);
42
42
  }
43
43
  #intl = (i(this, "intl"), void 0);
44
44
  options = ALIGNMENT_OPTIONS;