@dxos/plugin-template 0.7.1 → 0.7.2-staging.6d26b2a
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/TemplatePlugin.tsx", "../../../src/components/TemplateMain.tsx", "../../../src/translations.ts", "../../../src/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { resolvePlugin, parseIntentPlugin, type PluginDefinition, NavigationAction } from '@dxos/app-framework';\nimport { parseClientPlugin } from '@dxos/plugin-client';\nimport { type ActionGroup, createExtension, isActionGroup } from '@dxos/plugin-graph';\nimport { SpaceAction } from '@dxos/plugin-space';\nimport { create } from '@dxos/react-client/echo';\n\nimport { TemplateMain } from './components';\nimport meta, { TEMPLATE_PLUGIN } from './meta';\nimport translations from './translations';\nimport { TemplateAction, type TemplatePluginProvides, isObject } from './types';\n\nconst typename = 'template'; // Type.schema.typename\n\nexport const TemplatePlugin = (): PluginDefinition<TemplatePluginProvides> => {\n return {\n meta,\n provides: {\n metadata: {\n records: {\n [typename]: {\n placeholder: ['object placeholder', { ns: TEMPLATE_PLUGIN }],\n icon: 'ph--asterisk--regular',\n },\n },\n },\n translations,\n graph: {\n builder: (plugins) => {\n const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;\n const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;\n if (!client || !dispatch) {\n return [];\n }\n\n return createExtension({\n id: TemplateAction.CREATE,\n filter: (node): node is ActionGroup => isActionGroup(node) && node.id.startsWith(SpaceAction.ADD_OBJECT),\n actions: ({ node }) => {\n const id = node.id.split('/').at(-1);\n const [spaceId, objectId] = id?.split(':') ?? [];\n const space = client.spaces.get().find((space) => space.id === spaceId);\n const object = objectId && space?.db.getObjectById(objectId);\n const target = objectId ? object : space;\n if (!target) {\n return;\n }\n\n return [\n {\n id: `${TEMPLATE_PLUGIN}/create/${node.id}`,\n data: async () => {\n await dispatch([\n { plugin: TEMPLATE_PLUGIN, action: TemplateAction.CREATE },\n { action: SpaceAction.ADD_OBJECT, data: { target } },\n { action: NavigationAction.OPEN },\n ]);\n },\n properties: {\n label: ['create object label', { ns: TEMPLATE_PLUGIN }],\n icon: 'ph--placeholder--regular',\n testId: 'templatePlugin.createObject',\n },\n },\n ];\n },\n });\n },\n },\n surface: {\n component: ({ data, role }) => {\n switch (role) {\n case 'main': {\n return isObject(data.active) ? <TemplateMain object={data.active} /> : null;\n }\n }\n\n return null;\n },\n },\n intent: {\n resolver: (intent) => {\n switch (intent.action) {\n case TemplateAction.CREATE: {\n // TODO(burdon): Set typename.\n return { data: create({ type: 'template' }) };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\nimport { PublicKey } from '@dxos/react-client';\nimport { type
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { resolvePlugin, parseIntentPlugin, type PluginDefinition, NavigationAction } from '@dxos/app-framework';\nimport { parseClientPlugin } from '@dxos/plugin-client';\nimport { type ActionGroup, createExtension, isActionGroup } from '@dxos/plugin-graph';\nimport { SpaceAction } from '@dxos/plugin-space';\nimport { create } from '@dxos/react-client/echo';\n\nimport { TemplateMain } from './components';\nimport meta, { TEMPLATE_PLUGIN } from './meta';\nimport translations from './translations';\nimport { TemplateAction, type TemplatePluginProvides, isObject } from './types';\n\nconst typename = 'template'; // Type.schema.typename\n\nexport const TemplatePlugin = (): PluginDefinition<TemplatePluginProvides> => {\n return {\n meta,\n provides: {\n metadata: {\n records: {\n [typename]: {\n placeholder: ['object placeholder', { ns: TEMPLATE_PLUGIN }],\n icon: 'ph--asterisk--regular',\n },\n },\n },\n translations,\n graph: {\n builder: (plugins) => {\n const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;\n const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;\n if (!client || !dispatch) {\n return [];\n }\n\n return createExtension({\n id: TemplateAction.CREATE,\n filter: (node): node is ActionGroup => isActionGroup(node) && node.id.startsWith(SpaceAction.ADD_OBJECT),\n actions: ({ node }) => {\n const id = node.id.split('/').at(-1);\n const [spaceId, objectId] = id?.split(':') ?? [];\n const space = client.spaces.get().find((space) => space.id === spaceId);\n const object = objectId && space?.db.getObjectById(objectId);\n const target = objectId ? object : space;\n if (!target) {\n return;\n }\n\n return [\n {\n id: `${TEMPLATE_PLUGIN}/create/${node.id}`,\n data: async () => {\n await dispatch([\n { plugin: TEMPLATE_PLUGIN, action: TemplateAction.CREATE },\n { action: SpaceAction.ADD_OBJECT, data: { target } },\n { action: NavigationAction.OPEN },\n ]);\n },\n properties: {\n label: ['create object label', { ns: TEMPLATE_PLUGIN }],\n icon: 'ph--placeholder--regular',\n testId: 'templatePlugin.createObject',\n },\n },\n ];\n },\n });\n },\n },\n surface: {\n component: ({ data, role }) => {\n switch (role) {\n case 'main': {\n return isObject(data.active) ? <TemplateMain object={data.active} /> : null;\n }\n }\n\n return null;\n },\n },\n intent: {\n resolver: (intent) => {\n switch (intent.action) {\n case TemplateAction.CREATE: {\n // TODO(burdon): Set typename.\n return { data: create({ type: 'template' }) };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\nimport { PublicKey } from '@dxos/react-client';\nimport { type ReactiveEchoObject, getSpace } from '@dxos/react-client/echo';\nimport { Main } from '@dxos/react-ui';\nimport {\n baseSurface,\n topbarBlockPaddingStart,\n fixedInsetFlexLayout,\n bottombarBlockPaddingEnd,\n} from '@dxos/react-ui-theme';\n\nexport const TemplateMain: FC<{ object: ReactiveEchoObject<any> }> = ({ object }) => {\n const space = getSpace(object);\n\n return (\n // TODO(burdon): Boilerplate.\n <Main.Content classNames={[baseSurface, fixedInsetFlexLayout, topbarBlockPaddingStart, bottombarBlockPaddingEnd]}>\n <pre className='m-4 p-2 ring'>\n <span>{space?.key.truncate()}</span>/<span>{PublicKey.from(object.id).truncate()}</span>\n </pre>\n </Main.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { TEMPLATE_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [TEMPLATE_PLUGIN]: {\n 'plugin name': 'Template',\n 'object placeholder': 'New object',\n 'create object label': 'Create object',\n 'delete object label': 'Delete', // TODO(burdon): Standard for actions menu.\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n GraphBuilderProvides,\n IntentResolverProvides,\n TranslationsProvides,\n SurfaceProvides,\n MetadataRecordsProvides,\n} from '@dxos/app-framework';\nimport { isEchoObject, type ReactiveEchoObject } from '@dxos/react-client/echo';\n\nimport { TEMPLATE_PLUGIN } from './meta';\n\nconst TEMPLATE_ACTION = `${TEMPLATE_PLUGIN}/action`;\n\nexport enum TemplateAction {\n CREATE = `${TEMPLATE_ACTION}/create`,\n}\n\nexport type TemplatePluginProvides = SurfaceProvides &\n IntentResolverProvides &\n GraphBuilderProvides &\n MetadataRecordsProvides &\n TranslationsProvides;\n\n// TODO(burdon): Warning: Encountered two children with the same key, `dxos.org/plugin/template`.\n// TODO(burdon): Better way to detect?\nexport const isObject = (object: unknown): object is ReactiveEchoObject<any> => {\n return isEchoObject(object) && object.type === 'template';\n};\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["React", "resolvePlugin", "parseIntentPlugin", "NavigationAction", "parseClientPlugin", "createExtension", "isActionGroup", "SpaceAction", "create", "React", "PublicKey", "getSpace", "Main", "baseSurface", "topbarBlockPaddingStart", "fixedInsetFlexLayout", "bottombarBlockPaddingEnd", "TemplateMain", "object", "space", "getSpace", "Main", "Content", "classNames", "baseSurface", "fixedInsetFlexLayout", "topbarBlockPaddingStart", "bottombarBlockPaddingEnd", "pre", "className", "span", "key", "truncate", "PublicKey", "from", "id", "TEMPLATE_PLUGIN", "isEchoObject", "TEMPLATE_ACTION", "TEMPLATE_PLUGIN", "TemplateAction", "isObject", "object", "isEchoObject", "type", "typename", "TemplatePlugin", "meta", "provides", "metadata", "records", "placeholder", "ns", "TEMPLATE_PLUGIN", "icon", "translations", "graph", "builder", "plugins", "client", "resolvePlugin", "parseClientPlugin", "dispatch", "parseIntentPlugin", "intent", "createExtension", "id", "TemplateAction", "CREATE", "filter", "node", "isActionGroup", "startsWith", "SpaceAction", "ADD_OBJECT", "actions", "split", "at", "spaceId", "objectId", "space", "spaces", "get", "find", "object", "db", "getObjectById", "target", "data", "plugin", "action", "NavigationAction", "OPEN", "properties", "label", "testId", "surface", "component", "role", "isObject", "active", "React", "TemplateMain", "resolver", "create", "type"]
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type FC } from 'react';
|
|
2
|
-
import { type
|
|
2
|
+
import { type ReactiveEchoObject } from '@dxos/react-client/echo';
|
|
3
3
|
export declare const TemplateMain: FC<{
|
|
4
|
-
object:
|
|
4
|
+
object: ReactiveEchoObject<any>;
|
|
5
5
|
}>;
|
|
6
6
|
//# sourceMappingURL=TemplateMain.d.ts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { GraphBuilderProvides, IntentResolverProvides, TranslationsProvides, SurfaceProvides, MetadataRecordsProvides } from '@dxos/app-framework';
|
|
2
|
-
import { type
|
|
2
|
+
import { type ReactiveEchoObject } from '@dxos/react-client/echo';
|
|
3
3
|
export declare enum TemplateAction {
|
|
4
4
|
CREATE = "dxos.org/plugin/template/action/create"
|
|
5
5
|
}
|
|
6
6
|
export type TemplatePluginProvides = SurfaceProvides & IntentResolverProvides & GraphBuilderProvides & MetadataRecordsProvides & TranslationsProvides;
|
|
7
|
-
export declare const isObject: (object: unknown) => object is
|
|
7
|
+
export declare const isObject: (object: unknown) => object is ReactiveEchoObject<any>;
|
|
8
8
|
//# sourceMappingURL=types.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-template",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.2-staging.6d26b2a",
|
|
4
4
|
"description": "Template for new plugin",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@preact/signals-core": "^1.6.0",
|
|
34
|
-
"@dxos/app-framework": "0.7.
|
|
35
|
-
"@dxos/
|
|
36
|
-
"@dxos/plugin-
|
|
37
|
-
"@dxos/
|
|
38
|
-
"@dxos/
|
|
39
|
-
"@dxos/
|
|
34
|
+
"@dxos/app-framework": "0.7.2-staging.6d26b2a",
|
|
35
|
+
"@dxos/plugin-graph": "0.7.2-staging.6d26b2a",
|
|
36
|
+
"@dxos/plugin-space": "0.7.2-staging.6d26b2a",
|
|
37
|
+
"@dxos/react-client": "0.7.2-staging.6d26b2a",
|
|
38
|
+
"@dxos/plugin-client": "0.7.2-staging.6d26b2a",
|
|
39
|
+
"@dxos/async": "0.7.2-staging.6d26b2a"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@phosphor-icons/react": "^2.1.5",
|
|
@@ -45,16 +45,16 @@
|
|
|
45
45
|
"react": "~18.2.0",
|
|
46
46
|
"react-dom": "~18.2.0",
|
|
47
47
|
"vite": "5.4.7",
|
|
48
|
-
"@dxos/react-ui
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/
|
|
48
|
+
"@dxos/react-ui": "0.7.2-staging.6d26b2a",
|
|
49
|
+
"@dxos/react-ui-theme": "0.7.2-staging.6d26b2a",
|
|
50
|
+
"@dxos/storybook-utils": "0.7.2-staging.6d26b2a"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
53
53
|
"@phosphor-icons/react": "^2.1.5",
|
|
54
54
|
"react": "~18.2.0",
|
|
55
55
|
"react-dom": "~18.2.0",
|
|
56
|
-
"@dxos/react-ui
|
|
57
|
-
"@dxos/react-ui": "0.7.
|
|
56
|
+
"@dxos/react-ui": "0.7.2-staging.6d26b2a",
|
|
57
|
+
"@dxos/react-ui-theme": "0.7.2-staging.6d26b2a"
|
|
58
58
|
},
|
|
59
59
|
"publishConfig": {
|
|
60
60
|
"access": "public"
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import React, { type FC } from 'react';
|
|
6
6
|
|
|
7
7
|
import { PublicKey } from '@dxos/react-client';
|
|
8
|
-
import { type
|
|
8
|
+
import { type ReactiveEchoObject, getSpace } from '@dxos/react-client/echo';
|
|
9
9
|
import { Main } from '@dxos/react-ui';
|
|
10
10
|
import {
|
|
11
11
|
baseSurface,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
bottombarBlockPaddingEnd,
|
|
15
15
|
} from '@dxos/react-ui-theme';
|
|
16
16
|
|
|
17
|
-
export const TemplateMain: FC<{ object:
|
|
17
|
+
export const TemplateMain: FC<{ object: ReactiveEchoObject<any> }> = ({ object }) => {
|
|
18
18
|
const space = getSpace(object);
|
|
19
19
|
|
|
20
20
|
return (
|
package/src/types.ts
CHANGED
|
@@ -9,7 +9,7 @@ import type {
|
|
|
9
9
|
SurfaceProvides,
|
|
10
10
|
MetadataRecordsProvides,
|
|
11
11
|
} from '@dxos/app-framework';
|
|
12
|
-
import { isEchoObject, type
|
|
12
|
+
import { isEchoObject, type ReactiveEchoObject } from '@dxos/react-client/echo';
|
|
13
13
|
|
|
14
14
|
import { TEMPLATE_PLUGIN } from './meta';
|
|
15
15
|
|
|
@@ -27,6 +27,6 @@ export type TemplatePluginProvides = SurfaceProvides &
|
|
|
27
27
|
|
|
28
28
|
// TODO(burdon): Warning: Encountered two children with the same key, `dxos.org/plugin/template`.
|
|
29
29
|
// TODO(burdon): Better way to detect?
|
|
30
|
-
export const isObject = (object: unknown): object is
|
|
30
|
+
export const isObject = (object: unknown): object is ReactiveEchoObject<any> => {
|
|
31
31
|
return isEchoObject(object) && object.type === 'template';
|
|
32
32
|
};
|