custom-pixi-particles 4.43.0 → 4.43.2

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.
@@ -1,6 +1,7 @@
1
1
  import Behaviour from './Behaviour';
2
2
  import Particle from '../Particle';
3
3
  import type Model from '../Model';
4
+ import { type ToroidalWrapFadePhase } from '../util/toroidalWrapFade';
4
5
  /**
5
6
  * Toroidal screen/world wrap: particles that fully leave an axis-aligned rectangle
6
7
  * re-enter on the opposite side while still fully outside the view (no visible jump).
@@ -28,14 +29,22 @@ export default class ToroidalWrapBehaviour extends Behaviour {
28
29
  private _handledVisibilityResumeGeneration;
29
30
  private _fadePhase;
30
31
  private _fadeMult;
32
+ private _seedExtentSpanX;
33
+ private _seedExtentSpanY;
34
+ private _blockExitFade;
35
+ private _hasSpawnSeeded;
31
36
  init: (particle: Particle, _model: Model, _turbulencePool: unknown) => void;
32
37
  onParticleRemoved: (particle: Particle) => void;
33
38
  getWrapFadeMultiplier(particle: Particle): number;
34
39
  isWrapFadeActive(particle: Particle): boolean;
40
+ getWrapFadePhase(particle: Particle): ToroidalWrapFadePhase;
35
41
  private clearParticleState;
36
42
  private clearFadeState;
43
+ private clearSpawnSeedState;
37
44
  private startWrapFadeIn;
45
+ private needsAxisReseed;
38
46
  private seedSpawnPositionIntoViewport;
47
+ private startSpawnFadeIn;
39
48
  apply: (particle: Particle, deltaTime: number, model: Model) => void;
40
49
  getName(): string;
41
50
  getProps(): {
@@ -1,7 +1,7 @@
1
1
  import Behaviour from './Behaviour';
2
2
  import BehaviourNames from './BehaviourNames';
3
- import { getToroidalEdgeExtents, isToroidalAxisViewportVisible, relocateToroidalAxisIntoViewport, resolveToroidalBounds, wrapToroidalAxis, } from '../util/toroidalWrapExtents';
4
- import { shouldContinueToroidalFadeOnAxis, shouldStartToroidalFadeOnAxis, toroidalFadeDelta, } from '../util/toroidalWrapFade';
3
+ import { getToroidalAxisExtentSpan, getToroidalEdgeExtents, isToroidalAxisViewportVisible, isToroidalViewportVisible, relocateToroidalAxisIntoViewport, resolveToroidalBounds, wrapToroidalAxis, } from '../util/toroidalWrapExtents';
4
+ import { shouldStartToroidalFadeOnAxis, toroidalFadeDelta, } from '../util/toroidalWrapFade';
5
5
  /**
6
6
  * Toroidal screen/world wrap: particles that fully leave an axis-aligned rectangle
7
7
  * re-enter on the opposite side while still fully outside the view (no visible jump).
@@ -31,6 +31,10 @@ export default class ToroidalWrapBehaviour extends Behaviour {
31
31
  this._handledVisibilityResumeGeneration = -1;
32
32
  this._fadePhase = new Map();
33
33
  this._fadeMult = new Map();
34
+ this._seedExtentSpanX = new Map();
35
+ this._seedExtentSpanY = new Map();
36
+ this._blockExitFade = new Set();
37
+ this._hasSpawnSeeded = new Set();
34
38
  this.init = (particle, _model, _turbulencePool) => {
35
39
  this.clearParticleState(particle.uid);
36
40
  };
@@ -44,8 +48,7 @@ export default class ToroidalWrapBehaviour extends Behaviour {
44
48
  const resumeGeneration = (_a = model.visibilityResumeGeneration) !== null && _a !== void 0 ? _a : 0;
45
49
  if (resumeGeneration > this._handledVisibilityResumeGeneration) {
46
50
  this._handledVisibilityResumeGeneration = resumeGeneration;
47
- this._insideX.clear();
48
- this._insideY.clear();
51
+ this.clearSpawnSeedState();
49
52
  this.clearFadeState();
50
53
  }
51
54
  const bounds = resolveToroidalBounds(this, model.toroidalCanvasBounds);
@@ -62,19 +65,34 @@ export default class ToroidalWrapBehaviour extends Behaviour {
62
65
  let phase = (_b = this._fadePhase.get(uid)) !== null && _b !== void 0 ? _b : 'idle';
63
66
  let fadeMult = (_c = this._fadeMult.get(uid)) !== null && _c !== void 0 ? _c : 1;
64
67
  let didWrap = false;
68
+ let spawnRelocated = false;
69
+ const isFirstSpawnSeed = !this._hasSpawnSeeded.has(uid);
65
70
  if (this.wrapX) {
66
- const seeded = this.seedSpawnPositionIntoViewport(uid, visualX, mx, bounds.minX, bounds.maxX, extents.left, extents.right, this._insideX);
71
+ const seeded = this.seedSpawnPositionIntoViewport(uid, visualX, mx, bounds.minX, bounds.maxX, extents.left, extents.right, this._insideX, this._seedExtentSpanX);
67
72
  visualX = seeded.visual;
68
73
  mx = seeded.movement;
74
+ if (seeded.relocated)
75
+ spawnRelocated = true;
69
76
  }
70
77
  if (this.wrapY) {
71
- const seeded = this.seedSpawnPositionIntoViewport(uid, visualY, my, bounds.minY, bounds.maxY, extents.top, extents.bottom, this._insideY);
78
+ const seeded = this.seedSpawnPositionIntoViewport(uid, visualY, my, bounds.minY, bounds.maxY, extents.top, extents.bottom, this._insideY, this._seedExtentSpanY);
72
79
  visualY = seeded.visual;
73
80
  my = seeded.movement;
81
+ if (seeded.relocated)
82
+ spawnRelocated = true;
83
+ }
84
+ if (isFirstSpawnSeed && (this._insideX.has(uid) || this._insideY.has(uid) || spawnRelocated)) {
85
+ this._hasSpawnSeeded.add(uid);
86
+ }
87
+ if (spawnRelocated && this.wrapFadeEnabled && phase === 'idle' && isFirstSpawnSeed) {
88
+ this.startSpawnFadeIn(uid);
89
+ phase = 'in';
90
+ fadeMult = 0;
74
91
  }
75
92
  if (this.wrapFadeEnabled) {
76
93
  const fadeStep = toroidalFadeDelta(deltaTime, this.wrapFadeDuration);
77
- if (phase === 'idle') {
94
+ const blockExitFade = this._blockExitFade.has(uid);
95
+ if (phase === 'idle' && !blockExitFade) {
78
96
  const startX = this.wrapX &&
79
97
  shouldStartToroidalFadeOnAxis(visualX, particle.velocity.x, bounds.minX, bounds.maxX, extents.left, extents.right, this._insideX.get(uid), this.wrapFadeDuration);
80
98
  const startY = this.wrapY &&
@@ -87,33 +105,15 @@ export default class ToroidalWrapBehaviour extends Behaviour {
87
105
  }
88
106
  }
89
107
  if (phase === 'out') {
90
- const approachingX = this.wrapX &&
91
- shouldContinueToroidalFadeOnAxis(visualX, particle.velocity.x, bounds.minX, bounds.maxX, extents.left, extents.right, this.wrapFadeDuration);
92
- const approachingY = this.wrapY &&
93
- shouldContinueToroidalFadeOnAxis(visualY, particle.velocity.y, bounds.minY, bounds.maxY, extents.top, extents.bottom, this.wrapFadeDuration);
94
- if (!approachingX && !approachingY) {
95
- phase = 'idle';
96
- fadeMult = 1;
97
- this._fadePhase.set(uid, 'idle');
98
- this._fadeMult.set(uid, 1);
99
- }
100
- else {
101
- fadeMult = Math.max(0, fadeMult - fadeStep);
102
- this._fadeMult.set(uid, fadeMult);
103
- }
104
- }
105
- else if (phase === 'in') {
106
- fadeMult = Math.min(1, fadeMult + fadeStep);
108
+ fadeMult = Math.max(0, fadeMult - fadeStep);
107
109
  this._fadeMult.set(uid, fadeMult);
108
- if (fadeMult >= 1) {
109
- phase = 'idle';
110
- fadeMult = 1;
111
- this._fadePhase.set(uid, 'idle');
112
- this._fadeMult.set(uid, 1);
113
- }
110
+ this._fadePhase.set(uid, 'out');
114
111
  }
115
112
  }
116
- const deferWrap = this.wrapFadeEnabled && phase === 'out' && fadeMult > 0;
113
+ const deferWrap = this.wrapFadeEnabled &&
114
+ phase === 'out' &&
115
+ fadeMult > 0 &&
116
+ isToroidalViewportVisible(visualX, visualY, extents, bounds, this.wrapX, this.wrapY);
117
117
  if (this.wrapX) {
118
118
  const wrapped = wrapToroidalAxis(visualX, mx, bounds.minX, bounds.maxX, extents.left, extents.right, this._insideX.get(uid));
119
119
  if (wrapped.didWrap && deferWrap) {
@@ -122,7 +122,7 @@ export default class ToroidalWrapBehaviour extends Behaviour {
122
122
  else {
123
123
  if (wrapped.didWrap) {
124
124
  didWrap = true;
125
- if (this.wrapFadeEnabled && phase === 'out') {
125
+ if (this.wrapFadeEnabled && phase !== 'in') {
126
126
  phase = 'in';
127
127
  fadeMult = 0;
128
128
  this.startWrapFadeIn(uid);
@@ -141,7 +141,7 @@ export default class ToroidalWrapBehaviour extends Behaviour {
141
141
  else {
142
142
  if (wrapped.didWrap) {
143
143
  didWrap = true;
144
- if (this.wrapFadeEnabled && phase === 'out') {
144
+ if (this.wrapFadeEnabled && phase !== 'in') {
145
145
  phase = 'in';
146
146
  fadeMult = 0;
147
147
  this.startWrapFadeIn(uid);
@@ -156,6 +156,24 @@ export default class ToroidalWrapBehaviour extends Behaviour {
156
156
  ;
157
157
  particle._toroidalJustWrapped = true;
158
158
  }
159
+ if (this.wrapFadeEnabled && phase === 'in') {
160
+ const fadeStep = toroidalFadeDelta(deltaTime, this.wrapFadeDuration);
161
+ const viewportVisible = isToroidalViewportVisible(visualX, visualY, extents, bounds, this.wrapX, this.wrapY);
162
+ if (viewportVisible) {
163
+ fadeMult = Math.min(1, fadeMult + fadeStep);
164
+ this._fadeMult.set(uid, fadeMult);
165
+ if (fadeMult >= 1) {
166
+ phase = 'idle';
167
+ fadeMult = 1;
168
+ this._fadePhase.set(uid, 'idle');
169
+ this._fadeMult.set(uid, 1);
170
+ this._blockExitFade.delete(uid);
171
+ }
172
+ }
173
+ else {
174
+ this._fadeMult.set(uid, fadeMult);
175
+ }
176
+ }
159
177
  particle.movement.x = mx;
160
178
  particle.movement.y = my;
161
179
  particle.x = visualX;
@@ -174,27 +192,73 @@ export default class ToroidalWrapBehaviour extends Behaviour {
174
192
  return false;
175
193
  return ((_a = this._fadePhase.get(particle.uid)) !== null && _a !== void 0 ? _a : 'idle') !== 'idle';
176
194
  }
195
+ getWrapFadePhase(particle) {
196
+ var _a;
197
+ if (!this.wrapFadeEnabled)
198
+ return 'idle';
199
+ return (_a = this._fadePhase.get(particle.uid)) !== null && _a !== void 0 ? _a : 'idle';
200
+ }
177
201
  clearParticleState(uid) {
178
202
  this._insideX.delete(uid);
179
203
  this._insideY.delete(uid);
180
204
  this._fadePhase.delete(uid);
181
205
  this._fadeMult.delete(uid);
206
+ this._seedExtentSpanX.delete(uid);
207
+ this._seedExtentSpanY.delete(uid);
208
+ this._blockExitFade.delete(uid);
209
+ this._hasSpawnSeeded.delete(uid);
182
210
  }
183
211
  clearFadeState() {
184
212
  this._fadePhase.clear();
185
213
  this._fadeMult.clear();
214
+ this._blockExitFade.clear();
215
+ this._hasSpawnSeeded.clear();
216
+ }
217
+ clearSpawnSeedState() {
218
+ this._insideX.clear();
219
+ this._insideY.clear();
220
+ this._seedExtentSpanX.clear();
221
+ this._seedExtentSpanY.clear();
222
+ this._blockExitFade.clear();
223
+ this._hasSpawnSeeded.clear();
186
224
  }
187
225
  startWrapFadeIn(uid) {
188
226
  this._fadePhase.set(uid, 'in');
189
227
  this._fadeMult.set(uid, 0);
190
228
  }
191
- seedSpawnPositionIntoViewport(uid, visual, movement, min, max, leading, trailing, insideMap) {
192
- if (insideMap.has(uid)) {
193
- return { visual, movement };
229
+ needsAxisReseed(uid, leading, trailing, spanMap, insideMap) {
230
+ var _a;
231
+ if (!insideMap.has(uid))
232
+ return true;
233
+ const currentSpan = getToroidalAxisExtentSpan(leading, trailing);
234
+ const seededSpan = (_a = spanMap.get(uid)) !== null && _a !== void 0 ? _a : 0;
235
+ return currentSpan > seededSpan + 1;
236
+ }
237
+ seedSpawnPositionIntoViewport(uid, visual, movement, min, max, leading, trailing, insideMap, spanMap) {
238
+ const currentSpan = getToroidalAxisExtentSpan(leading, trailing);
239
+ const isFirstSeed = !insideMap.has(uid);
240
+ if (!isFirstSeed && !this.needsAxisReseed(uid, leading, trailing, spanMap, insideMap)) {
241
+ return { visual, movement, relocated: false };
242
+ }
243
+ // Sprite grew after spawn: refresh extent tracking only — do not yank live particles off the edge.
244
+ if (!isFirstSeed &&
245
+ isToroidalAxisViewportVisible(visual, leading, trailing, min, max)) {
246
+ insideMap.set(uid, true);
247
+ spanMap.set(uid, currentSpan);
248
+ return { visual, movement, relocated: false };
194
249
  }
195
250
  const relocated = relocateToroidalAxisIntoViewport(visual, movement, min, max, leading, trailing);
196
251
  insideMap.set(uid, isToroidalAxisViewportVisible(relocated.position, leading, trailing, min, max));
197
- return { visual: relocated.position, movement: relocated.movement };
252
+ spanMap.set(uid, currentSpan);
253
+ return {
254
+ visual: relocated.position,
255
+ movement: relocated.movement,
256
+ relocated: relocated.relocated,
257
+ };
258
+ }
259
+ startSpawnFadeIn(uid) {
260
+ this.startWrapFadeIn(uid);
261
+ this._blockExitFade.add(uid);
198
262
  }
199
263
  getName() {
200
264
  return BehaviourNames.TOROIDAL_WRAP_BEHAVIOUR;
@@ -1 +1 @@
1
- {"version":3,"file":"ToroidalWrapBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/ToroidalWrapBehaviour.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToroidalWrapBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/ToroidalWrapBehaviour.ts"],"names":[],"mappings":"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"}
@@ -46,9 +46,20 @@ export type ToroidalAxisRelocateResult = {
46
46
  };
47
47
  /** True when any part of the particle overlaps the wrap band on one axis. */
48
48
  export declare function isToroidalAxisViewportVisible(position: number, leadingExtent: number, trailingExtent: number, min: number, max: number): boolean;
49
+ /** True when the full particle bbox fits inside the wrap band on one axis. */
50
+ export declare function isToroidalAxisFullyContained(position: number, leadingExtent: number, trailingExtent: number, min: number, max: number): boolean;
51
+ /** Combined leading+trailing span on one axis (used to detect sprite extent growth). */
52
+ export declare function getToroidalAxisExtentSpan(leadingExtent: number, trailingExtent: number): number;
53
+ /** Center range where the full particle bbox fits inside the wrap band. */
54
+ export declare function getToroidalAxisSafeCenterRange(min: number, max: number, leadingExtent: number, trailingExtent: number): {
55
+ min: number;
56
+ max: number;
57
+ };
58
+ export declare function clampToroidalAxisCenterToSafeRange(position: number, min: number, max: number, leadingExtent: number, trailingExtent: number): number;
49
59
  /**
50
60
  * Moves a spawn-outside particle into the toroidal viewport by modulo-mapping its
51
- * position into the wrap band. Preserves movement offset so render/visual offsets stay aligned.
61
+ * position into the wrap band, then clamping to a center range that fits the sprite extents.
62
+ * Preserves movement offset so render/visual offsets stay aligned.
52
63
  */
53
64
  export declare function relocateToroidalAxisIntoViewport(position: number, movement: number, min: number, max: number, leadingExtent: number, trailingExtent: number): ToroidalAxisRelocateResult;
54
65
  /**
@@ -83,28 +83,59 @@ export function isToroidalViewportVisible(x, y, extents, bounds, wrapX, wrapY) {
83
83
  export function isToroidalAxisViewportVisible(position, leadingExtent, trailingExtent, min, max) {
84
84
  return position + trailingExtent >= min && position - leadingExtent <= max;
85
85
  }
86
+ /** True when the full particle bbox fits inside the wrap band on one axis. */
87
+ export function isToroidalAxisFullyContained(position, leadingExtent, trailingExtent, min, max) {
88
+ return position - leadingExtent >= min && position + trailingExtent <= max;
89
+ }
90
+ /** Combined leading+trailing span on one axis (used to detect sprite extent growth). */
91
+ export function getToroidalAxisExtentSpan(leadingExtent, trailingExtent) {
92
+ return leadingExtent + trailingExtent;
93
+ }
94
+ /** Center range where the full particle bbox fits inside the wrap band. */
95
+ export function getToroidalAxisSafeCenterRange(min, max, leadingExtent, trailingExtent) {
96
+ const safeMin = min + leadingExtent;
97
+ const safeMax = max - trailingExtent;
98
+ if (safeMin <= safeMax) {
99
+ return { min: safeMin, max: safeMax };
100
+ }
101
+ const center = (min + max) * 0.5;
102
+ return { min: center, max: center };
103
+ }
104
+ export function clampToroidalAxisCenterToSafeRange(position, min, max, leadingExtent, trailingExtent) {
105
+ const safe = getToroidalAxisSafeCenterRange(min, max, leadingExtent, trailingExtent);
106
+ return Math.min(safe.max, Math.max(safe.min, position));
107
+ }
86
108
  /**
87
109
  * Moves a spawn-outside particle into the toroidal viewport by modulo-mapping its
88
- * position into the wrap band. Preserves movement offset so render/visual offsets stay aligned.
110
+ * position into the wrap band, then clamping to a center range that fits the sprite extents.
111
+ * Preserves movement offset so render/visual offsets stay aligned.
89
112
  */
90
113
  export function relocateToroidalAxisIntoViewport(position, movement, min, max, leadingExtent, trailingExtent) {
91
- if (isToroidalAxisViewportVisible(position, leadingExtent, trailingExtent, min, max)) {
114
+ if (isToroidalAxisFullyContained(position, leadingExtent, trailingExtent, min, max)) {
92
115
  return { position, movement, relocated: false };
93
116
  }
94
- const period = max - min;
95
- if (period <= 0) {
96
- return { position, movement, relocated: false };
117
+ let pos = position;
118
+ let mov = movement;
119
+ let relocated = false;
120
+ if (!isToroidalAxisViewportVisible(position, leadingExtent, trailingExtent, min, max)) {
121
+ const period = max - min;
122
+ if (period <= 0) {
123
+ return { position, movement, relocated: false };
124
+ }
125
+ pos = min + ((((position - min) % period) + period) % period);
126
+ mov = movement + (pos - position);
127
+ relocated = true;
97
128
  }
98
- let pos = min + ((((position - min) % period) + period) % period);
99
- let mov = movement + (pos - position);
100
- if (!isToroidalAxisViewportVisible(pos, leadingExtent, trailingExtent, min, max)) {
101
- const minCenter = min - trailingExtent;
102
- const maxCenter = max + leadingExtent;
103
- const clamped = Math.min(maxCenter, Math.max(minCenter, pos));
129
+ const clamped = clampToroidalAxisCenterToSafeRange(pos, min, max, leadingExtent, trailingExtent);
130
+ if (clamped !== pos) {
104
131
  mov += clamped - pos;
105
132
  pos = clamped;
133
+ relocated = true;
134
+ }
135
+ else if (clamped !== position) {
136
+ relocated = true;
106
137
  }
107
- return { position: pos, movement: mov, relocated: true };
138
+ return { position: pos, movement: mov, relocated };
108
139
  }
109
140
  /**
110
141
  * Wraps one axis only when a particle transitions from inside to fully outside,
@@ -1 +1 @@
1
- {"version":3,"file":"toroidalWrapExtents.js","sourceRoot":"","sources":["../../../src/lib/util/toroidalWrapExtents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toroidalWrapExtents.js","sourceRoot":"","sources":["../../../src/lib/util/toroidalWrapExtents.ts"],"names":[],"mappings":"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"}
@@ -21,8 +21,9 @@ function distToMinExit(position, trailingExtent, min) {
21
21
  export function getToroidalFadeLead(axisVelocity, fadeDuration, leadingExtent, trailingExtent, min, max) {
22
22
  const axisSpan = Math.max(0, max - min);
23
23
  const velocityLead = Math.abs(axisVelocity) * fadeDuration;
24
- const minLead = (leadingExtent + trailingExtent) * 0.25;
24
+ const extentLead = (leadingExtent + trailingExtent) * 0.25;
25
25
  const spanCap = axisSpan > 0 ? axisSpan * 0.5 : 0;
26
+ const minLead = axisSpan > 0 ? Math.min(extentLead, axisSpan * 0.15) : extentLead;
26
27
  return Math.min(Math.max(velocityLead, minLead), spanCap);
27
28
  }
28
29
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"toroidalWrapFade.js","sourceRoot":"","sources":["../../../src/lib/util/toroidalWrapFade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toroidalWrapFade.js","sourceRoot":"","sources":["../../../src/lib/util/toroidalWrapFade.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,18 @@ export function getToroidalSpriteDisplay(particle, wrap, model) {
15
15
  if (!(wrap === null || wrap === void 0 ? void 0 : wrap.enabled) || !wrap.wrapFadeEnabled) {
16
16
  return { visible: viewportVisible, alphaMultiplier: 1 };
17
17
  }
18
+ const fadePhase = wrap.getWrapFadePhase(particle);
18
19
  const fadeMultiplier = wrap.getWrapFadeMultiplier(particle);
20
+ if (fadePhase === 'idle') {
21
+ return { visible: viewportVisible, alphaMultiplier: 1 };
22
+ }
23
+ if (fadePhase === 'out') {
24
+ return {
25
+ visible: viewportVisible,
26
+ alphaMultiplier: viewportVisible ? fadeMultiplier : 1,
27
+ };
28
+ }
29
+ // Fade-in only draws once the particle overlaps the viewport again.
19
30
  return {
20
31
  visible: viewportVisible,
21
32
  alphaMultiplier: viewportVisible ? fadeMultiplier : 1,
@@ -1 +1 @@
1
- {"version":3,"file":"toroidalWrapVisibility.js","sourceRoot":"","sources":["../../../src/lib/util/toroidalWrapVisibility.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,uBAAuB,CAAA;AAE9B,qGAAqG;AACrG,MAAM,UAAU,yBAAyB,CACvC,QAAkB,EAClB,IAA8C,EAC9C,KAAY;IAEZ,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAA;QAAE,OAAO,IAAI,CAAA;IAE/B,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACtE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAExB,MAAM,OAAO,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAChD,OAAO,yBAAyB,CAC9B,QAAQ,CAAC,CAAC,EACV,QAAQ,CAAC,CAAC,EACV,OAAO,EACP,MAAM,EACN,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,KAAK,CACX,CAAA;AACH,CAAC;AAOD,mGAAmG;AACnG,MAAM,UAAU,wBAAwB,CACtC,QAAkB,EAClB,IAA8C,EAC9C,KAAY;IAEZ,MAAM,eAAe,GAAG,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IACxE,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC,EAAE,CAAA;IACzD,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAA;IAC3D,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;KACtD,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"toroidalWrapVisibility.js","sourceRoot":"","sources":["../../../src/lib/util/toroidalWrapVisibility.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,uBAAuB,CAAA;AAE9B,qGAAqG;AACrG,MAAM,UAAU,yBAAyB,CACvC,QAAkB,EAClB,IAA8C,EAC9C,KAAY;IAEZ,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAA;QAAE,OAAO,IAAI,CAAA;IAE/B,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACtE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAExB,MAAM,OAAO,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAChD,OAAO,yBAAyB,CAC9B,QAAQ,CAAC,CAAC,EACV,QAAQ,CAAC,CAAC,EACV,OAAO,EACP,MAAM,EACN,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,KAAK,CACX,CAAA;AACH,CAAC;AAOD,mGAAmG;AACnG,MAAM,UAAU,wBAAwB,CACtC,QAAkB,EAClB,IAA8C,EAC9C,KAAY;IAEZ,MAAM,eAAe,GAAG,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IACxE,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC,EAAE,CAAA;IACzD,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IACjD,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAA;IAE3D,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC,EAAE,CAAA;IACzD,CAAC;IAED,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,OAAO;YACL,OAAO,EAAE,eAAe;YACxB,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;SACtD,CAAA;IACH,CAAC;IAED,oEAAoE;IACpE,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;KACtD,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -51,5 +51,5 @@
51
51
  "lint:fix": "tslint --fix 'src/**/*.ts'",
52
52
  "test": "vitest run"
53
53
  },
54
- "version": "4.43.0"
54
+ "version": "4.43.2"
55
55
  }