@sciflow/editor-start 0.0.1-beta2 → 0.0.3

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 (44) hide show
  1. package/README.md +49 -2
  2. package/THIRD_PARTY_LICENSES +9 -0
  3. package/bin/extract-translations.mjs +54 -0
  4. package/dist/bundle/sciflow-editor.css +1 -1
  5. package/dist/bundle/sciflow-editor.js +9821 -16643
  6. package/dist/index.d.ts +7 -2
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +6 -3
  9. package/dist/lib/citation-source-adapter.d.ts +1 -1
  10. package/dist/lib/citation-source-adapter.d.ts.map +1 -1
  11. package/dist/lib/citation-source-adapter.js +1 -1
  12. package/dist/lib/drag-preview.d.ts.map +1 -1
  13. package/dist/lib/drag-preview.js +9 -2
  14. package/dist/lib/editor-element.d.ts +14 -3
  15. package/dist/lib/editor-element.d.ts.map +1 -1
  16. package/dist/lib/editor-element.js +25 -1
  17. package/dist/lib/format-bar.d.ts +19 -2
  18. package/dist/lib/format-bar.d.ts.map +1 -1
  19. package/dist/lib/format-bar.js +303 -59
  20. package/dist/lib/ghost-cursor.d.ts +10 -0
  21. package/dist/lib/ghost-cursor.d.ts.map +1 -0
  22. package/dist/lib/ghost-cursor.js +59 -0
  23. package/dist/lib/icons-generated.d.ts +14 -0
  24. package/dist/lib/icons-generated.d.ts.map +1 -0
  25. package/dist/lib/icons-generated.js +60 -0
  26. package/dist/lib/outline.d.ts +8 -5
  27. package/dist/lib/outline.d.ts.map +1 -1
  28. package/dist/lib/outline.js +80 -35
  29. package/dist/lib/reference-list.d.ts +10 -2
  30. package/dist/lib/reference-list.d.ts.map +1 -1
  31. package/dist/lib/reference-list.js +45 -9
  32. package/dist/lib/selection-editor.d.ts +16 -0
  33. package/dist/lib/selection-editor.d.ts.map +1 -1
  34. package/dist/lib/selection-editor.js +291 -148
  35. package/dist/lib/selection-ui-renderer.d.ts +1 -0
  36. package/dist/lib/selection-ui-renderer.d.ts.map +1 -1
  37. package/dist/lib/selection-ui-renderer.js +3 -3
  38. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  39. package/package.json +24 -17
  40. package/dist/demo/demo.js +0 -56
  41. package/dist/demo/index.html +0 -169
  42. package/dist/lib/citation-drop.d.ts +0 -25
  43. package/dist/lib/citation-drop.d.ts.map +0 -1
  44. package/dist/lib/citation-drop.js +0 -53
@@ -26,10 +26,6 @@ export type DocumentOutline = {
26
26
  };
27
27
  export type OutlineClickBehavior = 'none' | 'select' | 'scroll';
28
28
  export declare function collectDocumentOutline(doc: SciFlowDocJSON | null | undefined, pmDoc?: ProsemirrorNode | null): DocumentOutline;
29
- /**
30
- * Helper used by the demo to expose outline data for debugging.
31
- */
32
- export declare function logDocumentOutline(doc: SciFlowDocJSON | null | undefined, pmDoc?: ProsemirrorNode | null): DocumentOutline;
33
29
  /**
34
30
  * Web component that renders a document outline and stays in sync with a
35
31
  * <sciflow-editor> instance. Hosts can either set the `for` attribute to point
@@ -59,11 +55,18 @@ export declare class SciFlowOutlineElement extends LitElement {
59
55
  private headings;
60
56
  private figures;
61
57
  private activeHeadingKey;
58
+ /**
59
+ * When `true`, the Insert ref buttons are enabled. The component sets this
60
+ * automatically via `editor-selection-change` when an editor is bound. In
61
+ * doc-only mode (no bound editor), hosts can set this property directly.
62
+ */
63
+ cursorActive: boolean;
62
64
  private resolvedEditor;
63
65
  private selectionListener?;
64
66
  private changeListener?;
65
67
  private readyListener?;
66
68
  private lastSelection;
69
+ private localeListener?;
67
70
  private themeUnsub?;
68
71
  private themeStyleElements;
69
72
  static styles: import("lit").CSSResult;
@@ -74,6 +77,7 @@ export declare class SciFlowOutlineElement extends LitElement {
74
77
  private renderHeadingItem;
75
78
  private renderFigureItem;
76
79
  private handleCrossReferenceDragStart;
80
+ private handleInsertCrossReference;
77
81
  private handleHeadingKeydown;
78
82
  private handleHeadingClick;
79
83
  private resolveEditorReference;
@@ -89,7 +93,6 @@ export declare class SciFlowOutlineElement extends LitElement {
89
93
  private getHeadingSelectionPosition;
90
94
  private extractDocFromEditor;
91
95
  private normalizeClickBehavior;
92
- private dispatchOutlineChange;
93
96
  }
94
97
  declare global {
95
98
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"outline.d.ts","sourceRoot":"","sources":["../../src/lib/outline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outline.d.ts","sourceRoot":"","sources":["../../src/lib/outline.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { css, html, LitElement, nothing, unsafeCSS } from 'lit';
3
3
  import { customElement, property, state } from 'lit/decorators.js';
4
4
  import { classMap } from 'lit/directives/class-map.js';
5
- import { SourceField, } from '@sciflow/editor-core';
5
+ import { SourceField, t, LOCALE_CHANGE_EVENT, } from '@sciflow/editor-core';
6
6
  import { setTransparentDragImage } from './drag-preview.js';
7
7
  import outlineStyles from './outline.css?inline';
8
8
  import { applyThemeStylesToRoot, subscribeToSciFlowTheme } from './theme.js';
@@ -54,7 +54,7 @@ function figureLabel(node) {
54
54
  if (typeof alt === 'string' && alt.trim())
55
55
  return alt.trim();
56
56
  const id = node.attrs?.id;
57
- return typeof id === 'string' && id.trim() ? id : 'Figure';
57
+ return typeof id === 'string' && id.trim() ? id : t('outline.figure');
58
58
  }
59
59
  function figureLabelFromJson(node) {
60
60
  const alt = node?.attrs?.alt;
@@ -64,7 +64,7 @@ function figureLabelFromJson(node) {
64
64
  for (const child of content) {
65
65
  if (child?.type === 'caption' && Array.isArray(child.content)) {
66
66
  const text = child.content
67
- .map((c) => c?.content?.map((t) => t?.text ?? '').join('') ?? '')
67
+ .map((c) => c?.content?.map((n) => n?.text ?? '').join('') ?? '')
68
68
  .join('')
69
69
  .trim();
70
70
  if (text)
@@ -72,7 +72,7 @@ function figureLabelFromJson(node) {
72
72
  }
73
73
  }
74
74
  const id = node?.attrs?.id;
75
- return typeof id === 'string' && id.trim() ? id : 'Figure';
75
+ return typeof id === 'string' && id.trim() ? id : t('outline.figure');
76
76
  }
77
77
  export function collectDocumentOutline(doc, pmDoc = null) {
78
78
  const outline = {
@@ -147,15 +147,6 @@ export function collectDocumentOutline(doc, pmDoc = null) {
147
147
  walk(doc);
148
148
  return outline;
149
149
  }
150
- /**
151
- * Helper used by the demo to expose outline data for debugging.
152
- */
153
- export function logDocumentOutline(doc, pmDoc = null) {
154
- const outline = collectDocumentOutline(doc, pmDoc);
155
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- instrumentation hook only
156
- globalThis.__SCIFLOW_OUTLINE__ = outline;
157
- return outline;
158
- }
159
150
  /**
160
151
  * Web component that renders a document outline and stays in sync with a
161
152
  * <sciflow-editor> instance. Hosts can either set the `for` attribute to point
@@ -175,7 +166,7 @@ let SciFlowOutlineElement = class SciFlowOutlineElement extends LitElement {
175
166
  /** Optional document JSON source when not listening to an editor element. */
176
167
  this.doc = null;
177
168
  /** Placeholder text displayed when no headings are present. */
178
- this.emptyText = 'No headings yet.';
169
+ this.emptyText = '';
179
170
  /** Controls click behavior: disabled, set selection, or set selection + scroll. */
180
171
  this.clickBehavior = 'scroll';
181
172
  /** Filter the outline to specific heading levels (e.g., "1-3" or "1,2,3"). */
@@ -183,6 +174,12 @@ let SciFlowOutlineElement = class SciFlowOutlineElement extends LitElement {
183
174
  this.headings = [];
184
175
  this.figures = [];
185
176
  this.activeHeadingKey = null;
177
+ /**
178
+ * When `true`, the Insert ref buttons are enabled. The component sets this
179
+ * automatically via `editor-selection-change` when an editor is bound. In
180
+ * doc-only mode (no bound editor), hosts can set this property directly.
181
+ */
182
+ this.cursorActive = false;
186
183
  this.resolvedEditor = null;
187
184
  this.lastSelection = null;
188
185
  this.themeStyleElements = [];
@@ -193,10 +190,16 @@ let SciFlowOutlineElement = class SciFlowOutlineElement extends LitElement {
193
190
  this.themeUnsub = subscribeToSciFlowTheme((cssTexts) => {
194
191
  this.themeStyleElements = applyThemeStylesToRoot(this.renderRoot, this.themeStyleElements, cssTexts);
195
192
  });
193
+ this.localeListener = () => this.requestUpdate();
194
+ document.addEventListener(LOCALE_CHANGE_EVENT, this.localeListener);
196
195
  this.resolveEditorReference();
197
196
  }
198
197
  disconnectedCallback() {
199
198
  this.detachEditorListeners();
199
+ if (this.localeListener) {
200
+ document.removeEventListener(LOCALE_CHANGE_EVENT, this.localeListener);
201
+ this.localeListener = undefined;
202
+ }
200
203
  this.themeUnsub?.();
201
204
  this.themeUnsub = undefined;
202
205
  super.disconnectedCallback();
@@ -221,7 +224,7 @@ let SciFlowOutlineElement = class SciFlowOutlineElement extends LitElement {
221
224
  if (!hasHeadings && !hasFigures) {
222
225
  return html `
223
226
  <ol class="outline-list" part="list">
224
- <li class="outline-placeholder" part="placeholder">${this.emptyText}</li>
227
+ <li class="outline-placeholder" part="placeholder">${this.emptyText || t('outline.noHeadings')}</li>
225
228
  </ol>
226
229
  `;
227
230
  }
@@ -236,7 +239,7 @@ let SciFlowOutlineElement = class SciFlowOutlineElement extends LitElement {
236
239
  const key = this.headingKey(heading, index);
237
240
  const isActive = this.activeHeadingKey === key;
238
241
  const clickable = this.clickBehavior !== 'none' && heading.position !== null && heading.position !== undefined;
239
- const label = this.renderHeadingLabel?.(heading, index) ?? heading.text?.trim() ?? 'Untitled section';
242
+ const label = this.renderHeadingLabel?.(heading, index) ?? heading.text?.trim() ?? t('outline.untitledSection');
240
243
  const draggable = Boolean(heading.id?.trim());
241
244
  return html `
242
245
  <li
@@ -256,13 +259,30 @@ let SciFlowOutlineElement = class SciFlowOutlineElement extends LitElement {
256
259
  @keydown=${clickable ? (event) => this.handleHeadingKeydown(event, heading, index) : undefined}
257
260
  @dragstart=${draggable ? (e) => this.handleCrossReferenceDragStart(e, 'heading', heading.id, String(label ?? '')) : undefined}
258
261
  >
262
+ ${heading.level ? html `<span class="outline-level" part="level" aria-hidden="true">H${heading.level}</span>` : nothing}
259
263
  <span class="outline-text" part="text">${label}</span>
260
264
  <span class="outline-meta" part="meta">
261
- ${heading.level ? html `<span part="level">H${heading.level}</span>` : nothing}
262
265
  ${heading.id
263
- ? html `<code class="outline-id" part="id" aria-label=${`Heading id ${heading.id}`}>${heading.id}</code>`
266
+ ? html `<code class="outline-id" part="id" aria-label=${`${t('outline.headingIdAriaLabel')} ${heading.id}`}>${heading.id}</code>`
267
+ : nothing}
268
+ ${draggable
269
+ ? html `
270
+ <button
271
+ type="button"
272
+ class="outline-insert-btn"
273
+ title=${t('outline.insertCrossReferenceAriaLabel')}
274
+ aria-label=${t('outline.insertCrossReferenceAriaLabel')}
275
+ ?disabled=${!this.cursorActive}
276
+ @mousedown=${(e) => e.preventDefault()}
277
+ @click=${(e) => {
278
+ e.stopPropagation();
279
+ if (this.cursorActive)
280
+ this.handleInsertCrossReference('heading', heading.id, String(label ?? ''));
281
+ }}
282
+ >${t('outline.insertCrossReference')}</button>
283
+ <span class="outline-drag" aria-hidden="true">drag</span>
284
+ `
264
285
  : nothing}
265
- ${draggable ? html `<span class="outline-drag" aria-hidden="true">drag</span>` : nothing}
266
286
  </span>
267
287
  </li>
268
288
  `;
@@ -270,7 +290,7 @@ let SciFlowOutlineElement = class SciFlowOutlineElement extends LitElement {
270
290
  renderFigureItem(figure, index) {
271
291
  const id = figure.id?.trim();
272
292
  const draggable = Boolean(id);
273
- const label = figure.text?.trim() || (id ?? `Figure ${index + 1}`);
293
+ const label = figure.text?.trim() || (id ?? `${t('outline.figure')} ${index + 1}`);
274
294
  return html `
275
295
  <li
276
296
  class=${classMap({
@@ -280,16 +300,34 @@ let SciFlowOutlineElement = class SciFlowOutlineElement extends LitElement {
280
300
  part="item"
281
301
  data-outline-id=${figure.id ?? ''}
282
302
  role="listitem"
283
- tabindex="-1"
303
+ tabindex="0"
284
304
  draggable=${draggable ? 'true' : 'false'}
285
305
  @dragstart=${draggable && id ? (e) => this.handleCrossReferenceDragStart(e, 'figure', id, label) : undefined}
286
306
  >
307
+ <span class="outline-level outline-level--figure" aria-hidden="true">Fig</span>
287
308
  <span class="outline-text" part="text">${label}</span>
288
309
  <span class="outline-meta" part="meta">
289
310
  ${id
290
- ? html `<code class="outline-id" part="id" aria-label=${`Figure id ${id}`}>${id}</code>`
311
+ ? html `<code class="outline-id" part="id" aria-label=${`${t('outline.figureIdAriaLabel')} ${id}`}>${id}</code>`
312
+ : nothing}
313
+ ${draggable && id
314
+ ? html `
315
+ <button
316
+ type="button"
317
+ class="outline-insert-btn"
318
+ title=${t('outline.insertCrossReferenceAriaLabel')}
319
+ aria-label=${t('outline.insertCrossReferenceAriaLabel')}
320
+ ?disabled=${!this.cursorActive}
321
+ @mousedown=${(e) => e.preventDefault()}
322
+ @click=${(e) => {
323
+ e.stopPropagation();
324
+ if (this.cursorActive)
325
+ this.handleInsertCrossReference('figure', id, label);
326
+ }}
327
+ >${t('outline.insertCrossReference')}</button>
328
+ <span class="outline-drag" aria-hidden="true">drag</span>
329
+ `
291
330
  : nothing}
292
- ${draggable && id ? html `<span class="outline-drag" aria-hidden="true">drag</span>` : nothing}
293
331
  </span>
294
332
  </li>
295
333
  `;
@@ -319,6 +357,19 @@ let SciFlowOutlineElement = class SciFlowOutlineElement extends LitElement {
319
357
  transfer.setData('text/plain', text);
320
358
  }
321
359
  }
360
+ handleInsertCrossReference(refType, id, text) {
361
+ this.dispatchEvent(new CustomEvent('sciflow-insert-cross-reference', {
362
+ bubbles: true,
363
+ composed: true,
364
+ detail: {
365
+ type: 'cross-reference',
366
+ refType,
367
+ id,
368
+ href: `#${id}`,
369
+ text,
370
+ },
371
+ }));
372
+ }
322
373
  handleHeadingKeydown(event, heading, index) {
323
374
  if (event.key === 'Enter' || event.key === ' ') {
324
375
  event.preventDefault();
@@ -364,7 +415,7 @@ let SciFlowOutlineElement = class SciFlowOutlineElement extends LitElement {
364
415
  }
365
416
  }
366
417
  this.activeHeadingKey = this.headingKey(heading, index);
367
- this.dispatchEvent(new CustomEvent('outline-navigate', {
418
+ this.dispatchEvent(new CustomEvent('sciflow-outline-navigate', {
368
419
  detail: {
369
420
  heading,
370
421
  behavior: this.clickBehavior,
@@ -427,8 +478,10 @@ let SciFlowOutlineElement = class SciFlowOutlineElement extends LitElement {
427
478
  this.selectionListener = (event) => {
428
479
  const selection = event.detail;
429
480
  this.updateActiveHeading(selection);
481
+ this.cursorActive = true;
430
482
  };
431
483
  this.readyListener = () => {
484
+ this.cursorActive = false;
432
485
  const pmDoc = editor.editorView?.state?.doc ?? null;
433
486
  this.updateHeadingsFromDoc(this.doc ?? this.extractDocFromEditor(editor), pmDoc);
434
487
  if (pmDoc) {
@@ -468,7 +521,6 @@ let SciFlowOutlineElement = class SciFlowOutlineElement extends LitElement {
468
521
  this.headings = filtered;
469
522
  this.figures = outline.figures ?? [];
470
523
  this.updateActiveHeading(this.lastSelection);
471
- this.dispatchOutlineChange(filtered);
472
524
  }
473
525
  applyLevelFilter(headings) {
474
526
  const levelSet = this.getLevelFilterSet();
@@ -550,16 +602,6 @@ let SciFlowOutlineElement = class SciFlowOutlineElement extends LitElement {
550
602
  normalizeClickBehavior(value) {
551
603
  return CLICK_BEHAVIORS.includes(value) ? value : 'scroll';
552
604
  }
553
- dispatchOutlineChange(headings) {
554
- this.dispatchEvent(new CustomEvent('outline-change', {
555
- detail: {
556
- headings,
557
- active: this.activeHeadingKey,
558
- },
559
- bubbles: true,
560
- composed: true,
561
- }));
562
- }
563
605
  };
564
606
  __decorate([
565
607
  property({ attribute: false })
@@ -596,6 +638,9 @@ __decorate([
596
638
  __decorate([
597
639
  state()
598
640
  ], SciFlowOutlineElement.prototype, "activeHeadingKey", void 0);
641
+ __decorate([
642
+ property({ type: Boolean, attribute: false })
643
+ ], SciFlowOutlineElement.prototype, "cursorActive", void 0);
599
644
  SciFlowOutlineElement = __decorate([
600
645
  customElement('sciflow-outline')
601
646
  ], SciFlowOutlineElement);
@@ -14,8 +14,8 @@ type ReferenceAuthor = {
14
14
  } | null;
15
15
  export type ReferenceListEntry = {
16
16
  id?: string | null;
17
- rawCitation?: string | null;
18
- raw_citation?: string | null;
17
+ rawReference?: string | null;
18
+ raw_reference?: string | null;
19
19
  author?: ReferenceAuthor[] | null;
20
20
  issued?: {
21
21
  'date-parts'?: Array<Array<number | string | null> | null> | null;
@@ -31,8 +31,15 @@ export declare class SciFlowReferenceListElement extends LitElement {
31
31
  references: ReferenceListEntry[] | null;
32
32
  /** Reference IDs to highlight. */
33
33
  highlightedIds: string[];
34
+ /**
35
+ * Whether the editor has an active cursor. Controls the enabled state of
36
+ * the "Cite" button. Set to true when the editor has focus/selection and
37
+ * false when it does not.
38
+ */
39
+ cursorActive: boolean;
34
40
  /** Text displayed when no references are available. */
35
41
  emptyText: string;
42
+ private localeListener?;
36
43
  private themeUnsub?;
37
44
  private themeStyleElements;
38
45
  static styles: import("lit").CSSResult;
@@ -47,6 +54,7 @@ export declare class SciFlowReferenceListElement extends LitElement {
47
54
  protected render(): import("lit-html").TemplateResult<1>;
48
55
  private formatReference;
49
56
  private formatAuthor;
57
+ private handleInsertCitation;
50
58
  private handleDragStart;
51
59
  }
52
60
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"reference-list.d.ts","sourceRoot":"","sources":["../../src/lib/reference-list.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAa,UAAU,EAAsB,MAAM,KAAK,CAAC;AAOhE,KAAK,eAAe,GAAG;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,GAAG,IAAI,CAAC;AAET,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACtF,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,qBACa,2BAA4B,SAAQ,UAAU;IACzD,4BAA4B;IAE5B,UAAU,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAQ;IAE/C,kCAAkC;IAElC,cAAc,EAAE,MAAM,EAAE,CAAM;IAE9B,uDAAuD;IAEvD,SAAS,SAAwB;IAEjC,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,kBAAkB,CAA0B;IAEpD,OAAgB,MAAM,0BAAuC;IAEpD,iBAAiB,IAAI,IAAI;IAWzB,oBAAoB,IAAI,IAAI;IAMrC;;;;OAIG;IACH,SAAS,CAAC,YAAY,GAAE,QAAQ,CAAC,MAAM,CAAM,GAAG,IAAI;cAMjC,MAAM;IA2CzB,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,eAAe;CAiCxB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,wBAAwB,EAAE,2BAA2B,CAAC;KACvD;CACF"}
1
+ {"version":3,"file":"reference-list.d.ts","sourceRoot":"","sources":["../../src/lib/reference-list.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAa,UAAU,EAAsB,MAAM,KAAK,CAAC;AAQhE,KAAK,eAAe,GAAG;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,GAAG,IAAI,CAAC;AAET,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACtF,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,qBACa,2BAA4B,SAAQ,UAAU;IACzD,4BAA4B;IAE5B,UAAU,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAQ;IAE/C,kCAAkC;IAElC,cAAc,EAAE,MAAM,EAAE,CAAM;IAE9B;;;;OAIG;IAEH,YAAY,UAAS;IAErB,uDAAuD;IAEvD,SAAS,SAAM;IAEf,OAAO,CAAC,cAAc,CAAC,CAAgB;IACvC,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,kBAAkB,CAA0B;IAEpD,OAAgB,MAAM,0BAAuC;IAEpD,iBAAiB,IAAI,IAAI;IAazB,oBAAoB,IAAI,IAAI;IAUrC;;;;OAIG;IACH,SAAS,CAAC,YAAY,GAAE,QAAQ,CAAC,MAAM,CAAM,GAAG,IAAI;cAMjC,MAAM;IAuDzB,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,eAAe;CAiCxB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,wBAAwB,EAAE,2BAA2B,CAAC;KACvD;CACF"}
@@ -11,6 +11,7 @@ import { __decorate } from "tslib";
11
11
  import { css, html, LitElement, nothing, unsafeCSS } from 'lit';
12
12
  import { customElement, property } from 'lit/decorators.js';
13
13
  import { classMap } from 'lit/directives/class-map.js';
14
+ import { t, LOCALE_CHANGE_EVENT } from '@sciflow/editor-core';
14
15
  import { setTransparentDragImage } from './drag-preview.js';
15
16
  import referenceListCss from './reference-list.css?inline';
16
17
  import { applyThemeStylesToRoot, subscribeToSciFlowTheme } from './theme.js';
@@ -21,8 +22,14 @@ let SciFlowReferenceListElement = class SciFlowReferenceListElement extends LitE
21
22
  this.references = null;
22
23
  /** Reference IDs to highlight. */
23
24
  this.highlightedIds = [];
25
+ /**
26
+ * Whether the editor has an active cursor. Controls the enabled state of
27
+ * the "Cite" button. Set to true when the editor has focus/selection and
28
+ * false when it does not.
29
+ */
30
+ this.cursorActive = false;
24
31
  /** Text displayed when no references are available. */
25
- this.emptyText = 'No references yet.';
32
+ this.emptyText = '';
26
33
  this.themeStyleElements = [];
27
34
  }
28
35
  static { this.styles = css `${unsafeCSS(referenceListCss)}`; }
@@ -31,8 +38,14 @@ let SciFlowReferenceListElement = class SciFlowReferenceListElement extends LitE
31
38
  this.themeUnsub = subscribeToSciFlowTheme((cssTexts) => {
32
39
  this.themeStyleElements = applyThemeStylesToRoot(this.renderRoot, this.themeStyleElements, cssTexts);
33
40
  });
41
+ this.localeListener = () => this.requestUpdate();
42
+ document.addEventListener(LOCALE_CHANGE_EVENT, this.localeListener);
34
43
  }
35
44
  disconnectedCallback() {
45
+ if (this.localeListener) {
46
+ document.removeEventListener(LOCALE_CHANGE_EVENT, this.localeListener);
47
+ this.localeListener = undefined;
48
+ }
36
49
  this.themeUnsub?.();
37
50
  this.themeUnsub = undefined;
38
51
  super.disconnectedCallback();
@@ -53,7 +66,7 @@ let SciFlowReferenceListElement = class SciFlowReferenceListElement extends LitE
53
66
  if (references.length === 0) {
54
67
  return html `
55
68
  <ol class="reference-list">
56
- <li class="reference-item reference-empty">${this.emptyText}</li>
69
+ <li class="reference-item reference-empty">${this.emptyText || t('referenceList.noReferences')}</li>
57
70
  </ol>
58
71
  `;
59
72
  }
@@ -75,8 +88,21 @@ let SciFlowReferenceListElement = class SciFlowReferenceListElement extends LitE
75
88
  <span class="reference-text">${displayText || nothing}</span>
76
89
  <span class="reference-meta">
77
90
  ${id
78
- ? html `<code class="reference-id" aria-label=${`CSL id ${id}`}>${id}</code>`
91
+ ? html `<code class="reference-id" aria-label=${`${t('referenceList.cslIdAriaLabel')} ${id}`}>${id}</code>`
79
92
  : nothing}
93
+ <button
94
+ type="button"
95
+ class="reference-cite-btn"
96
+ title=${t('referenceList.insertCitation')}
97
+ aria-label=${t('referenceList.insertCitation')}
98
+ ?disabled=${!this.cursorActive}
99
+ @mousedown=${(event) => event.preventDefault()}
100
+ @click=${(event) => {
101
+ event.stopPropagation();
102
+ if (this.cursorActive)
103
+ this.handleInsertCitation(reference);
104
+ }}
105
+ >${t('referenceList.insertCitation')}</button>
80
106
  <span class="reference-drag" aria-hidden="true">drag</span>
81
107
  </span>
82
108
  </li>
@@ -87,13 +113,13 @@ let SciFlowReferenceListElement = class SciFlowReferenceListElement extends LitE
87
113
  }
88
114
  formatReference(reference) {
89
115
  const id = typeof reference.id === 'string' ? reference.id : null;
90
- const rawCitation = typeof reference.rawCitation === 'string'
91
- ? reference.rawCitation
92
- : typeof reference.raw_citation === 'string'
93
- ? reference.raw_citation
116
+ const rawReference = typeof reference.rawReference === 'string'
117
+ ? reference.rawReference
118
+ : typeof reference.raw_reference === 'string'
119
+ ? reference.raw_reference
94
120
  : null;
95
- if (rawCitation && rawCitation.trim()) {
96
- return { id, displayText: rawCitation.trim() };
121
+ if (rawReference && rawReference.trim()) {
122
+ return { id, displayText: rawReference.trim() };
97
123
  }
98
124
  const authors = Array.isArray(reference.author) && reference.author.length > 0
99
125
  ? reference.author
@@ -121,6 +147,13 @@ let SciFlowReferenceListElement = class SciFlowReferenceListElement extends LitE
121
147
  const name = `${family}${given}`.trim();
122
148
  return name || null;
123
149
  }
150
+ handleInsertCitation(reference) {
151
+ this.dispatchEvent(new CustomEvent('sciflow-insert-citation', {
152
+ bubbles: true,
153
+ composed: true,
154
+ detail: { reference },
155
+ }));
156
+ }
124
157
  handleDragStart(event, reference, displayText) {
125
158
  const transfer = event.dataTransfer;
126
159
  if (!transfer) {
@@ -153,6 +186,9 @@ __decorate([
153
186
  __decorate([
154
187
  property({ attribute: false })
155
188
  ], SciFlowReferenceListElement.prototype, "highlightedIds", void 0);
189
+ __decorate([
190
+ property({ type: Boolean, attribute: false })
191
+ ], SciFlowReferenceListElement.prototype, "cursorActive", void 0);
156
192
  __decorate([
157
193
  property({ type: String, attribute: 'empty-text' })
158
194
  ], SciFlowReferenceListElement.prototype, "emptyText", void 0);
@@ -41,9 +41,12 @@ export declare class SciFlowSelectionEditorElement extends LitElement {
41
41
  private citationDraft;
42
42
  /** Draft values for cross-reference sidebar (display text + target href). */
43
43
  private crossReferenceDraft;
44
+ /** Draft values for hyperlink (anchor mark) sidebar. */
45
+ private hyperlinkDraft;
44
46
  private draftAttrs;
45
47
  private draftDirty;
46
48
  private pinSelection;
49
+ private showAllAttrs;
47
50
  private resolvedEditor;
48
51
  private selectionListener?;
49
52
  private readyListener?;
@@ -56,6 +59,7 @@ export declare class SciFlowSelectionEditorElement extends LitElement {
56
59
  private citationContentView;
57
60
  private citationContentEditorPosition;
58
61
  private selectionDebounce;
62
+ private localeListener?;
59
63
  private outlineTargetOptionsCacheDoc;
60
64
  private outlineTargetOptionsCache;
61
65
  static styles: import("lit").CSSResult;
@@ -94,7 +98,12 @@ export declare class SciFlowSelectionEditorElement extends LitElement {
94
98
  /**
95
99
  * Render a single attribute field, decoding known encoded values for readability.
96
100
  */
101
+ private getNodeTypeLabel;
97
102
  private renderAttributeField;
103
+ /**
104
+ * Convert a raw attribute name like 'text-align' to a human-readable label.
105
+ */
106
+ private getAttributeLabel;
98
107
  /**
99
108
  * Decode known encoded attributes for more readable display/editing.
100
109
  */
@@ -134,6 +143,13 @@ export declare class SciFlowSelectionEditorElement extends LitElement {
134
143
  private renderCrossReferenceSidebar;
135
144
  private applyCrossReferenceDraft;
136
145
  private handleCrossReferenceKeydown;
146
+ /**
147
+ * Render the hyperlink (anchor mark) sidebar: URL input, Apply and Remove buttons.
148
+ */
149
+ private renderHyperlinkSidebar;
150
+ private applyHyperlinkDraft;
151
+ private removeHyperlink;
152
+ private handleHyperlinkKeydown;
137
153
  private resetDraftAttrs;
138
154
  private getEffectiveAttrs;
139
155
  private setDraftAttr;
@@ -1 +1 @@
1
- {"version":3,"file":"selection-editor.d.ts","sourceRoot":"","sources":["../../src/lib/selection-editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selection-editor.d.ts","sourceRoot":"","sources":["../../src/lib/selection-editor.ts"],"names":[],"mappings":"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"}