@dxos/react-ui-editor 0.8.1-staging.5be625a → 0.8.1-staging.9eaf14f
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 +276 -140
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +310 -178
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +276 -140
- 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 +2 -2
- package/dist/types/src/TextEditor.stories.d.ts +5 -40
- package/dist/types/src/TextEditor.stories.d.ts.map +1 -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/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 +1 -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/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 +27 -27
- 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 +3 -3
- package/src/{styles/stack-item-content-class-names.ts → fragments.ts} +3 -1
- package/src/index.ts +0 -4
- package/src/styles/theme.ts +5 -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 === "section" ? "[&_.cm-scroller]:overflow-hidden [&_.cm-scroller]:min-bs-24" : "min-bs-0");
|
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.
|
@@ -883,6 +890,8 @@ var editorMonospace = import_view2.EditorView.theme({
|
|
883
890
|
}
|
884
891
|
});
|
885
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");
|
886
895
|
var singleValueFacet = (defaultValue) => import_state3.Facet.define({
|
887
896
|
// Called immediately.
|
888
897
|
combine: (providers) => {
|
@@ -2042,18 +2051,19 @@ var commandState = import_state9.StateField.define({
|
|
2042
2051
|
const widthWithoutPadding = parent.clientWidth - parseFloat(paddingLeft) - parseFloat(paddingRight);
|
2043
2052
|
dom.style.width = `${widthWithoutPadding}px`;
|
2044
2053
|
}
|
2045
|
-
options.
|
2054
|
+
options.onRenderDialog(dom, (action) => {
|
2046
2055
|
view2.dispatch({
|
2047
2056
|
effects: closeEffect.of(null)
|
2048
2057
|
});
|
2049
2058
|
if (action?.insert?.length) {
|
2059
|
+
const text = action.insert + "\n";
|
2050
2060
|
view2.dispatch({
|
2051
2061
|
changes: {
|
2052
2062
|
from: pos,
|
2053
|
-
insert:
|
2063
|
+
insert: text
|
2054
2064
|
},
|
2055
2065
|
selection: {
|
2056
|
-
anchor: pos +
|
2066
|
+
anchor: pos + text.length
|
2057
2067
|
}
|
2058
2068
|
});
|
2059
2069
|
}
|
@@ -2177,14 +2187,139 @@ var hintViewPlugin = ({ onHint }) => import_view9.ViewPlugin.fromClass(class {
|
|
2177
2187
|
import_view9.EditorView.decorations.of((view) => view.plugin(plugin)?.deco ?? import_view9.Decoration.none)
|
2178
2188
|
]
|
2179
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
|
+
};
|
2180
2300
|
var command = (options) => {
|
2181
2301
|
return [
|
2182
2302
|
commandConfig.of(options),
|
2183
2303
|
commandState,
|
2184
2304
|
import_view8.keymap.of(commandKeyBindings),
|
2305
|
+
preview(options),
|
2306
|
+
floatingMenu(options),
|
2185
2307
|
hintViewPlugin(options),
|
2186
2308
|
import_view8.EditorView.focusChangeEffect.of((_, focusing) => {
|
2187
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
|
+
}
|
2188
2323
|
})
|
2189
2324
|
];
|
2190
2325
|
};
|
@@ -2195,10 +2330,10 @@ var createEditorStateTransaction = ({ scrollTo, selection }) => {
|
|
2195
2330
|
return {
|
2196
2331
|
selection,
|
2197
2332
|
scrollIntoView: !scrollTo,
|
2198
|
-
effects: scrollTo ?
|
2333
|
+
effects: scrollTo ? import_view14.EditorView.scrollIntoView(scrollTo, {
|
2199
2334
|
yMargin: 96
|
2200
2335
|
}) : void 0,
|
2201
|
-
annotations:
|
2336
|
+
annotations: import_state12.Transaction.userEvent.of(stateRestoreAnnotation)
|
2202
2337
|
};
|
2203
2338
|
};
|
2204
2339
|
var createEditorStateStore = (keyPrefix) => ({
|
@@ -2237,7 +2372,7 @@ var selectionState = ({ getState, setState } = {}) => {
|
|
2237
2372
|
// setStateDebounced(id, {});
|
2238
2373
|
// },
|
2239
2374
|
// }),
|
2240
|
-
|
2375
|
+
import_view14.EditorView.updateListener.of(({ view, transactions }) => {
|
2241
2376
|
const id = view.state.facet(documentId);
|
2242
2377
|
if (!id || transactions.some((tr) => tr.isUserEvent(stateRestoreAnnotation))) {
|
2243
2378
|
return;
|
@@ -2260,7 +2395,7 @@ var selectionState = ({ getState, setState } = {}) => {
|
|
2260
2395
|
}
|
2261
2396
|
}
|
2262
2397
|
}),
|
2263
|
-
getState &&
|
2398
|
+
getState && import_view14.keymap.of([
|
2264
2399
|
{
|
2265
2400
|
key: "ctrl-r",
|
2266
2401
|
run: (view) => {
|
@@ -2275,10 +2410,10 @@ var selectionState = ({ getState, setState } = {}) => {
|
|
2275
2410
|
].filter(import_util3.isNotFalsy);
|
2276
2411
|
};
|
2277
2412
|
var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/comments.ts";
|
2278
|
-
var setComments =
|
2279
|
-
var setSelection =
|
2280
|
-
var setCommentState =
|
2281
|
-
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({
|
2282
2417
|
create: (state) => ({
|
2283
2418
|
id: state.facet(documentId),
|
2284
2419
|
comments: [],
|
@@ -2316,7 +2451,7 @@ var commentsState = import_state10.StateField.define({
|
|
2316
2451
|
return value;
|
2317
2452
|
}
|
2318
2453
|
});
|
2319
|
-
var styles3 =
|
2454
|
+
var styles3 = import_view13.EditorView.theme({
|
2320
2455
|
".cm-comment, .cm-comment-current": {
|
2321
2456
|
margin: "0 -3px",
|
2322
2457
|
padding: "3px",
|
@@ -2329,14 +2464,14 @@ var styles3 = import_view11.EditorView.theme({
|
|
2329
2464
|
textDecoration: "underline"
|
2330
2465
|
}
|
2331
2466
|
});
|
2332
|
-
var createCommentMark = (id, isCurrent) =>
|
2467
|
+
var createCommentMark = (id, isCurrent) => import_view13.Decoration.mark({
|
2333
2468
|
class: isCurrent ? "cm-comment-current" : "cm-comment",
|
2334
2469
|
attributes: {
|
2335
2470
|
"data-testid": "cm-comment",
|
2336
2471
|
"data-comment-id": id
|
2337
2472
|
}
|
2338
2473
|
});
|
2339
|
-
var commentsDecorations =
|
2474
|
+
var commentsDecorations = import_view13.EditorView.decorations.compute([
|
2340
2475
|
commentsState
|
2341
2476
|
], (state) => {
|
2342
2477
|
const { selection: { current }, comments: comments2 } = state.field(commentsState);
|
@@ -2356,10 +2491,10 @@ var commentsDecorations = import_view11.EditorView.decorations.compute([
|
|
2356
2491
|
const mark = createCommentMark(comment.comment.id, comment.comment.id === current);
|
2357
2492
|
return mark.range(range.from, range.to);
|
2358
2493
|
}).filter(import_util2.isNonNullable);
|
2359
|
-
return
|
2494
|
+
return import_view13.Decoration.set(decorations);
|
2360
2495
|
});
|
2361
|
-
var commentClickedEffect =
|
2362
|
-
var handleCommentClick =
|
2496
|
+
var commentClickedEffect = import_state11.StateEffect.define();
|
2497
|
+
var handleCommentClick = import_view13.EditorView.domEventHandlers({
|
2363
2498
|
click: (event, view) => {
|
2364
2499
|
let target = event.target;
|
2365
2500
|
const editorRoot = view.dom;
|
@@ -2398,7 +2533,7 @@ var trackPastedComments = (onUpdate) => {
|
|
2398
2533
|
}
|
2399
2534
|
};
|
2400
2535
|
return [
|
2401
|
-
|
2536
|
+
import_view13.EditorView.domEventHandlers({
|
2402
2537
|
cut: handleTrack,
|
2403
2538
|
copy: handleTrack
|
2404
2539
|
}),
|
@@ -2420,7 +2555,7 @@ var trackPastedComments = (onUpdate) => {
|
|
2420
2555
|
return effects;
|
2421
2556
|
}),
|
2422
2557
|
// Handle paste or the undo of comment deletion.
|
2423
|
-
|
2558
|
+
import_view13.EditorView.updateListener.of((update2) => {
|
2424
2559
|
const restore = [];
|
2425
2560
|
for (let i = 0; i < update2.transactions.length; i++) {
|
2426
2561
|
const tr = update2.transactions[i];
|
@@ -2476,7 +2611,7 @@ var mapTrackedComment = (comment, changes) => ({
|
|
2476
2611
|
from: changes.mapPos(comment.from, 1),
|
2477
2612
|
to: changes.mapPos(comment.to, 1)
|
2478
2613
|
});
|
2479
|
-
var restoreCommentEffect =
|
2614
|
+
var restoreCommentEffect = import_state11.StateEffect.define({
|
2480
2615
|
map: mapTrackedComment
|
2481
2616
|
});
|
2482
2617
|
var createComment2 = (view) => {
|
@@ -2521,7 +2656,7 @@ var comments = (options = {}) => {
|
|
2521
2656
|
//
|
2522
2657
|
// Keymap.
|
2523
2658
|
//
|
2524
|
-
options.onCreate &&
|
2659
|
+
options.onCreate && import_view13.keymap.of([
|
2525
2660
|
{
|
2526
2661
|
key: shortcut,
|
2527
2662
|
run: callbackWrapper(createComment2)
|
@@ -2531,7 +2666,7 @@ var comments = (options = {}) => {
|
|
2531
2666
|
// Hover tooltip (for key shortcut hints, etc.)
|
2532
2667
|
// TODO(burdon): Factor out to generic hints extension for current selection/line.
|
2533
2668
|
//
|
2534
|
-
options.onHover && (0,
|
2669
|
+
options.onHover && (0, import_view13.hoverTooltip)((view, pos) => {
|
2535
2670
|
const selection = view.state.selection.main;
|
2536
2671
|
if (selection && pos >= selection.from && pos <= selection.to) {
|
2537
2672
|
return {
|
@@ -2560,7 +2695,7 @@ var comments = (options = {}) => {
|
|
2560
2695
|
//
|
2561
2696
|
// Track deleted ranges and update ranges for decorations.
|
2562
2697
|
//
|
2563
|
-
|
2698
|
+
import_view13.EditorView.updateListener.of(({ view, state, changes }) => {
|
2564
2699
|
let mod = false;
|
2565
2700
|
const { comments: comments2, ...value } = state.field(commentsState);
|
2566
2701
|
changes.iterChanges((from, to, from2, to2) => {
|
@@ -2592,7 +2727,7 @@ var comments = (options = {}) => {
|
|
2592
2727
|
//
|
2593
2728
|
// Track selection/proximity.
|
2594
2729
|
//
|
2595
|
-
|
2730
|
+
import_view13.EditorView.updateListener.of(({ view, state }) => {
|
2596
2731
|
let min = Infinity;
|
2597
2732
|
const { selection: { current, closest }, comments: comments2 } = state.field(commentsState);
|
2598
2733
|
const { head } = state.selection.main;
|
@@ -2646,7 +2781,7 @@ var scrollThreadIntoView = (view, id, center = true) => {
|
|
2646
2781
|
anchor: range.from
|
2647
2782
|
} : void 0,
|
2648
2783
|
effects: [
|
2649
|
-
needsScroll ?
|
2784
|
+
needsScroll ? import_view13.EditorView.scrollIntoView(range.from, center ? {
|
2650
2785
|
y: "center"
|
2651
2786
|
} : void 0) : [],
|
2652
2787
|
needsSelectionUpdate ? setSelection.of({
|
@@ -2692,13 +2827,13 @@ var ExternalCommentSync = class {
|
|
2692
2827
|
this.unsubscribe = subscribe(updateComments);
|
2693
2828
|
}
|
2694
2829
|
};
|
2695
|
-
var createExternalCommentSync = (id, subscribe, getComments) =>
|
2830
|
+
var createExternalCommentSync = (id, subscribe, getComments) => import_view13.ViewPlugin.fromClass(class {
|
2696
2831
|
constructor(view) {
|
2697
2832
|
return new ExternalCommentSync(view, id, subscribe, getComments);
|
2698
2833
|
}
|
2699
2834
|
});
|
2700
2835
|
var useCommentState = (state) => {
|
2701
|
-
return (0, import_react4.useMemo)(() =>
|
2836
|
+
return (0, import_react4.useMemo)(() => import_view13.EditorView.updateListener.of((update2) => {
|
2702
2837
|
if (update2.docChanged || update2.selectionSet) {
|
2703
2838
|
state.comment = selectionOverlapsComment(update2.state);
|
2704
2839
|
state.selection = hasActiveSelection(update2.state);
|
@@ -2722,7 +2857,7 @@ var useComments = (view, id, comments2) => {
|
|
2722
2857
|
});
|
2723
2858
|
};
|
2724
2859
|
var useCommentClickListener = (onCommentClick) => {
|
2725
|
-
return (0, import_react4.useMemo)(() =>
|
2860
|
+
return (0, import_react4.useMemo)(() => import_view13.EditorView.updateListener.of((update2) => {
|
2726
2861
|
update2.transactions.forEach((transaction) => {
|
2727
2862
|
transaction.effects.forEach((effect) => {
|
2728
2863
|
if (effect.is(commentClickedEffect)) {
|
@@ -2735,15 +2870,15 @@ var useCommentClickListener = (onCommentClick) => {
|
|
2735
2870
|
]);
|
2736
2871
|
};
|
2737
2872
|
var debugNodeLogger = (log8 = console.log) => {
|
2738
|
-
const logTokens = (state) => (0,
|
2873
|
+
const logTokens = (state) => (0, import_language2.syntaxTree)(state).iterate({
|
2739
2874
|
enter: (node) => log8(node.type)
|
2740
2875
|
});
|
2741
|
-
return
|
2876
|
+
return import_state13.StateField.define({
|
2742
2877
|
create: (state) => logTokens(state),
|
2743
2878
|
update: (_, tr) => logTokens(tr.state)
|
2744
2879
|
});
|
2745
2880
|
};
|
2746
|
-
var styles4 =
|
2881
|
+
var styles4 = import_view15.EditorView.theme({
|
2747
2882
|
".cm-dropCursor": {
|
2748
2883
|
borderLeft: "2px solid var(--dx-accentText)",
|
2749
2884
|
color: "var(--dx-accentText)",
|
@@ -2756,8 +2891,8 @@ var styles4 = import_view13.EditorView.theme({
|
|
2756
2891
|
var dropFile = (options = {}) => {
|
2757
2892
|
return [
|
2758
2893
|
styles4,
|
2759
|
-
(0,
|
2760
|
-
|
2894
|
+
(0, import_view15.dropCursor)(),
|
2895
|
+
import_view15.EditorView.domEventHandlers({
|
2761
2896
|
drop: (event, view) => {
|
2762
2897
|
event.preventDefault();
|
2763
2898
|
const files = event.dataTransfer?.files;
|
@@ -2776,8 +2911,8 @@ var dropFile = (options = {}) => {
|
|
2776
2911
|
})
|
2777
2912
|
];
|
2778
2913
|
};
|
2779
|
-
var focusEffect =
|
2780
|
-
var focusField =
|
2914
|
+
var focusEffect = import_state15.StateEffect.define();
|
2915
|
+
var focusField = import_state15.StateField.define({
|
2781
2916
|
create: () => false,
|
2782
2917
|
update: (value, tr) => {
|
2783
2918
|
for (const effect of tr.effects) {
|
@@ -2790,7 +2925,7 @@ var focusField = import_state14.StateField.define({
|
|
2790
2925
|
});
|
2791
2926
|
var focus = [
|
2792
2927
|
focusField,
|
2793
|
-
|
2928
|
+
import_view17.EditorView.domEventHandlers({
|
2794
2929
|
focus: (event, view) => {
|
2795
2930
|
setTimeout(() => view.dispatch({
|
2796
2931
|
effects: focusEffect.of(true)
|
@@ -2804,13 +2939,12 @@ var focus = [
|
|
2804
2939
|
})
|
2805
2940
|
];
|
2806
2941
|
var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/factories.ts";
|
2807
|
-
var preventNewline =
|
2942
|
+
var preventNewline = import_state14.EditorState.transactionFilter.of((tr) => tr.newDoc.lines > 1 ? [] : tr);
|
2808
2943
|
var defaultBasicOptions = {
|
2809
2944
|
allowMultipleSelections: true,
|
2810
2945
|
bracketMatching: true,
|
2811
2946
|
closeBrackets: true,
|
2812
2947
|
drawSelection: true,
|
2813
|
-
editable: true,
|
2814
2948
|
focus: true,
|
2815
2949
|
history: true,
|
2816
2950
|
keymap: "standard",
|
@@ -2827,35 +2961,33 @@ var createBasicExtensions = (_props) => {
|
|
2827
2961
|
const props = (0, import_lodash4.default)({}, _props, defaultBasicOptions);
|
2828
2962
|
return [
|
2829
2963
|
// NOTE: Doesn't catch errors in keymap functions.
|
2830
|
-
|
2964
|
+
import_view16.EditorView.exceptionSink.of((err) => {
|
2831
2965
|
import_log5.log.catch(err, void 0, {
|
2832
2966
|
F: __dxlog_file8,
|
2833
|
-
L:
|
2967
|
+
L: 96,
|
2834
2968
|
S: void 0,
|
2835
2969
|
C: (f, a) => f(...a)
|
2836
2970
|
});
|
2837
2971
|
}),
|
2838
|
-
props.allowMultipleSelections &&
|
2839
|
-
props.bracketMatching && (0,
|
2972
|
+
props.allowMultipleSelections && import_state14.EditorState.allowMultipleSelections.of(true),
|
2973
|
+
props.bracketMatching && (0, import_language3.bracketMatching)(),
|
2840
2974
|
props.closeBrackets && (0, import_autocomplete2.closeBrackets)(),
|
2841
|
-
props.dropCursor && (0,
|
2842
|
-
props.drawSelection && (0,
|
2975
|
+
props.dropCursor && (0, import_view16.dropCursor)(),
|
2976
|
+
props.drawSelection && (0, import_view16.drawSelection)({
|
2843
2977
|
cursorBlinkRate: 1200
|
2844
2978
|
}),
|
2979
|
+
props.editable !== void 0 && import_view16.EditorView.editable.of(props.editable),
|
2845
2980
|
props.focus && focus,
|
2846
|
-
props.highlightActiveLine && (0,
|
2981
|
+
props.highlightActiveLine && (0, import_view16.highlightActiveLine)(),
|
2847
2982
|
props.history && (0, import_commands2.history)(),
|
2848
|
-
props.lineNumbers && (0,
|
2849
|
-
props.lineWrapping &&
|
2850
|
-
props.placeholder && (0,
|
2851
|
-
props.
|
2852
|
-
|
2853
|
-
|
2854
|
-
],
|
2855
|
-
props.scrollPastEnd && (0, import_view14.scrollPastEnd)(),
|
2856
|
-
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),
|
2857
2989
|
// https://codemirror.net/docs/ref/#view.KeyBinding
|
2858
|
-
|
2990
|
+
import_view16.keymap.of([
|
2859
2991
|
...(props.keymap && keymaps[props.keymap]) ?? [],
|
2860
2992
|
// NOTE: Tabs are also configured by markdown extension.
|
2861
2993
|
// https://codemirror.net/docs/ref/#commands.indentWithTab
|
@@ -2886,14 +3018,14 @@ var defaultThemeSlots = {
|
|
2886
3018
|
var createThemeExtensions = ({ themeMode, styles: styles5, syntaxHighlighting: _syntaxHighlighting, slots: _slots } = {}) => {
|
2887
3019
|
const slots = (0, import_lodash4.default)({}, _slots, defaultThemeSlots);
|
2888
3020
|
return [
|
2889
|
-
|
2890
|
-
|
3021
|
+
import_view16.EditorView.darkTheme.of(themeMode === "dark"),
|
3022
|
+
import_view16.EditorView.baseTheme(styles5 ? (0, import_lodash5.default)({}, defaultTheme, styles5) : defaultTheme),
|
2891
3023
|
// https://github.com/codemirror/theme-one-dark
|
2892
|
-
_syntaxHighlighting && (themeMode === "dark" ? (0,
|
2893
|
-
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({
|
2894
3026
|
class: slots.editor.className
|
2895
3027
|
}),
|
2896
|
-
slots.content?.className &&
|
3028
|
+
slots.content?.className && import_view16.EditorView.contentAttributes.of({
|
2897
3029
|
class: slots.content.className
|
2898
3030
|
})
|
2899
3031
|
].filter(import_util4.isNotFalsy);
|
@@ -2920,12 +3052,12 @@ var createDataExtensions = ({ id, text, space, identity }) => {
|
|
2920
3052
|
return extensions;
|
2921
3053
|
};
|
2922
3054
|
var folding = (_props = {}) => [
|
2923
|
-
(0,
|
3055
|
+
(0, import_language4.codeFolding)({
|
2924
3056
|
placeholderDOM: () => {
|
2925
3057
|
return document.createElement("span");
|
2926
3058
|
}
|
2927
3059
|
}),
|
2928
|
-
(0,
|
3060
|
+
(0, import_language4.foldGutter)({
|
2929
3061
|
markerDOM: (open) => {
|
2930
3062
|
const el = createElement("div", {
|
2931
3063
|
className: "flex h-full items-center"
|
@@ -2940,7 +3072,7 @@ var folding = (_props = {}) => [
|
|
2940
3072
|
}));
|
2941
3073
|
}
|
2942
3074
|
}),
|
2943
|
-
|
3075
|
+
import_view18.EditorView.theme({
|
2944
3076
|
".cm-foldGutter": {
|
2945
3077
|
opacity: 0.3,
|
2946
3078
|
transition: "opacity 0.3s",
|
@@ -2953,11 +3085,11 @@ var folding = (_props = {}) => [
|
|
2953
3085
|
];
|
2954
3086
|
var listener = ({ onFocus, onChange }) => {
|
2955
3087
|
const extensions = [];
|
2956
|
-
onFocus && extensions.push(
|
3088
|
+
onFocus && extensions.push(import_view19.EditorView.focusChangeEffect.of((_, focusing) => {
|
2957
3089
|
onFocus(focusing);
|
2958
3090
|
return null;
|
2959
3091
|
}));
|
2960
|
-
onChange && extensions.push(
|
3092
|
+
onChange && extensions.push(import_view19.EditorView.updateListener.of((update2) => {
|
2961
3093
|
onChange(update2.state.doc.toString(), update2.state.facet(documentId));
|
2962
3094
|
}));
|
2963
3095
|
return extensions;
|
@@ -2983,7 +3115,7 @@ var setHeading = (level) => {
|
|
2983
3115
|
let prevBlock = -1;
|
2984
3116
|
for (const range of ranges) {
|
2985
3117
|
let sawBlock = false;
|
2986
|
-
(0,
|
3118
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
2987
3119
|
from: range.from,
|
2988
3120
|
to: range.to,
|
2989
3121
|
enter: (node) => {
|
@@ -3080,7 +3212,7 @@ var setStyle = (type, enable) => {
|
|
3080
3212
|
to: range.head + found + marker.length
|
3081
3213
|
}
|
3082
3214
|
],
|
3083
|
-
range:
|
3215
|
+
range: import_state16.EditorSelection.cursor(range.from - marker.length)
|
3084
3216
|
};
|
3085
3217
|
}
|
3086
3218
|
}
|
@@ -3092,7 +3224,7 @@ var setStyle = (type, enable) => {
|
|
3092
3224
|
let startCovered = false;
|
3093
3225
|
let endCovered = false;
|
3094
3226
|
let { from, to } = range;
|
3095
|
-
(0,
|
3227
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3096
3228
|
from,
|
3097
3229
|
to,
|
3098
3230
|
enter: (node) => {
|
@@ -3208,13 +3340,13 @@ var setStyle = (type, enable) => {
|
|
3208
3340
|
from: range.head,
|
3209
3341
|
insert: marker + marker
|
3210
3342
|
},
|
3211
|
-
range:
|
3343
|
+
range: import_state16.EditorSelection.cursor(range.head + marker.length)
|
3212
3344
|
};
|
3213
3345
|
}
|
3214
3346
|
const changeSet = state.changes(changes2.concat(changesAtEnd));
|
3215
3347
|
return {
|
3216
3348
|
changes: changeSet,
|
3217
|
-
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))
|
3218
3350
|
};
|
3219
3351
|
});
|
3220
3352
|
dispatch(state.update(changes, {
|
@@ -3295,7 +3427,7 @@ var insertTable = (view) => {
|
|
3295
3427
|
snippets.table(view, null, from, from);
|
3296
3428
|
};
|
3297
3429
|
var removeLinkInner = (from, to, changes, state) => {
|
3298
|
-
(0,
|
3430
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3299
3431
|
from,
|
3300
3432
|
to,
|
3301
3433
|
enter: (node) => {
|
@@ -3340,7 +3472,7 @@ var addLink = ({ url, image: image2 } = {}) => {
|
|
3340
3472
|
let { from, to } = range;
|
3341
3473
|
const cutStyles = [];
|
3342
3474
|
let okay = null;
|
3343
|
-
(0,
|
3475
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3344
3476
|
from,
|
3345
3477
|
to,
|
3346
3478
|
enter: (node) => {
|
@@ -3414,7 +3546,7 @@ var addLink = ({ url, image: image2 } = {}) => {
|
|
3414
3546
|
const changeSet = state.changes(changes2.concat(changesAfter));
|
3415
3547
|
return {
|
3416
3548
|
changes: changeSet,
|
3417
|
-
range:
|
3549
|
+
range: import_state16.EditorSelection.cursor(changeSet.mapPos(to, 1) - cursorOffset - (url ? url.length + 2 : 0))
|
3418
3550
|
};
|
3419
3551
|
});
|
3420
3552
|
if (changes.changes.empty) {
|
@@ -3435,7 +3567,7 @@ var addList = (type) => {
|
|
3435
3567
|
let parentColumn = null;
|
3436
3568
|
const blocks = [];
|
3437
3569
|
for (const { from, to } of state.selection.ranges) {
|
3438
|
-
(0,
|
3570
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3439
3571
|
from,
|
3440
3572
|
to,
|
3441
3573
|
enter: (node) => {
|
@@ -3570,7 +3702,7 @@ var removeList = (type) => {
|
|
3570
3702
|
const stack = [];
|
3571
3703
|
const targetNodeType = type === 0 ? "OrderedList" : type === 1 ? "BulletList" : "TaskList";
|
3572
3704
|
for (const { from, to } of state.selection.ranges) {
|
3573
|
-
(0,
|
3705
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3574
3706
|
from,
|
3575
3707
|
to,
|
3576
3708
|
enter: (node) => {
|
@@ -3657,7 +3789,7 @@ var setBlockquote = (enable) => {
|
|
3657
3789
|
let lastBlock = -1;
|
3658
3790
|
for (const { from, to } of state.selection.ranges) {
|
3659
3791
|
const sawBlock = false;
|
3660
|
-
(0,
|
3792
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3661
3793
|
from,
|
3662
3794
|
to,
|
3663
3795
|
enter: (node) => {
|
@@ -3747,7 +3879,7 @@ var addCodeblock = (target) => {
|
|
3747
3879
|
for (const { from, to } of selection.ranges) {
|
3748
3880
|
let blockFrom = from;
|
3749
3881
|
let blockTo = to;
|
3750
|
-
(0,
|
3882
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3751
3883
|
from,
|
3752
3884
|
to,
|
3753
3885
|
enter: (node) => {
|
@@ -3798,7 +3930,7 @@ var removeCodeblock = ({ state, dispatch }) => {
|
|
3798
3930
|
let lastBlock = -1;
|
3799
3931
|
const changes = [];
|
3800
3932
|
for (const { from, to } of state.selection.ranges) {
|
3801
|
-
(0,
|
3933
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3802
3934
|
from,
|
3803
3935
|
to,
|
3804
3936
|
enter: (node) => {
|
@@ -3848,7 +3980,7 @@ var toggleCodeblock = (target) => {
|
|
3848
3980
|
};
|
3849
3981
|
var formattingKeymap = (_options = {}) => {
|
3850
3982
|
return [
|
3851
|
-
|
3983
|
+
import_view20.keymap.of([
|
3852
3984
|
{
|
3853
3985
|
key: "meta-b",
|
3854
3986
|
run: toggleStrong
|
@@ -3960,7 +4092,7 @@ var getFormatting = (state) => {
|
|
3960
4092
|
}
|
3961
4093
|
}
|
3962
4094
|
}
|
3963
|
-
(0,
|
4095
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3964
4096
|
from: range.from,
|
3965
4097
|
to: range.to,
|
3966
4098
|
enter: (node) => {
|
@@ -4049,7 +4181,7 @@ var getFormatting = (state) => {
|
|
4049
4181
|
};
|
4050
4182
|
};
|
4051
4183
|
var useFormattingState = (state) => {
|
4052
|
-
return (0, import_react6.useMemo)(() =>
|
4184
|
+
return (0, import_react6.useMemo)(() => import_view20.EditorView.updateListener.of((update2) => {
|
4053
4185
|
if (update2.docChanged || update2.selectionSet) {
|
4054
4186
|
Object.entries(getFormatting(update2.state)).forEach(([key, active]) => {
|
4055
4187
|
state[key] = active;
|
@@ -4136,7 +4268,7 @@ var markdownTagsExtensions = [
|
|
4136
4268
|
}
|
4137
4269
|
];
|
4138
4270
|
var markdownHighlightStyle = (_options = {}) => {
|
4139
|
-
return
|
4271
|
+
return import_language7.HighlightStyle.define([
|
4140
4272
|
{
|
4141
4273
|
tag: [
|
4142
4274
|
import_highlight2.tags.keyword,
|
@@ -4300,8 +4432,8 @@ var createMarkdownExtensions = ({ themeMode } = {}) => {
|
|
4300
4432
|
]
|
4301
4433
|
}),
|
4302
4434
|
// Custom styles.
|
4303
|
-
(0,
|
4304
|
-
|
4435
|
+
(0, import_language6.syntaxHighlighting)(markdownHighlightStyle()),
|
4436
|
+
import_view21.keymap.of([
|
4305
4437
|
// https://codemirror.net/docs/ref/#commands.indentWithTab
|
4306
4438
|
import_commands3.indentWithTab,
|
4307
4439
|
// https://codemirror.net/docs/ref/#commands.defaultKeymap
|
@@ -4311,7 +4443,7 @@ var createMarkdownExtensions = ({ themeMode } = {}) => {
|
|
4311
4443
|
])
|
4312
4444
|
];
|
4313
4445
|
};
|
4314
|
-
var debugTree = (cb) =>
|
4446
|
+
var debugTree = (cb) => import_state17.StateField.define({
|
4315
4447
|
create: (state) => cb(convertTreeToJson(state)),
|
4316
4448
|
update: (value, tr) => cb(convertTreeToJson(tr.state))
|
4317
4449
|
});
|
@@ -4332,15 +4464,15 @@ var convertTreeToJson = (state) => {
|
|
4332
4464
|
}
|
4333
4465
|
return node;
|
4334
4466
|
};
|
4335
|
-
return treeToJson((0,
|
4467
|
+
return treeToJson((0, import_language8.syntaxTree)(state).cursor());
|
4336
4468
|
};
|
4337
4469
|
var adjustChanges = () => {
|
4338
|
-
return
|
4470
|
+
return import_view23.ViewPlugin.fromClass(class {
|
4339
4471
|
update(update2) {
|
4340
|
-
const tree = (0,
|
4472
|
+
const tree = (0, import_language10.syntaxTree)(update2.state);
|
4341
4473
|
const adjustments = [];
|
4342
4474
|
for (const tr of update2.transactions) {
|
4343
|
-
const event = tr.annotation(
|
4475
|
+
const event = tr.annotation(import_state19.Transaction.userEvent);
|
4344
4476
|
switch (event) {
|
4345
4477
|
//
|
4346
4478
|
// Enter
|
@@ -4475,9 +4607,9 @@ var getValidUrl = (str) => {
|
|
4475
4607
|
};
|
4476
4608
|
var image = (_options = {}) => {
|
4477
4609
|
return [
|
4478
|
-
|
4610
|
+
import_state20.StateField.define({
|
4479
4611
|
create: (state) => {
|
4480
|
-
return
|
4612
|
+
return import_view24.Decoration.set(buildDecorations2(0, state.doc.length, state));
|
4481
4613
|
},
|
4482
4614
|
update: (value, tr) => {
|
4483
4615
|
if (!tr.docChanged && !tr.selection) {
|
@@ -4497,10 +4629,10 @@ var image = (_options = {}) => {
|
|
4497
4629
|
filterFrom: from,
|
4498
4630
|
filterTo: to,
|
4499
4631
|
filter: () => false,
|
4500
|
-
add:
|
4632
|
+
add: buildDecorations2(from, to, tr.state)
|
4501
4633
|
});
|
4502
4634
|
},
|
4503
|
-
provide: (field) =>
|
4635
|
+
provide: (field) => import_view24.EditorView.decorations.from(field)
|
4504
4636
|
})
|
4505
4637
|
];
|
4506
4638
|
};
|
@@ -4512,10 +4644,10 @@ var preloadImage = (url) => {
|
|
4512
4644
|
preloaded.add(url);
|
4513
4645
|
}
|
4514
4646
|
};
|
4515
|
-
var
|
4647
|
+
var buildDecorations2 = (from, to, state) => {
|
4516
4648
|
const decorations = [];
|
4517
4649
|
const cursor = state.selection.main.head;
|
4518
|
-
(0,
|
4650
|
+
(0, import_language11.syntaxTree)(state).iterate({
|
4519
4651
|
enter: (node) => {
|
4520
4652
|
if (node.name === "Image") {
|
4521
4653
|
const urlNode = node.node.getChild("URL");
|
@@ -4526,7 +4658,7 @@ var buildDecorations = (from, to, state) => {
|
|
4526
4658
|
return;
|
4527
4659
|
}
|
4528
4660
|
preloadImage(url);
|
4529
|
-
decorations.push(
|
4661
|
+
decorations.push(import_view24.Decoration.replace({
|
4530
4662
|
block: true,
|
4531
4663
|
widget: new ImageWidget(url)
|
4532
4664
|
}).range(hide2 ? node.from : node.to, node.to));
|
@@ -4538,7 +4670,7 @@ var buildDecorations = (from, to, state) => {
|
|
4538
4670
|
});
|
4539
4671
|
return decorations;
|
4540
4672
|
};
|
4541
|
-
var ImageWidget = class extends
|
4673
|
+
var ImageWidget = class extends import_view24.WidgetType {
|
4542
4674
|
constructor(_url) {
|
4543
4675
|
super();
|
4544
4676
|
this._url = _url;
|
@@ -4560,7 +4692,7 @@ var ImageWidget = class extends import_view22.WidgetType {
|
|
4560
4692
|
};
|
4561
4693
|
var bulletListIndentationWidth = 24;
|
4562
4694
|
var orderedListIndentationWidth = 36;
|
4563
|
-
var formattingStyles =
|
4695
|
+
var formattingStyles = import_view25.EditorView.theme({
|
4564
4696
|
/**
|
4565
4697
|
* Horizontal rule.
|
4566
4698
|
*/
|
@@ -4678,14 +4810,14 @@ var formattingStyles = import_view23.EditorView.theme({
|
|
4678
4810
|
}
|
4679
4811
|
});
|
4680
4812
|
var table = (options = {}) => {
|
4681
|
-
return
|
4813
|
+
return import_state21.StateField.define({
|
4682
4814
|
create: (state) => update(state, options),
|
4683
4815
|
update: (_, tr) => update(tr.state, options),
|
4684
|
-
provide: (field) =>
|
4816
|
+
provide: (field) => import_view26.EditorView.decorations.from(field)
|
4685
4817
|
});
|
4686
4818
|
};
|
4687
4819
|
var update = (state, _options) => {
|
4688
|
-
const builder = new
|
4820
|
+
const builder = new import_state21.RangeSetBuilder();
|
4689
4821
|
const cursor = state.selection.main.head;
|
4690
4822
|
const tables = [];
|
4691
4823
|
const getTable = () => tables[tables.length - 1];
|
@@ -4693,7 +4825,7 @@ var update = (state, _options) => {
|
|
4693
4825
|
const table2 = getTable();
|
4694
4826
|
return table2.rows?.[table2.rows.length - 1];
|
4695
4827
|
};
|
4696
|
-
(0,
|
4828
|
+
(0, import_language12.syntaxTree)(state).iterate({
|
4697
4829
|
enter: (node) => {
|
4698
4830
|
switch (node.name) {
|
4699
4831
|
case "Table": {
|
@@ -4726,19 +4858,19 @@ var update = (state, _options) => {
|
|
4726
4858
|
tables.forEach((table2) => {
|
4727
4859
|
const replace = state.readOnly || cursor < table2.from || cursor > table2.to;
|
4728
4860
|
if (replace) {
|
4729
|
-
builder.add(table2.from, table2.to,
|
4861
|
+
builder.add(table2.from, table2.to, import_view26.Decoration.replace({
|
4730
4862
|
block: true,
|
4731
4863
|
widget: new TableWidget(table2)
|
4732
4864
|
}));
|
4733
4865
|
} else {
|
4734
|
-
builder.add(table2.from, table2.to,
|
4866
|
+
builder.add(table2.from, table2.to, import_view26.Decoration.mark({
|
4735
4867
|
class: "cm-table"
|
4736
4868
|
}));
|
4737
4869
|
}
|
4738
4870
|
});
|
4739
4871
|
return builder.finish();
|
4740
4872
|
};
|
4741
|
-
var TableWidget = class extends
|
4873
|
+
var TableWidget = class extends import_view26.WidgetType {
|
4742
4874
|
constructor(_table) {
|
4743
4875
|
super();
|
4744
4876
|
this._table = _table;
|
@@ -4778,14 +4910,14 @@ var Unicode = {
|
|
4778
4910
|
bulletSmall: "\u2219",
|
4779
4911
|
bulletSquare: "\u2B1D"
|
4780
4912
|
};
|
4781
|
-
var HorizontalRuleWidget = class extends
|
4913
|
+
var HorizontalRuleWidget = class extends import_view22.WidgetType {
|
4782
4914
|
toDOM() {
|
4783
4915
|
const el = document.createElement("span");
|
4784
4916
|
el.className = "cm-hr";
|
4785
4917
|
return el;
|
4786
4918
|
}
|
4787
4919
|
};
|
4788
|
-
var LinkButton = class extends
|
4920
|
+
var LinkButton = class extends import_view22.WidgetType {
|
4789
4921
|
constructor(url, render) {
|
4790
4922
|
super();
|
4791
4923
|
this.url = url;
|
@@ -4801,7 +4933,7 @@ var LinkButton = class extends import_view20.WidgetType {
|
|
4801
4933
|
return el;
|
4802
4934
|
}
|
4803
4935
|
};
|
4804
|
-
var CheckboxWidget = class extends
|
4936
|
+
var CheckboxWidget = class extends import_view22.WidgetType {
|
4805
4937
|
constructor(_checked) {
|
4806
4938
|
super();
|
4807
4939
|
this._checked = _checked;
|
@@ -4846,7 +4978,7 @@ var CheckboxWidget = class extends import_view20.WidgetType {
|
|
4846
4978
|
return false;
|
4847
4979
|
}
|
4848
4980
|
};
|
4849
|
-
var TextWidget = class extends
|
4981
|
+
var TextWidget = class extends import_view22.WidgetType {
|
4850
4982
|
constructor(text, className) {
|
4851
4983
|
super();
|
4852
4984
|
this.text = text;
|
@@ -4861,29 +4993,29 @@ var TextWidget = class extends import_view20.WidgetType {
|
|
4861
4993
|
return el;
|
4862
4994
|
}
|
4863
4995
|
};
|
4864
|
-
var hide =
|
4865
|
-
var blockQuote =
|
4996
|
+
var hide = import_view22.Decoration.replace({});
|
4997
|
+
var blockQuote = import_view22.Decoration.line({
|
4866
4998
|
class: (0, import_react_ui_theme7.mx)("cm-blockquote")
|
4867
4999
|
});
|
4868
|
-
var fencedCodeLine =
|
5000
|
+
var fencedCodeLine = import_view22.Decoration.line({
|
4869
5001
|
class: (0, import_react_ui_theme7.mx)("cm-code cm-codeblock-line")
|
4870
5002
|
});
|
4871
|
-
var fencedCodeLineFirst =
|
5003
|
+
var fencedCodeLineFirst = import_view22.Decoration.line({
|
4872
5004
|
class: (0, import_react_ui_theme7.mx)("cm-code cm-codeblock-line", "cm-codeblock-first")
|
4873
5005
|
});
|
4874
|
-
var fencedCodeLineLast =
|
5006
|
+
var fencedCodeLineLast = import_view22.Decoration.line({
|
4875
5007
|
class: (0, import_react_ui_theme7.mx)("cm-code cm-codeblock-line", "cm-codeblock-last")
|
4876
5008
|
});
|
4877
5009
|
var commentBlockLine = fencedCodeLine;
|
4878
5010
|
var commentBlockLineFirst = fencedCodeLineFirst;
|
4879
5011
|
var commentBlockLineLast = fencedCodeLineLast;
|
4880
|
-
var horizontalRule =
|
5012
|
+
var horizontalRule = import_view22.Decoration.replace({
|
4881
5013
|
widget: new HorizontalRuleWidget()
|
4882
5014
|
});
|
4883
|
-
var checkedTask =
|
5015
|
+
var checkedTask = import_view22.Decoration.replace({
|
4884
5016
|
widget: new CheckboxWidget(true)
|
4885
5017
|
});
|
4886
|
-
var uncheckedTask =
|
5018
|
+
var uncheckedTask = import_view22.Decoration.replace({
|
4887
5019
|
widget: new CheckboxWidget(false)
|
4888
5020
|
});
|
4889
5021
|
var editingRange = (state, range, focus2) => {
|
@@ -4898,9 +5030,9 @@ var autoHideTags = /* @__PURE__ */ new Set([
|
|
4898
5030
|
"SubscriptMark",
|
4899
5031
|
"SuperscriptMark"
|
4900
5032
|
]);
|
4901
|
-
var
|
4902
|
-
const deco = new
|
4903
|
-
const atomicDeco = new
|
5033
|
+
var buildDecorations3 = (view, options, focus2) => {
|
5034
|
+
const deco = new import_state18.RangeSetBuilder();
|
5035
|
+
const atomicDeco = new import_state18.RangeSetBuilder();
|
4904
5036
|
const { state } = view;
|
4905
5037
|
const headerLevels = [];
|
4906
5038
|
const getHeaderLevels = (node, level) => {
|
@@ -4987,7 +5119,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
4987
5119
|
} else {
|
4988
5120
|
const num = headers.slice(from - 1).map((level2) => level2?.number ?? 0).join(".") + " ";
|
4989
5121
|
if (num.length) {
|
4990
|
-
atomicDeco.add(mark.from, mark.from + len,
|
5122
|
+
atomicDeco.add(mark.from, mark.from + len, import_view22.Decoration.replace({
|
4991
5123
|
widget: new TextWidget(num, theme.heading(level))
|
4992
5124
|
}));
|
4993
5125
|
}
|
@@ -5012,7 +5144,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5012
5144
|
if (node.from === line.to - 1) {
|
5013
5145
|
return false;
|
5014
5146
|
}
|
5015
|
-
deco.add(line.from, line.from,
|
5147
|
+
deco.add(line.from, line.from, import_view22.Decoration.line({
|
5016
5148
|
class: "cm-list-item",
|
5017
5149
|
attributes: {
|
5018
5150
|
style: `padding-left: ${offset}px; text-indent: -${width}px;`
|
@@ -5029,7 +5161,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5029
5161
|
const label = list.type === "OrderedList" ? `${++list.number}.` : Unicode.bulletSmall;
|
5030
5162
|
const line = state.doc.lineAt(node.from);
|
5031
5163
|
const to = state.doc.sliceString(node.to, node.to + 1) === " " ? node.to + 1 : node.to;
|
5032
|
-
atomicDeco.add(line.from, to,
|
5164
|
+
atomicDeco.add(line.from, to, import_view22.Decoration.replace({
|
5033
5165
|
widget: new TextWidget(label, list.type === "OrderedList" ? "cm-list-mark cm-list-mark-ordered" : "cm-list-mark cm-list-mark-bullet")
|
5034
5166
|
}));
|
5035
5167
|
break;
|
@@ -5116,7 +5248,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5116
5248
|
if (!editing) {
|
5117
5249
|
atomicDeco.add(node.from, marks[0].to, hide);
|
5118
5250
|
}
|
5119
|
-
deco.add(marks[0].to, marks[1].from,
|
5251
|
+
deco.add(marks[0].to, marks[1].from, import_view22.Decoration.mark({
|
5120
5252
|
tagName: "a",
|
5121
5253
|
attributes: {
|
5122
5254
|
class: "cm-link",
|
@@ -5126,7 +5258,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5126
5258
|
}
|
5127
5259
|
}));
|
5128
5260
|
if (!editing) {
|
5129
|
-
atomicDeco.add(marks[1].from, node.to, options.renderLinkButton ?
|
5261
|
+
atomicDeco.add(marks[1].from, node.to, options.renderLinkButton ? import_view22.Decoration.replace({
|
5130
5262
|
widget: new LinkButton(url, options.renderLinkButton)
|
5131
5263
|
}) : hide);
|
5132
5264
|
}
|
@@ -5160,7 +5292,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5160
5292
|
}
|
5161
5293
|
}
|
5162
5294
|
};
|
5163
|
-
const tree = (0,
|
5295
|
+
const tree = (0, import_language9.syntaxTree)(state);
|
5164
5296
|
if (options.numberedHeadings?.from === void 0) {
|
5165
5297
|
for (const { from, to } of view.visibleRanges) {
|
5166
5298
|
tree.iterate({
|
@@ -5181,16 +5313,16 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5181
5313
|
atomicDeco: atomicDeco.finish()
|
5182
5314
|
};
|
5183
5315
|
};
|
5184
|
-
var forceUpdate =
|
5316
|
+
var forceUpdate = import_state18.StateEffect.define();
|
5185
5317
|
var decorateMarkdown = (options = {}) => {
|
5186
5318
|
return [
|
5187
|
-
|
5319
|
+
import_view22.ViewPlugin.fromClass(class {
|
5188
5320
|
constructor(view) {
|
5189
|
-
({ deco: this.deco, atomicDeco: this.atomicDeco } =
|
5321
|
+
({ deco: this.deco, atomicDeco: this.atomicDeco } = buildDecorations3(view, options, view.hasFocus));
|
5190
5322
|
}
|
5191
5323
|
update(update2) {
|
5192
5324
|
if (update2.docChanged || update2.viewportChanged || update2.focusChanged || update2.transactions.some((tr) => tr.effects.some((effect) => effect.is(forceUpdate))) || update2.selectionSet && !options.selectionChangeDelay) {
|
5193
|
-
({ deco: this.deco, atomicDeco: this.atomicDeco } =
|
5325
|
+
({ deco: this.deco, atomicDeco: this.atomicDeco } = buildDecorations3(update2.view, options, update2.view.hasFocus));
|
5194
5326
|
this.clearUpdate();
|
5195
5327
|
} else if (update2.selectionSet) {
|
5196
5328
|
this.scheduleUpdate(update2.view);
|
@@ -5216,9 +5348,9 @@ var decorateMarkdown = (options = {}) => {
|
|
5216
5348
|
}
|
5217
5349
|
}, {
|
5218
5350
|
provide: (plugin) => [
|
5219
|
-
|
5220
|
-
|
5221
|
-
|
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)
|
5222
5354
|
]
|
5223
5355
|
}),
|
5224
5356
|
image(),
|
@@ -5228,8 +5360,8 @@ var decorateMarkdown = (options = {}) => {
|
|
5228
5360
|
];
|
5229
5361
|
};
|
5230
5362
|
var linkTooltip = (render) => {
|
5231
|
-
return (0,
|
5232
|
-
const syntax = (0,
|
5363
|
+
return (0, import_view27.hoverTooltip)((view, pos, side) => {
|
5364
|
+
const syntax = (0, import_language13.syntaxTree)(view.state).resolveInner(pos, side);
|
5233
5365
|
let link = null;
|
5234
5366
|
for (let i = 0, node = syntax; !link && node && i < 5; node = node.parent, i++) {
|
5235
5367
|
link = node.name === "Link" ? node : null;
|
@@ -5312,7 +5444,7 @@ var InputModeExtensions = {
|
|
5312
5444
|
editorInputMode.of({
|
5313
5445
|
type: "vscode"
|
5314
5446
|
}),
|
5315
|
-
|
5447
|
+
import_view28.keymap.of(import_codemirror_vscode_keymap.vscodeKeymap)
|
5316
5448
|
],
|
5317
5449
|
vim: [
|
5318
5450
|
// https://github.com/replit/codemirror-vim
|
@@ -5321,7 +5453,7 @@ var InputModeExtensions = {
|
|
5321
5453
|
type: "vim",
|
5322
5454
|
noTabster: true
|
5323
5455
|
}),
|
5324
|
-
|
5456
|
+
import_view28.keymap.of([
|
5325
5457
|
{
|
5326
5458
|
key: "Alt-Escape",
|
5327
5459
|
run: (view) => {
|
@@ -5341,7 +5473,7 @@ var typewriter = ({ delay = 75, items = defaultItems } = {}) => {
|
|
5341
5473
|
let t;
|
5342
5474
|
let idx = 0;
|
5343
5475
|
return [
|
5344
|
-
|
5476
|
+
import_view29.keymap.of([
|
5345
5477
|
{
|
5346
5478
|
// Reset.
|
5347
5479
|
key: "alt-meta-'",
|
@@ -5423,14 +5555,14 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5423
5555
|
anchor
|
5424
5556
|
};
|
5425
5557
|
}
|
5426
|
-
const state =
|
5558
|
+
const state = import_state22.EditorState.create({
|
5427
5559
|
doc: initialValue,
|
5428
5560
|
// selection: initialSelection,
|
5429
5561
|
extensions: [
|
5430
5562
|
id && documentId.of(id),
|
5431
5563
|
extensions,
|
5432
5564
|
// NOTE: This doesn't catch errors in keymap functions.
|
5433
|
-
|
5565
|
+
import_view30.EditorView.exceptionSink.of((err) => {
|
5434
5566
|
import_log7.log.catch(err, void 0, {
|
5435
5567
|
F: __dxlog_file11,
|
5436
5568
|
L: 97,
|
@@ -5440,10 +5572,10 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5440
5572
|
})
|
5441
5573
|
].filter(import_util5.isNotFalsy)
|
5442
5574
|
});
|
5443
|
-
view2 = new
|
5575
|
+
view2 = new import_view30.EditorView({
|
5444
5576
|
parent: parentRef.current,
|
5445
5577
|
state,
|
5446
|
-
scrollTo: scrollTo ?
|
5578
|
+
scrollTo: scrollTo ? import_view30.EditorView.scrollIntoView(scrollTo, {
|
5447
5579
|
yMargin: 96
|
5448
5580
|
}) : void 0,
|
5449
5581
|
dispatchTransactions: debug ? debugDispatcher : void 0
|