@dxos/plugin-preview 0.8.2-main.2f9c567 → 0.8.2-main.36232bc

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/meta.ts", "../../../src/types.ts", "../../../src/PreviewPlugin.tsx", "../../../src/components/ContactCard.tsx", "../../../src/components/OrganizationCard.tsx", "../../../src/components/ProjectCard.tsx", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const PREVIEW_PLUGIN = 'dxos.org/plugin/preview';\n\nexport const meta: PluginMeta = {\n id: PREVIEW_PLUGIN,\n name: 'Preview',\n icon: 'ph--eye--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-preview',\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type PropsWithChildren } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\n\n// TODO(burdon): Better place for these defs?\nexport type PreviewProps<T extends object> = PropsWithChildren<\n ThemedClassName<{\n subject: T;\n role: string;\n }>\n>;\n\n// TODO(burdon): Update react-ui-card (to use grid) and re-use here.\n// - See https://dxos-storybook.pages.dev/?path=/story/ui-react-ui-card-card--draggable\n// - Standardize Header, actions, image, body, etc.\n// - Support different grid layouts (e.g., image to the side, on top, etc.)\n// - Should co-exist naturally with react-ui-form (e.g., as main content).\n// - Considerations for drag-and-drop.\n/**\n * <Card.Root>\n * <Card.Header>\n * <Card.Title>\n * <Card.Action>\n * </Card.Header>\n * <Card.Body>\n * <Card.Image>\n * <Form />\n * </Card.Body>\n * </Card.Root>\n */\nexport const popoverCard = 'popover-consistent-width rounded-lg overflow-hidden';\nexport const defaultCard = '';\nexport const kanbanCardWithoutPoster = 'pbs-[--rail-action]';\nexport const previewTitle = 'text-lg font-medium line-clamp-2';\nexport const previewProse = 'pli-3 mlb-3';\nexport const previewChrome = 'pli-1.5 mlb-1.5 [&_.dx-button]:pli-1.5 [&_.dx-button]:text-start [&_.dx-button]:is-full';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport {\n Capabilities,\n Events,\n LayoutAction,\n Surface,\n contributes,\n createIntent,\n createSurface,\n defineModule,\n definePlugin,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { addEventListener } from '@dxos/async';\nimport { type Client, resolveRef } from '@dxos/client';\nimport {\n Filter,\n fullyQualifiedId,\n getSchema,\n getSpace,\n isEchoObject,\n parseId,\n type AnyLiveObject,\n type Space,\n} from '@dxos/client/echo';\nimport { isInstanceOf } from '@dxos/echo-schema';\nimport { DXN } from '@dxos/keys';\nimport { type DxRefTagActivate } from '@dxos/lit-ui';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { useTranslation } from '@dxos/react-ui';\nimport { type PreviewLinkRef, type PreviewLinkTarget } from '@dxos/react-ui-editor';\nimport { Form } from '@dxos/react-ui-form';\nimport { TableType } from '@dxos/react-ui-table';\nimport { descriptionMessage } from '@dxos/react-ui-theme';\nimport { DataType } from '@dxos/schema';\n\nimport { ContactCard, OrganizationCard, ProjectCard } from './components';\nimport { meta, PREVIEW_PLUGIN } from './meta';\nimport translations from './translations';\nimport { kanbanCardWithoutPoster } from './types';\n\nconst customEventOptions = { capture: true, passive: false };\n\nconst handlePreviewLookup = async (\n client: Client,\n defaultSpace: Space,\n { ref, label }: PreviewLinkRef,\n): Promise<PreviewLinkTarget | null> => {\n const dxn = DXN.parse(ref);\n if (!dxn) {\n return null;\n }\n\n const object = await resolveRef(client, dxn, defaultSpace);\n return { label, object };\n};\n\nexport const PreviewPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => [contributes(ClientCapabilities.Schema, [DataType.Person, DataType.Organization])],\n }),\n defineModule({\n id: `${meta.id}/module/preview-popover`,\n activatesOn: Events.Startup,\n activate: (context) => {\n // TODO(wittjosiah): Factor out lookup handlers to other plugins to make not ECHO-specific.\n const handleDxRefTagActivate = async ({ ref, label, trigger }: DxRefTagActivate) => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const client = context.requestCapability(ClientCapabilities.Client);\n const [layout] = context.requestCapabilities(Capabilities.Layout);\n const { spaceId } = parseId(layout.workspace);\n const space = (spaceId && client.spaces.get(spaceId)) ?? client.spaces.default;\n const result = await handlePreviewLookup(client, space, { ref, label });\n if (!result) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n subject: result.object,\n options: {\n state: true,\n variant: 'virtual',\n anchor: trigger,\n },\n }),\n );\n };\n\n if (!document.defaultView) {\n log.warn('No default view found');\n return [];\n }\n\n const cleanup = addEventListener(\n document.defaultView,\n 'dx-ref-tag-activate',\n handleDxRefTagActivate,\n customEventOptions,\n );\n return contributes(Capabilities.Null, null, () => cleanup());\n },\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: () =>\n // TODO(wittjosiah): Factor out to lazy capabilities like other plugins.\n contributes(Capabilities.ReactSurface, [\n //\n // Specific schema types.\n //\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover`,\n role: ['popover', 'card--kanban'],\n filter: (data): data is { subject: DataType.Person } => isInstanceOf(DataType.Person, data.subject),\n component: ({ data, role }) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const handleOrgClick = useCallback(\n async (org: DataType.Organization) => {\n const space = getSpace(org);\n const tablesQuery = await space?.db.query(Filter.schema(TableType)).run();\n const currentSpaceOrgTable = tablesQuery?.objects.find((table) => {\n return table.view?.target?.query?.typename === DataType.Organization.typename;\n });\n await dispatch(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n options: {\n state: false,\n anchorId: '',\n },\n }),\n );\n if (currentSpaceOrgTable) {\n return dispatch(\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [fullyQualifiedId(currentSpaceOrgTable)],\n options: { workspace: space?.id },\n }),\n );\n }\n },\n [dispatch],\n );\n return (\n <ContactCard subject={data.subject} onOrgClick={handleOrgClick} role={role}>\n {role === 'popover' && <Surface role='related' data={data} />}\n </ContactCard>\n );\n },\n }),\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover`,\n role: ['popover', 'card--kanban'],\n filter: (data): data is { subject: DataType.Organization } =>\n isInstanceOf(DataType.Organization, data.subject),\n component: ({ data, role }) => (\n <OrganizationCard subject={data.subject} role={role}>\n {role === 'popover' && <Surface role='related' data={data} />}\n </OrganizationCard>\n ),\n }),\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover`,\n role: ['popover', 'card--kanban'],\n filter: (data): data is { subject: DataType.Project } => isInstanceOf(DataType.Project, data.subject),\n component: ({ data, role }) => <ProjectCard subject={data.subject} role={role} />,\n }),\n\n //\n // Fallback for any object.\n //\n createSurface({\n id: `${PREVIEW_PLUGIN}/fallback-popover`,\n role: ['popover', 'card--kanban'],\n position: 'fallback',\n filter: (data): data is { subject: AnyLiveObject<any> } => isEchoObject(data.subject),\n component: ({ data, role }) => {\n const schema = getSchema(data.subject);\n const { t } = useTranslation(PREVIEW_PLUGIN);\n if (!schema) {\n return <p className={descriptionMessage}>{t('unable to create preview message')}</p>;\n }\n\n return (\n <Form\n schema={schema}\n values={data.subject}\n readonly\n {...(role === 'card--kanban' && { classNames: kanbanCardWithoutPoster })}\n />\n );\n },\n }),\n ]),\n }),\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment } from 'react';\n\nimport { Icon, Avatar, Button } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { type PreviewProps, popoverCard, previewTitle, previewProse, previewChrome, defaultCard } from '../types';\n\nexport const ContactCard = ({\n children,\n classNames,\n role,\n subject: { fullName, image, organization, emails },\n onOrgClick,\n}: PreviewProps<DataType.Person> & { onOrgClick?: (org: DataType.Organization) => void }) => {\n const organizationName = organization && typeof organization === 'object' ? organization.target?.name : organization;\n return (\n <div role='none' className={mx(role === 'popover' ? popoverCard : defaultCard, classNames)}>\n <Avatar.Root>\n <div role='group' className={mx(previewProse, 'grid gap-3 grid-cols-[min-content_1fr]')}>\n <Avatar.Content imgSrc={image} icon='ph--user--regular' size={16} hue='neutral' />\n <div role='none' className='bs-min self-center'>\n <Avatar.Label asChild>\n <h2 className={previewTitle}>{fullName}</h2>\n </Avatar.Label>\n </div>\n </div>\n </Avatar.Root>\n {organizationName && (\n <div role='none' className={previewChrome}>\n {typeof organization === 'object' && onOrgClick ? (\n <Button variant='ghost' classNames='gap-2 text-start' onClick={() => onOrgClick(organization.target!)}>\n <Icon icon='ph--buildings--regular' size={5} classNames='text-subdued' />\n <span className='min-is-0 flex-1 truncate'>{organizationName}</span>\n <Icon icon='ph--arrow-right--regular' />\n </Button>\n ) : (\n <p className='dx-button gap-2' data-variant='ghost'>\n <Icon icon='ph--buildings--regular' size={5} classNames='text-subdued' />\n <span className='min-is-0 flex-1 truncate'>{organizationName}</span>\n </p>\n )}\n </div>\n )}\n <dl\n className={mx(\n previewProse,\n 'grid gap-2 grid-cols-[min-content_1fr] [&_dt]:text-subdued [&_dt]:pbs-0.5 [&_dd]:min-is-0',\n )}\n >\n {emails?.length &&\n emails.map(({ label, value }) => (\n <Fragment key={value}>\n <dt>\n <Icon icon='ph--at--regular' size={5} />\n </dt>\n <dd key={value} className='break-words'>\n {value}\n </dd>\n </Fragment>\n ))}\n </dl>\n {children}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Icon } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { type PreviewProps, popoverCard, previewTitle, previewProse, previewChrome, defaultCard } from '../types';\n\nexport const OrganizationCard = ({\n children,\n classNames,\n subject: { name, image, description, website },\n role,\n}: PreviewProps<DataType.Organization>) => {\n return (\n <div role='none' className={mx(role === 'popover' ? popoverCard : defaultCard, classNames)}>\n {image ? (\n <img className='aspect-video object-cover is-full bs-auto' src={image} alt={name} />\n ) : (\n <div role='image' className='grid aspect-video place-items-center bg-input text-subdued'>\n <Icon icon='ph--building-office--regular' size={10} />\n </div>\n )}\n <h2 className={mx(previewTitle, previewProse)}>{name}</h2>\n {description && <p className={mx(previewProse, 'line-clamp-2')}>{description}</p>}\n {website && (\n <div role='none' className={previewChrome}>\n <a className='dx-button dx-focus-ring gap-2' href={website} target='_blank' rel='noreferrer'>\n <Icon icon='ph--link--regular' size={5} classNames='text-subdued' />\n <span className='grow'>{website}</span>\n <Icon icon='ph--arrow-square-out--regular' />\n </a>\n </div>\n )}\n {children}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { type PreviewProps, popoverCard, previewTitle, defaultCard } from '../types';\n\nexport const ProjectCard = ({\n classNames,\n role,\n subject: { name, image, description },\n}: PreviewProps<DataType.Project>) => {\n return (\n <div role='none' className={mx(role === 'popover' ? popoverCard : defaultCard, classNames)}>\n {image && <img className='is-full bs-auto' src={image} alt={name} />}\n <h2 className={mx(previewTitle, 'pli-3 mlb-3')}>{name}</h2>\n {description && <p className='pli-3 line-clamp-2 mlb-3'>{description}</p>}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { PREVIEW_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [PREVIEW_PLUGIN]: {\n 'unable to create preview message': 'No preview',\n },\n },\n },\n];\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEIA,mBAAmC;AAEnC,2BAWO;AACP,mBAAiC;AACjC,oBAAwC;AACxC,kBASO;AACP,yBAA6B;AAC7B,kBAAoB;AAEpB,iBAAoB;AACpB,2BAAiD;AACjD,sBAA+B;AAE/B,2BAAqB;AACrB,4BAA0B;AAC1B,4BAAmC;AACnC,oBAAyB;ACpCzB,IAAAA,gBAAgC;AAEhC,IAAAC,mBAAqC;AACrC,IAAAC,yBAAmB;ACHnB,IAAAF,gBAAkB;AAElB,IAAAC,mBAAqB;AACrB,IAAAC,yBAAmB;ACHnB,IAAAF,gBAAkB;AAElB,IAAAE,yBAAmB;ALAZ,IAAMC,iBAAiB;AAEvB,IAAMC,OAAmB;EAC9BC,IAAIF;EACJG,MAAM;EACNC,MAAM;EACNC,QAAQ;AACV;ACqBO,IAAMC,cAAc;AACpB,IAAMC,cAAc;AACpB,IAAMC,0BAA0B;AAChC,IAAMC,eAAe;AACrB,IAAMC,eAAe;AACrB,IAAMC,gBAAgB;AE3BtB,IAAMC,cAAc,CAAC,EAC1BC,UACAC,YACAC,MACAC,SAAS,EAAEC,UAAUC,OAAOC,cAAcC,OAAM,GAChDC,WAAU,MAC4E;AACtF,QAAMC,mBAAmBH,gBAAgB,OAAOA,iBAAiB,WAAWA,aAAaI,QAAQpB,OAAOgB;AACxG,SACE,8BAAAK,QAAA,cAACC,OAAAA;IAAIV,MAAK;IAAOW,eAAWC,2BAAGZ,SAAS,YAAYT,cAAcC,aAAaO,UAAAA;KAC7E,8BAAAU,QAAA,cAACI,wBAAOC,MAAI,MACV,8BAAAL,QAAA,cAACC,OAAAA;IAAIV,MAAK;IAAQW,eAAWC,2BAAGjB,cAAc,wCAAA;KAC5C,8BAAAc,QAAA,cAACI,wBAAOE,SAAO;IAACC,QAAQb;IAAOd,MAAK;IAAoB4B,MAAM;IAAIC,KAAI;MACtE,8BAAAT,QAAA,cAACC,OAAAA;IAAIV,MAAK;IAAOW,WAAU;KACzB,8BAAAF,QAAA,cAACI,wBAAOM,OAAK;IAACC,SAAAA;KACZ,8BAAAX,QAAA,cAACY,MAAAA;IAAGV,WAAWjB;KAAeQ,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAKrCK,oBACC,8BAAAE,QAAA,cAACC,OAAAA;IAAIV,MAAK;IAAOW,WAAWf;KACzB,OAAOQ,iBAAiB,YAAYE,aACnC,8BAAAG,QAAA,cAACa,yBAAAA;IAAOC,SAAQ;IAAQxB,YAAW;IAAmByB,SAAS,MAAMlB,WAAWF,aAAaI,MAAM;KACjG,8BAAAC,QAAA,cAACgB,uBAAAA;IAAKpC,MAAK;IAAyB4B,MAAM;IAAGlB,YAAW;MACxD,8BAAAU,QAAA,cAACiB,QAAAA;IAAKf,WAAU;KAA4BJ,gBAAAA,GAC5C,8BAAAE,QAAA,cAACgB,uBAAAA;IAAKpC,MAAK;QAGb,8BAAAoB,QAAA,cAACkB,KAAAA;IAAEhB,WAAU;IAAkBiB,gBAAa;KAC1C,8BAAAnB,QAAA,cAACgB,uBAAAA;IAAKpC,MAAK;IAAyB4B,MAAM;IAAGlB,YAAW;MACxD,8BAAAU,QAAA,cAACiB,QAAAA;IAAKf,WAAU;KAA4BJ,gBAAAA,CAAAA,CAAAA,GAKpD,8BAAAE,QAAA,cAACoB,MAAAA;IACClB,eAAWC,2BACTjB,cACA,2FAAA;KAGDU,QAAQyB,UACPzB,OAAO0B,IAAI,CAAC,EAAEC,OAAOC,MAAK,MACxB,8BAAAxB,QAAA,cAACyB,wBAAAA;IAASC,KAAKF;KACb,8BAAAxB,QAAA,cAAC2B,MAAAA,MACC,8BAAA3B,QAAA,cAACgB,uBAAAA;IAAKpC,MAAK;IAAkB4B,MAAM;OAErC,8BAAAR,QAAA,cAAC4B,MAAAA;IAAGF,KAAKF;IAAOtB,WAAU;KACvBsB,KAAAA,CAAAA,CAAAA,CAAAA,GAKVnC,QAAAA;AAGP;ACzDO,IAAMwC,mBAAmB,CAAC,EAC/BxC,UACAC,YACAE,SAAS,EAAEb,MAAMe,OAAOoC,aAAaC,QAAO,GAC5CxC,KAAI,MACgC;AACpC,SACES,8BAAAA,QAAA,cAACC,OAAAA;IAAIV,MAAK;IAAOW,eAAWC,uBAAAA,IAAGZ,SAAS,YAAYT,cAAcC,aAAaO,UAAAA;KAC5EI,QACCM,8BAAAA,QAAA,cAACgC,OAAAA;IAAI9B,WAAU;IAA4C+B,KAAKvC;IAAOwC,KAAKvD;OAE5EqB,8BAAAA,QAAA,cAACC,OAAAA;IAAIV,MAAK;IAAQW,WAAU;KAC1BF,8BAAAA,QAAA,cAACgB,iBAAAA,MAAAA;IAAKpC,MAAK;IAA+B4B,MAAM;OAGpDR,8BAAAA,QAAA,cAACY,MAAAA;IAAGV,eAAWC,uBAAAA,IAAGlB,cAAcC,YAAAA;KAAgBP,IAAAA,GAC/CmD,eAAe9B,8BAAAA,QAAA,cAACkB,KAAAA;IAAEhB,eAAWC,uBAAAA,IAAGjB,cAAc,cAAA;KAAkB4C,WAAAA,GAChEC,WACC/B,8BAAAA,QAAA,cAACC,OAAAA;IAAIV,MAAK;IAAOW,WAAWf;KAC1Ba,8BAAAA,QAAA,cAACmC,KAAAA;IAAEjC,WAAU;IAAgCkC,MAAML;IAAShC,QAAO;IAASsC,KAAI;KAC9ErC,8BAAAA,QAAA,cAACgB,iBAAAA,MAAAA;IAAKpC,MAAK;IAAoB4B,MAAM;IAAGlB,YAAW;MACnDU,8BAAAA,QAAA,cAACiB,QAAAA;IAAKf,WAAU;KAAQ6B,OAAAA,GACxB/B,8BAAAA,QAAA,cAACgB,iBAAAA,MAAAA;IAAKpC,MAAK;QAIhBS,QAAAA;AAGP;AC9BO,IAAMiD,cAAc,CAAC,EAC1BhD,YACAC,MACAC,SAAS,EAAEb,MAAMe,OAAOoC,YAAW,EAAE,MACN;AAC/B,SACE9B,8BAAAA,QAAA,cAACC,OAAAA;IAAIV,MAAK;IAAOW,eAAWC,uBAAAA,IAAGZ,SAAS,YAAYT,cAAcC,aAAaO,UAAAA;KAC5EI,SAASM,8BAAAA,QAAA,cAACgC,OAAAA;IAAI9B,WAAU;IAAkB+B,KAAKvC;IAAOwC,KAAKvD;MAC5DqB,8BAAAA,QAAA,cAACY,MAAAA;IAAGV,eAAWC,uBAAAA,IAAGlB,cAAc,aAAA;KAAiBN,IAAAA,GAChDmD,eAAe9B,8BAAAA,QAAA,cAACkB,KAAAA;IAAEhB,WAAU;KAA4B4B,WAAAA,CAAAA;AAG/D;ACjBA,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACtD,cAAAA,GAAiB;QAChB,oCAAoC;MACtC;IACF;EACF;;;AJkCF,IAAM+D,qBAAqB;EAAEC,SAAS;EAAMC,SAAS;AAAM;AAE3D,IAAMC,sBAAsB,OAC1BC,QACAC,cACA,EAAEC,KAAKtB,MAAK,MAAkB;AAE9B,QAAMuB,MAAMC,gBAAIC,MAAMH,GAAAA;AACtB,MAAI,CAACC,KAAK;AACR,WAAO;EACT;AAEA,QAAMG,SAAS,UAAMC,0BAAWP,QAAQG,KAAKF,YAAAA;AAC7C,SAAO;IAAErB;IAAO0B;EAAO;AACzB;AAEO,IAAME,gBAAgB,UAC3BC,mCAAa3E,MAAM;MACjB4E,mCAAa;IACX3E,IAAI,GAAGD,KAAKC,EAAE;IACd4E,aAAaC,4BAAOC;IACpBC,UAAU,UAAMC,kCAAYC,kCAAaC,cAAcC,oBAAAA;EACzD,CAAA;MACAR,mCAAa;IACX3E,IAAI,GAAGD,KAAKC,EAAE;IACd4E,aAAaQ,kCAAaC;IAC1BN,UAAU,MAAM;UAACC,kCAAYM,wCAAmBC,QAAQ;QAACC,uBAASC;QAAQD,uBAASE;OAAa;;EAClG,CAAA;MACAf,mCAAa;IACX3E,IAAI,GAAGD,KAAKC,EAAE;IACd4E,aAAaC,4BAAOc;IACpBZ,UAAU,CAACa,YAAAA;AAET,YAAMC,yBAAyB,OAAO,EAAE1B,KAAKtB,OAAOiD,QAAO,MAAoB;AAC7E,cAAM,EAAEC,iBAAiBC,SAAQ,IAAKJ,QAAQK,kBAAkBhB,kCAAaiB,gBAAgB;AAC7F,cAAMjC,SAAS2B,QAAQK,kBAAkBX,wCAAmBa,MAAM;AAClE,cAAM,CAACC,MAAAA,IAAUR,QAAQS,oBAAoBpB,kCAAaqB,MAAM;AAChE,cAAM,EAAEC,QAAO,QAAKC,qBAAQJ,OAAOK,SAAS;AAC5C,cAAMC,SAASH,WAAWtC,OAAO0C,OAAOC,IAAIL,OAAAA,MAAatC,OAAO0C,OAAOE;AACvE,cAAMC,SAAS,MAAM9C,oBAAoBC,QAAQyC,OAAO;UAAEvC;UAAKtB;QAAM,CAAA;AACrE,YAAI,CAACiE,QAAQ;AACX;QACF;AAEA,cAAMd,aACJe,mCAAaC,kCAAaC,eAAe;UACvCC,MAAM;UACNpG,SAASgG,OAAOvC;UAChB4C,SAAS;YACPC,OAAO;YACPhF,SAAS;YACTiF,QAAQvB;UACV;QACF,CAAA,CAAA;MAEJ;AAEA,UAAI,CAACwB,SAASC,aAAa;AACzBC,uBAAIC,KAAK,yBAAA,QAAA;;;;;;AACT,eAAO,CAAA;MACT;AAEA,YAAMC,cAAUC,+BACdL,SAASC,aACT,uBACA1B,wBACAhC,kBAAAA;AAEF,iBAAOmB,kCAAYC,kCAAa2C,MAAM,MAAM,MAAMF,QAAAA,CAAAA;IACpD;EACF,CAAA;MACA/C,mCAAa;IACX3E,IAAI,GAAGD,KAAKC,EAAE;IACd4E,aAAaC,4BAAOgD;IACpB9C,UAAU;;UAERC,kCAAYC,kCAAa6C,cAAc;;;;YAIrCC,oCAAc;UACZ/H,IAAI,GAAGF,cAAAA;UACPe,MAAM;YAAC;YAAW;;UAClBmH,QAAQ,CAACC,aAA+CC,iCAAa1C,uBAASC,QAAQwC,KAAKnH,OAAO;UAClGqH,WAAW,CAAC,EAAEF,MAAMpH,KAAI,MAAE;AACxB,kBAAM,EAAEkF,iBAAiBC,SAAQ,QAAKoC,0CAAAA;AACtC,kBAAMC,qBAAiBC,0BACrB,OAAOC,QAAAA;AACL,oBAAM7B,YAAQ8B,sBAASD,GAAAA;AACvB,oBAAME,cAAc,MAAM/B,OAAOgC,GAAGC,MAAMC,mBAAOC,OAAOC,+BAAAA,CAAAA,EAAYC,IAAAA;AACpE,oBAAMC,uBAAuBP,aAAaQ,QAAQC,KAAK,CAACC,UAAAA;AACtD,uBAAOA,MAAMC,MAAM/H,QAAQsH,OAAOU,aAAa7D,uBAASE,aAAa2D;cACvE,CAAA;AACA,oBAAMrD,aACJe,mCAAaC,kCAAaC,eAAe;gBACvCC,MAAM;gBACNC,SAAS;kBACPC,OAAO;kBACPkC,UAAU;gBACZ;cACF,CAAA,CAAA;AAEF,kBAAIN,sBAAsB;AACxB,uBAAOhD,aACLe,mCAAaC,kCAAauC,MAAM;kBAC9BrC,MAAM;kBACNpG,SAAS;wBAAC0I,8BAAiBR,oBAAAA;;kBAC3B7B,SAAS;oBAAEV,WAAWC,OAAO1G;kBAAG;gBAClC,CAAA,CAAA;cAEJ;YACF,GACA;cAACgG;aAAS;AAEZ,mBACE1E,6BAAAA,QAAA,cAACZ,aAAAA;cAAYI,SAASmH,KAAKnH;cAASK,YAAYkH;cAAgBxH;eAC7DA,SAAS,aAAaS,6BAAAA,QAAA,cAACmI,8BAAAA;cAAQ5I,MAAK;cAAUoH;;UAGrD;QACF,CAAA;YACAF,oCAAc;UACZ/H,IAAI,GAAGF,cAAAA;UACPe,MAAM;YAAC;YAAW;;UAClBmH,QAAQ,CAACC,aACPC,iCAAa1C,uBAASE,cAAcuC,KAAKnH,OAAO;UAClDqH,WAAW,CAAC,EAAEF,MAAMpH,KAAI,MACtBS,6BAAAA,QAAA,cAAC6B,kBAAAA;YAAiBrC,SAASmH,KAAKnH;YAASD;aACtCA,SAAS,aAAaS,6BAAAA,QAAA,cAACmI,8BAAAA;YAAQ5I,MAAK;YAAUoH;;QAGrD,CAAA;YACAF,oCAAc;UACZ/H,IAAI,GAAGF,cAAAA;UACPe,MAAM;YAAC;YAAW;;UAClBmH,QAAQ,CAACC,aAAgDC,iCAAa1C,uBAASkE,SAASzB,KAAKnH,OAAO;UACpGqH,WAAW,CAAC,EAAEF,MAAMpH,KAAI,MAAOS,6BAAAA,QAAA,cAACsC,aAAAA;YAAY9C,SAASmH,KAAKnH;YAASD;;QACrE,CAAA;;;;YAKAkH,oCAAc;UACZ/H,IAAI,GAAGF,cAAAA;UACPe,MAAM;YAAC;YAAW;;UAClB8I,UAAU;UACV3B,QAAQ,CAACC,aAAkD2B,0BAAa3B,KAAKnH,OAAO;UACpFqH,WAAW,CAAC,EAAEF,MAAMpH,KAAI,MAAE;AACxB,kBAAMgI,aAASgB,uBAAU5B,KAAKnH,OAAO;AACrC,kBAAM,EAAEgJ,EAAC,QAAKC,gCAAejK,cAAAA;AAC7B,gBAAI,CAAC+I,QAAQ;AACX,qBAAOvH,6BAAAA,QAAA,cAACkB,KAAAA;gBAAEhB,WAAWwI;iBAAqBF,EAAE,kCAAA,CAAA;YAC9C;AAEA,mBACExI,6BAAAA,QAAA,cAAC2I,2BAAAA;cACCpB;cACAqB,QAAQjC,KAAKnH;cACbqJ,UAAAA;cACC,GAAItJ,SAAS,kBAAkB;gBAAED,YAAYN;cAAwB;;UAG5E;QACF,CAAA;OACD;;EACL,CAAA;CACD;",
6
- "names": ["import_react", "import_react_ui", "import_react_ui_theme", "PREVIEW_PLUGIN", "meta", "id", "name", "icon", "source", "popoverCard", "defaultCard", "kanbanCardWithoutPoster", "previewTitle", "previewProse", "previewChrome", "ContactCard", "children", "classNames", "role", "subject", "fullName", "image", "organization", "emails", "onOrgClick", "organizationName", "target", "React", "div", "className", "mx", "Avatar", "Root", "Content", "imgSrc", "size", "hue", "Label", "asChild", "h2", "Button", "variant", "onClick", "Icon", "span", "p", "data-variant", "dl", "length", "map", "label", "value", "Fragment", "key", "dt", "dd", "OrganizationCard", "description", "website", "img", "src", "alt", "a", "href", "rel", "ProjectCard", "customEventOptions", "capture", "passive", "handlePreviewLookup", "client", "defaultSpace", "ref", "dxn", "DXN", "parse", "object", "resolveRef", "PreviewPlugin", "definePlugin", "defineModule", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "ClientEvents", "SetupSchema", "ClientCapabilities", "Schema", "DataType", "Person", "Organization", "Startup", "context", "handleDxRefTagActivate", "trigger", "dispatchPromise", "dispatch", "requestCapability", "IntentDispatcher", "Client", "layout", "requestCapabilities", "Layout", "spaceId", "parseId", "workspace", "space", "spaces", "get", "default", "result", "createIntent", "LayoutAction", "UpdatePopover", "part", "options", "state", "anchor", "document", "defaultView", "log", "warn", "cleanup", "addEventListener", "Null", "SetupReactSurface", "ReactSurface", "createSurface", "filter", "data", "isInstanceOf", "component", "useIntentDispatcher", "handleOrgClick", "useCallback", "org", "getSpace", "tablesQuery", "db", "query", "Filter", "schema", "TableType", "run", "currentSpaceOrgTable", "objects", "find", "table", "view", "typename", "anchorId", "Open", "fullyQualifiedId", "Surface", "Project", "position", "isEchoObject", "getSchema", "t", "useTranslation", "descriptionMessage", "Form", "values", "readonly"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const PREVIEW_PLUGIN = 'dxos.org/plugin/preview';\n\nexport const meta: PluginMeta = {\n id: PREVIEW_PLUGIN,\n name: 'Preview',\n icon: 'ph--eye--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-preview',\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type PropsWithChildren } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\n\n// TODO(burdon): Better place for these defs?\nexport type PreviewProps<T extends object> = PropsWithChildren<\n ThemedClassName<{\n subject: T;\n }>\n>;\n\n// TODO(burdon): Update react-ui-card (to use grid) and re-use here.\n// - See https://dxos-storybook.pages.dev/?path=/story/ui-react-ui-card-card--draggable\n// - Standardize Header, actions, image, body, etc.\n// - Support different grid layouts (e.g., image to the side, on top, etc.)\n// - Should co-exist naturally with react-ui-form (e.g., as main content).\n// - Considerations for drag-and-drop.\n/**\n * <Card.Root>\n * <Card.Header>\n * <Card.Title>\n * <Card.Action>\n * </Card.Header>\n * <Card.Body>\n * <Card.Image>\n * <Form />\n * </Card.Body>\n * </Card.Root>\n */\nexport const previewCard = 'popover-max-width rounded-lg overflow-hidden';\nexport const previewTitle = 'text-lg font-medium line-clamp-2';\nexport const previewProse = 'pli-3 mlb-3';\nexport const previewChrome = 'pli-1.5 mlb-1.5 [&_.dx-button]:pli-1.5 [&_.dx-button]:text-start [&_.dx-button]:is-full';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport {\n Capabilities,\n Events,\n LayoutAction,\n Surface,\n contributes,\n createIntent,\n createSurface,\n defineModule,\n definePlugin,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { addEventListener } from '@dxos/async';\nimport { type Client, resolveRef } from '@dxos/client';\nimport {\n Filter,\n fullyQualifiedId,\n getSchema,\n getSpace,\n isEchoObject,\n parseId,\n type ReactiveEchoObject,\n type Space,\n} from '@dxos/client/echo';\nimport { isInstanceOf } from '@dxos/echo-schema';\nimport { DXN } from '@dxos/keys';\nimport { type DxRefTagActivate } from '@dxos/lit-ui';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { useTranslation } from '@dxos/react-ui';\nimport { type PreviewLinkRef, type PreviewLinkTarget } from '@dxos/react-ui-editor';\nimport { Form } from '@dxos/react-ui-form';\nimport { TableType } from '@dxos/react-ui-table';\nimport { descriptionMessage } from '@dxos/react-ui-theme';\nimport { Contact, Organization, Project } from '@dxos/schema';\n\nimport { ContactCard, OrganizationCard, ProjectCard } from './components';\nimport { meta, PREVIEW_PLUGIN } from './meta';\nimport translations from './translations';\n\nconst customEventOptions = { capture: true, passive: false };\n\nconst handlePreviewLookup = async (\n client: Client,\n defaultSpace: Space,\n { ref, label }: PreviewLinkRef,\n): Promise<PreviewLinkTarget | null> => {\n const dxn = DXN.parse(ref);\n if (!dxn) {\n return null;\n }\n\n const object = await resolveRef(client, dxn, defaultSpace);\n return { label, object };\n};\n\nexport const PreviewPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => [contributes(ClientCapabilities.Schema, [Contact, Organization])],\n }),\n defineModule({\n id: `${meta.id}/module/preview-popover`,\n activatesOn: Events.Startup,\n activate: (context) => {\n // TODO(wittjosiah): Factor out lookup handlers to other plugins to make not ECHO-specific.\n const handleDxRefTagActivate = async ({ ref, label, trigger }: DxRefTagActivate) => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const client = context.requestCapability(ClientCapabilities.Client);\n const [layout] = context.requestCapabilities(Capabilities.Layout);\n const { spaceId } = parseId(layout.workspace);\n const space = (spaceId && client.spaces.get(spaceId)) ?? client.spaces.default;\n const result = await handlePreviewLookup(client, space, { ref, label });\n if (!result) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n subject: result.object,\n options: {\n state: true,\n variant: 'virtual',\n anchor: trigger,\n },\n }),\n );\n };\n\n if (!document.defaultView) {\n log.warn('No default view found');\n return [];\n }\n\n const cleanup = addEventListener(\n document.defaultView,\n 'dx-ref-tag-activate',\n handleDxRefTagActivate,\n customEventOptions,\n );\n return contributes(Capabilities.Null, null, () => cleanup());\n },\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: () =>\n // TODO(wittjosiah): Factor out to lazy capabilities like other plugins.\n contributes(Capabilities.ReactSurface, [\n //\n // Specific schema types.\n //\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover`,\n role: 'popover',\n filter: (data): data is { subject: Contact } => isInstanceOf(Contact, data.subject),\n component: ({ data }) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const handleOrgClick = useCallback(\n async (org: Organization) => {\n const space = getSpace(org);\n const tablesQuery = await space?.db.query(Filter.schema(TableType)).run();\n const currentSpaceOrgTable = tablesQuery?.objects.find((table) => {\n return table.view?.target?.query?.typename === Organization.typename;\n });\n await dispatch(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n options: {\n state: false,\n anchorId: '',\n },\n }),\n );\n if (currentSpaceOrgTable) {\n return dispatch(\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [fullyQualifiedId(currentSpaceOrgTable)],\n options: { workspace: space?.id },\n }),\n );\n }\n },\n [dispatch],\n );\n return (\n <ContactCard subject={data.subject} onOrgClick={handleOrgClick}>\n <Surface role='related' data={data} />\n </ContactCard>\n );\n },\n }),\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover`,\n role: 'popover',\n filter: (data): data is { subject: Organization } => isInstanceOf(Organization, data.subject),\n component: ({ data }) => (\n <OrganizationCard subject={data.subject}>\n <Surface role='related' data={data} />\n </OrganizationCard>\n ),\n }),\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover`,\n role: 'popover',\n filter: (data): data is { subject: Project } => isInstanceOf(Project, data.subject),\n component: ({ data }) => <ProjectCard subject={data.subject} />,\n }),\n\n //\n // Fallback for any object.\n //\n createSurface({\n id: `${PREVIEW_PLUGIN}/fallback-popover`,\n role: 'popover',\n position: 'fallback',\n filter: (data): data is { subject: ReactiveEchoObject<any> } => isEchoObject(data.subject),\n component: ({ data }) => {\n const schema = getSchema(data.subject);\n const { t } = useTranslation(PREVIEW_PLUGIN);\n if (!schema) {\n return <p className={descriptionMessage}>{t('unable to create preview message')}</p>;\n }\n\n return <Form schema={schema} values={data.subject} readonly />;\n },\n }),\n ]),\n }),\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment } from 'react';\n\nimport { Icon, Avatar, Button } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type Contact, type Organization } from '@dxos/schema';\n\nimport { type PreviewProps, previewCard, previewTitle, previewProse, previewChrome } from '../types';\n\nexport const ContactCard = ({\n children,\n classNames,\n subject: { fullName, image, organization, emails },\n onOrgClick,\n}: PreviewProps<Contact> & { onOrgClick?: (org: Organization) => void }) => {\n const organizationName = organization && typeof organization === 'object' ? organization.target?.name : organization;\n return (\n <div role='none' className={mx(previewCard, classNames)}>\n <Avatar.Root>\n <div role='group' className={mx(previewProse, 'grid gap-3 grid-cols-[min-content_1fr]')}>\n <Avatar.Content imgSrc={image} icon='ph--user--regular' size={16} hue='neutral' />\n <div role='none' className='bs-min self-center'>\n <Avatar.Label asChild>\n <h2 className={previewTitle}>{fullName}</h2>\n </Avatar.Label>\n </div>\n </div>\n </Avatar.Root>\n {organizationName && (\n <div role='none' className={previewChrome}>\n {typeof organization === 'object' && onOrgClick ? (\n <Button variant='ghost' classNames='gap-2 text-start' onClick={() => onOrgClick(organization.target!)}>\n <Icon icon='ph--buildings--regular' size={5} classNames='text-subdued' />\n <span className='min-is-0 flex-1 truncate'>{organizationName}</span>\n <Icon icon='ph--arrow-right--regular' />\n </Button>\n ) : (\n <p className='dx-button gap-2' data-variant='ghost'>\n <Icon icon='ph--buildings--regular' size={5} classNames='text-subdued' />\n <span className='min-is-0 flex-1 truncate'>{organizationName}</span>\n </p>\n )}\n </div>\n )}\n <dl\n className={mx(\n previewProse,\n 'grid gap-2 grid-cols-[min-content_1fr] [&_dt]:text-subdued [&_dt]:pbs-0.5 [&_dd]:min-is-0',\n )}\n >\n {emails?.length &&\n emails.map(({ label, value }) => (\n <Fragment key={value}>\n <dt>\n <Icon icon='ph--at--regular' size={5} />\n </dt>\n <dd key={value} className='break-words'>\n {value}\n </dd>\n </Fragment>\n ))}\n </dl>\n {children}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Icon } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type Organization } from '@dxos/schema';\n\nimport { type PreviewProps, previewCard, previewTitle, previewProse, previewChrome } from '../types';\n\nexport const OrganizationCard = ({\n children,\n classNames,\n subject: { name, image, description, website },\n}: PreviewProps<Organization>) => {\n return (\n <div role='none' className={mx(previewCard, classNames)}>\n {image ? (\n <img className='aspect-video object-cover is-full bs-auto' src={image} alt={name} />\n ) : (\n <div role='image' className='grid aspect-video place-items-center bg-groupSurface text-subdued'>\n <Icon icon='ph--building-office--regular' size={10} />\n </div>\n )}\n <h2 className={mx(previewTitle, previewProse)}>{name}</h2>\n {description && <p className={mx(previewProse, 'line-clamp-2')}>{description}</p>}\n {website && (\n <div role='none' className={previewChrome}>\n <a className='dx-button dx-focus-ring gap-2' href={website} target='_blank' rel='noreferrer'>\n <Icon icon='ph--link--regular' size={5} classNames='text-subdued' />\n <span className='grow'>{website}</span>\n <Icon icon='ph--arrow-square-out--regular' />\n </a>\n </div>\n )}\n {children}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { mx } from '@dxos/react-ui-theme';\nimport { type Project } from '@dxos/schema';\n\nimport { type PreviewProps, previewCard, previewTitle } from '../types';\n\nexport const ProjectCard = ({ classNames, subject: { name, image, description } }: PreviewProps<Project>) => {\n return (\n <div role='none' className={mx(previewCard, classNames)}>\n {image && <img className='is-full bs-auto' src={image} alt={name} />}\n <h2 className={mx(previewTitle, 'pli-3 mlb-3')}>{name}</h2>\n {description && <p className='pli-3 line-clamp-2 mlb-3'>{description}</p>}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { PREVIEW_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [PREVIEW_PLUGIN]: {\n 'unable to create preview message': 'No preview',\n },\n },\n },\n];\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_react_ui", "import_react_ui_theme", "PREVIEW_PLUGIN", "meta", "id", "name", "icon", "source", "previewCard", "previewTitle", "previewProse", "previewChrome", "ContactCard", "children", "classNames", "subject", "fullName", "image", "organization", "emails", "onOrgClick", "organizationName", "target", "React", "div", "role", "className", "mx", "Avatar", "Root", "Content", "imgSrc", "size", "hue", "Label", "asChild", "h2", "Button", "variant", "onClick", "Icon", "span", "p", "data-variant", "dl", "length", "map", "label", "value", "Fragment", "key", "dt", "dd", "OrganizationCard", "description", "website", "img", "src", "alt", "a", "href", "rel", "ProjectCard", "customEventOptions", "capture", "passive", "handlePreviewLookup", "client", "defaultSpace", "ref", "dxn", "DXN", "parse", "object", "resolveRef", "PreviewPlugin", "definePlugin", "defineModule", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "ClientEvents", "SetupSchema", "ClientCapabilities", "Schema", "Contact", "Organization", "Startup", "context", "handleDxRefTagActivate", "trigger", "dispatchPromise", "dispatch", "requestCapability", "IntentDispatcher", "Client", "layout", "requestCapabilities", "Layout", "spaceId", "parseId", "workspace", "space", "spaces", "get", "default", "result", "createIntent", "LayoutAction", "UpdatePopover", "part", "options", "state", "anchor", "document", "defaultView", "log", "warn", "cleanup", "addEventListener", "Null", "SetupReactSurface", "ReactSurface", "createSurface", "filter", "data", "isInstanceOf", "component", "useIntentDispatcher", "handleOrgClick", "useCallback", "org", "getSpace", "tablesQuery", "db", "query", "Filter", "schema", "TableType", "run", "currentSpaceOrgTable", "objects", "find", "table", "view", "typename", "anchorId", "Open", "fullyQualifiedId", "Surface", "Project", "position", "isEchoObject", "getSchema", "t", "useTranslation", "descriptionMessage", "Form", "values", "readonly"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/plugins/plugin-preview/src/meta.ts":{"bytes":1296,"imports":[],"format":"esm"},"packages/plugins/plugin-preview/src/types.ts":{"bytes":3670,"imports":[],"format":"esm"},"packages/plugins/plugin-preview/src/components/ContactCard.tsx":{"bytes":9429,"imports":[{"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":"packages/plugins/plugin-preview/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-preview/src/components/OrganizationCard.tsx":{"bytes":5727,"imports":[{"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":"packages/plugins/plugin-preview/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-preview/src/components/ProjectCard.tsx":{"bytes":2969,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-preview/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-preview/src/components/index.ts":{"bytes":732,"imports":[{"path":"packages/plugins/plugin-preview/src/components/ContactCard.tsx","kind":"import-statement","original":"./ContactCard"},{"path":"packages/plugins/plugin-preview/src/components/OrganizationCard.tsx","kind":"import-statement","original":"./OrganizationCard"},{"path":"packages/plugins/plugin-preview/src/components/ProjectCard.tsx","kind":"import-statement","original":"./ProjectCard"}],"format":"esm"},"packages/plugins/plugin-preview/src/translations.ts":{"bytes":1091,"imports":[{"path":"packages/plugins/plugin-preview/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-preview/src/PreviewPlugin.tsx":{"bytes":29109,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-table","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-preview/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-preview/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-preview/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/plugin-preview/src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-preview/src/index.ts":{"bytes":681,"imports":[{"path":"packages/plugins/plugin-preview/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-preview/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/plugins/plugin-preview/src/PreviewPlugin.tsx","kind":"import-statement","original":"./PreviewPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-preview/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":25357},"packages/plugins/plugin-preview/dist/lib/node/index.cjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-table","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","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-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-ui-theme","kind":"import-statement","external":true}],"exports":["PREVIEW_PLUGIN","PreviewPlugin","defaultCard","kanbanCardWithoutPoster","meta","popoverCard","previewChrome","previewProse","previewTitle"],"entryPoint":"packages/plugins/plugin-preview/src/index.ts","inputs":{"packages/plugins/plugin-preview/src/meta.ts":{"bytesInOutput":216},"packages/plugins/plugin-preview/src/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-preview/src/types.ts":{"bytesInOutput":348},"packages/plugins/plugin-preview/src/PreviewPlugin.tsx":{"bytesInOutput":7176},"packages/plugins/plugin-preview/src/components/ContactCard.tsx":{"bytesInOutput":2709},"packages/plugins/plugin-preview/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-preview/src/components/OrganizationCard.tsx":{"bytesInOutput":1618},"packages/plugins/plugin-preview/src/components/ProjectCard.tsx":{"bytesInOutput":674},"packages/plugins/plugin-preview/src/translations.ts":{"bytesInOutput":152}},"bytes":13562}}}
1
+ {"inputs":{"packages/plugins/plugin-preview/src/meta.ts":{"bytes":1296,"imports":[],"format":"esm"},"packages/plugins/plugin-preview/src/types.ts":{"bytes":3274,"imports":[],"format":"esm"},"packages/plugins/plugin-preview/src/components/ContactCard.tsx":{"bytes":9227,"imports":[{"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":"packages/plugins/plugin-preview/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-preview/src/components/OrganizationCard.tsx":{"bytes":5532,"imports":[{"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":"packages/plugins/plugin-preview/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-preview/src/components/ProjectCard.tsx":{"bytes":2743,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-preview/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-preview/src/components/index.ts":{"bytes":732,"imports":[{"path":"packages/plugins/plugin-preview/src/components/ContactCard.tsx","kind":"import-statement","original":"./ContactCard"},{"path":"packages/plugins/plugin-preview/src/components/OrganizationCard.tsx","kind":"import-statement","original":"./OrganizationCard"},{"path":"packages/plugins/plugin-preview/src/components/ProjectCard.tsx","kind":"import-statement","original":"./ProjectCard"}],"format":"esm"},"packages/plugins/plugin-preview/src/translations.ts":{"bytes":1091,"imports":[{"path":"packages/plugins/plugin-preview/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-preview/src/PreviewPlugin.tsx":{"bytes":27057,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-table","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-preview/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-preview/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-preview/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/plugins/plugin-preview/src/index.ts":{"bytes":681,"imports":[{"path":"packages/plugins/plugin-preview/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-preview/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/plugins/plugin-preview/src/PreviewPlugin.tsx","kind":"import-statement","original":"./PreviewPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-preview/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":24136},"packages/plugins/plugin-preview/dist/lib/node/index.cjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-table","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","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-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-ui-theme","kind":"import-statement","external":true}],"exports":["PREVIEW_PLUGIN","PreviewPlugin","meta","previewCard","previewChrome","previewProse","previewTitle"],"entryPoint":"packages/plugins/plugin-preview/src/index.ts","inputs":{"packages/plugins/plugin-preview/src/meta.ts":{"bytesInOutput":216},"packages/plugins/plugin-preview/src/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-preview/src/types.ts":{"bytesInOutput":266},"packages/plugins/plugin-preview/src/PreviewPlugin.tsx":{"bytesInOutput":6691},"packages/plugins/plugin-preview/src/components/ContactCard.tsx":{"bytesInOutput":2668},"packages/plugins/plugin-preview/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-preview/src/components/OrganizationCard.tsx":{"bytesInOutput":1584},"packages/plugins/plugin-preview/src/components/ProjectCard.tsx":{"bytesInOutput":633},"packages/plugins/plugin-preview/src/translations.ts":{"bytesInOutput":152}},"bytes":12837}}}
@@ -10,9 +10,7 @@ var meta = {
10
10
  };
11
11
 
12
12
  // packages/plugins/plugin-preview/src/types.ts
13
- var popoverCard = "popover-consistent-width rounded-lg overflow-hidden";
14
- var defaultCard = "";
15
- var kanbanCardWithoutPoster = "pbs-[--rail-action]";
13
+ var previewCard = "popover-max-width rounded-lg overflow-hidden";
16
14
  var previewTitle = "text-lg font-medium line-clamp-2";
17
15
  var previewProse = "pli-3 mlb-3";
18
16
  var previewChrome = "pli-1.5 mlb-1.5 [&_.dx-button]:pli-1.5 [&_.dx-button]:text-start [&_.dx-button]:is-full";
@@ -31,17 +29,17 @@ import { useTranslation } from "@dxos/react-ui";
31
29
  import { Form } from "@dxos/react-ui-form";
32
30
  import { TableType } from "@dxos/react-ui-table";
33
31
  import { descriptionMessage } from "@dxos/react-ui-theme";
34
- import { DataType } from "@dxos/schema";
32
+ import { Contact, Organization, Project } from "@dxos/schema";
35
33
 
36
34
  // packages/plugins/plugin-preview/src/components/ContactCard.tsx
37
35
  import React, { Fragment } from "react";
38
36
  import { Icon, Avatar, Button } from "@dxos/react-ui";
39
37
  import { mx } from "@dxos/react-ui-theme";
40
- var ContactCard = ({ children, classNames, role, subject: { fullName, image, organization, emails }, onOrgClick }) => {
38
+ var ContactCard = ({ children, classNames, subject: { fullName, image, organization, emails }, onOrgClick }) => {
41
39
  const organizationName = organization && typeof organization === "object" ? organization.target?.name : organization;
42
40
  return /* @__PURE__ */ React.createElement("div", {
43
41
  role: "none",
44
- className: mx(role === "popover" ? popoverCard : defaultCard, classNames)
42
+ className: mx(previewCard, classNames)
45
43
  }, /* @__PURE__ */ React.createElement(Avatar.Root, null, /* @__PURE__ */ React.createElement("div", {
46
44
  role: "group",
47
45
  className: mx(previewProse, "grid gap-3 grid-cols-[min-content_1fr]")
@@ -98,17 +96,17 @@ var ContactCard = ({ children, classNames, role, subject: { fullName, image, org
98
96
  import React2 from "react";
99
97
  import { Icon as Icon2 } from "@dxos/react-ui";
100
98
  import { mx as mx2 } from "@dxos/react-ui-theme";
101
- var OrganizationCard = ({ children, classNames, subject: { name, image, description, website }, role }) => {
99
+ var OrganizationCard = ({ children, classNames, subject: { name, image, description, website } }) => {
102
100
  return /* @__PURE__ */ React2.createElement("div", {
103
101
  role: "none",
104
- className: mx2(role === "popover" ? popoverCard : defaultCard, classNames)
102
+ className: mx2(previewCard, classNames)
105
103
  }, image ? /* @__PURE__ */ React2.createElement("img", {
106
104
  className: "aspect-video object-cover is-full bs-auto",
107
105
  src: image,
108
106
  alt: name
109
107
  }) : /* @__PURE__ */ React2.createElement("div", {
110
108
  role: "image",
111
- className: "grid aspect-video place-items-center bg-input text-subdued"
109
+ className: "grid aspect-video place-items-center bg-groupSurface text-subdued"
112
110
  }, /* @__PURE__ */ React2.createElement(Icon2, {
113
111
  icon: "ph--building-office--regular",
114
112
  size: 10
@@ -138,10 +136,10 @@ var OrganizationCard = ({ children, classNames, subject: { name, image, descript
138
136
  // packages/plugins/plugin-preview/src/components/ProjectCard.tsx
139
137
  import React3 from "react";
140
138
  import { mx as mx3 } from "@dxos/react-ui-theme";
141
- var ProjectCard = ({ classNames, role, subject: { name, image, description } }) => {
139
+ var ProjectCard = ({ classNames, subject: { name, image, description } }) => {
142
140
  return /* @__PURE__ */ React3.createElement("div", {
143
141
  role: "none",
144
- className: mx3(role === "popover" ? popoverCard : defaultCard, classNames)
142
+ className: mx3(previewCard, classNames)
145
143
  }, image && /* @__PURE__ */ React3.createElement("img", {
146
144
  className: "is-full bs-auto",
147
145
  src: image,
@@ -192,8 +190,8 @@ var PreviewPlugin = () => definePlugin(meta, [
192
190
  activatesOn: ClientEvents.SetupSchema,
193
191
  activate: () => [
194
192
  contributes(ClientCapabilities.Schema, [
195
- DataType.Person,
196
- DataType.Organization
193
+ Contact,
194
+ Organization
197
195
  ])
198
196
  ]
199
197
  }),
@@ -227,7 +225,7 @@ var PreviewPlugin = () => definePlugin(meta, [
227
225
  if (!document.defaultView) {
228
226
  log.warn("No default view found", void 0, {
229
227
  F: __dxlog_file,
230
- L: 106,
228
+ L: 105,
231
229
  S: void 0,
232
230
  C: (f, a) => f(...a)
233
231
  });
@@ -248,18 +246,15 @@ var PreviewPlugin = () => definePlugin(meta, [
248
246
  //
249
247
  createSurface({
250
248
  id: `${PREVIEW_PLUGIN}/schema-popover`,
251
- role: [
252
- "popover",
253
- "card--kanban"
254
- ],
255
- filter: (data) => isInstanceOf(DataType.Person, data.subject),
256
- component: ({ data, role }) => {
249
+ role: "popover",
250
+ filter: (data) => isInstanceOf(Contact, data.subject),
251
+ component: ({ data }) => {
257
252
  const { dispatchPromise: dispatch } = useIntentDispatcher();
258
253
  const handleOrgClick = useCallback(async (org) => {
259
254
  const space = getSpace(org);
260
255
  const tablesQuery = await space?.db.query(Filter.schema(TableType)).run();
261
256
  const currentSpaceOrgTable = tablesQuery?.objects.find((table) => {
262
- return table.view?.target?.query?.typename === DataType.Organization.typename;
257
+ return table.view?.target?.query?.typename === Organization.typename;
263
258
  });
264
259
  await dispatch(createIntent(LayoutAction.UpdatePopover, {
265
260
  part: "popover",
@@ -284,9 +279,8 @@ var PreviewPlugin = () => definePlugin(meta, [
284
279
  ]);
285
280
  return /* @__PURE__ */ React4.createElement(ContactCard, {
286
281
  subject: data.subject,
287
- onOrgClick: handleOrgClick,
288
- role
289
- }, role === "popover" && /* @__PURE__ */ React4.createElement(Surface, {
282
+ onOrgClick: handleOrgClick
283
+ }, /* @__PURE__ */ React4.createElement(Surface, {
290
284
  role: "related",
291
285
  data
292
286
  }));
@@ -294,29 +288,21 @@ var PreviewPlugin = () => definePlugin(meta, [
294
288
  }),
295
289
  createSurface({
296
290
  id: `${PREVIEW_PLUGIN}/schema-popover`,
297
- role: [
298
- "popover",
299
- "card--kanban"
300
- ],
301
- filter: (data) => isInstanceOf(DataType.Organization, data.subject),
302
- component: ({ data, role }) => /* @__PURE__ */ React4.createElement(OrganizationCard, {
303
- subject: data.subject,
304
- role
305
- }, role === "popover" && /* @__PURE__ */ React4.createElement(Surface, {
291
+ role: "popover",
292
+ filter: (data) => isInstanceOf(Organization, data.subject),
293
+ component: ({ data }) => /* @__PURE__ */ React4.createElement(OrganizationCard, {
294
+ subject: data.subject
295
+ }, /* @__PURE__ */ React4.createElement(Surface, {
306
296
  role: "related",
307
297
  data
308
298
  }))
309
299
  }),
310
300
  createSurface({
311
301
  id: `${PREVIEW_PLUGIN}/schema-popover`,
312
- role: [
313
- "popover",
314
- "card--kanban"
315
- ],
316
- filter: (data) => isInstanceOf(DataType.Project, data.subject),
317
- component: ({ data, role }) => /* @__PURE__ */ React4.createElement(ProjectCard, {
318
- subject: data.subject,
319
- role
302
+ role: "popover",
303
+ filter: (data) => isInstanceOf(Project, data.subject),
304
+ component: ({ data }) => /* @__PURE__ */ React4.createElement(ProjectCard, {
305
+ subject: data.subject
320
306
  })
321
307
  }),
322
308
  //
@@ -324,13 +310,10 @@ var PreviewPlugin = () => definePlugin(meta, [
324
310
  //
325
311
  createSurface({
326
312
  id: `${PREVIEW_PLUGIN}/fallback-popover`,
327
- role: [
328
- "popover",
329
- "card--kanban"
330
- ],
313
+ role: "popover",
331
314
  position: "fallback",
332
315
  filter: (data) => isEchoObject(data.subject),
333
- component: ({ data, role }) => {
316
+ component: ({ data }) => {
334
317
  const schema = getSchema(data.subject);
335
318
  const { t } = useTranslation(PREVIEW_PLUGIN);
336
319
  if (!schema) {
@@ -341,10 +324,7 @@ var PreviewPlugin = () => definePlugin(meta, [
341
324
  return /* @__PURE__ */ React4.createElement(Form, {
342
325
  schema,
343
326
  values: data.subject,
344
- readonly: true,
345
- ...role === "card--kanban" && {
346
- classNames: kanbanCardWithoutPoster
347
- }
327
+ readonly: true
348
328
  });
349
329
  }
350
330
  })
@@ -355,10 +335,8 @@ var PreviewPlugin = () => definePlugin(meta, [
355
335
  export {
356
336
  PREVIEW_PLUGIN,
357
337
  PreviewPlugin,
358
- defaultCard,
359
- kanbanCardWithoutPoster,
360
338
  meta,
361
- popoverCard,
339
+ previewCard,
362
340
  previewChrome,
363
341
  previewProse,
364
342
  previewTitle
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/meta.ts", "../../../src/types.ts", "../../../src/PreviewPlugin.tsx", "../../../src/components/ContactCard.tsx", "../../../src/components/OrganizationCard.tsx", "../../../src/components/ProjectCard.tsx", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const PREVIEW_PLUGIN = 'dxos.org/plugin/preview';\n\nexport const meta: PluginMeta = {\n id: PREVIEW_PLUGIN,\n name: 'Preview',\n icon: 'ph--eye--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-preview',\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type PropsWithChildren } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\n\n// TODO(burdon): Better place for these defs?\nexport type PreviewProps<T extends object> = PropsWithChildren<\n ThemedClassName<{\n subject: T;\n role: string;\n }>\n>;\n\n// TODO(burdon): Update react-ui-card (to use grid) and re-use here.\n// - See https://dxos-storybook.pages.dev/?path=/story/ui-react-ui-card-card--draggable\n// - Standardize Header, actions, image, body, etc.\n// - Support different grid layouts (e.g., image to the side, on top, etc.)\n// - Should co-exist naturally with react-ui-form (e.g., as main content).\n// - Considerations for drag-and-drop.\n/**\n * <Card.Root>\n * <Card.Header>\n * <Card.Title>\n * <Card.Action>\n * </Card.Header>\n * <Card.Body>\n * <Card.Image>\n * <Form />\n * </Card.Body>\n * </Card.Root>\n */\nexport const popoverCard = 'popover-consistent-width rounded-lg overflow-hidden';\nexport const defaultCard = '';\nexport const kanbanCardWithoutPoster = 'pbs-[--rail-action]';\nexport const previewTitle = 'text-lg font-medium line-clamp-2';\nexport const previewProse = 'pli-3 mlb-3';\nexport const previewChrome = 'pli-1.5 mlb-1.5 [&_.dx-button]:pli-1.5 [&_.dx-button]:text-start [&_.dx-button]:is-full';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport {\n Capabilities,\n Events,\n LayoutAction,\n Surface,\n contributes,\n createIntent,\n createSurface,\n defineModule,\n definePlugin,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { addEventListener } from '@dxos/async';\nimport { type Client, resolveRef } from '@dxos/client';\nimport {\n Filter,\n fullyQualifiedId,\n getSchema,\n getSpace,\n isEchoObject,\n parseId,\n type AnyLiveObject,\n type Space,\n} from '@dxos/client/echo';\nimport { isInstanceOf } from '@dxos/echo-schema';\nimport { DXN } from '@dxos/keys';\nimport { type DxRefTagActivate } from '@dxos/lit-ui';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { useTranslation } from '@dxos/react-ui';\nimport { type PreviewLinkRef, type PreviewLinkTarget } from '@dxos/react-ui-editor';\nimport { Form } from '@dxos/react-ui-form';\nimport { TableType } from '@dxos/react-ui-table';\nimport { descriptionMessage } from '@dxos/react-ui-theme';\nimport { DataType } from '@dxos/schema';\n\nimport { ContactCard, OrganizationCard, ProjectCard } from './components';\nimport { meta, PREVIEW_PLUGIN } from './meta';\nimport translations from './translations';\nimport { kanbanCardWithoutPoster } from './types';\n\nconst customEventOptions = { capture: true, passive: false };\n\nconst handlePreviewLookup = async (\n client: Client,\n defaultSpace: Space,\n { ref, label }: PreviewLinkRef,\n): Promise<PreviewLinkTarget | null> => {\n const dxn = DXN.parse(ref);\n if (!dxn) {\n return null;\n }\n\n const object = await resolveRef(client, dxn, defaultSpace);\n return { label, object };\n};\n\nexport const PreviewPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => [contributes(ClientCapabilities.Schema, [DataType.Person, DataType.Organization])],\n }),\n defineModule({\n id: `${meta.id}/module/preview-popover`,\n activatesOn: Events.Startup,\n activate: (context) => {\n // TODO(wittjosiah): Factor out lookup handlers to other plugins to make not ECHO-specific.\n const handleDxRefTagActivate = async ({ ref, label, trigger }: DxRefTagActivate) => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const client = context.requestCapability(ClientCapabilities.Client);\n const [layout] = context.requestCapabilities(Capabilities.Layout);\n const { spaceId } = parseId(layout.workspace);\n const space = (spaceId && client.spaces.get(spaceId)) ?? client.spaces.default;\n const result = await handlePreviewLookup(client, space, { ref, label });\n if (!result) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n subject: result.object,\n options: {\n state: true,\n variant: 'virtual',\n anchor: trigger,\n },\n }),\n );\n };\n\n if (!document.defaultView) {\n log.warn('No default view found');\n return [];\n }\n\n const cleanup = addEventListener(\n document.defaultView,\n 'dx-ref-tag-activate',\n handleDxRefTagActivate,\n customEventOptions,\n );\n return contributes(Capabilities.Null, null, () => cleanup());\n },\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: () =>\n // TODO(wittjosiah): Factor out to lazy capabilities like other plugins.\n contributes(Capabilities.ReactSurface, [\n //\n // Specific schema types.\n //\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover`,\n role: ['popover', 'card--kanban'],\n filter: (data): data is { subject: DataType.Person } => isInstanceOf(DataType.Person, data.subject),\n component: ({ data, role }) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const handleOrgClick = useCallback(\n async (org: DataType.Organization) => {\n const space = getSpace(org);\n const tablesQuery = await space?.db.query(Filter.schema(TableType)).run();\n const currentSpaceOrgTable = tablesQuery?.objects.find((table) => {\n return table.view?.target?.query?.typename === DataType.Organization.typename;\n });\n await dispatch(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n options: {\n state: false,\n anchorId: '',\n },\n }),\n );\n if (currentSpaceOrgTable) {\n return dispatch(\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [fullyQualifiedId(currentSpaceOrgTable)],\n options: { workspace: space?.id },\n }),\n );\n }\n },\n [dispatch],\n );\n return (\n <ContactCard subject={data.subject} onOrgClick={handleOrgClick} role={role}>\n {role === 'popover' && <Surface role='related' data={data} />}\n </ContactCard>\n );\n },\n }),\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover`,\n role: ['popover', 'card--kanban'],\n filter: (data): data is { subject: DataType.Organization } =>\n isInstanceOf(DataType.Organization, data.subject),\n component: ({ data, role }) => (\n <OrganizationCard subject={data.subject} role={role}>\n {role === 'popover' && <Surface role='related' data={data} />}\n </OrganizationCard>\n ),\n }),\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover`,\n role: ['popover', 'card--kanban'],\n filter: (data): data is { subject: DataType.Project } => isInstanceOf(DataType.Project, data.subject),\n component: ({ data, role }) => <ProjectCard subject={data.subject} role={role} />,\n }),\n\n //\n // Fallback for any object.\n //\n createSurface({\n id: `${PREVIEW_PLUGIN}/fallback-popover`,\n role: ['popover', 'card--kanban'],\n position: 'fallback',\n filter: (data): data is { subject: AnyLiveObject<any> } => isEchoObject(data.subject),\n component: ({ data, role }) => {\n const schema = getSchema(data.subject);\n const { t } = useTranslation(PREVIEW_PLUGIN);\n if (!schema) {\n return <p className={descriptionMessage}>{t('unable to create preview message')}</p>;\n }\n\n return (\n <Form\n schema={schema}\n values={data.subject}\n readonly\n {...(role === 'card--kanban' && { classNames: kanbanCardWithoutPoster })}\n />\n );\n },\n }),\n ]),\n }),\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment } from 'react';\n\nimport { Icon, Avatar, Button } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { type PreviewProps, popoverCard, previewTitle, previewProse, previewChrome, defaultCard } from '../types';\n\nexport const ContactCard = ({\n children,\n classNames,\n role,\n subject: { fullName, image, organization, emails },\n onOrgClick,\n}: PreviewProps<DataType.Person> & { onOrgClick?: (org: DataType.Organization) => void }) => {\n const organizationName = organization && typeof organization === 'object' ? organization.target?.name : organization;\n return (\n <div role='none' className={mx(role === 'popover' ? popoverCard : defaultCard, classNames)}>\n <Avatar.Root>\n <div role='group' className={mx(previewProse, 'grid gap-3 grid-cols-[min-content_1fr]')}>\n <Avatar.Content imgSrc={image} icon='ph--user--regular' size={16} hue='neutral' />\n <div role='none' className='bs-min self-center'>\n <Avatar.Label asChild>\n <h2 className={previewTitle}>{fullName}</h2>\n </Avatar.Label>\n </div>\n </div>\n </Avatar.Root>\n {organizationName && (\n <div role='none' className={previewChrome}>\n {typeof organization === 'object' && onOrgClick ? (\n <Button variant='ghost' classNames='gap-2 text-start' onClick={() => onOrgClick(organization.target!)}>\n <Icon icon='ph--buildings--regular' size={5} classNames='text-subdued' />\n <span className='min-is-0 flex-1 truncate'>{organizationName}</span>\n <Icon icon='ph--arrow-right--regular' />\n </Button>\n ) : (\n <p className='dx-button gap-2' data-variant='ghost'>\n <Icon icon='ph--buildings--regular' size={5} classNames='text-subdued' />\n <span className='min-is-0 flex-1 truncate'>{organizationName}</span>\n </p>\n )}\n </div>\n )}\n <dl\n className={mx(\n previewProse,\n 'grid gap-2 grid-cols-[min-content_1fr] [&_dt]:text-subdued [&_dt]:pbs-0.5 [&_dd]:min-is-0',\n )}\n >\n {emails?.length &&\n emails.map(({ label, value }) => (\n <Fragment key={value}>\n <dt>\n <Icon icon='ph--at--regular' size={5} />\n </dt>\n <dd key={value} className='break-words'>\n {value}\n </dd>\n </Fragment>\n ))}\n </dl>\n {children}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Icon } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { type PreviewProps, popoverCard, previewTitle, previewProse, previewChrome, defaultCard } from '../types';\n\nexport const OrganizationCard = ({\n children,\n classNames,\n subject: { name, image, description, website },\n role,\n}: PreviewProps<DataType.Organization>) => {\n return (\n <div role='none' className={mx(role === 'popover' ? popoverCard : defaultCard, classNames)}>\n {image ? (\n <img className='aspect-video object-cover is-full bs-auto' src={image} alt={name} />\n ) : (\n <div role='image' className='grid aspect-video place-items-center bg-input text-subdued'>\n <Icon icon='ph--building-office--regular' size={10} />\n </div>\n )}\n <h2 className={mx(previewTitle, previewProse)}>{name}</h2>\n {description && <p className={mx(previewProse, 'line-clamp-2')}>{description}</p>}\n {website && (\n <div role='none' className={previewChrome}>\n <a className='dx-button dx-focus-ring gap-2' href={website} target='_blank' rel='noreferrer'>\n <Icon icon='ph--link--regular' size={5} classNames='text-subdued' />\n <span className='grow'>{website}</span>\n <Icon icon='ph--arrow-square-out--regular' />\n </a>\n </div>\n )}\n {children}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { type PreviewProps, popoverCard, previewTitle, defaultCard } from '../types';\n\nexport const ProjectCard = ({\n classNames,\n role,\n subject: { name, image, description },\n}: PreviewProps<DataType.Project>) => {\n return (\n <div role='none' className={mx(role === 'popover' ? popoverCard : defaultCard, classNames)}>\n {image && <img className='is-full bs-auto' src={image} alt={name} />}\n <h2 className={mx(previewTitle, 'pli-3 mlb-3')}>{name}</h2>\n {description && <p className='pli-3 line-clamp-2 mlb-3'>{description}</p>}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { PREVIEW_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [PREVIEW_PLUGIN]: {\n 'unable to create preview message': 'No preview',\n },\n },\n },\n];\n"],
5
- "mappings": "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",
6
- "names": ["PREVIEW_PLUGIN", "meta", "id", "name", "icon", "source", "popoverCard", "defaultCard", "kanbanCardWithoutPoster", "previewTitle", "previewProse", "previewChrome", "React", "useCallback", "Capabilities", "Events", "LayoutAction", "Surface", "contributes", "createIntent", "createSurface", "defineModule", "definePlugin", "useIntentDispatcher", "addEventListener", "resolveRef", "Filter", "fullyQualifiedId", "getSchema", "getSpace", "isEchoObject", "parseId", "isInstanceOf", "DXN", "log", "ClientCapabilities", "ClientEvents", "useTranslation", "Form", "TableType", "descriptionMessage", "DataType", "React", "Fragment", "Icon", "Avatar", "Button", "mx", "ContactCard", "children", "classNames", "role", "subject", "fullName", "image", "organization", "emails", "onOrgClick", "organizationName", "target", "name", "div", "className", "mx", "popoverCard", "defaultCard", "Avatar", "Root", "previewProse", "Content", "imgSrc", "icon", "size", "hue", "Label", "asChild", "h2", "previewTitle", "previewChrome", "Button", "variant", "onClick", "Icon", "span", "p", "data-variant", "dl", "length", "map", "label", "value", "Fragment", "key", "dt", "dd", "React", "Icon", "mx", "OrganizationCard", "children", "classNames", "subject", "name", "image", "description", "website", "role", "React", "div", "className", "mx", "popoverCard", "defaultCard", "img", "src", "alt", "Icon", "icon", "size", "h2", "previewTitle", "previewProse", "p", "previewChrome", "a", "href", "target", "rel", "span", "React", "mx", "ProjectCard", "classNames", "role", "subject", "name", "image", "description", "React", "div", "className", "mx", "popoverCard", "defaultCard", "img", "src", "alt", "h2", "previewTitle", "p", "PREVIEW_PLUGIN", "customEventOptions", "capture", "passive", "handlePreviewLookup", "client", "defaultSpace", "ref", "label", "dxn", "DXN", "parse", "object", "resolveRef", "PreviewPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "ClientEvents", "SetupSchema", "ClientCapabilities", "Schema", "DataType", "Person", "Organization", "Startup", "context", "handleDxRefTagActivate", "trigger", "dispatchPromise", "dispatch", "requestCapability", "IntentDispatcher", "Client", "layout", "requestCapabilities", "Layout", "spaceId", "parseId", "workspace", "space", "spaces", "get", "default", "result", "createIntent", "LayoutAction", "UpdatePopover", "part", "subject", "options", "state", "variant", "anchor", "document", "defaultView", "log", "warn", "cleanup", "addEventListener", "Null", "SetupReactSurface", "ReactSurface", "createSurface", "PREVIEW_PLUGIN", "role", "filter", "data", "isInstanceOf", "component", "useIntentDispatcher", "handleOrgClick", "useCallback", "org", "getSpace", "tablesQuery", "db", "query", "Filter", "schema", "TableType", "run", "currentSpaceOrgTable", "objects", "find", "table", "view", "target", "typename", "anchorId", "Open", "fullyQualifiedId", "React", "ContactCard", "onOrgClick", "Surface", "OrganizationCard", "Project", "ProjectCard", "position", "isEchoObject", "getSchema", "t", "useTranslation", "p", "className", "descriptionMessage", "Form", "values", "readonly", "classNames", "kanbanCardWithoutPoster"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const PREVIEW_PLUGIN = 'dxos.org/plugin/preview';\n\nexport const meta: PluginMeta = {\n id: PREVIEW_PLUGIN,\n name: 'Preview',\n icon: 'ph--eye--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-preview',\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type PropsWithChildren } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\n\n// TODO(burdon): Better place for these defs?\nexport type PreviewProps<T extends object> = PropsWithChildren<\n ThemedClassName<{\n subject: T;\n }>\n>;\n\n// TODO(burdon): Update react-ui-card (to use grid) and re-use here.\n// - See https://dxos-storybook.pages.dev/?path=/story/ui-react-ui-card-card--draggable\n// - Standardize Header, actions, image, body, etc.\n// - Support different grid layouts (e.g., image to the side, on top, etc.)\n// - Should co-exist naturally with react-ui-form (e.g., as main content).\n// - Considerations for drag-and-drop.\n/**\n * <Card.Root>\n * <Card.Header>\n * <Card.Title>\n * <Card.Action>\n * </Card.Header>\n * <Card.Body>\n * <Card.Image>\n * <Form />\n * </Card.Body>\n * </Card.Root>\n */\nexport const previewCard = 'popover-max-width rounded-lg overflow-hidden';\nexport const previewTitle = 'text-lg font-medium line-clamp-2';\nexport const previewProse = 'pli-3 mlb-3';\nexport const previewChrome = 'pli-1.5 mlb-1.5 [&_.dx-button]:pli-1.5 [&_.dx-button]:text-start [&_.dx-button]:is-full';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport {\n Capabilities,\n Events,\n LayoutAction,\n Surface,\n contributes,\n createIntent,\n createSurface,\n defineModule,\n definePlugin,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { addEventListener } from '@dxos/async';\nimport { type Client, resolveRef } from '@dxos/client';\nimport {\n Filter,\n fullyQualifiedId,\n getSchema,\n getSpace,\n isEchoObject,\n parseId,\n type ReactiveEchoObject,\n type Space,\n} from '@dxos/client/echo';\nimport { isInstanceOf } from '@dxos/echo-schema';\nimport { DXN } from '@dxos/keys';\nimport { type DxRefTagActivate } from '@dxos/lit-ui';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { useTranslation } from '@dxos/react-ui';\nimport { type PreviewLinkRef, type PreviewLinkTarget } from '@dxos/react-ui-editor';\nimport { Form } from '@dxos/react-ui-form';\nimport { TableType } from '@dxos/react-ui-table';\nimport { descriptionMessage } from '@dxos/react-ui-theme';\nimport { Contact, Organization, Project } from '@dxos/schema';\n\nimport { ContactCard, OrganizationCard, ProjectCard } from './components';\nimport { meta, PREVIEW_PLUGIN } from './meta';\nimport translations from './translations';\n\nconst customEventOptions = { capture: true, passive: false };\n\nconst handlePreviewLookup = async (\n client: Client,\n defaultSpace: Space,\n { ref, label }: PreviewLinkRef,\n): Promise<PreviewLinkTarget | null> => {\n const dxn = DXN.parse(ref);\n if (!dxn) {\n return null;\n }\n\n const object = await resolveRef(client, dxn, defaultSpace);\n return { label, object };\n};\n\nexport const PreviewPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => [contributes(ClientCapabilities.Schema, [Contact, Organization])],\n }),\n defineModule({\n id: `${meta.id}/module/preview-popover`,\n activatesOn: Events.Startup,\n activate: (context) => {\n // TODO(wittjosiah): Factor out lookup handlers to other plugins to make not ECHO-specific.\n const handleDxRefTagActivate = async ({ ref, label, trigger }: DxRefTagActivate) => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const client = context.requestCapability(ClientCapabilities.Client);\n const [layout] = context.requestCapabilities(Capabilities.Layout);\n const { spaceId } = parseId(layout.workspace);\n const space = (spaceId && client.spaces.get(spaceId)) ?? client.spaces.default;\n const result = await handlePreviewLookup(client, space, { ref, label });\n if (!result) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n subject: result.object,\n options: {\n state: true,\n variant: 'virtual',\n anchor: trigger,\n },\n }),\n );\n };\n\n if (!document.defaultView) {\n log.warn('No default view found');\n return [];\n }\n\n const cleanup = addEventListener(\n document.defaultView,\n 'dx-ref-tag-activate',\n handleDxRefTagActivate,\n customEventOptions,\n );\n return contributes(Capabilities.Null, null, () => cleanup());\n },\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: () =>\n // TODO(wittjosiah): Factor out to lazy capabilities like other plugins.\n contributes(Capabilities.ReactSurface, [\n //\n // Specific schema types.\n //\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover`,\n role: 'popover',\n filter: (data): data is { subject: Contact } => isInstanceOf(Contact, data.subject),\n component: ({ data }) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const handleOrgClick = useCallback(\n async (org: Organization) => {\n const space = getSpace(org);\n const tablesQuery = await space?.db.query(Filter.schema(TableType)).run();\n const currentSpaceOrgTable = tablesQuery?.objects.find((table) => {\n return table.view?.target?.query?.typename === Organization.typename;\n });\n await dispatch(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n options: {\n state: false,\n anchorId: '',\n },\n }),\n );\n if (currentSpaceOrgTable) {\n return dispatch(\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [fullyQualifiedId(currentSpaceOrgTable)],\n options: { workspace: space?.id },\n }),\n );\n }\n },\n [dispatch],\n );\n return (\n <ContactCard subject={data.subject} onOrgClick={handleOrgClick}>\n <Surface role='related' data={data} />\n </ContactCard>\n );\n },\n }),\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover`,\n role: 'popover',\n filter: (data): data is { subject: Organization } => isInstanceOf(Organization, data.subject),\n component: ({ data }) => (\n <OrganizationCard subject={data.subject}>\n <Surface role='related' data={data} />\n </OrganizationCard>\n ),\n }),\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover`,\n role: 'popover',\n filter: (data): data is { subject: Project } => isInstanceOf(Project, data.subject),\n component: ({ data }) => <ProjectCard subject={data.subject} />,\n }),\n\n //\n // Fallback for any object.\n //\n createSurface({\n id: `${PREVIEW_PLUGIN}/fallback-popover`,\n role: 'popover',\n position: 'fallback',\n filter: (data): data is { subject: ReactiveEchoObject<any> } => isEchoObject(data.subject),\n component: ({ data }) => {\n const schema = getSchema(data.subject);\n const { t } = useTranslation(PREVIEW_PLUGIN);\n if (!schema) {\n return <p className={descriptionMessage}>{t('unable to create preview message')}</p>;\n }\n\n return <Form schema={schema} values={data.subject} readonly />;\n },\n }),\n ]),\n }),\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment } from 'react';\n\nimport { Icon, Avatar, Button } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type Contact, type Organization } from '@dxos/schema';\n\nimport { type PreviewProps, previewCard, previewTitle, previewProse, previewChrome } from '../types';\n\nexport const ContactCard = ({\n children,\n classNames,\n subject: { fullName, image, organization, emails },\n onOrgClick,\n}: PreviewProps<Contact> & { onOrgClick?: (org: Organization) => void }) => {\n const organizationName = organization && typeof organization === 'object' ? organization.target?.name : organization;\n return (\n <div role='none' className={mx(previewCard, classNames)}>\n <Avatar.Root>\n <div role='group' className={mx(previewProse, 'grid gap-3 grid-cols-[min-content_1fr]')}>\n <Avatar.Content imgSrc={image} icon='ph--user--regular' size={16} hue='neutral' />\n <div role='none' className='bs-min self-center'>\n <Avatar.Label asChild>\n <h2 className={previewTitle}>{fullName}</h2>\n </Avatar.Label>\n </div>\n </div>\n </Avatar.Root>\n {organizationName && (\n <div role='none' className={previewChrome}>\n {typeof organization === 'object' && onOrgClick ? (\n <Button variant='ghost' classNames='gap-2 text-start' onClick={() => onOrgClick(organization.target!)}>\n <Icon icon='ph--buildings--regular' size={5} classNames='text-subdued' />\n <span className='min-is-0 flex-1 truncate'>{organizationName}</span>\n <Icon icon='ph--arrow-right--regular' />\n </Button>\n ) : (\n <p className='dx-button gap-2' data-variant='ghost'>\n <Icon icon='ph--buildings--regular' size={5} classNames='text-subdued' />\n <span className='min-is-0 flex-1 truncate'>{organizationName}</span>\n </p>\n )}\n </div>\n )}\n <dl\n className={mx(\n previewProse,\n 'grid gap-2 grid-cols-[min-content_1fr] [&_dt]:text-subdued [&_dt]:pbs-0.5 [&_dd]:min-is-0',\n )}\n >\n {emails?.length &&\n emails.map(({ label, value }) => (\n <Fragment key={value}>\n <dt>\n <Icon icon='ph--at--regular' size={5} />\n </dt>\n <dd key={value} className='break-words'>\n {value}\n </dd>\n </Fragment>\n ))}\n </dl>\n {children}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Icon } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type Organization } from '@dxos/schema';\n\nimport { type PreviewProps, previewCard, previewTitle, previewProse, previewChrome } from '../types';\n\nexport const OrganizationCard = ({\n children,\n classNames,\n subject: { name, image, description, website },\n}: PreviewProps<Organization>) => {\n return (\n <div role='none' className={mx(previewCard, classNames)}>\n {image ? (\n <img className='aspect-video object-cover is-full bs-auto' src={image} alt={name} />\n ) : (\n <div role='image' className='grid aspect-video place-items-center bg-groupSurface text-subdued'>\n <Icon icon='ph--building-office--regular' size={10} />\n </div>\n )}\n <h2 className={mx(previewTitle, previewProse)}>{name}</h2>\n {description && <p className={mx(previewProse, 'line-clamp-2')}>{description}</p>}\n {website && (\n <div role='none' className={previewChrome}>\n <a className='dx-button dx-focus-ring gap-2' href={website} target='_blank' rel='noreferrer'>\n <Icon icon='ph--link--regular' size={5} classNames='text-subdued' />\n <span className='grow'>{website}</span>\n <Icon icon='ph--arrow-square-out--regular' />\n </a>\n </div>\n )}\n {children}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { mx } from '@dxos/react-ui-theme';\nimport { type Project } from '@dxos/schema';\n\nimport { type PreviewProps, previewCard, previewTitle } from '../types';\n\nexport const ProjectCard = ({ classNames, subject: { name, image, description } }: PreviewProps<Project>) => {\n return (\n <div role='none' className={mx(previewCard, classNames)}>\n {image && <img className='is-full bs-auto' src={image} alt={name} />}\n <h2 className={mx(previewTitle, 'pli-3 mlb-3')}>{name}</h2>\n {description && <p className='pli-3 line-clamp-2 mlb-3'>{description}</p>}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { PREVIEW_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [PREVIEW_PLUGIN]: {\n 'unable to create preview message': 'No preview',\n },\n },\n },\n];\n"],
5
+ "mappings": "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",
6
+ "names": ["PREVIEW_PLUGIN", "meta", "id", "name", "icon", "source", "previewCard", "previewTitle", "previewProse", "previewChrome", "React", "useCallback", "Capabilities", "Events", "LayoutAction", "Surface", "contributes", "createIntent", "createSurface", "defineModule", "definePlugin", "useIntentDispatcher", "addEventListener", "resolveRef", "Filter", "fullyQualifiedId", "getSchema", "getSpace", "isEchoObject", "parseId", "isInstanceOf", "DXN", "log", "ClientCapabilities", "ClientEvents", "useTranslation", "Form", "TableType", "descriptionMessage", "Contact", "Organization", "Project", "React", "Fragment", "Icon", "Avatar", "Button", "mx", "ContactCard", "children", "classNames", "subject", "fullName", "image", "organization", "emails", "onOrgClick", "organizationName", "target", "name", "div", "role", "className", "mx", "previewCard", "Avatar", "Root", "previewProse", "Content", "imgSrc", "icon", "size", "hue", "Label", "asChild", "h2", "previewTitle", "previewChrome", "Button", "variant", "onClick", "Icon", "span", "p", "data-variant", "dl", "length", "map", "label", "value", "Fragment", "key", "dt", "dd", "React", "Icon", "mx", "OrganizationCard", "children", "classNames", "subject", "name", "image", "description", "website", "React", "div", "role", "className", "mx", "previewCard", "img", "src", "alt", "Icon", "icon", "size", "h2", "previewTitle", "previewProse", "p", "previewChrome", "a", "href", "target", "rel", "span", "React", "mx", "ProjectCard", "classNames", "subject", "name", "image", "description", "React", "div", "role", "className", "mx", "previewCard", "img", "src", "alt", "h2", "previewTitle", "p", "PREVIEW_PLUGIN", "customEventOptions", "capture", "passive", "handlePreviewLookup", "client", "defaultSpace", "ref", "label", "dxn", "DXN", "parse", "object", "resolveRef", "PreviewPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "ClientEvents", "SetupSchema", "ClientCapabilities", "Schema", "Contact", "Organization", "Startup", "context", "handleDxRefTagActivate", "trigger", "dispatchPromise", "dispatch", "requestCapability", "IntentDispatcher", "Client", "layout", "requestCapabilities", "Layout", "spaceId", "parseId", "workspace", "space", "spaces", "get", "default", "result", "createIntent", "LayoutAction", "UpdatePopover", "part", "subject", "options", "state", "variant", "anchor", "document", "defaultView", "log", "warn", "cleanup", "addEventListener", "Null", "SetupReactSurface", "ReactSurface", "createSurface", "PREVIEW_PLUGIN", "role", "filter", "data", "isInstanceOf", "component", "useIntentDispatcher", "handleOrgClick", "useCallback", "org", "getSpace", "tablesQuery", "db", "query", "Filter", "schema", "TableType", "run", "currentSpaceOrgTable", "objects", "find", "table", "view", "target", "typename", "anchorId", "Open", "fullyQualifiedId", "React", "ContactCard", "onOrgClick", "Surface", "OrganizationCard", "Project", "ProjectCard", "position", "isEchoObject", "getSchema", "t", "useTranslation", "p", "className", "descriptionMessage", "Form", "values", "readonly"]
7
7
  }