flexdesk 0.17.13 → 0.17.14

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 (243) hide show
  1. package/CHANGELOG.md +27 -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 +45 -3
  9. package/css/flexdesk.css +60 -3
  10. package/css/overrides.css +15 -0
  11. package/css/reset.css +0 -0
  12. package/dist/canvas.js +0 -0
  13. package/dist/canvas.js.map +0 -0
  14. package/dist/chunk-3PHCPZHT.js +0 -0
  15. package/dist/chunk-3PHCPZHT.js.map +0 -0
  16. package/dist/chunk-FOOS3T5L.js +0 -0
  17. package/dist/chunk-FOOS3T5L.js.map +0 -0
  18. package/dist/chunk-GOQLR5WR.js +0 -0
  19. package/dist/chunk-GOQLR5WR.js.map +0 -0
  20. package/dist/chunk-HNU6MM2B.js +0 -0
  21. package/dist/chunk-HNU6MM2B.js.map +0 -0
  22. package/dist/chunk-JKZLNKG6.js +0 -0
  23. package/dist/chunk-JKZLNKG6.js.map +0 -0
  24. package/dist/chunk-JYWURG5T.js +0 -0
  25. package/dist/chunk-JYWURG5T.js.map +0 -0
  26. package/dist/chunk-N7HC3ADV.js +0 -0
  27. package/dist/chunk-N7HC3ADV.js.map +0 -0
  28. package/dist/core.js +3 -18
  29. package/dist/core.js.map +2 -2
  30. package/dist/editor.js.map +0 -0
  31. package/dist/flexdesk.css +60 -3
  32. package/dist/flow.js.map +0 -0
  33. package/dist/host.js +0 -0
  34. package/dist/host.js.map +0 -0
  35. package/dist/reset.css +0 -0
  36. package/dist/tile_registry-6WZPTUZV.js +0 -0
  37. package/dist/tile_registry-6WZPTUZV.js.map +0 -0
  38. package/dist/widgets.js +27 -18
  39. package/dist/widgets.js.map +2 -2
  40. package/dist/wm.js +195 -28
  41. package/dist/wm.js.map +3 -3
  42. package/docs/README.md +1 -1
  43. package/docs/best-practices.md +1 -1
  44. package/docs/components/command-palette.md +0 -0
  45. package/docs/components/conversation.md +0 -0
  46. package/docs/components/data-table-grid.md +0 -0
  47. package/docs/components/data-table.md +0 -0
  48. package/docs/components/editor.md +0 -0
  49. package/docs/components/flow-canvas-editor.md +0 -0
  50. package/docs/components/flow-editors.md +0 -0
  51. package/docs/components/flow-lane-editor.md +0 -0
  52. package/docs/components/flow-outline-editor.md +0 -0
  53. package/docs/components/forms-and-dialogs.md +0 -0
  54. package/docs/components/input-fields.md +0 -0
  55. package/docs/components/keymap.md +66 -3
  56. package/docs/components/layout-widgets.md +32 -0
  57. package/docs/components/markdown-and-outline.md +0 -0
  58. package/docs/components/menus.md +9 -5
  59. package/docs/components/notifications.md +0 -0
  60. package/docs/components/panels-and-desktops.md +56 -0
  61. package/docs/components/record-list-and-fact-table.md +0 -0
  62. package/docs/components/settings-view.md +0 -0
  63. package/docs/components/shell.md +0 -0
  64. package/docs/components/slide-out-panel.md +0 -0
  65. package/docs/components/wizard.md +0 -0
  66. package/docs/concepts/building-and-packaging.md +0 -0
  67. package/docs/concepts/domain-neutrality.md +0 -0
  68. package/docs/concepts/host-port.md +0 -0
  69. package/docs/concepts/packages-and-entry-points.md +0 -0
  70. package/docs/concepts/peer-dependencies.md +0 -0
  71. package/docs/concepts/state-guard.md +65 -2
  72. package/docs/concepts/styling.md +24 -6
  73. package/docs/quickstart.md +0 -0
  74. package/editor.js +0 -0
  75. package/flow.js +0 -0
  76. package/host.js +0 -0
  77. package/package.json +2 -2
  78. package/src/canvas/canvas_adapter.js +0 -0
  79. package/src/canvas/edge_router.js +0 -0
  80. package/src/canvas/graph/connector_router.js +0 -0
  81. package/src/canvas/graph/history_service.js +0 -0
  82. package/src/canvas/graph/node_platform.js +0 -0
  83. package/src/canvas/index.js +0 -0
  84. package/src/canvas/layered_layout.js +0 -0
  85. package/src/charts/data_series_plot_window.js +0 -0
  86. package/src/charts/downsample.js +0 -0
  87. package/src/charts/plot_config.js +0 -0
  88. package/src/charts/plotly_wrapper.js +0 -0
  89. package/src/core/event_bus.js +0 -0
  90. package/src/core/logging.js +0 -0
  91. package/src/core/settings.js +0 -0
  92. package/src/core/state_guard.js +0 -0
  93. package/src/core/state_guard_config.js +19 -18
  94. package/src/core/state_machine.js +0 -0
  95. package/src/editor/editor_pane.js +0 -0
  96. package/src/editor/monaco_editor_factory.js +0 -0
  97. package/src/editor/monaco_loader.js +0 -0
  98. package/src/editor/notebook_search.js +0 -0
  99. package/src/editor/notebook_undo_manager.js +0 -0
  100. package/src/editor/split_pane_container.js +0 -0
  101. package/src/flow/canvas_editor/connections.js +0 -0
  102. package/src/flow/canvas_editor/editor.js +0 -0
  103. package/src/flow/canvas_editor/index.js +0 -0
  104. package/src/flow/canvas_editor/layout.js +0 -0
  105. package/src/flow/canvas_editor/strings.js +0 -0
  106. package/src/flow/kit/always_before.js +0 -0
  107. package/src/flow/kit/catalogue.js +0 -0
  108. package/src/flow/kit/chip_input.js +0 -0
  109. package/src/flow/kit/dom.js +0 -0
  110. package/src/flow/kit/findings.js +0 -0
  111. package/src/flow/kit/history.js +0 -0
  112. package/src/flow/kit/index.js +0 -0
  113. package/src/flow/kit/keys.js +0 -0
  114. package/src/flow/kit/logic_graph.js +0 -0
  115. package/src/flow/kit/references.js +0 -0
  116. package/src/flow/kit/settings_panel.js +0 -0
  117. package/src/flow/kit/settings_schema.js +0 -0
  118. package/src/flow/kit/step_picker.js +0 -0
  119. package/src/flow/kit/strings.js +0 -0
  120. package/src/flow/kit/value_picker.js +0 -0
  121. package/src/flow/kit/widgets.js +0 -0
  122. package/src/flow/lanes/editor.js +0 -0
  123. package/src/flow/lanes/index.js +0 -0
  124. package/src/flow/lanes/layout.js +0 -0
  125. package/src/flow/lanes/pipeline.js +0 -0
  126. package/src/flow/lanes/preview.js +0 -0
  127. package/src/flow/lanes/strings.js +0 -0
  128. package/src/flow/outline/editor.js +0 -0
  129. package/src/flow/outline/index.js +0 -0
  130. package/src/flow/outline/mapping.js +0 -0
  131. package/src/flow/outline/menu.js +0 -0
  132. package/src/flow/outline/operations.js +0 -0
  133. package/src/flow/outline/recognise.js +0 -0
  134. package/src/flow/outline/strings.js +0 -0
  135. package/src/help/help_modal.js +0 -0
  136. package/src/help/help_registry.js +0 -0
  137. package/src/host/external_links.js +0 -0
  138. package/src/host/file_picker.js +0 -0
  139. package/src/host/host.js +0 -0
  140. package/src/host/photino_host.js +0 -0
  141. package/src/host/photino_host.md +0 -0
  142. package/src/host/pywebview_host.js +0 -0
  143. package/src/tiles/chart_tiles.js +0 -0
  144. package/src/tiles/config_schema.js +0 -0
  145. package/src/tiles/figure_tile.js +0 -0
  146. package/src/tiles/layout_persistence.js +0 -0
  147. package/src/tiles/list_tiles.js +0 -0
  148. package/src/tiles/scope_picker.js +0 -0
  149. package/src/tiles/tile_config_form.js +0 -0
  150. package/src/tiles/tile_grid.js +0 -0
  151. package/src/tiles/tile_registry.js +0 -0
  152. package/src/tiling/bottom_panel_tabs.js +0 -0
  153. package/src/tiling/command_palette.js +0 -0
  154. package/src/tiling/content_registry.js +0 -0
  155. package/src/tiling/desktops.js +79 -16
  156. package/src/tiling/entity_sources.js +0 -0
  157. package/src/tiling/keymap.js +70 -2
  158. package/src/tiling/kind_taxonomy.js +0 -0
  159. package/src/tiling/landing_table.js +0 -0
  160. package/src/tiling/loading_overlay.js +0 -0
  161. package/src/tiling/nav_panel.js +0 -0
  162. package/src/tiling/page_factory.js +0 -0
  163. package/src/tiling/panel_availability.js +0 -0
  164. package/src/tiling/panel_keys.js +0 -0
  165. package/src/tiling/shell.js +9 -2
  166. package/src/tiling/tab_strip.js +0 -0
  167. package/src/tiling/tile_breadcrumb.js +0 -0
  168. package/src/tiling/tile_renderer.js +0 -0
  169. package/src/tiling/tile_tab_menu.js +0 -0
  170. package/src/tiling/tile_tree.js +63 -5
  171. package/src/tiling/wm.js +59 -6
  172. package/src/tiling/zoom.js +0 -0
  173. package/src/ui/base/component_base.js +0 -0
  174. package/src/ui/base/controller_base.js +0 -0
  175. package/src/ui/base/page_base.js +0 -0
  176. package/src/ui/components/about_dialog.js +0 -0
  177. package/src/ui/components/alert_log.js +0 -0
  178. package/src/ui/components/alerts_pane.js +0 -0
  179. package/src/ui/components/attribute_list_editor.js +0 -0
  180. package/src/ui/components/autocomplete_field.js +0 -0
  181. package/src/ui/components/cell_editor_host.js +0 -0
  182. package/src/ui/components/cell_editors.js +0 -0
  183. package/src/ui/components/cell_grid.js +0 -0
  184. package/src/ui/components/cell_paste.js +0 -0
  185. package/src/ui/components/cell_selection.js +0 -0
  186. package/src/ui/components/choice_controls.js +0 -0
  187. package/src/ui/components/color_field.js +0 -0
  188. package/src/ui/components/color_list_field.js +0 -0
  189. package/src/ui/components/column_fit.js +0 -0
  190. package/src/ui/components/column_groups.js +0 -0
  191. package/src/ui/components/column_order.js +0 -0
  192. package/src/ui/components/computing_status_window.js +0 -0
  193. package/src/ui/components/confirm_dialog.js +0 -0
  194. package/src/ui/components/conversation_view.js +0 -0
  195. package/src/ui/components/crosstab.js +0 -0
  196. package/src/ui/components/detail_header.js +0 -0
  197. package/src/ui/components/document_outline.js +0 -0
  198. package/src/ui/components/drag_reorder.js +0 -0
  199. package/src/ui/components/fact_table.js +0 -0
  200. package/src/ui/components/fill_handle.js +0 -0
  201. package/src/ui/components/gallery_picker.js +0 -0
  202. package/src/ui/components/header_actions.js +0 -0
  203. package/src/ui/components/inline_renamer.js +0 -0
  204. package/src/ui/components/job_progress.js +0 -0
  205. package/src/ui/components/menu_bar.js +0 -0
  206. package/src/ui/components/modal.js +0 -0
  207. package/src/ui/components/notification_history.js +0 -0
  208. package/src/ui/components/progress.js +0 -0
  209. package/src/ui/components/record_list.js +0 -0
  210. package/src/ui/components/row_activation.js +0 -0
  211. package/src/ui/components/section_stack.js +0 -0
  212. package/src/ui/components/series.js +0 -0
  213. package/src/ui/components/settings_view.js +0 -0
  214. package/src/ui/components/slide_out_panel.js +0 -0
  215. package/src/ui/components/slider_field.js +0 -0
  216. package/src/ui/components/sortable_list.js +0 -0
  217. package/src/ui/components/staged_edits.js +0 -0
  218. package/src/ui/components/staged_history.js +0 -0
  219. package/src/ui/components/table_filter_chips.js +0 -0
  220. package/src/ui/components/table_state_store.js +0 -0
  221. package/src/ui/components/table_structure.js +0 -0
  222. package/src/ui/components/table_values.js +0 -0
  223. package/src/ui/components/tabs.js +0 -0
  224. package/src/ui/components/tag_input.js +0 -0
  225. package/src/ui/components/toast.js +0 -0
  226. package/src/ui/components/toggle_field.js +0 -0
  227. package/src/ui/components/tree_view.js +41 -18
  228. package/src/ui/components/tsv.js +0 -0
  229. package/src/ui/components/window_taskbar.js +0 -0
  230. package/src/ui/components/wizard.js +0 -0
  231. package/src/ui/controllers/window_chrome_controller.js +0 -0
  232. package/src/ui/notification_center.js +0 -0
  233. package/src/ui/utils/auto_scrollbars.js +0 -0
  234. package/src/ui/utils/markdown.js +0 -0
  235. package/src/ui/utils/native_context_menu.js +0 -0
  236. package/src/ui/utils/overlay_scrollbar.js +0 -0
  237. package/src/ui/utils/raf_resize_observer.js +0 -0
  238. package/src/ui/utils/scroll_lock.js +0 -0
  239. package/src/ui/utils/strip_scroll.js +0 -0
  240. package/src/ui/utils/tooltip_service.js +0 -0
  241. package/tiles.js +0 -0
  242. package/widgets.js +0 -0
  243. 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
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
@@ -128,28 +128,39 @@ export function createTreeNode(options) {
128
128
  `;
129
129
  setText(node, '.twm-tree-node__label', label);
130
130
 
131
- // Add action buttons if specified
132
- if (actions) {
133
- const actionsEl = node.querySelector('.twm-tree-node__actions');
134
- Object.entries(actions).forEach(([actionId, actionConfig]) => {
135
- const btn = document.createElement('button');
136
- btn.className = 'twm-tree-node__action-btn';
137
- btn.dataset.action = actionId;
138
- btn.title = actionConfig.title || actionId;
139
- btn.innerHTML = `<span class="material-symbols-outlined">${actionConfig.icon}</span>`;
140
- if (actionConfig.onClick) {
141
- btn.addEventListener('click', (e) => {
142
- e.stopPropagation();
143
- actionConfig.onClick(id, e);
144
- });
145
- }
146
- actionsEl.appendChild(btn);
147
- });
148
- }
131
+ if (actions) appendActionButtons(node.querySelector('.twm-tree-node__actions'), id, actions);
149
132
 
150
133
  return node;
151
134
  }
152
135
 
136
+ /**
137
+ * Fill a node's or an item's actions slot: one `.twm-tree-node__action-btn`
138
+ * per entry. A click on an entry with `onClick` runs `onClick(id, event)` and
139
+ * goes no further, so it neither selects the item nor toggles the node; nor
140
+ * does a double-click, so it never reaches TreeView's onItemDoubleClick.
141
+ * @param {HTMLElement} actionsEl
142
+ * @param {string} id - The node's or item's id
143
+ * @param {Object<string, { icon: string, title?: string, onClick?: Function }>} actions
144
+ */
145
+ function appendActionButtons(actionsEl, id, actions) {
146
+ Object.entries(actions).forEach(([actionId, actionConfig]) => {
147
+ const btn = document.createElement('button');
148
+ btn.type = 'button';
149
+ btn.className = 'twm-tree-node__action-btn';
150
+ btn.dataset.action = actionId;
151
+ btn.title = actionConfig.title || actionId;
152
+ btn.innerHTML = `<span class="material-symbols-outlined">${actionConfig.icon}</span>`;
153
+ if (actionConfig.onClick) {
154
+ btn.addEventListener('click', (e) => {
155
+ e.stopPropagation();
156
+ actionConfig.onClick(id, e);
157
+ });
158
+ btn.addEventListener('dblclick', (e) => e.stopPropagation());
159
+ }
160
+ actionsEl.appendChild(btn);
161
+ });
162
+ }
163
+
153
164
  /**
154
165
  * Create a tree item (leaf node)
155
166
  * @param {Object} options - Item options
@@ -164,6 +175,10 @@ export function createTreeNode(options) {
164
175
  * @param {Object} [options.badge] - Optional badge config
165
176
  * @param {string} [options.badge.text] - Badge text (if empty, renders as status dot)
166
177
  * @param {string} [options.badge.variant] - 'muted'|'pass'|'fail'|'error'
178
+ * @param {Object} [options.actions] - Row actions, as createTreeNode takes them
179
+ * ({ id: { icon, title, onClick(id, event) } }): buttons in one line at the
180
+ * row's end (`.twm-tree-item__actions`), shown on hover, on focus within and
181
+ * on the selected item
167
182
  * @returns {HTMLElement} - Item element
168
183
  */
169
184
  export function createTreeItem(options) {
@@ -177,6 +192,7 @@ export function createTreeItem(options) {
177
192
  subtitle = null,
178
193
  data = null,
179
194
  badge = null,
195
+ actions = null,
180
196
  } = options;
181
197
 
182
198
  const item = document.createElement('div');
@@ -220,6 +236,13 @@ export function createTreeItem(options) {
220
236
  if (subtitle) setText(item, '.twm-tree-item__subtitle', subtitle);
221
237
  if (badge?.text) setText(item, '.twm-tree-item__badge', badge.text);
222
238
 
239
+ if (actions) {
240
+ const actionsEl = document.createElement('span');
241
+ actionsEl.className = 'twm-tree-item__actions';
242
+ appendActionButtons(actionsEl, id, actions);
243
+ item.appendChild(actionsEl);
244
+ }
245
+
223
246
  return item;
224
247
  }
225
248
 
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
package/tiles.js CHANGED
File without changes
package/widgets.js CHANGED
File without changes
package/wm.js CHANGED
File without changes