@sciflow/editor-start 0.0.1-beta → 0.0.2

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 (57) hide show
  1. package/README.md +83 -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 +10590 -15324
  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 +22 -2
  10. package/dist/lib/citation-source-adapter.d.ts.map +1 -1
  11. package/dist/lib/citation-source-adapter.js +104 -48
  12. package/dist/lib/drag-preview.d.ts +13 -0
  13. package/dist/lib/drag-preview.d.ts.map +1 -0
  14. package/dist/lib/drag-preview.js +43 -0
  15. package/dist/lib/editor-element.d.ts +30 -4
  16. package/dist/lib/editor-element.d.ts.map +1 -1
  17. package/dist/lib/editor-element.js +131 -30
  18. package/dist/lib/format-bar.d.ts +26 -2
  19. package/dist/lib/format-bar.d.ts.map +1 -1
  20. package/dist/lib/format-bar.js +369 -56
  21. package/dist/lib/ghost-cursor.d.ts +10 -0
  22. package/dist/lib/ghost-cursor.d.ts.map +1 -0
  23. package/dist/lib/ghost-cursor.js +59 -0
  24. package/dist/lib/icons-generated.d.ts +14 -0
  25. package/dist/lib/icons-generated.d.ts.map +1 -0
  26. package/dist/lib/icons-generated.js +60 -0
  27. package/dist/lib/outline.d.ts +18 -10
  28. package/dist/lib/outline.d.ts.map +1 -1
  29. package/dist/lib/outline.js +184 -28
  30. package/dist/lib/reference-list.d.ts +10 -2
  31. package/dist/lib/reference-list.d.ts.map +1 -1
  32. package/dist/lib/reference-list.js +47 -9
  33. package/dist/lib/selection-editor.d.ts +83 -5
  34. package/dist/lib/selection-editor.d.ts.map +1 -1
  35. package/dist/lib/selection-editor.js +1225 -147
  36. package/dist/lib/selection-transform-registry.d.ts +16 -0
  37. package/dist/lib/selection-transform-registry.d.ts.map +1 -0
  38. package/dist/lib/selection-transform-registry.js +24 -0
  39. package/dist/lib/selection-ui-renderer.d.ts +22 -0
  40. package/dist/lib/selection-ui-renderer.d.ts.map +1 -0
  41. package/dist/lib/selection-ui-renderer.js +244 -0
  42. package/dist/lib/selection-widget-host.d.ts +67 -0
  43. package/dist/lib/selection-widget-host.d.ts.map +1 -0
  44. package/dist/lib/selection-widget-host.js +151 -0
  45. package/dist/lib/selection-widget-registry.d.ts +16 -0
  46. package/dist/lib/selection-widget-registry.d.ts.map +1 -0
  47. package/dist/lib/selection-widget-registry.js +30 -0
  48. package/dist/lib/test-fixtures/soak-documents.d.ts +13 -0
  49. package/dist/lib/test-fixtures/soak-documents.d.ts.map +1 -0
  50. package/dist/lib/test-fixtures/soak-documents.js +69 -0
  51. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  52. package/package.json +22 -13
  53. package/dist/demo/demo.js +0 -56
  54. package/dist/demo/index.html +0 -169
  55. package/dist/lib/citation-drop.d.ts +0 -25
  56. package/dist/lib/citation-drop.d.ts.map +0 -1
  57. package/dist/lib/citation-drop.js +0 -53
@@ -11,6 +11,8 @@ 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';
15
+ import { setTransparentDragImage } from './drag-preview.js';
14
16
  import referenceListCss from './reference-list.css?inline';
15
17
  import { applyThemeStylesToRoot, subscribeToSciFlowTheme } from './theme.js';
16
18
  let SciFlowReferenceListElement = class SciFlowReferenceListElement extends LitElement {
@@ -20,8 +22,14 @@ let SciFlowReferenceListElement = class SciFlowReferenceListElement extends LitE
20
22
  this.references = null;
21
23
  /** Reference IDs to highlight. */
22
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;
23
31
  /** Text displayed when no references are available. */
24
- this.emptyText = 'No references yet.';
32
+ this.emptyText = '';
25
33
  this.themeStyleElements = [];
26
34
  }
27
35
  static { this.styles = css `${unsafeCSS(referenceListCss)}`; }
@@ -30,8 +38,14 @@ let SciFlowReferenceListElement = class SciFlowReferenceListElement extends LitE
30
38
  this.themeUnsub = subscribeToSciFlowTheme((cssTexts) => {
31
39
  this.themeStyleElements = applyThemeStylesToRoot(this.renderRoot, this.themeStyleElements, cssTexts);
32
40
  });
41
+ this.localeListener = () => this.requestUpdate();
42
+ document.addEventListener(LOCALE_CHANGE_EVENT, this.localeListener);
33
43
  }
34
44
  disconnectedCallback() {
45
+ if (this.localeListener) {
46
+ document.removeEventListener(LOCALE_CHANGE_EVENT, this.localeListener);
47
+ this.localeListener = undefined;
48
+ }
35
49
  this.themeUnsub?.();
36
50
  this.themeUnsub = undefined;
37
51
  super.disconnectedCallback();
@@ -52,7 +66,7 @@ let SciFlowReferenceListElement = class SciFlowReferenceListElement extends LitE
52
66
  if (references.length === 0) {
53
67
  return html `
54
68
  <ol class="reference-list">
55
- <li class="reference-item reference-empty">${this.emptyText}</li>
69
+ <li class="reference-item reference-empty">${this.emptyText || t('referenceList.noReferences')}</li>
56
70
  </ol>
57
71
  `;
58
72
  }
@@ -74,8 +88,21 @@ let SciFlowReferenceListElement = class SciFlowReferenceListElement extends LitE
74
88
  <span class="reference-text">${displayText || nothing}</span>
75
89
  <span class="reference-meta">
76
90
  ${id
77
- ? 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>`
78
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>
79
106
  <span class="reference-drag" aria-hidden="true">drag</span>
80
107
  </span>
81
108
  </li>
@@ -86,13 +113,13 @@ let SciFlowReferenceListElement = class SciFlowReferenceListElement extends LitE
86
113
  }
87
114
  formatReference(reference) {
88
115
  const id = typeof reference.id === 'string' ? reference.id : null;
89
- const rawCitation = typeof reference.rawCitation === 'string'
90
- ? reference.rawCitation
91
- : typeof reference.raw_citation === 'string'
92
- ? reference.raw_citation
116
+ const rawReference = typeof reference.rawReference === 'string'
117
+ ? reference.rawReference
118
+ : typeof reference.raw_reference === 'string'
119
+ ? reference.raw_reference
93
120
  : null;
94
- if (rawCitation && rawCitation.trim()) {
95
- return { id, displayText: rawCitation.trim() };
121
+ if (rawReference && rawReference.trim()) {
122
+ return { id, displayText: rawReference.trim() };
96
123
  }
97
124
  const authors = Array.isArray(reference.author) && reference.author.length > 0
98
125
  ? reference.author
@@ -120,11 +147,19 @@ let SciFlowReferenceListElement = class SciFlowReferenceListElement extends LitE
120
147
  const name = `${family}${given}`.trim();
121
148
  return name || null;
122
149
  }
150
+ handleInsertCitation(reference) {
151
+ this.dispatchEvent(new CustomEvent('sciflow-insert-citation', {
152
+ bubbles: true,
153
+ composed: true,
154
+ detail: { reference },
155
+ }));
156
+ }
123
157
  handleDragStart(event, reference, displayText) {
124
158
  const transfer = event.dataTransfer;
125
159
  if (!transfer) {
126
160
  return;
127
161
  }
162
+ setTransparentDragImage(event, { opacity: 0.35, offsetY: -44, scale: 0.8 });
128
163
  transfer.setData('application/x-sciflow-reference', 'sidebar');
129
164
  transfer.effectAllowed = 'copy';
130
165
  const payload = {
@@ -151,6 +186,9 @@ __decorate([
151
186
  __decorate([
152
187
  property({ attribute: false })
153
188
  ], SciFlowReferenceListElement.prototype, "highlightedIds", void 0);
189
+ __decorate([
190
+ property({ type: Boolean, attribute: false })
191
+ ], SciFlowReferenceListElement.prototype, "cursorActive", void 0);
154
192
  __decorate([
155
193
  property({ type: String, attribute: 'empty-text' })
156
194
  ], SciFlowReferenceListElement.prototype, "emptyText", void 0);
@@ -15,6 +15,7 @@
15
15
  import { LitElement } from 'lit';
16
16
  import type { SciFlowEditorElement } from './editor-element.js';
17
17
  import { type CitationSourceEditorAdapter } from './citation-source-adapter.js';
18
+ import './selection-widget-host.js';
18
19
  /**
19
20
  * Custom element that displays and edits the selected element's attributes.
20
21
  *
@@ -32,12 +33,35 @@ export declare class SciFlowSelectionEditorElement extends LitElement {
32
33
  /** Custom adapter for editing citation source. When unset, uses the global adapter. */
33
34
  citationSourceAdapter: CitationSourceEditorAdapter | null;
34
35
  private elementInfo;
36
+ /** Draft values for math sidebar (tex, style, label). Synced from node attrs when math is selected. */
37
+ private mathDraft;
38
+ /** Last preview result for math (error/warnings). SVG is rendered into mathPreviewContainer. */
39
+ private mathPreviewResult;
40
+ /** Draft values for citation sidebar (content + source). Applied only on Update. */
41
+ private citationDraft;
42
+ /** Draft values for cross-reference sidebar (display text + target href). */
43
+ private crossReferenceDraft;
44
+ /** Draft values for hyperlink (anchor mark) sidebar. */
45
+ private hyperlinkDraft;
46
+ private draftAttrs;
47
+ private draftDirty;
48
+ private pinSelection;
49
+ private showAllAttrs;
35
50
  private resolvedEditor;
36
51
  private selectionListener?;
37
52
  private readyListener?;
38
53
  private themeUnsub?;
39
54
  private themeStyleElements;
40
55
  private citationSourceContainer;
56
+ private mathPreviewContainer;
57
+ private mathPreviewDebounce;
58
+ private citationContentEditorContainer;
59
+ private citationContentView;
60
+ private citationContentEditorPosition;
61
+ private selectionDebounce;
62
+ private localeListener?;
63
+ private outlineTargetOptionsCacheDoc;
64
+ private outlineTargetOptionsCache;
41
65
  static styles: import("lit").CSSResult;
42
66
  connectedCallback(): void;
43
67
  disconnectedCallback(): void;
@@ -50,37 +74,91 @@ export declare class SciFlowSelectionEditorElement extends LitElement {
50
74
  private resolveEditor;
51
75
  /** Clean up listeners attached to the last editor instance. */
52
76
  private detachEditorListeners;
77
+ private scheduleSelectionUpdate;
53
78
  /**
54
79
  * Extract element information from the current selection.
55
80
  */
56
81
  private updateElementInfo;
82
+ /** Get the selected citation node's text content from the main document (for draft init). */
83
+ private getCitationNodeTextContent;
84
+ /** Get the selected citation node's content as a Fragment (same schema as citation allows). */
85
+ private getCitationNodeContentFragment;
86
+ /** Get the citation node at the current selection, or null. */
87
+ private getCitationNode;
88
+ /** Get the selected cross-reference link node's text content from the main document. */
89
+ private getLinkNodeTextContent;
90
+ /** Get the selected cross-reference link node at current selection, or null. */
91
+ private getLinkNode;
92
+ /** Build outline target options for link href dropdown (headings and figures with id). */
93
+ private getOutlineTargetOptions;
94
+ private destroyCitationContentView;
95
+ private mountCitationContentEditor;
57
96
  /** Convenience getter mirroring `editor.getCommands()`. */
58
97
  private getCommandRunner;
59
98
  /**
60
99
  * Render a single attribute field, decoding known encoded values for readability.
61
100
  */
101
+ private getNodeTypeLabel;
62
102
  private renderAttributeField;
103
+ /**
104
+ * Convert a raw attribute name like 'text-align' to a human-readable label.
105
+ */
106
+ private getAttributeLabel;
63
107
  /**
64
108
  * Decode known encoded attributes for more readable display/editing.
65
109
  */
66
110
  private decodeSpecialAttribute;
67
111
  /**
68
112
  * Mount the citation source adapter UI when a citation node is selected.
113
+ * Uses draft context (onSourceChange) so changes apply only on Update.
69
114
  */
70
115
  private mountCitationSourceAdapter;
71
116
  /**
72
117
  * Unmount the citation source adapter and clean up.
73
118
  */
74
119
  private unmountCitationSourceAdapter;
120
+ private handleDraftAttrChange;
121
+ /**
122
+ * Render the figure sidebar: type, id, alt text.
123
+ */
124
+ private renderFigureSidebar;
125
+ /**
126
+ * Render the math equation sidebar: TeX source, style, label, preview, status, Apply/Cancel.
127
+ */
128
+ private renderMathSidebar;
129
+ private scheduleMathPreview;
130
+ private runMathPreview;
131
+ private applyMathDraft;
132
+ private cancelMathDraft;
133
+ private handleMathKeydown;
134
+ /**
135
+ * Render the citation sidebar: content editor, source fields, Update button.
136
+ */
137
+ private renderCitationSidebar;
138
+ private applyCitationDraft;
139
+ private handleCitationKeydown;
75
140
  /**
76
- * Handle attribute field changes.
141
+ * Render the cross-reference sidebar: display text + target, Update button.
77
142
  */
78
- private handleAttrChange;
143
+ private renderCrossReferenceSidebar;
144
+ private applyCrossReferenceDraft;
145
+ private handleCrossReferenceKeydown;
79
146
  /**
80
- * Update node attributes using the command API.
81
- * Preserves the 'data' attribute if it exists, even though it's not displayed.
147
+ * Render the hyperlink (anchor mark) sidebar: URL input, Apply and Remove buttons.
82
148
  */
83
- private updateNodeAttribute;
149
+ private renderHyperlinkSidebar;
150
+ private applyHyperlinkDraft;
151
+ private removeHyperlink;
152
+ private handleHyperlinkKeydown;
153
+ private resetDraftAttrs;
154
+ private getEffectiveAttrs;
155
+ private setDraftAttr;
156
+ private applyDraftAttrs;
157
+ private revertDraftAttrs;
158
+ private renderDraftActions;
159
+ private renderSelectionControls;
160
+ private togglePinSelection;
161
+ private handleGenericKeydown;
84
162
  /**
85
163
  * Encode a source string/JSON into the URI-encoded source field format.
86
164
  */
@@ -1 +1 @@
1
- {"version":3,"file":"selection-editor.d.ts","sourceRoot":"","sources":["../../src/lib/selection-editor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAa,UAAU,EAAa,MAAM,KAAK,CAAC;AAMvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAEL,KAAK,2BAA2B,EAEjC,MAAM,8BAA8B,CAAC;AAWtC;;;;;;;;GAQG;AACH,qBACa,6BAA8B,SAAQ,UAAU;IAC3D,oFAAoF;IAEpF,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAE3C,gEAAgE;IAEhE,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,uFAAuF;IAEvF,qBAAqB,EAAE,2BAA2B,GAAG,IAAI,CAAQ;IAGjE,OAAO,CAAC,WAAW,CAAqB;IAExC,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,iBAAiB,CAAC,CAAgB;IAC1C,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,kBAAkB,CAA0B;IACpD,OAAO,CAAC,uBAAuB,CAA4B;IAE3D,OAAgB,MAAM,0BAAyC;IAEtD,iBAAiB,IAAI,IAAI;IAYzB,oBAAoB,IAAI,IAAI;IAO5B,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;cA+B9D,MAAM;IAyEzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2C9B,OAAO,CAAC,aAAa;IAmBrB,+DAA+D;IAC/D,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0DzB,2DAA2D;IAC3D,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAuBlC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IASpC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA2C3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAmB1B;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,0BAA0B,EAAE,6BAA6B,CAAC;KAC3D;CACF"}
1
+ {"version":3,"file":"selection-editor.d.ts","sourceRoot":"","sources":["../../src/lib/selection-editor.ts"],"names":[],"mappings":"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"}