@fmsim/board 1.0.83 → 1.0.88
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/custom-elements.json +1247 -1058
- package/demo/index-player.html +1 -5
- package/demo/index-viewer.html +1 -5
- package/demo/index.html +1 -5
- package/dist/src/data-storage/board-model-cache.d.ts +13 -0
- package/dist/src/data-storage/board-model-cache.js +66 -0
- package/dist/src/data-storage/board-model-cache.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
package/demo/index-player.html
CHANGED
|
@@ -80,11 +80,7 @@
|
|
|
80
80
|
mode: 0,
|
|
81
81
|
refProvider: provider,
|
|
82
82
|
handlers: ['mcs-event-handler', 'zoom-handler', 'shift-handler'],
|
|
83
|
-
layers: [
|
|
84
|
-
{ type: 'decorator-layer' },
|
|
85
|
-
{ type: 'scroll-layer' },
|
|
86
|
-
{ type: 'movement-layer', id: 'movement-layer' }
|
|
87
|
-
]
|
|
83
|
+
layers: [{ type: 'scroll-layer' }, { type: 'movement-layer', id: 'movement-layer' }]
|
|
88
84
|
})
|
|
89
85
|
}
|
|
90
86
|
resolve(scene, board)
|
package/demo/index-viewer.html
CHANGED
|
@@ -80,11 +80,7 @@
|
|
|
80
80
|
mode: 0,
|
|
81
81
|
refProvider: provider,
|
|
82
82
|
handlers: ['mcs-event-handler', 'zoom-handler', 'shift-handler'],
|
|
83
|
-
layers: [
|
|
84
|
-
{ type: 'decorator-layer' },
|
|
85
|
-
{ type: 'scroll-layer' },
|
|
86
|
-
{ type: 'movement-layer', id: 'movement-layer' }
|
|
87
|
-
]
|
|
83
|
+
layers: [{ type: 'scroll-layer' }, { type: 'movement-layer', id: 'movement-layer' }]
|
|
88
84
|
})
|
|
89
85
|
}
|
|
90
86
|
resolve(scene, board)
|
package/demo/index.html
CHANGED
|
@@ -80,11 +80,7 @@
|
|
|
80
80
|
mode: 0,
|
|
81
81
|
refProvider: provider,
|
|
82
82
|
handlers: ['mcs-event-handler', 'zoom-handler', 'shift-handler'],
|
|
83
|
-
layers: [
|
|
84
|
-
{ type: 'decorator-layer' },
|
|
85
|
-
{ type: 'scroll-layer' },
|
|
86
|
-
{ type: 'movement-layer', id: 'movement-layer' }
|
|
87
|
-
]
|
|
83
|
+
layers: [{ type: 'scroll-layer' }, { type: 'movement-layer', id: 'movement-layer' }]
|
|
88
84
|
})
|
|
89
85
|
}
|
|
90
86
|
resolve(scene, board)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface CachedBoard {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
model: any;
|
|
5
|
+
updatedAt: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class BoardModelCache {
|
|
8
|
+
static get(boardId: string): Promise<CachedBoard | null>;
|
|
9
|
+
static put(boardId: string, name: string, model: string, updatedAt: string): Promise<void>;
|
|
10
|
+
static isValid(boardId: string, serverUpdatedAt: string): Promise<boolean>;
|
|
11
|
+
static remove(boardId: string): Promise<void>;
|
|
12
|
+
static clear(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* BoardModelCache — 보드 모델 JSON을 IndexedDB에 캐싱.
|
|
5
|
+
*
|
|
6
|
+
* 캐시 히트 시 네트워크 대기 없이 즉시 scene 생성 가능.
|
|
7
|
+
* updatedAt 비교로 캐시 무효화.
|
|
8
|
+
*/
|
|
9
|
+
import Dexie from 'dexie';
|
|
10
|
+
class BoardModelDatabase extends Dexie {
|
|
11
|
+
constructor() {
|
|
12
|
+
super('board-model-cache');
|
|
13
|
+
this.version(1).stores({
|
|
14
|
+
board_models: 'id'
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const db = new BoardModelDatabase();
|
|
19
|
+
export class BoardModelCache {
|
|
20
|
+
static async get(boardId) {
|
|
21
|
+
try {
|
|
22
|
+
const record = await db.board_models.get(boardId);
|
|
23
|
+
if (!record)
|
|
24
|
+
return null;
|
|
25
|
+
return {
|
|
26
|
+
id: record.id,
|
|
27
|
+
name: record.name,
|
|
28
|
+
model: JSON.parse(record.model),
|
|
29
|
+
updatedAt: record.updatedAt
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
catch (_a) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
static async put(boardId, name, model, updatedAt) {
|
|
37
|
+
try {
|
|
38
|
+
await db.board_models.put({ id: boardId, name, model, updatedAt, cachedAt: Date.now() });
|
|
39
|
+
}
|
|
40
|
+
catch (_a) {
|
|
41
|
+
// 캐시 저장 실패는 무시
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
static async isValid(boardId, serverUpdatedAt) {
|
|
45
|
+
try {
|
|
46
|
+
const record = await db.board_models.get(boardId);
|
|
47
|
+
return (record === null || record === void 0 ? void 0 : record.updatedAt) === serverUpdatedAt;
|
|
48
|
+
}
|
|
49
|
+
catch (_a) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
static async remove(boardId) {
|
|
54
|
+
try {
|
|
55
|
+
await db.board_models.delete(boardId);
|
|
56
|
+
}
|
|
57
|
+
catch ( /* ignore */_a) { /* ignore */ }
|
|
58
|
+
}
|
|
59
|
+
static async clear() {
|
|
60
|
+
try {
|
|
61
|
+
await db.board_models.clear();
|
|
62
|
+
}
|
|
63
|
+
catch ( /* ignore */_a) { /* ignore */ }
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=board-model-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-model-cache.js","sourceRoot":"","sources":["../../../src/data-storage/board-model-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,MAAM,kBAAmB,SAAQ,KAAK;IAGpC;QACE,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAC1B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACrB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAA;IACJ,CAAC;CACF;AAED,MAAM,EAAE,GAAG,IAAI,kBAAkB,EAAE,CAAA;AASnC,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAe;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACjD,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAA;YACxB,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAA;QACH,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAe,EAAE,IAAY,EAAE,KAAa,EAAE,SAAiB;QAC9E,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC1F,CAAC;QAAC,WAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,eAAuB;QAC3D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACjD,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,MAAK,eAAe,CAAA;QAC9C,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAe;QACjC,IAAI,CAAC;YAAC,MAAM,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAAC,CAAC;QAAC,QAAQ,YAAY,IAAd,CAAC,CAAC,YAAY,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC;YAAC,MAAM,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;QAAC,CAAC;QAAC,QAAQ,YAAY,IAAd,CAAC,CAAC,YAAY,CAAC,CAAC;IAC9D,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n *\n * BoardModelCache — 보드 모델 JSON을 IndexedDB에 캐싱.\n *\n * 캐시 히트 시 네트워크 대기 없이 즉시 scene 생성 가능.\n * updatedAt 비교로 캐시 무효화.\n */\n\nimport Dexie from 'dexie'\n\ninterface IBoardModelRecord {\n id: string\n name: string\n model: string // JSON string (파싱 전)\n updatedAt: string\n cachedAt: number\n}\n\nclass BoardModelDatabase extends Dexie {\n board_models!: Dexie.Table<IBoardModelRecord, string>\n\n constructor() {\n super('board-model-cache')\n this.version(1).stores({\n board_models: 'id'\n })\n }\n}\n\nconst db = new BoardModelDatabase()\n\nexport interface CachedBoard {\n id: string\n name: string\n model: any\n updatedAt: string\n}\n\nexport class BoardModelCache {\n static async get(boardId: string): Promise<CachedBoard | null> {\n try {\n const record = await db.board_models.get(boardId)\n if (!record) return null\n return {\n id: record.id,\n name: record.name,\n model: JSON.parse(record.model),\n updatedAt: record.updatedAt\n }\n } catch {\n return null\n }\n }\n\n static async put(boardId: string, name: string, model: string, updatedAt: string): Promise<void> {\n try {\n await db.board_models.put({ id: boardId, name, model, updatedAt, cachedAt: Date.now() })\n } catch {\n // 캐시 저장 실패는 무시\n }\n }\n\n static async isValid(boardId: string, serverUpdatedAt: string): Promise<boolean> {\n try {\n const record = await db.board_models.get(boardId)\n return record?.updatedAt === serverUpdatedAt\n } catch {\n return false\n }\n }\n\n static async remove(boardId: string): Promise<void> {\n try { await db.board_models.delete(boardId) } catch { /* ignore */ }\n }\n\n static async clear(): Promise<void> {\n try { await db.board_models.clear() } catch { /* ignore */ }\n }\n}\n"]}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from './types.js';
|
|
2
2
|
export { registerDefaultGroups } from './component/register-default-groups.js';
|
|
3
3
|
export { DataStorage } from './data-storage/data-storage.js';
|
|
4
|
+
export { BoardModelCache } from './data-storage/board-model-cache.js';
|
|
5
|
+
export type { CachedBoard } from './data-storage/board-model-cache.js';
|
|
4
6
|
export * from './ox-board-viewer.js';
|
|
5
7
|
export * from './ox-board-modeller.js';
|
|
6
8
|
export * from './ox-board-list.js';
|
package/dist/src/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './types.js';
|
|
2
2
|
export { registerDefaultGroups } from './component/register-default-groups.js';
|
|
3
3
|
export { DataStorage } from './data-storage/data-storage.js';
|
|
4
|
+
export { BoardModelCache } from './data-storage/board-model-cache.js';
|
|
4
5
|
export * from './ox-board-viewer.js';
|
|
5
6
|
export * from './ox-board-modeller.js';
|
|
6
7
|
export * from './ox-board-list.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,WAAW,EAAE,MAAM,gCAAgC,CAAA;
|
|
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,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AAGrE,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAElC,cAAc,sBAAsB,CAAA","sourcesContent":["export * from './types.js'\n\nexport { registerDefaultGroups } from './component/register-default-groups.js'\nexport { DataStorage } 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-modeller.js'\nexport * from './ox-board-list.js'\n\nexport * from './component/index.js'\n"]}
|