@nsqx/pinch-zoom 1.0.0
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.
- package/LICENSE +28 -0
- package/README.md +256 -0
- package/dist/index.d.ts +102 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.legacy.js +2 -0
- package/dist/index.legacy.js.map +1 -0
- package/package.json +51 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, nsqx
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
|
7
|
+
|
|
8
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
9
|
+
list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
+
this list of conditions and the following disclaimer in the documentation
|
|
13
|
+
and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
16
|
+
contributors may be used to endorse or promote products derived from
|
|
17
|
+
this software without specific prior written permission.
|
|
18
|
+
|
|
19
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
20
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
21
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
23
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
24
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
25
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
27
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
package/README.md
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# @nsqx/pinch-zoom
|
|
2
|
+
|
|
3
|
+
A lightweight and performant pinch-to-zoom implementation for DOM elements.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## features
|
|
7
|
+
|
|
8
|
+
* **wheel & trackpad**: supports both trackpad & wheel zoom
|
|
9
|
+
* **touch gestures**: native-like pinch-to-zoom functionality for mobile devices and touchscreens
|
|
10
|
+
* **versatile**: works with any element that has a scrollable parent
|
|
11
|
+
* **supports panning**: support for panning with middle-mouse, right-mouse, or modifier-key dragging.
|
|
12
|
+
* **keyboard shortcuts**: built-in support for keyboard shortcuts (`^+`/`^-`/`^0`)
|
|
13
|
+
* **supports RTL layouts**: handles right-to-left document layouts\*
|
|
14
|
+
* **lightweight**: zero dependencies, optimized for performance
|
|
15
|
+
|
|
16
|
+
\*experimental
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install @nsqx/pinch-zoom
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## quick start
|
|
27
|
+
|
|
28
|
+
#### JS
|
|
29
|
+
```js
|
|
30
|
+
import { attachPinchZoom } from '@nsqx/pinch-zoom';
|
|
31
|
+
|
|
32
|
+
const target = document.querySelector('.zoom-target');
|
|
33
|
+
const controller = attachPinchZoom(target, {
|
|
34
|
+
max: 5,
|
|
35
|
+
kbdEvents: true,
|
|
36
|
+
panMode: ['middle', 'ctrl']
|
|
37
|
+
});
|
|
38
|
+
if (!controller.success) {
|
|
39
|
+
console.error("Attachment failed: check console.");
|
|
40
|
+
} else {
|
|
41
|
+
document.querySelector('#reset').onclick = () => controller.reset();
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
#### HTML
|
|
46
|
+
```html
|
|
47
|
+
<div class="zoom-container" style="max-width: 100vw; max-height: 100vh">
|
|
48
|
+
<div class="zoom-target">
|
|
49
|
+
<!-- ... -->
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Important:**
|
|
55
|
+
The `target` element _must_ have a parent container element. The utility will automatically configure the container's overflow and positioning.
|
|
56
|
+
The target element _should_ be the only layout element within its container, but this is not required.
|
|
57
|
+
|
|
58
|
+
**Important:**
|
|
59
|
+
The utility will set `position` to `absolute` on the target element for layout purposes. Therefore, the parent container should have a defined width and height to avoid layout collapse.
|
|
60
|
+
|
|
61
|
+
Additionally, the dimensions also should not exceed the viewport size. A pinch-zoom container that overflows off of the page may result in functional but confusing behavior.
|
|
62
|
+
|
|
63
|
+
**Note:** See [troubleshooting](#troubleshooting) if you are considering applying any spacing between the container and the target element.
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
## API
|
|
67
|
+
|
|
68
|
+
`attachPinchZoom(element, options)`
|
|
69
|
+
| option | type | default | description |
|
|
70
|
+
| :-- | :-- | :-- | :-- |
|
|
71
|
+
| `min` / `max` | `number` | `1` / `4` | minimum / maximum zoom levels |
|
|
72
|
+
| `speed` | `number` | `1` | zoom sensitivity |
|
|
73
|
+
| `mode` | `string` | `'transform'` | applied transform method <br>* `'transform'`: CSS `transform: scale` <br>* `'zoom'`: CSS `zoom` property (non-standard) |
|
|
74
|
+
| `smooth` | `boolean` | ~ | enable smooth interpolation for zooming. The default value depends on the `prefers-reduced-motion` value of the client. |
|
|
75
|
+
| `hinted` | `boolean` | `false` | use CSS `will-change` optimization hint |
|
|
76
|
+
| `kbdEvents` | `boolean` | `false` | enable **global** keyboard shortcuts (overrides default behavior) |
|
|
77
|
+
| `panMode` | `string` \| `array` | `'none'` | mouse panning methods <br>may include<br>* `'ctrl'`: Control + drag to pan <br>* `'alt'`: Alt + drag to pan <br>* `'meta'`: meta (Command) + drag to pan <br>* `'shift'`: Shift + drag to pan <br>* `'middle'`: middle mouse button drag to pan <br>* `'right'`: right mouse button drag to pan <br>or any combination thereof |
|
|
78
|
+
| `onZoom` | `function` | *`() => {}`* | zoom event listener callback <br>* available event properties: `scale`, `x`, `y` |
|
|
79
|
+
| `onPan` | `function` | *`() => {}`* | pan event listener callback <br>* available event properties: `scale`, `x`, `y` |
|
|
80
|
+
|
|
81
|
+
**Note:** The `'zoom'` mode is deprecated. Do *not* use this option in production environments.
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
### controller object
|
|
85
|
+
|
|
86
|
+
The function returns a controller, allowing granular control of the PinchZoom object after attachment:
|
|
87
|
+
|
|
88
|
+
* `scale`: set the current zoom level.
|
|
89
|
+
* `x` / `y`: set the current scroll-top / scroll-left values.
|
|
90
|
+
* `mode`, `min`, `max`, `speed`, `smooth`, `hinted`, `kbdEvents`, `panMode` options can all be changed on-the-fly.
|
|
91
|
+
* `reset()`: reset zoom level.
|
|
92
|
+
* `destroy()`: remove all pinch-zoom functionality and revert to original styles.
|
|
93
|
+
* readonly `viewportX` / `viewportY`: get the screen coordinates of the last zoom event origin.
|
|
94
|
+
* readonly `success`: check if attachment succeeded.
|
|
95
|
+
* readonly `isRtl`: get if pinch-zoom uses right-to-left coordinates.
|
|
96
|
+
* readonly `target` / `container`: references to DOM elements.
|
|
97
|
+
|
|
98
|
+
**Note:** For performance reasons, the metrics accessed via the controller object are debounced and may be inconsistent with actual measurements.
|
|
99
|
+
|
|
100
|
+
### global viewport locking
|
|
101
|
+
|
|
102
|
+
To prevent the entire browser page from zooming while the user interacts with your component, you can use the following helper function to lock the viewport.
|
|
103
|
+
|
|
104
|
+
```js
|
|
105
|
+
import { pinchZoomLockViewport } from '@nsqx/pinch-zoom';
|
|
106
|
+
|
|
107
|
+
const lock = pinchZoomLockViewport({ useMeta: true });
|
|
108
|
+
// Call lock.unlock() to unlock the viewport & restore native behavior
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
## troubleshooting
|
|
113
|
+
|
|
114
|
+
* **Did you set a width and height on the element's parent?** Make sure your target element's parent has a defined width and height to prevent layout collapse.
|
|
115
|
+
* **Did you set overflow on the container?** If you did, that may interfere with this library's functionality and prevent scrolling or spill contents out of the container.
|
|
116
|
+
* **Is the target a block element?** pinch-zoom works best on `div`s, `img`s, and other block elements. Inline elements, such as `span`s, may behave unexpectedly.
|
|
117
|
+
* **Are you using CSS transitions?** If you are, consider disabling CSS transitions for the target's transform or zoom and instead use `smooth: true` in the options. CSS transitions for the relevant properties will conflict with the library's built-in logic and cause stuttering.
|
|
118
|
+
* **Are you setting `transform`, `zoom`, or `transform-origin` manually?** Doing so will interfere with the library's functionality and lead to unexpected behavior.
|
|
119
|
+
* **Are you setting `overflow`, `position`, `touch-action`, or `cursor` on the container element?** The library will also interact with these CSS properties, so it's best to avoid touching them on the container element.
|
|
120
|
+
* **Do you have a `padding` on the container or a `margin` on the target?** If you apply spacing between the container and the target element, only the top and left (RTL-right) spacings will be visible, leading to asymmetrical layouts. Instead, consider doing layout work within the target element or outside the container element.
|
|
121
|
+
* Additionally, the following CSS properties will be applied to the target element in order to improve performance:
|
|
122
|
+
* `backface-visibility: hidden`
|
|
123
|
+
* `contain: layout paint`
|
|
124
|
+
* All modified styles will be restored upon calling `destroy()`.
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
## examples
|
|
128
|
+
|
|
129
|
+
### React
|
|
130
|
+
|
|
131
|
+
```jsx
|
|
132
|
+
import React, { useEffect, useRef } from 'react';
|
|
133
|
+
import { attachPinchZoom } from '@nsqx/pinch-zoom';
|
|
134
|
+
|
|
135
|
+
const ZoomableComponent = () => {
|
|
136
|
+
const elementRef = useRef(null);
|
|
137
|
+
const controllerRef = useRef(null);
|
|
138
|
+
|
|
139
|
+
useEffect(() => {
|
|
140
|
+
if (elementRef.current) {
|
|
141
|
+
controllerRef.current = attachPinchZoom(elementRef.current, {
|
|
142
|
+
mode: 'transform',
|
|
143
|
+
min: 0.5,
|
|
144
|
+
max: 3,
|
|
145
|
+
smooth: true,
|
|
146
|
+
onZoom: ({ scale }) => console.log('Current scale:', scale),
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// Important! Remember to call destroy() upon unmount
|
|
151
|
+
return () => {
|
|
152
|
+
if (controllerRef.current) {
|
|
153
|
+
controllerRef.current.destroy();
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
}, []);
|
|
157
|
+
|
|
158
|
+
return (
|
|
159
|
+
<div className="container" style={{ width: '100%', height: '100%' }}>
|
|
160
|
+
<div ref={elementRef}>
|
|
161
|
+
...
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
);
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
export default ZoomableComponent;
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Vue
|
|
171
|
+
```html
|
|
172
|
+
<template>
|
|
173
|
+
<div class="container">
|
|
174
|
+
<div ref="zoomTarget">
|
|
175
|
+
...
|
|
176
|
+
</div>
|
|
177
|
+
</div>
|
|
178
|
+
</template>
|
|
179
|
+
|
|
180
|
+
<script setup>
|
|
181
|
+
import { ref, onMounted, onUnmounted } from 'vue';
|
|
182
|
+
import { attachPinchZoom } from '@nsqx/pinch-zoom';
|
|
183
|
+
|
|
184
|
+
const zoomTarget = ref(null);
|
|
185
|
+
let zoomController = null;
|
|
186
|
+
|
|
187
|
+
onMounted(() => {
|
|
188
|
+
if (zoomTarget.value) {
|
|
189
|
+
zoomController = attachPinchZoom(zoomTarget.value, {
|
|
190
|
+
speed: 0.5,
|
|
191
|
+
panMode: ['middle', 'ctrl'],
|
|
192
|
+
onPan: (data) => console.log('Panning:', data),
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
// Important! Remember to call destroy() upon unmount
|
|
198
|
+
onUnmounted(() => {
|
|
199
|
+
if (zoomController) {
|
|
200
|
+
zoomController.destroy();
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
</script>
|
|
204
|
+
|
|
205
|
+
<style scoped>
|
|
206
|
+
.viewport {
|
|
207
|
+
width: 100%;
|
|
208
|
+
height: 400px;
|
|
209
|
+
}
|
|
210
|
+
</style>
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
## advanced options
|
|
215
|
+
|
|
216
|
+
### mouse panning
|
|
217
|
+
|
|
218
|
+
You can assign panning to multiple modifiers. For example, to allow panning with the middle mouse button or holding the `Control` or `Command` keys while dragging,
|
|
219
|
+
|
|
220
|
+
```js
|
|
221
|
+
const controller = attachPinchZoom(target, {
|
|
222
|
+
panMode: ['middle', 'ctrl', 'meta']
|
|
223
|
+
});
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### event listening
|
|
227
|
+
|
|
228
|
+
You can listen to zoom and pan events by assigning callbacks to the relevant event listener, for example,
|
|
229
|
+
|
|
230
|
+
```js
|
|
231
|
+
attachPinchZoom(target, {
|
|
232
|
+
onZoom: ({ scale, x, y }) => {
|
|
233
|
+
console.log(`Zoomed to: ${scale} at position ${x}, ${y}`);
|
|
234
|
+
},
|
|
235
|
+
onPan: ({ scale, x, y }) => {
|
|
236
|
+
console.log(`Panned to ${x}, ${y}`);
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**Note:** The pan event only fires when the user uses their mouse to pan the element, set by `panMode`. The pan event also does not apply to mobile or touchscreen surfaces. To monitor all pan events, use a scrollEvent listener on the container instead.
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
## additional information
|
|
245
|
+
|
|
246
|
+
### legacy support
|
|
247
|
+
```html
|
|
248
|
+
<script nomodule src="node_modules/@nsqx/pinch-zoom/dist/index.legacy.js"></script>
|
|
249
|
+
<script nomodule>
|
|
250
|
+
// The legacy build exposes API to the window object as 'PinchZoom'
|
|
251
|
+
var el = document.querySelector('.zoom-container');
|
|
252
|
+
var controller = PinchZoom.attachPinchZoom(el, {
|
|
253
|
+
max: 5
|
|
254
|
+
});
|
|
255
|
+
</script>
|
|
256
|
+
```
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for pinch-zoom
|
|
3
|
+
*/
|
|
4
|
+
interface PinchZoomOptions {
|
|
5
|
+
/** Minimum zoom level @default 1 */
|
|
6
|
+
min?: number;
|
|
7
|
+
/** Maximum zoom level @default 4 */
|
|
8
|
+
max?: number;
|
|
9
|
+
/** Sensitivity of the zoom action @default 1 */
|
|
10
|
+
speed?: number;
|
|
11
|
+
/** Enable smooth interpolation
|
|
12
|
+
*
|
|
13
|
+
* Respects accessibility preferences if left unset
|
|
14
|
+
* @default true
|
|
15
|
+
*/
|
|
16
|
+
smooth?: boolean;
|
|
17
|
+
/** CSS method used for scaling
|
|
18
|
+
** `transform`: use CSS transforms
|
|
19
|
+
* @deprecated `zoom`: use non-standard `zoom` property
|
|
20
|
+
* @default 'transform' */
|
|
21
|
+
mode?: 'transform' | 'zoom';
|
|
22
|
+
/** Apply CSS `will-change` to hint optimization @default false */
|
|
23
|
+
hinted?: boolean;
|
|
24
|
+
/** Enable document-level keyboard shortcuts (Ctrl + / - / 0) @default false */
|
|
25
|
+
kbdEvents?: boolean;
|
|
26
|
+
/** Set mouse panning behavior
|
|
27
|
+
*
|
|
28
|
+
* Acceptable values:
|
|
29
|
+
** `none`: disabled
|
|
30
|
+
** string or array containing any of `ctrl`, `shift`, `meta`, `alt`, `middle`, or `right`
|
|
31
|
+
* @default 'none' */
|
|
32
|
+
panMode?: 'none' | string | ('ctrl' | 'shift' | 'meta' | 'alt' | 'middle' | 'right')[];
|
|
33
|
+
/** Callback when zooming occurs */
|
|
34
|
+
onZoom?: (data: { scale: number; x: number; y: number }) => void;
|
|
35
|
+
/** Callback when panning occurs */
|
|
36
|
+
onPan?: (data: { scale: number; x: number; y: number }) => void;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The controller object returned by attachPinchZoom
|
|
41
|
+
*/
|
|
42
|
+
interface PinchZoomController {
|
|
43
|
+
/** If the controller was successfully attached */
|
|
44
|
+
readonly success: boolean;
|
|
45
|
+
/** Set the current scale value */
|
|
46
|
+
scale: number;
|
|
47
|
+
/** The current X position of the zoom origin (readonly) */
|
|
48
|
+
readonly viewportX: number;
|
|
49
|
+
/** The current Y position of the zoom origin (readonly) */
|
|
50
|
+
readonly viewportY: number;
|
|
51
|
+
/** The current horizontal scroll offset of the container */
|
|
52
|
+
x: number;
|
|
53
|
+
/** The current vertical scroll offset of the container */
|
|
54
|
+
y: number;
|
|
55
|
+
/** The current zoom mode */
|
|
56
|
+
mode: 'transform' | 'zoom';
|
|
57
|
+
/** Minimum zoom limit */
|
|
58
|
+
min: number;
|
|
59
|
+
/** Maximum zoom level */
|
|
60
|
+
max: number;
|
|
61
|
+
/** Zoom speed */
|
|
62
|
+
speed: number;
|
|
63
|
+
/** Enable / disable performance hinting */
|
|
64
|
+
hinted: boolean;
|
|
65
|
+
/** Enable / disable global keyboard events for this instance */
|
|
66
|
+
kbdEvents: boolean;
|
|
67
|
+
/** Mouse panning mode. */
|
|
68
|
+
panMode: 'none' | string | ('ctrl' | 'shift' | 'meta' | 'alt' | 'middle' | 'right')[];
|
|
69
|
+
/** Callback fired when zooming */
|
|
70
|
+
onZoom: (data: { scale: number; x: number; y: number }) => void;
|
|
71
|
+
/** Callback fired when panning */
|
|
72
|
+
onPan: (data: { scale: number; x: number; y: number }) => void;
|
|
73
|
+
/** The target element being scaled (readonly) */
|
|
74
|
+
readonly target: HTMLElement | null;
|
|
75
|
+
/** The container element which manages scroll/pan (readonly) */
|
|
76
|
+
readonly container: HTMLElement | null;
|
|
77
|
+
/** If the element is using RTL coordinates (readonly) */
|
|
78
|
+
readonly isRtl: boolean;
|
|
79
|
+
/** Reset zoom level */
|
|
80
|
+
readonly reset: () => void;
|
|
81
|
+
/** Remove all event listeners and restore original styles */
|
|
82
|
+
readonly destroy: () => void;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Attach pinch-zoom functionality to an element.
|
|
87
|
+
*/
|
|
88
|
+
declare function attachPinchZoom(
|
|
89
|
+
element: HTMLElement,
|
|
90
|
+
options?: PinchZoomOptions
|
|
91
|
+
): PinchZoomController;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Global utility to disable viewport-level pinch / zoom events.
|
|
95
|
+
*/
|
|
96
|
+
declare function pinchZoomLockViewport(options: { useMeta?: boolean }): {
|
|
97
|
+
/** Release viewport lock and restore original viewport settings */
|
|
98
|
+
readonly unlock: () => void;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
export { attachPinchZoom, pinchZoomLockViewport };
|
|
102
|
+
export type { PinchZoomController, PinchZoomOptions };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e="All functions must be called from the client side.",t="Use of the non-standard 'zoom' mode is discouraged. Please use 'transform' instead to increase performance and avoid layout shifting.",n="The minimum scale value may not exceed the maximum scale value.",o="The minimum scale value must be a number.",l="The minimum scale value may not be less than 0.001.",i="The minimum scale value may not be greater than 1.",s="The maximum scale value must be a number.",c="The maximum scale value may not be less than 1.",r="The maximum scale value may not be greater than 2500.",a="The speed multiplier must be a number.",m="The speed multiplier may not be less than 0.1.",u="The speed multiplier may not be greater than 10.",d="High zoom levels may impact performance.",f="Something went wrong (detach_listener)...\n\nPlease submit an issue at https://github.com/nsqx/pinch-zoom and include relevant details.",p="Target element must have a parent container.",h="Target must be an element.",y="onZoom must be a function.",g="onPan must be a function.";function x(e){console.error("%c@nsqx/pinch-zoom:%c "+e,"padding:1px 4px;border-width:2px;border-color:#fa4549;border-style:solid;border-radius:4px;","")}function w(e){console.error("%c@nsqx/pinch-zoom:%c "+e,"","")}function v(e){console.warn("%c@nsqx/pinch-zoom:%c "+e,"","")}function b(e){console.debug("%c@nsqx/pinch-zoom:%c "+e,"color:#218bff","")}function _(e,t,n,o){Object.prototype.hasOwnProperty.call(t,n)||(t[n]=e.style[n],e.style[n]=o)}function T(e,t){for(let n in t)void 0!==t[n]?e.style[n]=t[n]:e.style[n]=""}function M(e,t,n,o={}){return e.addEventListener(t,n,o),function(){e.removeEventListener(t,n,o)}}function O(e){try{e()}catch(e){x(f),console.error(e)}}function z(e){if(Array.isArray(e)){for(let t of e)O(t);e.length=0}}function E(){return{success:!1,scale:1,onZoom(){},viewportX:0,viewportY:0,mode:"transform",min:1,max:1,speed:0,hinted:!1,kbdEvents:!1,smooth:!0,panMode:"none",onPan(){},target:null,container:null,isRtl:!1,reset(){},destroy(){}}}const k={min:1,max:4,speed:1,mode:"transform",hinted:!1,kbdEvents:!1,panMode:"none"};const L={mode:e=>"string"==typeof e&&"zoom"===e?(v(t),"zoom"):"transform",smooth:e=>"boolean"==typeof e?e:!!window.matchMedia&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches,min:e=>"number"!=typeof e?(w(o),1):e>1?(w(i),1):e<.001?(w(l),.001):e,max:e=>"number"!=typeof e?(w(s),4):(e>=1e3&&v(d),e<1?(w(c),1):e>2500?(w(r),2500):e),min_max:(e,t)=>e>t?(w(n),[t,e]):[e,t],speed:e=>"number"!=typeof e?(w(a),.01):e>10?(w(u),.1):e<.1?(w(m),.001):e/100};function Y(n,o={}){if("undefined"==typeof window||"undefined"==typeof document)return x(e),E();if(!(n&&n instanceof Element))return x(h),E();const l="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(window):e=>setTimeout(()=>e(Date.now()),17),i=function(e){return e.mode=L.mode(e.mode),e.smooth=L.smooth(e.smooth),[e.min,e.max]=L.min_max(e.min,e.max),e.min=L.min(e.min),e.max=L.max(e.max),e.speed=L.speed(e.speed),e}({...k,...o}),s=n.parentElement;if(!s)return x(p),E();let c=i.panMode,r={};_(s,r,"overflow","auto"),_(s,r,"touchAction","pan-x pan-y"),_(s,r,"position","relative");let a="rtl"===window.getComputedStyle(s).direction,m={};_(n,m,"backfaceVisibility","hidden"),_(n,m,"contain","layout paint"),_(n,m,"position","absolute"),i.hinted&&("zoom"===i.mode?_(n,m,"willChange","zoom"):_(n,m,"willChange","transform"));let u,d,f=1,O=1,Y=0,X=0,q=0,C=0,P=0,K=0,$=!0,D=!1,A=!1,R={};function W(){R.rect=s.getBoundingClientRect(),R.element_ow=n.offsetWidth,R.element_oh=n.offsetHeight,R.element_ol=n.offsetLeft,R.element_ot=n.offsetTop,R.container_ct=s.clientTop,R.container_cl=s.clientLeft,R.container_cw=s.clientWidth,R.container_ch=s.clientHeight,R.scroll_left=a?-s.scrollLeft:s.scrollLeft,R.scroll_top=s.scrollTop,q=R.element_ow*f<R.container_cw?a?-(R.container_cw-R.element_ow*f)/2:(R.container_cw-R.element_ow*f)/2:0,C=R.element_oh*f<R.container_ch?(R.container_ch-R.element_oh*f)/2:0}function B(){"zoom"===i.mode?n.style.zoom=f:(n.style.transformOrigin=(a?"100%":"0")+" 0",n.style.transform=`translate(${q}px, ${C}px) scale(${f})`),s.scrollLeft=a?-R.scroll_left:R.scroll_left,s.scrollTop=R.scroll_top,"function"==typeof i.onZoom&&i.onZoom({scale:f,x:R.scroll_left,y:R.scroll_top}),A=!1}function Z(){W(),B()}function S(e){P=e.x,K=e.y,O=Math.min(Math.max(i.min,O-O*(e.delta*i.speed)),i.max),A||(A=!0,l(H))}function H(){const e=O-f;Math.abs(e)>.001&&i.smooth&&"zoom"!==i.mode?(j(.15,e),l(H)):(j(1,e),A=!1)}function j(e,t){Y=P-R.rect.left-R.element_ol-R.container_cl-q,X=K-R.rect.top-R.element_ot-R.container_ct-C;let n=(Y+R.scroll_left)/f,o=(X+R.scroll_top)/f;f+=t*e,R.element_ow*f<R.container_cw?(q=a?-(R.container_cw-R.element_ow*f)/2:(R.container_cw-R.element_ow*f)/2,R.scroll_left=0):(q=0,R.scroll_left=n*f-Y-q),R.element_oh*f<R.container_ch?(C=(R.container_ch-R.element_oh*f)/2,R.scroll_top=0):(C=0,R.scroll_top=o*f-X-C),B()}Z();let F=[];F.push(M(s,"wheel",function(e){if(D||(D=!0,W()),clearTimeout(u),e.ctrlKey&&(e.preventDefault(),e.stopImmediatePropagation()),e.ctrlKey&&$){let t;t="deltaX"in e?Math.abs(e.deltaY)<90&&e.deltaY%1!=0?e.deltaY*[1,28,500][e.deltaMode||0]:e.deltaY*[1,28,500][e.deltaMode||0]*.25:"wheelDeltaX"in e?.25*e.wheelDeltaY/-3:.25*e.wheelDelta/-3,S({delta:t,x:a?window.innerWidth-e.clientX:e.clientX,y:e.clientY})}else $=!1;u=setTimeout(function(){W(),$=!0,D=!1},100)},{passive:!1})),F.push(M(s,"scroll",function(){d&&clearTimeout(d),d=setTimeout(W,100)},{passive:!0}));let N=[];function I(e){(e.ctrlKey||e.metaKey)&&("0"===e.key||"Digit0"===e.code||48===e.keyCode?S({delta:(f-1)/f/i.speed,x:Y,y:X,rect:s.getBoundingClientRect(),scroll_left:s.scrollLeft,scroll_top:s.scrollTop}):"="===e.key||"Equal"===e.code?(e.preventDefault(),S({delta:-50/f,x:s.clientWidth/2,y:s.clientHeight/2,rect:s.getBoundingClientRect(),scroll_left:s.scrollLeft,scroll_top:s.scrollTop})):"-"!==e.key&&"Minus"!==e.code||(e.preventDefault(),S({delta:50/f,x:s.clientWidth/2,y:s.clientHeight/2,rect:s.getBoundingClientRect(),scroll_left:s.scrollLeft,scroll_top:s.scrollTop})))}i.kbdEvents&&N.push(M(document,"keydown",I,{passive:!1}));let U=!1,V=!1,G=!1,J=!1,Q=-1!==c.indexOf("middle"),ee=-1!==c.indexOf("right"),te={x:0,y:0},ne=[],oe=[],le=[];function ie(){s.style.cursor=V&&Q||J&&ee||U&&G?"grabbing":U?"grab":""}function se(e){!(-1!==c.indexOf("ctrl")&&e.ctrlKey||-1!==c.indexOf("shift")&&e.shiftKey||-1!==c.indexOf("alt")&&e.altKey||-1!==c.indexOf("meta")&&e.metaKey)&&U&&(U=!1,ie(),z(ne))}function ce(e){U=!1,V=!1,ie(),z(ne)}function re(e){(-1!==c.indexOf("ctrl")&&e.ctrlKey||-1!==c.indexOf("shift")&&e.shiftKey||-1!==c.indexOf("alt")&&e.altKey||-1!==c.indexOf("meta")&&e.metaKey)&&!U&&(U=!0,ie(),ne.push(M(document,"keyup",se)),ne.push(M(window,"blur",ce)))}function ae(e){(U&&0===e.button||Q&&1===e.button||ee&&2===e.button)&&(e.preventDefault(),1===e.button?V=!0:2===e.button?J=!0:0===e.button&&(G=!0),ie(),W(),te.x=R.scroll_left+e.clientX,te.y=R.scroll_top+e.clientY,oe.push(M(document,"mousemove",me)),oe.push(M(document,"mouseup",ue)))}function me(e){(U&&G||V&&-1!==c.indexOf("middle")||J&&-1!==c.indexOf("right"))&&(s.scrollLeft=te.x-e.clientX,s.scrollTop=te.y-e.clientY,W(),"function"==typeof i.onPan&&i.onPan({scale:f,x:R.scroll_left,y:R.scroll_top}))}function ue(e){1===e.button?V=!1:2===e.button?J=!1:0===e.button&&(G=!1),ie(),z(oe)}function de(e){-1!==c.indexOf("right")&&e.preventDefault()}(-1!==c.indexOf("ctrl")||-1!==c.indexOf("shift")||-1!==c.indexOf("meta")||-1!==c.indexOf("alt")||Q||ee)&&(le.push(M(s,"mousedown",ae)),le.push(M(document,"keydown",re,{passive:!0})),le.push(M(s,"contextmenu",de)));let fe,pe,he=0,ye=!1;let ge,xe,we=[];return"maxTouchPoints"in navigator&&navigator.maxTouchPoints>0&&(we.push(M(s,"touchstart",function(e){e.touches&&e.touches.length>=2&&(ye=!0,W(),he=Math.sqrt(Math.pow(e.touches[0].pageX-e.touches[1].pageX,2)+Math.pow(e.touches[0].pageY-e.touches[1].pageY,2)),fe=(e.touches[0].pageX+e.touches[1].pageX)/2,pe=(e.touches[0].pageY+e.touches[1].pageY)/2)},{passive:!0})),we.push(M(s,"touchmove",function(e){if(e.touches&&e.touches.length>=2){let t=Math.sqrt(Math.pow(e.touches[0].pageX-e.touches[1].pageX,2)+Math.pow(e.touches[0].pageY-e.touches[1].pageY,2));fe=(e.touches[0].pageX+e.touches[1].pageX)/2,pe=(e.touches[0].pageY+e.touches[1].pageY)/2,S({delta:(he-t)/2,x:fe,y:pe}),he=t}},{passive:!0})),we.push(M(s,"touchend",function(e){ye&&(ye=!1,S({delta:0,x:fe,y:pe}))},{passive:!0}))),F.push(M(window,"resize",Z)),"complete"!==document.readyState&&F.push(M(window,"load",Z)),window.ResizeObserver?(xe=new ResizeObserver(function(e){e.length&&(clearTimeout(ge),ge=setTimeout(Z,17))}),xe.observe(n)):(xe=new MutationObserver(function(){clearTimeout(ge),ge=setTimeout(Z,100)}),xe.observe(n,{childList:!0,subtree:!0,characterData:!0})),b("Attached successfully."),b(`Options:\n\nmode\t\t${i.mode}\nmin\t\t\t${i.min}\nmax\t\t\t${i.max}\nspeed\t\t${100*i.speed}\nsmooth\t\t${i.smooth}\nkbdEvents\t${i.kbdEvents}\nhinted\t\t${i.hinted}\npanMode\t\t${Array.isArray(i.panMode)?i.panMode.join(" "):i.panMode}\nrtl\t\t\t${a}`),{get success(){return!0},get scale(){return f},set scale(e){S({delta:(f-e)/f/i.speed,x:Y,y:X,rect:s.getBoundingClientRect(),scroll_left:s.scrollLeft,scroll_top:s.scrollTop})},get onZoom(){return i.onZoom},set onZoom(e){"function"==typeof e?i.onZoom=e:w(y)},get viewportX(){return Y},get viewportY(){return X},get x(){return a?s.scrollWidth-s.clientWidth-s.scrollLeft:s.scrollLeft},set x(e){if("number"==typeof e)if(a){const t=s.scrollWidth-s.clientWidth,n=Math.min(t,Math.max(0,e));s.scrollLeft=t-n,R.scroll_left=n}else s.scrollLeft=e,R.scroll_left=e},get y(){return s.scrollTop},set y(e){"number"==typeof e&&(s.scrollTop=e,R.scroll_top=e)},get mode(){return i.mode},set mode(e){"string"==typeof e&&"zoom"===e?(i.mode="zoom",v(t),n.style.zoom=f,n.style.transform=""):(i.mode="transform",n.style.transform=`scale(${f})`,n.style.zoom=""),Z()},get min(){return i.min},set min(e){i.min=L.min(e),[i.min,i.max]=L.min_max(i.min,i.max),Z()},get max(){return i.max},set max(e){i.max=L.max(e),[i.min,i.max]=L.min_max(i.min,i.max),Z()},get speed(){return 100*i.speed},set speed(e){i.speed=L.speed(e)},get hinted(){return i.hinted},set hinted(e){i.hinted=!!e,i.hinted&&("zoom"===i.mode?n.style.willChange="zoom":n.style.willChange="transform")},get kbdEvents(){return i.kbdEvents},set kbdEvents(e){i.kbdEvents&&!e?(i.kbdEvents=!1,z(N)):!i.kbdEvents&&e&&(i.kbdEvents=!0,N.push(M(document,"keydown",I,{passive:!1})))},get smooth(){return i.smooth},set smooth(e){i.smooth=L.smooth(e),i.smooth||(f=O,Z())},get panMode(){return c},set panMode(e){z(ne),z(oe),z(le),U=!1,G=!1,V=!1,J=!1,i.panMode=e,c=i.panMode,Q=-1!==c.indexOf("middle"),ee=-1!==c.indexOf("right"),(-1!==c.indexOf("ctrl")||-1!==c.indexOf("shift")||-1!==c.indexOf("meta")||-1!==c.indexOf("alt")||Q||ee)&&(le.push(M(s,"mousedown",ae)),le.push(M(document,"keydown",re,{passive:!0})),le.push(M(s,"contextmenu",de))),ie()},get onPan(){return i.onPan},set onPan(e){"function"==typeof e?i.onPan=e:w(g)},get target(){return n},get container(){return s},get isRtl(){return a},get reset(){return function(){S({delta:(f-1)/f/i.speed,x:Y,y:X,rect:s.getBoundingClientRect(),scroll_left:s.scrollLeft,scroll_top:s.scrollTop})}},get destroy(){return function(){clearTimeout(u),clearTimeout(d),clearTimeout(ge),z(F),z(N),z(ne),z(oe),z(le),z(we),xe&&(xe.disconnect(),xe=null),T(s,r),s.style.cursor="",T(n,m),"zoom"===i.mode?n.style.zoom="":n.style.transform="",s.scrollTop/=f,s.scrollLeft/=f}}}}function X({useMeta:t=!1}={}){if("undefined"==typeof window||"undefined"==typeof document)return w(e),{unlock(){}};function n(e){e.ctrlKey&&e.preventDefault()}window.addEventListener("wheel",n,{passive:!1}),document.documentElement.style.touchAction="pan-x pan-y";let o=null,l=null;return t&&(null!==document.querySelector("meta[name=viewport]")?(o=document.querySelector("meta[name=viewport]").content,document.querySelector("meta[name=viewport]").content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content"):0!==document.getElementsByTagName("head").length&&(l=document.getElementsByTagName("head")[0].appendChild(document.createElement("meta")),l.name="viewport",l.content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content")),{get unlock(){return function(){window.removeEventListener("wheel",n),document.documentElement.style.touchAction="",t&&(null!==o?document.querySelector("meta[name=viewport]").content=o:l.parentElement.removeChild(l))}}}}export{Y as attachPinchZoom,X as pinchZoomLockViewport};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/dx.js","../src/helpers.js","../src/options.js","../src/index.js"],"sourcesContent":["export const messages = {\n 'ssr': 'All functions must be called from the client side.',\n 'warn-mode': 'Use of the non-standard \\'zoom\\' mode is discouraged. Please use \\'transform\\' instead to increase performance and avoid layout shifting.',\n 'min-max': 'The minimum scale value may not exceed the maximum scale value.',\n 'min-NaN': 'The minimum scale value must be a number.',\n 'min<': 'The minimum scale value may not be less than 0.001.',\n 'min>': 'The minimum scale value may not be greater than 1.',\n 'max-NaN': 'The maximum scale value must be a number.',\n 'max<': 'The maximum scale value may not be less than 1.',\n 'max>': 'The maximum scale value may not be greater than 2500.',\n 'speed-NaN': 'The speed multiplier must be a number.',\n 'speed<': 'The speed multiplier may not be less than 0.1.',\n 'speed>': 'The speed multiplier may not be greater than 10.',\n 'warn-high-zoom': 'High zoom levels may impact performance.',\n 'crit-detach-listener': 'Something went wrong (detach_listener)...\\n\\nPlease submit an issue at https://github.com/nsqx/pinch-zoom and include relevant details.',\n 'parent-element': 'Target element must have a parent container.',\n 'target-element': 'Target must be an element.',\n 'onZoom-type': 'onZoom must be a function.',\n 'onPan-type': 'onPan must be a function.'\n}\n\n\nexport function _fatal(msg) {\n console.error('%c@nsqx/pinch-zoom:%c ' + msg, 'padding:1px 4px;border-width:2px;border-color:#fa4549;border-style:solid;border-radius:4px;', '');\n}\nexport function _error(msg) {\n console.error('%c@nsqx/pinch-zoom:%c ' + msg, '', '');\n}\nexport function _warn(msg) {\n console.warn('%c@nsqx/pinch-zoom:%c ' + msg, '', '');\n}\nexport function _log(msg) {\n console.log('%c@nsqx/pinch-zoom:%c ' + msg, 'color:#218bff', '');\n}\nexport function _debug(msg) {\n console.debug('%c@nsqx/pinch-zoom:%c ' + msg, 'color:#218bff', '');\n}","import { messages, _fatal, _error, _warn, _log } from './dx';\n\n\nexport function set_style(target, resets, name, value) {\n if (!Object.prototype.hasOwnProperty.call(resets, name)) {\n resets[name] = target.style[name];\n target.style[name] = value;\n }\n}\nexport function reset_styles(target, resets) {\n for (let prop in resets)\n if (resets[prop] !== undefined) {\n target.style[prop] = resets[prop];\n } else {\n target.style[prop] = '';\n }\n}\n\nexport function attach_listener(target, event, f, options = {}) {\n target.addEventListener(event, f, options);\n return function () {\n target.removeEventListener(event, f, options);\n };\n}\nexport function detach_listener(detach) {\n try {\n detach();\n } catch (ex) {\n _fatal(messages['crit-detach-listener']);\n console.error(ex);\n }\n}\nexport function detach_all_listeners(handles) {\n if (!Array.isArray(handles)) return;\n for (let detach of handles) {\n detach_listener(detach);\n }\n handles.length = 0;\n}","import { messages, _error, _warn, _log } from './dx';\n\n\nexport function empty_controller() {\n return {\n success: false,\n scale: 1,\n onZoom() {},\n viewportX: 0,\n viewportY: 0,\n mode: 'transform',\n min: 1,\n max: 1,\n speed: 0,\n hinted: false,\n kbdEvents: false,\n smooth: true,\n panMode: 'none',\n onPan() {},\n target: null,\n container: null,\n isRtl: false,\n reset() {},\n destroy() {},\n };\n}\n\nexport const option_defaults = {\n min: 1,\n max: 4,\n speed: 1,\n mode: 'transform',\n hinted: false,\n kbdEvents: false,\n panMode: 'none',\n}\n\nexport function normalize_options(opts) {\n opts.mode = set_normalize.mode(opts.mode);\n opts.smooth = set_normalize.smooth(opts.smooth);\n [opts.min, opts.max] = set_normalize.min_max(opts.min, opts.max);\n opts.min = set_normalize.min(opts.min);\n opts.max = set_normalize.max(opts.max);\n opts.speed = set_normalize.speed(opts.speed);\n return opts;\n}\n\nexport const set_normalize = {\n mode(use_mode) {\n if (typeof use_mode === 'string' && use_mode === 'zoom') {\n _warn(messages['warn-mode']);\n return 'zoom';\n } else {\n return 'transform';\n }\n },\n smooth(use_smooth) {\n return typeof use_smooth === 'boolean'\n ? use_smooth\n : (window.matchMedia ? !window.matchMedia('(prefers-reduced-motion: reduce)').matches : false);\n },\n min(use_min) {\n if (typeof use_min !== 'number') {\n _error(messages['min-NaN']);\n return 1\n };\n if (use_min > 1) {\n _error(messages['min>']);\n return 1;\n } else if (use_min < 0.001) {\n _error(messages['min<']);\n return 0.001;\n } else {\n return use_min;\n }\n },\n max(use_max) {\n if (typeof use_max !== 'number') {\n _error(messages['max-NaN']);\n return 4;\n };\n if (use_max >= 1000) {\n _warn(messages['warn-high-zoom']);\n }\n if (use_max < 1) {\n _error(messages['max<']);\n return 1;\n } else if (use_max > 2500) {\n _error(messages['max>']);\n return 2500;\n } else {\n return use_max;\n }\n },\n min_max(use_min, use_max) {\n if (use_min > use_max) {\n _error(messages['min-max']);\n return [use_max, use_min];\n } else {\n return [use_min, use_max];\n }\n },\n speed(use_speed) {\n if (typeof use_speed !== 'number') {\n _error(messages['speed-NaN']);\n return 1 / 100;\n };\n if (use_speed > 10) {\n _error(messages['speed>']);\n return 10 / 100;\n } else if (use_speed < 0.1) {\n _error(messages['speed<']);\n return 0.1 / 100;\n } else {\n return use_speed / 100;\n }\n }\n}","import { messages, _fatal, _error, _warn, _debug } from './dx';\nimport { set_style, reset_styles, attach_listener, detach_all_listeners } from './helpers';\nimport { empty_controller, normalize_options, option_defaults, set_normalize } from './options';\n\n// ---\n\n/** @typedef {import('../index').PinchZoomOptions} PinchZoomOptions */\n/** @typedef {import('../index').PinchZoomController} PinchZoomController */\n\n/**\n * Attach pinch-zoom functionality to an element\n * @param {HTMLElement} element --- The target element to attach zoom functionality\n * @param {PinchZoomOptions} [options] --- Configuration options\n * @returns {PinchZoomController}\n */\nexport function attachPinchZoom(element, options = {}) {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n _fatal(messages['ssr']);\n return empty_controller();\n }\n\n if (!(element && element instanceof Element)) {\n _fatal(messages['target-element']);\n return empty_controller();\n }\n\n const rAF = (function () {\n if (typeof requestAnimationFrame === 'function') {\n return requestAnimationFrame.bind(window);\n }\n return (f) => setTimeout(() => f(Date.now()), 17);\n })();\n\n // --- normalize options\n\n const opts = normalize_options({\n ...option_defaults,\n ...options,\n });\n const container = element.parentElement;\n if (!container) {\n _fatal(messages['parent-element']);\n return empty_controller();\n }\n\n let pan_mode = opts.panMode;\n\n // container.classList.add('pinch-zoom-container'); // (unused; selector)\n let resets_container = {};\n set_style(container, resets_container, 'overflow', 'auto');\n set_style(container, resets_container, 'touchAction', 'pan-x pan-y');\n set_style(container, resets_container, 'position', 'relative');\n\n let is_rtl = window.getComputedStyle(container).direction === 'rtl';\n\n let resets_element = {};\n // element.classList.add('pinch-zoom-content'); // (unused; selector)\n set_style(element, resets_element, 'backfaceVisibility', 'hidden'); // perf\n set_style(element, resets_element, 'contain', 'layout paint'); // perf\n set_style(element, resets_element, 'position', 'absolute');\n if (opts.hinted)\n if (opts.mode === 'zoom') {\n set_style(element, resets_element, 'willChange', 'zoom');\n } else {\n set_style(element, resets_element, 'willChange', 'transform');\n }\n\n // --- setup\n\n let scale = 1;\n let target_scale = 1;\n let m_x = 0;\n let m_y = 0;\n let translate_x = 0;\n let translate_y = 0;\n let target_x = 0;\n let target_y = 0;\n\n let use_zoom = true;\n let is_wheel_event = false;\n let wheel_debounce_timout, scroll_debounce_timout;\n let _paint_queue = false;\n\n let cached_metrics = {};\n\n function update_cached_metrics() {\n cached_metrics.rect = container.getBoundingClientRect();\n cached_metrics.element_ow = element.offsetWidth;\n cached_metrics.element_oh = element.offsetHeight;\n cached_metrics.element_ol = element.offsetLeft;\n cached_metrics.element_ot = element.offsetTop;\n cached_metrics.container_ct = container.clientTop;\n cached_metrics.container_cl = container.clientLeft;\n cached_metrics.container_cw = container.clientWidth;\n cached_metrics.container_ch = container.clientHeight;\n cached_metrics.scroll_left = is_rtl ? -container.scrollLeft : container.scrollLeft;\n cached_metrics.scroll_top = container.scrollTop;\n if (cached_metrics.element_ow * scale < cached_metrics.container_cw) {\n translate_x = is_rtl ? -(cached_metrics.container_cw - cached_metrics.element_ow * scale) / 2 : (cached_metrics.container_cw - cached_metrics.element_ow * scale) / 2;\n } else {\n translate_x = 0;\n }\n if (cached_metrics.element_oh * scale < cached_metrics.container_ch) {\n translate_y = (cached_metrics.container_ch - cached_metrics.element_oh * scale) / 2;\n } else {\n translate_y = 0;\n }\n }\n\n function _paint() {\n if (opts.mode === 'zoom') {\n element.style.zoom = scale;\n } else {\n element.style.transformOrigin = `${is_rtl ? '100%' : '0'} 0`;\n element.style.transform = `translate(${translate_x}px, ${translate_y}px) scale(${scale})`;\n }\n\n // rtl logic tested on latest firefox, chrome, and edge versions only\n container.scrollLeft = is_rtl ? -cached_metrics.scroll_left : cached_metrics.scroll_left;\n container.scrollTop = cached_metrics.scroll_top;\n if (typeof opts.onZoom === 'function') {\n opts.onZoom({ scale: scale, x: cached_metrics.scroll_left, y: cached_metrics.scroll_top });\n }\n _paint_queue = false;\n }\n\n function update_and_paint() {\n update_cached_metrics();\n _paint();\n }\n update_and_paint();\n\n // --- main\n\n function apply_zoom(f_opts) {\n target_x = f_opts.x;\n target_y = f_opts.y;\n\n target_scale = Math.min(Math.max(opts.min, target_scale - target_scale * (f_opts.delta * opts.speed)), opts.max);\n\n if (!_paint_queue) {\n _paint_queue = true;\n rAF(smooth_update);\n }\n }\n function smooth_update() {\n const diff = target_scale - scale;\n\n if (Math.abs(diff) > 0.001 && opts.smooth && opts.mode !== 'zoom') {\n perform_transform(0.15, diff);\n rAF(smooth_update);\n } else {\n perform_transform(1, diff);\n _paint_queue = false;\n }\n }\n function perform_transform(lerp, diff) {\n // mouse pos, relative to element visual state\n m_x = target_x - cached_metrics.rect.left - cached_metrics.element_ol - cached_metrics.container_cl - translate_x;\n m_y = target_y - cached_metrics.rect.top - cached_metrics.element_ot - cached_metrics.container_ct - translate_y;\n let content_x = (m_x + cached_metrics.scroll_left) / scale;\n let content_y = (m_y + cached_metrics.scroll_top) / scale;\n\n scale += diff * lerp;\n\n if (cached_metrics.element_ow * scale < cached_metrics.container_cw) {\n // width of content is less than viewport\n translate_x = is_rtl ? -(cached_metrics.container_cw - cached_metrics.element_ow * scale) / 2 : (cached_metrics.container_cw - cached_metrics.element_ow * scale) / 2;\n cached_metrics.scroll_left = 0;\n } else {\n translate_x = 0;\n cached_metrics.scroll_left = content_x * scale - m_x - translate_x;\n }\n\n if (cached_metrics.element_oh * scale < cached_metrics.container_ch) {\n // height of content is less than viewport\n translate_y = (cached_metrics.container_ch - cached_metrics.element_oh * scale) / 2;\n cached_metrics.scroll_top = 0;\n } else {\n translate_y = 0;\n cached_metrics.scroll_top = content_y * scale - m_y - translate_y;\n }\n\n _paint();\n }\n\n function wheel_listener(e) {\n if (!is_wheel_event) {\n is_wheel_event = true;\n update_cached_metrics();\n }\n clearTimeout(wheel_debounce_timout);\n if (e.ctrlKey) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n if (e.ctrlKey && use_zoom) {\n let norm_delta;\n if ('deltaX' in e) {\n // if (Math.abs(e.deltaY) < 24 && e.deltaY % 1 !== 0) {\n // trackpad pinching\n // } else\n if (Math.abs(e.deltaY) < 90 && e.deltaY % 1 !== 0) {\n // ctrl + trackpad // & trackpad pinching\n norm_delta = e.deltaY * [1, 28, 500][e.deltaMode || 0];\n } else {\n // ctrl + wheel\n norm_delta = e.deltaY * [1, 28, 500][e.deltaMode || 0] * 0.25;\n }\n } else if ('wheelDeltaX' in e)\n norm_delta = (e.wheelDeltaY * 0.25) / -3; // legacy\n else norm_delta = (e.wheelDelta * 0.25) / -3;\n apply_zoom({\n delta: norm_delta,\n x: is_rtl ? window.innerWidth - e.clientX : e.clientX,\n y: e.clientY,\n rect: cached_metrics.rect,\n scroll_left: cached_metrics.scroll_left,\n scroll_top: cached_metrics.scroll_top,\n });\n } else {\n use_zoom = false;\n }\n\n wheel_debounce_timout = setTimeout(function () {\n update_cached_metrics();\n use_zoom = true;\n is_wheel_event = false;\n }, 100);\n }\n\n let general_listeners = [];\n general_listeners.push(attach_listener(container, 'wheel', wheel_listener, { passive: false }));\n\n function scroll_listener() {\n scroll_debounce_timout && clearTimeout(scroll_debounce_timout);\n scroll_debounce_timout = setTimeout(update_cached_metrics, 100);\n }\n general_listeners.push(attach_listener(container, 'scroll', scroll_listener, { passive: true }));\n\n // --- kbd shortcuts\n\n let kbd_listeners = [];\n\n function kbd_listener(e) {\n // reset zoom\n if (e.ctrlKey || e.metaKey)\n if (e.key === '0' || e.code === 'Digit0' || e.keyCode === 48) {\n apply_zoom({\n delta: (scale - 1) / scale / opts.speed,\n x: m_x,\n y: m_y,\n rect: container.getBoundingClientRect(),\n scroll_left: container.scrollLeft,\n scroll_top: container.scrollTop,\n });\n } else if (e.key === '=' || e.code === 'Equal') {\n e.preventDefault();\n apply_zoom({\n delta: -50 / scale,\n x: container.clientWidth / 2,\n y: container.clientHeight / 2,\n rect: container.getBoundingClientRect(),\n scroll_left: container.scrollLeft,\n scroll_top: container.scrollTop,\n });\n } else if (e.key === '-' || e.code === 'Minus') {\n e.preventDefault();\n apply_zoom({\n delta: 50 / scale,\n x: container.clientWidth / 2,\n y: container.clientHeight / 2,\n rect: container.getBoundingClientRect(),\n scroll_left: container.scrollLeft,\n scroll_top: container.scrollTop,\n });\n }\n }\n\n if (opts.kbdEvents) kbd_listeners.push(attach_listener(document, 'keydown', kbd_listener, { passive: false }));\n\n // --- mouse pan\n\n let is_kbd_pannable = false,\n is_mmouse_down = false,\n is_lmouse_down = false,\n is_rmouse_down = false;\n let use_middle = pan_mode.indexOf('middle') !== -1;\n let use_right = pan_mode.indexOf('right') !== -1;\n let pan_origin = { x: 0, y: 0 };\n\n let pan_kbd_end_listeners = [];\n let pan_mouse_listeners = [];\n let pan_start_listeners = [];\n\n function update_pan_cursor_state() {\n if ((is_mmouse_down && use_middle) || (is_rmouse_down && use_right) || (is_kbd_pannable && is_lmouse_down)) {\n container.style.cursor = 'grabbing';\n } else if (is_kbd_pannable) {\n container.style.cursor = 'grab';\n } else {\n container.style.cursor = '';\n }\n }\n\n function pan_kbd_drag__keyup(e) {\n let condition =\n (pan_mode.indexOf('ctrl') !== -1 && e.ctrlKey) ||\n (pan_mode.indexOf('shift') !== -1 && e.shiftKey) ||\n (pan_mode.indexOf('alt') !== -1 && e.altKey) ||\n (pan_mode.indexOf('meta') !== -1 && e.metaKey);\n if (!condition && is_kbd_pannable) {\n is_kbd_pannable = false;\n update_pan_cursor_state();\n detach_all_listeners(pan_kbd_end_listeners);\n }\n }\n function pan_kbd_drag__lost_focus(e) {\n is_kbd_pannable = false;\n is_mmouse_down = false;\n update_pan_cursor_state();\n detach_all_listeners(pan_kbd_end_listeners);\n }\n function pan_kbd_drag__keydown(e) {\n let condition =\n (pan_mode.indexOf('ctrl') !== -1 && e.ctrlKey) ||\n (pan_mode.indexOf('shift') !== -1 && e.shiftKey) ||\n (pan_mode.indexOf('alt') !== -1 && e.altKey) ||\n (pan_mode.indexOf('meta') !== -1 && e.metaKey);\n if (condition && !is_kbd_pannable) {\n is_kbd_pannable = true;\n update_pan_cursor_state();\n pan_kbd_end_listeners.push(attach_listener(document, 'keyup', pan_kbd_drag__keyup));\n pan_kbd_end_listeners.push(attach_listener(window, 'blur', pan_kbd_drag__lost_focus));\n }\n }\n\n function pan_drag__mouse_down(e) {\n if ((is_kbd_pannable && e.button === 0) || (use_middle && e.button === 1) || (use_right && e.button === 2)) {\n e.preventDefault();\n if (e.button === 1) {\n is_mmouse_down = true;\n } else if (e.button === 2) {\n is_rmouse_down = true;\n } else if (e.button === 0) {\n is_lmouse_down = true;\n }\n update_pan_cursor_state();\n update_cached_metrics();\n pan_origin.x = cached_metrics.scroll_left + e.clientX;\n pan_origin.y = cached_metrics.scroll_top + e.clientY;\n pan_mouse_listeners.push(attach_listener(document, 'mousemove', pan_drag__mouse_move));\n pan_mouse_listeners.push(attach_listener(document, 'mouseup', pan_drag__mouse_up));\n }\n }\n function pan_drag__mouse_move(e) {\n if (\n (is_kbd_pannable && is_lmouse_down) ||\n (is_mmouse_down && pan_mode.indexOf('middle') !== -1) ||\n (is_rmouse_down && pan_mode.indexOf('right') !== -1)\n ) {\n container.scrollLeft = pan_origin.x - e.clientX;\n container.scrollTop = pan_origin.y - e.clientY;\n update_cached_metrics();\n if (typeof opts.onPan === 'function') {\n opts.onPan({ scale: scale, x: cached_metrics.scroll_left, y: cached_metrics.scroll_top });\n }\n }\n }\n function pan_drag__mouse_up(e) {\n if (e.button === 1) {\n is_mmouse_down = false;\n } else if (e.button === 2) {\n is_rmouse_down = false;\n } else if (e.button === 0) {\n is_lmouse_down = false;\n }\n update_pan_cursor_state();\n detach_all_listeners(pan_mouse_listeners);\n }\n function pan_drag__ctx_cancel(e) {\n if (pan_mode.indexOf('right') !== -1) e.preventDefault();\n }\n\n if (\n pan_mode.indexOf('ctrl') !== -1 ||\n pan_mode.indexOf('shift') !== -1 ||\n pan_mode.indexOf('meta') !== -1 ||\n pan_mode.indexOf('alt') !== -1 ||\n use_middle ||\n use_right\n ) {\n pan_start_listeners.push(attach_listener(container, 'mousedown', pan_drag__mouse_down));\n pan_start_listeners.push(attach_listener(document, 'keydown', pan_kbd_drag__keydown, { passive: true }));\n pan_start_listeners.push(attach_listener(container, 'contextmenu', pan_drag__ctx_cancel));\n }\n\n // --- touchscreen support\n\n let touch_span = 0;\n let touch_is_multi = false;\n let touch_x, touch_y;\n\n function touch_start_listener(e) {\n if (e.touches && e.touches.length >= 2) {\n touch_is_multi = true;\n update_cached_metrics();\n touch_span = Math.sqrt(\n Math.pow(e.touches[0].pageX - e.touches[1].pageX, 2) + Math.pow(e.touches[0].pageY - e.touches[1].pageY, 2),\n );\n // touch_theta = Math.atan2(e.touches[1].pageY - e.touches[0].pageY, e.touches[1].pageX - e.touches[0].pageX);\n touch_x = (e.touches[0].pageX + e.touches[1].pageX) / 2;\n touch_y = (e.touches[0].pageY + e.touches[1].pageY) / 2;\n }\n }\n function touch_move_listener(e) {\n if (e.touches && e.touches.length >= 2) {\n let dist = Math.sqrt(\n Math.pow(e.touches[0].pageX - e.touches[1].pageX, 2) + Math.pow(e.touches[0].pageY - e.touches[1].pageY, 2),\n );\n // theta = Math.atan2(e.touches[1].pageY - e.touches[0].pageY, e.touches[1].pageX - e.touches[0].pageX) - touch_theta /* + angle */;\n // if (theta > Math.PI) theta -= 2 * Math.PI;\n // if (theta < -Math.PI) theta += 2 * Math.PI;\n // if (Math.abs(theta) < (Math.PI / 12)) theta = 0; // snap logic\n touch_x = (e.touches[0].pageX + e.touches[1].pageX) / 2;\n touch_y = (e.touches[0].pageY + e.touches[1].pageY) / 2;\n apply_zoom({\n delta: (touch_span - dist) / 2,\n x: touch_x,\n y: touch_y,\n rect: cached_metrics.rect,\n scroll_left: cached_metrics.scroll_left,\n scroll_top: cached_metrics.scroll_top,\n });\n touch_span = dist;\n }\n }\n function touch_end_listener(e) {\n if (touch_is_multi) {\n touch_is_multi = false;\n apply_zoom({\n delta: 0,\n x: touch_x,\n y: touch_y,\n rect: cached_metrics.rect,\n scroll_left: cached_metrics.scroll_left,\n scroll_top: cached_metrics.scroll_top,\n });\n }\n }\n\n let touch_listeners = [];\n if ('maxTouchPoints' in navigator && navigator.maxTouchPoints > 0) {\n touch_listeners.push(attach_listener(container, 'touchstart', touch_start_listener, { passive: true }));\n touch_listeners.push(attach_listener(container, 'touchmove', touch_move_listener, { passive: true }));\n touch_listeners.push(attach_listener(container, 'touchend', touch_end_listener, { passive: true }));\n }\n\n // --- attach\n\n general_listeners.push(attach_listener(window, 'resize', update_and_paint));\n document.readyState !== 'complete' && general_listeners.push(attach_listener(window, 'load', update_and_paint));\n\n let observer_debounce_timout, observer;\n if (window.ResizeObserver) {\n observer = new ResizeObserver(function (entries) {\n if (!entries.length) return;\n clearTimeout(observer_debounce_timout);\n observer_debounce_timout = setTimeout(update_and_paint, 17);\n });\n observer.observe(element);\n } else {\n observer = new MutationObserver(function () {\n clearTimeout(observer_debounce_timout);\n observer_debounce_timout = setTimeout(update_and_paint, 100);\n });\n observer.observe(element, { childList: true, subtree: true, characterData: true });\n }\n\n _debug('Attached successfully.');\n _debug(`Options:\n\nmode\\t\\t${opts.mode}\nmin\\t\\t\\t${opts.min}\nmax\\t\\t\\t${opts.max}\nspeed\\t\\t${opts.speed * 100}\nsmooth\\t\\t${opts.smooth}\nkbdEvents\\t${opts.kbdEvents}\nhinted\\t\\t${opts.hinted}\npanMode\\t\\t${Array.isArray(opts.panMode) ? opts.panMode.join(' ') : opts.panMode}\nrtl\\t\\t\\t${is_rtl}`);\n\n // ---\n\n return {\n get success() {\n // readonly\n return true;\n },\n get scale() {\n return scale;\n },\n set scale(use_scale) {\n apply_zoom({\n delta: (scale - use_scale) / scale / opts.speed,\n x: m_x,\n y: m_y,\n rect: container.getBoundingClientRect(),\n scroll_left: container.scrollLeft,\n scroll_top: container.scrollTop,\n });\n },\n get onZoom() {\n return opts.onZoom;\n },\n set onZoom(use_onZoom) {\n if (typeof use_onZoom === 'function') opts.onZoom = use_onZoom;\n else _error(messages['onZoom-type']);\n },\n get viewportX() {\n // readonly\n return m_x;\n },\n get viewportY() {\n // readonly\n return m_y;\n },\n get x() {\n if (is_rtl) return container.scrollWidth - container.clientWidth - container.scrollLeft;\n return container.scrollLeft;\n },\n set x(use_x) {\n if (typeof use_x === 'number')\n if (is_rtl) {\n const max_scroll = container.scrollWidth - container.clientWidth;\n const scroll_pos = Math.min(max_scroll, Math.max(0, use_x));\n container.scrollLeft = max_scroll - scroll_pos;\n cached_metrics.scroll_left = scroll_pos;\n } else {\n container.scrollLeft = use_x;\n cached_metrics.scroll_left = use_x;\n }\n },\n get y() {\n return container.scrollTop;\n },\n set y(use_y) {\n if (typeof use_y === 'number') {\n container.scrollTop = use_y;\n cached_metrics.scroll_top = use_y;\n }\n },\n get mode() {\n return opts.mode;\n },\n set mode(use_mode) {\n if (typeof use_mode === 'string' && use_mode === 'zoom') {\n opts.mode = 'zoom';\n _warn(messages['warn-mode']);\n element.style.zoom = scale;\n element.style.transform = '';\n } else {\n opts.mode = 'transform';\n element.style.transform = `scale(${scale})`;\n element.style.zoom = '';\n }\n update_and_paint();\n },\n get min() {\n return opts.min;\n },\n set min(use_min) {\n opts.min = set_normalize.min(use_min);\n [opts.min, opts.max] = set_normalize.min_max(opts.min, opts.max);\n update_and_paint();\n },\n get max() {\n return opts.max;\n },\n set max(use_max) {\n opts.max = set_normalize.max(use_max);\n [opts.min, opts.max] = set_normalize.min_max(opts.min, opts.max);\n update_and_paint();\n },\n get speed() {\n return opts.speed * 100;\n },\n set speed(use_speed) {\n opts.speed = set_normalize.speed(use_speed);\n },\n get hinted() {\n return opts.hinted;\n },\n set hinted(use_hint) {\n opts.hinted = !!use_hint;\n if (opts.hinted)\n if (opts.mode === 'zoom') {\n element.style.willChange = 'zoom';\n } else {\n element.style.willChange = 'transform';\n }\n },\n get kbdEvents() {\n return opts.kbdEvents;\n },\n set kbdEvents(use_kbd) {\n if (opts.kbdEvents && !use_kbd) {\n opts.kbdEvents = false;\n detach_all_listeners(kbd_listeners);\n } else if (!opts.kbdEvents && !!use_kbd) {\n opts.kbdEvents = true;\n kbd_listeners.push(attach_listener(document, 'keydown', kbd_listener, { passive: false }));\n }\n },\n get smooth() {\n return opts.smooth;\n },\n set smooth(use_smooth) {\n opts.smooth = set_normalize.smooth(use_smooth);\n if (!opts.smooth) {\n scale = target_scale;\n update_and_paint();\n }\n },\n get panMode() {\n return pan_mode;\n },\n set panMode(use_pan_mode) {\n detach_all_listeners(pan_kbd_end_listeners);\n detach_all_listeners(pan_mouse_listeners);\n detach_all_listeners(pan_start_listeners);\n is_kbd_pannable = false;\n is_lmouse_down = false;\n is_mmouse_down = false;\n is_rmouse_down = false;\n\n opts.panMode = use_pan_mode;\n pan_mode = opts.panMode;\n use_middle = pan_mode.indexOf('middle') !== -1;\n use_right = pan_mode.indexOf('right') !== -1;\n\n if (\n pan_mode.indexOf('ctrl') !== -1 ||\n pan_mode.indexOf('shift') !== -1 ||\n pan_mode.indexOf('meta') !== -1 ||\n pan_mode.indexOf('alt') !== -1 ||\n use_middle ||\n use_right\n ) {\n pan_start_listeners.push(attach_listener(container, 'mousedown', pan_drag__mouse_down));\n pan_start_listeners.push(attach_listener(document, 'keydown', pan_kbd_drag__keydown, { passive: true }));\n pan_start_listeners.push(attach_listener(container, 'contextmenu', pan_drag__ctx_cancel));\n }\n update_pan_cursor_state();\n },\n get onPan() {\n return opts.onPan;\n },\n set onPan(use_onPan) {\n if (typeof use_onPan === 'function') opts.onPan = use_onPan;\n else _error(messages['onPan-type']);\n },\n get target() {\n // readonly\n return element;\n },\n get container() {\n // readonly\n return container;\n },\n get isRtl() {\n // readonly\n return is_rtl;\n },\n get reset() {\n // readonly\n return function () {\n apply_zoom({\n delta: (scale - 1) / scale / opts.speed,\n x: m_x,\n y: m_y,\n rect: container.getBoundingClientRect(),\n scroll_left: container.scrollLeft,\n scroll_top: container.scrollTop,\n });\n };\n },\n get destroy() {\n // readonly\n return function () {\n clearTimeout(wheel_debounce_timout);\n clearTimeout(scroll_debounce_timout);\n clearTimeout(observer_debounce_timout);\n\n // container.classList.remove('pinch-zoom-container');\n // element.classList.remove('pinch-zoom-content');\n\n detach_all_listeners(general_listeners);\n detach_all_listeners(kbd_listeners);\n\n detach_all_listeners(pan_kbd_end_listeners);\n detach_all_listeners(pan_mouse_listeners);\n detach_all_listeners(pan_start_listeners);\n\n detach_all_listeners(touch_listeners);\n\n if (observer) {\n observer.disconnect();\n observer = null;\n }\n\n reset_styles(container, resets_container);\n container.style.cursor = '';\n\n reset_styles(element, resets_element);\n\n if (opts.mode === 'zoom') element.style.zoom = '';\n else element.style.transform = '';\n\n container.scrollTop /= scale;\n container.scrollLeft /= scale;\n };\n },\n };\n}\n\n// ---\n\n/**\n * Global utility to prevent browser-level zooming.\n * @param {{useMeta?: boolean}} options --- Generate or alter <meta> tag to lock mobile viewport\n * @returns {{readonly unlock(): void}} --- Unlock viewport restrictions\n */\nexport function pinchZoomLockViewport({ useMeta = false } = {}) {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n _error(messages['ssr']);\n return {\n unlock() {},\n };\n }\n function lock_wheel_listener(e) {\n if (e.ctrlKey) e.preventDefault();\n }\n window.addEventListener('wheel', lock_wheel_listener, { passive: false });\n document.documentElement.style.touchAction = 'pan-x pan-y';\n let original_meta = null;\n let new_meta = null;\n if (useMeta)\n if (document.querySelector('meta[name=viewport]') !== null) {\n original_meta = document.querySelector('meta[name=viewport]').content;\n document.querySelector('meta[name=viewport]').content =\n 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content';\n } else if (document.getElementsByTagName('head').length !== 0) {\n new_meta = document.getElementsByTagName('head')[0].appendChild(document.createElement('meta'));\n new_meta.name = 'viewport';\n new_meta.content =\n 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content';\n }\n\n return {\n get unlock() {\n // readonly\n return function () {\n window.removeEventListener('wheel', lock_wheel_listener);\n document.documentElement.style.touchAction = '';\n if (useMeta)\n if (original_meta !== null) {\n document.querySelector('meta[name=viewport]').content = original_meta;\n } else {\n new_meta.parentElement.removeChild(new_meta);\n }\n };\n },\n };\n}\n"],"names":["messages","_fatal","msg","console","error","_error","_warn","warn","_debug","debug","set_style","target","resets","name","value","Object","prototype","hasOwnProperty","call","style","reset_styles","prop","undefined","attach_listener","event","f","options","addEventListener","removeEventListener","detach_listener","detach","ex","detach_all_listeners","handles","Array","isArray","length","empty_controller","success","scale","onZoom","viewportX","viewportY","mode","min","max","speed","hinted","kbdEvents","smooth","panMode","onPan","container","isRtl","reset","destroy","option_defaults","set_normalize","use_mode","use_smooth","window","matchMedia","matches","use_min","use_max","min_max","use_speed","attachPinchZoom","element","document","Element","rAF","requestAnimationFrame","bind","setTimeout","Date","now","opts","normalize_options","parentElement","pan_mode","resets_container","is_rtl","getComputedStyle","direction","resets_element","wheel_debounce_timout","scroll_debounce_timout","target_scale","m_x","m_y","translate_x","translate_y","target_x","target_y","use_zoom","is_wheel_event","_paint_queue","cached_metrics","update_cached_metrics","rect","getBoundingClientRect","element_ow","offsetWidth","element_oh","offsetHeight","element_ol","offsetLeft","element_ot","offsetTop","container_ct","clientTop","container_cl","clientLeft","container_cw","clientWidth","container_ch","clientHeight","scroll_left","scrollLeft","scroll_top","scrollTop","_paint","zoom","transformOrigin","transform","x","y","update_and_paint","apply_zoom","f_opts","Math","delta","smooth_update","diff","abs","perform_transform","lerp","left","top","content_x","content_y","general_listeners","push","e","clearTimeout","ctrlKey","preventDefault","stopImmediatePropagation","norm_delta","deltaY","deltaMode","wheelDeltaY","wheelDelta","innerWidth","clientX","clientY","passive","kbd_listeners","kbd_listener","metaKey","key","code","keyCode","is_kbd_pannable","is_mmouse_down","is_lmouse_down","is_rmouse_down","use_middle","indexOf","use_right","pan_origin","pan_kbd_end_listeners","pan_mouse_listeners","pan_start_listeners","update_pan_cursor_state","cursor","pan_kbd_drag__keyup","shiftKey","altKey","pan_kbd_drag__lost_focus","pan_kbd_drag__keydown","pan_drag__mouse_down","button","pan_drag__mouse_move","pan_drag__mouse_up","pan_drag__ctx_cancel","touch_x","touch_y","touch_span","touch_is_multi","observer_debounce_timout","observer","touch_listeners","navigator","maxTouchPoints","touches","sqrt","pow","pageX","pageY","dist","readyState","ResizeObserver","entries","observe","MutationObserver","childList","subtree","characterData","join","use_scale","use_onZoom","scrollWidth","use_x","max_scroll","scroll_pos","use_y","use_hint","willChange","use_kbd","use_pan_mode","use_onPan","disconnect","pinchZoomLockViewport","useMeta","unlock","lock_wheel_listener","documentElement","touchAction","original_meta","new_meta","querySelector","content","getElementsByTagName","appendChild","createElement","removeChild"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).PinchZoom={})}(this,function(e){"use strict";function t(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t);if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,o)}return n}function o(e){for(var o=1;o<arguments.length;o++){var r=null!=arguments[o]?arguments[o]:{};o%2?n(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},i=function(e){return e&&e.Math===Math&&e},c=i("object"==typeof globalThis&&globalThis)||i("object"==typeof window&&window)||i("object"==typeof self&&self)||i("object"==typeof r&&r)||i("object"==typeof r&&r)||function(){return this}()||Function("return this")(),a="object"==typeof document&&document.all,u=void 0===a&&void 0!==a?function(e){return"function"==typeof e||e===a}:function(e){return"function"==typeof e},l=u,s=function(e){return"object"==typeof e?null!==e:l(e)},f=s,m=c.document,p=f(m)&&f(m.createElement),d=function(e){return p?m.createElement(e):{}},h=d("span").classList,y=h&&h.constructor&&h.constructor.prototype,v=y===Object.prototype?void 0:y,g=function(e){try{return!!e()}catch(e){return!0}},b=!g(function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}),w=b,O=Function.prototype,x=O.call,_=w&&O.bind.bind(x,x),S=w?_:function(e){return function(){return x.apply(e,arguments)}},T=S,P=T({}.toString),j=T("".slice),L=g,E=function(e){return j(P(e),8,-1)},M=Object,k=S("".split),A=L(function(){return!M("z").propertyIsEnumerable(0)})?function(e){return"String"===E(e)?k(e,""):M(e)}:M,C=function(e){return null==e},z=C,R=TypeError,D=function(e){if(z(e))throw new R("Can't call method on "+e);return e},I=A,Y=D,F=function(e){return I(Y(e))},X={exports:{}},q=c,B=Object.defineProperty,G=function(e,t){try{B(q,e,{value:t,configurable:!0,writable:!0})}catch(n){q[e]=t}return t},K=c,N=G,W="__core-js_shared__",Z=X.exports=K[W]||N(W,{});(Z.versions||(Z.versions=[])).push({version:"3.48.0",mode:"global",copyright:"© 2013–2025 Denis Pushkarev (zloirock.ru), 2025–2026 CoreJS Company (core-js.io). All rights reserved.",license:"https://github.com/zloirock/core-js/blob/v3.48.0/LICENSE",source:"https://github.com/zloirock/core-js"});var V,H,U=X.exports,$=U,J=function(e,t){return $[e]||($[e]=t||{})},Q=D,ee=Object,te=function(e){return ee(Q(e))},ne=te,oe=S({}.hasOwnProperty),re=Object.hasOwn||function(e,t){return oe(ne(e),t)},ie=S,ce=0,ae=Math.random(),ue=ie(1.1.toString),le=function(e){return"Symbol("+(void 0===e?"":e)+")_"+ue(++ce+ae,36)},se=c.navigator,fe=se&&se.userAgent,me=c,pe=fe?String(fe):"",de=me.process,he=me.Deno,ye=de&&de.versions||he&&he.version,ve=ye&&ye.v8;ve&&(H=(V=ve.split("."))[0]>0&&V[0]<4?1:+(V[0]+V[1])),!H&&pe&&(!(V=pe.match(/Edge\/(\d+)/))||V[1]>=74)&&(V=pe.match(/Chrome\/(\d+)/))&&(H=+V[1]);var ge=H,be=g,we=c.String,Oe=!!Object.getOwnPropertySymbols&&!be(function(){var e=Symbol("symbol detection");return!we(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&ge&&ge<41}),xe=Oe&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,_e=J,Se=re,Te=le,Pe=Oe,je=xe,Le=c.Symbol,Ee=_e("wks"),Me=je?Le.for||Le:Le&&Le.withoutSetter||Te,ke=function(e){return Se(Ee,e)||(Ee[e]=Pe&&Se(Le,e)?Le[e]:Me("Symbol."+e)),Ee[e]},Ae=s,Ce=String,ze=TypeError,Re=function(e){if(Ae(e))return e;throw new ze(Ce(e)+" is not an object")},De={},Ie=!g(function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}),Ye=Ie&&g(function(){return 42!==Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype}),Fe={},Xe=d,qe=!Ie&&!g(function(){return 7!==Object.defineProperty(Xe("div"),"a",{get:function(){return 7}}).a}),Be=b,Ge=Function.prototype.call,Ke=Be?Ge.bind(Ge):function(){return Ge.apply(Ge,arguments)},Ne=c,We=u,Ze=function(e,t){return arguments.length<2?(n=Ne[e],We(n)?n:void 0):Ne[e]&&Ne[e][t];var n},Ve=S({}.isPrototypeOf),He=Ze,Ue=u,$e=Ve,Je=Object,Qe=xe?function(e){return"symbol"==typeof e}:function(e){var t=He("Symbol");return Ue(t)&&$e(t.prototype,Je(e))},et=String,tt=u,nt=function(e){try{return et(e)}catch(e){return"Object"}},ot=TypeError,rt=function(e){if(tt(e))return e;throw new ot(nt(e)+" is not a function")},it=rt,ct=C,at=Ke,ut=u,lt=s,st=TypeError,ft=Ke,mt=s,pt=Qe,dt=function(e,t){var n=e[t];return ct(n)?void 0:it(n)},ht=function(e,t){var n,o;if("string"===t&&ut(n=e.toString)&&!lt(o=at(n,e)))return o;if(ut(n=e.valueOf)&&!lt(o=at(n,e)))return o;if("string"!==t&&ut(n=e.toString)&&!lt(o=at(n,e)))return o;throw new st("Can't convert object to primitive value")},yt=TypeError,vt=ke("toPrimitive"),gt=function(e,t){if(!mt(e)||pt(e))return e;var n,o=dt(e,vt);if(o){if(void 0===t&&(t="default"),n=ft(o,e,t),!mt(n)||pt(n))return n;throw new yt("Can't convert object to primitive value")}return void 0===t&&(t="number"),ht(e,t)},bt=Qe,wt=function(e){var t=gt(e,"string");return bt(t)?t:t+""},Ot=Ie,xt=qe,_t=Ye,St=Re,Tt=wt,Pt=TypeError,jt=Object.defineProperty,Lt=Object.getOwnPropertyDescriptor,Et="enumerable",Mt="configurable",kt="writable";Fe.f=Ot?_t?function(e,t,n){if(St(e),t=Tt(t),St(n),"function"==typeof e&&"prototype"===t&&"value"in n&&kt in n&&!n[kt]){var o=Lt(e,t);o&&o[kt]&&(e[t]=n.value,n={configurable:Mt in n?n[Mt]:o[Mt],enumerable:Et in n?n[Et]:o[Et],writable:!1})}return jt(e,t,n)}:jt:function(e,t,n){if(St(e),t=Tt(t),St(n),xt)try{return jt(e,t,n)}catch(e){}if("get"in n||"set"in n)throw new Pt("Accessors not supported");return"value"in n&&(e[t]=n.value),e};var At,Ct=Math.ceil,zt=Math.floor,Rt=Math.trunc||function(e){var t=+e;return(t>0?zt:Ct)(t)},Dt=function(e){var t=+e;return t!=t||0===t?0:Rt(t)},It=Dt,Yt=Math.max,Ft=Math.min,Xt=Dt,qt=Math.min,Bt=function(e){var t=Xt(e);return t>0?qt(t,9007199254740991):0},Gt=F,Kt=function(e,t){var n=It(e);return n<0?Yt(n+t,0):Ft(n,t)},Nt=function(e){return Bt(e.length)},Wt={indexOf:(At=!1,function(e,t,n){var o=Gt(e),r=Nt(o);if(0===r)return!At&&-1;var i,c=Kt(n,r);if(At&&t!=t){for(;r>c;)if((i=o[c++])!=i)return!0}else for(;r>c;c++)if((At||c in o)&&o[c]===t)return At||c||0;return!At&&-1})},Zt={},Vt=re,Ht=F,Ut=Wt.indexOf,$t=Zt,Jt=S([].push),Qt=function(e,t){var n,o=Ht(e),r=0,i=[];for(n in o)!Vt($t,n)&&Vt(o,n)&&Jt(i,n);for(;t.length>r;)Vt(o,n=t[r++])&&(~Ut(i,n)||Jt(i,n));return i},en=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],tn=Qt,nn=en,on=Object.keys||function(e){return tn(e,nn)},rn=Ie,cn=Ye,an=Fe,un=Re,ln=F,sn=on;De.f=rn&&!cn?Object.defineProperties:function(e,t){un(e);for(var n,o=ln(t),r=sn(t),i=r.length,c=0;i>c;)an.f(e,n=r[c++],o[n]);return e};var fn,mn=Ze("document","documentElement"),pn=le,dn=J("keys"),hn=function(e){return dn[e]||(dn[e]=pn(e))},yn=Re,vn=De,gn=en,bn=Zt,wn=mn,On=d,xn="prototype",_n="script",Sn=hn("IE_PROTO"),Tn=function(){},Pn=function(e){return"<"+_n+">"+e+"</"+_n+">"},jn=function(e){e.write(Pn("")),e.close();var t=e.parentWindow.Object;return e=null,t},Ln=function(){try{fn=new ActiveXObject("htmlfile")}catch(e){}var e,t,n;Ln="undefined"!=typeof document?document.domain&&fn?jn(fn):(t=On("iframe"),n="java"+_n+":",t.style.display="none",wn.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(Pn("document.F=Object")),e.close(),e.F):jn(fn);for(var o=gn.length;o--;)delete Ln[xn][gn[o]];return Ln()};bn[Sn]=!0;var En=Object.create||function(e,t){var n;return null!==e?(Tn[xn]=yn(e),n=new Tn,Tn[xn]=null,n[Sn]=e):n=Ln(),void 0===t?n:vn.f(n,t)},Mn=ke,kn=En,An=Fe.f,Cn=Mn("unscopables"),zn=Array.prototype;void 0===zn[Cn]&&An(zn,Cn,{configurable:!0,value:kn(null)});var Rn,Dn,In,Yn={},Fn=u,Xn=c.WeakMap,qn=Fn(Xn)&&/native code/.test(String(Xn)),Bn=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},Gn=Fe,Kn=Bn,Nn=Ie?function(e,t,n){return Gn.f(e,t,Kn(1,n))}:function(e,t,n){return e[t]=n,e},Wn=qn,Zn=c,Vn=s,Hn=Nn,Un=re,$n=U,Jn=hn,Qn=Zt,eo="Object already initialized",to=Zn.TypeError,no=Zn.WeakMap;if(Wn||$n.state){var oo=$n.state||($n.state=new no);oo.get=oo.get,oo.has=oo.has,oo.set=oo.set,Rn=function(e,t){if(oo.has(e))throw new to(eo);return t.facade=e,oo.set(e,t),t},Dn=function(e){return oo.get(e)||{}},In=function(e){return oo.has(e)}}else{var ro=Jn("state");Qn[ro]=!0,Rn=function(e,t){if(Un(e,ro))throw new to(eo);return t.facade=e,Hn(e,ro,t),t},Dn=function(e){return Un(e,ro)?e[ro]:{}},In=function(e){return Un(e,ro)}}var io={set:Rn,get:Dn,has:In,enforce:function(e){return In(e)?Dn(e):Rn(e,{})},getterFor:function(e){return function(t){var n;if(!Vn(t)||(n=Dn(t)).type!==e)throw new to("Incompatible receiver, "+e+" required");return n}}},co={},ao={},uo={}.propertyIsEnumerable,lo=Object.getOwnPropertyDescriptor,so=lo&&!uo.call({1:2},1);ao.f=so?function(e){var t=lo(this,e);return!!t&&t.enumerable}:uo;var fo=Ie,mo=Ke,po=ao,ho=Bn,yo=F,vo=wt,go=re,bo=qe,wo=Object.getOwnPropertyDescriptor;co.f=fo?wo:function(e,t){if(e=yo(e),t=vo(t),bo)try{return wo(e,t)}catch(e){}if(go(e,t))return ho(!mo(po.f,e,t),e[t])};var Oo={exports:{}},xo=Ie,_o=re,So=Function.prototype,To=xo&&Object.getOwnPropertyDescriptor,Po=_o(So,"name"),jo={PROPER:Po&&"something"===function(){}.name,CONFIGURABLE:Po&&(!xo||xo&&To(So,"name").configurable)},Lo=u,Eo=U,Mo=S(Function.toString);Lo(Eo.inspectSource)||(Eo.inspectSource=function(e){return Mo(e)});var ko=Eo.inspectSource,Ao=S,Co=g,zo=u,Ro=re,Do=Ie,Io=jo.CONFIGURABLE,Yo=ko,Fo=io.enforce,Xo=io.get,qo=String,Bo=Object.defineProperty,Go=Ao("".slice),Ko=Ao("".replace),No=Ao([].join),Wo=Do&&!Co(function(){return 8!==Bo(function(){},"length",{value:8}).length}),Zo=String(String).split("String"),Vo=Oo.exports=function(e,t,n){"Symbol("===Go(qo(t),0,7)&&(t="["+Ko(qo(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!Ro(e,"name")||Io&&e.name!==t)&&(Do?Bo(e,"name",{value:t,configurable:!0}):e.name=t),Wo&&n&&Ro(n,"arity")&&e.length!==n.arity&&Bo(e,"length",{value:n.arity});try{n&&Ro(n,"constructor")&&n.constructor?Do&&Bo(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var o=Fo(e);return Ro(o,"source")||(o.source=No(Zo,"string"==typeof t?t:"")),e};Function.prototype.toString=Vo(function(){return zo(this)&&Xo(this).source||Yo(this)},"toString");var Ho=Oo.exports,Uo=u,$o=Fe,Jo=Ho,Qo=G,er=function(e,t,n,o){o||(o={});var r=o.enumerable,i=void 0!==o.name?o.name:t;if(Uo(n)&&Jo(n,i,o),o.global)r?e[t]=n:Qo(t,n);else{try{o.unsafe?e[t]&&(r=!0):delete e[t]}catch(e){}r?e[t]=n:$o.f(e,t,{value:n,enumerable:!1,configurable:!o.nonConfigurable,writable:!o.nonWritable})}return e},tr={},nr=Qt,or=en.concat("length","prototype");tr.f=Object.getOwnPropertyNames||function(e){return nr(e,or)};var rr={};rr.f=Object.getOwnPropertySymbols;var ir,cr,ar,ur=Ze,lr=tr,sr=rr,fr=Re,mr=S([].concat),pr=ur("Reflect","ownKeys")||function(e){var t=lr.f(fr(e)),n=sr.f;return n?mr(t,n(e)):t},dr=re,hr=pr,yr=co,vr=Fe,gr=g,br=u,wr=/#|\.prototype\./,Or=function(e,t){var n=_r[xr(e)];return n===Tr||n!==Sr&&(br(t)?gr(t):!!t)},xr=Or.normalize=function(e){return String(e).replace(wr,".").toLowerCase()},_r=Or.data={},Sr=Or.NATIVE="N",Tr=Or.POLYFILL="P",Pr=Or,jr=c,Lr=co.f,Er=Nn,Mr=er,kr=G,Ar=function(e,t,n){for(var o=hr(t),r=vr.f,i=yr.f,c=0;c<o.length;c++){var a=o[c];dr(e,a)||n&&dr(n,a)||r(e,a,i(t,a))}},Cr=Pr,zr=!g(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}),Rr=re,Dr=u,Ir=te,Yr=zr,Fr=hn("IE_PROTO"),Xr=Object,qr=Xr.prototype,Br=Yr?Xr.getPrototypeOf:function(e){var t=Ir(e);if(Rr(t,Fr))return t[Fr];var n=t.constructor;return Dr(n)&&t instanceof n?n.prototype:t instanceof Xr?qr:null},Gr=g,Kr=u,Nr=s,Wr=Br,Zr=er,Vr=ke("iterator"),Hr=!1;[].keys&&("next"in(ar=[].keys())?(cr=Wr(Wr(ar)))!==Object.prototype&&(ir=cr):Hr=!0),(!Nr(ir)||Gr(function(){var e={};return ir[Vr].call(e)!==e}))&&(ir={}),Kr(ir[Vr])||Zr(ir,Vr,function(){return this});var Ur={IteratorPrototype:ir,BUGGY_SAFARI_ITERATORS:Hr},$r=Fe.f,Jr=re,Qr=ke("toStringTag"),ei=function(e,t,n){e&&!n&&(e=e.prototype),e&&!Jr(e,Qr)&&$r(e,Qr,{configurable:!0,value:t})},ti=Ur.IteratorPrototype,ni=En,oi=Bn,ri=ei,ii=Yn,ci=function(){return this},ai=S,ui=rt,li=s,si=function(e){return li(e)||null===e},fi=String,mi=TypeError,pi=function(e,t,n){try{return ai(ui(Object.getOwnPropertyDescriptor(e,t)[n]))}catch(e){}},di=s,hi=D,yi=function(e){if(si(e))return e;throw new mi("Can't set "+fi(e)+" as a prototype")},vi=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=pi(Object.prototype,"__proto__","set"))(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return hi(n),yi(o),di(n)?(t?e(n,o):n.__proto__=o,n):n}}():void 0),gi=function(e,t){var n,o,r,i,c,a=e.target,u=e.global,l=e.stat;if(n=u?jr:l?jr[a]||kr(a,{}):jr[a]&&jr[a].prototype)for(o in t){if(i=t[o],r=e.dontCallGetSet?(c=Lr(n,o))&&c.value:n[o],!Cr(u?o:a+(l?".":"#")+o,e.forced)&&void 0!==r){if(typeof i==typeof r)continue;Ar(i,r)}(e.sham||r&&r.sham)&&Er(i,"sham",!0),Mr(n,o,i,e)}},bi=Ke,wi=u,Oi=function(e,t,n,o){var r=t+" Iterator";return e.prototype=ni(ti,{next:oi(+!o,n)}),ri(e,r,!1),ii[r]=ci,e},xi=Br,_i=vi,Si=ei,Ti=Nn,Pi=er,ji=Yn,Li=jo.PROPER,Ei=jo.CONFIGURABLE,Mi=Ur.IteratorPrototype,ki=Ur.BUGGY_SAFARI_ITERATORS,Ai=ke("iterator"),Ci="keys",zi="values",Ri="entries",Di=function(){return this},Ii=F,Yi=function(e){zn[Cn][e]=!0},Fi=Yn,Xi=io,qi=Fe.f,Bi=function(e,t,n,o,r,i,c){Oi(n,t,o);var a,u,l,s=function(e){if(e===r&&h)return h;if(!ki&&e&&e in p)return p[e];switch(e){case Ci:case zi:case Ri:return function(){return new n(this,e)}}return function(){return new n(this)}},f=t+" Iterator",m=!1,p=e.prototype,d=p[Ai]||p["@@iterator"]||r&&p[r],h=!ki&&d||s(r),y="Array"===t&&p.entries||d;if(y&&(a=xi(y.call(new e)))!==Object.prototype&&a.next&&(xi(a)!==Mi&&(_i?_i(a,Mi):wi(a[Ai])||Pi(a,Ai,Di)),Si(a,f,!0)),Li&&r===zi&&d&&d.name!==zi&&(Ei?Ti(p,"name",zi):(m=!0,h=function(){return bi(d,this)})),r)if(u={values:s(zi),keys:i?h:s(Ci),entries:s(Ri)},c)for(l in u)(ki||m||!(l in p))&&Pi(p,l,u[l]);else gi({target:t,proto:!0,forced:ki||m},u);return p[Ai]!==h&&Pi(p,Ai,h,{name:r}),ji[t]=h,u},Gi=function(e,t){return{value:e,done:t}},Ki=Ie,Ni="Array Iterator",Wi=Xi.set,Zi=Xi.getterFor(Ni),Vi=Bi(Array,"Array",function(e,t){Wi(this,{type:Ni,target:Ii(e),index:0,kind:t})},function(){var e=Zi(this),t=e.target,n=e.index++;if(!t||n>=t.length)return e.target=null,Gi(void 0,!0);switch(e.kind){case"keys":return Gi(n,!1);case"values":return Gi(t[n],!1)}return Gi([n,t[n]],!1)},"values"),Hi=Fi.Arguments=Fi.Array;if(Yi("keys"),Yi("values"),Yi("entries"),Ki&&"values"!==Hi.name)try{qi(Hi,"name",{value:"values"})}catch(e){}var Ui=c,$i={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Ji=v,Qi=Vi,ec=Nn,tc=ei,nc=ke("iterator"),oc=Qi.values,rc=function(e,t){if(e){if(e[nc]!==oc)try{ec(e,nc,oc)}catch(t){e[nc]=oc}if(tc(e,t,!0),$i[t])for(var n in Qi)if(e[n]!==Qi[n])try{ec(e,n,Qi[n])}catch(t){e[n]=Qi[n]}}};for(var ic in $i)rc(Ui[ic]&&Ui[ic].prototype,ic);rc(Ji,"DOMTokenList");var cc="All functions must be called from the client side.",ac="Use of the non-standard 'zoom' mode is discouraged. Please use 'transform' instead to increase performance and avoid layout shifting.",uc="The minimum scale value may not exceed the maximum scale value.",lc="The minimum scale value must be a number.",sc="The minimum scale value may not be less than 0.001.",fc="The minimum scale value may not be greater than 1.",mc="The maximum scale value must be a number.",pc="The maximum scale value may not be less than 1.",dc="The maximum scale value may not be greater than 2500.",hc="The speed multiplier must be a number.",yc="The speed multiplier may not be less than 0.1.",vc="The speed multiplier may not be greater than 10.",gc="High zoom levels may impact performance.",bc="Something went wrong (detach_listener)...\n\nPlease submit an issue at https://github.com/nsqx/pinch-zoom and include relevant details.",wc="Target element must have a parent container.",Oc="Target must be an element.",xc="onZoom must be a function.",_c="onPan must be a function.";function Sc(e){console.error("%c@nsqx/pinch-zoom:%c "+e,"padding:1px 4px;border-width:2px;border-color:#fa4549;border-style:solid;border-radius:4px;","")}function Tc(e){console.error("%c@nsqx/pinch-zoom:%c "+e,"","")}function Pc(e){console.warn("%c@nsqx/pinch-zoom:%c "+e,"","")}function jc(e){console.debug("%c@nsqx/pinch-zoom:%c "+e,"color:#218bff","")}function Lc(e,t,n,o){Object.prototype.hasOwnProperty.call(t,n)||(t[n]=e.style[n],e.style[n]=o)}function Ec(e,t){for(var n in t)void 0!==t[n]?e.style[n]=t[n]:e.style[n]=""}function Mc(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return e.addEventListener(t,n,o),function(){e.removeEventListener(t,n,o)}}function kc(e){try{e()}catch(e){Sc(bc),console.error(e)}}function Ac(e){if(Array.isArray(e)){for(var t of e)kc(t);e.length=0}}function Cc(){return{success:!1,scale:1,onZoom(){},viewportX:0,viewportY:0,mode:"transform",min:1,max:1,speed:0,hinted:!1,kbdEvents:!1,smooth:!0,panMode:"none",onPan(){},target:null,container:null,isRtl:!1,reset(){},destroy(){}}}var zc={min:1,max:4,speed:1,mode:"transform",hinted:!1,kbdEvents:!1,panMode:"none"};var Rc={mode:e=>"string"==typeof e&&"zoom"===e?(Pc(ac),"zoom"):"transform",smooth:e=>"boolean"==typeof e?e:!!window.matchMedia&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches,min:e=>"number"!=typeof e?(Tc(lc),1):e>1?(Tc(fc),1):e<.001?(Tc(sc),.001):e,max:e=>"number"!=typeof e?(Tc(mc),4):(e>=1e3&&Pc(gc),e<1?(Tc(pc),1):e>2500?(Tc(dc),2500):e),min_max:(e,t)=>e>t?(Tc(uc),[t,e]):[e,t],speed:e=>"number"!=typeof e?(Tc(hc),.01):e>10?(Tc(vc),.1):e<.1?(Tc(yc),.001):e/100};e.attachPinchZoom=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("undefined"==typeof window||"undefined"==typeof document)return Sc(cc),Cc();if(!(e&&e instanceof Element))return Sc(Oc),Cc();var n="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(window):e=>setTimeout(()=>e(Date.now()),17),r=function(e){return e.mode=Rc.mode(e.mode),e.smooth=Rc.smooth(e.smooth),[e.min,e.max]=Rc.min_max(e.min,e.max),e.min=Rc.min(e.min),e.max=Rc.max(e.max),e.speed=Rc.speed(e.speed),e}(o(o({},zc),t)),i=e.parentElement;if(!i)return Sc(wc),Cc();var c=r.panMode,a={};Lc(i,a,"overflow","auto"),Lc(i,a,"touchAction","pan-x pan-y"),Lc(i,a,"position","relative");var u="rtl"===window.getComputedStyle(i).direction,l={};Lc(e,l,"backfaceVisibility","hidden"),Lc(e,l,"contain","layout paint"),Lc(e,l,"position","absolute"),r.hinted&&("zoom"===r.mode?Lc(e,l,"willChange","zoom"):Lc(e,l,"willChange","transform"));var s,f,m=1,p=1,d=0,h=0,y=0,v=0,g=0,b=0,w=!0,O=!1,x=!1,_={};function S(){_.rect=i.getBoundingClientRect(),_.element_ow=e.offsetWidth,_.element_oh=e.offsetHeight,_.element_ol=e.offsetLeft,_.element_ot=e.offsetTop,_.container_ct=i.clientTop,_.container_cl=i.clientLeft,_.container_cw=i.clientWidth,_.container_ch=i.clientHeight,_.scroll_left=u?-i.scrollLeft:i.scrollLeft,_.scroll_top=i.scrollTop,y=_.element_ow*m<_.container_cw?u?-(_.container_cw-_.element_ow*m)/2:(_.container_cw-_.element_ow*m)/2:0,v=_.element_oh*m<_.container_ch?(_.container_ch-_.element_oh*m)/2:0}function T(){"zoom"===r.mode?e.style.zoom=m:(e.style.transformOrigin="".concat(u?"100%":"0"," 0"),e.style.transform="translate(".concat(y,"px, ").concat(v,"px) scale(").concat(m,")")),i.scrollLeft=u?-_.scroll_left:_.scroll_left,i.scrollTop=_.scroll_top,"function"==typeof r.onZoom&&r.onZoom({scale:m,x:_.scroll_left,y:_.scroll_top}),x=!1}function P(){S(),T()}function j(e){g=e.x,b=e.y,p=Math.min(Math.max(r.min,p-p*(e.delta*r.speed)),r.max),x||(x=!0,n(L))}function L(){var e=p-m;Math.abs(e)>.001&&r.smooth&&"zoom"!==r.mode?(E(.15,e),n(L)):(E(1,e),x=!1)}function E(e,t){d=g-_.rect.left-_.element_ol-_.container_cl-y,h=b-_.rect.top-_.element_ot-_.container_ct-v;var n=(d+_.scroll_left)/m,o=(h+_.scroll_top)/m;m+=t*e,_.element_ow*m<_.container_cw?(y=u?-(_.container_cw-_.element_ow*m)/2:(_.container_cw-_.element_ow*m)/2,_.scroll_left=0):(y=0,_.scroll_left=n*m-d-y),_.element_oh*m<_.container_ch?(v=(_.container_ch-_.element_oh*m)/2,_.scroll_top=0):(v=0,_.scroll_top=o*m-h-v),T()}P();var M=[];M.push(Mc(i,"wheel",function(e){O||(O=!0,S()),clearTimeout(s),e.ctrlKey&&(e.preventDefault(),e.stopImmediatePropagation()),e.ctrlKey&&w?j({delta:"deltaX"in e?Math.abs(e.deltaY)<90&&e.deltaY%1!=0?e.deltaY*[1,28,500][e.deltaMode||0]:e.deltaY*[1,28,500][e.deltaMode||0]*.25:"wheelDeltaX"in e?.25*e.wheelDeltaY/-3:.25*e.wheelDelta/-3,x:u?window.innerWidth-e.clientX:e.clientX,y:e.clientY}):w=!1,s=setTimeout(function(){S(),w=!0,O=!1},100)},{passive:!1})),M.push(Mc(i,"scroll",function(){f&&clearTimeout(f),f=setTimeout(S,100)},{passive:!0}));var k=[];function A(e){(e.ctrlKey||e.metaKey)&&("0"===e.key||"Digit0"===e.code||48===e.keyCode?j({delta:(m-1)/m/r.speed,x:d,y:h,rect:i.getBoundingClientRect(),scroll_left:i.scrollLeft,scroll_top:i.scrollTop}):"="===e.key||"Equal"===e.code?(e.preventDefault(),j({delta:-50/m,x:i.clientWidth/2,y:i.clientHeight/2,rect:i.getBoundingClientRect(),scroll_left:i.scrollLeft,scroll_top:i.scrollTop})):"-"!==e.key&&"Minus"!==e.code||(e.preventDefault(),j({delta:50/m,x:i.clientWidth/2,y:i.clientHeight/2,rect:i.getBoundingClientRect(),scroll_left:i.scrollLeft,scroll_top:i.scrollTop})))}r.kbdEvents&&k.push(Mc(document,"keydown",A,{passive:!1}));var C=!1,z=!1,R=!1,D=!1,I=-1!==c.indexOf("middle"),Y=-1!==c.indexOf("right"),F={x:0,y:0},X=[],q=[],B=[];function G(){i.style.cursor=z&&I||D&&Y||C&&R?"grabbing":C?"grab":""}function K(e){!(-1!==c.indexOf("ctrl")&&e.ctrlKey||-1!==c.indexOf("shift")&&e.shiftKey||-1!==c.indexOf("alt")&&e.altKey||-1!==c.indexOf("meta")&&e.metaKey)&&C&&(C=!1,G(),Ac(X))}function N(e){C=!1,z=!1,G(),Ac(X)}function W(e){(-1!==c.indexOf("ctrl")&&e.ctrlKey||-1!==c.indexOf("shift")&&e.shiftKey||-1!==c.indexOf("alt")&&e.altKey||-1!==c.indexOf("meta")&&e.metaKey)&&!C&&(C=!0,G(),X.push(Mc(document,"keyup",K)),X.push(Mc(window,"blur",N)))}function Z(e){(C&&0===e.button||I&&1===e.button||Y&&2===e.button)&&(e.preventDefault(),1===e.button?z=!0:2===e.button?D=!0:0===e.button&&(R=!0),G(),S(),F.x=_.scroll_left+e.clientX,F.y=_.scroll_top+e.clientY,q.push(Mc(document,"mousemove",V)),q.push(Mc(document,"mouseup",H)))}function V(e){(C&&R||z&&-1!==c.indexOf("middle")||D&&-1!==c.indexOf("right"))&&(i.scrollLeft=F.x-e.clientX,i.scrollTop=F.y-e.clientY,S(),"function"==typeof r.onPan&&r.onPan({scale:m,x:_.scroll_left,y:_.scroll_top}))}function H(e){1===e.button?z=!1:2===e.button?D=!1:0===e.button&&(R=!1),G(),Ac(q)}function U(e){-1!==c.indexOf("right")&&e.preventDefault()}(-1!==c.indexOf("ctrl")||-1!==c.indexOf("shift")||-1!==c.indexOf("meta")||-1!==c.indexOf("alt")||I||Y)&&(B.push(Mc(i,"mousedown",Z)),B.push(Mc(document,"keydown",W,{passive:!0})),B.push(Mc(i,"contextmenu",U)));var $,J,Q,ee,te=0,ne=!1,oe=[];return"maxTouchPoints"in navigator&&navigator.maxTouchPoints>0&&(oe.push(Mc(i,"touchstart",function(e){e.touches&&e.touches.length>=2&&(ne=!0,S(),te=Math.sqrt(Math.pow(e.touches[0].pageX-e.touches[1].pageX,2)+Math.pow(e.touches[0].pageY-e.touches[1].pageY,2)),$=(e.touches[0].pageX+e.touches[1].pageX)/2,J=(e.touches[0].pageY+e.touches[1].pageY)/2)},{passive:!0})),oe.push(Mc(i,"touchmove",function(e){if(e.touches&&e.touches.length>=2){var t=Math.sqrt(Math.pow(e.touches[0].pageX-e.touches[1].pageX,2)+Math.pow(e.touches[0].pageY-e.touches[1].pageY,2));$=(e.touches[0].pageX+e.touches[1].pageX)/2,J=(e.touches[0].pageY+e.touches[1].pageY)/2,j({delta:(te-t)/2,x:$,y:J}),te=t}},{passive:!0})),oe.push(Mc(i,"touchend",function(e){ne&&(ne=!1,j({delta:0,x:$,y:J}))},{passive:!0}))),M.push(Mc(window,"resize",P)),"complete"!==document.readyState&&M.push(Mc(window,"load",P)),window.ResizeObserver?(ee=new ResizeObserver(function(e){e.length&&(clearTimeout(Q),Q=setTimeout(P,17))})).observe(e):(ee=new MutationObserver(function(){clearTimeout(Q),Q=setTimeout(P,100)})).observe(e,{childList:!0,subtree:!0,characterData:!0}),jc("Attached successfully."),jc("Options:\n\nmode\t\t".concat(r.mode,"\nmin\t\t\t").concat(r.min,"\nmax\t\t\t").concat(r.max,"\nspeed\t\t").concat(100*r.speed,"\nsmooth\t\t").concat(r.smooth,"\nkbdEvents\t").concat(r.kbdEvents,"\nhinted\t\t").concat(r.hinted,"\npanMode\t\t").concat(Array.isArray(r.panMode)?r.panMode.join(" "):r.panMode,"\nrtl\t\t\t").concat(u)),{get success(){return!0},get scale(){return m},set scale(e){j({delta:(m-e)/m/r.speed,x:d,y:h,rect:i.getBoundingClientRect(),scroll_left:i.scrollLeft,scroll_top:i.scrollTop})},get onZoom(){return r.onZoom},set onZoom(e){"function"==typeof e?r.onZoom=e:Tc(xc)},get viewportX(){return d},get viewportY(){return h},get x(){return u?i.scrollWidth-i.clientWidth-i.scrollLeft:i.scrollLeft},set x(e){if("number"==typeof e)if(u){var t=i.scrollWidth-i.clientWidth,n=Math.min(t,Math.max(0,e));i.scrollLeft=t-n,_.scroll_left=n}else i.scrollLeft=e,_.scroll_left=e},get y(){return i.scrollTop},set y(e){"number"==typeof e&&(i.scrollTop=e,_.scroll_top=e)},get mode(){return r.mode},set mode(t){"string"==typeof t&&"zoom"===t?(r.mode="zoom",Pc(ac),e.style.zoom=m,e.style.transform=""):(r.mode="transform",e.style.transform="scale(".concat(m,")"),e.style.zoom=""),P()},get min(){return r.min},set min(e){r.min=Rc.min(e),[r.min,r.max]=Rc.min_max(r.min,r.max),P()},get max(){return r.max},set max(e){r.max=Rc.max(e),[r.min,r.max]=Rc.min_max(r.min,r.max),P()},get speed(){return 100*r.speed},set speed(e){r.speed=Rc.speed(e)},get hinted(){return r.hinted},set hinted(t){r.hinted=!!t,r.hinted&&("zoom"===r.mode?e.style.willChange="zoom":e.style.willChange="transform")},get kbdEvents(){return r.kbdEvents},set kbdEvents(e){r.kbdEvents&&!e?(r.kbdEvents=!1,Ac(k)):!r.kbdEvents&&e&&(r.kbdEvents=!0,k.push(Mc(document,"keydown",A,{passive:!1})))},get smooth(){return r.smooth},set smooth(e){r.smooth=Rc.smooth(e),r.smooth||(m=p,P())},get panMode(){return c},set panMode(e){Ac(X),Ac(q),Ac(B),C=!1,R=!1,z=!1,D=!1,r.panMode=e,c=r.panMode,I=-1!==c.indexOf("middle"),Y=-1!==c.indexOf("right"),(-1!==c.indexOf("ctrl")||-1!==c.indexOf("shift")||-1!==c.indexOf("meta")||-1!==c.indexOf("alt")||I||Y)&&(B.push(Mc(i,"mousedown",Z)),B.push(Mc(document,"keydown",W,{passive:!0})),B.push(Mc(i,"contextmenu",U))),G()},get onPan(){return r.onPan},set onPan(e){"function"==typeof e?r.onPan=e:Tc(_c)},get target(){return e},get container(){return i},get isRtl(){return u},get reset(){return function(){j({delta:(m-1)/m/r.speed,x:d,y:h,rect:i.getBoundingClientRect(),scroll_left:i.scrollLeft,scroll_top:i.scrollTop})}},get destroy(){return function(){clearTimeout(s),clearTimeout(f),clearTimeout(Q),Ac(M),Ac(k),Ac(X),Ac(q),Ac(B),Ac(oe),ee&&(ee.disconnect(),ee=null),Ec(i,a),i.style.cursor="",Ec(e,l),"zoom"===r.mode?e.style.zoom="":e.style.transform="",i.scrollTop/=m,i.scrollLeft/=m}}}},e.pinchZoomLockViewport=function(){var{useMeta:e=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if("undefined"==typeof window||"undefined"==typeof document)return Tc(cc),{unlock(){}};function t(e){e.ctrlKey&&e.preventDefault()}window.addEventListener("wheel",t,{passive:!1}),document.documentElement.style.touchAction="pan-x pan-y";var n=null,o=null;return e&&(null!==document.querySelector("meta[name=viewport]")?(n=document.querySelector("meta[name=viewport]").content,document.querySelector("meta[name=viewport]").content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content"):0!==document.getElementsByTagName("head").length&&((o=document.getElementsByTagName("head")[0].appendChild(document.createElement("meta"))).name="viewport",o.content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content")),{get unlock(){return function(){window.removeEventListener("wheel",t),document.documentElement.style.touchAction="",e&&(null!==n?document.querySelector("meta[name=viewport]").content=n:o.parentElement.removeChild(o))}}}}});
|
|
2
|
+
//# sourceMappingURL=index.legacy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.legacy.js","sources":["../node_modules/core-js/internals/global-this.js","../node_modules/core-js/internals/is-callable.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/dom-token-list-prototype.js","../node_modules/core-js/internals/fails.js","../node_modules/core-js/internals/function-bind-native.js","../node_modules/core-js/internals/function-uncurry-this.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/is-null-or-undefined.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/define-global-property.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/environment-v8-version.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/to-object.js","../node_modules/core-js/internals/has-own-property.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/environment-user-agent.js","../node_modules/core-js/internals/symbol-constructor-detection.js","../node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/core-js/internals/well-known-symbol.js","../node_modules/core-js/internals/an-object.js","../node_modules/core-js/internals/descriptors.js","../node_modules/core-js/internals/v8-prototype-define-bug.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/function-call.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/object-is-prototype-of.js","../node_modules/core-js/internals/is-symbol.js","../node_modules/core-js/internals/try-to-string.js","../node_modules/core-js/internals/a-callable.js","../node_modules/core-js/internals/get-method.js","../node_modules/core-js/internals/ordinary-to-primitive.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/to-property-key.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/math-trunc.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/to-integer-or-infinity.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/length-of-array-like.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/object-keys.js","../node_modules/core-js/internals/object-define-properties.js","../node_modules/core-js/internals/html.js","../node_modules/core-js/internals/object-create.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/add-to-unscopables.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/iterators.js","../node_modules/core-js/internals/weak-map-basic-detection.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/function-name.js","../node_modules/core-js/internals/inspect-source.js","../node_modules/core-js/internals/make-built-in.js","../node_modules/core-js/internals/define-built-in.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/iterators-core.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/export.js","../node_modules/core-js/internals/correct-prototype-getter.js","../node_modules/core-js/internals/object-get-prototype-of.js","../node_modules/core-js/internals/set-to-string-tag.js","../node_modules/core-js/internals/iterator-create-constructor.js","../node_modules/core-js/internals/function-uncurry-this-accessor.js","../node_modules/core-js/internals/is-possible-prototype.js","../node_modules/core-js/internals/a-possible-prototype.js","../node_modules/core-js/internals/object-set-prototype-of.js","../node_modules/core-js/internals/iterator-define.js","../node_modules/core-js/modules/es.array.iterator.js","../node_modules/core-js/internals/create-iter-result-object.js","../node_modules/core-js/modules/web.dom-collections.iterator.js","../node_modules/core-js/internals/dom-iterables.js","../src/dx.js","../src/helpers.js","../src/options.js","../src/index.js"],"sourcesContent":["'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.48.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2013–2025 Denis Pushkarev (zloirock.ru), 2025–2026 CoreJS Company (core-js.io). All rights reserved.',\n license: 'https://github.com/zloirock/core-js/blob/v3.48.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.1.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n activeXDocument = null;\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] === undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n return isObject(argument) || argument === null;\n};\n","'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (isPossiblePrototype(argument)) return argument;\n throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n requireObjectCoercible(O);\n aPossiblePrototype(proto);\n if (!isObject(O)) return O;\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];\n\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n }\n\n return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = null;\n return createIterResultObject(undefined, true);\n }\n switch (state.kind) {\n case 'keys': return createIterResultObject(index, false);\n case 'values': return createIterResultObject(target[index], false);\n } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n setToStringTag(CollectionPrototype, COLLECTION_NAME, true);\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","'use strict';\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","export const messages = {\n 'ssr': 'All functions must be called from the client side.',\n 'warn-mode': 'Use of the non-standard \\'zoom\\' mode is discouraged. Please use \\'transform\\' instead to increase performance and avoid layout shifting.',\n 'min-max': 'The minimum scale value may not exceed the maximum scale value.',\n 'min-NaN': 'The minimum scale value must be a number.',\n 'min<': 'The minimum scale value may not be less than 0.001.',\n 'min>': 'The minimum scale value may not be greater than 1.',\n 'max-NaN': 'The maximum scale value must be a number.',\n 'max<': 'The maximum scale value may not be less than 1.',\n 'max>': 'The maximum scale value may not be greater than 2500.',\n 'speed-NaN': 'The speed multiplier must be a number.',\n 'speed<': 'The speed multiplier may not be less than 0.1.',\n 'speed>': 'The speed multiplier may not be greater than 10.',\n 'warn-high-zoom': 'High zoom levels may impact performance.',\n 'crit-detach-listener': 'Something went wrong (detach_listener)...\\n\\nPlease submit an issue at https://github.com/nsqx/pinch-zoom and include relevant details.',\n 'parent-element': 'Target element must have a parent container.',\n 'target-element': 'Target must be an element.',\n 'onZoom-type': 'onZoom must be a function.',\n 'onPan-type': 'onPan must be a function.'\n}\n\n\nexport function _fatal(msg) {\n console.error('%c@nsqx/pinch-zoom:%c ' + msg, 'padding:1px 4px;border-width:2px;border-color:#fa4549;border-style:solid;border-radius:4px;', '');\n}\nexport function _error(msg) {\n console.error('%c@nsqx/pinch-zoom:%c ' + msg, '', '');\n}\nexport function _warn(msg) {\n console.warn('%c@nsqx/pinch-zoom:%c ' + msg, '', '');\n}\nexport function _log(msg) {\n console.log('%c@nsqx/pinch-zoom:%c ' + msg, 'color:#218bff', '');\n}\nexport function _debug(msg) {\n console.debug('%c@nsqx/pinch-zoom:%c ' + msg, 'color:#218bff', '');\n}","import { messages, _fatal, _error, _warn, _log } from './dx';\n\n\nexport function set_style(target, resets, name, value) {\n if (!Object.prototype.hasOwnProperty.call(resets, name)) {\n resets[name] = target.style[name];\n target.style[name] = value;\n }\n}\nexport function reset_styles(target, resets) {\n for (let prop in resets)\n if (resets[prop] !== undefined) {\n target.style[prop] = resets[prop];\n } else {\n target.style[prop] = '';\n }\n}\n\nexport function attach_listener(target, event, f, options = {}) {\n target.addEventListener(event, f, options);\n return function () {\n target.removeEventListener(event, f, options);\n };\n}\nexport function detach_listener(detach) {\n try {\n detach();\n } catch (ex) {\n _fatal(messages['crit-detach-listener']);\n console.error(ex);\n }\n}\nexport function detach_all_listeners(handles) {\n if (!Array.isArray(handles)) return;\n for (let detach of handles) {\n detach_listener(detach);\n }\n handles.length = 0;\n}","import { messages, _error, _warn, _log } from './dx';\n\n\nexport function empty_controller() {\n return {\n success: false,\n scale: 1,\n onZoom() {},\n viewportX: 0,\n viewportY: 0,\n mode: 'transform',\n min: 1,\n max: 1,\n speed: 0,\n hinted: false,\n kbdEvents: false,\n smooth: true,\n panMode: 'none',\n onPan() {},\n target: null,\n container: null,\n isRtl: false,\n reset() {},\n destroy() {},\n };\n}\n\nexport const option_defaults = {\n min: 1,\n max: 4,\n speed: 1,\n mode: 'transform',\n hinted: false,\n kbdEvents: false,\n panMode: 'none',\n}\n\nexport function normalize_options(opts) {\n opts.mode = set_normalize.mode(opts.mode);\n opts.smooth = set_normalize.smooth(opts.smooth);\n [opts.min, opts.max] = set_normalize.min_max(opts.min, opts.max);\n opts.min = set_normalize.min(opts.min);\n opts.max = set_normalize.max(opts.max);\n opts.speed = set_normalize.speed(opts.speed);\n return opts;\n}\n\nexport const set_normalize = {\n mode(use_mode) {\n if (typeof use_mode === 'string' && use_mode === 'zoom') {\n _warn(messages['warn-mode']);\n return 'zoom';\n } else {\n return 'transform';\n }\n },\n smooth(use_smooth) {\n return typeof use_smooth === 'boolean'\n ? use_smooth\n : (window.matchMedia ? !window.matchMedia('(prefers-reduced-motion: reduce)').matches : false);\n },\n min(use_min) {\n if (typeof use_min !== 'number') {\n _error(messages['min-NaN']);\n return 1\n };\n if (use_min > 1) {\n _error(messages['min>']);\n return 1;\n } else if (use_min < 0.001) {\n _error(messages['min<']);\n return 0.001;\n } else {\n return use_min;\n }\n },\n max(use_max) {\n if (typeof use_max !== 'number') {\n _error(messages['max-NaN']);\n return 4;\n };\n if (use_max >= 1000) {\n _warn(messages['warn-high-zoom']);\n }\n if (use_max < 1) {\n _error(messages['max<']);\n return 1;\n } else if (use_max > 2500) {\n _error(messages['max>']);\n return 2500;\n } else {\n return use_max;\n }\n },\n min_max(use_min, use_max) {\n if (use_min > use_max) {\n _error(messages['min-max']);\n return [use_max, use_min];\n } else {\n return [use_min, use_max];\n }\n },\n speed(use_speed) {\n if (typeof use_speed !== 'number') {\n _error(messages['speed-NaN']);\n return 1 / 100;\n };\n if (use_speed > 10) {\n _error(messages['speed>']);\n return 10 / 100;\n } else if (use_speed < 0.1) {\n _error(messages['speed<']);\n return 0.1 / 100;\n } else {\n return use_speed / 100;\n }\n }\n}","import { messages, _fatal, _error, _warn, _debug } from './dx';\nimport { set_style, reset_styles, attach_listener, detach_all_listeners } from './helpers';\nimport { empty_controller, normalize_options, option_defaults, set_normalize } from './options';\n\n// ---\n\n/** @typedef {import('../index').PinchZoomOptions} PinchZoomOptions */\n/** @typedef {import('../index').PinchZoomController} PinchZoomController */\n\n/**\n * Attach pinch-zoom functionality to an element\n * @param {HTMLElement} element --- The target element to attach zoom functionality\n * @param {PinchZoomOptions} [options] --- Configuration options\n * @returns {PinchZoomController}\n */\nexport function attachPinchZoom(element, options = {}) {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n _fatal(messages['ssr']);\n return empty_controller();\n }\n\n if (!(element && element instanceof Element)) {\n _fatal(messages['target-element']);\n return empty_controller();\n }\n\n const rAF = (function () {\n if (typeof requestAnimationFrame === 'function') {\n return requestAnimationFrame.bind(window);\n }\n return (f) => setTimeout(() => f(Date.now()), 17);\n })();\n\n // --- normalize options\n\n const opts = normalize_options({\n ...option_defaults,\n ...options,\n });\n const container = element.parentElement;\n if (!container) {\n _fatal(messages['parent-element']);\n return empty_controller();\n }\n\n let pan_mode = opts.panMode;\n\n // container.classList.add('pinch-zoom-container'); // (unused; selector)\n let resets_container = {};\n set_style(container, resets_container, 'overflow', 'auto');\n set_style(container, resets_container, 'touchAction', 'pan-x pan-y');\n set_style(container, resets_container, 'position', 'relative');\n\n let is_rtl = window.getComputedStyle(container).direction === 'rtl';\n\n let resets_element = {};\n // element.classList.add('pinch-zoom-content'); // (unused; selector)\n set_style(element, resets_element, 'backfaceVisibility', 'hidden'); // perf\n set_style(element, resets_element, 'contain', 'layout paint'); // perf\n set_style(element, resets_element, 'position', 'absolute');\n if (opts.hinted)\n if (opts.mode === 'zoom') {\n set_style(element, resets_element, 'willChange', 'zoom');\n } else {\n set_style(element, resets_element, 'willChange', 'transform');\n }\n\n // --- setup\n\n let scale = 1;\n let target_scale = 1;\n let m_x = 0;\n let m_y = 0;\n let translate_x = 0;\n let translate_y = 0;\n let target_x = 0;\n let target_y = 0;\n\n let use_zoom = true;\n let is_wheel_event = false;\n let wheel_debounce_timout, scroll_debounce_timout;\n let _paint_queue = false;\n\n let cached_metrics = {};\n\n function update_cached_metrics() {\n cached_metrics.rect = container.getBoundingClientRect();\n cached_metrics.element_ow = element.offsetWidth;\n cached_metrics.element_oh = element.offsetHeight;\n cached_metrics.element_ol = element.offsetLeft;\n cached_metrics.element_ot = element.offsetTop;\n cached_metrics.container_ct = container.clientTop;\n cached_metrics.container_cl = container.clientLeft;\n cached_metrics.container_cw = container.clientWidth;\n cached_metrics.container_ch = container.clientHeight;\n cached_metrics.scroll_left = is_rtl ? -container.scrollLeft : container.scrollLeft;\n cached_metrics.scroll_top = container.scrollTop;\n if (cached_metrics.element_ow * scale < cached_metrics.container_cw) {\n translate_x = is_rtl ? -(cached_metrics.container_cw - cached_metrics.element_ow * scale) / 2 : (cached_metrics.container_cw - cached_metrics.element_ow * scale) / 2;\n } else {\n translate_x = 0;\n }\n if (cached_metrics.element_oh * scale < cached_metrics.container_ch) {\n translate_y = (cached_metrics.container_ch - cached_metrics.element_oh * scale) / 2;\n } else {\n translate_y = 0;\n }\n }\n\n function _paint() {\n if (opts.mode === 'zoom') {\n element.style.zoom = scale;\n } else {\n element.style.transformOrigin = `${is_rtl ? '100%' : '0'} 0`;\n element.style.transform = `translate(${translate_x}px, ${translate_y}px) scale(${scale})`;\n }\n\n // rtl logic tested on latest firefox, chrome, and edge versions only\n container.scrollLeft = is_rtl ? -cached_metrics.scroll_left : cached_metrics.scroll_left;\n container.scrollTop = cached_metrics.scroll_top;\n if (typeof opts.onZoom === 'function') {\n opts.onZoom({ scale: scale, x: cached_metrics.scroll_left, y: cached_metrics.scroll_top });\n }\n _paint_queue = false;\n }\n\n function update_and_paint() {\n update_cached_metrics();\n _paint();\n }\n update_and_paint();\n\n // --- main\n\n function apply_zoom(f_opts) {\n target_x = f_opts.x;\n target_y = f_opts.y;\n\n target_scale = Math.min(Math.max(opts.min, target_scale - target_scale * (f_opts.delta * opts.speed)), opts.max);\n\n if (!_paint_queue) {\n _paint_queue = true;\n rAF(smooth_update);\n }\n }\n function smooth_update() {\n const diff = target_scale - scale;\n\n if (Math.abs(diff) > 0.001 && opts.smooth && opts.mode !== 'zoom') {\n perform_transform(0.15, diff);\n rAF(smooth_update);\n } else {\n perform_transform(1, diff);\n _paint_queue = false;\n }\n }\n function perform_transform(lerp, diff) {\n // mouse pos, relative to element visual state\n m_x = target_x - cached_metrics.rect.left - cached_metrics.element_ol - cached_metrics.container_cl - translate_x;\n m_y = target_y - cached_metrics.rect.top - cached_metrics.element_ot - cached_metrics.container_ct - translate_y;\n let content_x = (m_x + cached_metrics.scroll_left) / scale;\n let content_y = (m_y + cached_metrics.scroll_top) / scale;\n\n scale += diff * lerp;\n\n if (cached_metrics.element_ow * scale < cached_metrics.container_cw) {\n // width of content is less than viewport\n translate_x = is_rtl ? -(cached_metrics.container_cw - cached_metrics.element_ow * scale) / 2 : (cached_metrics.container_cw - cached_metrics.element_ow * scale) / 2;\n cached_metrics.scroll_left = 0;\n } else {\n translate_x = 0;\n cached_metrics.scroll_left = content_x * scale - m_x - translate_x;\n }\n\n if (cached_metrics.element_oh * scale < cached_metrics.container_ch) {\n // height of content is less than viewport\n translate_y = (cached_metrics.container_ch - cached_metrics.element_oh * scale) / 2;\n cached_metrics.scroll_top = 0;\n } else {\n translate_y = 0;\n cached_metrics.scroll_top = content_y * scale - m_y - translate_y;\n }\n\n _paint();\n }\n\n function wheel_listener(e) {\n if (!is_wheel_event) {\n is_wheel_event = true;\n update_cached_metrics();\n }\n clearTimeout(wheel_debounce_timout);\n if (e.ctrlKey) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n if (e.ctrlKey && use_zoom) {\n let norm_delta;\n if ('deltaX' in e) {\n // if (Math.abs(e.deltaY) < 24 && e.deltaY % 1 !== 0) {\n // trackpad pinching\n // } else\n if (Math.abs(e.deltaY) < 90 && e.deltaY % 1 !== 0) {\n // ctrl + trackpad // & trackpad pinching\n norm_delta = e.deltaY * [1, 28, 500][e.deltaMode || 0];\n } else {\n // ctrl + wheel\n norm_delta = e.deltaY * [1, 28, 500][e.deltaMode || 0] * 0.25;\n }\n } else if ('wheelDeltaX' in e)\n norm_delta = (e.wheelDeltaY * 0.25) / -3; // legacy\n else norm_delta = (e.wheelDelta * 0.25) / -3;\n apply_zoom({\n delta: norm_delta,\n x: is_rtl ? window.innerWidth - e.clientX : e.clientX,\n y: e.clientY,\n rect: cached_metrics.rect,\n scroll_left: cached_metrics.scroll_left,\n scroll_top: cached_metrics.scroll_top,\n });\n } else {\n use_zoom = false;\n }\n\n wheel_debounce_timout = setTimeout(function () {\n update_cached_metrics();\n use_zoom = true;\n is_wheel_event = false;\n }, 100);\n }\n\n let general_listeners = [];\n general_listeners.push(attach_listener(container, 'wheel', wheel_listener, { passive: false }));\n\n function scroll_listener() {\n scroll_debounce_timout && clearTimeout(scroll_debounce_timout);\n scroll_debounce_timout = setTimeout(update_cached_metrics, 100);\n }\n general_listeners.push(attach_listener(container, 'scroll', scroll_listener, { passive: true }));\n\n // --- kbd shortcuts\n\n let kbd_listeners = [];\n\n function kbd_listener(e) {\n // reset zoom\n if (e.ctrlKey || e.metaKey)\n if (e.key === '0' || e.code === 'Digit0' || e.keyCode === 48) {\n apply_zoom({\n delta: (scale - 1) / scale / opts.speed,\n x: m_x,\n y: m_y,\n rect: container.getBoundingClientRect(),\n scroll_left: container.scrollLeft,\n scroll_top: container.scrollTop,\n });\n } else if (e.key === '=' || e.code === 'Equal') {\n e.preventDefault();\n apply_zoom({\n delta: -50 / scale,\n x: container.clientWidth / 2,\n y: container.clientHeight / 2,\n rect: container.getBoundingClientRect(),\n scroll_left: container.scrollLeft,\n scroll_top: container.scrollTop,\n });\n } else if (e.key === '-' || e.code === 'Minus') {\n e.preventDefault();\n apply_zoom({\n delta: 50 / scale,\n x: container.clientWidth / 2,\n y: container.clientHeight / 2,\n rect: container.getBoundingClientRect(),\n scroll_left: container.scrollLeft,\n scroll_top: container.scrollTop,\n });\n }\n }\n\n if (opts.kbdEvents) kbd_listeners.push(attach_listener(document, 'keydown', kbd_listener, { passive: false }));\n\n // --- mouse pan\n\n let is_kbd_pannable = false,\n is_mmouse_down = false,\n is_lmouse_down = false,\n is_rmouse_down = false;\n let use_middle = pan_mode.indexOf('middle') !== -1;\n let use_right = pan_mode.indexOf('right') !== -1;\n let pan_origin = { x: 0, y: 0 };\n\n let pan_kbd_end_listeners = [];\n let pan_mouse_listeners = [];\n let pan_start_listeners = [];\n\n function update_pan_cursor_state() {\n if ((is_mmouse_down && use_middle) || (is_rmouse_down && use_right) || (is_kbd_pannable && is_lmouse_down)) {\n container.style.cursor = 'grabbing';\n } else if (is_kbd_pannable) {\n container.style.cursor = 'grab';\n } else {\n container.style.cursor = '';\n }\n }\n\n function pan_kbd_drag__keyup(e) {\n let condition =\n (pan_mode.indexOf('ctrl') !== -1 && e.ctrlKey) ||\n (pan_mode.indexOf('shift') !== -1 && e.shiftKey) ||\n (pan_mode.indexOf('alt') !== -1 && e.altKey) ||\n (pan_mode.indexOf('meta') !== -1 && e.metaKey);\n if (!condition && is_kbd_pannable) {\n is_kbd_pannable = false;\n update_pan_cursor_state();\n detach_all_listeners(pan_kbd_end_listeners);\n }\n }\n function pan_kbd_drag__lost_focus(e) {\n is_kbd_pannable = false;\n is_mmouse_down = false;\n update_pan_cursor_state();\n detach_all_listeners(pan_kbd_end_listeners);\n }\n function pan_kbd_drag__keydown(e) {\n let condition =\n (pan_mode.indexOf('ctrl') !== -1 && e.ctrlKey) ||\n (pan_mode.indexOf('shift') !== -1 && e.shiftKey) ||\n (pan_mode.indexOf('alt') !== -1 && e.altKey) ||\n (pan_mode.indexOf('meta') !== -1 && e.metaKey);\n if (condition && !is_kbd_pannable) {\n is_kbd_pannable = true;\n update_pan_cursor_state();\n pan_kbd_end_listeners.push(attach_listener(document, 'keyup', pan_kbd_drag__keyup));\n pan_kbd_end_listeners.push(attach_listener(window, 'blur', pan_kbd_drag__lost_focus));\n }\n }\n\n function pan_drag__mouse_down(e) {\n if ((is_kbd_pannable && e.button === 0) || (use_middle && e.button === 1) || (use_right && e.button === 2)) {\n e.preventDefault();\n if (e.button === 1) {\n is_mmouse_down = true;\n } else if (e.button === 2) {\n is_rmouse_down = true;\n } else if (e.button === 0) {\n is_lmouse_down = true;\n }\n update_pan_cursor_state();\n update_cached_metrics();\n pan_origin.x = cached_metrics.scroll_left + e.clientX;\n pan_origin.y = cached_metrics.scroll_top + e.clientY;\n pan_mouse_listeners.push(attach_listener(document, 'mousemove', pan_drag__mouse_move));\n pan_mouse_listeners.push(attach_listener(document, 'mouseup', pan_drag__mouse_up));\n }\n }\n function pan_drag__mouse_move(e) {\n if (\n (is_kbd_pannable && is_lmouse_down) ||\n (is_mmouse_down && pan_mode.indexOf('middle') !== -1) ||\n (is_rmouse_down && pan_mode.indexOf('right') !== -1)\n ) {\n container.scrollLeft = pan_origin.x - e.clientX;\n container.scrollTop = pan_origin.y - e.clientY;\n update_cached_metrics();\n if (typeof opts.onPan === 'function') {\n opts.onPan({ scale: scale, x: cached_metrics.scroll_left, y: cached_metrics.scroll_top });\n }\n }\n }\n function pan_drag__mouse_up(e) {\n if (e.button === 1) {\n is_mmouse_down = false;\n } else if (e.button === 2) {\n is_rmouse_down = false;\n } else if (e.button === 0) {\n is_lmouse_down = false;\n }\n update_pan_cursor_state();\n detach_all_listeners(pan_mouse_listeners);\n }\n function pan_drag__ctx_cancel(e) {\n if (pan_mode.indexOf('right') !== -1) e.preventDefault();\n }\n\n if (\n pan_mode.indexOf('ctrl') !== -1 ||\n pan_mode.indexOf('shift') !== -1 ||\n pan_mode.indexOf('meta') !== -1 ||\n pan_mode.indexOf('alt') !== -1 ||\n use_middle ||\n use_right\n ) {\n pan_start_listeners.push(attach_listener(container, 'mousedown', pan_drag__mouse_down));\n pan_start_listeners.push(attach_listener(document, 'keydown', pan_kbd_drag__keydown, { passive: true }));\n pan_start_listeners.push(attach_listener(container, 'contextmenu', pan_drag__ctx_cancel));\n }\n\n // --- touchscreen support\n\n let touch_span = 0;\n let touch_is_multi = false;\n let touch_x, touch_y;\n\n function touch_start_listener(e) {\n if (e.touches && e.touches.length >= 2) {\n touch_is_multi = true;\n update_cached_metrics();\n touch_span = Math.sqrt(\n Math.pow(e.touches[0].pageX - e.touches[1].pageX, 2) + Math.pow(e.touches[0].pageY - e.touches[1].pageY, 2),\n );\n // touch_theta = Math.atan2(e.touches[1].pageY - e.touches[0].pageY, e.touches[1].pageX - e.touches[0].pageX);\n touch_x = (e.touches[0].pageX + e.touches[1].pageX) / 2;\n touch_y = (e.touches[0].pageY + e.touches[1].pageY) / 2;\n }\n }\n function touch_move_listener(e) {\n if (e.touches && e.touches.length >= 2) {\n let dist = Math.sqrt(\n Math.pow(e.touches[0].pageX - e.touches[1].pageX, 2) + Math.pow(e.touches[0].pageY - e.touches[1].pageY, 2),\n );\n // theta = Math.atan2(e.touches[1].pageY - e.touches[0].pageY, e.touches[1].pageX - e.touches[0].pageX) - touch_theta /* + angle */;\n // if (theta > Math.PI) theta -= 2 * Math.PI;\n // if (theta < -Math.PI) theta += 2 * Math.PI;\n // if (Math.abs(theta) < (Math.PI / 12)) theta = 0; // snap logic\n touch_x = (e.touches[0].pageX + e.touches[1].pageX) / 2;\n touch_y = (e.touches[0].pageY + e.touches[1].pageY) / 2;\n apply_zoom({\n delta: (touch_span - dist) / 2,\n x: touch_x,\n y: touch_y,\n rect: cached_metrics.rect,\n scroll_left: cached_metrics.scroll_left,\n scroll_top: cached_metrics.scroll_top,\n });\n touch_span = dist;\n }\n }\n function touch_end_listener(e) {\n if (touch_is_multi) {\n touch_is_multi = false;\n apply_zoom({\n delta: 0,\n x: touch_x,\n y: touch_y,\n rect: cached_metrics.rect,\n scroll_left: cached_metrics.scroll_left,\n scroll_top: cached_metrics.scroll_top,\n });\n }\n }\n\n let touch_listeners = [];\n if ('maxTouchPoints' in navigator && navigator.maxTouchPoints > 0) {\n touch_listeners.push(attach_listener(container, 'touchstart', touch_start_listener, { passive: true }));\n touch_listeners.push(attach_listener(container, 'touchmove', touch_move_listener, { passive: true }));\n touch_listeners.push(attach_listener(container, 'touchend', touch_end_listener, { passive: true }));\n }\n\n // --- attach\n\n general_listeners.push(attach_listener(window, 'resize', update_and_paint));\n document.readyState !== 'complete' && general_listeners.push(attach_listener(window, 'load', update_and_paint));\n\n let observer_debounce_timout, observer;\n if (window.ResizeObserver) {\n observer = new ResizeObserver(function (entries) {\n if (!entries.length) return;\n clearTimeout(observer_debounce_timout);\n observer_debounce_timout = setTimeout(update_and_paint, 17);\n });\n observer.observe(element);\n } else {\n observer = new MutationObserver(function () {\n clearTimeout(observer_debounce_timout);\n observer_debounce_timout = setTimeout(update_and_paint, 100);\n });\n observer.observe(element, { childList: true, subtree: true, characterData: true });\n }\n\n _debug('Attached successfully.');\n _debug(`Options:\n\nmode\\t\\t${opts.mode}\nmin\\t\\t\\t${opts.min}\nmax\\t\\t\\t${opts.max}\nspeed\\t\\t${opts.speed * 100}\nsmooth\\t\\t${opts.smooth}\nkbdEvents\\t${opts.kbdEvents}\nhinted\\t\\t${opts.hinted}\npanMode\\t\\t${Array.isArray(opts.panMode) ? opts.panMode.join(' ') : opts.panMode}\nrtl\\t\\t\\t${is_rtl}`);\n\n // ---\n\n return {\n get success() {\n // readonly\n return true;\n },\n get scale() {\n return scale;\n },\n set scale(use_scale) {\n apply_zoom({\n delta: (scale - use_scale) / scale / opts.speed,\n x: m_x,\n y: m_y,\n rect: container.getBoundingClientRect(),\n scroll_left: container.scrollLeft,\n scroll_top: container.scrollTop,\n });\n },\n get onZoom() {\n return opts.onZoom;\n },\n set onZoom(use_onZoom) {\n if (typeof use_onZoom === 'function') opts.onZoom = use_onZoom;\n else _error(messages['onZoom-type']);\n },\n get viewportX() {\n // readonly\n return m_x;\n },\n get viewportY() {\n // readonly\n return m_y;\n },\n get x() {\n if (is_rtl) return container.scrollWidth - container.clientWidth - container.scrollLeft;\n return container.scrollLeft;\n },\n set x(use_x) {\n if (typeof use_x === 'number')\n if (is_rtl) {\n const max_scroll = container.scrollWidth - container.clientWidth;\n const scroll_pos = Math.min(max_scroll, Math.max(0, use_x));\n container.scrollLeft = max_scroll - scroll_pos;\n cached_metrics.scroll_left = scroll_pos;\n } else {\n container.scrollLeft = use_x;\n cached_metrics.scroll_left = use_x;\n }\n },\n get y() {\n return container.scrollTop;\n },\n set y(use_y) {\n if (typeof use_y === 'number') {\n container.scrollTop = use_y;\n cached_metrics.scroll_top = use_y;\n }\n },\n get mode() {\n return opts.mode;\n },\n set mode(use_mode) {\n if (typeof use_mode === 'string' && use_mode === 'zoom') {\n opts.mode = 'zoom';\n _warn(messages['warn-mode']);\n element.style.zoom = scale;\n element.style.transform = '';\n } else {\n opts.mode = 'transform';\n element.style.transform = `scale(${scale})`;\n element.style.zoom = '';\n }\n update_and_paint();\n },\n get min() {\n return opts.min;\n },\n set min(use_min) {\n opts.min = set_normalize.min(use_min);\n [opts.min, opts.max] = set_normalize.min_max(opts.min, opts.max);\n update_and_paint();\n },\n get max() {\n return opts.max;\n },\n set max(use_max) {\n opts.max = set_normalize.max(use_max);\n [opts.min, opts.max] = set_normalize.min_max(opts.min, opts.max);\n update_and_paint();\n },\n get speed() {\n return opts.speed * 100;\n },\n set speed(use_speed) {\n opts.speed = set_normalize.speed(use_speed);\n },\n get hinted() {\n return opts.hinted;\n },\n set hinted(use_hint) {\n opts.hinted = !!use_hint;\n if (opts.hinted)\n if (opts.mode === 'zoom') {\n element.style.willChange = 'zoom';\n } else {\n element.style.willChange = 'transform';\n }\n },\n get kbdEvents() {\n return opts.kbdEvents;\n },\n set kbdEvents(use_kbd) {\n if (opts.kbdEvents && !use_kbd) {\n opts.kbdEvents = false;\n detach_all_listeners(kbd_listeners);\n } else if (!opts.kbdEvents && !!use_kbd) {\n opts.kbdEvents = true;\n kbd_listeners.push(attach_listener(document, 'keydown', kbd_listener, { passive: false }));\n }\n },\n get smooth() {\n return opts.smooth;\n },\n set smooth(use_smooth) {\n opts.smooth = set_normalize.smooth(use_smooth);\n if (!opts.smooth) {\n scale = target_scale;\n update_and_paint();\n }\n },\n get panMode() {\n return pan_mode;\n },\n set panMode(use_pan_mode) {\n detach_all_listeners(pan_kbd_end_listeners);\n detach_all_listeners(pan_mouse_listeners);\n detach_all_listeners(pan_start_listeners);\n is_kbd_pannable = false;\n is_lmouse_down = false;\n is_mmouse_down = false;\n is_rmouse_down = false;\n\n opts.panMode = use_pan_mode;\n pan_mode = opts.panMode;\n use_middle = pan_mode.indexOf('middle') !== -1;\n use_right = pan_mode.indexOf('right') !== -1;\n\n if (\n pan_mode.indexOf('ctrl') !== -1 ||\n pan_mode.indexOf('shift') !== -1 ||\n pan_mode.indexOf('meta') !== -1 ||\n pan_mode.indexOf('alt') !== -1 ||\n use_middle ||\n use_right\n ) {\n pan_start_listeners.push(attach_listener(container, 'mousedown', pan_drag__mouse_down));\n pan_start_listeners.push(attach_listener(document, 'keydown', pan_kbd_drag__keydown, { passive: true }));\n pan_start_listeners.push(attach_listener(container, 'contextmenu', pan_drag__ctx_cancel));\n }\n update_pan_cursor_state();\n },\n get onPan() {\n return opts.onPan;\n },\n set onPan(use_onPan) {\n if (typeof use_onPan === 'function') opts.onPan = use_onPan;\n else _error(messages['onPan-type']);\n },\n get target() {\n // readonly\n return element;\n },\n get container() {\n // readonly\n return container;\n },\n get isRtl() {\n // readonly\n return is_rtl;\n },\n get reset() {\n // readonly\n return function () {\n apply_zoom({\n delta: (scale - 1) / scale / opts.speed,\n x: m_x,\n y: m_y,\n rect: container.getBoundingClientRect(),\n scroll_left: container.scrollLeft,\n scroll_top: container.scrollTop,\n });\n };\n },\n get destroy() {\n // readonly\n return function () {\n clearTimeout(wheel_debounce_timout);\n clearTimeout(scroll_debounce_timout);\n clearTimeout(observer_debounce_timout);\n\n // container.classList.remove('pinch-zoom-container');\n // element.classList.remove('pinch-zoom-content');\n\n detach_all_listeners(general_listeners);\n detach_all_listeners(kbd_listeners);\n\n detach_all_listeners(pan_kbd_end_listeners);\n detach_all_listeners(pan_mouse_listeners);\n detach_all_listeners(pan_start_listeners);\n\n detach_all_listeners(touch_listeners);\n\n if (observer) {\n observer.disconnect();\n observer = null;\n }\n\n reset_styles(container, resets_container);\n container.style.cursor = '';\n\n reset_styles(element, resets_element);\n\n if (opts.mode === 'zoom') element.style.zoom = '';\n else element.style.transform = '';\n\n container.scrollTop /= scale;\n container.scrollLeft /= scale;\n };\n },\n };\n}\n\n// ---\n\n/**\n * Global utility to prevent browser-level zooming.\n * @param {{useMeta?: boolean}} options --- Generate or alter <meta> tag to lock mobile viewport\n * @returns {{readonly unlock(): void}} --- Unlock viewport restrictions\n */\nexport function pinchZoomLockViewport({ useMeta = false } = {}) {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n _error(messages['ssr']);\n return {\n unlock() {},\n };\n }\n function lock_wheel_listener(e) {\n if (e.ctrlKey) e.preventDefault();\n }\n window.addEventListener('wheel', lock_wheel_listener, { passive: false });\n document.documentElement.style.touchAction = 'pan-x pan-y';\n let original_meta = null;\n let new_meta = null;\n if (useMeta)\n if (document.querySelector('meta[name=viewport]') !== null) {\n original_meta = document.querySelector('meta[name=viewport]').content;\n document.querySelector('meta[name=viewport]').content =\n 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content';\n } else if (document.getElementsByTagName('head').length !== 0) {\n new_meta = document.getElementsByTagName('head')[0].appendChild(document.createElement('meta'));\n new_meta.name = 'viewport';\n new_meta.content =\n 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content';\n }\n\n return {\n get unlock() {\n // readonly\n return function () {\n window.removeEventListener('wheel', lock_wheel_listener);\n document.documentElement.style.touchAction = '';\n if (useMeta)\n if (original_meta !== null) {\n document.querySelector('meta[name=viewport]').content = original_meta;\n } else {\n new_meta.parentElement.removeChild(new_meta);\n }\n };\n },\n };\n}\n"],"names":["check","it","Math","globalThis_1","globalThis","window","self","global","this","Function","documentAll","document","all","isCallable","undefined","argument","require$$0","isObject","require$$1","EXISTS","createElement","documentCreateElement","classList","DOMTokenListPrototype","constructor","prototype","domTokenListPrototype","Object","fails","exec","error","functionBindNative","test","bind","hasOwnProperty","NATIVE_BIND","FunctionPrototype","call","uncurryThisWithBind","functionUncurryThis","fn","apply","arguments","uncurryThis","toString","stringSlice","slice","classof","$Object","split","indexedObject","propertyIsEnumerable","isNullOrUndefined","$TypeError","TypeError","requireObjectCoercible","IndexedObject","toIndexedObject","defineProperty","defineGlobalProperty","key","value","configurable","writable","require$$2","SHARED","store","sharedStoreModule","exports","versions","push","version","mode","copyright","license","source","match","shared","toObject","hasOwnProperty_1","hasOwn","id","postfix","random","uid","navigator","userAgent","String","process","Deno","v8","V8_VERSION","$String","symbolConstructorDetection","getOwnPropertySymbols","symbol","Symbol","sham","useSymbolAsUid","iterator","require$$3","NATIVE_SYMBOL","require$$4","USE_SYMBOL_AS_UID","require$$5","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","wellKnownSymbol","name","anObject","descriptors","get","v8PrototypeDefineBug","ie8DomDefine","a","functionCall","getBuiltIn","namespace","method","length","objectIsPrototypeOf","isPrototypeOf","isSymbol","$Symbol","tryToString","aCallable","getMethod","V","P","func","ordinaryToPrimitive","input","pref","val","valueOf","TO_PRIMITIVE","toPrimitive","result","exoticToPrim","toPropertyKey","DESCRIPTORS","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","$getOwnPropertyDescriptor","getOwnPropertyDescriptor","ENUMERABLE","CONFIGURABLE","WRITABLE","objectDefineProperty","f","O","Attributes","current","enumerable","IS_INCLUDES","ceil","floor","trunc","x","n","toIntegerOrInfinity","number","max","min","toLength","len","toAbsoluteIndex","index","integer","lengthOfArrayLike","obj","arrayIncludes","indexOf","$this","el","fromIndex","hiddenKeys","objectKeysInternal","object","names","i","enumBugKeys","internalObjectKeys","objectKeys","keys","definePropertyModule","objectDefineProperties","defineProperties","Properties","props","activeXDocument","html","sharedKey","definePropertiesModule","PROTOTYPE","SCRIPT","IE_PROTO","require$$6","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","domain","style","display","appendChild","src","contentWindow","open","F","objectCreate","create","UNSCOPABLES","ArrayPrototype","Array","set","has","iterators","WeakMap","weakMapBasicDetection","createPropertyDescriptor","bitmap","createNonEnumerableProperty","NATIVE_WEAK_MAP","require$$7","OBJECT_ALREADY_INITIALIZED","state","metadata","facade","STATE","internalState","enforce","getterFor","TYPE","type","$propertyIsEnumerable","NASHORN_BUG","objectPropertyIsEnumerable","descriptor","propertyIsEnumerableModule","objectGetOwnPropertyDescriptor","getDescriptor","functionName","PROPER","functionToString","inspectSource","CONFIGURABLE_FUNCTION_NAME","enforceInternalState","getInternalState","replace","join","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","makeBuiltInModule","options","getter","setter","arity","defineBuiltIn","simple","unsafe","nonConfigurable","nonWritable","concat","objectGetOwnPropertyNames","getOwnPropertyNames","objectGetOwnPropertySymbols","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","ownKeys","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","isForced_1","copyConstructorProperties","target","exceptions","correctPrototypeGetter","getPrototypeOf","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","objectGetPrototypeOf","ITERATOR","BUGGY_SAFARI_ITERATORS","iteratorsCore","TO_STRING_TAG","setToStringTag","TAG","STATIC","Iterators","returnThis","isPossiblePrototype","uncurryThisAccessor","aPossiblePrototype","objectSetPrototypeOf","setPrototypeOf","CORRECT_SETTER","proto","__proto__","$","targetProperty","sourceProperty","TARGET","GLOBAL","stat","dontCallGetSet","forced","createIteratorConstructor","IteratorConstructor","NAME","next","ENUMERABLE_NEXT","require$$8","require$$9","require$$10","require$$12","PROPER_FUNCTION_NAME","require$$13","require$$11","KEYS","VALUES","ENTRIES","addToUnscopables","InternalStateModule","defineIterator","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","values","createIterResultObject","done","ARRAY_ITERATOR","setInternalState","es_array_iterator","iterated","kind","Arguments","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","ArrayIteratorMethods","ArrayValues","handlePrototype","CollectionPrototype","COLLECTION_NAME","METHOD_NAME","messages","_fatal","msg","console","_error","_warn","warn","_debug","debug","set_style","resets","reset_styles","prop","attach_listener","event","addEventListener","removeEventListener","detach_listener","detach","ex","detach_all_listeners","handles","isArray","empty_controller","success","scale","onZoom","viewportX","viewportY","speed","hinted","kbdEvents","smooth","panMode","onPan","container","isRtl","reset","destroy","option_defaults","set_normalize","use_mode","use_smooth","matchMedia","matches","use_min","use_max","min_max","use_speed","element","Element","rAF","requestAnimationFrame","setTimeout","Date","now","opts","normalize_options","_objectSpread","parentElement","pan_mode","resets_container","is_rtl","getComputedStyle","direction","resets_element","wheel_debounce_timout","scroll_debounce_timout","target_scale","m_x","m_y","translate_x","translate_y","target_x","target_y","use_zoom","is_wheel_event","_paint_queue","cached_metrics","update_cached_metrics","rect","getBoundingClientRect","element_ow","offsetWidth","element_oh","offsetHeight","element_ol","offsetLeft","element_ot","offsetTop","container_ct","clientTop","container_cl","clientLeft","container_cw","clientWidth","container_ch","clientHeight","scroll_left","scrollLeft","scroll_top","scrollTop","_paint","zoom","transformOrigin","transform","y","update_and_paint","apply_zoom","f_opts","delta","smooth_update","diff","abs","perform_transform","lerp","left","top","content_x","content_y","general_listeners","e","clearTimeout","ctrlKey","preventDefault","stopImmediatePropagation","deltaY","deltaMode","wheelDeltaY","wheelDelta","innerWidth","clientX","clientY","passive","kbd_listeners","kbd_listener","metaKey","code","keyCode","is_kbd_pannable","is_mmouse_down","is_lmouse_down","is_rmouse_down","use_middle","use_right","pan_origin","pan_kbd_end_listeners","pan_mouse_listeners","pan_start_listeners","update_pan_cursor_state","cursor","pan_kbd_drag__keyup","shiftKey","altKey","pan_kbd_drag__lost_focus","pan_kbd_drag__keydown","pan_drag__mouse_down","button","pan_drag__mouse_move","pan_drag__mouse_up","pan_drag__ctx_cancel","touch_x","touch_y","observer_debounce_timout","observer","touch_span","touch_is_multi","touch_listeners","maxTouchPoints","touches","sqrt","pow","pageX","pageY","dist","readyState","ResizeObserver","observe","MutationObserver","childList","subtree","characterData","use_scale","use_onZoom","scrollWidth","use_x","max_scroll","scroll_pos","use_y","use_hint","willChange","use_kbd","use_pan_mode","use_onPan","disconnect","useMeta","unlock","lock_wheel_listener","documentElement","touchAction","original_meta","new_meta","querySelector","getElementsByTagName","removeChild"],"mappings":"g3CACIA,EAAQ,SAAUC,GACpB,OAAOA,GAAMA,EAAGC,OAASA,MAAQD,CACnC,EAGAE,EAEEH,EAA2B,iBAAdI,YAA0BA,aACvCJ,EAAuB,iBAAVK,QAAsBA,SAEnCL,EAAqB,iBAARM,MAAoBA,OACjCN,EAAuB,iBAAVO,GAAsBA,IACnCP,EAAqB,iBAARQ,GAAoBA,IAEjC,WAAe,OAAOA,IAAO,CAA7B,IAAoCC,SAAS,cAATA,GCblCC,EAAiC,iBAAZC,UAAwBA,SAASC,IAK1DC,OAAuC,IAAfH,QAA8CI,IAAhBJ,EAA4B,SAAUK,GAC1F,MAA0B,mBAAZA,GAA0BA,IAAaL,CACvD,EAAI,SAAUK,GACZ,MAA0B,mBAAZA,CAChB,ECVIF,EAAaG,EAEjBC,EAAiB,SAAUhB,GACzB,MAAoB,iBAANA,EAAwB,OAAPA,EAAcY,EAAWZ,EAC1D,ECHIgB,EAAWC,EAEXP,EAHaK,EAGSL,SAEtBQ,EAASF,EAASN,IAAaM,EAASN,EAASS,eAErDC,EAAiB,SAAUpB,GACzB,OAAOkB,EAASR,EAASS,cAAcnB,GAAM,CAAA,CAC/C,ECNIqB,EAFwBN,EAEU,QAAQM,UAC1CC,EAAwBD,GAAaA,EAAUE,aAAeF,EAAUE,YAAYC,UAExFC,EAAiBH,IAA0BI,OAAOF,eAAYX,EAAYS,ECN1EK,EAAiB,SAAUC,GACzB,IACE,QAASA,GACb,CAAI,MAAOC,GACP,OAAO,CACX,CACA,ECJAC,GAFYf,EAEY,WAEtB,IAAIgB,EAAO,WAA4B,EAAEC,OAEzC,MAAsB,mBAARD,GAAsBA,EAAKE,eAAe,YAC1D,GCPIC,EAAcnB,EAEdoB,EAAoB3B,SAASgB,UAC7BY,EAAOD,EAAkBC,KAEzBC,EAAsBH,GAAeC,EAAkBH,KAAKA,KAAKI,EAAMA,GAE3EE,EAAiBJ,EAAcG,EAAsB,SAAUE,GAC7D,OAAO,WACL,OAAOH,EAAKI,MAAMD,EAAIE,UAC1B,CACA,ECXIC,EAAc3B,EAEd4B,EAAWD,EAAY,CAAA,EAAGC,UAC1BC,EAAcF,EAAY,GAAGG,OCF7BlB,EAAQV,EACR6B,EDGa,SAAU9C,GACzB,OAAO4C,EAAYD,EAAS3C,GAAK,GAAG,EACtC,ECHI+C,EAAUrB,OACVsB,EALcjC,EAKM,GAAGiC,OAG3BC,EAAiBtB,EAAM,WAGrB,OAAQoB,EAAQ,KAAKG,qBAAqB,EAC5C,GAAK,SAAUlD,GACb,MAAuB,WAAhB8C,EAAQ9C,GAAmBgD,EAAMhD,EAAI,IAAM+C,EAAQ/C,EAC5D,EAAI+C,ECZJI,EAAiB,SAAUnD,GACzB,OAAOA,OACT,ECJImD,EAAoBpC,EAEpBqC,EAAaC,UAIjBC,EAAiB,SAAUtD,GACzB,GAAImD,EAAkBnD,GAAK,MAAM,IAAIoD,EAAW,wBAA0BpD,GAC1E,OAAOA,CACT,ECRIuD,EAAgBxC,EAChBuC,EAAyBrC,EAE7BuC,EAAiB,SAAUxD,GACzB,OAAOuD,EAAcD,EAAuBtD,GAC9C,iBCNIG,EAAaY,EAGb0C,EAAiB/B,OAAO+B,eAE5BC,EAAiB,SAAUC,EAAKC,GAC9B,IACEH,EAAetD,EAAYwD,EAAK,CAAEC,MAAOA,EAAOC,cAAc,EAAMC,UAAU,GAClF,CAAI,MAAOjC,GACP1B,EAAWwD,GAAOC,CACtB,CAAI,OAAOA,CACX,ECVIzD,EAAac,EACbyC,EAAuBK,EAEvBC,EAAS,qBACTC,EAAQC,EAAAC,QAAiBhE,EAAW6D,IAAWN,EAAqBM,EAAQ,KAE/EC,EAAMG,WAAaH,EAAMG,SAAW,KAAKC,KAAK,CAC7CC,QAAS,SACTC,KAAyB,SACzBC,UAAW,yGACXC,QAAS,2DACTC,OAAQ,4CCLNC,EAAOL,cCPPL,EAAQlD,EAEZ6D,EAAiB,SAAUjB,EAAKC,GAC9B,OAAOK,EAAMN,KAASM,EAAMN,GAAOC,GAAS,GAC9C,ECJIN,EAAyBvC,EAEzBgC,GAAUrB,OAIdmD,GAAiB,SAAU/D,GACzB,OAAOiC,GAAQO,EAAuBxC,GACxC,ECPI+D,GAAW5D,GAEXgB,GAHclB,EAGe,CAAA,EAAGkB,gBAKpC6C,GAAiBpD,OAAOqD,QAAU,SAAgB/E,EAAI2D,GACpD,OAAO1B,GAAe4C,GAAS7E,GAAK2D,EACtC,ECVIjB,GAAc3B,EAEdiE,GAAK,EACLC,GAAUhF,KAAKiF,SACfvC,GAAWD,GAAY,IAAIC,UAE/BwC,GAAiB,SAAUxB,GACzB,MAAO,gBAAqB9C,IAAR8C,EAAoB,GAAKA,GAAO,KAAOhB,KAAWqC,GAAKC,GAAS,GACtF,ECNIG,GAFarE,EAEUqE,UACvBC,GAAYD,IAAaA,GAAUC,ULHnClF,GAAaY,EACbsE,GKIaA,GAAYC,OAAOD,IAAa,GLF7CE,GAAUpF,GAAWoF,QACrBC,GAAOrF,GAAWqF,KAClBpB,GAAWmB,IAAWA,GAAQnB,UAAYoB,IAAQA,GAAKlB,QACvDmB,GAAKrB,IAAYA,GAASqB,GAG1BA,KAIFnB,GAHAK,EAAQc,GAAGzC,MAAM,MAGD,GAAK,GAAK2B,EAAM,GAAK,EAAI,IAAMA,EAAM,GAAKA,EAAM,MAK7DL,GAAWe,OACdV,EAAQU,GAAUV,MAAM,iBACVA,EAAM,IAAM,MACxBA,EAAQU,GAAUV,MAAM,oBACbL,GAAWK,EAAM,IAIhC,IMzBIe,GNyBapB,EMxBb3C,GAAQV,EAGR0E,GAFa5B,EAEQuB,OAGzBM,KAAmBlE,OAAOmE,wBAA0BlE,GAAM,WACxD,IAAImE,EAASC,OAAO,oBAKpB,OAAQJ,GAAQG,MAAapE,OAAOoE,aAAmBC,UAEpDA,OAAOC,MAAQN,IAAcA,GAAa,EAC/C,GCdAO,GAFoBlF,KAGjBgF,OAAOC,MACkB,iBAAnBD,OAAOG,SCJZtB,GAAS3D,EACT8D,GAAShB,GACToB,GAAMgB,GACNC,GAAgBC,GAChBC,GAAoBC,GAEpBR,GAPahF,EAOOgF,OACpBS,GAAwB5B,GAAO,OAC/B6B,GAAwBH,GAAoBP,GAAY,KAAKA,GAASA,IAAUA,GAAOW,eAAiBvB,GAE5GwB,GAAiB,SAAUC,GAKvB,OAJG7B,GAAOyB,GAAuBI,KACjCJ,GAAsBI,GAAQR,IAAiBrB,GAAOgB,GAAQa,GAC1Db,GAAOa,GACPH,GAAsB,UAAYG,IAC/BJ,GAAsBI,EACjC,ECjBI5F,GAAWD,EAEX4E,GAAUL,OACVlC,GAAaC,UAGjBwD,GAAiB,SAAU/F,GACzB,GAAIE,GAASF,GAAW,OAAOA,EAC/B,MAAM,IAAIsC,GAAWuC,GAAQ7E,GAAY,oBAC3C,QCNAgG,IAHY/F,EAGY,WAEtB,OAA+E,IAAxEW,OAAO+B,eAAe,GAAI,EAAG,CAAEsD,IAAK,WAAc,OAAO,CAAE,IAAM,EAC1E,GCDAC,GALkBjG,IACNE,EAI0B,WAEpC,OAGiB,KAHVS,OAAO+B,eAAe,WAAY,EAAiB,YAAa,CACrEG,MAAO,GACPE,UAAU,IACTtC,SACL,SCTIL,GAAgB4C,EAGpBkD,IALkBlG,KACNE,EAI4B,WAEtC,OAES,IAFFS,OAAO+B,eAAetC,GAAc,OAAQ,IAAK,CACtD4F,IAAK,WAAc,OAAO,CAAE,IAC3BG,CACL,GCVIhF,GAAcnB,EAEdqB,GAAO5B,SAASgB,UAAUY,KAE9B+E,GAAiBjF,GAAcE,GAAKJ,KAAKI,IAAQ,WAC/C,OAAOA,GAAKI,MAAMJ,GAAMK,UAC1B,ECNItC,GAAaY,EACbH,GAAaK,EAMjBmG,GAAiB,SAAUC,EAAWC,GACpC,OAAO7E,UAAU8E,OAAS,GALFzG,EAKgBX,GAAWkH,GAJ5CzG,GAAWE,GAAYA,OAAWD,GAIwBV,GAAWkH,IAAclH,GAAWkH,GAAWC,GALlG,IAAUxG,CAM1B,ECPA0G,GAFkBzG,EAEW,CAAA,EAAG0G,eCF5BL,GAAarG,GACbH,GAAaK,EACbwG,GAAgB1D,GAGhBhB,GAAUrB,OAEdgG,GAJwBvB,GAIa,SAAUnG,GAC7C,MAAoB,iBAANA,CAChB,EAAI,SAAUA,GACZ,IAAI2H,EAAUP,GAAW,UACzB,OAAOxG,GAAW+G,IAAYF,GAAcE,EAAQnG,UAAWuB,GAAQ/C,GACzE,ECZI2F,GAAUL,OCAV1E,GAAaG,EACb6G,GDCa,SAAU9G,GACzB,IACE,OAAO6E,GAAQ7E,EACnB,CAAI,MAAOe,GACP,MAAO,QACX,CACA,ECLIuB,GAAaC,UAGjBwE,GAAiB,SAAU/G,GACzB,GAAIF,GAAWE,GAAW,OAAOA,EACjC,MAAM,IAAIsC,GAAWwE,GAAY9G,GAAY,qBAC/C,ECTI+G,GAAY9G,GACZoC,GAAoBlC,ECDpBmB,GAAOrB,GACPH,GAAaK,EACbD,GAAW+C,EAEXX,GAAaC,UCJbjB,GAAOrB,GACPC,GAAWC,EACXyG,GAAW3D,GACX+D,GFEa,SAAUC,EAAGC,GAC5B,IAAIC,EAAOF,EAAEC,GACb,OAAO7E,GAAkB8E,QAAQpH,EAAYgH,GAAUI,EACzD,EEJIC,GDIa,SAAUC,EAAOC,GAChC,IAAI7F,EAAI8F,EACR,GAAa,WAATD,GAAqBxH,GAAW2B,EAAK4F,EAAMxF,YAAc3B,GAASqH,EAAMjG,GAAKG,EAAI4F,IAAS,OAAOE,EACrG,GAAIzH,GAAW2B,EAAK4F,EAAMG,WAAatH,GAASqH,EAAMjG,GAAKG,EAAI4F,IAAS,OAAOE,EAC/E,GAAa,WAATD,GAAqBxH,GAAW2B,EAAK4F,EAAMxF,YAAc3B,GAASqH,EAAMjG,GAAKG,EAAI4F,IAAS,OAAOE,EACrG,MAAM,IAAIjF,GAAW,0CACvB,ECPIA,GAAaC,UACbkF,GAHkBhC,GAGa,eCR/BiC,GDYa,SAAUL,EAAOC,GAChC,IAAKpH,GAASmH,IAAUT,GAASS,GAAQ,OAAOA,EAChD,IACIM,EADAC,EAAeZ,GAAUK,EAAOI,IAEpC,GAAIG,EAAc,CAGhB,QAFa7H,IAATuH,IAAoBA,EAAO,WAC/BK,EAASrG,GAAKsG,EAAcP,EAAOC,IAC9BpH,GAASyH,IAAWf,GAASe,GAAS,OAAOA,EAClD,MAAM,IAAIrF,GAAW,0CACzB,CAEE,YADavC,IAATuH,IAAoBA,EAAO,UACxBF,GAAoBC,EAAOC,EACpC,ECvBIV,GAAWzG,GAIf0H,GAAiB,SAAU7H,GACzB,IAAI6C,EAAM6E,GAAY1H,EAAU,UAChC,OAAO4G,GAAS/D,GAAOA,EAAMA,EAAM,EACrC,ECRIiF,GAAc7H,GACd8H,GAAiB5H,GACjB6H,GAA0B/E,GAC1B8C,GAAWV,GACXwC,GAAgBtC,GAEhBjD,GAAaC,UAEb0F,GAAkBrH,OAAO+B,eAEzBuF,GAA4BtH,OAAOuH,yBACnCC,GAAa,aACbC,GAAe,eACfC,GAAW,WAIfC,GAAAC,EAAYV,GAAcE,GAA0B,SAAwBS,EAAGvB,EAAGwB,GAIhF,GAHA3C,GAAS0C,GACTvB,EAAIW,GAAcX,GAClBnB,GAAS2C,GACQ,mBAAND,GAA0B,cAANvB,GAAqB,UAAWwB,GAAcJ,MAAYI,IAAeA,EAAWJ,IAAW,CAC5H,IAAIK,EAAUT,GAA0BO,EAAGvB,GACvCyB,GAAWA,EAAQL,MACrBG,EAAEvB,GAAKwB,EAAW5F,MAClB4F,EAAa,CACX3F,aAAcsF,MAAgBK,EAAaA,EAAWL,IAAgBM,EAAQN,IAC9EO,WAAYR,MAAcM,EAAaA,EAAWN,IAAcO,EAAQP,IACxEpF,UAAU,GAGlB,CAAI,OAAOiF,GAAgBQ,EAAGvB,EAAGwB,EACjC,EAAIT,GAAkB,SAAwBQ,EAAGvB,EAAGwB,GAIlD,GAHA3C,GAAS0C,GACTvB,EAAIW,GAAcX,GAClBnB,GAAS2C,GACLX,GAAgB,IAClB,OAAOE,GAAgBQ,EAAGvB,EAAGwB,EACjC,CAAI,MAAO3H,GAAO,CAChB,GAAI,QAAS2H,GAAc,QAASA,EAAY,MAAM,IAAIpG,GAAW,2BAErE,MADI,UAAWoG,IAAYD,EAAEvB,GAAKwB,EAAW5F,OACtC2F,CACT,EC1CA,ICK6BI,GDLzBC,GAAO3J,KAAK2J,KACZC,GAAQ5J,KAAK4J,MEDbC,GFMa7J,KAAK6J,OAAS,SAAeC,GAC5C,IAAIC,GAAKD,EACT,OAAQC,EAAI,EAAIH,GAAQD,IAAMI,EAChC,EELAC,GAAiB,SAAUnJ,GACzB,IAAIoJ,GAAUpJ,EAEd,OAAOoJ,GAAWA,GAAqB,IAAXA,EAAe,EAAIJ,GAAMI,EACvD,ECRID,GAAsBlJ,GAEtBoJ,GAAMlK,KAAKkK,IACXC,GAAMnK,KAAKmK,ICHXH,GAAsBlJ,GAEtBqJ,GAAMnK,KAAKmK,ICFXC,GDMa,SAAUvJ,GACzB,IAAIwJ,EAAML,GAAoBnJ,GAC9B,OAAOwJ,EAAM,EAAIF,GAAIE,EAAK,kBAAoB,CAChD,EHTI9G,GAAkBzC,EAClBwJ,GEOa,SAAUC,EAAOjD,GAChC,IAAIkD,EAAUR,GAAoBO,GAClC,OAAOC,EAAU,EAAIN,GAAIM,EAAUlD,EAAQ,GAAK6C,GAAIK,EAASlD,EAC/D,EFTImD,GIEa,SAAUC,GACzB,OAAON,GAASM,EAAIpD,OACtB,EJmBAqD,GAAiB,CAMfC,SA1B2BlB,IA0BL,EAzBf,SAAUmB,EAAOC,EAAIC,GAC1B,IAAIzB,EAAI/F,GAAgBsH,GACpBvD,EAASmD,GAAkBnB,GAC/B,GAAe,IAAXhC,EAAc,OAAQoC,KAAe,EACzC,IACI/F,EADA4G,EAAQD,GAAgBS,EAAWzD,GAIvC,GAAIoC,IAAeoB,GAAOA,GAAI,KAAOxD,EAASiD,GAG5C,IAFA5G,EAAQ2F,EAAEiB,OAEI5G,EAAO,OAAO,OAEvB,KAAM2D,EAASiD,EAAOA,IAC3B,IAAKb,IAAea,KAASjB,IAAMA,EAAEiB,KAAWO,EAAI,OAAOpB,IAAea,GAAS,EACnF,OAAQb,KAAe,CAC7B,IKtBAsB,GAAiB,CAAA,ECCblG,GAAS9D,GACTuC,GAAkBO,EAClB8G,GAAU1E,GAAuC0E,QACjDI,GAAa5E,GAEbhC,GANctD,EAMK,GAAGsD,MAE1B6G,GAAiB,SAAUC,EAAQC,GACjC,IAGIzH,EAHA4F,EAAI/F,GAAgB2H,GACpBE,EAAI,EACJ5C,EAAS,GAEb,IAAK9E,KAAO4F,GAAIxE,GAAOkG,GAAYtH,IAAQoB,GAAOwE,EAAG5F,IAAQU,GAAKoE,EAAQ9E,GAE1E,KAAOyH,EAAM7D,OAAS8D,GAAOtG,GAAOwE,EAAG5F,EAAMyH,EAAMC,SAChDR,GAAQpC,EAAQ9E,IAAQU,GAAKoE,EAAQ9E,IAExC,OAAO8E,CACT,EClBA6C,GAAiB,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,WCREC,GAAqBxK,GACrBuK,GAAcrK,GAKlBuK,GAAiB9J,OAAO+J,MAAQ,SAAclC,GAC5C,OAAOgC,GAAmBhC,EAAG+B,GAC/B,ECRI1C,GAAc7H,GACd+H,GAA0B7H,GAC1ByK,GAAuB3H,GACvB8C,GAAWV,GACX3C,GAAkB6C,EAClBmF,GAAajF,GAKjBoF,GAAArC,EAAYV,KAAgBE,GAA0BpH,OAAOkK,iBAAmB,SAA0BrC,EAAGsC,GAC3GhF,GAAS0C,GAMT,IALA,IAII5F,EAJAmI,EAAQtI,GAAgBqI,GACxBJ,EAAOD,GAAWK,GAClBtE,EAASkE,EAAKlE,OACdiD,EAAQ,EAELjD,EAASiD,GAAOkB,GAAqBpC,EAAEC,EAAG5F,EAAM8H,EAAKjB,KAAUsB,EAAMnI,IAC5E,OAAO4F,CACT,ECnBA,ICqDIwC,GDnDJC,GAFiBjL,GAEW,WAAY,mBEDpCoE,GAAMlE,GAENwK,GAHS1K,EAGK,QAElBkL,GAAiB,SAAUtI,GACzB,OAAO8H,GAAK9H,KAAS8H,GAAK9H,GAAOwB,GAAIxB,GACvC,EDNIkD,GAAW9F,GACXmL,GAAyBjL,GACzBqK,GAAcvH,GACdkH,GAAa9E,GACb6F,GAAO3F,GACPjF,GAAwBmF,EAKxB4F,GAAY,YACZC,GAAS,SACTC,GANYC,GAMS,YAErBC,GAAmB,WAAY,EAE/BC,GAAY,SAAUC,GACxB,MARO,IAQKL,GATL,IASmBK,EAAnBC,KAAwCN,GATxC,GAUT,EAGIO,GAA4B,SAAUZ,GACxCA,EAAgBa,MAAMJ,GAAU,KAChCT,EAAgBc,QAChB,IAAIC,EAAOf,EAAgBgB,aAAarL,OAGxC,OADAqK,EAAkB,KACXe,CACT,EAyBIE,GAAkB,WACpB,IACEjB,GAAkB,IAAIkB,cAAc,WACxC,CAAI,MAAOpL,GAAO,CAzBa,IAIzBqL,EAFAC,EACAC,EAuBJJ,GAAqC,oBAAZtM,SACrBA,SAAS2M,QAAUtB,GACjBY,GAA0BZ,KA1B5BoB,EAAS/L,GAAsB,UAC/BgM,EAAK,OAAShB,GAAS,IAE3Be,EAAOG,MAAMC,QAAU,OACvBvB,GAAKwB,YAAYL,GAEjBA,EAAOM,IAAMnI,OAAO8H,IACpBF,EAAiBC,EAAOO,cAAchN,UACvBiN,OACfT,EAAeN,MAAMJ,GAAU,sBAC/BU,EAAeL,QACRK,EAAeU,GAiBlBjB,GAA0BZ,IAE9B,IADA,IAAIxE,EAAS+D,GAAY/D,OAClBA,YAAiByF,GAAgBb,IAAWb,GAAY/D,IAC/D,OAAOyF,IACT,EAEA/B,GAAWoB,KAAY,MAKvBwB,GAAiBnM,OAAOoM,QAAU,SAAgBvE,EAAGsC,GACnD,IAAIpD,EAQJ,OAPU,OAANc,GACFgD,GAAiBJ,IAAatF,GAAS0C,GACvCd,EAAS,IAAI8D,GACbA,GAAiBJ,IAAa,KAE9B1D,EAAO4D,IAAY9C,GACdd,EAASuE,UACMnM,IAAfgL,EAA2BpD,EAASyD,GAAuB5C,EAAEb,EAAQoD,EAC9E,EEnFIlF,GAAkB5F,GAClB+M,GAAS7M,GACTwC,GAAiBM,GAA+CuF,EAEhEyE,GAAcpH,GAAgB,eAC9BqH,GAAiBC,MAAMzM,eAISX,IAAhCmN,GAAeD,KACjBtK,GAAeuK,GAAgBD,GAAa,CAC1ClK,cAAc,EACdD,MAAOkK,GAAO,YCAdI,GAAKnH,GAAKoH,GCZdC,GAAiB,CAAA,ECCbxN,GAAaK,EAEboN,GAHatN,EAGQsN,QAEzBC,GAAiB1N,GAAWyN,KAAY,cAActM,KAAKuD,OAAO+I,KCLlEE,GAAiB,SAAUC,EAAQ5K,GACjC,MAAO,CACL8F,aAAuB,EAAT8E,GACd3K,eAAyB,EAAT2K,GAChB1K,WAAqB,EAAT0K,GACZ5K,MAAOA,EAEX,ECNI8H,GAAuBzK,GACvBsN,GAA2BxK,GAE/B0K,GAJkB1N,GAIa,SAAUoK,EAAQxH,EAAKC,GACpD,OAAO8H,GAAqBpC,EAAE6B,EAAQxH,EAAK4K,GAAyB,EAAG3K,GACzE,EAAI,SAAUuH,EAAQxH,EAAKC,GAEzB,OADAuH,EAAOxH,GAAOC,EACPuH,CACT,EJTIuD,GAAkB3N,GAClBZ,GAAac,EACbD,GAAW+C,EACX0K,GAA8BtI,GAC9BpB,GAASsB,GACTzB,GAAS2B,EACT0F,GAAYK,GACZrB,GAAa0D,GAEbC,GAA6B,6BAC7BvL,GAAYlD,GAAWkD,UACvBgL,GAAUlO,GAAWkO,QAgBzB,GAAIK,IAAmB9J,GAAOiK,MAAO,CACnC,IAAI5K,GAAQW,GAAOiK,QAAUjK,GAAOiK,MAAQ,IAAIR,IAEhDpK,GAAM8C,IAAM9C,GAAM8C,IAClB9C,GAAMkK,IAAMlK,GAAMkK,IAClBlK,GAAMiK,IAAMjK,GAAMiK,IAElBA,GAAM,SAAUlO,EAAI8O,GAClB,GAAI7K,GAAMkK,IAAInO,GAAK,MAAM,IAAIqD,GAAUuL,IAGvC,OAFAE,EAASC,OAAS/O,EAClBiE,GAAMiK,IAAIlO,EAAI8O,GACPA,CACX,EACE/H,GAAM,SAAU/G,GACd,OAAOiE,GAAM8C,IAAI/G,IAAO,CAAA,CAC5B,EACEmO,GAAM,SAAUnO,GACd,OAAOiE,GAAMkK,IAAInO,EACrB,CACA,KAAO,CACL,IAAIgP,GAAQ/C,GAAU,SACtBhB,GAAW+D,KAAS,EACpBd,GAAM,SAAUlO,EAAI8O,GAClB,GAAI/J,GAAO/E,EAAIgP,IAAQ,MAAM,IAAI3L,GAAUuL,IAG3C,OAFAE,EAASC,OAAS/O,EAClByO,GAA4BzO,EAAIgP,GAAOF,GAChCA,CACX,EACE/H,GAAM,SAAU/G,GACd,OAAO+E,GAAO/E,EAAIgP,IAAShP,EAAGgP,IAAS,CAAA,CAC3C,EACEb,GAAM,SAAUnO,GACd,OAAO+E,GAAO/E,EAAIgP,GACtB,CACA,CAEA,IAAAC,GAAiB,CACff,IAAKA,GACLnH,IAAKA,GACLoH,IAAKA,GACLe,QArDY,SAAUlP,GACtB,OAAOmO,GAAInO,GAAM+G,GAAI/G,GAAMkO,GAAIlO,EAAI,GACrC,EAoDEmP,UAlDc,SAAUC,GACxB,OAAO,SAAUpP,GACf,IAAI6O,EACJ,IAAK7N,GAAShB,KAAQ6O,EAAQ9H,GAAI/G,IAAKqP,OAASD,EAC9C,MAAM,IAAI/L,GAAU,0BAA4B+L,EAAO,aACvD,OAAOP,CACb,CACA,eKzBIS,GAAwB,CAAA,EAAGpM,qBAE3B+F,GAA2BvH,OAAOuH,yBAGlCsG,GAActG,KAA6BqG,GAAsBlN,KAAK,CAAE,EAAG,GAAK,GAIpFoN,GAAAlG,EAAYiG,GAAc,SAA8BxH,GACtD,IAAI0H,EAAaxG,GAAyB1I,KAAMwH,GAChD,QAAS0H,GAAcA,EAAW/F,UACpC,EAAI4F,GCZJ,IAAI1G,GAAc7H,GACdqB,GAAOnB,GACPyO,GAA6B3L,GAC7BwK,GAA2BpI,GAC3B3C,GAAkB6C,EAClBsC,GAAgBpC,GAChBxB,GAASuH,GACTzD,GAAiB8F,GAGjB3F,GAA4BtH,OAAOuH,yBAIvC0G,GAAArG,EAAYV,GAAcI,GAA4B,SAAkCO,EAAGvB,GAGzF,GAFAuB,EAAI/F,GAAgB+F,GACpBvB,EAAIW,GAAcX,GACda,GAAgB,IAClB,OAAOG,GAA0BO,EAAGvB,EACxC,CAAI,MAAOnG,GAAO,CAChB,GAAIkD,GAAOwE,EAAGvB,GAAI,OAAOuG,IAA0BnM,GAAKsN,GAA2BpG,EAAGC,EAAGvB,GAAIuB,EAAEvB,GACjG,sBCrBIY,GAAc7H,GACdgE,GAAS9D,GAETkB,GAAoB3B,SAASgB,UAE7BoO,GAAgBhH,IAAelH,OAAOuH,yBAEtC/H,GAAS6D,GAAO5C,GAAmB,QAKvC0N,GAAiB,CAEfC,OALW5O,IAA0D,cAAhD,WAAqC,EAAE0F,KAM5DuC,aALiBjI,MAAY0H,IAAgBA,IAAegH,GAAczN,GAAmB,QAAQ0B,eCTnGjD,GAAaK,EACbgD,GAAQF,EAERgM,GAJchP,EAIiBP,SAASmC,UAGvC/B,GAAWqD,GAAM+L,iBACpB/L,GAAM+L,cAAgB,SAAUhQ,GAC9B,OAAO+P,GAAiB/P,EAC5B,OAGAgQ,GAAiB/L,GAAM+L,cCbnBtN,GAAc3B,EACdY,GAAQV,EACRL,GAAamD,EACbgB,GAASoB,GACTyC,GAAcvC,GACd4J,GAA6B1J,GAAsC4C,aACnE6G,GAAgB1D,GAGhB4D,GAFsBvB,GAEqBO,QAC3CiB,GAHsBxB,GAGiB5H,IACvCpB,GAAUL,OAEV7B,GAAiB/B,OAAO+B,eACxBb,GAAcF,GAAY,GAAGG,OAC7BuN,GAAU1N,GAAY,GAAG0N,SACzBC,GAAO3N,GAAY,GAAG2N,MAEtBC,GAAsB1H,KAAgBjH,GAAM,WAC9C,OAAsF,IAA/E8B,GAAe,WAAY,EAAiB,SAAU,CAAEG,MAAO,IAAK2D,MAC7E,GAEIgJ,GAAWjL,OAAOA,QAAQtC,MAAM,UAEhCwN,GAAcC,GAAAtM,QAAiB,SAAUP,EAAOgD,EAAM8J,GACf,YAArC9N,GAAY+C,GAAQiB,GAAO,EAAG,KAChCA,EAAO,IAAMwJ,GAAQzK,GAAQiB,GAAO,wBAAyB,MAAQ,KAEnE8J,GAAWA,EAAQC,SAAQ/J,EAAO,OAASA,GAC3C8J,GAAWA,EAAQE,SAAQhK,EAAO,OAASA,KAC1C7B,GAAOnB,EAAO,SAAYqM,IAA8BrM,EAAMgD,OAASA,KACtEgC,GAAanF,GAAeG,EAAO,OAAQ,CAAEA,MAAOgD,EAAM/C,cAAc,IACvED,EAAMgD,KAAOA,GAEhB0J,IAAuBI,GAAW3L,GAAO2L,EAAS,UAAY9M,EAAM2D,SAAWmJ,EAAQG,OACzFpN,GAAeG,EAAO,SAAU,CAAEA,MAAO8M,EAAQG,QAEnD,IACMH,GAAW3L,GAAO2L,EAAS,gBAAkBA,EAAQnP,YACnDqH,IAAanF,GAAeG,EAAO,YAAa,CAAEE,UAAU,IAEvDF,EAAMpC,YAAWoC,EAAMpC,eAAYX,EAClD,CAAI,MAAOgB,GAAO,CAChB,IAAIgN,EAAQqB,GAAqBtM,GAG/B,OAFGmB,GAAO8J,EAAO,YACjBA,EAAMnK,OAAS2L,GAAKE,GAAyB,iBAAR3J,EAAmBA,EAAO,KACxDhD,CACX,EAIApD,SAASgB,UAAUmB,SAAW6N,GAAY,WACxC,OAAO5P,GAAWL,OAAS4P,GAAiB5P,MAAMmE,QAAUsL,GAAczP,KAC5E,EAAG,8BCrDCK,GAAaG,EACb2K,GAAuBzK,GACvBuP,GAAczM,GACdL,GAAuByC,EAE3B2K,GAAiB,SAAUvH,EAAG5F,EAAKC,EAAO8M,GACnCA,IAASA,EAAU,CAAA,GACxB,IAAIK,EAASL,EAAQhH,WACjB9C,OAAwB/F,IAAjB6P,EAAQ9J,KAAqB8J,EAAQ9J,KAAOjD,EAEvD,GADI/C,GAAWgD,IAAQ4M,GAAY5M,EAAOgD,EAAM8J,GAC5CA,EAAQpQ,OACNyQ,EAAQxH,EAAE5F,GAAOC,EAChBF,GAAqBC,EAAKC,OAC1B,CACL,IACO8M,EAAQM,OACJzH,EAAE5F,KAAMoN,GAAS,UADExH,EAAE5F,EAEpC,CAAM,MAAO9B,GAAO,CACZkP,EAAQxH,EAAE5F,GAAOC,EAChB8H,GAAqBpC,EAAEC,EAAG5F,EAAK,CAClCC,MAAOA,EACP8F,YAAY,EACZ7F,cAAe6M,EAAQO,gBACvBnN,UAAW4M,EAAQQ,aAEzB,CAAI,OAAO3H,CACX,QC1BIgC,GAAqBxK,GAGrBkK,GAFchK,GAEWkQ,OAAO,SAAU,aAK9CC,GAAA9H,EAAY5H,OAAO2P,qBAAuB,SAA6B9H,GACrE,OAAOgC,GAAmBhC,EAAG0B,GAC/B,YCTAqG,GAAAhI,EAAY5H,OAAOmE,sBCDnB,ICcI0L,GAAmBC,GAAmCC,GDdtDrK,GAAarG,GAEb2Q,GAA4B3N,GAC5B4N,GAA8BxL,GAC9BU,GAAWR,GAEX8K,GALclQ,EAKO,GAAGkQ,QAG5BS,GAAiBxK,GAAW,UAAW,YAAc,SAAiBpH,GACpE,IAAIyL,EAAOiG,GAA0BpI,EAAEzC,GAAS7G,IAC5C6F,EAAwB8L,GAA4BrI,EACxD,OAAOzD,EAAwBsL,GAAO1F,EAAM5F,EAAsB7F,IAAOyL,CAC3E,EEbI1G,GAAShE,GACT6Q,GAAU3Q,GACV4Q,GAAiC9N,GACjC2H,GAAuBvF,GCHvBxE,GAAQZ,EACRH,GAAaK,EAEb6Q,GAAc,kBAEdC,GAAW,SAAUC,EAASC,GAChC,IAAIrO,EAAQsO,GAAKC,GAAUH,IAC3B,OAAOpO,IAAUwO,IACbxO,IAAUyO,KACVzR,GAAWqR,GAAatQ,GAAMsQ,KAC5BA,EACR,EAEIE,GAAYJ,GAASI,UAAY,SAAUG,GAC7C,OAAOhN,OAAOgN,GAAQlC,QAAQ0B,GAAa,KAAKS,aAClD,EAEIL,GAAOH,GAASG,KAAO,CAAA,EACvBG,GAASN,GAASM,OAAS,IAC3BD,GAAWL,GAASK,SAAW,IAEnCI,GAAiBT,GCrBb5R,GAAaY,EACbkI,GAA2BhI,GAA2DqI,EACtFmF,GAA8B1K,GAC9B+M,GAAgB3K,GAChBzC,GAAuB2C,EACvBoM,GFAa,SAAUC,EAAQhO,EAAQiO,GAIzC,IAHA,IAAIlH,EAAOmG,GAAQlN,GACfjB,EAAiBiI,GAAqBpC,EACtCL,EAA2B4I,GAA+BvI,EACrD+B,EAAI,EAAGA,EAAII,EAAKlE,OAAQ8D,IAAK,CACpC,IAAI1H,EAAM8H,EAAKJ,GACVtG,GAAO2N,EAAQ/O,IAAUgP,GAAc5N,GAAO4N,EAAYhP,IAC7DF,EAAeiP,EAAQ/O,EAAKsF,EAAyBvE,EAAQf,GAEnE,CACA,EETIoO,GAAWzF,GCJfsG,IAFY7R,EAEY,WACtB,SAAS6M,IAAI,CAGb,OAFAA,EAAEpM,UAAUD,YAAc,KAEnBG,OAAOmR,eAAe,IAAIjF,KAASA,EAAEpM,SAC9C,GCPIuD,GAAShE,GACTH,GAAaK,EACb4D,GAAWd,GAEX+O,GAA2BzM,GAE3BgG,GAHYlG,GAGS,YACrBpD,GAAUrB,OACVqR,GAAkBhQ,GAAQvB,UAK9BwR,GAAiBF,GAA2B/P,GAAQ8P,eAAiB,SAAUtJ,GAC7E,IAAI4B,EAAStG,GAAS0E,GACtB,GAAIxE,GAAOoG,EAAQkB,IAAW,OAAOlB,EAAOkB,IAC5C,IAAI9K,EAAc4J,EAAO5J,YACzB,OAAIX,GAAWW,IAAgB4J,aAAkB5J,EACxCA,EAAYC,UACZ2J,aAAkBpI,GAAUgQ,GAAkB,IACzD,ELpBIpR,GAAQZ,EACRH,GAAaK,EACbD,GAAW+C,EAEX8O,GAAiBxM,GACjByK,GAAgBvK,GAIhB0M,GAHkB3G,GAGS,YAC3B4G,IAAyB,EAOzB,GAAGzH,OAGC,SAFNgG,GAAgB,GAAGhG,SAIjB+F,GAAoCqB,GAAeA,GAAepB,QACxB/P,OAAOF,YAAW+P,GAAoBC,IAHlD0B,IAAyB,KAO7BlS,GAASuQ,KAAsB5P,GAAM,WACjE,IAAII,EAAO,CAAA,EAEX,OAAOwP,GAAkB0B,IAAU7Q,KAAKL,KAAUA,CACpD,MAE4BwP,GAAoB,CAAA,GAK3C3Q,GAAW2Q,GAAkB0B,MAChCnC,GAAcS,GAAmB0B,GAAU,WACzC,OAAO1S,IACX,GAGA,IAAA4S,GAAiB,CACf5B,kBAAmBA,GACnB2B,uBAAwBA,IM9CtBzP,GAAiB1C,GAA+CuI,EAChEvE,GAAS9D,GAGTmS,GAFkBrP,GAEc,eAEpCsP,GAAiB,SAAUX,EAAQY,EAAKC,GAClCb,IAAWa,IAAQb,EAASA,EAAOlR,WACnCkR,IAAW3N,GAAO2N,EAAQU,KAC5B3P,GAAeiP,EAAQU,GAAe,CAAEvP,cAAc,EAAMD,MAAO0P,GAEvE,ECXI/B,GAAoBxQ,GAAuCwQ,kBAC3DzD,GAAS7M,GACTsN,GAA2BxK,GAC3BsP,GAAiBlN,GACjBqN,GAAYnN,GAEZoN,GAAa,WAAc,OAAOlT,IAAK,ECNvCmC,GAAc3B,EACd8G,GAAY5G,GCDZD,GAAWD,ECAX2S,GDEa,SAAU5S,GACzB,OAAOE,GAASF,IAA0B,OAAbA,CAC/B,ECFI6E,GAAUL,OACVlC,GAAaC,UCFbsQ,GHEa,SAAUxI,EAAQxH,EAAK2D,GACtC,IAEE,OAAO5E,GAAYmF,GAAUnG,OAAOuH,yBAAyBkC,EAAQxH,GAAK2D,IAC9E,CAAI,MAAOzF,GAAO,CAClB,EGNIb,GAAWC,EACXqC,GAAyBS,EACzB6P,GDCa,SAAU9S,GACzB,GAAI4S,GAAoB5S,GAAW,OAAOA,EAC1C,MAAM,IAAIsC,GAAW,aAAeuC,GAAQ7E,GAAY,kBAC1D,ECEA+S,GAAiBnS,OAAOoS,iBAAmB,aAAe,CAAA,EAAK,WAC7D,IAEIlD,EAFAmD,GAAiB,EACjBhS,EAAO,CAAA,EAEX,KACE6O,EAAS+C,GAAoBjS,OAAOF,UAAW,YAAa,QACrDO,EAAM,IACbgS,EAAiBhS,aAAgBkM,KACrC,CAAI,MAAOpM,GAAO,CAChB,OAAO,SAAwB0H,EAAGyK,GAGhC,OAFA1Q,GAAuBiG,GACvBqK,GAAmBI,GACdhT,GAASuI,IACVwK,EAAgBnD,EAAOrH,EAAGyK,GACzBzK,EAAE0K,UAAYD,EACZzK,GAHkBA,CAI7B,CACA,CAjB+D,QAiBzD1I,GC3BFqT,GTuBa,SAAUxD,EAAShM,GAClC,IAGYgO,EAAQ/O,EAAKwQ,EAAgBC,EAAgB3E,EAHrD4E,EAAS3D,EAAQgC,OACjB4B,EAAS5D,EAAQpQ,OACjBiT,EAAS7C,EAAQ6D,KASrB,GANE7B,EADE4B,EACOnU,GACAoT,EACApT,GAAWkU,IAAW3Q,GAAqB2Q,EAAQ,CAAA,GAEnDlU,GAAWkU,IAAWlU,GAAWkU,GAAQ7S,UAExC,IAAKmC,KAAOe,EAAQ,CAQ9B,GAPA0P,EAAiB1P,EAAOf,GAGtBwQ,EAFEzD,EAAQ8D,gBACV/E,EAAaxG,GAAyByJ,EAAQ/O,KACf8L,EAAW7L,MACpB8O,EAAO/O,IACtBoO,GAASuC,EAAS3Q,EAAM0Q,GAAUd,EAAS,IAAM,KAAO5P,EAAK+M,EAAQ+D,cAE5C5T,IAAnBsT,EAA8B,CAC3C,UAAWC,UAAyBD,EAAgB,SACpD1B,GAA0B2B,EAAgBD,EAChD,EAEQzD,EAAQ1K,MAASmO,GAAkBA,EAAenO,OACpDyI,GAA4B2F,EAAgB,QAAQ,GAEtDtD,GAAc4B,EAAQ/O,EAAKyQ,EAAgB1D,EAC/C,CACA,ESpDItO,GAAOnB,GAGPL,GAAayF,EACbqO,GLGa,SAAUC,EAAqBC,EAAMC,EAAMC,GAC1D,IAAI1B,EAAgBwB,EAAO,YAI3B,OAHAD,EAAoBnT,UAAYsM,GAAOyD,GAAmB,CAAEsD,KAAMtG,KAA2BuG,EAAiBD,KAC9GxB,GAAesB,EAAqBvB,GAAe,GACnDI,GAAUJ,GAAiBK,GACpBkB,CACT,EKRI9B,GAAiBvG,GACjBwH,GAAiBnF,GACjB0E,GAAiB0B,GACjBtG,GAA8BuG,GAC9BlE,GAAgBmE,GAEhBzB,GAAY0B,GAGZC,GAZehP,GAYqB2J,OACpCG,GAbe9J,GAa2BgD,aAC1CoI,GAJgB6D,GAIkB7D,kBAClC2B,GALgBkC,GAKuBlC,uBACvCD,GARkBoC,GAQS,YAC3BC,GAAO,OACPC,GAAS,SACTC,GAAU,UAEV/B,GAAa,WAAc,OAAOlT,IAAK,ECxBvCiD,GAAkBzC,EAClB0U,G5BgBa,SAAU9R,GACzBqK,GAAeD,IAAapK,IAAO,CACrC,E4BjBI6P,GAAYzP,GACZ2R,GAAsBvP,GACtB1C,GAAiB4C,GAA+CiD,EAChEqM,GDqBa,SAAUC,EAAUhB,EAAMD,EAAqBE,EAAMgB,EAASC,EAAQC,GACrFrB,GAA0BC,EAAqBC,EAAMC,GAErD,IAqBImB,EAA0BC,EAASC,EArBnCC,EAAqB,SAAUC,GACjC,GAAIA,IAASP,GAAWQ,EAAiB,OAAOA,EAChD,IAAKnD,IAA0BkD,GAAQA,KAAQE,EAAmB,OAAOA,EAAkBF,GAE3F,OAAQA,GACN,KAAKd,GACL,KAAKC,GACL,KAAKC,GAAS,OAAO,WAAqB,OAAO,IAAIb,EAAoBpU,KAAM6V,EAAM,EAGvF,OAAO,WAAc,OAAO,IAAIzB,EAAoBpU,KAAM,CAC9D,EAEM6S,EAAgBwB,EAAO,YACvB2B,GAAwB,EACxBD,EAAoBV,EAASpU,UAC7BgV,EAAiBF,EAAkBrD,KAClCqD,EAAkB,eAClBT,GAAWS,EAAkBT,GAC9BQ,GAAmBnD,IAA0BsD,GAAkBL,EAAmBN,GAClFY,EAA6B,UAAT7B,GAAmB0B,EAAkBI,SAA4BF,EA+BzF,GA3BIC,IACFT,EAA2BnD,GAAe4D,EAAkBrU,KAAK,IAAIwT,OACpClU,OAAOF,WAAawU,EAAyBnB,OAC5DhC,GAAemD,KAA8BzE,KACvDuC,GACFA,GAAekC,EAA0BzE,IAC/B3Q,GAAWoV,EAAyB/C,MAC9CnC,GAAckF,EAA0B/C,GAAUQ,KAItDJ,GAAe2C,EAA0B5C,GAAe,IAMxD+B,IAAwBU,IAAYN,IAAUiB,GAAkBA,EAAe5P,OAAS2O,KAC1EtF,GACdxB,GAA4B6H,EAAmB,OAAQf,KAEvDgB,GAAwB,EACxBF,EAAkB,WAAoB,OAAOjU,GAAKoU,EAAgBjW,KAAM,IAKxEsV,EAMF,GALAI,EAAU,CACRU,OAAQR,EAAmBZ,IAC3B9J,KAAMqK,EAASO,EAAkBF,EAAmBb,IACpDoB,QAASP,EAAmBX,KAE1BO,EAAQ,IAAKG,KAAOD,GAClB/C,IAA0BqD,KAA2BL,KAAOI,KAC9DxF,GAAcwF,EAAmBJ,EAAKD,EAAQC,SAE3ChC,GAAE,CAAExB,OAAQkC,EAAMZ,OAAO,EAAMS,OAAQvB,IAA0BqD,GAAyBN,GASnG,OAL4BK,EAAkBrD,MAAcoD,GAC1DvF,GAAcwF,EAAmBrD,GAAUoD,EAAiB,CAAEzP,KAAMiP,IAEtErC,GAAUoB,GAAQyB,EAEXJ,CACT,EC9FIW,GCJa,SAAUhT,EAAOiT,GAChC,MAAO,CAAEjT,MAAOA,EAAOiT,KAAMA,EAC/B,EDIIjO,GAAcmM,GAEd+B,GAAiB,iBACjBC,GAAmBrB,GAAoBxH,IACvCiC,GAAmBuF,GAAoBvG,UAAU2H,IAYrDE,GAAiBrB,GAAe1H,MAAO,QAAS,SAAUgJ,EAAUC,GAClEH,GAAiBxW,KAAM,CACrB8O,KAAMyH,GACNpE,OAAQlP,GAAgByT,GACxBzM,MAAO,EACP0M,KAAMA,GAIV,EAAG,WACD,IAAIrI,EAAQsB,GAAiB5P,MACzBmS,EAAS7D,EAAM6D,OACflI,EAAQqE,EAAMrE,QAClB,IAAKkI,GAAUlI,GAASkI,EAAOnL,OAE7B,OADAsH,EAAM6D,OAAS,KACRkE,QAAuB/V,GAAW,GAE3C,OAAQgO,EAAMqI,MACZ,IAAK,OAAQ,OAAON,GAAuBpM,GAAO,GAClD,IAAK,SAAU,OAAOoM,GAAuBlE,EAAOlI,IAAQ,GAC5D,OAAOoM,GAAuB,CAACpM,EAAOkI,EAAOlI,KAAS,EAC1D,EAAG,UAKCmM,GAASnD,GAAU2D,UAAY3D,GAAUvF,MAQ7C,GALAwH,GAAiB,QACjBA,GAAiB,UACjBA,GAAiB,WAGD7M,IAA+B,WAAhB+N,GAAO/P,KAAmB,IACvDnD,GAAekT,GAAQ,OAAQ,CAAE/S,MAAO,UAC1C,CAAE,MAAO/B,GAAO,CE5DhB,IAAI1B,GAAaY,EACbqW,GCCa,CACfC,YAAa,EACbC,oBAAqB,EACrBC,aAAc,EACdC,eAAgB,EAChBC,YAAa,EACbC,cAAe,EACfC,aAAc,EACdC,qBAAsB,EACtBC,SAAU,EACVC,kBAAmB,EACnBC,eAAgB,EAChBC,gBAAiB,EACjBC,kBAAmB,EACnBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,SAAU,EACVC,iBAAkB,EAClBC,OAAQ,EACRC,YAAa,EACbC,cAAe,EACfC,cAAe,EACfC,eAAgB,EAChBC,aAAc,EACdC,cAAe,EACfC,iBAAkB,EAClBC,iBAAkB,EAClBC,eAAgB,EAChBC,iBAAkB,EAClBC,cAAe,EACfC,UAAW,GD/BT7X,GAAwByC,EACxBqV,GAAuBjT,GACvBsI,GAA8BpI,GAC9BgN,GAAiB9M,GAGjB0M,GAFkB3G,GAES,YAC3B+M,GAAcD,GAAqBzC,OAEnC2C,GAAkB,SAAUC,EAAqBC,GACnD,GAAID,EAAqB,CAEvB,GAAIA,EAAoBtG,MAAcoG,GAAa,IACjD5K,GAA4B8K,EAAqBtG,GAAUoG,GACjE,CAAM,MAAOxX,GACP0X,EAAoBtG,IAAYoG,EACtC,CAEI,GADAhG,GAAekG,EAAqBC,GAAiB,GACjDpC,GAAaoC,GAAkB,IAAK,IAAIC,KAAeL,GAEzD,GAAIG,EAAoBE,KAAiBL,GAAqBK,GAAc,IAC1EhL,GAA4B8K,EAAqBE,EAAaL,GAAqBK,GAC3F,CAAQ,MAAO5X,GACP0X,EAAoBE,GAAeL,GAAqBK,EAChE,CAEA,CACA,EAEA,IAAK,IAAID,MAAmBpC,GAC1BkC,GAAgBnZ,GAAWqZ,KAAoBrZ,GAAWqZ,IAAiBhY,UAAWgY,IAGxFF,GAAgBhY,GAAuB,gBEpChC,IAAMoY,GACJ,qDADIA,GAEE,wIAFFA,GAGA,kEAHAA,GAIA,4CAJAA,GAKH,sDALGA,GAMH,qDANGA,GAOA,4CAPAA,GAQH,kDARGA,GASH,wDATGA,GAUE,yCAVFA,GAWD,iDAXCA,GAYD,mDAZCA,GAaO,2CAbPA,GAca,0IAdbA,GAeO,+CAfPA,GAgBO,6BAhBPA,GAiBI,6BAjBJA,GAkBG,4BAIT,SAASC,GAAOC,GACrBC,QAAQhY,MAAM,yBAA2B+X,EAAK,8FAA+F,GAC/I,CACO,SAASE,GAAOF,GACrBC,QAAQhY,MAAM,yBAA2B+X,EAAK,GAAI,GACpD,CACO,SAASG,GAAMH,GACpBC,QAAQG,KAAK,yBAA2BJ,EAAK,GAAI,GACnD,CAIO,SAASK,GAAOL,GACrBC,QAAQK,MAAM,yBAA2BN,EAAK,gBAAiB,GACjE,CCjCO,SAASO,GAAUzH,EAAQ0H,EAAQxT,EAAMhD,GACzClC,OAAOF,UAAUS,eAAeG,KAAKgY,EAAQxT,KAChDwT,EAAOxT,GAAQ8L,EAAOpF,MAAM1G,GAC5B8L,EAAOpF,MAAM1G,GAAQhD,EAEzB,CACO,SAASyW,GAAa3H,EAAQ0H,GACnC,IAAK,IAAIE,KAAQF,OACMvZ,IAAjBuZ,EAAOE,GACT5H,EAAOpF,MAAMgN,GAAQF,EAAOE,GAE5B5H,EAAOpF,MAAMgN,GAAQ,EAE3B,CAEO,SAASC,GAAgB7H,EAAQ8H,EAAOlR,GAAiB,IAAdoH,EAAOjO,UAAA8E,OAAA,QAAA1G,IAAA4B,UAAA,GAAAA,UAAA,GAAG,CAAA,EAE1D,OADAiQ,EAAO+H,iBAAiBD,EAAOlR,EAAGoH,GAC3B,WACLgC,EAAOgI,oBAAoBF,EAAOlR,EAAGoH,EACvC,CACF,CACO,SAASiK,GAAgBC,GAC9B,IACEA,GACF,CAAE,MAAOC,GACPlB,GAAOD,IACPG,QAAQhY,MAAMgZ,EAChB,CACF,CACO,SAASC,GAAqBC,GACnC,GAAK9M,MAAM+M,QAAQD,GAAnB,CACA,IAAK,IAAIH,KAAUG,EACjBJ,GAAgBC,GAElBG,EAAQxT,OAAS,CAJY,CAK/B,CCnCO,SAAS0T,KACd,MAAO,CACLC,SAAS,EACTC,MAAO,EACPC,MAAAA,GAAU,EACVC,UAAW,EACXC,UAAW,EACX/W,KAAM,YACN6F,IAAK,EACLD,IAAK,EACLoR,MAAO,EACPC,QAAQ,EACRC,WAAW,EACXC,QAAQ,EACRC,QAAS,OACTC,KAAAA,GAAS,EACTlJ,OAAQ,KACRmJ,UAAW,KACXC,OAAO,EACPC,KAAAA,GAAS,EACTC,OAAAA,GAAW,EAEf,CAEO,IAAMC,GAAkB,CAC7B7R,IAAK,EACLD,IAAK,EACLoR,MAAO,EACPhX,KAAM,YACNiX,QAAQ,EACRC,WAAW,EACXE,QAAS,QAaJ,IAAMO,GAAgB,CAC3B3X,KAAK4X,GACqB,iBAAbA,GAAsC,SAAbA,GAClCpC,GAAML,IACC,QAEA,YAGXgC,OAAOU,GACwB,kBAAfA,EACVA,IACChc,OAAOic,aAAcjc,OAAOic,WAAW,oCAAoCC,QAElFlS,IAAImS,GACqB,iBAAZA,GACTzC,GAAOJ,IACA,GAEL6C,EAAU,GACZzC,GAAOJ,IACA,GACE6C,EAAU,MACnBzC,GAAOJ,IACA,MAEA6C,EAGXpS,IAAIqS,GACqB,iBAAZA,GACT1C,GAAOJ,IACA,IAEL8C,GAAW,KACbzC,GAAML,IAEJ8C,EAAU,GACZ1C,GAAOJ,IACA,GACE8C,EAAU,MACnB1C,GAAOJ,IACA,MAEA8C,GAGXC,QAAOA,CAACF,EAASC,IACXD,EAAUC,GACZ1C,GAAOJ,IACA,CAAC8C,EAASD,IAEV,CAACA,EAASC,GAGrBjB,MAAMmB,GACqB,iBAAdA,GACT5C,GAAOJ,IACA,KAELgD,EAAY,IACd5C,GAAOJ,IACA,IACEgD,EAAY,IACrB5C,GAAOJ,IACA,MAEAgD,EAAY,uBCnGlB,SAAyBC,GAAuB,IAAdjM,EAAOjO,UAAA8E,OAAA,QAAA1G,IAAA4B,UAAA,GAAAA,UAAA,GAAG,CAAA,EACjD,GAAsB,oBAAXrC,QAA8C,oBAAbM,SAE1C,OADAiZ,GAAOD,IACAuB,KAGT,KAAM0B,GAAWA,aAAmBC,SAElC,OADAjD,GAAOD,IACAuB,KAGT,IAAM4B,EACiC,mBAA1BC,sBACFA,sBAAsB9a,KAAK5B,QAE5BkJ,GAAMyT,WAAW,IAAMzT,EAAE0T,KAAKC,OAAQ,IAK1CC,EDED,SAA2BA,GAOhC,OANAA,EAAK3Y,KAAO2X,GAAc3X,KAAK2Y,EAAK3Y,MACpC2Y,EAAKxB,OAASQ,GAAcR,OAAOwB,EAAKxB,SACvCwB,EAAK9S,IAAK8S,EAAK/S,KAAO+R,GAAcO,QAAQS,EAAK9S,IAAK8S,EAAK/S,KAC5D+S,EAAK9S,IAAM8R,GAAc9R,IAAI8S,EAAK9S,KAClC8S,EAAK/S,IAAM+R,GAAc/R,IAAI+S,EAAK/S,KAClC+S,EAAK3B,MAAQW,GAAcX,MAAM2B,EAAK3B,OAC/B2B,CACT,CCVeC,CAAiBC,EAAAA,EAAA,CAAA,EACzBnB,IACAvL,IAECmL,EAAYc,EAAQU,cAC1B,IAAKxB,EAEH,OADAlC,GAAOD,IACAuB,KAGT,IAAIqC,EAAWJ,EAAKvB,QAGhB4B,EAAmB,CAAA,EACvBpD,GAAU0B,EAAW0B,EAAkB,WAAY,QACnDpD,GAAU0B,EAAW0B,EAAkB,cAAe,eACtDpD,GAAU0B,EAAW0B,EAAkB,WAAY,YAEnD,IAAIC,EAA0D,QAAjDpd,OAAOqd,iBAAiB5B,GAAW6B,UAE5CC,EAAiB,CAAA,EAErBxD,GAAUwC,EAASgB,EAAgB,qBAAsB,UACzDxD,GAAUwC,EAASgB,EAAgB,UAAW,gBAC9CxD,GAAUwC,EAASgB,EAAgB,WAAY,YAC3CT,EAAK1B,SACW,SAAd0B,EAAK3Y,KACP4V,GAAUwC,EAASgB,EAAgB,aAAc,QAEjDxD,GAAUwC,EAASgB,EAAgB,aAAc,cAKrD,IAWIC,EAAuBC,EAXvB1C,EAAQ,EACR2C,EAAe,EACfC,EAAM,EACNC,EAAM,EACNC,EAAc,EACdC,EAAc,EACdC,EAAW,EACXC,EAAW,EAEXC,GAAW,EACXC,GAAiB,EAEjBC,GAAe,EAEfC,EAAiB,CAAA,EAErB,SAASC,IACPD,EAAeE,KAAO7C,EAAU8C,wBAChCH,EAAeI,WAAajC,EAAQkC,YACpCL,EAAeM,WAAanC,EAAQoC,aACpCP,EAAeQ,WAAarC,EAAQsC,WACpCT,EAAeU,WAAavC,EAAQwC,UACpCX,EAAeY,aAAevD,EAAUwD,UACxCb,EAAec,aAAezD,EAAU0D,WACxCf,EAAegB,aAAe3D,EAAU4D,YACxCjB,EAAekB,aAAe7D,EAAU8D,aACxCnB,EAAeoB,YAAcpC,GAAU3B,EAAUgE,WAAahE,EAAUgE,WACxErB,EAAesB,WAAajE,EAAUkE,UAEpC9B,EADEO,EAAeI,WAAazD,EAAQqD,EAAegB,aACvChC,IAAWgB,EAAegB,aAAehB,EAAeI,WAAazD,GAAS,GAAKqD,EAAegB,aAAehB,EAAeI,WAAazD,GAAS,EAEtJ,EAGd+C,EADEM,EAAeM,WAAa3D,EAAQqD,EAAekB,cACtClB,EAAekB,aAAelB,EAAeM,WAAa3D,GAAS,EAEpE,CAElB,CAEA,SAAS6E,IACW,SAAd9C,EAAK3Y,KACPoY,EAAQrP,MAAM2S,KAAO9E,GAErBwB,EAAQrP,MAAM4S,gBAAe,GAAA/O,OAAMqM,EAAS,OAAS,IAAG,MACxDb,EAAQrP,MAAM6S,UAAS,aAAAhP,OAAgB8M,EAAW,QAAA9M,OAAO+M,EAAW,cAAA/M,OAAagK,EAAK,MAIxFU,EAAUgE,WAAarC,GAAUgB,EAAeoB,YAAcpB,EAAeoB,YAC7E/D,EAAUkE,UAAYvB,EAAesB,WACV,mBAAhB5C,EAAK9B,QACd8B,EAAK9B,OAAO,CAAED,MAAOA,EAAOpR,EAAGyU,EAAeoB,YAAaQ,EAAG5B,EAAesB,aAE/EvB,GAAe,CACjB,CAEA,SAAS8B,IACP5B,IACAuB,GACF,CAKA,SAASM,EAAWC,GAClBpC,EAAWoC,EAAOxW,EAClBqU,EAAWmC,EAAOH,EAElBtC,EAAe7d,KAAKmK,IAAInK,KAAKkK,IAAI+S,EAAK9S,IAAK0T,EAAeA,GAAgByC,EAAOC,MAAQtD,EAAK3B,QAAS2B,EAAK/S,KAEvGoU,IACHA,GAAe,EACf1B,EAAI4D,GAER,CACA,SAASA,IACP,IAAMC,EAAO5C,EAAe3C,EAExBlb,KAAK0gB,IAAID,GAAQ,MAASxD,EAAKxB,QAAwB,SAAdwB,EAAK3Y,MAChDqc,EAAkB,IAAMF,GACxB7D,EAAI4D,KAEJG,EAAkB,EAAGF,GACrBnC,GAAe,EAEnB,CACA,SAASqC,EAAkBC,EAAMH,GAE/B3C,EAAMI,EAAWK,EAAeE,KAAKoC,KAAOtC,EAAeQ,WAAaR,EAAec,aAAerB,EACtGD,EAAMI,EAAWI,EAAeE,KAAKqC,IAAMvC,EAAeU,WAAaV,EAAeY,aAAelB,EACrG,IAAI8C,GAAajD,EAAMS,EAAeoB,aAAezE,EACjD8F,GAAajD,EAAMQ,EAAesB,YAAc3E,EAEpDA,GAASuF,EAAOG,EAEZrC,EAAeI,WAAazD,EAAQqD,EAAegB,cAErDvB,EAAcT,IAAWgB,EAAegB,aAAehB,EAAeI,WAAazD,GAAS,GAAKqD,EAAegB,aAAehB,EAAeI,WAAazD,GAAS,EACpKqD,EAAeoB,YAAc,IAE7B3B,EAAc,EACdO,EAAeoB,YAAcoB,EAAY7F,EAAQ4C,EAAME,GAGrDO,EAAeM,WAAa3D,EAAQqD,EAAekB,cAErDxB,GAAeM,EAAekB,aAAelB,EAAeM,WAAa3D,GAAS,EAClFqD,EAAesB,WAAa,IAE5B5B,EAAc,EACdM,EAAesB,WAAamB,EAAY9F,EAAQ6C,EAAME,GAGxD8B,GACF,CAtDAK,IAqGA,IAAIa,EAAoB,GACxBA,EAAkB7c,KAAKkW,GAAgBsB,EAAW,QA9ClD,SAAwBsF,GACjB7C,IACHA,GAAiB,EACjBG,KAEF2C,aAAaxD,GACTuD,EAAEE,UACJF,EAAEG,iBACFH,EAAEI,4BAEAJ,EAAEE,SAAWhD,EAgBfiC,EAAW,CACTE,MAfE,WAAYW,EAIVlhB,KAAK0gB,IAAIQ,EAAEK,QAAU,IAAML,EAAEK,OAAS,GAAM,EAEjCL,EAAEK,OAAS,CAAC,EAAG,GAAI,KAAKL,EAAEM,WAAa,GAGvCN,EAAEK,OAAS,CAAC,EAAG,GAAI,KAAKL,EAAEM,WAAa,GAAK,IAElD,gBAAiBN,EACI,IAAhBA,EAAEO,eACgB,IAAfP,EAAEQ,YAAqB,EAGxC5X,EAAGyT,EAASpd,OAAOwhB,WAAaT,EAAEU,QAAUV,EAAEU,QAC9CzB,EAAGe,EAAEW,UAMPzD,GAAW,EAGbT,EAAwBb,WAAW,WACjC0B,IACAJ,GAAW,EACXC,GAAiB,CACnB,EAAG,IACL,EAG2E,CAAEyD,SAAS,KAMtFb,EAAkB7c,KAAKkW,GAAgBsB,EAAW,SAJlD,WACEgC,GAA0BuD,aAAavD,GACvCA,EAAyBd,WAAW0B,EAAuB,IAC7D,EAC6E,CAAEsD,SAAS,KAIxF,IAAIC,EAAgB,GAEpB,SAASC,EAAad,IAEhBA,EAAEE,SAAWF,EAAEe,WACH,MAAVf,EAAExd,KAA0B,WAAXwd,EAAEgB,MAAmC,KAAdhB,EAAEiB,QAC5C9B,EAAW,CACTE,OAAQrF,EAAQ,GAAKA,EAAQ+B,EAAK3B,MAClCxR,EAAGgU,EACHqC,EAAGpC,EACHU,KAAM7C,EAAU8C,wBAChBiB,YAAa/D,EAAUgE,WACvBC,WAAYjE,EAAUkE,YAEL,MAAVoB,EAAExd,KAA0B,UAAXwd,EAAEgB,MAC5BhB,EAAEG,iBACFhB,EAAW,CACTE,OAAO,GAAMrF,EACbpR,EAAG8R,EAAU4D,YAAc,EAC3BW,EAAGvE,EAAU8D,aAAe,EAC5BjB,KAAM7C,EAAU8C,wBAChBiB,YAAa/D,EAAUgE,WACvBC,WAAYjE,EAAUkE,aAEL,MAAVoB,EAAExd,KAA0B,UAAXwd,EAAEgB,OAC5BhB,EAAEG,iBACFhB,EAAW,CACTE,MAAO,GAAKrF,EACZpR,EAAG8R,EAAU4D,YAAc,EAC3BW,EAAGvE,EAAU8D,aAAe,EAC5BjB,KAAM7C,EAAU8C,wBAChBiB,YAAa/D,EAAUgE,WACvBC,WAAYjE,EAAUkE,aAG9B,CAEI7C,EAAKzB,WAAWuG,EAAc3d,KAAKkW,GAAgB7Z,SAAU,UAAWuhB,EAAc,CAAEF,SAAS,KAIrG,IAAIM,GAAkB,EACpBC,GAAiB,EACjBC,GAAiB,EACjBC,GAAiB,EACfC,GAA4C,IAA/BnF,EAASzS,QAAQ,UAC9B6X,GAA0C,IAA9BpF,EAASzS,QAAQ,SAC7B8X,EAAa,CAAE5Y,EAAG,EAAGqW,EAAG,GAExBwC,EAAwB,GACxBC,EAAsB,GACtBC,EAAsB,GAE1B,SAASC,IAELlH,EAAUvO,MAAM0V,OADbV,GAAkBG,GAAgBD,GAAkBE,GAAeL,GAAmBE,EAChE,WAChBF,EACgB,OAEA,EAE7B,CAEA,SAASY,EAAoB9B,MAEK,IAA7B7D,EAASzS,QAAQ,SAAkBsW,EAAEE,UACP,IAA9B/D,EAASzS,QAAQ,UAAmBsW,EAAE+B,WACV,IAA5B5F,EAASzS,QAAQ,QAAiBsW,EAAEgC,SACP,IAA7B7F,EAASzS,QAAQ,SAAkBsW,EAAEe,UACtBG,IAChBA,GAAkB,EAClBU,IACAjI,GAAqB8H,GAEzB,CACA,SAASQ,EAAyBjC,GAChCkB,GAAkB,EAClBC,GAAiB,EACjBS,IACAjI,GAAqB8H,EACvB,CACA,SAASS,EAAsBlC,KAEG,IAA7B7D,EAASzS,QAAQ,SAAkBsW,EAAEE,UACP,IAA9B/D,EAASzS,QAAQ,UAAmBsW,EAAE+B,WACV,IAA5B5F,EAASzS,QAAQ,QAAiBsW,EAAEgC,SACP,IAA7B7F,EAASzS,QAAQ,SAAkBsW,EAAEe,WACtBG,IAChBA,GAAkB,EAClBU,IACAH,EAAsBve,KAAKkW,GAAgB7Z,SAAU,QAASuiB,IAC9DL,EAAsBve,KAAKkW,GAAgBna,OAAQ,OAAQgjB,IAE/D,CAEA,SAASE,EAAqBnC,IACvBkB,GAAgC,IAAblB,EAAEoC,QAAkBd,GAA2B,IAAbtB,EAAEoC,QAAkBb,GAA0B,IAAbvB,EAAEoC,UAC3FpC,EAAEG,iBACe,IAAbH,EAAEoC,OACJjB,GAAiB,EACK,IAAbnB,EAAEoC,OACXf,GAAiB,EACK,IAAbrB,EAAEoC,SACXhB,GAAiB,GAEnBQ,IACAtE,IACAkE,EAAW5Y,EAAIyU,EAAeoB,YAAcuB,EAAEU,QAC9Cc,EAAWvC,EAAI5B,EAAesB,WAAaqB,EAAEW,QAC7Ce,EAAoBxe,KAAKkW,GAAgB7Z,SAAU,YAAa8iB,IAChEX,EAAoBxe,KAAKkW,GAAgB7Z,SAAU,UAAW+iB,IAElE,CACA,SAASD,EAAqBrC,IAEzBkB,GAAmBE,GACnBD,IAAiD,IAA/BhF,EAASzS,QAAQ,WACnC2X,IAAgD,IAA9BlF,EAASzS,QAAQ,YAEpCgR,EAAUgE,WAAa8C,EAAW5Y,EAAIoX,EAAEU,QACxChG,EAAUkE,UAAY4C,EAAWvC,EAAIe,EAAEW,QACvCrD,IAC0B,mBAAfvB,EAAKtB,OACdsB,EAAKtB,MAAM,CAAET,MAAOA,EAAOpR,EAAGyU,EAAeoB,YAAaQ,EAAG5B,EAAesB,aAGlF,CACA,SAAS2D,EAAmBtC,GACT,IAAbA,EAAEoC,OACJjB,GAAiB,EACK,IAAbnB,EAAEoC,OACXf,GAAiB,EACK,IAAbrB,EAAEoC,SACXhB,GAAiB,GAEnBQ,IACAjI,GAAqB+H,EACvB,CACA,SAASa,EAAqBvC,IACM,IAA9B7D,EAASzS,QAAQ,UAAiBsW,EAAEG,gBAC1C,GAG+B,IAA7BhE,EAASzS,QAAQ,cACjByS,EAASzS,QAAQ,WACY,IAA7ByS,EAASzS,QAAQ,UACW,IAA5ByS,EAASzS,QAAQ,QACjB4X,GACAC,KAEAI,EAAoBze,KAAKkW,GAAgBsB,EAAW,YAAayH,IACjER,EAAoBze,KAAKkW,GAAgB7Z,SAAU,UAAW2iB,EAAuB,CAAEtB,SAAS,KAChGe,EAAoBze,KAAKkW,GAAgBsB,EAAW,cAAe6H,KAKrE,IAEIC,EAASC,EA8DTC,EAA0BC,GAhE1BC,GAAa,EACbC,IAAiB,EAmDjBC,GAAkB,GA2CtB,MA1CI,mBAAoB7e,WAAaA,UAAU8e,eAAiB,IAC9DD,GAAgB5f,KAAKkW,GAAgBsB,EAAW,aAlDlD,SAA8BsF,GACxBA,EAAEgD,SAAWhD,EAAEgD,QAAQ5c,QAAU,IACnCyc,IAAiB,EACjBvF,IACAsF,GAAa9jB,KAAKmkB,KAChBnkB,KAAKokB,IAAIlD,EAAEgD,QAAQ,GAAGG,MAAQnD,EAAEgD,QAAQ,GAAGG,MAAO,GAAKrkB,KAAKokB,IAAIlD,EAAEgD,QAAQ,GAAGI,MAAQpD,EAAEgD,QAAQ,GAAGI,MAAO,IAG3GZ,GAAWxC,EAAEgD,QAAQ,GAAGG,MAAQnD,EAAEgD,QAAQ,GAAGG,OAAS,EACtDV,GAAWzC,EAAEgD,QAAQ,GAAGI,MAAQpD,EAAEgD,QAAQ,GAAGI,OAAS,EAE1D,EAuCsF,CAAExC,SAAS,KAC/FkC,GAAgB5f,KAAKkW,GAAgBsB,EAAW,YAvClD,SAA6BsF,GAC3B,GAAIA,EAAEgD,SAAWhD,EAAEgD,QAAQ5c,QAAU,EAAG,CACtC,IAAIid,EAAOvkB,KAAKmkB,KACdnkB,KAAKokB,IAAIlD,EAAEgD,QAAQ,GAAGG,MAAQnD,EAAEgD,QAAQ,GAAGG,MAAO,GAAKrkB,KAAKokB,IAAIlD,EAAEgD,QAAQ,GAAGI,MAAQpD,EAAEgD,QAAQ,GAAGI,MAAO,IAM3GZ,GAAWxC,EAAEgD,QAAQ,GAAGG,MAAQnD,EAAEgD,QAAQ,GAAGG,OAAS,EACtDV,GAAWzC,EAAEgD,QAAQ,GAAGI,MAAQpD,EAAEgD,QAAQ,GAAGI,OAAS,EACtDjE,EAAW,CACTE,OAAQuD,GAAaS,GAAQ,EAC7Bza,EAAG4Z,EACHvD,EAAGwD,IAKLG,GAAaS,CACf,CACF,EAkBoF,CAAEzC,SAAS,KAC7FkC,GAAgB5f,KAAKkW,GAAgBsB,EAAW,WAlBlD,SAA4BsF,GACtB6C,KACFA,IAAiB,EACjB1D,EAAW,CACTE,MAAO,EACPzW,EAAG4Z,EACHvD,EAAGwD,IAMT,EAMkF,CAAE7B,SAAS,MAK7Fb,EAAkB7c,KAAKkW,GAAgBna,OAAQ,SAAUigB,IACjC,aAAxB3f,SAAS+jB,YAA6BvD,EAAkB7c,KAAKkW,GAAgBna,OAAQ,OAAQigB,IAGzFjgB,OAAOskB,gBACTZ,GAAW,IAAIY,eAAe,SAAUhO,GACjCA,EAAQnP,SACb6Z,aAAayC,GACbA,EAA2B9G,WAAWsD,EAAkB,IAC1D,IACSsE,QAAQhI,IAEjBmH,GAAW,IAAIc,iBAAiB,WAC9BxD,aAAayC,GACbA,EAA2B9G,WAAWsD,EAAkB,IAC1D,IACSsE,QAAQhI,EAAS,CAAEkI,WAAW,EAAMC,SAAS,EAAMC,eAAe,IAG7E9K,GAAO,0BACPA,GAAM,uBAAA9I,OAEE+L,EAAK3Y,KAAI,eAAA4M,OACR+L,EAAK9S,IAAG,eAAA+G,OACR+L,EAAK/S,IAAG,eAAAgH,OACK,IAAb+L,EAAK3B,MAAW,gBAAApK,OACf+L,EAAKxB,OAAM,iBAAAvK,OACV+L,EAAKzB,UAAS,gBAAAtK,OACf+L,EAAK1B,OAAM,iBAAArK,OACVlD,MAAM+M,QAAQkC,EAAKvB,SAAWuB,EAAKvB,QAAQtL,KAAK,KAAO6M,EAAKvB,QAAO,eAAAxK,OACrEqM,IAIF,CACL,WAAItC,GAEF,OAAO,CACT,EACA,SAAIC,GACF,OAAOA,CACT,EACA,SAAIA,CAAM6J,GACR1E,EAAW,CACTE,OAAQrF,EAAQ6J,GAAa7J,EAAQ+B,EAAK3B,MAC1CxR,EAAGgU,EACHqC,EAAGpC,EACHU,KAAM7C,EAAU8C,wBAChBiB,YAAa/D,EAAUgE,WACvBC,WAAYjE,EAAUkE,WAE1B,EACA,UAAI3E,GACF,OAAO8B,EAAK9B,MACd,EACA,UAAIA,CAAO6J,GACiB,mBAAfA,EAA2B/H,EAAK9B,OAAS6J,EAC/CnL,GAAOJ,GACd,EACA,aAAI2B,GAEF,OAAO0C,CACT,EACA,aAAIzC,GAEF,OAAO0C,CACT,EACA,KAAIjU,GACF,OAAIyT,EAAe3B,EAAUqJ,YAAcrJ,EAAU4D,YAAc5D,EAAUgE,WACtEhE,EAAUgE,UACnB,EACA,KAAI9V,CAAEob,GACJ,GAAqB,iBAAVA,EACT,GAAI3H,EAAQ,CACV,IAAM4H,EAAavJ,EAAUqJ,YAAcrJ,EAAU4D,YAC/C4F,EAAaplB,KAAKmK,IAAIgb,EAAYnlB,KAAKkK,IAAI,EAAGgb,IACpDtJ,EAAUgE,WAAauF,EAAaC,EACpC7G,EAAeoB,YAAcyF,CAC/B,MACExJ,EAAUgE,WAAasF,EACvB3G,EAAeoB,YAAcuF,CAEnC,EACA,KAAI/E,GACF,OAAOvE,EAAUkE,SACnB,EACA,KAAIK,CAAEkF,GACiB,iBAAVA,IACTzJ,EAAUkE,UAAYuF,EACtB9G,EAAesB,WAAawF,EAEhC,EACA,QAAI/gB,GACF,OAAO2Y,EAAK3Y,IACd,EACA,QAAIA,CAAK4X,GACiB,iBAAbA,GAAsC,SAAbA,GAClCe,EAAK3Y,KAAO,OACZwV,GAAML,IACNiD,EAAQrP,MAAM2S,KAAO9E,EACrBwB,EAAQrP,MAAM6S,UAAY,KAE1BjD,EAAK3Y,KAAO,YACZoY,EAAQrP,MAAM6S,mBAAShP,OAAYgK,EAAK,KACxCwB,EAAQrP,MAAM2S,KAAO,IAEvBI,GACF,EACA,OAAIjW,GACF,OAAO8S,EAAK9S,GACd,EACA,OAAIA,CAAImS,GACNW,EAAK9S,IAAM8R,GAAc9R,IAAImS,IAC5BW,EAAK9S,IAAK8S,EAAK/S,KAAO+R,GAAcO,QAAQS,EAAK9S,IAAK8S,EAAK/S,KAC5DkW,GACF,EACA,OAAIlW,GACF,OAAO+S,EAAK/S,GACd,EACA,OAAIA,CAAIqS,GACNU,EAAK/S,IAAM+R,GAAc/R,IAAIqS,IAC5BU,EAAK9S,IAAK8S,EAAK/S,KAAO+R,GAAcO,QAAQS,EAAK9S,IAAK8S,EAAK/S,KAC5DkW,GACF,EACA,SAAI9E,GACF,OAAoB,IAAb2B,EAAK3B,KACd,EACA,SAAIA,CAAMmB,GACRQ,EAAK3B,MAAQW,GAAcX,MAAMmB,EACnC,EACA,UAAIlB,GACF,OAAO0B,EAAK1B,MACd,EACA,UAAIA,CAAO+J,GACTrI,EAAK1B,SAAW+J,EACZrI,EAAK1B,SACW,SAAd0B,EAAK3Y,KACPoY,EAAQrP,MAAMkY,WAAa,OAE3B7I,EAAQrP,MAAMkY,WAAa,YAEjC,EACA,aAAI/J,GACF,OAAOyB,EAAKzB,SACd,EACA,aAAIA,CAAUgK,GACRvI,EAAKzB,YAAcgK,GACrBvI,EAAKzB,WAAY,EACjBX,GAAqBkH,KACX9E,EAAKzB,WAAegK,IAC9BvI,EAAKzB,WAAY,EACjBuG,EAAc3d,KAAKkW,GAAgB7Z,SAAU,UAAWuhB,EAAc,CAAEF,SAAS,KAErF,EACA,UAAIrG,GACF,OAAOwB,EAAKxB,MACd,EACA,UAAIA,CAAOU,GACTc,EAAKxB,OAASQ,GAAcR,OAAOU,GAC9Bc,EAAKxB,SACRP,EAAQ2C,EACRuC,IAEJ,EACA,WAAI1E,GACF,OAAO2B,CACT,EACA,WAAI3B,CAAQ+J,GACV5K,GAAqB8H,GACrB9H,GAAqB+H,GACrB/H,GAAqBgI,GACrBT,GAAkB,EAClBE,GAAiB,EACjBD,GAAiB,EACjBE,GAAiB,EAEjBtF,EAAKvB,QAAU+J,EACfpI,EAAWJ,EAAKvB,QAChB8G,GAA4C,IAA/BnF,EAASzS,QAAQ,UAC9B6X,GAA0C,IAA9BpF,EAASzS,QAAQ,WAGE,IAA7ByS,EAASzS,QAAQ,cACjByS,EAASzS,QAAQ,WACY,IAA7ByS,EAASzS,QAAQ,UACW,IAA5ByS,EAASzS,QAAQ,QACjB4X,GACAC,KAEAI,EAAoBze,KAAKkW,GAAgBsB,EAAW,YAAayH,IACjER,EAAoBze,KAAKkW,GAAgB7Z,SAAU,UAAW2iB,EAAuB,CAAEtB,SAAS,KAChGe,EAAoBze,KAAKkW,GAAgBsB,EAAW,cAAe6H,KAErEX,GACF,EACA,SAAInH,GACF,OAAOsB,EAAKtB,KACd,EACA,SAAIA,CAAM+J,GACiB,mBAAdA,EAA0BzI,EAAKtB,MAAQ+J,EAC7C7L,GAAOJ,GACd,EACA,UAAIhH,GAEF,OAAOiK,CACT,EACA,aAAId,GAEF,OAAOA,CACT,EACA,SAAIC,GAEF,OAAO0B,CACT,EACA,SAAIzB,GAEF,OAAO,WACLuE,EAAW,CACTE,OAAQrF,EAAQ,GAAKA,EAAQ+B,EAAK3B,MAClCxR,EAAGgU,EACHqC,EAAGpC,EACHU,KAAM7C,EAAU8C,wBAChBiB,YAAa/D,EAAUgE,WACvBC,WAAYjE,EAAUkE,WAE1B,CACF,EACA,WAAI/D,GAEF,OAAO,WACLoF,aAAaxD,GACbwD,aAAavD,GACbuD,aAAayC,GAKb/I,GAAqBoG,GACrBpG,GAAqBkH,GAErBlH,GAAqB8H,GACrB9H,GAAqB+H,GACrB/H,GAAqBgI,GAErBhI,GAAqBmJ,IAEjBH,KACFA,GAAS8B,aACT9B,GAAW,MAGbzJ,GAAawB,EAAW0B,GACxB1B,EAAUvO,MAAM0V,OAAS,GAEzB3I,GAAasC,EAASgB,GAEJ,SAAdT,EAAK3Y,KAAiBoY,EAAQrP,MAAM2S,KAAO,GAC1CtD,EAAQrP,MAAM6S,UAAY,GAE/BtE,EAAUkE,WAAa5E,EACvBU,EAAUgE,YAAc1E,CAC1B,CACF,EAEJ,0BASO,WAAyD,IAA1B0K,QAAEA,GAAU,GAAOpjB,UAAA8E,OAAA,QAAA1G,IAAA4B,UAAA,GAAAA,UAAA,GAAG,CAAA,EAC1D,GAAsB,oBAAXrC,QAA8C,oBAAbM,SAE1C,OADAoZ,GAAOJ,IACA,CACLoM,MAAAA,GAAU,GAGd,SAASC,EAAoB5E,GACvBA,EAAEE,SAASF,EAAEG,gBACnB,CACAlhB,OAAOqa,iBAAiB,QAASsL,EAAqB,CAAEhE,SAAS,IACjErhB,SAASslB,gBAAgB1Y,MAAM2Y,YAAc,cAC7C,IAAIC,EAAgB,KAChBC,EAAW,KAaf,OAZIN,IACoD,OAAlDnlB,SAAS0lB,cAAc,wBACzBF,EAAgBxlB,SAAS0lB,cAAc,uBAAuB3Z,QAC9D/L,SAAS0lB,cAAc,uBAAuB3Z,QAC5C,kHACwD,IAAjD/L,SAAS2lB,qBAAqB,QAAQ9e,UAC/C4e,EAAWzlB,SAAS2lB,qBAAqB,QAAQ,GAAG7Y,YAAY9M,SAASS,cAAc,UAC9EyF,KAAO,WAChBuf,EAAS1Z,QACP,mHAGC,CACL,UAAIqZ,GAEF,OAAO,WACL1lB,OAAOsa,oBAAoB,QAASqL,GACpCrlB,SAASslB,gBAAgB1Y,MAAM2Y,YAAc,GACzCJ,IACoB,OAAlBK,EACFxlB,SAAS0lB,cAAc,uBAAuB3Z,QAAUyZ,EAExDC,EAAS9I,cAAciJ,YAAYH,GAEzC,CACF,EAEJ","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84]}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nsqx/pinch-zoom",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "pinch-zoom: A performant pinch-to-zoom and wheel zoom implementation.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"author": "nsqx",
|
|
7
|
+
"license": "BSD-3-Clause",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"pinch-zoom",
|
|
10
|
+
"zoom",
|
|
11
|
+
"touch",
|
|
12
|
+
"gestures",
|
|
13
|
+
"wheel-zoom"
|
|
14
|
+
],
|
|
15
|
+
"browserslist": [
|
|
16
|
+
"ie 11",
|
|
17
|
+
"safari 10",
|
|
18
|
+
"last 2 versions",
|
|
19
|
+
"not dead"
|
|
20
|
+
],
|
|
21
|
+
"main": "./dist/index.legacy.js",
|
|
22
|
+
"module": "./dist/index.js",
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"exports": {
|
|
25
|
+
".": {
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"import": "./dist/index.js",
|
|
28
|
+
"require": "./dist/index.legacy.js",
|
|
29
|
+
"browser": "./dist/index.legacy.js"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist"
|
|
34
|
+
],
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "rollup -c",
|
|
37
|
+
"dev": "rollup -c -w",
|
|
38
|
+
"prepublishOnly": "npm run build"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@babel/core": "^7.23.0",
|
|
42
|
+
"@babel/preset-env": "^7.23.0",
|
|
43
|
+
"@rollup/plugin-babel": "^6.0.4",
|
|
44
|
+
"@rollup/plugin-commonjs": "^25.0.0",
|
|
45
|
+
"@rollup/plugin-node-resolve": "^15.2.0",
|
|
46
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
47
|
+
"core-js": "^3.33.0",
|
|
48
|
+
"rollup": "^4.0.0",
|
|
49
|
+
"rollup-plugin-dts": "^6.1.0"
|
|
50
|
+
}
|
|
51
|
+
}
|