@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.
- package/README.md +165 -95
- package/dist/commands/_private/rdfa-commands/remove-backlink.js +1 -1
- package/dist/commands/_private/rdfa-commands/select-node-by-rdfa-id.js +1 -1
- package/dist/commands/_private/rdfa-commands/select-node-by-subject.js +1 -1
- package/dist/commands/_private/rdfa-commands/wrap-inline-resource.js +1 -1
- package/dist/commands/_private/rdfa-commands/wrap-literal.js +1 -1
- package/dist/commands/_private/rdfa-commands/wrap-resource.js +1 -1
- package/dist/commands/rdfa-commands/add-property.js +1 -1
- package/dist/commands/rdfa-commands/remove-property.js +1 -1
- package/dist/components/_private/attribute-editor/index.js +1 -1
- package/dist/components/_private/attribute-editor/index.js.map +1 -1
- package/dist/components/_private/common/configurable-rdfa-display.js +1 -1
- package/dist/components/_private/common/property-details.js +1 -1
- package/dist/components/_private/debug-info/index.js +1 -1
- package/dist/components/_private/debug-info/index.js.map +1 -1
- package/dist/components/_private/doc-editor/info-pill.js.map +1 -1
- package/dist/components/_private/doc-editor/lang-pill.js.map +1 -1
- package/dist/components/_private/doc-imported-resource-editor/card.js +1 -1
- package/dist/components/_private/doc-imported-resource-editor/card.js.map +1 -1
- package/dist/components/_private/doc-imported-resource-editor/form.js.map +1 -1
- package/dist/components/_private/external-triple-editor/card.js +1 -1
- package/dist/components/_private/external-triple-editor/card.js.map +1 -1
- package/dist/components/_private/external-triple-editor/form.js.map +1 -1
- package/dist/components/_private/imported-resource-linker/card.js +1 -1
- package/dist/components/_private/imported-resource-linker/card.js.map +1 -1
- package/dist/components/_private/node-controls/card.js +1 -1
- package/dist/components/_private/node-controls/card.js.map +1 -1
- package/dist/components/_private/node-controls/remove-node.js.map +1 -1
- package/dist/components/_private/node-controls/wrapping-utils.js +1 -1
- package/dist/components/_private/node-controls/wrapping-utils.js.map +1 -1
- package/dist/components/_private/rdfa-visualiser/rdfa-explorer.js +1 -1
- package/dist/components/_private/rdfa-visualiser/rdfa-explorer.js.map +1 -1
- package/dist/components/_private/rdfa-visualiser/resource-info.js +1 -1
- package/dist/components/_private/rdfa-visualiser/resource-info.js.map +1 -1
- package/dist/components/_private/rdfa-visualiser/visualiser-card.js +2 -2
- package/dist/components/_private/rdfa-visualiser/visualiser-card.js.map +1 -1
- package/dist/components/_private/relationship-editor/card.js +1 -1
- package/dist/components/_private/relationship-editor/card.js.map +1 -1
- package/dist/components/_private/relationship-editor/content-predicate-form.js.map +1 -1
- package/dist/components/_private/relationship-editor/create-button.js.map +1 -1
- package/dist/components/_private/relationship-editor/modals/classic.js.map +1 -1
- package/dist/components/_private/relationship-editor/modals/dev-mode.js +1 -1
- package/dist/components/_private/relationship-editor/modals/dev-mode.js.map +1 -1
- package/dist/components/collapsible.js.map +1 -1
- package/dist/components/debug-tools.js.map +1 -1
- package/dist/components/editor.js +3 -3
- package/dist/components/editor.js.map +1 -1
- package/dist/components/ember-node/embedded-editor.js +2 -2
- package/dist/components/ember-node/embedded-editor.js.map +1 -1
- package/dist/components/ember-node/inline-rdfa.js.map +1 -1
- package/dist/components/plugins/alignment/alignment-menu.js +2 -2
- package/dist/components/plugins/alignment/alignment-menu.js.map +1 -1
- package/dist/components/plugins/heading/heading-menu.js +2 -2
- package/dist/components/plugins/heading/heading-menu.js.map +1 -1
- package/dist/components/plugins/html-editor/menu.js.map +1 -1
- package/dist/components/plugins/html-editor/modal.js.map +1 -1
- package/dist/components/plugins/image/insert-menu.js.map +1 -1
- package/dist/components/plugins/link/link-editor.js +1 -1
- package/dist/components/plugins/list/ordered.js +3 -3
- package/dist/components/plugins/list/ordered.js.map +1 -1
- package/dist/components/plugins/list/unordered.js +1 -1
- package/dist/components/plugins/table/color.js.map +1 -1
- package/dist/components/plugins/table/table-menu.js.map +1 -1
- package/dist/components/plugins/table/table-tooltip.js.map +1 -1
- package/dist/components/plugins/table/vertical-align.js +2 -2
- package/dist/components/plugins/table/vertical-align.js.map +1 -1
- package/dist/components/plugins/text-style/color.js.map +1 -1
- package/dist/components/plugins/text-style/highlight.js.map +1 -1
- package/dist/components/toolbar/dropdown.js.map +1 -1
- package/dist/components/toolbar/mark.js +1 -1
- package/dist/components/utils/au-pill-dropdown.js.map +1 -1
- package/dist/core/keymap.js +1 -1
- package/dist/core/rdfa-types.js +1 -1
- package/dist/core/say-controller.js +1 -1
- package/dist/core/say-controller.js.map +1 -1
- package/dist/core/say-data-factory/data-factory.js.map +1 -1
- package/dist/core/say-data-factory/named-node.js.map +1 -1
- package/dist/core/say-editor.js.map +1 -1
- package/dist/core/say-view.js.map +1 -1
- package/dist/{main-CBbqRlCI.js → main-dUbkrxFL.js} +133 -358
- package/dist/main-dUbkrxFL.js.map +1 -0
- package/dist/nodes/invisible-rdfa.js +1 -1
- package/dist/plugins/list/commands/lift-out-of-nested-lists.js +1 -1
- package/dist/plugins/list/nodes/on-changed.js +1 -1
- package/dist/plugins/list/nodes/on-changed.js.map +1 -1
- package/dist/plugins/rdfa-info/index.js +1 -1
- package/dist/plugins/rdfa-info/types.js +1 -1
- package/dist/plugins/remove-properties-of-deleted-nodes/index.js +1 -1
- package/dist/utils/_private/datastore/graphy-dataset.js +1 -1
- package/dist/utils/_private/datastore/term-mapping.js.map +1 -1
- package/dist/utils/_private/rdfa-parser/rdfa-parser.js.map +1 -1
- package/dist/utils/transaction-utils.js.map +1 -1
- package/package.json +42 -42
- package/dist/main-CBbqRlCI.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lang-pill.js","sources":["../../../../src/components/_private/doc-editor/lang-pill.ts"],"sourcesContent":["import type SayController from '#root/core/say-controller.ts';\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\ntype Args = {\n controller?: SayController;\n supportedLanguages?: string[];\n};\nexport default class DocumentLanguagePill extends Component<Args> {\n @tracked\n modalOpen = false;\n\n get controller() {\n return this.args.controller;\n }\n\n get supportedLanguages() {\n return this.args.supportedLanguages ?? ['nl-BE', 'en-US'];\n }\n\n get lang() {\n return this.controller?.documentLanguage;\n }\n\n showModal = () => {\n this.modalOpen = true;\n };\n\n closeModal = () => {\n this.modalOpen = false;\n };\n\n setLanguage = (lang: string) => {\n if (this.controller) {\n this.controller.documentLanguage = lang;\n }\n };\n}\n"],"names":["DocumentLanguagePill","Component","g","prototype","tracked","i","
|
|
1
|
+
{"version":3,"file":"lang-pill.js","sources":["../../../../src/components/_private/doc-editor/lang-pill.ts"],"sourcesContent":["import type SayController from '#root/core/say-controller.ts';\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\ntype Args = {\n controller?: SayController;\n supportedLanguages?: string[];\n};\nexport default class DocumentLanguagePill extends Component<Args> {\n @tracked\n modalOpen = false;\n\n get controller() {\n return this.args.controller;\n }\n\n get supportedLanguages() {\n return this.args.supportedLanguages ?? ['nl-BE', 'en-US'];\n }\n\n get lang() {\n return this.controller?.documentLanguage;\n }\n\n showModal = () => {\n this.modalOpen = true;\n };\n\n closeModal = () => {\n this.modalOpen = false;\n };\n\n setLanguage = (lang: string) => {\n if (this.controller) {\n this.controller.documentLanguage = lang;\n }\n };\n}\n"],"names":["DocumentLanguagePill","Component","g","prototype","tracked","i","controller","args","supportedLanguages","lang","documentLanguage","showModal","modalOpen","closeModal","setLanguage","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;AAQe,MAAMA,oBAAoB,SAASC,SAAS,CAAO;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CAC/DC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OACI,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAA,MAAA;EAEjB,IAAIC,UAAUA,GAAG;AACf,IAAA,OAAO,IAAI,CAACC,IAAI,CAACD,UAAU;AAC7B,EAAA;EAEA,IAAIE,kBAAkBA,GAAG;IACvB,OAAO,IAAI,CAACD,IAAI,CAACC,kBAAkB,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3D,EAAA;EAEA,IAAIC,IAAIA,GAAG;AACT,IAAA,OAAO,IAAI,CAACH,UAAU,EAAEI,gBAAgB;AAC1C,EAAA;EAEAC,SAAS,GAAGA,MAAM;IAChB,IAAI,CAACC,SAAS,GAAG,IAAI;EACvB,CAAC;EAEDC,UAAU,GAAGA,MAAM;IACjB,IAAI,CAACD,SAAS,GAAG,KAAK;EACxB,CAAC;EAEDE,WAAW,GAAIL,IAAY,IAAK;IAC9B,IAAI,IAAI,CAACH,UAAU,EAAE;AACnB,MAAA,IAAI,CAACA,UAAU,CAACI,gBAAgB,GAAGD,IAAI;AACzC,IAAA;EACF,CAAC;AACH;AAACM,oBAAA,CAAAC,QAAA,EA7BoBhB,oBAAoB,CAAA;;;;"}
|
|
@@ -223,7 +223,7 @@ class DocImportedResourceEditorCard extends Component {
|
|
|
223
223
|
}
|
|
224
224
|
}
|
|
225
225
|
static {
|
|
226
|
-
setComponentTemplate(precompileTemplate("\n <AuCard @size=\"small\" @expandable={{true}} @manualControl={{true}} @openSection={{this.toggleSection}} @isExpanded={{this.expanded}} as |c|>\n <c.header class=\"say-flex-grow\">\n\n <AuToolbar class=\"au-u-flex au-u-flex-row au-u-flex--space-between\" as |Group|>\n <Group>\n <AuHeading @level=\"1\" @skin=\"6\">Document imported resources</AuHeading>\n </Group>\n {{#if (truthy this.documentImportedResources)}}\n <Group>\n <AuButton @skin=\"link\" {{on \"click\" this.openResourceModal}}>\n Add resource\n </AuButton>\n </Group>\n {{/if}}\n </AuToolbar>\n </c.header>\n <c.content class=\"au-c-content--tiny\">\n {{#if (truthy this.documentImportedResources)}}\n {{#if (not (isObjectEmpty this.importedResourceProperties))}}\n <AuList @divider={{true}} as |IRItem|>\n {{#each-in this.importedResourceProperties as |importedResource props|}}\n <IRItem>\n <div class=\"au-u-flex au-u-flex--row au-u-flex--between au-u-flex--vertical-center\">\n <strong>{{importedResource}}</strong>\n <div>\n <AuButton @skin=\"link\" @icon={{PlusIcon}} role=\"button\" {{on \"click\" (fn this.startPropertyCreation importedResource)}} />\n <AuButton @skin=\"link\" @alert={{true}} @icon={{CrossIcon}} @disabled={{not (isEmpty props)}} role=\"button\" {{on \"click\" (fn this.removeImportedResource importedResource)}} />\n </div>\n </div>\n <AuList @divider={{true}} as |Item|>\n {{#each props as |prop|}}\n <Item class=\"au-u-flex au-u-flex--row au-u-flex--between au-u-flex--vertical-center\">\n <div class=\"au-u-padding-tiny\">\n {{#if @controller}}\n <ConfigurableRdfaDisplay @value={{prop}} @generator={{predicateDisplay}} @context={{hash controller=@controller isTopLevel=false}} />\n {{/if}}\n <PropertyDetails @controller={{@controller}} @prop={{prop}} />\n </div>\n <AuDropdown @icon={{ThreeDotsIcon}} role=\"menu\" @alignment=\"left\">\n <AuButton @skin=\"link\" @icon={{PencilIcon}} role=\"menuitem\" {{on \"click\" (fn this.startPropertyUpdate importedResource prop)}}>\n Edit property\n </AuButton>\n <AuButton @skin=\"link\" @icon={{BinIcon}} role=\"menuitem\" class=\"au-c-button--alert\" {{on \"click\" (fn this.removeProperty prop)}}>\n Remove property\n </AuButton>\n </AuDropdown>\n </Item>\n {{/each}}\n </AuList>\n </IRItem>\n {{/each-in}}\n </AuList>\n {{else}}\n <p class=\"au-u-italic\">This document does not define any imported\n resources.</p>\n {{/if}}\n {{else}}\n <AuAlert @icon=\"alert-triangle\" @skin=\"warning\">This document does not\n support defining imported resources.</AuAlert>\n {{/if}}\n </c.content>\n </AuCard>\n\n {{!-- Add imported resource modal --}}\n <WithUniqueId as |formId|>\n <AuModal @modalOpen={{this.isResourceModalOpen}} @closable={{true}} @closeModal={{this.closeResourceModal}}>\n <:title>Add Imported Resource</:title>\n <:body>\n <DefineImportedResourceForm id={{formId}} @onSave={{this.addImportedResource}} @onCancel={{this.closeResourceModal}} @controller={{@controller}} />\n </:body>\n <:footer>\n <AuButtonGroup>\n <AuButton form={{formId}} type=\"submit\">Save</AuButton>\n <AuButton @skin=\"secondary\" {{on \"click\" this.closeResourceModal}}>Cancel</AuButton>\n </AuButtonGroup>\n </:footer>\n </AuModal>\n </WithUniqueId>\n\n {{#if this.status}}\n <RelationshipEditorDevModeModal @title={{this.modalTitle}} @initialData={{this.initialFormData}} @supportedDirections={{array \"property\"}} {{!-- @glint-expect-error --}} @source={{this.currentTerm}} @optionGeneratorConfig={{@optionGeneratorConfig}} @onSubmit={{this.onFormSubmit}} @onCancel={{this.closeRelationshipModal}} />\n {{/if}}\n ", {
|
|
226
|
+
setComponentTemplate(precompileTemplate("\n <AuCard @size=\"small\" @expandable={{true}} @manualControl={{true}} @openSection={{this.toggleSection}} @isExpanded={{this.expanded}} @disableAuContent={{true}} as |c|>\n <c.header class=\"say-flex-grow\">\n\n <AuToolbar class=\"au-u-flex au-u-flex-row au-u-flex--space-between\" as |Group|>\n <Group>\n <AuHeading @level=\"1\" @skin=\"6\">Document imported resources</AuHeading>\n </Group>\n {{#if (truthy this.documentImportedResources)}}\n <Group>\n <AuButton @skin=\"link\" {{on \"click\" this.openResourceModal}}>\n Add resource\n </AuButton>\n </Group>\n {{/if}}\n </AuToolbar>\n </c.header>\n <c.content class=\"au-c-content--tiny\">\n {{#if (truthy this.documentImportedResources)}}\n {{#if (not (isObjectEmpty this.importedResourceProperties))}}\n <AuList @divider={{true}} as |IRItem|>\n {{#each-in this.importedResourceProperties as |importedResource props|}}\n <IRItem>\n <div class=\"au-u-flex au-u-flex--row au-u-flex--between au-u-flex--vertical-center\">\n <strong>{{importedResource}}</strong>\n <div>\n <AuButton @skin=\"link\" @icon={{PlusIcon}} role=\"button\" {{on \"click\" (fn this.startPropertyCreation importedResource)}} />\n <AuButton @skin=\"link\" @alert={{true}} @icon={{CrossIcon}} @disabled={{not (isEmpty props)}} role=\"button\" {{on \"click\" (fn this.removeImportedResource importedResource)}} />\n </div>\n </div>\n <AuList @divider={{true}} as |Item|>\n {{#each props as |prop|}}\n <Item class=\"au-u-flex au-u-flex--row au-u-flex--between au-u-flex--vertical-center\">\n <div class=\"au-u-padding-tiny\">\n {{#if @controller}}\n <ConfigurableRdfaDisplay @value={{prop}} @generator={{predicateDisplay}} @context={{hash controller=@controller isTopLevel=false}} />\n {{/if}}\n <PropertyDetails @controller={{@controller}} @prop={{prop}} />\n </div>\n <AuDropdown @icon={{ThreeDotsIcon}} role=\"menu\" @alignment=\"left\">\n <AuButton @skin=\"link\" @icon={{PencilIcon}} role=\"menuitem\" {{on \"click\" (fn this.startPropertyUpdate importedResource prop)}}>\n Edit property\n </AuButton>\n <AuButton @skin=\"link\" @icon={{BinIcon}} role=\"menuitem\" class=\"au-c-button--alert\" {{on \"click\" (fn this.removeProperty prop)}}>\n Remove property\n </AuButton>\n </AuDropdown>\n </Item>\n {{/each}}\n </AuList>\n </IRItem>\n {{/each-in}}\n </AuList>\n {{else}}\n <p class=\"au-u-italic\">This document does not define any imported\n resources.</p>\n {{/if}}\n {{else}}\n <AuAlert @icon=\"alert-triangle\" @skin=\"warning\">This document does not\n support defining imported resources.</AuAlert>\n {{/if}}\n </c.content>\n </AuCard>\n\n {{!-- Add imported resource modal --}}\n <WithUniqueId as |formId|>\n <AuModal @modalOpen={{this.isResourceModalOpen}} @closable={{true}} @closeModal={{this.closeResourceModal}}>\n <:title>Add Imported Resource</:title>\n <:body>\n <DefineImportedResourceForm id={{formId}} @onSave={{this.addImportedResource}} @onCancel={{this.closeResourceModal}} @controller={{@controller}} />\n </:body>\n <:footer>\n <AuButtonGroup>\n <AuButton form={{formId}} type=\"submit\">Save</AuButton>\n <AuButton @skin=\"secondary\" {{on \"click\" this.closeResourceModal}}>Cancel</AuButton>\n </AuButtonGroup>\n </:footer>\n </AuModal>\n </WithUniqueId>\n\n {{#if this.status}}\n <RelationshipEditorDevModeModal @title={{this.modalTitle}} @initialData={{this.initialFormData}} @supportedDirections={{array \"property\"}} {{!-- @glint-expect-error --}} @source={{this.currentTerm}} @optionGeneratorConfig={{@optionGeneratorConfig}} @onSubmit={{this.onFormSubmit}} @onCancel={{this.closeRelationshipModal}} />\n {{/if}}\n ", {
|
|
227
227
|
strictMode: true,
|
|
228
228
|
scope: () => ({
|
|
229
229
|
AuCard,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.js","sources":["../../../../src/components/_private/doc-imported-resource-editor/card.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\nimport { isEmpty, not } from 'ember-truth-helpers';\nimport AuToolbar from '@appuniversum/ember-appuniversum/components/au-toolbar';\nimport AuHeading from '@appuniversum/ember-appuniversum/components/au-heading';\nimport AuButton from '@appuniversum/ember-appuniversum/components/au-button';\nimport AuButtonGroup from '@appuniversum/ember-appuniversum/components/au-button-group';\nimport AuList from '@appuniversum/ember-appuniversum/components/au-list';\nimport AuModal from '@appuniversum/ember-appuniversum/components/au-modal';\nimport AuDropdown from '@appuniversum/ember-appuniversum/components/au-dropdown';\nimport { ThreeDotsIcon } from '@appuniversum/ember-appuniversum/components/icons/three-dots';\nimport { PencilIcon } from '@appuniversum/ember-appuniversum/components/icons/pencil';\nimport { BinIcon } from '@appuniversum/ember-appuniversum/components/icons/bin';\nimport { PlusIcon } from '@appuniversum/ember-appuniversum/components/icons/plus';\nimport { CrossIcon } from '@appuniversum/ember-appuniversum/components/icons/cross';\nimport type SayController from '#root/core/say-controller.ts';\nimport {\n addImportedResource,\n removeImportedResource,\n} from '#root/plugins/rdfa-info/imported-resources.ts';\nimport WithUniqueId from '#root/components/_private/utils/with-unique-id.ts';\nimport {\n isLinkTriple,\n type OutgoingTriple,\n} from '#root/core/rdfa-processor.ts';\nimport { getSubjectsFromBacklinksOfRelationship } from '#root/utils/rdfa-utils.ts';\nimport { IMPORTED_RESOURCES_ATTR } from '#root/plugins/imported-resources/index.ts';\nimport PropertyDetails from '#root/components/_private/common/property-details.gts';\nimport { addProperty, removeProperty } from '#root/commands/index.ts';\nimport { deepEqualPropertyList } from '#root/plugins/rdfa-info/utils.ts';\nimport ConfigurableRdfaDisplay, {\n predicateDisplay,\n} from '#root/components/_private/common/configurable-rdfa-display.gts';\nimport DefineImportedResourceForm from './form.gts';\nimport AuCard from '@appuniversum/ember-appuniversum/components/au-card';\nimport { localCopy } from 'tracked-toolbox';\nimport type { SubmissionBody } from '#root/components/_private/relationship-editor/types.ts';\nimport RelationshipEditorDevModeModal from '../relationship-editor/modals/dev-mode.gts';\nimport { sayDataFactory } from '#root/core/say-data-factory/data-factory.ts';\nimport type { FormData } from '../relationship-editor/modals/dev-mode.gts';\nimport { array } from '@ember/helper';\nimport type { OptionGeneratorConfig } from '../relationship-editor/types.ts';\nimport AuAlert from '@appuniversum/ember-appuniversum/components/au-alert';\nimport { hash } from '@ember/helper';\n\ntype CreationStatus = {\n mode: 'creation';\n subject: string;\n};\ntype UpdateStatus = {\n mode: 'update';\n subject: string;\n property: OutgoingTriple;\n};\n\nexport type Status = CreationStatus | UpdateStatus;\n\ninterface Sig {\n Args: {\n controller: SayController;\n additionalImportedResources?: string[];\n expanded?: boolean;\n onToggle?: (expanded: boolean) => void;\n optionGeneratorConfig?: OptionGeneratorConfig;\n };\n Element: HTMLDivElement;\n}\n\n/** truth-helpers 'not' incorrectly treats [] as falsey */\nfunction truthy(maybe: unknown) {\n return !!maybe;\n}\n\nfunction isObjectEmpty(obj: Record<string, unknown>) {\n return Object.keys(obj).length === 0;\n}\n\nexport default class DocImportedResourceEditorCard extends Component<Sig> {\n @localCopy('args.expanded', true) declare expanded: boolean;\n\n @tracked isResourceModalOpen = false;\n\n openResourceModal = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.isResourceModalOpen = true;\n };\n closeResourceModal = () => (this.isResourceModalOpen = false);\n\n @tracked status?: Status;\n @tracked initialFormData?: FormData;\n closeRelationshipModal = () => (this.status = undefined);\n\n toggleSection = () => {\n this.expanded = !this.expanded;\n this.args.onToggle?.(this.expanded);\n };\n\n get documentNode() {\n return this.args.controller.mainEditorState.doc;\n }\n\n getSubjectPropertyMap(): Record<string, OutgoingTriple[]> {\n const importedResources = this.documentImportedResources;\n const props = this.documentNode.attrs['properties'] as OutgoingTriple[];\n if (!importedResources) return {};\n const propsAndSubjects = props.map((prop) => {\n if (!isLinkTriple(prop)) {\n return [];\n }\n const subjects = getSubjectsFromBacklinksOfRelationship(\n this.documentNode,\n importedResources,\n prop.predicate,\n prop.object,\n );\n return [prop, subjects] as [OutgoingTriple, string[]];\n });\n const mapped: Record<string, OutgoingTriple[]> = Object.fromEntries(\n importedResources.map((imp) => [imp, []]),\n );\n propsAndSubjects.forEach(([prop, subjects]) => {\n subjects?.forEach((subject) => {\n mapped[subject] = (mapped[subject] ?? []).concat(prop);\n });\n });\n return mapped;\n }\n\n // This isn't used to reduce re-calculations, just to re-use arrays when possible\n irCache: Record<string, OutgoingTriple[]> | undefined;\n get importedResourceProperties(): Record<string, OutgoingTriple[]> {\n if (!this.irCache) {\n // eslint-disable-next-line ember/no-side-effects\n this.irCache = {};\n }\n const newMap = this.getSubjectPropertyMap();\n // Re-use cached arrays if there are no changes to avoid re-renders that mess with on-clicks\n // eslint-disable-next-line ember/no-side-effects\n this.irCache = Object.fromEntries(\n Object.entries(newMap).map(([subject, props]) => {\n if (!this.irCache) return [subject, props];\n if (\n this.irCache[subject] &&\n deepEqualPropertyList(this.irCache[subject], props)\n ) {\n return [subject, this.irCache[subject]];\n } else {\n return [subject, props];\n }\n }),\n );\n return this.irCache;\n }\n\n /**\n * False if adding imported resources is not supported here, otherwise truthy, possibly empty\n * array\n */\n get documentImportedResources(): string[] | false {\n const docNodeImportedResources =\n !!this.args.controller?.schema.nodes['doc']?.spec.attrs?.[\n IMPORTED_RESOURCES_ATTR\n ] &&\n ((this.documentNode.attrs[IMPORTED_RESOURCES_ATTR] as string[]) || []);\n return (\n docNodeImportedResources &&\n Array.from(\n new Set<string>([\n ...(docNodeImportedResources || []),\n ...(this.args.additionalImportedResources || []),\n ]).values(),\n )\n );\n }\n\n addImportedResource = (resource: string) => {\n this.args.controller?.withTransaction(() => {\n if (!this.args.controller) return null;\n return addImportedResource({\n resource,\n })(this.args.controller.mainEditorState).transaction;\n });\n this.closeResourceModal();\n };\n removeImportedResource = (resource: string) => {\n this.args.controller?.withTransaction(() => {\n if (!this.args.controller) return null;\n return removeImportedResource({\n resource,\n })(this.args.controller.mainEditorState).transaction;\n });\n };\n startPropertyCreation = (resource: string, event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.initialFormData = {\n direction: 'property',\n };\n this.status = {\n mode: 'creation',\n subject: resource,\n };\n };\n startPropertyUpdate = (resource: string, property: OutgoingTriple) => {\n this.initialFormData = {\n direction: 'property',\n predicate: {\n direction: 'property',\n term: sayDataFactory.namedNode(property.predicate),\n },\n target: {\n // @ts-expect-error remove Blanknode as possible type\n term: property.object,\n },\n };\n this.status = {\n mode: 'update',\n subject: resource,\n property,\n };\n };\n\n onFormSubmit = (body: SubmissionBody) => {\n if (!this.status) {\n return;\n }\n if (this.status.mode === 'update') {\n this.removeProperty(this.status.property);\n }\n const { predicate, target } = body;\n if (predicate.direction === 'property') {\n const property = {\n predicate: predicate.term.value,\n object: target.term,\n };\n this.args.controller.doCommand(\n addProperty({\n resource: this.status.subject,\n // @ts-expect-error fix types\n property,\n }),\n {\n view: this.args.controller.mainEditorView,\n },\n );\n }\n\n this.closeRelationshipModal();\n };\n\n // TODO de-dupe this from property-editor?\n removeProperty = (property: OutgoingTriple) => {\n const propertyToRemove = {\n documentResourceNode: this.documentNode,\n importedResources: this.documentImportedResources || [],\n property,\n };\n this.args.controller?.doCommand(removeProperty(propertyToRemove), {\n view: this.args.controller.mainEditorView,\n });\n };\n\n get currentTerm() {\n return this.status && sayDataFactory.resourceNode(this.status.subject);\n }\n\n get modalTitle() {\n if (this.status?.mode === 'update') {\n return 'Edit relationship';\n } else {\n return 'Add relationship';\n }\n }\n\n <template>\n <AuCard\n @size=\"small\"\n @expandable={{true}}\n @manualControl={{true}}\n @openSection={{this.toggleSection}}\n @isExpanded={{this.expanded}}\n as |c|\n >\n <c.header class=\"say-flex-grow\">\n\n <AuToolbar\n class=\"au-u-flex au-u-flex-row au-u-flex--space-between\"\n as |Group|\n >\n <Group>\n <AuHeading @level=\"1\" @skin=\"6\">Document imported resources</AuHeading>\n </Group>\n {{#if (truthy this.documentImportedResources)}}\n <Group>\n <AuButton @skin=\"link\" {{on \"click\" this.openResourceModal}}>\n Add resource\n </AuButton>\n </Group>\n {{/if}}\n </AuToolbar>\n </c.header>\n <c.content class=\"au-c-content--tiny\">\n {{#if (truthy this.documentImportedResources)}}\n {{#if (not (isObjectEmpty this.importedResourceProperties))}}\n <AuList @divider={{true}} as |IRItem|>\n {{#each-in\n this.importedResourceProperties\n as |importedResource props|\n }}\n <IRItem>\n <div\n class=\"au-u-flex au-u-flex--row au-u-flex--between au-u-flex--vertical-center\"\n >\n <strong>{{importedResource}}</strong>\n <div>\n <AuButton\n @skin=\"link\"\n @icon={{PlusIcon}}\n role=\"button\"\n {{on\n \"click\"\n (fn this.startPropertyCreation importedResource)\n }}\n />\n <AuButton\n @skin=\"link\"\n @alert={{true}}\n @icon={{CrossIcon}}\n @disabled={{not (isEmpty props)}}\n role=\"button\"\n {{on\n \"click\"\n (fn this.removeImportedResource importedResource)\n }}\n />\n </div>\n </div>\n <AuList @divider={{true}} as |Item|>\n {{#each props as |prop|}}\n <Item\n class=\"au-u-flex au-u-flex--row au-u-flex--between au-u-flex--vertical-center\"\n >\n <div class=\"au-u-padding-tiny\">\n {{#if @controller}}\n <ConfigurableRdfaDisplay\n @value={{prop}}\n @generator={{predicateDisplay}}\n @context={{hash\n controller=@controller\n isTopLevel=false\n }}\n />\n {{/if}}\n <PropertyDetails\n @controller={{@controller}}\n @prop={{prop}}\n />\n </div>\n <AuDropdown\n @icon={{ThreeDotsIcon}}\n role=\"menu\"\n @alignment=\"left\"\n >\n <AuButton\n @skin=\"link\"\n @icon={{PencilIcon}}\n role=\"menuitem\"\n {{on\n \"click\"\n (fn\n this.startPropertyUpdate importedResource prop\n )\n }}\n >\n Edit property\n </AuButton>\n <AuButton\n @skin=\"link\"\n @icon={{BinIcon}}\n role=\"menuitem\"\n class=\"au-c-button--alert\"\n {{on \"click\" (fn this.removeProperty prop)}}\n >\n Remove property\n </AuButton>\n </AuDropdown>\n </Item>\n {{/each}}\n </AuList>\n </IRItem>\n {{/each-in}}\n </AuList>\n {{else}}\n <p class=\"au-u-italic\">This document does not define any imported\n resources.</p>\n {{/if}}\n {{else}}\n <AuAlert @icon=\"alert-triangle\" @skin=\"warning\">This document does not\n support defining imported resources.</AuAlert>\n {{/if}}\n </c.content>\n </AuCard>\n\n {{! Add imported resource modal }}\n <WithUniqueId as |formId|>\n <AuModal\n @modalOpen={{this.isResourceModalOpen}}\n @closable={{true}}\n @closeModal={{this.closeResourceModal}}\n >\n <:title>Add Imported Resource</:title>\n <:body>\n <DefineImportedResourceForm\n id={{formId}}\n @onSave={{this.addImportedResource}}\n @onCancel={{this.closeResourceModal}}\n @controller={{@controller}}\n />\n </:body>\n <:footer>\n <AuButtonGroup>\n <AuButton form={{formId}} type=\"submit\">Save</AuButton>\n <AuButton\n @skin=\"secondary\"\n {{on \"click\" this.closeResourceModal}}\n >Cancel</AuButton>\n </AuButtonGroup>\n </:footer>\n </AuModal>\n </WithUniqueId>\n\n {{#if this.status}}\n <RelationshipEditorDevModeModal\n @title={{this.modalTitle}}\n @initialData={{this.initialFormData}}\n @supportedDirections={{array \"property\"}}\n {{! @glint-expect-error }}\n @source={{this.currentTerm}}\n @optionGeneratorConfig={{@optionGeneratorConfig}}\n @onSubmit={{this.onFormSubmit}}\n @onCancel={{this.closeRelationshipModal}}\n />\n {{/if}}\n </template>\n}\n"],"names":["truthy","maybe","isObjectEmpty","obj","Object","keys","length","DocImportedResourceEditorCard","Component","g","prototype","localCopy","i","void 0","tracked","openResourceModal","event","preventDefault","stopPropagation","isResourceModalOpen","closeResourceModal","closeRelationshipModal","status","undefined","toggleSection","expanded","args","onToggle","documentNode","controller","mainEditorState","doc","getSubjectPropertyMap","importedResources","documentImportedResources","props","attrs","propsAndSubjects","map","prop","isLinkTriple","subjects","getSubjectsFromBacklinksOfRelationship","predicate","object","mapped","fromEntries","imp","forEach","subject","concat","irCache","importedResourceProperties","newMap","entries","deepEqualPropertyList","docNodeImportedResources","schema","nodes","spec","IMPORTED_RESOURCES_ATTR","Array","from","Set","additionalImportedResources","values","addImportedResource","resource","withTransaction","transaction","removeImportedResource","startPropertyCreation","initialFormData","direction","mode","startPropertyUpdate","property","term","sayDataFactory","namedNode","target","onFormSubmit","body","removeProperty","value","doCommand","addProperty","view","mainEditorView","propertyToRemove","documentResourceNode","currentTerm","resourceNode","modalTitle","setComponentTemplate","precompileTemplate","strictMode","scope","AuCard","AuToolbar","AuHeading","AuButton","on","not","AuList","PlusIcon","fn","CrossIcon","isEmpty","ConfigurableRdfaDisplay","predicateDisplay","hash","PropertyDetails","AuDropdown","ThreeDotsIcon","PencilIcon","BinIcon","AuAlert","WithUniqueId","AuModal","DefineImportedResourceForm","AuButtonGroup","RelationshipEditorDevModeModal","array"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"card.js","sources":["../../../../src/components/_private/doc-imported-resource-editor/card.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\nimport { isEmpty, not } from 'ember-truth-helpers';\nimport AuToolbar from '@appuniversum/ember-appuniversum/components/au-toolbar';\nimport AuHeading from '@appuniversum/ember-appuniversum/components/au-heading';\nimport AuButton from '@appuniversum/ember-appuniversum/components/au-button';\nimport AuButtonGroup from '@appuniversum/ember-appuniversum/components/au-button-group';\nimport AuList from '@appuniversum/ember-appuniversum/components/au-list';\nimport AuModal from '@appuniversum/ember-appuniversum/components/au-modal';\nimport AuDropdown from '@appuniversum/ember-appuniversum/components/au-dropdown';\nimport { ThreeDotsIcon } from '@appuniversum/ember-appuniversum/components/icons/three-dots';\nimport { PencilIcon } from '@appuniversum/ember-appuniversum/components/icons/pencil';\nimport { BinIcon } from '@appuniversum/ember-appuniversum/components/icons/bin';\nimport { PlusIcon } from '@appuniversum/ember-appuniversum/components/icons/plus';\nimport { CrossIcon } from '@appuniversum/ember-appuniversum/components/icons/cross';\nimport type SayController from '#root/core/say-controller.ts';\nimport {\n addImportedResource,\n removeImportedResource,\n} from '#root/plugins/rdfa-info/imported-resources.ts';\nimport WithUniqueId from '#root/components/_private/utils/with-unique-id.ts';\nimport {\n isLinkTriple,\n type OutgoingTriple,\n} from '#root/core/rdfa-processor.ts';\nimport { getSubjectsFromBacklinksOfRelationship } from '#root/utils/rdfa-utils.ts';\nimport { IMPORTED_RESOURCES_ATTR } from '#root/plugins/imported-resources/index.ts';\nimport PropertyDetails from '#root/components/_private/common/property-details.gts';\nimport { addProperty, removeProperty } from '#root/commands/index.ts';\nimport { deepEqualPropertyList } from '#root/plugins/rdfa-info/utils.ts';\nimport ConfigurableRdfaDisplay, {\n predicateDisplay,\n} from '#root/components/_private/common/configurable-rdfa-display.gts';\nimport DefineImportedResourceForm from './form.gts';\nimport AuCard from '@appuniversum/ember-appuniversum/components/au-card';\nimport { localCopy } from 'tracked-toolbox';\nimport type { SubmissionBody } from '#root/components/_private/relationship-editor/types.ts';\nimport RelationshipEditorDevModeModal from '../relationship-editor/modals/dev-mode.gts';\nimport { sayDataFactory } from '#root/core/say-data-factory/data-factory.ts';\nimport type { FormData } from '../relationship-editor/modals/dev-mode.gts';\nimport { array } from '@ember/helper';\nimport type { OptionGeneratorConfig } from '../relationship-editor/types.ts';\nimport AuAlert from '@appuniversum/ember-appuniversum/components/au-alert';\nimport { hash } from '@ember/helper';\n\ntype CreationStatus = {\n mode: 'creation';\n subject: string;\n};\ntype UpdateStatus = {\n mode: 'update';\n subject: string;\n property: OutgoingTriple;\n};\n\nexport type Status = CreationStatus | UpdateStatus;\n\ninterface Sig {\n Args: {\n controller: SayController;\n additionalImportedResources?: string[];\n expanded?: boolean;\n onToggle?: (expanded: boolean) => void;\n optionGeneratorConfig?: OptionGeneratorConfig;\n };\n Element: HTMLDivElement;\n}\n\n/** truth-helpers 'not' incorrectly treats [] as falsey */\nfunction truthy(maybe: unknown) {\n return !!maybe;\n}\n\nfunction isObjectEmpty(obj: Record<string, unknown>) {\n return Object.keys(obj).length === 0;\n}\n\nexport default class DocImportedResourceEditorCard extends Component<Sig> {\n @localCopy('args.expanded', true) declare expanded: boolean;\n\n @tracked isResourceModalOpen = false;\n\n openResourceModal = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.isResourceModalOpen = true;\n };\n closeResourceModal = () => (this.isResourceModalOpen = false);\n\n @tracked status?: Status;\n @tracked initialFormData?: FormData;\n closeRelationshipModal = () => (this.status = undefined);\n\n toggleSection = () => {\n this.expanded = !this.expanded;\n this.args.onToggle?.(this.expanded);\n };\n\n get documentNode() {\n return this.args.controller.mainEditorState.doc;\n }\n\n getSubjectPropertyMap(): Record<string, OutgoingTriple[]> {\n const importedResources = this.documentImportedResources;\n const props = this.documentNode.attrs['properties'] as OutgoingTriple[];\n if (!importedResources) return {};\n const propsAndSubjects = props.map((prop) => {\n if (!isLinkTriple(prop)) {\n return [];\n }\n const subjects = getSubjectsFromBacklinksOfRelationship(\n this.documentNode,\n importedResources,\n prop.predicate,\n prop.object,\n );\n return [prop, subjects] as [OutgoingTriple, string[]];\n });\n const mapped: Record<string, OutgoingTriple[]> = Object.fromEntries(\n importedResources.map((imp) => [imp, []]),\n );\n propsAndSubjects.forEach(([prop, subjects]) => {\n subjects?.forEach((subject) => {\n mapped[subject] = (mapped[subject] ?? []).concat(prop);\n });\n });\n return mapped;\n }\n\n // This isn't used to reduce re-calculations, just to re-use arrays when possible\n irCache: Record<string, OutgoingTriple[]> | undefined;\n get importedResourceProperties(): Record<string, OutgoingTriple[]> {\n if (!this.irCache) {\n // eslint-disable-next-line ember/no-side-effects\n this.irCache = {};\n }\n const newMap = this.getSubjectPropertyMap();\n // Re-use cached arrays if there are no changes to avoid re-renders that mess with on-clicks\n // eslint-disable-next-line ember/no-side-effects\n this.irCache = Object.fromEntries(\n Object.entries(newMap).map(([subject, props]) => {\n if (!this.irCache) return [subject, props];\n if (\n this.irCache[subject] &&\n deepEqualPropertyList(this.irCache[subject], props)\n ) {\n return [subject, this.irCache[subject]];\n } else {\n return [subject, props];\n }\n }),\n );\n return this.irCache;\n }\n\n /**\n * False if adding imported resources is not supported here, otherwise truthy, possibly empty\n * array\n */\n get documentImportedResources(): string[] | false {\n const docNodeImportedResources =\n !!this.args.controller?.schema.nodes['doc']?.spec.attrs?.[\n IMPORTED_RESOURCES_ATTR\n ] &&\n ((this.documentNode.attrs[IMPORTED_RESOURCES_ATTR] as string[]) || []);\n return (\n docNodeImportedResources &&\n Array.from(\n new Set<string>([\n ...(docNodeImportedResources || []),\n ...(this.args.additionalImportedResources || []),\n ]).values(),\n )\n );\n }\n\n addImportedResource = (resource: string) => {\n this.args.controller?.withTransaction(() => {\n if (!this.args.controller) return null;\n return addImportedResource({\n resource,\n })(this.args.controller.mainEditorState).transaction;\n });\n this.closeResourceModal();\n };\n removeImportedResource = (resource: string) => {\n this.args.controller?.withTransaction(() => {\n if (!this.args.controller) return null;\n return removeImportedResource({\n resource,\n })(this.args.controller.mainEditorState).transaction;\n });\n };\n startPropertyCreation = (resource: string, event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.initialFormData = {\n direction: 'property',\n };\n this.status = {\n mode: 'creation',\n subject: resource,\n };\n };\n startPropertyUpdate = (resource: string, property: OutgoingTriple) => {\n this.initialFormData = {\n direction: 'property',\n predicate: {\n direction: 'property',\n term: sayDataFactory.namedNode(property.predicate),\n },\n target: {\n // @ts-expect-error remove Blanknode as possible type\n term: property.object,\n },\n };\n this.status = {\n mode: 'update',\n subject: resource,\n property,\n };\n };\n\n onFormSubmit = (body: SubmissionBody) => {\n if (!this.status) {\n return;\n }\n if (this.status.mode === 'update') {\n this.removeProperty(this.status.property);\n }\n const { predicate, target } = body;\n if (predicate.direction === 'property') {\n const property = {\n predicate: predicate.term.value,\n object: target.term,\n };\n this.args.controller.doCommand(\n addProperty({\n resource: this.status.subject,\n // @ts-expect-error fix types\n property,\n }),\n {\n view: this.args.controller.mainEditorView,\n },\n );\n }\n\n this.closeRelationshipModal();\n };\n\n // TODO de-dupe this from property-editor?\n removeProperty = (property: OutgoingTriple) => {\n const propertyToRemove = {\n documentResourceNode: this.documentNode,\n importedResources: this.documentImportedResources || [],\n property,\n };\n this.args.controller?.doCommand(removeProperty(propertyToRemove), {\n view: this.args.controller.mainEditorView,\n });\n };\n\n get currentTerm() {\n return this.status && sayDataFactory.resourceNode(this.status.subject);\n }\n\n get modalTitle() {\n if (this.status?.mode === 'update') {\n return 'Edit relationship';\n } else {\n return 'Add relationship';\n }\n }\n\n <template>\n <AuCard\n @size=\"small\"\n @expandable={{true}}\n @manualControl={{true}}\n @openSection={{this.toggleSection}}\n @isExpanded={{this.expanded}}\n @disableAuContent={{true}}\n as |c|\n >\n <c.header class=\"say-flex-grow\">\n\n <AuToolbar\n class=\"au-u-flex au-u-flex-row au-u-flex--space-between\"\n as |Group|\n >\n <Group>\n <AuHeading @level=\"1\" @skin=\"6\">Document imported resources</AuHeading>\n </Group>\n {{#if (truthy this.documentImportedResources)}}\n <Group>\n <AuButton @skin=\"link\" {{on \"click\" this.openResourceModal}}>\n Add resource\n </AuButton>\n </Group>\n {{/if}}\n </AuToolbar>\n </c.header>\n <c.content class=\"au-c-content--tiny\">\n {{#if (truthy this.documentImportedResources)}}\n {{#if (not (isObjectEmpty this.importedResourceProperties))}}\n <AuList @divider={{true}} as |IRItem|>\n {{#each-in\n this.importedResourceProperties\n as |importedResource props|\n }}\n <IRItem>\n <div\n class=\"au-u-flex au-u-flex--row au-u-flex--between au-u-flex--vertical-center\"\n >\n <strong>{{importedResource}}</strong>\n <div>\n <AuButton\n @skin=\"link\"\n @icon={{PlusIcon}}\n role=\"button\"\n {{on\n \"click\"\n (fn this.startPropertyCreation importedResource)\n }}\n />\n <AuButton\n @skin=\"link\"\n @alert={{true}}\n @icon={{CrossIcon}}\n @disabled={{not (isEmpty props)}}\n role=\"button\"\n {{on\n \"click\"\n (fn this.removeImportedResource importedResource)\n }}\n />\n </div>\n </div>\n <AuList @divider={{true}} as |Item|>\n {{#each props as |prop|}}\n <Item\n class=\"au-u-flex au-u-flex--row au-u-flex--between au-u-flex--vertical-center\"\n >\n <div class=\"au-u-padding-tiny\">\n {{#if @controller}}\n <ConfigurableRdfaDisplay\n @value={{prop}}\n @generator={{predicateDisplay}}\n @context={{hash\n controller=@controller\n isTopLevel=false\n }}\n />\n {{/if}}\n <PropertyDetails\n @controller={{@controller}}\n @prop={{prop}}\n />\n </div>\n <AuDropdown\n @icon={{ThreeDotsIcon}}\n role=\"menu\"\n @alignment=\"left\"\n >\n <AuButton\n @skin=\"link\"\n @icon={{PencilIcon}}\n role=\"menuitem\"\n {{on\n \"click\"\n (fn\n this.startPropertyUpdate importedResource prop\n )\n }}\n >\n Edit property\n </AuButton>\n <AuButton\n @skin=\"link\"\n @icon={{BinIcon}}\n role=\"menuitem\"\n class=\"au-c-button--alert\"\n {{on \"click\" (fn this.removeProperty prop)}}\n >\n Remove property\n </AuButton>\n </AuDropdown>\n </Item>\n {{/each}}\n </AuList>\n </IRItem>\n {{/each-in}}\n </AuList>\n {{else}}\n <p class=\"au-u-italic\">This document does not define any imported\n resources.</p>\n {{/if}}\n {{else}}\n <AuAlert @icon=\"alert-triangle\" @skin=\"warning\">This document does not\n support defining imported resources.</AuAlert>\n {{/if}}\n </c.content>\n </AuCard>\n\n {{! Add imported resource modal }}\n <WithUniqueId as |formId|>\n <AuModal\n @modalOpen={{this.isResourceModalOpen}}\n @closable={{true}}\n @closeModal={{this.closeResourceModal}}\n >\n <:title>Add Imported Resource</:title>\n <:body>\n <DefineImportedResourceForm\n id={{formId}}\n @onSave={{this.addImportedResource}}\n @onCancel={{this.closeResourceModal}}\n @controller={{@controller}}\n />\n </:body>\n <:footer>\n <AuButtonGroup>\n <AuButton form={{formId}} type=\"submit\">Save</AuButton>\n <AuButton\n @skin=\"secondary\"\n {{on \"click\" this.closeResourceModal}}\n >Cancel</AuButton>\n </AuButtonGroup>\n </:footer>\n </AuModal>\n </WithUniqueId>\n\n {{#if this.status}}\n <RelationshipEditorDevModeModal\n @title={{this.modalTitle}}\n @initialData={{this.initialFormData}}\n @supportedDirections={{array \"property\"}}\n {{! @glint-expect-error }}\n @source={{this.currentTerm}}\n @optionGeneratorConfig={{@optionGeneratorConfig}}\n @onSubmit={{this.onFormSubmit}}\n @onCancel={{this.closeRelationshipModal}}\n />\n {{/if}}\n </template>\n}\n"],"names":["truthy","maybe","isObjectEmpty","obj","Object","keys","length","DocImportedResourceEditorCard","Component","g","prototype","localCopy","i","tracked","openResourceModal","event","preventDefault","stopPropagation","isResourceModalOpen","closeResourceModal","closeRelationshipModal","status","undefined","toggleSection","expanded","args","onToggle","documentNode","controller","mainEditorState","doc","getSubjectPropertyMap","importedResources","documentImportedResources","props","attrs","propsAndSubjects","map","prop","isLinkTriple","subjects","getSubjectsFromBacklinksOfRelationship","predicate","object","mapped","fromEntries","imp","forEach","subject","concat","irCache","importedResourceProperties","newMap","entries","deepEqualPropertyList","docNodeImportedResources","schema","nodes","spec","IMPORTED_RESOURCES_ATTR","Array","from","Set","additionalImportedResources","values","addImportedResource","resource","withTransaction","transaction","removeImportedResource","startPropertyCreation","initialFormData","direction","mode","startPropertyUpdate","property","term","sayDataFactory","namedNode","target","onFormSubmit","body","removeProperty","value","doCommand","addProperty","view","mainEditorView","propertyToRemove","documentResourceNode","currentTerm","resourceNode","modalTitle","setComponentTemplate","precompileTemplate","strictMode","scope","AuCard","AuToolbar","AuHeading","AuButton","on","not","AuList","PlusIcon","fn","CrossIcon","isEmpty","ConfigurableRdfaDisplay","predicateDisplay","hash","PropertyDetails","AuDropdown","ThreeDotsIcon","PencilIcon","BinIcon","AuAlert","WithUniqueId","AuModal","DefineImportedResourceForm","AuButtonGroup","RelationshipEditorDevModeModal","array"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsEA,0DACA,SAASA,MAAAA,CAAOC,KAAc,EAAA;EAC5B,OAAO,CAAC,CAACA,KAAA;AACX;AAEA,SAASC,cAAcC,GAA4B,EAAA;EACjD,OAAOC,MAAA,CAAOC,IAAI,CAACF,GAAA,CAAA,CAAKG,MAAM,KAAK,CAAA;AACrC;AAEe,MAAMC,sCAAsCC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,UAAA,EAAA,CAClEC,UAAU,eAAA,EAAiB,IAAA,CAAA,CAAA,CAAA;AAAA;EAAA,SAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,qBAAA,EAAA,CAE3BG,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA8B,KAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,oBAAA,IAAAD,CAAA,CAAA,IAAA,EAAA,qBAAA,CAAA,EAAA,MAAA;EAE/BE,iBAAA,GAAqBC,KAAO,IAAA;IAC1BA,KAAA,CAAMC,cAAc,EAAA;IACpBD,KAAA,CAAME,eAAe,EAAA;IACrB,IAAI,CAACC,mBAAmB,GAAG,IAAA;EAC7B,CAAA;AACAC,EAAAA,kBAAA,GAAqBA,MAAO,IAAI,CAACD,mBAAmB,GAAG,KAAK;AAAE,EAAA;IAAAT,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,QAAA,EAAA,CAE7DG,OAAA,CAAA,CAAA;AAAA;EAAA,OAAA,IAAAD,CAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,iBAAA,EAAA,CACAG,OAAA,CAAA,CAAA;AAAA;EAAA,gBAAA,IAAAD,CAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,EAAA,MAAA;AACDQ,EAAAA,sBAAA,GAAyBA,MAAO,IAAI,CAACC,MAAM,GAAGC,SAAS;EAEvDC,aAAA,GAAgBA,MAAA;AACd,IAAA,IAAI,CAACC,QAAQ,GAAG,CAAC,IAAI,CAACA,QAAQ;IAC9B,IAAI,CAACC,IAAI,CAACC,QAAQ,GAAG,IAAI,CAACF,QAAQ,CAAA;EACpC,CAAA;EAEA,IAAIG,YAAAA,GAAe;IACjB,OAAO,IAAI,CAACF,IAAI,CAACG,UAAU,CAACC,eAAe,CAACC,GAAG;AACjD,EAAA;AAEAC,EAAAA,qBAAAA,GAA0D;AACxD,IAAA,MAAMC,iBAAA,GAAoB,IAAI,CAACC,yBAAyB;IACxD,MAAMC,KAAA,GAAQ,IAAI,CAACP,YAAY,CAACQ,KAAK,CAAC,aAAiB;AACvD,IAAA,IAAI,CAACH,iBAAA,EAAmB,OAAO,EAAC;AAChC,IAAA,MAAMI,gBAAA,GAAmBF,KAAA,CAAMG,GAAG,CAAEC,IAAA,IAAA;AAClC,MAAA,IAAI,CAACC,aAAaD,IAAA,CAAA,EAAO;AACvB,QAAA,OAAO,EAAE;AACX,MAAA;AACA,MAAA,MAAME,QAAA,GAAWC,sCAAA,CACf,IAAI,CAACd,YAAY,EACjBK,iBAAA,EACAM,IAAA,CAAKI,SAAS,EACdJ,IAAA,CAAKK,MAAM,CAAA;AAEb,MAAA,OAAO,CAACL,IAAA,EAAME,QAAA,CAAS;AACzB,IAAA,CAAA,CAAA;AACA,IAAA,MAAMI,MAAuB,GAAoBxC,MAAA,CAAOyC,WAAW,CACjEb,iBAAA,CAAkBK,GAAG,CAAES,GAAA,IAAQ,CAACA,GAAA,EAAK,EAAE,CAAC,CAAA,CAAA;IAE1CV,gBAAA,CAAiBW,OAAO,CAAC,CAAC,CAACT,MAAME,QAAA,CAAS,KAAA;AACxCA,MAAAA,QAAA,EAAUO,QAASC,OAAA,IAAA;AACjBJ,QAAAA,MAAM,CAACI,OAAA,CAAQ,GAAG,CAACJ,MAAM,CAACI,OAAA,CAAQ,IAAI,EAAE,EAAEC,MAAM,CAACX,IAAA,CAAA;AACnD,MAAA,CAAA,CAAA;AACF,IAAA,CAAA,CAAA;AACA,IAAA,OAAOM,MAAA;AACT,EAAA;AAEA;EACAM,OAAA;EACA,IAAIC,0BAAAA,GAA+D;AACjE,IAAA,IAAI,CAAC,IAAI,CAACD,OAAO,EAAE;AACjB;AACA,MAAA,IAAI,CAACA,OAAO,GAAG,EAAC;AAClB,IAAA;AACA,IAAA,MAAME,MAAA,GAAS,IAAI,CAACrB,qBAAqB,EAAA;AACzC;AACA;IACA,IAAI,CAACmB,OAAO,GAAG9C,MAAA,CAAOyC,WAAW,CAC/BzC,MAAA,CAAOiD,OAAO,CAACD,QAAQf,GAAG,CAAC,CAAC,CAACW,SAASd,KAAA,CAAM,KAAA;MAC1C,IAAI,CAAC,IAAI,CAACgB,OAAO,EAAE,OAAO,CAACF,OAAA,EAASd,KAAA,CAAM;AAC1C,MAAA,IACE,IAAI,CAACgB,OAAO,CAACF,OAAA,CAAQ,IACrBM,qBAAA,CAAsB,IAAI,CAACJ,OAAO,CAACF,OAAA,CAAQ,EAAEd,KAAA,CAAA,EAC7C;QACA,OAAO,CAACc,OAAA,EAAS,IAAI,CAACE,OAAO,CAACF,OAAA,CAAQ,CAAC;AACzC,MAAA,CAAA,MAAO;AACL,QAAA,OAAO,CAACA,OAAA,EAASd,KAAA,CAAM;AACzB,MAAA;AACF,IAAA,CAAA,CAAA,CAAA;IAEF,OAAO,IAAI,CAACgB,OAAO;AACrB,EAAA;AAEA;;;AAGC;EACD,IAAIjB,yBAAAA,GAA8C;AAChD,IAAA,MAAMsB,wBAAA,GACJ,CAAC,CAAC,IAAI,CAAC9B,IAAI,CAACG,UAAU,EAAE4B,MAAA,CAAOC,KAAK,CAAC,KAAA,CAAM,EAAEC,IAAA,CAAKvB,KAAA,GAChDwB,uBAAA,CACD,KACC,IAAI,CAAChC,YAAY,CAACQ,KAAK,CAACwB,uBAAA,CAAwB,IAAiB,EAAE,CAAA;AACvE,IAAA,OACEJ,4BACAK,KAAA,CAAMC,IAAI,CACR,IAAIC,GAAA,CAAY,CACX,IAACP,4BAA4B,EAAE,CAAA,EAC/B,IAAC,IAAI,CAAC9B,IAAI,CAACsC,2BAA2B,IAAI,EAAE,CAAA,CAChD,CAAA,CAAEC,MAAM,EAAA,CAEb;AACF,EAAA;EAEAC,mBAAA,GAAuBC,QAAgB,IAAA;AACrC,IAAA,IAAI,CAACzC,IAAI,CAACG,UAAU,EAAEuC,eAAA,CAAgB,MAAA;MACpC,IAAI,CAAC,IAAI,CAAC1C,IAAI,CAACG,UAAU,EAAE,OAAO,IAAA;AAClC,MAAA,OAAOqC,mBAAA,CAAoB;AACzBC,QAAAA;OACF,CAAA,CAAG,IAAI,CAACzC,IAAI,CAACG,UAAU,CAACC,eAAe,EAAEuC,WAAW;AACtD,IAAA,CAAA,CAAA;IACA,IAAI,CAACjD,kBAAkB,EAAA;EACzB,CAAA;EACAkD,sBAAA,GAA0BH,QAAgB,IAAA;AACxC,IAAA,IAAI,CAACzC,IAAI,CAACG,UAAU,EAAEuC,eAAA,CAAgB,MAAA;MACpC,IAAI,CAAC,IAAI,CAAC1C,IAAI,CAACG,UAAU,EAAE,OAAO,IAAA;AAClC,MAAA,OAAOyC,sBAAA,CAAuB;AAC5BH,QAAAA;OACF,CAAA,CAAG,IAAI,CAACzC,IAAI,CAACG,UAAU,CAACC,eAAe,EAAEuC,WAAW;AACtD,IAAA,CAAA,CAAA;EACF,CAAA;AACAE,EAAAA,qBAAA,GAAwBA,CAACJ,QAAgB,EAAEnD,KAAO,KAAA;IAChDA,KAAA,CAAMC,cAAc,EAAA;IACpBD,KAAA,CAAME,eAAe,EAAA;IACrB,IAAI,CAACsD,eAAe,GAAG;AACrBC,MAAAA,SAAA,EAAW;KACb;IACA,IAAI,CAACnD,MAAM,GAAG;AACZoD,MAAAA,IAAA,EAAM,UAAA;AACNzB,MAAAA,OAAA,EAASkB;KACX;EACF,CAAA;AACAQ,EAAAA,mBAAA,GAAsBA,CAACR,QAAgB,EAAES,QAAU,KAAA;IACjD,IAAI,CAACJ,eAAe,GAAG;AACrBC,MAAAA,SAAA,EAAW,UAAA;AACX9B,MAAAA,SAAA,EAAW;AACT8B,QAAAA,SAAA,EAAW,UAAA;AACXI,QAAAA,IAAA,EAAMC,cAAA,CAAeC,SAAS,CAACH,QAAA,CAASjC,SAAS;OACnD;AACAqC,MAAAA,MAAA,EAAQ;AACN;QACAH,IAAA,EAAMD,SAAShC;AACjB;KACF;IACA,IAAI,CAACtB,MAAM,GAAG;AACZoD,MAAAA,IAAA,EAAM,QAAA;AACNzB,MAAAA,OAAA,EAASkB,QAAA;AACTS,MAAAA;KACF;EACF,CAAA;EAEAK,YAAA,GAAgBC,IAAM,IAAA;AACpB,IAAA,IAAI,CAAC,IAAI,CAAC5D,MAAM,EAAE;AAChB,MAAA;AACF,IAAA;AACA,IAAA,IAAI,IAAI,CAACA,MAAM,CAACoD,IAAI,KAAK,QAAA,EAAU;MACjC,IAAI,CAACS,cAAc,CAAC,IAAI,CAAC7D,MAAM,CAACsD,QAAQ,CAAA;AAC1C,IAAA;IACA,MAAM;MAAEjC,SAAS;AAAEqC,MAAAA;KAAQ,GAAGE,IAAA;AAC9B,IAAA,IAAIvC,SAAA,CAAU8B,SAAS,KAAK,UAAA,EAAY;AACtC,MAAA,MAAMG,QAAA,GAAW;AACfjC,QAAAA,SAAA,EAAWA,SAAA,CAAUkC,IAAI,CAACO,KAAK;QAC/BxC,MAAA,EAAQoC,OAAOH;OACjB;MACA,IAAI,CAACnD,IAAI,CAACG,UAAU,CAACwD,SAAS,CAC5BC,WAAA,CAAY;AACVnB,QAAAA,QAAA,EAAU,IAAI,CAAC7C,MAAM,CAAC2B,OAAO;AAC7B;AACA2B,QAAAA;AACF,OAAA,CAAA,EACA;AACEW,QAAAA,IAAA,EAAM,IAAI,CAAC7D,IAAI,CAACG,UAAU,CAAC2D;AAC7B,OAAA,CAAA;AAEJ,IAAA;IAEA,IAAI,CAACnE,sBAAsB,EAAA;EAC7B,CAAA;AAEA;EACA8D,cAAA,GAAkBP,QAAU,IAAA;AAC1B,IAAA,MAAMa,gBAAA,GAAmB;MACvBC,oBAAA,EAAsB,IAAI,CAAC9D,YAAY;AACvCK,MAAAA,iBAAA,EAAmB,IAAI,CAACC,yBAAyB,IAAI,EAAE;AACvD0C,MAAAA;KACF;IACA,IAAI,CAAClD,IAAI,CAACG,UAAU,EAAEwD,SAAA,CAAUF,eAAeM,gBAAA,CAAA,EAAmB;AAChEF,MAAAA,IAAA,EAAM,IAAI,CAAC7D,IAAI,CAACG,UAAU,CAAC2D;AAC7B,KAAA,CAAA;EACF,CAAA;EAEA,IAAIG,WAAAA,GAAc;AAChB,IAAA,OAAO,IAAI,CAACrE,MAAM,IAAIwD,cAAA,CAAec,YAAY,CAAC,IAAI,CAACtE,MAAM,CAAC2B,OAAO,CAAA;AACvE,EAAA;EAEA,IAAI4C,UAAAA,GAAa;AACf,IAAA,IAAI,IAAI,CAACvE,MAAM,EAAEoD,SAAS,QAAA,EAAU;AAClC,MAAA,OAAO,mBAAA;AACT,IAAA,CAAA,MAAO;AACL,MAAA,OAAO,kBAAA;AACT,IAAA;AACF,EAAA;AAEA,EAAA;IAAAoB,oBAAA,CAAAC,kBAAA,CAAA,igJAAA,EA0KA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,MAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAnG,MAAA;QAAAoG,QAAA;QAAAC,EAAA;QAAAC,GAAA;QAAApG,aAAA;QAAAqG,MAAA;QAAAC,QAAA;QAAAC,EAAA;QAAAC,SAAA;QAAAC,OAAA;QAAAC,uBAAA;QAAAC,gBAAA;QAAAC,IAAA;QAAAC,eAAA;QAAAC,UAAA;QAAAC,aAAA;QAAAC,UAAA;QAAAC,OAAA;QAAAC,OAAA;sBAAAC,qBAAA;QAAAC,OAAA;oCAAAC,2BAAA;QAAAC,aAAA;QAAAC,8BAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.js","sources":["../../../../src/components/_private/doc-imported-resource-editor/form.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { ValidationError, string } from 'yup';\nimport type SayController from '#root/core/say-controller.ts';\nimport { on } from '@ember/modifier';\nimport AuFormRow from '@appuniversum/ember-appuniversum/components/au-form-row';\nimport AuLabel from '@appuniversum/ember-appuniversum/components/au-label';\nimport AuPill from '@appuniversum/ember-appuniversum/components/au-pill';\nimport AuInput from '@appuniversum/ember-appuniversum/components/au-input';\nimport WithUniqueId from '#root/components/_private/utils/with-unique-id.ts';\n\nconst resourceSchema = string().curie().required();\n\ninterface Sig {\n Args: {\n onSave: (resource: string) => void;\n onCancel: () => void;\n controller?: SayController;\n };\n Element: HTMLFormElement;\n}\n\nexport default class ImportedResourceCreatorForm extends Component<Sig> {\n @tracked\n resource: string | undefined = undefined;\n @tracked\n errors: ValidationError[] = [];\n\n validateForm(): string | false {\n this.errors = [];\n try {\n return resourceSchema.validateSync(this.resource);\n } catch (e) {\n if (e instanceof ValidationError) {\n this.errors = e.inner;\n return false;\n } else {\n throw e;\n }\n }\n }\n findError = (path: string) => {\n return this.errors.find((error) => error.path === path)?.message ?? null;\n };\n\n handleInput = (event: Event) => {\n this.resource =\n (event.currentTarget &&\n 'value' in event.currentTarget &&\n (event.currentTarget?.value as string)) ||\n '';\n };\n handleSubmit = (event: SubmitEvent) => {\n event.preventDefault();\n const validated = this.validateForm();\n if (validated) {\n this.args.onSave(validated);\n }\n };\n\n <template>\n <form ...attributes {{on \"submit\" this.handleSubmit}}>\n <AuFormRow>\n <WithUniqueId as |id|>\n {{#let \"resource\" as |name|}}\n {{#let (this.findError name) as |error|}}\n <AuLabel\n for={{id}}\n @required={{true}}\n @requiredLabel=\"Required\"\n >Resource</AuLabel>\n <AuInput\n id={{id}}\n name={{name}}\n value={{this.resource}}\n required={{true}}\n @width=\"block\"\n {{on \"input\" this.handleInput}}\n />\n {{#if error}}\n <AuPill>{{error}}</AuPill>\n {{/if}}\n {{/let}}\n {{/let}}\n </WithUniqueId>\n </AuFormRow>\n </form>\n </template>\n}\n"],"names":["resourceSchema","string","curie","required","ImportedResourceCreatorForm","Component","g","prototype","tracked","undefined","i","
|
|
1
|
+
{"version":3,"file":"form.js","sources":["../../../../src/components/_private/doc-imported-resource-editor/form.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { ValidationError, string } from 'yup';\nimport type SayController from '#root/core/say-controller.ts';\nimport { on } from '@ember/modifier';\nimport AuFormRow from '@appuniversum/ember-appuniversum/components/au-form-row';\nimport AuLabel from '@appuniversum/ember-appuniversum/components/au-label';\nimport AuPill from '@appuniversum/ember-appuniversum/components/au-pill';\nimport AuInput from '@appuniversum/ember-appuniversum/components/au-input';\nimport WithUniqueId from '#root/components/_private/utils/with-unique-id.ts';\n\nconst resourceSchema = string().curie().required();\n\ninterface Sig {\n Args: {\n onSave: (resource: string) => void;\n onCancel: () => void;\n controller?: SayController;\n };\n Element: HTMLFormElement;\n}\n\nexport default class ImportedResourceCreatorForm extends Component<Sig> {\n @tracked\n resource: string | undefined = undefined;\n @tracked\n errors: ValidationError[] = [];\n\n validateForm(): string | false {\n this.errors = [];\n try {\n return resourceSchema.validateSync(this.resource);\n } catch (e) {\n if (e instanceof ValidationError) {\n this.errors = e.inner;\n return false;\n } else {\n throw e;\n }\n }\n }\n findError = (path: string) => {\n return this.errors.find((error) => error.path === path)?.message ?? null;\n };\n\n handleInput = (event: Event) => {\n this.resource =\n (event.currentTarget &&\n 'value' in event.currentTarget &&\n (event.currentTarget?.value as string)) ||\n '';\n };\n handleSubmit = (event: SubmitEvent) => {\n event.preventDefault();\n const validated = this.validateForm();\n if (validated) {\n this.args.onSave(validated);\n }\n };\n\n <template>\n <form ...attributes {{on \"submit\" this.handleSubmit}}>\n <AuFormRow>\n <WithUniqueId as |id|>\n {{#let \"resource\" as |name|}}\n {{#let (this.findError name) as |error|}}\n <AuLabel\n for={{id}}\n @required={{true}}\n @requiredLabel=\"Required\"\n >Resource</AuLabel>\n <AuInput\n id={{id}}\n name={{name}}\n value={{this.resource}}\n required={{true}}\n @width=\"block\"\n {{on \"input\" this.handleInput}}\n />\n {{#if error}}\n <AuPill>{{error}}</AuPill>\n {{/if}}\n {{/let}}\n {{/let}}\n </WithUniqueId>\n </AuFormRow>\n </form>\n </template>\n}\n"],"names":["resourceSchema","string","curie","required","ImportedResourceCreatorForm","Component","g","prototype","tracked","undefined","i","validateForm","errors","validateSync","resource","e","ValidationError","inner","findError","path","find","error","message","handleInput","event","currentTarget","value","handleSubmit","preventDefault","validated","args","onSave","setComponentTemplate","precompileTemplate","strictMode","scope","on","AuFormRow","WithUniqueId","AuLabel","AuInput","AuPill"],"mappings":";;;;;;;;;;;;;AAWA,MAAMA,cAAA,GAAiBC,MAAA,EAAA,CAASC,KAAK,EAAA,CAAGC,QAAQ,EAAA;AAWjC,MAAMC,oCAAoCC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,UAAA,EAAA,CAChEC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAC8BC,SAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,SAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,QAAA,EAAA,CAC9BC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAC2B,EAAE;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,OAAA,IAAAE,CAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAA,MAAA;AAE9BC,EAAAA,YAAAA,GAA+B;IAC7B,IAAI,CAACC,MAAM,GAAG,EAAE;IAChB,IAAI;AACF,MAAA,OAAOZ,cAAA,CAAea,YAAY,CAAC,IAAI,CAACC,QAAQ,CAAA;IAClD,CAAA,CAAE,OAAOC,CAAA,EAAG;MACV,IAAIA,aAAaC,eAAA,EAAiB;AAChC,QAAA,IAAI,CAACJ,MAAM,GAAGG,CAAA,CAAEE,KAAK;AACrB,QAAA,OAAO,KAAA;AACT,MAAA,CAAA,MAAO;AACL,QAAA,MAAMF,CAAA;AACR,MAAA;AACF,IAAA;AACF,EAAA;EACAG,SAAA,GAAaC,IAAY,IAAA;AACvB,IAAA,OAAO,IAAI,CAACP,MAAM,CAACQ,IAAI,CAAEC,KAAA,IAAUA,KAAA,CAAMF,IAAI,KAAKA,IAAA,CAAA,EAAOG,OAAA,IAAW,IAAA;EACtE,CAAA;EAEAC,WAAA,GAAeC,KAAO,IAAA;AACpB,IAAA,IAAI,CAACV,QAAQ,GACVU,KAAA,CAAMC,aAAa,IAClB,OAAA,IAAWD,KAAA,CAAMC,aAAa,IAC7BD,KAAA,CAAMC,aAAa,EAAEC,KAAgB,IACxC,EAAA;EACJ,CAAA;EACAC,YAAA,GAAgBH,KAAO,IAAA;IACrBA,KAAA,CAAMI,cAAc,EAAA;AACpB,IAAA,MAAMC,SAAA,GAAY,IAAI,CAAClB,YAAY,EAAA;AACnC,IAAA,IAAIkB,SAAA,EAAW;AACb,MAAA,IAAI,CAACC,IAAI,CAACC,MAAM,CAACF,SAAA,CAAA;AACnB,IAAA;EACF,CAAA;AAEA,EAAA;IAAAG,oBAAA,CAAAC,kBAAA,CAAA,kpBAAA,EA2BA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,EAAA;QAAAC,SAAA;sBAAAC,qBAAA;QAAAC,OAAA;QAAAC,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -97,7 +97,7 @@ class ExternalTripleEditorCard extends Component {
|
|
|
97
97
|
this.controller.mainEditorView.dispatch(tr);
|
|
98
98
|
};
|
|
99
99
|
static {
|
|
100
|
-
setComponentTemplate(precompileTemplate("\n <AuCard @size=\"small\" @expandable={{true}} @manualControl={{true}} @openSection={{this.toggleSection}} @isExpanded={{this.expanded}} as |c|>\n <c.header class=\"say-flex-grow\">\n <AuToolbar class=\"au-u-flex au-u-flex-row au-u-flex--space-between\" as |Group|>\n <Group>\n <AuHeading @level=\"1\" @skin=\"6\">External Triples</AuHeading>\n </Group>\n <Group>\n <AuButton @skin=\"link\" {{on \"click\" this.addTriple}}>\n Add triple\n </AuButton>\n </Group>\n </AuToolbar>\n </c.header>\n <c.content class=\"au-c-content--tiny\">\n {{#if this.externalTriples.length}}\n <AuList @divider={{true}} as |Item|>\n {{#each this.externalTriples as |trip index|}}\n <Item>\n <ExternalTripleItem @trip={{trip}} @index={{index}} @onEdit={{this.editTriple}} @onRemove={{this.removeTriple}} />\n </Item>\n {{/each}}\n </AuList>\n {{else}}\n <p class=\"au-u-italic\">This document does not define any external\n triples.</p>\n {{/if}}\n </c.content>\n </AuCard>\n <EditModal @modalOpen={{this.editModalOpen}} @onCancel={{this.closeModal}} @onSubmit={{this.updateExternalTriples}} @triple={{this.tripleBeingEdited}} />\n ", {
|
|
100
|
+
setComponentTemplate(precompileTemplate("\n <AuCard @size=\"small\" @expandable={{true}} @manualControl={{true}} @openSection={{this.toggleSection}} @isExpanded={{this.expanded}} @disableAuContent={{true}} as |c|>\n <c.header class=\"say-flex-grow\">\n <AuToolbar class=\"au-u-flex au-u-flex-row au-u-flex--space-between\" as |Group|>\n <Group>\n <AuHeading @level=\"1\" @skin=\"6\">External Triples</AuHeading>\n </Group>\n <Group>\n <AuButton @skin=\"link\" {{on \"click\" this.addTriple}}>\n Add triple\n </AuButton>\n </Group>\n </AuToolbar>\n </c.header>\n <c.content class=\"au-c-content--tiny\">\n {{#if this.externalTriples.length}}\n <AuList @divider={{true}} as |Item|>\n {{#each this.externalTriples as |trip index|}}\n <Item>\n <ExternalTripleItem @trip={{trip}} @index={{index}} @onEdit={{this.editTriple}} @onRemove={{this.removeTriple}} />\n </Item>\n {{/each}}\n </AuList>\n {{else}}\n <p class=\"au-u-italic\">This document does not define any external\n triples.</p>\n {{/if}}\n </c.content>\n </AuCard>\n <EditModal @modalOpen={{this.editModalOpen}} @onCancel={{this.closeModal}} @onSubmit={{this.updateExternalTriples}} @triple={{this.tripleBeingEdited}} />\n ", {
|
|
101
101
|
strictMode: true,
|
|
102
102
|
scope: () => ({
|
|
103
103
|
AuCard,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.js","sources":["../../../../src/components/_private/external-triple-editor/card.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport type SayController from '#root/core/say-controller.ts';\nimport AuToolbar from '@appuniversum/ember-appuniversum/components/au-toolbar';\nimport AuHeading from '@appuniversum/ember-appuniversum/components/au-heading';\nimport AuModal from '@appuniversum/ember-appuniversum/components/au-modal';\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 type { ResolvedPNode } from '#root/utils/_private/types.ts';\nimport { tracked } from '@glimmer/tracking';\nimport type { FullTriple } from '#root/core/rdfa-processor.ts';\nimport ExternalTripleForm from './form.gts';\nimport { transformExternalTriples } from '#root/utils/external-triple-utils.ts';\nimport { PencilIcon } from '@appuniversum/ember-appuniversum/components/icons/pencil';\nimport AuDropdown from '@appuniversum/ember-appuniversum/components/au-dropdown';\nimport { ThreeDotsIcon } from '@appuniversum/ember-appuniversum/components/icons/three-dots';\nimport { BinIcon } from '@appuniversum/ember-appuniversum/components/icons/bin';\nimport { fn } from '@ember/helper';\nimport AuList from '@appuniversum/ember-appuniversum/components/au-list';\nimport { isSome, type Option } from '#root/utils/_private/option.ts';\nimport WithUniqueId from '#root/components/_private/utils/with-unique-id.ts';\nimport { modifier } from 'ember-modifier';\nimport { action } from '@ember/object';\nimport AuCard from '@appuniversum/ember-appuniversum/components/au-card';\nimport { localCopy } from 'tracked-toolbox';\n\ninterface Sig {\n Args: {\n controller: SayController;\n node: ResolvedPNode;\n expanded?: boolean;\n onToggle?: (expanded: boolean) => void;\n };\n}\nexport default class ExternalTripleEditorCard extends Component<Sig> {\n @localCopy('args.expanded', true) declare expanded: boolean;\n\n @tracked\n editModalOpen = false;\n @tracked\n indexBeingEdited?: number;\n\n toggleSection = () => {\n this.expanded = !this.expanded;\n this.args.onToggle?.(this.expanded);\n };\n\n get node() {\n return this.args.node;\n }\n get externalTriples(): FullTriple[] {\n return (this.node.value.attrs['externalTriples'] as FullTriple[]) ?? [];\n }\n get controller() {\n return this.args.controller;\n }\n get tripleBeingEdited(): Option<FullTriple> {\n if (isSome(this.indexBeingEdited)) {\n return this.externalTriples[this.indexBeingEdited];\n }\n return null;\n }\n closeModal = () => {\n this.editModalOpen = false;\n };\n updateExternalTriples = (trip: FullTriple) => {\n let tr;\n if (isSome(this.indexBeingEdited)) {\n const index = this.indexBeingEdited;\n tr = transformExternalTriples((triples) => {\n const copy = [...triples];\n copy.splice(index, 1, trip);\n return copy;\n }, this.args.node.pos)(this.controller.mainEditorState).transaction;\n } else {\n tr = transformExternalTriples(\n (triples) => triples.concat(trip),\n this.args.node.pos,\n )(this.controller.mainEditorState).transaction;\n }\n\n this.controller.mainEditorView.dispatch(tr);\n\n this.closeModal();\n };\n startTripleEdit = (index?: number) => {\n this.indexBeingEdited = index;\n\n this.editModalOpen = true;\n };\n addTriple = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.startTripleEdit();\n };\n editTriple = (index: number) => {\n this.startTripleEdit(index);\n };\n removeTriple = (index: number) => {\n const tr = transformExternalTriples((triples) => {\n const clone = [...triples];\n clone.splice(index, 1);\n return clone;\n }, this.args.node.pos)(this.controller.mainEditorState).transaction;\n this.controller.mainEditorView.dispatch(tr);\n };\n <template>\n <AuCard\n @size=\"small\"\n @expandable={{true}}\n @manualControl={{true}}\n @openSection={{this.toggleSection}}\n @isExpanded={{this.expanded}}\n as |c|\n >\n <c.header class=\"say-flex-grow\">\n <AuToolbar\n class=\"au-u-flex au-u-flex-row au-u-flex--space-between\"\n as |Group|\n >\n <Group>\n <AuHeading @level=\"1\" @skin=\"6\">External Triples</AuHeading>\n </Group>\n <Group>\n <AuButton @skin=\"link\" {{on \"click\" this.addTriple}}>\n Add triple\n </AuButton>\n </Group>\n </AuToolbar>\n </c.header>\n <c.content class=\"au-c-content--tiny\">\n {{#if this.externalTriples.length}}\n <AuList @divider={{true}} as |Item|>\n {{#each this.externalTriples as |trip index|}}\n <Item>\n <ExternalTripleItem\n @trip={{trip}}\n @index={{index}}\n @onEdit={{this.editTriple}}\n @onRemove={{this.removeTriple}}\n />\n </Item>\n {{/each}}\n </AuList>\n {{else}}\n <p class=\"au-u-italic\">This document does not define any external\n triples.</p>\n {{/if}}\n </c.content>\n </AuCard>\n <EditModal\n @modalOpen={{this.editModalOpen}}\n @onCancel={{this.closeModal}}\n @onSubmit={{this.updateExternalTriples}}\n @triple={{this.tripleBeingEdited}}\n />\n </template>\n}\n\ninterface EditModalSig {\n Args: {\n modalOpen: boolean;\n onCancel: () => void;\n onSubmit: (trip: FullTriple) => void;\n triple?: Option<FullTriple>;\n };\n}\n\nclass EditModal extends Component<EditModalSig> {\n @action\n onFormKeyDown(formElement: HTMLFormElement, event: KeyboardEvent) {\n if (event.key === 'Enter' && (event.ctrlKey || event.metaKey)) {\n formElement.requestSubmit();\n }\n return true;\n }\n\n @tracked initiallyFocusedElement?: HTMLElement;\n\n initialFocus = modifier((element: HTMLElement) => {\n this.initiallyFocusedElement = element;\n });\n\n <template>\n <WithUniqueId as |formId|>\n <AuModal\n @modalOpen={{@modalOpen}}\n @closable={{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>Edit external triples</:title>\n <:body>\n <ExternalTripleForm\n @initialFocus={{this.initialFocus}}\n @onSubmit={{@onSubmit}}\n id={{formId}}\n @triple={{@triple}}\n @onKeyDown={{this.onFormKeyDown}}\n />\n </:body>\n <:footer>\n <AuButtonGroup>\n <AuButton form={{formId}} type=\"submit\">Save</AuButton>\n <AuButton\n @skin=\"secondary\"\n {{on \"click\" @onCancel}}\n >Cancel</AuButton>\n </AuButtonGroup>\n </:footer>\n </AuModal>\n </WithUniqueId>\n </template>\n}\n\ninterface ExternalTripleItemSig {\n Args: {\n trip: FullTriple;\n index: number;\n onRemove: (index: number) => void;\n onEdit: (index: number) => void;\n };\n}\nclass ExternalTripleItem extends Component<ExternalTripleItemSig> {\n get datatype() {\n const trip = this.args.trip;\n if (trip.object.termType === 'Literal') {\n return trip.object.datatype.value;\n }\n return null;\n }\n get language() {\n const trip = this.args.trip;\n if (trip.object.termType === 'Literal') {\n return trip.object.language;\n }\n return null;\n }\n <template>\n <div class=\"au-u-padding-tiny\">\n <p><strong>subject:</strong> {{@trip.subject.value}}</p>\n <p><strong>predicate:</strong> {{@trip.predicate}}</p>\n {{#if this.datatype}}\n <p><strong>datatype:</strong> {{this.datatype}}</p>\n {{/if}}\n {{#if this.language}}\n <p><strong>language:</strong> {{this.language}}</p>\n {{/if}}\n <p><strong>value:</strong> {{@trip.object.value}}</p>\n </div>\n\n <AuDropdown @icon={{ThreeDotsIcon}} role=\"menu\" @alignment=\"left\">\n <AuButton\n @skin=\"link\"\n @icon={{PencilIcon}}\n role=\"menuitem\"\n {{on \"click\" (fn @onEdit @index)}}\n >\n Edit property\n </AuButton>\n <AuButton\n @skin=\"link\"\n @icon={{BinIcon}}\n role=\"menuitem\"\n class=\"au-c-button--alert\"\n {{on \"click\" (fn @onRemove @index)}}\n >\n Remove property\n </AuButton>\n </AuDropdown>\n </template>\n}\n"],"names":["ExternalTripleEditorCard","Component","g","prototype","localCopy","i","void 0","tracked","toggleSection","expanded","args","onToggle","node","externalTriples","value","attrs","controller","tripleBeingEdited","isSome","indexBeingEdited","closeModal","editModalOpen","updateExternalTriples","trip","tr","index","transformExternalTriples","triples","copy","splice","pos","mainEditorState","transaction","concat","mainEditorView","dispatch","startTripleEdit","addTriple","event","preventDefault","stopPropagation","editTriple","removeTriple","clone","setComponentTemplate","precompileTemplate","strictMode","scope","AuCard","AuToolbar","AuHeading","AuButton","on","AuList","ExternalTripleItem","EditModal","onFormKeyDown","formElement","key","ctrlKey","metaKey","requestSubmit","n","action","initialFocus","modifier","element","initiallyFocusedElement","WithUniqueId","AuModal","ExternalTripleForm","AuButtonGroup","datatype","object","termType","language","AuDropdown","ThreeDotsIcon","PencilIcon","fn","BinIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAkCe,MAAMA,iCAAiCC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,UAAA,EAAA,CAC7DC,UAAU,eAAA,EAAiB,IAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,SAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,eAAA,EAAA,CAE3BI,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OACe,KAAA;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,cAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,eAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,kBAAA,EAAA,CACfI,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,iBAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,kBAAA,CAAA,EAAAC,MAAA;EAGDE,aAAA,GAAgBA,MAAA;AACd,IAAA,IAAI,CAACC,QAAQ,GAAG,CAAC,IAAI,CAACA,QAAQ;IAC9B,IAAI,CAACC,IAAI,CAACC,QAAQ,GAAG,IAAI,CAACF,QAAQ,CAAA;EACpC,CAAA;EAEA,IAAIG,IAAAA,GAAO;AACT,IAAA,OAAO,IAAI,CAACF,IAAI,CAACE,IAAI;AACvB,EAAA;EACA,IAAIC,kBAAgC;IAClC,OAAQ,IAAI,CAACD,IAAI,CAACE,KAAK,CAACC,KAAK,CAAC,iBAAA,CAAkB,IAAqB,EAAE;AACzE,EAAA;EACA,IAAIC,UAAAA,GAAa;AACf,IAAA,OAAO,IAAI,CAACN,IAAI,CAACM,UAAU;AAC7B,EAAA;EACA,IAAIC,iBAAAA,GAAwC;AAC1C,IAAA,IAAIC,MAAA,CAAO,IAAI,CAACC,gBAAgB,CAAA,EAAG;AACjC,MAAA,OAAO,IAAI,CAACN,eAAe,CAAC,IAAI,CAACM,gBAAgB,CAAC;AACpD,IAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;EACAC,UAAA,GAAaA,MAAA;IACX,IAAI,CAACC,aAAa,GAAG,KAAA;EACvB,CAAA;EACAC,qBAAA,GAAyBC,IAAM,IAAA;AAC7B,IAAA,IAAIC,EAAA;AACJ,IAAA,IAAIN,MAAA,CAAO,IAAI,CAACC,gBAAgB,CAAA,EAAG;AACjC,MAAA,MAAMM,KAAA,GAAQ,IAAI,CAACN,gBAAgB;AACnCK,MAAAA,EAAA,GAAKE,yBAA0BC,OAAA,IAAA;AAC7B,QAAA,MAAMC,IAAA,GAAO,CAAI,GAAAD,OAAA,CAAQ;QACzBC,IAAA,CAAKC,MAAM,CAACJ,KAAA,EAAO,CAAA,EAAGF,IAAA,CAAA;AACtB,QAAA,OAAOK,IAAA;AACT,MAAA,CAAA,EAAG,IAAI,CAAClB,IAAI,CAACE,IAAI,CAACkB,GAAG,CAAA,CAAE,IAAI,CAACd,UAAU,CAACe,eAAe,EAAEC,WAAW;AACrE,IAAA,CAAA,MAAO;AACLR,MAAAA,EAAA,GAAKE,wBAAA,CACFC,OAAA,IAAYA,OAAA,CAAQM,MAAM,CAACV,IAAA,CAAA,EAC5B,IAAI,CAACb,IAAI,CAACE,IAAI,CAACkB,GAAG,CAAA,CAClB,IAAI,CAACd,UAAU,CAACe,eAAe,CAAA,CAAEC,WAAW;AAChD,IAAA;IAEA,IAAI,CAAChB,UAAU,CAACkB,cAAc,CAACC,QAAQ,CAACX,EAAA,CAAA;IAExC,IAAI,CAACJ,UAAU,EAAA;EACjB,CAAA;EACAgB,eAAA,GAAmBX,KAAc,IAAA;IAC/B,IAAI,CAACN,gBAAgB,GAAGM,KAAA;IAExB,IAAI,CAACJ,aAAa,GAAG,IAAA;EACvB,CAAA;EACAgB,SAAA,GAAaC,KAAO,IAAA;IAClBA,KAAA,CAAMC,cAAc,EAAA;IACpBD,KAAA,CAAME,eAAe,EAAA;IACrB,IAAI,CAACJ,eAAe,EAAA;EACtB,CAAA;EACAK,UAAA,GAAchB,KAAa,IAAA;AACzB,IAAA,IAAI,CAACW,eAAe,CAACX,KAAA,CAAA;EACvB,CAAA;EACAiB,YAAA,GAAgBjB,KAAa,IAAA;AAC3B,IAAA,MAAMD,EAAA,GAAKE,yBAA0BC,OAAA,IAAA;AACnC,MAAA,MAAMgB,KAAA,GAAQ,CAAI,GAAAhB,OAAA,CAAQ;AAC1BgB,MAAAA,KAAA,CAAMd,MAAM,CAACJ,KAAA,EAAO,CAAA,CAAA;AACpB,MAAA,OAAOkB,KAAA;AACT,IAAA,CAAA,EAAG,IAAI,CAACjC,IAAI,CAACE,IAAI,CAACkB,GAAG,CAAA,CAAE,IAAI,CAACd,UAAU,CAACe,eAAe,EAAEC,WAAW;IACnE,IAAI,CAAChB,UAAU,CAACkB,cAAc,CAACC,QAAQ,CAACX,EAAA,CAAA;EAC1C,CAAA;AACA,EAAA;IAAAoB,oBAAA,CAAAC,kBAAA,CAAA,k1CAAA,EAkDA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,MAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,EAAA;QAAAC,MAAA;QAAAC,kBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;AAWA,MAAMA,kBAAkBtD,SAAA,CAAU;AAEhCuD,EAAAA,aAAAA,CAAcC,WAA4B,EAAEnB,KAAoB,EAAE;AAChE,IAAA,IAAIA,KAAA,CAAMoB,GAAG,KAAK,OAAA,KAAYpB,MAAMqB,OAAO,IAAIrB,KAAA,CAAMsB,OAAO,CAAA,EAAG;MAC7DH,WAAA,CAAYI,aAAa,EAAA;AAC3B,IAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAA3D,SAAA,EAAA,eAAA,EAAA,CANC4D,MAAA,CAAA,CAAA;AAAA;AAAA,EAAA;IAAA7D,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,yBAAA,EAAA,CAQAI,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,wBAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,yBAAA,CAAA,EAAAC,MAAA;AAED0D,EAAAA,YAAA,GAAeC,QAAA,CAAUC,OAAS,IAAA;IAChC,IAAI,CAACC,uBAAuB,GAAGD,OAAA;AACjC,EAAA,CAAA,CAAA;AAEA,EAAA;IAAAtB,oBAAA,CAAAC,kBAAA,CAAA,yyBAAA,EA8BA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;sBAAAqB,qBAAA;QAAAC,OAAA;QAAAC,kBAAA;QAAAC,aAAA;QAAApB,QAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;AAUA,MAAME,2BAA2BrD,SAAA,CAAU;EACzC,IAAIuE,QAAAA,GAAW;AACb,IAAA,MAAMjD,IAAA,GAAO,IAAI,CAACb,IAAI,CAACa,IAAI;AAC3B,IAAA,IAAIA,IAAA,CAAKkD,MAAM,CAACC,QAAQ,KAAK,SAAA,EAAW;AACtC,MAAA,OAAOnD,IAAA,CAAKkD,MAAM,CAACD,QAAQ,CAAC1D,KAAK;AACnC,IAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;EACA,IAAI6D,QAAAA,GAAW;AACb,IAAA,MAAMpD,IAAA,GAAO,IAAI,CAACb,IAAI,CAACa,IAAI;AAC3B,IAAA,IAAIA,IAAA,CAAKkD,MAAM,CAACC,QAAQ,KAAK,SAAA,EAAW;AACtC,MAAA,OAAOnD,IAAA,CAAKkD,MAAM,CAACE,QAAQ;AAC7B,IAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;AACA,EAAA;IAAA/B,oBAAA,CAAAC,kBAAA,CAAA,m3BAAA,EAgCA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAA6B,UAAA;QAAAC,aAAA;QAAA1B,QAAA;QAAA2B,UAAA;QAAA1B,EAAA;QAAA2B,EAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
1
|
+
{"version":3,"file":"card.js","sources":["../../../../src/components/_private/external-triple-editor/card.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport type SayController from '#root/core/say-controller.ts';\nimport AuToolbar from '@appuniversum/ember-appuniversum/components/au-toolbar';\nimport AuHeading from '@appuniversum/ember-appuniversum/components/au-heading';\nimport AuModal from '@appuniversum/ember-appuniversum/components/au-modal';\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 type { ResolvedPNode } from '#root/utils/_private/types.ts';\nimport { tracked } from '@glimmer/tracking';\nimport type { FullTriple } from '#root/core/rdfa-processor.ts';\nimport ExternalTripleForm from './form.gts';\nimport { transformExternalTriples } from '#root/utils/external-triple-utils.ts';\nimport { PencilIcon } from '@appuniversum/ember-appuniversum/components/icons/pencil';\nimport AuDropdown from '@appuniversum/ember-appuniversum/components/au-dropdown';\nimport { ThreeDotsIcon } from '@appuniversum/ember-appuniversum/components/icons/three-dots';\nimport { BinIcon } from '@appuniversum/ember-appuniversum/components/icons/bin';\nimport { fn } from '@ember/helper';\nimport AuList from '@appuniversum/ember-appuniversum/components/au-list';\nimport { isSome, type Option } from '#root/utils/_private/option.ts';\nimport WithUniqueId from '#root/components/_private/utils/with-unique-id.ts';\nimport { modifier } from 'ember-modifier';\nimport { action } from '@ember/object';\nimport AuCard from '@appuniversum/ember-appuniversum/components/au-card';\nimport { localCopy } from 'tracked-toolbox';\n\ninterface Sig {\n Args: {\n controller: SayController;\n node: ResolvedPNode;\n expanded?: boolean;\n onToggle?: (expanded: boolean) => void;\n };\n}\nexport default class ExternalTripleEditorCard extends Component<Sig> {\n @localCopy('args.expanded', true) declare expanded: boolean;\n\n @tracked\n editModalOpen = false;\n @tracked\n indexBeingEdited?: number;\n\n toggleSection = () => {\n this.expanded = !this.expanded;\n this.args.onToggle?.(this.expanded);\n };\n\n get node() {\n return this.args.node;\n }\n get externalTriples(): FullTriple[] {\n return (this.node.value.attrs['externalTriples'] as FullTriple[]) ?? [];\n }\n get controller() {\n return this.args.controller;\n }\n get tripleBeingEdited(): Option<FullTriple> {\n if (isSome(this.indexBeingEdited)) {\n return this.externalTriples[this.indexBeingEdited];\n }\n return null;\n }\n closeModal = () => {\n this.editModalOpen = false;\n };\n updateExternalTriples = (trip: FullTriple) => {\n let tr;\n if (isSome(this.indexBeingEdited)) {\n const index = this.indexBeingEdited;\n tr = transformExternalTriples((triples) => {\n const copy = [...triples];\n copy.splice(index, 1, trip);\n return copy;\n }, this.args.node.pos)(this.controller.mainEditorState).transaction;\n } else {\n tr = transformExternalTriples(\n (triples) => triples.concat(trip),\n this.args.node.pos,\n )(this.controller.mainEditorState).transaction;\n }\n\n this.controller.mainEditorView.dispatch(tr);\n\n this.closeModal();\n };\n startTripleEdit = (index?: number) => {\n this.indexBeingEdited = index;\n\n this.editModalOpen = true;\n };\n addTriple = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.startTripleEdit();\n };\n editTriple = (index: number) => {\n this.startTripleEdit(index);\n };\n removeTriple = (index: number) => {\n const tr = transformExternalTriples((triples) => {\n const clone = [...triples];\n clone.splice(index, 1);\n return clone;\n }, this.args.node.pos)(this.controller.mainEditorState).transaction;\n this.controller.mainEditorView.dispatch(tr);\n };\n <template>\n <AuCard\n @size=\"small\"\n @expandable={{true}}\n @manualControl={{true}}\n @openSection={{this.toggleSection}}\n @isExpanded={{this.expanded}}\n @disableAuContent={{true}}\n as |c|\n >\n <c.header class=\"say-flex-grow\">\n <AuToolbar\n class=\"au-u-flex au-u-flex-row au-u-flex--space-between\"\n as |Group|\n >\n <Group>\n <AuHeading @level=\"1\" @skin=\"6\">External Triples</AuHeading>\n </Group>\n <Group>\n <AuButton @skin=\"link\" {{on \"click\" this.addTriple}}>\n Add triple\n </AuButton>\n </Group>\n </AuToolbar>\n </c.header>\n <c.content class=\"au-c-content--tiny\">\n {{#if this.externalTriples.length}}\n <AuList @divider={{true}} as |Item|>\n {{#each this.externalTriples as |trip index|}}\n <Item>\n <ExternalTripleItem\n @trip={{trip}}\n @index={{index}}\n @onEdit={{this.editTriple}}\n @onRemove={{this.removeTriple}}\n />\n </Item>\n {{/each}}\n </AuList>\n {{else}}\n <p class=\"au-u-italic\">This document does not define any external\n triples.</p>\n {{/if}}\n </c.content>\n </AuCard>\n <EditModal\n @modalOpen={{this.editModalOpen}}\n @onCancel={{this.closeModal}}\n @onSubmit={{this.updateExternalTriples}}\n @triple={{this.tripleBeingEdited}}\n />\n </template>\n}\n\ninterface EditModalSig {\n Args: {\n modalOpen: boolean;\n onCancel: () => void;\n onSubmit: (trip: FullTriple) => void;\n triple?: Option<FullTriple>;\n };\n}\n\nclass EditModal extends Component<EditModalSig> {\n @action\n onFormKeyDown(formElement: HTMLFormElement, event: KeyboardEvent) {\n if (event.key === 'Enter' && (event.ctrlKey || event.metaKey)) {\n formElement.requestSubmit();\n }\n return true;\n }\n\n @tracked initiallyFocusedElement?: HTMLElement;\n\n initialFocus = modifier((element: HTMLElement) => {\n this.initiallyFocusedElement = element;\n });\n\n <template>\n <WithUniqueId as |formId|>\n <AuModal\n @modalOpen={{@modalOpen}}\n @closable={{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>Edit external triples</:title>\n <:body>\n <ExternalTripleForm\n @initialFocus={{this.initialFocus}}\n @onSubmit={{@onSubmit}}\n id={{formId}}\n @triple={{@triple}}\n @onKeyDown={{this.onFormKeyDown}}\n />\n </:body>\n <:footer>\n <AuButtonGroup>\n <AuButton form={{formId}} type=\"submit\">Save</AuButton>\n <AuButton\n @skin=\"secondary\"\n {{on \"click\" @onCancel}}\n >Cancel</AuButton>\n </AuButtonGroup>\n </:footer>\n </AuModal>\n </WithUniqueId>\n </template>\n}\n\ninterface ExternalTripleItemSig {\n Args: {\n trip: FullTriple;\n index: number;\n onRemove: (index: number) => void;\n onEdit: (index: number) => void;\n };\n}\nclass ExternalTripleItem extends Component<ExternalTripleItemSig> {\n get datatype() {\n const trip = this.args.trip;\n if (trip.object.termType === 'Literal') {\n return trip.object.datatype.value;\n }\n return null;\n }\n get language() {\n const trip = this.args.trip;\n if (trip.object.termType === 'Literal') {\n return trip.object.language;\n }\n return null;\n }\n <template>\n <div class=\"au-u-padding-tiny\">\n <p><strong>subject:</strong> {{@trip.subject.value}}</p>\n <p><strong>predicate:</strong> {{@trip.predicate}}</p>\n {{#if this.datatype}}\n <p><strong>datatype:</strong> {{this.datatype}}</p>\n {{/if}}\n {{#if this.language}}\n <p><strong>language:</strong> {{this.language}}</p>\n {{/if}}\n <p><strong>value:</strong> {{@trip.object.value}}</p>\n </div>\n\n <AuDropdown @icon={{ThreeDotsIcon}} role=\"menu\" @alignment=\"left\">\n <AuButton\n @skin=\"link\"\n @icon={{PencilIcon}}\n role=\"menuitem\"\n {{on \"click\" (fn @onEdit @index)}}\n >\n Edit property\n </AuButton>\n <AuButton\n @skin=\"link\"\n @icon={{BinIcon}}\n role=\"menuitem\"\n class=\"au-c-button--alert\"\n {{on \"click\" (fn @onRemove @index)}}\n >\n Remove property\n </AuButton>\n </AuDropdown>\n </template>\n}\n"],"names":["ExternalTripleEditorCard","Component","g","prototype","localCopy","i","tracked","toggleSection","expanded","args","onToggle","node","externalTriples","value","attrs","controller","tripleBeingEdited","isSome","indexBeingEdited","closeModal","editModalOpen","updateExternalTriples","trip","tr","index","transformExternalTriples","triples","copy","splice","pos","mainEditorState","transaction","concat","mainEditorView","dispatch","startTripleEdit","addTriple","event","preventDefault","stopPropagation","editTriple","removeTriple","clone","setComponentTemplate","precompileTemplate","strictMode","scope","AuCard","AuToolbar","AuHeading","AuButton","on","AuList","ExternalTripleItem","EditModal","onFormKeyDown","formElement","key","ctrlKey","metaKey","requestSubmit","n","action","initialFocus","modifier","element","initiallyFocusedElement","WithUniqueId","AuModal","ExternalTripleForm","AuButtonGroup","datatype","object","termType","language","AuDropdown","ThreeDotsIcon","PencilIcon","fn","BinIcon"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.js","sources":["../../../../src/components/_private/external-triple-editor/form.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { ValidationError, object, string } from 'yup';\nimport { on } from '@ember/modifier';\nimport { tracked } from '@glimmer/tracking';\nimport type { FullTriple } from '#root/core/rdfa-processor.ts';\nimport { localCopy } from 'tracked-toolbox';\nimport {\n literalTermSchema,\n namedNodeTermSchema,\n} from '#root/components/_private/common/object-term-schemas.ts';\nimport AuFormRow from '@appuniversum/ember-appuniversum/components/au-form-row';\nimport AuLabel from '@appuniversum/ember-appuniversum/components/au-label';\nimport AuPill from '@appuniversum/ember-appuniversum/components/au-label';\nimport AuInput, {\n type AuInputSignature,\n} from '@appuniversum/ember-appuniversum/components/au-input';\nimport {\n languageOrDataType,\n sayDataFactory,\n} from '#root/core/say-data-factory/index.ts';\nimport PowerSelect from 'ember-power-select/components/power-select';\nimport { eq } from 'ember-truth-helpers';\nimport { type Option } from '#root/utils/_private/option.ts';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\nimport { modifier } from 'ember-modifier';\nimport type { Select } from 'ember-power-select/components/power-select';\nimport WithUniqueId from '#root/components/_private/utils/with-unique-id.ts';\nimport type { ModifierLike } from '@glint/template';\nconst predicateSchema = string().curie().required();\n\nconst literalTripleSchema = object({\n subject: namedNodeTermSchema,\n predicate: predicateSchema,\n object: literalTermSchema,\n});\nconst namedNodeTripleSchema = object({\n subject: namedNodeTermSchema,\n predicate: predicateSchema,\n object: namedNodeTermSchema,\n});\ninterface ValidResult {\n valid: true;\n triple: FullTriple;\n}\ninterface InvalidResult {\n valid: false;\n errors: ValidationError[];\n}\ntype ValidationResult = ValidResult | InvalidResult;\ninterface ExternalTripleFormSig {\n Element: HTMLFormElement;\n Args: {\n initialFocus?: ModifierLike<{ Element: HTMLElement }>;\n onKeyDown?: (\n form: HTMLFormElement,\n event: KeyboardEvent,\n ) => boolean | undefined;\n onSubmit: (trip: FullTriple) => void;\n triple?: Option<FullTriple>;\n };\n}\nconst DEFAULT_TRIPLE: FullTriple = {\n subject: sayDataFactory.namedNode(''),\n predicate: '',\n object: sayDataFactory.namedNode(''),\n};\nexport type SupportedTermType = 'NamedNode' | 'Literal';\nexport default class ExternalTripleForm extends Component<ExternalTripleFormSig> {\n formElement?: HTMLFormElement;\n setupFormElement = modifier((element: HTMLFormElement) => {\n this.formElement = element;\n const keyDownHandler = (event: KeyboardEvent) => {\n if (this.args.onKeyDown) {\n this.args.onKeyDown(element, event);\n }\n };\n window.addEventListener('keydown', keyDownHandler);\n return () => window.removeEventListener('keydown', keyDownHandler);\n });\n\n @localCopy('args.triple.subject.value')\n subject: string = '';\n\n @localCopy('args.triple.object.termType')\n selectedTermType?: SupportedTermType;\n\n @tracked\n predicate: string = '';\n\n @tracked\n object: string = '';\n\n @tracked\n errors: ValidationError[] = [];\n\n @tracked\n currentFormData: FormData | null = null;\n\n datatypePath = 'object.datatype.value';\n languagePath = 'object.language';\n get termType() {\n return this.selectedTermType ?? 'NamedNode';\n }\n get triple() {\n return this.args.triple ?? DEFAULT_TRIPLE;\n }\n get datatype() {\n if (this.triple.object.termType === 'Literal') {\n return this.triple.object.datatype.value;\n }\n return '';\n }\n get language() {\n if (this.triple.object.termType === 'Literal') {\n return this.triple.object.language;\n }\n return '';\n }\n get termTypes(): SupportedTermType[] {\n return ['NamedNode', 'Literal'];\n }\n get hasLanguage() {\n return Boolean(\n this.currentFormData?.get(this.languagePath)?.toString().length,\n );\n }\n get hasDatatype() {\n return (\n !this.hasLanguage &&\n Boolean(this.currentFormData?.get(this.datatypePath)?.toString().length)\n );\n }\n selectTermType = (value: SupportedTermType) => {\n this.selectedTermType = value;\n this.errors = [];\n };\n extractNamedNode = (formData: FormData, base: string) => {\n return {\n termType: 'NamedNode',\n value: formData.get(`${base}.value`)?.toString(),\n };\n };\n extractLiteral = (formData: FormData, base: string) => {\n const extractedDatatype = this.extractNamedNode(\n formData,\n `${base}.datatype`,\n );\n const datatype = extractedDatatype?.value?.length\n ? extractedDatatype\n : undefined;\n\n return {\n termType: 'Literal',\n value: formData.get(`${base}.value`)?.toString(),\n datatype,\n language: formData.get(`${base}.language`)?.toString(),\n };\n };\n validateFormData = (formData: FormData): ValidationResult => {\n try {\n if (this.termType === 'NamedNode') {\n const validated = namedNodeTripleSchema.validateSync(\n {\n subject: this.extractNamedNode(formData, 'subject'),\n predicate: formData.get('predicate')?.toString(),\n object: this.extractNamedNode(formData, 'object'),\n },\n { abortEarly: false },\n );\n return {\n valid: true,\n triple: {\n subject: sayDataFactory.namedNode(validated.subject.value),\n predicate: validated.predicate,\n object: sayDataFactory.namedNode(validated.object.value),\n },\n };\n } else {\n const validated = literalTripleSchema.validateSync(\n {\n subject: this.extractNamedNode(formData, 'subject'),\n predicate: formData.get('predicate')?.toString(),\n object: this.extractLiteral(formData, 'object'),\n },\n { abortEarly: false },\n );\n\n return {\n valid: true,\n triple: {\n subject: sayDataFactory.namedNode(validated.subject.value),\n predicate: validated.predicate,\n object:\n validated.object &&\n sayDataFactory.literal(\n validated.object.value,\n languageOrDataType(\n validated.object.language,\n validated.object.datatype &&\n sayDataFactory.namedNode(validated.object.datatype.value),\n ),\n ),\n },\n };\n }\n } catch (e) {\n if (e instanceof ValidationError) {\n return { valid: false, errors: e.inner };\n } else {\n throw e;\n }\n }\n };\n\n handleSubmit = (event: SubmitEvent) => {\n event.preventDefault();\n const formData = new FormData(event.currentTarget as HTMLFormElement);\n const validation = this.validateFormData(formData);\n if (validation.valid) {\n this.args.onSubmit?.(validation.triple);\n } else {\n this.errors = validation.errors;\n }\n };\n handleInput = (event: Event) => {\n const formData = new FormData(event.currentTarget as HTMLFormElement);\n this.currentFormData = formData;\n };\n initAfterInsert = modifier((form: HTMLFormElement) => {\n const formData = new FormData(form);\n this.currentFormData = formData;\n });\n\n onPowerSelectKeydown = (\n _select: Select,\n event: KeyboardEvent,\n ): boolean | undefined => {\n if (this.formElement && this.args.onKeyDown) {\n this.args.onKeyDown(this.formElement, event);\n }\n return;\n };\n <template>\n <form\n {{on \"submit\" this.handleSubmit}}\n {{on \"input\" this.handleInput}}\n {{this.initAfterInsert}}\n {{this.setupFormElement}}\n ...attributes\n >\n\n <StringField\n {{@initialFocus}}\n @name=\"subject.value\"\n @required={{true}}\n @errors={{this.errors}}\n @value={{this.triple.subject.value}}\n >Subject</StringField>\n <StringField\n @name=\"predicate\"\n @required={{true}}\n @errors={{this.errors}}\n @value={{this.triple.predicate}}\n >Predicate</StringField>\n <TermTypeSelectField\n @name=\"termType\"\n @selected={{this.termType}}\n @options={{this.termTypes}}\n @onChange={{this.selectTermType}}\n @onKeyDown={{this.onPowerSelectKeydown}}\n @errors={{this.errors}}\n @required={{true}}\n >\n TermType\n </TermTypeSelectField>\n <StringField\n @name=\"object.value\"\n @required={{true}}\n @errors={{this.errors}}\n @value={{this.triple.object.value}}\n >Value</StringField>\n\n {{#unless (eq this.termType \"NamedNode\")}}\n <StringField\n @name={{this.datatypePath}}\n @required={{false}}\n @errors={{this.errors}}\n @value={{this.datatype}}\n @disabled={{this.hasLanguage}}\n >Datatype</StringField>\n <StringField\n @name={{this.languagePath}}\n @required={{false}}\n @errors={{this.errors}}\n @value={{this.language}}\n @disabled={{this.hasDatatype}}\n >Language</StringField>\n {{/unless}}\n </form>\n </template>\n}\ninterface FieldArgs {\n name: string;\n errors: ValidationError[];\n required: boolean;\n}\ninterface StringFieldSig {\n Blocks: {\n default: [];\n };\n Args: FieldArgs & { value: string; disabled?: boolean };\n Element: AuInputSignature['Element'];\n}\n\nconst StringField: TemplateOnlyComponent<StringFieldSig> = <template>\n <FormField @name={{@name}} @errors={{@errors}} @required={{@required}}>\n <:label>\n {{yield}}\n </:label>\n\n <:default as |id|>\n <AuInput\n id={{id}}\n name={{@name}}\n value={{@value}}\n required={{@required}}\n @disabled={{@disabled}}\n @width=\"block\"\n ...attributes\n />\n </:default>\n </FormField>\n</template>;\n\ninterface SelectFieldArgs<T> extends FieldArgs {\n options: T[];\n selected: T;\n onChange: (newValue: T, select: Select, event?: Event) => void;\n onKeyDown?: (select: Select, e: KeyboardEvent) => boolean | undefined;\n}\ninterface SelectFieldSig<T> {\n Args: SelectFieldArgs<T>;\n Blocks: { default: [] };\n Element: HTMLElement;\n}\n\n// TOCs can't have a generic argument, so in this case we have to make a backing\n// class\n// ref: https://typed-ember.gitbook.io/glint/environments/ember/template-only-components\nclass SelectField<T> extends Component<SelectFieldSig<T>> {\n onChange = (selection: unknown, select: Select, event?: Event) => {\n this.args.onChange(selection as T, select, event);\n };\n <template>\n <FormField @name={{@name}} @errors={{@errors}} @required={{@required}}>\n <:label>\n {{yield}}\n </:label>\n\n <:default as |id|>\n\n <PowerSelect\n id={{id}}\n {{! For some reason need to manually set width }}\n class=\"au-u-1-1\"\n @searchEnabled={{false}}\n @options={{@options}}\n @selected={{@selected}}\n @onChange={{this.onChange}}\n @onKeydown={{@onKeyDown}}\n ...attributes\n as |obj|\n >\n {{obj}}\n </PowerSelect>\n </:default>\n </FormField>\n </template>\n}\nconst TermTypeSelectField = SelectField<'NamedNode' | 'Literal'>;\ninterface FormFieldSig {\n Args: FieldArgs;\n Blocks: { default: [id: string]; label: [] };\n}\nclass FormField extends Component<FormFieldSig> {\n findError = (errors: ValidationError[], path: string) => {\n return errors.find((error) => error.path === path)?.message ?? null;\n };\n <template>\n <AuFormRow>\n <WithUniqueId as |id|>\n {{#let (this.findError @errors @name) as |error|}}\n <AuLabel\n for={{id}}\n @required={{@required}}\n @requiredLabel=\"Required\"\n >{{yield to=\"label\"}}</AuLabel>\n {{yield id}}\n {{#if error}}\n <AuPill>{{error}}</AuPill>\n {{/if}}\n {{/let}}\n </WithUniqueId>\n </AuFormRow>\n </template>\n}\n"],"names":["predicateSchema","string","curie","required","literalTripleSchema","object","subject","namedNodeTermSchema","predicate","literalTermSchema","namedNodeTripleSchema","DEFAULT_TRIPLE","sayDataFactory","namedNode","ExternalTripleForm","Component","formElement","setupFormElement","modifier","element","keyDownHandler","event","args","onKeyDown","window","addEventListener","removeEventListener","g","prototype","localCopy","i","void 0","tracked","datatypePath","languagePath","termType","selectedTermType","triple","datatype","value","language","termTypes","hasLanguage","Boolean","currentFormData","get","toString","length","hasDatatype","selectTermType","errors","extractNamedNode","formData","base","extractLiteral","extractedDatatype","undefined","validateFormData","validated","validateSync","abortEarly","valid","literal","languageOrDataType","e","ValidationError","inner","handleSubmit","preventDefault","FormData","currentTarget","validation","onSubmit","handleInput","initAfterInsert","form","onPowerSelectKeydown","_select","setComponentTemplate","precompileTemplate","strictMode","scope","on","StringField","TermTypeSelectField","eq","FormField","AuInput","templateOnly","SelectField","onChange","selection","select","PowerSelect","findError","path","find","error","message","AuFormRow","WithUniqueId","AuLabel","AuPill"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form.js","sources":["../../../../src/components/_private/external-triple-editor/form.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { ValidationError, object, string } from 'yup';\nimport { on } from '@ember/modifier';\nimport { tracked } from '@glimmer/tracking';\nimport type { FullTriple } from '#root/core/rdfa-processor.ts';\nimport { localCopy } from 'tracked-toolbox';\nimport {\n literalTermSchema,\n namedNodeTermSchema,\n} from '#root/components/_private/common/object-term-schemas.ts';\nimport AuFormRow from '@appuniversum/ember-appuniversum/components/au-form-row';\nimport AuLabel from '@appuniversum/ember-appuniversum/components/au-label';\nimport AuPill from '@appuniversum/ember-appuniversum/components/au-label';\nimport AuInput, {\n type AuInputSignature,\n} from '@appuniversum/ember-appuniversum/components/au-input';\nimport {\n languageOrDataType,\n sayDataFactory,\n} from '#root/core/say-data-factory/index.ts';\nimport PowerSelect from 'ember-power-select/components/power-select';\nimport { eq } from 'ember-truth-helpers';\nimport { type Option } from '#root/utils/_private/option.ts';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\nimport { modifier } from 'ember-modifier';\nimport type { Select } from 'ember-power-select/components/power-select';\nimport WithUniqueId from '#root/components/_private/utils/with-unique-id.ts';\nimport type { ModifierLike } from '@glint/template';\nconst predicateSchema = string().curie().required();\n\nconst literalTripleSchema = object({\n subject: namedNodeTermSchema,\n predicate: predicateSchema,\n object: literalTermSchema,\n});\nconst namedNodeTripleSchema = object({\n subject: namedNodeTermSchema,\n predicate: predicateSchema,\n object: namedNodeTermSchema,\n});\ninterface ValidResult {\n valid: true;\n triple: FullTriple;\n}\ninterface InvalidResult {\n valid: false;\n errors: ValidationError[];\n}\ntype ValidationResult = ValidResult | InvalidResult;\ninterface ExternalTripleFormSig {\n Element: HTMLFormElement;\n Args: {\n initialFocus?: ModifierLike<{ Element: HTMLElement }>;\n onKeyDown?: (\n form: HTMLFormElement,\n event: KeyboardEvent,\n ) => boolean | undefined;\n onSubmit: (trip: FullTriple) => void;\n triple?: Option<FullTriple>;\n };\n}\nconst DEFAULT_TRIPLE: FullTriple = {\n subject: sayDataFactory.namedNode(''),\n predicate: '',\n object: sayDataFactory.namedNode(''),\n};\nexport type SupportedTermType = 'NamedNode' | 'Literal';\nexport default class ExternalTripleForm extends Component<ExternalTripleFormSig> {\n formElement?: HTMLFormElement;\n setupFormElement = modifier((element: HTMLFormElement) => {\n this.formElement = element;\n const keyDownHandler = (event: KeyboardEvent) => {\n if (this.args.onKeyDown) {\n this.args.onKeyDown(element, event);\n }\n };\n window.addEventListener('keydown', keyDownHandler);\n return () => window.removeEventListener('keydown', keyDownHandler);\n });\n\n @localCopy('args.triple.subject.value')\n subject: string = '';\n\n @localCopy('args.triple.object.termType')\n selectedTermType?: SupportedTermType;\n\n @tracked\n predicate: string = '';\n\n @tracked\n object: string = '';\n\n @tracked\n errors: ValidationError[] = [];\n\n @tracked\n currentFormData: FormData | null = null;\n\n datatypePath = 'object.datatype.value';\n languagePath = 'object.language';\n get termType() {\n return this.selectedTermType ?? 'NamedNode';\n }\n get triple() {\n return this.args.triple ?? DEFAULT_TRIPLE;\n }\n get datatype() {\n if (this.triple.object.termType === 'Literal') {\n return this.triple.object.datatype.value;\n }\n return '';\n }\n get language() {\n if (this.triple.object.termType === 'Literal') {\n return this.triple.object.language;\n }\n return '';\n }\n get termTypes(): SupportedTermType[] {\n return ['NamedNode', 'Literal'];\n }\n get hasLanguage() {\n return Boolean(\n this.currentFormData?.get(this.languagePath)?.toString().length,\n );\n }\n get hasDatatype() {\n return (\n !this.hasLanguage &&\n Boolean(this.currentFormData?.get(this.datatypePath)?.toString().length)\n );\n }\n selectTermType = (value: SupportedTermType) => {\n this.selectedTermType = value;\n this.errors = [];\n };\n extractNamedNode = (formData: FormData, base: string) => {\n return {\n termType: 'NamedNode',\n value: formData.get(`${base}.value`)?.toString(),\n };\n };\n extractLiteral = (formData: FormData, base: string) => {\n const extractedDatatype = this.extractNamedNode(\n formData,\n `${base}.datatype`,\n );\n const datatype = extractedDatatype?.value?.length\n ? extractedDatatype\n : undefined;\n\n return {\n termType: 'Literal',\n value: formData.get(`${base}.value`)?.toString(),\n datatype,\n language: formData.get(`${base}.language`)?.toString(),\n };\n };\n validateFormData = (formData: FormData): ValidationResult => {\n try {\n if (this.termType === 'NamedNode') {\n const validated = namedNodeTripleSchema.validateSync(\n {\n subject: this.extractNamedNode(formData, 'subject'),\n predicate: formData.get('predicate')?.toString(),\n object: this.extractNamedNode(formData, 'object'),\n },\n { abortEarly: false },\n );\n return {\n valid: true,\n triple: {\n subject: sayDataFactory.namedNode(validated.subject.value),\n predicate: validated.predicate,\n object: sayDataFactory.namedNode(validated.object.value),\n },\n };\n } else {\n const validated = literalTripleSchema.validateSync(\n {\n subject: this.extractNamedNode(formData, 'subject'),\n predicate: formData.get('predicate')?.toString(),\n object: this.extractLiteral(formData, 'object'),\n },\n { abortEarly: false },\n );\n\n return {\n valid: true,\n triple: {\n subject: sayDataFactory.namedNode(validated.subject.value),\n predicate: validated.predicate,\n object:\n validated.object &&\n sayDataFactory.literal(\n validated.object.value,\n languageOrDataType(\n validated.object.language,\n validated.object.datatype &&\n sayDataFactory.namedNode(validated.object.datatype.value),\n ),\n ),\n },\n };\n }\n } catch (e) {\n if (e instanceof ValidationError) {\n return { valid: false, errors: e.inner };\n } else {\n throw e;\n }\n }\n };\n\n handleSubmit = (event: SubmitEvent) => {\n event.preventDefault();\n const formData = new FormData(event.currentTarget as HTMLFormElement);\n const validation = this.validateFormData(formData);\n if (validation.valid) {\n this.args.onSubmit?.(validation.triple);\n } else {\n this.errors = validation.errors;\n }\n };\n handleInput = (event: Event) => {\n const formData = new FormData(event.currentTarget as HTMLFormElement);\n this.currentFormData = formData;\n };\n initAfterInsert = modifier((form: HTMLFormElement) => {\n const formData = new FormData(form);\n this.currentFormData = formData;\n });\n\n onPowerSelectKeydown = (\n _select: Select,\n event: KeyboardEvent,\n ): boolean | undefined => {\n if (this.formElement && this.args.onKeyDown) {\n this.args.onKeyDown(this.formElement, event);\n }\n return;\n };\n <template>\n <form\n {{on \"submit\" this.handleSubmit}}\n {{on \"input\" this.handleInput}}\n {{this.initAfterInsert}}\n {{this.setupFormElement}}\n ...attributes\n >\n\n <StringField\n {{@initialFocus}}\n @name=\"subject.value\"\n @required={{true}}\n @errors={{this.errors}}\n @value={{this.triple.subject.value}}\n >Subject</StringField>\n <StringField\n @name=\"predicate\"\n @required={{true}}\n @errors={{this.errors}}\n @value={{this.triple.predicate}}\n >Predicate</StringField>\n <TermTypeSelectField\n @name=\"termType\"\n @selected={{this.termType}}\n @options={{this.termTypes}}\n @onChange={{this.selectTermType}}\n @onKeyDown={{this.onPowerSelectKeydown}}\n @errors={{this.errors}}\n @required={{true}}\n >\n TermType\n </TermTypeSelectField>\n <StringField\n @name=\"object.value\"\n @required={{true}}\n @errors={{this.errors}}\n @value={{this.triple.object.value}}\n >Value</StringField>\n\n {{#unless (eq this.termType \"NamedNode\")}}\n <StringField\n @name={{this.datatypePath}}\n @required={{false}}\n @errors={{this.errors}}\n @value={{this.datatype}}\n @disabled={{this.hasLanguage}}\n >Datatype</StringField>\n <StringField\n @name={{this.languagePath}}\n @required={{false}}\n @errors={{this.errors}}\n @value={{this.language}}\n @disabled={{this.hasDatatype}}\n >Language</StringField>\n {{/unless}}\n </form>\n </template>\n}\ninterface FieldArgs {\n name: string;\n errors: ValidationError[];\n required: boolean;\n}\ninterface StringFieldSig {\n Blocks: {\n default: [];\n };\n Args: FieldArgs & { value: string; disabled?: boolean };\n Element: AuInputSignature['Element'];\n}\n\nconst StringField: TemplateOnlyComponent<StringFieldSig> = <template>\n <FormField @name={{@name}} @errors={{@errors}} @required={{@required}}>\n <:label>\n {{yield}}\n </:label>\n\n <:default as |id|>\n <AuInput\n id={{id}}\n name={{@name}}\n value={{@value}}\n required={{@required}}\n @disabled={{@disabled}}\n @width=\"block\"\n ...attributes\n />\n </:default>\n </FormField>\n</template>;\n\ninterface SelectFieldArgs<T> extends FieldArgs {\n options: T[];\n selected: T;\n onChange: (newValue: T, select: Select, event?: Event) => void;\n onKeyDown?: (select: Select, e: KeyboardEvent) => boolean | undefined;\n}\ninterface SelectFieldSig<T> {\n Args: SelectFieldArgs<T>;\n Blocks: { default: [] };\n Element: HTMLElement;\n}\n\n// TOCs can't have a generic argument, so in this case we have to make a backing\n// class\n// ref: https://typed-ember.gitbook.io/glint/environments/ember/template-only-components\nclass SelectField<T> extends Component<SelectFieldSig<T>> {\n onChange = (selection: unknown, select: Select, event?: Event) => {\n this.args.onChange(selection as T, select, event);\n };\n <template>\n <FormField @name={{@name}} @errors={{@errors}} @required={{@required}}>\n <:label>\n {{yield}}\n </:label>\n\n <:default as |id|>\n\n <PowerSelect\n id={{id}}\n {{! For some reason need to manually set width }}\n class=\"au-u-1-1\"\n @searchEnabled={{false}}\n @options={{@options}}\n @selected={{@selected}}\n @onChange={{this.onChange}}\n @onKeydown={{@onKeyDown}}\n ...attributes\n as |obj|\n >\n {{obj}}\n </PowerSelect>\n </:default>\n </FormField>\n </template>\n}\nconst TermTypeSelectField = SelectField<'NamedNode' | 'Literal'>;\ninterface FormFieldSig {\n Args: FieldArgs;\n Blocks: { default: [id: string]; label: [] };\n}\nclass FormField extends Component<FormFieldSig> {\n findError = (errors: ValidationError[], path: string) => {\n return errors.find((error) => error.path === path)?.message ?? null;\n };\n <template>\n <AuFormRow>\n <WithUniqueId as |id|>\n {{#let (this.findError @errors @name) as |error|}}\n <AuLabel\n for={{id}}\n @required={{@required}}\n @requiredLabel=\"Required\"\n >{{yield to=\"label\"}}</AuLabel>\n {{yield id}}\n {{#if error}}\n <AuPill>{{error}}</AuPill>\n {{/if}}\n {{/let}}\n </WithUniqueId>\n </AuFormRow>\n </template>\n}\n"],"names":["predicateSchema","string","curie","required","literalTripleSchema","object","subject","namedNodeTermSchema","predicate","literalTermSchema","namedNodeTripleSchema","DEFAULT_TRIPLE","sayDataFactory","namedNode","ExternalTripleForm","Component","formElement","setupFormElement","modifier","element","keyDownHandler","event","args","onKeyDown","window","addEventListener","removeEventListener","g","prototype","localCopy","i","tracked","datatypePath","languagePath","termType","selectedTermType","triple","datatype","value","language","termTypes","hasLanguage","Boolean","currentFormData","get","toString","length","hasDatatype","selectTermType","errors","extractNamedNode","formData","base","extractLiteral","extractedDatatype","undefined","validateFormData","validated","validateSync","abortEarly","valid","literal","languageOrDataType","e","ValidationError","inner","handleSubmit","preventDefault","FormData","currentTarget","validation","onSubmit","handleInput","initAfterInsert","form","onPowerSelectKeydown","_select","setComponentTemplate","precompileTemplate","strictMode","scope","on","StringField","TermTypeSelectField","eq","FormField","AuInput","templateOnly","SelectField","onChange","selection","select","PowerSelect","findError","path","find","error","message","AuFormRow","WithUniqueId","AuLabel","AuPill"],"mappings":"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"}
|
|
@@ -47,7 +47,7 @@ class ImportedResourceLinkerCard extends Component {
|
|
|
47
47
|
this.controller?.withTransaction(tr => tr.setNodeAttribute(this.args.node.pos, 'importedResources', newImported));
|
|
48
48
|
};
|
|
49
49
|
static {
|
|
50
|
-
setComponentTemplate(precompileTemplate("\n {{#if this.importedResources}}\n <AuCard @size=\"small\" @expandable={{true}} @manualControl={{true}} @openSection={{this.toggleSection}} @isExpanded={{this.expanded}} as |c|>\n <c.header>\n <AuHeading @level=\"1\" @skin=\"6\">Imported resource linker</AuHeading>\n </c.header>\n <c.content class=\"au-c-content--small\">\n <AuList @divider={{true}} as |Item|>\n {{#each-in this.importedResources as |imported linked|}}\n <Item class=\"au-u-flex au-u-flex--row au-u-flex--between au-u-flex--vertical-center\">\n {{imported}}\n <AuDropdown @icon={{if linked ChevronDownIcon PlusIcon}} @title={{linked}} role=\"menu\" @alignment=\"left\">\n {{#each this.allResources as |res|}}\n <AuButton @skin=\"link\" @icon={{PencilIcon}} role=\"menuitem\" {{on \"click\" (fn this.linkImportedResource imported res)}}>\n {{res}}\n </AuButton>\n {{/each}}\n </AuDropdown>\n </Item>\n {{/each-in}}\n </AuList>\n </c.content>\n </AuCard>\n {{/if}}\n ", {
|
|
50
|
+
setComponentTemplate(precompileTemplate("\n {{#if this.importedResources}}\n <AuCard @size=\"small\" @expandable={{true}} @manualControl={{true}} @openSection={{this.toggleSection}} @isExpanded={{this.expanded}} @disableAuContent={{true}} as |c|>\n <c.header>\n <AuHeading @level=\"1\" @skin=\"6\">Imported resource linker</AuHeading>\n </c.header>\n <c.content class=\"au-c-content--small\">\n <AuList @divider={{true}} as |Item|>\n {{#each-in this.importedResources as |imported linked|}}\n <Item class=\"au-u-flex au-u-flex--row au-u-flex--between au-u-flex--vertical-center\">\n {{imported}}\n <AuDropdown @icon={{if linked ChevronDownIcon PlusIcon}} @title={{linked}} role=\"menu\" @alignment=\"left\">\n {{#each this.allResources as |res|}}\n <AuButton @skin=\"link\" @icon={{PencilIcon}} role=\"menuitem\" {{on \"click\" (fn this.linkImportedResource imported res)}}>\n {{res}}\n </AuButton>\n {{/each}}\n </AuDropdown>\n </Item>\n {{/each-in}}\n </AuList>\n </c.content>\n </AuCard>\n {{/if}}\n ", {
|
|
51
51
|
strictMode: true,
|
|
52
52
|
scope: () => ({
|
|
53
53
|
AuCard,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.js","sources":["../../../../src/components/_private/imported-resource-linker/card.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport type { ResolvedPNode } from '#root/utils/_private/types.ts';\nimport AuHeading from '@appuniversum/ember-appuniversum/components/au-heading';\nimport { localCopy } from 'tracked-toolbox';\nimport AuCard from '@appuniversum/ember-appuniversum/components/au-card';\nimport AuList from '@appuniversum/ember-appuniversum/components/au-list';\nimport AuDropdown from '@appuniversum/ember-appuniversum/components/au-dropdown';\nimport { ChevronDownIcon } from '@appuniversum/ember-appuniversum/components/icons/chevron-down';\nimport { PlusIcon } from '@appuniversum/ember-appuniversum/components/icons/plus';\nimport AuButton from '@appuniversum/ember-appuniversum/components/au-button';\nimport { PencilIcon } from '@appuniversum/ember-appuniversum/components/icons/pencil';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\nimport type SayController from '#root/core/say-controller.ts';\nimport { getSubjects } from '#root/plugins/rdfa-info/utils.ts';\n\ntype Signature = {\n Args: {\n node: ResolvedPNode;\n controller: SayController;\n expanded?: boolean;\n onToggle?: (expanded: boolean) => void;\n };\n};\n\nexport default class ImportedResourceLinkerCard extends Component<Signature> {\n @localCopy('args.expanded', true) declare expanded: boolean;\n\n get controller() {\n return this.args.controller;\n }\n\n get node() {\n return this.args.node.value;\n }\n\n toggleSection = () => {\n this.expanded = !this.expanded;\n this.args.onToggle?.(this.expanded);\n };\n\n get allResources(): string[] {\n if (!this.controller) {\n return [];\n }\n return getSubjects(this.controller.mainEditorState);\n }\n\n get importedResources(): Record<string, string | undefined> | undefined {\n return this.node.attrs['importedResources'] as\n | Record<string, string | undefined>\n | undefined;\n }\n\n linkImportedResource = (imported: string, linked: string) => {\n const newImported = {\n ...this.importedResources,\n [imported]: linked,\n };\n this.controller?.withTransaction((tr) =>\n tr.setNodeAttribute(this.args.node.pos, 'importedResources', newImported),\n );\n };\n\n <template>\n {{#if this.importedResources}}\n <AuCard\n @size=\"small\"\n @expandable={{true}}\n @manualControl={{true}}\n @openSection={{this.toggleSection}}\n @isExpanded={{this.expanded}}\n as |c|\n >\n <c.header>\n <AuHeading @level=\"1\" @skin=\"6\">Imported resource linker</AuHeading>\n </c.header>\n <c.content class=\"au-c-content--small\">\n <AuList @divider={{true}} as |Item|>\n {{#each-in this.importedResources as |imported linked|}}\n <Item\n class=\"au-u-flex au-u-flex--row au-u-flex--between au-u-flex--vertical-center\"\n >\n {{imported}}\n <AuDropdown\n @icon={{if linked ChevronDownIcon PlusIcon}}\n @title={{linked}}\n role=\"menu\"\n @alignment=\"left\"\n >\n {{#each this.allResources as |res|}}\n <AuButton\n @skin=\"link\"\n @icon={{PencilIcon}}\n role=\"menuitem\"\n {{on \"click\" (fn this.linkImportedResource imported res)}}\n >\n {{res}}\n </AuButton>\n {{/each}}\n </AuDropdown>\n </Item>\n {{/each-in}}\n </AuList>\n </c.content>\n </AuCard>\n {{/if}}\n </template>\n}\n"],"names":["ImportedResourceLinkerCard","Component","g","prototype","localCopy","i","
|
|
1
|
+
{"version":3,"file":"card.js","sources":["../../../../src/components/_private/imported-resource-linker/card.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport type { ResolvedPNode } from '#root/utils/_private/types.ts';\nimport AuHeading from '@appuniversum/ember-appuniversum/components/au-heading';\nimport { localCopy } from 'tracked-toolbox';\nimport AuCard from '@appuniversum/ember-appuniversum/components/au-card';\nimport AuList from '@appuniversum/ember-appuniversum/components/au-list';\nimport AuDropdown from '@appuniversum/ember-appuniversum/components/au-dropdown';\nimport { ChevronDownIcon } from '@appuniversum/ember-appuniversum/components/icons/chevron-down';\nimport { PlusIcon } from '@appuniversum/ember-appuniversum/components/icons/plus';\nimport AuButton from '@appuniversum/ember-appuniversum/components/au-button';\nimport { PencilIcon } from '@appuniversum/ember-appuniversum/components/icons/pencil';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\nimport type SayController from '#root/core/say-controller.ts';\nimport { getSubjects } from '#root/plugins/rdfa-info/utils.ts';\n\ntype Signature = {\n Args: {\n node: ResolvedPNode;\n controller: SayController;\n expanded?: boolean;\n onToggle?: (expanded: boolean) => void;\n };\n};\n\nexport default class ImportedResourceLinkerCard extends Component<Signature> {\n @localCopy('args.expanded', true) declare expanded: boolean;\n\n get controller() {\n return this.args.controller;\n }\n\n get node() {\n return this.args.node.value;\n }\n\n toggleSection = () => {\n this.expanded = !this.expanded;\n this.args.onToggle?.(this.expanded);\n };\n\n get allResources(): string[] {\n if (!this.controller) {\n return [];\n }\n return getSubjects(this.controller.mainEditorState);\n }\n\n get importedResources(): Record<string, string | undefined> | undefined {\n return this.node.attrs['importedResources'] as\n | Record<string, string | undefined>\n | undefined;\n }\n\n linkImportedResource = (imported: string, linked: string) => {\n const newImported = {\n ...this.importedResources,\n [imported]: linked,\n };\n this.controller?.withTransaction((tr) =>\n tr.setNodeAttribute(this.args.node.pos, 'importedResources', newImported),\n );\n };\n\n <template>\n {{#if this.importedResources}}\n <AuCard\n @size=\"small\"\n @expandable={{true}}\n @manualControl={{true}}\n @openSection={{this.toggleSection}}\n @isExpanded={{this.expanded}}\n @disableAuContent={{true}}\n as |c|\n >\n <c.header>\n <AuHeading @level=\"1\" @skin=\"6\">Imported resource linker</AuHeading>\n </c.header>\n <c.content class=\"au-c-content--small\">\n <AuList @divider={{true}} as |Item|>\n {{#each-in this.importedResources as |imported linked|}}\n <Item\n class=\"au-u-flex au-u-flex--row au-u-flex--between au-u-flex--vertical-center\"\n >\n {{imported}}\n <AuDropdown\n @icon={{if linked ChevronDownIcon PlusIcon}}\n @title={{linked}}\n role=\"menu\"\n @alignment=\"left\"\n >\n {{#each this.allResources as |res|}}\n <AuButton\n @skin=\"link\"\n @icon={{PencilIcon}}\n role=\"menuitem\"\n {{on \"click\" (fn this.linkImportedResource imported res)}}\n >\n {{res}}\n </AuButton>\n {{/each}}\n </AuDropdown>\n </Item>\n {{/each-in}}\n </AuList>\n </c.content>\n </AuCard>\n {{/if}}\n </template>\n}\n"],"names":["ImportedResourceLinkerCard","Component","g","prototype","localCopy","i","controller","args","node","value","toggleSection","expanded","onToggle","allResources","getSubjects","mainEditorState","importedResources","attrs","linkImportedResource","imported","linked","newImported","withTransaction","tr","setNodeAttribute","pos","setComponentTemplate","precompileTemplate","strictMode","scope","AuCard","AuHeading","AuList","AuDropdown","ChevronDownIcon","PlusIcon","AuButton","PencilIcon","on","fn"],"mappings":";;;;;;;;;;;;;;;;;AAyBe,MAAMA,mCAAmCC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,UAAA,EAAA,CAC/DC,UAAU,eAAA,EAAiB,IAAA,CAAA,CAAA,CAAA;AAAA;EAAA,SAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAA,MAAA;EAE5B,IAAIC,UAAAA,GAAa;AACf,IAAA,OAAO,IAAI,CAACC,IAAI,CAACD,UAAU;AAC7B,EAAA;EAEA,IAAIE,IAAAA,GAAO;AACT,IAAA,OAAO,IAAI,CAACD,IAAI,CAACC,IAAI,CAACC,KAAK;AAC7B,EAAA;EAEAC,aAAA,GAAgBA,MAAA;AACd,IAAA,IAAI,CAACC,QAAQ,GAAG,CAAC,IAAI,CAACA,QAAQ;IAC9B,IAAI,CAACJ,IAAI,CAACK,QAAQ,GAAG,IAAI,CAACD,QAAQ,CAAA;EACpC,CAAA;EAEA,IAAIE,YAAAA,GAAyB;AAC3B,IAAA,IAAI,CAAC,IAAI,CAACP,UAAU,EAAE;AACpB,MAAA,OAAO,EAAE;AACX,IAAA;AACA,IAAA,OAAOQ,WAAA,CAAY,IAAI,CAACR,UAAU,CAACS,eAAe,CAAA;AACpD,EAAA;EAEA,IAAIC,iBAAAA,GAAoE;AACtE,IAAA,OAAO,IAAI,CAACR,IAAI,CAACS,KAAK,CAAC,mBAAA,CAAoB;AAG7C,EAAA;AAEAC,EAAAA,oBAAA,GAAuBA,CAACC,QAAgB,EAAEC,MAAc,KAAA;AACtD,IAAA,MAAMC,WAAA,GAAc;MAClB,GAAG,IAAI,CAACL,iBAAiB;AACzB,MAAA,CAACG,WAAWC;KACd;IACA,IAAI,CAACd,UAAU,EAAEgB,eAAA,CAAiBC,MAChCA,EAAA,CAAGC,gBAAgB,CAAC,IAAI,CAACjB,IAAI,CAACC,IAAI,CAACiB,GAAG,EAAE,mBAAA,EAAqBJ,WAAA,CAAA,CAAA;EAEjE,CAAA;AAEA,EAAA;IAAAK,oBAAA,CAAAC,kBAAA,CAAA,ssCAAA,EA4CA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,MAAA;QAAAC,SAAA;QAAAC,MAAA;QAAAC,UAAA;QAAAC,eAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,UAAA;QAAAC,EAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -18,7 +18,7 @@ class NodeControlsCard extends Component {
|
|
|
18
18
|
this.args.onToggle?.(this.expanded);
|
|
19
19
|
};
|
|
20
20
|
static {
|
|
21
|
-
setComponentTemplate(precompileTemplate("\n <AuCard @size=\"small\" @expandable={{true}} @manualControl={{true}} @openSection={{this.toggleSection}} @isExpanded={{this.expanded}} as |c|>\n <c.header>\n <AuHeading @level=\"1\" @skin=\"6\">Node controls</AuHeading>\n </c.header>\n <c.content class=\"au-c-content--tiny\">\n <WrappingUtils @controller={{@controller}} />\n {{#if @node}}\n <RemoveNodeButton @node={{@node}} @controller={{@controller}} />\n {{/if}}\n </c.content>\n </AuCard>\n ", {
|
|
21
|
+
setComponentTemplate(precompileTemplate("\n <AuCard @size=\"small\" @expandable={{true}} @manualControl={{true}} @openSection={{this.toggleSection}} @isExpanded={{this.expanded}} @disableAuContent={{true}} as |c|>\n <c.header>\n <AuHeading @level=\"1\" @skin=\"6\">Node controls</AuHeading>\n </c.header>\n <c.content class=\"au-c-content--tiny\">\n <WrappingUtils @controller={{@controller}} />\n {{#if @node}}\n <RemoveNodeButton @node={{@node}} @controller={{@controller}} />\n {{/if}}\n </c.content>\n </AuCard>\n ", {
|
|
22
22
|
strictMode: true,
|
|
23
23
|
scope: () => ({
|
|
24
24
|
AuCard,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.js","sources":["../../../../src/components/_private/node-controls/card.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport type { ResolvedPNode } from '#root/utils/_private/types.ts';\nimport AuHeading from '@appuniversum/ember-appuniversum/components/au-heading';\nimport { localCopy } from 'tracked-toolbox';\nimport AuCard from '@appuniversum/ember-appuniversum/components/au-card';\nimport type SayController from '#root/core/say-controller.ts';\nimport WrappingUtils from './wrapping-utils.gts';\nimport RemoveNodeButton from './remove-node.gts';\n\ntype Signature = {\n Args: {\n controller: SayController;\n node?: ResolvedPNode;\n expanded?: boolean;\n onToggle?: (expanded: boolean) => void;\n };\n};\n\nexport default class NodeControlsCard extends Component<Signature> {\n @localCopy('args.expanded', true) declare expanded: boolean;\n\n toggleSection = () => {\n this.expanded = !this.expanded;\n this.args.onToggle?.(this.expanded);\n };\n\n <template>\n <AuCard\n @size=\"small\"\n @expandable={{true}}\n @manualControl={{true}}\n @openSection={{this.toggleSection}}\n @isExpanded={{this.expanded}}\n as |c|\n >\n <c.header>\n <AuHeading @level=\"1\" @skin=\"6\">Node controls</AuHeading>\n </c.header>\n <c.content class=\"au-c-content--tiny\">\n <WrappingUtils @controller={{@controller}} />\n {{#if @node}}\n <RemoveNodeButton @node={{@node}} @controller={{@controller}} />\n {{/if}}\n </c.content>\n </AuCard>\n </template>\n}\n"],"names":["NodeControlsCard","Component","g","prototype","localCopy","i","
|
|
1
|
+
{"version":3,"file":"card.js","sources":["../../../../src/components/_private/node-controls/card.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport type { ResolvedPNode } from '#root/utils/_private/types.ts';\nimport AuHeading from '@appuniversum/ember-appuniversum/components/au-heading';\nimport { localCopy } from 'tracked-toolbox';\nimport AuCard from '@appuniversum/ember-appuniversum/components/au-card';\nimport type SayController from '#root/core/say-controller.ts';\nimport WrappingUtils from './wrapping-utils.gts';\nimport RemoveNodeButton from './remove-node.gts';\n\ntype Signature = {\n Args: {\n controller: SayController;\n node?: ResolvedPNode;\n expanded?: boolean;\n onToggle?: (expanded: boolean) => void;\n };\n};\n\nexport default class NodeControlsCard extends Component<Signature> {\n @localCopy('args.expanded', true) declare expanded: boolean;\n\n toggleSection = () => {\n this.expanded = !this.expanded;\n this.args.onToggle?.(this.expanded);\n };\n\n <template>\n <AuCard\n @size=\"small\"\n @expandable={{true}}\n @manualControl={{true}}\n @openSection={{this.toggleSection}}\n @isExpanded={{this.expanded}}\n @disableAuContent={{true}}\n as |c|\n >\n <c.header>\n <AuHeading @level=\"1\" @skin=\"6\">Node controls</AuHeading>\n </c.header>\n <c.content class=\"au-c-content--tiny\">\n <WrappingUtils @controller={{@controller}} />\n {{#if @node}}\n <RemoveNodeButton @node={{@node}} @controller={{@controller}} />\n {{/if}}\n </c.content>\n </AuCard>\n </template>\n}\n"],"names":["NodeControlsCard","Component","g","prototype","localCopy","i","toggleSection","expanded","args","onToggle","setComponentTemplate","precompileTemplate","strictMode","scope","AuCard","AuHeading","WrappingUtils","RemoveNodeButton"],"mappings":";;;;;;;;;;AAkBe,MAAMA,yBAAyBC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,UAAA,EAAA,CACrDC,UAAU,eAAA,EAAiB,IAAA,CAAA,CAAA,CAAA;AAAA;EAAA,SAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAA,MAAA;EAE5BC,aAAA,GAAgBA,MAAA;AACd,IAAA,IAAI,CAACC,QAAQ,GAAG,CAAC,IAAI,CAACA,QAAQ;IAC9B,IAAI,CAACC,IAAI,CAACC,QAAQ,GAAG,IAAI,CAACF,QAAQ,CAAA;EACpC,CAAA;AAEA,EAAA;IAAAG,oBAAA,CAAAC,kBAAA,CAAA,+hBAAA,EAoBA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,MAAA;QAAAC,SAAA;QAAAC,aAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove-node.js","sources":["../../../../src/components/_private/node-controls/remove-node.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { AlertTriangleIcon } from '@appuniversum/ember-appuniversum/components/icons/alert-triangle';\n\nimport type { ResolvedPNode } from '#root/utils/_private/types.ts';\nimport type SayController from '#root/core/say-controller.ts';\nimport AuButton from '@appuniversum/ember-appuniversum/components/au-button';\nimport { on } from '@ember/modifier';\nimport { not } from 'ember-truth-helpers';\nimport AuModal from '@appuniversum/ember-appuniversum/components/au-modal';\nimport AuAlert from '@appuniversum/ember-appuniversum/components/au-alert';\nimport AuButtonGroup from '@appuniversum/ember-appuniversum/components/au-button-group';\n\ntype Args = {\n node: ResolvedPNode;\n controller: SayController;\n};\n\nexport default class RemoveNodeButton extends Component<Args> {\n AlertTriangleIcon = AlertTriangleIcon;\n\n @tracked showDialog = false;\n\n get controller() {\n return this.args.controller;\n }\n\n get node() {\n return this.args.node;\n }\n\n showConfirmationDialog = () => {\n this.showDialog = true;\n };\n\n closeConfirmationDialog = () => {\n this.showDialog = false;\n };\n\n confirmDelete = () => {\n this.deleteNode();\n this.closeConfirmationDialog();\n };\n\n deleteNode = () => {\n this.controller.withTransaction((tr) => {\n return tr.deleteRange(\n this.node.pos,\n this.node.pos + this.node.value.nodeSize,\n );\n });\n };\n\n get enabled() {\n return this.args.node.pos !== -1;\n }\n\n <template>\n <AuButton\n @width=\"block\"\n @alert={{true}}\n {{on \"click\" this.showConfirmationDialog}}\n @disabled={{not this.enabled}}\n >\n Remove node\n </AuButton>\n <AuModal\n @title=\"Delete RDFA Node\"\n @modalOpen={{this.showDialog}}\n @closeModal={{this.closeConfirmationDialog}}\n as |Modal|\n >\n <Modal.Body>\n <AuAlert\n @title=\"Delete RDFA node\"\n @skin=\"warning\"\n @icon={{this.AlertTriangleIcon}}\n >\n Are you sure you want to delete this RDFA node?\n </AuAlert>\n </Modal.Body>\n\n <Modal.Footer>\n <AuButtonGroup>\n <AuButton {{on \"click\" this.confirmDelete}} @skin=\"primary\">\n Yes\n </AuButton>\n <AuButton\n {{on \"click\" this.closeConfirmationDialog}}\n @skin=\"secondary\"\n >\n No\n </AuButton>\n </AuButtonGroup>\n </Modal.Footer>\n </AuModal>\n </template>\n}\n"],"names":["RemoveNodeButton","Component","AlertTriangleIcon","g","prototype","tracked","i","
|
|
1
|
+
{"version":3,"file":"remove-node.js","sources":["../../../../src/components/_private/node-controls/remove-node.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { AlertTriangleIcon } from '@appuniversum/ember-appuniversum/components/icons/alert-triangle';\n\nimport type { ResolvedPNode } from '#root/utils/_private/types.ts';\nimport type SayController from '#root/core/say-controller.ts';\nimport AuButton from '@appuniversum/ember-appuniversum/components/au-button';\nimport { on } from '@ember/modifier';\nimport { not } from 'ember-truth-helpers';\nimport AuModal from '@appuniversum/ember-appuniversum/components/au-modal';\nimport AuAlert from '@appuniversum/ember-appuniversum/components/au-alert';\nimport AuButtonGroup from '@appuniversum/ember-appuniversum/components/au-button-group';\n\ntype Args = {\n node: ResolvedPNode;\n controller: SayController;\n};\n\nexport default class RemoveNodeButton extends Component<Args> {\n AlertTriangleIcon = AlertTriangleIcon;\n\n @tracked showDialog = false;\n\n get controller() {\n return this.args.controller;\n }\n\n get node() {\n return this.args.node;\n }\n\n showConfirmationDialog = () => {\n this.showDialog = true;\n };\n\n closeConfirmationDialog = () => {\n this.showDialog = false;\n };\n\n confirmDelete = () => {\n this.deleteNode();\n this.closeConfirmationDialog();\n };\n\n deleteNode = () => {\n this.controller.withTransaction((tr) => {\n return tr.deleteRange(\n this.node.pos,\n this.node.pos + this.node.value.nodeSize,\n );\n });\n };\n\n get enabled() {\n return this.args.node.pos !== -1;\n }\n\n <template>\n <AuButton\n @width=\"block\"\n @alert={{true}}\n {{on \"click\" this.showConfirmationDialog}}\n @disabled={{not this.enabled}}\n >\n Remove node\n </AuButton>\n <AuModal\n @title=\"Delete RDFA Node\"\n @modalOpen={{this.showDialog}}\n @closeModal={{this.closeConfirmationDialog}}\n as |Modal|\n >\n <Modal.Body>\n <AuAlert\n @title=\"Delete RDFA node\"\n @skin=\"warning\"\n @icon={{this.AlertTriangleIcon}}\n >\n Are you sure you want to delete this RDFA node?\n </AuAlert>\n </Modal.Body>\n\n <Modal.Footer>\n <AuButtonGroup>\n <AuButton {{on \"click\" this.confirmDelete}} @skin=\"primary\">\n Yes\n </AuButton>\n <AuButton\n {{on \"click\" this.closeConfirmationDialog}}\n @skin=\"secondary\"\n >\n No\n </AuButton>\n </AuButtonGroup>\n </Modal.Footer>\n </AuModal>\n </template>\n}\n"],"names":["RemoveNodeButton","Component","AlertTriangleIcon","g","prototype","tracked","i","controller","args","node","showConfirmationDialog","showDialog","closeConfirmationDialog","confirmDelete","deleteNode","withTransaction","tr","deleteRange","pos","value","nodeSize","enabled","setComponentTemplate","precompileTemplate","strictMode","scope","AuButton","not","on","AuModal","AuAlert","AuButtonGroup"],"mappings":";;;;;;;;;;;;;AAkBe,MAAMA,yBAAyBC,SAAA,CAAU;AACtDC,EAAAA,iBAAA,GAAoBA,iBAAA;AAAkB,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,YAAA,EAAA,CAErCC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAqB,KAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,WAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAA,MAAA;EAEtB,IAAIC,UAAAA,GAAa;AACf,IAAA,OAAO,IAAI,CAACC,IAAI,CAACD,UAAU;AAC7B,EAAA;EAEA,IAAIE,IAAAA,GAAO;AACT,IAAA,OAAO,IAAI,CAACD,IAAI,CAACC,IAAI;AACvB,EAAA;EAEAC,sBAAA,GAAyBA,MAAA;IACvB,IAAI,CAACC,UAAU,GAAG,IAAA;EACpB,CAAA;EAEAC,uBAAA,GAA0BA,MAAA;IACxB,IAAI,CAACD,UAAU,GAAG,KAAA;EACpB,CAAA;EAEAE,aAAA,GAAgBA,MAAA;IACd,IAAI,CAACC,UAAU,EAAA;IACf,IAAI,CAACF,uBAAuB,EAAA;EAC9B,CAAA;EAEAE,UAAA,GAAaA,MAAA;AACX,IAAA,IAAI,CAACP,UAAU,CAACQ,eAAe,CAAEC,EAAA,IAAA;MAC/B,OAAOA,EAAA,CAAGC,WAAW,CACnB,IAAI,CAACR,IAAI,CAACS,GAAG,EACb,IAAI,CAACT,IAAI,CAACS,GAAG,GAAG,IAAI,CAACT,IAAI,CAACU,KAAK,CAACC,QAAQ,CAAA;AAE5C,IAAA,CAAA,CAAA;EACF,CAAA;EAEA,IAAIC,OAAAA,GAAU;IACZ,OAAO,IAAI,CAACb,IAAI,CAACC,IAAI,CAACS,GAAG,KAAK,EAAC;AACjC,EAAA;AAEA,EAAA;IAAAI,oBAAA,CAAAC,kBAAA,CAAA,w2BAAA,EAuCA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,OAAA;QAAAC,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -10,7 +10,7 @@ import '../../../utils/_private/constants.js';
|
|
|
10
10
|
import 'uuid';
|
|
11
11
|
import 'relative-to-absolute-iri';
|
|
12
12
|
import 'rdf-data-factory';
|
|
13
|
-
import '../../../main-
|
|
13
|
+
import '../../../main-dUbkrxFL.js';
|
|
14
14
|
import '../../../config/rdfa.js';
|
|
15
15
|
import 'iter-tools';
|
|
16
16
|
import { wrapResource } from '../../../commands/_private/rdfa-commands/wrap-resource.js';
|