@dxos/plugin-chess 0.7.4 → 0.7.5-feature-compute.4d9d99a
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/ChessContainer-EG4RG2MG.mjs +26 -0
- package/dist/lib/browser/ChessContainer-EG4RG2MG.mjs.map +7 -0
- package/dist/lib/browser/chunk-6NAJOKLY.mjs +548 -0
- package/dist/lib/browser/chunk-6NAJOKLY.mjs.map +7 -0
- package/dist/lib/browser/chunk-E24G3MMK.mjs +8 -0
- package/dist/lib/browser/chunk-E24G3MMK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BG7NXK4E.mjs → chunk-TRMP2D26.mjs} +28 -7
- package/dist/lib/browser/chunk-TRMP2D26.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +65 -621
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/intent-resolver-HTTI4M6I.mjs +19 -0
- package/dist/lib/browser/intent-resolver-HTTI4M6I.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-surface-O2LZGJGS.mjs +28 -0
- package/dist/lib/browser/react-surface-O2LZGJGS.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +1 -2
- package/dist/lib/node/ChessContainer-TSXBWAED.cjs +52 -0
- package/dist/lib/node/ChessContainer-TSXBWAED.cjs.map +7 -0
- package/dist/lib/node/chunk-DI3I3BWN.cjs +40 -0
- package/dist/lib/node/chunk-DI3I3BWN.cjs.map +7 -0
- package/dist/lib/node/{chunk-3VNSWSKR.cjs → chunk-NQRTWXBJ.cjs} +31 -9
- package/dist/lib/node/chunk-NQRTWXBJ.cjs.map +7 -0
- package/dist/lib/node/chunk-P2LVKNZF.cjs +574 -0
- package/dist/lib/node/chunk-P2LVKNZF.cjs.map +7 -0
- package/dist/lib/node/index.cjs +63 -599
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/{meta.cjs → intent-resolver-7CF7WQVU.cjs} +15 -11
- package/dist/lib/node/intent-resolver-7CF7WQVU.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/react-surface-X5VT3F77.cjs +51 -0
- package/dist/lib/node/react-surface-X5VT3F77.cjs.map +7 -0
- package/dist/lib/node/types/index.cjs +5 -6
- package/dist/lib/node/types/index.cjs.map +2 -2
- package/dist/lib/node-esm/ChessContainer-GP2KGMVU.mjs +27 -0
- package/dist/lib/node-esm/ChessContainer-GP2KGMVU.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-6DPPWWHM.mjs +550 -0
- package/dist/lib/node-esm/chunk-6DPPWWHM.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-RIQ5MOYO.mjs → chunk-OJWLLKVP.mjs} +28 -6
- package/dist/lib/node-esm/chunk-OJWLLKVP.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-RMXO453C.mjs +10 -0
- package/dist/lib/node-esm/chunk-RMXO453C.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +65 -621
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/intent-resolver-NWEEQVXB.mjs +20 -0
- package/dist/lib/node-esm/intent-resolver-NWEEQVXB.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/react-surface-S4UTZKHT.mjs +29 -0
- package/dist/lib/node-esm/react-surface-S4UTZKHT.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +1 -2
- package/dist/types/src/ChessPlugin.d.ts +1 -3
- package/dist/types/src/ChessPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +3 -0
- package/dist/types/src/capabilities/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts +4 -0
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- package/dist/types/src/components/ChessContainer.d.ts.map +1 -1
- package/dist/types/src/components/Chessboard/Chessboard.d.ts +2 -2
- package/dist/types/src/components/Chessboard/Chessboard.d.ts.map +1 -1
- package/dist/types/src/components/Chessboard/Chessboard.stories.d.ts +14 -3
- package/dist/types/src/components/Chessboard/Chessboard.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +10 -8
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +15 -6
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/package.json +20 -26
- package/src/ChessPlugin.tsx +46 -89
- package/src/capabilities/index.ts +8 -0
- package/src/capabilities/intent-resolver.ts +18 -0
- package/src/capabilities/react-surface.tsx +22 -0
- package/src/components/ChessContainer.tsx +3 -2
- package/src/components/Chessboard/Chessboard.stories.tsx +21 -8
- package/src/components/Chessboard/Chessboard.tsx +30 -17
- package/src/components/index.ts +3 -0
- package/src/index.ts +2 -3
- package/src/meta.ts +1 -1
- package/src/types/schema.ts +1 -0
- package/src/types/types.ts +11 -20
- package/dist/lib/browser/chunk-2H2BTWYT.mjs +0 -15
- package/dist/lib/browser/chunk-2H2BTWYT.mjs.map +0 -7
- package/dist/lib/browser/chunk-BG7NXK4E.mjs.map +0 -7
- package/dist/lib/browser/meta.mjs +0 -9
- package/dist/lib/browser/meta.mjs.map +0 -7
- package/dist/lib/node/chunk-3VNSWSKR.cjs.map +0 -7
- package/dist/lib/node/chunk-Q4NVPVPX.cjs +0 -38
- package/dist/lib/node/chunk-Q4NVPVPX.cjs.map +0 -7
- package/dist/lib/node/meta.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-RIQ5MOYO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WNE2FPQW.mjs +0 -17
- package/dist/lib/node-esm/chunk-WNE2FPQW.mjs.map +0 -7
- package/dist/lib/node-esm/meta.mjs +0 -10
- package/dist/lib/node-esm/meta.mjs.map +0 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-chess",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.5-feature-compute.4d9d99a",
|
|
4
4
|
"description": "Chess for new plugin",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -13,11 +13,6 @@
|
|
|
13
13
|
"browser": "./dist/lib/browser/index.mjs",
|
|
14
14
|
"node": "./dist/lib/node-esm/index.mjs"
|
|
15
15
|
},
|
|
16
|
-
"./meta": {
|
|
17
|
-
"types": "./dist/types/src/meta.d.ts",
|
|
18
|
-
"browser": "./dist/lib/browser/meta.mjs",
|
|
19
|
-
"node": "./dist/lib/node-esm/meta.mjs"
|
|
20
|
-
},
|
|
21
16
|
"./types": {
|
|
22
17
|
"types": "./dist/types/src/types/index.d.ts",
|
|
23
18
|
"browser": "./dist/lib/browser/types/index.mjs",
|
|
@@ -27,9 +22,6 @@
|
|
|
27
22
|
"types": "dist/types/src/index.d.ts",
|
|
28
23
|
"typesVersions": {
|
|
29
24
|
"*": {
|
|
30
|
-
"meta": [
|
|
31
|
-
"dist/types/src/meta.d.ts"
|
|
32
|
-
],
|
|
33
25
|
"types": [
|
|
34
26
|
"dist/types/src/types/index.d.ts"
|
|
35
27
|
]
|
|
@@ -42,19 +34,21 @@
|
|
|
42
34
|
"dependencies": {
|
|
43
35
|
"@effect/schema": "^0.75.5",
|
|
44
36
|
"@preact/signals-core": "^1.6.0",
|
|
45
|
-
"chess.js": "^1.0.0
|
|
46
|
-
"react-chessboard": "^4.7.
|
|
37
|
+
"chess.js": "^1.0.0",
|
|
38
|
+
"react-chessboard": "^4.7.2",
|
|
39
|
+
"react-dnd-html5-backend": "^16.0.1",
|
|
47
40
|
"react-resize-detector": "^11.0.1",
|
|
48
|
-
"@dxos/
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/echo-schema": "0.7.
|
|
53
|
-
"@dxos/
|
|
54
|
-
"@dxos/plugin-graph": "0.7.
|
|
55
|
-
"@dxos/
|
|
56
|
-
"@dxos/
|
|
57
|
-
"@dxos/
|
|
41
|
+
"@dxos/async": "0.7.5-feature-compute.4d9d99a",
|
|
42
|
+
"@dxos/app-framework": "0.7.5-feature-compute.4d9d99a",
|
|
43
|
+
"@dxos/display-name": "0.7.5-feature-compute.4d9d99a",
|
|
44
|
+
"@dxos/invariant": "0.7.5-feature-compute.4d9d99a",
|
|
45
|
+
"@dxos/echo-schema": "0.7.5-feature-compute.4d9d99a",
|
|
46
|
+
"@dxos/live-object": "0.7.5-feature-compute.4d9d99a",
|
|
47
|
+
"@dxos/plugin-graph": "0.7.5-feature-compute.4d9d99a",
|
|
48
|
+
"@dxos/plugin-client": "0.7.5-feature-compute.4d9d99a",
|
|
49
|
+
"@dxos/plugin-space": "0.7.5-feature-compute.4d9d99a",
|
|
50
|
+
"@dxos/react-client": "0.7.5-feature-compute.4d9d99a",
|
|
51
|
+
"@dxos/react-ui-stack": "0.7.5-feature-compute.4d9d99a"
|
|
58
52
|
},
|
|
59
53
|
"devDependencies": {
|
|
60
54
|
"@phosphor-icons/react": "^2.1.5",
|
|
@@ -63,16 +57,16 @@
|
|
|
63
57
|
"react": "~18.2.0",
|
|
64
58
|
"react-dom": "~18.2.0",
|
|
65
59
|
"vite": "5.4.7",
|
|
66
|
-
"@dxos/react-ui": "0.7.
|
|
67
|
-
"@dxos/react-ui
|
|
68
|
-
"@dxos/storybook-utils": "0.7.
|
|
60
|
+
"@dxos/react-ui-theme": "0.7.5-feature-compute.4d9d99a",
|
|
61
|
+
"@dxos/react-ui": "0.7.5-feature-compute.4d9d99a",
|
|
62
|
+
"@dxos/storybook-utils": "0.7.5-feature-compute.4d9d99a"
|
|
69
63
|
},
|
|
70
64
|
"peerDependencies": {
|
|
71
65
|
"@phosphor-icons/react": "^2.1.5",
|
|
72
66
|
"react": "~18.2.0",
|
|
73
67
|
"react-dom": "~18.2.0",
|
|
74
|
-
"@dxos/react-ui": "0.7.
|
|
75
|
-
"@dxos/react-ui-theme": "0.7.
|
|
68
|
+
"@dxos/react-ui": "0.7.5-feature-compute.4d9d99a",
|
|
69
|
+
"@dxos/react-ui-theme": "0.7.5-feature-compute.4d9d99a"
|
|
76
70
|
},
|
|
77
71
|
"publishConfig": {
|
|
78
72
|
"access": "public"
|
package/src/ChessPlugin.tsx
CHANGED
|
@@ -2,98 +2,55 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import {
|
|
6
|
+
Capabilities,
|
|
7
|
+
contributes,
|
|
8
|
+
createIntent,
|
|
9
|
+
defineModule,
|
|
10
|
+
definePlugin,
|
|
11
|
+
Events,
|
|
12
|
+
oneOf,
|
|
13
|
+
} from '@dxos/app-framework';
|
|
14
|
+
import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
|
|
6
15
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { parseClientPlugin } from '@dxos/plugin-client';
|
|
10
|
-
import { type ActionGroup, createExtension, isActionGroup } from '@dxos/plugin-graph';
|
|
11
|
-
import { SpaceAction } from '@dxos/plugin-space';
|
|
12
|
-
|
|
13
|
-
import ChessContainer from './components/ChessContainer';
|
|
14
|
-
import meta, { CHESS_PLUGIN } from './meta';
|
|
16
|
+
import { IntentResolver, ReactSurface } from './capabilities';
|
|
17
|
+
import { CHESS_PLUGIN, meta } from './meta';
|
|
15
18
|
import translations from './translations';
|
|
16
|
-
import { ChessAction,
|
|
19
|
+
import { ChessAction, GameType } from './types';
|
|
17
20
|
|
|
18
|
-
export const ChessPlugin = ()
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
export const ChessPlugin = () =>
|
|
22
|
+
definePlugin(meta, [
|
|
23
|
+
defineModule({
|
|
24
|
+
id: `${meta.id}/module/translations`,
|
|
25
|
+
activatesOn: Events.SetupTranslations,
|
|
26
|
+
activate: () => contributes(Capabilities.Translations, translations),
|
|
27
|
+
}),
|
|
28
|
+
defineModule({
|
|
29
|
+
id: `${meta.id}/module/metadata`,
|
|
30
|
+
activatesOn: oneOf(Events.Startup, Events.SetupAppGraph),
|
|
31
|
+
activate: () =>
|
|
32
|
+
contributes(Capabilities.Metadata, {
|
|
33
|
+
id: GameType.typename,
|
|
34
|
+
metadata: {
|
|
35
|
+
createObject: (props: { name?: string }) => createIntent(ChessAction.Create, props),
|
|
26
36
|
placeholder: ['game title placeholder', { ns: CHESS_PLUGIN }],
|
|
27
37
|
icon: 'ph--shield-chevron--regular',
|
|
28
38
|
},
|
|
29
|
-
},
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const [spaceId, objectId] = id?.split(':') ?? [];
|
|
48
|
-
const space = client.spaces.get().find((space) => space.id === spaceId);
|
|
49
|
-
const object = objectId && space?.db.getObjectById(objectId);
|
|
50
|
-
const target = objectId ? object : space;
|
|
51
|
-
if (!target) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return [
|
|
56
|
-
{
|
|
57
|
-
id: `${CHESS_PLUGIN}/create/${node.id}`,
|
|
58
|
-
data: async () => {
|
|
59
|
-
await dispatch([
|
|
60
|
-
{ plugin: CHESS_PLUGIN, action: ChessAction.CREATE },
|
|
61
|
-
{ action: SpaceAction.ADD_OBJECT, data: { target } },
|
|
62
|
-
{ action: NavigationAction.OPEN },
|
|
63
|
-
]);
|
|
64
|
-
},
|
|
65
|
-
properties: {
|
|
66
|
-
label: ['create game label', { ns: CHESS_PLUGIN }],
|
|
67
|
-
icon: 'ph--shield-chevron--regular',
|
|
68
|
-
testId: 'chessPlugin.createObject',
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
];
|
|
72
|
-
},
|
|
73
|
-
});
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
translations,
|
|
77
|
-
surface: {
|
|
78
|
-
component: ({ data, role }) => {
|
|
79
|
-
switch (role) {
|
|
80
|
-
case 'article':
|
|
81
|
-
case 'section':
|
|
82
|
-
return isObject(data.object) ? <ChessContainer game={data.object} role={role} /> : null;
|
|
83
|
-
default:
|
|
84
|
-
return null;
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
intent: {
|
|
89
|
-
resolver: (intent) => {
|
|
90
|
-
switch (intent.action) {
|
|
91
|
-
case ChessAction.CREATE: {
|
|
92
|
-
return { data: create(GameType, {}) };
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
|
-
},
|
|
97
|
-
},
|
|
98
|
-
};
|
|
99
|
-
};
|
|
39
|
+
}),
|
|
40
|
+
}),
|
|
41
|
+
defineModule({
|
|
42
|
+
id: `${meta.id}/module/schema`,
|
|
43
|
+
activatesOn: ClientEvents.SetupClient,
|
|
44
|
+
activate: () => contributes(ClientCapabilities.Schema, [GameType]),
|
|
45
|
+
}),
|
|
46
|
+
defineModule({
|
|
47
|
+
id: `${meta.id}/module/react-surface`,
|
|
48
|
+
activatesOn: Events.Startup,
|
|
49
|
+
activate: ReactSurface,
|
|
50
|
+
}),
|
|
51
|
+
defineModule({
|
|
52
|
+
id: `${meta.id}/module/intent-resolver`,
|
|
53
|
+
activatesOn: Events.Startup,
|
|
54
|
+
activate: IntentResolver,
|
|
55
|
+
}),
|
|
56
|
+
]);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Capabilities, contributes, createResolver } from '@dxos/app-framework';
|
|
6
|
+
import { create } from '@dxos/live-object';
|
|
7
|
+
|
|
8
|
+
import { ChessAction, GameType } from '../types';
|
|
9
|
+
|
|
10
|
+
export default () =>
|
|
11
|
+
contributes(
|
|
12
|
+
Capabilities.IntentResolver,
|
|
13
|
+
createResolver(ChessAction.Create, ({ name }) => ({
|
|
14
|
+
data: {
|
|
15
|
+
object: create(GameType, { name }),
|
|
16
|
+
},
|
|
17
|
+
})),
|
|
18
|
+
);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React from 'react';
|
|
6
|
+
|
|
7
|
+
import { Capabilities, contributes, createSurface } from '@dxos/app-framework';
|
|
8
|
+
|
|
9
|
+
import { ChessContainer } from '../components';
|
|
10
|
+
import { CHESS_PLUGIN } from '../meta';
|
|
11
|
+
import { isObject, type GameType } from '../types';
|
|
12
|
+
|
|
13
|
+
export default () =>
|
|
14
|
+
contributes(
|
|
15
|
+
Capabilities.ReactSurface,
|
|
16
|
+
createSurface({
|
|
17
|
+
id: CHESS_PLUGIN,
|
|
18
|
+
role: ['article', 'section'],
|
|
19
|
+
filter: (data): data is { subject: GameType } => isObject(data.subject),
|
|
20
|
+
component: ({ data, role }) => <ChessContainer game={data.subject} role={role} />,
|
|
21
|
+
}),
|
|
22
|
+
);
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import React, { type ComponentProps } from 'react';
|
|
6
6
|
|
|
7
7
|
import { getSpace } from '@dxos/react-client/echo';
|
|
8
|
+
import { StackItem } from '@dxos/react-ui-stack';
|
|
8
9
|
|
|
9
10
|
import { Chess } from './Chess';
|
|
10
11
|
|
|
@@ -15,9 +16,9 @@ const ChessContainer = ({ game, role }: Pick<ComponentProps<typeof Chess>, 'game
|
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
return (
|
|
18
|
-
<
|
|
19
|
+
<StackItem.Content toolbar={false}>
|
|
19
20
|
<Chess game={game} space={space} playerSelector={role === 'article'} />
|
|
20
|
-
</
|
|
21
|
+
</StackItem.Content>
|
|
21
22
|
);
|
|
22
23
|
};
|
|
23
24
|
|
|
@@ -7,11 +7,12 @@ import '@dxos-theme';
|
|
|
7
7
|
import { Chess } from 'chess.js';
|
|
8
8
|
import React, { useState } from 'react';
|
|
9
9
|
|
|
10
|
+
import { mx } from '@dxos/react-ui-theme';
|
|
10
11
|
import { withTheme } from '@dxos/storybook-utils';
|
|
11
12
|
|
|
12
13
|
import { Chessboard, type ChessModel, type ChessMove, ChessPanel } from './Chessboard';
|
|
13
14
|
|
|
14
|
-
const Story = () => {
|
|
15
|
+
const Story = ({ size, panel = false }: { size?: 'large' | 'small'; panel: boolean }) => {
|
|
15
16
|
const [model, setModel] = useState<ChessModel>({ chess: new Chess() });
|
|
16
17
|
const handleUpdate = (move: ChessMove) => {
|
|
17
18
|
if (model.chess.move(move)) {
|
|
@@ -21,12 +22,14 @@ const Story = () => {
|
|
|
21
22
|
|
|
22
23
|
return (
|
|
23
24
|
<div className='flex flex-row'>
|
|
24
|
-
<div className='w-[
|
|
25
|
-
<Chessboard model={model}
|
|
26
|
-
</div>
|
|
27
|
-
<div className='w-[160px] ml-8'>
|
|
28
|
-
<ChessPanel model={model} />
|
|
25
|
+
<div className={mx(size === 'small' ? 'w-[320px]' : 'w-[640px]')}>
|
|
26
|
+
<Chessboard model={model} onUpdate={handleUpdate} />
|
|
29
27
|
</div>
|
|
28
|
+
{panel && (
|
|
29
|
+
<div className='w-[160px] ml-8'>
|
|
30
|
+
<ChessPanel model={model} />
|
|
31
|
+
</div>
|
|
32
|
+
)}
|
|
30
33
|
</div>
|
|
31
34
|
);
|
|
32
35
|
};
|
|
@@ -38,6 +41,16 @@ export default {
|
|
|
38
41
|
decorators: [withTheme],
|
|
39
42
|
};
|
|
40
43
|
|
|
41
|
-
export const Default = {
|
|
42
|
-
|
|
44
|
+
export const Default = {};
|
|
45
|
+
|
|
46
|
+
export const Panel = {
|
|
47
|
+
args: {
|
|
48
|
+
panel: true,
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export const Micro = {
|
|
53
|
+
args: {
|
|
54
|
+
size: 'small',
|
|
55
|
+
},
|
|
43
56
|
};
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
import { ArrowURightDown, Circle } from '@phosphor-icons/react';
|
|
6
6
|
import { Chess, type Color } from 'chess.js';
|
|
7
|
-
import React, { type FC } from 'react';
|
|
8
|
-
import { Chessboard as ReactChessboard } from 'react-chessboard';
|
|
7
|
+
import React, { useRef, type FC } from 'react';
|
|
8
|
+
import { ChessboardDnDProvider, Chessboard as ReactChessboard } from 'react-chessboard';
|
|
9
|
+
import { HTML5Backend } from 'react-dnd-html5-backend';
|
|
9
10
|
import { useResizeDetector } from 'react-resize-detector';
|
|
10
11
|
|
|
11
12
|
import { getSize, mx } from '@dxos/react-ui-theme';
|
|
@@ -68,8 +69,8 @@ export type ChessboardProps = {
|
|
|
68
69
|
};
|
|
69
70
|
|
|
70
71
|
/**
|
|
71
|
-
* https://
|
|
72
|
-
* https://
|
|
72
|
+
* https://github.com/jhlywa/chess.js
|
|
73
|
+
* https://react-chessboard.com/?path=/story/example-chessboard--configurable-board
|
|
73
74
|
*/
|
|
74
75
|
export const Chessboard = ({
|
|
75
76
|
model: { chess },
|
|
@@ -79,7 +80,8 @@ export const Chessboard = ({
|
|
|
79
80
|
pieces = ChessPieces.STANDARD,
|
|
80
81
|
onUpdate,
|
|
81
82
|
}: ChessboardProps) => {
|
|
82
|
-
const
|
|
83
|
+
const chessRoot = useRef<HTMLDivElement>(null);
|
|
84
|
+
const { ref, width, height } = useResizeDetector();
|
|
83
85
|
const style = boardStyles[boardStyle];
|
|
84
86
|
|
|
85
87
|
const handleDrop = (source: any, target: any, piece: any) => {
|
|
@@ -99,19 +101,30 @@ export const Chessboard = ({
|
|
|
99
101
|
}
|
|
100
102
|
};
|
|
101
103
|
|
|
102
|
-
// https://react-chessboard.com/?path=/story/example-chessboard--configurable-board
|
|
103
104
|
return (
|
|
104
|
-
<div ref={ref} className='flex
|
|
105
|
-
<
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
105
|
+
<div ref={ref} className='flex w-full h-full justify-center items-center'>
|
|
106
|
+
<div
|
|
107
|
+
className='flex w-full justify-center'
|
|
108
|
+
style={{ width: width && height ? Math.min(width, height) : undefined }}
|
|
109
|
+
>
|
|
110
|
+
<div ref={chessRoot} className='w-full relative' style={{ transform: 'translate3d(0, 0, 0)' }}>
|
|
111
|
+
{/* TODO(burdon): Prevents interference with external DND, but drag position is broken. Fix for touch also. */}
|
|
112
|
+
<ChessboardDnDProvider debugMode={true} backend={HTML5Backend} options={{ rootElement: chessRoot.current }}>
|
|
113
|
+
<ReactChessboard
|
|
114
|
+
boardWidth={width && height ? Math.min(width, height) : undefined}
|
|
115
|
+
boardOrientation={orientation === 'w' ? 'white' : 'black'}
|
|
116
|
+
allowDragOutsideBoard={false}
|
|
117
|
+
arePiecesDraggable={true}
|
|
118
|
+
// arePiecesDraggable={!readonly}
|
|
119
|
+
customPieces={chessPieces[pieces]}
|
|
120
|
+
position={chess.fen()}
|
|
121
|
+
onPieceDrop={handleDrop}
|
|
122
|
+
{...style}
|
|
123
|
+
{...props}
|
|
124
|
+
/>
|
|
125
|
+
</ChessboardDnDProvider>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
115
128
|
</div>
|
|
116
129
|
);
|
|
117
130
|
};
|
package/src/components/index.ts
CHANGED
package/src/index.ts
CHANGED
package/src/meta.ts
CHANGED
package/src/types/schema.ts
CHANGED
|
@@ -16,6 +16,7 @@ export const MoveSchema = S.mutable(
|
|
|
16
16
|
|
|
17
17
|
export class GameType extends TypedObject({ typename: 'dxos.org/type/Chess', version: '0.1.0' })(
|
|
18
18
|
{
|
|
19
|
+
name: S.optional(S.String),
|
|
19
20
|
playerWhite: S.String,
|
|
20
21
|
playerBlack: S.String,
|
|
21
22
|
moves: S.mutable(S.Array(S.String)),
|
package/src/types/types.ts
CHANGED
|
@@ -2,34 +2,25 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
GraphBuilderProvides,
|
|
7
|
-
IntentResolverProvides,
|
|
8
|
-
MetadataRecordsProvides,
|
|
9
|
-
SurfaceProvides,
|
|
10
|
-
TranslationsProvides,
|
|
11
|
-
} from '@dxos/app-framework';
|
|
5
|
+
import { S } from '@dxos/echo-schema';
|
|
12
6
|
import { isReactiveObject } from '@dxos/live-object';
|
|
13
|
-
import { type SchemaProvides } from '@dxos/plugin-space';
|
|
14
7
|
|
|
15
8
|
import { GameType } from './schema';
|
|
16
9
|
import { CHESS_PLUGIN } from '../meta';
|
|
17
10
|
|
|
18
|
-
|
|
11
|
+
export namespace ChessAction {
|
|
12
|
+
const CHESS_ACTION = `${CHESS_PLUGIN}/action`;
|
|
19
13
|
|
|
20
|
-
export
|
|
21
|
-
|
|
14
|
+
export class Create extends S.TaggedClass<Create>()(`${CHESS_ACTION}/create`, {
|
|
15
|
+
input: S.Struct({
|
|
16
|
+
name: S.optional(S.String),
|
|
17
|
+
}),
|
|
18
|
+
output: S.Struct({
|
|
19
|
+
object: GameType,
|
|
20
|
+
}),
|
|
21
|
+
}) {}
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
export type ChessProvides = {};
|
|
25
|
-
|
|
26
|
-
export type ChessPluginProvides = SurfaceProvides &
|
|
27
|
-
IntentResolverProvides &
|
|
28
|
-
GraphBuilderProvides &
|
|
29
|
-
MetadataRecordsProvides &
|
|
30
|
-
TranslationsProvides &
|
|
31
|
-
SchemaProvides;
|
|
32
|
-
|
|
33
24
|
export const isObject = (object: unknown): object is GameType => {
|
|
34
25
|
return isReactiveObject(object) && object instanceof GameType;
|
|
35
26
|
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// packages/plugins/plugin-chess/src/meta.ts
|
|
2
|
-
var CHESS_PLUGIN = "dxos.org/plugin/chess";
|
|
3
|
-
var meta_default = {
|
|
4
|
-
id: CHESS_PLUGIN,
|
|
5
|
-
name: "Chess",
|
|
6
|
-
description: "Play chess.",
|
|
7
|
-
icon: "ph--shield-chevron--regular",
|
|
8
|
-
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-chess"
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export {
|
|
12
|
-
CHESS_PLUGIN,
|
|
13
|
-
meta_default
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=chunk-2H2BTWYT.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const CHESS_PLUGIN = 'dxos.org/plugin/chess';\n\nexport default {\n id: CHESS_PLUGIN,\n name: 'Chess',\n description: 'Play chess.',\n icon: 'ph--shield-chevron--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-chess',\n} satisfies PluginMeta;\n"],
|
|
5
|
-
"mappings": ";AAMO,IAAMA,eAAe;AAE5B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;AACV;",
|
|
6
|
-
"names": ["CHESS_PLUGIN", "id", "name", "description", "icon", "source"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { S, TypedObject } from '@dxos/echo-schema';\n\nexport const MoveSchema = S.mutable(\n S.partial(\n S.Struct({\n source: S.String,\n target: S.String,\n piece: S.String,\n }),\n ),\n);\n\nexport class GameType extends TypedObject({ typename: 'dxos.org/type/Chess', version: '0.1.0' })(\n {\n playerWhite: S.String,\n playerBlack: S.String,\n moves: S.mutable(S.Array(S.String)),\n pgn: S.String,\n },\n { partial: true },\n) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n GraphBuilderProvides,\n IntentResolverProvides,\n MetadataRecordsProvides,\n SurfaceProvides,\n TranslationsProvides,\n} from '@dxos/app-framework';\nimport { isReactiveObject } from '@dxos/live-object';\nimport { type SchemaProvides } from '@dxos/plugin-space';\n\nimport { GameType } from './schema';\nimport { CHESS_PLUGIN } from '../meta';\n\nconst CHESS_ACTION = `${CHESS_PLUGIN}/action`;\n\nexport enum ChessAction {\n CREATE = `${CHESS_ACTION}/create`,\n}\n\nexport type ChessProvides = {};\n\nexport type ChessPluginProvides = SurfaceProvides &\n IntentResolverProvides &\n GraphBuilderProvides &\n MetadataRecordsProvides &\n TranslationsProvides &\n SchemaProvides;\n\nexport const isObject = (object: unknown): object is GameType => {\n return isReactiveObject(object) && object instanceof GameType;\n};\n"],
|
|
5
|
-
"mappings": ";;;;;AAIA,SAASA,GAAGC,mBAAmB;AAExB,IAAMC,aAAaC,EAAEC,QAC1BD,EAAEE,QACAF,EAAEG,OAAO;EACPC,QAAQJ,EAAEK;EACVC,QAAQN,EAAEK;EACVE,OAAOP,EAAEK;AACX,CAAA,CAAA,CAAA;AAIG,IAAMG,WAAN,cAAuBC,YAAY;EAAEC,UAAU;EAAuBC,SAAS;AAAQ,CAAA,EAC5F;EACEC,aAAaZ,EAAEK;EACfQ,aAAab,EAAEK;EACfS,OAAOd,EAAEC,QAAQD,EAAEe,MAAMf,EAAEK,MAAM,CAAA;EACjCW,KAAKhB,EAAEK;AACT,GACA;EAAEH,SAAS;AAAK,CAAA,EAAA;AACf;;;ACbH,SAASe,wBAAwB;AAMjC,IAAMC,eAAe,GAAGC,YAAAA;;UAEZC,cAAAA;wCACD,GAAGF,YAAAA,SAAqB,IAAA;GADvBE,gBAAAA,cAAAA,CAAAA,EAAAA;AAaL,IAAMC,WAAW,CAACC,WAAAA;AACvB,SAAOC,iBAAiBD,MAAAA,KAAWA,kBAAkBE;AACvD;",
|
|
6
|
-
"names": ["S", "TypedObject", "MoveSchema", "S", "mutable", "partial", "Struct", "source", "String", "target", "piece", "GameType", "TypedObject", "typename", "version", "playerWhite", "playerBlack", "moves", "Array", "pgn", "isReactiveObject", "CHESS_ACTION", "CHESS_PLUGIN", "ChessAction", "isObject", "object", "isReactiveObject", "GameType"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { S, TypedObject } from '@dxos/echo-schema';\n\nexport const MoveSchema = S.mutable(\n S.partial(\n S.Struct({\n source: S.String,\n target: S.String,\n piece: S.String,\n }),\n ),\n);\n\nexport class GameType extends TypedObject({ typename: 'dxos.org/type/Chess', version: '0.1.0' })(\n {\n playerWhite: S.String,\n playerBlack: S.String,\n moves: S.mutable(S.Array(S.String)),\n pgn: S.String,\n },\n { partial: true },\n) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n GraphBuilderProvides,\n IntentResolverProvides,\n MetadataRecordsProvides,\n SurfaceProvides,\n TranslationsProvides,\n} from '@dxos/app-framework';\nimport { isReactiveObject } from '@dxos/live-object';\nimport { type SchemaProvides } from '@dxos/plugin-space';\n\nimport { GameType } from './schema';\nimport { CHESS_PLUGIN } from '../meta';\n\nconst CHESS_ACTION = `${CHESS_PLUGIN}/action`;\n\nexport enum ChessAction {\n CREATE = `${CHESS_ACTION}/create`,\n}\n\nexport type ChessProvides = {};\n\nexport type ChessPluginProvides = SurfaceProvides &\n IntentResolverProvides &\n GraphBuilderProvides &\n MetadataRecordsProvides &\n TranslationsProvides &\n SchemaProvides;\n\nexport const isObject = (object: unknown): object is GameType => {\n return isReactiveObject(object) && object instanceof GameType;\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAA+B;ACO/B,yBAAiC;ADL1B,IAAMA,aAAaC,qBAAEC,QAC1BD,qBAAEE,QACAF,qBAAEG,OAAO;EACPC,QAAQJ,qBAAEK;EACVC,QAAQN,qBAAEK;EACVE,OAAOP,qBAAEK;AACX,CAAA,CAAA,CAAA;AAIG,IAAMG,WAAN,kBAAuBC,gCAAY;EAAEC,UAAU;EAAuBC,SAAS;AAAQ,CAAA,EAC5F;EACEC,aAAaZ,qBAAEK;EACfQ,aAAab,qBAAEK;EACfS,OAAOd,qBAAEC,QAAQD,qBAAEe,MAAMf,qBAAEK,MAAM,CAAA;EACjCW,KAAKhB,qBAAEK;AACT,GACA;EAAEH,SAAS;AAAK,CAAA,EAAA;AACf;ACPH,IAAMe,eAAe,GAAGC,kCAAAA;;UAEZC,cAAAA;wCACD,GAAGF,YAAAA,SAAqB,IAAA;GADvBE,gBAAAA,cAAAA,CAAAA,EAAAA;AAaL,IAAMC,WAAW,CAACC,WAAAA;AACvB,aAAOC,qCAAiBD,MAAAA,KAAWA,kBAAkBb;AACvD;",
|
|
6
|
-
"names": ["MoveSchema", "S", "mutable", "partial", "Struct", "source", "String", "target", "piece", "GameType", "TypedObject", "typename", "version", "playerWhite", "playerBlack", "moves", "Array", "pgn", "CHESS_ACTION", "CHESS_PLUGIN", "ChessAction", "isObject", "object", "isReactiveObject"]
|
|
7
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var chunk_Q4NVPVPX_exports = {};
|
|
20
|
-
__export(chunk_Q4NVPVPX_exports, {
|
|
21
|
-
CHESS_PLUGIN: () => CHESS_PLUGIN,
|
|
22
|
-
meta_default: () => meta_default
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(chunk_Q4NVPVPX_exports);
|
|
25
|
-
var CHESS_PLUGIN = "dxos.org/plugin/chess";
|
|
26
|
-
var meta_default = {
|
|
27
|
-
id: CHESS_PLUGIN,
|
|
28
|
-
name: "Chess",
|
|
29
|
-
description: "Play chess.",
|
|
30
|
-
icon: "ph--shield-chevron--regular",
|
|
31
|
-
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-chess"
|
|
32
|
-
};
|
|
33
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
34
|
-
0 && (module.exports = {
|
|
35
|
-
CHESS_PLUGIN,
|
|
36
|
-
meta_default
|
|
37
|
-
});
|
|
38
|
-
//# sourceMappingURL=chunk-Q4NVPVPX.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const CHESS_PLUGIN = 'dxos.org/plugin/chess';\n\nexport default {\n id: CHESS_PLUGIN,\n name: 'Chess',\n description: 'Play chess.',\n icon: 'ph--shield-chevron--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-chess',\n} satisfies PluginMeta;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,eAAe;AAE5B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;AACV;",
|
|
6
|
-
"names": ["CHESS_PLUGIN", "id", "name", "description", "icon", "source"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["meta.cjs"],
|
|
4
|
-
"sourcesContent": ["import {\n CHESS_PLUGIN,\n meta_default\n} from \"./chunk-Q4NVPVPX.cjs\";\nexport {\n CHESS_PLUGIN,\n meta_default as default\n};\n//# sourceMappingURL=meta.cjs.map\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAGO;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|