@scaloster_971/scaleadjus 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.
Files changed (52) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +215 -0
  3. package/dist/adapters/angular.d.ts +19 -0
  4. package/dist/adapters/angular.d.ts.map +1 -0
  5. package/dist/adapters/react.d.ts +11 -0
  6. package/dist/adapters/react.d.ts.map +1 -0
  7. package/dist/adapters/vanilla.d.ts +3 -0
  8. package/dist/adapters/vanilla.d.ts.map +1 -0
  9. package/dist/adapters/vue.d.ts +11 -0
  10. package/dist/adapters/vue.d.ts.map +1 -0
  11. package/dist/angular.js +535 -0
  12. package/dist/angular.js.map +1 -0
  13. package/dist/angular.mjs +533 -0
  14. package/dist/angular.mjs.map +1 -0
  15. package/dist/core/ScaleAdjus.d.ts +42 -0
  16. package/dist/core/ScaleAdjus.d.ts.map +1 -0
  17. package/dist/core/constants.d.ts +47 -0
  18. package/dist/core/constants.d.ts.map +1 -0
  19. package/dist/core/types.d.ts +80 -0
  20. package/dist/core/types.d.ts.map +1 -0
  21. package/dist/index.d.ts +11 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +590 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/index.min.js +2 -0
  26. package/dist/index.min.js.map +1 -0
  27. package/dist/index.mjs +582 -0
  28. package/dist/index.mjs.map +1 -0
  29. package/dist/index.umd.js +596 -0
  30. package/dist/index.umd.js.map +1 -0
  31. package/dist/plugins/css.d.ts +3 -0
  32. package/dist/plugins/css.d.ts.map +1 -0
  33. package/dist/plugins/tailwind.d.ts +3 -0
  34. package/dist/plugins/tailwind.d.ts.map +1 -0
  35. package/dist/react.js +454 -0
  36. package/dist/react.js.map +1 -0
  37. package/dist/react.mjs +452 -0
  38. package/dist/react.mjs.map +1 -0
  39. package/dist/styles.css +1 -0
  40. package/dist/utils/debounce.d.ts +3 -0
  41. package/dist/utils/debounce.d.ts.map +1 -0
  42. package/dist/utils/device.d.ts +12 -0
  43. package/dist/utils/device.d.ts.map +1 -0
  44. package/dist/utils/dom.d.ts +13 -0
  45. package/dist/utils/dom.d.ts.map +1 -0
  46. package/dist/utils/events.d.ts +12 -0
  47. package/dist/utils/events.d.ts.map +1 -0
  48. package/dist/vue.js +452 -0
  49. package/dist/vue.js.map +1 -0
  50. package/dist/vue.mjs +450 -0
  51. package/dist/vue.mjs.map +1 -0
  52. package/package.json +116 -0
package/dist/react.mjs ADDED
@@ -0,0 +1,452 @@
1
+ import { useRef, useState, useEffect, useCallback } from 'react';
2
+
3
+ const DEFAULT_OPTIONS = {
4
+ baseScale: 1,
5
+ minScale: 0.5,
6
+ maxScale: 1.5,
7
+ enableMobile: true,
8
+ enableTablet: true,
9
+ enableDesktop: true,
10
+ enableLargeMonitor: true,
11
+ smoothTransition: true,
12
+ transitionDuration: 300,
13
+ debug: false,
14
+ autoInit: true,
15
+ breakpoints: {
16
+ mobile: 768,
17
+ tablet: 1024,
18
+ desktop: 1200,
19
+ largeMonitor: 1600,
20
+ },
21
+ scaleFactors: {
22
+ mobile: 0.8,
23
+ tablet: 0.9,
24
+ desktop: 1,
25
+ largeMonitor: 1.1,
26
+ },
27
+ excludeSelectors: [],
28
+ includeSelectors: ['*'],
29
+ customCSS: '',
30
+ };
31
+ const CSS_PREFIX = 'sa';
32
+ const EVENTS = {
33
+ INIT: 'scaleadjus:init',
34
+ SCALE: 'scaleadjus:scale',
35
+ RESET: 'scaleadjus:reset',
36
+ DESTROY: 'scaleadjus:destroy',
37
+ UPDATE: 'scaleadjus:update',
38
+ DEVICE_CHANGE: 'scaleadjus:device-change'};
39
+ const TRANSFORM_ORIGIN = 'top left';
40
+
41
+ function debounce(func, wait) {
42
+ let timeout = null;
43
+ return function executedFunction(...args) {
44
+ const later = () => {
45
+ timeout = null;
46
+ func(...args);
47
+ };
48
+ if (timeout)
49
+ clearTimeout(timeout);
50
+ timeout = setTimeout(later, wait);
51
+ };
52
+ }
53
+ function throttle(func, limit) {
54
+ let inThrottle = false;
55
+ return function executedFunction(...args) {
56
+ if (!inThrottle) {
57
+ func(...args);
58
+ inThrottle = true;
59
+ setTimeout(() => {
60
+ inThrottle = false;
61
+ }, limit);
62
+ }
63
+ };
64
+ }
65
+
66
+ function getDeviceType(width, breakpoints = DEFAULT_OPTIONS.breakpoints) {
67
+ if (width <= breakpoints.mobile)
68
+ return 'mobile';
69
+ if (width <= breakpoints.tablet)
70
+ return 'tablet';
71
+ if (breakpoints.largeMonitor && width <= breakpoints.largeMonitor)
72
+ return 'desktop';
73
+ if (breakpoints.largeMonitor && width > breakpoints.largeMonitor)
74
+ return 'large-monitor';
75
+ return 'desktop';
76
+ }
77
+
78
+ class EventEmitter {
79
+ constructor() {
80
+ this.events = new Map();
81
+ }
82
+ on(event, callback) {
83
+ if (!this.events.has(event)) {
84
+ this.events.set(event, []);
85
+ }
86
+ this.events.get(event)?.push(callback);
87
+ }
88
+ off(event, callback) {
89
+ if (!this.events.has(event))
90
+ return;
91
+ const callbacks = this.events.get(event) || [];
92
+ const index = callbacks.indexOf(callback);
93
+ if (index !== -1) {
94
+ callbacks.splice(index, 1);
95
+ }
96
+ if (callbacks.length === 0) {
97
+ this.events.delete(event);
98
+ }
99
+ }
100
+ emit(event, data) {
101
+ const callbacks = this.events.get(event) || [];
102
+ callbacks.forEach(callback => {
103
+ try {
104
+ callback(data);
105
+ }
106
+ catch (error) {
107
+ console.error(`Error in event handler for ${event}:`, error);
108
+ }
109
+ });
110
+ }
111
+ removeAllListeners() {
112
+ this.events.clear();
113
+ }
114
+ listenerCount(event) {
115
+ return this.events.get(event)?.length || 0;
116
+ }
117
+ eventNames() {
118
+ return Array.from(this.events.keys());
119
+ }
120
+ }
121
+
122
+ class ScaleAdjus {
123
+ constructor(options = {}) {
124
+ this.initialized = false;
125
+ this.styleElement = null;
126
+ this.resizeObserver = null;
127
+ this.mutationObserver = null;
128
+ this.cleanupFunctions = [];
129
+ this.options = { ...DEFAULT_OPTIONS, ...options };
130
+ this.currentScale = this.options.baseScale || 1;
131
+ this.deviceInfo = this.getDeviceInfo();
132
+ this.eventEmitter = new EventEmitter();
133
+ if (this.options.autoInit) {
134
+ this.init();
135
+ }
136
+ }
137
+ init() {
138
+ if (this.initialized)
139
+ return;
140
+ this.injectStyles();
141
+ this.applyScale();
142
+ this.setupResizeListener();
143
+ this.setupMutationObserver();
144
+ this.setupDeviceChangeListener();
145
+ this.initialized = true;
146
+ this.emitEvent(EVENTS.INIT, this.createEventData());
147
+ }
148
+ destroy() {
149
+ if (!this.initialized)
150
+ return;
151
+ this.removeInjectedStyles();
152
+ this.removeEventListeners();
153
+ this.resetAllElements();
154
+ this.initialized = false;
155
+ this.emitEvent(EVENTS.DESTROY, this.createEventData());
156
+ this.eventEmitter.removeAllListeners();
157
+ }
158
+ setScale(scale) {
159
+ const clampedScale = this.clampScale(scale);
160
+ this.currentScale = clampedScale;
161
+ this.applyScale();
162
+ this.emitEvent(EVENTS.SCALE, this.createEventData());
163
+ }
164
+ resetScale() {
165
+ this.currentScale = this.options.baseScale || 1;
166
+ this.applyScale();
167
+ this.emitEvent(EVENTS.RESET, this.createEventData());
168
+ }
169
+ updateOptions(options) {
170
+ this.options = { ...this.options, ...options };
171
+ this.deviceInfo = this.getDeviceInfo();
172
+ this.applyScale();
173
+ this.emitEvent(EVENTS.UPDATE, this.createEventData());
174
+ }
175
+ getCurrentScale() {
176
+ return this.currentScale;
177
+ }
178
+ getDeviceInfo() {
179
+ const width = window.innerWidth;
180
+ const height = window.innerHeight;
181
+ const deviceType = getDeviceType(width, this.options.breakpoints);
182
+ const scale = this.calculateScale(width);
183
+ return {
184
+ type: deviceType,
185
+ width,
186
+ height,
187
+ scale,
188
+ isMobile: deviceType === 'mobile',
189
+ isTablet: deviceType === 'tablet',
190
+ isDesktop: deviceType === 'desktop',
191
+ isLargeMonitor: deviceType === 'large-monitor',
192
+ };
193
+ }
194
+ getElementScale(element) {
195
+ const computedStyle = getComputedStyle(element);
196
+ const transform = computedStyle.transform;
197
+ if (transform && transform !== 'none') {
198
+ const match = transform.match(/scale\(([^)]+)\)/);
199
+ if (match) {
200
+ return parseFloat(match[1]);
201
+ }
202
+ }
203
+ return this.currentScale;
204
+ }
205
+ setElementScale(element, scale) {
206
+ const clampedScale = this.clampScale(scale);
207
+ element.style.transform = `scale(${clampedScale})`;
208
+ element.style.transformOrigin = TRANSFORM_ORIGIN;
209
+ }
210
+ resetElementScale(element) {
211
+ element.style.transform = '';
212
+ element.style.transformOrigin = '';
213
+ }
214
+ addEventListener(event, callback) {
215
+ this.eventEmitter.on(event, callback);
216
+ }
217
+ removeEventListener(event, callback) {
218
+ this.eventEmitter.off(event, callback);
219
+ }
220
+ injectStyles() {
221
+ if (this.styleElement)
222
+ return;
223
+ this.styleElement = document.createElement('style');
224
+ this.styleElement.id = `${CSS_PREFIX}-styles`;
225
+ this.styleElement.textContent = this.generateCSS();
226
+ document.head.appendChild(this.styleElement);
227
+ }
228
+ removeInjectedStyles() {
229
+ if (this.styleElement) {
230
+ this.styleElement.remove();
231
+ this.styleElement = null;
232
+ }
233
+ }
234
+ generateCSS() {
235
+ const prefix = CSS_PREFIX;
236
+ const duration = this.options.smoothTransition ? this.options.transitionDuration : 0;
237
+ return `
238
+ [data-${prefix}] {
239
+ transition: all ${duration}ms cubic-bezier(0.4, 0, 0.2, 1);
240
+ transform-origin: ${TRANSFORM_ORIGIN};
241
+ }
242
+
243
+ .${prefix}-scaled {
244
+ transition: all ${duration}ms cubic-bezier(0.4, 0, 0.2, 1);
245
+ }
246
+
247
+ .${prefix}-container {
248
+ width: 100%;
249
+ max-width: 100%;
250
+ box-sizing: border-box;
251
+ }
252
+
253
+ .${prefix}-no-scale {
254
+ transform: none !important;
255
+ transition: none !important;
256
+ }
257
+
258
+ .${prefix}-responsive {
259
+ font-size: calc(1rem * var(--${prefix}-scale, 1));
260
+ }
261
+
262
+ ${this.options.customCSS || ''}
263
+ `;
264
+ }
265
+ applyScale() {
266
+ const elements = this.getTargetElements();
267
+ const scale = this.currentScale;
268
+ elements.forEach(element => {
269
+ if (this.shouldExcludeElement(element))
270
+ return;
271
+ if (element === document.body || element === document.documentElement) {
272
+ element.style.transform = `scale(${scale})`;
273
+ element.style.transformOrigin = TRANSFORM_ORIGIN;
274
+ element.style.width = `${100 / scale}%`;
275
+ element.style.minHeight = '100vh';
276
+ }
277
+ else {
278
+ element.setAttribute(`data-${CSS_PREFIX}`, '');
279
+ element.style.transform = `scale(${scale})`;
280
+ element.style.transformOrigin = TRANSFORM_ORIGIN;
281
+ }
282
+ });
283
+ this.updateCSSVariables();
284
+ }
285
+ resetAllElements() {
286
+ const elements = this.getTargetElements();
287
+ elements.forEach(element => {
288
+ element.style.transform = '';
289
+ element.style.transformOrigin = '';
290
+ element.style.width = '';
291
+ element.style.minHeight = '';
292
+ element.removeAttribute(`data-${CSS_PREFIX}`);
293
+ });
294
+ }
295
+ getTargetElements() {
296
+ const selectors = this.options.includeSelectors || ['*'];
297
+ const elements = [];
298
+ if (selectors.includes('*')) {
299
+ elements.push(document.body);
300
+ const allElements = document.body.querySelectorAll('*');
301
+ elements.push(...Array.from(allElements));
302
+ }
303
+ else {
304
+ selectors.forEach(selector => {
305
+ const found = document.querySelectorAll(selector);
306
+ elements.push(...Array.from(found));
307
+ });
308
+ }
309
+ return [...new Set(elements)];
310
+ }
311
+ shouldExcludeElement(element) {
312
+ const excludeSelectors = this.options.excludeSelectors || [];
313
+ return excludeSelectors.some(selector => element.matches(selector) || element.closest(selector) !== null);
314
+ }
315
+ calculateScale(width) {
316
+ const deviceType = getDeviceType(width, this.options.breakpoints);
317
+ const factors = this.options.scaleFactors || DEFAULT_OPTIONS.scaleFactors;
318
+ const factor = factors[deviceType] || 1;
319
+ const baseScale = this.options.baseScale || 1;
320
+ const scale = factor * baseScale;
321
+ return this.clampScale(scale);
322
+ }
323
+ clampScale(scale) {
324
+ const min = this.options.minScale || 0.5;
325
+ const max = this.options.maxScale || 1.5;
326
+ return Math.max(min, Math.min(max, scale));
327
+ }
328
+ updateCSSVariables() {
329
+ const prefix = CSS_PREFIX;
330
+ const root = document.documentElement;
331
+ root.style.setProperty(`--${prefix}-scale`, String(this.currentScale));
332
+ root.style.setProperty(`--${prefix}-device`, this.deviceInfo.type);
333
+ root.setAttribute(`data-${prefix}-device`, this.deviceInfo.type);
334
+ }
335
+ setupResizeListener() {
336
+ const handleResize = debounce(() => {
337
+ this.deviceInfo = this.getDeviceInfo();
338
+ const newScale = this.calculateScale(window.innerWidth);
339
+ if (newScale !== this.currentScale) {
340
+ this.currentScale = newScale;
341
+ this.applyScale();
342
+ this.emitEvent(EVENTS.SCALE, this.createEventData());
343
+ }
344
+ }, 250);
345
+ window.addEventListener('resize', handleResize);
346
+ this.cleanupFunctions.push(() => window.removeEventListener('resize', handleResize));
347
+ if (window.ResizeObserver) {
348
+ this.resizeObserver = new ResizeObserver(throttle(handleResize, 100));
349
+ this.resizeObserver.observe(document.body);
350
+ this.cleanupFunctions.push(() => this.resizeObserver?.disconnect());
351
+ }
352
+ }
353
+ setupMutationObserver() {
354
+ if (!window.MutationObserver)
355
+ return;
356
+ const handleMutation = debounce(() => {
357
+ this.applyScale();
358
+ }, 100);
359
+ this.mutationObserver = new MutationObserver(handleMutation);
360
+ this.mutationObserver.observe(document.body, {
361
+ childList: true,
362
+ subtree: true,
363
+ attributes: false,
364
+ });
365
+ this.cleanupFunctions.push(() => this.mutationObserver?.disconnect());
366
+ }
367
+ setupDeviceChangeListener() {
368
+ const handleOrientationChange = () => {
369
+ setTimeout(() => {
370
+ this.deviceInfo = this.getDeviceInfo();
371
+ const newScale = this.calculateScale(window.innerWidth);
372
+ if (newScale !== this.currentScale) {
373
+ this.currentScale = newScale;
374
+ this.applyScale();
375
+ this.emitEvent(EVENTS.DEVICE_CHANGE, this.createEventData());
376
+ }
377
+ }, 300);
378
+ };
379
+ if (window.screen?.orientation) {
380
+ window.screen.orientation.addEventListener('change', handleOrientationChange);
381
+ this.cleanupFunctions.push(() => window.screen?.orientation?.removeEventListener('change', handleOrientationChange));
382
+ }
383
+ window.addEventListener('orientationchange', handleOrientationChange);
384
+ this.cleanupFunctions.push(() => window.removeEventListener('orientationchange', handleOrientationChange));
385
+ }
386
+ removeEventListeners() {
387
+ this.cleanupFunctions.forEach(cleanup => cleanup());
388
+ this.cleanupFunctions = [];
389
+ }
390
+ createEventData() {
391
+ return {
392
+ device: this.deviceInfo.type,
393
+ scale: this.currentScale,
394
+ width: this.deviceInfo.width,
395
+ height: this.deviceInfo.height,
396
+ timestamp: Date.now(),
397
+ };
398
+ }
399
+ emitEvent(event, data) {
400
+ this.eventEmitter.emit(event, data);
401
+ const customEvent = new CustomEvent(event, {
402
+ detail: data,
403
+ bubbles: true,
404
+ cancelable: true,
405
+ });
406
+ document.dispatchEvent(customEvent);
407
+ }
408
+ }
409
+
410
+ function createReactHook(options = {}) {
411
+ const instanceRef = useRef(null);
412
+ const [deviceInfo, setDeviceInfo] = useState(null);
413
+ const [scale, setScaleState] = useState(1);
414
+ useEffect(() => {
415
+ if (!instanceRef.current) {
416
+ instanceRef.current = new ScaleAdjus({
417
+ ...options,
418
+ autoInit: true,
419
+ });
420
+ instanceRef.current.addEventListener('scaleadjus:scale', (data) => {
421
+ setScaleState(data.scale);
422
+ setDeviceInfo(instanceRef.current?.getDeviceInfo() || null);
423
+ });
424
+ setDeviceInfo(instanceRef.current.getDeviceInfo());
425
+ setScaleState(instanceRef.current.getCurrentScale());
426
+ }
427
+ return () => {
428
+ instanceRef.current?.destroy();
429
+ instanceRef.current = null;
430
+ };
431
+ }, []);
432
+ const setScale = useCallback((newScale) => {
433
+ instanceRef.current?.setScale(newScale);
434
+ }, []);
435
+ const resetScale = useCallback(() => {
436
+ instanceRef.current?.resetScale();
437
+ }, []);
438
+ const updateOptions = useCallback((newOptions) => {
439
+ instanceRef.current?.updateOptions(newOptions);
440
+ }, []);
441
+ return {
442
+ scale,
443
+ deviceInfo,
444
+ setScale,
445
+ resetScale,
446
+ updateOptions,
447
+ instance: instanceRef.current,
448
+ };
449
+ }
450
+
451
+ export { createReactHook };
452
+ //# sourceMappingURL=react.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.mjs","sources":["../src/core/constants.ts","../src/utils/debounce.ts","../src/utils/device.ts","../src/utils/events.ts","../src/core/ScaleAdjus.ts","../src/adapters/react.ts"],"sourcesContent":[null,null,null,null,null,null],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ :root{--sa-scale:1;--sa-device:desktop}[data-sa]{transform:scale(1);transform:scale(var(--sa-scale));transform-origin:top left;transition:all .3s cubic-bezier(.4,0,.2,1)}.sa-container{box-sizing:border-box;margin:0 auto;max-width:100%;padding:0 15px;width:100%}.sa-no-scale{transform:none!important;transition:none!important}.sa-responsive{font-size:1rem;font-size:calc(1rem*var(--sa-scale))}.sa-full-width{max-width:100%!important;width:100%!important}.sa-card{background:#fff;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.1);margin:10px 0;padding:20px}.sa-button{background:#007bff;border:none;border-radius:4px;color:#fff;cursor:pointer;display:inline-block;padding:10px 20px;transition:all .3s ease}.sa-button:hover{box-shadow:0 4px 12px rgba(0,123,255,.4);transform:scale(1.05)}.sa-responsive-table{overflow-x:auto;width:100%;-webkit-overflow-scrolling:touch}.sa-responsive-table table{min-width:600px;width:100%}.sa-responsive-image{display:block;height:auto;max-width:100%}.sa-video-container{height:0;overflow:hidden;padding-bottom:56.25%;position:relative}.sa-video-container iframe,.sa-video-container video{height:100%;left:0;position:absolute;top:0;width:100%}.sa-grid{display:grid;grid-gap:20px;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.sa-flex{display:flex;flex-wrap:wrap}.sa-flex-center{align-items:center;display:flex;justify-content:center}.sa-p-1{padding:10px}.sa-p-2{padding:20px}.sa-p-3{padding:30px}.sa-p-4{padding:40px}.sa-p-5{padding:50px}.sa-m-1{margin:10px}.sa-m-2{margin:20px}.sa-m-3{margin:30px}.sa-m-4{margin:40px}.sa-m-5{margin:50px}.sa-text-center{text-align:center}.sa-text-left{text-align:left}.sa-text-right{text-align:right}.sa-hidden-mobile{display:block}.sa-visible-mobile{display:none}.sa-hidden-tablet{display:block}.sa-visible-tablet{display:none}.sa-hidden-desktop{display:block}.sa-visible-desktop{display:none}@media (max-width:768px){.sa-hidden-mobile{display:none!important}.sa-visible-mobile{display:block!important}.sa-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}}@media (min-width:769px) and (max-width:1024px){.sa-hidden-tablet{display:none!important}.sa-visible-tablet{display:block!important}.sa-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}}@media (min-width:1025px) and (max-width:1600px){.sa-hidden-desktop{display:none!important}.sa-visible-desktop{display:block!important}.sa-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}}@media (min-width:1601px){.sa-grid{grid-template-columns:repeat(auto-fit,minmax(350px,1fr))}}.sa-w-25{width:25%}.sa-w-50{width:50%}.sa-w-75{width:75%}.sa-w-100{width:100%}.sa-h-25{height:25%}.sa-h-50{height:50%}.sa-h-75{height:75%}.sa-h-100{height:100%}.sa-d-flex{display:flex}.sa-d-grid{display:grid}.sa-d-block{display:block}.sa-d-inline-block{display:inline-block}.sa-d-none{display:none}.sa-justify-center{justify-content:center}.sa-justify-between{justify-content:space-between}.sa-justify-around{justify-content:space-around}.sa-justify-evenly{justify-content:space-evenly}.sa-align-center{align-items:center}.sa-align-start{align-items:flex-start}.sa-align-end{align-items:flex-end}.sa-align-stretch{align-items:stretch}.sa-gap-1{gap:10px}.sa-gap-2{gap:20px}.sa-gap-3{gap:30px}.sa-gap-4{gap:40px}.sa-gap-5{gap:50px}.sa-relative{position:relative}.sa-absolute{position:absolute}.sa-fixed{position:fixed}.sa-sticky{position:sticky}
@@ -0,0 +1,3 @@
1
+ export declare function debounce<T extends (...args: any[]) => any>(func: T, wait: number): (...args: Parameters<T>) => void;
2
+ export declare function throttle<T extends (...args: any[]) => any>(func: T, limit: number): (...args: Parameters<T>) => void;
3
+ //# sourceMappingURL=debounce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../src/utils/debounce.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACxD,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,MAAM,GACX,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAYlC;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACxD,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAYlC"}
@@ -0,0 +1,12 @@
1
+ import { Breakpoints, DeviceType } from '../core/types';
2
+ export declare function getDeviceType(width: number, breakpoints?: Breakpoints): DeviceType;
3
+ export declare function detectDevice(): {
4
+ type: DeviceType;
5
+ width: number;
6
+ height: number;
7
+ isTouchDevice: boolean;
8
+ pixelRatio: number;
9
+ };
10
+ export declare function isDeviceType(type: DeviceType, width: number, breakpoints: Breakpoints): boolean;
11
+ export declare function getDeviceScaleFactor(deviceType: DeviceType, scaleFactors: Record<string, number>): number;
12
+ //# sourceMappingURL=device.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/utils/device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGxD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,WAAW,GAAE,WAAyC,GACrD,UAAU,CAMZ;AAED,wBAAgB,YAAY,IAAI;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAaA;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,WAAW,GACvB,OAAO,CAET;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,MAAM,CAER"}
@@ -0,0 +1,13 @@
1
+ export declare function getElement(selector: string | HTMLElement): HTMLElement | null;
2
+ export declare function getElements(selector: string | NodeList | HTMLElement[]): HTMLElement[];
3
+ export declare function getElementRect(element: HTMLElement): DOMRect;
4
+ export declare function isElementVisible(element: HTMLElement): boolean;
5
+ export declare function hasClass(element: HTMLElement, className: string): boolean;
6
+ export declare function addClass(element: HTMLElement, className: string): void;
7
+ export declare function removeClass(element: HTMLElement, className: string): void;
8
+ export declare function toggleClass(element: HTMLElement, className: string): void;
9
+ export declare function setStyle(element: HTMLElement, styles: Record<string, string | number>): void;
10
+ export declare function getStyle(element: HTMLElement, property: string): string;
11
+ export declare function getParentElement(element: HTMLElement): HTMLElement | null;
12
+ export declare function getChildrenElements(element: HTMLElement): HTMLElement[];
13
+ //# sourceMappingURL=dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/utils/dom.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,IAAI,CAK7E;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,EAAE,GAAG,WAAW,EAAE,CAQtF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAE5D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAO9D;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAEzE;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAEtE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAEzE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAEzE;AAED,wBAAgB,QAAQ,CACtB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GACtC,IAAI,CAIN;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,IAAI,CAEzE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,EAAE,CAEvE"}
@@ -0,0 +1,12 @@
1
+ type EventCallback = (data: any) => void;
2
+ export declare class EventEmitter {
3
+ private events;
4
+ on(event: string, callback: EventCallback): void;
5
+ off(event: string, callback: EventCallback): void;
6
+ emit(event: string, data: any): void;
7
+ removeAllListeners(): void;
8
+ listenerCount(event: string): number;
9
+ eventNames(): string[];
10
+ }
11
+ export {};
12
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/utils/events.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;AAEzC,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA2C;IAElD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAOhD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAcjD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAWpC,kBAAkB,IAAI,IAAI;IAI1B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIpC,UAAU,IAAI,MAAM,EAAE;CAG9B"}