@operato/board 10.29.0 → 11.0.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@operato/board",
3
- "version": "10.29.0",
3
+ "version": "11.0.0",
4
4
  "description": "Webcomponent for board following open-wc recommendations",
5
5
  "author": "heartyoh",
6
6
  "type": "module",
@@ -120,19 +120,19 @@
120
120
  "dependencies": {
121
121
  "@material/web": "^2.0.0",
122
122
  "@open-wc/scoped-elements": "^2.1.3",
123
- "@operato/app": "^10.29.0",
124
- "@operato/data-grist": "^10.28.2",
125
- "@operato/font": "^10.29.0",
126
- "@operato/graphql": "^10.28.2",
127
- "@operato/i18n": "^10.16.2",
128
- "@operato/input": "^10.23.0",
129
- "@operato/layout": "^10.28.2",
130
- "@operato/markdown": "^10.23.0",
131
- "@operato/popup": "^10.23.0",
132
- "@operato/property-editor": "^10.29.0",
133
- "@operato/property-panel": "^10.29.0",
134
- "@operato/styles": "^10.23.0",
135
- "@operato/utils": "^10.22.0",
123
+ "@operato/app": "^11.0.0",
124
+ "@operato/data-grist": "^11.0.0",
125
+ "@operato/font": "^11.0.0",
126
+ "@operato/graphql": "^11.0.0",
127
+ "@operato/i18n": "^11.0.0",
128
+ "@operato/input": "^11.0.0",
129
+ "@operato/layout": "^11.0.0",
130
+ "@operato/markdown": "^11.0.0",
131
+ "@operato/popup": "^11.0.0",
132
+ "@operato/property-editor": "^11.0.0",
133
+ "@operato/property-panel": "^11.0.0",
134
+ "@operato/styles": "^11.0.0",
135
+ "@operato/utils": "^11.0.0",
136
136
  "@types/file-saver": "^2.0.4",
137
137
  "@types/sortablejs": "^1.10.7",
138
138
  "dexie": "^3.2.2",
@@ -144,7 +144,7 @@
144
144
  "devDependencies": {
145
145
  "@custom-elements-manifest/analyzer": "^0.10.0",
146
146
  "@hatiolab/prettier-config": "^1.0.0",
147
- "@hatiolab/things-scene": "^10.1.56",
147
+ "@hatiolab/things-scene": "^10.1.61",
148
148
  "@open-wc/eslint-config": "^12.0.3",
149
149
  "@open-wc/testing": "^4.0.0",
150
150
  "@rollup/plugin-image": "^3.0.3",
@@ -180,5 +180,5 @@
180
180
  "prettier --write"
181
181
  ]
182
182
  },
183
- "gitHead": "2e0f3e60ce8b1ccd1a999039cc94956fb9f5c1a5"
183
+ "gitHead": "2f1a60d5341bf785141558d13e4a05ca9c186edd"
184
184
  }
@@ -1,6 +1,6 @@
1
1
  import { expect } from '@open-wc/testing'
2
2
 
3
- import { Component, hasFigureV3, registerTypeResolver, resetFiguresV3, resolveUnknownTypes } from '@hatiolab/things-scene'
3
+ import { Component, hasFigure, registerTypeResolver, resetFigures, resolveUnknownTypes } from '@hatiolab/things-scene'
4
4
 
5
5
  import { createFigureResolver } from '../src/figure-provider.js'
6
6
 
@@ -16,12 +16,12 @@ import { createFigureResolver } from '../src/figure-provider.js'
16
16
  * draw nothing at runtime.
17
17
  */
18
18
 
19
- /** What the door hands over: a figure asset under a `format` tag. One box standing on the floor, its room declared. */
20
- const v3AssetOf = (type: string) => ({
21
- version: 'figure-v3-asset-1',
19
+ /** What the door hands over: a figure asset. One box standing on the floor, its room declared. */
20
+ const figureAssetOf = (type: string) => ({
21
+ version: 'figure-asset-1',
22
22
  name: type,
23
23
  document: {
24
- version: 'figure-v3-prototype-1',
24
+ version: 'figure-prototype-1',
25
25
  model: {
26
26
  version: 'r3-spatial-1',
27
27
  inputs: [],
@@ -56,7 +56,7 @@ const v3AssetOf = (type: string) => ({
56
56
  }
57
57
  })
58
58
 
59
- const v3PayloadOf = (type: string) => ({ format: 'v3' as const, type, asset: v3AssetOf(type) })
59
+ const figurePayloadOf = (type: string) => ({ type, asset: figureAssetOf(type) })
60
60
 
61
61
  /** Records what was asked for, and answers from a table. */
62
62
  function fetcherOf(published: Record<string, unknown>, failing: string[] = []) {
@@ -76,11 +76,11 @@ function fetcherOf(published: Record<string, unknown>, failing: string[] = []) {
76
76
 
77
77
  describe('figure 공급자 — 보드가 발행된 Figure 를 받는 길', () => {
78
78
  afterEach(() => {
79
- resetFiguresV3()
79
+ resetFigures()
80
80
  })
81
81
 
82
82
  it('대문자 이름만 서버에 묻는다 — 씬의 기본 type 과 오타는 문을 지나지 않는다', async () => {
83
- const { asked, fetch } = fetcherOf({ EQ_MIXER: v3PayloadOf('EQ_MIXER') })
83
+ const { asked, fetch } = fetcherOf({ EQ_MIXER: figurePayloadOf('EQ_MIXER') })
84
84
 
85
85
  await createFigureResolver(fetch)(['EQ_MIXER', 'rect', 'Conveyor', 'text', 'VEH_AGV_01'])
86
86
 
@@ -88,7 +88,7 @@ describe('figure 공급자 — 보드가 발행된 Figure 를 받는 길', () =>
88
88
  })
89
89
 
90
90
  it('이미 등록된 type 은 묻지 않는다 — 그리고 있는 컴포넌트를 figure 가 덮지 않는다', async () => {
91
- const { asked, fetch } = fetcherOf({ EQ_TAKEN: v3PayloadOf('EQ_TAKEN') })
91
+ const { asked, fetch } = fetcherOf({ EQ_TAKEN: figurePayloadOf('EQ_TAKEN') })
92
92
 
93
93
  /* Somebody else already draws this name — a plugin, an app's own component. */
94
94
  Component.register('EQ_TAKEN', class Taken extends Component {} as never)
@@ -96,31 +96,31 @@ describe('figure 공급자 — 보드가 발행된 Figure 를 받는 길', () =>
96
96
  await createFigureResolver(fetch)(['EQ_TAKEN'])
97
97
 
98
98
  expect(asked).to.deep.equal([])
99
- expect(hasFigureV3('EQ_TAKEN')).to.equal(false)
99
+ expect(hasFigure('EQ_TAKEN')).to.equal(false)
100
100
  })
101
101
 
102
102
  it('받은 자산을 등록한다 — 도면은 type 만 적으면 된다', async () => {
103
- const { fetch } = fetcherOf({ EQ_REGISTERED: v3PayloadOf('EQ_REGISTERED') })
103
+ const { fetch } = fetcherOf({ EQ_REGISTERED: figurePayloadOf('EQ_REGISTERED') })
104
104
 
105
105
  await createFigureResolver(fetch)(['EQ_REGISTERED'])
106
106
 
107
- expect(hasFigureV3('EQ_REGISTERED')).to.equal(true)
107
+ expect(hasFigure('EQ_REGISTERED')).to.equal(true)
108
108
  /* The component type is registered with it — the model writes `type` and nothing else. */
109
109
  expect(Component.register('EQ_REGISTERED')).to.not.equal(undefined)
110
110
  })
111
111
 
112
112
  it('자산은 씬의 문으로 등록한다 — 보드는 그것을 읽지 않고 씬에 넘긴다', async () => {
113
- const { fetch } = fetcherOf({ EQ_V3: v3PayloadOf('EQ_V3') })
113
+ const { fetch } = fetcherOf({ EQ: figurePayloadOf('EQ') })
114
114
 
115
- await createFigureResolver(fetch)(['EQ_V3'])
115
+ await createFigureResolver(fetch)(['EQ'])
116
116
 
117
- expect(hasFigureV3('EQ_V3')).to.equal(true)
117
+ expect(hasFigure('EQ')).to.equal(true)
118
118
  /* 도면은 type 하나만 적으면 그려진다. */
119
- expect(Component.register('EQ_V3')).to.not.equal(undefined)
119
+ expect(Component.register('EQ')).to.not.equal(undefined)
120
120
  })
121
121
 
122
- it('자산이 아닌 것(format 이 v3 가 아닌 답)은 그 type 만 실패로 남는다 — 옛 청사진을 그리지 않는다', async () => {
123
- const { fetch } = fetcherOf({ EQ_NEW: v3PayloadOf('EQ_NEW'), EQ_OLD: { version: 1, type: 'EQ_OLD', groups: [] } })
122
+ it('자산이 없는 답은 그 type 만 실패로 남는다 — 옛 청사진을 그리지 않는다', async () => {
123
+ const { fetch } = fetcherOf({ EQ_NEW: figurePayloadOf('EQ_NEW'), EQ_OLD: { version: 1, type: 'EQ_OLD', groups: [] } })
124
124
 
125
125
  let message = ''
126
126
  try {
@@ -130,25 +130,25 @@ describe('figure 공급자 — 보드가 발행된 Figure 를 받는 길', () =>
130
130
  }
131
131
 
132
132
  expect(message).to.contain('not a figure asset: EQ_OLD')
133
- expect(hasFigureV3('EQ_NEW')).to.equal(true)
134
- expect(hasFigureV3('EQ_OLD')).to.equal(false)
133
+ expect(hasFigure('EQ_NEW')).to.equal(true)
134
+ expect(hasFigure('EQ_OLD')).to.equal(false)
135
135
  })
136
136
 
137
- it('읽을 수 없는 V3 자산은 그 type 만 실패로 남는다', async () => {
138
- const broken = v3PayloadOf('EQ_V3_BROKEN')
137
+ it('읽을 수 없는 자산은 그 type 만 실패로 남는다', async () => {
138
+ const broken = figurePayloadOf('EQ_ASSET_BROKEN')
139
139
  broken.asset.appearance = []
140
- const { fetch } = fetcherOf({ EQ_BESIDE_V3: v3PayloadOf('EQ_BESIDE_V3'), EQ_V3_BROKEN: broken })
140
+ const { fetch } = fetcherOf({ EQ_BESIDE: figurePayloadOf('EQ_BESIDE'), EQ_ASSET_BROKEN: broken })
141
141
 
142
142
  let message = ''
143
143
  try {
144
- await createFigureResolver(fetch)(['EQ_BESIDE_V3', 'EQ_V3_BROKEN'])
144
+ await createFigureResolver(fetch)(['EQ_BESIDE', 'EQ_ASSET_BROKEN'])
145
145
  } catch (error) {
146
146
  message = error instanceof Error ? error.message : String(error)
147
147
  }
148
148
 
149
- expect(message).to.contain('EQ_V3_BROKEN')
150
- expect(hasFigureV3('EQ_BESIDE_V3')).to.equal(true)
151
- expect(hasFigureV3('EQ_V3_BROKEN')).to.equal(false)
149
+ expect(message).to.contain('EQ_ASSET_BROKEN')
150
+ expect(hasFigure('EQ_BESIDE')).to.equal(true)
151
+ expect(hasFigure('EQ_ASSET_BROKEN')).to.equal(false)
152
152
  })
153
153
 
154
154
  it('발행된 것이 없으면 조용히 자리표시로 남는다 — 거절이 아니다', async () => {
@@ -162,11 +162,11 @@ describe('figure 공급자 — 보드가 발행된 Figure 를 받는 길', () =>
162
162
  }
163
163
 
164
164
  expect(rejected).to.equal(false)
165
- expect(hasFigureV3('EQ_NOT_PUBLISHED')).to.equal(false)
165
+ expect(hasFigure('EQ_NOT_PUBLISHED')).to.equal(false)
166
166
  })
167
167
 
168
168
  it('물을 수 없으면 거절한다. 그때도 답을 받은 것은 등록된다', async () => {
169
- const { fetch } = fetcherOf({ EQ_BESIDE_BROKEN: v3PayloadOf('EQ_BESIDE_BROKEN') }, ['EQ_BROKEN'])
169
+ const { fetch } = fetcherOf({ EQ_BESIDE_BROKEN: figurePayloadOf('EQ_BESIDE_BROKEN') }, ['EQ_BROKEN'])
170
170
 
171
171
  let message = ''
172
172
  try {
@@ -177,13 +177,13 @@ describe('figure 공급자 — 보드가 발행된 Figure 를 받는 길', () =>
177
177
 
178
178
  expect(message).to.contain('EQ_BROKEN')
179
179
  expect(message).to.not.contain('EQ_BESIDE_BROKEN')
180
- expect(hasFigureV3('EQ_BESIDE_BROKEN')).to.equal(true)
180
+ expect(hasFigure('EQ_BESIDE_BROKEN')).to.equal(true)
181
181
  })
182
182
 
183
183
  it('읽을 수 없는 자산은 그 type 만 실패로 남는다 — 다른 type 을 막지 않는다', async () => {
184
184
  const { fetch } = fetcherOf({
185
- EQ_BESIDE_MALFORMED: v3PayloadOf('EQ_BESIDE_MALFORMED'),
186
- EQ_MALFORMED: { format: 'v3', type: 'EQ_MALFORMED', asset: { version: 'figure-v3-asset-1' } }
185
+ EQ_BESIDE_MALFORMED: figurePayloadOf('EQ_BESIDE_MALFORMED'),
186
+ EQ_MALFORMED: { type: 'EQ_MALFORMED', asset: { version: 'figure-asset-1' } }
187
187
  })
188
188
 
189
189
  let message = ''
@@ -194,12 +194,12 @@ describe('figure 공급자 — 보드가 발행된 Figure 를 받는 길', () =>
194
194
  }
195
195
 
196
196
  expect(message).to.contain('EQ_MALFORMED')
197
- expect(hasFigureV3('EQ_BESIDE_MALFORMED')).to.equal(true)
198
- expect(hasFigureV3('EQ_MALFORMED')).to.equal(false)
197
+ expect(hasFigure('EQ_BESIDE_MALFORMED')).to.equal(true)
198
+ expect(hasFigure('EQ_MALFORMED')).to.equal(false)
199
199
  })
200
200
 
201
201
  it('씬의 자리에 앉아 동작한다 — 모델의 모르는 type 이 해석 뒤에 남지 않는다', async () => {
202
- const { fetch } = fetcherOf({ EQ_ON_A_BOARD: v3PayloadOf('EQ_ON_A_BOARD') })
202
+ const { fetch } = fetcherOf({ EQ_ON_A_BOARD: figurePayloadOf('EQ_ON_A_BOARD') })
203
203
  const takeBack = registerTypeResolver(createFigureResolver(fetch))
204
204
 
205
205
  try {
@@ -215,7 +215,7 @@ describe('figure 공급자 — 보드가 발행된 Figure 를 받는 길', () =>
215
215
 
216
216
  expect(resolution.unresolved).to.deep.equal(['EQ_NEVER_PUBLISHED'])
217
217
  expect(resolution.failed).to.deep.equal([])
218
- expect(hasFigureV3('EQ_ON_A_BOARD')).to.equal(true)
218
+ expect(hasFigure('EQ_ON_A_BOARD')).to.equal(true)
219
219
  } finally {
220
220
  takeBack()
221
221
  }
@@ -2,7 +2,7 @@ import { expect, fixture, html } from '@open-wc/testing'
2
2
  import type { LitElement } from 'lit'
3
3
  import { executeServerCommand } from '@web/test-runner-commands'
4
4
 
5
- import { registerTypeResolver, resetFiguresV3 } from '@hatiolab/things-scene'
5
+ import { registerTypeResolver, resetFigures } from '@hatiolab/things-scene'
6
6
 
7
7
  import { createResolvedScene } from '../src/resolved-scene.js'
8
8
  import '../src/ox-board-preview.js'
@@ -51,7 +51,7 @@ describe('모르는 type 이 없으면 아무에게도 묻지 않는다', () =>
51
51
 
52
52
  afterEach(() => {
53
53
  takeBack()
54
- resetFiguresV3()
54
+ resetFigures()
55
55
  })
56
56
 
57
57
  it('씬의 기본 type 만 있는 보드는 공급자를 부르지 않는다', async () => {
@@ -77,7 +77,7 @@ describe('기다리는 동안 화면이 바뀌면 늦게 온 씬은 들어서지
77
77
 
78
78
  afterEach(() => {
79
79
  takeBack?.()
80
- resetFiguresV3()
80
+ resetFigures()
81
81
  })
82
82
 
83
83
  it('앞의 모델을 풀고 돌아왔을 때 미리보기가 다른 모델을 들고 있으면 그 씬은 버린다', async () => {