flexdesk 0.17.16 → 0.17.18
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 +32 -1
- package/css/flexdesk.css +32 -1
- package/css/reset.css +0 -0
- package/css/tokens.css +3 -0
- package/dist/canvas.js +0 -0
- package/dist/canvas.js.map +0 -0
- package/dist/chunk-3PHCPZHT.js +0 -0
- package/dist/chunk-3PHCPZHT.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-JKZLNKG6.js → chunk-HKPB6OFA.js} +90 -25
- package/dist/{chunk-JKZLNKG6.js.map → chunk-HKPB6OFA.js.map} +2 -2
- package/dist/chunk-HNU6MM2B.js +0 -0
- package/dist/chunk-HNU6MM2B.js.map +0 -0
- package/dist/chunk-JYWURG5T.js +0 -0
- package/dist/chunk-JYWURG5T.js.map +0 -0
- package/dist/chunk-N7HC3ADV.js +0 -0
- package/dist/chunk-N7HC3ADV.js.map +0 -0
- package/dist/editor.js.map +0 -0
- package/dist/flexdesk.css +32 -1
- 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/tokens.css +3 -0
- package/dist/widgets.js +4115 -4089
- package/dist/widgets.js.map +4 -4
- package/dist/wm.js +115 -31
- package/dist/wm.js.map +2 -2
- 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 +0 -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/input-fields.md +0 -0
- package/docs/components/markdown-and-outline.md +0 -0
- package/docs/components/menus.md +38 -1
- package/docs/components/notifications.md +23 -1
- package/docs/components/panels-and-desktops.md +22 -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 +54 -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/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/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/plotly_wrapper.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_machine.js +0 -0
- package/src/editor/editor_pane.js +0 -0
- package/src/editor/monaco_editor_factory.js +0 -0
- package/src/editor/monaco_loader.js +0 -0
- package/src/editor/notebook_search.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_config_form.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/entity_sources.js +0 -0
- package/src/tiling/kind_taxonomy.js +21 -13
- 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 +4 -1
- package/src/tiling/tab_strip.js +0 -0
- package/src/tiling/tile_renderer.js +0 -0
- package/src/tiling/tile_tab_menu.js +0 -0
- package/src/tiling/wm.js +123 -28
- 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/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/conversation_view.js +0 -0
- package/src/ui/components/crosstab.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/menu_bar.js +101 -24
- package/src/ui/components/notification_history.js +11 -1
- 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/tsv.js +0 -0
- package/src/ui/components/window_taskbar.js +0 -0
- package/src/ui/controllers/window_chrome_controller.js +4 -1
- package/src/ui/notification_center.js +47 -1
- 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/wm.js +0 -0
|
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/ui/components/tsv.js
CHANGED
|
File without changes
|
|
File without changes
|
|
@@ -404,10 +404,13 @@ export class WindowChromeController {
|
|
|
404
404
|
// What never starts a drag: anything you can click or type into. An
|
|
405
405
|
// embedder adds its own with `noDrag`. (`.window-controls` and
|
|
406
406
|
// `.panel-toggles` are kept for embedders' own markup of that shape.)
|
|
407
|
+
// A menu bar in the top bar (a hamburger, STORY-0133) drops its menus
|
|
408
|
+
// inside the bar's DOM: a press on a menu's padding or separator is
|
|
409
|
+
// in the bar, not a drag.
|
|
407
410
|
const NO_DRAG_SELECTOR = [
|
|
408
411
|
'.no-drag', 'button', 'a', 'input', 'select', 'textarea', 'label',
|
|
409
412
|
'[role="button"]', '[role="menuitem"]', '[role="tab"]', '[contenteditable="true"]',
|
|
410
|
-
'.twm-window-controls', '.window-controls', '.panel-toggles',
|
|
413
|
+
'.twm-window-controls', '.window-controls', '.panel-toggles', '.twm-menubar',
|
|
411
414
|
this._noDrag,
|
|
412
415
|
].filter(Boolean).join(', ');
|
|
413
416
|
|
|
@@ -35,11 +35,20 @@
|
|
|
35
35
|
* `log:entry`). A toast that leaves marks its own entry `dismissed` with a
|
|
36
36
|
* `reason`; it adds none. `subscribe(fn)` calls `fn(entry, center)` for each
|
|
37
37
|
* entry added, so a history view follows the centre rather than the bus.
|
|
38
|
+
*
|
|
39
|
+
* Copy message (STORY-0131)
|
|
40
|
+
* -------------------------
|
|
41
|
+
* A right-click on a toast, or on its entry in the history, opens the context
|
|
42
|
+
* menu with "Copy message": the title, the message and the description, one
|
|
43
|
+
* per line, go to the clipboard as plain text. The text is also selectable:
|
|
44
|
+
* a click on the title, message, description or status, or one that ends a
|
|
45
|
+
* selection, does not close the toast; only a click on its chrome does.
|
|
38
46
|
*/
|
|
39
47
|
import { ComponentBase } from './base/component_base.js';
|
|
40
48
|
import { getSetting } from '../core/settings.js';
|
|
41
49
|
import { setToastBus, getToastBus } from './components/toast.js';
|
|
42
50
|
import { ProgressBar } from './components/progress.js';
|
|
51
|
+
import { showContextMenu } from './components/context_menu.js';
|
|
43
52
|
|
|
44
53
|
const SEVERITIES = ['info', 'success', 'warn', 'error', 'fatal'];
|
|
45
54
|
|
|
@@ -60,6 +69,39 @@ const DEFAULT_LOG_LEVELS = new Set(['warn', 'error', 'fatal']);
|
|
|
60
69
|
// Messages from these namespaces are self-descriptive and need no category header.
|
|
61
70
|
const SUPPRESSED_NAMESPACE_TITLES = new Set(['bootstrap', 'app']);
|
|
62
71
|
|
|
72
|
+
/** A notification as plain text: its title, message and description, one per line. */
|
|
73
|
+
export function notificationText(notification) {
|
|
74
|
+
return [notification.title, notification.message, notification.description]
|
|
75
|
+
.filter((part) => part != null && String(part) !== '')
|
|
76
|
+
.join('\n');
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* The right-click menu of a toast or a history entry: "Copy message". It takes
|
|
81
|
+
* the right-click, so the browser's own menu does not open.
|
|
82
|
+
*/
|
|
83
|
+
export function showNotificationMenu(event, notification, logger) {
|
|
84
|
+
event.preventDefault();
|
|
85
|
+
event.stopPropagation();
|
|
86
|
+
showContextMenu(event.clientX, event.clientY,
|
|
87
|
+
[{ label: 'Copy message', icon: 'content_copy', action: 'copy' }],
|
|
88
|
+
() => {
|
|
89
|
+
Promise.resolve()
|
|
90
|
+
.then(() => navigator.clipboard.writeText(notificationText(notification)))
|
|
91
|
+
.catch((err) => logger?.warn?.('twm-notification-center', 'Copy message failed', { err }));
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/** The toast's text: clicking it selects, it does not dismiss. */
|
|
96
|
+
const TOAST_TEXT = '.twm-notification__title, .twm-notification__body, '
|
|
97
|
+
+ '.twm-notification__description, .twm-notification__status';
|
|
98
|
+
|
|
99
|
+
/** A non-empty text selection inside `el`: a click that ends one is not a click on it. */
|
|
100
|
+
function selectsTextIn(el) {
|
|
101
|
+
const sel = el.ownerDocument.getSelection?.();
|
|
102
|
+
return Boolean(sel && !sel.isCollapsed && sel.rangeCount && el.contains(sel.getRangeAt(0).commonAncestorContainer));
|
|
103
|
+
}
|
|
104
|
+
|
|
63
105
|
export class NotificationCenter extends ComponentBase {
|
|
64
106
|
#items;
|
|
65
107
|
#summaryEl;
|
|
@@ -752,12 +794,16 @@ export class NotificationCenter extends ComponentBase {
|
|
|
752
794
|
item.appendChild(actionsEl);
|
|
753
795
|
}
|
|
754
796
|
|
|
797
|
+
// A click on the text is the start of selecting it (a double-click's
|
|
798
|
+
// first click leaves only a caret), so only the toast's chrome closes it.
|
|
755
799
|
item.addEventListener('click', (event) => {
|
|
756
|
-
if (event.target.closest(
|
|
800
|
+
if (event.target.closest(`button, ${TOAST_TEXT}`) || NotificationCenter.#isRunning(notification)
|
|
801
|
+
|| selectsTextIn(item)) {
|
|
757
802
|
return;
|
|
758
803
|
}
|
|
759
804
|
this.dismiss(notification.id, 'click');
|
|
760
805
|
});
|
|
806
|
+
item.addEventListener('contextmenu', (event) => showNotificationMenu(event, notification, this.logger));
|
|
761
807
|
|
|
762
808
|
this.#patchItem(entry, notification);
|
|
763
809
|
return entry;
|
|
File without changes
|
package/src/ui/utils/markdown.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/tiles.js
CHANGED
|
File without changes
|
package/wm.js
CHANGED
|
File without changes
|