@dxos/plugin-help 0.8.4-main.70d3990 → 0.8.4-main.7996785055

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 (172) hide show
  1. package/dist/lib/browser/ShortcutsDialogContent-RI3YOW54.mjs +24 -0
  2. package/dist/lib/browser/ShortcutsDialogContent-RI3YOW54.mjs.map +7 -0
  3. package/dist/lib/browser/ShortcutsHints-HSVYDHWG.mjs +12 -0
  4. package/dist/lib/browser/ShortcutsHints-HSVYDHWG.mjs.map +7 -0
  5. package/dist/lib/browser/ShortcutsList-U6G236UM.mjs +12 -0
  6. package/dist/lib/browser/ShortcutsList-U6G236UM.mjs.map +7 -0
  7. package/dist/lib/browser/app-graph-builder-QUTWMQYP.mjs +82 -0
  8. package/dist/lib/browser/app-graph-builder-QUTWMQYP.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-2XOKPYGX.mjs +31 -0
  10. package/dist/lib/browser/chunk-2XOKPYGX.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-DZKLU3W7.mjs +335 -0
  12. package/dist/lib/browser/chunk-DZKLU3W7.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-GB56M4NZ.mjs +11 -0
  14. package/dist/lib/browser/chunk-GB56M4NZ.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-GJZB55DV.mjs +8 -0
  16. package/dist/lib/browser/chunk-GJZB55DV.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-N2ZFAB4D.mjs +37 -0
  18. package/dist/lib/browser/chunk-N2ZFAB4D.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-BCYK4LXW.mjs → chunk-W4ZZ52LP.mjs} +9 -2
  20. package/dist/lib/browser/chunk-W4ZZ52LP.mjs.map +7 -0
  21. package/dist/lib/browser/index.mjs +45 -57
  22. package/dist/lib/browser/index.mjs.map +4 -4
  23. package/dist/lib/browser/meta.json +1 -1
  24. package/dist/lib/browser/meta.mjs +1 -1
  25. package/dist/lib/browser/operation-handler-YYBFFJUF.mjs +16 -0
  26. package/dist/lib/browser/operation-handler-YYBFFJUF.mjs.map +7 -0
  27. package/dist/lib/browser/operations/index.mjs +12 -0
  28. package/dist/lib/browser/operations/index.mjs.map +7 -0
  29. package/dist/lib/browser/react-root-NUWHII7F.mjs +43 -0
  30. package/dist/lib/browser/react-root-NUWHII7F.mjs.map +7 -0
  31. package/dist/lib/browser/react-surface-TT5TZP6Z.mjs +42 -0
  32. package/dist/lib/browser/react-surface-TT5TZP6Z.mjs.map +7 -0
  33. package/dist/lib/browser/start-CWVIDVPK.mjs +23 -0
  34. package/dist/lib/browser/start-CWVIDVPK.mjs.map +7 -0
  35. package/dist/lib/browser/state-H4S5TWSP.mjs +27 -0
  36. package/dist/lib/browser/state-H4S5TWSP.mjs.map +7 -0
  37. package/dist/lib/browser/types/index.mjs +4 -4
  38. package/dist/types/src/HelpPlugin.d.ts +2 -1
  39. package/dist/types/src/HelpPlugin.d.ts.map +1 -1
  40. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  41. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  42. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  43. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  44. package/dist/types/src/capabilities/index.d.ts +5 -8
  45. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  46. package/dist/types/src/capabilities/operation-handler/index.d.ts +4 -0
  47. package/dist/types/src/capabilities/operation-handler/index.d.ts.map +1 -0
  48. package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts +6 -0
  49. package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts.map +1 -0
  50. package/dist/types/src/capabilities/react-root/index.d.ts +6 -0
  51. package/dist/types/src/capabilities/react-root/index.d.ts.map +1 -0
  52. package/dist/types/src/capabilities/react-root/react-root.d.ts +10 -0
  53. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -0
  54. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  55. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  56. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  57. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  58. package/dist/types/src/capabilities/state/index.d.ts +11 -0
  59. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  60. package/dist/types/src/capabilities/state/state.d.ts +13 -0
  61. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  62. package/dist/types/src/components/Shortcuts/ShortcutsHints.d.ts.map +1 -1
  63. package/dist/types/src/components/Shortcuts/ShortcutsSection.d.ts.map +1 -1
  64. package/dist/types/src/components/Shortcuts/index.d.ts +0 -1
  65. package/dist/types/src/components/Shortcuts/index.d.ts.map +1 -1
  66. package/dist/types/src/components/WelcomeTour/WelcomeTour.d.ts.map +1 -1
  67. package/dist/types/src/components/WelcomeTour/WelcomeTour.stories.d.ts.map +1 -1
  68. package/dist/types/src/constants.d.ts +2 -0
  69. package/dist/types/src/constants.d.ts.map +1 -0
  70. package/dist/types/src/{components/Shortcuts/ShortcutsDialog.d.ts → containers/ShortcutsDialogContent/ShortcutsDialogContent.d.ts} +1 -2
  71. package/dist/types/src/containers/ShortcutsDialogContent/ShortcutsDialogContent.d.ts.map +1 -0
  72. package/dist/types/src/containers/ShortcutsDialogContent/ShortcutsDialogContent.stories.d.ts +25 -0
  73. package/dist/types/src/containers/ShortcutsDialogContent/ShortcutsDialogContent.stories.d.ts.map +1 -0
  74. package/dist/types/src/containers/ShortcutsDialogContent/index.d.ts +3 -0
  75. package/dist/types/src/containers/ShortcutsDialogContent/index.d.ts.map +1 -0
  76. package/dist/types/src/containers/ShortcutsHints/ShortcutsHints.d.ts +2 -0
  77. package/dist/types/src/containers/ShortcutsHints/ShortcutsHints.d.ts.map +1 -0
  78. package/dist/types/src/containers/ShortcutsHints/index.d.ts +3 -0
  79. package/dist/types/src/containers/ShortcutsHints/index.d.ts.map +1 -0
  80. package/dist/types/src/containers/ShortcutsList/ShortcutsList.d.ts +2 -0
  81. package/dist/types/src/containers/ShortcutsList/ShortcutsList.d.ts.map +1 -0
  82. package/dist/types/src/containers/ShortcutsList/index.d.ts +3 -0
  83. package/dist/types/src/containers/ShortcutsList/index.d.ts.map +1 -0
  84. package/dist/types/src/containers/index.d.ts +5 -0
  85. package/dist/types/src/containers/index.d.ts.map +1 -0
  86. package/dist/types/src/index.d.ts +2 -1
  87. package/dist/types/src/index.d.ts.map +1 -1
  88. package/dist/types/src/meta.d.ts +2 -2
  89. package/dist/types/src/meta.d.ts.map +1 -1
  90. package/dist/types/src/operations/definitions.d.ts +4 -0
  91. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  92. package/dist/types/src/operations/index.d.ts +4 -0
  93. package/dist/types/src/operations/index.d.ts.map +1 -0
  94. package/dist/types/src/operations/start.d.ts +5 -0
  95. package/dist/types/src/operations/start.d.ts.map +1 -0
  96. package/dist/types/src/types/capabilities.d.ts +21 -0
  97. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  98. package/dist/types/src/types/index.d.ts +1 -0
  99. package/dist/types/src/types/index.d.ts.map +1 -1
  100. package/dist/types/src/types/schema.d.ts +2 -14
  101. package/dist/types/src/types/schema.d.ts.map +1 -1
  102. package/dist/types/tsconfig.tsbuildinfo +1 -1
  103. package/package.json +48 -35
  104. package/src/HelpPlugin.tsx +17 -42
  105. package/src/capabilities/app-graph-builder/app-graph-builder.ts +62 -0
  106. package/src/capabilities/app-graph-builder/index.ts +7 -0
  107. package/src/capabilities/index.ts +5 -8
  108. package/src/capabilities/operation-handler/index.ts +11 -0
  109. package/src/capabilities/operation-handler/operation-handler.ts +16 -0
  110. package/src/capabilities/react-root/index.ts +7 -0
  111. package/src/capabilities/react-root/react-root.tsx +36 -0
  112. package/src/capabilities/react-surface/index.ts +7 -0
  113. package/src/capabilities/react-surface/react-surface.tsx +36 -0
  114. package/src/capabilities/state/index.ts +7 -0
  115. package/src/capabilities/state/state.ts +27 -0
  116. package/src/components/Shortcuts/ShortcutsHints.tsx +3 -2
  117. package/src/components/Shortcuts/ShortcutsList.tsx +3 -3
  118. package/src/components/Shortcuts/ShortcutsSection.tsx +1 -3
  119. package/src/components/Shortcuts/index.ts +0 -1
  120. package/src/components/Shortcuts/styles.ts +3 -3
  121. package/src/components/Tooltip/Tooltip.tsx +4 -4
  122. package/src/components/WelcomeTour/WelcomeTour.stories.tsx +13 -9
  123. package/src/components/WelcomeTour/WelcomeTour.tsx +3 -2
  124. package/src/constants.ts +7 -0
  125. package/src/containers/ShortcutsDialogContent/ShortcutsDialogContent.stories.tsx +39 -0
  126. package/src/containers/ShortcutsDialogContent/ShortcutsDialogContent.tsx +28 -0
  127. package/src/containers/ShortcutsDialogContent/index.ts +7 -0
  128. package/src/containers/ShortcutsHints/ShortcutsHints.tsx +5 -0
  129. package/src/containers/ShortcutsHints/index.ts +7 -0
  130. package/src/containers/ShortcutsList/ShortcutsList.tsx +5 -0
  131. package/src/containers/ShortcutsList/index.ts +7 -0
  132. package/src/containers/index.ts +9 -0
  133. package/src/index.ts +2 -1
  134. package/src/meta.ts +3 -3
  135. package/src/operations/definitions.ts +19 -0
  136. package/src/operations/index.ts +9 -0
  137. package/src/operations/start.ts +21 -0
  138. package/src/types/capabilities.ts +24 -0
  139. package/src/types/index.ts +1 -0
  140. package/src/types/schema.ts +2 -12
  141. package/dist/lib/browser/app-graph-builder-L6GUMAIH.mjs +0 -80
  142. package/dist/lib/browser/app-graph-builder-L6GUMAIH.mjs.map +0 -7
  143. package/dist/lib/browser/chunk-AZJJLAG7.mjs +0 -16
  144. package/dist/lib/browser/chunk-AZJJLAG7.mjs.map +0 -7
  145. package/dist/lib/browser/chunk-BCYK4LXW.mjs.map +0 -7
  146. package/dist/lib/browser/chunk-I7FKM6VC.mjs +0 -34
  147. package/dist/lib/browser/chunk-I7FKM6VC.mjs.map +0 -7
  148. package/dist/lib/browser/chunk-W4AUSEGO.mjs +0 -408
  149. package/dist/lib/browser/chunk-W4AUSEGO.mjs.map +0 -7
  150. package/dist/lib/browser/react-root-QJH33RNI.mjs +0 -35
  151. package/dist/lib/browser/react-root-QJH33RNI.mjs.map +0 -7
  152. package/dist/lib/browser/react-surface-OTMERRAV.mjs +0 -36
  153. package/dist/lib/browser/react-surface-OTMERRAV.mjs.map +0 -7
  154. package/dist/lib/browser/state-5PVJCYWJ.mjs +0 -29
  155. package/dist/lib/browser/state-5PVJCYWJ.mjs.map +0 -7
  156. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  157. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  158. package/dist/types/src/capabilities/capabilities.d.ts +0 -10
  159. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  160. package/dist/types/src/capabilities/react-root.d.ts +0 -8
  161. package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
  162. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  163. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  164. package/dist/types/src/capabilities/state.d.ts +0 -4
  165. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  166. package/dist/types/src/components/Shortcuts/ShortcutsDialog.d.ts.map +0 -1
  167. package/src/capabilities/app-graph-builder.ts +0 -78
  168. package/src/capabilities/capabilities.ts +0 -13
  169. package/src/capabilities/react-root.tsx +0 -34
  170. package/src/capabilities/react-surface.tsx +0 -30
  171. package/src/capabilities/state.ts +0 -24
  172. package/src/components/Shortcuts/ShortcutsDialog.tsx +0 -32
@@ -0,0 +1,24 @@
1
+ import {
2
+ ShortcutsList
3
+ } from "./chunk-DZKLU3W7.mjs";
4
+ import "./chunk-N2ZFAB4D.mjs";
5
+ import {
6
+ meta
7
+ } from "./chunk-W4ZZ52LP.mjs";
8
+
9
+ // src/containers/ShortcutsDialogContent/ShortcutsDialogContent.tsx
10
+ import React from "react";
11
+ import { Dialog, useTranslation } from "@dxos/react-ui";
12
+ var ShortcutsDialogContent = () => {
13
+ const { t } = useTranslation(meta.id);
14
+ return /* @__PURE__ */ React.createElement(Dialog.Content, null, /* @__PURE__ */ React.createElement(Dialog.Header, null, /* @__PURE__ */ React.createElement(Dialog.Title, null, t("shortcuts dialog title")), /* @__PURE__ */ React.createElement(Dialog.Close, {
15
+ asChild: true
16
+ }, /* @__PURE__ */ React.createElement(Dialog.CloseIconButton, null))), /* @__PURE__ */ React.createElement(Dialog.Body, null, /* @__PURE__ */ React.createElement(ShortcutsList, null)));
17
+ };
18
+
19
+ // src/containers/ShortcutsDialogContent/index.ts
20
+ var ShortcutsDialogContent_default = ShortcutsDialogContent;
21
+ export {
22
+ ShortcutsDialogContent_default as default
23
+ };
24
+ //# sourceMappingURL=ShortcutsDialogContent-RI3YOW54.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/ShortcutsDialogContent/ShortcutsDialogContent.tsx", "../../../src/containers/ShortcutsDialogContent/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Dialog, useTranslation } from '@dxos/react-ui';\n\nimport { ShortcutsList } from '../../components';\nimport { meta } from '../../meta';\n\nexport const ShortcutsDialogContent = () => {\n const { t } = useTranslation(meta.id);\n\n return (\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>{t('shortcuts dialog title')}</Dialog.Title>\n <Dialog.Close asChild>\n <Dialog.CloseIconButton />\n </Dialog.Close>\n </Dialog.Header>\n <Dialog.Body>\n <ShortcutsList />\n </Dialog.Body>\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ShortcutsDialogContent } from './ShortcutsDialogContent';\n\nexport default ShortcutsDialogContent;\n"],
5
+ "mappings": ";;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,QAAQC,sBAAsB;AAKhC,IAAMC,yBAAyB,MAAA;AACpC,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AAEpC,SACE,sBAAA,cAACC,OAAOC,SAAO,MACb,sBAAA,cAACD,OAAOE,QAAM,MACZ,sBAAA,cAACF,OAAOG,OAAK,MAAEP,EAAE,wBAAA,CAAA,GACjB,sBAAA,cAACI,OAAOI,OAAK;IAACC,SAAAA;KACZ,sBAAA,cAACL,OAAOM,iBAAe,IAAA,CAAA,CAAA,GAG3B,sBAAA,cAACN,OAAOO,MAAI,MACV,sBAAA,cAACC,eAAAA,IAAAA,CAAAA,CAAAA;AAIT;;;ACrBA,IAAA,iCAAeC;",
6
+ "names": ["React", "Dialog", "useTranslation", "ShortcutsDialogContent", "t", "useTranslation", "meta", "id", "Dialog", "Content", "Header", "Title", "Close", "asChild", "CloseIconButton", "Body", "ShortcutsList", "ShortcutsDialogContent"]
7
+ }
@@ -0,0 +1,12 @@
1
+ import {
2
+ ShortcutsHints
3
+ } from "./chunk-DZKLU3W7.mjs";
4
+ import "./chunk-N2ZFAB4D.mjs";
5
+ import "./chunk-W4ZZ52LP.mjs";
6
+
7
+ // src/containers/ShortcutsHints/index.ts
8
+ var ShortcutsHints_default = ShortcutsHints;
9
+ export {
10
+ ShortcutsHints_default as default
11
+ };
12
+ //# sourceMappingURL=ShortcutsHints-HSVYDHWG.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/ShortcutsHints/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { ShortcutsHints } from './ShortcutsHints';\n\nexport default ShortcutsHints;\n"],
5
+ "mappings": ";;;;;;;AAMA,IAAA,yBAAeA;",
6
+ "names": ["ShortcutsHints"]
7
+ }
@@ -0,0 +1,12 @@
1
+ import {
2
+ ShortcutsList
3
+ } from "./chunk-DZKLU3W7.mjs";
4
+ import "./chunk-N2ZFAB4D.mjs";
5
+ import "./chunk-W4ZZ52LP.mjs";
6
+
7
+ // src/containers/ShortcutsList/index.ts
8
+ var ShortcutsList_default = ShortcutsList;
9
+ export {
10
+ ShortcutsList_default as default
11
+ };
12
+ //# sourceMappingURL=ShortcutsList-U6G236UM.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/ShortcutsList/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { ShortcutsList } from './ShortcutsList';\n\nexport default ShortcutsList;\n"],
5
+ "mappings": ";;;;;;;AAMA,IAAA,wBAAeA;",
6
+ "names": ["ShortcutsList"]
7
+ }
@@ -0,0 +1,82 @@
1
+ import {
2
+ SHORTCUTS_DIALOG
3
+ } from "./chunk-GB56M4NZ.mjs";
4
+ import "./chunk-GJZB55DV.mjs";
5
+ import {
6
+ definitions_exports
7
+ } from "./chunk-2XOKPYGX.mjs";
8
+ import {
9
+ HelpCapabilities
10
+ } from "./chunk-N2ZFAB4D.mjs";
11
+ import {
12
+ meta
13
+ } from "./chunk-W4ZZ52LP.mjs";
14
+
15
+ // src/capabilities/app-graph-builder/app-graph-builder.ts
16
+ import * as Effect from "effect/Effect";
17
+ import { Capabilities, Capability } from "@dxos/app-framework";
18
+ import { GraphBuilder, NodeMatcher } from "@dxos/app-graph";
19
+ import { AppCapabilities, LayoutOperation } from "@dxos/app-toolkit";
20
+ import { Operation } from "@dxos/operation";
21
+ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function* () {
22
+ const extensions = yield* GraphBuilder.createExtension({
23
+ id: meta.id,
24
+ match: NodeMatcher.whenRoot,
25
+ actions: () => Effect.succeed([
26
+ {
27
+ id: definitions_exports.Start.meta.key,
28
+ data: Effect.fnUntraced(function* () {
29
+ yield* Capabilities.updateAtomValue(HelpCapabilities.State, (s) => ({
30
+ ...s,
31
+ showHints: true
32
+ }));
33
+ yield* Operation.invoke(definitions_exports.Start);
34
+ }),
35
+ properties: {
36
+ label: [
37
+ "open help tour",
38
+ {
39
+ ns: meta.id
40
+ }
41
+ ],
42
+ icon: "ph--info--regular",
43
+ keyBinding: {
44
+ macos: "shift+meta+/",
45
+ windows: "shift+ctrl+/",
46
+ linux: "shift+ctrl+?"
47
+ },
48
+ testId: "helpPlugin.openHelp"
49
+ }
50
+ },
51
+ {
52
+ id: `${meta.id}.open-shortcuts`,
53
+ data: Effect.fnUntraced(function* () {
54
+ yield* Capabilities.updateAtomValue(HelpCapabilities.State, (s) => ({
55
+ ...s,
56
+ showHints: true
57
+ }));
58
+ yield* Operation.invoke(LayoutOperation.UpdateDialog, {
59
+ subject: SHORTCUTS_DIALOG
60
+ });
61
+ }),
62
+ properties: {
63
+ label: [
64
+ "open shortcuts label",
65
+ {
66
+ ns: meta.id
67
+ }
68
+ ],
69
+ icon: "ph--keyboard--regular",
70
+ keyBinding: {
71
+ macos: "meta+ctrl+/"
72
+ }
73
+ }
74
+ }
75
+ ])
76
+ });
77
+ return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);
78
+ }));
79
+ export {
80
+ app_graph_builder_default as default
81
+ };
82
+ //# sourceMappingURL=app-graph-builder-QUTWMQYP.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { GraphBuilder, NodeMatcher } from '@dxos/app-graph';\nimport { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/operation';\n\nimport { SHORTCUTS_DIALOG } from '../../constants';\nimport { meta } from '../../meta';\nimport { HelpCapabilities } from '../../types';\nimport { HelpOperation } from '../../operations';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const extensions = yield* GraphBuilder.createExtension({\n id: meta.id,\n match: NodeMatcher.whenRoot,\n actions: () =>\n Effect.succeed([\n {\n id: HelpOperation.Start.meta.key,\n data: Effect.fnUntraced(function* () {\n yield* Capabilities.updateAtomValue(HelpCapabilities.State, (s) => ({ ...s, showHints: true }));\n yield* Operation.invoke(HelpOperation.Start);\n }),\n properties: {\n label: ['open help tour', { ns: meta.id }],\n icon: 'ph--info--regular',\n keyBinding: {\n macos: 'shift+meta+/',\n windows: 'shift+ctrl+/',\n linux: 'shift+ctrl+?',\n },\n testId: 'helpPlugin.openHelp',\n },\n },\n {\n id: `${meta.id}.open-shortcuts`,\n data: Effect.fnUntraced(function* () {\n yield* Capabilities.updateAtomValue(HelpCapabilities.State, (s) => ({ ...s, showHints: true }));\n yield* Operation.invoke(LayoutOperation.UpdateDialog, {\n subject: SHORTCUTS_DIALOG,\n });\n }),\n properties: {\n label: ['open shortcuts label', { ns: meta.id }],\n icon: 'ph--keyboard--regular',\n keyBinding: {\n macos: 'meta+ctrl+/',\n },\n },\n },\n ]),\n });\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,cAAcC,mBAAmB;AAC1C,SAASC,iBAAiBC,uBAAuB;AACjD,SAASC,iBAAiB;AAO1B,IAAA,4BAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,aAAa,OAAOC,aAAaC,gBAAgB;IACrDC,IAAIC,KAAKD;IACTE,OAAOC,YAAYC;IACnBC,SAAS,MACAC,eAAQ;MACb;QACEN,IAAIO,oBAAcC,MAAMP,KAAKQ;QAC7BC,MAAad,kBAAW,aAAA;AACtB,iBAAOe,aAAaC,gBAAgBC,iBAAiBC,OAAO,CAACC,OAAO;YAAE,GAAGA;YAAGC,WAAW;UAAK,EAAA;AAC5F,iBAAOC,UAAUC,OAAOX,oBAAcC,KAAK;QAC7C,CAAA;QACAW,YAAY;UACVC,OAAO;YAAC;YAAkB;cAAEC,IAAIpB,KAAKD;YAAG;;UACxCsB,MAAM;UACNC,YAAY;YACVC,OAAO;YACPC,SAAS;YACTC,OAAO;UACT;UACAC,QAAQ;QACV;MACF;MACA;QACE3B,IAAI,GAAGC,KAAKD,EAAE;QACdU,MAAad,kBAAW,aAAA;AACtB,iBAAOe,aAAaC,gBAAgBC,iBAAiBC,OAAO,CAACC,OAAO;YAAE,GAAGA;YAAGC,WAAW;UAAK,EAAA;AAC5F,iBAAOC,UAAUC,OAAOU,gBAAgBC,cAAc;YACpDC,SAASC;UACX,CAAA;QACF,CAAA;QACAZ,YAAY;UACVC,OAAO;YAAC;YAAwB;cAAEC,IAAIpB,KAAKD;YAAG;;UAC9CsB,MAAM;UACNC,YAAY;YACVC,OAAO;UACT;QACF;MACF;KACD;EACL,CAAA;AAEA,SAAO9B,WAAWsC,YAAYC,gBAAgBC,iBAAiBrC,UAAAA;AACjE,CAAA,CAAA;",
6
+ "names": ["Effect", "Capabilities", "Capability", "GraphBuilder", "NodeMatcher", "AppCapabilities", "LayoutOperation", "Operation", "Capability", "makeModule", "fnUntraced", "extensions", "GraphBuilder", "createExtension", "id", "meta", "match", "NodeMatcher", "whenRoot", "actions", "succeed", "HelpOperation", "Start", "key", "data", "Capabilities", "updateAtomValue", "HelpCapabilities", "State", "s", "showHints", "Operation", "invoke", "properties", "label", "ns", "icon", "keyBinding", "macos", "windows", "linux", "testId", "LayoutOperation", "UpdateDialog", "subject", "SHORTCUTS_DIALOG", "contributes", "AppCapabilities", "AppGraphBuilder"]
7
+ }
@@ -0,0 +1,31 @@
1
+ import {
2
+ __export,
3
+ meta
4
+ } from "./chunk-W4ZZ52LP.mjs";
5
+
6
+ // src/operations/definitions.ts
7
+ var definitions_exports = {};
8
+ __export(definitions_exports, {
9
+ Start: () => Start
10
+ });
11
+ import * as Schema from "effect/Schema";
12
+ import { Capability } from "@dxos/app-framework";
13
+ import { Operation } from "@dxos/operation";
14
+ var HELP_OPERATION = `${meta.id}.operation`;
15
+ var Start = Operation.make({
16
+ meta: {
17
+ key: `${HELP_OPERATION}.start`,
18
+ name: "Start Help"
19
+ },
20
+ services: [
21
+ Capability.Service
22
+ ],
23
+ input: Schema.Void,
24
+ output: Schema.Void
25
+ });
26
+
27
+ export {
28
+ Start,
29
+ definitions_exports
30
+ };
31
+ //# sourceMappingURL=chunk-2XOKPYGX.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/operations/definitions.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/operation';\n\nimport { meta } from '../meta';\n\nconst HELP_OPERATION = `${meta.id}.operation`;\n\nexport const Start = Operation.make({\n meta: { key: `${HELP_OPERATION}.start`, name: 'Start Help' },\n services: [Capability.Service],\n input: Schema.Void,\n output: Schema.Void,\n});\n"],
5
+ "mappings": ";;;;;;AAAA;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiB;AAI1B,IAAMC,iBAAiB,GAAGC,KAAKC,EAAE;AAE1B,IAAMC,QAAQC,UAAUC,KAAK;EAClCJ,MAAM;IAAEK,KAAK,GAAGN,cAAAA;IAAwBO,MAAM;EAAa;EAC3DC,UAAU;IAACC,WAAWC;;EACtBC,OAAcC;EACdC,QAAeD;AACjB,CAAA;",
6
+ "names": ["Schema", "Capability", "Operation", "HELP_OPERATION", "meta", "id", "Start", "Operation", "make", "key", "name", "services", "Capability", "Service", "input", "Void", "output"]
7
+ }
@@ -0,0 +1,335 @@
1
+ import {
2
+ HelpContext
3
+ } from "./chunk-N2ZFAB4D.mjs";
4
+ import {
5
+ meta
6
+ } from "./chunk-W4ZZ52LP.mjs";
7
+
8
+ // src/components/Shortcuts/Key.tsx
9
+ import React from "react";
10
+ import { keySymbols } from "@dxos/keyboard";
11
+
12
+ // src/components/Shortcuts/styles.ts
13
+ import { mx } from "@dxos/ui-theme";
14
+ var shortcutKey = mx("inline-flex min-w-[24px] h-[24px] px-0.5 justify-center items-center text-xs", "rounded-sm bg-neutral-100 dark:bg-neutral-900");
15
+
16
+ // src/components/Shortcuts/Key.tsx
17
+ var Key = ({ binding }) => {
18
+ return /* @__PURE__ */ React.createElement("span", {
19
+ role: "term",
20
+ className: "inline-flex gap-1",
21
+ "aria-label": binding,
22
+ id: binding
23
+ }, keySymbols(binding).map((c, i) => /* @__PURE__ */ React.createElement("span", {
24
+ key: i,
25
+ className: shortcutKey
26
+ }, c)));
27
+ };
28
+
29
+ // src/components/Shortcuts/ShortcutsHints.tsx
30
+ import React2 from "react";
31
+ import { Keyboard } from "@dxos/keyboard";
32
+ import { IconButton, toLocalizedString, useTranslation } from "@dxos/react-ui";
33
+ import { osTranslations } from "@dxos/ui-theme";
34
+ var Shortcut = ({ binding }) => {
35
+ const { t } = useTranslation(osTranslations);
36
+ return /* @__PURE__ */ React2.createElement("div", {
37
+ role: "none",
38
+ className: "flex items-center gap-2 whitespace-nowrap"
39
+ }, /* @__PURE__ */ React2.createElement(Key, {
40
+ binding: binding.shortcut
41
+ }), /* @__PURE__ */ React2.createElement("span", {
42
+ className: "text-sm"
43
+ }, toLocalizedString(binding.data, t)));
44
+ };
45
+ var ShortcutsHints = ({ onClose }) => {
46
+ const defaults = [
47
+ "meta+k",
48
+ "meta+/",
49
+ "meta+,"
50
+ ];
51
+ const bindings = Keyboard.singleton.getBindings();
52
+ const hints = bindings.filter((binding) => defaults.includes(binding.shortcut));
53
+ return /* @__PURE__ */ React2.createElement("div", {
54
+ role: "none",
55
+ className: "flex overflow-hidden px-2 gap-4"
56
+ }, hints.map((binding) => /* @__PURE__ */ React2.createElement(Shortcut, {
57
+ key: binding.shortcut,
58
+ binding
59
+ })), onClose && /* @__PURE__ */ React2.createElement(IconButton, {
60
+ icon: "ph--x--regular",
61
+ size: 4,
62
+ label: "Close",
63
+ iconOnly: true,
64
+ noTooltip: true,
65
+ variant: "ghost",
66
+ classNames: "p-0 cursor-pointer",
67
+ onClick: onClose
68
+ }));
69
+ };
70
+
71
+ // src/components/Shortcuts/ShortcutsList.tsx
72
+ import React3, { Fragment } from "react";
73
+ import { Keyboard as Keyboard2 } from "@dxos/keyboard";
74
+ import { toLocalizedString as toLocalizedString2, useTranslation as useTranslation2 } from "@dxos/react-ui";
75
+ import { mx as mx2 } from "@dxos/ui-theme";
76
+ var ShortcutsList = () => {
77
+ const { t } = useTranslation2(meta.id);
78
+ const bindings = Keyboard2.singleton.getBindings();
79
+ bindings.sort((a, b) => {
80
+ return toLocalizedString2(a.data, t)?.toLowerCase().localeCompare(toLocalizedString2(b.data, t)?.toLowerCase());
81
+ });
82
+ return /* @__PURE__ */ React3.createElement("dl", {
83
+ className: mx2("w-fit grid grid-cols-[min-content_minmax(12rem,1fr)] gap-2 my-4 text-subdued select-none")
84
+ }, bindings.map((binding, i) => /* @__PURE__ */ React3.createElement(Fragment, {
85
+ key: i
86
+ }, /* @__PURE__ */ React3.createElement(Key, {
87
+ binding: binding.shortcut
88
+ }), /* @__PURE__ */ React3.createElement("span", {
89
+ role: "definition",
90
+ className: "ms-4",
91
+ "aria-labelledby": binding.shortcut
92
+ }, toLocalizedString2(binding.data, t)))));
93
+ };
94
+
95
+ // src/components/Shortcuts/ShortcutsSection.tsx
96
+ import React4 from "react";
97
+ var ShortcutsSection = () => {
98
+ return /* @__PURE__ */ React4.createElement("section", {
99
+ className: "text-description"
100
+ }, /* @__PURE__ */ React4.createElement(ShortcutsList, null));
101
+ };
102
+
103
+ // src/components/Tooltip/Tooltip.tsx
104
+ import { useArrowNavigationGroup, useFocusableGroup } from "@fluentui/react-tabster";
105
+ import React5, { forwardRef } from "react";
106
+ import { Button, Icon, IconButton as IconButton2 } from "@dxos/react-ui";
107
+ var floaterProps = {
108
+ styles: {
109
+ // Arrow color is set by joyride.
110
+ arrow: {
111
+ length: 8,
112
+ spread: 16
113
+ },
114
+ floater: {
115
+ // TODO(burdon): Get tokens from theme.
116
+ filter: "drop-shadow(0 0 0.75rem rgba(0, 0, 0, 0.2))"
117
+ }
118
+ }
119
+ };
120
+ var Tooltip = /* @__PURE__ */ forwardRef(({ step: { title, content }, index, size, isLastStep, backProps, closeProps, primaryProps }, forwardedRef) => {
121
+ const arrowNavigationAttrs = useArrowNavigationGroup({
122
+ axis: "horizontal"
123
+ });
124
+ const focusableGroupAttrs = useFocusableGroup({
125
+ tabBehavior: "limited-trap-focus"
126
+ });
127
+ return /* @__PURE__ */ React5.createElement("div", {
128
+ className: "flex flex-col w-[15rem] min-h-[10rem] overflow-hidden rounded-md shadow-xl bg-accent-surface text-accent-surface-text",
129
+ role: "tooltip",
130
+ "data-testid": "helpPlugin.tooltip",
131
+ "data-step": index + 1,
132
+ ...focusableGroupAttrs,
133
+ ref: forwardedRef
134
+ }, /* @__PURE__ */ React5.createElement("div", {
135
+ className: "flex p-2"
136
+ }, /* @__PURE__ */ React5.createElement("h2", {
137
+ className: "grow px-2 py-1 text-lg font-medium text-accent-surface-text"
138
+ }, title), /* @__PURE__ */ React5.createElement(IconButton2, {
139
+ density: "fine",
140
+ icon: "ph--x--bold",
141
+ iconOnly: true,
142
+ label: closeProps["aria-label"],
143
+ onClick: closeProps.onClick,
144
+ size: 4,
145
+ variant: "primary",
146
+ "data-testid": "helpPlugin.tooltip.close"
147
+ })), /* @__PURE__ */ React5.createElement("div", {
148
+ className: "flex grow px-4 my-2"
149
+ }, content), /* @__PURE__ */ React5.createElement("div", {
150
+ className: "flex p-2 items-center justify-between",
151
+ ...arrowNavigationAttrs
152
+ }, /* @__PURE__ */ React5.createElement(IconButton2, {
153
+ classNames: [
154
+ !(index > 0 && backProps) && "invisible"
155
+ ],
156
+ icon: "ph--caret-left--regular",
157
+ iconOnly: true,
158
+ label: backProps["aria-label"],
159
+ onClick: backProps.onClick,
160
+ variant: "primary",
161
+ "data-testid": "helpPlugin.tooltip.back"
162
+ }), /* @__PURE__ */ React5.createElement("div", {
163
+ className: "flex grow gap-2 justify-center"
164
+ }, /* @__PURE__ */ React5.createElement("div", {
165
+ className: "flex"
166
+ }, Array.from({
167
+ length: size
168
+ }).map((_, i) => /* @__PURE__ */ React5.createElement(Icon, {
169
+ key: i,
170
+ icon: index === i ? "ph--circle--fill" : "ph--circle--regular",
171
+ size: 2,
172
+ classNames: "mx-1 cursor-pointer"
173
+ })))), isLastStep ? /* @__PURE__ */ React5.createElement(Button, {
174
+ variant: "primary",
175
+ onClick: closeProps.onClick,
176
+ title: closeProps["aria-label"],
177
+ autoFocus: true,
178
+ "data-testid": "helpPlugin.tooltip.finish"
179
+ }, "Done") : /* @__PURE__ */ React5.createElement(IconButton2, {
180
+ autoFocus: true,
181
+ icon: "ph--caret-right--regular",
182
+ iconOnly: true,
183
+ label: primaryProps["aria-label"],
184
+ onClick: primaryProps.onClick,
185
+ size: 6,
186
+ variant: "primary",
187
+ "data-testid": "helpPlugin.tooltip.next"
188
+ })));
189
+ });
190
+
191
+ // src/components/WelcomeTour/WelcomeTour.tsx
192
+ import React6, { useState } from "react";
193
+ import Joyride, { ACTIONS, EVENTS } from "react-joyride";
194
+ import { usePluginManager } from "@dxos/app-framework/ui";
195
+ import { useLayout } from "@dxos/app-toolkit/ui";
196
+ import { useAsyncEffect } from "@dxos/react-ui";
197
+ var addStepClass = (target) => {
198
+ const element = typeof target === "string" ? document.querySelector(target) : target;
199
+ if (element) {
200
+ element.classList.add("joyride-target");
201
+ }
202
+ };
203
+ var removeTargetClass = (target) => {
204
+ const element = typeof target === "string" ? document.querySelector(target) : target;
205
+ if (element) {
206
+ element.classList.remove("joyride-target");
207
+ }
208
+ };
209
+ var getTarget = (step) => {
210
+ return typeof step.target === "string" ? document.querySelector(step.target) : step.target;
211
+ };
212
+ var waitForTarget = async (step) => {
213
+ if (typeof step.target === "string") {
214
+ const target = step.target;
215
+ const element = document.querySelector(target);
216
+ if (element) {
217
+ return;
218
+ }
219
+ await new Promise((resolve) => {
220
+ const observer = new MutationObserver((mutations) => {
221
+ mutations.forEach((mutation) => {
222
+ if (mutation.addedNodes.length > 0) {
223
+ const element2 = document.querySelector(target);
224
+ if (element2) {
225
+ observer.disconnect();
226
+ resolve();
227
+ }
228
+ }
229
+ });
230
+ });
231
+ observer.observe(document.body, {
232
+ childList: true,
233
+ subtree: true
234
+ });
235
+ });
236
+ }
237
+ };
238
+ var WelcomeTour = ({ steps: initialSteps, running: runningProp, onRunningChanged }) => {
239
+ const manager = usePluginManager();
240
+ const layout = useLayout();
241
+ const [running, setRunning] = useState(!!runningProp && !!getTarget(initialSteps[0]));
242
+ const [stepIndex, _setStepIndex] = useState(0);
243
+ const [steps, setSteps] = useState(initialSteps);
244
+ const paused = layout.dialogOpen;
245
+ const setStepIndex = (index) => {
246
+ if (runningProp) {
247
+ const step = steps[index];
248
+ step?.before?.(manager.capabilities);
249
+ }
250
+ _setStepIndex(index);
251
+ };
252
+ const setRunningChanged = (state) => {
253
+ if (typeof runningProp !== "undefined") {
254
+ onRunningChanged?.(state);
255
+ } else {
256
+ if (state) {
257
+ setStepIndex(0);
258
+ setRunning(true);
259
+ } else {
260
+ setRunning(false);
261
+ }
262
+ }
263
+ };
264
+ useAsyncEffect(async () => {
265
+ if (runningProp) {
266
+ await waitForTarget(steps[stepIndex]);
267
+ setStepIndex(0);
268
+ setRunning(true);
269
+ } else if (typeof runningProp !== "undefined") {
270
+ setRunning(false);
271
+ }
272
+ }, [
273
+ runningProp
274
+ ]);
275
+ const callback = async (options) => {
276
+ const { type, action, index, size } = options;
277
+ switch (type) {
278
+ case EVENTS.STEP_BEFORE:
279
+ addStepClass(options.step.target);
280
+ break;
281
+ case EVENTS.TOUR_END:
282
+ break;
283
+ case EVENTS.STEP_AFTER:
284
+ removeTargetClass(options.step.target);
285
+ switch (action) {
286
+ case ACTIONS.NEXT:
287
+ if (index < size - 1) {
288
+ setStepIndex(index + 1);
289
+ }
290
+ break;
291
+ case ACTIONS.PREV:
292
+ if (index > 0) {
293
+ setStepIndex(index - 1);
294
+ }
295
+ break;
296
+ case ACTIONS.CLOSE:
297
+ setRunningChanged(false);
298
+ setStepIndex(0);
299
+ break;
300
+ }
301
+ break;
302
+ }
303
+ };
304
+ return /* @__PURE__ */ React6.createElement(HelpContext.Provider, {
305
+ value: {
306
+ running: running && !paused,
307
+ steps,
308
+ setSteps,
309
+ setIndex: setStepIndex,
310
+ start: () => setRunningChanged(true),
311
+ stop: () => setRunningChanged(false)
312
+ }
313
+ }, /* @__PURE__ */ React6.createElement("style", null, `.joyride-target {
314
+ --controls-opacity: 1;
315
+ }`), /* @__PURE__ */ React6.createElement(Joyride, {
316
+ continuous: true,
317
+ steps,
318
+ stepIndex,
319
+ run: running && !paused,
320
+ callback,
321
+ floaterProps,
322
+ tooltipComponent: Tooltip
323
+ }));
324
+ };
325
+
326
+ export {
327
+ Key,
328
+ ShortcutsHints,
329
+ ShortcutsList,
330
+ ShortcutsSection,
331
+ floaterProps,
332
+ Tooltip,
333
+ WelcomeTour
334
+ };
335
+ //# sourceMappingURL=chunk-DZKLU3W7.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/Shortcuts/Key.tsx", "../../../src/components/Shortcuts/styles.ts", "../../../src/components/Shortcuts/ShortcutsHints.tsx", "../../../src/components/Shortcuts/ShortcutsList.tsx", "../../../src/components/Shortcuts/ShortcutsSection.tsx", "../../../src/components/Tooltip/Tooltip.tsx", "../../../src/components/WelcomeTour/WelcomeTour.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { keySymbols } from '@dxos/keyboard';\n\nimport { shortcutKey } from './styles';\n\nexport const Key = ({ binding }: { binding: string }) => {\n return (\n <span role='term' className='inline-flex gap-1' aria-label={binding} id={binding}>\n {keySymbols(binding).map((c, i) => (\n <span key={i} className={shortcutKey}>\n {c}\n </span>\n ))}\n </span>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { mx } from '@dxos/ui-theme';\n\nexport const shortcutKey = mx(\n 'inline-flex min-w-[24px] h-[24px] px-0.5 justify-center items-center text-xs',\n 'rounded-sm bg-neutral-100 dark:bg-neutral-900',\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type KeyBinding, Keyboard } from '@dxos/keyboard';\nimport { IconButton, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { osTranslations } from '@dxos/ui-theme';\n\nimport { Key } from './Key';\n\nconst Shortcut = ({ binding }: { binding: KeyBinding }) => {\n const { t } = useTranslation(osTranslations);\n return (\n <div role='none' className='flex items-center gap-2 whitespace-nowrap'>\n <Key binding={binding.shortcut} />\n <span className='text-sm'>{toLocalizedString(binding.data, t)}</span>\n </div>\n );\n};\n\nexport const ShortcutsHints = ({ onClose }: { onClose?: () => void }) => {\n // TODO(burdon): Display by context/weight/cycle.\n const defaults = ['meta+k', 'meta+/', 'meta+,'];\n const bindings = Keyboard.singleton.getBindings();\n const hints = bindings.filter((binding) => defaults.includes(binding.shortcut));\n\n return (\n <div role='none' className='flex overflow-hidden px-2 gap-4'>\n {hints.map((binding) => (\n <Shortcut key={binding.shortcut} binding={binding} />\n ))}\n {onClose && (\n <IconButton\n icon='ph--x--regular'\n size={4}\n label='Close'\n iconOnly\n noTooltip\n variant='ghost'\n classNames='p-0 cursor-pointer'\n onClick={onClose}\n />\n )}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { Fragment } from 'react';\n\nimport { Keyboard } from '@dxos/keyboard';\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { mx } from '@dxos/ui-theme';\n\nimport { meta } from '../../meta';\n\nimport { Key } from './Key';\n\nexport const ShortcutsList = () => {\n const { t } = useTranslation(meta.id);\n const bindings = Keyboard.singleton.getBindings();\n\n // TODO(burdon): Get shortcuts from TextEditor.\n bindings.sort((a, b) => {\n return toLocalizedString(a.data, t)?.toLowerCase().localeCompare(toLocalizedString(b.data, t)?.toLowerCase());\n });\n\n return (\n <dl className={mx('w-fit grid grid-cols-[min-content_minmax(12rem,1fr)] gap-2 my-4 text-subdued select-none')}>\n {bindings.map((binding, i) => (\n <Fragment key={i}>\n <Key binding={binding.shortcut} />\n <span role='definition' className='ms-4' aria-labelledby={binding.shortcut}>\n {toLocalizedString(binding.data, t)}\n </span>\n </Fragment>\n ))}\n </dl>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { ShortcutsList } from './ShortcutsList';\n\nexport const ShortcutsSection = () => {\n return (\n <section className='text-description'>\n <ShortcutsList />\n </section>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useArrowNavigationGroup, useFocusableGroup } from '@fluentui/react-tabster';\nimport React, { forwardRef } from 'react';\n// TODO(thure): This needed to be imported in the package.json specifically to pacify TS2742. See if this is resolved with typescript@5.5.x.\n// eslint-disable-next-line unused-imports/no-unused-imports\nimport _floater from 'react-floater';\nimport { type Props, type TooltipRenderProps } from 'react-joyride';\n// TODO(thure): This needed to be imported in the package.json specifically to pacify TS2742. See if this is resolved with typescript@5.5.x.\n// eslint-disable-next-line unused-imports/no-unused-imports\nimport _typefest from 'type-fest';\n\nimport { Button, Icon, IconButton } from '@dxos/react-ui';\n\n// https://docs.react-joyride.com/styling\n// https://github.com/gilbarbara/react-floater\nexport const floaterProps: Props['floaterProps'] = {\n styles: {\n // Arrow color is set by joyride.\n arrow: {\n length: 8,\n spread: 16,\n },\n floater: {\n // TODO(burdon): Get tokens from theme.\n filter: 'drop-shadow(0 0 0.75rem rgba(0, 0, 0, 0.2))',\n },\n },\n};\n\n// TODO(burdon): Add info link to docs.\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipRenderProps>(\n ({ step: { title, content }, index, size, isLastStep, backProps, closeProps, primaryProps }, forwardedRef) => {\n const arrowNavigationAttrs = useArrowNavigationGroup({ axis: 'horizontal' });\n const focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited-trap-focus' });\n\n return (\n <div\n className='flex flex-col w-[15rem] min-h-[10rem] overflow-hidden rounded-md shadow-xl bg-accent-surface text-accent-surface-text'\n role='tooltip'\n data-testid='helpPlugin.tooltip'\n data-step={index + 1}\n {...focusableGroupAttrs}\n ref={forwardedRef}\n >\n <div className='flex p-2'>\n <h2 className='grow px-2 py-1 text-lg font-medium text-accent-surface-text'>{title}</h2>\n <IconButton\n density='fine'\n icon='ph--x--bold'\n iconOnly\n label={closeProps['aria-label']}\n onClick={closeProps.onClick}\n size={4}\n variant='primary'\n data-testid='helpPlugin.tooltip.close'\n />\n </div>\n <div className='flex grow px-4 my-2'>{content}</div>\n <div className='flex p-2 items-center justify-between' {...arrowNavigationAttrs}>\n {\n <IconButton\n classNames={[!(index > 0 && backProps) && 'invisible']}\n icon='ph--caret-left--regular'\n iconOnly\n label={backProps['aria-label']}\n onClick={backProps.onClick}\n variant='primary'\n data-testid='helpPlugin.tooltip.back'\n />\n }\n <div className='flex grow gap-2 justify-center'>\n <div className='flex'>\n {Array.from({ length: size }).map((_, i) => (\n <Icon\n key={i}\n icon={index === i ? 'ph--circle--fill' : 'ph--circle--regular'}\n size={2}\n classNames='mx-1 cursor-pointer'\n />\n ))}\n </div>\n </div>\n {isLastStep ? (\n <Button\n variant='primary'\n onClick={closeProps.onClick}\n title={closeProps['aria-label']}\n autoFocus\n data-testid='helpPlugin.tooltip.finish'\n >\n Done\n </Button>\n ) : (\n <IconButton\n autoFocus\n icon='ph--caret-right--regular'\n iconOnly\n label={primaryProps['aria-label']}\n onClick={primaryProps.onClick}\n size={6}\n variant='primary'\n data-testid='helpPlugin.tooltip.next'\n />\n )}\n </div>\n </div>\n );\n },\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useState } from 'react';\nimport Joyride, { ACTIONS, EVENTS } from 'react-joyride';\n\nimport { usePluginManager } from '@dxos/app-framework/ui';\nimport { useLayout } from '@dxos/app-toolkit/ui';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { HelpContext, type Step } from '../../types';\nimport { Tooltip, floaterProps } from '../Tooltip';\n\nconst addStepClass = (target: string | HTMLElement) => {\n const element = typeof target === 'string' ? document.querySelector(target) : target;\n if (element) {\n element.classList.add('joyride-target');\n }\n};\n\nconst removeTargetClass = (target: string | HTMLElement) => {\n const element = typeof target === 'string' ? document.querySelector(target) : target;\n if (element) {\n element.classList.remove('joyride-target');\n }\n};\n\nconst getTarget = (step: Step) => {\n return typeof step.target === 'string' ? document.querySelector(step.target) : step.target;\n};\n\n/**\n * Wait for the target element to be in the document.\n */\nconst waitForTarget = async (step: Step) => {\n if (typeof step.target === 'string') {\n const target = step.target;\n const element = document.querySelector(target);\n if (element) {\n return;\n }\n\n await new Promise<void>((resolve) => {\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.addedNodes.length > 0) {\n const element = document.querySelector(target);\n if (element) {\n observer.disconnect();\n resolve();\n }\n }\n });\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n });\n }\n};\n\nexport type WelcomeTourProps = {\n steps: Step[];\n running?: boolean;\n onRunningChanged?: (state: boolean) => any;\n};\n\nexport const WelcomeTour = ({ steps: initialSteps, running: runningProp, onRunningChanged }: WelcomeTourProps) => {\n const manager = usePluginManager();\n const layout = useLayout();\n const [running, setRunning] = useState(!!runningProp && !!getTarget(initialSteps[0]));\n const [stepIndex, _setStepIndex] = useState(0);\n const [steps, setSteps] = useState(initialSteps);\n\n const paused = layout.dialogOpen;\n\n const setStepIndex = (index: number) => {\n if (runningProp) {\n const step = steps[index];\n step?.before?.(manager.capabilities);\n }\n _setStepIndex(index);\n };\n\n const setRunningChanged = (state: boolean) => {\n if (typeof runningProp !== 'undefined') {\n onRunningChanged?.(state);\n } else {\n if (state) {\n setStepIndex(0);\n setRunning(true);\n } else {\n setRunning(false);\n }\n }\n };\n\n useAsyncEffect(async () => {\n if (runningProp) {\n // This handles the case when the target is not yet in the document.\n // If the target is not in the document, when the joyride is turned on, it will not show the tooltip.\n await waitForTarget(steps[stepIndex]);\n setStepIndex(0);\n setRunning(true);\n } else if (typeof runningProp !== 'undefined') {\n setRunning(false);\n }\n }, [runningProp]);\n\n // https://docs.react-joyride.com/callback\n const callback: Joyride['callback'] = async (options) => {\n const { type, action, index, size } = options;\n switch (type) {\n case EVENTS.STEP_BEFORE:\n addStepClass(options.step.target);\n break;\n case EVENTS.TOUR_END:\n break;\n case EVENTS.STEP_AFTER:\n removeTargetClass(options.step.target);\n switch (action) {\n case ACTIONS.NEXT:\n if (index < size - 1) {\n setStepIndex(index + 1);\n }\n break;\n case ACTIONS.PREV:\n if (index > 0) {\n setStepIndex(index - 1);\n }\n break;\n case ACTIONS.CLOSE:\n setRunningChanged(false);\n setStepIndex(0);\n break;\n }\n break;\n }\n };\n\n return (\n <HelpContext.Provider\n value={{\n running: running && !paused,\n steps,\n setSteps,\n setIndex: setStepIndex,\n start: () => setRunningChanged(true),\n stop: () => setRunningChanged(false),\n }}\n >\n <style>\n {`.joyride-target {\n --controls-opacity: 1;\n }`}\n </style>\n <Joyride\n continuous={true}\n steps={steps}\n stepIndex={stepIndex}\n run={running && !paused}\n callback={callback}\n floaterProps={floaterProps}\n tooltipComponent={Tooltip}\n />\n </HelpContext.Provider>\n );\n};\n"],
5
+ "mappings": ";;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,kBAAkB;;;ACF3B,SAASC,UAAU;AAEZ,IAAMC,cAAcC,GACzB,gFACA,+CAAA;;;ADEK,IAAMC,MAAM,CAAC,EAAEC,QAAO,MAAuB;AAClD,SACE,sBAAA,cAACC,QAAAA;IAAKC,MAAK;IAAOC,WAAU;IAAoBC,cAAYJ;IAASK,IAAIL;KACtEM,WAAWN,OAAAA,EAASO,IAAI,CAACC,GAAGC,MAC3B,sBAAA,cAACR,QAAAA;IAAKS,KAAKD;IAAGN,WAAWQ;KACtBH,CAAAA,CAAAA,CAAAA;AAKX;;;AEhBA,OAAOI,YAAW;AAElB,SAA0BC,gBAAgB;AAC1C,SAASC,YAAYC,mBAAmBC,sBAAsB;AAC9D,SAASC,sBAAsB;AAI/B,IAAMC,WAAW,CAAC,EAAEC,QAAO,MAA2B;AACpD,QAAM,EAAEC,EAAC,IAAKC,eAAeC,cAAAA;AAC7B,SACE,gBAAAC,OAAA,cAACC,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB,gBAAAH,OAAA,cAACI,KAAAA;IAAIR,SAASA,QAAQS;MACtB,gBAAAL,OAAA,cAACM,QAAAA;IAAKH,WAAU;KAAWI,kBAAkBX,QAAQY,MAAMX,CAAAA,CAAAA,CAAAA;AAGjE;AAEO,IAAMY,iBAAiB,CAAC,EAAEC,QAAO,MAA4B;AAElE,QAAMC,WAAW;IAAC;IAAU;IAAU;;AACtC,QAAMC,WAAWC,SAASC,UAAUC,YAAW;AAC/C,QAAMC,QAAQJ,SAASK,OAAO,CAACrB,YAAYe,SAASO,SAAStB,QAAQS,QAAQ,CAAA;AAE7E,SACE,gBAAAL,OAAA,cAACC,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACxBa,MAAMG,IAAI,CAACvB,YACV,gBAAAI,OAAA,cAACL,UAAAA;IAASyB,KAAKxB,QAAQS;IAAUT;OAElCc,WACC,gBAAAV,OAAA,cAACqB,YAAAA;IACCC,MAAK;IACLC,MAAM;IACNC,OAAM;IACNC,UAAAA;IACAC,WAAAA;IACAC,SAAQ;IACRC,YAAW;IACXC,SAASnB;;AAKnB;;;AC3CA,OAAOoB,UAASC,gBAAgB;AAEhC,SAASC,YAAAA,iBAAgB;AACzB,SAASC,qBAAAA,oBAAmBC,kBAAAA,uBAAsB;AAClD,SAASC,MAAAA,WAAU;AAMZ,IAAMC,gBAAgB,MAAA;AAC3B,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AACpC,QAAMC,WAAWC,UAASC,UAAUC,YAAW;AAG/CH,WAASI,KAAK,CAACC,GAAGC,MAAAA;AAChB,WAAOC,mBAAkBF,EAAEG,MAAMZ,CAAAA,GAAIa,YAAAA,EAAcC,cAAcH,mBAAkBD,EAAEE,MAAMZ,CAAAA,GAAIa,YAAAA,CAAAA;EACjG,CAAA;AAEA,SACE,gBAAAE,OAAA,cAACC,MAAAA;IAAGC,WAAWC,IAAG,0FAAA;KACfd,SAASe,IAAI,CAACC,SAASC,MACtB,gBAAAN,OAAA,cAACO,UAAAA;IAASC,KAAKF;KACb,gBAAAN,OAAA,cAACS,KAAAA;IAAIJ,SAASA,QAAQK;MACtB,gBAAAV,OAAA,cAACW,QAAAA;IAAKC,MAAK;IAAaV,WAAU;IAAOW,mBAAiBR,QAAQK;KAC/Dd,mBAAkBS,QAAQR,MAAMZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAM7C;;;AC/BA,OAAO6B,YAAW;AAIX,IAAMC,mBAAmB,MAAA;AAC9B,SACE,gBAAAC,OAAA,cAACC,WAAAA;IAAQC,WAAU;KACjB,gBAAAF,OAAA,cAACG,eAAAA,IAAAA,CAAAA;AAGP;;;ACVA,SAASC,yBAAyBC,yBAAyB;AAC3D,OAAOC,UAASC,kBAAkB;AASlC,SAASC,QAAQC,MAAMC,cAAAA,mBAAkB;AAIlC,IAAMC,eAAsC;EACjDC,QAAQ;;IAENC,OAAO;MACLC,QAAQ;MACRC,QAAQ;IACV;IACAC,SAAS;;MAEPC,QAAQ;IACV;EACF;AACF;AAGO,IAAMC,UAAUC,2BACrB,CAAC,EAAEC,MAAM,EAAEC,OAAOC,QAAO,GAAIC,OAAOC,MAAMC,YAAYC,WAAWC,YAAYC,aAAY,GAAIC,iBAAAA;AAC3F,QAAMC,uBAAuBC,wBAAwB;IAAEC,MAAM;EAAa,CAAA;AAC1E,QAAMC,sBAAsBC,kBAAkB;IAAEC,aAAa;EAAqB,CAAA;AAElF,SACE,gBAAAC,OAAA,cAACC,OAAAA;IACCC,WAAU;IACVC,MAAK;IACLC,eAAY;IACZC,aAAWlB,QAAQ;IAClB,GAAGU;IACJS,KAAKb;KAEL,gBAAAO,OAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,gBAAAF,OAAA,cAACO,MAAAA;IAAGL,WAAU;KAA+DjB,KAAAA,GAC7E,gBAAAe,OAAA,cAACQ,aAAAA;IACCC,SAAQ;IACRC,MAAK;IACLC,UAAAA;IACAC,OAAOrB,WAAW,YAAA;IAClBsB,SAAStB,WAAWsB;IACpBzB,MAAM;IACN0B,SAAQ;IACRV,eAAY;OAGhB,gBAAAJ,OAAA,cAACC,OAAAA;IAAIC,WAAU;KAAuBhB,OAAAA,GACtC,gBAAAc,OAAA,cAACC,OAAAA;IAAIC,WAAU;IAAyC,GAAGR;KAEvD,gBAAAM,OAAA,cAACQ,aAAAA;IACCO,YAAY;MAAC,EAAE5B,QAAQ,KAAKG,cAAc;;IAC1CoB,MAAK;IACLC,UAAAA;IACAC,OAAOtB,UAAU,YAAA;IACjBuB,SAASvB,UAAUuB;IACnBC,SAAQ;IACRV,eAAY;MAGhB,gBAAAJ,OAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,gBAAAF,OAAA,cAACC,OAAAA;IAAIC,WAAU;KACZc,MAAMC,KAAK;IAAEvC,QAAQU;EAAK,CAAA,EAAG8B,IAAI,CAACC,GAAGC,MACpC,gBAAApB,OAAA,cAACqB,MAAAA;IACCC,KAAKF;IACLV,MAAMvB,UAAUiC,IAAI,qBAAqB;IACzChC,MAAM;IACN2B,YAAW;SAKlB1B,aACC,gBAAAW,OAAA,cAACuB,QAAAA;IACCT,SAAQ;IACRD,SAAStB,WAAWsB;IACpB5B,OAAOM,WAAW,YAAA;IAClBiC,WAAAA;IACApB,eAAY;KACb,MAAA,IAID,gBAAAJ,OAAA,cAACQ,aAAAA;IACCgB,WAAAA;IACAd,MAAK;IACLC,UAAAA;IACAC,OAAOpB,aAAa,YAAA;IACpBqB,SAASrB,aAAaqB;IACtBzB,MAAM;IACN0B,SAAQ;IACRV,eAAY;;AAMxB,CAAA;;;AC1GF,OAAOqB,UAASC,gBAAgB;AAChC,OAAOC,WAAWC,SAASC,cAAc;AAEzC,SAASC,wBAAwB;AACjC,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB;AAK/B,IAAMC,eAAe,CAACC,WAAAA;AACpB,QAAMC,UAAU,OAAOD,WAAW,WAAWE,SAASC,cAAcH,MAAAA,IAAUA;AAC9E,MAAIC,SAAS;AACXA,YAAQG,UAAUC,IAAI,gBAAA;EACxB;AACF;AAEA,IAAMC,oBAAoB,CAACN,WAAAA;AACzB,QAAMC,UAAU,OAAOD,WAAW,WAAWE,SAASC,cAAcH,MAAAA,IAAUA;AAC9E,MAAIC,SAAS;AACXA,YAAQG,UAAUG,OAAO,gBAAA;EAC3B;AACF;AAEA,IAAMC,YAAY,CAACC,SAAAA;AACjB,SAAO,OAAOA,KAAKT,WAAW,WAAWE,SAASC,cAAcM,KAAKT,MAAM,IAAIS,KAAKT;AACtF;AAKA,IAAMU,gBAAgB,OAAOD,SAAAA;AAC3B,MAAI,OAAOA,KAAKT,WAAW,UAAU;AACnC,UAAMA,SAASS,KAAKT;AACpB,UAAMC,UAAUC,SAASC,cAAcH,MAAAA;AACvC,QAAIC,SAAS;AACX;IACF;AAEA,UAAM,IAAIU,QAAc,CAACC,YAAAA;AACvB,YAAMC,WAAW,IAAIC,iBAAiB,CAACC,cAAAA;AACrCA,kBAAUC,QAAQ,CAACC,aAAAA;AACjB,cAAIA,SAASC,WAAWC,SAAS,GAAG;AAClC,kBAAMlB,WAAUC,SAASC,cAAcH,MAAAA;AACvC,gBAAIC,UAAS;AACXY,uBAASO,WAAU;AACnBR,sBAAAA;YACF;UACF;QACF,CAAA;MACF,CAAA;AAEAC,eAASQ,QAAQnB,SAASoB,MAAM;QAAEC,WAAW;QAAMC,SAAS;MAAK,CAAA;IACnE,CAAA;EACF;AACF;AAQO,IAAMC,cAAc,CAAC,EAAEC,OAAOC,cAAcC,SAASC,aAAaC,iBAAgB,MAAoB;AAC3G,QAAMC,UAAUC,iBAAAA;AAChB,QAAMC,SAASC,UAAAA;AACf,QAAM,CAACN,SAASO,UAAAA,IAAcC,SAAS,CAAC,CAACP,eAAe,CAAC,CAACrB,UAAUmB,aAAa,CAAA,CAAE,CAAA;AACnF,QAAM,CAACU,WAAWC,aAAAA,IAAiBF,SAAS,CAAA;AAC5C,QAAM,CAACV,OAAOa,QAAAA,IAAYH,SAAST,YAAAA;AAEnC,QAAMa,SAASP,OAAOQ;AAEtB,QAAMC,eAAe,CAACC,UAAAA;AACpB,QAAId,aAAa;AACf,YAAMpB,OAAOiB,MAAMiB,KAAAA;AACnBlC,YAAMmC,SAASb,QAAQc,YAAY;IACrC;AACAP,kBAAcK,KAAAA;EAChB;AAEA,QAAMG,oBAAoB,CAACC,UAAAA;AACzB,QAAI,OAAOlB,gBAAgB,aAAa;AACtCC,yBAAmBiB,KAAAA;IACrB,OAAO;AACL,UAAIA,OAAO;AACTL,qBAAa,CAAA;AACbP,mBAAW,IAAA;MACb,OAAO;AACLA,mBAAW,KAAA;MACb;IACF;EACF;AAEAa,iBAAe,YAAA;AACb,QAAInB,aAAa;AAGf,YAAMnB,cAAcgB,MAAMW,SAAAA,CAAU;AACpCK,mBAAa,CAAA;AACbP,iBAAW,IAAA;IACb,WAAW,OAAON,gBAAgB,aAAa;AAC7CM,iBAAW,KAAA;IACb;EACF,GAAG;IAACN;GAAY;AAGhB,QAAMoB,WAAgC,OAAOC,YAAAA;AAC3C,UAAM,EAAEC,MAAMC,QAAQT,OAAOU,KAAI,IAAKH;AACtC,YAAQC,MAAAA;MACN,KAAKG,OAAOC;AACVxD,qBAAamD,QAAQzC,KAAKT,MAAM;AAChC;MACF,KAAKsD,OAAOE;AACV;MACF,KAAKF,OAAOG;AACVnD,0BAAkB4C,QAAQzC,KAAKT,MAAM;AACrC,gBAAQoD,QAAAA;UACN,KAAKM,QAAQC;AACX,gBAAIhB,QAAQU,OAAO,GAAG;AACpBX,2BAAaC,QAAQ,CAAA;YACvB;AACA;UACF,KAAKe,QAAQE;AACX,gBAAIjB,QAAQ,GAAG;AACbD,2BAAaC,QAAQ,CAAA;YACvB;AACA;UACF,KAAKe,QAAQG;AACXf,8BAAkB,KAAA;AAClBJ,yBAAa,CAAA;AACb;QACJ;AACA;IACJ;EACF;AAEA,SACE,gBAAAoB,OAAA,cAACC,YAAYC,UAAQ;IACnBC,OAAO;MACLrC,SAASA,WAAW,CAACY;MACrBd;MACAa;MACA2B,UAAUxB;MACVyB,OAAO,MAAMrB,kBAAkB,IAAA;MAC/BsB,MAAM,MAAMtB,kBAAkB,KAAA;IAChC;KAEA,gBAAAgB,OAAA,cAACO,SAAAA,MACE;;UAEC,GAEJ,gBAAAP,OAAA,cAACQ,SAAAA;IACCC,YAAY;IACZ7C;IACAW;IACAmC,KAAK5C,WAAW,CAACY;IACjBS;IACAwB;IACAC,kBAAkBC;;AAI1B;",
6
+ "names": ["React", "keySymbols", "mx", "shortcutKey", "mx", "Key", "binding", "span", "role", "className", "aria-label", "id", "keySymbols", "map", "c", "i", "key", "shortcutKey", "React", "Keyboard", "IconButton", "toLocalizedString", "useTranslation", "osTranslations", "Shortcut", "binding", "t", "useTranslation", "osTranslations", "React", "div", "role", "className", "Key", "shortcut", "span", "toLocalizedString", "data", "ShortcutsHints", "onClose", "defaults", "bindings", "Keyboard", "singleton", "getBindings", "hints", "filter", "includes", "map", "key", "IconButton", "icon", "size", "label", "iconOnly", "noTooltip", "variant", "classNames", "onClick", "React", "Fragment", "Keyboard", "toLocalizedString", "useTranslation", "mx", "ShortcutsList", "t", "useTranslation", "meta", "id", "bindings", "Keyboard", "singleton", "getBindings", "sort", "a", "b", "toLocalizedString", "data", "toLowerCase", "localeCompare", "React", "dl", "className", "mx", "map", "binding", "i", "Fragment", "key", "Key", "shortcut", "span", "role", "aria-labelledby", "React", "ShortcutsSection", "React", "section", "className", "ShortcutsList", "useArrowNavigationGroup", "useFocusableGroup", "React", "forwardRef", "Button", "Icon", "IconButton", "floaterProps", "styles", "arrow", "length", "spread", "floater", "filter", "Tooltip", "forwardRef", "step", "title", "content", "index", "size", "isLastStep", "backProps", "closeProps", "primaryProps", "forwardedRef", "arrowNavigationAttrs", "useArrowNavigationGroup", "axis", "focusableGroupAttrs", "useFocusableGroup", "tabBehavior", "React", "div", "className", "role", "data-testid", "data-step", "ref", "h2", "IconButton", "density", "icon", "iconOnly", "label", "onClick", "variant", "classNames", "Array", "from", "map", "_", "i", "Icon", "key", "Button", "autoFocus", "React", "useState", "Joyride", "ACTIONS", "EVENTS", "usePluginManager", "useLayout", "useAsyncEffect", "addStepClass", "target", "element", "document", "querySelector", "classList", "add", "removeTargetClass", "remove", "getTarget", "step", "waitForTarget", "Promise", "resolve", "observer", "MutationObserver", "mutations", "forEach", "mutation", "addedNodes", "length", "disconnect", "observe", "body", "childList", "subtree", "WelcomeTour", "steps", "initialSteps", "running", "runningProp", "onRunningChanged", "manager", "usePluginManager", "layout", "useLayout", "setRunning", "useState", "stepIndex", "_setStepIndex", "setSteps", "paused", "dialogOpen", "setStepIndex", "index", "before", "capabilities", "setRunningChanged", "state", "useAsyncEffect", "callback", "options", "type", "action", "size", "EVENTS", "STEP_BEFORE", "TOUR_END", "STEP_AFTER", "ACTIONS", "NEXT", "PREV", "CLOSE", "React", "HelpContext", "Provider", "value", "setIndex", "start", "stop", "style", "Joyride", "continuous", "run", "floaterProps", "tooltipComponent", "Tooltip"]
7
+ }
@@ -0,0 +1,11 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-W4ZZ52LP.mjs";
4
+
5
+ // src/constants.ts
6
+ var SHORTCUTS_DIALOG = `${meta.id}.ShortcutsDialog`;
7
+
8
+ export {
9
+ SHORTCUTS_DIALOG
10
+ };
11
+ //# sourceMappingURL=chunk-GB56M4NZ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/constants.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { meta } from './meta';\n\nexport const SHORTCUTS_DIALOG = `${meta.id}.ShortcutsDialog`;\n"],
5
+ "mappings": ";;;;;AAMO,IAAMA,mBAAmB,GAAGC,KAAKC,EAAE;",
6
+ "names": ["SHORTCUTS_DIALOG", "meta", "id"]
7
+ }
@@ -0,0 +1,8 @@
1
+ // src/operations/index.ts
2
+ import { OperationHandlerSet } from "@dxos/operation";
3
+ var HelpOperationHandlerSet = OperationHandlerSet.lazy(() => import("./start-CWVIDVPK.mjs"));
4
+
5
+ export {
6
+ HelpOperationHandlerSet
7
+ };
8
+ //# sourceMappingURL=chunk-GJZB55DV.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/operations/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { OperationHandlerSet } from '@dxos/operation';\n\nexport * as HelpOperation from './definitions';\n\nexport const HelpOperationHandlerSet = OperationHandlerSet.lazy(() => import('./start'));\n"],
5
+ "mappings": ";AAIA,SAASA,2BAA2B;AAI7B,IAAMC,0BAA0BC,oBAAoBC,KAAK,MAAM,OAAO,sBAAA,CAAA;",
6
+ "names": ["OperationHandlerSet", "HelpOperationHandlerSet", "OperationHandlerSet", "lazy"]
7
+ }