@sparkvault/sdk 1.8.2 → 1.8.3
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/dist/sparkvault.cjs.js +85 -56
- package/dist/sparkvault.cjs.js.map +1 -1
- package/dist/sparkvault.esm.js +85 -56
- package/dist/sparkvault.esm.js.map +1 -1
- package/dist/sparkvault.js +1 -1
- package/dist/sparkvault.js.map +1 -1
- package/dist/utils/dom.d.ts +11 -0
- package/package.json +1 -1
package/dist/sparkvault.esm.js
CHANGED
|
@@ -5272,6 +5272,25 @@ class InlineContainer {
|
|
|
5272
5272
|
}
|
|
5273
5273
|
}
|
|
5274
5274
|
|
|
5275
|
+
/**
|
|
5276
|
+
* DOM Utilities
|
|
5277
|
+
*
|
|
5278
|
+
* Shared utilities for DOM operations.
|
|
5279
|
+
*/
|
|
5280
|
+
/**
|
|
5281
|
+
* Execute a callback when the DOM is ready.
|
|
5282
|
+
* If DOM is already ready, executes immediately.
|
|
5283
|
+
* Otherwise, waits for DOMContentLoaded.
|
|
5284
|
+
*/
|
|
5285
|
+
function onDomReady(callback) {
|
|
5286
|
+
if (document.readyState === 'loading') {
|
|
5287
|
+
document.addEventListener('DOMContentLoaded', callback, { once: true });
|
|
5288
|
+
}
|
|
5289
|
+
else {
|
|
5290
|
+
callback();
|
|
5291
|
+
}
|
|
5292
|
+
}
|
|
5293
|
+
|
|
5275
5294
|
/* global Element */
|
|
5276
5295
|
/**
|
|
5277
5296
|
* Identity Module
|
|
@@ -5383,7 +5402,7 @@ class IdentityModule {
|
|
|
5383
5402
|
* cleanup();
|
|
5384
5403
|
*/
|
|
5385
5404
|
attach(selector, options = {}) {
|
|
5386
|
-
|
|
5405
|
+
let observer = null;
|
|
5387
5406
|
const handleClick = async (event) => {
|
|
5388
5407
|
event.preventDefault();
|
|
5389
5408
|
try {
|
|
@@ -5400,40 +5419,45 @@ class IdentityModule {
|
|
|
5400
5419
|
// Error already handled by callbacks or will use server redirect
|
|
5401
5420
|
}
|
|
5402
5421
|
};
|
|
5403
|
-
|
|
5404
|
-
|
|
5405
|
-
|
|
5406
|
-
element.
|
|
5422
|
+
const attachToElements = () => {
|
|
5423
|
+
const elements = document.querySelectorAll(selector);
|
|
5424
|
+
elements.forEach((element) => {
|
|
5425
|
+
element.addEventListener('click', handleClick);
|
|
5426
|
+
this.attachedElements.set(element, () => {
|
|
5427
|
+
element.removeEventListener('click', handleClick);
|
|
5428
|
+
});
|
|
5407
5429
|
});
|
|
5408
|
-
|
|
5409
|
-
|
|
5410
|
-
|
|
5411
|
-
|
|
5412
|
-
|
|
5413
|
-
|
|
5414
|
-
|
|
5415
|
-
|
|
5416
|
-
|
|
5417
|
-
node.removeEventListener('click', handleClick);
|
|
5418
|
-
});
|
|
5419
|
-
}
|
|
5420
|
-
// Check descendants
|
|
5421
|
-
node.querySelectorAll(selector).forEach((el) => {
|
|
5422
|
-
if (!this.attachedElements.has(el)) {
|
|
5423
|
-
el.addEventListener('click', handleClick);
|
|
5424
|
-
this.attachedElements.set(el, () => {
|
|
5425
|
-
el.removeEventListener('click', handleClick);
|
|
5430
|
+
// Watch for dynamically added elements
|
|
5431
|
+
observer = new MutationObserver((mutations) => {
|
|
5432
|
+
mutations.forEach((mutation) => {
|
|
5433
|
+
mutation.addedNodes.forEach((node) => {
|
|
5434
|
+
if (node instanceof Element) {
|
|
5435
|
+
if (node.matches(selector)) {
|
|
5436
|
+
node.addEventListener('click', handleClick);
|
|
5437
|
+
this.attachedElements.set(node, () => {
|
|
5438
|
+
node.removeEventListener('click', handleClick);
|
|
5426
5439
|
});
|
|
5427
5440
|
}
|
|
5428
|
-
|
|
5429
|
-
|
|
5441
|
+
// Check descendants
|
|
5442
|
+
node.querySelectorAll(selector).forEach((el) => {
|
|
5443
|
+
if (!this.attachedElements.has(el)) {
|
|
5444
|
+
el.addEventListener('click', handleClick);
|
|
5445
|
+
this.attachedElements.set(el, () => {
|
|
5446
|
+
el.removeEventListener('click', handleClick);
|
|
5447
|
+
});
|
|
5448
|
+
}
|
|
5449
|
+
});
|
|
5450
|
+
}
|
|
5451
|
+
});
|
|
5430
5452
|
});
|
|
5431
5453
|
});
|
|
5432
|
-
|
|
5433
|
-
|
|
5454
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
5455
|
+
};
|
|
5456
|
+
// Defer attachment until DOM is ready
|
|
5457
|
+
onDomReady(attachToElements);
|
|
5434
5458
|
// Return cleanup function
|
|
5435
5459
|
return () => {
|
|
5436
|
-
observer
|
|
5460
|
+
observer?.disconnect();
|
|
5437
5461
|
this.attachedElements.forEach((cleanup) => cleanup());
|
|
5438
5462
|
this.attachedElements.clear();
|
|
5439
5463
|
};
|
|
@@ -8227,7 +8251,7 @@ class VaultUploadModule {
|
|
|
8227
8251
|
if (!options.vaultId) {
|
|
8228
8252
|
throw new ValidationError('vaultId is required');
|
|
8229
8253
|
}
|
|
8230
|
-
|
|
8254
|
+
let observer = null;
|
|
8231
8255
|
const handleClick = async (event) => {
|
|
8232
8256
|
event.preventDefault();
|
|
8233
8257
|
try {
|
|
@@ -8243,40 +8267,45 @@ class VaultUploadModule {
|
|
|
8243
8267
|
// Error already handled by callbacks or will use server redirect
|
|
8244
8268
|
}
|
|
8245
8269
|
};
|
|
8246
|
-
|
|
8247
|
-
|
|
8248
|
-
|
|
8249
|
-
element.
|
|
8270
|
+
const attachToElements = () => {
|
|
8271
|
+
const elements = document.querySelectorAll(selector);
|
|
8272
|
+
elements.forEach((element) => {
|
|
8273
|
+
element.addEventListener('click', handleClick);
|
|
8274
|
+
this.attachedElements.set(element, () => {
|
|
8275
|
+
element.removeEventListener('click', handleClick);
|
|
8276
|
+
});
|
|
8250
8277
|
});
|
|
8251
|
-
|
|
8252
|
-
|
|
8253
|
-
|
|
8254
|
-
|
|
8255
|
-
|
|
8256
|
-
|
|
8257
|
-
|
|
8258
|
-
|
|
8259
|
-
|
|
8260
|
-
node.removeEventListener('click', handleClick);
|
|
8261
|
-
});
|
|
8262
|
-
}
|
|
8263
|
-
// Check descendants
|
|
8264
|
-
node.querySelectorAll(selector).forEach((el) => {
|
|
8265
|
-
if (!this.attachedElements.has(el)) {
|
|
8266
|
-
el.addEventListener('click', handleClick);
|
|
8267
|
-
this.attachedElements.set(el, () => {
|
|
8268
|
-
el.removeEventListener('click', handleClick);
|
|
8278
|
+
// Watch for dynamically added elements
|
|
8279
|
+
observer = new MutationObserver((mutations) => {
|
|
8280
|
+
mutations.forEach((mutation) => {
|
|
8281
|
+
mutation.addedNodes.forEach((node) => {
|
|
8282
|
+
if (node instanceof Element) {
|
|
8283
|
+
if (node.matches(selector)) {
|
|
8284
|
+
node.addEventListener('click', handleClick);
|
|
8285
|
+
this.attachedElements.set(node, () => {
|
|
8286
|
+
node.removeEventListener('click', handleClick);
|
|
8269
8287
|
});
|
|
8270
8288
|
}
|
|
8271
|
-
|
|
8272
|
-
|
|
8289
|
+
// Check descendants
|
|
8290
|
+
node.querySelectorAll(selector).forEach((el) => {
|
|
8291
|
+
if (!this.attachedElements.has(el)) {
|
|
8292
|
+
el.addEventListener('click', handleClick);
|
|
8293
|
+
this.attachedElements.set(el, () => {
|
|
8294
|
+
el.removeEventListener('click', handleClick);
|
|
8295
|
+
});
|
|
8296
|
+
}
|
|
8297
|
+
});
|
|
8298
|
+
}
|
|
8299
|
+
});
|
|
8273
8300
|
});
|
|
8274
8301
|
});
|
|
8275
|
-
|
|
8276
|
-
|
|
8302
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
8303
|
+
};
|
|
8304
|
+
// Defer attachment until DOM is ready
|
|
8305
|
+
onDomReady(attachToElements);
|
|
8277
8306
|
// Return cleanup function
|
|
8278
8307
|
return () => {
|
|
8279
|
-
observer
|
|
8308
|
+
observer?.disconnect();
|
|
8280
8309
|
this.attachedElements.forEach((cleanup) => cleanup());
|
|
8281
8310
|
this.attachedElements.clear();
|
|
8282
8311
|
};
|