pacem 0.51.2 → 0.51.3-avaris

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 (57) hide show
  1. package/dist/css/pacem-dark-content.min.css +1 -1
  2. package/dist/css/pacem-dark-shell.min.css +1 -1
  3. package/dist/css/pacem-dark.min.css +1 -1
  4. package/dist/css/pacem-light-content.min.css +1 -1
  5. package/dist/css/pacem-light-shell.min.css +1 -1
  6. package/dist/css/pacem-light.min.css +1 -1
  7. package/dist/css/pacem-phousys-content.min.css +1 -1
  8. package/dist/css/pacem-phousys-shell.min.css +1 -1
  9. package/dist/css/pacem-phousys.min.css +1 -1
  10. package/dist/js/azure-maps.d.ts +1 -1
  11. package/dist/js/pacem-2d.d.ts +1 -1
  12. package/dist/js/pacem-2d.js +1 -1
  13. package/dist/js/pacem-2d.min.js +1 -1
  14. package/dist/js/pacem-3d.d.ts +15 -3
  15. package/dist/js/pacem-3d.js +83 -60
  16. package/dist/js/pacem-3d.min.js +2 -2
  17. package/dist/js/pacem-charts.d.ts +1 -1
  18. package/dist/js/pacem-charts.js +1 -1
  19. package/dist/js/pacem-charts.min.js +1 -1
  20. package/dist/js/pacem-cms.d.ts +1 -1
  21. package/dist/js/pacem-cms.js +1 -1
  22. package/dist/js/pacem-cms.min.js +1 -1
  23. package/dist/js/pacem-core.d.ts +1 -1
  24. package/dist/js/pacem-core.js +1 -1
  25. package/dist/js/pacem-core.min.js +1 -1
  26. package/dist/js/pacem-foundation.d.ts +1 -1
  27. package/dist/js/pacem-foundation.js +1 -1
  28. package/dist/js/pacem-foundation.min.js +1 -1
  29. package/dist/js/pacem-fx.d.ts +1 -1
  30. package/dist/js/pacem-fx.js +1 -1
  31. package/dist/js/pacem-fx.min.js +1 -1
  32. package/dist/js/pacem-logging.d.ts +1 -1
  33. package/dist/js/pacem-logging.js +1 -1
  34. package/dist/js/pacem-logging.min.js +1 -1
  35. package/dist/js/pacem-maps.d.ts +1 -1
  36. package/dist/js/pacem-maps.js +1 -1
  37. package/dist/js/pacem-maps.min.js +1 -1
  38. package/dist/js/pacem-media.d.ts +1 -1
  39. package/dist/js/pacem-media.js +1 -1
  40. package/dist/js/pacem-media.min.js +1 -1
  41. package/dist/js/pacem-networking.d.ts +1 -1
  42. package/dist/js/pacem-networking.js +1 -1
  43. package/dist/js/pacem-networking.min.js +1 -1
  44. package/dist/js/pacem-numerical.d.ts +1 -1
  45. package/dist/js/pacem-numerical.js +1 -1
  46. package/dist/js/pacem-numerical.min.js +1 -1
  47. package/dist/js/pacem-plus.d.ts +1 -1
  48. package/dist/js/pacem-plus.js +1 -1
  49. package/dist/js/pacem-plus.min.js +1 -1
  50. package/dist/js/pacem-scaffolding.d.ts +1 -1
  51. package/dist/js/pacem-scaffolding.js +1 -1
  52. package/dist/js/pacem-scaffolding.min.js +1 -1
  53. package/dist/js/pacem-ui.d.ts +1 -1
  54. package/dist/js/pacem-ui.js +1 -1
  55. package/dist/js/pacem-ui.min.js +1 -1
  56. package/dist/js/swagger-types.d.ts +1 -1
  57. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -385,7 +385,8 @@ declare namespace Pacem.Components.Drawing3D {
385
385
  disconnectedCallback(): void;
386
386
  get size(): Size;
387
387
  private _resizeHandler;
388
- render(item?: Pacem.Drawing3D.Renderable, deepUpdate?: boolean): void;
388
+ render(item?: Pacem.Drawing3D.Renderable, deepUpdate?: boolean, now?: number): void;
389
+ private _doRender;
389
390
  }
390
391
  }
391
392
  declare namespace Pacem.Components.Drawing3D {
@@ -649,7 +650,17 @@ declare namespace Pacem.Drawing3D.WebGPU {
649
650
  static createIndexed(device: GPUDevice, data: Uint16Array, label?: string): GPUBuffer;
650
651
  }
651
652
  class BufferLayouts {
653
+ /**
654
+ * Create one {@link GPUVertexBufferLayout} at the provided {@param shaderLocation} having the spcified {@param size}.
655
+ * @param shaderLocation {Number} Shader location index.
656
+ * @param size {Number} Float32Array size (defaults to 3 assuming a flattened array of 3D vectors as the most common case).
657
+ */
652
658
  static createVertex(shaderLocation: number, size?: number): GPUVertexBufferLayout;
659
+ /**
660
+ * Create one {@link GPUVertexBufferLayout} having the first defined shaderLocation at the provided {@param shaderLocationStart} index and the offsets obeying to the spcified {@param sizes}.
661
+ * @param shaderLocationStart {Number} First shader location index.
662
+ * @param sizes {Array} Ordered Float32Array sizes.
663
+ */
653
664
  static createVertex(shaderLocationStart: number, ...sizes: number[]): GPUVertexBufferLayout;
654
665
  }
655
666
  }
@@ -768,7 +779,7 @@ declare namespace Pacem.Drawing3D.WebGPU {
768
779
  private static _memoizer;
769
780
  static dispose(ctx: Context): void;
770
781
  static createColorPicking(ctx: Context, items: RenderableBuffer[]): RenderPipeline | null;
771
- static create(ctx: Context, items: RenderableBuffer[], pipelineOptions?: Partial<PipelineOptions>): RenderPipeline;
782
+ static create(ctx: Context, [mesh, camera, ...lights]: RenderableBuffer[], pipelineOptions?: Partial<PipelineOptions>): RenderPipeline;
772
783
  }
773
784
  }
774
785
  declare namespace Pacem.Drawing3D.WebGPU {
@@ -820,6 +831,7 @@ declare namespace Pacem.Components.Drawing3D {
820
831
  private _webGPUNotSupported;
821
832
  initialize(scene: Pacem3DElement): Promise<HTMLCanvasElement | null>;
822
833
  propertyChangedCallback(name: string, old: any, val: any, first?: boolean): void;
834
+ disconnectedCallback(): void;
823
835
  dispose(scene: Pacem3DElement): void;
824
836
  enableValidation: boolean;
825
837
  private _ensureRenderer;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.2 (https://js.pacem.it)
2
+ * pacem v0.51.3-avaris (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -825,13 +825,20 @@ var Pacem;
825
825
  me.adapter.raycast(this, pixel, rect, callback);
826
826
  };
827
827
  this._resizeHandler = (evt) => {
828
- const size = this.#size = evt.detail; // { width: evt.detail.width, height: evt.detail.height };
828
+ const oldSize = this.#size;
829
+ const size = evt.detail;
830
+ if (!Pacem.Utils.isNull(oldSize) && oldSize.height === size.height && oldSize.width === size.width) {
831
+ return;
832
+ }
833
+ this.#size = size;
829
834
  const adapter = this.adapter;
830
835
  if (!Pacem.Utils.isNull(adapter)) {
831
836
  this.adapter.invalidateSize(this, size);
832
837
  this.dispatchEvent(new Components.ResizeEvent(size));
833
838
  }
834
839
  };
840
+ this.#then = 0;
841
+ this.#fps = 1000 / 60;
835
842
  //#endregion
836
843
  }
837
844
  validate(item) {
@@ -962,6 +969,7 @@ var Pacem;
962
969
  return false;
963
970
  }
964
971
  disconnectedCallback() {
972
+ cancelAnimationFrame(this.#handle);
965
973
  const resizer = this._resizer, container = this._container;
966
974
  if (!Pacem.Utils.isNull(container)) {
967
975
  container.removeEventListener('click', this._clickHandler, false);
@@ -975,12 +983,11 @@ var Pacem;
975
983
  }
976
984
  super.disconnectedCallback();
977
985
  }
986
+ #size;
978
987
  get size() {
979
988
  return this.#size;
980
989
  }
981
- #size;
982
- #handle;
983
- render(item, deepUpdate) {
990
+ render(item, deepUpdate, now = performance.now()) {
984
991
  if (!Pacem.Utils.isNull(item)) {
985
992
  const adapter = this.adapter;
986
993
  if (!Pacem.Utils.isNull(adapter)) {
@@ -988,17 +995,25 @@ var Pacem;
988
995
  }
989
996
  }
990
997
  else {
991
- cancelAnimationFrame(this.#handle);
992
- if (!this.disabled && !Pacem.Utils.isNull(this.adapter)) {
993
- const scene = this.adapter.getScene(this);
994
- let cancelable = new CustomEvent('prerender', { detail: { scene }, cancelable: true });
995
- this.dispatchEvent(cancelable);
996
- if (!cancelable.defaultPrevented) {
997
- this.adapter.render(this);
998
- this.dispatchEvent(new CustomEvent('render', { detail: { scene } }));
999
- }
998
+ this._doRender(this.#then);
999
+ }
1000
+ }
1001
+ #handle;
1002
+ #then;
1003
+ #fps;
1004
+ _doRender(t = 0) {
1005
+ this.#handle = requestAnimationFrame(t => this._doRender(t));
1006
+ const now = t, fps = this.#fps;
1007
+ const delta = now - this.#then;
1008
+ if (delta > fps && !this.disabled && !Pacem.Utils.isNull(this.adapter)) {
1009
+ this.#then = now - (delta % fps);
1010
+ const scene = this.adapter.getScene(this);
1011
+ let cancelable = new CustomEvent('prerender', { detail: { scene }, cancelable: true });
1012
+ this.dispatchEvent(cancelable);
1013
+ if (!cancelable.defaultPrevented) {
1014
+ this.adapter.render(this);
1015
+ this.dispatchEvent(new CustomEvent('render', { detail: { scene } }));
1000
1016
  }
1001
- this.#handle = requestAnimationFrame(() => this.render());
1002
1017
  }
1003
1018
  }
1004
1019
  };
@@ -2368,13 +2383,11 @@ var Pacem;
2368
2383
  const lights = this.#lights;
2369
2384
  const { hasTexture, shader } = data;
2370
2385
  // TODO: consider backMap
2371
- return `mesh-${shader}-${lights.map(l => l.type).join('-')}${(hasTexture ? '-map' : '-nomap')}`;
2386
+ //return `mesh-${shader}-${lights.map(l => l.type).join('-')}${(hasTexture ? '-map' : '-nomap')}`;
2387
+ return `mesh-${shader}${(hasTexture ? '-map' : '-nomap')}`;
2372
2388
  }
2373
2389
  bindgroup(type, key, index) {
2374
2390
  const set = this.#bindgroups;
2375
- if (!set.has(type)) {
2376
- return null;
2377
- }
2378
2391
  const arr = set.get(type);
2379
2392
  if (Pacem.Utils.isNull(arr)) {
2380
2393
  return null;
@@ -2473,8 +2486,8 @@ var Pacem;
2473
2486
  static { this._memoizer = new WeakMap(); }
2474
2487
  static dispose(ctx) {
2475
2488
  const memoizer = this._memoizer;
2476
- if (memoizer.has(ctx)) {
2477
- const cache = memoizer.get(ctx);
2489
+ const cache = memoizer.get(ctx);
2490
+ if (!Pacem.Utils.isNull(cache)) {
2478
2491
  cache.clear();
2479
2492
  memoizer.delete(ctx);
2480
2493
  }
@@ -2488,16 +2501,16 @@ var Pacem;
2488
2501
  }
2489
2502
  return null;
2490
2503
  }
2491
- static create(ctx, items, pipelineOptions) {
2504
+ static create(ctx, [mesh, camera, ...lights], pipelineOptions) {
2492
2505
  const memoizer = RenderPipeline._memoizer;
2493
- if (!memoizer.has(ctx)) {
2494
- memoizer.set(ctx, new Map());
2506
+ let cache = memoizer.get(ctx);
2507
+ if (Pacem.Utils.isNull(cache)) {
2508
+ memoizer.set(ctx, cache = new Map());
2495
2509
  }
2496
- const cache = memoizer.get(ctx);
2497
- const camera = items.find(i => Drawing3D.isCamera(i.item));
2498
- const lights = items.filter(i => Drawing3D.isLight(i.item));
2499
- // find main object
2500
- const mesh = items.find(i => Drawing3D.isMesh(i.item));
2510
+ //const camera = items.find(i => isCamera(i.item));
2511
+ //const lights = items.filter(i => isLight(i.item));
2512
+ //// find main object
2513
+ //const mesh = items.find(i => isMesh(i.item));
2501
2514
  if (!Pacem.Utils.isNull(mesh)) {
2502
2515
  const meshPipeline = new MeshRenderPipelineClass(ctx, mesh, camera, ...lights);
2503
2516
  // cache peek for sudden return
@@ -2680,21 +2693,21 @@ var Pacem;
2680
2693
  this.draw = (pass, ...buffers) => {
2681
2694
  throw new Error('Deprecated.');
2682
2695
  };
2683
- this.frame = (pass, ...buffers) => {
2684
- let meshBuffer, cameraBuffer, lightBuffers = [];
2685
- for (let buffer of buffers) {
2686
- if (Pacem.Utils.isNull(meshBuffer) && Drawing3D.isMesh(buffer.item)) {
2687
- meshBuffer = buffer;
2688
- continue;
2689
- }
2690
- if (Pacem.Utils.isNull(cameraBuffer) && Drawing3D.isCamera(buffer.item)) {
2691
- cameraBuffer = buffer;
2692
- continue;
2693
- }
2694
- if (Drawing3D.isLight(buffer.item)) {
2695
- lightBuffers.push(buffer);
2696
- }
2697
- }
2696
+ this.frame = (pass, meshBuffer, cameraBuffer, ...lightBuffers) => {
2697
+ //let meshBuffer: RenderableBuffer, cameraBuffer: RenderableBuffer, lightBuffers: RenderableBuffer[] = [];
2698
+ //for (let buffer of buffers) {
2699
+ // if (Utils.isNull(meshBuffer) && isMesh(buffer.item)) {
2700
+ // meshBuffer = buffer;
2701
+ // continue;
2702
+ // }
2703
+ // if (Utils.isNull(cameraBuffer) && isCamera(buffer.item)) {
2704
+ // cameraBuffer = buffer;
2705
+ // continue;
2706
+ // }
2707
+ // if (isLight(buffer.item)) {
2708
+ // lightBuffers.push(buffer);
2709
+ // }
2710
+ //}
2698
2711
  // same pass
2699
2712
  const samePass = pass === this.#previousPass;
2700
2713
  if (!samePass) {
@@ -4020,7 +4033,7 @@ var Pacem;
4020
4033
  if (validationScope) {
4021
4034
  device.pushErrorScope('validation');
4022
4035
  }
4023
- const renderables = [mesh, camera].concat(lights);
4036
+ const renderables = [mesh, camera, ...lights];
4024
4037
  const pipeline = WebGPU.RenderPipeline.create(context, renderables, { multisample: true });
4025
4038
  // render
4026
4039
  pipeline.frame(pass, ...renderables);
@@ -4077,24 +4090,27 @@ var Pacem;
4077
4090
  _createOrYieldRenderable(item, geometries = this.#geometries, materials = this.#materials) {
4078
4091
  item.stage ??= this.#stage;
4079
4092
  const store = this.#renderables;
4080
- if (!store.has(item)) {
4081
- store.set(item, WebGPU.RenderableBuffer.create(item, geometries));
4093
+ let found = store.get(item);
4094
+ if (Pacem.Utils.isNull(found)) {
4095
+ store.set(item, found = WebGPU.RenderableBuffer.create(item, geometries));
4082
4096
  }
4083
- return store.get(item);
4097
+ return found;
4084
4098
  }
4085
4099
  _createOrYieldGeometry(item) {
4086
4100
  const store = this.#geometries;
4087
- if (!store.has(item)) {
4088
- store.set(item, WebGPU.ManagedBuffer.create(item));
4101
+ let found = store.get(item);
4102
+ if (Pacem.Utils.isNull(found)) {
4103
+ store.set(item, found = WebGPU.ManagedBuffer.create(item));
4089
4104
  }
4090
- return store.get(item);
4105
+ return found;
4091
4106
  }
4092
4107
  _createOrYieldMaterial(item) {
4093
4108
  const store = this.#materials;
4094
- if (!store.has(item)) {
4095
- store.set(item, WebGPU.ManagedBuffer.create(item));
4109
+ let found = store.get(item);
4110
+ if (Pacem.Utils.isNull(found)) {
4111
+ store.set(item, found = WebGPU.ManagedBuffer.create(item));
4096
4112
  }
4097
- return store.get(item);
4113
+ return found;
4098
4114
  }
4099
4115
  _unwrapBuffers(grp, accumulator) {
4100
4116
  accumulator ??= { meshes: [], lights: [], cameras: [], groups: [] };
@@ -4117,8 +4133,7 @@ var Pacem;
4117
4133
  return accumulator;
4118
4134
  }
4119
4135
  ;
4120
- update(...items) {
4121
- const array = Array.from(items);
4136
+ _update(array) {
4122
4137
  const groupBuffers = [];
4123
4138
  const meshBuffers = [];
4124
4139
  const lightBuffers = [];
@@ -4164,6 +4179,10 @@ var Pacem;
4164
4179
  }
4165
4180
  this.#looper = new WebGPU.RenderLooper(accumulator);
4166
4181
  }
4182
+ update(...items) {
4183
+ const array = Array.from(items);
4184
+ this._update(array);
4185
+ }
4167
4186
  dispose() {
4168
4187
  if (this._disposeContext()) {
4169
4188
  const { device } = this.#context;
@@ -4269,6 +4288,14 @@ var Pacem;
4269
4288
  }
4270
4289
  }
4271
4290
  }
4291
+ disconnectedCallback() {
4292
+ const set = this.#renderers;
4293
+ for (let [_, renderer] of set) {
4294
+ renderer.dispose();
4295
+ }
4296
+ set.clear();
4297
+ super.disconnectedCallback();
4298
+ }
4272
4299
  dispose(scene) {
4273
4300
  const renderers = this.#renderers;
4274
4301
  if (renderers.has(scene)) {
@@ -4278,10 +4305,6 @@ var Pacem;
4278
4305
  }
4279
4306
  _ensureRenderer(scene) {
4280
4307
  const set = this.#renderers;
4281
- if (!set.has(scene)) {
4282
- return null;
4283
- }
4284
- // renderer
4285
4308
  return set.get(scene);
4286
4309
  }
4287
4310
  _updatePipeline(scene) {