@dxos/plugin-preview 0.8.2-staging.4d6ad0f → 0.8.3-main.672df60
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/chunk-LFAK2TMG.mjs +14 -0
- package/dist/lib/browser/chunk-LFAK2TMG.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +5 -17
- package/dist/lib/browser/index.mjs.map +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{preview-popover-S3OY3CFZ.mjs → preview-popover-2AWEEK32.mjs} +13 -9
- package/dist/lib/browser/preview-popover-2AWEEK32.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-XDHP6EN7.mjs → react-surface-FGMSZTOE.mjs} +46 -67
- package/dist/lib/browser/react-surface-FGMSZTOE.mjs.map +7 -0
- package/dist/lib/node/{chunk-VFSOM2B4.cjs → chunk-XGHMBEIV.cjs} +6 -24
- package/dist/lib/node/chunk-XGHMBEIV.cjs.map +7 -0
- package/dist/lib/node/index.cjs +12 -24
- package/dist/lib/node/index.cjs.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{preview-popover-GPBOHU5E.cjs → preview-popover-K4E7UEQU.cjs} +16 -12
- package/dist/lib/node/preview-popover-K4E7UEQU.cjs.map +7 -0
- package/dist/lib/node/{react-surface-CPAQ7ZYR.cjs → react-surface-FI63RLWN.cjs} +53 -68
- package/dist/lib/node/react-surface-FI63RLWN.cjs.map +7 -0
- package/dist/lib/node-esm/chunk-7BPXNL44.mjs +16 -0
- package/dist/lib/node-esm/chunk-7BPXNL44.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +5 -17
- package/dist/lib/node-esm/index.mjs.map +1 -1
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{preview-popover-EQAEYYDT.mjs → preview-popover-W5FPZQM3.mjs} +13 -9
- package/dist/lib/node-esm/preview-popover-W5FPZQM3.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-QJRHN4PN.mjs → react-surface-EHIW3IEA.mjs} +46 -67
- package/dist/lib/node-esm/react-surface-EHIW3IEA.mjs.map +7 -0
- package/dist/types/src/Preview.stories.d.ts +8 -9
- package/dist/types/src/Preview.stories.d.ts.map +1 -1
- package/dist/types/src/capabilities/preview-popover.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/ContactCard.d.ts +1 -1
- package/dist/types/src/components/ContactCard.d.ts.map +1 -1
- package/dist/types/src/components/OrganizationCard.d.ts +1 -1
- package/dist/types/src/components/OrganizationCard.d.ts.map +1 -1
- package/dist/types/src/components/ProjectCard.d.ts +1 -1
- package/dist/types/src/components/ProjectCard.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +3 -22
- package/dist/types/src/types.d.ts.map +1 -1
- package/package.json +20 -19
- package/src/Preview.stories.tsx +3 -2
- package/src/capabilities/preview-popover.ts +9 -5
- package/src/capabilities/react-surface.tsx +6 -11
- package/src/components/ContactCard.tsx +11 -11
- package/src/components/OrganizationCard.tsx +9 -16
- package/src/components/ProjectCard.tsx +8 -12
- package/src/types.ts +4 -33
- package/dist/lib/browser/chunk-B2VK6GFP.mjs +0 -28
- package/dist/lib/browser/chunk-B2VK6GFP.mjs.map +0 -7
- package/dist/lib/browser/preview-popover-S3OY3CFZ.mjs.map +0 -7
- package/dist/lib/browser/react-surface-XDHP6EN7.mjs.map +0 -7
- package/dist/lib/node/chunk-VFSOM2B4.cjs.map +0 -7
- package/dist/lib/node/preview-popover-GPBOHU5E.cjs.map +0 -7
- package/dist/lib/node/react-surface-CPAQ7ZYR.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-PYKIS3N7.mjs +0 -30
- package/dist/lib/node-esm/chunk-PYKIS3N7.mjs.map +0 -7
- package/dist/lib/node-esm/preview-popover-EQAEYYDT.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-QJRHN4PN.mjs.map +0 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-preview",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3-main.672df60",
|
|
4
4
|
"description": "Preview plugin",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -25,30 +25,31 @@
|
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@preact-signals/safe-react": "^0.9.0",
|
|
27
27
|
"effect": "3.14.21",
|
|
28
|
-
"@dxos/app-framework": "0.8.
|
|
29
|
-
"@dxos/
|
|
30
|
-
"@dxos/
|
|
31
|
-
"@dxos/echo": "0.8.
|
|
32
|
-
"@dxos/
|
|
33
|
-
"@dxos/
|
|
34
|
-
"@dxos/
|
|
35
|
-
"@dxos/log": "0.8.
|
|
36
|
-
"@dxos/plugin-client": "0.8.
|
|
37
|
-
"@dxos/react-
|
|
38
|
-
"@dxos/react-ui": "0.8.
|
|
39
|
-
"@dxos/react-ui-editor": "0.8.
|
|
40
|
-
"@dxos/react-ui-
|
|
41
|
-
"@dxos/react-
|
|
42
|
-
"@dxos/
|
|
43
|
-
"@dxos/
|
|
44
|
-
"@dxos/util": "0.8.
|
|
28
|
+
"@dxos/app-framework": "0.8.3-main.672df60",
|
|
29
|
+
"@dxos/client": "0.8.3-main.672df60",
|
|
30
|
+
"@dxos/async": "0.8.3-main.672df60",
|
|
31
|
+
"@dxos/echo-schema": "0.8.3-main.672df60",
|
|
32
|
+
"@dxos/lit-ui": "0.8.3-main.672df60",
|
|
33
|
+
"@dxos/keys": "0.8.3-main.672df60",
|
|
34
|
+
"@dxos/echo": "0.8.3-main.672df60",
|
|
35
|
+
"@dxos/log": "0.8.3-main.672df60",
|
|
36
|
+
"@dxos/plugin-client": "0.8.3-main.672df60",
|
|
37
|
+
"@dxos/react-client": "0.8.3-main.672df60",
|
|
38
|
+
"@dxos/react-ui": "0.8.3-main.672df60",
|
|
39
|
+
"@dxos/react-ui-editor": "0.8.3-main.672df60",
|
|
40
|
+
"@dxos/react-ui-form": "0.8.3-main.672df60",
|
|
41
|
+
"@dxos/react-ui-stack": "0.8.3-main.672df60",
|
|
42
|
+
"@dxos/schema": "0.8.3-main.672df60",
|
|
43
|
+
"@dxos/react-ui-table": "0.8.3-main.672df60",
|
|
44
|
+
"@dxos/util": "0.8.3-main.672df60",
|
|
45
|
+
"@dxos/react-ui-theme": "0.8.3-main.672df60"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"effect": "3.14.21",
|
|
48
49
|
"react": "~18.2.0",
|
|
49
50
|
"react-dom": "~18.2.0",
|
|
50
51
|
"vite": "5.4.7",
|
|
51
|
-
"@dxos/random": "0.8.
|
|
52
|
+
"@dxos/random": "0.8.3-main.672df60"
|
|
52
53
|
},
|
|
53
54
|
"peerDependencies": {
|
|
54
55
|
"effect": "^3.13.3",
|
package/src/Preview.stories.tsx
CHANGED
|
@@ -16,11 +16,12 @@ import { withTheme, withLayout } from '@dxos/storybook-utils';
|
|
|
16
16
|
|
|
17
17
|
import { ContactCard, OrganizationCard, ProjectCard } from './components';
|
|
18
18
|
import translations from './translations';
|
|
19
|
+
import { type PreviewProps } from './types';
|
|
19
20
|
|
|
20
21
|
faker.seed(1234);
|
|
21
22
|
|
|
22
23
|
type StoryProps = {
|
|
23
|
-
Component: FC<
|
|
24
|
+
Component: FC<PreviewProps<any>>;
|
|
24
25
|
icon: string;
|
|
25
26
|
subject: any;
|
|
26
27
|
};
|
|
@@ -31,7 +32,7 @@ const meta: Meta<StoryProps> = {
|
|
|
31
32
|
return (
|
|
32
33
|
<Popover.Root open>
|
|
33
34
|
<Popover.Content>
|
|
34
|
-
<Component {...args} />
|
|
35
|
+
<Component {...args} role='popover' />
|
|
35
36
|
<Popover.Arrow />
|
|
36
37
|
</Popover.Content>
|
|
37
38
|
<Popover.Trigger>
|
|
@@ -19,13 +19,17 @@ const handlePreviewLookup = async (
|
|
|
19
19
|
defaultSpace: Space,
|
|
20
20
|
{ ref, label }: PreviewLinkRef,
|
|
21
21
|
): Promise<PreviewLinkTarget | null> => {
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
try {
|
|
23
|
+
const dxn = DXN.parse(ref);
|
|
24
|
+
if (!dxn) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const object = await resolveRef(client, dxn, defaultSpace);
|
|
29
|
+
return { label, object };
|
|
30
|
+
} catch (err) {
|
|
24
31
|
return null;
|
|
25
32
|
}
|
|
26
|
-
|
|
27
|
-
const object = await resolveRef(client, dxn, defaultSpace);
|
|
28
|
-
return { label, object };
|
|
29
33
|
};
|
|
30
34
|
|
|
31
35
|
export default (context: PluginContext) => {
|
|
@@ -17,13 +17,13 @@ import { Filter, fullyQualifiedId, getSchema, getSpace, isEchoObject, type AnyLi
|
|
|
17
17
|
import { isInstanceOf, type JsonPath, setValue } from '@dxos/echo-schema';
|
|
18
18
|
import { useTranslation } from '@dxos/react-ui';
|
|
19
19
|
import { Form } from '@dxos/react-ui-form';
|
|
20
|
+
import { Card } from '@dxos/react-ui-stack';
|
|
20
21
|
import { TableType } from '@dxos/react-ui-table';
|
|
21
22
|
import { descriptionMessage } from '@dxos/react-ui-theme';
|
|
22
23
|
import { DataType } from '@dxos/schema';
|
|
23
24
|
|
|
24
25
|
import { ContactCard, OrganizationCard, ProjectCard } from '../components';
|
|
25
26
|
import { PREVIEW_PLUGIN } from '../meta';
|
|
26
|
-
import { kanbanCardWithoutPoster } from '../types';
|
|
27
27
|
|
|
28
28
|
export default () =>
|
|
29
29
|
contributes(Capabilities.ReactSurface, [
|
|
@@ -65,7 +65,7 @@ export default () =>
|
|
|
65
65
|
[dispatch],
|
|
66
66
|
);
|
|
67
67
|
return (
|
|
68
|
-
<ContactCard subject={data.subject} onOrgClick={handleOrgClick}
|
|
68
|
+
<ContactCard role={role} subject={data.subject} onOrgClick={handleOrgClick}>
|
|
69
69
|
{role === 'popover' && <Surface role='related' data={data} />}
|
|
70
70
|
</ContactCard>
|
|
71
71
|
);
|
|
@@ -76,7 +76,7 @@ export default () =>
|
|
|
76
76
|
role: ['popover', 'card--kanban', 'card'],
|
|
77
77
|
filter: (data): data is { subject: DataType.Organization } => isInstanceOf(DataType.Organization, data.subject),
|
|
78
78
|
component: ({ data, role }) => (
|
|
79
|
-
<OrganizationCard subject={data.subject}
|
|
79
|
+
<OrganizationCard role={role} subject={data.subject}>
|
|
80
80
|
{role === 'popover' && <Surface role='related' data={data} />}
|
|
81
81
|
</OrganizationCard>
|
|
82
82
|
),
|
|
@@ -112,14 +112,9 @@ export default () =>
|
|
|
112
112
|
}, []);
|
|
113
113
|
|
|
114
114
|
return (
|
|
115
|
-
<
|
|
116
|
-
schema={schema}
|
|
117
|
-
|
|
118
|
-
readonly={role === 'popover'}
|
|
119
|
-
onSave={handleSave}
|
|
120
|
-
autoSave
|
|
121
|
-
{...(role === 'card--kanban' && { classNames: kanbanCardWithoutPoster })}
|
|
122
|
-
/>
|
|
115
|
+
<Card.Container role={role}>
|
|
116
|
+
<Form schema={schema} values={data.subject} readonly={role === 'popover'} onSave={handleSave} autoSave />
|
|
117
|
+
</Card.Container>
|
|
123
118
|
);
|
|
124
119
|
},
|
|
125
120
|
}),
|
|
@@ -5,33 +5,33 @@
|
|
|
5
5
|
import React, { Fragment } from 'react';
|
|
6
6
|
|
|
7
7
|
import { Icon, Avatar, Button } from '@dxos/react-ui';
|
|
8
|
+
import { Card, cardHeading, cardText } from '@dxos/react-ui-stack';
|
|
8
9
|
import { mx } from '@dxos/react-ui-theme';
|
|
9
10
|
import { type DataType } from '@dxos/schema';
|
|
10
11
|
|
|
11
|
-
import { type PreviewProps
|
|
12
|
+
import { type PreviewProps } from '../types';
|
|
12
13
|
|
|
13
14
|
export const ContactCard = ({
|
|
14
15
|
children,
|
|
15
|
-
classNames,
|
|
16
|
-
role,
|
|
17
16
|
subject: { fullName, image, organization, emails },
|
|
18
17
|
onOrgClick,
|
|
18
|
+
role,
|
|
19
19
|
}: PreviewProps<DataType.Person> & { onOrgClick?: (org: DataType.Organization) => void }) => {
|
|
20
20
|
const organizationName = organization && typeof organization === 'object' ? organization.target?.name : organization;
|
|
21
21
|
return (
|
|
22
|
-
<
|
|
22
|
+
<Card.Container role={role}>
|
|
23
23
|
<Avatar.Root>
|
|
24
|
-
<
|
|
24
|
+
<Card.Text role='group' classNames='grid gap-3 grid-cols-[min-content_1fr]'>
|
|
25
25
|
<Avatar.Content imgSrc={image} icon='ph--user--regular' size={16} hue='neutral' />
|
|
26
26
|
<div role='none' className='bs-min self-center'>
|
|
27
27
|
<Avatar.Label asChild>
|
|
28
|
-
<h2 className={
|
|
28
|
+
<h2 className={cardHeading}>{fullName}</h2>
|
|
29
29
|
</Avatar.Label>
|
|
30
30
|
</div>
|
|
31
|
-
</
|
|
31
|
+
</Card.Text>
|
|
32
32
|
</Avatar.Root>
|
|
33
33
|
{organizationName && (
|
|
34
|
-
<
|
|
34
|
+
<Card.Chrome>
|
|
35
35
|
{typeof organization === 'object' && onOrgClick ? (
|
|
36
36
|
<Button variant='ghost' classNames='gap-2 text-start' onClick={() => onOrgClick(organization.target!)}>
|
|
37
37
|
<Icon icon='ph--buildings--regular' size={5} classNames='text-subdued' />
|
|
@@ -44,11 +44,11 @@ export const ContactCard = ({
|
|
|
44
44
|
<span className='min-is-0 flex-1 truncate'>{organizationName}</span>
|
|
45
45
|
</p>
|
|
46
46
|
)}
|
|
47
|
-
</
|
|
47
|
+
</Card.Chrome>
|
|
48
48
|
)}
|
|
49
49
|
<dl
|
|
50
50
|
className={mx(
|
|
51
|
-
|
|
51
|
+
cardText,
|
|
52
52
|
'grid gap-2 grid-cols-[min-content_1fr] [&_dt]:text-subdued [&_dt]:pbs-0.5 [&_dd]:min-is-0',
|
|
53
53
|
)}
|
|
54
54
|
>
|
|
@@ -65,6 +65,6 @@ export const ContactCard = ({
|
|
|
65
65
|
))}
|
|
66
66
|
</dl>
|
|
67
67
|
{children}
|
|
68
|
-
</
|
|
68
|
+
</Card.Container>
|
|
69
69
|
);
|
|
70
70
|
};
|
|
@@ -5,30 +5,23 @@
|
|
|
5
5
|
import React from 'react';
|
|
6
6
|
|
|
7
7
|
import { Icon } from '@dxos/react-ui';
|
|
8
|
-
import {
|
|
8
|
+
import { Card } from '@dxos/react-ui-stack';
|
|
9
9
|
import { type DataType } from '@dxos/schema';
|
|
10
10
|
|
|
11
|
-
import { type PreviewProps
|
|
11
|
+
import { type PreviewProps } from '../types';
|
|
12
12
|
|
|
13
13
|
export const OrganizationCard = ({
|
|
14
14
|
children,
|
|
15
|
-
classNames,
|
|
16
15
|
subject: { name, image, description, website },
|
|
17
16
|
role,
|
|
18
17
|
}: PreviewProps<DataType.Organization>) => {
|
|
19
18
|
return (
|
|
20
|
-
<
|
|
21
|
-
{image ?
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
<div role='image' className='grid aspect-video place-items-center bg-inputSurface text-subdued'>
|
|
25
|
-
<Icon icon='ph--building-office--regular' size={10} />
|
|
26
|
-
</div>
|
|
27
|
-
)}
|
|
28
|
-
<h2 className={mx(previewTitle, previewProse)}>{name}</h2>
|
|
29
|
-
{description && <p className={mx(previewProse, 'line-clamp-2')}>{description}</p>}
|
|
19
|
+
<Card.Container role={role}>
|
|
20
|
+
<Card.Poster alt={name!} {...(image ? { image } : { icon: 'ph--building-office--regular' })} />
|
|
21
|
+
<Card.Heading>{name}</Card.Heading>
|
|
22
|
+
{description && <Card.Text classNames='line-clamp-2'>{description}</Card.Text>}
|
|
30
23
|
{website && (
|
|
31
|
-
<
|
|
24
|
+
<Card.Chrome>
|
|
32
25
|
<a
|
|
33
26
|
className='dx-button dx-focus-ring gap-2'
|
|
34
27
|
data-variant='ghost'
|
|
@@ -40,9 +33,9 @@ export const OrganizationCard = ({
|
|
|
40
33
|
<span className='grow'>{website}</span>
|
|
41
34
|
<Icon icon='ph--arrow-square-out--regular' />
|
|
42
35
|
</a>
|
|
43
|
-
</
|
|
36
|
+
</Card.Chrome>
|
|
44
37
|
)}
|
|
45
38
|
{children}
|
|
46
|
-
</
|
|
39
|
+
</Card.Container>
|
|
47
40
|
);
|
|
48
41
|
};
|
|
@@ -4,21 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
import React from 'react';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { Card } from '@dxos/react-ui-stack';
|
|
8
8
|
import { type DataType } from '@dxos/schema';
|
|
9
9
|
|
|
10
|
-
import { type PreviewProps
|
|
10
|
+
import { type PreviewProps } from '../types';
|
|
11
11
|
|
|
12
|
-
export const ProjectCard = ({
|
|
13
|
-
classNames,
|
|
14
|
-
role,
|
|
15
|
-
subject: { name, image, description },
|
|
16
|
-
}: PreviewProps<DataType.Project>) => {
|
|
12
|
+
export const ProjectCard = ({ subject: { name, image, description }, role }: PreviewProps<DataType.Project>) => {
|
|
17
13
|
return (
|
|
18
|
-
<
|
|
19
|
-
{image && <
|
|
20
|
-
<
|
|
21
|
-
{description && <
|
|
22
|
-
</
|
|
14
|
+
<Card.Container role={role}>
|
|
15
|
+
{image && <Card.Poster image={image} alt={name} aspect='auto' />}
|
|
16
|
+
<Card.Heading>{name}</Card.Heading>
|
|
17
|
+
{description && <Card.Text classNames='line-clamp-2'>{description}</Card.Text>}
|
|
18
|
+
</Card.Container>
|
|
23
19
|
);
|
|
24
20
|
};
|
package/src/types.ts
CHANGED
|
@@ -4,37 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
import { type PropsWithChildren } from 'react';
|
|
6
6
|
|
|
7
|
-
import { type ThemedClassName } from '@dxos/react-ui';
|
|
8
|
-
|
|
9
7
|
// TODO(burdon): Better place for these defs?
|
|
10
|
-
export type PreviewProps<T extends object> = PropsWithChildren<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}>
|
|
15
|
-
>;
|
|
16
|
-
|
|
17
|
-
// TODO(burdon): Update react-ui-card (to use grid) and re-use here.
|
|
18
|
-
// - See https://dxos-storybook.pages.dev/?path=/story/ui-react-ui-card-card--draggable
|
|
19
|
-
// - Standardize Header, actions, image, body, etc.
|
|
20
|
-
// - Support different grid layouts (e.g., image to the side, on top, etc.)
|
|
21
|
-
// - Should co-exist naturally with react-ui-form (e.g., as main content).
|
|
22
|
-
// - Considerations for drag-and-drop.
|
|
23
|
-
/**
|
|
24
|
-
* <Card.Root>
|
|
25
|
-
* <Card.Header>
|
|
26
|
-
* <Card.Title>
|
|
27
|
-
* <Card.Action>
|
|
28
|
-
* </Card.Header>
|
|
29
|
-
* <Card.Body>
|
|
30
|
-
* <Card.Image>
|
|
31
|
-
* <Form />
|
|
32
|
-
* </Card.Body>
|
|
33
|
-
* </Card.Root>
|
|
34
|
-
*/
|
|
35
|
-
export const popoverCard = 'popover-card-width rounded-lg overflow-hidden';
|
|
36
|
-
export const defaultCard = '';
|
|
37
|
-
export const kanbanCardWithoutPoster = 'pbs-[--rail-action]';
|
|
38
|
-
export const previewTitle = 'text-lg font-medium line-clamp-2';
|
|
39
|
-
export const previewProse = 'pli-3 mlb-3';
|
|
40
|
-
export const previewChrome = 'pli-1.5 mlb-1.5 [&_.dx-button]:pli-1.5 [&_.dx-button]:text-start [&_.dx-button]:is-full';
|
|
8
|
+
export type PreviewProps<T extends object> = PropsWithChildren<{
|
|
9
|
+
subject: T;
|
|
10
|
+
role?: string;
|
|
11
|
+
}>;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
// packages/plugins/plugin-preview/src/meta.ts
|
|
2
|
-
var PREVIEW_PLUGIN = "dxos.org/plugin/preview";
|
|
3
|
-
var meta = {
|
|
4
|
-
id: PREVIEW_PLUGIN,
|
|
5
|
-
name: "Preview",
|
|
6
|
-
icon: "ph--eye--regular",
|
|
7
|
-
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-preview"
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
// packages/plugins/plugin-preview/src/types.ts
|
|
11
|
-
var popoverCard = "popover-card-width rounded-lg overflow-hidden";
|
|
12
|
-
var defaultCard = "";
|
|
13
|
-
var kanbanCardWithoutPoster = "pbs-[--rail-action]";
|
|
14
|
-
var previewTitle = "text-lg font-medium line-clamp-2";
|
|
15
|
-
var previewProse = "pli-3 mlb-3";
|
|
16
|
-
var previewChrome = "pli-1.5 mlb-1.5 [&_.dx-button]:pli-1.5 [&_.dx-button]:text-start [&_.dx-button]:is-full";
|
|
17
|
-
|
|
18
|
-
export {
|
|
19
|
-
PREVIEW_PLUGIN,
|
|
20
|
-
meta,
|
|
21
|
-
popoverCard,
|
|
22
|
-
defaultCard,
|
|
23
|
-
kanbanCardWithoutPoster,
|
|
24
|
-
previewTitle,
|
|
25
|
-
previewProse,
|
|
26
|
-
previewChrome
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=chunk-B2VK6GFP.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts", "../../../src/types.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-card-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"],
|
|
5
|
-
"mappings": ";AAMO,IAAMA,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;",
|
|
6
|
-
"names": ["PREVIEW_PLUGIN", "meta", "id", "name", "icon", "source", "popoverCard", "defaultCard", "kanbanCardWithoutPoster", "previewTitle", "previewProse", "previewChrome"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/preview-popover.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, LayoutAction, contributes, createIntent, type PluginContext } from '@dxos/app-framework';\nimport { addEventListener } from '@dxos/async';\nimport { type Client, resolveRef } from '@dxos/client';\nimport { parseId, type Space } from '@dxos/client/echo';\nimport { DXN } from '@dxos/keys';\nimport { type DxRefTagActivate } from '@dxos/lit-ui';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { type PreviewLinkRef, type PreviewLinkTarget } from '@dxos/react-ui-editor';\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 default (context: PluginContext) => {\n // TODO(wittjosiah): Factor out lookup handlers to other plugins to make not ECHO-specific.\n const handleDxRefTagActivate = async ({ refId, label, trigger }: DxRefTagActivate) => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const [layout] = context.getCapabilities(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: refId, 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 let cleanup: () => void;\n if (document.defaultView) {\n cleanup = addEventListener(document.defaultView, 'dx-ref-tag-activate', handleDxRefTagActivate, customEventOptions);\n } else {\n log.warn('No default view found');\n }\n\n return contributes(Capabilities.Null, null, () => cleanup());\n};\n"],
|
|
5
|
-
"mappings": ";AAIA,SAASA,cAAcC,cAAcC,aAAaC,oBAAwC;AAC1F,SAASC,wBAAwB;AACjC,SAAsBC,kBAAkB;AACxC,SAASC,eAA2B;AACpC,SAASC,WAAW;AAEpB,SAASC,WAAW;AACpB,SAASC,0BAA0B;;AAGnC,IAAMC,qBAAqB;EAAEC,SAAS;EAAMC,SAAS;AAAM;AAE3D,IAAMC,sBAAsB,OAC1BC,QACAC,cACA,EAAEC,KAAKC,MAAK,MAAkB;AAE9B,QAAMC,MAAMX,IAAIY,MAAMH,GAAAA;AACtB,MAAI,CAACE,KAAK;AACR,WAAO;EACT;AAEA,QAAME,SAAS,MAAMf,WAAWS,QAAQI,KAAKH,YAAAA;AAC7C,SAAO;IAAEE;IAAOG;EAAO;AACzB;AAEA,IAAA,0BAAe,CAACC,YAAAA;AAEd,QAAMC,yBAAyB,OAAO,EAAEC,OAAON,OAAOO,QAAO,MAAoB;AAC/E,UAAM,EAAEC,iBAAiBC,SAAQ,IAAKL,QAAQM,cAAc3B,aAAa4B,gBAAgB;AACzF,UAAMd,SAASO,QAAQM,cAAclB,mBAAmBoB,MAAM;AAC9D,UAAM,CAACC,MAAAA,IAAUT,QAAQU,gBAAgB/B,aAAagC,MAAM;AAC5D,UAAM,EAAEC,QAAO,IAAK3B,QAAQwB,OAAOI,SAAS;AAC5C,UAAMC,SAASF,WAAWnB,OAAOsB,OAAOC,IAAIJ,OAAAA,MAAanB,OAAOsB,OAAOE;AACvE,UAAMC,SAAS,MAAM1B,oBAAoBC,QAAQqB,OAAO;MAAEnB,KAAKO;MAAON;IAAM,CAAA;AAC5E,QAAI,CAACsB,QAAQ;AACX;IACF;AAEA,UAAMb,SACJvB,aAAaF,aAAauC,eAAe;MACvCC,MAAM;MACNC,SAASH,OAAOnB;MAChBuB,SAAS;QACPC,OAAO;QACPC,SAAS;QACTC,QAAQtB;MACV;IACF,CAAA,CAAA;EAEJ;AAEA,MAAIuB;AACJ,MAAIC,SAASC,aAAa;AACxBF,cAAU3C,iBAAiB4C,SAASC,aAAa,uBAAuB3B,wBAAwBZ,kBAAAA;EAClG,OAAO;AACLF,QAAI0C,KAAK,yBAAA,QAAA;;;;;;EACX;AAEA,SAAOhD,YAAYF,aAAamD,MAAM,MAAM,MAAMJ,QAAAA,CAAAA;AACpD;",
|
|
6
|
-
"names": ["Capabilities", "LayoutAction", "contributes", "createIntent", "addEventListener", "resolveRef", "parseId", "DXN", "log", "ClientCapabilities", "customEventOptions", "capture", "passive", "handlePreviewLookup", "client", "defaultSpace", "ref", "label", "dxn", "parse", "object", "context", "handleDxRefTagActivate", "refId", "trigger", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "Client", "layout", "getCapabilities", "Layout", "spaceId", "workspace", "space", "spaces", "get", "default", "result", "UpdatePopover", "part", "subject", "options", "state", "variant", "anchor", "cleanup", "document", "defaultView", "warn", "Null"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/ContactCard.tsx", "../../../src/components/OrganizationCard.tsx", "../../../src/components/ProjectCard.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport {\n Capabilities,\n LayoutAction,\n Surface,\n contributes,\n createIntent,\n createSurface,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { Filter, fullyQualifiedId, getSchema, getSpace, isEchoObject, type AnyLiveObject } from '@dxos/client/echo';\nimport { isInstanceOf, type JsonPath, setValue } from '@dxos/echo-schema';\nimport { useTranslation } from '@dxos/react-ui';\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 { PREVIEW_PLUGIN } from '../meta';\nimport { kanbanCardWithoutPoster } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n //\n // Specific schema types.\n //\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover--contact`,\n role: ['popover', 'card--kanban', 'card'],\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.type(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--organization`,\n role: ['popover', 'card--kanban', 'card'],\n filter: (data): data is { subject: DataType.Organization } => 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--project`,\n role: ['popover', 'card--kanban', 'card'],\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', 'card'],\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 const handleSave = useCallback((values: any, { changed }: { changed: Record<string, boolean> }) => {\n const changedPaths = Object.keys(changed).filter((path) => changed[path]);\n for (const path of changedPaths) {\n const value = values[path];\n setValue(data.subject, path as JsonPath, value);\n }\n }, []);\n\n return (\n <Form\n schema={schema}\n values={data.subject}\n readonly={role === 'popover'}\n onSave={handleSave}\n autoSave\n {...(role === 'card--kanban' && { classNames: kanbanCardWithoutPoster })}\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-inputSurface 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\n className='dx-button dx-focus-ring gap-2'\n data-variant='ghost'\n href={website}\n target='_blank'\n rel='noreferrer'\n >\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"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;AAIA,OAAOA,UAASC,mBAAmB;AAEnC,SACEC,cACAC,cACAC,SACAC,aACAC,cACAC,eACAC,2BACK;AACP,SAASC,QAAQC,kBAAkBC,WAAWC,UAAUC,oBAAwC;AAChG,SAASC,cAA6BC,gBAAgB;AACtD,SAASC,sBAAsB;AAC/B,SAASC,YAAY;AACrB,SAASC,iBAAiB;AAC1B,SAASC,0BAA0B;AACnC,SAASC,gBAAgB;;;;ACjBzB,OAAOC,SAASC,gBAAgB;AAEhC,SAASC,MAAMC,QAAQC,cAAc;AACrC,SAASC,UAAU;AAKZ,IAAMC,cAAc,CAAC,EAC1BC,UACAC,YACAC,MACAC,SAAS,EAAEC,UAAUC,OAAOC,cAAcC,OAAM,GAChDC,WAAU,MAC4E;;;AACtF,UAAMC,mBAAmBH,gBAAgB,OAAOA,iBAAiB,WAAWA,aAAaI,QAAQC,OAAOL;AACxG,WACE,sBAAA,cAACM,OAAAA;MAAIV,MAAK;MAAOW,WAAWC,GAAGZ,SAAS,YAAYa,cAAcC,aAAaf,UAAAA;OAC7E,sBAAA,cAACgB,OAAOC,MAAI,MACV,sBAAA,cAACN,OAAAA;MAAIV,MAAK;MAAQW,WAAWC,GAAGK,cAAc,wCAAA;OAC5C,sBAAA,cAACF,OAAOG,SAAO;MAACC,QAAQhB;MAAOiB,MAAK;MAAoBC,MAAM;MAAIC,KAAI;QACtE,sBAAA,cAACZ,OAAAA;MAAIV,MAAK;MAAOW,WAAU;OACzB,sBAAA,cAACI,OAAOQ,OAAK;MAACC,SAAAA;OACZ,sBAAA,cAACC,MAAAA;MAAGd,WAAWe;OAAexB,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAKrCK,oBACC,sBAAA,cAACG,OAAAA;MAAIV,MAAK;MAAOW,WAAWgB;OACzB,OAAOvB,iBAAiB,YAAYE,aACnC,sBAAA,cAACsB,QAAAA;MAAOC,SAAQ;MAAQ9B,YAAW;MAAmB+B,SAAS,MAAMxB,WAAWF,aAAaI,MAAM;OACjG,sBAAA,cAACuB,MAAAA;MAAKX,MAAK;MAAyBC,MAAM;MAAGtB,YAAW;QACxD,sBAAA,cAACiC,QAAAA;MAAKrB,WAAU;OAA4BJ,gBAAAA,GAC5C,sBAAA,cAACwB,MAAAA;MAAKX,MAAK;UAGb,sBAAA,cAACa,KAAAA;MAAEtB,WAAU;MAAkBuB,gBAAa;OAC1C,sBAAA,cAACH,MAAAA;MAAKX,MAAK;MAAyBC,MAAM;MAAGtB,YAAW;QACxD,sBAAA,cAACiC,QAAAA;MAAKrB,WAAU;OAA4BJ,gBAAAA,CAAAA,CAAAA,GAKpD,sBAAA,cAAC4B,MAAAA;MACCxB,WAAWC,GACTK,cACA,2FAAA;OAGDZ,QAAQ+B,UACP/B,OAAOgC,IAAI,CAAC,EAAEC,OAAOC,MAAK,MACxB,sBAAA,cAACC,UAAAA;MAASC,KAAKF;OACb,sBAAA,cAACG,MAAAA,MACC,sBAAA,cAACX,MAAAA;MAAKX,MAAK;MAAkBC,MAAM;SAErC,sBAAA,cAACsB,MAAAA;MAAGF,KAAKF;MAAO5B,WAAU;OACvB4B,KAAAA,CAAAA,CAAAA,CAAAA,GAKVzC,QAAAA;;;;AAGP;;;;ACjEA,OAAO8C,YAAW;AAElB,SAASC,QAAAA,aAAY;AACrB,SAASC,MAAAA,WAAU;AAKZ,IAAMC,mBAAmB,CAAC,EAC/BC,UACAC,YACAC,SAAS,EAAEC,MAAMC,OAAOC,aAAaC,QAAO,GAC5CC,KAAI,MACgC;;;AACpC,WACE,gBAAAC,OAAA,cAACC,OAAAA;MAAIF,MAAK;MAAOG,WAAWC,IAAGJ,SAAS,YAAYK,cAAcC,aAAaZ,UAAAA;OAC5EG,QACC,gBAAAI,OAAA,cAACM,OAAAA;MAAIJ,WAAU;MAA4CK,KAAKX;MAAOY,KAAKb;SAE5E,gBAAAK,OAAA,cAACC,OAAAA;MAAIF,MAAK;MAAQG,WAAU;OAC1B,gBAAAF,OAAA,cAACS,OAAAA;MAAKC,MAAK;MAA+BC,MAAM;SAGpD,gBAAAX,OAAA,cAACY,MAAAA;MAAGV,WAAWC,IAAGU,cAAcC,YAAAA;OAAgBnB,IAAAA,GAC/CE,eAAe,gBAAAG,OAAA,cAACe,KAAAA;MAAEb,WAAWC,IAAGW,cAAc,cAAA;OAAkBjB,WAAAA,GAChEC,WACC,gBAAAE,OAAA,cAACC,OAAAA;MAAIF,MAAK;MAAOG,WAAWc;OAC1B,gBAAAhB,OAAA,cAACiB,KAAAA;MACCf,WAAU;MACVgB,gBAAa;MACbC,MAAMrB;MACNsB,QAAO;MACPC,KAAI;OAEJ,gBAAArB,OAAA,cAACS,OAAAA;MAAKC,MAAK;MAAoBC,MAAM;MAAGlB,YAAW;QACnD,gBAAAO,OAAA,cAACsB,QAAAA;MAAKpB,WAAU;OAAQJ,OAAAA,GACxB,gBAAAE,OAAA,cAACS,OAAAA;MAAKC,MAAK;UAIhBlB,QAAAA;;;;AAGP;;;;AC3CA,OAAO+B,YAAW;AAElB,SAASC,MAAAA,WAAU;AAKZ,IAAMC,cAAc,CAAC,EAC1BC,YACAC,MACAC,SAAS,EAAEC,MAAMC,OAAOC,YAAW,EAAE,MACN;;;AAC/B,WACE,gBAAAC,OAAA,cAACC,OAAAA;MAAIN,MAAK;MAAOO,WAAWC,IAAGR,SAAS,YAAYS,cAAcC,aAAaX,UAAAA;OAC5EI,SAAS,gBAAAE,OAAA,cAACM,OAAAA;MAAIJ,WAAU;MAAkBK,KAAKT;MAAOU,KAAKX;QAC5D,gBAAAG,OAAA,cAACS,MAAAA;MAAGP,WAAWC,IAAGO,cAAc,aAAA;OAAiBb,IAAAA,GAChDE,eAAe,gBAAAC,OAAA,cAACW,KAAAA;MAAET,WAAU;OAA4BH,WAAAA,CAAAA;;;;AAG/D;;;AHIA,IAAA,wBAAe,MACba,YAAYC,aAAaC,cAAc;;;;EAIrCC,cAAc;IACZC,IAAI,GAAGC,cAAAA;IACPC,MAAM;MAAC;MAAW;MAAgB;;IAClCC,QAAQ,CAACC,SAA+CC,aAAaC,SAASC,QAAQH,KAAKI,OAAO;IAClGC,WAAW,CAAC,EAAEL,MAAMF,KAAI,MAAE;AACxB,YAAM,EAAEQ,iBAAiBC,SAAQ,IAAKC,oBAAAA;AACtC,YAAMC,iBAAiBC,YACrB,OAAOC,QAAAA;AACL,cAAMC,QAAQC,SAASF,GAAAA;AACvB,cAAMG,cAAc,MAAMF,OAAOG,GAAGC,MAAMC,OAAOC,KAAKC,SAAAA,CAAAA,EAAYC,IAAAA;AAClE,cAAMC,uBAAuBP,aAAaQ,QAAQC,KAAK,CAACC,UAAAA;AACtD,iBAAOA,MAAMC,MAAMC,QAAQV,OAAOW,aAAazB,SAAS0B,aAAaD;QACvE,CAAA;AACA,cAAMpB,SACJsB,aAAaC,aAAaC,eAAe;UACvCC,MAAM;UACNC,SAAS;YACPC,OAAO;YACPC,UAAU;UACZ;QACF,CAAA,CAAA;AAEF,YAAId,sBAAsB;AACxB,iBAAOd,SACLsB,aAAaC,aAAaM,MAAM;YAC9BJ,MAAM;YACN5B,SAAS;cAACiC,iBAAiBhB,oBAAAA;;YAC3BY,SAAS;cAAEK,WAAW1B,OAAOhB;YAAG;UAClC,CAAA,CAAA;QAEJ;MACF,GACA;QAACW;OAAS;AAEZ,aACE,gBAAAgC,OAAA,cAACC,aAAAA;QAAYpC,SAASJ,KAAKI;QAASqC,YAAYhC;QAAgBX;SAC7DA,SAAS,aAAa,gBAAAyC,OAAA,cAACG,SAAAA;QAAQ5C,MAAK;QAAUE;;IAGrD;EACF,CAAA;EACAL,cAAc;IACZC,IAAI,GAAGC,cAAAA;IACPC,MAAM;MAAC;MAAW;MAAgB;;IAClCC,QAAQ,CAACC,SAAqDC,aAAaC,SAAS0B,cAAc5B,KAAKI,OAAO;IAC9GC,WAAW,CAAC,EAAEL,MAAMF,KAAI,MACtB,gBAAAyC,OAAA,cAACI,kBAAAA;MAAiBvC,SAASJ,KAAKI;MAASN;OACtCA,SAAS,aAAa,gBAAAyC,OAAA,cAACG,SAAAA;MAAQ5C,MAAK;MAAUE;;EAGrD,CAAA;EACAL,cAAc;IACZC,IAAI,GAAGC,cAAAA;IACPC,MAAM;MAAC;MAAW;MAAgB;;IAClCC,QAAQ,CAACC,SAAgDC,aAAaC,SAAS0C,SAAS5C,KAAKI,OAAO;IACpGC,WAAW,CAAC,EAAEL,MAAMF,KAAI,MAAO,gBAAAyC,OAAA,cAACM,aAAAA;MAAYzC,SAASJ,KAAKI;MAASN;;EACrE,CAAA;;;;EAKAH,cAAc;IACZC,IAAI,GAAGC,cAAAA;IACPC,MAAM;MAAC;MAAW;MAAgB;;IAClCgD,UAAU;IACV/C,QAAQ,CAACC,SAAkD+C,aAAa/C,KAAKI,OAAO;IACpFC,WAAW,CAAC,EAAEL,MAAMF,KAAI,MAAE;AACxB,YAAMkD,SAASC,UAAUjD,KAAKI,OAAO;AACrC,YAAM,EAAE8C,EAAC,IAAKC,eAAetD,cAAAA;AAC7B,UAAI,CAACmD,QAAQ;AACX,eAAO,gBAAAT,OAAA,cAACa,KAAAA;UAAEC,WAAWC;WAAqBJ,EAAE,kCAAA,CAAA;MAC9C;AAEA,YAAMK,aAAa7C,YAAY,CAAC8C,QAAa,EAAEC,QAAO,MAAwC;AAC5F,cAAMC,eAAeC,OAAOC,KAAKH,OAAAA,EAAS1D,OAAO,CAAC8D,SAASJ,QAAQI,IAAAA,CAAK;AACxE,mBAAWA,QAAQH,cAAc;AAC/B,gBAAMI,QAAQN,OAAOK,IAAAA;AACrBE,mBAAS/D,KAAKI,SAASyD,MAAkBC,KAAAA;QAC3C;MACF,GAAG,CAAA,CAAE;AAEL,aACE,gBAAAvB,OAAA,cAACyB,MAAAA;QACChB;QACAQ,QAAQxD,KAAKI;QACb6D,UAAUnE,SAAS;QACnBoE,QAAQX;QACRY,UAAAA;QACC,GAAIrE,SAAS,kBAAkB;UAAEsE,YAAYC;QAAwB;;IAG5E;EACF,CAAA;CACD;",
|
|
6
|
-
"names": ["React", "useCallback", "Capabilities", "LayoutAction", "Surface", "contributes", "createIntent", "createSurface", "useIntentDispatcher", "Filter", "fullyQualifiedId", "getSchema", "getSpace", "isEchoObject", "isInstanceOf", "setValue", "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", "data-variant", "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", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "PREVIEW_PLUGIN", "role", "filter", "data", "isInstanceOf", "DataType", "Person", "subject", "component", "dispatchPromise", "dispatch", "useIntentDispatcher", "handleOrgClick", "useCallback", "org", "space", "getSpace", "tablesQuery", "db", "query", "Filter", "type", "TableType", "run", "currentSpaceOrgTable", "objects", "find", "table", "view", "target", "typename", "Organization", "createIntent", "LayoutAction", "UpdatePopover", "part", "options", "state", "anchorId", "Open", "fullyQualifiedId", "workspace", "React", "ContactCard", "onOrgClick", "Surface", "OrganizationCard", "Project", "ProjectCard", "position", "isEchoObject", "schema", "getSchema", "t", "useTranslation", "p", "className", "descriptionMessage", "handleSave", "values", "changed", "changedPaths", "Object", "keys", "path", "value", "setValue", "Form", "readonly", "onSave", "autoSave", "classNames", "kanbanCardWithoutPoster"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts", "../../../src/types.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-card-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"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,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;",
|
|
6
|
-
"names": ["PREVIEW_PLUGIN", "meta", "id", "name", "icon", "source", "popoverCard", "defaultCard", "kanbanCardWithoutPoster", "previewTitle", "previewProse", "previewChrome"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/preview-popover.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, LayoutAction, contributes, createIntent, type PluginContext } from '@dxos/app-framework';\nimport { addEventListener } from '@dxos/async';\nimport { type Client, resolveRef } from '@dxos/client';\nimport { parseId, type Space } from '@dxos/client/echo';\nimport { DXN } from '@dxos/keys';\nimport { type DxRefTagActivate } from '@dxos/lit-ui';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { type PreviewLinkRef, type PreviewLinkTarget } from '@dxos/react-ui-editor';\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 default (context: PluginContext) => {\n // TODO(wittjosiah): Factor out lookup handlers to other plugins to make not ECHO-specific.\n const handleDxRefTagActivate = async ({ refId, label, trigger }: DxRefTagActivate) => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const [layout] = context.getCapabilities(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: refId, 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 let cleanup: () => void;\n if (document.defaultView) {\n cleanup = addEventListener(document.defaultView, 'dx-ref-tag-activate', handleDxRefTagActivate, customEventOptions);\n } else {\n log.warn('No default view found');\n }\n\n return contributes(Capabilities.Null, null, () => cleanup());\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAA0F;AAC1F,mBAAiC;AACjC,oBAAwC;AACxC,kBAAoC;AACpC,kBAAoB;AAEpB,iBAAoB;AACpB,2BAAmC;;AAGnC,IAAMA,qBAAqB;EAAEC,SAAS;EAAMC,SAAS;AAAM;AAE3D,IAAMC,sBAAsB,OAC1BC,QACAC,cACA,EAAEC,KAAKC,MAAK,MAAkB;AAE9B,QAAMC,MAAMC,gBAAIC,MAAMJ,GAAAA;AACtB,MAAI,CAACE,KAAK;AACR,WAAO;EACT;AAEA,QAAMG,SAAS,UAAMC,0BAAWR,QAAQI,KAAKH,YAAAA;AAC7C,SAAO;IAAEE;IAAOI;EAAO;AACzB;AAEA,IAAA,0BAAe,CAACE,YAAAA;AAEd,QAAMC,yBAAyB,OAAO,EAAEC,OAAOR,OAAOS,QAAO,MAAoB;AAC/E,UAAM,EAAEC,iBAAiBC,SAAQ,IAAKL,QAAQM,cAAcC,kCAAaC,gBAAgB;AACzF,UAAMjB,SAASS,QAAQM,cAAcG,wCAAmBC,MAAM;AAC9D,UAAM,CAACC,MAAAA,IAAUX,QAAQY,gBAAgBL,kCAAaM,MAAM;AAC5D,UAAM,EAAEC,QAAO,QAAKC,qBAAQJ,OAAOK,SAAS;AAC5C,UAAMC,SAASH,WAAWvB,OAAO2B,OAAOC,IAAIL,OAAAA,MAAavB,OAAO2B,OAAOE;AACvE,UAAMC,SAAS,MAAM/B,oBAAoBC,QAAQ0B,OAAO;MAAExB,KAAKS;MAAOR;IAAM,CAAA;AAC5E,QAAI,CAAC2B,QAAQ;AACX;IACF;AAEA,UAAMhB,aACJiB,mCAAaC,kCAAaC,eAAe;MACvCC,MAAM;MACNC,SAASL,OAAOvB;MAChB6B,SAAS;QACPC,OAAO;QACPC,SAAS;QACTC,QAAQ3B;MACV;IACF,CAAA,CAAA;EAEJ;AAEA,MAAI4B;AACJ,MAAIC,SAASC,aAAa;AACxBF,kBAAUG,+BAAiBF,SAASC,aAAa,uBAAuBhC,wBAAwBd,kBAAAA;EAClG,OAAO;AACLgD,mBAAIC,KAAK,yBAAA,QAAA;;;;;;EACX;AAEA,aAAOC,kCAAY9B,kCAAa+B,MAAM,MAAM,MAAMP,QAAAA,CAAAA;AACpD;",
|
|
6
|
-
"names": ["customEventOptions", "capture", "passive", "handlePreviewLookup", "client", "defaultSpace", "ref", "label", "dxn", "DXN", "parse", "object", "resolveRef", "context", "handleDxRefTagActivate", "refId", "trigger", "dispatchPromise", "dispatch", "getCapability", "Capabilities", "IntentDispatcher", "ClientCapabilities", "Client", "layout", "getCapabilities", "Layout", "spaceId", "parseId", "workspace", "space", "spaces", "get", "default", "result", "createIntent", "LayoutAction", "UpdatePopover", "part", "subject", "options", "state", "variant", "anchor", "cleanup", "document", "defaultView", "addEventListener", "log", "warn", "contributes", "Null"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/ContactCard.tsx", "../../../src/components/OrganizationCard.tsx", "../../../src/components/ProjectCard.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport {\n Capabilities,\n LayoutAction,\n Surface,\n contributes,\n createIntent,\n createSurface,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { Filter, fullyQualifiedId, getSchema, getSpace, isEchoObject, type AnyLiveObject } from '@dxos/client/echo';\nimport { isInstanceOf, type JsonPath, setValue } from '@dxos/echo-schema';\nimport { useTranslation } from '@dxos/react-ui';\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 { PREVIEW_PLUGIN } from '../meta';\nimport { kanbanCardWithoutPoster } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n //\n // Specific schema types.\n //\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover--contact`,\n role: ['popover', 'card--kanban', 'card'],\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.type(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--organization`,\n role: ['popover', 'card--kanban', 'card'],\n filter: (data): data is { subject: DataType.Organization } => 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--project`,\n role: ['popover', 'card--kanban', 'card'],\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', 'card'],\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 const handleSave = useCallback((values: any, { changed }: { changed: Record<string, boolean> }) => {\n const changedPaths = Object.keys(changed).filter((path) => changed[path]);\n for (const path of changedPaths) {\n const value = values[path];\n setValue(data.subject, path as JsonPath, value);\n }\n }, []);\n\n return (\n <Form\n schema={schema}\n values={data.subject}\n readonly={role === 'popover'}\n onSave={handleSave}\n autoSave\n {...(role === 'card--kanban' && { classNames: kanbanCardWithoutPoster })}\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-inputSurface 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\n className='dx-button dx-focus-ring gap-2'\n data-variant='ghost'\n href={website}\n target='_blank'\n rel='noreferrer'\n >\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"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_react", "import_react_ui", "import_react_ui_theme", "ContactCard", "children", "classNames", "role", "subject", "fullName", "image", "organization", "emails", "onOrgClick", "organizationName", "target", "name", "React", "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", "OrganizationCard", "description", "website", "img", "src", "alt", "a", "href", "rel", "ProjectCard", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "PREVIEW_PLUGIN", "filter", "data", "isInstanceOf", "DataType", "Person", "component", "dispatchPromise", "dispatch", "useIntentDispatcher", "handleOrgClick", "useCallback", "org", "space", "getSpace", "tablesQuery", "db", "query", "Filter", "type", "TableType", "run", "currentSpaceOrgTable", "objects", "find", "table", "view", "typename", "Organization", "createIntent", "LayoutAction", "UpdatePopover", "part", "options", "state", "anchorId", "Open", "fullyQualifiedId", "workspace", "Surface", "Project", "position", "isEchoObject", "schema", "getSchema", "t", "useTranslation", "descriptionMessage", "handleSave", "values", "changed", "changedPaths", "Object", "keys", "path", "setValue", "Form", "readonly", "onSave", "autoSave", "kanbanCardWithoutPoster"]
|
|
7
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
-
|
|
3
|
-
// packages/plugins/plugin-preview/src/meta.ts
|
|
4
|
-
var PREVIEW_PLUGIN = "dxos.org/plugin/preview";
|
|
5
|
-
var meta = {
|
|
6
|
-
id: PREVIEW_PLUGIN,
|
|
7
|
-
name: "Preview",
|
|
8
|
-
icon: "ph--eye--regular",
|
|
9
|
-
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-preview"
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
// packages/plugins/plugin-preview/src/types.ts
|
|
13
|
-
var popoverCard = "popover-card-width rounded-lg overflow-hidden";
|
|
14
|
-
var defaultCard = "";
|
|
15
|
-
var kanbanCardWithoutPoster = "pbs-[--rail-action]";
|
|
16
|
-
var previewTitle = "text-lg font-medium line-clamp-2";
|
|
17
|
-
var previewProse = "pli-3 mlb-3";
|
|
18
|
-
var previewChrome = "pli-1.5 mlb-1.5 [&_.dx-button]:pli-1.5 [&_.dx-button]:text-start [&_.dx-button]:is-full";
|
|
19
|
-
|
|
20
|
-
export {
|
|
21
|
-
PREVIEW_PLUGIN,
|
|
22
|
-
meta,
|
|
23
|
-
popoverCard,
|
|
24
|
-
defaultCard,
|
|
25
|
-
kanbanCardWithoutPoster,
|
|
26
|
-
previewTitle,
|
|
27
|
-
previewProse,
|
|
28
|
-
previewChrome
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=chunk-PYKIS3N7.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts", "../../../src/types.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-card-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"],
|
|
5
|
-
"mappings": ";;;AAMO,IAAMA,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;",
|
|
6
|
-
"names": ["PREVIEW_PLUGIN", "meta", "id", "name", "icon", "source", "popoverCard", "defaultCard", "kanbanCardWithoutPoster", "previewTitle", "previewProse", "previewChrome"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/preview-popover.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, LayoutAction, contributes, createIntent, type PluginContext } from '@dxos/app-framework';\nimport { addEventListener } from '@dxos/async';\nimport { type Client, resolveRef } from '@dxos/client';\nimport { parseId, type Space } from '@dxos/client/echo';\nimport { DXN } from '@dxos/keys';\nimport { type DxRefTagActivate } from '@dxos/lit-ui';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { type PreviewLinkRef, type PreviewLinkTarget } from '@dxos/react-ui-editor';\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 default (context: PluginContext) => {\n // TODO(wittjosiah): Factor out lookup handlers to other plugins to make not ECHO-specific.\n const handleDxRefTagActivate = async ({ refId, label, trigger }: DxRefTagActivate) => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const [layout] = context.getCapabilities(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: refId, 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 let cleanup: () => void;\n if (document.defaultView) {\n cleanup = addEventListener(document.defaultView, 'dx-ref-tag-activate', handleDxRefTagActivate, customEventOptions);\n } else {\n log.warn('No default view found');\n }\n\n return contributes(Capabilities.Null, null, () => cleanup());\n};\n"],
|
|
5
|
-
"mappings": ";;;AAIA,SAASA,cAAcC,cAAcC,aAAaC,oBAAwC;AAC1F,SAASC,wBAAwB;AACjC,SAAsBC,kBAAkB;AACxC,SAASC,eAA2B;AACpC,SAASC,WAAW;AAEpB,SAASC,WAAW;AACpB,SAASC,0BAA0B;;AAGnC,IAAMC,qBAAqB;EAAEC,SAAS;EAAMC,SAAS;AAAM;AAE3D,IAAMC,sBAAsB,OAC1BC,QACAC,cACA,EAAEC,KAAKC,MAAK,MAAkB;AAE9B,QAAMC,MAAMX,IAAIY,MAAMH,GAAAA;AACtB,MAAI,CAACE,KAAK;AACR,WAAO;EACT;AAEA,QAAME,SAAS,MAAMf,WAAWS,QAAQI,KAAKH,YAAAA;AAC7C,SAAO;IAAEE;IAAOG;EAAO;AACzB;AAEA,IAAA,0BAAe,CAACC,YAAAA;AAEd,QAAMC,yBAAyB,OAAO,EAAEC,OAAON,OAAOO,QAAO,MAAoB;AAC/E,UAAM,EAAEC,iBAAiBC,SAAQ,IAAKL,QAAQM,cAAc3B,aAAa4B,gBAAgB;AACzF,UAAMd,SAASO,QAAQM,cAAclB,mBAAmBoB,MAAM;AAC9D,UAAM,CAACC,MAAAA,IAAUT,QAAQU,gBAAgB/B,aAAagC,MAAM;AAC5D,UAAM,EAAEC,QAAO,IAAK3B,QAAQwB,OAAOI,SAAS;AAC5C,UAAMC,SAASF,WAAWnB,OAAOsB,OAAOC,IAAIJ,OAAAA,MAAanB,OAAOsB,OAAOE;AACvE,UAAMC,SAAS,MAAM1B,oBAAoBC,QAAQqB,OAAO;MAAEnB,KAAKO;MAAON;IAAM,CAAA;AAC5E,QAAI,CAACsB,QAAQ;AACX;IACF;AAEA,UAAMb,SACJvB,aAAaF,aAAauC,eAAe;MACvCC,MAAM;MACNC,SAASH,OAAOnB;MAChBuB,SAAS;QACPC,OAAO;QACPC,SAAS;QACTC,QAAQtB;MACV;IACF,CAAA,CAAA;EAEJ;AAEA,MAAIuB;AACJ,MAAIC,SAASC,aAAa;AACxBF,cAAU3C,iBAAiB4C,SAASC,aAAa,uBAAuB3B,wBAAwBZ,kBAAAA;EAClG,OAAO;AACLF,QAAI0C,KAAK,yBAAA,QAAA;;;;;;EACX;AAEA,SAAOhD,YAAYF,aAAamD,MAAM,MAAM,MAAMJ,QAAAA,CAAAA;AACpD;",
|
|
6
|
-
"names": ["Capabilities", "LayoutAction", "contributes", "createIntent", "addEventListener", "resolveRef", "parseId", "DXN", "log", "ClientCapabilities", "customEventOptions", "capture", "passive", "handlePreviewLookup", "client", "defaultSpace", "ref", "label", "dxn", "parse", "object", "context", "handleDxRefTagActivate", "refId", "trigger", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "Client", "layout", "getCapabilities", "Layout", "spaceId", "workspace", "space", "spaces", "get", "default", "result", "UpdatePopover", "part", "subject", "options", "state", "variant", "anchor", "cleanup", "document", "defaultView", "warn", "Null"]
|
|
7
|
-
}
|