@dxos/react-ui-editor 0.8.1-main.ae460ac → 0.8.1-staging.31c3ee1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/index.mjs +283 -147
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +317 -185
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +283 -147
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/InputMode.stories.d.ts +4 -3
- package/dist/types/src/InputMode.stories.d.ts.map +1 -1
- package/dist/types/src/TextEditor.stories.d.ts +38 -72
- package/dist/types/src/TextEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +2 -1
- package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
- package/dist/types/src/defaults.d.ts +2 -0
- package/dist/types/src/defaults.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/automerge.stories.d.ts +4 -3
- package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +1 -1
- package/dist/types/src/extensions/command/command.d.ts +4 -2
- package/dist/types/src/extensions/command/command.d.ts.map +1 -1
- package/dist/types/src/extensions/command/hint.d.ts.map +1 -1
- package/dist/types/src/extensions/command/menu.d.ts +12 -0
- package/dist/types/src/extensions/command/menu.d.ts.map +1 -0
- package/dist/types/src/extensions/command/preview.d.ts +12 -0
- package/dist/types/src/extensions/command/preview.d.ts.map +1 -0
- package/dist/types/src/extensions/command/state.d.ts.map +1 -1
- package/dist/types/src/extensions/comments.d.ts +3 -3
- package/dist/types/src/extensions/comments.d.ts.map +1 -1
- package/dist/types/src/extensions/factories.d.ts +2 -1
- package/dist/types/src/extensions/factories.d.ts.map +1 -1
- package/dist/types/src/{styles/stack-item-content-class-names.d.ts → fragments.d.ts} +1 -1
- package/dist/types/src/fragments.d.ts.map +1 -0
- package/dist/types/src/hooks/useTextEditor.d.ts +3 -3
- package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +0 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/styles/theme.d.ts.map +1 -1
- package/package.json +28 -28
- package/src/InputMode.stories.tsx +4 -4
- package/src/TextEditor.stories.tsx +173 -59
- package/src/components/EditorToolbar/EditorToolbar.tsx +4 -5
- package/src/defaults.ts +12 -0
- package/src/extensions/command/command.ts +21 -2
- package/src/extensions/command/hint.ts +3 -0
- package/src/extensions/command/menu.ts +100 -0
- package/src/extensions/command/preview.ts +79 -0
- package/src/extensions/command/state.ts +9 -4
- package/src/extensions/comments.ts +6 -10
- package/src/extensions/factories.ts +4 -3
- package/src/{styles/stack-item-content-class-names.ts → fragments.ts} +4 -2
- package/src/hooks/useTextEditor.ts +17 -8
- package/src/index.ts +0 -4
- package/src/styles/theme.ts +6 -1
- package/src/util/debug.ts +1 -1
- package/dist/types/src/styles/stack-item-content-class-names.d.ts.map +0 -1
package/dist/lib/node/index.cjs
CHANGED
@@ -119,7 +119,7 @@ __export(node_exports, {
|
|
119
119
|
setStyle: () => setStyle,
|
120
120
|
singleValueFacet: () => singleValueFacet,
|
121
121
|
stackItemContentEditorClassNames: () => stackItemContentEditorClassNames,
|
122
|
-
stackItemContentToolbarClassNames: () =>
|
122
|
+
stackItemContentToolbarClassNames: () => stackItemContentToolbarClassNames2,
|
123
123
|
table: () => table,
|
124
124
|
tags: () => import_highlight.tags,
|
125
125
|
textRange: () => textRange,
|
@@ -197,87 +197,91 @@ var import_state8 = require("@codemirror/state");
|
|
197
197
|
var import_view9 = require("@codemirror/view");
|
198
198
|
var import_state9 = require("@codemirror/state");
|
199
199
|
var import_view10 = require("@codemirror/view");
|
200
|
-
var import_commands = require("@codemirror/commands");
|
201
|
-
var import_state10 = require("@codemirror/state");
|
202
200
|
var import_view11 = require("@codemirror/view");
|
201
|
+
var import_language = require("@codemirror/language");
|
202
|
+
var import_state10 = require("@codemirror/state");
|
203
|
+
var import_view12 = require("@codemirror/view");
|
204
|
+
var import_commands = require("@codemirror/commands");
|
205
|
+
var import_state11 = require("@codemirror/state");
|
206
|
+
var import_view13 = require("@codemirror/view");
|
203
207
|
var import_lodash3 = __toESM(require("lodash.sortby"));
|
204
208
|
var import_react4 = require("react");
|
205
209
|
var import_async3 = require("@dxos/async");
|
206
210
|
var import_log4 = require("@dxos/log");
|
207
211
|
var import_util2 = require("@dxos/util");
|
208
|
-
var
|
209
|
-
var
|
212
|
+
var import_state12 = require("@codemirror/state");
|
213
|
+
var import_view14 = require("@codemirror/view");
|
210
214
|
var import_async4 = require("@dxos/async");
|
211
215
|
var import_invariant3 = require("@dxos/invariant");
|
212
216
|
var import_util3 = require("@dxos/util");
|
213
|
-
var
|
214
|
-
var
|
215
|
-
var
|
217
|
+
var import_language2 = require("@codemirror/language");
|
218
|
+
var import_state13 = require("@codemirror/state");
|
219
|
+
var import_view15 = require("@codemirror/view");
|
216
220
|
var import_autocomplete2 = require("@codemirror/autocomplete");
|
217
221
|
var import_commands2 = require("@codemirror/commands");
|
218
|
-
var
|
222
|
+
var import_language3 = require("@codemirror/language");
|
219
223
|
var import_search = require("@codemirror/search");
|
220
|
-
var
|
224
|
+
var import_state14 = require("@codemirror/state");
|
221
225
|
var import_theme_one_dark = require("@codemirror/theme-one-dark");
|
222
|
-
var
|
226
|
+
var import_view16 = require("@codemirror/view");
|
223
227
|
var import_lodash4 = __toESM(require("lodash.defaultsdeep"));
|
224
228
|
var import_lodash5 = __toESM(require("lodash.merge"));
|
225
229
|
var import_display_name = require("@dxos/display-name");
|
226
230
|
var import_log5 = require("@dxos/log");
|
227
231
|
var import_util4 = require("@dxos/util");
|
228
|
-
var
|
229
|
-
var import_view15 = require("@codemirror/view");
|
230
|
-
var import_language3 = require("@codemirror/language");
|
231
|
-
var import_view16 = require("@codemirror/view");
|
232
|
-
var import_react5 = __toESM(require("react"));
|
233
|
-
var import_react_ui3 = require("@dxos/react-ui");
|
232
|
+
var import_state15 = require("@codemirror/state");
|
234
233
|
var import_view17 = require("@codemirror/view");
|
235
|
-
var import_autocomplete3 = require("@codemirror/autocomplete");
|
236
234
|
var import_language4 = require("@codemirror/language");
|
237
|
-
var import_state15 = require("@codemirror/state");
|
238
235
|
var import_view18 = require("@codemirror/view");
|
236
|
+
var import_react5 = __toESM(require("react"));
|
237
|
+
var import_react_ui3 = require("@dxos/react-ui");
|
238
|
+
var import_view19 = require("@codemirror/view");
|
239
|
+
var import_autocomplete3 = require("@codemirror/autocomplete");
|
240
|
+
var import_language5 = require("@codemirror/language");
|
241
|
+
var import_state16 = require("@codemirror/state");
|
242
|
+
var import_view20 = require("@codemirror/view");
|
239
243
|
var import_react6 = require("react");
|
240
244
|
var import_autocomplete4 = require("@codemirror/autocomplete");
|
241
245
|
var import_commands3 = require("@codemirror/commands");
|
242
246
|
var import_lang_markdown2 = require("@codemirror/lang-markdown");
|
243
|
-
var
|
247
|
+
var import_language6 = require("@codemirror/language");
|
244
248
|
var import_language_data = require("@codemirror/language-data");
|
245
249
|
var import_lint = require("@codemirror/lint");
|
246
|
-
var
|
250
|
+
var import_view21 = require("@codemirror/view");
|
247
251
|
var import_lang_markdown3 = require("@codemirror/lang-markdown");
|
248
|
-
var
|
252
|
+
var import_language7 = require("@codemirror/language");
|
249
253
|
var import_highlight2 = require("@lezer/highlight");
|
250
254
|
var import_markdown = require("@lezer/markdown");
|
251
|
-
var import_language7 = require("@codemirror/language");
|
252
|
-
var import_state16 = require("@codemirror/state");
|
253
255
|
var import_language8 = require("@codemirror/language");
|
254
256
|
var import_state17 = require("@codemirror/state");
|
255
|
-
var import_view20 = require("@codemirror/view");
|
256
|
-
var import_invariant4 = require("@dxos/invariant");
|
257
|
-
var import_react_ui_theme7 = require("@dxos/react-ui-theme");
|
258
257
|
var import_language9 = require("@codemirror/language");
|
259
258
|
var import_state18 = require("@codemirror/state");
|
260
|
-
var
|
259
|
+
var import_view22 = require("@codemirror/view");
|
260
|
+
var import_invariant4 = require("@dxos/invariant");
|
261
|
+
var import_react_ui_theme7 = require("@dxos/react-ui-theme");
|
261
262
|
var import_language10 = require("@codemirror/language");
|
262
263
|
var import_state19 = require("@codemirror/state");
|
263
|
-
var import_view22 = require("@codemirror/view");
|
264
264
|
var import_view23 = require("@codemirror/view");
|
265
265
|
var import_language11 = require("@codemirror/language");
|
266
266
|
var import_state20 = require("@codemirror/state");
|
267
267
|
var import_view24 = require("@codemirror/view");
|
268
|
-
var import_language12 = require("@codemirror/language");
|
269
268
|
var import_view25 = require("@codemirror/view");
|
269
|
+
var import_language12 = require("@codemirror/language");
|
270
|
+
var import_state21 = require("@codemirror/state");
|
271
|
+
var import_view26 = require("@codemirror/view");
|
272
|
+
var import_language13 = require("@codemirror/language");
|
273
|
+
var import_view27 = require("@codemirror/view");
|
270
274
|
var import_react_ui_theme8 = require("@dxos/react-ui-theme");
|
271
275
|
var import_autocomplete5 = require("@codemirror/autocomplete");
|
272
276
|
var import_log6 = require("@dxos/log");
|
273
|
-
var
|
277
|
+
var import_view28 = require("@codemirror/view");
|
274
278
|
var import_codemirror_vim = require("@replit/codemirror-vim");
|
275
279
|
var import_codemirror_vscode_keymap = require("@replit/codemirror-vscode-keymap");
|
276
280
|
var import_echo_schema = require("@dxos/echo-schema");
|
277
|
-
var
|
281
|
+
var import_view29 = require("@codemirror/view");
|
278
282
|
var import_react7 = require("react");
|
279
|
-
var
|
280
|
-
var
|
283
|
+
var import_state22 = require("@codemirror/state");
|
284
|
+
var import_view30 = require("@codemirror/view");
|
281
285
|
var import_react_tabster = require("@fluentui/react-tabster");
|
282
286
|
var import_react8 = require("react");
|
283
287
|
var import_log7 = require("@dxos/log");
|
@@ -564,7 +568,6 @@ var createViewMode = (state) => {
|
|
564
568
|
]
|
565
569
|
};
|
566
570
|
};
|
567
|
-
var stackItemContentEditorClassNames = (role) => (0, import_react_ui_theme2.mx)("dx-focus-ring-inset data-[toolbar=disabled]:pbs-2 attention-surface", role === "article" ? "min-bs-0" : "[&_.cm-scroller]:overflow-hidden [&_.cm-scroller]:min-bs-24");
|
568
571
|
var stackItemContentToolbarClassNames = (role) => (0, import_react_ui_theme2.mx)("attention-surface is-full border-be !border-separator", role === "section" && "sticky block-start-0 z-[1] -mbe-px min-is-0");
|
569
572
|
var createToolbar = ({ state, customActions, ...features }) => {
|
570
573
|
const nodes = [];
|
@@ -701,6 +704,10 @@ var defaultTheme = {
|
|
701
704
|
background: "transparent"
|
702
705
|
},
|
703
706
|
".cm-gutter": {},
|
707
|
+
".cm-gutter.cm-lineNumbers": {
|
708
|
+
paddingRight: "4px",
|
709
|
+
borderRight: "1px solid var(--dx-separator)"
|
710
|
+
},
|
704
711
|
".cm-gutter.cm-lineNumbers .cm-gutterElement": {
|
705
712
|
minWidth: "40px",
|
706
713
|
alignContent: "center"
|
@@ -710,7 +717,7 @@ var defaultTheme = {
|
|
710
717
|
*/
|
711
718
|
".cm-gutterElement": {
|
712
719
|
alignItems: "center",
|
713
|
-
fontSize: "
|
720
|
+
fontSize: "12px"
|
714
721
|
},
|
715
722
|
/**
|
716
723
|
* Line.
|
@@ -756,6 +763,7 @@ var defaultTheme = {
|
|
756
763
|
".cm-link": {
|
757
764
|
textDecorationLine: "underline",
|
758
765
|
textDecorationThickness: "1px",
|
766
|
+
textDecorationColor: "var(--dx-separator)",
|
759
767
|
textUnderlineOffset: "2px",
|
760
768
|
borderRadius: ".125rem"
|
761
769
|
},
|
@@ -882,6 +890,8 @@ var editorMonospace = import_view2.EditorView.theme({
|
|
882
890
|
}
|
883
891
|
});
|
884
892
|
var editorWithToolbarLayout = "grid grid-cols-1 grid-rows-[min-content_1fr] data-[toolbar=disabled]:grid-rows-[1fr] justify-center content-start overflow-hidden";
|
893
|
+
var stackItemContentEditorClassNames = (role) => (0, import_react_ui_theme3.mx)("attention-surface dx-focus-ring-inset data-[toolbar=disabled]:pbs-2", role === "section" ? "[&_.cm-scroller]:overflow-hidden [&_.cm-scroller]:min-bs-24" : "min-bs-0");
|
894
|
+
var stackItemContentToolbarClassNames2 = (role) => (0, import_react_ui_theme3.mx)("attention-surface is-full border-be !border-separator", role === "section" && "sticky block-start-0 z-[1] -mbe-px min-is-0");
|
885
895
|
var singleValueFacet = (defaultValue) => import_state3.Facet.define({
|
886
896
|
// Called immediately.
|
887
897
|
combine: (providers) => {
|
@@ -968,7 +978,7 @@ var logChanges = (trs) => {
|
|
968
978
|
return changes2;
|
969
979
|
}).filter(Boolean);
|
970
980
|
if (changes.length) {
|
971
|
-
import_log.log
|
981
|
+
(0, import_log.log)("changes", {
|
972
982
|
changes
|
973
983
|
}, {
|
974
984
|
F: __dxlog_file,
|
@@ -2041,18 +2051,19 @@ var commandState = import_state9.StateField.define({
|
|
2041
2051
|
const widthWithoutPadding = parent.clientWidth - parseFloat(paddingLeft) - parseFloat(paddingRight);
|
2042
2052
|
dom.style.width = `${widthWithoutPadding}px`;
|
2043
2053
|
}
|
2044
|
-
options.
|
2054
|
+
options.onRenderDialog(dom, (action) => {
|
2045
2055
|
view2.dispatch({
|
2046
2056
|
effects: closeEffect.of(null)
|
2047
2057
|
});
|
2048
2058
|
if (action?.insert?.length) {
|
2059
|
+
const text = action.insert + "\n";
|
2049
2060
|
view2.dispatch({
|
2050
2061
|
changes: {
|
2051
2062
|
from: pos,
|
2052
|
-
insert:
|
2063
|
+
insert: text
|
2053
2064
|
},
|
2054
2065
|
selection: {
|
2055
|
-
anchor: pos +
|
2066
|
+
anchor: pos + text.length
|
2056
2067
|
}
|
2057
2068
|
});
|
2058
2069
|
}
|
@@ -2176,14 +2187,139 @@ var hintViewPlugin = ({ onHint }) => import_view9.ViewPlugin.fromClass(class {
|
|
2176
2187
|
import_view9.EditorView.decorations.of((view) => view.plugin(plugin)?.deco ?? import_view9.Decoration.none)
|
2177
2188
|
]
|
2178
2189
|
});
|
2190
|
+
var floatingMenu = (options) => import_view11.ViewPlugin.fromClass(class {
|
2191
|
+
constructor(view) {
|
2192
|
+
this.rafId = null;
|
2193
|
+
this.view = view;
|
2194
|
+
const container = view.scrollDOM;
|
2195
|
+
if (getComputedStyle(container).position === "static") {
|
2196
|
+
container.style.position = "relative";
|
2197
|
+
}
|
2198
|
+
this.button = document.createElement("div");
|
2199
|
+
this.button.style.position = "absolute";
|
2200
|
+
this.button.style.zIndex = "10";
|
2201
|
+
this.button.style.display = "none";
|
2202
|
+
options.onRenderMenu(this.button, () => {
|
2203
|
+
openCommand(view);
|
2204
|
+
});
|
2205
|
+
container.appendChild(this.button);
|
2206
|
+
container.addEventListener("scroll", this.scheduleUpdate);
|
2207
|
+
this.scheduleUpdate();
|
2208
|
+
}
|
2209
|
+
update(update2) {
|
2210
|
+
if (update2.transactions.some((tr) => tr.effects.some((effect) => effect.is(openEffect)))) {
|
2211
|
+
this.button.style.display = "none";
|
2212
|
+
} else if (update2.transactions.some((tr) => tr.effects.some((effect) => effect.is(closeEffect)))) {
|
2213
|
+
this.button.style.display = "block";
|
2214
|
+
} else if (update2.selectionSet || update2.viewportChanged || update2.docChanged || update2.geometryChanged) {
|
2215
|
+
this.scheduleUpdate();
|
2216
|
+
}
|
2217
|
+
}
|
2218
|
+
scheduleUpdate() {
|
2219
|
+
if (this.rafId != null) {
|
2220
|
+
cancelAnimationFrame(this.rafId);
|
2221
|
+
}
|
2222
|
+
this.rafId = requestAnimationFrame(() => this.updateButtonPosition());
|
2223
|
+
}
|
2224
|
+
updateButtonPosition() {
|
2225
|
+
const pos = this.view.state.selection.main.head;
|
2226
|
+
const lineBlock = this.view.lineBlockAt(pos);
|
2227
|
+
const domInfo = this.view.domAtPos(lineBlock.from);
|
2228
|
+
let node = domInfo.node;
|
2229
|
+
while (node && !(node instanceof HTMLElement)) {
|
2230
|
+
node = node.parentNode;
|
2231
|
+
}
|
2232
|
+
if (!node) {
|
2233
|
+
this.button.style.display = "none";
|
2234
|
+
return;
|
2235
|
+
}
|
2236
|
+
const lineRect = node.getBoundingClientRect();
|
2237
|
+
const containerRect = this.view.scrollDOM.getBoundingClientRect();
|
2238
|
+
const offsetTop = lineRect.top - containerRect.top + this.view.scrollDOM.scrollTop;
|
2239
|
+
const offsetLeft = this.view.scrollDOM.clientWidth + this.view.scrollDOM.scrollLeft - lineRect.x;
|
2240
|
+
this.button.style.top = `${offsetTop}px`;
|
2241
|
+
this.button.style.left = `${offsetLeft}px`;
|
2242
|
+
this.button.style.display = "block";
|
2243
|
+
}
|
2244
|
+
destroy() {
|
2245
|
+
this.button.remove();
|
2246
|
+
if (this.rafId != null) {
|
2247
|
+
cancelAnimationFrame(this.rafId);
|
2248
|
+
}
|
2249
|
+
}
|
2250
|
+
});
|
2251
|
+
var preview = (options) => {
|
2252
|
+
return [
|
2253
|
+
import_state10.StateField.define({
|
2254
|
+
create: (state) => buildDecorations(state, options),
|
2255
|
+
update: (_, tr) => buildDecorations(tr.state, options),
|
2256
|
+
// TODO(burdon): Make atomic.
|
2257
|
+
provide: (field) => import_view12.EditorView.decorations.from(field)
|
2258
|
+
})
|
2259
|
+
];
|
2260
|
+
};
|
2261
|
+
var buildDecorations = (state, options) => {
|
2262
|
+
const builder = new import_state10.RangeSetBuilder();
|
2263
|
+
(0, import_language.syntaxTree)(state).iterate({
|
2264
|
+
enter: (node) => {
|
2265
|
+
if (node.name === "Link") {
|
2266
|
+
const urlNode = node.node.getChild("URL");
|
2267
|
+
if (urlNode) {
|
2268
|
+
const text = state.sliceDoc(node.from + 1, urlNode.from - 2);
|
2269
|
+
const url = state.sliceDoc(urlNode.from, urlNode.to);
|
2270
|
+
builder.add(node.from, node.to, import_view12.Decoration.replace({
|
2271
|
+
block: true,
|
2272
|
+
widget: new PreviewWidget(options.onRenderPreview, url, text)
|
2273
|
+
}));
|
2274
|
+
}
|
2275
|
+
}
|
2276
|
+
}
|
2277
|
+
});
|
2278
|
+
return builder.finish();
|
2279
|
+
};
|
2280
|
+
var PreviewWidget = class extends import_view12.WidgetType {
|
2281
|
+
constructor(_onRenderPreview, _url, _text) {
|
2282
|
+
super();
|
2283
|
+
this._onRenderPreview = _onRenderPreview;
|
2284
|
+
this._url = _url;
|
2285
|
+
this._text = _text;
|
2286
|
+
}
|
2287
|
+
eq(other) {
|
2288
|
+
return this._url === other._url;
|
2289
|
+
}
|
2290
|
+
toDOM(view) {
|
2291
|
+
const root = document.createElement("div");
|
2292
|
+
root.classList.add("cm-preview");
|
2293
|
+
this._onRenderPreview(root, {
|
2294
|
+
url: this._url,
|
2295
|
+
text: this._text
|
2296
|
+
});
|
2297
|
+
return root;
|
2298
|
+
}
|
2299
|
+
};
|
2179
2300
|
var command = (options) => {
|
2180
2301
|
return [
|
2181
2302
|
commandConfig.of(options),
|
2182
2303
|
commandState,
|
2183
2304
|
import_view8.keymap.of(commandKeyBindings),
|
2305
|
+
preview(options),
|
2306
|
+
floatingMenu(options),
|
2184
2307
|
hintViewPlugin(options),
|
2185
2308
|
import_view8.EditorView.focusChangeEffect.of((_, focusing) => {
|
2186
2309
|
return focusing ? closeEffect.of(null) : null;
|
2310
|
+
}),
|
2311
|
+
import_view8.EditorView.theme({
|
2312
|
+
".cm-tooltip": {
|
2313
|
+
background: "transparent"
|
2314
|
+
},
|
2315
|
+
".cm-preview": {
|
2316
|
+
marginLeft: "-1rem",
|
2317
|
+
marginRight: "-1rem",
|
2318
|
+
padding: "1rem",
|
2319
|
+
borderRadius: "1rem",
|
2320
|
+
background: "var(--dx-modalSurface)",
|
2321
|
+
border: "1px solid var(--dx-separator)"
|
2322
|
+
}
|
2187
2323
|
})
|
2188
2324
|
];
|
2189
2325
|
};
|
@@ -2194,10 +2330,10 @@ var createEditorStateTransaction = ({ scrollTo, selection }) => {
|
|
2194
2330
|
return {
|
2195
2331
|
selection,
|
2196
2332
|
scrollIntoView: !scrollTo,
|
2197
|
-
effects: scrollTo ?
|
2333
|
+
effects: scrollTo ? import_view14.EditorView.scrollIntoView(scrollTo, {
|
2198
2334
|
yMargin: 96
|
2199
2335
|
}) : void 0,
|
2200
|
-
annotations:
|
2336
|
+
annotations: import_state12.Transaction.userEvent.of(stateRestoreAnnotation)
|
2201
2337
|
};
|
2202
2338
|
};
|
2203
2339
|
var createEditorStateStore = (keyPrefix) => ({
|
@@ -2236,7 +2372,7 @@ var selectionState = ({ getState, setState } = {}) => {
|
|
2236
2372
|
// setStateDebounced(id, {});
|
2237
2373
|
// },
|
2238
2374
|
// }),
|
2239
|
-
|
2375
|
+
import_view14.EditorView.updateListener.of(({ view, transactions }) => {
|
2240
2376
|
const id = view.state.facet(documentId);
|
2241
2377
|
if (!id || transactions.some((tr) => tr.isUserEvent(stateRestoreAnnotation))) {
|
2242
2378
|
return;
|
@@ -2259,7 +2395,7 @@ var selectionState = ({ getState, setState } = {}) => {
|
|
2259
2395
|
}
|
2260
2396
|
}
|
2261
2397
|
}),
|
2262
|
-
getState &&
|
2398
|
+
getState && import_view14.keymap.of([
|
2263
2399
|
{
|
2264
2400
|
key: "ctrl-r",
|
2265
2401
|
run: (view) => {
|
@@ -2274,10 +2410,10 @@ var selectionState = ({ getState, setState } = {}) => {
|
|
2274
2410
|
].filter(import_util3.isNotFalsy);
|
2275
2411
|
};
|
2276
2412
|
var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/comments.ts";
|
2277
|
-
var setComments =
|
2278
|
-
var setSelection =
|
2279
|
-
var setCommentState =
|
2280
|
-
var commentsState =
|
2413
|
+
var setComments = import_state11.StateEffect.define();
|
2414
|
+
var setSelection = import_state11.StateEffect.define();
|
2415
|
+
var setCommentState = import_state11.StateEffect.define();
|
2416
|
+
var commentsState = import_state11.StateField.define({
|
2281
2417
|
create: (state) => ({
|
2282
2418
|
id: state.facet(documentId),
|
2283
2419
|
comments: [],
|
@@ -2315,7 +2451,7 @@ var commentsState = import_state10.StateField.define({
|
|
2315
2451
|
return value;
|
2316
2452
|
}
|
2317
2453
|
});
|
2318
|
-
var styles3 =
|
2454
|
+
var styles3 = import_view13.EditorView.theme({
|
2319
2455
|
".cm-comment, .cm-comment-current": {
|
2320
2456
|
margin: "0 -3px",
|
2321
2457
|
padding: "3px",
|
@@ -2328,14 +2464,14 @@ var styles3 = import_view11.EditorView.theme({
|
|
2328
2464
|
textDecoration: "underline"
|
2329
2465
|
}
|
2330
2466
|
});
|
2331
|
-
var createCommentMark = (id, isCurrent) =>
|
2467
|
+
var createCommentMark = (id, isCurrent) => import_view13.Decoration.mark({
|
2332
2468
|
class: isCurrent ? "cm-comment-current" : "cm-comment",
|
2333
2469
|
attributes: {
|
2334
2470
|
"data-testid": "cm-comment",
|
2335
2471
|
"data-comment-id": id
|
2336
2472
|
}
|
2337
2473
|
});
|
2338
|
-
var commentsDecorations =
|
2474
|
+
var commentsDecorations = import_view13.EditorView.decorations.compute([
|
2339
2475
|
commentsState
|
2340
2476
|
], (state) => {
|
2341
2477
|
const { selection: { current }, comments: comments2 } = state.field(commentsState);
|
@@ -2355,10 +2491,10 @@ var commentsDecorations = import_view11.EditorView.decorations.compute([
|
|
2355
2491
|
const mark = createCommentMark(comment.comment.id, comment.comment.id === current);
|
2356
2492
|
return mark.range(range.from, range.to);
|
2357
2493
|
}).filter(import_util2.isNonNullable);
|
2358
|
-
return
|
2494
|
+
return import_view13.Decoration.set(decorations);
|
2359
2495
|
});
|
2360
|
-
var commentClickedEffect =
|
2361
|
-
var handleCommentClick =
|
2496
|
+
var commentClickedEffect = import_state11.StateEffect.define();
|
2497
|
+
var handleCommentClick = import_view13.EditorView.domEventHandlers({
|
2362
2498
|
click: (event, view) => {
|
2363
2499
|
let target = event.target;
|
2364
2500
|
const editorRoot = view.dom;
|
@@ -2397,7 +2533,7 @@ var trackPastedComments = (onUpdate) => {
|
|
2397
2533
|
}
|
2398
2534
|
};
|
2399
2535
|
return [
|
2400
|
-
|
2536
|
+
import_view13.EditorView.domEventHandlers({
|
2401
2537
|
cut: handleTrack,
|
2402
2538
|
copy: handleTrack
|
2403
2539
|
}),
|
@@ -2419,7 +2555,7 @@ var trackPastedComments = (onUpdate) => {
|
|
2419
2555
|
return effects;
|
2420
2556
|
}),
|
2421
2557
|
// Handle paste or the undo of comment deletion.
|
2422
|
-
|
2558
|
+
import_view13.EditorView.updateListener.of((update2) => {
|
2423
2559
|
const restore = [];
|
2424
2560
|
for (let i = 0; i < update2.transactions.length; i++) {
|
2425
2561
|
const tr = update2.transactions[i];
|
@@ -2475,7 +2611,7 @@ var mapTrackedComment = (comment, changes) => ({
|
|
2475
2611
|
from: changes.mapPos(comment.from, 1),
|
2476
2612
|
to: changes.mapPos(comment.to, 1)
|
2477
2613
|
});
|
2478
|
-
var restoreCommentEffect =
|
2614
|
+
var restoreCommentEffect = import_state11.StateEffect.define({
|
2479
2615
|
map: mapTrackedComment
|
2480
2616
|
});
|
2481
2617
|
var createComment2 = (view) => {
|
@@ -2520,7 +2656,7 @@ var comments = (options = {}) => {
|
|
2520
2656
|
//
|
2521
2657
|
// Keymap.
|
2522
2658
|
//
|
2523
|
-
options.onCreate &&
|
2659
|
+
options.onCreate && import_view13.keymap.of([
|
2524
2660
|
{
|
2525
2661
|
key: shortcut,
|
2526
2662
|
run: callbackWrapper(createComment2)
|
@@ -2530,7 +2666,7 @@ var comments = (options = {}) => {
|
|
2530
2666
|
// Hover tooltip (for key shortcut hints, etc.)
|
2531
2667
|
// TODO(burdon): Factor out to generic hints extension for current selection/line.
|
2532
2668
|
//
|
2533
|
-
options.onHover && (0,
|
2669
|
+
options.onHover && (0, import_view13.hoverTooltip)((view, pos) => {
|
2534
2670
|
const selection = view.state.selection.main;
|
2535
2671
|
if (selection && pos >= selection.from && pos <= selection.to) {
|
2536
2672
|
return {
|
@@ -2559,7 +2695,7 @@ var comments = (options = {}) => {
|
|
2559
2695
|
//
|
2560
2696
|
// Track deleted ranges and update ranges for decorations.
|
2561
2697
|
//
|
2562
|
-
|
2698
|
+
import_view13.EditorView.updateListener.of(({ view, state, changes }) => {
|
2563
2699
|
let mod = false;
|
2564
2700
|
const { comments: comments2, ...value } = state.field(commentsState);
|
2565
2701
|
changes.iterChanges((from, to, from2, to2) => {
|
@@ -2591,7 +2727,7 @@ var comments = (options = {}) => {
|
|
2591
2727
|
//
|
2592
2728
|
// Track selection/proximity.
|
2593
2729
|
//
|
2594
|
-
|
2730
|
+
import_view13.EditorView.updateListener.of(({ view, state }) => {
|
2595
2731
|
let min = Infinity;
|
2596
2732
|
const { selection: { current, closest }, comments: comments2 } = state.field(commentsState);
|
2597
2733
|
const { head } = state.selection.main;
|
@@ -2645,7 +2781,7 @@ var scrollThreadIntoView = (view, id, center = true) => {
|
|
2645
2781
|
anchor: range.from
|
2646
2782
|
} : void 0,
|
2647
2783
|
effects: [
|
2648
|
-
needsScroll ?
|
2784
|
+
needsScroll ? import_view13.EditorView.scrollIntoView(range.from, center ? {
|
2649
2785
|
y: "center"
|
2650
2786
|
} : void 0) : [],
|
2651
2787
|
needsSelectionUpdate ? setSelection.of({
|
@@ -2691,13 +2827,13 @@ var ExternalCommentSync = class {
|
|
2691
2827
|
this.unsubscribe = subscribe(updateComments);
|
2692
2828
|
}
|
2693
2829
|
};
|
2694
|
-
var createExternalCommentSync = (id, subscribe, getComments) =>
|
2830
|
+
var createExternalCommentSync = (id, subscribe, getComments) => import_view13.ViewPlugin.fromClass(class {
|
2695
2831
|
constructor(view) {
|
2696
2832
|
return new ExternalCommentSync(view, id, subscribe, getComments);
|
2697
2833
|
}
|
2698
2834
|
});
|
2699
2835
|
var useCommentState = (state) => {
|
2700
|
-
return (0, import_react4.useMemo)(() =>
|
2836
|
+
return (0, import_react4.useMemo)(() => import_view13.EditorView.updateListener.of((update2) => {
|
2701
2837
|
if (update2.docChanged || update2.selectionSet) {
|
2702
2838
|
state.comment = selectionOverlapsComment(update2.state);
|
2703
2839
|
state.selection = hasActiveSelection(update2.state);
|
@@ -2721,7 +2857,7 @@ var useComments = (view, id, comments2) => {
|
|
2721
2857
|
});
|
2722
2858
|
};
|
2723
2859
|
var useCommentClickListener = (onCommentClick) => {
|
2724
|
-
return (0, import_react4.useMemo)(() =>
|
2860
|
+
return (0, import_react4.useMemo)(() => import_view13.EditorView.updateListener.of((update2) => {
|
2725
2861
|
update2.transactions.forEach((transaction) => {
|
2726
2862
|
transaction.effects.forEach((effect) => {
|
2727
2863
|
if (effect.is(commentClickedEffect)) {
|
@@ -2734,15 +2870,15 @@ var useCommentClickListener = (onCommentClick) => {
|
|
2734
2870
|
]);
|
2735
2871
|
};
|
2736
2872
|
var debugNodeLogger = (log8 = console.log) => {
|
2737
|
-
const logTokens = (state) => (0,
|
2873
|
+
const logTokens = (state) => (0, import_language2.syntaxTree)(state).iterate({
|
2738
2874
|
enter: (node) => log8(node.type)
|
2739
2875
|
});
|
2740
|
-
return
|
2876
|
+
return import_state13.StateField.define({
|
2741
2877
|
create: (state) => logTokens(state),
|
2742
2878
|
update: (_, tr) => logTokens(tr.state)
|
2743
2879
|
});
|
2744
2880
|
};
|
2745
|
-
var styles4 =
|
2881
|
+
var styles4 = import_view15.EditorView.theme({
|
2746
2882
|
".cm-dropCursor": {
|
2747
2883
|
borderLeft: "2px solid var(--dx-accentText)",
|
2748
2884
|
color: "var(--dx-accentText)",
|
@@ -2755,8 +2891,8 @@ var styles4 = import_view13.EditorView.theme({
|
|
2755
2891
|
var dropFile = (options = {}) => {
|
2756
2892
|
return [
|
2757
2893
|
styles4,
|
2758
|
-
(0,
|
2759
|
-
|
2894
|
+
(0, import_view15.dropCursor)(),
|
2895
|
+
import_view15.EditorView.domEventHandlers({
|
2760
2896
|
drop: (event, view) => {
|
2761
2897
|
event.preventDefault();
|
2762
2898
|
const files = event.dataTransfer?.files;
|
@@ -2775,8 +2911,8 @@ var dropFile = (options = {}) => {
|
|
2775
2911
|
})
|
2776
2912
|
];
|
2777
2913
|
};
|
2778
|
-
var focusEffect =
|
2779
|
-
var focusField =
|
2914
|
+
var focusEffect = import_state15.StateEffect.define();
|
2915
|
+
var focusField = import_state15.StateField.define({
|
2780
2916
|
create: () => false,
|
2781
2917
|
update: (value, tr) => {
|
2782
2918
|
for (const effect of tr.effects) {
|
@@ -2789,7 +2925,7 @@ var focusField = import_state14.StateField.define({
|
|
2789
2925
|
});
|
2790
2926
|
var focus = [
|
2791
2927
|
focusField,
|
2792
|
-
|
2928
|
+
import_view17.EditorView.domEventHandlers({
|
2793
2929
|
focus: (event, view) => {
|
2794
2930
|
setTimeout(() => view.dispatch({
|
2795
2931
|
effects: focusEffect.of(true)
|
@@ -2803,13 +2939,12 @@ var focus = [
|
|
2803
2939
|
})
|
2804
2940
|
];
|
2805
2941
|
var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/factories.ts";
|
2806
|
-
var preventNewline =
|
2942
|
+
var preventNewline = import_state14.EditorState.transactionFilter.of((tr) => tr.newDoc.lines > 1 ? [] : tr);
|
2807
2943
|
var defaultBasicOptions = {
|
2808
2944
|
allowMultipleSelections: true,
|
2809
2945
|
bracketMatching: true,
|
2810
2946
|
closeBrackets: true,
|
2811
2947
|
drawSelection: true,
|
2812
|
-
editable: true,
|
2813
2948
|
focus: true,
|
2814
2949
|
history: true,
|
2815
2950
|
keymap: "standard",
|
@@ -2826,7 +2961,7 @@ var createBasicExtensions = (_props) => {
|
|
2826
2961
|
const props = (0, import_lodash4.default)({}, _props, defaultBasicOptions);
|
2827
2962
|
return [
|
2828
2963
|
// NOTE: Doesn't catch errors in keymap functions.
|
2829
|
-
|
2964
|
+
import_view16.EditorView.exceptionSink.of((err) => {
|
2830
2965
|
import_log5.log.catch(err, void 0, {
|
2831
2966
|
F: __dxlog_file8,
|
2832
2967
|
L: 96,
|
@@ -2834,27 +2969,25 @@ var createBasicExtensions = (_props) => {
|
|
2834
2969
|
C: (f, a) => f(...a)
|
2835
2970
|
});
|
2836
2971
|
}),
|
2837
|
-
props.allowMultipleSelections &&
|
2838
|
-
props.bracketMatching && (0,
|
2972
|
+
props.allowMultipleSelections && import_state14.EditorState.allowMultipleSelections.of(true),
|
2973
|
+
props.bracketMatching && (0, import_language3.bracketMatching)(),
|
2839
2974
|
props.closeBrackets && (0, import_autocomplete2.closeBrackets)(),
|
2840
|
-
props.dropCursor && (0,
|
2841
|
-
props.drawSelection && (0,
|
2975
|
+
props.dropCursor && (0, import_view16.dropCursor)(),
|
2976
|
+
props.drawSelection && (0, import_view16.drawSelection)({
|
2842
2977
|
cursorBlinkRate: 1200
|
2843
2978
|
}),
|
2979
|
+
props.editable !== void 0 && import_view16.EditorView.editable.of(props.editable),
|
2844
2980
|
props.focus && focus,
|
2845
|
-
props.highlightActiveLine && (0,
|
2981
|
+
props.highlightActiveLine && (0, import_view16.highlightActiveLine)(),
|
2846
2982
|
props.history && (0, import_commands2.history)(),
|
2847
|
-
props.lineNumbers && (0,
|
2848
|
-
props.lineWrapping &&
|
2849
|
-
props.placeholder && (0,
|
2850
|
-
props.
|
2851
|
-
|
2852
|
-
|
2853
|
-
],
|
2854
|
-
props.scrollPastEnd && (0, import_view14.scrollPastEnd)(),
|
2855
|
-
props.tabSize && import_state13.EditorState.tabSize.of(props.tabSize),
|
2983
|
+
props.lineNumbers && (0, import_view16.lineNumbers)(),
|
2984
|
+
props.lineWrapping && import_view16.EditorView.lineWrapping,
|
2985
|
+
props.placeholder && (0, import_view16.placeholder)(props.placeholder),
|
2986
|
+
props.readOnly !== void 0 && import_state14.EditorState.readOnly.of(props.readOnly),
|
2987
|
+
props.scrollPastEnd && (0, import_view16.scrollPastEnd)(),
|
2988
|
+
props.tabSize && import_state14.EditorState.tabSize.of(props.tabSize),
|
2856
2989
|
// https://codemirror.net/docs/ref/#view.KeyBinding
|
2857
|
-
|
2990
|
+
import_view16.keymap.of([
|
2858
2991
|
...(props.keymap && keymaps[props.keymap]) ?? [],
|
2859
2992
|
// NOTE: Tabs are also configured by markdown extension.
|
2860
2993
|
// https://codemirror.net/docs/ref/#commands.indentWithTab
|
@@ -2885,14 +3018,14 @@ var defaultThemeSlots = {
|
|
2885
3018
|
var createThemeExtensions = ({ themeMode, styles: styles5, syntaxHighlighting: _syntaxHighlighting, slots: _slots } = {}) => {
|
2886
3019
|
const slots = (0, import_lodash4.default)({}, _slots, defaultThemeSlots);
|
2887
3020
|
return [
|
2888
|
-
|
2889
|
-
|
3021
|
+
import_view16.EditorView.darkTheme.of(themeMode === "dark"),
|
3022
|
+
import_view16.EditorView.baseTheme(styles5 ? (0, import_lodash5.default)({}, defaultTheme, styles5) : defaultTheme),
|
2890
3023
|
// https://github.com/codemirror/theme-one-dark
|
2891
|
-
_syntaxHighlighting && (themeMode === "dark" ? (0,
|
2892
|
-
slots.editor?.className &&
|
3024
|
+
_syntaxHighlighting && (themeMode === "dark" ? (0, import_language3.syntaxHighlighting)(import_theme_one_dark.oneDarkHighlightStyle) : (0, import_language3.syntaxHighlighting)(import_language3.defaultHighlightStyle)),
|
3025
|
+
slots.editor?.className && import_view16.EditorView.editorAttributes.of({
|
2893
3026
|
class: slots.editor.className
|
2894
3027
|
}),
|
2895
|
-
slots.content?.className &&
|
3028
|
+
slots.content?.className && import_view16.EditorView.contentAttributes.of({
|
2896
3029
|
class: slots.content.className
|
2897
3030
|
})
|
2898
3031
|
].filter(import_util4.isNotFalsy);
|
@@ -2919,12 +3052,12 @@ var createDataExtensions = ({ id, text, space, identity }) => {
|
|
2919
3052
|
return extensions;
|
2920
3053
|
};
|
2921
3054
|
var folding = (_props = {}) => [
|
2922
|
-
(0,
|
3055
|
+
(0, import_language4.codeFolding)({
|
2923
3056
|
placeholderDOM: () => {
|
2924
3057
|
return document.createElement("span");
|
2925
3058
|
}
|
2926
3059
|
}),
|
2927
|
-
(0,
|
3060
|
+
(0, import_language4.foldGutter)({
|
2928
3061
|
markerDOM: (open) => {
|
2929
3062
|
const el = createElement("div", {
|
2930
3063
|
className: "flex h-full items-center"
|
@@ -2939,7 +3072,7 @@ var folding = (_props = {}) => [
|
|
2939
3072
|
}));
|
2940
3073
|
}
|
2941
3074
|
}),
|
2942
|
-
|
3075
|
+
import_view18.EditorView.theme({
|
2943
3076
|
".cm-foldGutter": {
|
2944
3077
|
opacity: 0.3,
|
2945
3078
|
transition: "opacity 0.3s",
|
@@ -2952,11 +3085,11 @@ var folding = (_props = {}) => [
|
|
2952
3085
|
];
|
2953
3086
|
var listener = ({ onFocus, onChange }) => {
|
2954
3087
|
const extensions = [];
|
2955
|
-
onFocus && extensions.push(
|
3088
|
+
onFocus && extensions.push(import_view19.EditorView.focusChangeEffect.of((_, focusing) => {
|
2956
3089
|
onFocus(focusing);
|
2957
3090
|
return null;
|
2958
3091
|
}));
|
2959
|
-
onChange && extensions.push(
|
3092
|
+
onChange && extensions.push(import_view19.EditorView.updateListener.of((update2) => {
|
2960
3093
|
onChange(update2.state.doc.toString(), update2.state.facet(documentId));
|
2961
3094
|
}));
|
2962
3095
|
return extensions;
|
@@ -2982,7 +3115,7 @@ var setHeading = (level) => {
|
|
2982
3115
|
let prevBlock = -1;
|
2983
3116
|
for (const range of ranges) {
|
2984
3117
|
let sawBlock = false;
|
2985
|
-
(0,
|
3118
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
2986
3119
|
from: range.from,
|
2987
3120
|
to: range.to,
|
2988
3121
|
enter: (node) => {
|
@@ -3079,7 +3212,7 @@ var setStyle = (type, enable) => {
|
|
3079
3212
|
to: range.head + found + marker.length
|
3080
3213
|
}
|
3081
3214
|
],
|
3082
|
-
range:
|
3215
|
+
range: import_state16.EditorSelection.cursor(range.from - marker.length)
|
3083
3216
|
};
|
3084
3217
|
}
|
3085
3218
|
}
|
@@ -3091,7 +3224,7 @@ var setStyle = (type, enable) => {
|
|
3091
3224
|
let startCovered = false;
|
3092
3225
|
let endCovered = false;
|
3093
3226
|
let { from, to } = range;
|
3094
|
-
(0,
|
3227
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3095
3228
|
from,
|
3096
3229
|
to,
|
3097
3230
|
enter: (node) => {
|
@@ -3207,13 +3340,13 @@ var setStyle = (type, enable) => {
|
|
3207
3340
|
from: range.head,
|
3208
3341
|
insert: marker + marker
|
3209
3342
|
},
|
3210
|
-
range:
|
3343
|
+
range: import_state16.EditorSelection.cursor(range.head + marker.length)
|
3211
3344
|
};
|
3212
3345
|
}
|
3213
3346
|
const changeSet = state.changes(changes2.concat(changesAtEnd));
|
3214
3347
|
return {
|
3215
3348
|
changes: changeSet,
|
3216
|
-
range: range.empty && !changeSet.empty ?
|
3349
|
+
range: range.empty && !changeSet.empty ? import_state16.EditorSelection.cursor(range.head + marker.length) : import_state16.EditorSelection.range(changeSet.mapPos(range.from, 1), changeSet.mapPos(range.to, -1))
|
3217
3350
|
};
|
3218
3351
|
});
|
3219
3352
|
dispatch(state.update(changes, {
|
@@ -3294,7 +3427,7 @@ var insertTable = (view) => {
|
|
3294
3427
|
snippets.table(view, null, from, from);
|
3295
3428
|
};
|
3296
3429
|
var removeLinkInner = (from, to, changes, state) => {
|
3297
|
-
(0,
|
3430
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3298
3431
|
from,
|
3299
3432
|
to,
|
3300
3433
|
enter: (node) => {
|
@@ -3339,7 +3472,7 @@ var addLink = ({ url, image: image2 } = {}) => {
|
|
3339
3472
|
let { from, to } = range;
|
3340
3473
|
const cutStyles = [];
|
3341
3474
|
let okay = null;
|
3342
|
-
(0,
|
3475
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3343
3476
|
from,
|
3344
3477
|
to,
|
3345
3478
|
enter: (node) => {
|
@@ -3413,7 +3546,7 @@ var addLink = ({ url, image: image2 } = {}) => {
|
|
3413
3546
|
const changeSet = state.changes(changes2.concat(changesAfter));
|
3414
3547
|
return {
|
3415
3548
|
changes: changeSet,
|
3416
|
-
range:
|
3549
|
+
range: import_state16.EditorSelection.cursor(changeSet.mapPos(to, 1) - cursorOffset - (url ? url.length + 2 : 0))
|
3417
3550
|
};
|
3418
3551
|
});
|
3419
3552
|
if (changes.changes.empty) {
|
@@ -3434,7 +3567,7 @@ var addList = (type) => {
|
|
3434
3567
|
let parentColumn = null;
|
3435
3568
|
const blocks = [];
|
3436
3569
|
for (const { from, to } of state.selection.ranges) {
|
3437
|
-
(0,
|
3570
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3438
3571
|
from,
|
3439
3572
|
to,
|
3440
3573
|
enter: (node) => {
|
@@ -3569,7 +3702,7 @@ var removeList = (type) => {
|
|
3569
3702
|
const stack = [];
|
3570
3703
|
const targetNodeType = type === 0 ? "OrderedList" : type === 1 ? "BulletList" : "TaskList";
|
3571
3704
|
for (const { from, to } of state.selection.ranges) {
|
3572
|
-
(0,
|
3705
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3573
3706
|
from,
|
3574
3707
|
to,
|
3575
3708
|
enter: (node) => {
|
@@ -3656,7 +3789,7 @@ var setBlockquote = (enable) => {
|
|
3656
3789
|
let lastBlock = -1;
|
3657
3790
|
for (const { from, to } of state.selection.ranges) {
|
3658
3791
|
const sawBlock = false;
|
3659
|
-
(0,
|
3792
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3660
3793
|
from,
|
3661
3794
|
to,
|
3662
3795
|
enter: (node) => {
|
@@ -3746,7 +3879,7 @@ var addCodeblock = (target) => {
|
|
3746
3879
|
for (const { from, to } of selection.ranges) {
|
3747
3880
|
let blockFrom = from;
|
3748
3881
|
let blockTo = to;
|
3749
|
-
(0,
|
3882
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3750
3883
|
from,
|
3751
3884
|
to,
|
3752
3885
|
enter: (node) => {
|
@@ -3797,7 +3930,7 @@ var removeCodeblock = ({ state, dispatch }) => {
|
|
3797
3930
|
let lastBlock = -1;
|
3798
3931
|
const changes = [];
|
3799
3932
|
for (const { from, to } of state.selection.ranges) {
|
3800
|
-
(0,
|
3933
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3801
3934
|
from,
|
3802
3935
|
to,
|
3803
3936
|
enter: (node) => {
|
@@ -3847,7 +3980,7 @@ var toggleCodeblock = (target) => {
|
|
3847
3980
|
};
|
3848
3981
|
var formattingKeymap = (_options = {}) => {
|
3849
3982
|
return [
|
3850
|
-
|
3983
|
+
import_view20.keymap.of([
|
3851
3984
|
{
|
3852
3985
|
key: "meta-b",
|
3853
3986
|
run: toggleStrong
|
@@ -3959,7 +4092,7 @@ var getFormatting = (state) => {
|
|
3959
4092
|
}
|
3960
4093
|
}
|
3961
4094
|
}
|
3962
|
-
(0,
|
4095
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3963
4096
|
from: range.from,
|
3964
4097
|
to: range.to,
|
3965
4098
|
enter: (node) => {
|
@@ -4048,7 +4181,7 @@ var getFormatting = (state) => {
|
|
4048
4181
|
};
|
4049
4182
|
};
|
4050
4183
|
var useFormattingState = (state) => {
|
4051
|
-
return (0, import_react6.useMemo)(() =>
|
4184
|
+
return (0, import_react6.useMemo)(() => import_view20.EditorView.updateListener.of((update2) => {
|
4052
4185
|
if (update2.docChanged || update2.selectionSet) {
|
4053
4186
|
Object.entries(getFormatting(update2.state)).forEach(([key, active]) => {
|
4054
4187
|
state[key] = active;
|
@@ -4135,7 +4268,7 @@ var markdownTagsExtensions = [
|
|
4135
4268
|
}
|
4136
4269
|
];
|
4137
4270
|
var markdownHighlightStyle = (_options = {}) => {
|
4138
|
-
return
|
4271
|
+
return import_language7.HighlightStyle.define([
|
4139
4272
|
{
|
4140
4273
|
tag: [
|
4141
4274
|
import_highlight2.tags.keyword,
|
@@ -4299,8 +4432,8 @@ var createMarkdownExtensions = ({ themeMode } = {}) => {
|
|
4299
4432
|
]
|
4300
4433
|
}),
|
4301
4434
|
// Custom styles.
|
4302
|
-
(0,
|
4303
|
-
|
4435
|
+
(0, import_language6.syntaxHighlighting)(markdownHighlightStyle()),
|
4436
|
+
import_view21.keymap.of([
|
4304
4437
|
// https://codemirror.net/docs/ref/#commands.indentWithTab
|
4305
4438
|
import_commands3.indentWithTab,
|
4306
4439
|
// https://codemirror.net/docs/ref/#commands.defaultKeymap
|
@@ -4310,7 +4443,7 @@ var createMarkdownExtensions = ({ themeMode } = {}) => {
|
|
4310
4443
|
])
|
4311
4444
|
];
|
4312
4445
|
};
|
4313
|
-
var debugTree = (cb) =>
|
4446
|
+
var debugTree = (cb) => import_state17.StateField.define({
|
4314
4447
|
create: (state) => cb(convertTreeToJson(state)),
|
4315
4448
|
update: (value, tr) => cb(convertTreeToJson(tr.state))
|
4316
4449
|
});
|
@@ -4331,15 +4464,15 @@ var convertTreeToJson = (state) => {
|
|
4331
4464
|
}
|
4332
4465
|
return node;
|
4333
4466
|
};
|
4334
|
-
return treeToJson((0,
|
4467
|
+
return treeToJson((0, import_language8.syntaxTree)(state).cursor());
|
4335
4468
|
};
|
4336
4469
|
var adjustChanges = () => {
|
4337
|
-
return
|
4470
|
+
return import_view23.ViewPlugin.fromClass(class {
|
4338
4471
|
update(update2) {
|
4339
|
-
const tree = (0,
|
4472
|
+
const tree = (0, import_language10.syntaxTree)(update2.state);
|
4340
4473
|
const adjustments = [];
|
4341
4474
|
for (const tr of update2.transactions) {
|
4342
|
-
const event = tr.annotation(
|
4475
|
+
const event = tr.annotation(import_state19.Transaction.userEvent);
|
4343
4476
|
switch (event) {
|
4344
4477
|
//
|
4345
4478
|
// Enter
|
@@ -4474,9 +4607,9 @@ var getValidUrl = (str) => {
|
|
4474
4607
|
};
|
4475
4608
|
var image = (_options = {}) => {
|
4476
4609
|
return [
|
4477
|
-
|
4610
|
+
import_state20.StateField.define({
|
4478
4611
|
create: (state) => {
|
4479
|
-
return
|
4612
|
+
return import_view24.Decoration.set(buildDecorations2(0, state.doc.length, state));
|
4480
4613
|
},
|
4481
4614
|
update: (value, tr) => {
|
4482
4615
|
if (!tr.docChanged && !tr.selection) {
|
@@ -4496,10 +4629,10 @@ var image = (_options = {}) => {
|
|
4496
4629
|
filterFrom: from,
|
4497
4630
|
filterTo: to,
|
4498
4631
|
filter: () => false,
|
4499
|
-
add:
|
4632
|
+
add: buildDecorations2(from, to, tr.state)
|
4500
4633
|
});
|
4501
4634
|
},
|
4502
|
-
provide: (field) =>
|
4635
|
+
provide: (field) => import_view24.EditorView.decorations.from(field)
|
4503
4636
|
})
|
4504
4637
|
];
|
4505
4638
|
};
|
@@ -4511,10 +4644,10 @@ var preloadImage = (url) => {
|
|
4511
4644
|
preloaded.add(url);
|
4512
4645
|
}
|
4513
4646
|
};
|
4514
|
-
var
|
4647
|
+
var buildDecorations2 = (from, to, state) => {
|
4515
4648
|
const decorations = [];
|
4516
4649
|
const cursor = state.selection.main.head;
|
4517
|
-
(0,
|
4650
|
+
(0, import_language11.syntaxTree)(state).iterate({
|
4518
4651
|
enter: (node) => {
|
4519
4652
|
if (node.name === "Image") {
|
4520
4653
|
const urlNode = node.node.getChild("URL");
|
@@ -4525,7 +4658,7 @@ var buildDecorations = (from, to, state) => {
|
|
4525
4658
|
return;
|
4526
4659
|
}
|
4527
4660
|
preloadImage(url);
|
4528
|
-
decorations.push(
|
4661
|
+
decorations.push(import_view24.Decoration.replace({
|
4529
4662
|
block: true,
|
4530
4663
|
widget: new ImageWidget(url)
|
4531
4664
|
}).range(hide2 ? node.from : node.to, node.to));
|
@@ -4537,7 +4670,7 @@ var buildDecorations = (from, to, state) => {
|
|
4537
4670
|
});
|
4538
4671
|
return decorations;
|
4539
4672
|
};
|
4540
|
-
var ImageWidget = class extends
|
4673
|
+
var ImageWidget = class extends import_view24.WidgetType {
|
4541
4674
|
constructor(_url) {
|
4542
4675
|
super();
|
4543
4676
|
this._url = _url;
|
@@ -4559,7 +4692,7 @@ var ImageWidget = class extends import_view22.WidgetType {
|
|
4559
4692
|
};
|
4560
4693
|
var bulletListIndentationWidth = 24;
|
4561
4694
|
var orderedListIndentationWidth = 36;
|
4562
|
-
var formattingStyles =
|
4695
|
+
var formattingStyles = import_view25.EditorView.theme({
|
4563
4696
|
/**
|
4564
4697
|
* Horizontal rule.
|
4565
4698
|
*/
|
@@ -4677,14 +4810,14 @@ var formattingStyles = import_view23.EditorView.theme({
|
|
4677
4810
|
}
|
4678
4811
|
});
|
4679
4812
|
var table = (options = {}) => {
|
4680
|
-
return
|
4813
|
+
return import_state21.StateField.define({
|
4681
4814
|
create: (state) => update(state, options),
|
4682
4815
|
update: (_, tr) => update(tr.state, options),
|
4683
|
-
provide: (field) =>
|
4816
|
+
provide: (field) => import_view26.EditorView.decorations.from(field)
|
4684
4817
|
});
|
4685
4818
|
};
|
4686
4819
|
var update = (state, _options) => {
|
4687
|
-
const builder = new
|
4820
|
+
const builder = new import_state21.RangeSetBuilder();
|
4688
4821
|
const cursor = state.selection.main.head;
|
4689
4822
|
const tables = [];
|
4690
4823
|
const getTable = () => tables[tables.length - 1];
|
@@ -4692,7 +4825,7 @@ var update = (state, _options) => {
|
|
4692
4825
|
const table2 = getTable();
|
4693
4826
|
return table2.rows?.[table2.rows.length - 1];
|
4694
4827
|
};
|
4695
|
-
(0,
|
4828
|
+
(0, import_language12.syntaxTree)(state).iterate({
|
4696
4829
|
enter: (node) => {
|
4697
4830
|
switch (node.name) {
|
4698
4831
|
case "Table": {
|
@@ -4725,19 +4858,19 @@ var update = (state, _options) => {
|
|
4725
4858
|
tables.forEach((table2) => {
|
4726
4859
|
const replace = state.readOnly || cursor < table2.from || cursor > table2.to;
|
4727
4860
|
if (replace) {
|
4728
|
-
builder.add(table2.from, table2.to,
|
4861
|
+
builder.add(table2.from, table2.to, import_view26.Decoration.replace({
|
4729
4862
|
block: true,
|
4730
4863
|
widget: new TableWidget(table2)
|
4731
4864
|
}));
|
4732
4865
|
} else {
|
4733
|
-
builder.add(table2.from, table2.to,
|
4866
|
+
builder.add(table2.from, table2.to, import_view26.Decoration.mark({
|
4734
4867
|
class: "cm-table"
|
4735
4868
|
}));
|
4736
4869
|
}
|
4737
4870
|
});
|
4738
4871
|
return builder.finish();
|
4739
4872
|
};
|
4740
|
-
var TableWidget = class extends
|
4873
|
+
var TableWidget = class extends import_view26.WidgetType {
|
4741
4874
|
constructor(_table) {
|
4742
4875
|
super();
|
4743
4876
|
this._table = _table;
|
@@ -4777,14 +4910,14 @@ var Unicode = {
|
|
4777
4910
|
bulletSmall: "\u2219",
|
4778
4911
|
bulletSquare: "\u2B1D"
|
4779
4912
|
};
|
4780
|
-
var HorizontalRuleWidget = class extends
|
4913
|
+
var HorizontalRuleWidget = class extends import_view22.WidgetType {
|
4781
4914
|
toDOM() {
|
4782
4915
|
const el = document.createElement("span");
|
4783
4916
|
el.className = "cm-hr";
|
4784
4917
|
return el;
|
4785
4918
|
}
|
4786
4919
|
};
|
4787
|
-
var LinkButton = class extends
|
4920
|
+
var LinkButton = class extends import_view22.WidgetType {
|
4788
4921
|
constructor(url, render) {
|
4789
4922
|
super();
|
4790
4923
|
this.url = url;
|
@@ -4800,7 +4933,7 @@ var LinkButton = class extends import_view20.WidgetType {
|
|
4800
4933
|
return el;
|
4801
4934
|
}
|
4802
4935
|
};
|
4803
|
-
var CheckboxWidget = class extends
|
4936
|
+
var CheckboxWidget = class extends import_view22.WidgetType {
|
4804
4937
|
constructor(_checked) {
|
4805
4938
|
super();
|
4806
4939
|
this._checked = _checked;
|
@@ -4845,7 +4978,7 @@ var CheckboxWidget = class extends import_view20.WidgetType {
|
|
4845
4978
|
return false;
|
4846
4979
|
}
|
4847
4980
|
};
|
4848
|
-
var TextWidget = class extends
|
4981
|
+
var TextWidget = class extends import_view22.WidgetType {
|
4849
4982
|
constructor(text, className) {
|
4850
4983
|
super();
|
4851
4984
|
this.text = text;
|
@@ -4860,29 +4993,29 @@ var TextWidget = class extends import_view20.WidgetType {
|
|
4860
4993
|
return el;
|
4861
4994
|
}
|
4862
4995
|
};
|
4863
|
-
var hide =
|
4864
|
-
var blockQuote =
|
4996
|
+
var hide = import_view22.Decoration.replace({});
|
4997
|
+
var blockQuote = import_view22.Decoration.line({
|
4865
4998
|
class: (0, import_react_ui_theme7.mx)("cm-blockquote")
|
4866
4999
|
});
|
4867
|
-
var fencedCodeLine =
|
5000
|
+
var fencedCodeLine = import_view22.Decoration.line({
|
4868
5001
|
class: (0, import_react_ui_theme7.mx)("cm-code cm-codeblock-line")
|
4869
5002
|
});
|
4870
|
-
var fencedCodeLineFirst =
|
5003
|
+
var fencedCodeLineFirst = import_view22.Decoration.line({
|
4871
5004
|
class: (0, import_react_ui_theme7.mx)("cm-code cm-codeblock-line", "cm-codeblock-first")
|
4872
5005
|
});
|
4873
|
-
var fencedCodeLineLast =
|
5006
|
+
var fencedCodeLineLast = import_view22.Decoration.line({
|
4874
5007
|
class: (0, import_react_ui_theme7.mx)("cm-code cm-codeblock-line", "cm-codeblock-last")
|
4875
5008
|
});
|
4876
5009
|
var commentBlockLine = fencedCodeLine;
|
4877
5010
|
var commentBlockLineFirst = fencedCodeLineFirst;
|
4878
5011
|
var commentBlockLineLast = fencedCodeLineLast;
|
4879
|
-
var horizontalRule =
|
5012
|
+
var horizontalRule = import_view22.Decoration.replace({
|
4880
5013
|
widget: new HorizontalRuleWidget()
|
4881
5014
|
});
|
4882
|
-
var checkedTask =
|
5015
|
+
var checkedTask = import_view22.Decoration.replace({
|
4883
5016
|
widget: new CheckboxWidget(true)
|
4884
5017
|
});
|
4885
|
-
var uncheckedTask =
|
5018
|
+
var uncheckedTask = import_view22.Decoration.replace({
|
4886
5019
|
widget: new CheckboxWidget(false)
|
4887
5020
|
});
|
4888
5021
|
var editingRange = (state, range, focus2) => {
|
@@ -4897,9 +5030,9 @@ var autoHideTags = /* @__PURE__ */ new Set([
|
|
4897
5030
|
"SubscriptMark",
|
4898
5031
|
"SuperscriptMark"
|
4899
5032
|
]);
|
4900
|
-
var
|
4901
|
-
const deco = new
|
4902
|
-
const atomicDeco = new
|
5033
|
+
var buildDecorations3 = (view, options, focus2) => {
|
5034
|
+
const deco = new import_state18.RangeSetBuilder();
|
5035
|
+
const atomicDeco = new import_state18.RangeSetBuilder();
|
4903
5036
|
const { state } = view;
|
4904
5037
|
const headerLevels = [];
|
4905
5038
|
const getHeaderLevels = (node, level) => {
|
@@ -4986,7 +5119,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
4986
5119
|
} else {
|
4987
5120
|
const num = headers.slice(from - 1).map((level2) => level2?.number ?? 0).join(".") + " ";
|
4988
5121
|
if (num.length) {
|
4989
|
-
atomicDeco.add(mark.from, mark.from + len,
|
5122
|
+
atomicDeco.add(mark.from, mark.from + len, import_view22.Decoration.replace({
|
4990
5123
|
widget: new TextWidget(num, theme.heading(level))
|
4991
5124
|
}));
|
4992
5125
|
}
|
@@ -5011,7 +5144,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5011
5144
|
if (node.from === line.to - 1) {
|
5012
5145
|
return false;
|
5013
5146
|
}
|
5014
|
-
deco.add(line.from, line.from,
|
5147
|
+
deco.add(line.from, line.from, import_view22.Decoration.line({
|
5015
5148
|
class: "cm-list-item",
|
5016
5149
|
attributes: {
|
5017
5150
|
style: `padding-left: ${offset}px; text-indent: -${width}px;`
|
@@ -5028,7 +5161,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5028
5161
|
const label = list.type === "OrderedList" ? `${++list.number}.` : Unicode.bulletSmall;
|
5029
5162
|
const line = state.doc.lineAt(node.from);
|
5030
5163
|
const to = state.doc.sliceString(node.to, node.to + 1) === " " ? node.to + 1 : node.to;
|
5031
|
-
atomicDeco.add(line.from, to,
|
5164
|
+
atomicDeco.add(line.from, to, import_view22.Decoration.replace({
|
5032
5165
|
widget: new TextWidget(label, list.type === "OrderedList" ? "cm-list-mark cm-list-mark-ordered" : "cm-list-mark cm-list-mark-bullet")
|
5033
5166
|
}));
|
5034
5167
|
break;
|
@@ -5115,7 +5248,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5115
5248
|
if (!editing) {
|
5116
5249
|
atomicDeco.add(node.from, marks[0].to, hide);
|
5117
5250
|
}
|
5118
|
-
deco.add(marks[0].to, marks[1].from,
|
5251
|
+
deco.add(marks[0].to, marks[1].from, import_view22.Decoration.mark({
|
5119
5252
|
tagName: "a",
|
5120
5253
|
attributes: {
|
5121
5254
|
class: "cm-link",
|
@@ -5125,7 +5258,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5125
5258
|
}
|
5126
5259
|
}));
|
5127
5260
|
if (!editing) {
|
5128
|
-
atomicDeco.add(marks[1].from, node.to, options.renderLinkButton ?
|
5261
|
+
atomicDeco.add(marks[1].from, node.to, options.renderLinkButton ? import_view22.Decoration.replace({
|
5129
5262
|
widget: new LinkButton(url, options.renderLinkButton)
|
5130
5263
|
}) : hide);
|
5131
5264
|
}
|
@@ -5159,7 +5292,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5159
5292
|
}
|
5160
5293
|
}
|
5161
5294
|
};
|
5162
|
-
const tree = (0,
|
5295
|
+
const tree = (0, import_language9.syntaxTree)(state);
|
5163
5296
|
if (options.numberedHeadings?.from === void 0) {
|
5164
5297
|
for (const { from, to } of view.visibleRanges) {
|
5165
5298
|
tree.iterate({
|
@@ -5180,16 +5313,16 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5180
5313
|
atomicDeco: atomicDeco.finish()
|
5181
5314
|
};
|
5182
5315
|
};
|
5183
|
-
var forceUpdate =
|
5316
|
+
var forceUpdate = import_state18.StateEffect.define();
|
5184
5317
|
var decorateMarkdown = (options = {}) => {
|
5185
5318
|
return [
|
5186
|
-
|
5319
|
+
import_view22.ViewPlugin.fromClass(class {
|
5187
5320
|
constructor(view) {
|
5188
|
-
({ deco: this.deco, atomicDeco: this.atomicDeco } =
|
5321
|
+
({ deco: this.deco, atomicDeco: this.atomicDeco } = buildDecorations3(view, options, view.hasFocus));
|
5189
5322
|
}
|
5190
5323
|
update(update2) {
|
5191
5324
|
if (update2.docChanged || update2.viewportChanged || update2.focusChanged || update2.transactions.some((tr) => tr.effects.some((effect) => effect.is(forceUpdate))) || update2.selectionSet && !options.selectionChangeDelay) {
|
5192
|
-
({ deco: this.deco, atomicDeco: this.atomicDeco } =
|
5325
|
+
({ deco: this.deco, atomicDeco: this.atomicDeco } = buildDecorations3(update2.view, options, update2.view.hasFocus));
|
5193
5326
|
this.clearUpdate();
|
5194
5327
|
} else if (update2.selectionSet) {
|
5195
5328
|
this.scheduleUpdate(update2.view);
|
@@ -5215,9 +5348,9 @@ var decorateMarkdown = (options = {}) => {
|
|
5215
5348
|
}
|
5216
5349
|
}, {
|
5217
5350
|
provide: (plugin) => [
|
5218
|
-
|
5219
|
-
|
5220
|
-
|
5351
|
+
import_view22.EditorView.atomicRanges.of((view) => view.plugin(plugin)?.atomicDeco ?? import_view22.Decoration.none),
|
5352
|
+
import_view22.EditorView.decorations.of((view) => view.plugin(plugin)?.atomicDeco ?? import_view22.Decoration.none),
|
5353
|
+
import_view22.EditorView.decorations.of((view) => view.plugin(plugin)?.deco ?? import_view22.Decoration.none)
|
5221
5354
|
]
|
5222
5355
|
}),
|
5223
5356
|
image(),
|
@@ -5227,8 +5360,8 @@ var decorateMarkdown = (options = {}) => {
|
|
5227
5360
|
];
|
5228
5361
|
};
|
5229
5362
|
var linkTooltip = (render) => {
|
5230
|
-
return (0,
|
5231
|
-
const syntax = (0,
|
5363
|
+
return (0, import_view27.hoverTooltip)((view, pos, side) => {
|
5364
|
+
const syntax = (0, import_language13.syntaxTree)(view.state).resolveInner(pos, side);
|
5232
5365
|
let link = null;
|
5233
5366
|
for (let i = 0, node = syntax; !link && node && i < 5; node = node.parent, i++) {
|
5234
5367
|
link = node.name === "Link" ? node : null;
|
@@ -5311,7 +5444,7 @@ var InputModeExtensions = {
|
|
5311
5444
|
editorInputMode.of({
|
5312
5445
|
type: "vscode"
|
5313
5446
|
}),
|
5314
|
-
|
5447
|
+
import_view28.keymap.of(import_codemirror_vscode_keymap.vscodeKeymap)
|
5315
5448
|
],
|
5316
5449
|
vim: [
|
5317
5450
|
// https://github.com/replit/codemirror-vim
|
@@ -5320,7 +5453,7 @@ var InputModeExtensions = {
|
|
5320
5453
|
type: "vim",
|
5321
5454
|
noTabster: true
|
5322
5455
|
}),
|
5323
|
-
|
5456
|
+
import_view28.keymap.of([
|
5324
5457
|
{
|
5325
5458
|
key: "Alt-Escape",
|
5326
5459
|
run: (view) => {
|
@@ -5340,7 +5473,7 @@ var typewriter = ({ delay = 75, items = defaultItems } = {}) => {
|
|
5340
5473
|
let t;
|
5341
5474
|
let idx = 0;
|
5342
5475
|
return [
|
5343
|
-
|
5476
|
+
import_view29.keymap.of([
|
5344
5477
|
{
|
5345
5478
|
// Reset.
|
5346
5479
|
key: "alt-meta-'",
|
@@ -5422,14 +5555,14 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5422
5555
|
anchor
|
5423
5556
|
};
|
5424
5557
|
}
|
5425
|
-
const state =
|
5558
|
+
const state = import_state22.EditorState.create({
|
5426
5559
|
doc: initialValue,
|
5427
5560
|
// selection: initialSelection,
|
5428
5561
|
extensions: [
|
5429
5562
|
id && documentId.of(id),
|
5430
5563
|
extensions,
|
5431
5564
|
// NOTE: This doesn't catch errors in keymap functions.
|
5432
|
-
|
5565
|
+
import_view30.EditorView.exceptionSink.of((err) => {
|
5433
5566
|
import_log7.log.catch(err, void 0, {
|
5434
5567
|
F: __dxlog_file11,
|
5435
5568
|
L: 97,
|
@@ -5439,10 +5572,10 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5439
5572
|
})
|
5440
5573
|
].filter(import_util5.isNotFalsy)
|
5441
5574
|
});
|
5442
|
-
view2 = new
|
5575
|
+
view2 = new import_view30.EditorView({
|
5443
5576
|
parent: parentRef.current,
|
5444
5577
|
state,
|
5445
|
-
scrollTo: scrollTo ?
|
5578
|
+
scrollTo: scrollTo ? import_view30.EditorView.scrollIntoView(scrollTo, {
|
5446
5579
|
yMargin: 96
|
5447
5580
|
}) : void 0,
|
5448
5581
|
dispatchTransactions: debug ? debugDispatcher : void 0
|
@@ -5506,7 +5639,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5506
5639
|
autoFocus,
|
5507
5640
|
view
|
5508
5641
|
]);
|
5509
|
-
const
|
5642
|
+
const focusableGroupAttrs = (0, import_react_tabster.useFocusableGroup)({
|
5510
5643
|
tabBehavior: "limited",
|
5511
5644
|
ignoreDefaultKeydown: {
|
5512
5645
|
Escape: view?.state.facet(editorInputMode).noTabster
|
@@ -5525,15 +5658,14 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5525
5658
|
}, [
|
5526
5659
|
view
|
5527
5660
|
]);
|
5528
|
-
const focusAttributes = {
|
5529
|
-
tabIndex: 0,
|
5530
|
-
...focusableGroup,
|
5531
|
-
onKeyUp: handleKeyUp
|
5532
|
-
};
|
5533
5661
|
return {
|
5534
5662
|
parentRef,
|
5535
5663
|
view,
|
5536
|
-
focusAttributes
|
5664
|
+
focusAttributes: {
|
5665
|
+
tabIndex: 0,
|
5666
|
+
...focusableGroupAttrs,
|
5667
|
+
onKeyUp: handleKeyUp
|
5668
|
+
}
|
5537
5669
|
};
|
5538
5670
|
};
|
5539
5671
|
// Annotate the CommonJS export names for ESM import in node:
|