flexdesk 0.17.8 → 0.17.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/LICENSE +0 -0
  3. package/README.md +0 -0
  4. package/THIRD_PARTY_LICENSES.md +0 -0
  5. package/canvas.js +0 -0
  6. package/charts.js +0 -0
  7. package/core.js +0 -0
  8. package/css/base.css +78 -56
  9. package/css/flexdesk.css +111 -89
  10. package/css/overrides.css +12 -12
  11. package/css/reset.css +0 -0
  12. package/css/tokens.css +11 -2
  13. package/dist/canvas.js +0 -0
  14. package/dist/canvas.js.map +0 -0
  15. package/dist/charts.js +7 -6
  16. package/dist/charts.js.map +2 -2
  17. package/dist/{chunk-EIYNF4BD.js → chunk-2YTM3GJE.js} +2 -2
  18. package/dist/chunk-2YTM3GJE.js.map +7 -0
  19. package/dist/chunk-3PHCPZHT.js +0 -0
  20. package/dist/chunk-3PHCPZHT.js.map +0 -0
  21. package/dist/{chunk-UURZ37SD.js → chunk-7U4IB65H.js} +27 -9
  22. package/dist/chunk-7U4IB65H.js.map +7 -0
  23. package/dist/{chunk-D3COLZZ2.js → chunk-BE2PU3LL.js} +2 -2
  24. package/dist/{chunk-D3COLZZ2.js.map → chunk-BE2PU3LL.js.map} +0 -0
  25. package/dist/chunk-CVMCZZX2.js +0 -0
  26. package/dist/chunk-CVMCZZX2.js.map +0 -0
  27. package/dist/{chunk-UWO43BZU.js → chunk-F35XSQWA.js} +16 -20
  28. package/dist/chunk-F35XSQWA.js.map +7 -0
  29. package/dist/chunk-FOOS3T5L.js +0 -0
  30. package/dist/chunk-FOOS3T5L.js.map +0 -0
  31. package/dist/chunk-GOQLR5WR.js +0 -0
  32. package/dist/chunk-GOQLR5WR.js.map +0 -0
  33. package/dist/chunk-HNU6MM2B.js +0 -0
  34. package/dist/chunk-HNU6MM2B.js.map +0 -0
  35. package/dist/chunk-JKZLNKG6.js +0 -0
  36. package/dist/chunk-JKZLNKG6.js.map +0 -0
  37. package/dist/chunk-JYWURG5T.js +0 -0
  38. package/dist/chunk-JYWURG5T.js.map +0 -0
  39. package/dist/{chunk-RKNFBX5K.js → chunk-MIW7D6WC.js} +16 -4
  40. package/dist/{chunk-RKNFBX5K.js.map → chunk-MIW7D6WC.js.map} +2 -2
  41. package/dist/chunk-N7HC3ADV.js +0 -0
  42. package/dist/chunk-N7HC3ADV.js.map +0 -0
  43. package/dist/{chunk-LWV23YVE.js → chunk-NIJEJAZ7.js} +42 -18
  44. package/dist/chunk-NIJEJAZ7.js.map +7 -0
  45. package/dist/{chunk-HYJYYEPK.js → chunk-REJ5HLIM.js} +2 -2
  46. package/dist/{chunk-HYJYYEPK.js.map → chunk-REJ5HLIM.js.map} +0 -0
  47. package/dist/{chunk-WVFGV5FT.js → chunk-WUFLGETN.js} +39 -2
  48. package/dist/{chunk-WVFGV5FT.js.map → chunk-WUFLGETN.js.map} +3 -3
  49. package/dist/core.js +0 -0
  50. package/dist/core.js.map +0 -0
  51. package/dist/editor.js +2 -2
  52. package/dist/editor.js.map +0 -0
  53. package/dist/flexdesk.css +111 -89
  54. package/dist/flow.js +3 -3
  55. package/dist/flow.js.map +0 -0
  56. package/dist/host.js +0 -0
  57. package/dist/host.js.map +0 -0
  58. package/dist/reset.css +0 -0
  59. package/dist/tile_registry-6WZPTUZV.js +0 -0
  60. package/dist/tile_registry-6WZPTUZV.js.map +0 -0
  61. package/dist/tiles.js +63 -20
  62. package/dist/tiles.js.map +2 -2
  63. package/dist/tokens.css +11 -2
  64. package/dist/widgets.js +6 -6
  65. package/dist/widgets.js.map +0 -0
  66. package/dist/wm.js +5 -5
  67. package/dist/wm.js.map +0 -0
  68. package/docs/README.md +0 -0
  69. package/docs/best-practices.md +0 -0
  70. package/docs/components/charts.md +29 -0
  71. package/docs/components/command-palette.md +0 -0
  72. package/docs/components/conversation.md +0 -0
  73. package/docs/components/data-table-grid.md +0 -0
  74. package/docs/components/data-table.md +0 -0
  75. package/docs/components/editor.md +0 -0
  76. package/docs/components/flow-canvas-editor.md +0 -0
  77. package/docs/components/flow-editors.md +0 -0
  78. package/docs/components/flow-lane-editor.md +0 -0
  79. package/docs/components/flow-outline-editor.md +0 -0
  80. package/docs/components/forms-and-dialogs.md +0 -0
  81. package/docs/components/input-fields.md +0 -0
  82. package/docs/components/keymap.md +0 -0
  83. package/docs/components/markdown-and-outline.md +0 -0
  84. package/docs/components/menus.md +41 -0
  85. package/docs/components/notifications.md +0 -0
  86. package/docs/components/panels-and-desktops.md +0 -0
  87. package/docs/components/record-list-and-fact-table.md +0 -0
  88. package/docs/components/settings-view.md +0 -0
  89. package/docs/components/shell.md +0 -0
  90. package/docs/components/slide-out-panel.md +0 -0
  91. package/docs/components/tiles.md +25 -0
  92. package/docs/components/wizard.md +0 -0
  93. package/docs/concepts/building-and-packaging.md +0 -0
  94. package/docs/concepts/domain-neutrality.md +0 -0
  95. package/docs/concepts/host-port.md +0 -0
  96. package/docs/concepts/packages-and-entry-points.md +0 -0
  97. package/docs/concepts/peer-dependencies.md +0 -0
  98. package/docs/concepts/state-guard.md +0 -0
  99. package/docs/concepts/styling.md +68 -0
  100. package/docs/quickstart.md +0 -0
  101. package/editor.js +0 -0
  102. package/flow.js +0 -0
  103. package/host.js +0 -0
  104. package/package.json +1 -1
  105. package/src/canvas/canvas_adapter.js +0 -0
  106. package/src/canvas/edge_router.js +0 -0
  107. package/src/canvas/graph/connector_router.js +0 -0
  108. package/src/canvas/graph/history_service.js +0 -0
  109. package/src/canvas/graph/node_platform.js +0 -0
  110. package/src/canvas/index.js +0 -0
  111. package/src/canvas/layered_layout.js +0 -0
  112. package/src/charts/chart_types.js +3 -2
  113. package/src/charts/data_series_plot_window.js +0 -0
  114. package/src/charts/downsample.js +0 -0
  115. package/src/charts/plot_config.js +0 -0
  116. package/src/charts/plot_config_editor.js +8 -2
  117. package/src/charts/plotly_wrapper.js +0 -0
  118. package/src/core/event_bus.js +0 -0
  119. package/src/core/logging.js +0 -0
  120. package/src/core/settings.js +0 -0
  121. package/src/core/state_guard.js +0 -0
  122. package/src/core/state_guard_config.js +0 -0
  123. package/src/core/state_machine.js +0 -0
  124. package/src/editor/editor_pane.js +0 -0
  125. package/src/editor/monaco_editor_factory.js +0 -0
  126. package/src/editor/monaco_loader.js +0 -0
  127. package/src/editor/notebook_search.js +0 -0
  128. package/src/editor/notebook_tab_bar.js +26 -7
  129. package/src/editor/notebook_undo_manager.js +0 -0
  130. package/src/editor/split_pane_container.js +0 -0
  131. package/src/flow/canvas_editor/connections.js +0 -0
  132. package/src/flow/canvas_editor/editor.js +0 -0
  133. package/src/flow/canvas_editor/index.js +0 -0
  134. package/src/flow/canvas_editor/layout.js +0 -0
  135. package/src/flow/canvas_editor/strings.js +0 -0
  136. package/src/flow/kit/always_before.js +0 -0
  137. package/src/flow/kit/catalogue.js +0 -0
  138. package/src/flow/kit/chip_input.js +0 -0
  139. package/src/flow/kit/dom.js +0 -0
  140. package/src/flow/kit/findings.js +0 -0
  141. package/src/flow/kit/history.js +0 -0
  142. package/src/flow/kit/index.js +0 -0
  143. package/src/flow/kit/keys.js +0 -0
  144. package/src/flow/kit/logic_graph.js +0 -0
  145. package/src/flow/kit/references.js +0 -0
  146. package/src/flow/kit/settings_panel.js +0 -0
  147. package/src/flow/kit/settings_schema.js +0 -0
  148. package/src/flow/kit/step_picker.js +0 -0
  149. package/src/flow/kit/strings.js +0 -0
  150. package/src/flow/kit/value_picker.js +0 -0
  151. package/src/flow/kit/widgets.js +0 -0
  152. package/src/flow/lanes/editor.js +0 -0
  153. package/src/flow/lanes/index.js +0 -0
  154. package/src/flow/lanes/layout.js +0 -0
  155. package/src/flow/lanes/pipeline.js +0 -0
  156. package/src/flow/lanes/preview.js +0 -0
  157. package/src/flow/lanes/strings.js +0 -0
  158. package/src/flow/outline/editor.js +0 -0
  159. package/src/flow/outline/index.js +0 -0
  160. package/src/flow/outline/mapping.js +0 -0
  161. package/src/flow/outline/menu.js +0 -0
  162. package/src/flow/outline/operations.js +0 -0
  163. package/src/flow/outline/recognise.js +0 -0
  164. package/src/flow/outline/strings.js +0 -0
  165. package/src/help/help_modal.js +0 -0
  166. package/src/help/help_registry.js +0 -0
  167. package/src/host/external_links.js +0 -0
  168. package/src/host/file_picker.js +0 -0
  169. package/src/host/host.js +0 -0
  170. package/src/host/photino_host.js +0 -0
  171. package/src/host/photino_host.md +0 -0
  172. package/src/host/pywebview_host.js +0 -0
  173. package/src/tiles/chart_tiles.js +0 -0
  174. package/src/tiles/config_schema.js +0 -0
  175. package/src/tiles/figure_tile.js +0 -0
  176. package/src/tiles/layout_persistence.js +0 -0
  177. package/src/tiles/list_tiles.js +0 -0
  178. package/src/tiles/scope_picker.js +0 -0
  179. package/src/tiles/tile_base.js +67 -16
  180. package/src/tiles/tile_config_form.js +0 -0
  181. package/src/tiles/tile_grid.js +0 -0
  182. package/src/tiles/tile_registry.js +0 -0
  183. package/src/tiling/bottom_panel_tabs.js +0 -0
  184. package/src/tiling/command_palette.js +0 -0
  185. package/src/tiling/content_registry.js +0 -0
  186. package/src/tiling/desktops.js +0 -0
  187. package/src/tiling/entity_sources.js +0 -0
  188. package/src/tiling/keymap.js +0 -0
  189. package/src/tiling/kind_taxonomy.js +0 -0
  190. package/src/tiling/landing_table.js +0 -0
  191. package/src/tiling/loading_overlay.js +0 -0
  192. package/src/tiling/nav_panel.js +0 -0
  193. package/src/tiling/page_factory.js +0 -0
  194. package/src/tiling/panel_availability.js +0 -0
  195. package/src/tiling/panel_keys.js +0 -0
  196. package/src/tiling/shell.js +0 -0
  197. package/src/tiling/tab_strip.js +0 -0
  198. package/src/tiling/tile_breadcrumb.js +0 -0
  199. package/src/tiling/tile_renderer.js +0 -0
  200. package/src/tiling/tile_tab_menu.js +0 -0
  201. package/src/tiling/tile_tree.js +0 -0
  202. package/src/tiling/wm.js +0 -0
  203. package/src/tiling/zoom.js +0 -0
  204. package/src/ui/base/component_base.js +0 -0
  205. package/src/ui/base/controller_base.js +0 -0
  206. package/src/ui/base/page_base.js +0 -0
  207. package/src/ui/components/about_dialog.js +0 -0
  208. package/src/ui/components/action_dropdown.js +19 -6
  209. package/src/ui/components/alert_log.js +0 -0
  210. package/src/ui/components/alerts_pane.js +0 -0
  211. package/src/ui/components/attribute_list_editor.js +0 -0
  212. package/src/ui/components/autocomplete_field.js +0 -0
  213. package/src/ui/components/cell_editor_host.js +0 -0
  214. package/src/ui/components/cell_editors.js +0 -0
  215. package/src/ui/components/cell_grid.js +0 -0
  216. package/src/ui/components/cell_paste.js +0 -0
  217. package/src/ui/components/cell_selection.js +0 -0
  218. package/src/ui/components/choice_controls.js +0 -0
  219. package/src/ui/components/color_field.js +0 -0
  220. package/src/ui/components/color_list_field.js +0 -0
  221. package/src/ui/components/column_fit.js +0 -0
  222. package/src/ui/components/column_groups.js +0 -0
  223. package/src/ui/components/column_order.js +0 -0
  224. package/src/ui/components/computing_status_window.js +0 -0
  225. package/src/ui/components/confirm_dialog.js +0 -0
  226. package/src/ui/components/context_menu.js +20 -20
  227. package/src/ui/components/conversation_view.js +0 -0
  228. package/src/ui/components/crosstab.js +0 -0
  229. package/src/ui/components/data_table.js +45 -19
  230. package/src/ui/components/detail_header.js +0 -0
  231. package/src/ui/components/document_outline.js +0 -0
  232. package/src/ui/components/drag_reorder.js +0 -0
  233. package/src/ui/components/fact_table.js +0 -0
  234. package/src/ui/components/fill_handle.js +0 -0
  235. package/src/ui/components/gallery_picker.js +0 -0
  236. package/src/ui/components/header_actions.js +0 -0
  237. package/src/ui/components/inline_renamer.js +0 -0
  238. package/src/ui/components/job_progress.js +0 -0
  239. package/src/ui/components/managed_window.js +0 -0
  240. package/src/ui/components/menu_bar.js +0 -0
  241. package/src/ui/components/modal.js +0 -0
  242. package/src/ui/components/notification_history.js +0 -0
  243. package/src/ui/components/progress.js +0 -0
  244. package/src/ui/components/record_list.js +0 -0
  245. package/src/ui/components/row_activation.js +0 -0
  246. package/src/ui/components/section_stack.js +0 -0
  247. package/src/ui/components/series.js +0 -0
  248. package/src/ui/components/settings_view.js +0 -0
  249. package/src/ui/components/slide_out_panel.js +0 -0
  250. package/src/ui/components/slider_field.js +0 -0
  251. package/src/ui/components/sortable_list.js +0 -0
  252. package/src/ui/components/staged_edits.js +0 -0
  253. package/src/ui/components/staged_history.js +0 -0
  254. package/src/ui/components/table_filter_chips.js +0 -0
  255. package/src/ui/components/table_state_store.js +0 -0
  256. package/src/ui/components/table_structure.js +0 -0
  257. package/src/ui/components/table_values.js +0 -0
  258. package/src/ui/components/tabs.js +0 -0
  259. package/src/ui/components/tag_input.js +0 -0
  260. package/src/ui/components/toast.js +0 -0
  261. package/src/ui/components/toggle_field.js +0 -0
  262. package/src/ui/components/tree_view.js +0 -0
  263. package/src/ui/components/tsv.js +0 -0
  264. package/src/ui/components/window_taskbar.js +0 -0
  265. package/src/ui/components/wizard.js +0 -0
  266. package/src/ui/controllers/window_chrome_controller.js +0 -0
  267. package/src/ui/notification_center.js +0 -0
  268. package/src/ui/utils/auto_scrollbars.js +0 -0
  269. package/src/ui/utils/markdown.js +0 -0
  270. package/src/ui/utils/menu_viewport.js +81 -0
  271. package/src/ui/utils/native_context_menu.js +0 -0
  272. package/src/ui/utils/overlay_scrollbar.js +0 -0
  273. package/src/ui/utils/raf_resize_observer.js +0 -0
  274. package/src/ui/utils/scroll_lock.js +0 -0
  275. package/src/ui/utils/strip_scroll.js +0 -0
  276. package/src/ui/utils/tooltip_service.js +0 -0
  277. package/tiles.js +0 -0
  278. package/widgets.js +0 -0
  279. package/wm.js +0 -0
  280. package/dist/chunk-EIYNF4BD.js.map +0 -7
  281. package/dist/chunk-LWV23YVE.js.map +0 -7
  282. package/dist/chunk-UURZ37SD.js.map +0 -7
  283. package/dist/chunk-UWO43BZU.js.map +0 -7
@@ -2,6 +2,11 @@ import {
2
2
  isRowActivation,
3
3
  isRowControl
4
4
  } from "./chunk-CVMCZZX2.js";
5
+ import {
6
+ focusMenuItem,
7
+ moveMenuFocus,
8
+ placeMenuInViewport
9
+ } from "./chunk-WUFLGETN.js";
5
10
 
6
11
  // src/ui/components/autocomplete_field.js
7
12
  var AutocompleteField = class {
@@ -4924,6 +4929,7 @@ var DataTable = class {
4924
4929
  this._tbodyEl = null;
4925
4930
  this._contextMenuEl = null;
4926
4931
  this._contextMenuCtx = null;
4932
+ this._contextMenuReturnFocus = null;
4927
4933
  this._navCursor = null;
4928
4934
  this._filterDropdownEl = null;
4929
4935
  this._filterDropdownCleanup = null;
@@ -10408,6 +10414,7 @@ var DataTable = class {
10408
10414
  if (this._contextMenuEl) return this._contextMenuEl;
10409
10415
  const menu = document.createElement("div");
10410
10416
  menu.className = "twm-context-menu data-context-menu";
10417
+ menu.setAttribute("role", "menu");
10411
10418
  menu.style.display = "none";
10412
10419
  menu.style.position = "fixed";
10413
10420
  menu.style.zIndex = "10001";
@@ -10462,17 +10469,28 @@ var DataTable = class {
10462
10469
  if (event?.target && menu?.contains(event.target)) return;
10463
10470
  this._hideContextMenu();
10464
10471
  };
10465
- const hideOnEscape = (event) => {
10466
- if (event.key === "Escape") this._hideContextMenu();
10472
+ const onMenuKey = (event) => {
10473
+ if (event.key === "Escape") {
10474
+ this._hideContextMenu();
10475
+ return;
10476
+ }
10477
+ if (!menu || menu.style.display === "none") return;
10478
+ const focused = document.activeElement;
10479
+ if ((event.key === "Enter" || event.key === " ") && focused?.classList?.contains("twm-context-menu-item") && menu.contains(focused)) {
10480
+ event.preventDefault();
10481
+ focused.click();
10482
+ return;
10483
+ }
10484
+ moveMenuFocus(event, this._contextMenuEnabledItems());
10467
10485
  };
10468
10486
  const hideOnResize = () => this._hideContextMenu();
10469
10487
  document.addEventListener("click", hideOnGlobal, true);
10470
10488
  document.addEventListener("scroll", hideOnGlobal, true);
10471
10489
  window.addEventListener("resize", hideOnResize);
10472
- document.addEventListener("keydown", hideOnEscape);
10490
+ document.addEventListener("keydown", onMenuKey);
10473
10491
  this._contextMenuGlobals.push(() => document.removeEventListener("click", hideOnGlobal, true));
10474
10492
  this._contextMenuGlobals.push(() => document.removeEventListener("scroll", hideOnGlobal, true));
10475
- this._contextMenuGlobals.push(() => document.removeEventListener("keydown", hideOnEscape));
10493
+ this._contextMenuGlobals.push(() => document.removeEventListener("keydown", onMenuKey));
10476
10494
  this._contextMenuGlobals.push(() => window.removeEventListener("resize", hideOnResize));
10477
10495
  }
10478
10496
  _disarmContextMenuGlobals() {
@@ -10485,10 +10503,20 @@ var DataTable = class {
10485
10503
  this._contextMenuGlobals = [];
10486
10504
  }
10487
10505
  _hideContextMenu() {
10488
- if (this._contextMenuEl) {
10489
- this._contextMenuEl.style.display = "none";
10506
+ const menu = this._contextMenuEl;
10507
+ const returnTo = this._contextMenuReturnFocus;
10508
+ this._contextMenuReturnFocus = null;
10509
+ const held = !!menu && menu.style.display !== "none" && menu.contains(document.activeElement);
10510
+ if (menu) {
10511
+ menu.style.display = "none";
10490
10512
  }
10491
10513
  this._disarmContextMenuGlobals();
10514
+ if (held && returnTo?.isConnected) returnTo.focus?.({ preventScroll: true });
10515
+ }
10516
+ /** BUG-0040. The items the keyboard can land on. */
10517
+ _contextMenuEnabledItems() {
10518
+ const menu = this._contextMenuEl;
10519
+ return menu ? [...menu.querySelectorAll(".twm-context-menu-item:not(.disabled)")] : [];
10492
10520
  }
10493
10521
  _showContextMenu(clientX, clientY, custom = null) {
10494
10522
  const menu = this._ensureContextMenu();
@@ -10500,18 +10528,14 @@ var DataTable = class {
10500
10528
  item.classList.toggle("disabled", !hasSelection);
10501
10529
  item.style.pointerEvents = hasSelection ? "" : "none";
10502
10530
  });
10531
+ menu.querySelectorAll(".twm-context-menu-item").forEach((item) => {
10532
+ item.tabIndex = -1;
10533
+ if (!item.hasAttribute("role")) item.setAttribute("role", "menuitem");
10534
+ });
10535
+ if (!menu.contains(document.activeElement)) this._contextMenuReturnFocus = document.activeElement;
10503
10536
  menu.style.display = "block";
10504
- const rect = menu.getBoundingClientRect();
10505
- let left = clientX;
10506
- let top = clientY;
10507
- if (left + rect.width > window.innerWidth) {
10508
- left = window.innerWidth - rect.width - 8;
10509
- }
10510
- if (top + rect.height > window.innerHeight) {
10511
- top = window.innerHeight - rect.height - 8;
10512
- }
10513
- menu.style.left = `${left}px`;
10514
- menu.style.top = `${top}px`;
10537
+ placeMenuInViewport(menu, clientX, clientY);
10538
+ focusMenuItem(this._contextMenuEnabledItems()[0]);
10515
10539
  }
10516
10540
  /**
10517
10541
  * STORY-0010. The `ctx` handed to `contextMenuItems` and, later, to
@@ -10721,4 +10745,4 @@ export {
10721
10745
  resolvePaging,
10722
10746
  DataTable
10723
10747
  };
10724
- //# sourceMappingURL=chunk-LWV23YVE.js.map
10748
+ //# sourceMappingURL=chunk-NIJEJAZ7.js.map