@dxos/plugin-search 0.7.2 → 0.7.3-main.2dd075e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/index.mjs +6 -5
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/types/src/components/SearchMain.d.ts.map +1 -1
- package/dist/types/src/search-sync.d.ts.map +1 -1
- package/package.json +18 -17
- package/src/components/SearchDialog.tsx +2 -2
- package/src/components/SearchMain.tsx +2 -2
- package/src/search-sync.ts +2 -1
- package/src/search.test.ts +2 -1
|
@@ -53,7 +53,7 @@ var Searchbar = ({ classes, variant, placeholder, value, onChange }) => {
|
|
|
53
53
|
// packages/plugins/experimental/plugin-search/src/components/SearchMain.tsx
|
|
54
54
|
import React4, { useState as useState3 } from "react";
|
|
55
55
|
import { useClient } from "@dxos/react-client";
|
|
56
|
-
import { useQuery } from "@dxos/react-client/echo";
|
|
56
|
+
import { Filter, useQuery } from "@dxos/react-client/echo";
|
|
57
57
|
import { useTranslation } from "@dxos/react-ui";
|
|
58
58
|
import { groupSurface, mx as mx3 } from "@dxos/react-ui-theme";
|
|
59
59
|
|
|
@@ -146,7 +146,8 @@ import React3, { createContext, useContext, useMemo, useState as useState2 } fro
|
|
|
146
146
|
import { raise } from "@dxos/debug";
|
|
147
147
|
|
|
148
148
|
// packages/plugins/experimental/plugin-search/src/search-sync.ts
|
|
149
|
-
import { AST
|
|
149
|
+
import { AST } from "@dxos/echo-schema";
|
|
150
|
+
import { getSchema } from "@dxos/live-object";
|
|
150
151
|
import { TextType } from "@dxos/plugin-markdown/types";
|
|
151
152
|
var queryStringToMatch = (queryString) => {
|
|
152
153
|
const trimmed = queryString?.trim();
|
|
@@ -271,7 +272,7 @@ var SearchMain = ({ space }) => {
|
|
|
271
272
|
const client = useClient();
|
|
272
273
|
const { setMatch } = useGlobalSearch();
|
|
273
274
|
const allSpaces = false;
|
|
274
|
-
const objects = useQuery(allSpaces ? client.spaces : space);
|
|
275
|
+
const objects = useQuery(allSpaces ? client.spaces : space, Filter.all());
|
|
275
276
|
const results = useGlobalSearchResults(objects);
|
|
276
277
|
const [selected, setSelected] = useState3();
|
|
277
278
|
const handleSelect = (id) => {
|
|
@@ -297,7 +298,7 @@ var SearchMain = ({ space }) => {
|
|
|
297
298
|
import React5, { forwardRef as forwardRef2, useCallback, useState as useState5 } from "react";
|
|
298
299
|
import { useResolvePlugin, parseNavigationPlugin, parseGraphPlugin, NavigationAction, LayoutAction, isLayoutParts, useIntentDispatcher } from "@dxos/app-framework";
|
|
299
300
|
import { useClient as useClient2 } from "@dxos/react-client";
|
|
300
|
-
import { fullyQualifiedId, useQuery as useQuery2 } from "@dxos/react-client/echo";
|
|
301
|
+
import { Filter as Filter2, fullyQualifiedId, useQuery as useQuery2 } from "@dxos/react-client/echo";
|
|
301
302
|
import { Button, Dialog, Icon, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
302
303
|
import { SearchList } from "@dxos/react-ui-searchlist";
|
|
303
304
|
import { descriptionText, mx as mx4 } from "@dxos/react-ui-theme";
|
|
@@ -379,7 +380,7 @@ var SearchDialog = ({ subject }) => {
|
|
|
379
380
|
const active = navigationPlugin?.provides.location.active;
|
|
380
381
|
const [queryString, setQueryString] = useState5("");
|
|
381
382
|
const client = useClient2();
|
|
382
|
-
const dangerouslyLoadAllObjects = useQuery2(client.spaces);
|
|
383
|
+
const dangerouslyLoadAllObjects = useQuery2(client.spaces, Filter2.all());
|
|
383
384
|
const [pending, results] = useSearchResults(queryString, dangerouslyLoadAllObjects);
|
|
384
385
|
const resultObjects = Array.from(results.keys());
|
|
385
386
|
const dispatch = useIntentDispatcher();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/SearchPlugin.tsx", "../../../src/components/Searchbar/Searchbar.tsx", "../../../src/components/SearchMain.tsx", "../../../src/components/SearchResults/SearchResults.tsx", "../../../src/context.tsx", "../../../src/search-sync.ts", "../../../src/components/SearchDialog.tsx", "../../../src/search.ts", "../../../src/translations.ts", "../../../src/types.tsx", "../../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport {\n type PluginDefinition,\n type LocationProvides,\n type GraphProvides,\n type Plugin,\n resolvePlugin,\n parseIntentPlugin,\n parseGraphPlugin,\n parseNavigationPlugin,\n LayoutAction,\n firstIdInPart,\n} from '@dxos/app-framework';\nimport { createExtension, type Node } from '@dxos/plugin-graph';\nimport { getActiveSpace } from '@dxos/plugin-space';\n\nimport { SearchDialog, SearchMain } from './components';\nimport { SearchContextProvider } from './context';\nimport meta, { SEARCH_PLUGIN, SEARCH_RESULT } from './meta';\nimport type { SearchResult } from './search-sync';\nimport translations from './translations';\nimport { SearchAction, type SearchPluginProvides } from './types';\n\nexport const SearchPlugin = (): PluginDefinition<SearchPluginProvides> => {\n let navigationPlugin: Plugin<LocationProvides> | undefined;\n let graphPlugin: Plugin<GraphProvides> | undefined;\n\n return {\n meta,\n ready: async (plugins) => {\n navigationPlugin = resolvePlugin(plugins, parseNavigationPlugin);\n graphPlugin = resolvePlugin(plugins, parseGraphPlugin);\n },\n provides: {\n translations,\n metadata: {\n records: {\n [SEARCH_RESULT]: {\n parse: (item: SearchResult, type: string) => {\n switch (type) {\n case 'node':\n return { id: item.id, label: item.label, data: item.object };\n case 'object':\n return item.object;\n case 'view-object':\n return item;\n }\n },\n },\n },\n },\n graph: {\n builder: (plugins) => {\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n return createExtension({\n id: SEARCH_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id: SearchAction.SEARCH,\n data: async () => {\n await intentPlugin?.provides.intent.dispatch({\n plugin: SEARCH_PLUGIN,\n action: SearchAction.SEARCH,\n });\n },\n properties: {\n label: ['search action label', { ns: SEARCH_PLUGIN }],\n icon: 'ph--magnifying-glass--regular',\n keyBinding: {\n macos: 'shift+meta+f',\n windows: 'shift+alt+f',\n },\n testId: 'searchPlugin.search',\n },\n },\n ],\n });\n },\n },\n context: ({ children }) => <SearchContextProvider>{children}</SearchContextProvider>,\n surface: {\n component: ({ data, role }) => {\n const location = navigationPlugin?.provides.location;\n const graph = graphPlugin?.provides.graph;\n const space = graph && location ? getActiveSpace(graph, firstIdInPart(location.active, 'main')) : undefined;\n\n switch (role) {\n case 'dialog':\n return data.component === `${SEARCH_PLUGIN}/Dialog` ? (\n <SearchDialog subject={data.subject as any} />\n ) : null;\n case 'search-input':\n return space ? <SearchMain space={space} /> : null;\n }\n\n return null;\n },\n },\n intent: {\n resolver: (intent, plugins) => {\n switch (intent.action) {\n case SearchAction.SEARCH: {\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n return intentPlugin?.provides.intent.dispatch({\n action: LayoutAction.SET_LAYOUT,\n data: { element: 'complementary', state: true },\n });\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MagnifyingGlass } from '@phosphor-icons/react';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { Input, type TextInputProps } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nexport type SearchbarProps = Pick<TextInputProps, 'variant' | 'placeholder'> & {\n classes?: {\n root?: string;\n input?: string;\n };\n value?: string;\n onChange?: (text?: string) => void;\n delay?: number;\n};\n\nexport const Searchbar = ({ classes, variant, placeholder, value, onChange }: SearchbarProps) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [text, setText] = useState(value);\n useEffect(() => {\n setText(value);\n }, [value]);\n const handleChange = (text?: string) => {\n setText(text);\n onChange?.(text);\n };\n\n const handleReset = () => {\n handleChange(undefined);\n inputRef.current?.focus();\n };\n\n return (\n <div className='flex w-full items-center pli-1 pbs-1'>\n <Input.Root>\n <Input.TextInput\n ref={inputRef}\n placeholder={placeholder}\n variant={variant}\n value={text ?? ''}\n classNames={mx('pl-3 pr-10', classes?.input)}\n onChange={({ target }) => handleChange(target.value)}\n onKeyDown={({ key }) => key === 'Escape' && handleReset()}\n />\n\n {/* TODO(burdon): Margin should be density specific. */}\n <div role='button' className='-ml-7 p-0 cursor-pointer' onClick={handleReset}>\n <MagnifyingGlass className={getSize(5)} />\n </div>\n </Input.Root>\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC, useState } from 'react';\n\nimport { useClient } from '@dxos/react-client';\nimport { useQuery, type Space } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { groupSurface, mx } from '@dxos/react-ui-theme';\n\nimport { SearchResults } from './SearchResults';\nimport { Searchbar } from './Searchbar';\nimport { useGlobalSearch, useGlobalSearchResults } from '../context';\nimport { SEARCH_PLUGIN } from '../meta';\n\nexport const SearchMain: FC<{ space: Space }> = ({ space }) => {\n const { t } = useTranslation(SEARCH_PLUGIN);\n const client = useClient();\n const { setMatch } = useGlobalSearch();\n // TODO(burdon): UX to select all spaces.\n const allSpaces = false;\n\n // TODO(burdon): Returns ALL objects (e.g., incl. Text objects that are fields of parent objects).\n const objects = useQuery(allSpaces ? client.spaces : space);\n const results = useGlobalSearchResults(objects);\n\n const [selected, setSelected] = useState<string>();\n\n // TODO(burdon): Activate and/or filter current main (set context).\n const handleSelect = (id: string) => {\n setSelected((selected) => (selected === id ? undefined : id));\n };\n\n return (\n <div className='flex flex-col grow h-full'>\n <Searchbar placeholder={t('search placeholder')} onChange={setMatch} />\n {results.length > 0 && (\n <div className='absolute top-[--topbar-size] bottom-0 z-[1]'>\n {/* TODO(burdon): Change to Portal? */}\n <div className={mx('flex flex-col h-full overflow-hidden', groupSurface)}>\n <SearchResults items={results} selected={selected} onSelect={handleSelect} />\n </div>\n </div>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Icon, Buildings, Folders, User } from '@phosphor-icons/react';\nimport React, { type FC, forwardRef } from 'react';\n\nimport { ScrollArea } from '@dxos/react-ui';\nimport { Card } from '@dxos/react-ui-card';\nimport { type MosaicTileComponent, Mosaic } from '@dxos/react-ui-mosaic';\nimport { ghostHover, mx } from '@dxos/react-ui-theme';\n\nimport { SEARCH_RESULT } from '../../meta';\nimport type { SearchResult } from '../../search-sync';\n\n// TODO(burdon): Factor out.\nconst styles = {\n selected: '!bg-primary-100 !dark:bg-primary-900',\n};\n\n// TODO(burdon): Registry defined by plugins?\nconst getIcon = (type: string): Icon | undefined => {\n const iconMap: Record<string, Icon> = {\n user: User,\n organization: Buildings,\n project: Folders,\n };\n\n return iconMap[type];\n};\n\nexport const Snippet: FC<{ text: string; match?: RegExp }> = ({ text, match }) => {\n let content = <>{text}</>;\n if (match) {\n const result = text.match(match);\n if (result?.index !== undefined) {\n // Break near to match.\n const maxOffset = 16;\n let before = text.slice(0, result.index);\n if (before.length > maxOffset) {\n const idx = before.indexOf(' ', result.index - maxOffset);\n before = '… ' + before.slice(idx);\n }\n\n const after = text.slice(result.index + result[0].length);\n content = (\n <>\n {before}\n <span className='text-blue-500'>{result[0]}</span>\n {after}\n </>\n );\n }\n }\n\n return <span className='text-xs mb-1 line-clamp-3 text-neutral-300'>{content}</span>;\n};\n\nexport type SearchItemProps = SearchResult & { selected: boolean } & Pick<SearchResultsProps, 'onSelect'>;\n\nexport const SearchItem: MosaicTileComponent<SearchItemProps> = forwardRef(\n ({ draggableStyle, draggableProps, item, debug = false }, forwardRef) => {\n const { id, type, label, snippet, match, selected, onSelect } = item;\n const Icon = type ? getIcon(type) : undefined;\n\n return (\n <Card.Root\n ref={forwardRef}\n style={draggableStyle}\n classNames={mx('mx-2 mt-2 cursor-pointer', ghostHover, selected && styles.selected)}\n onClick={() => onSelect?.(id)}\n >\n <Card.Header>\n <Card.DragHandle {...draggableProps} />\n <Card.Title title={label ?? 'Untitled'} />\n {Icon && <Card.Endcap Icon={Icon} />}\n </Card.Header>\n {snippet && (\n <Card.Body gutter>\n <Snippet text={snippet} match={match} />\n </Card.Body>\n )}\n {debug && (\n <Card.Body gutter>\n <pre className='text-xs whitespace-pre-line'>{JSON.stringify(item)}</pre>\n </Card.Body>\n )}\n </Card.Root>\n );\n },\n);\n\nexport type SearchResultsProps = {\n match?: RegExp;\n items: SearchResult[];\n selected?: string;\n onSelect?: (id: string) => void;\n};\n\n// TODO(burdon): Key cursor up/down.\nexport const SearchResults = ({ items, selected, onSelect }: SearchResultsProps) => {\n const path = 'search';\n return (\n <ScrollArea.Root classNames='grow'>\n <ScrollArea.Viewport>\n <Mosaic.Container id={path} Component={SearchItem}>\n {items.map((item) => (\n <Mosaic.DraggableTile\n key={item.id}\n path={path}\n type={SEARCH_RESULT}\n item={{ ...item, selected: selected === item.id, onSelect }}\n Component={SearchItem}\n />\n ))}\n </Mosaic.Container>\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n <ScrollArea.Corner />\n </ScrollArea.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { createContext, type PropsWithChildren, useContext, useMemo, useState } from 'react';\n\nimport { raise } from '@dxos/debug';\n\nimport { filterObjectsSync, queryStringToMatch, type SearchResult } from './search-sync';\n\ntype SearchContextType = {\n match?: RegExp;\n setMatch?: (text?: string) => void;\n};\n\nconst SearchContext = createContext<SearchContextType>({});\n\nexport const SearchContextProvider = ({ children }: PropsWithChildren) => {\n const [match, setMatch] = useState<RegExp>();\n const handleMatch = (text?: string) => setMatch(queryStringToMatch(text));\n return <SearchContext.Provider value={{ match, setMatch: handleMatch }}>{children}</SearchContext.Provider>;\n};\n\nexport const useGlobalSearch = () => {\n return useContext(SearchContext) ?? raise(new Error('Missing SearchContext.'));\n};\n\nexport const useGlobalSearchResults = <T extends Record<string, any>>(objects?: T[]): SearchResult[] => {\n const { match } = useGlobalSearch();\n return objects && match ? filterObjectsSync(objects, match) : [];\n};\n\nexport const useGlobalFilteredObjects = <T extends Record<string, any>>(objects?: T[]): T[] => {\n const { match } = useGlobalSearch();\n if (!match || !objects) {\n return objects ?? [];\n }\n\n return useMemo(() => filterObjectsSync(objects, match).map((result) => result.object), [objects, match]);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { AST, getSchema, type S } from '@dxos/echo-schema';\nimport { TextType } from '@dxos/plugin-markdown/types';\n\nexport const queryStringToMatch = (queryString?: string): RegExp | undefined => {\n const trimmed = queryString?.trim();\n return trimmed ? new RegExp(trimmed, 'i') : undefined;\n};\n\n// TODO(burdon): Type name registry linked to schema?\nconst getIcon = (schema: S.Schema<any> | undefined): string | undefined => {\n if (!(schema && AST.isTypeLiteral(schema.ast))) {\n return undefined;\n }\n const keys = schema.ast.propertySignatures.map((p) => p.name);\n if (keys.indexOf('email') !== -1) {\n return 'user';\n }\n if (keys.indexOf('website') !== -1) {\n return 'organization';\n }\n if (keys.indexOf('repo') !== -1) {\n return 'project';\n }\n\n return undefined;\n};\n\n// Plain text fields.\n// TODO(burdon): Reconcile with agent index.\nexport type TextFields = Record<string, string>;\n\nexport type SearchResult = {\n id: string;\n type?: string;\n label?: string;\n match?: RegExp;\n snippet?: string;\n object?: any;\n};\n\n// TODO(thure): This returns `SearchResult[]` which is not just a narrower set of objects as the name implies.\nexport const filterObjectsSync = <T extends Record<string, any>>(objects: T[], match?: RegExp): SearchResult[] => {\n if (!match) {\n return [];\n }\n\n return objects.reduce<SearchResult[]>((results, object) => {\n // TODO(burdon): Hack to ignore Text objects.\n if (object instanceof TextType) {\n return results;\n }\n\n const fields = mapObjectToTextFields(object);\n Object.entries(fields).some(([, value]) => {\n const result = value.match(match);\n if (result) {\n // TODO(burdon): Use schema.\n const label = getStringProperty(object, ['label', 'name', 'title']);\n\n results.push({\n id: object.id,\n type: getIcon(getSchema(object)),\n label,\n match,\n // TODO(burdon): Truncate.\n // TODO(burdon): Issue with sketch documents.\n snippet: value !== label ? value : fields.content ?? fields.description ?? undefined,\n object,\n });\n\n return true;\n }\n\n return false;\n });\n\n return results;\n }, []);\n};\n\n// TODO(burdon): Use schema?\nconst getStringProperty = (object: Record<string, unknown>, keys: string[]): string | undefined => {\n let label;\n keys.some((key) => {\n const value = object[key];\n if (typeof value === 'string') {\n label = value;\n return true;\n }\n\n return false;\n });\n\n return label;\n};\n\n// TODO(burdon): Filter system fields.\nconst getKeys = (object: Record<string, unknown>): string[] => {\n try {\n const obj = JSON.parse(JSON.stringify(object));\n return Object.keys(obj).filter(\n (key) => key !== 'id' && key !== 'identityKey' && key[0] !== '_' && key[0] !== '@',\n ) as string[];\n } catch (err) {\n // TODO(burdon): Error with TLDraw sketch.\n // Uncaught Error: Type with the name content has already been defined with a different constructor\n return [];\n }\n};\n\n// TODO(burdon): Use ECHO schema.\nexport const mapObjectToTextFields = <T extends Record<string, unknown>>(object: T): TextFields => {\n return getKeys(object).reduce<TextFields>((fields, key) => {\n const value = object[key] as any;\n if (typeof value === 'string' || value instanceof TextType) {\n try {\n fields[key] = String(value);\n } catch (err) {\n // TODO(burdon): Exception when parsing sketch document.\n }\n }\n\n return fields;\n }, {});\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef, useCallback, useState } from 'react';\n\nimport {\n useResolvePlugin,\n parseNavigationPlugin,\n parseGraphPlugin,\n NavigationAction,\n LayoutAction,\n type LayoutCoordinate,\n isLayoutParts,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { type Node } from '@dxos/plugin-graph';\nimport { useClient } from '@dxos/react-client';\nimport { fullyQualifiedId, useQuery } from '@dxos/react-client/echo';\nimport { Button, Dialog, Icon, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { SearchList, type SearchListItemProps } from '@dxos/react-ui-searchlist';\nimport { descriptionText, mx } from '@dxos/react-ui-theme';\n\nimport { SEARCH_PLUGIN } from '../meta';\nimport { useSearchResults } from '../search';\n\ntype SearchListResultProps = {\n node: Node;\n} & Pick<SearchListItemProps, 'onSelect'>;\n\nconst SearchListResult = forwardRef<HTMLDivElement, SearchListResultProps>(({ node, onSelect }, forwardedRef) => {\n const { t } = useTranslation(SEARCH_PLUGIN);\n const label = toLocalizedString(node?.properties.label ?? 'never', t);\n return (\n <SearchList.Item\n value={label}\n key={node!.id}\n classNames='flex gap-2 items-center pli-2'\n onSelect={() => onSelect?.(node!.id)}\n ref={forwardedRef}\n >\n <Icon size={5} icon={node?.properties.icon} />\n <span className='is-0 grow truncate'>{label}</span>\n </SearchList.Item>\n );\n});\n\nexport const SearchDialog = ({\n subject,\n}: {\n subject: { action: NavigationAction; layoutCoordinate: LayoutCoordinate; position: 'add-after' | 'add-before' };\n}) => {\n const { t } = useTranslation(SEARCH_PLUGIN);\n const graphPlugin = useResolvePlugin(parseGraphPlugin);\n const graph = graphPlugin?.provides.graph;\n const navigationPlugin = useResolvePlugin(parseNavigationPlugin);\n const providedClosed = navigationPlugin?.provides.location.closed ?? [];\n const closed = (Array.isArray(providedClosed) ? providedClosed : [providedClosed])\n .map((id) => graph?.findNode(id))\n .filter(Boolean);\n const active = navigationPlugin?.provides.location.active;\n const [queryString, setQueryString] = useState('');\n const client = useClient();\n const dangerouslyLoadAllObjects = useQuery(client.spaces);\n const [pending, results] = useSearchResults(queryString, dangerouslyLoadAllObjects);\n const resultObjects = Array.from(results.keys());\n const dispatch = useIntentDispatcher();\n\n const handleSelect = useCallback(\n (nodeId: string) => {\n if (active && isLayoutParts(active)) {\n // If node is already present in the active parts, scroll to it and close the dialog.\n const index = active?.main?.findIndex((entry) => entry.id === nodeId);\n if (index !== -1) {\n return dispatch([\n { action: LayoutAction.SET_LAYOUT, data: { element: 'dialog', state: false } },\n { action: LayoutAction.SCROLL_INTO_VIEW, data: { id: nodeId } },\n ]);\n }\n\n return dispatch([\n {\n action: NavigationAction.ADD_TO_ACTIVE,\n data: {\n part: subject.layoutCoordinate.part,\n id: nodeId,\n pivotId: subject.layoutCoordinate.entryId,\n positioning: 'end',\n },\n },\n { action: LayoutAction.SET_LAYOUT, data: { element: 'dialog', state: false } },\n { action: LayoutAction.SCROLL_INTO_VIEW, data: { id: nodeId } },\n ]);\n }\n },\n [subject, dispatch, active],\n );\n\n return (\n <Dialog.Content classNames={['md:max-is-[24rem] overflow-hidden mbs-12']}>\n <Dialog.Title>{t('search dialog title')}</Dialog.Title>\n <SearchList.Root label={t('search placeholder')} classNames='flex flex-col grow overflow-hidden my-2'>\n <SearchList.Input\n value={queryString}\n onValueChange={(nextValue) => {\n setQueryString(nextValue);\n }}\n placeholder={t('search placeholder')}\n classNames='px-1 my-2'\n />\n <SearchList.Content classNames='max-bs-[24rem] overflow-auto'>\n {queryString.length > 0 ? (\n resultObjects.length > 0 ? (\n resultObjects\n .map((object) => graph?.findNode(fullyQualifiedId(object)))\n .filter(Boolean)\n .map((node) => <SearchListResult key={node!.id} node={node!} onSelect={handleSelect} />)\n ) : (\n <p className='pli-1'>{t(pending ? 'pending results message' : 'empty results message')}</p>\n )\n ) : (\n <>\n {closed.length > 0 && <h2 className={mx('mlb-1', descriptionText)}>{t('recently closed heading')}</h2>}\n {closed.map((node) => (\n <SearchListResult key={node!.id} node={node!} onSelect={handleSelect} />\n ))}\n </>\n )}\n </SearchList.Content>\n </SearchList.Root>\n\n <Dialog.Close asChild>\n <Button variant='primary' classNames='mbs-2'>\n {t('close label', { ns: 'os' })}\n </Button>\n </Dialog.Close>\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { yieldOrContinue } from 'main-thread-scheduling';\nimport { useEffect, useState } from 'react';\n\nimport { TextType } from '@dxos/plugin-markdown/types';\n\n// TODO(thure): Deprecate search-sync, move still-relevant utilities elsewhere (here, probably).\nimport { mapObjectToTextFields, queryStringToMatch } from './search-sync';\n\nexport const filterObjects = async <T extends Record<string, any>>(\n objects: T[],\n match?: RegExp,\n): Promise<Map<T, string[][]>> => {\n const result = new Map<T, string[][]>();\n if (!match) {\n return result;\n }\n await Promise.all(\n objects\n .filter((object) => !(object instanceof TextType))\n .map(async (object) => {\n await yieldOrContinue('interactive');\n const fields = mapObjectToTextFields<T>(object);\n Object.entries(fields)\n .filter(([_, value]) => value.match(match))\n .forEach(([key, value]) => {\n if (!result.has(object)) {\n result.set(object, []);\n }\n result.set(object, [...result.get(object)!, [key, value]]);\n });\n }),\n );\n return result;\n};\n\nexport const useSearchResults = <T extends Record<string, any>>(\n queryString?: string,\n objects?: T[],\n delay: number = 400,\n): [boolean, Map<T, string[][]>] => {\n const [results, setResults] = useState<Map<T, string[][]>>(new Map());\n const [pending, setPending] = useState(false);\n\n useEffect(() => {\n setPending(!!(objects && queryString));\n const timeoutId = setTimeout(async () => {\n const nextResults =\n objects && queryString ? await filterObjects(objects, queryStringToMatch(queryString)) : new Map();\n setResults(nextResults);\n setPending(false);\n }, delay);\n\n return () => clearTimeout(timeoutId);\n }, [queryString, objects]);\n\n return [pending, results];\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SEARCH_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [SEARCH_PLUGIN]: {\n 'plugin name': 'Search',\n 'search action label': 'Search spaces',\n 'search placeholder': 'Search…',\n 'search dialog title': 'Open',\n 'recently closed heading': 'Recently closed',\n 'pending results message': 'Searching…',\n 'empty results message': 'No matching items in your spaces',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n GraphBuilderProvides,\n IntentResolverProvides,\n MetadataRecordsProvides,\n SurfaceProvides,\n TranslationsProvides,\n} from '@dxos/app-framework';\n\nimport { SEARCH_PLUGIN } from './meta';\n\nconst SEARCH_ACTION = `${SEARCH_PLUGIN}/action`;\n\nexport enum SearchAction {\n SEARCH = `${SEARCH_ACTION}/search`,\n}\n\nexport type SearchPluginProvides = SurfaceProvides &\n IntentResolverProvides &\n GraphBuilderProvides &\n MetadataRecordsProvides &\n TranslationsProvides;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SearchPlugin } from './SearchPlugin';\n\nexport default SearchPlugin;\n\nexport * from './context';\nexport * from './search-sync';\n\nexport * from './SearchPlugin';\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "resolvePlugin", "parseIntentPlugin", "parseGraphPlugin", "parseNavigationPlugin", "LayoutAction", "firstIdInPart", "createExtension", "getActiveSpace", "MagnifyingGlass", "React", "useEffect", "useRef", "useState", "Input", "getSize", "mx", "Searchbar", "classes", "variant", "placeholder", "value", "onChange", "inputRef", "useRef", "text", "setText", "useState", "useEffect", "handleChange", "handleReset", "undefined", "current", "focus", "div", "className", "Input", "Root", "TextInput", "ref", "classNames", "mx", "input", "target", "onKeyDown", "key", "role", "onClick", "MagnifyingGlass", "getSize", "React", "useState", "useClient", "useQuery", "useTranslation", "groupSurface", "mx", "Buildings", "Folders", "User", "React", "forwardRef", "ScrollArea", "Card", "Mosaic", "ghostHover", "mx", "styles", "selected", "getIcon", "type", "iconMap", "user", "User", "organization", "Buildings", "project", "Folders", "Snippet", "text", "match", "content", "React", "result", "index", "undefined", "maxOffset", "before", "slice", "length", "idx", "indexOf", "after", "span", "className", "SearchItem", "forwardRef", "draggableStyle", "draggableProps", "item", "debug", "id", "label", "snippet", "onSelect", "Icon", "Card", "Root", "ref", "style", "classNames", "mx", "ghostHover", "onClick", "Header", "DragHandle", "Title", "title", "Endcap", "Body", "gutter", "pre", "JSON", "stringify", "SearchResults", "items", "path", "ScrollArea", "Viewport", "Mosaic", "Container", "Component", "map", "DraggableTile", "key", "SEARCH_RESULT", "Scrollbar", "orientation", "Thumb", "Corner", "React", "createContext", "useContext", "useMemo", "useState", "raise", "AST", "getSchema", "TextType", "queryStringToMatch", "queryString", "trimmed", "trim", "RegExp", "undefined", "getIcon", "schema", "AST", "isTypeLiteral", "ast", "keys", "propertySignatures", "map", "p", "name", "indexOf", "filterObjectsSync", "objects", "match", "reduce", "results", "object", "TextType", "fields", "mapObjectToTextFields", "Object", "entries", "some", "value", "result", "label", "getStringProperty", "push", "id", "type", "getSchema", "snippet", "content", "description", "key", "getKeys", "obj", "JSON", "parse", "stringify", "filter", "err", "String", "SearchContext", "createContext", "SearchContextProvider", "children", "match", "setMatch", "useState", "handleMatch", "text", "queryStringToMatch", "React", "Provider", "value", "useGlobalSearch", "useContext", "raise", "Error", "useGlobalSearchResults", "objects", "filterObjectsSync", "useGlobalFilteredObjects", "useMemo", "map", "result", "object", "SearchMain", "space", "t", "useTranslation", "SEARCH_PLUGIN", "client", "useClient", "setMatch", "useGlobalSearch", "allSpaces", "objects", "useQuery", "spaces", "results", "useGlobalSearchResults", "selected", "setSelected", "useState", "handleSelect", "id", "undefined", "React", "div", "className", "Searchbar", "placeholder", "onChange", "length", "mx", "groupSurface", "SearchResults", "items", "onSelect", "React", "forwardRef", "useCallback", "useState", "useResolvePlugin", "parseNavigationPlugin", "parseGraphPlugin", "NavigationAction", "LayoutAction", "isLayoutParts", "useIntentDispatcher", "useClient", "fullyQualifiedId", "useQuery", "Button", "Dialog", "Icon", "toLocalizedString", "useTranslation", "SearchList", "descriptionText", "mx", "yieldOrContinue", "useEffect", "useState", "TextType", "filterObjects", "objects", "match", "result", "Map", "Promise", "all", "filter", "object", "TextType", "map", "yieldOrContinue", "fields", "mapObjectToTextFields", "Object", "entries", "_", "value", "forEach", "key", "has", "set", "get", "useSearchResults", "queryString", "delay", "results", "setResults", "useState", "pending", "setPending", "useEffect", "timeoutId", "setTimeout", "nextResults", "queryStringToMatch", "clearTimeout", "SearchListResult", "forwardRef", "node", "onSelect", "forwardedRef", "t", "useTranslation", "SEARCH_PLUGIN", "label", "toLocalizedString", "properties", "React", "SearchList", "Item", "value", "key", "id", "classNames", "ref", "Icon", "size", "icon", "span", "className", "SearchDialog", "subject", "graphPlugin", "useResolvePlugin", "parseGraphPlugin", "graph", "provides", "navigationPlugin", "parseNavigationPlugin", "providedClosed", "location", "closed", "Array", "isArray", "map", "findNode", "filter", "Boolean", "active", "queryString", "setQueryString", "useState", "client", "useClient", "dangerouslyLoadAllObjects", "useQuery", "spaces", "pending", "results", "useSearchResults", "resultObjects", "from", "keys", "dispatch", "useIntentDispatcher", "handleSelect", "useCallback", "nodeId", "isLayoutParts", "index", "main", "findIndex", "entry", "action", "LayoutAction", "SET_LAYOUT", "data", "element", "state", "SCROLL_INTO_VIEW", "NavigationAction", "ADD_TO_ACTIVE", "part", "layoutCoordinate", "pivotId", "entryId", "positioning", "Dialog", "Content", "Title", "Root", "Input", "onValueChange", "nextValue", "placeholder", "length", "object", "fullyQualifiedId", "p", "h2", "mx", "descriptionText", "Close", "asChild", "Button", "variant", "ns", "SEARCH_PLUGIN", "SEARCH_ACTION", "SEARCH_PLUGIN", "SearchAction", "SearchPlugin", "navigationPlugin", "graphPlugin", "meta", "ready", "plugins", "resolvePlugin", "parseNavigationPlugin", "parseGraphPlugin", "provides", "translations", "metadata", "records", "SEARCH_RESULT", "parse", "item", "type", "id", "label", "data", "object", "graph", "builder", "intentPlugin", "parseIntentPlugin", "createExtension", "SEARCH_PLUGIN", "filter", "node", "actions", "SearchAction", "SEARCH", "intent", "dispatch", "plugin", "action", "properties", "ns", "icon", "keyBinding", "macos", "windows", "testId", "context", "children", "React", "SearchContextProvider", "surface", "component", "role", "location", "space", "getActiveSpace", "firstIdInPart", "active", "undefined", "SearchDialog", "subject", "SearchMain", "resolver", "LayoutAction", "SET_LAYOUT", "element", "state", "SearchPlugin"]
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport {\n type PluginDefinition,\n type LocationProvides,\n type GraphProvides,\n type Plugin,\n resolvePlugin,\n parseIntentPlugin,\n parseGraphPlugin,\n parseNavigationPlugin,\n LayoutAction,\n firstIdInPart,\n} from '@dxos/app-framework';\nimport { createExtension, type Node } from '@dxos/plugin-graph';\nimport { getActiveSpace } from '@dxos/plugin-space';\n\nimport { SearchDialog, SearchMain } from './components';\nimport { SearchContextProvider } from './context';\nimport meta, { SEARCH_PLUGIN, SEARCH_RESULT } from './meta';\nimport type { SearchResult } from './search-sync';\nimport translations from './translations';\nimport { SearchAction, type SearchPluginProvides } from './types';\n\nexport const SearchPlugin = (): PluginDefinition<SearchPluginProvides> => {\n let navigationPlugin: Plugin<LocationProvides> | undefined;\n let graphPlugin: Plugin<GraphProvides> | undefined;\n\n return {\n meta,\n ready: async (plugins) => {\n navigationPlugin = resolvePlugin(plugins, parseNavigationPlugin);\n graphPlugin = resolvePlugin(plugins, parseGraphPlugin);\n },\n provides: {\n translations,\n metadata: {\n records: {\n [SEARCH_RESULT]: {\n parse: (item: SearchResult, type: string) => {\n switch (type) {\n case 'node':\n return { id: item.id, label: item.label, data: item.object };\n case 'object':\n return item.object;\n case 'view-object':\n return item;\n }\n },\n },\n },\n },\n graph: {\n builder: (plugins) => {\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n return createExtension({\n id: SEARCH_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id: SearchAction.SEARCH,\n data: async () => {\n await intentPlugin?.provides.intent.dispatch({\n plugin: SEARCH_PLUGIN,\n action: SearchAction.SEARCH,\n });\n },\n properties: {\n label: ['search action label', { ns: SEARCH_PLUGIN }],\n icon: 'ph--magnifying-glass--regular',\n keyBinding: {\n macos: 'shift+meta+f',\n windows: 'shift+alt+f',\n },\n testId: 'searchPlugin.search',\n },\n },\n ],\n });\n },\n },\n context: ({ children }) => <SearchContextProvider>{children}</SearchContextProvider>,\n surface: {\n component: ({ data, role }) => {\n const location = navigationPlugin?.provides.location;\n const graph = graphPlugin?.provides.graph;\n const space = graph && location ? getActiveSpace(graph, firstIdInPart(location.active, 'main')) : undefined;\n\n switch (role) {\n case 'dialog':\n return data.component === `${SEARCH_PLUGIN}/Dialog` ? (\n <SearchDialog subject={data.subject as any} />\n ) : null;\n case 'search-input':\n return space ? <SearchMain space={space} /> : null;\n }\n\n return null;\n },\n },\n intent: {\n resolver: (intent, plugins) => {\n switch (intent.action) {\n case SearchAction.SEARCH: {\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n return intentPlugin?.provides.intent.dispatch({\n action: LayoutAction.SET_LAYOUT,\n data: { element: 'complementary', state: true },\n });\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MagnifyingGlass } from '@phosphor-icons/react';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { Input, type TextInputProps } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nexport type SearchbarProps = Pick<TextInputProps, 'variant' | 'placeholder'> & {\n classes?: {\n root?: string;\n input?: string;\n };\n value?: string;\n onChange?: (text?: string) => void;\n delay?: number;\n};\n\nexport const Searchbar = ({ classes, variant, placeholder, value, onChange }: SearchbarProps) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [text, setText] = useState(value);\n useEffect(() => {\n setText(value);\n }, [value]);\n const handleChange = (text?: string) => {\n setText(text);\n onChange?.(text);\n };\n\n const handleReset = () => {\n handleChange(undefined);\n inputRef.current?.focus();\n };\n\n return (\n <div className='flex w-full items-center pli-1 pbs-1'>\n <Input.Root>\n <Input.TextInput\n ref={inputRef}\n placeholder={placeholder}\n variant={variant}\n value={text ?? ''}\n classNames={mx('pl-3 pr-10', classes?.input)}\n onChange={({ target }) => handleChange(target.value)}\n onKeyDown={({ key }) => key === 'Escape' && handleReset()}\n />\n\n {/* TODO(burdon): Margin should be density specific. */}\n <div role='button' className='-ml-7 p-0 cursor-pointer' onClick={handleReset}>\n <MagnifyingGlass className={getSize(5)} />\n </div>\n </Input.Root>\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC, useState } from 'react';\n\nimport { useClient } from '@dxos/react-client';\nimport { Filter, useQuery, type Space } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { groupSurface, mx } from '@dxos/react-ui-theme';\n\nimport { SearchResults } from './SearchResults';\nimport { Searchbar } from './Searchbar';\nimport { useGlobalSearch, useGlobalSearchResults } from '../context';\nimport { SEARCH_PLUGIN } from '../meta';\n\nexport const SearchMain: FC<{ space: Space }> = ({ space }) => {\n const { t } = useTranslation(SEARCH_PLUGIN);\n const client = useClient();\n const { setMatch } = useGlobalSearch();\n // TODO(burdon): UX to select all spaces.\n const allSpaces = false;\n\n // TODO(burdon): Returns ALL objects (e.g., incl. Text objects that are fields of parent objects).\n const objects = useQuery(allSpaces ? client.spaces : space, Filter.all());\n const results = useGlobalSearchResults(objects);\n\n const [selected, setSelected] = useState<string>();\n\n // TODO(burdon): Activate and/or filter current main (set context).\n const handleSelect = (id: string) => {\n setSelected((selected) => (selected === id ? undefined : id));\n };\n\n return (\n <div className='flex flex-col grow h-full'>\n <Searchbar placeholder={t('search placeholder')} onChange={setMatch} />\n {results.length > 0 && (\n <div className='absolute top-[--topbar-size] bottom-0 z-[1]'>\n {/* TODO(burdon): Change to Portal? */}\n <div className={mx('flex flex-col h-full overflow-hidden', groupSurface)}>\n <SearchResults items={results} selected={selected} onSelect={handleSelect} />\n </div>\n </div>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Icon, Buildings, Folders, User } from '@phosphor-icons/react';\nimport React, { type FC, forwardRef } from 'react';\n\nimport { ScrollArea } from '@dxos/react-ui';\nimport { Card } from '@dxos/react-ui-card';\nimport { type MosaicTileComponent, Mosaic } from '@dxos/react-ui-mosaic';\nimport { ghostHover, mx } from '@dxos/react-ui-theme';\n\nimport { SEARCH_RESULT } from '../../meta';\nimport type { SearchResult } from '../../search-sync';\n\n// TODO(burdon): Factor out.\nconst styles = {\n selected: '!bg-primary-100 !dark:bg-primary-900',\n};\n\n// TODO(burdon): Registry defined by plugins?\nconst getIcon = (type: string): Icon | undefined => {\n const iconMap: Record<string, Icon> = {\n user: User,\n organization: Buildings,\n project: Folders,\n };\n\n return iconMap[type];\n};\n\nexport const Snippet: FC<{ text: string; match?: RegExp }> = ({ text, match }) => {\n let content = <>{text}</>;\n if (match) {\n const result = text.match(match);\n if (result?.index !== undefined) {\n // Break near to match.\n const maxOffset = 16;\n let before = text.slice(0, result.index);\n if (before.length > maxOffset) {\n const idx = before.indexOf(' ', result.index - maxOffset);\n before = '… ' + before.slice(idx);\n }\n\n const after = text.slice(result.index + result[0].length);\n content = (\n <>\n {before}\n <span className='text-blue-500'>{result[0]}</span>\n {after}\n </>\n );\n }\n }\n\n return <span className='text-xs mb-1 line-clamp-3 text-neutral-300'>{content}</span>;\n};\n\nexport type SearchItemProps = SearchResult & { selected: boolean } & Pick<SearchResultsProps, 'onSelect'>;\n\nexport const SearchItem: MosaicTileComponent<SearchItemProps> = forwardRef(\n ({ draggableStyle, draggableProps, item, debug = false }, forwardRef) => {\n const { id, type, label, snippet, match, selected, onSelect } = item;\n const Icon = type ? getIcon(type) : undefined;\n\n return (\n <Card.Root\n ref={forwardRef}\n style={draggableStyle}\n classNames={mx('mx-2 mt-2 cursor-pointer', ghostHover, selected && styles.selected)}\n onClick={() => onSelect?.(id)}\n >\n <Card.Header>\n <Card.DragHandle {...draggableProps} />\n <Card.Title title={label ?? 'Untitled'} />\n {Icon && <Card.Endcap Icon={Icon} />}\n </Card.Header>\n {snippet && (\n <Card.Body gutter>\n <Snippet text={snippet} match={match} />\n </Card.Body>\n )}\n {debug && (\n <Card.Body gutter>\n <pre className='text-xs whitespace-pre-line'>{JSON.stringify(item)}</pre>\n </Card.Body>\n )}\n </Card.Root>\n );\n },\n);\n\nexport type SearchResultsProps = {\n match?: RegExp;\n items: SearchResult[];\n selected?: string;\n onSelect?: (id: string) => void;\n};\n\n// TODO(burdon): Key cursor up/down.\nexport const SearchResults = ({ items, selected, onSelect }: SearchResultsProps) => {\n const path = 'search';\n return (\n <ScrollArea.Root classNames='grow'>\n <ScrollArea.Viewport>\n <Mosaic.Container id={path} Component={SearchItem}>\n {items.map((item) => (\n <Mosaic.DraggableTile\n key={item.id}\n path={path}\n type={SEARCH_RESULT}\n item={{ ...item, selected: selected === item.id, onSelect }}\n Component={SearchItem}\n />\n ))}\n </Mosaic.Container>\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n <ScrollArea.Corner />\n </ScrollArea.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { createContext, type PropsWithChildren, useContext, useMemo, useState } from 'react';\n\nimport { raise } from '@dxos/debug';\n\nimport { filterObjectsSync, queryStringToMatch, type SearchResult } from './search-sync';\n\ntype SearchContextType = {\n match?: RegExp;\n setMatch?: (text?: string) => void;\n};\n\nconst SearchContext = createContext<SearchContextType>({});\n\nexport const SearchContextProvider = ({ children }: PropsWithChildren) => {\n const [match, setMatch] = useState<RegExp>();\n const handleMatch = (text?: string) => setMatch(queryStringToMatch(text));\n return <SearchContext.Provider value={{ match, setMatch: handleMatch }}>{children}</SearchContext.Provider>;\n};\n\nexport const useGlobalSearch = () => {\n return useContext(SearchContext) ?? raise(new Error('Missing SearchContext.'));\n};\n\nexport const useGlobalSearchResults = <T extends Record<string, any>>(objects?: T[]): SearchResult[] => {\n const { match } = useGlobalSearch();\n return objects && match ? filterObjectsSync(objects, match) : [];\n};\n\nexport const useGlobalFilteredObjects = <T extends Record<string, any>>(objects?: T[]): T[] => {\n const { match } = useGlobalSearch();\n if (!match || !objects) {\n return objects ?? [];\n }\n\n return useMemo(() => filterObjectsSync(objects, match).map((result) => result.object), [objects, match]);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { AST, type S } from '@dxos/echo-schema';\nimport { getSchema } from '@dxos/live-object';\nimport { TextType } from '@dxos/plugin-markdown/types';\n\nexport const queryStringToMatch = (queryString?: string): RegExp | undefined => {\n const trimmed = queryString?.trim();\n return trimmed ? new RegExp(trimmed, 'i') : undefined;\n};\n\n// TODO(burdon): Type name registry linked to schema?\nconst getIcon = (schema: S.Schema<any> | undefined): string | undefined => {\n if (!(schema && AST.isTypeLiteral(schema.ast))) {\n return undefined;\n }\n const keys = schema.ast.propertySignatures.map((p) => p.name);\n if (keys.indexOf('email') !== -1) {\n return 'user';\n }\n if (keys.indexOf('website') !== -1) {\n return 'organization';\n }\n if (keys.indexOf('repo') !== -1) {\n return 'project';\n }\n\n return undefined;\n};\n\n// Plain text fields.\n// TODO(burdon): Reconcile with agent index.\nexport type TextFields = Record<string, string>;\n\nexport type SearchResult = {\n id: string;\n type?: string;\n label?: string;\n match?: RegExp;\n snippet?: string;\n object?: any;\n};\n\n// TODO(thure): This returns `SearchResult[]` which is not just a narrower set of objects as the name implies.\nexport const filterObjectsSync = <T extends Record<string, any>>(objects: T[], match?: RegExp): SearchResult[] => {\n if (!match) {\n return [];\n }\n\n return objects.reduce<SearchResult[]>((results, object) => {\n // TODO(burdon): Hack to ignore Text objects.\n if (object instanceof TextType) {\n return results;\n }\n\n const fields = mapObjectToTextFields(object);\n Object.entries(fields).some(([, value]) => {\n const result = value.match(match);\n if (result) {\n // TODO(burdon): Use schema.\n const label = getStringProperty(object, ['label', 'name', 'title']);\n\n results.push({\n id: object.id,\n type: getIcon(getSchema(object)),\n label,\n match,\n // TODO(burdon): Truncate.\n // TODO(burdon): Issue with sketch documents.\n snippet: value !== label ? value : fields.content ?? fields.description ?? undefined,\n object,\n });\n\n return true;\n }\n\n return false;\n });\n\n return results;\n }, []);\n};\n\n// TODO(burdon): Use schema?\nconst getStringProperty = (object: Record<string, unknown>, keys: string[]): string | undefined => {\n let label;\n keys.some((key) => {\n const value = object[key];\n if (typeof value === 'string') {\n label = value;\n return true;\n }\n\n return false;\n });\n\n return label;\n};\n\n// TODO(burdon): Filter system fields.\nconst getKeys = (object: Record<string, unknown>): string[] => {\n try {\n const obj = JSON.parse(JSON.stringify(object));\n return Object.keys(obj).filter(\n (key) => key !== 'id' && key !== 'identityKey' && key[0] !== '_' && key[0] !== '@',\n ) as string[];\n } catch (err) {\n // TODO(burdon): Error with TLDraw sketch.\n // Uncaught Error: Type with the name content has already been defined with a different constructor\n return [];\n }\n};\n\n// TODO(burdon): Use ECHO schema.\nexport const mapObjectToTextFields = <T extends Record<string, unknown>>(object: T): TextFields => {\n return getKeys(object).reduce<TextFields>((fields, key) => {\n const value = object[key] as any;\n if (typeof value === 'string' || value instanceof TextType) {\n try {\n fields[key] = String(value);\n } catch (err) {\n // TODO(burdon): Exception when parsing sketch document.\n }\n }\n\n return fields;\n }, {});\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef, useCallback, useState } from 'react';\n\nimport {\n useResolvePlugin,\n parseNavigationPlugin,\n parseGraphPlugin,\n NavigationAction,\n LayoutAction,\n type LayoutCoordinate,\n isLayoutParts,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { type Node } from '@dxos/plugin-graph';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, fullyQualifiedId, useQuery } from '@dxos/react-client/echo';\nimport { Button, Dialog, Icon, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { SearchList, type SearchListItemProps } from '@dxos/react-ui-searchlist';\nimport { descriptionText, mx } from '@dxos/react-ui-theme';\n\nimport { SEARCH_PLUGIN } from '../meta';\nimport { useSearchResults } from '../search';\n\ntype SearchListResultProps = {\n node: Node;\n} & Pick<SearchListItemProps, 'onSelect'>;\n\nconst SearchListResult = forwardRef<HTMLDivElement, SearchListResultProps>(({ node, onSelect }, forwardedRef) => {\n const { t } = useTranslation(SEARCH_PLUGIN);\n const label = toLocalizedString(node?.properties.label ?? 'never', t);\n return (\n <SearchList.Item\n value={label}\n key={node!.id}\n classNames='flex gap-2 items-center pli-2'\n onSelect={() => onSelect?.(node!.id)}\n ref={forwardedRef}\n >\n <Icon size={5} icon={node?.properties.icon} />\n <span className='is-0 grow truncate'>{label}</span>\n </SearchList.Item>\n );\n});\n\nexport const SearchDialog = ({\n subject,\n}: {\n subject: { action: NavigationAction; layoutCoordinate: LayoutCoordinate; position: 'add-after' | 'add-before' };\n}) => {\n const { t } = useTranslation(SEARCH_PLUGIN);\n const graphPlugin = useResolvePlugin(parseGraphPlugin);\n const graph = graphPlugin?.provides.graph;\n const navigationPlugin = useResolvePlugin(parseNavigationPlugin);\n const providedClosed = navigationPlugin?.provides.location.closed ?? [];\n const closed = (Array.isArray(providedClosed) ? providedClosed : [providedClosed])\n .map((id) => graph?.findNode(id))\n .filter(Boolean);\n const active = navigationPlugin?.provides.location.active;\n const [queryString, setQueryString] = useState('');\n const client = useClient();\n const dangerouslyLoadAllObjects = useQuery(client.spaces, Filter.all());\n const [pending, results] = useSearchResults(queryString, dangerouslyLoadAllObjects);\n const resultObjects = Array.from(results.keys());\n const dispatch = useIntentDispatcher();\n\n const handleSelect = useCallback(\n (nodeId: string) => {\n if (active && isLayoutParts(active)) {\n // If node is already present in the active parts, scroll to it and close the dialog.\n const index = active?.main?.findIndex((entry) => entry.id === nodeId);\n if (index !== -1) {\n return dispatch([\n { action: LayoutAction.SET_LAYOUT, data: { element: 'dialog', state: false } },\n { action: LayoutAction.SCROLL_INTO_VIEW, data: { id: nodeId } },\n ]);\n }\n\n return dispatch([\n {\n action: NavigationAction.ADD_TO_ACTIVE,\n data: {\n part: subject.layoutCoordinate.part,\n id: nodeId,\n pivotId: subject.layoutCoordinate.entryId,\n positioning: 'end',\n },\n },\n { action: LayoutAction.SET_LAYOUT, data: { element: 'dialog', state: false } },\n { action: LayoutAction.SCROLL_INTO_VIEW, data: { id: nodeId } },\n ]);\n }\n },\n [subject, dispatch, active],\n );\n\n return (\n <Dialog.Content classNames={['md:max-is-[24rem] overflow-hidden mbs-12']}>\n <Dialog.Title>{t('search dialog title')}</Dialog.Title>\n <SearchList.Root label={t('search placeholder')} classNames='flex flex-col grow overflow-hidden my-2'>\n <SearchList.Input\n value={queryString}\n onValueChange={(nextValue) => {\n setQueryString(nextValue);\n }}\n placeholder={t('search placeholder')}\n classNames='px-1 my-2'\n />\n <SearchList.Content classNames='max-bs-[24rem] overflow-auto'>\n {queryString.length > 0 ? (\n resultObjects.length > 0 ? (\n resultObjects\n .map((object) => graph?.findNode(fullyQualifiedId(object)))\n .filter(Boolean)\n .map((node) => <SearchListResult key={node!.id} node={node!} onSelect={handleSelect} />)\n ) : (\n <p className='pli-1'>{t(pending ? 'pending results message' : 'empty results message')}</p>\n )\n ) : (\n <>\n {closed.length > 0 && <h2 className={mx('mlb-1', descriptionText)}>{t('recently closed heading')}</h2>}\n {closed.map((node) => (\n <SearchListResult key={node!.id} node={node!} onSelect={handleSelect} />\n ))}\n </>\n )}\n </SearchList.Content>\n </SearchList.Root>\n\n <Dialog.Close asChild>\n <Button variant='primary' classNames='mbs-2'>\n {t('close label', { ns: 'os' })}\n </Button>\n </Dialog.Close>\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { yieldOrContinue } from 'main-thread-scheduling';\nimport { useEffect, useState } from 'react';\n\nimport { TextType } from '@dxos/plugin-markdown/types';\n\n// TODO(thure): Deprecate search-sync, move still-relevant utilities elsewhere (here, probably).\nimport { mapObjectToTextFields, queryStringToMatch } from './search-sync';\n\nexport const filterObjects = async <T extends Record<string, any>>(\n objects: T[],\n match?: RegExp,\n): Promise<Map<T, string[][]>> => {\n const result = new Map<T, string[][]>();\n if (!match) {\n return result;\n }\n await Promise.all(\n objects\n .filter((object) => !(object instanceof TextType))\n .map(async (object) => {\n await yieldOrContinue('interactive');\n const fields = mapObjectToTextFields<T>(object);\n Object.entries(fields)\n .filter(([_, value]) => value.match(match))\n .forEach(([key, value]) => {\n if (!result.has(object)) {\n result.set(object, []);\n }\n result.set(object, [...result.get(object)!, [key, value]]);\n });\n }),\n );\n return result;\n};\n\nexport const useSearchResults = <T extends Record<string, any>>(\n queryString?: string,\n objects?: T[],\n delay: number = 400,\n): [boolean, Map<T, string[][]>] => {\n const [results, setResults] = useState<Map<T, string[][]>>(new Map());\n const [pending, setPending] = useState(false);\n\n useEffect(() => {\n setPending(!!(objects && queryString));\n const timeoutId = setTimeout(async () => {\n const nextResults =\n objects && queryString ? await filterObjects(objects, queryStringToMatch(queryString)) : new Map();\n setResults(nextResults);\n setPending(false);\n }, delay);\n\n return () => clearTimeout(timeoutId);\n }, [queryString, objects]);\n\n return [pending, results];\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SEARCH_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [SEARCH_PLUGIN]: {\n 'plugin name': 'Search',\n 'search action label': 'Search spaces',\n 'search placeholder': 'Search…',\n 'search dialog title': 'Open',\n 'recently closed heading': 'Recently closed',\n 'pending results message': 'Searching…',\n 'empty results message': 'No matching items in your spaces',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n GraphBuilderProvides,\n IntentResolverProvides,\n MetadataRecordsProvides,\n SurfaceProvides,\n TranslationsProvides,\n} from '@dxos/app-framework';\n\nimport { SEARCH_PLUGIN } from './meta';\n\nconst SEARCH_ACTION = `${SEARCH_PLUGIN}/action`;\n\nexport enum SearchAction {\n SEARCH = `${SEARCH_ACTION}/search`,\n}\n\nexport type SearchPluginProvides = SurfaceProvides &\n IntentResolverProvides &\n GraphBuilderProvides &\n MetadataRecordsProvides &\n TranslationsProvides;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SearchPlugin } from './SearchPlugin';\n\nexport default SearchPlugin;\n\nexport * from './context';\nexport * from './search-sync';\n\nexport * from './SearchPlugin';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "resolvePlugin", "parseIntentPlugin", "parseGraphPlugin", "parseNavigationPlugin", "LayoutAction", "firstIdInPart", "createExtension", "getActiveSpace", "MagnifyingGlass", "React", "useEffect", "useRef", "useState", "Input", "getSize", "mx", "Searchbar", "classes", "variant", "placeholder", "value", "onChange", "inputRef", "useRef", "text", "setText", "useState", "useEffect", "handleChange", "handleReset", "undefined", "current", "focus", "div", "className", "Input", "Root", "TextInput", "ref", "classNames", "mx", "input", "target", "onKeyDown", "key", "role", "onClick", "MagnifyingGlass", "getSize", "React", "useState", "useClient", "Filter", "useQuery", "useTranslation", "groupSurface", "mx", "Buildings", "Folders", "User", "React", "forwardRef", "ScrollArea", "Card", "Mosaic", "ghostHover", "mx", "styles", "selected", "getIcon", "type", "iconMap", "user", "User", "organization", "Buildings", "project", "Folders", "Snippet", "text", "match", "content", "React", "result", "index", "undefined", "maxOffset", "before", "slice", "length", "idx", "indexOf", "after", "span", "className", "SearchItem", "forwardRef", "draggableStyle", "draggableProps", "item", "debug", "id", "label", "snippet", "onSelect", "Icon", "Card", "Root", "ref", "style", "classNames", "mx", "ghostHover", "onClick", "Header", "DragHandle", "Title", "title", "Endcap", "Body", "gutter", "pre", "JSON", "stringify", "SearchResults", "items", "path", "ScrollArea", "Viewport", "Mosaic", "Container", "Component", "map", "DraggableTile", "key", "SEARCH_RESULT", "Scrollbar", "orientation", "Thumb", "Corner", "React", "createContext", "useContext", "useMemo", "useState", "raise", "AST", "getSchema", "TextType", "queryStringToMatch", "queryString", "trimmed", "trim", "RegExp", "undefined", "getIcon", "schema", "AST", "isTypeLiteral", "ast", "keys", "propertySignatures", "map", "p", "name", "indexOf", "filterObjectsSync", "objects", "match", "reduce", "results", "object", "TextType", "fields", "mapObjectToTextFields", "Object", "entries", "some", "value", "result", "label", "getStringProperty", "push", "id", "type", "getSchema", "snippet", "content", "description", "key", "getKeys", "obj", "JSON", "parse", "stringify", "filter", "err", "String", "SearchContext", "createContext", "SearchContextProvider", "children", "match", "setMatch", "useState", "handleMatch", "text", "queryStringToMatch", "React", "Provider", "value", "useGlobalSearch", "useContext", "raise", "Error", "useGlobalSearchResults", "objects", "filterObjectsSync", "useGlobalFilteredObjects", "useMemo", "map", "result", "object", "SearchMain", "space", "t", "useTranslation", "SEARCH_PLUGIN", "client", "useClient", "setMatch", "useGlobalSearch", "allSpaces", "objects", "useQuery", "spaces", "Filter", "all", "results", "useGlobalSearchResults", "selected", "setSelected", "useState", "handleSelect", "id", "undefined", "React", "div", "className", "Searchbar", "placeholder", "onChange", "length", "mx", "groupSurface", "SearchResults", "items", "onSelect", "React", "forwardRef", "useCallback", "useState", "useResolvePlugin", "parseNavigationPlugin", "parseGraphPlugin", "NavigationAction", "LayoutAction", "isLayoutParts", "useIntentDispatcher", "useClient", "Filter", "fullyQualifiedId", "useQuery", "Button", "Dialog", "Icon", "toLocalizedString", "useTranslation", "SearchList", "descriptionText", "mx", "yieldOrContinue", "useEffect", "useState", "TextType", "filterObjects", "objects", "match", "result", "Map", "Promise", "all", "filter", "object", "TextType", "map", "yieldOrContinue", "fields", "mapObjectToTextFields", "Object", "entries", "_", "value", "forEach", "key", "has", "set", "get", "useSearchResults", "queryString", "delay", "results", "setResults", "useState", "pending", "setPending", "useEffect", "timeoutId", "setTimeout", "nextResults", "queryStringToMatch", "clearTimeout", "SearchListResult", "forwardRef", "node", "onSelect", "forwardedRef", "t", "useTranslation", "SEARCH_PLUGIN", "label", "toLocalizedString", "properties", "React", "SearchList", "Item", "value", "key", "id", "classNames", "ref", "Icon", "size", "icon", "span", "className", "SearchDialog", "subject", "graphPlugin", "useResolvePlugin", "parseGraphPlugin", "graph", "provides", "navigationPlugin", "parseNavigationPlugin", "providedClosed", "location", "closed", "Array", "isArray", "map", "findNode", "filter", "Boolean", "active", "queryString", "setQueryString", "useState", "client", "useClient", "dangerouslyLoadAllObjects", "useQuery", "spaces", "Filter", "all", "pending", "results", "useSearchResults", "resultObjects", "from", "keys", "dispatch", "useIntentDispatcher", "handleSelect", "useCallback", "nodeId", "isLayoutParts", "index", "main", "findIndex", "entry", "action", "LayoutAction", "SET_LAYOUT", "data", "element", "state", "SCROLL_INTO_VIEW", "NavigationAction", "ADD_TO_ACTIVE", "part", "layoutCoordinate", "pivotId", "entryId", "positioning", "Dialog", "Content", "Title", "Root", "Input", "onValueChange", "nextValue", "placeholder", "length", "object", "fullyQualifiedId", "p", "h2", "mx", "descriptionText", "Close", "asChild", "Button", "variant", "ns", "SEARCH_PLUGIN", "SEARCH_ACTION", "SEARCH_PLUGIN", "SearchAction", "SearchPlugin", "navigationPlugin", "graphPlugin", "meta", "ready", "plugins", "resolvePlugin", "parseNavigationPlugin", "parseGraphPlugin", "provides", "translations", "metadata", "records", "SEARCH_RESULT", "parse", "item", "type", "id", "label", "data", "object", "graph", "builder", "intentPlugin", "parseIntentPlugin", "createExtension", "SEARCH_PLUGIN", "filter", "node", "actions", "SearchAction", "SEARCH", "intent", "dispatch", "plugin", "action", "properties", "ns", "icon", "keyBinding", "macos", "windows", "testId", "context", "children", "React", "SearchContextProvider", "surface", "component", "role", "location", "space", "getActiveSpace", "firstIdInPart", "active", "undefined", "SearchDialog", "subject", "SearchMain", "resolver", "LayoutAction", "SET_LAYOUT", "element", "state", "SearchPlugin"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/plugins/experimental/plugin-search/src/components/Searchbar/Searchbar.tsx":{"bytes":5649,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/components/Searchbar/index.ts":{"bytes":537,"imports":[{"path":"packages/plugins/experimental/plugin-search/src/components/Searchbar/Searchbar.tsx","kind":"import-statement","original":"./Searchbar"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/meta.ts":{"bytes":1834,"imports":[],"format":"esm"},"packages/plugins/experimental/plugin-search/src/components/SearchResults/SearchResults.tsx":{"bytes":13354,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-card","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-search/src/meta.ts","kind":"import-statement","original":"../../meta"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/components/SearchResults/index.ts":{"bytes":553,"imports":[{"path":"packages/plugins/experimental/plugin-search/src/components/SearchResults/SearchResults.tsx","kind":"import-statement","original":"./SearchResults"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/search-sync.ts":{"bytes":12086,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown/types","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/context.tsx":{"bytes":4983,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-search/src/search-sync.ts","kind":"import-statement","original":"./search-sync"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/components/SearchMain.tsx":{"bytes":6296,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-search/src/components/SearchResults/index.ts","kind":"import-statement","original":"./SearchResults"},{"path":"packages/plugins/experimental/plugin-search/src/components/Searchbar/index.ts","kind":"import-statement","original":"./Searchbar"},{"path":"packages/plugins/experimental/plugin-search/src/context.tsx","kind":"import-statement","original":"../context"},{"path":"packages/plugins/experimental/plugin-search/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/search.ts":{"bytes":6795,"imports":[{"path":"main-thread-scheduling","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown/types","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-search/src/search-sync.ts","kind":"import-statement","original":"./search-sync"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/components/SearchDialog.tsx":{"bytes":18886,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-search/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/experimental/plugin-search/src/search.ts","kind":"import-statement","original":"../search"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/components/index.ts":{"bytes":725,"imports":[{"path":"packages/plugins/experimental/plugin-search/src/components/Searchbar/index.ts","kind":"import-statement","original":"./Searchbar"},{"path":"packages/plugins/experimental/plugin-search/src/components/SearchMain.tsx","kind":"import-statement","original":"./SearchMain"},{"path":"packages/plugins/experimental/plugin-search/src/components/SearchDialog.tsx","kind":"import-statement","original":"./SearchDialog"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/translations.ts":{"bytes":1920,"imports":[{"path":"packages/plugins/experimental/plugin-search/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/types.tsx":{"bytes":1598,"imports":[{"path":"packages/plugins/experimental/plugin-search/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/SearchPlugin.tsx":{"bytes":14689,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-search/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/experimental/plugin-search/src/context.tsx","kind":"import-statement","original":"./context"},{"path":"packages/plugins/experimental/plugin-search/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/experimental/plugin-search/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/experimental/plugin-search/src/types.tsx","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/index.ts":{"bytes":985,"imports":[{"path":"packages/plugins/experimental/plugin-search/src/SearchPlugin.tsx","kind":"import-statement","original":"./SearchPlugin"},{"path":"packages/plugins/experimental/plugin-search/src/context.tsx","kind":"import-statement","original":"./context"},{"path":"packages/plugins/experimental/plugin-search/src/search-sync.ts","kind":"import-statement","original":"./search-sync"},{"path":"packages/plugins/experimental/plugin-search/src/SearchPlugin.tsx","kind":"import-statement","original":"./SearchPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/experimental/plugin-search/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":44076},"packages/plugins/experimental/plugin-search/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-search/dist/lib/browser/chunk-4L4PWJYC.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-card","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown/types","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"main-thread-scheduling","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown/types","kind":"import-statement","external":true}],"exports":["SearchContextProvider","SearchPlugin","default","filterObjectsSync","mapObjectToTextFields","queryStringToMatch","useGlobalFilteredObjects","useGlobalSearch","useGlobalSearchResults"],"entryPoint":"packages/plugins/experimental/plugin-search/src/index.ts","inputs":{"packages/plugins/experimental/plugin-search/src/SearchPlugin.tsx":{"bytesInOutput":3648},"packages/plugins/experimental/plugin-search/src/components/Searchbar/Searchbar.tsx":{"bytesInOutput":1299},"packages/plugins/experimental/plugin-search/src/components/Searchbar/index.ts":{"bytesInOutput":0},"packages/plugins/experimental/plugin-search/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/experimental/plugin-search/src/components/SearchMain.tsx":{"bytesInOutput":1320},"packages/plugins/experimental/plugin-search/src/components/SearchResults/SearchResults.tsx":{"bytesInOutput":3342},"packages/plugins/experimental/plugin-search/src/components/SearchResults/index.ts":{"bytesInOutput":0},"packages/plugins/experimental/plugin-search/src/context.tsx":{"bytesInOutput":1026},"packages/plugins/experimental/plugin-search/src/search-sync.ts":{"bytesInOutput":2327},"packages/plugins/experimental/plugin-search/src/components/SearchDialog.tsx":{"bytesInOutput":5001},"packages/plugins/experimental/plugin-search/src/search.ts":{"bytesInOutput":1487},"packages/plugins/experimental/plugin-search/src/translations.ts":{"bytesInOutput":436},"packages/plugins/experimental/plugin-search/src/types.tsx":{"bytesInOutput":214},"packages/plugins/experimental/plugin-search/src/index.ts":{"bytesInOutput":32}},"bytes":21559},"packages/plugins/experimental/plugin-search/dist/lib/browser/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/experimental/plugin-search/dist/lib/browser/meta.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-search/dist/lib/browser/chunk-4L4PWJYC.mjs","kind":"import-statement"}],"exports":["SEARCH_PLUGIN","SEARCH_RESULT","default"],"entryPoint":"packages/plugins/experimental/plugin-search/src/meta.ts","inputs":{},"bytes":195},"packages/plugins/experimental/plugin-search/dist/lib/browser/chunk-4L4PWJYC.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":860},"packages/plugins/experimental/plugin-search/dist/lib/browser/chunk-4L4PWJYC.mjs":{"imports":[],"exports":["SEARCH_PLUGIN","SEARCH_RESULT","meta_default"],"inputs":{"packages/plugins/experimental/plugin-search/src/meta.ts":{"bytesInOutput":376}},"bytes":541}}}
|
|
1
|
+
{"inputs":{"packages/plugins/experimental/plugin-search/src/components/Searchbar/Searchbar.tsx":{"bytes":5649,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/components/Searchbar/index.ts":{"bytes":537,"imports":[{"path":"packages/plugins/experimental/plugin-search/src/components/Searchbar/Searchbar.tsx","kind":"import-statement","original":"./Searchbar"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/meta.ts":{"bytes":1834,"imports":[],"format":"esm"},"packages/plugins/experimental/plugin-search/src/components/SearchResults/SearchResults.tsx":{"bytes":13354,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-card","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-search/src/meta.ts","kind":"import-statement","original":"../../meta"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/components/SearchResults/index.ts":{"bytes":553,"imports":[{"path":"packages/plugins/experimental/plugin-search/src/components/SearchResults/SearchResults.tsx","kind":"import-statement","original":"./SearchResults"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/search-sync.ts":{"bytes":12194,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown/types","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/context.tsx":{"bytes":4983,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-search/src/search-sync.ts","kind":"import-statement","original":"./search-sync"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/components/SearchMain.tsx":{"bytes":6406,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-search/src/components/SearchResults/index.ts","kind":"import-statement","original":"./SearchResults"},{"path":"packages/plugins/experimental/plugin-search/src/components/Searchbar/index.ts","kind":"import-statement","original":"./Searchbar"},{"path":"packages/plugins/experimental/plugin-search/src/context.tsx","kind":"import-statement","original":"../context"},{"path":"packages/plugins/experimental/plugin-search/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/search.ts":{"bytes":6795,"imports":[{"path":"main-thread-scheduling","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown/types","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-search/src/search-sync.ts","kind":"import-statement","original":"./search-sync"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/components/SearchDialog.tsx":{"bytes":19000,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-search/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/experimental/plugin-search/src/search.ts","kind":"import-statement","original":"../search"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/components/index.ts":{"bytes":725,"imports":[{"path":"packages/plugins/experimental/plugin-search/src/components/Searchbar/index.ts","kind":"import-statement","original":"./Searchbar"},{"path":"packages/plugins/experimental/plugin-search/src/components/SearchMain.tsx","kind":"import-statement","original":"./SearchMain"},{"path":"packages/plugins/experimental/plugin-search/src/components/SearchDialog.tsx","kind":"import-statement","original":"./SearchDialog"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/translations.ts":{"bytes":1920,"imports":[{"path":"packages/plugins/experimental/plugin-search/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/types.tsx":{"bytes":1598,"imports":[{"path":"packages/plugins/experimental/plugin-search/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/SearchPlugin.tsx":{"bytes":14689,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-search/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/experimental/plugin-search/src/context.tsx","kind":"import-statement","original":"./context"},{"path":"packages/plugins/experimental/plugin-search/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/experimental/plugin-search/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/experimental/plugin-search/src/types.tsx","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/experimental/plugin-search/src/index.ts":{"bytes":985,"imports":[{"path":"packages/plugins/experimental/plugin-search/src/SearchPlugin.tsx","kind":"import-statement","original":"./SearchPlugin"},{"path":"packages/plugins/experimental/plugin-search/src/context.tsx","kind":"import-statement","original":"./context"},{"path":"packages/plugins/experimental/plugin-search/src/search-sync.ts","kind":"import-statement","original":"./search-sync"},{"path":"packages/plugins/experimental/plugin-search/src/SearchPlugin.tsx","kind":"import-statement","original":"./SearchPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/experimental/plugin-search/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":44275},"packages/plugins/experimental/plugin-search/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-search/dist/lib/browser/chunk-4L4PWJYC.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-card","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown/types","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"main-thread-scheduling","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown/types","kind":"import-statement","external":true}],"exports":["SearchContextProvider","SearchPlugin","default","filterObjectsSync","mapObjectToTextFields","queryStringToMatch","useGlobalFilteredObjects","useGlobalSearch","useGlobalSearchResults"],"entryPoint":"packages/plugins/experimental/plugin-search/src/index.ts","inputs":{"packages/plugins/experimental/plugin-search/src/SearchPlugin.tsx":{"bytesInOutput":3648},"packages/plugins/experimental/plugin-search/src/components/Searchbar/Searchbar.tsx":{"bytesInOutput":1299},"packages/plugins/experimental/plugin-search/src/components/Searchbar/index.ts":{"bytesInOutput":0},"packages/plugins/experimental/plugin-search/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/experimental/plugin-search/src/components/SearchMain.tsx":{"bytesInOutput":1342},"packages/plugins/experimental/plugin-search/src/components/SearchResults/SearchResults.tsx":{"bytesInOutput":3342},"packages/plugins/experimental/plugin-search/src/components/SearchResults/index.ts":{"bytesInOutput":0},"packages/plugins/experimental/plugin-search/src/context.tsx":{"bytesInOutput":1026},"packages/plugins/experimental/plugin-search/src/search-sync.ts":{"bytesInOutput":2363},"packages/plugins/experimental/plugin-search/src/components/SearchDialog.tsx":{"bytesInOutput":5035},"packages/plugins/experimental/plugin-search/src/search.ts":{"bytesInOutput":1487},"packages/plugins/experimental/plugin-search/src/translations.ts":{"bytesInOutput":436},"packages/plugins/experimental/plugin-search/src/types.tsx":{"bytesInOutput":214},"packages/plugins/experimental/plugin-search/src/index.ts":{"bytesInOutput":32}},"bytes":21651},"packages/plugins/experimental/plugin-search/dist/lib/browser/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/experimental/plugin-search/dist/lib/browser/meta.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-search/dist/lib/browser/chunk-4L4PWJYC.mjs","kind":"import-statement"}],"exports":["SEARCH_PLUGIN","SEARCH_RESULT","default"],"entryPoint":"packages/plugins/experimental/plugin-search/src/meta.ts","inputs":{},"bytes":195},"packages/plugins/experimental/plugin-search/dist/lib/browser/chunk-4L4PWJYC.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":860},"packages/plugins/experimental/plugin-search/dist/lib/browser/chunk-4L4PWJYC.mjs":{"imports":[],"exports":["SEARCH_PLUGIN","SEARCH_RESULT","meta_default"],"inputs":{"packages/plugins/experimental/plugin-search/src/meta.ts":{"bytesInOutput":376}},"bytes":541}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchMain.d.ts","sourceRoot":"","sources":["../../../../src/components/SearchMain.tsx"],"names":[],"mappings":"AAIA,OAAc,EAAE,KAAK,EAAE,EAAY,MAAM,OAAO,CAAC;AAGjD,OAAO,
|
|
1
|
+
{"version":3,"file":"SearchMain.d.ts","sourceRoot":"","sources":["../../../../src/components/SearchMain.tsx"],"names":[],"mappings":"AAIA,OAAc,EAAE,KAAK,EAAE,EAAY,MAAM,OAAO,CAAC;AAGjD,OAAO,EAAoB,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AASvE,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CA+B3C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-sync.d.ts","sourceRoot":"","sources":["../../../src/search-sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search-sync.d.ts","sourceRoot":"","sources":["../../../src/search-sync.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,kBAAkB,iBAAkB,MAAM,KAAG,MAAM,GAAG,SAGlE,CAAC;AAuBF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEhD,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,CAAC;CACd,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,UAAU,MAAM,KAAG,YAAY,EAqC3G,CAAC;AAiCF,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,KAAG,UAapF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-search",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.3-main.2dd075e",
|
|
4
4
|
"description": "Braneframe sketch plugin",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -32,16 +32,17 @@
|
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@effect/schema": "^0.75.5",
|
|
34
34
|
"main-thread-scheduling": "^14.1.1",
|
|
35
|
-
"@dxos/app-framework": "0.7.
|
|
36
|
-
"@dxos/
|
|
37
|
-
"@dxos/
|
|
38
|
-
"@dxos/plugin-graph": "0.7.
|
|
39
|
-
"@dxos/
|
|
40
|
-
"@dxos/
|
|
41
|
-
"@dxos/
|
|
42
|
-
"@dxos/react-ui-card": "0.7.
|
|
43
|
-
"@dxos/
|
|
44
|
-
"@dxos/react-ui-
|
|
35
|
+
"@dxos/app-framework": "0.7.3-main.2dd075e",
|
|
36
|
+
"@dxos/echo-schema": "0.7.3-main.2dd075e",
|
|
37
|
+
"@dxos/plugin-markdown": "0.7.3-main.2dd075e",
|
|
38
|
+
"@dxos/plugin-graph": "0.7.3-main.2dd075e",
|
|
39
|
+
"@dxos/react-client": "0.7.3-main.2dd075e",
|
|
40
|
+
"@dxos/live-object": "0.7.3-main.2dd075e",
|
|
41
|
+
"@dxos/plugin-space": "0.7.3-main.2dd075e",
|
|
42
|
+
"@dxos/react-ui-card": "0.7.3-main.2dd075e",
|
|
43
|
+
"@dxos/debug": "0.7.3-main.2dd075e",
|
|
44
|
+
"@dxos/react-ui-mosaic": "0.7.3-main.2dd075e",
|
|
45
|
+
"@dxos/react-ui-searchlist": "0.7.3-main.2dd075e"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"@phosphor-icons/react": "^2.1.5",
|
|
@@ -50,17 +51,17 @@
|
|
|
50
51
|
"react": "~18.2.0",
|
|
51
52
|
"react-dom": "~18.2.0",
|
|
52
53
|
"vite": "5.4.7",
|
|
53
|
-
"@dxos/
|
|
54
|
-
"@dxos/
|
|
55
|
-
"@dxos/react-ui-theme": "0.7.
|
|
56
|
-
"@dxos/storybook-utils": "0.7.
|
|
54
|
+
"@dxos/react-ui": "0.7.3-main.2dd075e",
|
|
55
|
+
"@dxos/random": "0.7.3-main.2dd075e",
|
|
56
|
+
"@dxos/react-ui-theme": "0.7.3-main.2dd075e",
|
|
57
|
+
"@dxos/storybook-utils": "0.7.3-main.2dd075e"
|
|
57
58
|
},
|
|
58
59
|
"peerDependencies": {
|
|
59
60
|
"@phosphor-icons/react": "^2.1.5",
|
|
60
61
|
"react": "~18.2.0",
|
|
61
62
|
"react-dom": "~18.2.0",
|
|
62
|
-
"@dxos/react-ui": "0.7.
|
|
63
|
-
"@dxos/react-ui-theme": "0.7.
|
|
63
|
+
"@dxos/react-ui": "0.7.3-main.2dd075e",
|
|
64
|
+
"@dxos/react-ui-theme": "0.7.3-main.2dd075e"
|
|
64
65
|
},
|
|
65
66
|
"publishConfig": {
|
|
66
67
|
"access": "public"
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
} from '@dxos/app-framework';
|
|
17
17
|
import { type Node } from '@dxos/plugin-graph';
|
|
18
18
|
import { useClient } from '@dxos/react-client';
|
|
19
|
-
import { fullyQualifiedId, useQuery } from '@dxos/react-client/echo';
|
|
19
|
+
import { Filter, fullyQualifiedId, useQuery } from '@dxos/react-client/echo';
|
|
20
20
|
import { Button, Dialog, Icon, toLocalizedString, useTranslation } from '@dxos/react-ui';
|
|
21
21
|
import { SearchList, type SearchListItemProps } from '@dxos/react-ui-searchlist';
|
|
22
22
|
import { descriptionText, mx } from '@dxos/react-ui-theme';
|
|
@@ -61,7 +61,7 @@ export const SearchDialog = ({
|
|
|
61
61
|
const active = navigationPlugin?.provides.location.active;
|
|
62
62
|
const [queryString, setQueryString] = useState('');
|
|
63
63
|
const client = useClient();
|
|
64
|
-
const dangerouslyLoadAllObjects = useQuery(client.spaces);
|
|
64
|
+
const dangerouslyLoadAllObjects = useQuery(client.spaces, Filter.all());
|
|
65
65
|
const [pending, results] = useSearchResults(queryString, dangerouslyLoadAllObjects);
|
|
66
66
|
const resultObjects = Array.from(results.keys());
|
|
67
67
|
const dispatch = useIntentDispatcher();
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import React, { type FC, useState } from 'react';
|
|
6
6
|
|
|
7
7
|
import { useClient } from '@dxos/react-client';
|
|
8
|
-
import { useQuery, type Space } from '@dxos/react-client/echo';
|
|
8
|
+
import { Filter, useQuery, type Space } from '@dxos/react-client/echo';
|
|
9
9
|
import { useTranslation } from '@dxos/react-ui';
|
|
10
10
|
import { groupSurface, mx } from '@dxos/react-ui-theme';
|
|
11
11
|
|
|
@@ -22,7 +22,7 @@ export const SearchMain: FC<{ space: Space }> = ({ space }) => {
|
|
|
22
22
|
const allSpaces = false;
|
|
23
23
|
|
|
24
24
|
// TODO(burdon): Returns ALL objects (e.g., incl. Text objects that are fields of parent objects).
|
|
25
|
-
const objects = useQuery(allSpaces ? client.spaces : space);
|
|
25
|
+
const objects = useQuery(allSpaces ? client.spaces : space, Filter.all());
|
|
26
26
|
const results = useGlobalSearchResults(objects);
|
|
27
27
|
|
|
28
28
|
const [selected, setSelected] = useState<string>();
|
package/src/search-sync.ts
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { AST,
|
|
5
|
+
import { AST, type S } from '@dxos/echo-schema';
|
|
6
|
+
import { getSchema } from '@dxos/live-object';
|
|
6
7
|
import { TextType } from '@dxos/plugin-markdown/types';
|
|
7
8
|
|
|
8
9
|
export const queryStringToMatch = (queryString?: string): RegExp | undefined => {
|
package/src/search.test.ts
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
import { describe, expect, test } from 'vitest';
|
|
6
6
|
|
|
7
7
|
import { Client } from '@dxos/client';
|
|
8
|
-
import {
|
|
8
|
+
import { Expando } from '@dxos/echo-schema';
|
|
9
|
+
import { create } from '@dxos/live-object';
|
|
9
10
|
import { faker } from '@dxos/random';
|
|
10
11
|
|
|
11
12
|
import { filterObjectsSync } from './search-sync';
|