@needle-tools/engine 3.2.14-alpha → 3.3.0-alpha

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.
Files changed (101) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/needle-engine.js +42139 -35749
  3. package/dist/needle-engine.min.js +694 -516
  4. package/dist/needle-engine.umd.cjs +696 -518
  5. package/lib/engine/codegen/register_types.js +4 -2
  6. package/lib/engine/codegen/register_types.js.map +1 -1
  7. package/lib/engine/engine_addressables.d.ts +3 -3
  8. package/lib/engine/engine_addressables.js +30 -9
  9. package/lib/engine/engine_addressables.js.map +1 -1
  10. package/lib/engine/engine_element.js +1 -1
  11. package/lib/engine/engine_element.js.map +1 -1
  12. package/lib/engine/engine_gameobject.d.ts +2 -1
  13. package/lib/engine/engine_gameobject.js +17 -0
  14. package/lib/engine/engine_gameobject.js.map +1 -1
  15. package/lib/engine/engine_input.js +10 -0
  16. package/lib/engine/engine_input.js.map +1 -1
  17. package/lib/engine/engine_license.js +11 -24
  18. package/lib/engine/engine_license.js.map +1 -1
  19. package/lib/engine/engine_math.d.ts +4 -0
  20. package/lib/engine/engine_math.js +6 -0
  21. package/lib/engine/engine_math.js.map +1 -1
  22. package/lib/engine-components/AnimatorController.js +7 -2
  23. package/lib/engine-components/AnimatorController.js.map +1 -1
  24. package/lib/engine-components/OrbitControls.js +13 -4
  25. package/lib/engine-components/OrbitControls.js.map +1 -1
  26. package/lib/engine-components/SceneSwitcher.d.ts +1 -1
  27. package/lib/engine-components/SceneSwitcher.js +25 -1
  28. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  29. package/lib/engine-components/TransformGizmo.d.ts +8 -4
  30. package/lib/engine-components/TransformGizmo.js +62 -63
  31. package/lib/engine-components/TransformGizmo.js.map +1 -1
  32. package/lib/engine-components/codegen/components.d.ts +2 -1
  33. package/lib/engine-components/codegen/components.js +2 -1
  34. package/lib/engine-components/codegen/components.js.map +1 -1
  35. package/lib/engine-components/export/usdz/USDZExporter.d.ts +1 -0
  36. package/lib/engine-components/export/usdz/USDZExporter.js +10 -2
  37. package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
  38. package/lib/engine-components/ui/Button.js +9 -5
  39. package/lib/engine-components/ui/Button.js.map +1 -1
  40. package/lib/engine-components/ui/Canvas.d.ts +13 -6
  41. package/lib/engine-components/ui/Canvas.js +101 -37
  42. package/lib/engine-components/ui/Canvas.js.map +1 -1
  43. package/lib/engine-components/ui/EventSystem.d.ts +6 -0
  44. package/lib/engine-components/ui/EventSystem.js +4 -4
  45. package/lib/engine-components/ui/EventSystem.js.map +1 -1
  46. package/lib/engine-components/ui/Graphic.d.ts +5 -2
  47. package/lib/engine-components/ui/Graphic.js +38 -7
  48. package/lib/engine-components/ui/Graphic.js.map +1 -1
  49. package/lib/engine-components/ui/Image.d.ts +1 -0
  50. package/lib/engine-components/ui/Image.js +10 -1
  51. package/lib/engine-components/ui/Image.js.map +1 -1
  52. package/lib/engine-components/ui/InputField.d.ts +1 -0
  53. package/lib/engine-components/ui/InputField.js +8 -0
  54. package/lib/engine-components/ui/InputField.js.map +1 -1
  55. package/lib/engine-components/ui/Interfaces.d.ts +8 -0
  56. package/lib/engine-components/ui/Outline.d.ts +7 -0
  57. package/lib/engine-components/ui/Outline.js +21 -0
  58. package/lib/engine-components/ui/Outline.js.map +1 -0
  59. package/lib/engine-components/ui/RectTransform.d.ts +29 -11
  60. package/lib/engine-components/ui/RectTransform.js +178 -46
  61. package/lib/engine-components/ui/RectTransform.js.map +1 -1
  62. package/lib/engine-components/ui/Text.d.ts +13 -10
  63. package/lib/engine-components/ui/Text.js +177 -246
  64. package/lib/engine-components/ui/Text.js.map +1 -1
  65. package/lib/engine-components/utils/LookAt.d.ts +7 -0
  66. package/lib/engine-components/utils/LookAt.js +29 -0
  67. package/lib/engine-components/utils/LookAt.js.map +1 -0
  68. package/lib/engine-components/webxr/WebXRImageTracking.d.ts +8 -0
  69. package/lib/engine-components/webxr/WebXRImageTracking.js +79 -3
  70. package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
  71. package/lib/tsconfig.tsbuildinfo +1 -1
  72. package/package.json +2 -2
  73. package/src/engine/codegen/register_types.js +4 -2
  74. package/src/engine/engine_addressables.ts +28 -10
  75. package/src/engine/engine_element.ts +1 -1
  76. package/src/engine/engine_gameobject.ts +18 -1
  77. package/src/engine/engine_input.ts +11 -0
  78. package/src/engine/engine_license.ts +12 -25
  79. package/src/engine/engine_math.ts +10 -0
  80. package/src/engine-components/AnimatorController.ts +7 -1
  81. package/src/engine-components/OrbitControls.ts +14 -6
  82. package/src/engine-components/SceneSwitcher.ts +28 -3
  83. package/src/engine-components/TransformGizmo.ts +64 -70
  84. package/src/engine-components/codegen/components.ts +2 -1
  85. package/src/engine-components/export/usdz/USDZExporter.ts +7 -2
  86. package/src/engine-components/ui/Button.ts +14 -9
  87. package/src/engine-components/ui/Canvas.ts +104 -40
  88. package/src/engine-components/ui/EventSystem.ts +16 -9
  89. package/src/engine-components/ui/Graphic.ts +44 -8
  90. package/src/engine-components/ui/Image.ts +10 -1
  91. package/src/engine-components/ui/InputField.ts +9 -1
  92. package/src/engine-components/ui/Interfaces.ts +12 -0
  93. package/src/engine-components/ui/Outline.ts +13 -0
  94. package/src/engine-components/ui/RectTransform.ts +203 -60
  95. package/src/engine-components/ui/Text.ts +284 -265
  96. package/src/engine-components/utils/LookAt.ts +21 -0
  97. package/src/engine-components/webxr/WebXRImageTracking.ts +85 -10
  98. package/lib/engine-components/ui/Keyboard.d.ts +0 -31
  99. package/lib/engine-components/ui/Keyboard.js +0 -178
  100. package/lib/engine-components/ui/Keyboard.js.map +0 -1
  101. package/src/engine-components/ui/Keyboard.ts +0 -204
@@ -6,13 +6,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { Graphic } from './Graphic';
8
8
  import * as ThreeMeshUI from 'three-mesh-ui';
9
- import { $shadowDomOwner } from "./BaseUIComponent";
10
9
  import { Color } from 'three';
11
- import { FrameEvent } from '../../engine/engine_setup';
12
10
  import { updateRenderSettings } from './Utils';
13
11
  import { Canvas } from './Canvas';
14
12
  import { serializable } from '../../engine/engine_serialization_decorator';
15
- import { getParam, resolveUrl } from '../../engine/engine_utils';
13
+ import { getParam } from '../../engine/engine_utils';
16
14
  const debug = getParam("debugtext");
17
15
  export var TextAnchor;
18
16
  (function (TextAnchor) {
@@ -36,7 +34,7 @@ var HorizontalWrapMode;
36
34
  HorizontalWrapMode[HorizontalWrapMode["Wrap"] = 0] = "Wrap";
37
35
  HorizontalWrapMode[HorizontalWrapMode["Overflow"] = 1] = "Overflow";
38
36
  })(HorizontalWrapMode || (HorizontalWrapMode = {}));
39
- var FontStyle;
37
+ export var FontStyle;
40
38
  (function (FontStyle) {
41
39
  FontStyle[FontStyle["Normal"] = 0] = "Normal";
42
40
  FontStyle[FontStyle["Bold"] = 1] = "Bold";
@@ -57,86 +55,78 @@ export class Text extends Graphic {
57
55
  }
58
56
  set text(val) {
59
57
  this._text = val;
60
- if (!this._textMeshUi && this._text.length > 0 && this.context.time.frame > 0) {
61
- this.createText(val, this.getTextOpts(), this.supportRichText);
62
- }
63
- if (this._textMeshUi) {
64
- if (this._textMeshUi.length > 1) {
65
- this.requestRebuild();
66
- return;
67
- }
68
- //@ts-ignore
69
- this._textMeshUi[0].set({ content: val });
70
- this.markDirty();
71
- }
58
+ this.feedText(this.text, this.supportRichText);
72
59
  }
73
60
  set_text(val) {
74
61
  this.text = val;
75
62
  }
76
- get fontSize() { return this._fontSize; }
63
+ get fontSize() {
64
+ return this._fontSize;
65
+ }
77
66
  set fontSize(val) {
67
+ // Setting that kind of property in a parent, would cascade to each 'non-overrided' children.
78
68
  this._fontSize = val;
79
- if (this._textMeshUi) {
80
- if (this._textMeshUi.length > 1) {
81
- this.requestRebuild();
82
- return;
83
- }
84
- //@ts-ignore
85
- this._textMeshUi[0].set({ fontSize: val });
86
- this.markDirty();
87
- }
69
+ this.uiObject?.set({ fontSize: val });
88
70
  }
89
71
  onColorChanged() {
90
- if (this._textMeshUi) {
91
- if (this._textMeshUi.length > 1) {
92
- this.requestRebuild();
93
- return;
94
- }
95
- const col = this.color;
96
- //@ts-ignore
97
- this._textMeshUi[0].set({ fontColor: col, fontOpacity: col.alpha });
98
- this.markDirty();
72
+ this.uiObject?.set({ color: this.color, fontOpacity: this.color.alpha });
73
+ }
74
+ onParentRectTransformChanged() {
75
+ super.onParentRectTransformChanged();
76
+ if (this.uiObject) {
77
+ this.updateOverflow();
99
78
  }
100
79
  }
101
- _isWaitingForRebuild = false;
102
- requestRebuild() {
103
- if (this._isWaitingForRebuild)
104
- return;
105
- this._isWaitingForRebuild = true,
106
- this.startCoroutine(this.rebuildDelayedRoutine(), FrameEvent.EarlyUpdate);
80
+ onBeforeRender() {
81
+ if (this.uiObject && this.Root.screenspace) {
82
+ this.updateOverflow();
83
+ }
107
84
  }
108
- *rebuildDelayedRoutine() {
109
- this._isWaitingForRebuild = false;
110
- if (this._textMeshUi) {
111
- for (const text of this._textMeshUi) {
112
- text.removeFromParent();
113
- }
114
- this._textMeshUi.length = 0;
85
+ updateOverflow() {
86
+ // HACK: force the text overflow to update
87
+ const overflow = this.uiObject?._overflow;
88
+ if (overflow) {
89
+ overflow._needsUpdate = true;
90
+ this.markDirty();
115
91
  }
116
- this.createText(this.text, this.getTextOpts(), this.supportRichText);
117
- this.markDirty();
118
92
  }
119
93
  onCreate(_opts) {
120
94
  if (debug)
121
95
  console.log(this);
122
- const hideOverflow = this.verticalOverflow == VerticalWrapMode.Truncate && this.horizontalOverflow == HorizontalWrapMode.Wrap;
123
- if (hideOverflow)
96
+ if (this.horizontalOverflow == HorizontalWrapMode.Overflow) {
97
+ // Only line characters in the textContent (\n,\r\t) would be able to multiline the text
98
+ _opts.whiteSpace = 'pre';
99
+ }
100
+ if (this.verticalOverflow == VerticalWrapMode.Truncate) {
124
101
  this.context.renderer.localClippingEnabled = true;
102
+ _opts.overflow = 'hidden';
103
+ }
104
+ // @marwie : this combination is currently KO. See sample "Overflow Overview"
105
+ if (this.horizontalOverflow == HorizontalWrapMode.Overflow && this.verticalOverflow == VerticalWrapMode.Truncate) {
106
+ // This could fix this combination, but would require anchors updates to replace element
107
+ // _opts.width = 'auto';
108
+ }
109
+ _opts.lineHeight = this.lineSpacing;
110
+ // @marwie : Should be fixed. Currently _opts are always fed with :
111
+ // backgroundOpacity : color.opacity
112
+ // backgroundColor : color
113
+ delete _opts.backgroundOpacity;
114
+ delete _opts.backgroundColor;
115
+ // helper to show bounds of text element
116
+ if (debug) {
117
+ _opts.backgroundColor = 0xff9900;
118
+ _opts.backgroundOpacity = 0.5;
119
+ }
125
120
  const rt = this.rectTransform;
126
- // this._container = this._textMeshUi;
127
- // every mesh ui component must be inside a block
128
- // images emit nothing but blocks
129
- // this code should probably be moved somewhere else and also handle raw image / anything that emits block (sprite?)
130
- // so we only add extra blocks if the parent doesnt have one yet
131
- // maybe we can just ask the component the text will be added to to not rely on our unity components?
132
- // this can hopefully be removed once this is fixed/improved: https://github.com/felixmariotto/three-mesh-ui/issues/168
133
- this._textContainer = this.uiObject = this.createBlock(rt, hideOverflow, null, true);
134
- this.createText(this.text, this.getTextOpts(), this.supportRichText);
135
- if (this.uiObject) {
136
- //@ts-ignore
137
- // this._container.width += this.fontSize * .333; // avoid word wrapping
121
+ // Texts now support both options, block and inline, and inline has all default to inherit
122
+ _opts = { ..._opts, ...this.getTextOpts() };
123
+ this.getAlignment(_opts);
124
+ if (debug) {
125
+ _opts.backgroundColor = Math.random() * 0xffffff;
126
+ _opts.backgroundOpacity = 0.1;
138
127
  }
139
- this.uiObject = this.createBlock(rt, hideOverflow, this.uiObject, false);
128
+ this.uiObject = rt.createNewText(_opts);
129
+ this.feedText(this.text, this.supportRichText);
140
130
  }
141
131
  onAfterAddedToScene() {
142
132
  super.onAfterAddedToScene();
@@ -145,16 +135,13 @@ export class Text extends Graphic {
145
135
  _text = "";
146
136
  _fontSize = 12;
147
137
  _textMeshUi = null;
148
- _textContainer = null;
149
138
  getTextOpts() {
150
139
  let fontSize = this.fontSize;
151
140
  // if (this.canvas) {
152
141
  // fontSize /= this.canvas?.scaleFactor;
153
142
  // }
154
- // @TODO : THH check for changes. fontColor => color?
155
143
  const textOpts = {
156
- content: this.text,
157
- fontColor: this.color,
144
+ color: this.color,
158
145
  fontOpacity: this.color.alpha,
159
146
  fontSize: fontSize,
160
147
  fontKerning: "normal",
@@ -167,177 +154,105 @@ export class Text extends Graphic {
167
154
  this._didHandleTextRenderOnTop = false;
168
155
  if (this.uiObject) {
169
156
  // @ts-ignore
170
- this.uiObject.onAfterUpdate = () => {
171
- this.updateWidth();
157
+ // @TODO : Evaluate the need of keeping it anonymous.
158
+ // From v7.x afterUpdate can be removed but requires a reference
159
+ this.uiObject.addAfterUpdate(() => {
172
160
  // We need to update the shadow owner when the text updates
173
161
  // because once the font has loaded we get new children (a new mesh)
174
- // which is the text, it needs to be linked back to this component
162
+ // which is the text, it needs to be linked back to this component
175
163
  // to be properly handled by the EventSystem
176
164
  // since the EventSystem looks for shadow component owners to handle events
177
165
  this.setShadowComponentOwner(this.uiObject);
178
166
  this.markDirty();
179
- };
167
+ });
180
168
  }
181
169
  setTimeout(() => this.markDirty(), 10);
182
170
  }
183
- createBlock(rt, hideOverflow, content, isTextIntermediate = false) {
184
- //@ts-ignore
185
- const opts = {};
186
- // @TODO : THH would require update for 7.x
187
- opts.hiddenOverflow = hideOverflow;
188
- // @TODO : THH would require update for 7.x
189
- opts.interLine = (this.lineSpacing - 1) * this.fontSize * 1.333;
190
- this.getAlignment(opts, isTextIntermediate);
191
- const block = rt.createNewBlock(opts);
192
- // The text block should never write depth to avoid z-fighting
193
- const mat = block["backgroundMaterial"];
194
- if (mat)
195
- mat.depthWrite = false;
196
- if (content) {
197
- if (Array.isArray(content)) {
198
- block.add(...content);
199
- }
200
- else {
201
- block.add(content);
202
- }
203
- }
204
- return block;
205
- }
206
- getAlignment(opts, isTextIntermediate = false) {
207
- if (!isTextIntermediate) {
208
- opts.contentDirection = "row";
209
- switch (this.alignment) {
210
- case TextAnchor.UpperLeft:
211
- case TextAnchor.MiddleLeft:
212
- case TextAnchor.LowerLeft:
213
- opts.textAlign = "left";
214
- break;
215
- case TextAnchor.UpperCenter:
216
- case TextAnchor.MiddleCenter:
217
- case TextAnchor.LowerCenter:
218
- opts.textAlign = "center";
219
- break;
220
- case TextAnchor.UpperRight:
221
- case TextAnchor.MiddleRight:
222
- case TextAnchor.LowerRight:
223
- opts.textAlign = "right";
224
- break;
225
- }
226
- }
171
+ getAlignment(opts) {
172
+ opts.flexDirection = "column";
227
173
  switch (this.alignment) {
228
- // @info ThreeMeshUI remaining alignment : space-between|space-around|"stretch(experimental)"
229
- default:
230
174
  case TextAnchor.UpperLeft:
231
- case TextAnchor.UpperCenter:
232
- case TextAnchor.UpperRight:
233
- opts.justifyContent = "start";
234
- break;
235
175
  case TextAnchor.MiddleLeft:
236
- case TextAnchor.MiddleCenter:
237
- case TextAnchor.MiddleRight:
238
- opts.justifyContent = "center";
239
- break;
240
176
  case TextAnchor.LowerLeft:
177
+ opts.textAlign = "left";
178
+ break;
179
+ case TextAnchor.UpperCenter:
180
+ case TextAnchor.MiddleCenter:
241
181
  case TextAnchor.LowerCenter:
182
+ opts.textAlign = "center";
183
+ break;
184
+ case TextAnchor.UpperRight:
185
+ case TextAnchor.MiddleRight:
242
186
  case TextAnchor.LowerRight:
243
- opts.justifyContent = "end";
187
+ opts.textAlign = "right";
244
188
  break;
245
189
  }
246
- // @TODO : THH evaluate this is still useful. In case of texts, horizontal alignments are made with textAlign
247
190
  switch (this.alignment) {
191
+ default:
248
192
  case TextAnchor.UpperLeft:
249
- case TextAnchor.MiddleLeft:
250
- case TextAnchor.LowerLeft:
193
+ case TextAnchor.UpperCenter:
194
+ case TextAnchor.UpperRight:
251
195
  opts.alignItems = "start";
252
196
  break;
253
- case TextAnchor.UpperCenter:
197
+ case TextAnchor.MiddleLeft:
254
198
  case TextAnchor.MiddleCenter:
255
- case TextAnchor.LowerCenter:
199
+ case TextAnchor.MiddleRight:
256
200
  opts.alignItems = "center";
257
201
  break;
258
- case TextAnchor.UpperRight:
259
- case TextAnchor.MiddleRight:
202
+ case TextAnchor.LowerLeft:
203
+ case TextAnchor.LowerCenter:
260
204
  case TextAnchor.LowerRight:
261
205
  opts.alignItems = "end";
262
206
  break;
263
207
  }
264
208
  return opts;
265
209
  }
266
- updateWidth() {
267
- if (this.horizontalOverflow === HorizontalWrapMode.Overflow) {
268
- setTimeout(() => {
269
- if (!this._textMeshUi)
270
- return;
271
- const container = this._textMeshUi[0].parent;
272
- if (!container)
273
- return;
274
- //@ts-ignore
275
- if (container.lines) {
276
- //@ts-ignore
277
- let newWidth = container.lines.reduce((accu, line) => { return accu + line.width; }, 0);
278
- //@ts-ignore
279
- newWidth += container.getFontSize() * 5;
280
- //@ts-ignore
281
- newWidth += (container.padding * 2 || 0);
282
- newWidth += this.fontSize * 1.5;
283
- // TODO: handle alignment!
284
- // const pos = container.position;
285
- // pos.x = this.gameObject.position.x * -.01 + newWidth * .5 - this.rect.sizeDelta.x * .005;
286
- // this._textMeshUi.set({ position: pos });
287
- //@ts-ignore
288
- container.set({ width: newWidth });
289
- this.ensureShadowComponentOwner();
290
- }
291
- }, 1);
292
- }
293
- }
294
- ensureShadowComponentOwner() {
295
- if (this.shadowComponent) {
296
- this.shadowComponent.traverse(c => {
297
- if (c[$shadowDomOwner] === undefined)
298
- c[$shadowDomOwner] = this;
299
- });
300
- }
301
- }
302
- createText(text, opts, richText) {
303
- if (!text || text.length <= 0)
304
- return;
210
+ feedText(text, richText) {
211
+ // if (!text || text.length <= 0) return;
212
+ // if (!text ) return;
213
+ if (!this.uiObject)
214
+ return null;
305
215
  if (!this._textMeshUi)
306
216
  this._textMeshUi = [];
307
- if (!richText) {
308
- // console.log(text)
309
- const opt = { ...opts };
310
- opt.content = text;
311
- const element = new ThreeMeshUI.Text(opt);
312
- this._textMeshUi.push(element);
313
- if (this._textContainer) {
314
- this._textContainer.add(element);
315
- }
217
+ // this.uiObject.textContent = text;
218
+ // return ;
219
+ if (!richText || text.length === 0) {
220
+ //@TODO: @swingingtom how would the text content be set?
221
+ //@ts-ignore
222
+ this.uiObject.textContent = text;
316
223
  }
317
224
  else {
318
225
  let currentTag = this.getNextTag(text);
319
226
  if (!currentTag) {
320
- return this.createText(text, opts, false);
227
+ //@TODO: @swingingtom how would the text content be set?
228
+ //@ts-ignore
229
+ return this.uiObject.textContent = text;
321
230
  }
322
231
  else if (currentTag.startIndex > 0) {
323
- this.createText(text.substring(0, currentTag.startIndex), opts, false);
232
+ this.uiObject.add(new ThreeMeshUI.Inline({ textContent: text.substring(0, currentTag.startIndex), color: 'inherit' }));
324
233
  }
325
234
  const stackArray = [];
326
235
  while (currentTag) {
327
236
  const next = this.getNextTag(text, currentTag.endIndex);
237
+ const opts = {
238
+ fontFamily: this.uiObject?.get('fontFamily'),
239
+ color: 'inherit',
240
+ textContent: ""
241
+ };
328
242
  if (next) {
329
- const content = this.getText(text, currentTag, next);
243
+ opts.textContent = this.getText(text, currentTag, next);
330
244
  this.handleTag(currentTag, opts, stackArray);
331
- this.createText(content, opts, false);
245
+ this.uiObject?.add(new ThreeMeshUI.Inline(opts));
332
246
  }
333
247
  else {
334
- const content = text.substring(currentTag.endIndex);
248
+ opts.textContent = text.substring(currentTag.endIndex);
335
249
  this.handleTag(currentTag, opts, stackArray);
336
- this.createText(content, opts, false);
250
+ this.uiObject?.add(new ThreeMeshUI.Inline(opts));
337
251
  }
338
252
  currentTag = next;
339
253
  }
340
254
  }
255
+ return null;
341
256
  }
342
257
  _didHandleTextRenderOnTop = false;
343
258
  handleTextRenderOnTop() {
@@ -347,12 +262,18 @@ export class Text extends Graphic {
347
262
  this.startCoroutine(this.renderOnTopCoroutine());
348
263
  }
349
264
  // waits for all the text objects to be ready to set the render on top setting
265
+ // @THH : this isn't true anymore. We can set mesh and material properties before their counterparts are created.
266
+ // Values would automatically be passed when created. Not sure for depthWrite but it can be added;
350
267
  *renderOnTopCoroutine() {
351
268
  if (!this.canvas)
352
269
  return;
353
270
  const updatedRendering = [];
354
271
  const canvas = this.canvas;
355
- const settings = { renderOnTop: canvas.renderOnTop, depthWrite: canvas.depthWrite, doubleSided: canvas.doubleSided };
272
+ const settings = {
273
+ renderOnTop: canvas.renderOnTop,
274
+ depthWrite: canvas.depthWrite,
275
+ doubleSided: canvas.doubleSided
276
+ };
356
277
  while (true) {
357
278
  let isWaitingForElementToUpdate = false;
358
279
  if (this._textMeshUi) {
@@ -380,33 +301,31 @@ export class Text extends Graphic {
380
301
  // console.log(tag);
381
302
  if (!tag.isEndTag) {
382
303
  if (tag.type.includes("color")) {
383
- const stackEntry = new TagStackEntry(tag, { fontColor: opts.fontColor });
304
+ const stackEntry = new TagStackEntry(tag, { color: opts.color });
384
305
  stackArray.push(stackEntry);
385
306
  if (tag.type.length > 6) // color=
386
307
  {
387
- const col = tag.type.substring(6);
388
- opts.fontColor = new Color(col);
308
+ const col = parseInt("0x" + tag.type.substring(7));
309
+ opts.color = col;
389
310
  }
390
311
  else {
391
312
  // if it does not contain a color it is white
392
- opts.fontColor = new Color(1, 1, 1);
313
+ opts.color = new Color(1, 1, 1);
393
314
  }
394
315
  }
395
316
  else if (tag.type == "b") {
317
+ this.setFont(opts, FontStyle.Bold);
396
318
  const stackEntry = new TagStackEntry(tag, {
397
- fontFamily: opts.fontFamily,
398
- fontTexture: opts.fontTexture,
319
+ fontWeight: 700,
399
320
  });
400
321
  stackArray.push(stackEntry);
401
- this.setFont(opts, FontStyle.Bold);
402
322
  }
403
323
  else if (tag.type == "i") {
324
+ this.setFont(opts, FontStyle.Italic);
404
325
  const stackEntry = new TagStackEntry(tag, {
405
- fontFamily: opts.fontFamily,
406
- fontTexture: opts.fontTexture,
326
+ fontStyle: 'italic'
407
327
  });
408
328
  stackArray.push(stackEntry);
409
- this.setFont(opts, FontStyle.Italic);
410
329
  }
411
330
  }
412
331
  else {
@@ -434,61 +353,73 @@ export class Text extends Graphic {
434
353
  }
435
354
  return null;
436
355
  }
356
+ /**
357
+ * Update provided opts to have a proper fontDefinition : family+weight+style
358
+ * Ensure Family and Variant are registered in FontLibrary
359
+ *
360
+ * @param opts
361
+ * @param fontStyle
362
+ * @private
363
+ */
437
364
  setFont(opts, fontStyle) {
438
- const name = this.getFontStyleName(fontStyle);
439
- let family = name;
440
- if (!family?.endsWith("-msdf.json"))
441
- family += "-msdf.json";
442
- opts.fontFamily = family;
443
- let texture = name;
444
- if (!texture?.endsWith(".png"))
445
- texture += ".png";
446
- opts.fontTexture = texture;
447
- }
448
- getFontStyleName(style) {
365
+ // @TODO : THH could be useful to uniformize font family name :
366
+ // This would ease possible html/vr matching
367
+ // - Arial instead of assets/arial
368
+ // - Arial should stay Arial instead of arial
449
369
  if (!this.font)
450
- return null;
451
- let fontName = this.font;
452
- // if a font path has a known suffix we remove it
453
- const fontNameLower = fontName.toLowerCase();
454
- if (fontNameLower.endsWith("-regular")) {
455
- if (style === FontStyle.Normal)
456
- return resolveUrl(this.sourceId, fontName);
457
- fontName = fontName.substring(0, fontName.length - "-regular".length);
458
- }
459
- else if (fontNameLower.endsWith("-bold")) {
460
- if (style === FontStyle.Bold)
461
- return resolveUrl(this.sourceId, fontName);
462
- fontName = fontName.substring(0, fontName.length - "-bold".length);
463
- }
464
- else if (fontNameLower.endsWith("-italic")) {
465
- if (style === FontStyle.Italic)
466
- return resolveUrl(this.sourceId, fontName);
467
- fontName = fontName.substring(0, fontName.length - "-italic".length);
468
- }
469
- else if (fontNameLower.endsWith("-bolditalic")) {
470
- if (style === FontStyle.BoldAndItalic)
471
- return resolveUrl(this.sourceId, fontName);
472
- fontName = fontName.substring(0, fontName.length - "-bolditalic".length);
473
- }
474
- else
475
- // If a font does not have a specific style suffic we dont support getting the correct font style
476
- return resolveUrl(this.sourceId, fontName);
477
- switch (style) {
370
+ return;
371
+ let familyName = this.font;
372
+ // ensure a font family is register under this name
373
+ let fontFamily = ThreeMeshUI.FontLibrary.getFontFamily(familyName);
374
+ if (!fontFamily)
375
+ fontFamily = ThreeMeshUI.FontLibrary.addFontFamily(familyName);
376
+ // @TODO: @swingingtom how should the font be set?
377
+ //@ts-ignore
378
+ opts.fontFamily = fontFamily;
379
+ const lowerFamilyName = familyName.toLowerCase();
380
+ switch (fontStyle) {
381
+ default:
478
382
  case FontStyle.Normal:
479
- fontName += "-regular";
383
+ opts.fontWeight = 400;
384
+ opts.fontStyle = "normal";
480
385
  break;
481
386
  case FontStyle.Bold:
482
- fontName += "-bold";
387
+ opts.fontWeight = 700;
388
+ opts.fontStyle = "normal";
389
+ if (!lowerFamilyName.includes("-bold"))
390
+ familyName += "-bold";
483
391
  break;
484
392
  case FontStyle.Italic:
485
- fontName += "-italic";
393
+ opts.fontWeight = 400;
394
+ opts.fontStyle = "italic";
395
+ if (!lowerFamilyName.includes("-italic"))
396
+ familyName += "-italic";
486
397
  break;
487
398
  case FontStyle.BoldAndItalic:
488
- fontName += "-bolditalic";
489
- break;
399
+ opts.fontStyle = 'italic';
400
+ opts.fontWeight = 400;
401
+ if (!lowerFamilyName.includes("-bold"))
402
+ familyName += "-bold";
403
+ if (!lowerFamilyName.includes("-italic"))
404
+ familyName += "-italic";
405
+ }
406
+ // Ensure a fontVariant is registered
407
+ //@TODO: @swingingtom add type for fontWeight
408
+ let fontVariant = fontFamily.getVariant(opts.fontWeight, opts.fontStyle);
409
+ if (!fontVariant) {
410
+ let jsonPath = familyName;
411
+ if (!jsonPath?.endsWith("-msdf.json"))
412
+ jsonPath += "-msdf.json";
413
+ let texturePath = familyName;
414
+ if (!texturePath?.endsWith(".png"))
415
+ texturePath += ".png";
416
+ //@TODO: @swingingtom add type for fontWeight
417
+ //@TODO: @swingingtom addVariant return type is wrong (should be FontVariant)
418
+ fontVariant = fontFamily.addVariant(opts.fontWeight, opts.fontStyle, jsonPath, texturePath);
419
+ fontVariant?.addEventListener('ready', () => {
420
+ this.markDirty();
421
+ });
490
422
  }
491
- return resolveUrl(this.sourceId, fontName);
492
423
  }
493
424
  }
494
425
  __decorate([
@@ -510,7 +441,7 @@ __decorate([
510
441
  serializable()
511
442
  ], Text.prototype, "supportRichText", void 0);
512
443
  __decorate([
513
- serializable()
444
+ serializable(URL)
514
445
  ], Text.prototype, "font", void 0);
515
446
  __decorate([
516
447
  serializable()
@@ -1 +1 @@
1
- {"version":3,"file":"Text.js","sourceRoot":"","sources":["../../../src/engine-components/ui/Text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Text.js","sourceRoot":"","sources":["../../../src/engine-components/ui/Text.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,WAAW,MAAM,eAAe,CAAA;AAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAc,MAAM,2BAA2B,CAAC;AAGjE,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAEpC,MAAM,CAAN,IAAY,UAUX;AAVD,WAAY,UAAU;IAClB,qDAAa,CAAA;IACb,yDAAe,CAAA;IACf,uDAAc,CAAA;IACd,uDAAc,CAAA;IACd,2DAAgB,CAAA;IAChB,yDAAe,CAAA;IACf,qDAAa,CAAA;IACb,yDAAe,CAAA;IACf,uDAAc,CAAA;AAClB,CAAC,EAVW,UAAU,KAAV,UAAU,QAUrB;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,+DAAY,CAAA;IACZ,+DAAY,CAAA;AAChB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AACD,IAAK,kBAGJ;AAHD,WAAK,kBAAkB;IACnB,2DAAQ,CAAA;IACR,mEAAY,CAAA;AAChB,CAAC,EAHI,kBAAkB,KAAlB,kBAAkB,QAGtB;AAED,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACjB,6CAAU,CAAA;IACV,yCAAQ,CAAA;IACR,6CAAU,CAAA;IACV,2DAAiB,CAAA;AACrB,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED,MAAM,OAAO,IAAK,SAAQ,OAAO;IAG7B,MAAM,CAAU;IAEhB,SAAS,GAAe,UAAU,CAAC,SAAS,CAAC;IAE7C,gBAAgB,GAAqB,gBAAgB,CAAC,QAAQ,CAAC;IAE/D,kBAAkB,GAAuB,kBAAkB,CAAC,IAAI,CAAC;IAEjE,WAAW,GAAW,CAAC,CAAC;IAExB,eAAe,GAAY,KAAK,CAAC;IAEjC,IAAI,CAAU;IAEd,SAAS,GAAc,SAAS,CAAC,MAAM,CAAC;IAGxC,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,IAAI,CAAC,GAAW;QAGhB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACnD,CAAC;IAEO,QAAQ,CAAC,GAAW;QACxB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACpB,CAAC;IAGD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ,CAAC,GAAW;QAEpB,6FAA6F;QAC7F,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IAE1C,CAAC;IAGS,cAAc;QACpB,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,4BAA4B;QACxB,KAAK,CAAC,4BAA4B,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;IACL,CAAC;IAED,cAAc;QACV,IAAI,IAAI,CAAC,QAAQ,IAAK,IAAI,CAAC,IAAuB,CAAC,WAAW,EAAE;YAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;IACL,CAAC;IAEO,cAAc;QAClB,0CAA0C;QAC1C,MAAM,QAAQ,GAAI,IAAI,CAAC,QAAgB,EAAE,SAAS,CAAC;QACnD,IAAI,QAAQ,EAAE;YACV,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;SACpB;IACL,CAAC;IAES,QAAQ,CAAC,KAAU;QACzB,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE7B,IAAI,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,QAAQ,EAAE;YACxD,wFAAwF;YACxF,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;SAC5B;QAED,IAAI,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,QAAQ,EAAE;YACpD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAClD,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC7B;QAGD,6EAA6E;QAC7E,IAAI,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,QAAQ,EAAE;YAC9G,wFAAwF;YACxF,wBAAwB;SAC3B;QAGD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QAEpC,mEAAmE;QACnE,6CAA6C;QAC7C,mCAAmC;QACnC,OAAO,KAAK,CAAC,iBAAiB,CAAC;QAC/B,OAAO,KAAK,CAAC,eAAe,CAAC;QAE7B,wCAAwC;QACxC,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC;YACjC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;SACjC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;QAE9B,0FAA0F;QAC1F,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAE5C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC;YACjD,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;SACjC;QAED,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAEnD,CAAC;IAED,mBAAmB;QACf,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAEO,KAAK,GAAW,EAAE,CAAC;IACnB,SAAS,GAAW,EAAE,CAAC;IAEvB,WAAW,GAAqC,IAAI,CAAC;IAGrD,WAAW;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,qBAAqB;QACrB,4CAA4C;QAC5C,IAAI;QAGJ,MAAM,QAAQ,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YAC7B,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,QAAQ;SAExB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,QAAmC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClE,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,QAAQ;QACJ,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QACvC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,aAAa;YAEb,sDAAsD;YACtD,yEAAyE;YACzE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE;gBAC9B,2DAA2D;gBAC3D,oEAAoE;gBACpE,kEAAkE;gBAClE,4CAA4C;gBAC5C,2EAA2E;gBAC3E,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;SACN;QAED,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IAEO,YAAY,CAAC,IAA6B;QAE9C,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAE9B,QAAQ,IAAI,CAAC,SAAS,EAAE;YACpB,KAAK,UAAU,CAAC,SAAS,CAAC;YAC1B,KAAK,UAAU,CAAC,UAAU,CAAC;YAC3B,KAAK,UAAU,CAAC,SAAS;gBACrB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;gBACxB,MAAM;YACV,KAAK,UAAU,CAAC,WAAW,CAAC;YAC5B,KAAK,UAAU,CAAC,YAAY,CAAC;YAC7B,KAAK,UAAU,CAAC,WAAW;gBACvB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAE1B,MAAM;YACV,KAAK,UAAU,CAAC,UAAU,CAAC;YAC3B,KAAK,UAAU,CAAC,WAAW,CAAC;YAC5B,KAAK,UAAU,CAAC,UAAU;gBACtB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;gBACzB,MAAM;SACb;QAGD,QAAQ,IAAI,CAAC,SAAS,EAAE;YACpB,QAAQ;YACR,KAAK,UAAU,CAAC,SAAS,CAAC;YAC1B,KAAK,UAAU,CAAC,WAAW,CAAC;YAC5B,KAAK,UAAU,CAAC,UAAU;gBACtB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;gBAC1B,MAAM;YACV,KAAK,UAAU,CAAC,UAAU,CAAC;YAC3B,KAAK,UAAU,CAAC,YAAY,CAAC;YAC7B,KAAK,UAAU,CAAC,WAAW;gBACvB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;gBAC3B,MAAM;YACV,KAAK,UAAU,CAAC,SAAS,CAAC;YAC1B,KAAK,UAAU,CAAC,WAAW,CAAC;YAC5B,KAAK,UAAU,CAAC,UAAU;gBACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,MAAM;SACb;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,QAAQ,CAAC,IAAY,EAAE,QAAiB;QAC5C,yCAAyC;QACzC,sBAAsB;QAEtB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,WAAW;YACjB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAE1B,oCAAoC;QACpC,WAAW;QAEX,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,wDAAwD;YACxD,YAAY;YACZ,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;SACpC;aAAM;YAGH,IAAI,UAAU,GAAmB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,CAAC,UAAU,EAAE;gBACb,wDAAwD;gBACxD,YAAY;gBACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;aAC3C;iBAAM,IAAI,UAAU,CAAC,UAAU,GAAG,CAAC,EAAE;gBAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;aACzH;YACD,MAAM,UAAU,GAAyB,EAAE,CAAC;YAC5C,OAAO,UAAU,EAAE;gBACf,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAExD,MAAM,IAAI,GAAG;oBACT,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC;oBAC5C,KAAK,EAAE,SAAS;oBAChB,WAAW,EAAE,EAAE;iBAClB,CAAA;gBAED,IAAI,IAAI,EAAE;oBAEN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;oBAExD,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;oBAC7C,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;iBAEnD;qBAAM;oBAEH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBAEvD,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;oBAC7C,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;iBACnD;gBACD,UAAU,GAAG,IAAI,CAAC;aACrB;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,yBAAyB,GAAY,KAAK,CAAC;IAE3C,qBAAqB;QACzB,IAAI,IAAI,CAAC,yBAAyB;YAAE,OAAO;QAC3C,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,8EAA8E;IAC9E,kHAAkH;IAClH,0GAA0G;IAClG,CAAE,oBAAoB;QAC1B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,MAAM,gBAAgB,GAAc,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,QAAQ,GAAG;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;SAClC,CAAC;QACF,OAAO,IAAI,EAAE;YACT,IAAI,2BAA2B,GAAG,KAAK,CAAC;YACxC,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC9C,IAAI,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI;wBAAE,SAAS;oBAC3C,2BAA2B,GAAG,IAAI,CAAC;oBACnC,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC3C,uDAAuD;oBACvD,gEAAgE;oBAChE,yDAAyD;oBACzD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;wBAAE,SAAS;oBAC7C,oBAAoB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;oBAC/C,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBAC3B,+BAA+B;iBAClC;aACJ;YACD,IAAI,CAAC,2BAA2B;gBAAE,MAAM;YACxC,KAAK,CAAC;SACT;IACL,CAAC;IAEO,SAAS,CAAC,GAAY,EAAE,IAAS,EAAE,UAAgC;QACvE,oBAAoB;QACpB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;YACf,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAC5B,MAAM,UAAU,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACjE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5B,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS;iBAClC;oBACI,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnD,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;iBACpB;qBAAM;oBACH,6CAA6C;oBAC7C,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;iBACnC;aACJ;iBAAM,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBACnC,MAAM,UAAU,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE;oBACtC,UAAU,EAAE,GAAG;iBAClB,CAAC,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC/B;iBAAM,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;gBACrC,MAAM,UAAU,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE;oBACtC,SAAS,EAAE,QAAQ;iBACtB,CAAC,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAE/B;SACJ;aAAM;YACH,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;gBAC9B,IAAI,IAAI,EAAE;oBACN,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,cAAc,EAAE;wBACnC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;wBAC3C,yBAAyB;wBACzB,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;qBACzB;iBACJ;aACJ;SACJ;IACL,CAAC;IAEO,OAAO,CAAC,IAAY,EAAE,KAAc,EAAE,GAAY;QACtD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;IAEO,UAAU,CAAC,IAAY,EAAE,aAAqB,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACrC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;YACxB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YAC3C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;SAC7F;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACK,OAAO,CAAC,IAA6B,EAAE,SAAoB;QAE/D,+DAA+D;QAC/D,oDAAoD;QACpD,iDAAiD;QACjD,4DAA4D;QAC5D,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QACvB,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;QAE3B,mDAAmD;QACnD,IAAI,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC,UAAoB,CAAC,CAAC;QAC7E,IAAI,CAAC,UAAU;YACX,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC,UAAoB,CAAC,CAAC;QAE7E,kDAAkD;QAClD,YAAY;QACZ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAEjD,QAAQ,SAAS,EAAE;YACf,QAAQ;YACR,KAAK,SAAS,CAAC,MAAM;gBACjB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;gBACtB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAC1B,MAAK;YAET,KAAK,SAAS,CAAC,IAAI;gBACf,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;gBACtB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAClC,UAAU,IAAI,OAAO,CAAC;gBAC1B,MAAM;YAEV,KAAK,SAAS,CAAC,MAAM;gBACjB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;gBACtB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;gBACzB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACpC,UAAU,IAAI,SAAS,CAAC;gBAC5B,MAAM;YAEV,KAAK,SAAS,CAAC,aAAa;gBACxB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAC1B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;gBACtB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAClC,UAAU,IAAI,OAAO,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACpC,UAAU,IAAI,SAAS,CAAC;SACnC;QAGD,qCAAqC;QACrC,6CAA6C;QAC7C,IAAI,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAA2B,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1F,IAAI,CAAC,WAAW,EAAE;YACd,IAAI,QAAQ,GAAG,UAAU,CAAC;YAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC;gBAAE,QAAQ,IAAI,YAAY,CAAC;YAChE,IAAI,WAAW,GAAG,UAAU,CAAC;YAC7B,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC;gBAAE,WAAW,IAAI,MAAM,CAAC;YAE1D,6CAA6C;YAC7C,6EAA6E;YAC7E,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAA2B,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAqB,CAAmC,CAAC;YACzJ,WAAW,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACxC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;SACN;IAEL,CAAC;CA6CJ;AAhfG;IADC,YAAY,CAAC,MAAM,CAAC;oCACL;AAEhB;IADC,YAAY,EAAE;uCAC8B;AAE7C;IADC,YAAY,EAAE;8CACgD;AAE/D;IADC,YAAY,EAAE;gDACkD;AAEjE;IADC,YAAY,EAAE;yCACS;AAExB;IADC,YAAY,EAAE;6CACkB;AAEjC;IADC,YAAY,CAAC,GAAG,CAAC;kCACJ;AAEd;IADC,YAAY,EAAE;uCACyB;AAGxC;IADC,YAAY,EAAE;gCAGd;AAcD;IADC,YAAY,EAAE;oCAGd;AA+cL,MAAM,aAAa;IACf,GAAG,CAAU;IACb,cAAc,CAAS;IACvB,YAAY,GAAY,EAAE,cAAsB;QAC5C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACzC,CAAC;CACJ;AASD,2CAA2C;AAC3C,sEAAsE"}