@lightningtv/solid 2.11.7 → 2.12.1

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.
@@ -0,0 +1,223 @@
1
+ import { createResource } from 'solid-js';
2
+ /**
3
+ * Default blur options
4
+ */
5
+ const DEFAULT_BLUR_OPTIONS = {
6
+ radius: 10,
7
+ crossOrigin: 'anonymous',
8
+ resolution: 1,
9
+ };
10
+ /**
11
+ * Validates that radius is a positive number
12
+ */
13
+ function isValidRadius(radius) {
14
+ return radius > 0 && Number.isFinite(radius);
15
+ }
16
+ /**
17
+ * Ensures a resolution is a positive number
18
+ */
19
+ function isValidResolution(resolution) {
20
+ return resolution > 0 && resolution <= 1 && Number.isFinite(resolution);
21
+ }
22
+ /**
23
+ * Applies vertical Gaussian blur to image data
24
+ * @param input - Input pixel data
25
+ * @param output - Output pixel data buffer
26
+ * @param width - Image width
27
+ * @param height - Image height
28
+ * @param kernel - Gaussian kernel weights
29
+ * @param half - Half of kernel size
30
+ */
31
+ function applyVerticalBlur(input, output, width, height, kernel, half) {
32
+ for (let y = 0; y < height; y++) {
33
+ for (let x = 0; x < width; x++) {
34
+ let r = 0, g = 0, b = 0, a = 0;
35
+ let weightSum = 0;
36
+ for (let ky = -half; ky <= half; ky++) {
37
+ const py = y + ky;
38
+ if (py >= 0 && py < height) {
39
+ const pixelIndex = (py * width + x) * 4;
40
+ const weight = kernel[ky + half];
41
+ r += input[pixelIndex] * weight;
42
+ g += input[pixelIndex + 1] * weight;
43
+ b += input[pixelIndex + 2] * weight;
44
+ a += input[pixelIndex + 3] * weight;
45
+ weightSum += weight;
46
+ }
47
+ }
48
+ const outputIndex = (y * width + x) * 4;
49
+ output[outputIndex] = r / weightSum;
50
+ output[outputIndex + 1] = g / weightSum;
51
+ output[outputIndex + 2] = b / weightSum;
52
+ output[outputIndex + 3] = a / weightSum;
53
+ }
54
+ }
55
+ }
56
+ /**
57
+ * Applies horizontal Gaussian blur to image data
58
+ * @param input - Input pixel data
59
+ * @param output - Output pixel data buffer
60
+ * @param width - Image width
61
+ * @param height - Image height
62
+ * @param kernel - Gaussian kernel weights
63
+ * @param half - Half of kernel size
64
+ */
65
+ function applyHorizontalBlur(input, output, width, height, kernel, half) {
66
+ for (let y = 0; y < height; y++) {
67
+ for (let x = 0; x < width; x++) {
68
+ let r = 0, g = 0, b = 0, a = 0;
69
+ let weightSum = 0;
70
+ for (let kx = -half; kx <= half; kx++) {
71
+ const px = x + kx;
72
+ if (px >= 0 && px < width) {
73
+ const pixelIndex = (y * width + px) * 4;
74
+ const weight = kernel[kx + half];
75
+ r += input[pixelIndex] * weight;
76
+ g += input[pixelIndex + 1] * weight;
77
+ b += input[pixelIndex + 2] * weight;
78
+ a += input[pixelIndex + 3] * weight;
79
+ weightSum += weight;
80
+ }
81
+ }
82
+ const outputIndex = (y * width + x) * 4;
83
+ output[outputIndex] = r / weightSum;
84
+ output[outputIndex + 1] = g / weightSum;
85
+ output[outputIndex + 2] = b / weightSum;
86
+ output[outputIndex + 3] = a / weightSum;
87
+ }
88
+ }
89
+ }
90
+ /**
91
+ * Generates a normalized Gaussian kernel
92
+ * @param size - Kernel size (must be odd)
93
+ * @param sigma - Standard deviation
94
+ * @returns Normalized Gaussian kernel
95
+ */
96
+ function generateGaussianKernel(size, sigma) {
97
+ const kernel = [];
98
+ const half = Math.floor(size / 2);
99
+ let sum = 0;
100
+ for (let i = -half; i <= half; i++) {
101
+ const value = Math.exp(-(i * i) / (2 * sigma * sigma));
102
+ kernel.push(value);
103
+ sum += value;
104
+ }
105
+ return Object.freeze(kernel.map((value) => value / sum));
106
+ }
107
+ /**
108
+ * Applies Gaussian blur convolution to image data
109
+ * @param imageData - Source image data
110
+ * @param dimensions - Image dimensions
111
+ * @param radius - Blur radius
112
+ * @returns Blurred image data
113
+ */
114
+ function gaussianBlurConvolution(imageData, dimensions, radius) {
115
+ const { data } = imageData;
116
+ const { width, height } = dimensions;
117
+ const output = new Uint8ClampedArray(data.length);
118
+ const kernelSize = Math.ceil(radius * 2) * 2 + 1;
119
+ const kernel = generateGaussianKernel(kernelSize, radius);
120
+ const half = Math.floor(kernelSize / 2);
121
+ applyHorizontalBlur(data, output, width, height, kernel, half);
122
+ const tempData = new Uint8ClampedArray(output);
123
+ applyVerticalBlur(tempData, output, width, height, kernel, half);
124
+ return new ImageData(output, width, height);
125
+ }
126
+ /**
127
+ * Applies Gaussian blur to an image URL
128
+ * @param imageUrl - Image source (string or URL)
129
+ * @param options - Blur configuration options
130
+ * @returns Promise resolving to data URL of blurred image
131
+ * @throws {Error} If image fails to load or blur operation fails
132
+ */
133
+ export async function applyGaussianBlur(imageUrl, options) {
134
+ const opts = { ...DEFAULT_BLUR_OPTIONS, ...options };
135
+ const radius = opts.radius;
136
+ const resolution = opts.resolution;
137
+ if (!isValidRadius(radius)) {
138
+ throw new Error(`Invalid blur radius: ${radius}. Must be a positive number.`);
139
+ }
140
+ if (!isValidResolution(resolution)) {
141
+ throw new Error(`Invalid resolution: ${resolution}. Must be a number between 0 and 1.`);
142
+ }
143
+ return new Promise((resolve, reject) => {
144
+ const img = new Image();
145
+ img.crossOrigin = opts.crossOrigin;
146
+ img.onload = () => {
147
+ try {
148
+ const canvas = document.createElement('canvas');
149
+ const ctx = canvas.getContext('2d', {
150
+ willReadFrequently: true,
151
+ });
152
+ if (ctx === null) {
153
+ reject(new Error('Failed to get canvas context'));
154
+ return;
155
+ }
156
+ const scaledWidth = Math.max(1, Math.round(img.width * resolution));
157
+ const scaledHeight = Math.max(1, Math.round(img.height * resolution));
158
+ const dimensions = {
159
+ width: scaledWidth,
160
+ height: scaledHeight,
161
+ };
162
+ canvas.width = dimensions.width;
163
+ canvas.height = dimensions.height;
164
+ const hasFilterSupport = ctx.filter !== undefined;
165
+ if (hasFilterSupport) {
166
+ ctx.filter = `blur(${radius}px)`;
167
+ ctx.drawImage(img, 0, 0, scaledWidth, scaledHeight);
168
+ ctx.filter = 'none';
169
+ }
170
+ else {
171
+ ctx.drawImage(img, 0, 0, scaledWidth, scaledHeight);
172
+ const imageData = ctx.getImageData(0, 0, dimensions.width, dimensions.height);
173
+ const blurredData = gaussianBlurConvolution(imageData, dimensions, radius);
174
+ ctx.putImageData(blurredData, 0, 0);
175
+ }
176
+ const dataUrl = canvas.toDataURL();
177
+ if (dataUrl) {
178
+ resolve(dataUrl);
179
+ }
180
+ else {
181
+ reject(new Error('Failed to create image data URL'));
182
+ }
183
+ }
184
+ catch (error) {
185
+ reject(error instanceof Error
186
+ ? error
187
+ : new Error('Unknown error during blur operation'));
188
+ }
189
+ };
190
+ img.onerror = () => {
191
+ reject(new Error('Failed to load image'));
192
+ };
193
+ const srcString = typeof imageUrl === 'string' ? imageUrl : imageUrl.toString();
194
+ img.src = srcString;
195
+ });
196
+ }
197
+ /**
198
+ * Hook to create a blurred image resource
199
+ * @param imageUrl - Accessor function returning image source or null/undefined
200
+ * @param options - Blur configuration options
201
+ * @returns Resource containing blurred image data URL or null
202
+ * @template TSource - Type of image source (string, URL, or null/undefined)
203
+ *
204
+ * @example
205
+ * ```ts
206
+ * const imageUrl = () => 'https://example.com/image.jpg';
207
+ * const blurred = createBlurredImage(imageUrl, { radius: 15 });
208
+ * ```
209
+ */
210
+ export function createBlurredImage(imageUrl, options) {
211
+ const imageUrlString = () => {
212
+ const url = imageUrl();
213
+ if (url === null || url === undefined) {
214
+ return url;
215
+ }
216
+ return typeof url === 'string' ? url : url.toString();
217
+ };
218
+ const [blurredImage] = createResource(imageUrlString, async (url) => {
219
+ return await applyGaussianBlur(url, options);
220
+ });
221
+ return blurredImage;
222
+ }
223
+ //# sourceMappingURL=createBlurredImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createBlurredImage.js","sourceRoot":"","sources":["../../../../src/primitives/utils/createBlurredImage.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as s from 'solid-js';
2
2
  import * as lng from '@lightningtv/solid';
3
3
  function idxInArray(idx, arr) {
4
- return idx >= 0 && idx < arr.length;
4
+ return idx === 0 || (idx >= 0 && idx < arr.length);
5
5
  }
6
6
  function findFirstFocusableChildIdx(el, from = 0, delta = 1) {
7
7
  for (let i = from;; i += delta) {
@@ -54,19 +54,13 @@ export function onGridFocus(_) {
54
54
  */
55
55
  export const navigableForwardFocus = function () {
56
56
  const navigable = this;
57
- // Undo for now - We should only do this when setFocus is called rather than on forwardFocus
58
- // needs some more research
59
- // if (!lng.isFocused(this)) {
60
- // // if a child already has focus, assume that should be selected
61
- // for (let [i, child] of this.children.entries()) {
62
- // if (lng.isFocused(child)) {
63
- // this.selected = i;
64
- // break;
65
- // }
66
- // }
67
- // }
68
57
  let selected = navigable.selected;
69
- selected = idxInArray(selected, this.children) ? selected : 0;
58
+ if (selected !== 0) {
59
+ selected = lng.clamp(selected, 0, this.children.length - 1);
60
+ while (!idxInArray(selected, this.children)) {
61
+ selected--;
62
+ }
63
+ }
70
64
  selected = findFirstFocusableChildIdx(navigable, selected);
71
65
  // update selected as firstfocusable maybe different if first element has skipFocus
72
66
  navigable.selected = selected;
@@ -1 +1 @@
1
- {"version":3,"file":"handleNavigation.js","sourceRoot":"","sources":["../../../../src/primitives/utils/handleNavigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAC9B,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAU1C,SAAS,UAAU,CAAC,GAAW,EAAE,GAAmB;IAClD,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;AACtC,CAAC;AAED,SAAS,0BAA0B,CACjC,EAAyB,EACzB,IAAI,GAAG,CAAC,EACR,KAAK,GAAG,CAAC;IAET,KAAK,IAAI,CAAC,GAAG,IAAI,GAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBACZ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YACpD,CAAC;;gBAAM,MAAM;QACf,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,EAAyB,EAAE,KAAa;IAC3D,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEjC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACrC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAG,EAAE,CAAC,QAAQ,CAAC;IACjC,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IAEpB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,QAAQ,EAAE,CAAC;IACnB,CAAC;IAED,2DAA2D;IAC3D,EAAE,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,KAAwB,EAAE,YAAY,CAAC,CAAC;IAE1E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,WAAW,CACzB,CAA0B;IAE1B,OAAO;QACL,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA4B;IAC5D,MAAM,SAAS,GAAG,IAA6B,CAAC;IAEhD,4FAA4F;IAC5F,2BAA2B;IAC3B,8BAA8B;IAC9B,oEAAoE;IACpE,sDAAsD;IACtD,kCAAkC;IAClC,2BAA2B;IAC3B,eAAe;IACf,QAAQ;IACR,MAAM;IACN,IAAI;IAEJ,IAAI,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;IAClC,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,QAAQ,GAAG,0BAA0B,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3D,mFAAmF;IACnF,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC9B,OAAO,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAC9B,SAA2C;IAE3C,OAAO;QACL,OAAO,aAAa,CAClB,IAA6B,EAC7B,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpD,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAmB,UAAU,CAAC;IAClE,OAAO,aAAa,CAClB,IAA6B,EAC7B,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACtD,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,EAAyB,EACzB,KAAa;IAEb,IAAI,QAAQ,GAAG,0BAA0B,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;IAE1E,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,IACE,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC;YACrC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAE,CAAC,SAAS;YACnC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAE,CAAC,EACxC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAE,CAAC;IAEtC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QACd,oDAAoD;QACpD,gCAAgC;QAChC,MAAM,iBAAiB,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACnD,GAAG,CAAC,YAAY,CAAC,iBAAiB,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC;QAE/D,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ;YACb,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,0BAA0B,CAAC,CAAW,EAAE,CAAW;IAC1D,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,4BAA4B,CACnC,EAAmB,EACnB,MAAuB;IAEvB,sDAAsD;IACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAEhE,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,QAAQ,CAAC;IAE3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,GAAG,CAAC,oBAAoB,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAC/C,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;YACxB,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;YACxB,MAAM,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACjE,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;gBAC3B,WAAW,GAAG,QAAQ,CAAC;gBACvB,UAAU,GAAG,GAAG,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA4B;IAC1D,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,4BAA4B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAA6B,EAAE,GAAG,CAAC,CAAC;QACjE,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;IAC5B,CAAC;IACD,MAAM,GAAG,GAAG,0BAA0B,CAAC,IAA6B,CAAC,CAAC;IACtE,OAAO,WAAW,CAAC,IAA6B,EAAE,GAAG,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAmB,UAAU,CAAC;IAChE,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE7B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,QAAQ,GAAG,0BAA0B,CAAC,IAA6B,CAAC,CAAC;QACrE,OAAO,WAAW,CAAC,IAA6B,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAE,CAAC;IAE3C,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5B,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,WAAW;YACd,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACZ,MAAM;QACR,KAAK,YAAY;YACf,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACX,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACZ,MAAM;QACR,KAAK,WAAW;YACd,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACX,MAAM;QACR;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5D,MAAM,QAAQ,GAAG,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAElC,mDAAmD;IACnD,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACpB,KACE,IAAI,CAAC,GAAG,QAAQ,GAAG,SAAS,EAC5B,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAC5B,CAAC,IAAI,SAAS,EACd,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;YAChC,IAAI,KAAK,CAAC,SAAS;gBAAE,SAAS;YAE9B,uBAAuB;YACvB,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,QAAQ,CAAC;gBAAE,MAAM;YAEnD,OAAO,WAAW,CAAC,IAA6B,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,qCAAqC;SAChC,CAAC;QACJ,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,WAAW,GAAG,QAAQ,CAAC;QAE3B,KACE,IAAI,CAAC,GAAG,QAAQ,GAAG,UAAU,EAC7B,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAC5B,CAAC,IAAI,UAAU,EACf,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;YAChC,IAAI,KAAK,CAAC,SAAS;gBAAE,SAAS;YAE9B,wBAAwB;YACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAEtD,uCAAuC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/D,IAAI,QAAQ,IAAI,WAAW;gBAAE,MAAM,CAAC,uBAAuB;YAE3D,WAAW,GAAG,QAAQ,CAAC;YACvB,UAAU,GAAG,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,WAAW,CAAC,IAA6B,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
1
+ {"version":3,"file":"handleNavigation.js","sourceRoot":"","sources":["../../../../src/primitives/utils/handleNavigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAC9B,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAU1C,SAAS,UAAU,CAAC,GAAW,EAAE,GAAmB;IAClD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,0BAA0B,CACjC,EAAyB,EACzB,IAAI,GAAG,CAAC,EACR,KAAK,GAAG,CAAC;IAET,KAAK,IAAI,CAAC,GAAG,IAAI,GAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBACZ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YACpD,CAAC;;gBAAM,MAAM;QACf,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,EAAyB,EAAE,KAAa;IAC3D,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEjC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACrC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAG,EAAE,CAAC,QAAQ,CAAC;IACjC,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IAEpB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,QAAQ,EAAE,CAAC;IACnB,CAAC;IAED,2DAA2D;IAC3D,EAAE,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,KAAwB,EAAE,YAAY,CAAC,CAAC;IAE1E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,WAAW,CACzB,CAA0B;IAE1B,OAAO;QACL,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA4B;IAC5D,MAAM,SAAS,GAAG,IAA6B,CAAC;IAEhD,IAAI,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;IAElC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED,QAAQ,GAAG,0BAA0B,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3D,mFAAmF;IACnF,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC9B,OAAO,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAC9B,SAA2C;IAE3C,OAAO;QACL,OAAO,aAAa,CAClB,IAA6B,EAC7B,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpD,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAmB,UAAU,CAAC;IAClE,OAAO,aAAa,CAClB,IAA6B,EAC7B,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACtD,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,EAAyB,EACzB,KAAa;IAEb,IAAI,QAAQ,GAAG,0BAA0B,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;IAE1E,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,IACE,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC;YACrC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAE,CAAC,SAAS;YACnC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAE,CAAC,EACxC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAE,CAAC;IAEtC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QACd,oDAAoD;QACpD,gCAAgC;QAChC,MAAM,iBAAiB,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACnD,GAAG,CAAC,YAAY,CAAC,iBAAiB,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC;QAE/D,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ;YACb,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,0BAA0B,CAAC,CAAW,EAAE,CAAW;IAC1D,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,4BAA4B,CACnC,EAAmB,EACnB,MAAuB;IAEvB,sDAAsD;IACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAEhE,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,QAAQ,CAAC;IAE3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,GAAG,CAAC,oBAAoB,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAC/C,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;YACxB,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;YACxB,MAAM,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACjE,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;gBAC3B,WAAW,GAAG,QAAQ,CAAC;gBACvB,UAAU,GAAG,GAAG,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA4B;IAC1D,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,4BAA4B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAA6B,EAAE,GAAG,CAAC,CAAC;QACjE,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;IAC5B,CAAC;IACD,MAAM,GAAG,GAAG,0BAA0B,CAAC,IAA6B,CAAC,CAAC;IACtE,OAAO,WAAW,CAAC,IAA6B,EAAE,GAAG,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAmB,UAAU,CAAC;IAChE,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE7B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,QAAQ,GAAG,0BAA0B,CAAC,IAA6B,CAAC,CAAC;QACrE,OAAO,WAAW,CAAC,IAA6B,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAE,CAAC;IAE3C,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5B,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,WAAW;YACd,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACZ,MAAM;QACR,KAAK,YAAY;YACf,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACX,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACZ,MAAM;QACR,KAAK,WAAW;YACd,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACX,MAAM;QACR;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5D,MAAM,QAAQ,GAAG,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAElC,mDAAmD;IACnD,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACpB,KACE,IAAI,CAAC,GAAG,QAAQ,GAAG,SAAS,EAC5B,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAC5B,CAAC,IAAI,SAAS,EACd,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;YAChC,IAAI,KAAK,CAAC,SAAS;gBAAE,SAAS;YAE9B,uBAAuB;YACvB,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,QAAQ,CAAC;gBAAE,MAAM;YAEnD,OAAO,WAAW,CAAC,IAA6B,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,qCAAqC;SAChC,CAAC;QACJ,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,WAAW,GAAG,QAAQ,CAAC;QAE3B,KACE,IAAI,CAAC,GAAG,QAAQ,GAAG,UAAU,EAC7B,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAC5B,CAAC,IAAI,UAAU,EACf,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;YAChC,IAAI,KAAK,CAAC,SAAS;gBAAE,SAAS;YAE9B,wBAAwB;YACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAEtD,uCAAuC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/D,IAAI,QAAQ,IAAI,WAAW;gBAAE,MAAM,CAAC,uBAAuB;YAE3D,WAAW,GAAG,QAAQ,CAAC;YACvB,UAAU,GAAG,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,WAAW,CAAC,IAA6B,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}