@design.estate/dees-catalog 12.3.0 → 12.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist_bundle/bundle.js +2483 -1137
  2. package/dist_bundle/bundle.js.map +1 -1
  3. package/dist_ts_web/00_commitinfo_data.js +3 -3
  4. package/dist_ts_web/elements/00group-appui/dees-appui-mainmenu/dees-appui-mainmenu.d.ts +5 -0
  5. package/dist_ts_web/elements/00group-form/dees-form/dees-form.d.ts +2 -1
  6. package/dist_ts_web/elements/00group-form/dees-form/dees-form.js +2 -1
  7. package/dist_ts_web/elements/00group-input/dees-input-dropdown/dees-input-dropdown-popup.d.ts +13 -0
  8. package/dist_ts_web/elements/00group-input/dees-input-dropdown/dees-input-dropdown-popup.js +76 -7
  9. package/dist_ts_web/elements/00group-input/dees-input-reference/dees-input-reference.d.ts +42 -0
  10. package/dist_ts_web/elements/00group-input/dees-input-reference/dees-input-reference.demo.d.ts +1 -0
  11. package/dist_ts_web/elements/00group-input/dees-input-reference/dees-input-reference.demo.js +8 -0
  12. package/dist_ts_web/elements/00group-input/dees-input-reference/dees-input-reference.js +347 -0
  13. package/dist_ts_web/elements/00group-input/dees-input-reference/document.d.ts +5 -0
  14. package/dist_ts_web/elements/00group-input/dees-input-reference/document.js +45 -0
  15. package/dist_ts_web/elements/00group-input/dees-input-reference/index.d.ts +2 -0
  16. package/dist_ts_web/elements/00group-input/dees-input-reference/index.js +3 -0
  17. package/dist_ts_web/elements/00group-input/dees-input-reference/interfaces.d.ts +16 -0
  18. package/dist_ts_web/elements/00group-input/dees-input-reference/interfaces.js +2 -0
  19. package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.d.ts +12 -2
  20. package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.js +11 -1
  21. package/dist_ts_web/elements/00group-input/index.d.ts +1 -0
  22. package/dist_ts_web/elements/00group-input/index.js +2 -1
  23. package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.d.ts +58 -0
  24. package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.demo.d.ts +1 -0
  25. package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.demo.js +9 -0
  26. package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.js +536 -0
  27. package/dist_ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.d.ts +20 -0
  28. package/dist_ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.js +157 -0
  29. package/dist_ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.d.ts +23 -0
  30. package/dist_ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.js +192 -0
  31. package/dist_ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.d.ts +24 -0
  32. package/dist_ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.js +211 -0
  33. package/dist_ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.d.ts +35 -0
  34. package/dist_ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.js +269 -0
  35. package/dist_ts_web/elements/00group-kanban/index.d.ts +6 -0
  36. package/dist_ts_web/elements/00group-kanban/index.js +7 -0
  37. package/dist_ts_web/elements/00group-kanban/interfaces.d.ts +84 -0
  38. package/dist_ts_web/elements/00group-kanban/interfaces.js +2 -0
  39. package/dist_ts_web/elements/00group-kanban/kanban.demodata.d.ts +7 -0
  40. package/dist_ts_web/elements/00group-kanban/kanban.demodata.js +60 -0
  41. package/dist_ts_web/elements/00group-kanban/kanban.helpers.d.ts +6 -0
  42. package/dist_ts_web/elements/00group-kanban/kanban.helpers.js +11 -0
  43. package/dist_ts_web/elements/00group-kanban/kanban.styles.d.ts +1 -0
  44. package/dist_ts_web/elements/00group-kanban/kanban.styles.js +18 -0
  45. package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.js +7 -2
  46. package/dist_ts_web/elements/00group-workspace/dees-workspace/dees-workspace.js +3 -3
  47. package/dist_ts_web/elements/00group-workspace/dees-workspace/styles.js +10 -2
  48. package/dist_ts_web/elements/index.d.ts +1 -0
  49. package/dist_ts_web/elements/index.js +2 -1
  50. package/dist_ts_web/services/DeesServiceLibLoader.d.ts +1 -0
  51. package/dist_ts_web/services/DeesServiceLibLoader.js +2 -1
  52. package/package.json +1 -1
  53. package/readme.md +154 -0
  54. package/scripts/check-packed-consumer.mjs +1 -1
  55. package/ts_web/00_commitinfo_data.ts +3 -3
  56. package/ts_web/elements/00group-appui/dees-appui-mainmenu/dees-appui-mainmenu.ts +6 -0
  57. package/ts_web/elements/00group-form/dees-form/dees-form.ts +2 -1
  58. package/ts_web/elements/00group-input/dees-input-dropdown/dees-input-dropdown-popup.ts +40 -5
  59. package/ts_web/elements/00group-input/dees-input-reference/dees-input-reference.demo.ts +9 -0
  60. package/ts_web/elements/00group-input/dees-input-reference/dees-input-reference.ts +221 -0
  61. package/ts_web/elements/00group-input/dees-input-reference/document.ts +38 -0
  62. package/ts_web/elements/00group-input/dees-input-reference/index.ts +2 -0
  63. package/ts_web/elements/00group-input/dees-input-reference/interfaces.ts +8 -0
  64. package/ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.ts +11 -1
  65. package/ts_web/elements/00group-input/index.ts +1 -0
  66. package/ts_web/elements/00group-kanban/dees-kanban/dees-kanban.demo.ts +9 -0
  67. package/ts_web/elements/00group-kanban/dees-kanban/dees-kanban.ts +315 -0
  68. package/ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.ts +58 -0
  69. package/ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.ts +60 -0
  70. package/ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.ts +81 -0
  71. package/ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.ts +114 -0
  72. package/ts_web/elements/00group-kanban/index.ts +6 -0
  73. package/ts_web/elements/00group-kanban/interfaces.ts +67 -0
  74. package/ts_web/elements/00group-kanban/kanban.demodata.ts +56 -0
  75. package/ts_web/elements/00group-kanban/kanban.helpers.ts +13 -0
  76. package/ts_web/elements/00group-kanban/kanban.styles.ts +18 -0
  77. package/ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.ts +6 -1
  78. package/ts_web/elements/00group-workspace/dees-workspace/dees-workspace.ts +2 -2
  79. package/ts_web/elements/00group-workspace/dees-workspace/styles.ts +9 -1
  80. package/ts_web/elements/index.ts +1 -0
  81. package/ts_web/services/DeesServiceLibLoader.ts +2 -0
@@ -0,0 +1,347 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { DeesElement, customElement, property, state, html, css, cssManager } from '@design.estate/dees-element';
36
+ import { DeesServiceLibLoader } from '../../../services/DeesServiceLibLoader.js';
37
+ import { themeDefaultStyles } from '../../00theme.js';
38
+ import { DeesInputDropdownPopup } from '../dees-input-dropdown/dees-input-dropdown-popup.js';
39
+ import { referenceContent, referenceDocument } from './document.js';
40
+ import { demoFunc } from './dees-input-reference.demo.js';
41
+ let DeesInputReference = (() => {
42
+ let _classDecorators = [customElement('dees-input-reference')];
43
+ let _classDescriptor;
44
+ let _classExtraInitializers = [];
45
+ let _classThis;
46
+ let _classSuper = DeesElement;
47
+ let _value_decorators;
48
+ let _value_initializers = [];
49
+ let _value_extraInitializers = [];
50
+ let _searchReferences_decorators;
51
+ let _searchReferences_initializers = [];
52
+ let _searchReferences_extraInitializers = [];
53
+ let _trigger_decorators;
54
+ let _trigger_initializers = [];
55
+ let _trigger_extraInitializers = [];
56
+ let _label_decorators;
57
+ let _label_initializers = [];
58
+ let _label_extraInitializers = [];
59
+ let _placeholder_decorators;
60
+ let _placeholder_initializers = [];
61
+ let _placeholder_extraInitializers = [];
62
+ let _searchLabel_decorators;
63
+ let _searchLabel_initializers = [];
64
+ let _searchLabel_extraInitializers = [];
65
+ let _documentKey_decorators;
66
+ let _documentKey_initializers = [];
67
+ let _documentKey_extraInitializers = [];
68
+ let _disabled_decorators;
69
+ let _disabled_initializers = [];
70
+ let _disabled_extraInitializers = [];
71
+ let _loadError_decorators;
72
+ let _loadError_initializers = [];
73
+ let _loadError_extraInitializers = [];
74
+ var DeesInputReference = class extends _classSuper {
75
+ static { _classThis = this; }
76
+ static {
77
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
78
+ _value_decorators = [property({ attribute: false })];
79
+ _searchReferences_decorators = [property({ attribute: false })];
80
+ _trigger_decorators = [property({ type: String })];
81
+ _label_decorators = [property({ type: String })];
82
+ _placeholder_decorators = [property({ type: String })];
83
+ _searchLabel_decorators = [property({ type: String })];
84
+ _documentKey_decorators = [property({ type: String })];
85
+ _disabled_decorators = [property({ type: Boolean })];
86
+ _loadError_decorators = [state()];
87
+ __esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
88
+ __esDecorate(this, null, _searchReferences_decorators, { kind: "accessor", name: "searchReferences", static: false, private: false, access: { has: obj => "searchReferences" in obj, get: obj => obj.searchReferences, set: (obj, value) => { obj.searchReferences = value; } }, metadata: _metadata }, _searchReferences_initializers, _searchReferences_extraInitializers);
89
+ __esDecorate(this, null, _trigger_decorators, { kind: "accessor", name: "trigger", static: false, private: false, access: { has: obj => "trigger" in obj, get: obj => obj.trigger, set: (obj, value) => { obj.trigger = value; } }, metadata: _metadata }, _trigger_initializers, _trigger_extraInitializers);
90
+ __esDecorate(this, null, _label_decorators, { kind: "accessor", name: "label", static: false, private: false, access: { has: obj => "label" in obj, get: obj => obj.label, set: (obj, value) => { obj.label = value; } }, metadata: _metadata }, _label_initializers, _label_extraInitializers);
91
+ __esDecorate(this, null, _placeholder_decorators, { kind: "accessor", name: "placeholder", static: false, private: false, access: { has: obj => "placeholder" in obj, get: obj => obj.placeholder, set: (obj, value) => { obj.placeholder = value; } }, metadata: _metadata }, _placeholder_initializers, _placeholder_extraInitializers);
92
+ __esDecorate(this, null, _searchLabel_decorators, { kind: "accessor", name: "searchLabel", static: false, private: false, access: { has: obj => "searchLabel" in obj, get: obj => obj.searchLabel, set: (obj, value) => { obj.searchLabel = value; } }, metadata: _metadata }, _searchLabel_initializers, _searchLabel_extraInitializers);
93
+ __esDecorate(this, null, _documentKey_decorators, { kind: "accessor", name: "documentKey", static: false, private: false, access: { has: obj => "documentKey" in obj, get: obj => obj.documentKey, set: (obj, value) => { obj.documentKey = value; } }, metadata: _metadata }, _documentKey_initializers, _documentKey_extraInitializers);
94
+ __esDecorate(this, null, _disabled_decorators, { kind: "accessor", name: "disabled", static: false, private: false, access: { has: obj => "disabled" in obj, get: obj => obj.disabled, set: (obj, value) => { obj.disabled = value; } }, metadata: _metadata }, _disabled_initializers, _disabled_extraInitializers);
95
+ __esDecorate(this, null, _loadError_decorators, { kind: "accessor", name: "loadError", static: false, private: false, access: { has: obj => "loadError" in obj, get: obj => obj.loadError, set: (obj, value) => { obj.loadError = value; } }, metadata: _metadata }, _loadError_initializers, _loadError_extraInitializers);
96
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
97
+ DeesInputReference = _classThis = _classDescriptor.value;
98
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
99
+ }
100
+ static demo = demoFunc;
101
+ static demoGroups = ['Input', 'Kanban'];
102
+ #value_accessor_storage = __runInitializers(this, _value_initializers, []);
103
+ get value() { return this.#value_accessor_storage; }
104
+ set value(value) { this.#value_accessor_storage = value; }
105
+ #searchReferences_accessor_storage = (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _searchReferences_initializers, void 0));
106
+ get searchReferences() { return this.#searchReferences_accessor_storage; }
107
+ set searchReferences(value) { this.#searchReferences_accessor_storage = value; }
108
+ #trigger_accessor_storage = (__runInitializers(this, _searchReferences_extraInitializers), __runInitializers(this, _trigger_initializers, '#_'));
109
+ get trigger() { return this.#trigger_accessor_storage; }
110
+ set trigger(value) { this.#trigger_accessor_storage = value; }
111
+ #label_accessor_storage = (__runInitializers(this, _trigger_extraInitializers), __runInitializers(this, _label_initializers, 'Message'));
112
+ get label() { return this.#label_accessor_storage; }
113
+ set label(value) { this.#label_accessor_storage = value; }
114
+ #placeholder_accessor_storage = (__runInitializers(this, _label_extraInitializers), __runInitializers(this, _placeholder_initializers, 'Write a comment…'));
115
+ get placeholder() { return this.#placeholder_accessor_storage; }
116
+ set placeholder(value) { this.#placeholder_accessor_storage = value; }
117
+ #searchLabel_accessor_storage = (__runInitializers(this, _placeholder_extraInitializers), __runInitializers(this, _searchLabel_initializers, 'Search tickets'));
118
+ get searchLabel() { return this.#searchLabel_accessor_storage; }
119
+ set searchLabel(value) { this.#searchLabel_accessor_storage = value; }
120
+ #documentKey_accessor_storage = (__runInitializers(this, _searchLabel_extraInitializers), __runInitializers(this, _documentKey_initializers, ''));
121
+ /** Changing documents resets editor history, so undo cannot cross conversation boundaries. */
122
+ get documentKey() { return this.#documentKey_accessor_storage; }
123
+ set documentKey(value) { this.#documentKey_accessor_storage = value; }
124
+ #disabled_accessor_storage = (__runInitializers(this, _documentKey_extraInitializers), __runInitializers(this, _disabled_initializers, false));
125
+ get disabled() { return this.#disabled_accessor_storage; }
126
+ set disabled(value) { this.#disabled_accessor_storage = value; }
127
+ #loadError_accessor_storage = (__runInitializers(this, _disabled_extraInitializers), __runInitializers(this, _loadError_initializers, ''));
128
+ get loadError() { return this.#loadError_accessor_storage; }
129
+ set loadError(value) { this.#loadError_accessor_storage = value; }
130
+ editor = __runInitializers(this, _loadError_extraInitializers);
131
+ initializing;
132
+ connection = 0;
133
+ popup;
134
+ popupOpening;
135
+ referenceRange;
136
+ serializedValue = '';
137
+ static styles = [themeDefaultStyles, cssManager.defaultStyles, css `
138
+ :host { display: block; min-width: 0; color: var(--dees-color-text-primary); font-family: var(--dees-font-family); }
139
+ .editor { border: 1px solid var(--dees-color-border-default); border-radius: var(--dees-radius-lg); background: var(--dees-color-bg-primary); }
140
+ .editor:focus-within { outline: 2px solid var(--dees-color-focus-ring); outline-offset: 1px; }
141
+ .ProseMirror { padding: 12px; min-height: 84px; max-height: 260px; overflow: auto; outline: none; white-space: pre-wrap; overflow-wrap: anywhere; font-size: var(--dees-font-body-size); line-height: 1.6; }
142
+ .ProseMirror p { margin: 0; }
143
+ .ProseMirror p + p { margin-top: 0; }
144
+ .ProseMirror:has(> p:only-child > br:only-child)::before { content: attr(data-placeholder); float: left; color: var(--dees-color-text-muted); pointer-events: none; height: 0; }
145
+ .ProseMirror [data-reference-id] { display: inline; padding: 1px 5px; border-radius: var(--dees-radius-sm); color: var(--dees-color-link); background: var(--dees-color-badge-default-bg); cursor: pointer; font-weight: 500; }
146
+ .ProseMirror [data-reference-id]:focus-visible, .ProseMirror .ProseMirror-selectednode { outline: 2px solid var(--dees-color-focus-ring); }
147
+ .ProseMirror[contenteditable=false] { opacity: .65; }
148
+ .error { color: var(--dees-color-text-error); font-size: var(--dees-font-footnote-size); }
149
+ `];
150
+ render() {
151
+ return html `<div class="editor"></div>${this.loadError ? html `<p class="error" role="alert">${this.loadError}</p>` : ''}`;
152
+ }
153
+ async connectedCallback() {
154
+ const connection = super.connectedCallback();
155
+ this.connection++;
156
+ void this.initialize();
157
+ await connection;
158
+ }
159
+ /** Resolves after the lazy editor is mounted; also useful when focusing after opening a modal. */
160
+ async ready() {
161
+ await this.initialize();
162
+ if (!this.editor)
163
+ throw new Error(this.loadError || 'Connect the reference editor before calling ready().');
164
+ }
165
+ initialize() {
166
+ if (this.editor)
167
+ return Promise.resolve();
168
+ if (this.initializing)
169
+ return this.initializing;
170
+ const connection = this.connection;
171
+ const operation = (async () => {
172
+ await this.updateComplete;
173
+ const { Editor, Node, StarterKit } = await DeesServiceLibLoader.getInstance().loadTiptap();
174
+ if (!this.isConnected || connection !== this.connection)
175
+ return;
176
+ const referenceNode = Node.create({
177
+ name: 'catalogReference', group: 'inline', inline: true, atom: true, selectable: true,
178
+ addAttributes: () => ({
179
+ id: { default: '', parseHTML: element => element.getAttribute('data-reference-id') },
180
+ label: { default: '', parseHTML: element => element.textContent },
181
+ }),
182
+ parseHTML: () => [{ tag: 'span[data-reference-id]' }],
183
+ renderHTML: ({ node }) => ['span', { 'data-reference-id': String(node.attrs.id), contenteditable: 'false', role: 'link', tabindex: '0' }, String(node.attrs.label)],
184
+ renderText: ({ node }) => String(node.attrs.label),
185
+ });
186
+ this.editor = new Editor({
187
+ element: this.shadowRoot.querySelector('.editor'),
188
+ injectCSS: false,
189
+ editable: !this.disabled,
190
+ extensions: [StarterKit.configure({ blockquote: false, bold: false, bulletList: false, code: false, codeBlock: false, heading: false, horizontalRule: false, italic: false, listItem: false, orderedList: false, strike: false }), referenceNode],
191
+ content: referenceDocument(this.value),
192
+ editorProps: {
193
+ attributes: { role: 'textbox', 'aria-multiline': 'true', 'aria-label': this.label, 'data-placeholder': this.placeholder },
194
+ handleClickOn: (_view, _position, node, _nodePosition, event, direct) => {
195
+ if (!direct || node.type.name !== 'catalogReference')
196
+ return false;
197
+ event.preventDefault();
198
+ this.openReference({ id: String(node.attrs.id), label: String(node.attrs.label) });
199
+ return true;
200
+ },
201
+ handleDOMEvents: {
202
+ keydown: (_view, event) => {
203
+ const target = event.target;
204
+ if (event.key === 'Enter' && target.dataset.referenceId) {
205
+ event.preventDefault();
206
+ this.openReference({ id: target.dataset.referenceId, label: target.textContent ?? '' });
207
+ return true;
208
+ }
209
+ if ((event.ctrlKey || event.metaKey) && event.key === 'Enter' && !event.isComposing && !this.disabled) {
210
+ event.preventDefault();
211
+ this.dispatchEvent(new CustomEvent('reference-submit', { bubbles: true, composed: true }));
212
+ return true;
213
+ }
214
+ return false;
215
+ },
216
+ compositionend: () => { queueMicrotask(() => this.detectTrigger()); return false; },
217
+ },
218
+ },
219
+ onUpdate: ({ editor, transaction }) => {
220
+ this.value = referenceContent(editor.getJSON());
221
+ this.serializedValue = JSON.stringify(this.value);
222
+ this.dispatchEvent(new CustomEvent('reference-input', { detail: { value: this.value }, bubbles: true, composed: true }));
223
+ if (!transaction.getMeta('preventReferenceTrigger'))
224
+ this.detectTrigger();
225
+ },
226
+ });
227
+ this.serializedValue = JSON.stringify(this.value);
228
+ this.loadError = '';
229
+ })().catch(error => { this.loadError = error instanceof Error ? error.message : 'Could not load the editor.'; })
230
+ .finally(() => { if (this.initializing === operation)
231
+ this.initializing = undefined; });
232
+ this.initializing = operation;
233
+ return operation;
234
+ }
235
+ updated(changed) {
236
+ if (changed.has('documentKey') && changed.get('documentKey') !== undefined && this.editor) {
237
+ this.connection++;
238
+ void this.closePicker(false);
239
+ this.editor.destroy();
240
+ this.editor = undefined;
241
+ this.initializing = undefined;
242
+ void this.initialize();
243
+ }
244
+ if (changed.has('disabled')) {
245
+ this.editor?.setEditable(!this.disabled, false);
246
+ if (this.disabled)
247
+ void this.closePicker(false);
248
+ }
249
+ if (changed.has('value') && this.editor && JSON.stringify(this.value) !== this.serializedValue) {
250
+ void this.closePicker(false);
251
+ this.editor.commands.setContent(referenceDocument(this.value), false);
252
+ this.serializedValue = JSON.stringify(this.value);
253
+ }
254
+ if (changed.has('label') || changed.has('placeholder'))
255
+ this.editor?.setOptions({ editorProps: {
256
+ ...this.editor.options.editorProps,
257
+ attributes: { role: 'textbox', 'aria-multiline': 'true', 'aria-label': this.label, 'data-placeholder': this.placeholder },
258
+ } });
259
+ }
260
+ focus(options) { this.editor?.view.dom.focus(options); }
261
+ detectTrigger() {
262
+ const editor = this.editor;
263
+ if (!editor || this.disabled || this.popup || !this.searchReferences || !this.trigger || editor.view.composing || !editor.isFocused)
264
+ return;
265
+ const { from, to, $from } = editor.state.selection;
266
+ if (from !== to || $from.parentOffset < this.trigger.length)
267
+ return;
268
+ if ($from.parent.textBetween($from.parentOffset - this.trigger.length, $from.parentOffset, '', '\ufffc') !== this.trigger)
269
+ return;
270
+ this.referenceRange = { from: from - this.trigger.length, to };
271
+ void this.openPicker();
272
+ }
273
+ positionPicker() {
274
+ if (!this.editor || !this.popup || !this.referenceRange)
275
+ return;
276
+ const coords = this.editor.view.coordsAtPos(this.referenceRange.to);
277
+ this.popup.triggerRect = new DOMRect(coords.left, coords.top, 340, coords.bottom - coords.top);
278
+ this.popup.opensToTop = window.innerHeight - coords.bottom < 300 && coords.top > window.innerHeight - coords.bottom;
279
+ }
280
+ async openPicker() {
281
+ const popup = this.popup = new DeesInputDropdownPopup();
282
+ popup.ownerComponent = this;
283
+ popup.searchLabel = this.searchLabel;
284
+ popup.searchOptions = async (query, signal) => (await this.searchReferences(query, signal))
285
+ .map(reference => ({ key: reference.id, option: reference.label, payload: reference }));
286
+ this.positionPicker();
287
+ popup.addEventListener('reposition-request', () => this.positionPicker());
288
+ popup.addEventListener('close-request', () => { void this.closePicker(true); });
289
+ popup.addEventListener('keydown', (event) => {
290
+ if (event.key === 'Tab') {
291
+ event.preventDefault();
292
+ void this.closePicker(true);
293
+ }
294
+ });
295
+ popup.addEventListener('option-selected', (event) => {
296
+ const reference = event.detail.payload;
297
+ const range = this.referenceRange;
298
+ if (range && this.editor && !this.disabled) {
299
+ this.editor.chain().setMeta('preventReferenceTrigger', true).insertContentAt(range, [
300
+ { type: 'catalogReference', attrs: reference }, { type: 'text', text: ' ' },
301
+ ]).run();
302
+ }
303
+ void this.closePicker(true);
304
+ });
305
+ this.popupOpening = popup.show();
306
+ try {
307
+ await this.popupOpening;
308
+ if (this.popup === popup && this.isConnected && !this.disabled)
309
+ await popup.focusSearchInput();
310
+ }
311
+ catch (error) {
312
+ this.loadError = error instanceof Error ? error.message : 'Could not open search.';
313
+ void this.closePicker(false);
314
+ }
315
+ }
316
+ async closePicker(restoreFocus) {
317
+ const popup = this.popup;
318
+ const editor = this.editor;
319
+ const opening = this.popupOpening;
320
+ this.popup = undefined;
321
+ this.referenceRange = undefined;
322
+ if (!popup)
323
+ return;
324
+ await opening?.catch(() => undefined);
325
+ await popup.hide();
326
+ if (restoreFocus && this.isConnected && !this.disabled && this.editor === editor)
327
+ editor?.commands.focus();
328
+ }
329
+ openReference(reference) {
330
+ this.dispatchEvent(new CustomEvent('reference-open', { detail: reference, bubbles: true, composed: true }));
331
+ }
332
+ async disconnectedCallback() {
333
+ this.connection++;
334
+ void this.closePicker(false);
335
+ this.editor?.destroy();
336
+ this.editor = undefined;
337
+ this.initializing = undefined;
338
+ await super.disconnectedCallback();
339
+ }
340
+ static {
341
+ __runInitializers(_classThis, _classExtraInitializers);
342
+ }
343
+ };
344
+ return DeesInputReference = _classThis;
345
+ })();
346
+ export { DeesInputReference };
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1pbnB1dC1yZWZlcmVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1pbnB1dC9kZWVzLWlucHV0LXJlZmVyZW5jZS9kZWVzLWlucHV0LXJlZmVyZW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWpILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7SUFLN0Msa0JBQWtCOzRCQUQ5QixhQUFhLENBQUMsc0JBQXNCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FBbkIsU0FBUSxXQUFXOzs7O2lDQUdoRCxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7NENBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO2lDQUMxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7dUNBQzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzt1Q0FDMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO3VDQUUxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7b0NBQzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztxQ0FDM0IsS0FBSyxFQUFFO1lBVHdCLG9LQUFTLEtBQUssNkJBQUwsS0FBSyxxRkFBeUI7WUFDdkMscU1BQVMsZ0JBQWdCLDZCQUFoQixnQkFBZ0IsMkdBQStCO1lBQzVELDBLQUFTLE9BQU8sNkJBQVAsT0FBTyx5RkFBUTtZQUN4QixvS0FBUyxLQUFLLDZCQUFMLEtBQUsscUZBQWE7WUFDM0Isc0xBQVMsV0FBVyw2QkFBWCxXQUFXLGlHQUFzQjtZQUMxQyxzTEFBUyxXQUFXLDZCQUFYLFdBQVcsaUdBQW9CO1lBRXhDLHNMQUFTLFdBQVcsNkJBQVgsV0FBVyxpR0FBTTtZQUN6Qiw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQVM7WUFDOUMsZ0xBQWlCLFNBQVMsNkJBQVQsU0FBUyw2RkFBTTtZQVozQyw2S0FnTkM7Ozs7UUEvTVEsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDdkIsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNmLHVFQUFvQyxFQUFFLEVBQUM7UUFBdkMsSUFBUyxLQUFLLDJDQUF5QjtRQUF2QyxJQUFTLEtBQUssaURBQXlCO1FBQ3ZDLDBKQUF3RDtRQUF4RCxJQUFTLGdCQUFnQixzREFBK0I7UUFBeEQsSUFBUyxnQkFBZ0IsNERBQStCO1FBQzVELDBJQUFtQixJQUFJLEdBQUM7UUFBeEIsSUFBUyxPQUFPLDZDQUFRO1FBQXhCLElBQVMsT0FBTyxtREFBUTtRQUN4Qiw2SEFBaUIsU0FBUyxHQUFDO1FBQTNCLElBQVMsS0FBSywyQ0FBYTtRQUEzQixJQUFTLEtBQUssaURBQWE7UUFDM0IsdUlBQXVCLGtCQUFrQixHQUFDO1FBQTFDLElBQVMsV0FBVyxpREFBc0I7UUFBMUMsSUFBUyxXQUFXLHVEQUFzQjtRQUMxQyw2SUFBdUIsZ0JBQWdCLEdBQUM7UUFBeEMsSUFBUyxXQUFXLGlEQUFvQjtRQUF4QyxJQUFTLFdBQVcsdURBQW9CO1FBRXhDLDZJQUF1QixFQUFFLEdBQUM7UUFEdEQsOEZBQThGO1FBQ2xFLElBQVMsV0FBVyxpREFBTTtRQUExQixJQUFTLFdBQVcsdURBQU07UUFDekIsdUlBQW9CLEtBQUssR0FBQztRQUExQixJQUFTLFFBQVEsOENBQVM7UUFBMUIsSUFBUyxRQUFRLG9EQUFTO1FBQzlDLHNJQUE2QixFQUFFLEdBQUM7UUFBaEMsSUFBaUIsU0FBUywrQ0FBTTtRQUFoQyxJQUFpQixTQUFTLHFEQUFNO1FBQ2pDLE1BQU0seURBQVU7UUFDaEIsWUFBWSxDQUFpQjtRQUM3QixVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsS0FBSyxDQUEwQjtRQUMvQixZQUFZLENBQWlCO1FBQzdCLGNBQWMsQ0FBZ0M7UUFDOUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUV0QixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUE7Ozs7Ozs7Ozs7OztHQVl4RSxDQUFDLENBQUM7UUFFSSxNQUFNO1lBQ1gsT0FBTyxJQUFJLENBQUEsNkJBQTZCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxpQ0FBaUMsSUFBSSxDQUFDLFNBQVMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM1SCxDQUFDO1FBRU0sS0FBSyxDQUFDLGlCQUFpQjtZQUM1QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkIsTUFBTSxVQUFVLENBQUM7UUFDbkIsQ0FBQztRQUVELGtHQUFrRztRQUMzRixLQUFLLENBQUMsS0FBSztZQUNoQixNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLHNEQUFzRCxDQUFDLENBQUM7UUFDOUcsQ0FBQztRQUVPLFVBQVU7WUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQyxJQUFJLElBQUksQ0FBQyxZQUFZO2dCQUFFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztZQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ25DLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQzVCLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQztnQkFDMUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDM0YsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksVUFBVSxLQUFLLElBQUksQ0FBQyxVQUFVO29CQUFFLE9BQU87Z0JBQ2hFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7b0JBQ2hDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSTtvQkFDckYsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ3BCLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO3dCQUNwRixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7cUJBQ2xFLENBQUM7b0JBQ0YsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUseUJBQXlCLEVBQUUsQ0FBQztvQkFDckQsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNuSyxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7aUJBQ25ELENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDO29CQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVcsQ0FBQyxhQUFhLENBQWMsU0FBUyxDQUFFO29CQUNoRSxTQUFTLEVBQUUsS0FBSztvQkFDaEIsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVE7b0JBQ3hCLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQztvQkFDalAsT0FBTyxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQ3RDLFdBQVcsRUFBRTt3QkFDWCxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO3dCQUN6SCxhQUFhLEVBQUUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFOzRCQUN0RSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGtCQUFrQjtnQ0FBRSxPQUFPLEtBQUssQ0FBQzs0QkFDbkUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDOzRCQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFBQyxPQUFPLElBQUksQ0FBQzt3QkFDMUgsQ0FBQzt3QkFDRCxlQUFlLEVBQUU7NEJBQ2YsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO2dDQUN4QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztnQ0FDM0MsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO29DQUN4RCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7b0NBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29DQUFDLE9BQU8sSUFBSSxDQUFDO2dDQUMvSCxDQUFDO2dDQUNELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0NBQ3RHLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksV0FBVyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO29DQUFDLE9BQU8sSUFBSSxDQUFDO2dDQUNsSSxDQUFDO2dDQUNELE9BQU8sS0FBSyxDQUFDOzRCQUNmLENBQUM7NEJBQ0QsY0FBYyxFQUFFLEdBQUcsRUFBRSxHQUFHLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQzt5QkFDcEY7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRTt3QkFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQzt3QkFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUN6SCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQzs0QkFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQzVFLENBQUM7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDN0csT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTO2dCQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUYsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7WUFDOUIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVNLE9BQU8sQ0FBQyxPQUE2QjtZQUMxQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMxRixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2xCLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztnQkFBQyxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztnQkFDOUUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDekIsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2hELElBQUksSUFBSSxDQUFDLFFBQVE7b0JBQUUsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQy9GLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO2dCQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEVBQUUsV0FBVyxFQUFFO3dCQUM3RixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7d0JBQ2xDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7cUJBQzFILEVBQUUsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVNLEtBQUssQ0FBQyxPQUFzQixJQUFVLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVFLGFBQWE7WUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUztnQkFBRSxPQUFPO1lBQzVJLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ25ELElBQUksSUFBSSxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBQ3BFLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBQ2xJLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQy9ELEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFFTyxjQUFjO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO2dCQUFFLE9BQU87WUFDaEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvRixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3RILENBQUM7UUFFTyxLQUFLLENBQUMsVUFBVTtZQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUN4RCxLQUFLLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUM1QixLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDckMsS0FBSyxDQUFDLGFBQWEsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxnQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQ3pGLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixLQUFLLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDMUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRixLQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBb0IsRUFBRSxFQUFFO2dCQUN6RCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7b0JBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUFDLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFBQyxDQUFDO1lBQ25GLENBQUMsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLENBQUMsS0FBWSxFQUFFLEVBQUU7Z0JBQ3pELE1BQU0sU0FBUyxHQUFJLEtBQW1ELENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztnQkFDdEYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztnQkFDbEMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRTt3QkFDbEYsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO3FCQUM1RSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ1gsQ0FBQztnQkFDRCxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtvQkFBRSxNQUFNLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pHLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUM7Z0JBQ25GLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQztRQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsWUFBcUI7WUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7WUFDaEMsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsT0FBTztZQUNuQixNQUFNLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEMsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsSUFBSSxZQUFZLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNO2dCQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0csQ0FBQztRQUVPLGFBQWEsQ0FBQyxTQUEwQjtZQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksV0FBVyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUcsQ0FBQztRQUVNLEtBQUssQ0FBQyxvQkFBb0I7WUFDL0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1lBQzlCLE1BQU0sS0FBSyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDckMsQ0FBQzs7WUEvTVUsdURBQWtCOzs7OztTQUFsQixrQkFBa0IifQ==
@@ -0,0 +1,5 @@
1
+ import type { JSONContent } from '@tiptap/core';
2
+ import type { TReferenceContent } from './interfaces.js';
3
+ /** The public value is editor-independent JSON: plain text (including newlines) and references. */
4
+ export declare const referenceDocument: (value: TReferenceContent) => JSONContent;
5
+ export declare const referenceContent: (document: JSONContent) => TReferenceContent;
@@ -0,0 +1,45 @@
1
+ /** The public value is editor-independent JSON: plain text (including newlines) and references. */
2
+ export const referenceDocument = (value) => {
3
+ const paragraphs = [{ type: 'paragraph', content: [] }];
4
+ for (const part of value) {
5
+ if (part.type === 'reference') {
6
+ paragraphs.at(-1).content.push({ type: 'catalogReference', attrs: { id: part.id, label: part.label } });
7
+ }
8
+ else {
9
+ const lines = part.text.split('\n');
10
+ lines.forEach((text, index) => {
11
+ if (index)
12
+ paragraphs.push({ type: 'paragraph', content: [] });
13
+ if (text)
14
+ paragraphs.at(-1).content.push({ type: 'text', text });
15
+ });
16
+ }
17
+ }
18
+ return { type: 'doc', content: paragraphs };
19
+ };
20
+ export const referenceContent = (document) => {
21
+ const parts = [];
22
+ const appendText = (text) => {
23
+ if (!text)
24
+ return;
25
+ const last = parts.at(-1);
26
+ if (last?.type === 'text')
27
+ last.text += text;
28
+ else
29
+ parts.push({ type: 'text', text });
30
+ };
31
+ for (const [index, paragraph] of (document.content ?? []).entries()) {
32
+ if (index)
33
+ appendText('\n');
34
+ for (const node of paragraph.content ?? []) {
35
+ if (node.type === 'catalogReference')
36
+ parts.push({ type: 'reference', id: String(node.attrs.id), label: String(node.attrs.label) });
37
+ else if (node.type === 'hardBreak')
38
+ appendText('\n');
39
+ else
40
+ appendText(node.text ?? '');
41
+ }
42
+ }
43
+ return parts;
44
+ };
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1pbnB1dC9kZWVzLWlucHV0LXJlZmVyZW5jZS9kb2N1bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxtR0FBbUc7QUFDbkcsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUF3QixFQUFlLEVBQUU7SUFDekUsTUFBTSxVQUFVLEdBQWtCLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQzlCLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxPQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVHLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDNUIsSUFBSSxLQUFLO29CQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLElBQUk7b0JBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLE9BQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDckUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUM5QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFFBQXFCLEVBQXFCLEVBQUU7SUFDM0UsTUFBTSxLQUFLLEdBQXNCLEVBQUUsQ0FBQztJQUNwQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO1FBQ2xDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUNsQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxJQUFJLEVBQUUsSUFBSSxLQUFLLE1BQU07WUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQzs7WUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUM7SUFDRixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDcEUsSUFBSSxLQUFLO1lBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLEtBQUssTUFBTSxJQUFJLElBQUksU0FBUyxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUMzQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssa0JBQWtCO2dCQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNqSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVztnQkFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7O2dCQUNoRCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,2 @@
1
+ export * from './interfaces.js';
2
+ export * from './dees-input-reference.js';
@@ -0,0 +1,3 @@
1
+ export * from './interfaces.js';
2
+ export * from './dees-input-reference.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1pbnB1dC9kZWVzLWlucHV0LXJlZmVyZW5jZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsMkJBQTJCLENBQUMifQ==
@@ -0,0 +1,16 @@
1
+ /** Stable reference identity; label is a human-readable snapshot, never the lookup key. */
2
+ export interface IInputReference {
3
+ id: string;
4
+ label: string;
5
+ }
6
+ export type TReferencePart = {
7
+ type: 'text';
8
+ text: string;
9
+ } | {
10
+ type: 'reference';
11
+ id: string;
12
+ label: string;
13
+ };
14
+ export type TReferenceContent = TReferencePart[];
15
+ export type TReferenceSearch = (query: string, signal: AbortSignal) => Promise<IInputReference[]>;
16
+ export declare const referenceText: (content: TReferenceContent) => string;
@@ -0,0 +1,2 @@
1
+ export const referenceText = (content) => content.map(part => part.type === 'text' ? part.text : part.label).join('');
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWlucHV0L2RlZXMtaW5wdXQtcmVmZXJlbmNlL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBMEIsRUFBVSxFQUFFLENBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyJ9
@@ -1,6 +1,6 @@
1
1
  import { DeesInputBase } from '../dees-input-base/dees-input-base.js';
2
2
  import { type TemplateResult } from '@design.estate/dees-element';
3
- import { type IBlock, type OutputFormat, WysiwygBlockOperations, DeesSlashMenu, DeesFormattingMenu } from './index.js';
3
+ import { type IBlock, type OutputFormat, WysiwygBlockOperations, WysiwygDragDropHandler, DeesSlashMenu, DeesFormattingMenu } from './index.js';
4
4
  declare global {
5
5
  interface HTMLElementTagNameMap {
6
6
  'dees-input-wysiwyg': DeesInputWysiwyg;
@@ -25,7 +25,17 @@ export declare class DeesInputWysiwyg extends DeesInputBase<string> {
25
25
  blockOperations: WysiwygBlockOperations;
26
26
  private inputHandler;
27
27
  private keyboardHandler;
28
- private dragDropHandler;
28
+ /**
29
+ * Block drag and drop, public alongside `blockOperations` because the drag *interaction* has
30
+ * no other seam: `dragState`, the drop indicator and the global drag-over listener all live in
31
+ * this handler, and a native HTML5 drag sequence cannot be synthesised from script, so a host
32
+ * or a test that exercises dragging has to drive `handleDragStart` / `handleDragEnd` itself.
33
+ * Reordering a block programmatically needs none of that: `blockOperations.moveBlock(blockId,
34
+ * targetIndex)` is the public path for that, on the public `blocks` accessor. The remaining
35
+ * handlers stay private because everything they own is reachable through ordinary input and
36
+ * keyboard events.
37
+ */
38
+ dragDropHandler: WysiwygDragDropHandler;
29
39
  private history;
30
40
  static styles: import("@design.estate/dees-element").CSSResult[];
31
41
  constructor();