@operato/board 10.13.0 → 10.14.0
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/CHANGELOG.md +14 -0
- package/dist/src/board-placement-palette.d.ts +39 -0
- package/dist/src/board-placement-palette.js +8 -0
- package/dist/src/board-placement-palette.js.map +1 -0
- package/dist/src/board-provider.d.ts +3 -0
- package/dist/src/board-provider.js +90 -0
- package/dist/src/board-provider.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,20 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [10.14.0](https://github.com/hatiolab/operato/compare/v10.13.0...v10.14.0) (2026-09-17)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### :rocket: New Features
|
|
10
|
+
|
|
11
|
+
* **board:** take in the board provider and the placement palette registry ([466c7fd](https://github.com/hatiolab/operato/commit/466c7fd33d7185529559e27f76d29fee3a0880fd))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### :hammer: Build System
|
|
15
|
+
|
|
16
|
+
* **board:** declare the two new entry points for node10 resolution ([9f8d042](https://github.com/hatiolab/operato/commit/9f8d0425846a8c8925e18c8f1cca8915ececce37))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
6
20
|
## [10.13.0](https://github.com/hatiolab/operato/compare/v10.12.0...v10.13.0) (2026-09-15)
|
|
7
21
|
|
|
8
22
|
**Note:** Version bump only for package @operato/board
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface BoardPlacementItem {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
sub?: string;
|
|
5
|
+
/**
|
|
6
|
+
* 계층에서의 부모 — 있으면 트레이가 **트리로** 보여 줄 수 있다. 없으면 최상위.
|
|
7
|
+
*
|
|
8
|
+
* 호스트가 안 주면 예전처럼 평평한 목록이다(선택 사항). 부모를 못 찾은 항목은 **버리지 않고**
|
|
9
|
+
* 최상위로 올린다 — 목록에서 조용히 사라지면 저작하는 사람은 "그런 게 없네" 로 끝난다.
|
|
10
|
+
*/
|
|
11
|
+
parentId?: string;
|
|
12
|
+
/** 종류 묶음 — 있으면 트레이가 **종류별로** 보여 줄 수 있다(같은 종류 여럿에 한 번에 배치). */
|
|
13
|
+
group?: string;
|
|
14
|
+
}
|
|
15
|
+
/** 한 항목의 가능한 표현(N:M). key = 호스트가 정하는 표현 식별자(같은 항목 안에서 유일해야 한다). */
|
|
16
|
+
export interface BoardPlacementView {
|
|
17
|
+
key: string;
|
|
18
|
+
label: string;
|
|
19
|
+
sub?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface BoardPlacementProvider {
|
|
22
|
+
label?: string;
|
|
23
|
+
/** 이 board 의 배치 후보(전체). 비어있으면 트레이 숨김. boardId 로 컨텍스트 해소. */
|
|
24
|
+
items(boardId: string): BoardPlacementItem[] | Promise<BoardPlacementItem[]>;
|
|
25
|
+
/** 항목의 가능한 표현들(능력×목적, N:M). 없으면(미지정) 단일 componentFor 로 동작. */
|
|
26
|
+
viewsFor?(itemId: string): BoardPlacementView[];
|
|
27
|
+
/** 선택한 view(또는 기본)로 추가할 things-scene 컴포넌트 model(반드시 `tag` 포함). null=표현 없음. */
|
|
28
|
+
componentFor(item: BoardPlacementItem, viewKey?: string): any;
|
|
29
|
+
/**
|
|
30
|
+
* 배치된 컴포넌트 → 그것이 어느 표현인지(`viewsFor` 가 준 key). 트레이가 "이미 놓았는지" 를 판단한다.
|
|
31
|
+
*
|
|
32
|
+
* 구현하지 않으면 트레이는 컴포넌트 `type` 을 key 로 보고 비교한다 — `viewsFor` 의 key 가 type 과 다른
|
|
33
|
+
* 호스트는 **반드시 구현해야 한다.** 구현하지 않으면 이미 놓은 표현도 계속 "안 놓음" 으로 보이고,
|
|
34
|
+
* "모두 자동 배치" 가 같은 것을 또 놓는다.
|
|
35
|
+
*/
|
|
36
|
+
viewKeyOfComponent?(component: any): string | null;
|
|
37
|
+
}
|
|
38
|
+
export declare function registerBoardPlacementProvider(p: BoardPlacementProvider): void;
|
|
39
|
+
export declare function boardPlacementProvider(): BoardPlacementProvider | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-placement-palette.js","sourceRoot":"","sources":["../../src/board-placement-palette.ts"],"names":[],"mappings":"AAiDA,IAAI,SAAS,GAAkC,IAAI,CAAA;AACnD,MAAM,UAAU,8BAA8B,CAAC,CAAyB;IACtE,SAAS,GAAG,CAAC,CAAA;AACf,CAAC;AACD,MAAM,UAAU,sBAAsB;IACpC,OAAO,SAAS,CAAA;AAClB,CAAC","sourcesContent":["/*\n * board 배치 팔레트 — 일반(표현-무관) 확장점. 호스트가 \"보드에 배치할 항목\"을 공급하고,\n * board-modeller 가 트레이로 노출 + place 시 컴포넌트를 생성한다. board 제품(@operato/board)은 무변경,\n * 이 통합층(board-ui)이 훅만 제공. 트윈은 이 훅의 호스트 구현자일 뿐(트윈 전용 로직 없음).\n *\n * 대칭: operato-twin map-modeller 의 \"미배치 노드 트레이\"(A2)를 board 표현으로 확장하는 일반 메커니즘.\n * place 는 board-edit 'add' op(기존 채널)로 컴포넌트를 추가하고, 컴포넌트 model 의 `tag` 로 라이브 결합\n * (board-provider 가 data(tag:) 구독). 이미 배치됨 = scene 에 같은 tag 컴포넌트 존재.\n */\nexport interface BoardPlacementItem {\n id: string // 곧 컴포넌트 tag (라이브 결합 키)\n label: string\n sub?: string\n /**\n * 계층에서의 부모 — 있으면 트레이가 **트리로** 보여 줄 수 있다. 없으면 최상위.\n *\n * 호스트가 안 주면 예전처럼 평평한 목록이다(선택 사항). 부모를 못 찾은 항목은 **버리지 않고**\n * 최상위로 올린다 — 목록에서 조용히 사라지면 저작하는 사람은 \"그런 게 없네\" 로 끝난다.\n */\n parentId?: string\n /** 종류 묶음 — 있으면 트레이가 **종류별로** 보여 줄 수 있다(같은 종류 여럿에 한 번에 배치). */\n group?: string\n}\n\n/** 한 항목의 가능한 표현(N:M). key = 호스트가 정하는 표현 식별자(같은 항목 안에서 유일해야 한다). */\nexport interface BoardPlacementView {\n key: string\n label: string\n sub?: string\n}\n\nexport interface BoardPlacementProvider {\n label?: string // 트레이 제목(기본 \"미배치\")\n /** 이 board 의 배치 후보(전체). 비어있으면 트레이 숨김. boardId 로 컨텍스트 해소. */\n items(boardId: string): BoardPlacementItem[] | Promise<BoardPlacementItem[]>\n /** 항목의 가능한 표현들(능력×목적, N:M). 없으면(미지정) 단일 componentFor 로 동작. */\n viewsFor?(itemId: string): BoardPlacementView[]\n /** 선택한 view(또는 기본)로 추가할 things-scene 컴포넌트 model(반드시 `tag` 포함). null=표현 없음. */\n componentFor(item: BoardPlacementItem, viewKey?: string): any\n /**\n * 배치된 컴포넌트 → 그것이 어느 표현인지(`viewsFor` 가 준 key). 트레이가 \"이미 놓았는지\" 를 판단한다.\n *\n * 구현하지 않으면 트레이는 컴포넌트 `type` 을 key 로 보고 비교한다 — `viewsFor` 의 key 가 type 과 다른\n * 호스트는 **반드시 구현해야 한다.** 구현하지 않으면 이미 놓은 표현도 계속 \"안 놓음\" 으로 보이고,\n * \"모두 자동 배치\" 가 같은 것을 또 놓는다.\n */\n viewKeyOfComponent?(component: any): string | null\n}\n\nlet _provider: BoardPlacementProvider | null = null\nexport function registerBoardPlacementProvider(p: BoardPlacementProvider): void {\n _provider = p\n}\nexport function boardPlacementProvider(): BoardPlacementProvider | null {\n return _provider\n}\n"]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import gql from 'graphql-tag';
|
|
2
|
+
import { create, error, ReferenceMap } from '@hatiolab/things-scene';
|
|
3
|
+
import { BoardDataStorage } from './data-storage/data-storage.js';
|
|
4
|
+
import { BoardModelCache } from './data-storage/board-model-cache.js';
|
|
5
|
+
import { client, gqlContext, subscribe } from '@operato/graphql';
|
|
6
|
+
export function createBoardProvider() {
|
|
7
|
+
const _provider = new ReferenceMap(async (boardId, resolve, reject) => {
|
|
8
|
+
var _a;
|
|
9
|
+
const startTime = performance.now();
|
|
10
|
+
try {
|
|
11
|
+
const cached = await BoardModelCache.get(boardId);
|
|
12
|
+
const response = await client.query({
|
|
13
|
+
query: gql `
|
|
14
|
+
query FetchBoardById($id: String!, $cachedUpdatedAt: String) {
|
|
15
|
+
board(id: $id, cachedUpdatedAt: $cachedUpdatedAt) {
|
|
16
|
+
model
|
|
17
|
+
updatedAt
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
`,
|
|
21
|
+
variables: { id: boardId, cachedUpdatedAt: cached === null || cached === void 0 ? void 0 : cached.updatedAt },
|
|
22
|
+
context: gqlContext()
|
|
23
|
+
});
|
|
24
|
+
const board = (_a = response.data) === null || _a === void 0 ? void 0 : _a.board;
|
|
25
|
+
if (!board) {
|
|
26
|
+
reject(new Error('Failed to get the requested board.'));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
let model;
|
|
30
|
+
if (board.model === null && cached) {
|
|
31
|
+
// 캐시 유효
|
|
32
|
+
model = cached.model;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
// 새 모델
|
|
36
|
+
model = JSON.parse(board.model);
|
|
37
|
+
await BoardModelCache.put(boardId, '', board.model, board.updatedAt);
|
|
38
|
+
}
|
|
39
|
+
let scene;
|
|
40
|
+
try {
|
|
41
|
+
scene = await provider.get(boardId);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
scene = create({
|
|
45
|
+
model,
|
|
46
|
+
mode: 0,
|
|
47
|
+
refProvider: provider,
|
|
48
|
+
dataStorage: new BoardDataStorage(boardId),
|
|
49
|
+
loading: { startTime },
|
|
50
|
+
dataSubscriptionProvider: {
|
|
51
|
+
subscribe: async (tag, component) => {
|
|
52
|
+
return await subscribe({
|
|
53
|
+
query: gql `
|
|
54
|
+
subscription {
|
|
55
|
+
data(tag: "${tag}") {
|
|
56
|
+
tag
|
|
57
|
+
data
|
|
58
|
+
ts
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
`
|
|
62
|
+
}, {
|
|
63
|
+
next: async ({ data }) => {
|
|
64
|
+
var _a, _b, _c;
|
|
65
|
+
if (data) {
|
|
66
|
+
const payload = data.data;
|
|
67
|
+
(_c = (_b = (_a = component.app) === null || _a === void 0 ? void 0 : _a.lagTracker) === null || _b === void 0 ? void 0 : _b.record) === null || _c === void 0 ? void 0 : _c.call(_b, payload.tag, payload.ts);
|
|
68
|
+
component.data = payload.data;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
},
|
|
73
|
+
dispose() { }
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
// s.app.baseUrl = undefined;
|
|
77
|
+
}
|
|
78
|
+
resolve(scene);
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
error(e);
|
|
82
|
+
reject(e);
|
|
83
|
+
}
|
|
84
|
+
}, async (id, ref) => {
|
|
85
|
+
ref.dispose();
|
|
86
|
+
});
|
|
87
|
+
return _provider;
|
|
88
|
+
}
|
|
89
|
+
export const provider = createBoardProvider();
|
|
90
|
+
//# sourceMappingURL=board-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-provider.js","sourceRoot":"","sources":["../../src/board-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import gql from 'graphql-tag'\n\nimport { create, error, ReferenceMap, Scene } from '@hatiolab/things-scene'\nimport { BoardDataStorage } from './data-storage/data-storage.js'\nimport { BoardModelCache } from './data-storage/board-model-cache.js'\nimport { client, gqlContext, subscribe } from '@operato/graphql'\n\nexport function createBoardProvider() {\n const _provider = new ReferenceMap(\n async (boardId, resolve, reject): Promise<any> => {\n const startTime = performance.now()\n try {\n const cached = await BoardModelCache.get(boardId)\n\n const response = await client.query({\n query: gql`\n query FetchBoardById($id: String!, $cachedUpdatedAt: String) {\n board(id: $id, cachedUpdatedAt: $cachedUpdatedAt) {\n model\n updatedAt\n }\n }\n `,\n variables: { id: boardId, cachedUpdatedAt: cached?.updatedAt },\n context: gqlContext()\n })\n\n const board = response.data?.board\n\n if (!board) {\n reject(new Error('Failed to get the requested board.'))\n return\n }\n\n let model: any\n if (board.model === null && cached) {\n // 캐시 유효\n model = cached.model\n } else {\n // 새 모델\n model = JSON.parse(board.model)\n await BoardModelCache.put(boardId, '', board.model, board.updatedAt)\n }\n\n let scene: Scene\n\n try {\n scene = await provider.get(boardId)\n } catch (e) {\n scene = create({\n model,\n mode: 0,\n refProvider: provider as any,\n dataStorage: new BoardDataStorage(boardId),\n loading: { startTime },\n dataSubscriptionProvider: {\n subscribe: async (tag: string, component: any) => {\n return await subscribe(\n {\n query: gql`\n subscription {\n data(tag: \"${tag}\") {\n tag\n data\n ts\n }\n }\n `\n },\n {\n next: async ({ data }: any) => {\n if (data) {\n const payload = data.data\n // 전달 지연 기록 (scene/app 레벨 트래커) — ts 는 component.data 에 넣지 않음.\n ;(component as any).app?.lagTracker?.record?.(payload.tag, payload.ts)\n component.data = payload.data\n }\n }\n }\n )\n },\n\n dispose() {}\n }\n } as any)\n\n // s.app.baseUrl = undefined;\n }\n\n resolve(scene)\n } catch (e) {\n error(e)\n reject(e)\n }\n },\n async (id, ref) => {\n ref.dispose()\n }\n )\n\n return _provider\n}\n\nexport const provider = createBoardProvider()\n"]}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export { registerDefaultGroups } from './component/register-default-groups.js';
|
|
|
3
3
|
export { BoardDataStorage, PlaylistStorage } from './data-storage/data-storage.js';
|
|
4
4
|
export { BoardModelCache } from './data-storage/board-model-cache.js';
|
|
5
5
|
export type { CachedBoard } from './data-storage/board-model-cache.js';
|
|
6
|
+
export * from './board-provider.js';
|
|
7
|
+
export * from './board-placement-palette.js';
|
|
6
8
|
export * from './ox-board-viewer.js';
|
|
7
9
|
export * from './ox-board-preview.js';
|
|
8
10
|
export * from './ox-board-player.js';
|
package/dist/src/index.js
CHANGED
|
@@ -2,6 +2,10 @@ export * from './types.js';
|
|
|
2
2
|
export { registerDefaultGroups } from './component/register-default-groups.js';
|
|
3
3
|
export { BoardDataStorage, PlaylistStorage } from './data-storage/data-storage.js';
|
|
4
4
|
export { BoardModelCache } from './data-storage/board-model-cache.js';
|
|
5
|
+
/* Loading a saved board by id, and keeping its data bindings live. */
|
|
6
|
+
export * from './board-provider.js';
|
|
7
|
+
/* The modeller tray asks a host app what it has to place; this is where the host registers. */
|
|
8
|
+
export * from './board-placement-palette.js';
|
|
5
9
|
export * from './ox-board-viewer.js';
|
|
6
10
|
export * from './ox-board-preview.js';
|
|
7
11
|
export * from './ox-board-player.js';
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAE1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AAGrE,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA","sourcesContent":["export * from './types.js'\n\nexport { registerDefaultGroups } from './component/register-default-groups.js'\nexport { BoardDataStorage, PlaylistStorage } from './data-storage/data-storage.js'\nexport { BoardModelCache } from './data-storage/board-model-cache.js'\nexport type { CachedBoard } from './data-storage/board-model-cache.js'\n\nexport * from './ox-board-viewer.js'\nexport * from './ox-board-preview.js'\nexport * from './ox-board-player.js'\nexport * from './ox-board-modeller.js'\nexport * from './ox-board-list.js'\nexport * from './ox-board-template-viewer.js'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAE1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AAGrE,sEAAsE;AACtE,cAAc,qBAAqB,CAAA;AACnC,+FAA+F;AAC/F,cAAc,8BAA8B,CAAA;AAE5C,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA","sourcesContent":["export * from './types.js'\n\nexport { registerDefaultGroups } from './component/register-default-groups.js'\nexport { BoardDataStorage, PlaylistStorage } from './data-storage/data-storage.js'\nexport { BoardModelCache } from './data-storage/board-model-cache.js'\nexport type { CachedBoard } from './data-storage/board-model-cache.js'\n\n/* Loading a saved board by id, and keeping its data bindings live. */\nexport * from './board-provider.js'\n/* The modeller tray asks a host app what it has to place; this is where the host registers. */\nexport * from './board-placement-palette.js'\n\nexport * from './ox-board-viewer.js'\nexport * from './ox-board-preview.js'\nexport * from './ox-board-player.js'\nexport * from './ox-board-modeller.js'\nexport * from './ox-board-list.js'\nexport * from './ox-board-template-viewer.js'\n"]}
|