mount-observer 0.1.14 → 0.1.16

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 (40) hide show
  1. package/ElementMountExtension.js +5 -2
  2. package/ElementMountExtension.ts +7 -2
  3. package/MountObserver.js +3 -0
  4. package/MountObserver.ts +3 -0
  5. package/RegistryMountCoordinator.js +5 -5
  6. package/RegistryMountCoordinator.ts +8 -6
  7. package/{DefineCustomElementHandler.js → handlers/DefineCustomElement.js} +103 -99
  8. package/handlers/DefineCustomElement.ts +123 -0
  9. package/{EnhanceMountedElementHandler.js → handlers/EnhanceMountedElement.js} +109 -96
  10. package/handlers/EnhanceMountedElement.ts +126 -0
  11. package/handlers/Events.js +110 -0
  12. package/handlers/EvtRt.js +59 -0
  13. package/handlers/GenIds.js +37 -0
  14. package/handlers/GenIds.ts +45 -0
  15. package/handlers/HTMLInclude.js +393 -0
  16. package/handlers/HTMLInclude.ts +453 -0
  17. package/handlers/HoistTemplate.js +77 -0
  18. package/handlers/HoistTemplate.ts +89 -0
  19. package/handlers/MountObserver.js +941 -0
  20. package/handlers/MountObserverScript.js +78 -0
  21. package/handlers/MountObserverScript.ts +89 -0
  22. package/handlers/ScriptExport.js +83 -0
  23. package/handlers/ScriptExport.ts +97 -0
  24. package/handlers/SharedMutationObserver.js +78 -0
  25. package/handlers/arr.js +16 -0
  26. package/handlers/connectionMonitor.js +122 -0
  27. package/handlers/elementIntersection.js +73 -0
  28. package/handlers/emitEvents.js +187 -0
  29. package/handlers/getRegistryRoot.js +52 -0
  30. package/handlers/loadImports.js +129 -0
  31. package/handlers/mediaQuery.js +90 -0
  32. package/handlers/rootSizeObserver.js +131 -0
  33. package/handlers/upShadowSearch.js +70 -0
  34. package/handlers/withScopePerimeter.js +22 -0
  35. package/package.json +12 -2
  36. package/types/assign-gingerly/types.d.ts +244 -0
  37. package/types/be-a-beacon/types.d.ts +3 -0
  38. package/types/global.d.ts +29 -0
  39. package/types/id-generation/types.d.ts +26 -0
  40. package/types/mount-observer/types.d.ts +332 -0
@@ -0,0 +1,941 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ var __generator = (this && this.__generator) || function (thisArg, body) {
38
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
39
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
+ function verb(n) { return function (v) { return step([n, v]); }; }
41
+ function step(op) {
42
+ if (f) throw new TypeError("Generator is already executing.");
43
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
44
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45
+ if (y = 0, t) op = [op[0] & 2, t.value];
46
+ switch (op[0]) {
47
+ case 0: case 1: t = op; break;
48
+ case 4: _.label++; return { value: op[1], done: false };
49
+ case 5: _.label++; y = op[1]; op = [0]; continue;
50
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
+ default:
52
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
+ if (t[2]) _.ops.pop();
57
+ _.trys.pop(); continue;
58
+ }
59
+ op = body.call(thisArg, _);
60
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
+ }
63
+ };
64
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
65
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
66
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
67
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
68
+ };
69
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
70
+ if (kind === "m") throw new TypeError("Private method is not writable");
71
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
72
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
73
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
74
+ };
75
+ Object.defineProperty(exports, "__esModule", { value: true });
76
+ exports.MountObserver = void 0;
77
+ var arr_js_1 = require("./arr.js");
78
+ var Events_js_1 = require("./Events.js");
79
+ var SharedMutationObserver_js_1 = require("./SharedMutationObserver.js");
80
+ var withScopePerimeter_js_1 = require("./withScopePerimeter.js");
81
+ var MountObserver = /** @class */ (function (_super) {
82
+ __extends(MountObserver, _super);
83
+ function MountObserver(config, options) {
84
+ if (options === void 0) { options = {}; }
85
+ var _this = _super.call(this) || this;
86
+ _MountObserver_instances.add(_this);
87
+ _MountObserver_init.set(_this, void 0);
88
+ _MountObserver_options.set(_this, void 0);
89
+ _MountObserver_abortController.set(_this, void 0);
90
+ _MountObserver_modules.set(_this, []);
91
+ _MountObserver_configFromPromise.set(_this, void 0);
92
+ _MountObserver_mountedElements.set(_this, {
93
+ weakSet: new WeakSet(),
94
+ setWeak: new Set()
95
+ });
96
+ _MountObserver_processedDoForElement.set(_this, new WeakSet());
97
+ _MountObserver_processedEventsForElement.set(_this, new WeakMap());
98
+ _MountObserver_mutationCallback.set(_this, void 0);
99
+ _MountObserver_rootNode.set(_this, void 0);
100
+ _MountObserver_importsLoaded.set(_this, false);
101
+ _MountObserver_mediaQueryCleanup.set(_this, void 0);
102
+ _MountObserver_rootSizeCleanup.set(_this, void 0);
103
+ _MountObserver_intersectionCleanup.set(_this, void 0);
104
+ _MountObserver_connectionCleanup.set(_this, void 0);
105
+ _MountObserver_intersectionObserver.set(_this, void 0);
106
+ _MountObserver_mediaMatches.set(_this, true);
107
+ _MountObserver_rootSizeMatches.set(_this, true);
108
+ _MountObserver_connectionMatches.set(_this, true);
109
+ _MountObserver_asgMtSource.set(_this, void 0);
110
+ _MountObserver_asgDisMtSource.set(_this, void 0);
111
+ _MountObserver_stageMtSource.set(_this, void 0);
112
+ _MountObserver_stageReversals.set(_this, new WeakMap());
113
+ _MountObserver_assignTentatively.set(_this, void 0);
114
+ _MountObserver_elementNotifiers.set(_this, new WeakMap());
115
+ _MountObserver_notifierMountedElements.set(_this, new WeakSet());
116
+ _MountObserver_subObservers.set(_this, void 0);
117
+ _MountObserver_whenDefinedResolved.set(_this, false);
118
+ // Merge handler defaults if do is a string reference
119
+ var mergedConfig = __classPrivateFieldGet(_this, _MountObserver_instances, "m", _MountObserver_mergeHandlerDefaults).call(_this, config);
120
+ __classPrivateFieldSet(_this, _MountObserver_init, mergedConfig, "f");
121
+ __classPrivateFieldSet(_this, _MountObserver_options, options, "f");
122
+ __classPrivateFieldSet(_this, _MountObserver_abortController, new AbortController(), "f");
123
+ var assignOnMount = mergedConfig.assignOnMount, assignOnDismount = mergedConfig.assignOnDismount, stageOnMount = mergedConfig.stageOnMount, doValue = mergedConfig.do, loadingEagerness = mergedConfig.loadingEagerness, imp = mergedConfig.import, configFrom = mergedConfig.configFrom;
124
+ // Make a copy of assignOnMount config using structuredClone
125
+ if (assignOnMount !== undefined) {
126
+ __classPrivateFieldSet(_this, _MountObserver_asgMtSource, structuredClone(assignOnMount), "f");
127
+ }
128
+ if (assignOnDismount !== undefined) {
129
+ __classPrivateFieldSet(_this, _MountObserver_asgDisMtSource, structuredClone(assignOnDismount), "f");
130
+ }
131
+ if (stageOnMount !== undefined) {
132
+ __classPrivateFieldSet(_this, _MountObserver_stageMtSource, structuredClone(stageOnMount), "f");
133
+ }
134
+ if (options.disconnectedSignal) {
135
+ options.disconnectedSignal.addEventListener('abort', function () {
136
+ _this.disconnect();
137
+ });
138
+ }
139
+ // Validate do property if it contains string references
140
+ if (doValue !== undefined) {
141
+ __classPrivateFieldGet(_this, _MountObserver_instances, "m", _MountObserver_validateDoHandlers).call(_this);
142
+ }
143
+ // Load configFrom modules if specified
144
+ if (configFrom !== undefined) {
145
+ __classPrivateFieldSet(_this, _MountObserver_configFromPromise, __classPrivateFieldGet(_this, _MountObserver_instances, "m", _MountObserver_loadConfigFrom).call(_this), "f");
146
+ }
147
+ // Start loading imports if eager
148
+ if (loadingEagerness === 'eager' && imp) {
149
+ __classPrivateFieldGet(_this, _MountObserver_instances, "m", _MountObserver_loadImports).call(_this);
150
+ }
151
+ return _this;
152
+ }
153
+ MountObserver.define = function (name, handler) {
154
+ if (__classPrivateFieldGet(this, _a, "f", _MountObserver_handlerRegistry).has(name)) {
155
+ throw new Error("".concat(name, " already in use"));
156
+ }
157
+ __classPrivateFieldGet(this, _a, "f", _MountObserver_handlerRegistry).set(name, handler);
158
+ };
159
+ Object.defineProperty(MountObserver.prototype, "disconnectedSignal", {
160
+ get: function () {
161
+ return __classPrivateFieldGet(this, _MountObserver_abortController, "f").signal;
162
+ },
163
+ enumerable: false,
164
+ configurable: true
165
+ });
166
+ Object.defineProperty(MountObserver.prototype, "mountedElements", {
167
+ get: function () {
168
+ var elements = [];
169
+ for (var _i = 0, _b = __classPrivateFieldGet(this, _MountObserver_mountedElements, "f").setWeak; _i < _b.length; _i++) {
170
+ var ref = _b[_i];
171
+ var element = ref.deref();
172
+ if (element !== undefined) {
173
+ elements.push(element);
174
+ }
175
+ }
176
+ return elements;
177
+ },
178
+ enumerable: false,
179
+ configurable: true
180
+ });
181
+ MountObserver.prototype.getNotifier = function (element) {
182
+ // Return cached notifier if it exists
183
+ var notifier = __classPrivateFieldGet(this, _MountObserver_elementNotifiers, "f").get(element);
184
+ if (notifier) {
185
+ return notifier;
186
+ }
187
+ // Create new EventTarget for this element
188
+ notifier = new EventTarget();
189
+ __classPrivateFieldGet(this, _MountObserver_elementNotifiers, "f").set(element, notifier);
190
+ return notifier;
191
+ };
192
+ /**
193
+ * Begins observing elements within the provided node.
194
+ *
195
+ * @param observedNode - The node to observe for matching elements. This is the root
196
+ * of the observation scope where the mutation observer will be
197
+ * registered. All matching elements within this node (and its
198
+ * descendants) will trigger mount callbacks.
199
+ *
200
+ * Common values:
201
+ * - `document` - Observe the entire document
202
+ * - `element` - Observe a specific subtree
203
+ * - `shadowRoot` - Observe within a shadow DOM
204
+ */
205
+ MountObserver.prototype.observe = function (observedNode) {
206
+ return __awaiter(this, void 0, void 0, function () {
207
+ var assignTentatively, observerConfig;
208
+ var _this = this;
209
+ return __generator(this, function (_b) {
210
+ switch (_b.label) {
211
+ case 0:
212
+ if (__classPrivateFieldGet(this, _MountObserver_rootNode, "f")) {
213
+ throw new Error('Already observing');
214
+ }
215
+ if (!__classPrivateFieldGet(this, _MountObserver_configFromPromise, "f")) return [3 /*break*/, 2];
216
+ return [4 /*yield*/, __classPrivateFieldGet(this, _MountObserver_configFromPromise, "f")];
217
+ case 1:
218
+ _b.sent();
219
+ _b.label = 2;
220
+ case 2:
221
+ if (!(__classPrivateFieldGet(this, _MountObserver_asgMtSource, "f") || __classPrivateFieldGet(this, _MountObserver_asgDisMtSource, "f"))) return [3 /*break*/, 4];
222
+ return [4 /*yield*/, Promise.resolve().then(function () { return require('assign-gingerly/object-extension.js'); })];
223
+ case 3:
224
+ _b.sent();
225
+ _b.label = 4;
226
+ case 4:
227
+ if (!__classPrivateFieldGet(this, _MountObserver_stageMtSource, "f")) return [3 /*break*/, 6];
228
+ return [4 /*yield*/, Promise.resolve().then(function () { return require('assign-gingerly/assignTentatively.js'); })];
229
+ case 5:
230
+ assignTentatively = (_b.sent()).assignTentatively;
231
+ __classPrivateFieldSet(this, _MountObserver_assignTentatively, assignTentatively, "f");
232
+ _b.label = 6;
233
+ case 6:
234
+ __classPrivateFieldSet(this, _MountObserver_rootNode, new WeakRef(observedNode), "f");
235
+ // Wait for whenDefined if specified (must be first check)
236
+ return [4 /*yield*/, __classPrivateFieldGet(this, _MountObserver_instances, "m", _MountObserver_waitForWhenDefined).call(this, observedNode)];
237
+ case 7:
238
+ // Wait for whenDefined if specified (must be first check)
239
+ _b.sent();
240
+ // Create sub-observers from `with` property
241
+ return [4 /*yield*/, __classPrivateFieldGet(this, _MountObserver_instances, "m", _MountObserver_createSubObservers).call(this, observedNode)];
242
+ case 8:
243
+ // Create sub-observers from `with` property
244
+ _b.sent();
245
+ if (!__classPrivateFieldGet(this, _MountObserver_init, "f").withMediaMatching) return [3 /*break*/, 10];
246
+ return [4 /*yield*/, __classPrivateFieldGet(this, _MountObserver_instances, "m", _MountObserver_setupMediaQuery).call(this)];
247
+ case 9:
248
+ _b.sent();
249
+ _b.label = 10;
250
+ case 10:
251
+ if (!__classPrivateFieldGet(this, _MountObserver_init, "f").whereObservedRootSizeMatches) return [3 /*break*/, 12];
252
+ return [4 /*yield*/, __classPrivateFieldGet(this, _MountObserver_instances, "m", _MountObserver_setupRootSizeObserver).call(this)];
253
+ case 11:
254
+ _b.sent();
255
+ _b.label = 12;
256
+ case 12:
257
+ if (!__classPrivateFieldGet(this, _MountObserver_init, "f").whereElementIntersectsWith) return [3 /*break*/, 14];
258
+ return [4 /*yield*/, __classPrivateFieldGet(this, _MountObserver_instances, "m", _MountObserver_setupElementIntersection).call(this)];
259
+ case 13:
260
+ _b.sent();
261
+ _b.label = 14;
262
+ case 14:
263
+ if (!__classPrivateFieldGet(this, _MountObserver_init, "f").whereConnectionHas) return [3 /*break*/, 16];
264
+ return [4 /*yield*/, __classPrivateFieldGet(this, _MountObserver_instances, "m", _MountObserver_setupConnectionMonitor).call(this)];
265
+ case 15:
266
+ _b.sent();
267
+ _b.label = 16;
268
+ case 16:
269
+ if (!(__classPrivateFieldGet(this, _MountObserver_init, "f").loadingEagerness === 'eager' && __classPrivateFieldGet(this, _MountObserver_init, "f").import && !__classPrivateFieldGet(this, _MountObserver_importsLoaded, "f"))) return [3 /*break*/, 18];
270
+ return [4 /*yield*/, __classPrivateFieldGet(this, _MountObserver_instances, "m", _MountObserver_loadImports).call(this)];
271
+ case 17:
272
+ _b.sent();
273
+ _b.label = 18;
274
+ case 18:
275
+ // Process existing elements only if all conditions match
276
+ if (__classPrivateFieldGet(this, _MountObserver_mediaMatches, "f") && __classPrivateFieldGet(this, _MountObserver_rootSizeMatches, "f") && __classPrivateFieldGet(this, _MountObserver_connectionMatches, "f")) {
277
+ __classPrivateFieldGet(this, _MountObserver_instances, "m", _MountObserver_processNode).call(this, observedNode);
278
+ }
279
+ // Create mutation callback
280
+ __classPrivateFieldSet(this, _MountObserver_mutationCallback, function (mutations) {
281
+ // Skip processing if any condition doesn't match
282
+ if (!__classPrivateFieldGet(_this, _MountObserver_mediaMatches, "f") || !__classPrivateFieldGet(_this, _MountObserver_rootSizeMatches, "f") || !__classPrivateFieldGet(_this, _MountObserver_connectionMatches, "f")) {
283
+ return;
284
+ }
285
+ for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {
286
+ var mutation = mutations_1[_i];
287
+ if (mutation.type === 'childList') {
288
+ for (var _b = 0, _c = mutation.addedNodes; _b < _c.length; _b++) {
289
+ var node = _c[_b];
290
+ if (node.nodeType === Node.ELEMENT_NODE) {
291
+ __classPrivateFieldGet(_this, _MountObserver_instances, "m", _MountObserver_processNode).call(_this, node);
292
+ }
293
+ }
294
+ mutation.removedNodes.forEach(function (node) {
295
+ if (node.nodeType === Node.ELEMENT_NODE) {
296
+ __classPrivateFieldGet(_this, _MountObserver_instances, "m", _MountObserver_handleRemoval).call(_this, node);
297
+ }
298
+ });
299
+ }
300
+ }
301
+ }, "f");
302
+ observerConfig = {
303
+ childList: true,
304
+ subtree: true
305
+ };
306
+ // Register with shared mutation observer
307
+ (0, SharedMutationObserver_js_1.registerSharedObserver)(observedNode, __classPrivateFieldGet(this, _MountObserver_mutationCallback, "f"), observerConfig);
308
+ return [2 /*return*/];
309
+ }
310
+ });
311
+ });
312
+ };
313
+ MountObserver.prototype.disconnect = function () {
314
+ var _b;
315
+ var rootNode = (_b = __classPrivateFieldGet(this, _MountObserver_rootNode, "f")) === null || _b === void 0 ? void 0 : _b.deref();
316
+ // Disconnect all sub-observers first (recursive)
317
+ if (__classPrivateFieldGet(this, _MountObserver_subObservers, "f")) {
318
+ for (var _i = 0, _c = __classPrivateFieldGet(this, _MountObserver_subObservers, "f").values(); _i < _c.length; _i++) {
319
+ var subObserver = _c[_i];
320
+ subObserver.disconnect();
321
+ }
322
+ __classPrivateFieldGet(this, _MountObserver_subObservers, "f").clear();
323
+ __classPrivateFieldSet(this, _MountObserver_subObservers, undefined, "f");
324
+ }
325
+ // Unregister from shared mutation observer
326
+ if (rootNode && __classPrivateFieldGet(this, _MountObserver_mutationCallback, "f")) {
327
+ (0, SharedMutationObserver_js_1.unregisterSharedObserver)(rootNode, __classPrivateFieldGet(this, _MountObserver_mutationCallback, "f"));
328
+ __classPrivateFieldSet(this, _MountObserver_mutationCallback, undefined, "f");
329
+ }
330
+ // Remove media query listener
331
+ if (__classPrivateFieldGet(this, _MountObserver_mediaQueryCleanup, "f")) {
332
+ __classPrivateFieldGet(this, _MountObserver_mediaQueryCleanup, "f").call(this);
333
+ __classPrivateFieldSet(this, _MountObserver_mediaQueryCleanup, undefined, "f");
334
+ }
335
+ // Remove root size observer
336
+ if (__classPrivateFieldGet(this, _MountObserver_rootSizeCleanup, "f")) {
337
+ __classPrivateFieldGet(this, _MountObserver_rootSizeCleanup, "f").call(this);
338
+ __classPrivateFieldSet(this, _MountObserver_rootSizeCleanup, undefined, "f");
339
+ }
340
+ // Remove intersection observer
341
+ if (__classPrivateFieldGet(this, _MountObserver_intersectionCleanup, "f")) {
342
+ __classPrivateFieldGet(this, _MountObserver_intersectionCleanup, "f").call(this);
343
+ __classPrivateFieldSet(this, _MountObserver_intersectionCleanup, undefined, "f");
344
+ }
345
+ // Remove connection monitor
346
+ if (__classPrivateFieldGet(this, _MountObserver_connectionCleanup, "f")) {
347
+ __classPrivateFieldGet(this, _MountObserver_connectionCleanup, "f").call(this);
348
+ __classPrivateFieldSet(this, _MountObserver_connectionCleanup, undefined, "f");
349
+ }
350
+ __classPrivateFieldGet(this, _MountObserver_abortController, "f").abort();
351
+ __classPrivateFieldSet(this, _MountObserver_rootNode, undefined, "f");
352
+ };
353
+ MountObserver.prototype.assignGingerly = function (config) {
354
+ return __awaiter(this, void 0, void 0, function () {
355
+ var _i, _b, ref, element;
356
+ return __generator(this, function (_c) {
357
+ switch (_c.label) {
358
+ case 0:
359
+ // Handle undefined case
360
+ if (config === undefined) {
361
+ __classPrivateFieldSet(this, _MountObserver_asgMtSource, undefined, "f");
362
+ return [2 /*return*/];
363
+ }
364
+ return [4 /*yield*/, Promise.resolve().then(function () { return require('assign-gingerly/object-extension.js'); })];
365
+ case 1:
366
+ _c.sent();
367
+ // Update the source config for future mounted elements
368
+ if (__classPrivateFieldGet(this, _MountObserver_asgMtSource, "f") === undefined) {
369
+ // No existing config, just clone the passed in object
370
+ __classPrivateFieldSet(this, _MountObserver_asgMtSource, structuredClone(config), "f");
371
+ }
372
+ else {
373
+ // Merge into existing config using assignGingerly
374
+ __classPrivateFieldGet(this, _MountObserver_asgMtSource, "f").assignGingerly(config);
375
+ //assignGingerly(this.#asgMtSource, config);
376
+ }
377
+ // Apply to already mounted elements using setWeak for iteration
378
+ for (_i = 0, _b = __classPrivateFieldGet(this, _MountObserver_mountedElements, "f").setWeak; _i < _b.length; _i++) {
379
+ ref = _b[_i];
380
+ element = ref.deref();
381
+ if (element) {
382
+ element.assignGingerly(config);
383
+ //assignGingerly(element, config);
384
+ }
385
+ }
386
+ return [2 /*return*/];
387
+ }
388
+ });
389
+ });
390
+ };
391
+ var _MountObserver_instances, _a, _MountObserver_handlerRegistry, _MountObserver_init, _MountObserver_options, _MountObserver_abortController, _MountObserver_modules, _MountObserver_configFromPromise, _MountObserver_mountedElements, _MountObserver_processedDoForElement, _MountObserver_processedEventsForElement, _MountObserver_mutationCallback, _MountObserver_rootNode, _MountObserver_importsLoaded, _MountObserver_mediaQueryCleanup, _MountObserver_rootSizeCleanup, _MountObserver_intersectionCleanup, _MountObserver_connectionCleanup, _MountObserver_intersectionObserver, _MountObserver_mediaMatches, _MountObserver_rootSizeMatches, _MountObserver_connectionMatches, _MountObserver_asgMtSource, _MountObserver_asgDisMtSource, _MountObserver_stageMtSource, _MountObserver_stageReversals, _MountObserver_assignTentatively, _MountObserver_elementNotifiers, _MountObserver_notifierMountedElements, _MountObserver_subObservers, _MountObserver_whenDefinedResolved, _MountObserver_mergeHandlerDefaults, _MountObserver_validateDoHandlers, _MountObserver_loadConfigFrom, _MountObserver_waitForWhenDefined, _MountObserver_createSubObservers, _MountObserver_setupMediaQuery, _MountObserver_setupRootSizeObserver, _MountObserver_setupElementIntersection, _MountObserver_setupConnectionMonitor, _MountObserver_loadImports, _MountObserver_processNode, _MountObserver_matchesSelector, _MountObserver_handleMatch, _MountObserver_handleRemoval;
392
+ _a = MountObserver, _MountObserver_init = new WeakMap(), _MountObserver_options = new WeakMap(), _MountObserver_abortController = new WeakMap(), _MountObserver_modules = new WeakMap(), _MountObserver_configFromPromise = new WeakMap(), _MountObserver_mountedElements = new WeakMap(), _MountObserver_processedDoForElement = new WeakMap(), _MountObserver_processedEventsForElement = new WeakMap(), _MountObserver_mutationCallback = new WeakMap(), _MountObserver_rootNode = new WeakMap(), _MountObserver_importsLoaded = new WeakMap(), _MountObserver_mediaQueryCleanup = new WeakMap(), _MountObserver_rootSizeCleanup = new WeakMap(), _MountObserver_intersectionCleanup = new WeakMap(), _MountObserver_connectionCleanup = new WeakMap(), _MountObserver_intersectionObserver = new WeakMap(), _MountObserver_mediaMatches = new WeakMap(), _MountObserver_rootSizeMatches = new WeakMap(), _MountObserver_connectionMatches = new WeakMap(), _MountObserver_asgMtSource = new WeakMap(), _MountObserver_asgDisMtSource = new WeakMap(), _MountObserver_stageMtSource = new WeakMap(), _MountObserver_stageReversals = new WeakMap(), _MountObserver_assignTentatively = new WeakMap(), _MountObserver_elementNotifiers = new WeakMap(), _MountObserver_notifierMountedElements = new WeakMap(), _MountObserver_subObservers = new WeakMap(), _MountObserver_whenDefinedResolved = new WeakMap(), _MountObserver_instances = new WeakSet(), _MountObserver_mergeHandlerDefaults = function _MountObserver_mergeHandlerDefaults(config) {
393
+ var doValue = config.do;
394
+ // Only process if do is a string (single handler reference)
395
+ if (typeof doValue !== 'string') {
396
+ return config;
397
+ }
398
+ // Look up the handler class
399
+ var HandlerClass = __classPrivateFieldGet(_a, _a, "f", _MountObserver_handlerRegistry).get(doValue);
400
+ if (!HandlerClass) {
401
+ // Validation will catch this later
402
+ return config;
403
+ }
404
+ // Extract static properties from the handler class
405
+ var handlerDefaults = {};
406
+ var proto = HandlerClass;
407
+ // Get all static properties
408
+ for (var _i = 0, _b = Object.getOwnPropertyNames(proto); _i < _b.length; _i++) {
409
+ var key = _b[_i];
410
+ if (key !== 'prototype' && key !== 'length' && key !== 'name') {
411
+ handlerDefaults[key] = proto[key];
412
+ }
413
+ }
414
+ // Merge: handler defaults first, then inline config (inline trumps)
415
+ // Using object spread - inline config overwrites handler defaults
416
+ return __assign(__assign({}, handlerDefaults), config);
417
+ }, _MountObserver_validateDoHandlers = function _MountObserver_validateDoHandlers() {
418
+ var doValue = __classPrivateFieldGet(this, _MountObserver_init, "f").do;
419
+ if (doValue === undefined)
420
+ return;
421
+ var handlers = Array.isArray(doValue) ? doValue : [doValue];
422
+ for (var _i = 0, handlers_1 = handlers; _i < handlers_1.length; _i++) {
423
+ var handler = handlers_1[_i];
424
+ if (typeof handler === 'string') {
425
+ if (!__classPrivateFieldGet(_a, _a, "f", _MountObserver_handlerRegistry).has(handler)) {
426
+ throw new Error("No handler defined for ".concat(handler));
427
+ }
428
+ }
429
+ }
430
+ }, _MountObserver_loadConfigFrom = function _MountObserver_loadConfigFrom() {
431
+ return __awaiter(this, void 0, void 0, function () {
432
+ var configFrom, configPaths, pathSet, _i, configPaths_1, path, loadedConfigs, _b, configPaths_2, path, module, error_1, inlineConfig, mergedConfig, _c, loadedConfigs_1, loadedConfig;
433
+ return __generator(this, function (_d) {
434
+ switch (_d.label) {
435
+ case 0:
436
+ configFrom = __classPrivateFieldGet(this, _MountObserver_init, "f").configFrom;
437
+ if (!configFrom)
438
+ return [2 /*return*/];
439
+ configPaths = Array.isArray(configFrom) ? configFrom : [configFrom];
440
+ pathSet = new Set();
441
+ for (_i = 0, configPaths_1 = configPaths; _i < configPaths_1.length; _i++) {
442
+ path = configPaths_1[_i];
443
+ if (pathSet.has(path)) {
444
+ throw new Error("Duplicate configFrom module: '".concat(path, "'"));
445
+ }
446
+ pathSet.add(path);
447
+ }
448
+ loadedConfigs = [];
449
+ _b = 0, configPaths_2 = configPaths;
450
+ _d.label = 1;
451
+ case 1:
452
+ if (!(_b < configPaths_2.length)) return [3 /*break*/, 6];
453
+ path = configPaths_2[_b];
454
+ _d.label = 2;
455
+ case 2:
456
+ _d.trys.push([2, 4, , 5]);
457
+ return [4 /*yield*/, Promise.resolve("".concat(path)).then(function (s) { return require(s); })];
458
+ case 3:
459
+ module = _d.sent();
460
+ if (!module.mountConfig) {
461
+ throw new Error("Module '".concat(path, "' does not export 'mountConfig'"));
462
+ }
463
+ if (typeof module.mountConfig !== 'object' || module.mountConfig === null) {
464
+ throw new Error("Module '".concat(path, "' exports invalid mountConfig: must be an object"));
465
+ }
466
+ loadedConfigs.push(module.mountConfig);
467
+ return [3 /*break*/, 5];
468
+ case 4:
469
+ error_1 = _d.sent();
470
+ // Re-throw with better context if it's not already our error
471
+ if (error_1 instanceof Error && !error_1.message.includes(path)) {
472
+ throw new Error("Failed to load config from '".concat(path, "': ").concat(error_1.message));
473
+ }
474
+ throw error_1;
475
+ case 5:
476
+ _b++;
477
+ return [3 /*break*/, 1];
478
+ case 6:
479
+ inlineConfig = __assign({}, __classPrivateFieldGet(this, _MountObserver_init, "f"));
480
+ mergedConfig = {};
481
+ for (_c = 0, loadedConfigs_1 = loadedConfigs; _c < loadedConfigs_1.length; _c++) {
482
+ loadedConfig = loadedConfigs_1[_c];
483
+ mergedConfig = Object.assign(mergedConfig, loadedConfig);
484
+ }
485
+ // Inline config takes final precedence
486
+ mergedConfig = Object.assign(mergedConfig, inlineConfig);
487
+ // Update the init config with merged result
488
+ __classPrivateFieldSet(this, _MountObserver_init, mergedConfig, "f");
489
+ return [2 /*return*/];
490
+ }
491
+ });
492
+ });
493
+ }, _MountObserver_waitForWhenDefined = function _MountObserver_waitForWhenDefined(rootNode) {
494
+ return __awaiter(this, void 0, void 0, function () {
495
+ var registry, tagNames;
496
+ return __generator(this, function (_b) {
497
+ switch (_b.label) {
498
+ case 0:
499
+ // Skip if already resolved or not configured
500
+ if (__classPrivateFieldGet(this, _MountObserver_whenDefinedResolved, "f") || !__classPrivateFieldGet(this, _MountObserver_init, "f").whenDefined) {
501
+ return [2 /*return*/];
502
+ }
503
+ registry = rootNode.customElementRegistry || customElements;
504
+ tagNames = (0, arr_js_1.arr)(__classPrivateFieldGet(this, _MountObserver_init, "f").whenDefined);
505
+ // Wait for all tags to be defined
506
+ return [4 /*yield*/, Promise.all(tagNames.map(function (tag) { return registry.whenDefined(tag); }))];
507
+ case 1:
508
+ // Wait for all tags to be defined
509
+ _b.sent();
510
+ // Mark as resolved so we don't check again
511
+ __classPrivateFieldSet(this, _MountObserver_whenDefinedResolved, true, "f");
512
+ return [2 /*return*/];
513
+ }
514
+ });
515
+ });
516
+ }, _MountObserver_createSubObservers = function _MountObserver_createSubObservers(rootNode) {
517
+ return __awaiter(this, void 0, void 0, function () {
518
+ var withConfig, _i, _b, _c, key, subConfig, subObserver;
519
+ return __generator(this, function (_d) {
520
+ switch (_d.label) {
521
+ case 0:
522
+ withConfig = __classPrivateFieldGet(this, _MountObserver_init, "f").with;
523
+ if (!withConfig)
524
+ return [2 /*return*/];
525
+ __classPrivateFieldSet(this, _MountObserver_subObservers, new Map(), "f");
526
+ _i = 0, _b = Object.entries(withConfig);
527
+ _d.label = 1;
528
+ case 1:
529
+ if (!(_i < _b.length)) return [3 /*break*/, 4];
530
+ _c = _b[_i], key = _c[0], subConfig = _c[1];
531
+ subObserver = new _a(subConfig);
532
+ __classPrivateFieldGet(this, _MountObserver_subObservers, "f").set(key, subObserver);
533
+ return [4 /*yield*/, subObserver.observe(rootNode)];
534
+ case 2:
535
+ _d.sent();
536
+ _d.label = 3;
537
+ case 3:
538
+ _i++;
539
+ return [3 /*break*/, 1];
540
+ case 4: return [2 /*return*/];
541
+ }
542
+ });
543
+ });
544
+ }, _MountObserver_setupMediaQuery = function _MountObserver_setupMediaQuery() {
545
+ return __awaiter(this, void 0, void 0, function () {
546
+ var setupMediaQuery, result;
547
+ var _this = this;
548
+ return __generator(this, function (_b) {
549
+ switch (_b.label) {
550
+ case 0:
551
+ if (!__classPrivateFieldGet(this, _MountObserver_rootNode, "f")) {
552
+ throw new Error('Cannot setup media query before observe() is called');
553
+ }
554
+ return [4 /*yield*/, Promise.resolve().then(function () { return require('./mediaQuery.js'); })];
555
+ case 1:
556
+ setupMediaQuery = (_b.sent()).setupMediaQuery;
557
+ result = setupMediaQuery(__classPrivateFieldGet(this, _MountObserver_init, "f"), __classPrivateFieldGet(this, _MountObserver_rootNode, "f"), __classPrivateFieldGet(this, _MountObserver_mountedElements, "f"), __classPrivateFieldGet(this, _MountObserver_modules, "f"), this, function (node) { return __classPrivateFieldGet(_this, _MountObserver_instances, "m", _MountObserver_processNode).call(_this, node); });
558
+ __classPrivateFieldSet(this, _MountObserver_mediaMatches, result.mediaMatches, "f");
559
+ __classPrivateFieldSet(this, _MountObserver_mediaQueryCleanup, result.cleanup, "f");
560
+ return [2 /*return*/];
561
+ }
562
+ });
563
+ });
564
+ }, _MountObserver_setupRootSizeObserver = function _MountObserver_setupRootSizeObserver() {
565
+ return __awaiter(this, void 0, void 0, function () {
566
+ var setupRootSizeObserver, result;
567
+ var _this = this;
568
+ return __generator(this, function (_b) {
569
+ switch (_b.label) {
570
+ case 0:
571
+ if (!__classPrivateFieldGet(this, _MountObserver_rootNode, "f")) {
572
+ throw new Error('Cannot setup root size observer before observe() is called');
573
+ }
574
+ return [4 /*yield*/, Promise.resolve().then(function () { return require('./rootSizeObserver.js'); })];
575
+ case 1:
576
+ setupRootSizeObserver = (_b.sent()).setupRootSizeObserver;
577
+ result = setupRootSizeObserver(__classPrivateFieldGet(this, _MountObserver_init, "f"), __classPrivateFieldGet(this, _MountObserver_rootNode, "f"), __classPrivateFieldGet(this, _MountObserver_mountedElements, "f"), __classPrivateFieldGet(this, _MountObserver_modules, "f"), this, function (node) { return __classPrivateFieldGet(_this, _MountObserver_instances, "m", _MountObserver_processNode).call(_this, node); });
578
+ __classPrivateFieldSet(this, _MountObserver_rootSizeMatches, result.conditionMatches, "f");
579
+ __classPrivateFieldSet(this, _MountObserver_rootSizeCleanup, result.cleanup, "f");
580
+ return [2 /*return*/];
581
+ }
582
+ });
583
+ });
584
+ }, _MountObserver_setupElementIntersection = function _MountObserver_setupElementIntersection() {
585
+ return __awaiter(this, void 0, void 0, function () {
586
+ var setupElementIntersection, result;
587
+ var _this = this;
588
+ return __generator(this, function (_b) {
589
+ switch (_b.label) {
590
+ case 0:
591
+ if (!__classPrivateFieldGet(this, _MountObserver_rootNode, "f")) {
592
+ throw new Error('Cannot setup element intersection before observe() is called');
593
+ }
594
+ return [4 /*yield*/, Promise.resolve().then(function () { return require('./elementIntersection.js'); })];
595
+ case 1:
596
+ setupElementIntersection = (_b.sent()).setupElementIntersection;
597
+ result = setupElementIntersection(__classPrivateFieldGet(this, _MountObserver_init, "f"), __classPrivateFieldGet(this, _MountObserver_rootNode, "f"), __classPrivateFieldGet(this, _MountObserver_mountedElements, "f"), __classPrivateFieldGet(this, _MountObserver_modules, "f"), this, function (element) { return __classPrivateFieldGet(_this, _MountObserver_instances, "m", _MountObserver_matchesSelector).call(_this, element); }, function (element) { return __classPrivateFieldGet(_this, _MountObserver_instances, "m", _MountObserver_handleMatch).call(_this, element); });
598
+ __classPrivateFieldSet(this, _MountObserver_intersectionObserver, result.intersectionObserver, "f");
599
+ __classPrivateFieldSet(this, _MountObserver_intersectionCleanup, result.cleanup, "f");
600
+ return [2 /*return*/];
601
+ }
602
+ });
603
+ });
604
+ }, _MountObserver_setupConnectionMonitor = function _MountObserver_setupConnectionMonitor() {
605
+ return __awaiter(this, void 0, void 0, function () {
606
+ var setupConnectionMonitor, result;
607
+ var _this = this;
608
+ return __generator(this, function (_b) {
609
+ switch (_b.label) {
610
+ case 0:
611
+ if (!__classPrivateFieldGet(this, _MountObserver_rootNode, "f")) {
612
+ throw new Error('Cannot setup connection monitor before observe() is called');
613
+ }
614
+ return [4 /*yield*/, Promise.resolve().then(function () { return require('./connectionMonitor.js'); })];
615
+ case 1:
616
+ setupConnectionMonitor = (_b.sent()).setupConnectionMonitor;
617
+ result = setupConnectionMonitor(__classPrivateFieldGet(this, _MountObserver_init, "f"), __classPrivateFieldGet(this, _MountObserver_rootNode, "f"), __classPrivateFieldGet(this, _MountObserver_mountedElements, "f"), __classPrivateFieldGet(this, _MountObserver_modules, "f"), this, function (node) { return __classPrivateFieldGet(_this, _MountObserver_instances, "m", _MountObserver_processNode).call(_this, node); });
618
+ __classPrivateFieldSet(this, _MountObserver_connectionMatches, result.conditionMatches, "f");
619
+ __classPrivateFieldSet(this, _MountObserver_connectionCleanup, result.cleanup, "f");
620
+ return [2 /*return*/];
621
+ }
622
+ });
623
+ });
624
+ }, _MountObserver_loadImports = function _MountObserver_loadImports() {
625
+ return __awaiter(this, void 0, void 0, function () {
626
+ var loadImports, _b;
627
+ return __generator(this, function (_c) {
628
+ switch (_c.label) {
629
+ case 0:
630
+ if (__classPrivateFieldGet(this, _MountObserver_importsLoaded, "f") || !__classPrivateFieldGet(this, _MountObserver_init, "f").import) {
631
+ return [2 /*return*/];
632
+ }
633
+ return [4 /*yield*/, Promise.resolve().then(function () { return require('./loadImports.js'); })];
634
+ case 1:
635
+ loadImports = (_c.sent()).loadImports;
636
+ _b = [this, _MountObserver_modules];
637
+ return [4 /*yield*/, loadImports(__classPrivateFieldGet(this, _MountObserver_init, "f").import)];
638
+ case 2:
639
+ __classPrivateFieldSet.apply(void 0, _b.concat([_c.sent(), "f"]));
640
+ __classPrivateFieldSet(this, _MountObserver_importsLoaded, true, "f");
641
+ this.dispatchEvent(new Events_js_1.LoadEvent(__classPrivateFieldGet(this, _MountObserver_modules, "f"), __classPrivateFieldGet(this, _MountObserver_init, "f")));
642
+ return [2 /*return*/];
643
+ }
644
+ });
645
+ });
646
+ }, _MountObserver_processNode = function _MountObserver_processNode(node) {
647
+ var _this = this;
648
+ // If it's an element node, check if it matches
649
+ if (node.nodeType === Node.ELEMENT_NODE) {
650
+ var element = node;
651
+ // If intersection observer is active, start observing the element
652
+ // The intersection callback will handle mounting when it intersects
653
+ if (__classPrivateFieldGet(this, _MountObserver_intersectionObserver, "f")) {
654
+ __classPrivateFieldGet(this, _MountObserver_intersectionObserver, "f").observe(element);
655
+ }
656
+ else if (__classPrivateFieldGet(this, _MountObserver_instances, "m", _MountObserver_matchesSelector).call(this, element)) {
657
+ __classPrivateFieldGet(this, _MountObserver_instances, "m", _MountObserver_handleMatch).call(this, element);
658
+ }
659
+ }
660
+ // Process children
661
+ if ('querySelectorAll' in node && __classPrivateFieldGet(this, _MountObserver_init, "f").matching) {
662
+ var root = node;
663
+ // Get all elements matching the CSS selector first
664
+ var matches = root.querySelectorAll(__classPrivateFieldGet(this, _MountObserver_init, "f").matching);
665
+ matches.forEach(function (child) {
666
+ // If intersection observer is active, start observing the element
667
+ if (__classPrivateFieldGet(_this, _MountObserver_intersectionObserver, "f")) {
668
+ __classPrivateFieldGet(_this, _MountObserver_intersectionObserver, "f").observe(child);
669
+ }
670
+ else if (__classPrivateFieldGet(_this, _MountObserver_instances, "m", _MountObserver_matchesSelector).call(_this, child)) {
671
+ __classPrivateFieldGet(_this, _MountObserver_instances, "m", _MountObserver_handleMatch).call(_this, child);
672
+ }
673
+ });
674
+ }
675
+ }, _MountObserver_matchesSelector = function _MountObserver_matchesSelector(element) {
676
+ var _b;
677
+ //TODO: reduce redundncy with this.#init?
678
+ // Check matching condition
679
+ if (!__classPrivateFieldGet(this, _MountObserver_init, "f").matching) {
680
+ return false;
681
+ }
682
+ var matchesElement = element.matches(__classPrivateFieldGet(this, _MountObserver_init, "f").matching);
683
+ if (!matchesElement) {
684
+ return false;
685
+ }
686
+ // Check that element's customElementRegistry matches root node's registry
687
+ var rootNode = (_b = __classPrivateFieldGet(this, _MountObserver_rootNode, "f")) === null || _b === void 0 ? void 0 : _b.deref();
688
+ if (rootNode) {
689
+ var registriesMatch = rootNode.customElementRegistry === element.customElementRegistry;
690
+ // If whereDifferentCustomElementRegistry is true, exclude matching registries
691
+ if (__classPrivateFieldGet(this, _MountObserver_init, "f").whereDifferentCustomElementRegistry) {
692
+ if (registriesMatch)
693
+ return false;
694
+ }
695
+ else {
696
+ // Default behavior: exclude non-matching registries
697
+ if (!registriesMatch)
698
+ return false;
699
+ }
700
+ }
701
+ // Check withScopePerimeter condition if specified (donut hole scoping)
702
+ if (__classPrivateFieldGet(this, _MountObserver_init, "f").withScopePerimeter) {
703
+ if (!rootNode || !(0, withScopePerimeter_js_1.withScopePerimeter)(rootNode, element, __classPrivateFieldGet(this, _MountObserver_init, "f").withScopePerimeter)) {
704
+ return false;
705
+ }
706
+ }
707
+ // Check whereObservedRootSizeMatches condition if specified
708
+ if (__classPrivateFieldGet(this, _MountObserver_init, "f").whereObservedRootSizeMatches && !__classPrivateFieldGet(this, _MountObserver_rootSizeMatches, "f")) {
709
+ return false;
710
+ }
711
+ // Check whereInstanceOf condition if specified
712
+ if (__classPrivateFieldGet(this, _MountObserver_init, "f").whereInstanceOf) {
713
+ var constructors = (0, arr_js_1.arr)(__classPrivateFieldGet(this, _MountObserver_init, "f").whereInstanceOf);
714
+ // Element must be an instance of at least one constructor (OR logic for array)
715
+ var matchesInstanceOf = constructors.some(function (constructor) { return element instanceof constructor; });
716
+ if (!matchesInstanceOf) {
717
+ return false;
718
+ }
719
+ }
720
+ // Check whereLocalNameMatches condition if specified
721
+ if (__classPrivateFieldGet(this, _MountObserver_init, "f").whereLocalNameMatches) {
722
+ var pattern = typeof __classPrivateFieldGet(this, _MountObserver_init, "f").whereLocalNameMatches === 'string'
723
+ ? new RegExp(__classPrivateFieldGet(this, _MountObserver_init, "f").whereLocalNameMatches)
724
+ : __classPrivateFieldGet(this, _MountObserver_init, "f").whereLocalNameMatches;
725
+ if (!pattern.test(element.localName)) {
726
+ return false;
727
+ }
728
+ }
729
+ // All conditions passed
730
+ return true;
731
+ }, _MountObserver_handleMatch = function _MountObserver_handleMatch(element) {
732
+ return __awaiter(this, void 0, void 0, function () {
733
+ var rootNode, context, _i, _b, _c, key, subObserver, shouldMount, _d, _e, ref, _f, _g, ref, reversal, notifierExistedBeforeDo, doHandlers, _h, doHandlers_1, handler, HandlerClass, mountEvent, notifier, emitMountedElementEvents;
734
+ var _j;
735
+ return __generator(this, function (_k) {
736
+ switch (_k.label) {
737
+ case 0:
738
+ if (__classPrivateFieldGet(this, _MountObserver_processedDoForElement, "f").has(element)) {
739
+ return [2 /*return*/];
740
+ }
741
+ if (!(!__classPrivateFieldGet(this, _MountObserver_importsLoaded, "f") && __classPrivateFieldGet(this, _MountObserver_init, "f").import)) return [3 /*break*/, 2];
742
+ return [4 /*yield*/, __classPrivateFieldGet(this, _MountObserver_instances, "m", _MountObserver_loadImports).call(this)];
743
+ case 1:
744
+ _k.sent();
745
+ _k.label = 2;
746
+ case 2:
747
+ __classPrivateFieldGet(this, _MountObserver_processedDoForElement, "f").add(element);
748
+ // Add to both WeakSet and Set<WeakRef> for efficient operations
749
+ if (!__classPrivateFieldGet(this, _MountObserver_mountedElements, "f").weakSet.has(element)) {
750
+ __classPrivateFieldGet(this, _MountObserver_mountedElements, "f").weakSet.add(element);
751
+ __classPrivateFieldGet(this, _MountObserver_mountedElements, "f").setWeak.add(new WeakRef(element));
752
+ }
753
+ rootNode = (_j = __classPrivateFieldGet(this, _MountObserver_rootNode, "f")) === null || _j === void 0 ? void 0 : _j.deref();
754
+ if (!rootNode) {
755
+ // Root node was garbage collected
756
+ return [2 /*return*/];
757
+ }
758
+ context = {
759
+ modules: __classPrivateFieldGet(this, _MountObserver_modules, "f"),
760
+ observer: this,
761
+ rootNode: rootNode,
762
+ mountConfig: __classPrivateFieldGet(this, _MountObserver_init, "f"),
763
+ };
764
+ // Add withObservers if sub-observers exist
765
+ if (__classPrivateFieldGet(this, _MountObserver_subObservers, "f") && __classPrivateFieldGet(this, _MountObserver_subObservers, "f").size > 0) {
766
+ context.withObservers = {};
767
+ for (_i = 0, _b = __classPrivateFieldGet(this, _MountObserver_subObservers, "f").entries(); _i < _b.length; _i++) {
768
+ _c = _b[_i], key = _c[0], subObserver = _c[1];
769
+ context.withObservers[key] = subObserver;
770
+ }
771
+ }
772
+ // Check shouldMount condition if specified (final gate before mounting)
773
+ if (__classPrivateFieldGet(this, _MountObserver_init, "f").shouldMount) {
774
+ try {
775
+ shouldMount = __classPrivateFieldGet(this, _MountObserver_init, "f").shouldMount(element, context);
776
+ if (!shouldMount) {
777
+ // shouldMount returned false - don't mount this element
778
+ // Remove from processed set so it can be re-evaluated later
779
+ __classPrivateFieldGet(this, _MountObserver_processedDoForElement, "f").delete(element);
780
+ // Remove from mounted elements tracking
781
+ __classPrivateFieldGet(this, _MountObserver_mountedElements, "f").weakSet.delete(element);
782
+ for (_d = 0, _e = __classPrivateFieldGet(this, _MountObserver_mountedElements, "f").setWeak; _d < _e.length; _d++) {
783
+ ref = _e[_d];
784
+ if (ref.deref() === element) {
785
+ __classPrivateFieldGet(this, _MountObserver_mountedElements, "f").setWeak.delete(ref);
786
+ break;
787
+ }
788
+ }
789
+ return [2 /*return*/];
790
+ }
791
+ }
792
+ catch (error) {
793
+ // shouldMount threw an error - treat as false and log
794
+ console.error('shouldMount check failed:', error);
795
+ // Remove from processed set so it can be re-evaluated later
796
+ __classPrivateFieldGet(this, _MountObserver_processedDoForElement, "f").delete(element);
797
+ // Remove from mounted elements tracking
798
+ __classPrivateFieldGet(this, _MountObserver_mountedElements, "f").weakSet.delete(element);
799
+ for (_f = 0, _g = __classPrivateFieldGet(this, _MountObserver_mountedElements, "f").setWeak; _f < _g.length; _f++) {
800
+ ref = _g[_f];
801
+ if (ref.deref() === element) {
802
+ __classPrivateFieldGet(this, _MountObserver_mountedElements, "f").setWeak.delete(ref);
803
+ break;
804
+ }
805
+ }
806
+ return [2 /*return*/];
807
+ }
808
+ }
809
+ // Apply assignGingerly if specified
810
+ if (__classPrivateFieldGet(this, _MountObserver_asgMtSource, "f")) {
811
+ element.assignGingerly(__classPrivateFieldGet(this, _MountObserver_asgMtSource, "f"));
812
+ }
813
+ // Apply assignTentatively if specified (staged assignments)
814
+ if (__classPrivateFieldGet(this, _MountObserver_stageMtSource, "f") && __classPrivateFieldGet(this, _MountObserver_assignTentatively, "f")) {
815
+ reversal = {};
816
+ __classPrivateFieldGet(this, _MountObserver_assignTentatively, "f").call(this, element, __classPrivateFieldGet(this, _MountObserver_stageMtSource, "f"), { reversal: reversal });
817
+ __classPrivateFieldGet(this, _MountObserver_stageReversals, "f").set(element, reversal);
818
+ }
819
+ notifierExistedBeforeDo = __classPrivateFieldGet(this, _MountObserver_elementNotifiers, "f").has(element);
820
+ // Call do callback(s) - can be string, function, or array
821
+ if (__classPrivateFieldGet(this, _MountObserver_init, "f").do !== undefined) {
822
+ doHandlers = Array.isArray(__classPrivateFieldGet(this, _MountObserver_init, "f").do) ? __classPrivateFieldGet(this, _MountObserver_init, "f").do : [__classPrivateFieldGet(this, _MountObserver_init, "f").do];
823
+ for (_h = 0, doHandlers_1 = doHandlers; _h < doHandlers_1.length; _h++) {
824
+ handler = doHandlers_1[_h];
825
+ if (typeof handler === 'string') {
826
+ HandlerClass = __classPrivateFieldGet(_a, _a, "f", _MountObserver_handlerRegistry).get(handler);
827
+ if (HandlerClass) {
828
+ new HandlerClass(element, context);
829
+ }
830
+ }
831
+ else if (typeof handler === 'function') {
832
+ // Inline function
833
+ handler(element, context);
834
+ }
835
+ }
836
+ }
837
+ mountEvent = new Events_js_1.MountEvent(element, __classPrivateFieldGet(this, _MountObserver_modules, "f"), __classPrivateFieldGet(this, _MountObserver_init, "f"), context);
838
+ this.dispatchEvent(mountEvent);
839
+ // Dispatch to element-specific notifier only if:
840
+ // 1. Notifier existed before do callback (wasn't just created), AND
841
+ // 2. Element hasn't already received a mount event on its notifier
842
+ if (notifierExistedBeforeDo && !__classPrivateFieldGet(this, _MountObserver_notifierMountedElements, "f").has(element)) {
843
+ notifier = __classPrivateFieldGet(this, _MountObserver_elementNotifiers, "f").get(element);
844
+ if (notifier) {
845
+ __classPrivateFieldGet(this, _MountObserver_notifierMountedElements, "f").add(element);
846
+ notifier.dispatchEvent(mountEvent);
847
+ }
848
+ }
849
+ if (!__classPrivateFieldGet(this, _MountObserver_init, "f").mountedElemEmits) return [3 /*break*/, 5];
850
+ return [4 /*yield*/, Promise.resolve().then(function () { return require('./emitEvents.js'); })];
851
+ case 3:
852
+ emitMountedElementEvents = (_k.sent()).emitMountedElementEvents;
853
+ return [4 /*yield*/, emitMountedElementEvents(element, __classPrivateFieldGet(this, _MountObserver_init, "f"), __classPrivateFieldGet(this, _MountObserver_processedEventsForElement, "f"))];
854
+ case 4:
855
+ _k.sent();
856
+ _k.label = 5;
857
+ case 5: return [2 /*return*/];
858
+ }
859
+ });
860
+ });
861
+ }, _MountObserver_handleRemoval = function _MountObserver_handleRemoval(element) {
862
+ return __awaiter(this, void 0, void 0, function () {
863
+ var reversal, _i, _b, ref, rootNode, context, _c, _d, _e, key, subObserver, dismountEvent, notifier;
864
+ var _this = this;
865
+ var _f;
866
+ return __generator(this, function (_g) {
867
+ if (!__classPrivateFieldGet(this, _MountObserver_mountedElements, "f").weakSet.has(element)) {
868
+ return [2 /*return*/];
869
+ }
870
+ // Reverse tentative assignments first (restore original values)
871
+ if (__classPrivateFieldGet(this, _MountObserver_stageMtSource, "f") && __classPrivateFieldGet(this, _MountObserver_assignTentatively, "f")) {
872
+ reversal = __classPrivateFieldGet(this, _MountObserver_stageReversals, "f").get(element);
873
+ if (reversal) {
874
+ __classPrivateFieldGet(this, _MountObserver_assignTentatively, "f").call(this, element, reversal);
875
+ __classPrivateFieldGet(this, _MountObserver_stageReversals, "f").delete(element);
876
+ }
877
+ }
878
+ // Apply assignGingerly if specified for dismount
879
+ if (__classPrivateFieldGet(this, _MountObserver_asgDisMtSource, "f")) {
880
+ element.assignGingerly(__classPrivateFieldGet(this, _MountObserver_asgDisMtSource, "f"));
881
+ }
882
+ // Remove from both structures
883
+ __classPrivateFieldGet(this, _MountObserver_mountedElements, "f").weakSet.delete(element);
884
+ for (_i = 0, _b = __classPrivateFieldGet(this, _MountObserver_mountedElements, "f").setWeak; _i < _b.length; _i++) {
885
+ ref = _b[_i];
886
+ if (ref.deref() === element) {
887
+ __classPrivateFieldGet(this, _MountObserver_mountedElements, "f").setWeak.delete(ref);
888
+ break;
889
+ }
890
+ }
891
+ // Remove from processed set so element can be re-mounted
892
+ __classPrivateFieldGet(this, _MountObserver_processedDoForElement, "f").delete(element);
893
+ // Remove from notifier mounted tracking so mount event can fire again
894
+ __classPrivateFieldGet(this, _MountObserver_notifierMountedElements, "f").delete(element);
895
+ rootNode = (_f = __classPrivateFieldGet(this, _MountObserver_rootNode, "f")) === null || _f === void 0 ? void 0 : _f.deref();
896
+ if (!rootNode) {
897
+ // Root node was garbage collected
898
+ return [2 /*return*/];
899
+ }
900
+ context = {
901
+ modules: __classPrivateFieldGet(this, _MountObserver_modules, "f"),
902
+ observer: this,
903
+ rootNode: rootNode,
904
+ mountConfig: __classPrivateFieldGet(this, _MountObserver_init, "f"),
905
+ };
906
+ // Add withObservers if sub-observers exist
907
+ if (__classPrivateFieldGet(this, _MountObserver_subObservers, "f") && __classPrivateFieldGet(this, _MountObserver_subObservers, "f").size > 0) {
908
+ context.withObservers = {};
909
+ for (_c = 0, _d = __classPrivateFieldGet(this, _MountObserver_subObservers, "f").entries(); _c < _d.length; _c++) {
910
+ _e = _d[_c], key = _e[0], subObserver = _e[1];
911
+ context.withObservers[key] = subObserver;
912
+ }
913
+ }
914
+ dismountEvent = new Events_js_1.DismountEvent(element, 'with-matching-failed', __classPrivateFieldGet(this, _MountObserver_init, "f"));
915
+ this.dispatchEvent(dismountEvent);
916
+ notifier = __classPrivateFieldGet(this, _MountObserver_elementNotifiers, "f").get(element);
917
+ if (notifier) {
918
+ notifier.dispatchEvent(dismountEvent);
919
+ }
920
+ // Check if element is being moved within the same root
921
+ // If it's truly disconnected, dispatch disconnect event
922
+ setTimeout(function () {
923
+ if (!rootNode.contains(element)) {
924
+ var disconnectEvent = new Events_js_1.DisconnectEvent(element, __classPrivateFieldGet(_this, _MountObserver_init, "f"));
925
+ _this.dispatchEvent(disconnectEvent);
926
+ // Dispatch to element-specific notifier
927
+ var notifier_1 = __classPrivateFieldGet(_this, _MountObserver_elementNotifiers, "f").get(element);
928
+ if (notifier_1) {
929
+ notifier_1.dispatchEvent(disconnectEvent);
930
+ }
931
+ }
932
+ }, 0);
933
+ return [2 /*return*/];
934
+ });
935
+ });
936
+ };
937
+ // Static registry for registered handlers
938
+ _MountObserver_handlerRegistry = { value: new Map() };
939
+ return MountObserver;
940
+ }(EventTarget));
941
+ exports.MountObserver = MountObserver;