@needle-tools/engine 3.6.9 → 3.6.10

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.
@@ -67,5 +67,6 @@ export declare class Text extends Graphic implements IHasAlphaFactor {
67
67
  * @private
68
68
  */
69
69
  private setFont;
70
+ private getFamilyNameWithCorrectSuffix;
70
71
  }
71
72
  export {};
@@ -221,8 +221,11 @@ export class Text extends Graphic {
221
221
  return null;
222
222
  if (!this._textMeshUi)
223
223
  this._textMeshUi = [];
224
- // this.uiObject.textContent = text;
225
- // return ;
224
+ // this doesnt work and produces errors when length is 0:
225
+ // this.uiObject.textContent = " ";
226
+ // reset the current text (e.g. when switching from "Hello" to "Hello <b>World</b>")
227
+ // @TODO swingingtom: this is a hack to reset the text content, not sure how to do that right
228
+ this.uiObject.children.length = 0;
226
229
  if (!richText || text.length === 0) {
227
230
  //@TODO: @swingingtom how would the text content be set?
228
231
  //@ts-ignore
@@ -236,7 +239,17 @@ export class Text extends Graphic {
236
239
  return this.uiObject.textContent = text;
237
240
  }
238
241
  else if (currentTag.startIndex > 0) {
239
- this.uiObject.add(new ThreeMeshUI.Inline({ textContent: text.substring(0, currentTag.startIndex), color: 'inherit' }));
242
+ // First segment should also clear children inlines
243
+ for (let i = this.uiObject.children.length - 1; i >= 0; i--) {
244
+ const child = this.uiObject.children[i];
245
+ // @ts-ignore
246
+ if (child.isUI) {
247
+ this.uiObject.remove(child);
248
+ child.clear();
249
+ }
250
+ }
251
+ const el = new ThreeMeshUI.Inline({ textContent: text.substring(0, currentTag.startIndex), color: 'inherit' });
252
+ this.uiObject.add(el);
240
253
  }
241
254
  const stackArray = [];
242
255
  while (currentTag) {
@@ -249,16 +262,20 @@ export class Text extends Graphic {
249
262
  if (next) {
250
263
  opts.textContent = this.getText(text, currentTag, next);
251
264
  this.handleTag(currentTag, opts, stackArray);
252
- this.uiObject?.add(new ThreeMeshUI.Inline(opts));
265
+ const el = new ThreeMeshUI.Inline(opts);
266
+ this.uiObject?.add(el);
253
267
  }
254
268
  else {
255
269
  opts.textContent = text.substring(currentTag.endIndex);
256
270
  this.handleTag(currentTag, opts, stackArray);
257
- this.uiObject?.add(new ThreeMeshUI.Inline(opts));
271
+ const el = new ThreeMeshUI.Inline(opts);
272
+ this.uiObject?.add(el);
258
273
  }
259
274
  currentTag = next;
260
275
  }
261
276
  }
277
+ if (debug)
278
+ console.log("feedText", this.uiObject);
262
279
  return null;
263
280
  }
264
281
  _didHandleTextRenderOnTop = false;
@@ -335,18 +352,6 @@ export class Text extends Graphic {
335
352
  stackArray.push(stackEntry);
336
353
  }
337
354
  }
338
- else {
339
- if (stackArray.length > 0) {
340
- const last = stackArray.pop();
341
- if (last) {
342
- for (const key in last.previousValues) {
343
- const prevValue = last.previousValues[key];
344
- // console.log(key, val);
345
- opts[key] = prevValue;
346
- }
347
- }
348
- }
349
- }
350
355
  }
351
356
  getText(text, start, end) {
352
357
  return text.substring(start.endIndex, end.startIndex);
@@ -375,7 +380,7 @@ export class Text extends Graphic {
375
380
  // - Arial should stay Arial instead of arial
376
381
  if (!this.font)
377
382
  return;
378
- let familyName = this.font;
383
+ let familyName = this.getFamilyNameWithCorrectSuffix(this.font, fontStyle);
379
384
  // ensure a font family is register under this name
380
385
  let fontFamily = ThreeMeshUI.FontLibrary.getFontFamily(familyName);
381
386
  if (!fontFamily)
@@ -383,7 +388,6 @@ export class Text extends Graphic {
383
388
  // @TODO: @swingingtom how should the font be set?
384
389
  //@ts-ignore
385
390
  opts.fontFamily = fontFamily;
386
- const lowerFamilyName = familyName.toLowerCase();
387
391
  switch (fontStyle) {
388
392
  default:
389
393
  case FontStyle.Normal:
@@ -393,22 +397,14 @@ export class Text extends Graphic {
393
397
  case FontStyle.Bold:
394
398
  opts.fontWeight = 700;
395
399
  opts.fontStyle = "normal";
396
- if (!lowerFamilyName.includes("-bold"))
397
- familyName += "-bold";
398
400
  break;
399
401
  case FontStyle.Italic:
400
402
  opts.fontWeight = 400;
401
403
  opts.fontStyle = "italic";
402
- if (!lowerFamilyName.includes("-italic"))
403
- familyName += "-italic";
404
404
  break;
405
405
  case FontStyle.BoldAndItalic:
406
406
  opts.fontStyle = 'italic';
407
407
  opts.fontWeight = 400;
408
- if (!lowerFamilyName.includes("-bold"))
409
- familyName += "-bold";
410
- if (!lowerFamilyName.includes("-italic"))
411
- familyName += "-italic";
412
408
  }
413
409
  // Ensure a fontVariant is registered
414
410
  //@TODO: @swingingtom add type for fontWeight
@@ -428,6 +424,41 @@ export class Text extends Graphic {
428
424
  });
429
425
  }
430
426
  }
427
+ getFamilyNameWithCorrectSuffix(familyName, style) {
428
+ // we can only change the style for the family if the name has a suffix (e.g. Arial-Bold)
429
+ const styleSeparator = familyName.lastIndexOf('-');
430
+ if (styleSeparator < 0)
431
+ return familyName;
432
+ // Try find a suffix that matches the style
433
+ // We assume that if the font name is "Arial-Regular" then the bold version is "Arial-Bold"
434
+ // and if the font name is "arial-regular" then the bold version is "arial-bold"
435
+ let isUpperCase = familyName[0] === familyName[0].toUpperCase();
436
+ const fontNameWithoutSuffix = familyName.substring(0, styleSeparator);
437
+ switch (style) {
438
+ case FontStyle.Normal:
439
+ if (isUpperCase)
440
+ return fontNameWithoutSuffix + "-Regular";
441
+ else
442
+ return fontNameWithoutSuffix + "-regular";
443
+ case FontStyle.Bold:
444
+ if (isUpperCase)
445
+ return fontNameWithoutSuffix + "-Bold";
446
+ else
447
+ return fontNameWithoutSuffix + "-bold";
448
+ case FontStyle.Italic:
449
+ if (isUpperCase)
450
+ return fontNameWithoutSuffix + "-Italic";
451
+ else
452
+ return fontNameWithoutSuffix + "-italic";
453
+ case FontStyle.BoldAndItalic:
454
+ if (isUpperCase)
455
+ return fontNameWithoutSuffix + "-BoldItalic";
456
+ else
457
+ return fontNameWithoutSuffix + "-bolditalic";
458
+ default:
459
+ return familyName;
460
+ }
461
+ }
431
462
  }
432
463
  __decorate([
433
464
  serializable()
@@ -466,4 +497,7 @@ class TagStackEntry {
466
497
  }
467
498
  // const anyTag = new RegExp('<.+?>', 'g');
468
499
  // const regex = new RegExp('<(?<type>.+?)>(?<text>.+?)<\/.+?>', 'g');
500
+ const upperCaseStyleSuffixOptions = [
501
+ "Regular", "Bold", "Italic", "BoldItalic", "Medium", "MediumItalic", "SemiBold", "SemiBoldItalic", "Thin", "ThinItalic", "ExtraLight", "ExtraLightItalic", "Light", "LightItalic", "Black", "BlackItalic"
502
+ ];
469
503
  //# sourceMappingURL=Text.js.map
@@ -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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@needle-tools/engine",
3
- "version": "3.6.9",
3
+ "version": "3.6.10",
4
4
  "description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in",
5
5
  "main": "dist/needle-engine.umd.cjs",
6
6
  "type": "module",
@@ -275,23 +275,42 @@ export class Text extends Graphic implements IHasAlphaFactor {
275
275
  if (!this._textMeshUi)
276
276
  this._textMeshUi = [];
277
277
 
278
- // this.uiObject.textContent = text;
279
- // return ;
278
+ // this doesnt work and produces errors when length is 0:
279
+ // this.uiObject.textContent = " ";
280
+
281
+ // reset the current text (e.g. when switching from "Hello" to "Hello <b>World</b>")
282
+ // @TODO swingingtom: this is a hack to reset the text content, not sure how to do that right
283
+ this.uiObject.children.length = 0;
280
284
 
281
285
  if (!richText || text.length === 0) {
282
286
  //@TODO: @swingingtom how would the text content be set?
283
287
  //@ts-ignore
284
288
  this.uiObject.textContent = text;
285
289
  } else {
286
-
287
-
288
- let currentTag: TagInfo | null = this.getNextTag(text);
290
+ let currentTag = this.getNextTag(text);
289
291
  if (!currentTag) {
290
292
  //@TODO: @swingingtom how would the text content be set?
291
293
  //@ts-ignore
292
294
  return this.uiObject.textContent = text;
293
295
  } else if (currentTag.startIndex > 0) {
294
- this.uiObject.add(new ThreeMeshUI.Inline({ textContent: text.substring(0, currentTag.startIndex), color: 'inherit' }))
296
+
297
+ // First segment should also clear children inlines
298
+ for ( let i = this.uiObject.children.length - 1 ; i >= 0; i-- ) {
299
+ const child = this.uiObject.children[ i ];
300
+
301
+ // @ts-ignore
302
+ if( child.isUI ) {
303
+
304
+ this.uiObject.remove( child );
305
+ child.clear();
306
+
307
+ }
308
+
309
+ }
310
+
311
+
312
+ const el = new ThreeMeshUI.Inline({ textContent: text.substring(0, currentTag.startIndex), color: 'inherit' });
313
+ this.uiObject.add(el);
295
314
  }
296
315
  const stackArray: Array<TagStackEntry> = [];
297
316
  while (currentTag) {
@@ -308,19 +327,23 @@ export class Text extends Graphic implements IHasAlphaFactor {
308
327
  opts.textContent = this.getText(text, currentTag, next);
309
328
 
310
329
  this.handleTag(currentTag, opts, stackArray);
311
- this.uiObject?.add(new ThreeMeshUI.Inline(opts))
330
+ const el = new ThreeMeshUI.Inline(opts);
331
+ this.uiObject?.add(el)
312
332
 
313
333
  } else {
314
334
 
315
335
  opts.textContent = text.substring(currentTag.endIndex);
316
336
 
317
337
  this.handleTag(currentTag, opts, stackArray);
318
- this.uiObject?.add(new ThreeMeshUI.Inline(opts))
338
+ const el = new ThreeMeshUI.Inline(opts);
339
+ this.uiObject?.add(el);
319
340
  }
320
341
  currentTag = next;
321
342
  }
322
343
  }
323
344
 
345
+ if(debug) console.log("feedText", this.uiObject);
346
+
324
347
  return null;
325
348
  }
326
349
 
@@ -393,17 +416,6 @@ export class Text extends Graphic implements IHasAlphaFactor {
393
416
  stackArray.push(stackEntry);
394
417
 
395
418
  }
396
- } else {
397
- if (stackArray.length > 0) {
398
- const last = stackArray.pop();
399
- if (last) {
400
- for (const key in last.previousValues) {
401
- const prevValue = last.previousValues[key];
402
- // console.log(key, val);
403
- opts[key] = prevValue;
404
- }
405
- }
406
- }
407
419
  }
408
420
  }
409
421
 
@@ -436,7 +448,7 @@ export class Text extends Graphic implements IHasAlphaFactor {
436
448
  // - Arial instead of assets/arial
437
449
  // - Arial should stay Arial instead of arial
438
450
  if (!this.font) return;
439
- let familyName = this.font;
451
+ let familyName = this.getFamilyNameWithCorrectSuffix(this.font, fontStyle);
440
452
 
441
453
  // ensure a font family is register under this name
442
454
  let fontFamily = ThreeMeshUI.FontLibrary.getFontFamily(familyName as string);
@@ -446,7 +458,6 @@ export class Text extends Graphic implements IHasAlphaFactor {
446
458
  // @TODO: @swingingtom how should the font be set?
447
459
  //@ts-ignore
448
460
  opts.fontFamily = fontFamily;
449
- const lowerFamilyName = familyName.toLowerCase();
450
461
 
451
462
  switch (fontStyle) {
452
463
  default:
@@ -458,24 +469,16 @@ export class Text extends Graphic implements IHasAlphaFactor {
458
469
  case FontStyle.Bold:
459
470
  opts.fontWeight = 700;
460
471
  opts.fontStyle = "normal";
461
- if (!lowerFamilyName.includes("-bold"))
462
- familyName += "-bold";
463
472
  break;
464
473
 
465
474
  case FontStyle.Italic:
466
475
  opts.fontWeight = 400;
467
476
  opts.fontStyle = "italic"
468
- if (!lowerFamilyName.includes("-italic"))
469
- familyName += "-italic";
470
477
  break;
471
478
 
472
479
  case FontStyle.BoldAndItalic:
473
480
  opts.fontStyle = 'italic';
474
481
  opts.fontWeight = 400;
475
- if (!lowerFamilyName.includes("-bold"))
476
- familyName += "-bold";
477
- if (!lowerFamilyName.includes("-italic"))
478
- familyName += "-italic";
479
482
  }
480
483
 
481
484
 
@@ -498,49 +501,35 @@ export class Text extends Graphic implements IHasAlphaFactor {
498
501
 
499
502
  }
500
503
 
501
- // private getFontStyleName(style: FontStyle): string | null {
502
- // if (!this.font) return null;
503
- // let fontName = this.font;
504
-
505
- // // if a font path has a known suffix we remove it
506
- // const fontNameLower = fontName.toLowerCase();
507
- // if (fontNameLower.endsWith("-regular")) {
508
- // if (style === FontStyle.Normal) return resolveUrl(this.sourceId, fontName);
509
- // fontName = fontName.substring(0, fontName.length - "-regular".length);
510
- // }
511
- // else if (fontNameLower.endsWith("-bold")) {
512
- // if (style === FontStyle.Bold) return resolveUrl(this.sourceId, fontName);
513
- // fontName = fontName.substring(0, fontName.length - "-bold".length);
514
- // }
515
- // else if (fontNameLower.endsWith("-italic")) {
516
- // if (style === FontStyle.Italic) return resolveUrl(this.sourceId, fontName);
517
- // fontName = fontName.substring(0, fontName.length - "-italic".length);
518
- // }
519
- // else if (fontNameLower.endsWith("-bolditalic")) {
520
- // if (style === FontStyle.BoldAndItalic) return resolveUrl(this.sourceId, fontName);
521
- // fontName = fontName.substring(0, fontName.length - "-bolditalic".length);
522
- // }
523
- // else
524
- // // If a font does not have a specific style suffic we dont support getting the correct font style
525
- // return resolveUrl(this.sourceId, fontName);
526
-
527
- // switch (style) {
528
- // case FontStyle.Normal:
529
- // fontName += "-regular";
530
- // break;
531
- // case FontStyle.Bold:
532
- // fontName += "-bold";
533
- // break;
534
- // case FontStyle.Italic:
535
- // fontName += "-italic";
536
- // break;
537
- // case FontStyle.BoldAndItalic:
538
- // fontName += "-bolditalic";
539
- // break;
540
- // }
541
-
542
- // return resolveUrl(this.sourceId, fontName);
543
- // }
504
+ private getFamilyNameWithCorrectSuffix(familyName: string, style: FontStyle): string {
505
+
506
+ // we can only change the style for the family if the name has a suffix (e.g. Arial-Bold)
507
+ const styleSeparator = familyName.lastIndexOf('-');
508
+ if (styleSeparator < 0) return familyName;
509
+
510
+ // Try find a suffix that matches the style
511
+ // We assume that if the font name is "Arial-Regular" then the bold version is "Arial-Bold"
512
+ // and if the font name is "arial-regular" then the bold version is "arial-bold"
513
+ let isUpperCase = familyName[0] === familyName[0].toUpperCase();
514
+ const fontNameWithoutSuffix = familyName.substring(0, styleSeparator);
515
+
516
+ switch (style) {
517
+ case FontStyle.Normal:
518
+ if (isUpperCase) return fontNameWithoutSuffix + "-Regular";
519
+ else return fontNameWithoutSuffix + "-regular";
520
+ case FontStyle.Bold:
521
+ if (isUpperCase) return fontNameWithoutSuffix + "-Bold";
522
+ else return fontNameWithoutSuffix + "-bold";
523
+ case FontStyle.Italic:
524
+ if (isUpperCase) return fontNameWithoutSuffix + "-Italic";
525
+ else return fontNameWithoutSuffix + "-italic";
526
+ case FontStyle.BoldAndItalic:
527
+ if (isUpperCase) return fontNameWithoutSuffix + "-BoldItalic";
528
+ else return fontNameWithoutSuffix + "-bolditalic";
529
+ default:
530
+ return familyName;
531
+ }
532
+ }
544
533
  }
545
534
 
546
535
  class TagStackEntry {
@@ -561,3 +550,8 @@ declare type TagInfo = {
561
550
 
562
551
  // const anyTag = new RegExp('<.+?>', 'g');
563
552
  // const regex = new RegExp('<(?<type>.+?)>(?<text>.+?)<\/.+?>', 'g');
553
+
554
+
555
+ const upperCaseStyleSuffixOptions = [
556
+ "Regular", "Bold", "Italic", "BoldItalic", "Medium", "MediumItalic", "SemiBold", "SemiBoldItalic", "Thin", "ThinItalic", "ExtraLight", "ExtraLightItalic", "Light", "LightItalic", "Black", "BlackItalic"
557
+ ];