flexdesk 0.17.5 → 0.17.7
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/CHANGELOG.md +36 -0
- package/LICENSE +0 -0
- package/README.md +0 -0
- package/THIRD_PARTY_LICENSES.md +0 -0
- package/canvas.js +0 -0
- package/charts.js +0 -0
- package/core.js +0 -0
- package/css/base.css +68 -0
- package/css/flexdesk.css +68 -0
- package/css/overrides.css +0 -0
- package/css/reset.css +0 -0
- package/css/tokens.css +11 -0
- package/dist/canvas.js +0 -0
- package/dist/canvas.js.map +0 -0
- package/dist/charts.js +0 -0
- package/dist/charts.js.map +0 -0
- package/dist/chunk-3PHCPZHT.js +0 -0
- package/dist/chunk-3PHCPZHT.js.map +0 -0
- package/dist/chunk-CVMCZZX2.js +0 -0
- package/dist/chunk-CVMCZZX2.js.map +0 -0
- package/dist/chunk-D3COLZZ2.js +0 -0
- package/dist/chunk-D3COLZZ2.js.map +0 -0
- package/dist/chunk-FOOS3T5L.js +0 -0
- package/dist/chunk-FOOS3T5L.js.map +0 -0
- package/dist/chunk-GOQLR5WR.js +0 -0
- package/dist/chunk-GOQLR5WR.js.map +0 -0
- package/dist/chunk-HNU6MM2B.js +0 -0
- package/dist/chunk-HNU6MM2B.js.map +0 -0
- package/dist/chunk-HYJYYEPK.js +0 -0
- package/dist/chunk-HYJYYEPK.js.map +0 -0
- package/dist/chunk-JKZLNKG6.js +0 -0
- package/dist/chunk-JKZLNKG6.js.map +0 -0
- package/dist/chunk-JYWURG5T.js +0 -0
- package/dist/chunk-JYWURG5T.js.map +0 -0
- package/dist/chunk-LWV23YVE.js +0 -0
- package/dist/chunk-LWV23YVE.js.map +0 -0
- package/dist/chunk-N7HC3ADV.js +0 -0
- package/dist/chunk-N7HC3ADV.js.map +0 -0
- package/dist/chunk-RKNFBX5K.js +0 -0
- package/dist/chunk-RKNFBX5K.js.map +0 -0
- package/dist/chunk-RMTRWWEO.js +0 -0
- package/dist/chunk-RMTRWWEO.js.map +0 -0
- package/dist/chunk-UURZ37SD.js +0 -0
- package/dist/chunk-UURZ37SD.js.map +0 -0
- package/dist/chunk-UWO43BZU.js +0 -0
- package/dist/chunk-UWO43BZU.js.map +0 -0
- package/dist/chunk-WVFGV5FT.js +0 -0
- package/dist/chunk-WVFGV5FT.js.map +0 -0
- package/dist/core.js +0 -0
- package/dist/core.js.map +0 -0
- package/dist/editor.js +12 -0
- package/dist/editor.js.map +2 -2
- package/dist/flexdesk.css +68 -0
- package/dist/flow.js +0 -0
- package/dist/flow.js.map +0 -0
- package/dist/host.js +0 -0
- package/dist/host.js.map +0 -0
- package/dist/reset.css +0 -0
- package/dist/tile_registry-6WZPTUZV.js +0 -0
- package/dist/tile_registry-6WZPTUZV.js.map +0 -0
- package/dist/tiles.js +0 -0
- package/dist/tiles.js.map +0 -0
- package/dist/tokens.css +11 -0
- package/dist/widgets.js +0 -0
- package/dist/widgets.js.map +0 -0
- package/dist/wm.js +0 -0
- package/dist/wm.js.map +0 -0
- package/docs/README.md +0 -0
- package/docs/best-practices.md +0 -0
- package/docs/components/charts.md +0 -0
- package/docs/components/command-palette.md +0 -0
- package/docs/components/conversation.md +0 -0
- package/docs/components/data-table-grid.md +0 -0
- package/docs/components/data-table.md +0 -0
- package/docs/components/editor.md +21 -0
- package/docs/components/flow-canvas-editor.md +0 -0
- package/docs/components/flow-editors.md +0 -0
- package/docs/components/flow-lane-editor.md +0 -0
- package/docs/components/flow-outline-editor.md +0 -0
- package/docs/components/forms-and-dialogs.md +0 -0
- package/docs/components/input-fields.md +0 -0
- package/docs/components/keymap.md +0 -0
- package/docs/components/layout-widgets.md +38 -0
- package/docs/components/markdown-and-outline.md +0 -0
- package/docs/components/menus.md +0 -0
- package/docs/components/notifications.md +0 -0
- package/docs/components/panels-and-desktops.md +0 -0
- package/docs/components/record-list-and-fact-table.md +0 -0
- package/docs/components/settings-view.md +0 -0
- package/docs/components/shell.md +0 -0
- package/docs/components/slide-out-panel.md +0 -0
- package/docs/components/tiles.md +0 -0
- package/docs/components/wizard.md +0 -0
- package/docs/concepts/building-and-packaging.md +0 -0
- package/docs/concepts/domain-neutrality.md +0 -0
- package/docs/concepts/host-port.md +0 -0
- package/docs/concepts/packages-and-entry-points.md +0 -0
- package/docs/concepts/peer-dependencies.md +0 -0
- package/docs/concepts/state-guard.md +0 -0
- package/docs/concepts/styling.md +0 -0
- package/docs/quickstart.md +0 -0
- package/editor.js +0 -0
- package/flow.js +0 -0
- package/host.js +0 -0
- package/package.json +1 -1
- package/src/canvas/canvas_adapter.js +0 -0
- package/src/canvas/edge_router.js +0 -0
- package/src/canvas/graph/connector_router.js +0 -0
- package/src/canvas/graph/history_service.js +0 -0
- package/src/canvas/graph/node_platform.js +0 -0
- package/src/canvas/index.js +0 -0
- package/src/canvas/layered_layout.js +0 -0
- package/src/charts/chart_types.js +0 -0
- package/src/charts/data_series_plot_window.js +0 -0
- package/src/charts/downsample.js +0 -0
- package/src/charts/plot_config.js +0 -0
- package/src/charts/plot_config_editor.js +0 -0
- package/src/charts/plot_grid.js +0 -0
- package/src/charts/plot_popout_window.js +0 -0
- package/src/charts/plotly_wrapper.js +0 -0
- package/src/charts/series_transforms.js +0 -0
- package/src/core/event_bus.js +0 -0
- package/src/core/logging.js +0 -0
- package/src/core/settings.js +0 -0
- package/src/core/state_guard.js +0 -0
- package/src/core/state_guard_config.js +0 -0
- package/src/core/state_machine.js +0 -0
- package/src/editor/editor_pane.js +0 -0
- package/src/editor/monaco_editor_factory.js +7 -1
- package/src/editor/monaco_loader.js +37 -0
- package/src/editor/notebook_search.js +0 -0
- package/src/editor/notebook_tab_bar.js +0 -0
- package/src/editor/notebook_undo_manager.js +0 -0
- package/src/editor/split_pane_container.js +0 -0
- package/src/flow/canvas_editor/connections.js +0 -0
- package/src/flow/canvas_editor/editor.js +0 -0
- package/src/flow/canvas_editor/index.js +0 -0
- package/src/flow/canvas_editor/layout.js +0 -0
- package/src/flow/canvas_editor/strings.js +0 -0
- package/src/flow/kit/always_before.js +0 -0
- package/src/flow/kit/catalogue.js +0 -0
- package/src/flow/kit/chip_input.js +0 -0
- package/src/flow/kit/dom.js +0 -0
- package/src/flow/kit/findings.js +0 -0
- package/src/flow/kit/history.js +0 -0
- package/src/flow/kit/index.js +0 -0
- package/src/flow/kit/keys.js +0 -0
- package/src/flow/kit/logic_graph.js +0 -0
- package/src/flow/kit/references.js +0 -0
- package/src/flow/kit/settings_panel.js +0 -0
- package/src/flow/kit/settings_schema.js +0 -0
- package/src/flow/kit/step_picker.js +0 -0
- package/src/flow/kit/strings.js +0 -0
- package/src/flow/kit/value_picker.js +0 -0
- package/src/flow/kit/widgets.js +0 -0
- package/src/flow/lanes/editor.js +0 -0
- package/src/flow/lanes/index.js +0 -0
- package/src/flow/lanes/layout.js +0 -0
- package/src/flow/lanes/pipeline.js +0 -0
- package/src/flow/lanes/preview.js +0 -0
- package/src/flow/lanes/strings.js +0 -0
- package/src/flow/outline/editor.js +0 -0
- package/src/flow/outline/index.js +0 -0
- package/src/flow/outline/mapping.js +0 -0
- package/src/flow/outline/menu.js +0 -0
- package/src/flow/outline/operations.js +0 -0
- package/src/flow/outline/recognise.js +0 -0
- package/src/flow/outline/strings.js +0 -0
- package/src/help/help_modal.js +0 -0
- package/src/help/help_registry.js +0 -0
- package/src/host/external_links.js +0 -0
- package/src/host/file_picker.js +0 -0
- package/src/host/host.js +0 -0
- package/src/host/photino_host.js +0 -0
- package/src/host/photino_host.md +0 -0
- package/src/host/pywebview_host.js +0 -0
- package/src/tiles/chart_tiles.js +0 -0
- package/src/tiles/config_schema.js +0 -0
- package/src/tiles/figure_tile.js +0 -0
- package/src/tiles/layout_persistence.js +0 -0
- package/src/tiles/list_tiles.js +0 -0
- package/src/tiles/scope_picker.js +0 -0
- package/src/tiles/tile_base.js +0 -0
- package/src/tiles/tile_config_form.js +0 -0
- package/src/tiles/tile_grid.js +0 -0
- package/src/tiles/tile_registry.js +0 -0
- package/src/tiling/bottom_panel_tabs.js +0 -0
- package/src/tiling/command_palette.js +0 -0
- package/src/tiling/content_registry.js +0 -0
- package/src/tiling/desktops.js +0 -0
- package/src/tiling/entity_sources.js +0 -0
- package/src/tiling/keymap.js +0 -0
- package/src/tiling/kind_taxonomy.js +0 -0
- package/src/tiling/landing_table.js +0 -0
- package/src/tiling/loading_overlay.js +0 -0
- package/src/tiling/nav_panel.js +0 -0
- package/src/tiling/page_factory.js +0 -0
- package/src/tiling/panel_availability.js +0 -0
- package/src/tiling/panel_keys.js +0 -0
- package/src/tiling/shell.js +0 -0
- package/src/tiling/tab_strip.js +0 -0
- package/src/tiling/tile_breadcrumb.js +0 -0
- package/src/tiling/tile_renderer.js +0 -0
- package/src/tiling/tile_tab_menu.js +0 -0
- package/src/tiling/tile_tree.js +0 -0
- package/src/tiling/wm.js +0 -0
- package/src/tiling/zoom.js +0 -0
- package/src/ui/base/component_base.js +0 -0
- package/src/ui/base/controller_base.js +0 -0
- package/src/ui/base/page_base.js +0 -0
- package/src/ui/components/about_dialog.js +0 -0
- package/src/ui/components/action_dropdown.js +0 -0
- package/src/ui/components/alert_log.js +0 -0
- package/src/ui/components/alerts_pane.js +0 -0
- package/src/ui/components/attribute_list_editor.js +0 -0
- package/src/ui/components/autocomplete_field.js +0 -0
- package/src/ui/components/cell_editor_host.js +0 -0
- package/src/ui/components/cell_editors.js +0 -0
- package/src/ui/components/cell_grid.js +0 -0
- package/src/ui/components/cell_paste.js +0 -0
- package/src/ui/components/cell_selection.js +0 -0
- package/src/ui/components/choice_controls.js +0 -0
- package/src/ui/components/color_field.js +0 -0
- package/src/ui/components/color_list_field.js +0 -0
- package/src/ui/components/column_fit.js +0 -0
- package/src/ui/components/column_groups.js +0 -0
- package/src/ui/components/column_order.js +0 -0
- package/src/ui/components/computing_status_window.js +0 -0
- package/src/ui/components/confirm_dialog.js +0 -0
- package/src/ui/components/context_menu.js +0 -0
- package/src/ui/components/conversation_view.js +0 -0
- package/src/ui/components/crosstab.js +0 -0
- package/src/ui/components/data_table.js +0 -0
- package/src/ui/components/detail_header.js +0 -0
- package/src/ui/components/document_outline.js +0 -0
- package/src/ui/components/drag_reorder.js +0 -0
- package/src/ui/components/fact_table.js +0 -0
- package/src/ui/components/fill_handle.js +0 -0
- package/src/ui/components/gallery_picker.js +0 -0
- package/src/ui/components/header_actions.js +0 -0
- package/src/ui/components/inline_renamer.js +0 -0
- package/src/ui/components/job_progress.js +0 -0
- package/src/ui/components/managed_window.js +0 -0
- package/src/ui/components/menu_bar.js +0 -0
- package/src/ui/components/modal.js +0 -0
- package/src/ui/components/notification_history.js +0 -0
- package/src/ui/components/progress.js +0 -0
- package/src/ui/components/record_list.js +0 -0
- package/src/ui/components/row_activation.js +0 -0
- package/src/ui/components/section_stack.js +0 -0
- package/src/ui/components/series.js +0 -0
- package/src/ui/components/settings_view.js +0 -0
- package/src/ui/components/slide_out_panel.js +0 -0
- package/src/ui/components/slider_field.js +0 -0
- package/src/ui/components/sortable_list.js +0 -0
- package/src/ui/components/staged_edits.js +0 -0
- package/src/ui/components/staged_history.js +0 -0
- package/src/ui/components/table_filter_chips.js +0 -0
- package/src/ui/components/table_state_store.js +0 -0
- package/src/ui/components/table_structure.js +0 -0
- package/src/ui/components/table_values.js +0 -0
- package/src/ui/components/tabs.js +0 -0
- package/src/ui/components/tag_input.js +0 -0
- package/src/ui/components/toast.js +0 -0
- package/src/ui/components/toggle_field.js +0 -0
- package/src/ui/components/tree_view.js +0 -0
- package/src/ui/components/tsv.js +0 -0
- package/src/ui/components/window_taskbar.js +0 -0
- package/src/ui/components/wizard.js +0 -0
- package/src/ui/controllers/window_chrome_controller.js +0 -0
- package/src/ui/notification_center.js +0 -0
- package/src/ui/utils/auto_scrollbars.js +0 -0
- package/src/ui/utils/markdown.js +0 -0
- package/src/ui/utils/native_context_menu.js +0 -0
- package/src/ui/utils/overlay_scrollbar.js +0 -0
- package/src/ui/utils/raf_resize_observer.js +0 -0
- package/src/ui/utils/scroll_lock.js +0 -0
- package/src/ui/utils/strip_scroll.js +0 -0
- package/src/ui/utils/tooltip_service.js +0 -0
- package/tiles.js +0 -0
- package/widgets.js +0 -0
- package/wm.js +0 -0
package/dist/tokens.css
CHANGED
|
@@ -102,6 +102,14 @@
|
|
|
102
102
|
--state-active: rgba(255, 255, 255, 0.08);
|
|
103
103
|
--state-selected: rgba(0, 122, 204, 0.15);
|
|
104
104
|
|
|
105
|
+
/* ── Overlay scrollbars (installOverlayScrollbar) ─────────── */
|
|
106
|
+
--scrollbar-size: 6px;
|
|
107
|
+
--scrollbar-radius: 3px;
|
|
108
|
+
--scrollbar-track: rgba(255, 255, 255, 0.08);
|
|
109
|
+
--scrollbar-thumb: rgba(255, 255, 255, 0.28);
|
|
110
|
+
--scrollbar-thumb-hover: rgba(255, 255, 255, 0.38);
|
|
111
|
+
--scrollbar-thumb-active: rgba(255, 255, 255, 0.48);
|
|
112
|
+
|
|
105
113
|
/* ── Shadows / elevation ──────────────────────────────────── */
|
|
106
114
|
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
|
|
107
115
|
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
|
|
@@ -119,6 +127,9 @@
|
|
|
119
127
|
stack from 6000 to 6999 (managed_window.js), so a popover at
|
|
120
128
|
--z-popover would open behind the window that opened it. */
|
|
121
129
|
--z-over-windows: 7100;
|
|
130
|
+
/* An overlay scrollbar inside a scroll container: over the container's
|
|
131
|
+
content and its dropdowns, under managed windows (6000+). */
|
|
132
|
+
--z-scrollbar: 500;
|
|
122
133
|
|
|
123
134
|
/* ── Transitions ──────────────────────────────────────────── */
|
|
124
135
|
--transition-fast: 120ms ease;
|
package/dist/widgets.js
CHANGED
|
File without changes
|
package/dist/widgets.js.map
CHANGED
|
File without changes
|
package/dist/wm.js
CHANGED
|
File without changes
|
package/dist/wm.js.map
CHANGED
|
File without changes
|
package/docs/README.md
CHANGED
|
File without changes
|
package/docs/best-practices.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -20,3 +20,24 @@ A non-positive or non-number cap throws a `RangeError`. With `noAutoHeight`
|
|
|
20
20
|
the container's own layout decides the size and `setMaxHeight` has no effect.
|
|
21
21
|
Before 0.17.0 the cap was a fixed 400px, switched on by `data-code-max-height="true"`
|
|
22
22
|
on a `.notebook-editor-container` ancestor; that attribute is no longer read.
|
|
23
|
+
|
|
24
|
+
## Monaco's `Canceled` rejections are hidden (0.17.6)
|
|
25
|
+
|
|
26
|
+
When an editor gets focus, Monaco's word highlighter starts a 50 ms timer and
|
|
27
|
+
never catches its promise. Dispose the editor inside those 50 ms (re-render a
|
|
28
|
+
view right after focus moves back to it, as an Edit > Undo from the menu bar
|
|
29
|
+
does) and Monaco rejects that promise with its CancellationError, which nothing
|
|
30
|
+
handles. VS Code hides these with its own handler; standalone Monaco has none.
|
|
31
|
+
|
|
32
|
+
The first `initMonaco()` that starts a load now installs one window
|
|
33
|
+
`unhandledrejection` listener. It calls `preventDefault()` only when the
|
|
34
|
+
rejection's reason has `name === 'Canceled'` and `message === 'Canceled'`, which
|
|
35
|
+
is Monaco's CancellationError. Every other rejection still reaches the page and
|
|
36
|
+
its console. The listener is installed once per page, however often
|
|
37
|
+
`initMonaco()` is called or retried, and stays for the life of the page, as
|
|
38
|
+
Monaco does.
|
|
39
|
+
|
|
40
|
+
Until 0.17.6 the browser logged an uncaught `Canceled: Canceled` from
|
|
41
|
+
`Delayer.cancel`. The editor handle's `dispose()` caught only a `Canceled` that
|
|
42
|
+
Monaco's `dispose()` throws at once, not this later one.
|
|
43
|
+
`tests/monaco_cancellation_guard.test.mjs` holds it.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -36,6 +36,44 @@ at the right edge of a window that was not maximized, so those panes had no
|
|
|
36
36
|
scrollbar at all (BUG-0036). `tests/autoscroll_resize_handle_not_cover.test.mjs`
|
|
37
37
|
holds it.
|
|
38
38
|
|
|
39
|
+
## `installOverlayScrollbar` is styled by flexdesk.css (0.17.7)
|
|
40
|
+
|
|
41
|
+
`installOverlayScrollbar(container, { orientation })` (from
|
|
42
|
+
`@flexdesk/widgets`) gives one container its own bar: a
|
|
43
|
+
`.overlay-scrollbar-v` or `.overlay-scrollbar-h` element, holding a `.track`
|
|
44
|
+
and a `.thumb`, appended to the container (or to its parent with
|
|
45
|
+
`externalBar: true`, as `installTabsScrollbars` does). flexdesk.css styles
|
|
46
|
+
it, so it works with only FlexDesk's stylesheets loaded:
|
|
47
|
+
|
|
48
|
+
- **It takes no layout space.** The bar is `position: absolute` at the
|
|
49
|
+
container's right edge (vertical) or bottom edge (horizontal),
|
|
50
|
+
`--scrollbar-size` thick, on `--z-scrollbar` (over the container's content,
|
|
51
|
+
under managed windows). The script keeps it pinned to the visible edge as
|
|
52
|
+
the container scrolls.
|
|
53
|
+
- **It shows on hover while the container overflows.** The script sets
|
|
54
|
+
`data-scrollable="1"` or `"0"` on the container, and shows the bar on
|
|
55
|
+
`mouseenter` and `focusin` when it is `"1"`. It hides the bar on leave,
|
|
56
|
+
unless the thumb is being dragged. The bar starts at `opacity: 0`.
|
|
57
|
+
- **The thumb drags; the rest lets clicks through.** The bar takes no
|
|
58
|
+
pointer events, so content under it stays clickable. The thumb takes them
|
|
59
|
+
back (`pointer-events: auto`) and is at least 30px long.
|
|
60
|
+
- **Colours are tokens** in tokens.css: `--scrollbar-track`,
|
|
61
|
+
`--scrollbar-thumb`, `--scrollbar-thumb-hover`, `--scrollbar-thumb-active`,
|
|
62
|
+
and `--scrollbar-radius` for the rounding. Override them to restyle every
|
|
63
|
+
overlay bar.
|
|
64
|
+
|
|
65
|
+
The rules key on the orientation classes, so a bar created with another
|
|
66
|
+
`className` (`installWorkspaceScrollbars` uses `panel-scrollbar` and
|
|
67
|
+
`tabs-scrollbar`) is styled the same way. `installCollapsibleScrollbars`,
|
|
68
|
+
`installTabsScrollbars` and `installWorkspaceScrollbars` all build on
|
|
69
|
+
`installOverlayScrollbar`, so none of them needs embedder CSS either.
|
|
70
|
+
|
|
71
|
+
Until 0.17.7 no FlexDesk stylesheet had a rule for these classes. The bar
|
|
72
|
+
was `position: static`: it sat in the scroll container's flow, its height fed
|
|
73
|
+
the container's content height, and the container grew without limit unless
|
|
74
|
+
the embedder brought its own CSS (BUG-0039).
|
|
75
|
+
`tests/overlay_scrollbar_styles.test.mjs` holds it.
|
|
76
|
+
|
|
39
77
|
## A stack of collapsible sections: `createSectionStack` (0.17.0)
|
|
40
78
|
|
|
41
79
|
Inspector-style panel content: titled sections in a column, each opened and
|
|
File without changes
|
package/docs/components/menus.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/docs/components/shell.md
CHANGED
|
File without changes
|
|
File without changes
|
package/docs/components/tiles.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/docs/concepts/styling.md
CHANGED
|
File without changes
|
package/docs/quickstart.md
CHANGED
|
File without changes
|
package/editor.js
CHANGED
|
File without changes
|
package/flow.js
CHANGED
|
File without changes
|
package/host.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/canvas/index.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/charts/downsample.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/charts/plot_grid.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/core/event_bus.js
CHANGED
|
File without changes
|
package/src/core/logging.js
CHANGED
|
File without changes
|
package/src/core/settings.js
CHANGED
|
File without changes
|
package/src/core/state_guard.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -22,7 +22,13 @@ export function setDefaultLanguage(id) {
|
|
|
22
22
|
if (typeof id === 'string' && id) _defaultLanguage = id;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Dispose a Monaco editor, swallowing a "Canceled" error that `dispose()` throws
|
|
27
|
+
* synchronously. It cannot catch the asynchronous kind — a pending Delayer's
|
|
28
|
+
* promise rejected by the dispose, which surfaces later as an unhandled
|
|
29
|
+
* rejection; the loader's window listener hides those (see
|
|
30
|
+
* `installCancellationGuard` in monaco_loader.js, BUG-0038).
|
|
31
|
+
*/
|
|
26
32
|
function safeDispose(editor) {
|
|
27
33
|
try { editor.dispose(); } catch (e) { if (e?.message !== 'Canceled') throw e; }
|
|
28
34
|
}
|
|
@@ -38,6 +38,38 @@ let _attempt = null;
|
|
|
38
38
|
*/
|
|
39
39
|
export const monacoReady = new Promise(resolve => { _resolveMonaco = resolve; });
|
|
40
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Monaco's asynchronous CancellationError is benign; keep it off the page.
|
|
43
|
+
*
|
|
44
|
+
* Monaco starts timers it never awaits: its WordHighlighter calls
|
|
45
|
+
* `runDelayer.trigger()` (a 50 ms Delayer) when an editor gets focus and
|
|
46
|
+
* drops the promise. Dispose the editor inside those 50 ms and
|
|
47
|
+
* `Delayer.dispose() -> cancel()` rejects that promise with a CancellationError
|
|
48
|
+
* (name and message both 'Canceled') that nothing handles, so the browser
|
|
49
|
+
* reports an uncaught 'Canceled' (BUG-0038). VS Code hides these with its own
|
|
50
|
+
* unhandledrejection handler; standalone Monaco has none, so FlexDesk installs
|
|
51
|
+
* one here: it calls preventDefault() for exactly that error and leaves every
|
|
52
|
+
* other rejection to surface as before.
|
|
53
|
+
*
|
|
54
|
+
* Installed once per page, by the first initMonaco() that starts a load, and
|
|
55
|
+
* kept for the life of the page — like Monaco itself, which cannot be unloaded.
|
|
56
|
+
*/
|
|
57
|
+
let _cancellationGuardInstalled = false;
|
|
58
|
+
|
|
59
|
+
function isMonacoCancellation(reason) {
|
|
60
|
+
return reason?.name === 'Canceled' && reason?.message === 'Canceled';
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function installCancellationGuard() {
|
|
64
|
+
if (_cancellationGuardInstalled) return;
|
|
65
|
+
_cancellationGuardInstalled = true;
|
|
66
|
+
// `?.`: the loader suites' stand-in pages (tests/monaco_env.mjs and the
|
|
67
|
+
// suites that set `window = globalThis` under Node) have no event target.
|
|
68
|
+
window.addEventListener?.('unhandledrejection', (event) => {
|
|
69
|
+
if (isMonacoCancellation(event.reason)) event.preventDefault();
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
|
|
41
73
|
function injectLoaderScript(src) {
|
|
42
74
|
return new Promise((resolve, reject) => {
|
|
43
75
|
const s = document.createElement('script');
|
|
@@ -124,6 +156,10 @@ async function loadMonaco(basePath) {
|
|
|
124
156
|
* given). An AMD-level failure is final for the page: every later call gets
|
|
125
157
|
* the same rejection, and only a reload recovers (see `_attempt`).
|
|
126
158
|
*
|
|
159
|
+
* The first call that starts a load also installs one window
|
|
160
|
+
* 'unhandledrejection' listener that hides Monaco's benign asynchronous
|
|
161
|
+
* CancellationError, and nothing else (see `installCancellationGuard`).
|
|
162
|
+
*
|
|
127
163
|
* @param {string} [basePath] Path prefix for the vs/ directory. REQUIRED
|
|
128
164
|
* unless an attempt is already in flight or has succeeded.
|
|
129
165
|
* @returns {Promise<typeof monaco>}
|
|
@@ -136,6 +172,7 @@ export function initMonaco(basePath) {
|
|
|
136
172
|
+ "initMonaco('vendor/monaco'). Monaco is a peer dependency; the library "
|
|
137
173
|
+ 'does not guess where you put it.'));
|
|
138
174
|
}
|
|
175
|
+
installCancellationGuard();
|
|
139
176
|
const attempt = loadMonaco(basePath).then(
|
|
140
177
|
(m) => { _resolveMonaco(m); return m; },
|
|
141
178
|
(err) => {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/flow/kit/dom.js
CHANGED
|
File without changes
|
package/src/flow/kit/findings.js
CHANGED
|
File without changes
|
package/src/flow/kit/history.js
CHANGED
|
File without changes
|
package/src/flow/kit/index.js
CHANGED
|
File without changes
|
package/src/flow/kit/keys.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/flow/kit/strings.js
CHANGED
|
File without changes
|
|
File without changes
|
package/src/flow/kit/widgets.js
CHANGED
|
File without changes
|
package/src/flow/lanes/editor.js
CHANGED
|
File without changes
|
package/src/flow/lanes/index.js
CHANGED
|
File without changes
|
package/src/flow/lanes/layout.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/flow/outline/menu.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/help/help_modal.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/host/file_picker.js
CHANGED
|
File without changes
|
package/src/host/host.js
CHANGED
|
File without changes
|
package/src/host/photino_host.js
CHANGED
|
File without changes
|
package/src/host/photino_host.md
CHANGED
|
File without changes
|
|
File without changes
|
package/src/tiles/chart_tiles.js
CHANGED
|
File without changes
|
|
File without changes
|
package/src/tiles/figure_tile.js
CHANGED
|
File without changes
|
|
File without changes
|
package/src/tiles/list_tiles.js
CHANGED
|
File without changes
|
|
File without changes
|
package/src/tiles/tile_base.js
CHANGED
|
File without changes
|
|
File without changes
|
package/src/tiles/tile_grid.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/tiling/desktops.js
CHANGED
|
File without changes
|
|
File without changes
|
package/src/tiling/keymap.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/tiling/nav_panel.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/tiling/panel_keys.js
CHANGED
|
File without changes
|
package/src/tiling/shell.js
CHANGED
|
File without changes
|
package/src/tiling/tab_strip.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/tiling/tile_tree.js
CHANGED
|
File without changes
|
package/src/tiling/wm.js
CHANGED
|
File without changes
|
package/src/tiling/zoom.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/ui/base/page_base.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|