@dxos/plugin-search 0.8.4-main.c1de068 → 0.8.4-main.c351d160a8

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 (146) hide show
  1. package/README.md +0 -1
  2. package/dist/lib/browser/SearchDialog-KJL6C2OF.mjs +108 -0
  3. package/dist/lib/browser/SearchDialog-KJL6C2OF.mjs.map +7 -0
  4. package/dist/lib/browser/SearchMain-VOEEHUCW.mjs +97 -0
  5. package/dist/lib/browser/SearchMain-VOEEHUCW.mjs.map +7 -0
  6. package/dist/lib/browser/app-graph-builder-FHVM5QV7.mjs +78 -0
  7. package/dist/lib/browser/app-graph-builder-FHVM5QV7.mjs.map +7 -0
  8. package/dist/lib/browser/chunk-I3633KKK.mjs +26 -0
  9. package/dist/lib/browser/chunk-I3633KKK.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-NB4JZIOE.mjs +282 -0
  11. package/dist/lib/browser/chunk-NB4JZIOE.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-PZ67KFRU.mjs +22 -0
  13. package/dist/lib/browser/chunk-PZ67KFRU.mjs.map +7 -0
  14. package/dist/lib/browser/index.mjs +52 -59
  15. package/dist/lib/browser/index.mjs.map +4 -4
  16. package/dist/lib/browser/meta.json +1 -1
  17. package/dist/lib/browser/operation-resolver-H4X6BNWR.mjs +26 -0
  18. package/dist/lib/browser/operation-resolver-H4X6BNWR.mjs.map +7 -0
  19. package/dist/lib/browser/react-surface-EZX43GMG.mjs +60 -0
  20. package/dist/lib/browser/react-surface-EZX43GMG.mjs.map +7 -0
  21. package/dist/types/src/SearchPlugin.d.ts +2 -1
  22. package/dist/types/src/SearchPlugin.d.ts.map +1 -1
  23. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  24. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  25. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  26. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  27. package/dist/types/src/capabilities/index.d.ts +3 -3
  28. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  29. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  30. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  31. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  32. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  33. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  34. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  35. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  36. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  37. package/dist/types/src/components/index.d.ts +0 -3
  38. package/dist/types/src/components/index.d.ts.map +1 -1
  39. package/dist/types/src/constants.d.ts +2 -0
  40. package/dist/types/src/constants.d.ts.map +1 -0
  41. package/dist/types/src/{components → containers/SearchDialog}/SearchDialog.d.ts +0 -1
  42. package/dist/types/src/containers/SearchDialog/SearchDialog.d.ts.map +1 -0
  43. package/dist/types/src/containers/SearchDialog/index.d.ts +3 -0
  44. package/dist/types/src/containers/SearchDialog/index.d.ts.map +1 -0
  45. package/dist/types/src/containers/SearchMain/SearchMain.d.ts +6 -0
  46. package/dist/types/src/containers/SearchMain/SearchMain.d.ts.map +1 -0
  47. package/dist/types/src/containers/SearchMain/index.d.ts +3 -0
  48. package/dist/types/src/containers/SearchMain/index.d.ts.map +1 -0
  49. package/dist/types/src/containers/index.d.ts +5 -0
  50. package/dist/types/src/containers/index.d.ts.map +1 -0
  51. package/dist/types/src/hooks/index.d.ts +1 -0
  52. package/dist/types/src/hooks/index.d.ts.map +1 -1
  53. package/dist/types/src/hooks/sync.d.ts +3 -2
  54. package/dist/types/src/hooks/sync.d.ts.map +1 -1
  55. package/dist/types/src/hooks/useGlobalSearch.d.ts +7 -3
  56. package/dist/types/src/hooks/useGlobalSearch.d.ts.map +1 -1
  57. package/dist/types/src/hooks/useSearchResults.d.ts +3 -2
  58. package/dist/types/src/hooks/useSearchResults.d.ts.map +1 -1
  59. package/dist/types/src/hooks/useWebSearch.d.ts +6 -3
  60. package/dist/types/src/hooks/useWebSearch.d.ts.map +1 -1
  61. package/dist/types/src/meta.d.ts +3 -4
  62. package/dist/types/src/meta.d.ts.map +1 -1
  63. package/dist/types/src/search/exa.d.ts +4 -4
  64. package/dist/types/src/search/exa.d.ts.map +1 -1
  65. package/dist/types/src/translations.d.ts +1 -1
  66. package/dist/types/src/types/action.d.ts +14 -11
  67. package/dist/types/src/types/action.d.ts.map +1 -1
  68. package/dist/types/src/types/search.d.ts +3 -7
  69. package/dist/types/src/types/search.d.ts.map +1 -1
  70. package/dist/types/tsconfig.tsbuildinfo +1 -1
  71. package/package.json +57 -47
  72. package/src/SearchPlugin.tsx +28 -46
  73. package/src/capabilities/app-graph-builder/app-graph-builder.ts +70 -0
  74. package/src/capabilities/app-graph-builder/index.ts +7 -0
  75. package/src/capabilities/index.ts +3 -5
  76. package/src/capabilities/operation-resolver/index.ts +7 -0
  77. package/src/capabilities/operation-resolver/operation-resolver.ts +24 -0
  78. package/src/capabilities/react-surface/index.ts +7 -0
  79. package/src/capabilities/react-surface/react-surface.tsx +62 -0
  80. package/src/components/index.ts +0 -4
  81. package/src/constants.ts +7 -0
  82. package/src/containers/SearchDialog/SearchDialog.tsx +120 -0
  83. package/src/containers/SearchDialog/index.ts +6 -0
  84. package/src/containers/SearchMain/SearchMain.tsx +100 -0
  85. package/src/containers/SearchMain/index.ts +7 -0
  86. package/src/containers/index.ts +10 -0
  87. package/src/hooks/index.ts +2 -0
  88. package/src/hooks/sync.test.ts +6 -4
  89. package/src/hooks/sync.ts +27 -31
  90. package/src/hooks/useGlobalSearch.tsx +33 -13
  91. package/src/hooks/useSearchResults.ts +9 -6
  92. package/src/hooks/useWebSearch.ts +21 -11
  93. package/src/meta.ts +10 -7
  94. package/src/search/exa.test.ts +8 -19
  95. package/src/search/exa.ts +135 -154
  96. package/src/translations.ts +1 -1
  97. package/src/types/action.tsx +10 -8
  98. package/src/types/command-score.d.ts +16 -0
  99. package/src/types/search.ts +3 -9
  100. package/dist/lib/browser/app-graph-builder-FLW7KDC5.mjs +0 -77
  101. package/dist/lib/browser/app-graph-builder-FLW7KDC5.mjs.map +0 -7
  102. package/dist/lib/browser/chunk-BXSF7IAU.mjs +0 -190
  103. package/dist/lib/browser/chunk-BXSF7IAU.mjs.map +0 -7
  104. package/dist/lib/browser/chunk-JVMYGOKS.mjs +0 -21
  105. package/dist/lib/browser/chunk-JVMYGOKS.mjs.map +0 -7
  106. package/dist/lib/browser/chunk-KNS62YL2.mjs +0 -20
  107. package/dist/lib/browser/chunk-KNS62YL2.mjs.map +0 -7
  108. package/dist/lib/browser/intent-resolver-JPBGEKFT.mjs +0 -22
  109. package/dist/lib/browser/intent-resolver-JPBGEKFT.mjs.map +0 -7
  110. package/dist/lib/browser/react-surface-ETKK5YS3.mjs +0 -648
  111. package/dist/lib/browser/react-surface-ETKK5YS3.mjs.map +0 -7
  112. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  113. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  114. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  115. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  116. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  117. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  118. package/dist/types/src/components/Search.stories.d.ts +0 -15
  119. package/dist/types/src/components/Search.stories.d.ts.map +0 -1
  120. package/dist/types/src/components/SearchDialog.d.ts.map +0 -1
  121. package/dist/types/src/components/SearchMain.d.ts +0 -7
  122. package/dist/types/src/components/SearchMain.d.ts.map +0 -1
  123. package/dist/types/src/components/SearchResults/SearchResults.d.ts +0 -20
  124. package/dist/types/src/components/SearchResults/SearchResults.d.ts.map +0 -1
  125. package/dist/types/src/components/SearchResults/SearchResults.stories.d.ts +0 -12
  126. package/dist/types/src/components/SearchResults/SearchResults.stories.d.ts.map +0 -1
  127. package/dist/types/src/components/SearchResults/index.d.ts +0 -2
  128. package/dist/types/src/components/SearchResults/index.d.ts.map +0 -1
  129. package/dist/types/src/components/Searchbar/Searchbar.d.ts +0 -14
  130. package/dist/types/src/components/Searchbar/Searchbar.d.ts.map +0 -1
  131. package/dist/types/src/components/Searchbar/Searchbar.stories.d.ts +0 -11
  132. package/dist/types/src/components/Searchbar/Searchbar.stories.d.ts.map +0 -1
  133. package/dist/types/src/components/Searchbar/index.d.ts +0 -2
  134. package/dist/types/src/components/Searchbar/index.d.ts.map +0 -1
  135. package/src/capabilities/app-graph-builder.ts +0 -79
  136. package/src/capabilities/intent-resolver.ts +0 -18
  137. package/src/capabilities/react-surface.tsx +0 -59
  138. package/src/components/Search.stories.tsx +0 -66
  139. package/src/components/SearchDialog.tsx +0 -124
  140. package/src/components/SearchMain.tsx +0 -67
  141. package/src/components/SearchResults/SearchResults.stories.tsx +0 -57
  142. package/src/components/SearchResults/SearchResults.tsx +0 -86
  143. package/src/components/SearchResults/index.ts +0 -5
  144. package/src/components/Searchbar/Searchbar.stories.tsx +0 -28
  145. package/src/components/Searchbar/Searchbar.tsx +0 -67
  146. package/src/components/Searchbar/index.ts +0 -5
package/README.md CHANGED
@@ -1,4 +1,3 @@
1
1
  # @dxos/plugin-search
2
2
 
3
3
  Surface plugin for search.
4
-
@@ -0,0 +1,108 @@
1
+ import {
2
+ useSearchResults
3
+ } from "./chunk-NB4JZIOE.mjs";
4
+ import {
5
+ meta
6
+ } from "./chunk-PZ67KFRU.mjs";
7
+
8
+ // src/containers/SearchDialog/SearchDialog.tsx
9
+ import * as Option from "effect/Option";
10
+ import React, { forwardRef, useCallback, useState } from "react";
11
+ import { useOperationInvoker } from "@dxos/app-framework/ui";
12
+ import { LayoutOperation } from "@dxos/app-toolkit";
13
+ import { useAppGraph, useLayout } from "@dxos/app-toolkit/ui";
14
+ import { Obj } from "@dxos/echo";
15
+ import { Graph } from "@dxos/plugin-graph";
16
+ import { useClient } from "@dxos/react-client";
17
+ import { Filter, useQuery } from "@dxos/react-client/echo";
18
+ import { Button, Dialog, toLocalizedString, useTranslation } from "@dxos/react-ui";
19
+ import { SearchList } from "@dxos/react-ui-searchlist";
20
+ import { mx, osTranslations } from "@dxos/ui-theme";
21
+ var SearchListResult = /* @__PURE__ */ forwardRef(({ node, onSelect }, forwardedRef) => {
22
+ const { t } = useTranslation(meta.id);
23
+ const label = toLocalizedString(node?.properties.label ?? "never", t);
24
+ const handleSelect = useCallback(() => {
25
+ onSelect?.(node.id);
26
+ }, [
27
+ node,
28
+ onSelect
29
+ ]);
30
+ return /* @__PURE__ */ React.createElement(SearchList.Item, {
31
+ value: node.id,
32
+ label,
33
+ icon: node?.properties.icon,
34
+ classNames: "flex gap-2 items-center px-2",
35
+ onSelect: handleSelect,
36
+ ref: forwardedRef
37
+ });
38
+ });
39
+ var SearchDialog = ({ pivotId }) => {
40
+ const { t } = useTranslation(meta.id);
41
+ const { graph } = useAppGraph();
42
+ const layout = useLayout();
43
+ const closed = (Array.isArray(layout.inactive) ? layout.inactive : [
44
+ layout.inactive
45
+ ]).map((id) => graph ? Graph.getNode(graph, id) : Option.none()).filter(Boolean);
46
+ const [queryString, setQueryString] = useState("");
47
+ const client = useClient();
48
+ const dangerouslyLoadAllObjects = useQuery(client.spaces, Filter.everything());
49
+ const [pending, results] = useSearchResults(queryString, dangerouslyLoadAllObjects);
50
+ const resultObjects = Array.from(results.keys());
51
+ const { invokePromise } = useOperationInvoker();
52
+ const handleSelect = useCallback(async (nodeId) => {
53
+ await invokePromise(LayoutOperation.UpdateDialog, {
54
+ state: false
55
+ });
56
+ const index = layout.active.findIndex((id) => id === nodeId);
57
+ if (index !== -1) {
58
+ await invokePromise(LayoutOperation.ScrollIntoView, {
59
+ subject: nodeId
60
+ });
61
+ } else {
62
+ await invokePromise(LayoutOperation.Open, {
63
+ subject: [
64
+ nodeId
65
+ ],
66
+ pivotId,
67
+ positioning: "end"
68
+ });
69
+ }
70
+ }, [
71
+ pivotId,
72
+ invokePromise,
73
+ layout
74
+ ]);
75
+ const handleSearch = useCallback((query) => {
76
+ setQueryString(query);
77
+ }, []);
78
+ return /* @__PURE__ */ React.createElement(Dialog.Content, null, /* @__PURE__ */ React.createElement(Dialog.Title, null, t("search dialog title")), /* @__PURE__ */ React.createElement(SearchList.Root, {
79
+ onSearch: handleSearch
80
+ }, /* @__PURE__ */ React.createElement(SearchList.Content, {
81
+ classNames: "max-h-[24rem] overflow-auto"
82
+ }, /* @__PURE__ */ React.createElement(SearchList.Input, {
83
+ placeholder: t("search placeholder")
84
+ }), /* @__PURE__ */ React.createElement(SearchList.Viewport, null, queryString.length > 0 ? resultObjects.length > 0 ? resultObjects.map((object) => Graph.getNode(graph, Obj.getDXN(object).toString())).filter(Option.isSome).map((node) => /* @__PURE__ */ React.createElement(SearchListResult, {
85
+ key: node.value.id,
86
+ node: node.value,
87
+ onSelect: handleSelect
88
+ })) : /* @__PURE__ */ React.createElement("p", {
89
+ className: "px-1"
90
+ }, t(pending ? "pending results message" : "empty results message")) : /* @__PURE__ */ React.createElement(React.Fragment, null, closed.length > 0 && /* @__PURE__ */ React.createElement("h2", {
91
+ className: mx("my-1", "text-description")
92
+ }, t("recently closed heading")), closed.filter(Option.isSome).map((node) => /* @__PURE__ */ React.createElement(SearchListResult, {
93
+ key: node.value.id,
94
+ node: node.value,
95
+ onSelect: handleSelect
96
+ })))))), /* @__PURE__ */ React.createElement(Dialog.Close, {
97
+ asChild: true
98
+ }, /* @__PURE__ */ React.createElement(Button, {
99
+ variant: "primary"
100
+ }, t("close label", {
101
+ ns: osTranslations
102
+ }))));
103
+ };
104
+ export {
105
+ SearchDialog,
106
+ SearchDialog as default
107
+ };
108
+ //# sourceMappingURL=SearchDialog-KJL6C2OF.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/SearchDialog/SearchDialog.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { forwardRef, useCallback, useState } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { useAppGraph, useLayout } from '@dxos/app-toolkit/ui';\nimport { Obj } from '@dxos/echo';\nimport { Graph, type Node } from '@dxos/plugin-graph';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, useQuery } from '@dxos/react-client/echo';\nimport { Button, Dialog, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { SearchList } from '@dxos/react-ui-searchlist';\nimport { mx, osTranslations } from '@dxos/ui-theme';\n\nimport { useSearchResults } from '../../hooks';\nimport { meta } from '../../meta';\n\ntype SearchListResultProps = {\n node: Node.Node;\n onSelect?: (nodeId: string) => void;\n};\n\nconst SearchListResult = forwardRef<HTMLDivElement, SearchListResultProps>(({ node, onSelect }, forwardedRef) => {\n const { t } = useTranslation(meta.id);\n const label = toLocalizedString(node?.properties.label ?? 'never', t);\n const handleSelect = useCallback(() => {\n onSelect?.(node!.id);\n }, [node, onSelect]);\n return (\n <SearchList.Item\n value={node!.id}\n label={label}\n icon={node?.properties.icon}\n classNames='flex gap-2 items-center px-2'\n onSelect={handleSelect}\n ref={forwardedRef}\n />\n );\n});\n\nexport type SearchDialogProps = {\n pivotId: string;\n};\n\nexport const SearchDialog = ({ pivotId }: SearchDialogProps) => {\n const { t } = useTranslation(meta.id);\n const { graph } = useAppGraph();\n const layout = useLayout();\n const closed = (Array.isArray(layout.inactive) ? layout.inactive : [layout.inactive])\n .map((id) => (graph ? Graph.getNode(graph, id) : Option.none()))\n .filter(Boolean);\n const [queryString, setQueryString] = useState('');\n const client = useClient();\n const dangerouslyLoadAllObjects = useQuery(client.spaces, Filter.everything());\n const [pending, results] = useSearchResults(queryString, dangerouslyLoadAllObjects);\n const resultObjects = Array.from(results.keys());\n const { invokePromise } = useOperationInvoker();\n\n const handleSelect = useCallback(\n async (nodeId: string) => {\n await invokePromise(LayoutOperation.UpdateDialog, { state: false });\n\n // If node is already present in the active parts, scroll to it and close the dialog.\n const index = layout.active.findIndex((id) => id === nodeId);\n if (index !== -1) {\n await invokePromise(LayoutOperation.ScrollIntoView, { subject: nodeId });\n } else {\n await invokePromise(LayoutOperation.Open, {\n subject: [nodeId],\n pivotId,\n positioning: 'end',\n });\n }\n },\n [pivotId, invokePromise, layout],\n );\n\n const handleSearch = useCallback((query: string) => {\n setQueryString(query);\n }, []);\n\n return (\n <Dialog.Content>\n <Dialog.Title>{t('search dialog title')}</Dialog.Title>\n <SearchList.Root onSearch={handleSearch}>\n <SearchList.Content classNames='max-h-[24rem] overflow-auto'>\n <SearchList.Input placeholder={t('search placeholder')} />\n <SearchList.Viewport>\n {queryString.length > 0 ? (\n resultObjects.length > 0 ? (\n resultObjects\n .map((object) => Graph.getNode(graph, Obj.getDXN(object).toString()))\n .filter(Option.isSome)\n .map((node) => <SearchListResult key={node.value.id} node={node.value} onSelect={handleSelect} />)\n ) : (\n <p className='px-1'>{t(pending ? 'pending results message' : 'empty results message')}</p>\n )\n ) : (\n <>\n {closed.length > 0 && (\n <h2 className={mx('my-1', 'text-description')}>{t('recently closed heading')}</h2>\n )}\n {closed.filter(Option.isSome).map((node) => (\n <SearchListResult key={node.value.id} node={node.value} onSelect={handleSelect} />\n ))}\n </>\n )}\n </SearchList.Viewport>\n </SearchList.Content>\n </SearchList.Root>\n <Dialog.Close asChild>\n <Button variant='primary'>{t('close label', { ns: osTranslations })}</Button>\n </Dialog.Close>\n </Dialog.Content>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Option", "React", "forwardRef", "useCallback", "useState", "useOperationInvoker", "LayoutOperation", "useAppGraph", "useLayout", "Obj", "Graph", "useClient", "Filter", "useQuery", "Button", "Dialog", "toLocalizedString", "useTranslation", "SearchList", "mx", "osTranslations", "SearchListResult", "forwardRef", "node", "onSelect", "forwardedRef", "t", "useTranslation", "meta", "id", "label", "toLocalizedString", "properties", "handleSelect", "useCallback", "SearchList", "Item", "value", "icon", "classNames", "ref", "SearchDialog", "pivotId", "graph", "useAppGraph", "layout", "useLayout", "closed", "Array", "isArray", "inactive", "map", "Graph", "getNode", "none", "filter", "Boolean", "queryString", "setQueryString", "useState", "client", "useClient", "dangerouslyLoadAllObjects", "useQuery", "spaces", "Filter", "everything", "pending", "results", "useSearchResults", "resultObjects", "from", "keys", "invokePromise", "useOperationInvoker", "nodeId", "LayoutOperation", "UpdateDialog", "state", "index", "active", "findIndex", "ScrollIntoView", "subject", "Open", "positioning", "handleSearch", "query", "Dialog", "Content", "Title", "Root", "onSearch", "Input", "placeholder", "Viewport", "length", "object", "Obj", "getDXN", "toString", "isSome", "key", "p", "className", "h2", "mx", "Close", "asChild", "Button", "variant", "ns", "osTranslations"]
7
+ }
@@ -0,0 +1,97 @@
1
+ import {
2
+ useGlobalSearch,
3
+ useGlobalSearchResults,
4
+ useWebSearch
5
+ } from "./chunk-NB4JZIOE.mjs";
6
+ import {
7
+ meta
8
+ } from "./chunk-PZ67KFRU.mjs";
9
+
10
+ // src/containers/SearchMain/SearchMain.tsx
11
+ import React, { useCallback, useMemo, useState } from "react";
12
+ import { Surface } from "@dxos/app-framework/ui";
13
+ import { useObjectMenuItems } from "@dxos/app-toolkit/ui";
14
+ import { Entity, Query } from "@dxos/echo";
15
+ import { Filter, useQuery } from "@dxos/react-client/echo";
16
+ import { Card, Panel, ScrollArea, Toolbar, useTranslation } from "@dxos/react-ui";
17
+ import { Menu } from "@dxos/react-ui-menu";
18
+ import { Mosaic } from "@dxos/react-ui-mosaic";
19
+ import { SearchList } from "@dxos/react-ui-searchlist";
20
+ import { Text } from "@dxos/schema";
21
+ var SearchMain = ({ space }) => {
22
+ const { t } = useTranslation(meta.id);
23
+ const { setMatch } = useGlobalSearch();
24
+ const [query, setQuery] = useState();
25
+ const objects = useQuery(space?.db, query === void 0 ? Query.select(Filter.nothing()) : Query.all(Query.select(Filter.text(query, {
26
+ type: "full-text"
27
+ })).select(Filter.not(Filter.type(Text.Text))), Query.select(Filter.text(query, {
28
+ type: "full-text"
29
+ })).select(Filter.type(Text.Text)).referencedBy("org.dxos.type.document", "content")));
30
+ const results = useGlobalSearchResults(objects);
31
+ const { results: webResults } = useWebSearch({
32
+ query
33
+ });
34
+ const allResults = useMemo(() => [
35
+ ...results,
36
+ ...webResults
37
+ ].filter(({ object }) => object && Entity.getLabel(object)), [
38
+ results,
39
+ webResults
40
+ ]);
41
+ const handleSearch = useCallback((text) => {
42
+ setQuery(text);
43
+ setMatch?.(text);
44
+ }, [
45
+ setMatch
46
+ ]);
47
+ return /* @__PURE__ */ React.createElement(SearchList.Root, {
48
+ onSearch: handleSearch
49
+ }, /* @__PURE__ */ React.createElement(Panel.Root, {
50
+ className: "dx-document"
51
+ }, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
52
+ asChild: true
53
+ }, /* @__PURE__ */ React.createElement(Toolbar.Root, null, /* @__PURE__ */ React.createElement(SearchList.Input, {
54
+ placeholder: t("search placeholder")
55
+ }))), /* @__PURE__ */ React.createElement(Panel.Content, {
56
+ asChild: true
57
+ }, /* @__PURE__ */ React.createElement(SearchList.Content, null, /* @__PURE__ */ React.createElement(Mosaic.Container, {
58
+ asChild: true
59
+ }, /* @__PURE__ */ React.createElement(ScrollArea.Root, {
60
+ orientation: "vertical"
61
+ }, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, null, /* @__PURE__ */ React.createElement(Mosaic.Stack, {
62
+ items: allResults,
63
+ getId: (result) => result.object.id,
64
+ Tile: SearchResultTile
65
+ })))), allResults.length === 0 && /* @__PURE__ */ React.createElement(SearchList.Empty, null, t("empty results message"))))));
66
+ };
67
+ var SearchResultTile = (props) => {
68
+ const data = props.data;
69
+ const object = data.object;
70
+ const objectMenuItems = useObjectMenuItems(object);
71
+ return /* @__PURE__ */ React.createElement(Menu.Root, null, /* @__PURE__ */ React.createElement(Card.Root, {
72
+ key: data.id
73
+ }, /* @__PURE__ */ React.createElement(Card.Toolbar, null, /* @__PURE__ */ React.createElement(Card.DragHandle, null), /* @__PURE__ */ React.createElement(Card.Title, null, data.label ?? (data.object && Entity.getLabel(data.object))), /* @__PURE__ */ React.createElement(Menu.Trigger, {
74
+ asChild: true,
75
+ disabled: !objectMenuItems?.length
76
+ }, /* @__PURE__ */ React.createElement(Toolbar.IconButton, {
77
+ iconOnly: true,
78
+ variant: "ghost",
79
+ icon: "ph--dots-three-vertical--regular",
80
+ label: "Actions"
81
+ })), /* @__PURE__ */ React.createElement(Menu.Content, {
82
+ items: objectMenuItems
83
+ })), /* @__PURE__ */ React.createElement(Surface.Surface, {
84
+ role: "card--content",
85
+ data: {
86
+ subject: data.object
87
+ },
88
+ limit: 1
89
+ })));
90
+ };
91
+
92
+ // src/containers/SearchMain/index.ts
93
+ var SearchMain_default = SearchMain;
94
+ export {
95
+ SearchMain_default as default
96
+ };
97
+ //# sourceMappingURL=SearchMain-VOEEHUCW.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/SearchMain/SearchMain.tsx", "../../../src/containers/SearchMain/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { useObjectMenuItems } from '@dxos/app-toolkit/ui';\nimport { Entity, Query } from '@dxos/echo';\nimport { Filter, type Space, useQuery } from '@dxos/react-client/echo';\nimport { Card, Panel, ScrollArea, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { Menu } from '@dxos/react-ui-menu';\nimport { Mosaic, type MosaicStackTileComponent } from '@dxos/react-ui-mosaic';\nimport { SearchList } from '@dxos/react-ui-searchlist';\nimport { Text } from '@dxos/schema';\n\nimport { useGlobalSearch, useGlobalSearchResults, useWebSearch } from '../../hooks';\nimport { meta } from '../../meta';\nimport { type SearchResult } from '../../types';\n\nexport const SearchMain = ({ space }: { space?: Space }) => {\n const { t } = useTranslation(meta.id);\n const { setMatch } = useGlobalSearch();\n const [query, setQuery] = useState<string>();\n // TODO(burdon): Option to search across spaces.\n const objects = useQuery(\n space?.db,\n query === undefined\n ? Query.select(Filter.nothing())\n : // TODO(dmaretskyi): Final version would walk the ancestry of the object until we find a non-system type.\n Query.all(\n Query.select(Filter.text(query, { type: 'full-text' })).select(Filter.not(Filter.type(Text.Text))),\n Query.select(Filter.text(query, { type: 'full-text' }))\n .select(Filter.type(Text.Text))\n .referencedBy('org.dxos.type.document', 'content'),\n ),\n );\n\n const results = useGlobalSearchResults(objects);\n const { results: webResults } = useWebSearch({ query });\n const allResults = useMemo(\n () => [...results, ...webResults].filter(({ object }) => object && Entity.getLabel(object)),\n [results, webResults],\n );\n\n const handleSearch = useCallback(\n (text: string) => {\n setQuery(text);\n setMatch?.(text);\n },\n [setMatch],\n );\n\n return (\n <SearchList.Root onSearch={handleSearch}>\n <Panel.Root className='dx-document'>\n <Panel.Toolbar asChild>\n <Toolbar.Root>\n <SearchList.Input placeholder={t('search placeholder')} />\n </Toolbar.Root>\n </Panel.Toolbar>\n <Panel.Content asChild>\n <SearchList.Content>\n <Mosaic.Container asChild>\n <ScrollArea.Root orientation='vertical'>\n <ScrollArea.Viewport>\n <Mosaic.Stack items={allResults} getId={(result) => result.object!.id} Tile={SearchResultTile} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Mosaic.Container>\n {allResults.length === 0 && <SearchList.Empty>{t('empty results message')}</SearchList.Empty>}\n </SearchList.Content>\n </Panel.Content>\n </Panel.Root>\n </SearchList.Root>\n );\n};\n\nconst SearchResultTile: MosaicStackTileComponent<SearchResult> = (props) => {\n const data = props.data;\n const object = data.object!;\n const objectMenuItems = useObjectMenuItems(object);\n\n return (\n <Menu.Root>\n <Card.Root key={data.id}>\n <Card.Toolbar>\n <Card.DragHandle />\n <Card.Title>{data.label ?? (data.object && Entity.getLabel(data.object))}</Card.Title>\n {/* TODO(wittjosiah): Reconcile with Card.Menu. */}\n <Menu.Trigger asChild disabled={!objectMenuItems?.length}>\n <Toolbar.IconButton iconOnly variant='ghost' icon='ph--dots-three-vertical--regular' label='Actions' />\n </Menu.Trigger>\n <Menu.Content items={objectMenuItems} />\n </Card.Toolbar>\n <Surface.Surface role='card--content' data={{ subject: data.object }} limit={1} />\n </Card.Root>\n </Menu.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { SearchMain } from './SearchMain';\n\nexport default SearchMain;\n"],
5
+ "mappings": ";;;;;;;;;;AAIA,OAAOA,SAASC,aAAaC,SAASC,gBAAgB;AAEtD,SAASC,eAAe;AACxB,SAASC,0BAA0B;AACnC,SAASC,QAAQC,aAAa;AAC9B,SAASC,QAAoBC,gBAAgB;AAC7C,SAASC,MAAMC,OAAOC,YAAYC,SAASC,sBAAsB;AACjE,SAASC,YAAY;AACrB,SAASC,cAA6C;AACtD,SAASC,kBAAkB;AAC3B,SAASC,YAAY;AAMd,IAAMC,aAAa,CAAC,EAAEC,MAAK,MAAqB;AACrD,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,QAAM,EAAEC,SAAQ,IAAKC,gBAAAA;AACrB,QAAM,CAACC,OAAOC,QAAAA,IAAYC,SAAAA;AAE1B,QAAMC,UAAUC,SACdX,OAAOY,IACPL,UAAUM,SACNC,MAAMC,OAAOC,OAAOC,QAAO,CAAA,IAE3BH,MAAMI,IACJJ,MAAMC,OAAOC,OAAOG,KAAKZ,OAAO;IAAEa,MAAM;EAAY,CAAA,CAAA,EAAIL,OAAOC,OAAOK,IAAIL,OAAOI,KAAKE,KAAKA,IAAI,CAAA,CAAA,GAC/FR,MAAMC,OAAOC,OAAOG,KAAKZ,OAAO;IAAEa,MAAM;EAAY,CAAA,CAAA,EACjDL,OAAOC,OAAOI,KAAKE,KAAKA,IAAI,CAAA,EAC5BC,aAAa,0BAA0B,SAAA,CAAA,CAAA;AAIlD,QAAMC,UAAUC,uBAAuBf,OAAAA;AACvC,QAAM,EAAEc,SAASE,WAAU,IAAKC,aAAa;IAAEpB;EAAM,CAAA;AACrD,QAAMqB,aAAaC,QACjB,MAAM;OAAIL;OAAYE;IAAYI,OAAO,CAAC,EAAEC,OAAM,MAAOA,UAAUC,OAAOC,SAASF,MAAAA,CAAAA,GACnF;IAACP;IAASE;GAAW;AAGvB,QAAMQ,eAAeC,YACnB,CAAChB,SAAAA;AACCX,aAASW,IAAAA;AACTd,eAAWc,IAAAA;EACb,GACA;IAACd;GAAS;AAGZ,SACE,sBAAA,cAAC+B,WAAWC,MAAI;IAACC,UAAUJ;KACzB,sBAAA,cAACK,MAAMF,MAAI;IAACG,WAAU;KACpB,sBAAA,cAACD,MAAME,SAAO;IAACC,SAAAA;KACb,sBAAA,cAACD,QAAQJ,MAAI,MACX,sBAAA,cAACD,WAAWO,OAAK;IAACC,aAAa3C,EAAE,oBAAA;QAGrC,sBAAA,cAACsC,MAAMM,SAAO;IAACH,SAAAA;KACb,sBAAA,cAACN,WAAWS,SAAO,MACjB,sBAAA,cAACC,OAAOC,WAAS;IAACL,SAAAA;KAChB,sBAAA,cAACM,WAAWX,MAAI;IAACY,aAAY;KAC3B,sBAAA,cAACD,WAAWE,UAAQ,MAClB,sBAAA,cAACJ,OAAOK,OAAK;IAACC,OAAOxB;IAAYyB,OAAO,CAACC,WAAWA,OAAOvB,OAAQ3B;IAAImD,MAAMC;SAIlF5B,WAAW6B,WAAW,KAAK,sBAAA,cAACrB,WAAWsB,OAAK,MAAEzD,EAAE,uBAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAM7D;AAEA,IAAMuD,mBAA2D,CAACG,UAAAA;AAChE,QAAMC,OAAOD,MAAMC;AACnB,QAAM7B,SAAS6B,KAAK7B;AACpB,QAAM8B,kBAAkBC,mBAAmB/B,MAAAA;AAE3C,SACE,sBAAA,cAACgC,KAAK1B,MAAI,MACR,sBAAA,cAAC2B,KAAK3B,MAAI;IAAC4B,KAAKL,KAAKxD;KACnB,sBAAA,cAAC4D,KAAKvB,SAAO,MACX,sBAAA,cAACuB,KAAKE,YAAU,IAAA,GAChB,sBAAA,cAACF,KAAKG,OAAK,MAAEP,KAAKQ,UAAUR,KAAK7B,UAAUC,OAAOC,SAAS2B,KAAK7B,MAAM,EAAA,GAEtE,sBAAA,cAACgC,KAAKM,SAAO;IAAC3B,SAAAA;IAAQ4B,UAAU,CAACT,iBAAiBJ;KAChD,sBAAA,cAAChB,QAAQ8B,YAAU;IAACC,UAAAA;IAASC,SAAQ;IAAQC,MAAK;IAAmCN,OAAM;OAE7F,sBAAA,cAACL,KAAKlB,SAAO;IAACO,OAAOS;OAEvB,sBAAA,cAACc,QAAQA,SAAO;IAACC,MAAK;IAAgBhB,MAAM;MAAEiB,SAASjB,KAAK7B;IAAO;IAAG+C,OAAO;;AAIrF;;;AC7FA,IAAA,qBAAeC;",
6
+ "names": ["React", "useCallback", "useMemo", "useState", "Surface", "useObjectMenuItems", "Entity", "Query", "Filter", "useQuery", "Card", "Panel", "ScrollArea", "Toolbar", "useTranslation", "Menu", "Mosaic", "SearchList", "Text", "SearchMain", "space", "t", "useTranslation", "meta", "id", "setMatch", "useGlobalSearch", "query", "setQuery", "useState", "objects", "useQuery", "db", "undefined", "Query", "select", "Filter", "nothing", "all", "text", "type", "not", "Text", "referencedBy", "results", "useGlobalSearchResults", "webResults", "useWebSearch", "allResults", "useMemo", "filter", "object", "Entity", "getLabel", "handleSearch", "useCallback", "SearchList", "Root", "onSearch", "Panel", "className", "Toolbar", "asChild", "Input", "placeholder", "Content", "Mosaic", "Container", "ScrollArea", "orientation", "Viewport", "Stack", "items", "getId", "result", "Tile", "SearchResultTile", "length", "Empty", "props", "data", "objectMenuItems", "useObjectMenuItems", "Menu", "Card", "key", "DragHandle", "Title", "label", "Trigger", "disabled", "IconButton", "iconOnly", "variant", "icon", "Surface", "role", "subject", "limit", "SearchMain"]
7
+ }
@@ -0,0 +1,78 @@
1
+ import {
2
+ SearchOperation
3
+ } from "./chunk-I3633KKK.mjs";
4
+ import {
5
+ meta
6
+ } from "./chunk-PZ67KFRU.mjs";
7
+
8
+ // src/capabilities/app-graph-builder/app-graph-builder.ts
9
+ import * as Effect from "effect/Effect";
10
+ import { Capability } from "@dxos/app-framework";
11
+ import { AppCapabilities, COMPANION_PREFIX, getSpaceIdFromPath } from "@dxos/app-toolkit";
12
+ import { Operation } from "@dxos/operation";
13
+ import { ClientCapabilities } from "@dxos/plugin-client";
14
+ import { DECK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
15
+ import { GraphBuilder, NodeMatcher } from "@dxos/plugin-graph";
16
+ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function* () {
17
+ const extensions = yield* Effect.all([
18
+ GraphBuilder.createExtension({
19
+ id: `${meta.id}.space-search`,
20
+ match: NodeMatcher.whenRoot,
21
+ connector: Effect.fnUntraced(function* (node, get) {
22
+ const client = yield* Capability.get(ClientCapabilities.Client);
23
+ const layoutAtom = get(yield* Capability.atom(AppCapabilities.Layout))[0];
24
+ const layout = layoutAtom ? get(layoutAtom) : void 0;
25
+ const spaceId = layout?.workspace ? getSpaceIdFromPath(layout.workspace) : void 0;
26
+ const space = spaceId ? client.spaces.get(spaceId) : null;
27
+ return [
28
+ {
29
+ id: `${COMPANION_PREFIX}search`,
30
+ type: DECK_COMPANION_TYPE,
31
+ data: space,
32
+ properties: {
33
+ label: [
34
+ "search label",
35
+ {
36
+ ns: meta.id
37
+ }
38
+ ],
39
+ icon: "ph--magnifying-glass--regular",
40
+ disposition: "hidden"
41
+ }
42
+ }
43
+ ];
44
+ })
45
+ }),
46
+ GraphBuilder.createExtension({
47
+ id: meta.id,
48
+ match: NodeMatcher.whenRoot,
49
+ actions: () => Effect.succeed([
50
+ {
51
+ id: SearchOperation.OpenSearch.meta.key,
52
+ data: Effect.fnUntraced(function* () {
53
+ yield* Operation.invoke(SearchOperation.OpenSearch);
54
+ return false;
55
+ }),
56
+ properties: {
57
+ label: [
58
+ "search action label",
59
+ {
60
+ ns: meta.id
61
+ }
62
+ ],
63
+ icon: "ph--magnifying-glass--regular",
64
+ keyBinding: {
65
+ macos: "shift+meta+f",
66
+ windows: "shift+alt+f"
67
+ }
68
+ }
69
+ }
70
+ ])
71
+ })
72
+ ]);
73
+ return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);
74
+ }));
75
+ export {
76
+ app_graph_builder_default as default
77
+ };
78
+ //# sourceMappingURL=app-graph-builder-FHVM5QV7.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 { Capability } from '@dxos/app-framework';\nimport { AppCapabilities, COMPANION_PREFIX, getSpaceIdFromPath } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/operation';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { DECK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { GraphBuilder, NodeMatcher } from '@dxos/plugin-graph';\n\nimport { meta } from '../../meta';\nimport { SearchOperation } from '../../types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const extensions = yield* Effect.all([\n GraphBuilder.createExtension({\n id: `${meta.id}.space-search`,\n match: NodeMatcher.whenRoot,\n connector: Effect.fnUntraced(function* (node, get) {\n const client = yield* Capability.get(ClientCapabilities.Client);\n const layoutAtom = get(yield* Capability.atom(AppCapabilities.Layout))[0];\n const layout = layoutAtom ? get(layoutAtom) : undefined;\n const spaceId = layout?.workspace ? getSpaceIdFromPath(layout.workspace) : undefined;\n const space = spaceId ? client.spaces.get(spaceId) : null;\n\n return [\n {\n id: `${COMPANION_PREFIX}search`,\n type: DECK_COMPANION_TYPE,\n data: space,\n properties: {\n label: ['search label', { ns: meta.id }],\n icon: 'ph--magnifying-glass--regular',\n disposition: 'hidden',\n },\n },\n ];\n }),\n }),\n GraphBuilder.createExtension({\n id: meta.id,\n match: NodeMatcher.whenRoot,\n actions: () =>\n Effect.succeed([\n {\n id: SearchOperation.OpenSearch.meta.key,\n data: Effect.fnUntraced(function* () {\n yield* Operation.invoke(SearchOperation.OpenSearch);\n return false;\n }),\n properties: {\n label: ['search action label', { ns: meta.id }],\n icon: 'ph--magnifying-glass--regular',\n keyBinding: {\n macos: 'shift+meta+f',\n windows: 'shift+alt+f',\n },\n },\n },\n ]),\n }),\n ]);\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
5
+ "mappings": ";;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiBC,kBAAkBC,0BAA0B;AACtE,SAASC,iBAAiB;AAC1B,SAASC,0BAA0B;AACnC,SAASC,2BAA2B;AACpC,SAASC,cAAcC,mBAAmB;AAK1C,IAAA,4BAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,aAAa,OAAcC,WAAI;IACnCC,aAAaC,gBAAgB;MAC3BC,IAAI,GAAGC,KAAKD,EAAE;MACdE,OAAOC,YAAYC;MACnBC,WAAkBV,kBAAW,WAAWW,MAAMC,KAAG;AAC/C,cAAMC,SAAS,OAAOf,WAAWc,IAAIE,mBAAmBC,MAAM;AAC9D,cAAMC,aAAaJ,IAAI,OAAOd,WAAWmB,KAAKC,gBAAgBC,MAAM,CAAA,EAAG,CAAA;AACvE,cAAMC,SAASJ,aAAaJ,IAAII,UAAAA,IAAcK;AAC9C,cAAMC,UAAUF,QAAQG,YAAYC,mBAAmBJ,OAAOG,SAAS,IAAIF;AAC3E,cAAMI,QAAQH,UAAUT,OAAOa,OAAOd,IAAIU,OAAAA,IAAW;AAErD,eAAO;UACL;YACEjB,IAAI,GAAGsB,gBAAAA;YACPC,MAAMC;YACNC,MAAML;YACNM,YAAY;cACVC,OAAO;gBAAC;gBAAgB;kBAAEC,IAAI3B,KAAKD;gBAAG;;cACtC6B,MAAM;cACNC,aAAa;YACf;UACF;;MAEJ,CAAA;IACF,CAAA;IACAhC,aAAaC,gBAAgB;MAC3BC,IAAIC,KAAKD;MACTE,OAAOC,YAAYC;MACnB2B,SAAS,MACAC,eAAQ;QACb;UACEhC,IAAIiC,gBAAgBC,WAAWjC,KAAKkC;UACpCV,MAAa9B,kBAAW,aAAA;AACtB,mBAAOyC,UAAUC,OAAOJ,gBAAgBC,UAAU;AAClD,mBAAO;UACT,CAAA;UACAR,YAAY;YACVC,OAAO;cAAC;cAAuB;gBAAEC,IAAI3B,KAAKD;cAAG;;YAC7C6B,MAAM;YACNS,YAAY;cACVC,OAAO;cACPC,SAAS;YACX;UACF;QACF;OACD;IACL,CAAA;GACD;AAED,SAAO/C,WAAWgD,YAAY5B,gBAAgB6B,iBAAiB9C,UAAAA;AACjE,CAAA,CAAA;",
6
+ "names": ["Effect", "Capability", "AppCapabilities", "COMPANION_PREFIX", "getSpaceIdFromPath", "Operation", "ClientCapabilities", "DECK_COMPANION_TYPE", "GraphBuilder", "NodeMatcher", "Capability", "makeModule", "fnUntraced", "extensions", "all", "GraphBuilder", "createExtension", "id", "meta", "match", "NodeMatcher", "whenRoot", "connector", "node", "get", "client", "ClientCapabilities", "Client", "layoutAtom", "atom", "AppCapabilities", "Layout", "layout", "undefined", "spaceId", "workspace", "getSpaceIdFromPath", "space", "spaces", "COMPANION_PREFIX", "type", "DECK_COMPANION_TYPE", "data", "properties", "label", "ns", "icon", "disposition", "actions", "succeed", "SearchOperation", "OpenSearch", "key", "Operation", "invoke", "keyBinding", "macos", "windows", "contributes", "AppGraphBuilder"]
7
+ }
@@ -0,0 +1,26 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-PZ67KFRU.mjs";
4
+
5
+ // src/types/action.tsx
6
+ import * as Schema from "effect/Schema";
7
+ import { Operation } from "@dxos/operation";
8
+ var SEARCH_OPERATION = `${meta.id}.operation`;
9
+ (function(SearchOperation2) {
10
+ SearchOperation2.OpenSearch = Operation.make({
11
+ meta: {
12
+ key: `${SEARCH_OPERATION}.open-search`,
13
+ name: "Open Search"
14
+ },
15
+ schema: {
16
+ input: Schema.Void,
17
+ output: Schema.Void
18
+ }
19
+ });
20
+ })(SearchOperation || (SearchOperation = {}));
21
+ var SearchOperation;
22
+
23
+ export {
24
+ SearchOperation
25
+ };
26
+ //# sourceMappingURL=chunk-I3633KKK.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/action.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Operation } from '@dxos/operation';\n\nimport { meta } from '../meta';\n\nconst SEARCH_OPERATION = `${meta.id}.operation`;\n\nexport namespace SearchOperation {\n export const OpenSearch = Operation.make({\n meta: { key: `${SEARCH_OPERATION}.open-search`, name: 'Open Search' },\n schema: { input: Schema.Void, output: Schema.Void },\n });\n}\n"],
5
+ "mappings": ";;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAI1B,IAAMC,mBAAmB,GAAGC,KAAKC,EAAE;UAElBC,kBAAAA;mBACFC,aAAaC,UAAUC,KAAK;IACvCL,MAAM;MAAEM,KAAK,GAAGP,gBAAAA;MAAgCQ,MAAM;IAAc;IACpEC,QAAQ;MAAEC,OAAcC;MAAMC,QAAeD;IAAK;EACpD,CAAA;AACF,GALiBR,oBAAAA,kBAAAA,CAAAA,EAAAA;;",
6
+ "names": ["Schema", "Operation", "SEARCH_OPERATION", "meta", "id", "SearchOperation", "OpenSearch", "Operation", "make", "key", "name", "schema", "input", "Void", "output"]
7
+ }