@jqhtml/core 2.3.54 → 2.3.59

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 (88) hide show
  1. package/README.md +3 -1
  2. package/dist/boot.d.ts +0 -0
  3. package/dist/boot.d.ts.map +0 -0
  4. package/dist/boot.js +130 -0
  5. package/dist/boot.js.map +1 -0
  6. package/dist/cache-key-serializer.d.ts +0 -0
  7. package/dist/cache-key-serializer.d.ts.map +0 -0
  8. package/dist/cache-key-serializer.js +140 -0
  9. package/dist/cache-key-serializer.js.map +1 -0
  10. package/dist/component-cache.d.ts +0 -0
  11. package/dist/component-cache.d.ts.map +0 -0
  12. package/dist/component-cache.js +270 -0
  13. package/dist/component-cache.js.map +1 -0
  14. package/dist/component-events.d.ts +0 -0
  15. package/dist/component-events.d.ts.map +0 -0
  16. package/dist/component-events.js +141 -0
  17. package/dist/component-events.js.map +1 -0
  18. package/dist/component-queue.d.ts +0 -0
  19. package/dist/component-queue.d.ts.map +0 -0
  20. package/dist/component-queue.js +118 -0
  21. package/dist/component-queue.js.map +1 -0
  22. package/dist/component-registry.d.ts +0 -0
  23. package/dist/component-registry.d.ts.map +0 -0
  24. package/dist/component-registry.js +298 -0
  25. package/dist/component-registry.js.map +1 -0
  26. package/dist/component.d.ts +8 -0
  27. package/dist/component.d.ts.map +1 -1
  28. package/dist/component.js +1892 -0
  29. package/dist/component.js.map +1 -0
  30. package/dist/config.d.ts +0 -0
  31. package/dist/config.d.ts.map +0 -0
  32. package/dist/config.js +64 -0
  33. package/dist/config.js.map +1 -0
  34. package/dist/data-proxy.d.ts +0 -0
  35. package/dist/data-proxy.d.ts.map +0 -0
  36. package/dist/data-proxy.js +223 -0
  37. package/dist/data-proxy.js.map +1 -0
  38. package/dist/debug-entry.d.ts +0 -0
  39. package/dist/debug-entry.d.ts.map +0 -0
  40. package/dist/debug-entry.js +8 -0
  41. package/dist/debug-entry.js.map +1 -0
  42. package/dist/debug.d.ts +0 -0
  43. package/dist/debug.d.ts.map +0 -0
  44. package/dist/debug.js +203 -0
  45. package/dist/debug.js.map +1 -0
  46. package/dist/index.cjs +36 -8
  47. package/dist/index.cjs.map +1 -1
  48. package/dist/index.d.ts +0 -0
  49. package/dist/index.d.ts.map +0 -0
  50. package/dist/index.js +36 -8
  51. package/dist/index.js.map +1 -1
  52. package/dist/instruction-processor.d.ts +0 -0
  53. package/dist/instruction-processor.d.ts.map +1 -1
  54. package/dist/instruction-processor.js +563 -0
  55. package/dist/instruction-processor.js.map +1 -0
  56. package/dist/jqhtml-core.esm.js +37 -9
  57. package/dist/jqhtml-core.esm.js.map +1 -1
  58. package/dist/jqhtml-debug.esm.js +0 -0
  59. package/dist/jqhtml-debug.esm.js.map +0 -0
  60. package/dist/jquery-plugin.d.ts +0 -0
  61. package/dist/jquery-plugin.d.ts.map +0 -0
  62. package/dist/jquery-plugin.js +472 -0
  63. package/dist/jquery-plugin.js.map +1 -0
  64. package/dist/lifecycle-manager.d.ts +0 -0
  65. package/dist/lifecycle-manager.d.ts.map +0 -0
  66. package/dist/lifecycle-manager.js +201 -0
  67. package/dist/lifecycle-manager.js.map +1 -0
  68. package/dist/load-coordinator.d.ts +0 -0
  69. package/dist/load-coordinator.d.ts.map +1 -1
  70. package/dist/load-coordinator.js +309 -0
  71. package/dist/load-coordinator.js.map +1 -0
  72. package/dist/local-storage.d.ts +0 -0
  73. package/dist/local-storage.d.ts.map +0 -0
  74. package/dist/local-storage.js +699 -0
  75. package/dist/local-storage.js.map +1 -0
  76. package/dist/preload-data.d.ts +0 -0
  77. package/dist/preload-data.d.ts.map +0 -0
  78. package/dist/preload-data.js +136 -0
  79. package/dist/preload-data.js.map +1 -0
  80. package/dist/template-renderer.d.ts +0 -0
  81. package/dist/template-renderer.d.ts.map +0 -0
  82. package/dist/template-renderer.js +278 -0
  83. package/dist/template-renderer.js.map +1 -0
  84. package/dist/viewport.d.ts +0 -0
  85. package/dist/viewport.d.ts.map +0 -0
  86. package/dist/viewport.js +69 -0
  87. package/dist/viewport.js.map +1 -0
  88. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-storage.js","sourceRoot":"","sources":["../src/local-storage.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
@@ -0,0 +1,136 @@
1
+ /**
2
+ * JQHTML SSR Preload Data System
3
+ *
4
+ * Captures component data during SSR rendering and replays it on the client
5
+ * to skip redundant on_load() calls during hydration.
6
+ *
7
+ * Server-side: start_data_capture() → render → get_captured_data()
8
+ * Client-side: set_preload_data(entries) → components boot with preloaded data → clear_preload_data()
9
+ */
10
+ import { Load_Coordinator } from './load-coordinator.js';
11
+ // --- Capture (Server Side) ---
12
+ let _capture_enabled = false;
13
+ let _capture_buffer = [];
14
+ // Track captured keys to avoid duplicates from Load Coordinator followers
15
+ let _captured_keys = new Set();
16
+ /**
17
+ * Enable data capture mode. After this call, every component that completes
18
+ * on_load() has its final this.data recorded.
19
+ *
20
+ * Idempotent — calling twice is fine.
21
+ */
22
+ export function start_data_capture() {
23
+ _capture_enabled = true;
24
+ _capture_buffer = [];
25
+ _captured_keys.clear();
26
+ }
27
+ /**
28
+ * Record a component's data after on_load() completes.
29
+ * Called internally from _apply_load_result().
30
+ *
31
+ * @param component_name - Component name
32
+ * @param args - Component args at time of on_load()
33
+ * @param data - this.data after on_load() completed
34
+ * @param cache_key - The cache key for deduplication (null = always capture)
35
+ */
36
+ export function capture_component_data(component_name, args, data, cache_key) {
37
+ if (!_capture_enabled)
38
+ return;
39
+ // Deduplicate: if Load Coordinator already captured this key, skip
40
+ if (cache_key !== null) {
41
+ if (_captured_keys.has(cache_key))
42
+ return;
43
+ _captured_keys.add(cache_key);
44
+ }
45
+ // Deep clone args and data to plain objects (no proxies, no class instances)
46
+ try {
47
+ const cloned_args = JSON.parse(JSON.stringify(args));
48
+ const cloned_data = JSON.parse(JSON.stringify(data));
49
+ _capture_buffer.push({
50
+ component: component_name,
51
+ args: cloned_args,
52
+ data: cloned_data,
53
+ });
54
+ }
55
+ catch (error) {
56
+ // Non-serializable data — skip capture for this component
57
+ if (typeof console !== 'undefined') {
58
+ console.warn(`[JQHTML SSR Capture] Failed to serialize data for ${component_name}:`, error);
59
+ }
60
+ }
61
+ }
62
+ /**
63
+ * Returns all captured component data and resets the capture buffer.
64
+ * One-shot: calling clears the buffer.
65
+ */
66
+ export function get_captured_data() {
67
+ const result = _capture_buffer;
68
+ _capture_buffer = [];
69
+ _captured_keys.clear();
70
+ return result;
71
+ }
72
+ /**
73
+ * Check if data capture is currently enabled.
74
+ */
75
+ export function is_capture_enabled() {
76
+ return _capture_enabled;
77
+ }
78
+ /**
79
+ * Stop data capture and clear all state.
80
+ */
81
+ export function stop_data_capture() {
82
+ _capture_enabled = false;
83
+ _capture_buffer = [];
84
+ _captured_keys.clear();
85
+ }
86
+ // --- Preload (Client Side) ---
87
+ let _preload_cache = new Map();
88
+ /**
89
+ * Seed the preload cache with SSR-captured data.
90
+ * Must be called before any component _load() runs.
91
+ *
92
+ * @param entries - Array of { component, args, data } entries from get_captured_data()
93
+ */
94
+ export function set_preload_data(entries) {
95
+ if (!entries || entries.length === 0)
96
+ return;
97
+ _preload_cache.clear();
98
+ for (const entry of entries) {
99
+ // Generate key using the same algorithm as Load Coordinator
100
+ const result = Load_Coordinator.generate_invocation_key(entry.component, entry.args);
101
+ if (result.key !== null) {
102
+ _preload_cache.set(result.key, entry.data);
103
+ }
104
+ }
105
+ }
106
+ /**
107
+ * Check if preloaded data exists for a given cache key.
108
+ * If found, returns the data and removes the entry (one-shot).
109
+ *
110
+ * @param cache_key - The cache key (same format as Load Coordinator)
111
+ * @returns The preloaded data, or null if no match
112
+ */
113
+ export function consume_preload_data(cache_key) {
114
+ if (_preload_cache.size === 0)
115
+ return null;
116
+ const data = _preload_cache.get(cache_key);
117
+ if (data !== undefined) {
118
+ _preload_cache.delete(cache_key);
119
+ return data;
120
+ }
121
+ return null;
122
+ }
123
+ /**
124
+ * Clear any remaining unconsumed preload entries.
125
+ * Call after initial page hydration is complete.
126
+ */
127
+ export function clear_preload_data() {
128
+ _preload_cache.clear();
129
+ }
130
+ /**
131
+ * Check if any preload data is available (for fast early exit in _load).
132
+ */
133
+ export function has_preload_data() {
134
+ return _preload_cache.size > 0;
135
+ }
136
+ //# sourceMappingURL=preload-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preload-data.js","sourceRoot":"","sources":["../src/preload-data.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
@@ -0,0 +1,278 @@
1
+ /**
2
+ * JQHTML v2 Template Renderer
3
+ *
4
+ * Connects compiled templates to components
5
+ * Processes instruction arrays and handles bindings
6
+ */
7
+ import { process_instructions } from './instruction-processor.js';
8
+ import { get_template_by_class } from './component-registry.js';
9
+ import { get_template } from './component-registry.js';
10
+ import { Jqhtml_Component as BaseComponent } from './component.js';
11
+ /**
12
+ * Process slot-only template inheritance
13
+ *
14
+ * When a component's template returns {_slots: {...}}, walk the prototype
15
+ * chain to find a parent template and invoke it with the child's slots as content.
16
+ *
17
+ * @param component The component instance
18
+ * @param childSlots The slots object from the child template
19
+ * @returns [instructions, context] tuple or null if no parent found
20
+ */
21
+ async function process_slot_inheritance(component, childSlots) {
22
+ // Walk the prototype chain to find parent class with template
23
+ let currentClass = Object.getPrototypeOf(component.constructor);
24
+ console.log(`[JQHTML] Walking prototype chain for ${component.constructor.name}`);
25
+ while (currentClass && currentClass !== BaseComponent && currentClass.name !== 'Object') {
26
+ const className = currentClass.name;
27
+ console.log(`[JQHTML] Checking parent class: ${className}`);
28
+ // Skip internal framework classes
29
+ if (className === '_Jqhtml_Component' || className === '_Base_Jqhtml_Component') {
30
+ currentClass = Object.getPrototypeOf(currentClass);
31
+ continue;
32
+ }
33
+ // Try to find template for this parent class
34
+ try {
35
+ const parentTemplate = get_template(className);
36
+ console.log(`[JQHTML] Template found for ${className}:`, parentTemplate ? parentTemplate.name : 'null');
37
+ // Check if we got the default template (means no real template found)
38
+ if (parentTemplate && parentTemplate.name !== 'Jqhtml_Component') {
39
+ console.log(`[JQHTML] Invoking parent template ${className}`);
40
+ // Found a real parent template - invoke it with child's slots as content
41
+ const [parentInstructions, parentContext] = parentTemplate.render.call(component, component.data, component.args, childSlots // Pass child slots as content parameter
42
+ );
43
+ // Check if parent also returns slots (recursive inheritance)
44
+ if (parentInstructions && typeof parentInstructions === 'object' && parentInstructions._slots) {
45
+ // Parent also has slot-only template - recurse
46
+ console.log(`[JQHTML] Parent also slot-only, recursing`);
47
+ return await process_slot_inheritance(component, parentInstructions._slots);
48
+ }
49
+ // Parent returned HTML - we're done
50
+ console.log(`[JQHTML] Parent returned instructions, inheritance complete`);
51
+ return [parentInstructions, parentContext];
52
+ }
53
+ }
54
+ catch (error) {
55
+ console.warn(`[JQHTML] Error looking up parent template for ${className}:`, error);
56
+ }
57
+ // Move to next parent
58
+ currentClass = Object.getPrototypeOf(currentClass);
59
+ }
60
+ // No parent template found
61
+ console.warn(`[JQHTML] No parent template found after walking chain`);
62
+ return null;
63
+ }
64
+ /**
65
+ * Render a template for a component
66
+ * Templates are functions that return [instructions, context] tuples
67
+ */
68
+ export async function render_template(component, template_fn) {
69
+ // Get template from registry if not provided
70
+ let render_fn = template_fn;
71
+ if (!render_fn) {
72
+ const template_def = get_template_by_class(component.constructor);
73
+ render_fn = template_def.render;
74
+ }
75
+ if (!render_fn) {
76
+ // No template, component should handle its own rendering
77
+ return;
78
+ }
79
+ // Clear existing content
80
+ component.$.empty();
81
+ // Execute template function
82
+ // Templates receive: (data, args, content)
83
+ // Provide a default empty content function if none provided
84
+ const defaultContent = () => '';
85
+ let [instructions, context] = render_fn.call(component, component.data, component.args, defaultContent // Default content function that returns empty string
86
+ );
87
+ // Check for slot-only template inheritance
88
+ // If instructions is {_slots: {...}}, this is a slot-only template
89
+ // We need to find the parent template and invoke it with these slots
90
+ if (instructions && typeof instructions === 'object' && instructions._slots) {
91
+ console.log(`[JQHTML] Slot-only template detected for ${component.constructor.name}, invoking inheritance`);
92
+ const result = await process_slot_inheritance(component, instructions._slots);
93
+ if (result) {
94
+ console.log(`[JQHTML] Parent template found, using parent instructions`);
95
+ instructions = result[0];
96
+ context = result[1];
97
+ }
98
+ else {
99
+ console.warn(`[JQHTML] No parent template found for ${component.constructor.name}, rendering empty`);
100
+ // No parent template found - return empty
101
+ instructions = [];
102
+ }
103
+ }
104
+ // Process instructions to generate DOM
105
+ await process_instructions(instructions, component.$, component);
106
+ // Process bindings after DOM is created
107
+ await process_bindings(component);
108
+ // Attach event handlers
109
+ await attach_event_handlers(component);
110
+ }
111
+ /**
112
+ * Process data bindings (attributes created by :prop syntax)
113
+ */
114
+ async function process_bindings(component) {
115
+ // Find all elements with data-bind-* attributes
116
+ component.$.find('[data-bind-prop], [data-bind-value], [data-bind-text], [data-bind-html], [data-bind-class], [data-bind-style]').each((_, element) => {
117
+ const el = $(element);
118
+ const attrs = element.attributes;
119
+ for (let i = 0; i < attrs.length; i++) {
120
+ const attr = attrs[i];
121
+ if (attr.name.startsWith('data-bind-')) {
122
+ const binding_type = attr.name.substring(10); // Remove 'data-bind-'
123
+ const expression = attr.value;
124
+ try {
125
+ // Evaluate expression in component context
126
+ const value = evaluate_expression(expression, component);
127
+ // Apply binding based on type
128
+ switch (binding_type) {
129
+ case 'prop':
130
+ // Generic property binding
131
+ const prop_name = el.attr('data-bind-prop-name') || 'value';
132
+ el.prop(prop_name, value);
133
+ break;
134
+ case 'value':
135
+ el.val(value);
136
+ break;
137
+ case 'text':
138
+ el.text(value);
139
+ break;
140
+ case 'html':
141
+ el.html(value);
142
+ break;
143
+ case 'class':
144
+ if (typeof value === 'object') {
145
+ // Object syntax: {active: true, disabled: false}
146
+ Object.entries(value).forEach(([className, enabled]) => {
147
+ el.toggleClass(className, !!enabled);
148
+ });
149
+ }
150
+ else {
151
+ // String syntax
152
+ el.addClass(String(value));
153
+ }
154
+ break;
155
+ case 'style':
156
+ if (typeof value === 'object') {
157
+ el.css(value);
158
+ }
159
+ else {
160
+ el.attr('style', String(value));
161
+ }
162
+ break;
163
+ default:
164
+ // Custom binding - set as attribute
165
+ el.attr(binding_type, value);
166
+ }
167
+ }
168
+ catch (error) {
169
+ console.error(`Error evaluating binding "${expression}":`, error);
170
+ }
171
+ }
172
+ }
173
+ });
174
+ }
175
+ /**
176
+ * Attach event handlers (attributes created by @event syntax)
177
+ */
178
+ async function attach_event_handlers(component) {
179
+ // Find all elements with data-on-* attributes
180
+ component.$.find('[data-on-click], [data-on-change], [data-on-submit], [data-on-keyup], [data-on-keydown], [data-on-focus], [data-on-blur]').each((_, element) => {
181
+ const el = $(element);
182
+ const attrs = element.attributes;
183
+ for (let i = 0; i < attrs.length; i++) {
184
+ const attr = attrs[i];
185
+ if (attr.name.startsWith('data-on-')) {
186
+ const event_name = attr.name.substring(8); // Remove 'data-on-'
187
+ const handler_expr = attr.value;
188
+ // Remove the attribute to avoid re-processing
189
+ el.removeAttr(attr.name);
190
+ // Attach event handler
191
+ el.on(event_name, function (event) {
192
+ try {
193
+ // Create handler function in component context
194
+ const handler = evaluate_handler(handler_expr, component);
195
+ if (typeof handler === 'function') {
196
+ // Call with component as 'this' and pass event
197
+ handler.call(component, event);
198
+ }
199
+ else {
200
+ // Expression to execute
201
+ evaluate_expression(handler_expr, component, { $event: event });
202
+ }
203
+ }
204
+ catch (error) {
205
+ console.error(`Error in ${event_name} handler "${handler_expr}":`, error);
206
+ }
207
+ });
208
+ }
209
+ }
210
+ });
211
+ }
212
+ /**
213
+ * Evaluate an expression in component context
214
+ */
215
+ function evaluate_expression(expression, component, locals = {}) {
216
+ // Create evaluation context
217
+ const context = {
218
+ // Component properties
219
+ data: component.data,
220
+ args: component.args,
221
+ $: component.$,
222
+ // Component methods
223
+ $sid: component.$sid.bind(component),
224
+ // Locals (like $event)
225
+ ...locals
226
+ };
227
+ // Build function that evaluates in context
228
+ const keys = Object.keys(context);
229
+ const values = Object.values(context);
230
+ try {
231
+ // Use Function constructor for better performance than eval
232
+ const fn = new Function(...keys, `return (${expression})`);
233
+ return fn(...values);
234
+ }
235
+ catch (error) {
236
+ console.error(`Invalid expression: ${expression}`, error);
237
+ return undefined;
238
+ }
239
+ }
240
+ /**
241
+ * Evaluate a handler expression (might be method name or inline code)
242
+ */
243
+ function evaluate_handler(expression, component) {
244
+ // Check if it's a method name on the component
245
+ if (expression in component && typeof component[expression] === 'function') {
246
+ return component[expression];
247
+ }
248
+ // Otherwise treat as inline code
249
+ try {
250
+ return new Function('$event', `
251
+ const { data, args, $, emit, $sid } = this;
252
+ ${expression}
253
+ `).bind(component);
254
+ }
255
+ catch (error) {
256
+ console.error(`Invalid handler: ${expression}`, error);
257
+ return null;
258
+ }
259
+ }
260
+ /**
261
+ * Helper to escape HTML for safe output
262
+ */
263
+ export function escape_html(str) {
264
+ const div = document.createElement('div');
265
+ div.textContent = str;
266
+ return div.innerHTML;
267
+ }
268
+ /**
269
+ * Helper to escape HTML and convert newlines to <br /> tags
270
+ * Used by <%br= %> syntax for displaying user-entered text with line breaks
271
+ */
272
+ export function escape_html_nl2br(str) {
273
+ const div = document.createElement('div');
274
+ div.textContent = str;
275
+ // Escape HTML first, then replace newlines with <br />
276
+ return div.innerHTML.replace(/\n/g, '<br />');
277
+ }
278
+ //# sourceMappingURL=template-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-renderer.js","sourceRoot":"","sources":["../src/template-renderer.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
@@ -0,0 +1,69 @@
1
+ /**
2
+ * JQHTML Viewport Resize Dispatch
3
+ *
4
+ * One framework-owned, debounced window 'resize' listener fans out to every live
5
+ * component in the document by calling on_viewport_resize(viewport_width).
6
+ *
7
+ * Components never bind their own window listener, so there is nothing to unbind
8
+ * in on_stop() - a component that is stopped or removed from the document simply
9
+ * stops being found by the dispatcher.
10
+ */
11
+ /** Trailing-edge debounce applied to the window resize listener. */
12
+ export const VIEWPORT_RESIZE_DEBOUNCE_MS = 30;
13
+ let debounce_timer = null;
14
+ let listener_installed = false;
15
+ /**
16
+ * Current viewport width in CSS pixels.
17
+ *
18
+ * window.innerWidth is used (not $(window).width()) because it matches the width
19
+ * CSS media queries resolve against. It includes the scrollbar gutter.
20
+ *
21
+ * Returns 0 outside a browser (SSR).
22
+ */
23
+ export function get_viewport_width() {
24
+ return typeof window !== 'undefined' ? window.innerWidth : 0;
25
+ }
26
+ /**
27
+ * Call on_viewport_resize(width) on every component currently in the document.
28
+ *
29
+ * Walks $('.Component') in document order (parents before children). Elements
30
+ * with no component instance and stopped components are skipped. A component
31
+ * that throws is logged and the walk continues - one bad handler must not stop
32
+ * the rest of the page from resizing.
33
+ */
34
+ export function dispatch_viewport_resize(jQuery) {
35
+ const viewport_width = get_viewport_width();
36
+ jQuery('.Component').each(function () {
37
+ const component = jQuery(this).data('_component');
38
+ if (!component || component._stopped)
39
+ return;
40
+ if (typeof component.on_viewport_resize !== 'function')
41
+ return;
42
+ try {
43
+ component.on_viewport_resize(viewport_width);
44
+ }
45
+ catch (error) {
46
+ console.error(`[JQHTML] Error in on_viewport_resize() for ${component.component_name?.() || 'component'}:`, error);
47
+ }
48
+ });
49
+ }
50
+ /**
51
+ * Install the single window resize listener. Idempotent - repeated init() calls
52
+ * and non-browser environments are no-ops.
53
+ */
54
+ export function init_viewport_resize(jQuery) {
55
+ if (typeof window === 'undefined')
56
+ return;
57
+ if (listener_installed)
58
+ return;
59
+ listener_installed = true;
60
+ jQuery(window).on('resize.jqhtml_viewport', function () {
61
+ if (debounce_timer !== null)
62
+ clearTimeout(debounce_timer);
63
+ debounce_timer = setTimeout(function () {
64
+ debounce_timer = null;
65
+ dispatch_viewport_resize(jQuery);
66
+ }, VIEWPORT_RESIZE_DEBOUNCE_MS);
67
+ });
68
+ }
69
+ //# sourceMappingURL=viewport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewport.js","sourceRoot":"","sources":["../src/viewport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,oEAAoE;AACpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAE9C,IAAI,cAAc,GAAQ,IAAI,CAAC;AAC/B,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAW;IAClD,MAAM,cAAc,GAAG,kBAAkB,EAAE,CAAC;IAE5C,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;QACxB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ;YAAE,OAAO;QAC7C,IAAI,OAAO,SAAS,CAAC,kBAAkB,KAAK,UAAU;YAAE,OAAO;QAE/D,IAAI,CAAC;YACH,SAAS,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,8CAA8C,SAAS,CAAC,cAAc,EAAE,EAAE,IAAI,WAAW,GAAG,EAC5F,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAW;IAC9C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,IAAI,kBAAkB;QAAE,OAAO;IAC/B,kBAAkB,GAAG,IAAI,CAAC;IAE1B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,wBAAwB,EAAE;QAC1C,IAAI,cAAc,KAAK,IAAI;YAAE,YAAY,CAAC,cAAc,CAAC,CAAC;QAC1D,cAAc,GAAG,UAAU,CAAC;YAC1B,cAAc,GAAG,IAAI,CAAC;YACtB,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jqhtml/core",
3
- "version": "2.3.54",
3
+ "version": "2.3.59",
4
4
  "description": "Core runtime library for JQHTML",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",