var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b ||= {}) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; // node_modules/@angular/core/fesm2022/untracked-BKcld_ew.mjs function defaultEquals(a, b) { return Object.is(a, b); } function setActiveConsumer(consumer) { const prev = activeConsumer; activeConsumer = consumer; return prev; } function getActiveConsumer() { return activeConsumer; } function isInNotificationPhase() { return inNotificationPhase; } function producerAccessed(node) { if (inNotificationPhase) { throw new Error(typeof ngDevMode !== "undefined" && ngDevMode ? `Assertion error: signal read during notification phase` : ""); } if (activeConsumer === null) { return; } activeConsumer.consumerOnSignalRead(node); const idx = activeConsumer.nextProducerIndex++; assertConsumerNode(activeConsumer); if (idx < activeConsumer.producerNode.length && activeConsumer.producerNode[idx] !== node) { if (consumerIsLive(activeConsumer)) { const staleProducer = activeConsumer.producerNode[idx]; producerRemoveLiveConsumerAtIndex(staleProducer, activeConsumer.producerIndexOfThis[idx]); } } if (activeConsumer.producerNode[idx] !== node) { activeConsumer.producerNode[idx] = node; activeConsumer.producerIndexOfThis[idx] = consumerIsLive(activeConsumer) ? producerAddLiveConsumer(node, activeConsumer, idx) : 0; } activeConsumer.producerLastReadVersion[idx] = node.version; } function producerIncrementEpoch() { epoch++; } function producerUpdateValueVersion(node) { if (consumerIsLive(node) && !node.dirty) { return; } if (!node.dirty && node.lastCleanEpoch === epoch) { return; } if (!node.producerMustRecompute(node) && !consumerPollProducersForChange(node)) { producerMarkClean(node); return; } node.producerRecomputeValue(node); producerMarkClean(node); } function producerNotifyConsumers(node) { if (node.liveConsumerNode === void 0) { return; } const prev = inNotificationPhase; inNotificationPhase = true; try { for (const consumer of node.liveConsumerNode) { if (!consumer.dirty) { consumerMarkDirty(consumer); } } } finally { inNotificationPhase = prev; } } function producerUpdatesAllowed() { return activeConsumer?.consumerAllowSignalWrites !== false; } function consumerMarkDirty(node) { node.dirty = true; producerNotifyConsumers(node); node.consumerMarkedDirty?.(node); } function producerMarkClean(node) { node.dirty = false; node.lastCleanEpoch = epoch; } function consumerBeforeComputation(node) { node && (node.nextProducerIndex = 0); return setActiveConsumer(node); } function consumerAfterComputation(node, prevConsumer) { setActiveConsumer(prevConsumer); if (!node || node.producerNode === void 0 || node.producerIndexOfThis === void 0 || node.producerLastReadVersion === void 0) { return; } if (consumerIsLive(node)) { for (let i = node.nextProducerIndex; i < node.producerNode.length; i++) { producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]); } } while (node.producerNode.length> node.nextProducerIndex) { node.producerNode.pop(); node.producerLastReadVersion.pop(); node.producerIndexOfThis.pop(); } } function consumerPollProducersForChange(node) { assertConsumerNode(node); for (let i = 0; i < node.producerNode.length; i++) { const producer = node.producerNode[i]; const seenVersion = node.producerLastReadVersion[i]; if (seenVersion !== producer.version) { return true; } producerUpdateValueVersion(producer); if (seenVersion !== producer.version) { return true; } } return false; } function consumerDestroy(node) { assertConsumerNode(node); if (consumerIsLive(node)) { for (let i = 0; i < node.producerNode.length; i++) { producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]); } } node.producerNode.length = node.producerLastReadVersion.length = node.producerIndexOfThis.length = 0; if (node.liveConsumerNode) { node.liveConsumerNode.length = node.liveConsumerIndexOfThis.length = 0; } } function producerAddLiveConsumer(node, consumer, indexOfThis) { assertProducerNode(node); if (node.liveConsumerNode.length === 0 && isConsumerNode(node)) { for (let i = 0; i < node.producerNode.length; i++) { node.producerIndexOfThis[i] = producerAddLiveConsumer(node.producerNode[i], node, i); } } node.liveConsumerIndexOfThis.push(indexOfThis); return node.liveConsumerNode.push(consumer) - 1; } function producerRemoveLiveConsumerAtIndex(node, idx) { assertProducerNode(node); if (typeof ngDevMode !== "undefined" && ngDevMode && idx>= node.liveConsumerNode.length) { throw new Error(`Assertion error: active consumer index ${idx} is out of bounds of ${node.liveConsumerNode.length} consumers)`); } if (node.liveConsumerNode.length === 1 && isConsumerNode(node)) { for (let i = 0; i < node.producerNode.length; i++) { producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]); } } const lastIdx = node.liveConsumerNode.length - 1; node.liveConsumerNode[idx] = node.liveConsumerNode[lastIdx]; node.liveConsumerIndexOfThis[idx] = node.liveConsumerIndexOfThis[lastIdx]; node.liveConsumerNode.length--; node.liveConsumerIndexOfThis.length--; if (idx < node.liveConsumerNode.length) { const idxProducer = node.liveConsumerIndexOfThis[idx]; const consumer = node.liveConsumerNode[idx]; assertConsumerNode(consumer); consumer.producerIndexOfThis[idxProducer] = idx; } } function consumerIsLive(node) { return node.consumerIsAlwaysLive || (node?.liveConsumerNode?.length ?? 0)> 0; } function assertConsumerNode(node) { node.producerNode ??= []; node.producerIndexOfThis ??= []; node.producerLastReadVersion ??= []; } function assertProducerNode(node) { node.liveConsumerNode ??= []; node.liveConsumerIndexOfThis ??= []; } function isConsumerNode(node) { return node.producerNode !== void 0; } function createComputed(computation, equal) { const node = Object.create(COMPUTED_NODE); node.computation = computation; if (equal !== void 0) { node.equal = equal; } const computed2 = () => { producerUpdateValueVersion(node); producerAccessed(node); if (node.value === ERRORED) { throw node.error; } return node.value; }; computed2[SIGNAL] = node; return computed2; } function defaultThrowError() { throw new Error(); } function throwInvalidWriteToSignalError(node) { throwInvalidWriteToSignalErrorFn(node); } function setThrowInvalidWriteToSignalError(fn) { throwInvalidWriteToSignalErrorFn = fn; } function createSignal(initialValue, equal) { const node = Object.create(SIGNAL_NODE); node.value = initialValue; if (equal !== void 0) { node.equal = equal; } const getter = () => { producerAccessed(node); return node.value; }; getter[SIGNAL] = node; return getter; } function signalSetFn(node, newValue) { if (!producerUpdatesAllowed()) { throwInvalidWriteToSignalError(node); } if (!node.equal(node.value, newValue)) { node.value = newValue; signalValueChanged(node); } } function signalUpdateFn(node, updater) { if (!producerUpdatesAllowed()) { throwInvalidWriteToSignalError(node); } signalSetFn(node, updater(node.value)); } function signalValueChanged(node) { node.version++; producerIncrementEpoch(); producerNotifyConsumers(node); postSignalSetFn?.(); } function untracked(nonReactiveReadsFn) { const prevConsumer = setActiveConsumer(null); try { return nonReactiveReadsFn(); } finally { setActiveConsumer(prevConsumer); } } var activeConsumer, inNotificationPhase, epoch, SIGNAL, REACTIVE_NODE, UNSET, COMPUTING, ERRORED, COMPUTED_NODE, throwInvalidWriteToSignalErrorFn, postSignalSetFn, SIGNAL_NODE; var init_untracked_BKcld_ew = __esm({ "node_modules/@angular/core/fesm2022/untracked-BKcld_ew.mjs"() { "use strict"; activeConsumer = null; inNotificationPhase = false; epoch = 1; SIGNAL = /* @__PURE__ */ Symbol("SIGNAL"); REACTIVE_NODE = { version: 0, lastCleanEpoch: 0, dirty: false, producerNode: void 0, producerLastReadVersion: void 0, producerIndexOfThis: void 0, nextProducerIndex: 0, liveConsumerNode: void 0, liveConsumerIndexOfThis: void 0, consumerAllowSignalWrites: false, consumerIsAlwaysLive: false, kind: "unknown", producerMustRecompute: () => false, producerRecomputeValue: () => { }, consumerMarkedDirty: () => { }, consumerOnSignalRead: () => { } }; UNSET = /* @__PURE__ */ Symbol("UNSET"); COMPUTING = /* @__PURE__ */ Symbol("COMPUTING"); ERRORED = /* @__PURE__ */ Symbol("ERRORED"); COMPUTED_NODE = /* @__PURE__ */ (() => { return __spreadProps(__spreadValues({}, REACTIVE_NODE), { value: UNSET, dirty: true, error: null, equal: defaultEquals, kind: "computed", producerMustRecompute(node) { return node.value === UNSET || node.value === COMPUTING; }, producerRecomputeValue(node) { if (node.value === COMPUTING) { throw new Error("Detected cycle in computations."); } const oldValue = node.value; node.value = COMPUTING; const prevConsumer = consumerBeforeComputation(node); let newValue; let wasEqual = false; try { newValue = node.computation(); setActiveConsumer(null); wasEqual = oldValue !== UNSET && oldValue !== ERRORED && newValue !== ERRORED && node.equal(oldValue, newValue); } catch (err) { newValue = ERRORED; node.error = err; } finally { consumerAfterComputation(node, prevConsumer); } if (wasEqual) { node.value = oldValue; return; } node.value = newValue; node.version++; } }); })(); throwInvalidWriteToSignalErrorFn = defaultThrowError; postSignalSetFn = null; SIGNAL_NODE = /* @__PURE__ */ (() => { return __spreadProps(__spreadValues({}, REACTIVE_NODE), { equal: defaultEquals, value: void 0, kind: "signal" }); })(); } }); // node_modules/@angular/core/fesm2022/primitives/di.mjs function getCurrentInjector() { return _currentInjector; } function setCurrentInjector(injector) { const former = _currentInjector; _currentInjector = injector; return former; } var _currentInjector, NOT_FOUND; var init_di = __esm({ "node_modules/@angular/core/fesm2022/primitives/di.mjs"() { "use strict"; _currentInjector = void 0; NOT_FOUND = Symbol("NotFound"); } }); // node_modules/@angular/core/fesm2022/primitives/signals.mjs var init_signals = __esm({ "node_modules/@angular/core/fesm2022/primitives/signals.mjs"() { "use strict"; init_untracked_BKcld_ew(); } }); // node_modules/rxjs/dist/esm/internal/util/isFunction.js function isFunction(value) { return typeof value === "function"; } var init_isFunction = __esm({ "node_modules/rxjs/dist/esm/internal/util/isFunction.js"() { "use strict"; } }); // node_modules/rxjs/dist/esm/internal/util/createErrorClass.js function createErrorClass(createImpl) { const _super = (instance) => { Error.call(instance); instance.stack = new Error().stack; }; const ctorFunc = createImpl(_super); ctorFunc.prototype = Object.create(Error.prototype); ctorFunc.prototype.constructor = ctorFunc; return ctorFunc; } var init_createErrorClass = __esm({ "node_modules/rxjs/dist/esm/internal/util/createErrorClass.js"() { "use strict"; } }); // node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js var UnsubscriptionError; var init_UnsubscriptionError = __esm({ "node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js"() { "use strict"; init_createErrorClass(); UnsubscriptionError = createErrorClass((_super) => function UnsubscriptionErrorImpl(errors) { _super(this); this.message = errors ? `${errors.length} errors occurred during unsubscription: ${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join("\n ")}` : ""; this.name = "UnsubscriptionError"; this.errors = errors; }); } }); // node_modules/rxjs/dist/esm/internal/util/arrRemove.js function arrRemove(arr, item) { if (arr) { const index = arr.indexOf(item); 0 <= index && arr.splice(index, 1); } } var init_arrRemove = __esm({ "node_modules/rxjs/dist/esm/internal/util/arrRemove.js"() { "use strict"; } }); // node_modules/rxjs/dist/esm/internal/Subscription.js function isSubscription(value) { return value instanceof Subscription || value && "closed" in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe); } function execFinalizer(finalizer) { if (isFunction(finalizer)) { finalizer(); } else { finalizer.unsubscribe(); } } var Subscription, EMPTY_SUBSCRIPTION; var init_Subscription = __esm({ "node_modules/rxjs/dist/esm/internal/Subscription.js"() { "use strict"; init_isFunction(); init_UnsubscriptionError(); init_arrRemove(); Subscription = class _Subscription { constructor(initialTeardown) { this.initialTeardown = initialTeardown; this.closed = false; this._parentage = null; this._finalizers = null; } unsubscribe() { let errors; if (!this.closed) { this.closed = true; const { _parentage } = this; if (_parentage) { this._parentage = null; if (Array.isArray(_parentage)) { for (const parent of _parentage) { parent.remove(this); } } else { _parentage.remove(this); } } const { initialTeardown: initialFinalizer } = this; if (isFunction(initialFinalizer)) { try { initialFinalizer(); } catch (e) { errors = e instanceof UnsubscriptionError ? e.errors : [e]; } } const { _finalizers } = this; if (_finalizers) { this._finalizers = null; for (const finalizer of _finalizers) { try { execFinalizer(finalizer); } catch (err) { errors = errors !== null && errors !== void 0 ? errors : []; if (err instanceof UnsubscriptionError) { errors = [...errors, ...err.errors]; } else { errors.push(err); } } } } if (errors) { throw new UnsubscriptionError(errors); } } } add(teardown) { var _a; if (teardown && teardown !== this) { if (this.closed) { execFinalizer(teardown); } else { if (teardown instanceof _Subscription) { if (teardown.closed || teardown._hasParent(this)) { return; } teardown._addParent(this); } (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown); } } } _hasParent(parent) { const { _parentage } = this; return _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent); } _addParent(parent) { const { _parentage } = this; this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent; } _removeParent(parent) { const { _parentage } = this; if (_parentage === parent) { this._parentage = null; } else if (Array.isArray(_parentage)) { arrRemove(_parentage, parent); } } remove(teardown) { const { _finalizers } = this; _finalizers && arrRemove(_finalizers, teardown); if (teardown instanceof _Subscription) { teardown._removeParent(this); } } }; Subscription.EMPTY = (() => { const empty = new Subscription(); empty.closed = true; return empty; })(); EMPTY_SUBSCRIPTION = Subscription.EMPTY; } }); // node_modules/rxjs/dist/esm/internal/config.js var config; var init_config = __esm({ "node_modules/rxjs/dist/esm/internal/config.js"() { "use strict"; config = { onUnhandledError: null, onStoppedNotification: null, Promise: void 0, useDeprecatedSynchronousErrorHandling: false, useDeprecatedNextContext: false }; } }); // node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js var timeoutProvider; var init_timeoutProvider = __esm({ "node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js"() { "use strict"; timeoutProvider = { setTimeout(handler, timeout2, ...args) { const { delegate } = timeoutProvider; if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) { return delegate.setTimeout(handler, timeout2, ...args); } return setTimeout(handler, timeout2, ...args); }, clearTimeout(handle) { const { delegate } = timeoutProvider; return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle); }, delegate: void 0 }; } }); // node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js function reportUnhandledError(err) { timeoutProvider.setTimeout(() => { const { onUnhandledError } = config; if (onUnhandledError) { onUnhandledError(err); } else { throw err; } }); } var init_reportUnhandledError = __esm({ "node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js"() { "use strict"; init_config(); init_timeoutProvider(); } }); // node_modules/rxjs/dist/esm/internal/util/noop.js function noop() { } var init_noop = __esm({ "node_modules/rxjs/dist/esm/internal/util/noop.js"() { "use strict"; } }); // node_modules/rxjs/dist/esm/internal/NotificationFactories.js function errorNotification(error) { return createNotification("E", void 0, error); } function nextNotification(value) { return createNotification("N", value, void 0); } function createNotification(kind, value, error) { return { kind, value, error }; } var COMPLETE_NOTIFICATION; var init_NotificationFactories = __esm({ "node_modules/rxjs/dist/esm/internal/NotificationFactories.js"() { "use strict"; COMPLETE_NOTIFICATION = (() => createNotification("C", void 0, void 0))(); } }); // node_modules/rxjs/dist/esm/internal/util/errorContext.js function errorContext(cb) { if (config.useDeprecatedSynchronousErrorHandling) { const isRoot = !context; if (isRoot) { context = { errorThrown: false, error: null }; } cb(); if (isRoot) { const { errorThrown, error } = context; context = null; if (errorThrown) { throw error; } } } else { cb(); } } function captureError(err) { if (config.useDeprecatedSynchronousErrorHandling && context) { context.errorThrown = true; context.error = err; } } var context; var init_errorContext = __esm({ "node_modules/rxjs/dist/esm/internal/util/errorContext.js"() { "use strict"; init_config(); context = null; } }); // node_modules/rxjs/dist/esm/internal/Subscriber.js function bind(fn, thisArg) { return _bind.call(fn, thisArg); } function handleUnhandledError(error) { if (config.useDeprecatedSynchronousErrorHandling) { captureError(error); } else { reportUnhandledError(error); } } function defaultErrorHandler(err) { throw err; } function handleStoppedNotification(notification, subscriber) { const { onStoppedNotification } = config; onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber)); } var Subscriber, _bind, ConsumerObserver, SafeSubscriber, EMPTY_OBSERVER; var init_Subscriber = __esm({ "node_modules/rxjs/dist/esm/internal/Subscriber.js"() { "use strict"; init_isFunction(); init_Subscription(); init_config(); init_reportUnhandledError(); init_noop(); init_NotificationFactories(); init_timeoutProvider(); init_errorContext(); Subscriber = class extends Subscription { constructor(destination) { super(); this.isStopped = false; if (destination) { this.destination = destination; if (isSubscription(destination)) { destination.add(this); } } else { this.destination = EMPTY_OBSERVER; } } static create(next, error, complete) { return new SafeSubscriber(next, error, complete); } next(value) { if (this.isStopped) { handleStoppedNotification(nextNotification(value), this); } else { this._next(value); } } error(err) { if (this.isStopped) { handleStoppedNotification(errorNotification(err), this); } else { this.isStopped = true; this._error(err); } } complete() { if (this.isStopped) { handleStoppedNotification(COMPLETE_NOTIFICATION, this); } else { this.isStopped = true; this._complete(); } } unsubscribe() { if (!this.closed) { this.isStopped = true; super.unsubscribe(); this.destination = null; } } _next(value) { this.destination.next(value); } _error(err) { try { this.destination.error(err); } finally { this.unsubscribe(); } } _complete() { try { this.destination.complete(); } finally { this.unsubscribe(); } } }; _bind = Function.prototype.bind; ConsumerObserver = class { constructor(partialObserver) { this.partialObserver = partialObserver; } next(value) { const { partialObserver } = this; if (partialObserver.next) { try { partialObserver.next(value); } catch (error) { handleUnhandledError(error); } } } error(err) { const { partialObserver } = this; if (partialObserver.error) { try { partialObserver.error(err); } catch (error) { handleUnhandledError(error); } } else { handleUnhandledError(err); } } complete() { const { partialObserver } = this; if (partialObserver.complete) { try { partialObserver.complete(); } catch (error) { handleUnhandledError(error); } } } }; SafeSubscriber = class extends Subscriber { constructor(observerOrNext, error, complete) { super(); let partialObserver; if (isFunction(observerOrNext) || !observerOrNext) { partialObserver = { next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : void 0, error: error !== null && error !== void 0 ? error : void 0, complete: complete !== null && complete !== void 0 ? complete : void 0 }; } else { let context2; if (this && config.useDeprecatedNextContext) { context2 = Object.create(observerOrNext); context2.unsubscribe = () => this.unsubscribe(); partialObserver = { next: observerOrNext.next && bind(observerOrNext.next, context2), error: observerOrNext.error && bind(observerOrNext.error, context2), complete: observerOrNext.complete && bind(observerOrNext.complete, context2) }; } else { partialObserver = observerOrNext; } } this.destination = new ConsumerObserver(partialObserver); } }; EMPTY_OBSERVER = { closed: true, next: noop, error: defaultErrorHandler, complete: noop }; } }); // node_modules/rxjs/dist/esm/internal/symbol/observable.js var observable; var init_observable = __esm({ "node_modules/rxjs/dist/esm/internal/symbol/observable.js"() { "use strict"; observable = (() => typeof Symbol === "function" && Symbol.observable || "@@observable")(); } }); // node_modules/rxjs/dist/esm/internal/util/identity.js function identity(x) { return x; } var init_identity = __esm({ "node_modules/rxjs/dist/esm/internal/util/identity.js"() { "use strict"; } }); // node_modules/rxjs/dist/esm/internal/util/pipe.js function pipe(...fns) { return pipeFromArray(fns); } function pipeFromArray(fns) { if (fns.length === 0) { return identity; } if (fns.length === 1) { return fns[0]; } return function piped(input2) { return fns.reduce((prev, fn) => fn(prev), input2); }; } var init_pipe = __esm({ "node_modules/rxjs/dist/esm/internal/util/pipe.js"() { "use strict"; init_identity(); } }); // node_modules/rxjs/dist/esm/internal/Observable.js function getPromiseCtor(promiseCtor) { var _a; return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise; } function isObserver(value) { return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete); } function isSubscriber(value) { return value && value instanceof Subscriber || isObserver(value) && isSubscription(value); } var Observable; var init_Observable = __esm({ "node_modules/rxjs/dist/esm/internal/Observable.js"() { "use strict"; init_Subscriber(); init_Subscription(); init_observable(); init_pipe(); init_config(); init_isFunction(); init_errorContext(); Observable = class _Observable { constructor(subscribe) { if (subscribe) { this._subscribe = subscribe; } } lift(operator) { const observable2 = new _Observable(); observable2.source = this; observable2.operator = operator; return observable2; } subscribe(observerOrNext, error, complete) { const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete); errorContext(() => { const { operator, source } = this; subscriber.add(operator ? operator.call(subscriber, source) : source ? this._subscribe(subscriber) : this._trySubscribe(subscriber)); }); return subscriber; } _trySubscribe(sink) { try { return this._subscribe(sink); } catch (err) { sink.error(err); } } forEach(next, promiseCtor) { promiseCtor = getPromiseCtor(promiseCtor); return new promiseCtor((resolve, reject) => { const subscriber = new SafeSubscriber({ next: (value) => { try { next(value); } catch (err) { reject(err); subscriber.unsubscribe(); } }, error: reject, complete: resolve }); this.subscribe(subscriber); }); } _subscribe(subscriber) { var _a; return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber); } [observable]() { return this; } pipe(...operations) { return pipeFromArray(operations)(this); } toPromise(promiseCtor) { promiseCtor = getPromiseCtor(promiseCtor); return new promiseCtor((resolve, reject) => { let value; this.subscribe((x) => value = x, (err) => reject(err), () => resolve(value)); }); } }; Observable.create = (subscribe) => { return new Observable(subscribe); }; } }); // node_modules/rxjs/dist/esm/internal/util/lift.js function hasLift(source) { return isFunction(source === null || source === void 0 ? void 0 : source.lift); } function operate(init) { return (source) => { if (hasLift(source)) { return source.lift(function(liftedSource) { try { return init(liftedSource, this); } catch (err) { this.error(err); } }); } throw new TypeError("Unable to lift unknown Observable type"); }; } var init_lift = __esm({ "node_modules/rxjs/dist/esm/internal/util/lift.js"() { "use strict"; init_isFunction(); } }); // node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) { return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize); } var OperatorSubscriber; var init_OperatorSubscriber = __esm({ "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js"() { "use strict"; init_Subscriber(); OperatorSubscriber = class extends Subscriber { constructor(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) { super(destination); this.onFinalize = onFinalize; this.shouldUnsubscribe = shouldUnsubscribe; this._next = onNext ? function(value) { try { onNext(value); } catch (err) { destination.error(err); } } : super._next; this._error = onError ? function(err) { try { onError(err); } catch (err2) { destination.error(err2); } finally { this.unsubscribe(); } } : super._error; this._complete = onComplete ? function() { try { onComplete(); } catch (err) { destination.error(err); } finally { this.unsubscribe(); } } : super._complete; } unsubscribe() { var _a; if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) { const { closed } = this; super.unsubscribe(); !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this)); } } }; } }); // node_modules/rxjs/dist/esm/internal/operators/refCount.js function refCount() { return operate((source, subscriber) => { let connection = null; source._refCount++; const refCounter = createOperatorSubscriber(subscriber, void 0, void 0, void 0, () => { if (!source || source._refCount <= 0 || 0 < --source._refCount) { connection = null; return; } const sharedConnection = source._connection; const conn = connection; connection = null; if (sharedConnection && (!conn || sharedConnection === conn)) { sharedConnection.unsubscribe(); } subscriber.unsubscribe(); }); source.subscribe(refCounter); if (!refCounter.closed) { connection = source.connect(); } }); } var init_refCount = __esm({ "node_modules/rxjs/dist/esm/internal/operators/refCount.js"() { "use strict"; init_lift(); init_OperatorSubscriber(); } }); // node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js var ConnectableObservable; var init_ConnectableObservable = __esm({ "node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js"() { "use strict"; init_Observable(); init_Subscription(); init_refCount(); init_OperatorSubscriber(); init_lift(); ConnectableObservable = class extends Observable { constructor(source, subjectFactory) { super(); this.source = source; this.subjectFactory = subjectFactory; this._subject = null; this._refCount = 0; this._connection = null; if (hasLift(source)) { this.lift = source.lift; } } _subscribe(subscriber) { return this.getSubject().subscribe(subscriber); } getSubject() { const subject = this._subject; if (!subject || subject.isStopped) { this._subject = this.subjectFactory(); } return this._subject; } _teardown() { this._refCount = 0; const { _connection } = this; this._subject = this._connection = null; _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe(); } connect() { let connection = this._connection; if (!connection) { connection = this._connection = new Subscription(); const subject = this.getSubject(); connection.add(this.source.subscribe(createOperatorSubscriber(subject, void 0, () => { this._teardown(); subject.complete(); }, (err) => { this._teardown(); subject.error(err); }, () => this._teardown()))); if (connection.closed) { this._connection = null; connection = Subscription.EMPTY; } } return connection; } refCount() { return refCount()(this); } }; } }); // node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js var ObjectUnsubscribedError; var init_ObjectUnsubscribedError = __esm({ "node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js"() { "use strict"; init_createErrorClass(); ObjectUnsubscribedError = createErrorClass((_super) => function ObjectUnsubscribedErrorImpl() { _super(this); this.name = "ObjectUnsubscribedError"; this.message = "object unsubscribed"; }); } }); // node_modules/rxjs/dist/esm/internal/Subject.js var Subject, AnonymousSubject; var init_Subject = __esm({ "node_modules/rxjs/dist/esm/internal/Subject.js"() { "use strict"; init_Observable(); init_Subscription(); init_ObjectUnsubscribedError(); init_arrRemove(); init_errorContext(); Subject = class extends Observable { constructor() { super(); this.closed = false; this.currentObservers = null; this.observers = []; this.isStopped = false; this.hasError = false; this.thrownError = null; } lift(operator) { const subject = new AnonymousSubject(this, this); subject.operator = operator; return subject; } _throwIfClosed() { if (this.closed) { throw new ObjectUnsubscribedError(); } } next(value) { errorContext(() => { this._throwIfClosed(); if (!this.isStopped) { if (!this.currentObservers) { this.currentObservers = Array.from(this.observers); } for (const observer of this.currentObservers) { observer.next(value); } } }); } error(err) { errorContext(() => { this._throwIfClosed(); if (!this.isStopped) { this.hasError = this.isStopped = true; this.thrownError = err; const { observers } = this; while (observers.length) { observers.shift().error(err); } } }); } complete() { errorContext(() => { this._throwIfClosed(); if (!this.isStopped) { this.isStopped = true; const { observers } = this; while (observers.length) { observers.shift().complete(); } } }); } unsubscribe() { this.isStopped = this.closed = true; this.observers = this.currentObservers = null; } get observed() { var _a; return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length)> 0; } _trySubscribe(subscriber) { this._throwIfClosed(); return super._trySubscribe(subscriber); } _subscribe(subscriber) { this._throwIfClosed(); this._checkFinalizedStatuses(subscriber); return this._innerSubscribe(subscriber); } _innerSubscribe(subscriber) { const { hasError, isStopped, observers } = this; if (hasError || isStopped) { return EMPTY_SUBSCRIPTION; } this.currentObservers = null; observers.push(subscriber); return new Subscription(() => { this.currentObservers = null; arrRemove(observers, subscriber); }); } _checkFinalizedStatuses(subscriber) { const { hasError, thrownError, isStopped } = this; if (hasError) { subscriber.error(thrownError); } else if (isStopped) { subscriber.complete(); } } asObservable() { const observable2 = new Observable(); observable2.source = this; return observable2; } }; Subject.create = (destination, source) => { return new AnonymousSubject(destination, source); }; AnonymousSubject = class extends Subject { constructor(destination, source) { super(); this.destination = destination; this.source = source; } next(value) { var _a, _b; (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value); } error(err) { var _a, _b; (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err); } complete() { var _a, _b; (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a); } _subscribe(subscriber) { var _a, _b; return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION; } }; } }); // node_modules/rxjs/dist/esm/internal/BehaviorSubject.js var BehaviorSubject; var init_BehaviorSubject = __esm({ "node_modules/rxjs/dist/esm/internal/BehaviorSubject.js"() { "use strict"; init_Subject(); BehaviorSubject = class extends Subject { constructor(_value) { super(); this._value = _value; } get value() { return this.getValue(); } _subscribe(subscriber) { const subscription = super._subscribe(subscriber); !subscription.closed && subscriber.next(this._value); return subscription; } getValue() { const { hasError, thrownError, _value } = this; if (hasError) { throw thrownError; } this._throwIfClosed(); return _value; } next(value) { super.next(this._value = value); } }; } }); // node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js var dateTimestampProvider; var init_dateTimestampProvider = __esm({ "node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js"() { "use strict"; dateTimestampProvider = { now() { return (dateTimestampProvider.delegate || Date).now(); }, delegate: void 0 }; } }); // node_modules/rxjs/dist/esm/internal/ReplaySubject.js var ReplaySubject; var init_ReplaySubject = __esm({ "node_modules/rxjs/dist/esm/internal/ReplaySubject.js"() { "use strict"; init_Subject(); init_dateTimestampProvider(); ReplaySubject = class extends Subject { constructor(_bufferSize = Infinity, _windowTime = Infinity, _timestampProvider = dateTimestampProvider) { super(); this._bufferSize = _bufferSize; this._windowTime = _windowTime; this._timestampProvider = _timestampProvider; this._buffer = []; this._infiniteTimeWindow = true; this._infiniteTimeWindow = _windowTime === Infinity; this._bufferSize = Math.max(1, _bufferSize); this._windowTime = Math.max(1, _windowTime); } next(value) { const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this; if (!isStopped) { _buffer.push(value); !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime); } this._trimBuffer(); super.next(value); } _subscribe(subscriber) { this._throwIfClosed(); this._trimBuffer(); const subscription = this._innerSubscribe(subscriber); const { _infiniteTimeWindow, _buffer } = this; const copy = _buffer.slice(); for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) { subscriber.next(copy[i]); } this._checkFinalizedStatuses(subscriber); return subscription; } _trimBuffer() { const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this; const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize; _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize); if (!_infiniteTimeWindow) { const now = _timestampProvider.now(); let last3 = 0; for (let i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) { last3 = i; } last3 && _buffer.splice(0, last3 + 1); } } }; } }); // node_modules/rxjs/dist/esm/internal/scheduler/Action.js var Action; var init_Action = __esm({ "node_modules/rxjs/dist/esm/internal/scheduler/Action.js"() { "use strict"; init_Subscription(); Action = class extends Subscription { constructor(scheduler, work) { super(); } schedule(state, delay = 0) { return this; } }; } }); // node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js var intervalProvider; var init_intervalProvider = __esm({ "node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js"() { "use strict"; intervalProvider = { setInterval(handler, timeout2, ...args) { const { delegate } = intervalProvider; if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) { return delegate.setInterval(handler, timeout2, ...args); } return setInterval(handler, timeout2, ...args); }, clearInterval(handle) { const { delegate } = intervalProvider; return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle); }, delegate: void 0 }; } }); // node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js var AsyncAction; var init_AsyncAction = __esm({ "node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js"() { "use strict"; init_Action(); init_intervalProvider(); init_arrRemove(); AsyncAction = class extends Action { constructor(scheduler, work) { super(scheduler, work); this.scheduler = scheduler; this.work = work; this.pending = false; } schedule(state, delay = 0) { var _a; if (this.closed) { return this; } this.state = state; const id = this.id; const scheduler = this.scheduler; if (id != null) { this.id = this.recycleAsyncId(scheduler, id, delay); } this.pending = true; this.delay = delay; this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay); return this; } requestAsyncId(scheduler, _id, delay = 0) { return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay); } recycleAsyncId(_scheduler, id, delay = 0) { if (delay != null && this.delay === delay && this.pending === false) { return id; } if (id != null) { intervalProvider.clearInterval(id); } return void 0; } execute(state, delay) { if (this.closed) { return new Error("executing a cancelled action"); } this.pending = false; const error = this._execute(state, delay); if (error) { return error; } else if (this.pending === false && this.id != null) { this.id = this.recycleAsyncId(this.scheduler, this.id, null); } } _execute(state, _delay) { let errored = false; let errorValue; try { this.work(state); } catch (e) { errored = true; errorValue = e ? e : new Error("Scheduled action threw falsy error"); } if (errored) { this.unsubscribe(); return errorValue; } } unsubscribe() { if (!this.closed) { const { id, scheduler } = this; const { actions } = scheduler; this.work = this.state = this.scheduler = null; this.pending = false; arrRemove(actions, this); if (id != null) { this.id = this.recycleAsyncId(scheduler, id, null); } this.delay = null; super.unsubscribe(); } } }; } }); // node_modules/rxjs/dist/esm/internal/Scheduler.js var Scheduler; var init_Scheduler = __esm({ "node_modules/rxjs/dist/esm/internal/Scheduler.js"() { "use strict"; init_dateTimestampProvider(); Scheduler = class _Scheduler { constructor(schedulerActionCtor, now = _Scheduler.now) { this.schedulerActionCtor = schedulerActionCtor; this.now = now; } schedule(work, delay = 0, state) { return new this.schedulerActionCtor(this, work).schedule(state, delay); } }; Scheduler.now = dateTimestampProvider.now; } }); // node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js var AsyncScheduler; var init_AsyncScheduler = __esm({ "node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js"() { "use strict"; init_Scheduler(); AsyncScheduler = class extends Scheduler { constructor(SchedulerAction, now = Scheduler.now) { super(SchedulerAction, now); this.actions = []; this._active = false; } flush(action) { const { actions } = this; if (this._active) { actions.push(action); return; } let error; this._active = true; do { if (error = action.execute(action.state, action.delay)) { break; } } while (action = actions.shift()); this._active = false; if (error) { while (action = actions.shift()) { action.unsubscribe(); } throw error; } } }; } }); // node_modules/rxjs/dist/esm/internal/scheduler/async.js var asyncScheduler; var init_async = __esm({ "node_modules/rxjs/dist/esm/internal/scheduler/async.js"() { "use strict"; init_AsyncAction(); init_AsyncScheduler(); asyncScheduler = new AsyncScheduler(AsyncAction); } }); // node_modules/rxjs/dist/esm/internal/scheduler/QueueAction.js var QueueAction; var init_QueueAction = __esm({ "node_modules/rxjs/dist/esm/internal/scheduler/QueueAction.js"() { "use strict"; init_AsyncAction(); QueueAction = class extends AsyncAction { constructor(scheduler, work) { super(scheduler, work); this.scheduler = scheduler; this.work = work; } schedule(state, delay = 0) { if (delay> 0) { return super.schedule(state, delay); } this.delay = delay; this.state = state; this.scheduler.flush(this); return this; } execute(state, delay) { return delay> 0 || this.closed ? super.execute(state, delay) : this._execute(state, delay); } requestAsyncId(scheduler, id, delay = 0) { if (delay != null && delay> 0 || delay == null && this.delay> 0) { return super.requestAsyncId(scheduler, id, delay); } scheduler.flush(this); return 0; } }; } }); // node_modules/rxjs/dist/esm/internal/scheduler/QueueScheduler.js var QueueScheduler; var init_QueueScheduler = __esm({ "node_modules/rxjs/dist/esm/internal/scheduler/QueueScheduler.js"() { "use strict"; init_AsyncScheduler(); QueueScheduler = class extends AsyncScheduler { }; } }); // node_modules/rxjs/dist/esm/internal/scheduler/queue.js var queueScheduler; var init_queue = __esm({ "node_modules/rxjs/dist/esm/internal/scheduler/queue.js"() { "use strict"; init_QueueAction(); init_QueueScheduler(); queueScheduler = new QueueScheduler(QueueAction); } }); // node_modules/rxjs/dist/esm/internal/observable/empty.js var EMPTY; var init_empty = __esm({ "node_modules/rxjs/dist/esm/internal/observable/empty.js"() { "use strict"; init_Observable(); EMPTY = new Observable((subscriber) => subscriber.complete()); } }); // node_modules/rxjs/dist/esm/internal/util/isScheduler.js function isScheduler(value) { return value && isFunction(value.schedule); } var init_isScheduler = __esm({ "node_modules/rxjs/dist/esm/internal/util/isScheduler.js"() { "use strict"; init_isFunction(); } }); // node_modules/rxjs/dist/esm/internal/util/args.js function last(arr) { return arr[arr.length - 1]; } function popResultSelector(args) { return isFunction(last(args)) ? args.pop() : void 0; } function popScheduler(args) { return isScheduler(last(args)) ? args.pop() : void 0; } function popNumber(args, defaultValue) { return typeof last(args) === "number" ? args.pop() : defaultValue; } var init_args = __esm({ "node_modules/rxjs/dist/esm/internal/util/args.js"() { "use strict"; init_isFunction(); init_isScheduler(); } }); // node_modules/tslib/tslib.es6.mjs function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve) { resolve(value); }); } return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __values(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function() { if (o && i>= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); } function __await(v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } function __asyncGenerator(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function() { return this; }, i; function awaitReturn(f) { return function(v) { return Promise.resolve(v).then(f, reject); }; } function verb(n, f) { if (g[n]) { i[n] = function(v) { return new Promise(function(a, b) { q.push([n, v, a, b])> 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } } function __asyncValues(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { return this; }, i); function verb(n) { i[n] = o[n] && function(v) { return new Promise(function(resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v2) { resolve({ value: v2, done: d }); }, reject); } } var init_tslib_es6 = __esm({ "node_modules/tslib/tslib.es6.mjs"() { "use strict"; } }); // node_modules/rxjs/dist/esm/internal/util/isArrayLike.js var isArrayLike; var init_isArrayLike = __esm({ "node_modules/rxjs/dist/esm/internal/util/isArrayLike.js"() { "use strict"; isArrayLike = (x) => x && typeof x.length === "number" && typeof x !== "function"; } }); // node_modules/rxjs/dist/esm/internal/util/isPromise.js function isPromise(value) { return isFunction(value === null || value === void 0 ? void 0 : value.then); } var init_isPromise = __esm({ "node_modules/rxjs/dist/esm/internal/util/isPromise.js"() { "use strict"; init_isFunction(); } }); // node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js function isInteropObservable(input2) { return isFunction(input2[observable]); } var init_isInteropObservable = __esm({ "node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js"() { "use strict"; init_observable(); init_isFunction(); } }); // node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js function isAsyncIterable(obj) { return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]); } var init_isAsyncIterable = __esm({ "node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js"() { "use strict"; init_isFunction(); } }); // node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js function createInvalidObservableTypeError(input2) { return new TypeError(`You provided ${input2 !== null && typeof input2 === "object" ? "an invalid object" : `'${input2}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`); } var init_throwUnobservableError = __esm({ "node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js"() { "use strict"; } }); // node_modules/rxjs/dist/esm/internal/symbol/iterator.js function getSymbolIterator() { if (typeof Symbol !== "function" || !Symbol.iterator) { return "@@iterator"; } return Symbol.iterator; } var iterator; var init_iterator = __esm({ "node_modules/rxjs/dist/esm/internal/symbol/iterator.js"() { "use strict"; iterator = getSymbolIterator(); } }); // node_modules/rxjs/dist/esm/internal/util/isIterable.js function isIterable(input2) { return isFunction(input2 === null || input2 === void 0 ? void 0 : input2[iterator]); } var init_isIterable = __esm({ "node_modules/rxjs/dist/esm/internal/util/isIterable.js"() { "use strict"; init_iterator(); init_isFunction(); } }); // node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js function readableStreamLikeToAsyncGenerator(readableStream) { return __asyncGenerator(this, arguments, function* readableStreamLikeToAsyncGenerator_1() { const reader = readableStream.getReader(); try { while (true) { const { value, done } = yield __await(reader.read()); if (done) { return yield __await(void 0); } yield yield __await(value); } } finally { reader.releaseLock(); } }); } function isReadableStreamLike(obj) { return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader); } var init_isReadableStreamLike = __esm({ "node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js"() { "use strict"; init_tslib_es6(); init_isFunction(); } }); // node_modules/rxjs/dist/esm/internal/observable/innerFrom.js function innerFrom(input2) { if (input2 instanceof Observable) { return input2; } if (input2 != null) { if (isInteropObservable(input2)) { return fromInteropObservable(input2); } if (isArrayLike(input2)) { return fromArrayLike(input2); } if (isPromise(input2)) { return fromPromise(input2); } if (isAsyncIterable(input2)) { return fromAsyncIterable(input2); } if (isIterable(input2)) { return fromIterable(input2); } if (isReadableStreamLike(input2)) { return fromReadableStreamLike(input2); } } throw createInvalidObservableTypeError(input2); } function fromInteropObservable(obj) { return new Observable((subscriber) => { const obs = obj[observable](); if (isFunction(obs.subscribe)) { return obs.subscribe(subscriber); } throw new TypeError("Provided object does not correctly implement Symbol.observable"); }); } function fromArrayLike(array) { return new Observable((subscriber) => { for (let i = 0; i < array.length && !subscriber.closed; i++) { subscriber.next(array[i]); } subscriber.complete(); }); } function fromPromise(promise) { return new Observable((subscriber) => { promise.then((value) => { if (!subscriber.closed) { subscriber.next(value); subscriber.complete(); } }, (err) => subscriber.error(err)).then(null, reportUnhandledError); }); } function fromIterable(iterable) { return new Observable((subscriber) => { for (const value of iterable) { subscriber.next(value); if (subscriber.closed) { return; } } subscriber.complete(); }); } function fromAsyncIterable(asyncIterable) { return new Observable((subscriber) => { process(asyncIterable, subscriber).catch((err) => subscriber.error(err)); }); } function fromReadableStreamLike(readableStream) { return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream)); } function process(asyncIterable, subscriber) { var asyncIterable_1, asyncIterable_1_1; var e_1, _a; return __awaiter(this, void 0, void 0, function* () { try { for (asyncIterable_1 = __asyncValues(asyncIterable); asyncIterable_1_1 = yield asyncIterable_1.next(), !asyncIterable_1_1.done; ) { const value = asyncIterable_1_1.value; subscriber.next(value); if (subscriber.closed) { return; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return)) yield _a.call(asyncIterable_1); } finally { if (e_1) throw e_1.error; } } subscriber.complete(); }); } var init_innerFrom = __esm({ "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js"() { "use strict"; init_tslib_es6(); init_isArrayLike(); init_isPromise(); init_Observable(); init_isInteropObservable(); init_isAsyncIterable(); init_throwUnobservableError(); init_isIterable(); init_isReadableStreamLike(); init_isFunction(); init_reportUnhandledError(); init_observable(); } }); // node_modules/rxjs/dist/esm/internal/util/executeSchedule.js function executeSchedule(parentSubscription, scheduler, work, delay = 0, repeat = false) { const scheduleSubscription = scheduler.schedule(function() { work(); if (repeat) { parentSubscription.add(this.schedule(null, delay)); } else { this.unsubscribe(); } }, delay); parentSubscription.add(scheduleSubscription); if (!repeat) { return scheduleSubscription; } } var init_executeSchedule = __esm({ "node_modules/rxjs/dist/esm/internal/util/executeSchedule.js"() { "use strict"; } }); // node_modules/rxjs/dist/esm/internal/operators/observeOn.js function observeOn(scheduler, delay = 0) { return operate((source, subscriber) => { source.subscribe(createOperatorSubscriber(subscriber, (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay), () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay), (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay))); }); } var init_observeOn = __esm({ "node_modules/rxjs/dist/esm/internal/operators/observeOn.js"() { "use strict"; init_executeSchedule(); init_lift(); init_OperatorSubscriber(); } }); // node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js function subscribeOn(scheduler, delay = 0) { return operate((source, subscriber) => { subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay)); }); } var init_subscribeOn = __esm({ "node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js"() { "use strict"; init_lift(); } }); // node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js function scheduleObservable(input2, scheduler) { return innerFrom(input2).pipe(subscribeOn(scheduler), observeOn(scheduler)); } var init_scheduleObservable = __esm({ "node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js"() { "use strict"; init_innerFrom(); init_observeOn(); init_subscribeOn(); } }); // node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js function schedulePromise(input2, scheduler) { return innerFrom(input2).pipe(subscribeOn(scheduler), observeOn(scheduler)); } var init_schedulePromise = __esm({ "node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js"() { "use strict"; init_innerFrom(); init_observeOn(); init_subscribeOn(); } }); // node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js function scheduleArray(input2, scheduler) { return new Observable((subscriber) => { let i = 0; return scheduler.schedule(function() { if (i === input2.length) { subscriber.complete(); } else { subscriber.next(input2[i++]); if (!subscriber.closed) { this.schedule(); } } }); }); } var init_scheduleArray = __esm({ "node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js"() { "use strict"; init_Observable(); } }); // node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js function scheduleIterable(input2, scheduler) { return new Observable((subscriber) => { let iterator2; executeSchedule(subscriber, scheduler, () => { iterator2 = input2[iterator](); executeSchedule(subscriber, scheduler, () => { let value; let done; try { ({ value, done } = iterator2.next()); } catch (err) { subscriber.error(err); return; } if (done) { subscriber.complete(); } else { subscriber.next(value); } }, 0, true); }); return () => isFunction(iterator2 === null || iterator2 === void 0 ? void 0 : iterator2.return) && iterator2.return(); }); } var init_scheduleIterable = __esm({ "node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js"() { "use strict"; init_Observable(); init_iterator(); init_isFunction(); init_executeSchedule(); } }); // node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js function scheduleAsyncIterable(input2, scheduler) { if (!input2) { throw new Error("Iterable cannot be null"); } return new Observable((subscriber) => { executeSchedule(subscriber, scheduler, () => { const iterator2 = input2[Symbol.asyncIterator](); executeSchedule(subscriber, scheduler, () => { iterator2.next().then((result) => { if (result.done) { subscriber.complete(); } else { subscriber.next(result.value); } }); }, 0, true); }); }); } var init_scheduleAsyncIterable = __esm({ "node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js"() { "use strict"; init_Observable(); init_executeSchedule(); } }); // node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js function scheduleReadableStreamLike(input2, scheduler) { return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input2), scheduler); } var init_scheduleReadableStreamLike = __esm({ "node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js"() { "use strict"; init_scheduleAsyncIterable(); init_isReadableStreamLike(); } }); // node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js function scheduled(input2, scheduler) { if (input2 != null) { if (isInteropObservable(input2)) { return scheduleObservable(input2, scheduler); } if (isArrayLike(input2)) { return scheduleArray(input2, scheduler); } if (isPromise(input2)) { return schedulePromise(input2, scheduler); } if (isAsyncIterable(input2)) { return scheduleAsyncIterable(input2, scheduler); } if (isIterable(input2)) { return scheduleIterable(input2, scheduler); } if (isReadableStreamLike(input2)) { return scheduleReadableStreamLike(input2, scheduler); } } throw createInvalidObservableTypeError(input2); } var init_scheduled = __esm({ "node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js"() { "use strict"; init_scheduleObservable(); init_schedulePromise(); init_scheduleArray(); init_scheduleIterable(); init_scheduleAsyncIterable(); init_isInteropObservable(); init_isPromise(); init_isArrayLike(); init_isIterable(); init_isAsyncIterable(); init_throwUnobservableError(); init_isReadableStreamLike(); init_scheduleReadableStreamLike(); } }); // node_modules/rxjs/dist/esm/internal/observable/from.js function from(input2, scheduler) { return scheduler ? scheduled(input2, scheduler) : innerFrom(input2); } var init_from = __esm({ "node_modules/rxjs/dist/esm/internal/observable/from.js"() { "use strict"; init_scheduled(); init_innerFrom(); } }); // node_modules/rxjs/dist/esm/internal/observable/of.js function of(...args) { const scheduler = popScheduler(args); return from(args, scheduler); } var init_of = __esm({ "node_modules/rxjs/dist/esm/internal/observable/of.js"() { "use strict"; init_args(); init_from(); } }); // node_modules/rxjs/dist/esm/internal/observable/throwError.js function throwError(errorOrErrorFactory, scheduler) { const errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : () => errorOrErrorFactory; const init = (subscriber) => subscriber.error(errorFactory()); return new Observable(scheduler ? (subscriber) => scheduler.schedule(init, 0, subscriber) : init); } var init_throwError = __esm({ "node_modules/rxjs/dist/esm/internal/observable/throwError.js"() { "use strict"; init_Observable(); init_isFunction(); } }); // node_modules/rxjs/dist/esm/internal/util/isObservable.js function isObservable(obj) { return !!obj && (obj instanceof Observable || isFunction(obj.lift) && isFunction(obj.subscribe)); } var init_isObservable = __esm({ "node_modules/rxjs/dist/esm/internal/util/isObservable.js"() { "use strict"; init_Observable(); init_isFunction(); } }); // node_modules/rxjs/dist/esm/internal/util/EmptyError.js var EmptyError; var init_EmptyError = __esm({ "node_modules/rxjs/dist/esm/internal/util/EmptyError.js"() { "use strict"; init_createErrorClass(); EmptyError = createErrorClass((_super) => function EmptyErrorImpl() { _super(this); this.name = "EmptyError"; this.message = "no elements in sequence"; }); } }); // node_modules/rxjs/dist/esm/internal/util/isDate.js function isValidDate(value) { return value instanceof Date && !isNaN(value); } var init_isDate = __esm({ "node_modules/rxjs/dist/esm/internal/util/isDate.js"() { "use strict"; } }); // node_modules/rxjs/dist/esm/internal/operators/timeout.js function timeout(config2, schedulerArg) { const { first: first2, each, with: _with = timeoutErrorFactory, scheduler = schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler, meta = null } = isValidDate(config2) ? { first: config2 } : typeof config2 === "number" ? { each: config2 } : config2; if (first2 == null && each == null) { throw new TypeError("No timeout provided."); } return operate((source, subscriber) => { let originalSourceSubscription; let timerSubscription; let lastValue = null; let seen = 0; const startTimer = (delay) => { timerSubscription = executeSchedule(subscriber, scheduler, () => { try { originalSourceSubscription.unsubscribe(); innerFrom(_with({ meta, lastValue, seen })).subscribe(subscriber); } catch (err) { subscriber.error(err); } }, delay); }; originalSourceSubscription = source.subscribe(createOperatorSubscriber(subscriber, (value) => { timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe(); seen++; subscriber.next(lastValue = value); each> 0 && startTimer(each); }, void 0, void 0, () => { if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) { timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe(); } lastValue = null; })); !seen && startTimer(first2 != null ? typeof first2 === "number" ? first2 : +first2 - scheduler.now() : each); }); } function timeoutErrorFactory(info) { throw new TimeoutError(info); } var TimeoutError; var init_timeout = __esm({ "node_modules/rxjs/dist/esm/internal/operators/timeout.js"() { "use strict"; init_async(); init_isDate(); init_lift(); init_innerFrom(); init_createErrorClass(); init_OperatorSubscriber(); init_executeSchedule(); TimeoutError = createErrorClass((_super) => function TimeoutErrorImpl(info = null) { _super(this); this.message = "Timeout has occurred"; this.name = "TimeoutError"; this.info = info; }); } }); // node_modules/rxjs/dist/esm/internal/operators/map.js function map(project, thisArg) { return operate((source, subscriber) => { let index = 0; source.subscribe(createOperatorSubscriber(subscriber, (value) => { subscriber.next(project.call(thisArg, value, index++)); })); }); } var init_map = __esm({ "node_modules/rxjs/dist/esm/internal/operators/map.js"() { "use strict"; init_lift(); init_OperatorSubscriber(); } }); // node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js function callOrApply(fn, args) { return isArray(args) ? fn(...args) : fn(args); } function mapOneOrManyArgs(fn) { return map((args) => callOrApply(fn, args)); } var isArray; var init_mapOneOrManyArgs = __esm({ "node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js"() { "use strict"; init_map(); ({ isArray } = Array); } }); // node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js function argsArgArrayOrObject(args) { if (args.length === 1) { const first2 = args[0]; if (isArray2(first2)) { return { args: first2, keys: null }; } if (isPOJO(first2)) { const keys = getKeys(first2); return { args: keys.map((key) => first2[key]), keys }; } } return { args, keys: null }; } function isPOJO(obj) { return obj && typeof obj === "object" && getPrototypeOf(obj) === objectProto; } var isArray2, getPrototypeOf, objectProto, getKeys; var init_argsArgArrayOrObject = __esm({ "node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js"() { "use strict"; ({ isArray: isArray2 } = Array); ({ getPrototypeOf, prototype: objectProto, keys: getKeys } = Object); } }); // node_modules/rxjs/dist/esm/internal/util/createObject.js function createObject(keys, values) { return keys.reduce((result, key, i) => (result[key] = values[i], result), {}); } var init_createObject = __esm({ "node_modules/rxjs/dist/esm/internal/util/createObject.js"() { "use strict"; } }); // node_modules/rxjs/dist/esm/internal/observable/combineLatest.js function combineLatest(...args) { const scheduler = popScheduler(args); const resultSelector = popResultSelector(args); const { args: observables, keys } = argsArgArrayOrObject(args); if (observables.length === 0) { return from([], scheduler); } const result = new Observable(combineLatestInit(observables, scheduler, keys ? (values) => createObject(keys, values) : identity)); return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result; } function combineLatestInit(observables, scheduler, valueTransform = identity) { return (subscriber) => { maybeSchedule(scheduler, () => { const { length } = observables; const values = new Array(length); let active = length; let remainingFirstValues = length; for (let i = 0; i < length; i++) { maybeSchedule(scheduler, () => { const source = from(observables[i], scheduler); let hasFirstValue = false; source.subscribe(createOperatorSubscriber(subscriber, (value) => { values[i] = value; if (!hasFirstValue) { hasFirstValue = true; remainingFirstValues--; } if (!remainingFirstValues) { subscriber.next(valueTransform(values.slice())); } }, () => { if (!--active) { subscriber.complete(); } })); }, subscriber); } }, subscriber); }; } function maybeSchedule(scheduler, execute, subscription) { if (scheduler) { executeSchedule(subscription, scheduler, execute); } else { execute(); } } var init_combineLatest = __esm({ "node_modules/rxjs/dist/esm/internal/observable/combineLatest.js"() { "use strict"; init_Observable(); init_argsArgArrayOrObject(); init_from(); init_identity(); init_mapOneOrManyArgs(); init_args(); init_createObject(); init_OperatorSubscriber(); init_executeSchedule(); } }); // node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) { const buffer = []; let active = 0; let index = 0; let isComplete = false; const checkComplete = () => { if (isComplete && !buffer.length && !active) { subscriber.complete(); } }; const outerNext = (value) => active < concurrent ? doInnerSub(value) : buffer.push(value); const doInnerSub = (value) => { expand && subscriber.next(value); active++; let innerComplete = false; innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, (innerValue) => { onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue); if (expand) { outerNext(innerValue); } else { subscriber.next(innerValue); } }, () => { innerComplete = true; }, void 0, () => { if (innerComplete) { try { active--; while (buffer.length && active < concurrent) { const bufferedValue = buffer.shift(); if (innerSubScheduler) { executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue)); } else { doInnerSub(bufferedValue); } } checkComplete(); } catch (err) { subscriber.error(err); } } })); }; source.subscribe(createOperatorSubscriber(subscriber, outerNext, () => { isComplete = true; checkComplete(); })); return () => { additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer(); }; } var init_mergeInternals = __esm({ "node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js"() { "use strict"; init_innerFrom(); init_executeSchedule(); init_OperatorSubscriber(); } }); // node_modules/rxjs/dist/esm/internal/operators/mergeMap.js function mergeMap(project, resultSelector, concurrent = Infinity) { if (isFunction(resultSelector)) { return mergeMap((a, i) => map((b, ii) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent); } else if (typeof resultSelector === "number") { concurrent = resultSelector; } return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent)); } var init_mergeMap = __esm({ "node_modules/rxjs/dist/esm/internal/operators/mergeMap.js"() { "use strict"; init_map(); init_innerFrom(); init_lift(); init_mergeInternals(); init_isFunction(); } }); // node_modules/rxjs/dist/esm/internal/operators/mergeAll.js function mergeAll(concurrent = Infinity) { return mergeMap(identity, concurrent); } var init_mergeAll = __esm({ "node_modules/rxjs/dist/esm/internal/operators/mergeAll.js"() { "use strict"; init_mergeMap(); init_identity(); } }); // node_modules/rxjs/dist/esm/internal/operators/concatAll.js function concatAll() { return mergeAll(1); } var init_concatAll = __esm({ "node_modules/rxjs/dist/esm/internal/operators/concatAll.js"() { "use strict"; init_mergeAll(); } }); // node_modules/rxjs/dist/esm/internal/observable/concat.js function concat(...args) { return concatAll()(from(args, popScheduler(args))); } var init_concat = __esm({ "node_modules/rxjs/dist/esm/internal/observable/concat.js"() { "use strict"; init_concatAll(); init_args(); init_from(); } }); // node_modules/rxjs/dist/esm/internal/observable/defer.js function defer(observableFactory) { return new Observable((subscriber) => { innerFrom(observableFactory()).subscribe(subscriber); }); } var init_defer = __esm({ "node_modules/rxjs/dist/esm/internal/observable/defer.js"() { "use strict"; init_Observable(); init_innerFrom(); } }); // node_modules/rxjs/dist/esm/internal/observable/merge.js function merge(...args) { const scheduler = popScheduler(args); const concurrent = popNumber(args, Infinity); const sources = args; return !sources.length ? EMPTY : sources.length === 1 ? innerFrom(sources[0]) : mergeAll(concurrent)(from(sources, scheduler)); } var init_merge = __esm({ "node_modules/rxjs/dist/esm/internal/observable/merge.js"() { "use strict"; init_mergeAll(); init_innerFrom(); init_empty(); init_args(); init_from(); } }); // node_modules/rxjs/dist/esm/internal/operators/filter.js function filter(predicate, thisArg) { return operate((source, subscriber) => { let index = 0; source.subscribe(createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value))); }); } var init_filter = __esm({ "node_modules/rxjs/dist/esm/internal/operators/filter.js"() { "use strict"; init_lift(); init_OperatorSubscriber(); } }); // node_modules/rxjs/dist/esm/internal/types.js var init_types = __esm({ "node_modules/rxjs/dist/esm/internal/types.js"() { "use strict"; } }); // node_modules/rxjs/dist/esm/internal/operators/catchError.js function catchError(selector) { return operate((source, subscriber) => { let innerSub = null; let syncUnsub = false; let handledResult; innerSub = source.subscribe(createOperatorSubscriber(subscriber, void 0, void 0, (err) => { handledResult = innerFrom(selector(err, catchError(selector)(source))); if (innerSub) { innerSub.unsubscribe(); innerSub = null; handledResult.subscribe(subscriber); } else { syncUnsub = true; } })); if (syncUnsub) { innerSub.unsubscribe(); innerSub = null; handledResult.subscribe(subscriber); } }); } var init_catchError = __esm({ "node_modules/rxjs/dist/esm/internal/operators/catchError.js"() { "use strict"; init_innerFrom(); init_OperatorSubscriber(); init_lift(); } }); // node_modules/rxjs/dist/esm/internal/operators/scanInternals.js function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) { return (source, subscriber) => { let hasState = hasSeed; let state = seed; let index = 0; source.subscribe(createOperatorSubscriber(subscriber, (value) => { const i = index++; state = hasState ? accumulator(state, value, i) : (hasState = true, value); emitOnNext && subscriber.next(state); }, emitBeforeComplete && (() => { hasState && subscriber.next(state); subscriber.complete(); }))); }; } var init_scanInternals = __esm({ "node_modules/rxjs/dist/esm/internal/operators/scanInternals.js"() { "use strict"; init_OperatorSubscriber(); } }); // node_modules/rxjs/dist/esm/internal/operators/concatMap.js function concatMap(project, resultSelector) { return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1); } var init_concatMap = __esm({ "node_modules/rxjs/dist/esm/internal/operators/concatMap.js"() { "use strict"; init_mergeMap(); init_isFunction(); } }); // node_modules/rxjs/dist/esm/internal/operators/debounceTime.js function debounceTime(dueTime, scheduler = asyncScheduler) { return operate((source, subscriber) => { let activeTask = null; let lastValue = null; let lastTime = null; const emit = () => { if (activeTask) { activeTask.unsubscribe(); activeTask = null; const value = lastValue; lastValue = null; subscriber.next(value); } }; function emitWhenIdle() { const targetTime = lastTime + dueTime; const now = scheduler.now(); if (now < targetTime) { activeTask = this.schedule(void 0, targetTime - now); subscriber.add(activeTask); return; } emit(); } source.subscribe(createOperatorSubscriber(subscriber, (value) => { lastValue = value; lastTime = scheduler.now(); if (!activeTask) { activeTask = scheduler.schedule(emitWhenIdle, dueTime); subscriber.add(activeTask); } }, () => { emit(); subscriber.complete(); }, void 0, () => { lastValue = activeTask = null; })); }); } var init_debounceTime = __esm({ "node_modules/rxjs/dist/esm/internal/operators/debounceTime.js"() { "use strict"; init_async(); init_lift(); init_OperatorSubscriber(); } }); // node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js function defaultIfEmpty(defaultValue) { return operate((source, subscriber) => { let hasValue = false; source.subscribe(createOperatorSubscriber(subscriber, (value) => { hasValue = true; subscriber.next(value); }, () => { if (!hasValue) { subscriber.next(defaultValue); } subscriber.complete(); })); }); } var init_defaultIfEmpty = __esm({ "node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js"() { "use strict"; init_lift(); init_OperatorSubscriber(); } }); // node_modules/rxjs/dist/esm/internal/operators/take.js function take(count) { return count <= 0 ? () => EMPTY : operate((source, subscriber) => { let seen = 0; source.subscribe(createOperatorSubscriber(subscriber, (value) => { if (++seen <= count) { subscriber.next(value); if (count <= seen) { subscriber.complete(); } } })); }); } var init_take = __esm({ "node_modules/rxjs/dist/esm/internal/operators/take.js"() { "use strict"; init_empty(); init_lift(); init_OperatorSubscriber(); } }); // node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js function distinctUntilChanged(comparator, keySelector = identity) { comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare; return operate((source, subscriber) => { let previousKey; let first2 = true; source.subscribe(createOperatorSubscriber(subscriber, (value) => { const currentKey = keySelector(value); if (first2 || !comparator(previousKey, currentKey)) { first2 = false; previousKey = currentKey; subscriber.next(value); } })); }); } function defaultCompare(a, b) { return a === b; } var init_distinctUntilChanged = __esm({ "node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js"() { "use strict"; init_identity(); init_lift(); init_OperatorSubscriber(); } }); // node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js function throwIfEmpty(errorFactory = defaultErrorFactory) { return operate((source, subscriber) => { let hasValue = false; source.subscribe(createOperatorSubscriber(subscriber, (value) => { hasValue = true; subscriber.next(value); }, () => hasValue ? subscriber.complete() : subscriber.error(errorFactory()))); }); } function defaultErrorFactory() { return new EmptyError(); } var init_throwIfEmpty = __esm({ "node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js"() { "use strict"; init_EmptyError(); init_lift(); init_OperatorSubscriber(); } }); // node_modules/rxjs/dist/esm/internal/operators/finalize.js function finalize(callback) { return operate((source, subscriber) => { try { source.subscribe(subscriber); } finally { subscriber.add(callback); } }); } var init_finalize = __esm({ "node_modules/rxjs/dist/esm/internal/operators/finalize.js"() { "use strict"; init_lift(); } }); // node_modules/rxjs/dist/esm/internal/operators/first.js function first(predicate, defaultValue) { const hasDefaultValue = arguments.length>= 2; return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError())); } var init_first = __esm({ "node_modules/rxjs/dist/esm/internal/operators/first.js"() { "use strict"; init_EmptyError(); init_filter(); init_take(); init_defaultIfEmpty(); init_throwIfEmpty(); init_identity(); } }); // node_modules/rxjs/dist/esm/internal/operators/takeLast.js function takeLast(count) { return count <= 0 ? () => EMPTY : operate((source, subscriber) => { let buffer = []; source.subscribe(createOperatorSubscriber(subscriber, (value) => { buffer.push(value); count < buffer.length && buffer.shift(); }, () => { for (const value of buffer) { subscriber.next(value); } subscriber.complete(); }, void 0, () => { buffer = null; })); }); } var init_takeLast = __esm({ "node_modules/rxjs/dist/esm/internal/operators/takeLast.js"() { "use strict"; init_empty(); init_lift(); init_OperatorSubscriber(); } }); // node_modules/rxjs/dist/esm/internal/operators/last.js function last2(predicate, defaultValue) { const hasDefaultValue = arguments.length>= 2; return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError())); } var init_last = __esm({ "node_modules/rxjs/dist/esm/internal/operators/last.js"() { "use strict"; init_EmptyError(); init_filter(); init_takeLast(); init_throwIfEmpty(); init_defaultIfEmpty(); init_identity(); } }); // node_modules/rxjs/dist/esm/internal/operators/pluck.js function pluck(...properties) { const length = properties.length; if (length === 0) { throw new Error("list of properties cannot be empty."); } return map((x) => { let currentProp = x; for (let i = 0; i < length; i++) { const p = currentProp === null || currentProp === void 0 ? void 0 : currentProp[properties[i]]; if (typeof p !== "undefined") { currentProp = p; } else { return void 0; } } return currentProp; }); } var init_pluck = __esm({ "node_modules/rxjs/dist/esm/internal/operators/pluck.js"() { "use strict"; init_map(); } }); // node_modules/rxjs/dist/esm/internal/operators/scan.js function scan(accumulator, seed) { return operate(scanInternals(accumulator, seed, arguments.length>= 2, true)); } var init_scan = __esm({ "node_modules/rxjs/dist/esm/internal/operators/scan.js"() { "use strict"; init_lift(); init_scanInternals(); } }); // node_modules/rxjs/dist/esm/internal/operators/share.js function share(options = {}) { const { connector = () => new Subject(), resetOnError = true, resetOnComplete = true, resetOnRefCountZero = true } = options; return (wrapperSource) => { let connection; let resetConnection; let subject; let refCount2 = 0; let hasCompleted = false; let hasErrored = false; const cancelReset = () => { resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe(); resetConnection = void 0; }; const reset = () => { cancelReset(); connection = subject = void 0; hasCompleted = hasErrored = false; }; const resetAndUnsubscribe = () => { const conn = connection; reset(); conn === null || conn === void 0 ? void 0 : conn.unsubscribe(); }; return operate((source, subscriber) => { refCount2++; if (!hasErrored && !hasCompleted) { cancelReset(); } const dest = subject = subject !== null && subject !== void 0 ? subject : connector(); subscriber.add(() => { refCount2--; if (refCount2 === 0 && !hasErrored && !hasCompleted) { resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero); } }); dest.subscribe(subscriber); if (!connection && refCount2> 0) { connection = new SafeSubscriber({ next: (value) => dest.next(value), error: (err) => { hasErrored = true; cancelReset(); resetConnection = handleReset(reset, resetOnError, err); dest.error(err); }, complete: () => { hasCompleted = true; cancelReset(); resetConnection = handleReset(reset, resetOnComplete); dest.complete(); } }); innerFrom(source).subscribe(connection); } })(wrapperSource); }; } function handleReset(reset, on, ...args) { if (on === true) { reset(); return; } if (on === false) { return; } const onSubscriber = new SafeSubscriber({ next: () => { onSubscriber.unsubscribe(); reset(); } }); return innerFrom(on(...args)).subscribe(onSubscriber); } var init_share = __esm({ "node_modules/rxjs/dist/esm/internal/operators/share.js"() { "use strict"; init_innerFrom(); init_Subject(); init_Subscriber(); init_lift(); } }); // node_modules/rxjs/dist/esm/internal/operators/skip.js function skip(count) { return filter((_, index) => count <= index); } var init_skip = __esm({ "node_modules/rxjs/dist/esm/internal/operators/skip.js"() { "use strict"; init_filter(); } }); // node_modules/rxjs/dist/esm/internal/operators/startWith.js function startWith(...values) { const scheduler = popScheduler(values); return operate((source, subscriber) => { (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber); }); } var init_startWith = __esm({ "node_modules/rxjs/dist/esm/internal/operators/startWith.js"() { "use strict"; init_concat(); init_args(); init_lift(); } }); // node_modules/rxjs/dist/esm/internal/operators/switchMap.js function switchMap(project, resultSelector) { return operate((source, subscriber) => { let innerSubscriber = null; let index = 0; let isComplete = false; const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete(); source.subscribe(createOperatorSubscriber(subscriber, (value) => { innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe(); let innerIndex = 0; const outerIndex = index++; innerFrom(project(value, outerIndex)).subscribe(innerSubscriber = createOperatorSubscriber(subscriber, (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue), () => { innerSubscriber = null; checkComplete(); })); }, () => { isComplete = true; checkComplete(); })); }); } var init_switchMap = __esm({ "node_modules/rxjs/dist/esm/internal/operators/switchMap.js"() { "use strict"; init_innerFrom(); init_lift(); init_OperatorSubscriber(); } }); // node_modules/rxjs/dist/esm/internal/operators/takeUntil.js function takeUntil(notifier) { return operate((source, subscriber) => { innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop)); !subscriber.closed && source.subscribe(subscriber); }); } var init_takeUntil = __esm({ "node_modules/rxjs/dist/esm/internal/operators/takeUntil.js"() { "use strict"; init_lift(); init_OperatorSubscriber(); init_innerFrom(); init_noop(); } }); // node_modules/rxjs/dist/esm/internal/operators/tap.js function tap(observerOrNext, error, complete) { const tapObserver = isFunction(observerOrNext) || error || complete ? { next: observerOrNext, error, complete } : observerOrNext; return tapObserver ? operate((source, subscriber) => { var _a; (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver); let isUnsub = true; source.subscribe(createOperatorSubscriber(subscriber, (value) => { var _a2; (_a2 = tapObserver.next) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver, value); subscriber.next(value); }, () => { var _a2; isUnsub = false; (_a2 = tapObserver.complete) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver); subscriber.complete(); }, (err) => { var _a2; isUnsub = false; (_a2 = tapObserver.error) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver, err); subscriber.error(err); }, () => { var _a2, _b; if (isUnsub) { (_a2 = tapObserver.unsubscribe) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver); } (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver); })); }) : identity; } var init_tap = __esm({ "node_modules/rxjs/dist/esm/internal/operators/tap.js"() { "use strict"; init_isFunction(); init_lift(); init_OperatorSubscriber(); init_identity(); } }); // node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js function withLatestFrom(...inputs) { const project = popResultSelector(inputs); return operate((source, subscriber) => { const len = inputs.length; const otherValues = new Array(len); let hasValue = inputs.map(() => false); let ready = false; for (let i = 0; i < len; i++) { innerFrom(inputs[i]).subscribe(createOperatorSubscriber(subscriber, (value) => { otherValues[i] = value; if (!ready && !hasValue[i]) { hasValue[i] = true; (ready = hasValue.every(identity)) && (hasValue = null); } }, noop)); } source.subscribe(createOperatorSubscriber(subscriber, (value) => { if (ready) { const values = [value, ...otherValues]; subscriber.next(project ? project(...values) : values); } })); }); } var init_withLatestFrom = __esm({ "node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js"() { "use strict"; init_lift(); init_OperatorSubscriber(); init_innerFrom(); init_identity(); init_noop(); init_args(); } }); // node_modules/rxjs/dist/esm/index.js var init_esm = __esm({ "node_modules/rxjs/dist/esm/index.js"() { "use strict"; init_Observable(); init_ConnectableObservable(); init_Subject(); init_BehaviorSubject(); init_ReplaySubject(); init_queue(); init_Subscription(); init_pipe(); init_isObservable(); init_EmptyError(); init_combineLatest(); init_concat(); init_defer(); init_from(); init_merge(); init_of(); init_throwError(); init_empty(); init_types(); } }); // node_modules/rxjs/dist/esm/operators/index.js var init_operators = __esm({ "node_modules/rxjs/dist/esm/operators/index.js"() { "use strict"; init_catchError(); init_concatMap(); init_debounceTime(); init_defaultIfEmpty(); init_distinctUntilChanged(); init_filter(); init_finalize(); init_first(); init_last(); init_map(); init_mergeAll(); init_mergeMap(); init_observeOn(); init_pluck(); init_refCount(); init_scan(); init_share(); init_skip(); init_startWith(); init_switchMap(); init_take(); init_takeLast(); init_takeUntil(); init_tap(); init_timeout(); init_withLatestFrom(); } }); // node_modules/@angular/core/fesm2022/core.mjs function formatRuntimeErrorCode(code) { return `NG0${Math.abs(code)}`; } function formatRuntimeError(code, message) { const fullCode = formatRuntimeErrorCode(code); let errorMessage = `${fullCode}${message ? ": " + message : ""}`; if (ngDevMode && code < 0) { const addPeriodSeparator = !errorMessage.match(/[.,;!?\n]$/); const separator = addPeriodSeparator ? "." : ""; errorMessage = `${errorMessage}${separator} Find more at ${ERROR_DETAILS_PAGE_BASE_URL}/${fullCode}`; } return errorMessage; } function createInputSignal(initialValue, options) { const node = Object.create(INPUT_SIGNAL_NODE); node.value = initialValue; node.transformFn = options?.transform; function inputValueFn() { producerAccessed(node); if (node.value === REQUIRED_UNSET_VALUE) { let message = null; if (ngDevMode) { const name = options?.debugName ?? options?.alias; message = `Input${name ? ` "${name}"` : ""} is required but no value is available yet.`; } throw new RuntimeError(-950, message); } return node.value; } inputValueFn[SIGNAL] = node; if (ngDevMode) { inputValueFn.toString = () => `[Input Signal: ${inputValueFn()}]`; node.debugName = options?.debugName; } return inputValueFn; } function noSideEffects(fn) { return { toString: fn }.toString(); } function makeDecorator(name, props, parentClass, additionalProcessing, typeFn) { return noSideEffects(() => { const metaCtor = makeMetadataCtor(props); function DecoratorFactory(...args) { if (this instanceof DecoratorFactory) { metaCtor.call(this, ...args); return this; } const annotationInstance = new DecoratorFactory(...args); return function TypeDecorator(cls) { if (typeFn) typeFn(cls, ...args); const annotations = cls.hasOwnProperty(ANNOTATIONS) ? cls[ANNOTATIONS] : Object.defineProperty(cls, ANNOTATIONS, { value: [] })[ANNOTATIONS]; annotations.push(annotationInstance); return cls; }; } if (parentClass) { DecoratorFactory.prototype = Object.create(parentClass.prototype); } DecoratorFactory.prototype.ngMetadataName = name; DecoratorFactory.annotationCls = DecoratorFactory; return DecoratorFactory; }); } function makeMetadataCtor(props) { return function ctor(...args) { if (props) { const values = props(...args); for (const propName in values) { this[propName] = values[propName]; } } }; } function makeParamDecorator(name, props, parentClass) { return noSideEffects(() => { const metaCtor = makeMetadataCtor(props); function ParamDecoratorFactory(...args) { if (this instanceof ParamDecoratorFactory) { metaCtor.apply(this, args); return this; } const annotationInstance = new ParamDecoratorFactory(...args); ParamDecorator.annotation = annotationInstance; return ParamDecorator; function ParamDecorator(cls, unusedKey, index) { const parameters = cls.hasOwnProperty(PARAMETERS) ? cls[PARAMETERS] : Object.defineProperty(cls, PARAMETERS, { value: [] })[PARAMETERS]; while (parameters.length <= index) { parameters.push(null); } (parameters[index] = parameters[index] || []).push(annotationInstance); return cls; } } ParamDecoratorFactory.prototype.ngMetadataName = name; ParamDecoratorFactory.annotationCls = ParamDecoratorFactory; return ParamDecoratorFactory; }); } function makePropDecorator(name, props, parentClass, additionalProcessing) { return noSideEffects(() => { const metaCtor = makeMetadataCtor(props); function PropDecoratorFactory(...args) { if (this instanceof PropDecoratorFactory) { metaCtor.apply(this, args); return this; } const decoratorInstance = new PropDecoratorFactory(...args); function PropDecorator(target, name2) { if (target === void 0) { throw new Error("Standard Angular field decorators are not supported in JIT mode."); } const constructor = target.constructor; const meta = constructor.hasOwnProperty(PROP_METADATA) ? constructor[PROP_METADATA] : Object.defineProperty(constructor, PROP_METADATA, { value: {} })[PROP_METADATA]; meta[name2] = meta.hasOwnProperty(name2) && meta[name2] || []; meta[name2].unshift(decoratorInstance); } return PropDecorator; } if (parentClass) { PropDecoratorFactory.prototype = Object.create(parentClass.prototype); } PropDecoratorFactory.prototype.ngMetadataName = name; PropDecoratorFactory.annotationCls = PropDecoratorFactory; return PropDecoratorFactory; }); } function ngDevModeResetPerfCounters() { const locationString = typeof location !== "undefined" ? location.toString() : ""; const newCounters = { namedConstructors: locationString.indexOf("ngDevMode=namedConstructors") != -1, firstCreatePass: 0, tNode: 0, tView: 0, rendererCreateTextNode: 0, rendererSetText: 0, rendererCreateElement: 0, rendererAddEventListener: 0, rendererSetAttribute: 0, rendererRemoveAttribute: 0, rendererSetProperty: 0, rendererSetClassName: 0, rendererAddClass: 0, rendererRemoveClass: 0, rendererSetStyle: 0, rendererRemoveStyle: 0, rendererDestroy: 0, rendererDestroyNode: 0, rendererMoveNode: 0, rendererRemoveNode: 0, rendererAppendChild: 0, rendererInsertBefore: 0, rendererCreateComment: 0, hydratedNodes: 0, hydratedComponents: 0, dehydratedViewsRemoved: 0, dehydratedViewsCleanupRuns: 0, componentsSkippedHydration: 0, deferBlocksWithIncrementalHydration: 0 }; const allowNgDevModeTrue = locationString.indexOf("ngDevMode=false") === -1; if (!allowNgDevModeTrue) { _global["ngDevMode"] = false; } else { if (typeof _global["ngDevMode"] !== "object") { _global["ngDevMode"] = {}; } Object.assign(_global["ngDevMode"], newCounters); } return newCounters; } function initNgDevMode() { if (typeof ngDevMode === "undefined" || ngDevMode) { if (typeof ngDevMode !== "object" || Object.keys(ngDevMode).length === 0) { ngDevModeResetPerfCounters(); } return typeof ngDevMode !== "undefined" && !!ngDevMode; } return false; } function getClosureSafeProperty(objWithPropertyToExtract) { for (let key in objWithPropertyToExtract) { if (objWithPropertyToExtract[key] === getClosureSafeProperty) { return key; } } throw Error("Could not find renamed property on target object."); } function fillProperties(target, source) { for (const key in source) { if (source.hasOwnProperty(key) && !target.hasOwnProperty(key)) { target[key] = source[key]; } } } function stringify(token) { if (typeof token === "string") { return token; } if (Array.isArray(token)) { return `[${token.map(stringify).join(", ")}]`; } if (token == null) { return "" + token; } const name = token.overriddenName || token.name; if (name) { return `${name}`; } const result = token.toString(); if (result == null) { return "" + result; } const newLineIndex = result.indexOf("\n"); return newLineIndex>= 0 ? result.slice(0, newLineIndex) : result; } function concatStringsWithSpace(before, after) { if (!before) return after || ""; if (!after) return before; return `${before} ${after}`; } function forwardRef(forwardRefFn) { forwardRefFn.__forward_ref__ = forwardRef; forwardRefFn.toString = function() { return stringify(this()); }; return forwardRefFn; } function resolveForwardRef(type) { return isForwardRef(type) ? type() : type; } function isForwardRef(fn) { return typeof fn === "function" && fn.hasOwnProperty(__forward_ref__) && fn.__forward_ref__ === forwardRef; } function assertNumber(actual, msg) { if (!(typeof actual === "number")) { throwError2(msg, typeof actual, "number", "==="); } } function assertNumberInRange(actual, minInclusive, maxInclusive) { assertNumber(actual, "Expected a number"); assertLessThanOrEqual(actual, maxInclusive, "Expected number to be less than or equal to"); assertGreaterThanOrEqual(actual, minInclusive, "Expected number to be greater than or equal to"); } function assertString(actual, msg) { if (!(typeof actual === "string")) { throwError2(msg, actual === null ? "null" : typeof actual, "string", "==="); } } function assertFunction(actual, msg) { if (!(typeof actual === "function")) { throwError2(msg, actual === null ? "null" : typeof actual, "function", "==="); } } function assertEqual(actual, expected, msg) { if (!(actual == expected)) { throwError2(msg, actual, expected, "=="); } } function assertNotEqual(actual, expected, msg) { if (!(actual != expected)) { throwError2(msg, actual, expected, "!="); } } function assertSame(actual, expected, msg) { if (!(actual === expected)) { throwError2(msg, actual, expected, "==="); } } function assertNotSame(actual, expected, msg) { if (!(actual !== expected)) { throwError2(msg, actual, expected, "!=="); } } function assertLessThan(actual, expected, msg) { if (!(actual < expected)) { throwError2(msg, actual, expected, "<"); } } function assertLessThanOrEqual(actual, expected, msg) { if (!(actual <= expected)) { throwError2(msg, actual, expected, "<="); } } function assertGreaterThan(actual, expected, msg) { if (!(actual> expected)) { throwError2(msg, actual, expected, ">"); } } function assertGreaterThanOrEqual(actual, expected, msg) { if (!(actual>= expected)) { throwError2(msg, actual, expected, ">="); } } function assertDefined(actual, msg) { if (actual == null) { throwError2(msg, actual, null, "!="); } } function throwError2(msg, actual, expected, comparison) { throw new Error(`ASSERTION ERROR: ${msg}` + (comparison == null ? "" : ` [Expected=> ${expected} ${comparison} ${actual} <=actual]`)); } function assertDomNode(node) { if (!(node instanceof Node)) { throwError2(`The provided value must be an instance of a DOM Node but got ${stringify(node)}`); } } function assertElement(node) { if (!(node instanceof Element)) { throwError2(`The provided value must be an element but got ${stringify(node)}`); } } function assertIndexInRange(arr, index) { assertDefined(arr, "Array must be defined."); const maxLen = arr.length; if (index < 0 || index>= maxLen) { throwError2(`Index expected to be less than ${maxLen} but got ${index}`); } } function assertOneOf(value, ...validValues) { if (validValues.indexOf(value) !== -1) return true; throwError2(`Expected value to be one of ${JSON.stringify(validValues)} but was ${JSON.stringify(value)}.`); } function assertNotReactive(fn) { if (getActiveConsumer() !== null) { throwError2(`${fn}() should never be called in a reactive context.`); } } function \u0275\u0275defineInjectable(opts) { return { token: opts.token, providedIn: opts.providedIn || null, factory: opts.factory, value: void 0 }; } function \u0275\u0275defineInjector(options) { return { providers: options.providers || [], imports: options.imports || [] }; } function getInjectableDef(type) { return getOwnDefinition(type, NG_PROV_DEF) || getOwnDefinition(type, NG_INJECTABLE_DEF); } function isInjectable(type) { return getInjectableDef(type) !== null; } function getOwnDefinition(type, field) { return type.hasOwnProperty(field) ? type[field] : null; } function getInheritedInjectableDef(type) { const def = type && (type[NG_PROV_DEF] || type[NG_INJECTABLE_DEF]); if (def) { ngDevMode && console.warn(`DEPRECATED: DI is instantiating a token "${type.name}" that inherits its @Injectable decorator but does not provide one itself. This will become an error in a future version of Angular. Please add @Injectable() to the "${type.name}" class.`); return def; } else { return null; } } function getInjectorDef(type) { return type && (type.hasOwnProperty(NG_INJ_DEF) || type.hasOwnProperty(NG_INJECTOR_DEF)) ? type[NG_INJ_DEF] : null; } function getInjectorProfilerContext() { !ngDevMode && throwError2("getInjectorProfilerContext should never be called in production mode"); return _injectorProfilerContext; } function setInjectorProfilerContext(context2) { !ngDevMode && throwError2("setInjectorProfilerContext should never be called in production mode"); const previous = _injectorProfilerContext; _injectorProfilerContext = context2; return previous; } function injectorProfiler(event) { !ngDevMode && throwError2("Injector profiler should never be called in production mode"); if (injectorProfilerCallback != null) { injectorProfilerCallback(event); } } function emitProviderConfiguredEvent(eventProvider, isViewProvider = false) { !ngDevMode && throwError2("Injector profiler should never be called in production mode"); let token; if (typeof eventProvider === "function") { token = eventProvider; } else if (eventProvider instanceof InjectionToken) { token = eventProvider; } else { token = resolveForwardRef(eventProvider.provide); } let provider = eventProvider; if (eventProvider instanceof InjectionToken) { provider = eventProvider.\u0275prov || eventProvider; } injectorProfiler({ type: 2, context: getInjectorProfilerContext(), providerRecord: { token, provider, isViewProvider } }); } function emitInstanceCreatedByInjectorEvent(instance) { !ngDevMode && throwError2("Injector profiler should never be called in production mode"); injectorProfiler({ type: 1, context: getInjectorProfilerContext(), instance: { value: instance } }); } function emitInjectEvent(token, value, flags) { !ngDevMode && throwError2("Injector profiler should never be called in production mode"); injectorProfiler({ type: 0, context: getInjectorProfilerContext(), service: { token, value, flags } }); } function emitEffectCreatedEvent(effect2) { !ngDevMode && throwError2("Injector profiler should never be called in production mode"); injectorProfiler({ type: 3, context: getInjectorProfilerContext(), effect: effect2 }); } function runInInjectorProfilerContext(injector, token, callback) { !ngDevMode && throwError2("runInInjectorProfilerContext should never be called in production mode"); const prevInjectContext = setInjectorProfilerContext({ injector, token }); try { callback(); } finally { setInjectorProfilerContext(prevInjectContext); } } function isEnvironmentProviders(value) { return value && !!value.\u0275providers; } function renderStringify(value) { if (typeof value === "string") return value; if (value == null) return ""; return String(value); } function stringifyForError(value) { if (typeof value === "function") return value.name || value.toString(); if (typeof value === "object" && value != null && typeof value.type === "function") { return value.type.name || value.type.toString(); } return renderStringify(value); } function throwCyclicDependencyError(token, path) { throw new RuntimeError(-200, ngDevMode ? `Circular dependency in DI detected for ${token}${path ? `. Dependency path: ${path.join("> ")}> ${token}` : ""}` : token); } function throwMixedMultiProviderError() { throw new Error(`Cannot mix multi providers and regular providers`); } function throwInvalidProviderError(ngModuleType, providers, provider) { if (ngModuleType && providers) { const providerDetail = providers.map((v) => v == provider ? "?" + provider + "?" : "..."); throw new Error(`Invalid provider for the NgModule '${stringify(ngModuleType)}' - only instances of Provider and Type are allowed, got: [${providerDetail.join(", ")}]`); } else if (isEnvironmentProviders(provider)) { if (provider.\u0275fromNgModule) { throw new RuntimeError(207, `Invalid providers from 'importProvidersFrom' present in a non-environment injector. 'importProvidersFrom' can't be used for component providers.`); } else { throw new RuntimeError(207, `Invalid providers present in a non-environment injector. 'EnvironmentProviders' can't be used for component providers.`); } } else { throw new Error("Invalid provider"); } } function throwProviderNotFoundError(token, injectorName) { const errorMessage = ngDevMode && `No provider for ${stringifyForError(token)} found${injectorName ? ` in ${injectorName}` : ""}`; throw new RuntimeError(-201, errorMessage); } function getInjectImplementation() { return _injectImplementation; } function setInjectImplementation(impl) { const previous = _injectImplementation; _injectImplementation = impl; return previous; } function injectRootLimpMode(token, notFoundValue, flags) { const injectableDef = getInjectableDef(token); if (injectableDef && injectableDef.providedIn == "root") { return injectableDef.value === void 0 ? injectableDef.value = injectableDef.factory() : injectableDef.value; } if (flags & InjectFlags.Optional) return null; if (notFoundValue !== void 0) return notFoundValue; throwProviderNotFoundError(token, "Injector"); } function assertInjectImplementationNotEqual(fn) { ngDevMode && assertNotEqual(_injectImplementation, fn, "Calling \u0275\u0275inject would cause infinite recursion"); } function injectInjectorOnly(token, flags = InjectFlags.Default) { if (getCurrentInjector() === void 0) { throw new RuntimeError(-203, ngDevMode && `The \`${stringify(token)}\` token injection failed. \`inject()\` function must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with \`runInInjectionContext\`.`); } else if (getCurrentInjector() === null) { return injectRootLimpMode(token, void 0, flags); } else { const currentInjector = getCurrentInjector(); let injector; if (currentInjector instanceof RetrievingInjector) { injector = currentInjector.injector; } else { injector = currentInjector; } const value = injector.get(token, flags & InjectFlags.Optional ? null : void 0, flags); ngDevMode && emitInjectEvent(token, value, flags); return value; } } function \u0275\u0275inject(token, flags = InjectFlags.Default) { return (getInjectImplementation() || injectInjectorOnly)(resolveForwardRef(token), flags); } function \u0275\u0275invalidFactoryDep(index) { throw new RuntimeError(202, ngDevMode && `This constructor is not compatible with Angular Dependency Injection because its dependency at index ${index} of the parameter list is invalid. This can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator. Please check that 1) the type for the parameter at index ${index} is correct and 2) the correct Angular decorators are defined for this class and its ancestors.`); } function inject(token, flags = InjectFlags.Default) { return \u0275\u0275inject(token, convertToBitFlags(flags)); } function convertToBitFlags(flags) { if (typeof flags === "undefined" || typeof flags === "number") { return flags; } return 0 | // comment to force a line break in the formatter (flags.optional && 8) | (flags.host && 1) | (flags.self && 2) | (flags.skipSelf && 4); } function injectArgs(types) { const args = []; for (let i = 0; i < types.length; i++) { const arg = resolveForwardRef(types[i]); if (Array.isArray(arg)) { if (arg.length === 0) { throw new RuntimeError(900, ngDevMode && "Arguments array must have arguments."); } let type = void 0; let flags = InjectFlags.Default; for (let j = 0; j < arg.length; j++) { const meta = arg[j]; const flag = getInjectFlag(meta); if (typeof flag === "number") { if (flag === -1) { type = meta.token; } else { flags |= flag; } } else { type = meta; } } args.push(\u0275\u0275inject(type, flags)); } else { args.push(\u0275\u0275inject(arg)); } } return args; } function attachInjectFlag(decorator, flag) { decorator[DI_DECORATOR_FLAG] = flag; decorator.prototype[DI_DECORATOR_FLAG] = flag; return decorator; } function getInjectFlag(token) { return token[DI_DECORATOR_FLAG]; } function catchInjectorError(e, token, injectorErrorName, source) { const tokenPath = e[NG_TEMP_TOKEN_PATH]; if (token[SOURCE]) { tokenPath.unshift(token[SOURCE]); } e.message = formatError("\n" + e.message, tokenPath, injectorErrorName, source); e[NG_TOKEN_PATH] = tokenPath; e[NG_TEMP_TOKEN_PATH] = null; throw e; } function formatError(text, obj, injectorErrorName, source = null) { text = text && text.charAt(0) === "\n" && text.charAt(1) == NO_NEW_LINE ? text.slice(2) : text; let context2 = stringify(obj); if (Array.isArray(obj)) { context2 = obj.map(stringify).join(" -> "); } else if (typeof obj === "object") { let parts = []; for (let key in obj) { if (obj.hasOwnProperty(key)) { let value = obj[key]; parts.push(key + ":" + (typeof value === "string" ? JSON.stringify(value) : stringify(value))); } } context2 = `{${parts.join(", ")}}`; } return `${injectorErrorName}${source ? "(" + source + ")" : ""}[${context2}]: ${text.replace(NEW_LINE, "\n ")}`; } function getFactoryDef(type, throwNotFound) { const hasFactoryDef = type.hasOwnProperty(NG_FACTORY_DEF); if (!hasFactoryDef && throwNotFound === true && ngDevMode) { throw new Error(`Type ${stringify(type)} does not have '\u0275fac' property.`); } return hasFactoryDef ? type[NG_FACTORY_DEF] : null; } function arrayEquals(a, b, identityAccessor) { if (a.length !== b.length) return false; for (let i = 0; i < a.length; i++) { let valueA = a[i]; let valueB = b[i]; if (identityAccessor) { valueA = identityAccessor(valueA); valueB = identityAccessor(valueB); } if (valueB !== valueA) { return false; } } return true; } function flatten(list) { return list.flat(Number.POSITIVE_INFINITY); } function deepForEach(input2, fn) { input2.forEach((value) => Array.isArray(value) ? deepForEach(value, fn) : fn(value)); } function addToArray(arr, index, value) { if (index>= arr.length) { arr.push(value); } else { arr.splice(index, 0, value); } } function removeFromArray(arr, index) { if (index>= arr.length - 1) { return arr.pop(); } else { return arr.splice(index, 1)[0]; } } function newArray(size, value) { const list = []; for (let i = 0; i < size; i++) { list.push(value); } return list; } function arraySplice(array, index, count) { const length = array.length - count; while (index < length) { array[index] = array[index + count]; index++; } while (count--) { array.pop(); } } function arrayInsert2(array, index, value1, value2) { ngDevMode && assertLessThanOrEqual(index, array.length, "Can't insert past array end."); let end = array.length; if (end == index) { array.push(value1, value2); } else if (end === 1) { array.push(value2, array[0]); array[0] = value1; } else { end--; array.push(array[end - 1], array[end]); while (end> index) { const previousEnd = end - 2; array[end] = array[previousEnd]; end--; } array[index] = value1; array[index + 1] = value2; } } function keyValueArraySet(keyValueArray, key, value) { let index = keyValueArrayIndexOf(keyValueArray, key); if (index>= 0) { keyValueArray[index | 1] = value; } else { index = ~index; arrayInsert2(keyValueArray, index, key, value); } return index; } function keyValueArrayGet(keyValueArray, key) { const index = keyValueArrayIndexOf(keyValueArray, key); if (index>= 0) { return keyValueArray[index | 1]; } return void 0; } function keyValueArrayIndexOf(keyValueArray, key) { return _arrayIndexOfSorted(keyValueArray, key, 1); } function _arrayIndexOfSorted(array, value, shift) { ngDevMode && assertEqual(Array.isArray(array), true, "Expecting an array"); let start = 0; let end = array.length>> shift; while (end !== start) { const middle = start + (end - start>> 1); const current = array[middle << shift]; if (value === current) { return middle << shift; } else if (current> value) { end = middle; } else { start = middle + 1; } } return ~(end << shift); } function getNgModuleDef(type, throwNotFound) { const ngModuleDef = type[NG_MOD_DEF] || null; if (!ngModuleDef && throwNotFound === true) { throw new Error(`Type ${stringify(type)} does not have '\u0275mod' property.`); } return ngModuleDef; } function getComponentDef(type) { return type[NG_COMP_DEF] || null; } function getDirectiveDef(type) { return type[NG_DIR_DEF] || null; } function getPipeDef1ドル(type) { return type[NG_PIPE_DEF] || null; } function isStandalone(type) { const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef1ドル(type); return def !== null && def.standalone; } function makeEnvironmentProviders(providers) { return { \u0275providers: providers }; } function provideEnvironmentInitializer(initializerFn) { return makeEnvironmentProviders([{ provide: ENVIRONMENT_INITIALIZER, multi: true, useValue: initializerFn }]); } function importProvidersFrom(...sources) { return { \u0275providers: internalImportProvidersFrom(true, sources), \u0275fromNgModule: true }; } function internalImportProvidersFrom(checkForStandaloneCmp, ...sources) { const providersOut = []; const dedup = /* @__PURE__ */ new Set(); let injectorTypesWithProviders; const collectProviders = (provider) => { providersOut.push(provider); }; deepForEach(sources, (source) => { if ((typeof ngDevMode === "undefined" || ngDevMode) && checkForStandaloneCmp) { const cmpDef = getComponentDef(source); if (cmpDef?.standalone) { throw new RuntimeError(800, `Importing providers supports NgModule or ModuleWithProviders but got a standalone component "${stringifyForError(source)}"`); } } const internalSource = source; if (walkProviderTree(internalSource, collectProviders, [], dedup)) { injectorTypesWithProviders ||= []; injectorTypesWithProviders.push(internalSource); } }); if (injectorTypesWithProviders !== void 0) { processInjectorTypesWithProviders(injectorTypesWithProviders, collectProviders); } return providersOut; } function processInjectorTypesWithProviders(typesWithProviders, visitor) { for (let i = 0; i < typesWithProviders.length; i++) { const { ngModule, providers } = typesWithProviders[i]; deepForEachProvider(providers, (provider) => { ngDevMode && validateProvider(provider, providers || EMPTY_ARRAY, ngModule); visitor(provider, ngModule); }); } } function walkProviderTree(container, visitor, parents, dedup) { container = resolveForwardRef(container); if (!container) return false; let defType = null; let injDef = getInjectorDef(container); const cmpDef = !injDef && getComponentDef(container); if (!injDef && !cmpDef) { const ngModule = container.ngModule; injDef = getInjectorDef(ngModule); if (injDef) { defType = ngModule; } else { return false; } } else if (cmpDef && !cmpDef.standalone) { return false; } else { defType = container; } if (ngDevMode && parents.indexOf(defType) !== -1) { const defName = stringify(defType); const path = parents.map(stringify); throwCyclicDependencyError(defName, path); } const isDuplicate = dedup.has(defType); if (cmpDef) { if (isDuplicate) { return false; } dedup.add(defType); if (cmpDef.dependencies) { const deps = typeof cmpDef.dependencies === "function" ? cmpDef.dependencies() : cmpDef.dependencies; for (const dep of deps) { walkProviderTree(dep, visitor, parents, dedup); } } } else if (injDef) { if (injDef.imports != null && !isDuplicate) { ngDevMode && parents.push(defType); dedup.add(defType); let importTypesWithProviders; try { deepForEach(injDef.imports, (imported) => { if (walkProviderTree(imported, visitor, parents, dedup)) { importTypesWithProviders ||= []; importTypesWithProviders.push(imported); } }); } finally { ngDevMode && parents.pop(); } if (importTypesWithProviders !== void 0) { processInjectorTypesWithProviders(importTypesWithProviders, visitor); } } if (!isDuplicate) { const factory = getFactoryDef(defType) || (() => new defType()); visitor({ provide: defType, useFactory: factory, deps: EMPTY_ARRAY }, defType); visitor({ provide: INJECTOR_DEF_TYPES, useValue: defType, multi: true }, defType); visitor({ provide: ENVIRONMENT_INITIALIZER, useValue: () => \u0275\u0275inject(defType), multi: true }, defType); } const defProviders = injDef.providers; if (defProviders != null && !isDuplicate) { const injectorType = container; deepForEachProvider(defProviders, (provider) => { ngDevMode && validateProvider(provider, defProviders, injectorType); visitor(provider, injectorType); }); } } else { return false; } return defType !== container && container.providers !== void 0; } function validateProvider(provider, providers, containerType) { if (isTypeProvider(provider) || isValueProvider(provider) || isFactoryProvider(provider) || isExistingProvider(provider)) { return; } const classRef = resolveForwardRef(provider && (provider.useClass || provider.provide)); if (!classRef) { throwInvalidProviderError(containerType, providers, provider); } } function deepForEachProvider(providers, fn) { for (let provider of providers) { if (isEnvironmentProviders(provider)) { provider = provider.\u0275providers; } if (Array.isArray(provider)) { deepForEachProvider(provider, fn); } else { fn(provider); } } } function isValueProvider(value) { return value !== null && typeof value == "object" && USE_VALUE1ドル in value; } function isExistingProvider(value) { return !!(value && value.useExisting); } function isFactoryProvider(value) { return !!(value && value.useFactory); } function isTypeProvider(value) { return typeof value === "function"; } function isClassProvider(value) { return !!value.useClass; } function getNullInjector() { if (NULL_INJECTOR === void 0) { NULL_INJECTOR = new NullInjector(); } return NULL_INJECTOR; } function injectableDefOrInjectorDefFactory(token) { const injectableDef = getInjectableDef(token); const factory = injectableDef !== null ? injectableDef.factory : getFactoryDef(token); if (factory !== null) { return factory; } if (token instanceof InjectionToken) { throw new RuntimeError(204, ngDevMode && `Token ${stringify(token)} is missing a \u0275prov definition.`); } if (token instanceof Function) { return getUndecoratedInjectableFactory(token); } throw new RuntimeError(204, ngDevMode && "unreachable"); } function getUndecoratedInjectableFactory(token) { const paramLength = token.length; if (paramLength> 0) { throw new RuntimeError(204, ngDevMode && `Can't resolve all parameters for ${stringify(token)}: (${newArray(paramLength, "?").join(", ")}).`); } const inheritedInjectableDef = getInheritedInjectableDef(token); if (inheritedInjectableDef !== null) { return () => inheritedInjectableDef.factory(token); } else { return () => new token(); } } function providerToRecord(provider) { if (isValueProvider(provider)) { return makeRecord(void 0, provider.useValue); } else { const factory = providerToFactory(provider); return makeRecord(factory, NOT_YET); } } function providerToFactory(provider, ngModuleType, providers) { let factory = void 0; if (ngDevMode && isEnvironmentProviders(provider)) { throwInvalidProviderError(void 0, providers, provider); } if (isTypeProvider(provider)) { const unwrappedProvider = resolveForwardRef(provider); return getFactoryDef(unwrappedProvider) || injectableDefOrInjectorDefFactory(unwrappedProvider); } else { if (isValueProvider(provider)) { factory = () => resolveForwardRef(provider.useValue); } else if (isFactoryProvider(provider)) { factory = () => provider.useFactory(...injectArgs(provider.deps || [])); } else if (isExistingProvider(provider)) { factory = (_, flags) => \u0275\u0275inject(resolveForwardRef(provider.useExisting), flags !== void 0 && flags & InjectFlags.Optional ? InjectFlags.Optional : void 0); } else { const classRef = resolveForwardRef(provider && (provider.useClass || provider.provide)); if (ngDevMode && !classRef) { throwInvalidProviderError(ngModuleType, providers, provider); } if (hasDeps(provider)) { factory = () => new classRef(...injectArgs(provider.deps)); } else { return getFactoryDef(classRef) || injectableDefOrInjectorDefFactory(classRef); } } } return factory; } function assertNotDestroyed(injector) { if (injector.destroyed) { throw new RuntimeError(205, ngDevMode && "Injector has already been destroyed."); } } function makeRecord(factory, value, multi = false) { return { factory, value, multi: multi ? [] : void 0 }; } function hasDeps(value) { return !!value.deps; } function hasOnDestroy(value) { return value !== null && typeof value === "object" && typeof value.ngOnDestroy === "function"; } function couldBeInjectableType(value) { return typeof value === "function" || typeof value === "object" && value instanceof InjectionToken; } function forEachSingleProvider(providers, fn) { for (const provider of providers) { if (Array.isArray(provider)) { forEachSingleProvider(provider, fn); } else if (provider && isEnvironmentProviders(provider)) { forEachSingleProvider(provider.\u0275providers, fn); } else { fn(provider); } } } function runInInjectionContext(injector, fn) { let internalInjector; if (injector instanceof R3Injector) { assertNotDestroyed(injector); internalInjector = injector; } else { internalInjector = new RetrievingInjector(injector); } let prevInjectorProfilerContext; if (ngDevMode) { prevInjectorProfilerContext = setInjectorProfilerContext({ injector, token: null }); } const prevInjector = setCurrentInjector(internalInjector); const previousInjectImplementation = setInjectImplementation(void 0); try { return fn(); } finally { setCurrentInjector(prevInjector); ngDevMode && setInjectorProfilerContext(prevInjectorProfilerContext); setInjectImplementation(previousInjectImplementation); } } function isInInjectionContext() { return getInjectImplementation() !== void 0 || getCurrentInjector() != null; } function assertInInjectionContext(debugFn) { if (!isInInjectionContext()) { throw new RuntimeError(-203, ngDevMode && debugFn.name + "() can only be used within an injection context such as a constructor, a factory function, a field initializer, or a function used with `runInInjectionContext`"); } } function getCompilerFacade(request) { const globalNg = _global["ng"]; if (globalNg && globalNg.\u0275compilerFacade) { return globalNg.\u0275compilerFacade; } if (typeof ngDevMode === "undefined" || ngDevMode) { console.error(`JIT compilation failed for ${request.kind}`, request.type); let message = `The ${request.kind} '${request.type.name}' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available. `; if (request.usage === 1) { message += `The ${request.kind} is part of a library that has been partially compiled. `; message += `However, the Angular Linker has not processed the library such that JIT compilation is used as fallback. `; message += "\n"; message += `Ideally, the library is processed using the Angular Linker to become fully AOT compiled. `; } else { message += `JIT compilation is discouraged for production use-cases! Consider using AOT mode instead. `; } message += `Alternatively, the JIT compiler should be loaded by bootstrapping using '@angular/platform-browser-dynamic' or '@angular/platform-server', `; message += `or manually provide the compiler with 'import "@angular/compiler";' before bootstrapping.`; throw new Error(message); } else { throw new Error("JIT compiler unavailable"); } } function isType(v) { return typeof v === "function"; } function isDelegateCtor(typeStr) { return ES5_DELEGATE_CTOR.test(typeStr) || ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR.test(typeStr) || ES2015_INHERITED_CLASS.test(typeStr) && !ES2015_INHERITED_CLASS_WITH_CTOR.test(typeStr); } function convertTsickleDecoratorIntoMetadata(decoratorInvocations) { if (!decoratorInvocations) { return []; } return decoratorInvocations.map((decoratorInvocation) => { const decoratorType = decoratorInvocation.type; const annotationCls = decoratorType.annotationCls; const annotationArgs = decoratorInvocation.args ? decoratorInvocation.args : []; return new annotationCls(...annotationArgs); }); } function getParentCtor(ctor) { const parentProto = ctor.prototype ? Object.getPrototypeOf(ctor.prototype) : null; const parentCtor = parentProto ? parentProto.constructor : null; return parentCtor || Object; } function isLView(value) { return Array.isArray(value) && typeof value[TYPE] === "object"; } function isLContainer(value) { return Array.isArray(value) && value[TYPE] === true; } function isContentQueryHost(tNode) { return (tNode.flags & 4) !== 0; } function isComponentHost(tNode) { return tNode.componentOffset> -1; } function isDirectiveHost(tNode) { return (tNode.flags & 1) === 1; } function isComponentDef(def) { return !!def.template; } function isRootView(target) { return (target[FLAGS] & 512) !== 0; } function isDestroyed(lView) { return (lView[FLAGS] & 256) === 256; } function assertTNodeForLView(tNode, lView) { assertTNodeForTView(tNode, lView[TVIEW]); } function assertTNodeForTView(tNode, tView) { assertTNode(tNode); const tData = tView.data; for (let i = HEADER_OFFSET; i < tData.length; i++) { if (tData[i] === tNode) { return; } } throwError2("This TNode does not belong to this TView."); } function assertTNode(tNode) { assertDefined(tNode, "TNode must be defined"); if (!(tNode && typeof tNode === "object" && tNode.hasOwnProperty("directiveStylingLast"))) { throwError2("Not of type TNode, got: " + tNode); } } function assertTIcu(tIcu) { assertDefined(tIcu, "Expected TIcu to be defined"); if (!(typeof tIcu.currentCaseLViewIndex === "number")) { throwError2("Object is not of TIcu type."); } } function assertComponentType(actual, msg = "Type passed in is not ComponentType, it does not have '\u0275cmp' property.") { if (!getComponentDef(actual)) { throwError2(msg); } } function assertNgModuleType(actual, msg = "Type passed in is not NgModuleType, it does not have '\u0275mod' property.") { if (!getNgModuleDef(actual)) { throwError2(msg); } } function assertHasParent(tNode) { assertDefined(tNode, "currentTNode should exist!"); assertDefined(tNode.parent, "currentTNode should have a parent"); } function assertLContainer(value) { assertDefined(value, "LContainer must be defined"); assertEqual(isLContainer(value), true, "Expecting LContainer"); } function assertLViewOrUndefined(value) { value && assertEqual(isLView(value), true, "Expecting LView or undefined or null"); } function assertLView(value) { assertDefined(value, "LView must be defined"); assertEqual(isLView(value), true, "Expecting LView"); } function assertFirstCreatePass(tView, errMessage) { assertEqual(tView.firstCreatePass, true, errMessage || "Should only be called in first create pass."); } function assertFirstUpdatePass(tView, errMessage) { assertEqual(tView.firstUpdatePass, true, "Should only be called in first update pass."); } function assertDirectiveDef(obj) { if (obj.type === void 0 || obj.selectors == void 0 || obj.inputs === void 0) { throwError2(`Expected a DirectiveDef/ComponentDef and this object does not seem to have the expected shape.`); } } function assertIndexInDeclRange(tView, index) { assertBetween(HEADER_OFFSET, tView.bindingStartIndex, index); } function assertIndexInExpandoRange(lView, index) { const tView = lView[1]; assertBetween(tView.expandoStartIndex, lView.length, index); } function assertBetween(lower, upper, index) { if (!(lower <= index && index < upper)) { throwError2(`Index out of range (expecting ${lower} <= ${index} < ${upper})`); } } function assertProjectionSlots(lView, errMessage) { assertDefined(lView[DECLARATION_COMPONENT_VIEW], "Component views should exist."); assertDefined(lView[DECLARATION_COMPONENT_VIEW][T_HOST].projection, "Components with projection nodes () must have projection slots defined."); } function assertParentView(lView, errMessage) { assertDefined(lView, "Component views should always have a parent view (component's host view)"); } function assertNodeInjector(lView, injectorIndex) { assertIndexInExpandoRange(lView, injectorIndex); assertIndexInExpandoRange( lView, injectorIndex + 8 /* NodeInjectorOffset.PARENT */ ); assertNumber(lView[injectorIndex + 0], "injectorIndex should point to a bloom filter"); assertNumber(lView[injectorIndex + 1], "injectorIndex should point to a bloom filter"); assertNumber(lView[injectorIndex + 2], "injectorIndex should point to a bloom filter"); assertNumber(lView[injectorIndex + 3], "injectorIndex should point to a bloom filter"); assertNumber(lView[injectorIndex + 4], "injectorIndex should point to a bloom filter"); assertNumber(lView[injectorIndex + 5], "injectorIndex should point to a bloom filter"); assertNumber(lView[injectorIndex + 6], "injectorIndex should point to a bloom filter"); assertNumber(lView[injectorIndex + 7], "injectorIndex should point to a bloom filter"); assertNumber(lView[ injectorIndex + 8 /* NodeInjectorOffset.PARENT */ ], "injectorIndex should point to parent injector"); } function applyValueToInputField(instance, inputSignalNode, privateName, value) { if (inputSignalNode !== null) { inputSignalNode.applyValueToInputSignal(inputSignalNode, value); } else { instance[privateName] = value; } } function NgOnChangesFeatureImpl(definition) { if (definition.type.prototype.ngOnChanges) { definition.setInput = ngOnChangesSetInput; } return rememberChangeHistoryAndInvokeOnChangesHook; } function rememberChangeHistoryAndInvokeOnChangesHook() { const simpleChangesStore = getSimpleChangesStore(this); const current = simpleChangesStore?.current; if (current) { const previous = simpleChangesStore.previous; if (previous === EMPTY_OBJ) { simpleChangesStore.previous = current; } else { for (let key in current) { previous[key] = current[key]; } } simpleChangesStore.current = null; this.ngOnChanges(current); } } function ngOnChangesSetInput(instance, inputSignalNode, value, publicName, privateName) { const declaredName = this.declaredInputs[publicName]; ngDevMode && assertString(declaredName, "Name of input in ngOnChanges has to be a string"); const simpleChangesStore = getSimpleChangesStore(instance) || setSimpleChangesStore(instance, { previous: EMPTY_OBJ, current: null }); const current = simpleChangesStore.current || (simpleChangesStore.current = {}); const previous = simpleChangesStore.previous; const previousChange = previous[declaredName]; current[declaredName] = new SimpleChange(previousChange && previousChange.currentValue, value, previous === EMPTY_OBJ); applyValueToInputField(instance, inputSignalNode, privateName, value); } function getSimpleChangesStore(instance) { return instance[SIMPLE_CHANGES_STORE] || null; } function setSimpleChangesStore(instance, store2) { return instance[SIMPLE_CHANGES_STORE] = store2; } function unwrapRNode(value) { while (Array.isArray(value)) { value = value[HOST]; } return value; } function unwrapLView(value) { while (Array.isArray(value)) { if (typeof value[TYPE] === "object") return value; value = value[HOST]; } return null; } function getNativeByIndex(index, lView) { ngDevMode && assertIndexInRange(lView, index); ngDevMode && assertGreaterThanOrEqual(index, HEADER_OFFSET, "Expected to be past HEADER_OFFSET"); return unwrapRNode(lView[index]); } function getNativeByTNode(tNode, lView) { ngDevMode && assertTNodeForLView(tNode, lView); ngDevMode && assertIndexInRange(lView, tNode.index); const node = unwrapRNode(lView[tNode.index]); return node; } function getTNode(tView, index) { ngDevMode && assertGreaterThan(index, -1, "wrong index for TNode"); ngDevMode && assertLessThan(index, tView.data.length, "wrong index for TNode"); const tNode = tView.data[index]; ngDevMode && tNode !== null && assertTNode(tNode); return tNode; } function load(view, index) { ngDevMode && assertIndexInRange(view, index); return view[index]; } function store(tView, lView, index, value) { if (index>= tView.data.length) { tView.data[index] = null; tView.blueprint[index] = null; } lView[index] = value; } function getComponentLViewByIndex(nodeIndex, hostView) { ngDevMode && assertIndexInRange(hostView, nodeIndex); const slotValue = hostView[nodeIndex]; const lView = isLView(slotValue) ? slotValue : slotValue[HOST]; return lView; } function isCreationMode(view) { return (view[FLAGS] & 4) === 4; } function viewAttachedToChangeDetector(view) { return (view[FLAGS] & 128) === 128; } function viewAttachedToContainer(view) { return isLContainer(view[PARENT]); } function getConstant(consts, index) { if (index === null || index === void 0) return null; ngDevMode && assertIndexInRange(consts, index); return consts[index]; } function resetPreOrderHookFlags(lView) { lView[PREORDER_HOOK_FLAGS] = 0; } function markViewForRefresh(lView) { if (lView[FLAGS] & 1024) { return; } lView[FLAGS] |= 1024; if (viewAttachedToChangeDetector(lView)) { markAncestorsForTraversal(lView); } } function walkUpViews(nestingLevel, currentView) { while (nestingLevel> 0) { ngDevMode && assertDefined(currentView[DECLARATION_VIEW], "Declaration view should be defined if nesting level is greater than 0."); currentView = currentView[DECLARATION_VIEW]; nestingLevel--; } return currentView; } function requiresRefreshOrTraversal(lView) { return !!(lView[FLAGS] & (1024 | 8192) || lView[REACTIVE_TEMPLATE_CONSUMER]?.dirty); } function updateAncestorTraversalFlagsOnAttach(lView) { lView[ENVIRONMENT].changeDetectionScheduler?.notify( 8 /* NotificationSource.ViewAttached */ ); if (lView[FLAGS] & 64) { lView[FLAGS] |= 1024; } if (requiresRefreshOrTraversal(lView)) { markAncestorsForTraversal(lView); } } function markAncestorsForTraversal(lView) { lView[ENVIRONMENT].changeDetectionScheduler?.notify( 0 /* NotificationSource.MarkAncestorsForTraversal */ ); let parent = getLViewParent(lView); while (parent !== null) { if (parent[FLAGS] & 8192) { break; } parent[FLAGS] |= 8192; if (!viewAttachedToChangeDetector(parent)) { break; } parent = getLViewParent(parent); } } function storeLViewOnDestroy(lView, onDestroyCallback) { if (isDestroyed(lView)) { throw new RuntimeError(911, ngDevMode && "View has already been destroyed."); } if (lView[ON_DESTROY_HOOKS] === null) { lView[ON_DESTROY_HOOKS] = []; } lView[ON_DESTROY_HOOKS].push(onDestroyCallback); } function removeLViewOnDestroy(lView, onDestroyCallback) { if (lView[ON_DESTROY_HOOKS] === null) return; const destroyCBIdx = lView[ON_DESTROY_HOOKS].indexOf(onDestroyCallback); if (destroyCBIdx !== -1) { lView[ON_DESTROY_HOOKS].splice(destroyCBIdx, 1); } } function getLViewParent(lView) { ngDevMode && assertLView(lView); const parent = lView[PARENT]; return isLContainer(parent) ? parent[PARENT] : parent; } function getOrCreateLViewCleanup(view) { return view[CLEANUP] ??= []; } function getOrCreateTViewCleanup(tView) { return tView.cleanup ??= []; } function storeCleanupWithContext(tView, lView, context2, cleanupFn) { const lCleanup = getOrCreateLViewCleanup(lView); ngDevMode && assertDefined(context2, "Cleanup context is mandatory when registering framework-level destroy hooks"); lCleanup.push(context2); if (tView.firstCreatePass) { getOrCreateTViewCleanup(tView).push(cleanupFn, lCleanup.length - 1); } else { if (ngDevMode) { Object.freeze(getOrCreateTViewCleanup(tView)); } } } function getElementDepthCount() { return instructionState.lFrame.elementDepthCount; } function increaseElementDepthCount() { instructionState.lFrame.elementDepthCount++; } function decreaseElementDepthCount() { instructionState.lFrame.elementDepthCount--; } function getBindingsEnabled() { return instructionState.bindingsEnabled; } function isInSkipHydrationBlock1ドル() { return instructionState.skipHydrationRootTNode !== null; } function isSkipHydrationRootTNode(tNode) { return instructionState.skipHydrationRootTNode === tNode; } function \u0275\u0275enableBindings() { instructionState.bindingsEnabled = true; } function \u0275\u0275disableBindings() { instructionState.bindingsEnabled = false; } function leaveSkipHydrationBlock() { instructionState.skipHydrationRootTNode = null; } function getLView() { return instructionState.lFrame.lView; } function getTView() { return instructionState.lFrame.tView; } function \u0275\u0275restoreView(viewToRestore) { instructionState.lFrame.contextLView = viewToRestore; return viewToRestore[CONTEXT]; } function \u0275\u0275resetView(value) { instructionState.lFrame.contextLView = null; return value; } function getCurrentTNode() { let currentTNode = getCurrentTNodePlaceholderOk(); while (currentTNode !== null && currentTNode.type === 64) { currentTNode = currentTNode.parent; } return currentTNode; } function getCurrentTNodePlaceholderOk() { return instructionState.lFrame.currentTNode; } function getCurrentParentTNode() { const lFrame = instructionState.lFrame; const currentTNode = lFrame.currentTNode; return lFrame.isParent ? currentTNode : currentTNode.parent; } function setCurrentTNode(tNode, isParent) { ngDevMode && tNode && assertTNodeForTView(tNode, instructionState.lFrame.tView); const lFrame = instructionState.lFrame; lFrame.currentTNode = tNode; lFrame.isParent = isParent; } function isCurrentTNodeParent() { return instructionState.lFrame.isParent; } function setCurrentTNodeAsNotParent() { instructionState.lFrame.isParent = false; } function getContextLView() { const contextLView = instructionState.lFrame.contextLView; ngDevMode && assertDefined(contextLView, "contextLView must be defined."); return contextLView; } function isInCheckNoChangesMode() { !ngDevMode && throwError2("Must never be called in production mode"); return _checkNoChangesMode !== CheckNoChangesMode.Off; } function isExhaustiveCheckNoChanges() { !ngDevMode && throwError2("Must never be called in production mode"); return _checkNoChangesMode === CheckNoChangesMode.Exhaustive; } function setIsInCheckNoChangesMode(mode) { !ngDevMode && throwError2("Must never be called in production mode"); _checkNoChangesMode = mode; } function isRefreshingViews() { return _isRefreshingViews; } function setIsRefreshingViews(mode) { const prev = _isRefreshingViews; _isRefreshingViews = mode; return prev; } function getBindingRoot() { const lFrame = instructionState.lFrame; let index = lFrame.bindingRootIndex; if (index === -1) { index = lFrame.bindingRootIndex = lFrame.tView.bindingStartIndex; } return index; } function getBindingIndex() { return instructionState.lFrame.bindingIndex; } function setBindingIndex(value) { return instructionState.lFrame.bindingIndex = value; } function nextBindingIndex() { return instructionState.lFrame.bindingIndex++; } function incrementBindingIndex(count) { const lFrame = instructionState.lFrame; const index = lFrame.bindingIndex; lFrame.bindingIndex = lFrame.bindingIndex + count; return index; } function isInI18nBlock() { return instructionState.lFrame.inI18n; } function setInI18nBlock(isInI18nBlock2) { instructionState.lFrame.inI18n = isInI18nBlock2; } function setBindingRootForHostBindings(bindingRootIndex, currentDirectiveIndex) { const lFrame = instructionState.lFrame; lFrame.bindingIndex = lFrame.bindingRootIndex = bindingRootIndex; setCurrentDirectiveIndex(currentDirectiveIndex); } function getCurrentDirectiveIndex() { return instructionState.lFrame.currentDirectiveIndex; } function setCurrentDirectiveIndex(currentDirectiveIndex) { instructionState.lFrame.currentDirectiveIndex = currentDirectiveIndex; } function getCurrentDirectiveDef(tData) { const currentDirectiveIndex = instructionState.lFrame.currentDirectiveIndex; return currentDirectiveIndex === -1 ? null : tData[currentDirectiveIndex]; } function getCurrentQueryIndex() { return instructionState.lFrame.currentQueryIndex; } function setCurrentQueryIndex(value) { instructionState.lFrame.currentQueryIndex = value; } function getDeclarationTNode(lView) { const tView = lView[TVIEW]; if (tView.type === 2) { ngDevMode && assertDefined(tView.declTNode, "Embedded TNodes should have declaration parents."); return tView.declTNode; } if (tView.type === 1) { return lView[T_HOST]; } return null; } function enterDI(lView, tNode, flags) { ngDevMode && assertLViewOrUndefined(lView); if (flags & InjectFlags.SkipSelf) { ngDevMode && assertTNodeForTView(tNode, lView[TVIEW]); let parentTNode = tNode; let parentLView = lView; while (true) { ngDevMode && assertDefined(parentTNode, "Parent TNode should be defined"); parentTNode = parentTNode.parent; if (parentTNode === null && !(flags & InjectFlags.Host)) { parentTNode = getDeclarationTNode(parentLView); if (parentTNode === null) break; ngDevMode && assertDefined(parentLView, "Parent LView should be defined"); parentLView = parentLView[DECLARATION_VIEW]; if (parentTNode.type & (2 | 8)) { break; } } else { break; } } if (parentTNode === null) { return false; } else { tNode = parentTNode; lView = parentLView; } } ngDevMode && assertTNodeForLView(tNode, lView); const lFrame = instructionState.lFrame = allocLFrame(); lFrame.currentTNode = tNode; lFrame.lView = lView; return true; } function enterView(newView) { ngDevMode && assertNotEqual(newView[0], newView[1], "????"); ngDevMode && assertLViewOrUndefined(newView); const newLFrame = allocLFrame(); if (ngDevMode) { assertEqual(newLFrame.isParent, true, "Expected clean LFrame"); assertEqual(newLFrame.lView, null, "Expected clean LFrame"); assertEqual(newLFrame.tView, null, "Expected clean LFrame"); assertEqual(newLFrame.selectedIndex, -1, "Expected clean LFrame"); assertEqual(newLFrame.elementDepthCount, 0, "Expected clean LFrame"); assertEqual(newLFrame.currentDirectiveIndex, -1, "Expected clean LFrame"); assertEqual(newLFrame.currentNamespace, null, "Expected clean LFrame"); assertEqual(newLFrame.bindingRootIndex, -1, "Expected clean LFrame"); assertEqual(newLFrame.currentQueryIndex, 0, "Expected clean LFrame"); } const tView = newView[TVIEW]; instructionState.lFrame = newLFrame; ngDevMode && tView.firstChild && assertTNodeForTView(tView.firstChild, tView); newLFrame.currentTNode = tView.firstChild; newLFrame.lView = newView; newLFrame.tView = tView; newLFrame.contextLView = newView; newLFrame.bindingIndex = tView.bindingStartIndex; newLFrame.inI18n = false; } function allocLFrame() { const currentLFrame = instructionState.lFrame; const childLFrame = currentLFrame === null ? null : currentLFrame.child; const newLFrame = childLFrame === null ? createLFrame(currentLFrame) : childLFrame; return newLFrame; } function createLFrame(parent) { const lFrame = { currentTNode: null, isParent: true, lView: null, tView: null, selectedIndex: -1, contextLView: null, elementDepthCount: 0, currentNamespace: null, currentDirectiveIndex: -1, bindingRootIndex: -1, bindingIndex: -1, currentQueryIndex: 0, parent, child: null, inI18n: false }; parent !== null && (parent.child = lFrame); return lFrame; } function leaveViewLight() { const oldLFrame = instructionState.lFrame; instructionState.lFrame = oldLFrame.parent; oldLFrame.currentTNode = null; oldLFrame.lView = null; return oldLFrame; } function leaveView() { const oldLFrame = leaveViewLight(); oldLFrame.isParent = true; oldLFrame.tView = null; oldLFrame.selectedIndex = -1; oldLFrame.contextLView = null; oldLFrame.elementDepthCount = 0; oldLFrame.currentDirectiveIndex = -1; oldLFrame.currentNamespace = null; oldLFrame.bindingRootIndex = -1; oldLFrame.bindingIndex = -1; oldLFrame.currentQueryIndex = 0; } function nextContextImpl(level) { const contextLView = instructionState.lFrame.contextLView = walkUpViews(level, instructionState.lFrame.contextLView); return contextLView[CONTEXT]; } function getSelectedIndex() { return instructionState.lFrame.selectedIndex; } function setSelectedIndex(index) { ngDevMode && index !== -1 && assertGreaterThanOrEqual(index, HEADER_OFFSET, "Index must be past HEADER_OFFSET (or -1)."); ngDevMode && assertLessThan(index, instructionState.lFrame.lView.length, "Can't set index passed end of LView"); instructionState.lFrame.selectedIndex = index; } function getSelectedTNode() { const lFrame = instructionState.lFrame; return getTNode(lFrame.tView, lFrame.selectedIndex); } function \u0275\u0275namespaceSVG() { instructionState.lFrame.currentNamespace = SVG_NAMESPACE; } function \u0275\u0275namespaceMathML() { instructionState.lFrame.currentNamespace = MATH_ML_NAMESPACE; } function \u0275\u0275namespaceHTML() { namespaceHTMLInternal(); } function namespaceHTMLInternal() { instructionState.lFrame.currentNamespace = null; } function getNamespace() { return instructionState.lFrame.currentNamespace; } function wasLastNodeCreated() { return _wasLastNodeCreated; } function lastNodeWasCreated(flag) { _wasLastNodeCreated = flag; } function registerPreOrderHooks(directiveIndex, directiveDef, tView) { ngDevMode && assertFirstCreatePass(tView); const { ngOnChanges, ngOnInit, ngDoCheck } = directiveDef.type.prototype; if (ngOnChanges) { const wrappedOnChanges = NgOnChangesFeatureImpl(directiveDef); (tView.preOrderHooks ??= []).push(directiveIndex, wrappedOnChanges); (tView.preOrderCheckHooks ??= []).push(directiveIndex, wrappedOnChanges); } if (ngOnInit) { (tView.preOrderHooks ??= []).push(0 - directiveIndex, ngOnInit); } if (ngDoCheck) { (tView.preOrderHooks ??= []).push(directiveIndex, ngDoCheck); (tView.preOrderCheckHooks ??= []).push(directiveIndex, ngDoCheck); } } function registerPostOrderHooks(tView, tNode) { ngDevMode && assertFirstCreatePass(tView); for (let i = tNode.directiveStart, end = tNode.directiveEnd; i < end; i++) { const directiveDef = tView.data[i]; ngDevMode && assertDefined(directiveDef, "Expecting DirectiveDef"); const lifecycleHooks = directiveDef.type.prototype; const { ngAfterContentInit, ngAfterContentChecked, ngAfterViewInit, ngAfterViewChecked, ngOnDestroy } = lifecycleHooks; if (ngAfterContentInit) { (tView.contentHooks ??= []).push(-i, ngAfterContentInit); } if (ngAfterContentChecked) { (tView.contentHooks ??= []).push(i, ngAfterContentChecked); (tView.contentCheckHooks ??= []).push(i, ngAfterContentChecked); } if (ngAfterViewInit) { (tView.viewHooks ??= []).push(-i, ngAfterViewInit); } if (ngAfterViewChecked) { (tView.viewHooks ??= []).push(i, ngAfterViewChecked); (tView.viewCheckHooks ??= []).push(i, ngAfterViewChecked); } if (ngOnDestroy != null) { (tView.destroyHooks ??= []).push(i, ngOnDestroy); } } } function executeCheckHooks(lView, hooks, nodeIndex) { callHooks(lView, hooks, 3, nodeIndex); } function executeInitAndCheckHooks(lView, hooks, initPhase, nodeIndex) { ngDevMode && assertNotEqual(initPhase, 3, "Init pre-order hooks should not be called more than once"); if ((lView[FLAGS] & 3) === initPhase) { callHooks(lView, hooks, initPhase, nodeIndex); } } function incrementInitPhaseFlags(lView, initPhase) { ngDevMode && assertNotEqual(initPhase, 3, "Init hooks phase should not be incremented after all init hooks have been run."); let flags = lView[FLAGS]; if ((flags & 3) === initPhase) { flags &= 16383; flags += 1; lView[FLAGS] = flags; } } function callHooks(currentView, arr, initPhase, currentNodeIndex) { ngDevMode && assertEqual(isInCheckNoChangesMode(), false, "Hooks should never be run when in check no changes mode."); const startIndex = currentNodeIndex !== void 0 ? currentView[PREORDER_HOOK_FLAGS] & 65535 : 0; const nodeIndexLimit = currentNodeIndex != null ? currentNodeIndex : -1; const max = arr.length - 1; let lastNodeIndexFound = 0; for (let i = startIndex; i < max; i++) { const hook = arr[i + 1]; if (typeof hook === "number") { lastNodeIndexFound = arr[i]; if (currentNodeIndex != null && lastNodeIndexFound>= currentNodeIndex) { break; } } else { const isInitHook = arr[i] < 0; if (isInitHook) { currentView[PREORDER_HOOK_FLAGS] += 65536; } if (lastNodeIndexFound < nodeIndexLimit || nodeIndexLimit == -1) { callHook(currentView, initPhase, arr, i); currentView[PREORDER_HOOK_FLAGS] = (currentView[PREORDER_HOOK_FLAGS] & 4294901760) + i + 2; } i++; } } } function callHookInternal(directive, hook) { profiler(4, directive, hook); const prevConsumer = setActiveConsumer(null); try { hook.call(directive); } finally { setActiveConsumer(prevConsumer); profiler(5, directive, hook); } } function callHook(currentView, initPhase, arr, i) { const isInitHook = arr[i] < 0; const hook = arr[i + 1]; const directiveIndex = isInitHook ? -arr[i] : arr[i]; const directive = currentView[directiveIndex]; if (isInitHook) { const indexWithintInitPhase = currentView[FLAGS]>> 14; if (indexWithintInitPhase < currentView[PREORDER_HOOK_FLAGS]>> 16 && (currentView[FLAGS] & 3) === initPhase) { currentView[FLAGS] += 16384; callHookInternal(directive, hook); } } else { callHookInternal(directive, hook); } } function toTNodeTypeAsString(tNodeType) { let text = ""; tNodeType & 1 && (text += "|Text"); tNodeType & 2 && (text += "|Element"); tNodeType & 4 && (text += "|Container"); tNodeType & 8 && (text += "|ElementContainer"); tNodeType & 16 && (text += "|Projection"); tNodeType & 32 && (text += "|IcuContainer"); tNodeType & 64 && (text += "|Placeholder"); tNodeType & 128 && (text += "|LetDeclaration"); return text.length> 0 ? text.substring(1) : text; } function isTNodeShape(value) { return value != null && typeof value === "object" && (value.insertBeforeIndex === null || typeof value.insertBeforeIndex === "number" || Array.isArray(value.insertBeforeIndex)); } function hasClassInput(tNode) { return (tNode.flags & 8) !== 0; } function hasStyleInput(tNode) { return (tNode.flags & 16) !== 0; } function assertTNodeType(tNode, expectedTypes, message) { assertDefined(tNode, "should be called with a TNode"); if ((tNode.type & expectedTypes) === 0) { throwError2(message || `Expected [${toTNodeTypeAsString(expectedTypes)}] but got ${toTNodeTypeAsString(tNode.type)}.`); } } function assertPureTNodeType(type) { if (!(type === 2 || type === 1 || type === 4 || type === 8 || type === 32 || type === 16 || type === 64 || type === 128)) { throwError2(`Expected TNodeType to have only a single type selected, but got ${toTNodeTypeAsString(type)}.`); } } function setUpAttributes(renderer, native, attrs) { let i = 0; while (i < attrs.length) { const value = attrs[i]; if (typeof value === "number") { if (value !== 0) { break; } i++; const namespaceURI = attrs[i++]; const attrName = attrs[i++]; const attrVal = attrs[i++]; ngDevMode && ngDevMode.rendererSetAttribute++; renderer.setAttribute(native, attrName, attrVal, namespaceURI); } else { const attrName = value; const attrVal = attrs[++i]; ngDevMode && ngDevMode.rendererSetAttribute++; if (isAnimationProp(attrName)) { renderer.setProperty(native, attrName, attrVal); } else { renderer.setAttribute(native, attrName, attrVal); } i++; } } return i; } function isNameOnlyAttributeMarker(marker) { return marker === 3 || marker === 4 || marker === 6; } function isAnimationProp(name) { return name.charCodeAt(0) === 64; } function mergeHostAttrs(dst, src) { if (src === null || src.length === 0) ; else if (dst === null || dst.length === 0) { dst = src.slice(); } else { let srcMarker = -1; for (let i = 0; i < src.length; i++) { const item = src[i]; if (typeof item === "number") { srcMarker = item; } else { if (srcMarker === 0) ; else if (srcMarker === -1 || srcMarker === 2) { mergeHostAttribute(dst, srcMarker, item, null, src[++i]); } else { mergeHostAttribute(dst, srcMarker, item, null, null); } } } } return dst; } function mergeHostAttribute(dst, marker, key1, key2, value) { let i = 0; let markerInsertPosition = dst.length; if (marker === -1) { markerInsertPosition = -1; } else { while (i < dst.length) { const dstValue = dst[i++]; if (typeof dstValue === "number") { if (dstValue === marker) { markerInsertPosition = -1; break; } else if (dstValue> marker) { markerInsertPosition = i - 1; break; } } } } while (i < dst.length) { const item = dst[i]; if (typeof item === "number") { break; } else if (item === key1) { { if (value !== null) { dst[i + 1] = value; } return; } } i++; if (value !== null) i++; } if (markerInsertPosition !== -1) { dst.splice(markerInsertPosition, 0, marker); i = markerInsertPosition + 1; } dst.splice(i++, 0, key1); if (value !== null) { dst.splice(i++, 0, value); } } function hasParentInjector(parentLocation) { return parentLocation !== NO_PARENT_INJECTOR; } function getParentInjectorIndex(parentLocation) { if (ngDevMode) { assertNumber(parentLocation, "Number expected"); assertNotEqual(parentLocation, -1, "Not a valid state."); const parentInjectorIndex = parentLocation & 32767; assertGreaterThan(parentInjectorIndex, HEADER_OFFSET, "Parent injector must be pointing past HEADER_OFFSET."); } return parentLocation & 32767; } function getParentInjectorViewOffset(parentLocation) { return parentLocation>> 16; } function getParentInjectorView(location2, startView) { let viewOffset = getParentInjectorViewOffset(location2); let parentView = startView; while (viewOffset> 0) { parentView = parentView[DECLARATION_VIEW]; viewOffset--; } return parentView; } function setIncludeViewProviders(v) { const oldValue = includeViewProviders; includeViewProviders = v; return oldValue; } function bloomAdd(injectorIndex, tView, type) { ngDevMode && assertEqual(tView.firstCreatePass, true, "expected firstCreatePass to be true"); let id; if (typeof type === "string") { id = type.charCodeAt(0) || 0; } else if (type.hasOwnProperty(NG_ELEMENT_ID)) { id = type[NG_ELEMENT_ID]; } if (id == null) { id = type[NG_ELEMENT_ID] = nextNgElementId++; } const bloomHash = id & BLOOM_MASK; const mask = 1 << bloomHash; tView.data[injectorIndex + (bloomHash>> BLOOM_BUCKET_BITS)] |= mask; } function getOrCreateNodeInjectorForNode(tNode, lView) { const existingInjectorIndex = getInjectorIndex(tNode, lView); if (existingInjectorIndex !== -1) { return existingInjectorIndex; } const tView = lView[TVIEW]; if (tView.firstCreatePass) { tNode.injectorIndex = lView.length; insertBloom(tView.data, tNode); insertBloom(lView, null); insertBloom(tView.blueprint, null); } const parentLoc = getParentInjectorLocation(tNode, lView); const injectorIndex = tNode.injectorIndex; if (hasParentInjector(parentLoc)) { const parentIndex = getParentInjectorIndex(parentLoc); const parentLView = getParentInjectorView(parentLoc, lView); const parentData = parentLView[TVIEW].data; for (let i = 0; i < 8; i++) { lView[injectorIndex + i] = parentLView[parentIndex + i] | parentData[parentIndex + i]; } } lView[ injectorIndex + 8 /* NodeInjectorOffset.PARENT */ ] = parentLoc; return injectorIndex; } function insertBloom(arr, footer) { arr.push(0, 0, 0, 0, 0, 0, 0, 0, footer); } function getInjectorIndex(tNode, lView) { if (tNode.injectorIndex === -1 || // If the injector index is the same as its parent's injector index, then the index has been // copied down from the parent node. No injector has been created yet on this node. tNode.parent && tNode.parent.injectorIndex === tNode.injectorIndex || // After the first template pass, the injector index might exist but the parent values // might not have been calculated yet for this instance lView[ tNode.injectorIndex + 8 /* NodeInjectorOffset.PARENT */ ] === null) { return -1; } else { ngDevMode && assertIndexInRange(lView, tNode.injectorIndex); return tNode.injectorIndex; } } function getParentInjectorLocation(tNode, lView) { if (tNode.parent && tNode.parent.injectorIndex !== -1) { return tNode.parent.injectorIndex; } let declarationViewOffset = 0; let parentTNode = null; let lViewCursor = lView; while (lViewCursor !== null) { parentTNode = getTNodeFromLView(lViewCursor); if (parentTNode === null) { return NO_PARENT_INJECTOR; } ngDevMode && parentTNode && assertTNodeForLView(parentTNode, lViewCursor[DECLARATION_VIEW]); declarationViewOffset++; lViewCursor = lViewCursor[DECLARATION_VIEW]; if (parentTNode.injectorIndex !== -1) { return parentTNode.injectorIndex | declarationViewOffset << 16; } } return NO_PARENT_INJECTOR; } function diPublicInInjector(injectorIndex, tView, token) { bloomAdd(injectorIndex, tView, token); } function injectAttributeImpl(tNode, attrNameToInject) { ngDevMode && assertTNodeType( tNode, 12 | 3 /* TNodeType.AnyRNode */ ); ngDevMode && assertDefined(tNode, "expecting tNode"); if (attrNameToInject === "class") { return tNode.classes; } if (attrNameToInject === "style") { return tNode.styles; } const attrs = tNode.attrs; if (attrs) { const attrsLength = attrs.length; let i = 0; while (i < attrsLength) { const value = attrs[i]; if (isNameOnlyAttributeMarker(value)) break; if (value === 0) { i = i + 2; } else if (typeof value === "number") { i++; while (i < attrsLength && typeof attrs[i] === "string") { i++; } } else if (value === attrNameToInject) { return attrs[i + 1]; } else { i = i + 2; } } } return null; } function notFoundValueOrThrow(notFoundValue, token, flags) { if (flags & InjectFlags.Optional || notFoundValue !== void 0) { return notFoundValue; } else { throwProviderNotFoundError(token, "NodeInjector"); } } function lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue) { if (flags & InjectFlags.Optional && notFoundValue === void 0) { notFoundValue = null; } if ((flags & (InjectFlags.Self | InjectFlags.Host)) === 0) { const moduleInjector = lView[INJECTOR]; const previousInjectImplementation = setInjectImplementation(void 0); try { if (moduleInjector) { return moduleInjector.get(token, notFoundValue, flags & InjectFlags.Optional); } else { return injectRootLimpMode(token, notFoundValue, flags & InjectFlags.Optional); } } finally { setInjectImplementation(previousInjectImplementation); } } return notFoundValueOrThrow(notFoundValue, token, flags); } function getOrCreateInjectable(tNode, lView, token, flags = InjectFlags.Default, notFoundValue) { if (tNode !== null) { if (lView[FLAGS] & 2048 && // The token must be present on the current node injector when the `Self` // flag is set, so the lookup on embedded view injector(s) can be skipped. !(flags & InjectFlags.Self)) { const embeddedInjectorValue = lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, NOT_FOUND2); if (embeddedInjectorValue !== NOT_FOUND2) { return embeddedInjectorValue; } } const value = lookupTokenUsingNodeInjector(tNode, lView, token, flags, NOT_FOUND2); if (value !== NOT_FOUND2) { return value; } } return lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue); } function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue) { const bloomHash = bloomHashBitOrFactory(token); if (typeof bloomHash === "function") { if (!enterDI(lView, tNode, flags)) { return flags & InjectFlags.Host ? notFoundValueOrThrow(notFoundValue, token, flags) : lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue); } try { let value; if (ngDevMode) { runInInjectorProfilerContext(new NodeInjector(getCurrentTNode(), getLView()), token, () => { value = bloomHash(flags); if (value != null) { emitInstanceCreatedByInjectorEvent(value); } }); } else { value = bloomHash(flags); } if (value == null && !(flags & InjectFlags.Optional)) { throwProviderNotFoundError(token); } else { return value; } } finally { leaveDI(); } } else if (typeof bloomHash === "number") { let previousTView = null; let injectorIndex = getInjectorIndex(tNode, lView); let parentLocation = NO_PARENT_INJECTOR; let hostTElementNode = flags & InjectFlags.Host ? lView[DECLARATION_COMPONENT_VIEW][T_HOST] : null; if (injectorIndex === -1 || flags & InjectFlags.SkipSelf) { parentLocation = injectorIndex === -1 ? getParentInjectorLocation(tNode, lView) : lView[ injectorIndex + 8 /* NodeInjectorOffset.PARENT */ ]; if (parentLocation === NO_PARENT_INJECTOR || !shouldSearchParent(flags, false)) { injectorIndex = -1; } else { previousTView = lView[TVIEW]; injectorIndex = getParentInjectorIndex(parentLocation); lView = getParentInjectorView(parentLocation, lView); } } while (injectorIndex !== -1) { ngDevMode && assertNodeInjector(lView, injectorIndex); const tView = lView[TVIEW]; ngDevMode && assertTNodeForLView(tView.data[ injectorIndex + 8 /* NodeInjectorOffset.TNODE */ ], lView); if (bloomHasToken(bloomHash, injectorIndex, tView.data)) { const instance = searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode); if (instance !== NOT_FOUND2) { return instance; } } parentLocation = lView[ injectorIndex + 8 /* NodeInjectorOffset.PARENT */ ]; if (parentLocation !== NO_PARENT_INJECTOR && shouldSearchParent(flags, lView[TVIEW].data[ injectorIndex + 8 /* NodeInjectorOffset.TNODE */ ] === hostTElementNode) && bloomHasToken(bloomHash, injectorIndex, lView)) { previousTView = tView; injectorIndex = getParentInjectorIndex(parentLocation); lView = getParentInjectorView(parentLocation, lView); } else { injectorIndex = -1; } } } return notFoundValue; } function searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode) { const currentTView = lView[TVIEW]; const tNode = currentTView.data[ injectorIndex + 8 /* NodeInjectorOffset.TNODE */ ]; const canAccessViewProviders = previousTView == null ? ( // 1) This is the first invocation `previousTView == null` which means that we are at the // `TNode` of where injector is starting to look. In such a case the only time we are allowed // to look into the ViewProviders is if: // - we are on a component // - AND the injector set `includeViewProviders` to true (implying that the token can see // ViewProviders because it is the Component or a Service which itself was declared in // ViewProviders) isComponentHost(tNode) && includeViewProviders ) : ( // 2) `previousTView != null` which means that we are now walking across the parent nodes. // In such a case we are only allowed to look into the ViewProviders if: // - We just crossed from child View to Parent View `previousTView != currentTView` // - AND the parent TNode is an Element. // This means that we just came from the Component's View and therefore are allowed to see // into the ViewProviders. previousTView != currentTView && (tNode.type & 3) !== 0 ); const isHostSpecialCase = flags & InjectFlags.Host && hostTElementNode === tNode; const injectableIdx = locateDirectiveOrProvider(tNode, currentTView, token, canAccessViewProviders, isHostSpecialCase); if (injectableIdx !== null) { return getNodeInjectable(lView, currentTView, injectableIdx, tNode, flags); } else { return NOT_FOUND2; } } function locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders, isHostSpecialCase) { const nodeProviderIndexes = tNode.providerIndexes; const tInjectables = tView.data; const injectablesStart = nodeProviderIndexes & 1048575; const directivesStart = tNode.directiveStart; const directiveEnd = tNode.directiveEnd; const cptViewProvidersCount = nodeProviderIndexes>> 20; const startingIndex = canAccessViewProviders ? injectablesStart : injectablesStart + cptViewProvidersCount; const endIndex = isHostSpecialCase ? injectablesStart + cptViewProvidersCount : directiveEnd; for (let i = startingIndex; i < endIndex; i++) { const providerTokenOrDef = tInjectables[i]; if (i < directivesStart && token === providerTokenOrDef || i>= directivesStart && providerTokenOrDef.type === token) { return i; } } if (isHostSpecialCase) { const dirDef = tInjectables[directivesStart]; if (dirDef && isComponentDef(dirDef) && dirDef.type === token) { return directivesStart; } } return null; } function getNodeInjectable(lView, tView, index, tNode, flags) { let value = lView[index]; const tData = tView.data; if (value instanceof NodeInjectorFactory) { const factory = value; if (factory.resolving) { throwCyclicDependencyError(stringifyForError(tData[index])); } const previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders); factory.resolving = true; let prevInjectContext; if (ngDevMode) { const token = tData[index].type || tData[index]; const injector = new NodeInjector(tNode, lView); prevInjectContext = setInjectorProfilerContext({ injector, token }); } const previousInjectImplementation = factory.injectImpl ? setInjectImplementation(factory.injectImpl) : null; const success = enterDI(lView, tNode, InjectFlags.Default); ngDevMode && assertEqual(success, true, "Because flags do not contain `SkipSelf' we expect this to always succeed."); try { value = lView[index] = factory.factory(void 0, flags, tData, lView, tNode); ngDevMode && emitInstanceCreatedByInjectorEvent(value); if (tView.firstCreatePass && index>= tNode.directiveStart) { ngDevMode && assertDirectiveDef(tData[index]); registerPreOrderHooks(index, tData[index], tView); } } finally { ngDevMode && setInjectorProfilerContext(prevInjectContext); previousInjectImplementation !== null && setInjectImplementation(previousInjectImplementation); setIncludeViewProviders(previousIncludeViewProviders); factory.resolving = false; leaveDI(); } } return value; } function bloomHashBitOrFactory(token) { ngDevMode && assertDefined(token, "token must be defined"); if (typeof token === "string") { return token.charCodeAt(0) || 0; } const tokenId = ( // First check with `hasOwnProperty` so we don't get an inherited ID. token.hasOwnProperty(NG_ELEMENT_ID) ? token[NG_ELEMENT_ID] : void 0 ); if (typeof tokenId === "number") { if (tokenId>= 0) { return tokenId & BLOOM_MASK; } else { ngDevMode && assertEqual(tokenId, -1, "Expecting to get Special Injector Id"); return createNodeInjector; } } else { return tokenId; } } function bloomHasToken(bloomHash, injectorIndex, injectorView) { const mask = 1 << bloomHash; const value = injectorView[injectorIndex + (bloomHash>> BLOOM_BUCKET_BITS)]; return !!(value & mask); } function shouldSearchParent(flags, isFirstHostTNode) { return !(flags & InjectFlags.Self) && !(flags & InjectFlags.Host && isFirstHostTNode); } function getNodeInjectorLView(nodeInjector) { return nodeInjector._lView; } function getNodeInjectorTNode(nodeInjector) { return nodeInjector._tNode; } function createNodeInjector() { return new NodeInjector(getCurrentTNode(), getLView()); } function \u0275\u0275getInheritedFactory(type) { return noSideEffects(() => { const ownConstructor = type.prototype.constructor; const ownFactory = ownConstructor[NG_FACTORY_DEF] || getFactoryOf(ownConstructor); const objectPrototype = Object.prototype; let parent = Object.getPrototypeOf(type.prototype).constructor; while (parent && parent !== objectPrototype) { const factory = parent[NG_FACTORY_DEF] || getFactoryOf(parent); if (factory && factory !== ownFactory) { return factory; } parent = Object.getPrototypeOf(parent); } return (t) => new t(); }); } function getFactoryOf(type) { if (isForwardRef(type)) { return () => { const factory = getFactoryOf(resolveForwardRef(type)); return factory && factory(); }; } return getFactoryDef(type); } function lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, notFoundValue) { let currentTNode = tNode; let currentLView = lView; while (currentTNode !== null && currentLView !== null && currentLView[FLAGS] & 2048 && !isRootView(currentLView)) { ngDevMode && assertTNodeForLView(currentTNode, currentLView); const nodeInjectorValue = lookupTokenUsingNodeInjector(currentTNode, currentLView, token, flags | InjectFlags.Self, NOT_FOUND2); if (nodeInjectorValue !== NOT_FOUND2) { return nodeInjectorValue; } let parentTNode = currentTNode.parent; if (!parentTNode) { const embeddedViewInjector = currentLView[EMBEDDED_VIEW_INJECTOR]; if (embeddedViewInjector) { const embeddedViewInjectorValue = embeddedViewInjector.get(token, NOT_FOUND2, flags); if (embeddedViewInjectorValue !== NOT_FOUND2) { return embeddedViewInjectorValue; } } parentTNode = getTNodeFromLView(currentLView); currentLView = currentLView[DECLARATION_VIEW]; } currentTNode = parentTNode; } return notFoundValue; } function getTNodeFromLView(lView) { const tView = lView[TVIEW]; const tViewType = tView.type; if (tViewType === 2) { ngDevMode && assertDefined(tView.declTNode, "Embedded TNodes should have declaration parents."); return tView.declTNode; } else if (tViewType === 1) { return lView[T_HOST]; } return null; } function \u0275\u0275injectAttribute(attrNameToInject) { return injectAttributeImpl(getCurrentTNode(), attrNameToInject); } function getReflect() { return _reflect = _reflect || new ReflectionCapabilities(); } function reflectDependencies(type) { return convertDependencies(getReflect().parameters(type)); } function convertDependencies(deps) { return deps.map((dep) => reflectDependency(dep)); } function reflectDependency(dep) { const meta = { token: null, attribute: null, host: false, optional: false, self: false, skipSelf: false }; if (Array.isArray(dep) && dep.length> 0) { for (let j = 0; j < dep.length; j++) { const param = dep[j]; if (param === void 0) { continue; } const proto = Object.getPrototypeOf(param); if (param instanceof Optional || proto.ngMetadataName === "Optional") { meta.optional = true; } else if (param instanceof SkipSelf || proto.ngMetadataName === "SkipSelf") { meta.skipSelf = true; } else if (param instanceof Self || proto.ngMetadataName === "Self") { meta.self = true; } else if (param instanceof Host || proto.ngMetadataName === "Host") { meta.host = true; } else if (param instanceof Inject) { meta.token = param.token; } else if (param instanceof Attribute) { if (param.attributeName === void 0) { throw new RuntimeError(204, ngDevMode && `Attribute name must be defined.`); } meta.attribute = param.attributeName; } else { meta.token = param; } } } else if (dep === void 0 || Array.isArray(dep) && dep.length === 0) { meta.token = null; } else { meta.token = dep; } return meta; } function compileInjectable(type, meta) { let ngInjectableDef = null; let ngFactoryDef = null; if (!type.hasOwnProperty(NG_PROV_DEF)) { Object.defineProperty(type, NG_PROV_DEF, { get: () => { if (ngInjectableDef === null) { const compiler = getCompilerFacade({ usage: 0, kind: "injectable", type }); ngInjectableDef = compiler.compileInjectable(angularCoreDiEnv, `ng:///${type.name}/\u0275prov.js`, getInjectableMetadata(type, meta)); } return ngInjectableDef; } }); } if (!type.hasOwnProperty(NG_FACTORY_DEF)) { Object.defineProperty(type, NG_FACTORY_DEF, { get: () => { if (ngFactoryDef === null) { const compiler = getCompilerFacade({ usage: 0, kind: "injectable", type }); ngFactoryDef = compiler.compileFactory(angularCoreDiEnv, `ng:///${type.name}/\u0275fac.js`, { name: type.name, type, typeArgumentCount: 0, // In JIT mode types are not available nor used. deps: reflectDependencies(type), target: compiler.FactoryTarget.Injectable }); } return ngFactoryDef; }, // Leave this configurable so that the factories from directives or pipes can take precedence. configurable: true }); } } function isUseClassProvider(meta) { return meta.useClass !== void 0; } function isUseValueProvider(meta) { return USE_VALUE in meta; } function isUseFactoryProvider(meta) { return meta.useFactory !== void 0; } function isUseExistingProvider(meta) { return meta.useExisting !== void 0; } function getInjectableMetadata(type, srcMeta) { const meta = srcMeta || { providedIn: null }; const compilerMeta = { name: type.name, type, typeArgumentCount: 0, providedIn: meta.providedIn }; if ((isUseClassProvider(meta) || isUseFactoryProvider(meta)) && meta.deps !== void 0) { compilerMeta.deps = convertDependencies(meta.deps); } if (isUseClassProvider(meta)) { compilerMeta.useClass = meta.useClass; } else if (isUseValueProvider(meta)) { compilerMeta.useValue = meta.useValue; } else if (isUseFactoryProvider(meta)) { compilerMeta.useFactory = meta.useFactory; } else if (isUseExistingProvider(meta)) { compilerMeta.useExisting = meta.useExisting; } return compilerMeta; } function createInjector(defType, parent = null, additionalProviders = null, name) { const injector = createInjectorWithoutInjectorInstances(defType, parent, additionalProviders, name); injector.resolveInjectorInitializers(); return injector; } function createInjectorWithoutInjectorInstances(defType, parent = null, additionalProviders = null, name, scopes = /* @__PURE__ */ new Set()) { const providers = [additionalProviders || EMPTY_ARRAY, importProvidersFrom(defType)]; name = name || (typeof defType === "object" ? void 0 : stringify(defType)); return new R3Injector(providers, parent || getNullInjector(), name || null, scopes); } function getDevModeNodeName(tNode) { if (tNode.type & 8) { return "an "; } else if (tNode.type & 4) { return "an "; } else if (tNode.type & 128) { return "an @let declaration"; } else { return "a node"; } } function injectDestroyRef() { return new NodeInjectorDestroyRef(getLView()); } function noop2(...args) { } function scheduleCallbackWithRafRace(callback) { let timeoutId; let animationFrameId; function cleanup() { callback = noop2; try { if (animationFrameId !== void 0 && typeof cancelAnimationFrame === "function") { cancelAnimationFrame(animationFrameId); } if (timeoutId !== void 0) { clearTimeout(timeoutId); } } catch { } } timeoutId = setTimeout(() => { callback(); cleanup(); }); if (typeof requestAnimationFrame === "function") { animationFrameId = requestAnimationFrame(() => { callback(); cleanup(); }); } return () => cleanup(); } function scheduleCallbackWithMicrotask(callback) { queueMicrotask(() => callback()); return () => { callback = noop2; }; } function checkStable(zone) { if (zone._nesting == 0 && !zone.hasPendingMicrotasks && !zone.isStable) { try { zone._nesting++; zone.onMicrotaskEmpty.emit(null); } finally { zone._nesting--; if (!zone.hasPendingMicrotasks) { try { zone.runOutsideAngular(() => zone.onStable.emit(null)); } finally { zone.isStable = true; } } } } } function delayChangeDetectionForEvents(zone) { if (zone.isCheckStableRunning || zone.callbackScheduled) { return; } zone.callbackScheduled = true; function scheduleCheckStable() { scheduleCallbackWithRafRace(() => { zone.callbackScheduled = false; updateMicroTaskStatus(zone); zone.isCheckStableRunning = true; checkStable(zone); zone.isCheckStableRunning = false; }); } if (zone.scheduleInRootZone) { Zone.root.run(() => { scheduleCheckStable(); }); } else { zone._outer.run(() => { scheduleCheckStable(); }); } updateMicroTaskStatus(zone); } function forkInnerZoneWithAngularBehavior(zone) { const delayChangeDetectionForEventsDelegate = () => { delayChangeDetectionForEvents(zone); }; const instanceId = ngZoneInstanceId++; zone._inner = zone._inner.fork({ name: "angular", properties: { [isAngularZoneProperty]: true, [angularZoneInstanceIdProperty]: instanceId, [angularZoneInstanceIdProperty + instanceId]: true }, onInvokeTask: (delegate, current, target, task, applyThis, applyArgs) => { if (shouldBeIgnoredByZone(applyArgs)) { return delegate.invokeTask(target, task, applyThis, applyArgs); } try { onEnter(zone); return delegate.invokeTask(target, task, applyThis, applyArgs); } finally { if (zone.shouldCoalesceEventChangeDetection && task.type === "eventTask" || zone.shouldCoalesceRunChangeDetection) { delayChangeDetectionForEventsDelegate(); } onLeave(zone); } }, onInvoke: (delegate, current, target, callback, applyThis, applyArgs, source) => { try { onEnter(zone); return delegate.invoke(target, callback, applyThis, applyArgs, source); } finally { if (zone.shouldCoalesceRunChangeDetection && // Do not delay change detection when the task is the scheduler's tick. // We need to synchronously trigger the stability logic so that the // zone-based scheduler can prevent a duplicate ApplicationRef.tick // by first checking if the scheduler tick is running. This does seem a bit roundabout, // but we _do_ still want to trigger all the correct events when we exit the zone.run // (`onMicrotaskEmpty` and `onStable` _should_ emit; developers can have code which // relies on these events happening after change detection runs). // Note: `zone.callbackScheduled` is already in delayChangeDetectionForEventsDelegate // but is added here as well to prevent reads of applyArgs when not necessary !zone.callbackScheduled && !isSchedulerTick(applyArgs)) { delayChangeDetectionForEventsDelegate(); } onLeave(zone); } }, onHasTask: (delegate, current, target, hasTaskState) => { delegate.hasTask(target, hasTaskState); if (current === target) { if (hasTaskState.change == "microTask") { zone._hasPendingMicrotasks = hasTaskState.microTask; updateMicroTaskStatus(zone); checkStable(zone); } else if (hasTaskState.change == "macroTask") { zone.hasPendingMacrotasks = hasTaskState.macroTask; } } }, onHandleError: (delegate, current, target, error) => { delegate.handleError(target, error); zone.runOutsideAngular(() => zone.onError.emit(error)); return false; } }); } function updateMicroTaskStatus(zone) { if (zone._hasPendingMicrotasks || (zone.shouldCoalesceEventChangeDetection || zone.shouldCoalesceRunChangeDetection) && zone.callbackScheduled === true) { zone.hasPendingMicrotasks = true; } else { zone.hasPendingMicrotasks = false; } } function onEnter(zone) { zone._nesting++; if (zone.isStable) { zone.isStable = false; zone.onUnstable.emit(null); } } function onLeave(zone) { zone._nesting--; checkStable(zone); } function shouldBeIgnoredByZone(applyArgs) { return hasApplyArgsData(applyArgs, "__ignore_ng_zone__"); } function isSchedulerTick(applyArgs) { return hasApplyArgsData(applyArgs, "__scheduler_tick__"); } function hasApplyArgsData(applyArgs, key) { if (!Array.isArray(applyArgs)) { return false; } if (applyArgs.length !== 1) { return false; } return applyArgs[0]?.data?.[key] === true; } function getNgZone(ngZoneToUse = "zone.js", options) { if (ngZoneToUse === "noop") { return new NoopNgZone(); } if (ngZoneToUse === "zone.js") { return new NgZone(options); } return ngZoneToUse; } function inputFunction(initialValue, opts) { ngDevMode && assertInInjectionContext(input); return createInputSignal(initialValue, opts); } function inputRequiredFunction(opts) { ngDevMode && assertInInjectionContext(input); return createInputSignal(REQUIRED_UNSET_VALUE, opts); } function injectElementRef() { return createElementRef(getCurrentTNode(), getLView()); } function createElementRef(tNode, lView) { return new ElementRef(getNativeByTNode(tNode, lView)); } function unwrapElementRef(value) { return value instanceof ElementRef ? value.nativeElement : value; } function isSignal(value) { return typeof value === "function" && value[SIGNAL] !== void 0; } function signal(initialValue, options) { const signalFn = createSignal(initialValue, options?.equal); const node = signalFn[SIGNAL]; signalFn.set = (newValue) => signalSetFn(node, newValue); signalFn.update = (updateFn) => signalUpdateFn(node, updateFn); signalFn.asReadonly = signalAsReadonlyFn.bind(signalFn); if (ngDevMode) { signalFn.toString = () => `[Signal: ${signalFn()}]`; node.debugName = options?.debugName; } return signalFn; } function signalAsReadonlyFn() { const node = this[SIGNAL]; if (node.readonlyFn === void 0) { const readonlyFn = () => this(); readonlyFn[SIGNAL] = node; node.readonlyFn = readonlyFn; } return node.readonlyFn; } function isWritableSignal(value) { return isSignal(value) && typeof value.set === "function"; } function symbolIterator() { return this._results[Symbol.iterator](); } function hasInSkipHydrationBlockFlag(tNode) { return (tNode.flags & 128) === 128; } function getUniqueLViewId() { return uniqueIdCounter++; } function registerLView(lView) { ngDevMode && assertNumber(lView[ID], "LView must have an ID in order to be registered"); TRACKED_LVIEWS.set(lView[ID], lView); } function getLViewById(id) { ngDevMode && assertNumber(id, "ID used for LView lookup must be a number"); return TRACKED_LVIEWS.get(id) || null; } function unregisterLView(lView) { ngDevMode && assertNumber(lView[ID], "Cannot stop tracking an LView that does not have an ID"); TRACKED_LVIEWS.delete(lView[ID]); } function getTrackedLViews() { return TRACKED_LVIEWS; } function getLContext(target) { let mpValue = readPatchedData(target); if (mpValue) { if (isLView(mpValue)) { const lView = mpValue; let nodeIndex; let component = void 0; let directives = void 0; if (isComponentInstance(target)) { nodeIndex = findViaComponent(lView, target); if (nodeIndex == -1) { throw new Error("The provided component was not found in the application"); } component = target; } else if (isDirectiveInstance(target)) { nodeIndex = findViaDirective(lView, target); if (nodeIndex == -1) { throw new Error("The provided directive was not found in the application"); } directives = getDirectivesAtNodeIndex(nodeIndex, lView); } else { nodeIndex = findViaNativeElement(lView, target); if (nodeIndex == -1) { return null; } } const native = unwrapRNode(lView[nodeIndex]); const existingCtx = readPatchedData(native); const context2 = existingCtx && !Array.isArray(existingCtx) ? existingCtx : createLContext(lView, nodeIndex, native); if (component && context2.component === void 0) { context2.component = component; attachPatchData(context2.component, context2); } if (directives && context2.directives === void 0) { context2.directives = directives; for (let i = 0; i < directives.length; i++) { attachPatchData(directives[i], context2); } } attachPatchData(context2.native, context2); mpValue = context2; } } else { const rElement = target; ngDevMode && assertDomNode(rElement); let parent = rElement; while (parent = parent.parentNode) { const parentContext = readPatchedData(parent); if (parentContext) { const lView = Array.isArray(parentContext) ? parentContext : parentContext.lView; if (!lView) { return null; } const index = findViaNativeElement(lView, rElement); if (index>= 0) { const native = unwrapRNode(lView[index]); const context2 = createLContext(lView, index, native); attachPatchData(native, context2); mpValue = context2; break; } } } } return mpValue || null; } function createLContext(lView, nodeIndex, native) { return new LContext(lView[ID], nodeIndex, native); } function getComponentViewByInstance(componentInstance) { let patchedData = readPatchedData(componentInstance); let lView; if (isLView(patchedData)) { const contextLView = patchedData; const nodeIndex = findViaComponent(contextLView, componentInstance); lView = getComponentLViewByIndex(nodeIndex, contextLView); const context2 = createLContext(contextLView, nodeIndex, lView[HOST]); context2.component = componentInstance; attachPatchData(componentInstance, context2); attachPatchData(context2.native, context2); } else { const context2 = patchedData; const contextLView = context2.lView; ngDevMode && assertLView(contextLView); lView = getComponentLViewByIndex(context2.nodeIndex, contextLView); } return lView; } function attachPatchData(target, data) { ngDevMode && assertDefined(target, "Target expected"); if (isLView(data)) { target[MONKEY_PATCH_KEY_NAME] = data[ID]; registerLView(data); } else { target[MONKEY_PATCH_KEY_NAME] = data; } } function readPatchedData(target) { ngDevMode && assertDefined(target, "Target expected"); const data = target[MONKEY_PATCH_KEY_NAME]; return typeof data === "number" ? getLViewById(data) : data || null; } function readPatchedLView(target) { const value = readPatchedData(target); if (value) { return isLView(value) ? value : value.lView; } return null; } function isComponentInstance(instance) { return instance && instance.constructor && instance.constructor.\u0275cmp; } function isDirectiveInstance(instance) { return instance && instance.constructor && instance.constructor.\u0275dir; } function findViaNativeElement(lView, target) { const tView = lView[TVIEW]; for (let i = HEADER_OFFSET; i < tView.bindingStartIndex; i++) { if (unwrapRNode(lView[i]) === target) { return i; } } return -1; } function traverseNextElement(tNode) { if (tNode.child) { return tNode.child; } else if (tNode.next) { return tNode.next; } else { while (tNode.parent && !tNode.parent.next) { tNode = tNode.parent; } return tNode.parent && tNode.parent.next; } } function findViaComponent(lView, componentInstance) { const componentIndices = lView[TVIEW].components; if (componentIndices) { for (let i = 0; i < componentIndices.length; i++) { const elementComponentIndex = componentIndices[i]; const componentView = getComponentLViewByIndex(elementComponentIndex, lView); if (componentView[CONTEXT] === componentInstance) { return elementComponentIndex; } } } else { const rootComponentView = getComponentLViewByIndex(HEADER_OFFSET, lView); const rootComponent = rootComponentView[CONTEXT]; if (rootComponent === componentInstance) { return HEADER_OFFSET; } } return -1; } function findViaDirective(lView, directiveInstance) { let tNode = lView[TVIEW].firstChild; while (tNode) { const directiveIndexStart = tNode.directiveStart; const directiveIndexEnd = tNode.directiveEnd; for (let i = directiveIndexStart; i < directiveIndexEnd; i++) { if (lView[i] === directiveInstance) { return tNode.index; } } tNode = traverseNextElement(tNode); } return -1; } function getDirectivesAtNodeIndex(nodeIndex, lView) { const tNode = lView[TVIEW].data[nodeIndex]; if (tNode.directiveStart === 0) return EMPTY_ARRAY; const results = []; for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) { const directiveInstance = lView[i]; if (!isComponentInstance(directiveInstance)) { results.push(directiveInstance); } } return results; } function getComponentAtNodeIndex(nodeIndex, lView) { const tNode = lView[TVIEW].data[nodeIndex]; return isComponentHost(tNode) ? lView[tNode.directiveStart + tNode.componentOffset] : null; } function getRootView(componentOrLView) { ngDevMode && assertDefined(componentOrLView, "component"); let lView = isLView(componentOrLView) ? componentOrLView : readPatchedLView(componentOrLView); while (lView && !isRootView(lView)) { lView = getLViewParent(lView); } ngDevMode && assertLView(lView); return lView; } function getRootContext(viewOrComponent) { const rootView = getRootView(viewOrComponent); ngDevMode && assertDefined(rootView[CONTEXT], "Root view has no context. Perhaps it is disconnected?"); return rootView[CONTEXT]; } function getFirstLContainer(lView) { return getNearestLContainer(lView[CHILD_HEAD]); } function getNextLContainer(container) { return getNearestLContainer(container[NEXT]); } function getNearestLContainer(viewOrContainer) { while (viewOrContainer !== null && !isLContainer(viewOrContainer)) { viewOrContainer = viewOrContainer[NEXT]; } return viewOrContainer; } function getComponent(element) { ngDevMode && assertDomElement(element); const context2 = getLContext(element); if (context2 === null) return null; if (context2.component === void 0) { const lView = context2.lView; if (lView === null) { return null; } context2.component = getComponentAtNodeIndex(context2.nodeIndex, lView); } return context2.component; } function getContext(element) { assertDomElement(element); const context2 = getLContext(element); const lView = context2 ? context2.lView : null; return lView === null ? null : lView[CONTEXT]; } function getOwningComponent(elementOrDir) { const context2 = getLContext(elementOrDir); let lView = context2 ? context2.lView : null; if (lView === null) return null; let parent; while (lView[TVIEW].type === 2 && (parent = getLViewParent(lView))) { lView = parent; } return isRootView(lView) ? null : lView[CONTEXT]; } function getRootComponents(elementOrDir) { const lView = readPatchedLView(elementOrDir); return lView !== null ? [getRootContext(lView)] : []; } function getInjector(elementOrDir) { const context2 = getLContext(elementOrDir); const lView = context2 ? context2.lView : null; if (lView === null) return Injector.NULL; const tNode = lView[TVIEW].data[context2.nodeIndex]; return new NodeInjector(tNode, lView); } function getDirectives(node) { if (node instanceof Text) { return []; } const context2 = getLContext(node); const lView = context2 ? context2.lView : null; if (lView === null) { return []; } const tView = lView[TVIEW]; const nodeIndex = context2.nodeIndex; if (!tView?.data[nodeIndex]) { return []; } if (context2.directives === void 0) { context2.directives = getDirectivesAtNodeIndex(nodeIndex, lView); } return context2.directives === null ? [] : [...context2.directives]; } function getDirectiveMetadata1ドル(directiveOrComponentInstance) { const { constructor } = directiveOrComponentInstance; if (!constructor) { throw new Error("Unable to find the instance constructor"); } const componentDef = getComponentDef(constructor); if (componentDef) { const inputs = extractInputDebugMetadata(componentDef.inputs); return { inputs, outputs: componentDef.outputs, encapsulation: componentDef.encapsulation, changeDetection: componentDef.onPush ? ChangeDetectionStrategy.OnPush : ChangeDetectionStrategy.Default }; } const directiveDef = getDirectiveDef(constructor); if (directiveDef) { const inputs = extractInputDebugMetadata(directiveDef.inputs); return { inputs, outputs: directiveDef.outputs }; } return null; } function getHostElement(componentOrDirective) { return getLContext(componentOrDirective).native; } function getListeners(element) { ngDevMode && assertDomElement(element); const lContext = getLContext(element); const lView = lContext === null ? null : lContext.lView; if (lView === null) return []; const tView = lView[TVIEW]; const lCleanup = lView[CLEANUP]; const tCleanup = tView.cleanup; const listeners = []; if (tCleanup && lCleanup) { for (let i = 0; i < tCleanup.length; ) { const firstParam = tCleanup[i++]; const secondParam = tCleanup[i++]; if (typeof firstParam === "string") { const name = firstParam; const listenerElement = unwrapRNode(lView[secondParam]); const callback = lCleanup[tCleanup[i++]]; const useCaptureOrIndx = tCleanup[i++]; const type = typeof useCaptureOrIndx === "boolean" || useCaptureOrIndx>= 0 ? "dom" : "output"; const useCapture = typeof useCaptureOrIndx === "boolean" ? useCaptureOrIndx : false; if (element == listenerElement) { listeners.push({ element, name, callback, useCapture, type }); } } } } listeners.sort(sortListeners); return listeners; } function sortListeners(a, b) { if (a.name == b.name) return 0; return a.name < b.name ? -1 : 1; } function assertDomElement(value) { if (typeof Element !== "undefined" && !(value instanceof Element)) { throw new Error("Expecting instance of DOM Element"); } } function extractInputDebugMetadata(inputs) { const res = {}; for (const key in inputs) { if (inputs.hasOwnProperty(key)) { const value = inputs[key]; if (value !== void 0) { res[key] = value[0]; } } } return res; } function setDocument(document2) { DOCUMENT = document2; } function getDocument() { if (DOCUMENT !== void 0) { return DOCUMENT; } else if (typeof document !== "undefined") { return document; } throw new RuntimeError(210, (typeof ngDevMode === "undefined" || ngDevMode) && `The document object is not available in this context. Make sure the DOCUMENT injection token is provided.`); } function makeStateKey(key) { return key; } function initTransferState() { const transferState = new TransferState(); if (true) { transferState.store = retrieveTransferredState(getDocument(), inject(APP_ID)); } return transferState; } function retrieveTransferredState(doc, appId) { const script = doc.getElementById(appId + "-state"); if (script?.textContent) { try { return JSON.parse(script.textContent); } catch (e) { console.warn("Exception while restoring TransferState for app " + appId, e); } } return {}; } function performanceMarkFeature(feature) { if (markedFeatures.has(feature)) { return; } markedFeatures.add(feature); performance?.mark?.("mark_feature_usage", { detail: { feature } }); } function assertNotInReactiveContext(debugFn, extraContext) { if (getActiveConsumer() !== null) { throw new RuntimeError(-602, ngDevMode && `${debugFn.name}() cannot be called from within a reactive context.${extraContext ? ` ${extraContext}` : ""}`); } } function injectViewContext() { return new ViewContext(getLView(), getCurrentTNode()); } function afterRender(callbackOrSpec, options) { ngDevMode && assertNotInReactiveContext(afterRender, "Call `afterRender` outside of a reactive context. For example, schedule the render callback inside the component constructor`."); !options?.injector && assertInInjectionContext(afterRender); const injector = options?.injector ?? inject(Injector); if (false) { return NOOP_AFTER_RENDER_REF; } performanceMarkFeature("NgAfterRender"); return afterRenderImpl( callbackOrSpec, injector, options, /* once */ false ); } function afterNextRender(callbackOrSpec, options) { !options?.injector && assertInInjectionContext(afterNextRender); const injector = options?.injector ?? inject(Injector); if (false) { return NOOP_AFTER_RENDER_REF; } performanceMarkFeature("NgAfterNextRender"); return afterRenderImpl( callbackOrSpec, injector, options, /* once */ true ); } function getHooks(callbackOrSpec, phase) { if (callbackOrSpec instanceof Function) { const hooks = [void 0, void 0, void 0, void 0]; hooks[phase] = callbackOrSpec; return hooks; } else { return [callbackOrSpec.earlyRead, callbackOrSpec.write, callbackOrSpec.mixedReadWrite, callbackOrSpec.read]; } } function afterRenderImpl(callbackOrSpec, injector, options, once) { const manager = injector.get(AfterRenderManager); manager.impl ??= injector.get(AfterRenderImpl); const tracing = injector.get(TracingService, null, { optional: true }); const hooks = options?.phase ?? AfterRenderPhase.MixedReadWrite; const destroyRef = options?.manualCleanup !== true ? injector.get(DestroyRef) : null; const viewContext = injector.get(ViewContext, null, { optional: true }); const sequence = new AfterRenderSequence(manager.impl, getHooks(callbackOrSpec, hooks), viewContext?.view, once, destroyRef, tracing?.snapshot(null)); manager.impl.register(sequence); return sequence; } function storeTriggerCleanupFn(type, lDetails, cleanupFn) { const key = getCleanupFnKeyByType(type); if (lDetails[key] === null) { lDetails[key] = []; } lDetails[key].push(cleanupFn); } function invokeTriggerCleanupFns(type, lDetails) { const key = getCleanupFnKeyByType(type); const cleanupFns = lDetails[key]; if (cleanupFns !== null) { for (const cleanupFn of cleanupFns) { cleanupFn(); } lDetails[key] = null; } } function invokeAllTriggerCleanupFns(lDetails) { invokeTriggerCleanupFns(1, lDetails); invokeTriggerCleanupFns(0, lDetails); invokeTriggerCleanupFns(2, lDetails); } function getCleanupFnKeyByType(type) { let key = TRIGGER_CLEANUP_FNS; if (type === 1) { key = PREFETCH_TRIGGER_CLEANUP_FNS; } else if (type === 2) { key = HYDRATE_TRIGGER_CLEANUP_FNS; } return key; } function getDeferBlockDataIndex(deferBlockIndex) { return deferBlockIndex + 1; } function getLDeferBlockDetails(lView, tNode) { const tView = lView[TVIEW]; const slotIndex = getDeferBlockDataIndex(tNode.index); ngDevMode && assertIndexInDeclRange(tView, slotIndex); return lView[slotIndex]; } function setLDeferBlockDetails(lView, deferBlockIndex, lDetails) { const tView = lView[TVIEW]; const slotIndex = getDeferBlockDataIndex(deferBlockIndex); ngDevMode && assertIndexInDeclRange(tView, slotIndex); lView[slotIndex] = lDetails; } function getTDeferBlockDetails(tView, tNode) { const slotIndex = getDeferBlockDataIndex(tNode.index); ngDevMode && assertIndexInDeclRange(tView, slotIndex); return tView.data[slotIndex]; } function setTDeferBlockDetails(tView, deferBlockIndex, deferBlockConfig) { const slotIndex = getDeferBlockDataIndex(deferBlockIndex); ngDevMode && assertIndexInDeclRange(tView, slotIndex); tView.data[slotIndex] = deferBlockConfig; } function getTemplateIndexForState(newState, hostLView, tNode) { const tView = hostLView[TVIEW]; const tDetails = getTDeferBlockDetails(tView, tNode); switch (newState) { case DeferBlockState.Complete: return tDetails.primaryTmplIndex; case DeferBlockState.Loading: return tDetails.loadingTmplIndex; case DeferBlockState.Error: return tDetails.errorTmplIndex; case DeferBlockState.Placeholder: return tDetails.placeholderTmplIndex; default: ngDevMode && throwError2(`Unexpected defer block state: ${newState}`); return null; } } function getMinimumDurationForState(tDetails, currentState) { if (currentState === DeferBlockState.Placeholder) { return tDetails.placeholderBlockConfig?.[MINIMUM_SLOT] ?? null; } else if (currentState === DeferBlockState.Loading) { return tDetails.loadingBlockConfig?.[MINIMUM_SLOT] ?? null; } return null; } function getLoadingBlockAfter(tDetails) { return tDetails.loadingBlockConfig?.[LOADING_AFTER_SLOT] ?? null; } function addDepsToRegistry(currentDeps, newDeps) { if (!currentDeps || currentDeps.length === 0) { return newDeps; } const currentDepSet = new Set(currentDeps); for (const dep of newDeps) { currentDepSet.add(dep); } return currentDeps.length === currentDepSet.size ? currentDeps : Array.from(currentDepSet); } function getPrimaryBlockTNode(tView, tDetails) { const adjustedIndex = tDetails.primaryTmplIndex + HEADER_OFFSET; return getTNode(tView, adjustedIndex); } function assertDeferredDependenciesLoaded(tDetails) { assertEqual(tDetails.loadingState, DeferDependenciesLoadingState.COMPLETE, "Expecting all deferred dependencies to be loaded."); } function isTDeferBlockDetails(value) { return value !== null && typeof value === "object" && typeof value.primaryTmplIndex === "number"; } function trackTriggerForDebugging(tView, tNode, textRepresentation) { const tDetails = getTDeferBlockDetails(tView, tNode); tDetails.debug ??= {}; tDetails.debug.triggers ??= /* @__PURE__ */ new Set(); tDetails.debug.triggers.add(textRepresentation); } function onInteraction(trigger, callback) { let entry = interactionTriggers.get(trigger); if (!entry) { entry = new DeferEventEntry(); interactionTriggers.set(trigger, entry); for (const name of interactionEventNames) { trigger.addEventListener(name, entry.listener, eventListenerOptions); } } entry.callbacks.add(callback); return () => { const { callbacks, listener } = entry; callbacks.delete(callback); if (callbacks.size === 0) { interactionTriggers.delete(trigger); for (const name of interactionEventNames) { trigger.removeEventListener(name, listener, eventListenerOptions); } } }; } function onHover(trigger, callback) { let entry = hoverTriggers.get(trigger); if (!entry) { entry = new DeferEventEntry(); hoverTriggers.set(trigger, entry); for (const name of hoverEventNames) { trigger.addEventListener(name, entry.listener, eventListenerOptions); } } entry.callbacks.add(callback); return () => { const { callbacks, listener } = entry; callbacks.delete(callback); if (callbacks.size === 0) { for (const name of hoverEventNames) { trigger.removeEventListener(name, listener, eventListenerOptions); } hoverTriggers.delete(trigger); } }; } function onViewport(trigger, callback, injector) { const ngZone = injector.get(NgZone); let entry = viewportTriggers.get(trigger); intersectionObserver = intersectionObserver || ngZone.runOutsideAngular(() => { return new IntersectionObserver((entries) => { for (const current of entries) { if (current.isIntersecting && viewportTriggers.has(current.target)) { ngZone.run(viewportTriggers.get(current.target).listener); } } }); }); if (!entry) { entry = new DeferEventEntry(); ngZone.runOutsideAngular(() => intersectionObserver.observe(trigger)); viewportTriggers.set(trigger, entry); observedViewportElements++; } entry.callbacks.add(callback); return () => { if (!viewportTriggers.has(trigger)) { return; } entry.callbacks.delete(callback); if (entry.callbacks.size === 0) { intersectionObserver?.unobserve(trigger); viewportTriggers.delete(trigger); observedViewportElements--; } if (observedViewportElements === 0) { intersectionObserver?.disconnect(); intersectionObserver = null; } }; } function getTriggerLView(deferredHostLView, deferredTNode, walkUpTimes) { if (walkUpTimes == null) { return deferredHostLView; } if (walkUpTimes>= 0) { return walkUpViews(walkUpTimes, deferredHostLView); } const deferredContainer = deferredHostLView[deferredTNode.index]; ngDevMode && assertLContainer(deferredContainer); const triggerLView = deferredContainer[CONTAINER_HEADER_OFFSET] ?? null; if (ngDevMode && triggerLView !== null) { const lDetails = getLDeferBlockDetails(deferredHostLView, deferredTNode); const renderedState = lDetails[DEFER_BLOCK_STATE]; assertEqual(renderedState, DeferBlockState.Placeholder, "Expected a placeholder to be rendered in this defer block."); assertLView(triggerLView); } return triggerLView; } function getTriggerElement(triggerLView, triggerIndex) { const element = getNativeByIndex(HEADER_OFFSET + triggerIndex, triggerLView); ngDevMode && assertElement(element); return element; } function registerDomTrigger(initialLView, tNode, triggerIndex, walkUpTimes, registerFn, callback, type) { const injector = initialLView[INJECTOR]; const zone = injector.get(NgZone); let poll; function pollDomTrigger() { if (isDestroyed(initialLView)) { poll.destroy(); return; } const lDetails = getLDeferBlockDetails(initialLView, tNode); const renderedState = lDetails[DEFER_BLOCK_STATE]; if (renderedState !== DeferBlockInternalState.Initial && renderedState !== DeferBlockState.Placeholder) { poll.destroy(); return; } const triggerLView = getTriggerLView(initialLView, tNode, walkUpTimes); if (!triggerLView) { return; } poll.destroy(); if (isDestroyed(triggerLView)) { return; } const element = getTriggerElement(triggerLView, triggerIndex); const cleanup = registerFn(element, () => { zone.run(() => { if (initialLView !== triggerLView) { removeLViewOnDestroy(triggerLView, cleanup); } callback(); }); }, injector); if (initialLView !== triggerLView) { storeLViewOnDestroy(triggerLView, cleanup); } storeTriggerCleanupFn(type, lDetails, cleanup); } poll = afterRender({ read: pollDomTrigger }, { injector }); } function stashEventListenerImpl(lView, target, eventName, listenerFn) { _stashEventListenerImpl(lView, target, eventName, listenerFn); } function retrieveHydrationInfo(rNode, injector, isRootView2 = false) { return _retrieveHydrationInfoImpl(rNode, injector, isRootView2); } function getLNodeForHydration(viewRef) { let lView = viewRef._lView; const tView = lView[TVIEW]; if (tView.type === 2) { return null; } if (isRootView(lView)) { lView = lView[HEADER_OFFSET]; } return lView; } function patchHydrationInfo(node, info) { node[HYDRATION_INFO_KEY] = info; } function markRNodeAsHavingHydrationMismatch(node, expectedNodeDetails = null, actualNodeDetails = null) { if (!ngDevMode) { throw new Error("Calling `markRNodeAsMismatchedByHydration` in prod mode is not supported and likely a mistake."); } while (node && !getComponent(node)) { node = node?.parentNode; } if (node) { patchHydrationInfo(node, { status: HydrationStatus.Mismatched, expectedNodeDetails, actualNodeDetails }); } } function isIncrementalHydrationEnabled(injector) { return injector.get(IS_INCREMENTAL_HYDRATION_ENABLED, false, { optional: true }); } function assertIncrementalHydrationIsConfigured(injector) { if (!isIncrementalHydrationEnabled(injector)) { throw new RuntimeError(508, "Angular has detected that some `@defer` blocks use `hydrate` triggers, but incremental hydration was not enabled. Please ensure that the `withIncrementalHydration()` call is added as an argument for the `provideClientHydration()` function call in your application config."); } } function assertSsrIdDefined(ssrUniqueId) { assertDefined(ssrUniqueId, "Internal error: expecting an SSR id for a defer block that should be hydrated, but the id is not present"); } function getParentBlockHydrationQueue(deferBlockId, injector) { const dehydratedBlockRegistry = injector.get(DEHYDRATED_BLOCK_REGISTRY); const transferState = injector.get(TransferState); const deferBlockParents = transferState.get(NGH_DEFER_BLOCKS_KEY, {}); let isTopMostDeferBlock = false; let currentBlockId = deferBlockId; let parentBlockPromise = null; const hydrationQueue = []; while (!isTopMostDeferBlock && currentBlockId) { ngDevMode && assertEqual(hydrationQueue.indexOf(currentBlockId), -1, "Internal error: defer block hierarchy has a cycle."); isTopMostDeferBlock = dehydratedBlockRegistry.has(currentBlockId); const hydratingParentBlock = dehydratedBlockRegistry.hydrating.get(currentBlockId); if (parentBlockPromise === null && hydratingParentBlock != null) { parentBlockPromise = hydratingParentBlock.promise; break; } hydrationQueue.unshift(currentBlockId); currentBlockId = deferBlockParents[currentBlockId][DEFER_PARENT_BLOCK_ID]; } return { parentBlockPromise, hydrationQueue }; } function refreshContentQueries(tView, lView) { const contentQueries = tView.contentQueries; if (contentQueries !== null) { const prevConsumer = setActiveConsumer(null); try { for (let i = 0; i < contentQueries.length; i += 2) { const queryStartIdx = contentQueries[i]; const directiveDefIdx = contentQueries[i + 1]; if (directiveDefIdx !== -1) { const directiveDef = tView.data[directiveDefIdx]; ngDevMode && assertDefined(directiveDef, "DirectiveDef not found."); ngDevMode && assertDefined(directiveDef.contentQueries, "contentQueries function should be defined"); setCurrentQueryIndex(queryStartIdx); directiveDef.contentQueries(2, lView[directiveDefIdx], directiveDefIdx); } } } finally { setActiveConsumer(prevConsumer); } } } function executeViewQueryFn(flags, viewQueryFn, component) { ngDevMode && assertDefined(viewQueryFn, "View queries function to execute must be defined."); setCurrentQueryIndex(0); const prevConsumer = setActiveConsumer(null); try { viewQueryFn(flags, component); } finally { setActiveConsumer(prevConsumer); } } function executeContentQueries(tView, tNode, lView) { if (isContentQueryHost(tNode)) { const prevConsumer = setActiveConsumer(null); try { const start = tNode.directiveStart; const end = tNode.directiveEnd; for (let directiveIndex = start; directiveIndex < end; directiveIndex++) { const def = tView.data[directiveIndex]; if (def.contentQueries) { const directiveInstance = lView[directiveIndex]; ngDevMode && assertDefined(directiveIndex, "Incorrect reference to a directive defining a content query"); def.contentQueries(1, directiveInstance, directiveIndex); } } } finally { setActiveConsumer(prevConsumer); } } } function getPolicy1ドル() { if (policy1ドル === void 0) { policy1ドル = null; if (_global.trustedTypes) { try { policy1ドル = _global.trustedTypes.createPolicy("angular", { createHTML: (s) => s, createScript: (s) => s, createScriptURL: (s) => s }); } catch { } } } return policy1ドル; } function trustedHTMLFromString(html) { return getPolicy1ドル()?.createHTML(html) || html; } function trustedScriptURLFromString(url) { return getPolicy1ドル()?.createScriptURL(url) || url; } function getPolicy() { if (policy === void 0) { policy = null; if (_global.trustedTypes) { try { policy = _global.trustedTypes.createPolicy("angular#unsafe-bypass", { createHTML: (s) => s, createScript: (s) => s, createScriptURL: (s) => s }); } catch { } } } return policy; } function trustedHTMLFromStringBypass(html) { return getPolicy()?.createHTML(html) || html; } function trustedScriptFromStringBypass(script) { return getPolicy()?.createScript(script) || script; } function trustedScriptURLFromStringBypass(url) { return getPolicy()?.createScriptURL(url) || url; } function unwrapSafeValue(value) { return value instanceof SafeValueImpl ? value.changingThisBreaksApplicationSecurity : value; } function allowSanitizationBypassAndThrow(value, type) { const actualType = getSanitizationBypassType(value); if (actualType != null && actualType !== type) { if (actualType === "ResourceURL" && type === "URL") return true; throw new Error(`Required a safe ${type}, got a ${actualType} (see ${XSS_SECURITY_URL})`); } return actualType === type; } function getSanitizationBypassType(value) { return value instanceof SafeValueImpl && value.getTypeName() || null; } function bypassSanitizationTrustHtml(trustedHtml) { return new SafeHtmlImpl(trustedHtml); } function bypassSanitizationTrustStyle(trustedStyle) { return new SafeStyleImpl(trustedStyle); } function bypassSanitizationTrustScript(trustedScript) { return new SafeScriptImpl(trustedScript); } function bypassSanitizationTrustUrl(trustedUrl) { return new SafeUrlImpl(trustedUrl); } function bypassSanitizationTrustResourceUrl(trustedResourceUrl) { return new SafeResourceUrlImpl(trustedResourceUrl); } function getInertBodyHelper(defaultDoc) { const inertDocumentHelper = new InertDocumentHelper(defaultDoc); return isDOMParserAvailable() ? new DOMParserHelper(inertDocumentHelper) : inertDocumentHelper; } function isDOMParserAvailable() { try { return !!new window.DOMParser().parseFromString(trustedHTMLFromString(""), "text/html"); } catch { return false; } } function _sanitizeUrl(url) { url = String(url); if (url.match(SAFE_URL_PATTERN)) return url; if (typeof ngDevMode === "undefined" || ngDevMode) { console.warn(`WARNING: sanitizing unsafe URL value ${url} (see ${XSS_SECURITY_URL})`); } return "unsafe:" + url; } function tagSet(tags) { const res = {}; for (const t of tags.split(",")) res[t] = true; return res; } function merge2(...sets) { const res = {}; for (const s of sets) { for (const v in s) { if (s.hasOwnProperty(v)) res[v] = true; } } return res; } function isClobberedElement(parentNode, childNode) { return (parentNode.compareDocumentPosition(childNode) & Node.DOCUMENT_POSITION_CONTAINED_BY) !== Node.DOCUMENT_POSITION_CONTAINED_BY; } function getNextSibling(node) { const nextSibling = node.nextSibling; if (nextSibling && node !== nextSibling.previousSibling) { throw clobberedElementError(nextSibling); } return nextSibling; } function getFirstChild(node) { const firstChild = node.firstChild; if (firstChild && isClobberedElement(node, firstChild)) { throw clobberedElementError(firstChild); } return firstChild; } function getNodeName(node) { const nodeName = node.nodeName; return typeof nodeName === "string" ? nodeName : "FORM"; } function clobberedElementError(node) { return new Error(`Failed to sanitize html because the element is clobbered: ${node.outerHTML}`); } function encodeEntities(value) { return value.replace(/&/g, "&").replace(SURROGATE_PAIR_REGEXP, function(match) { const hi = match.charCodeAt(0); const low = match.charCodeAt(1); return "&#" + ((hi - 55296) * 1024 + (low - 56320) + 65536) + ";"; }).replace(NON_ALPHANUMERIC_REGEXP, function(match) { return "&#" + match.charCodeAt(0) + ";"; }).replace(//g, ">"); } function _sanitizeHtml(defaultDoc, unsafeHtmlInput) { let inertBodyElement = null; try { inertBodyHelper = inertBodyHelper || getInertBodyHelper(defaultDoc); let unsafeHtml = unsafeHtmlInput ? String(unsafeHtmlInput) : ""; inertBodyElement = inertBodyHelper.getInertBodyElement(unsafeHtml); let mXSSAttempts = 5; let parsedHtml = unsafeHtml; do { if (mXSSAttempts === 0) { throw new Error("Failed to sanitize html because the input is unstable"); } mXSSAttempts--; unsafeHtml = parsedHtml; parsedHtml = inertBodyElement.innerHTML; inertBodyElement = inertBodyHelper.getInertBodyElement(unsafeHtml); } while (unsafeHtml !== parsedHtml); const sanitizer = new SanitizingHtmlSerializer(); const safeHtml = sanitizer.sanitizeChildren(getTemplateContent(inertBodyElement) || inertBodyElement); if ((typeof ngDevMode === "undefined" || ngDevMode) && sanitizer.sanitizedSomething) { console.warn(`WARNING: sanitizing HTML stripped some content, see ${XSS_SECURITY_URL}`); } return trustedHTMLFromString(safeHtml); } finally { if (inertBodyElement) { const parent = getTemplateContent(inertBodyElement) || inertBodyElement; while (parent.firstChild) { parent.firstChild.remove(); } } } } function getTemplateContent(el) { return "content" in el && isTemplateElement(el) ? el.content : null; } function isTemplateElement(el) { return el.nodeType === Node.ELEMENT_NODE && el.nodeName === "TEMPLATE"; } function \u0275\u0275sanitizeHtml(unsafeHtml) { const sanitizer = getSanitizer(); if (sanitizer) { return trustedHTMLFromStringBypass(sanitizer.sanitize(SecurityContext.HTML, unsafeHtml) || ""); } if (allowSanitizationBypassAndThrow( unsafeHtml, "HTML" /* BypassType.Html */ )) { return trustedHTMLFromStringBypass(unwrapSafeValue(unsafeHtml)); } return _sanitizeHtml(getDocument(), renderStringify(unsafeHtml)); } function \u0275\u0275sanitizeStyle(unsafeStyle) { const sanitizer = getSanitizer(); if (sanitizer) { return sanitizer.sanitize(SecurityContext.STYLE, unsafeStyle) || ""; } if (allowSanitizationBypassAndThrow( unsafeStyle, "Style" /* BypassType.Style */ )) { return unwrapSafeValue(unsafeStyle); } return renderStringify(unsafeStyle); } function \u0275\u0275sanitizeUrl(unsafeUrl) { const sanitizer = getSanitizer(); if (sanitizer) { return sanitizer.sanitize(SecurityContext.URL, unsafeUrl) || ""; } if (allowSanitizationBypassAndThrow( unsafeUrl, "URL" /* BypassType.Url */ )) { return unwrapSafeValue(unsafeUrl); } return _sanitizeUrl(renderStringify(unsafeUrl)); } function \u0275\u0275sanitizeResourceUrl(unsafeResourceUrl) { const sanitizer = getSanitizer(); if (sanitizer) { return trustedScriptURLFromStringBypass(sanitizer.sanitize(SecurityContext.RESOURCE_URL, unsafeResourceUrl) || ""); } if (allowSanitizationBypassAndThrow( unsafeResourceUrl, "ResourceURL" /* BypassType.ResourceUrl */ )) { return trustedScriptURLFromStringBypass(unwrapSafeValue(unsafeResourceUrl)); } throw new RuntimeError(904, ngDevMode && `unsafe value used in a resource URL context (see ${XSS_SECURITY_URL})`); } function \u0275\u0275sanitizeScript(unsafeScript) { const sanitizer = getSanitizer(); if (sanitizer) { return trustedScriptFromStringBypass(sanitizer.sanitize(SecurityContext.SCRIPT, unsafeScript) || ""); } if (allowSanitizationBypassAndThrow( unsafeScript, "Script" /* BypassType.Script */ )) { return trustedScriptFromStringBypass(unwrapSafeValue(unsafeScript)); } throw new RuntimeError(905, ngDevMode && "unsafe value used in a script context"); } function \u0275\u0275trustConstantHtml(html) { if (ngDevMode && (!Array.isArray(html) || !Array.isArray(html.raw) || html.length !== 1)) { throw new Error(`Unexpected interpolation in trusted HTML constant: ${html.join("?")}`); } return trustedHTMLFromString(html[0]); } function \u0275\u0275trustConstantResourceUrl(url) { if (ngDevMode && (!Array.isArray(url) || !Array.isArray(url.raw) || url.length !== 1)) { throw new Error(`Unexpected interpolation in trusted URL constant: ${url.join("?")}`); } return trustedScriptURLFromString(url[0]); } function getUrlSanitizer(tag, prop) { if (prop === "src" && (tag === "embed" || tag === "frame" || tag === "iframe" || tag === "media" || tag === "script") || prop === "href" && (tag === "base" || tag === "link")) { return \u0275\u0275sanitizeResourceUrl; } return \u0275\u0275sanitizeUrl; } function \u0275\u0275sanitizeUrlOrResourceUrl(unsafeUrl, tag, prop) { return getUrlSanitizer(tag, prop)(unsafeUrl); } function validateAgainstEventProperties(name) { if (name.toLowerCase().startsWith("on")) { const errorMessage = `Binding to event property '${name}' is disallowed for security reasons, please use (${name.slice(2)})=... If '${name}' is a directive input, make sure the directive is imported by the current module.`; throw new RuntimeError(306, errorMessage); } } function validateAgainstEventAttributes(name) { if (name.toLowerCase().startsWith("on")) { const errorMessage = `Binding to event attribute '${name}' is disallowed for security reasons, please use (${name.slice(2)})=...`; throw new RuntimeError(306, errorMessage); } } function getSanitizer() { const lView = getLView(); return lView && lView[ENVIRONMENT].sanitizer; } function escapeCommentText(value) { return value.replace(COMMENT_DISALLOWED, (text) => text.replace(COMMENT_DELIMITER, COMMENT_DELIMITER_ESCAPED)); } function normalizeDebugBindingName(name) { name = camelCaseToDashCase(name.replace(/[$@]/g, "_")); return `ng-reflect-${name}`; } function camelCaseToDashCase(input2) { return input2.replace(CAMEL_CASE_REGEXP, (...m) => "-" + m[1].toLowerCase()); } function normalizeDebugBindingValue(value) { try { return value != null ? value.toString().slice(0, 30) : value; } catch (e) { return "[ERROR] Exception while trying to serialize the value"; } } function validateElementIsKnown(element, lView, tagName, schemas, hasDirectives) { if (schemas === null) return; if (!hasDirectives && tagName !== null) { const isUnknown = ( // Note that we can't check for `typeof HTMLUnknownElement === 'function'` because // Domino doesn't expose HTMLUnknownElement globally. typeof HTMLUnknownElement !== "undefined" && HTMLUnknownElement && element instanceof HTMLUnknownElement || typeof customElements !== "undefined" && tagName.indexOf("-")> -1 && !customElements.get(tagName) ); if (isUnknown && !matchingSchemas(schemas, tagName)) { const isHostStandalone = isHostComponentStandalone(lView); const templateLocation = getTemplateLocationDetails(lView); const schemas2 = `'${isHostStandalone ? "@Component" : "@NgModule"}.schemas'`; let message = `'${tagName}' is not a known element${templateLocation}: `; message += `1. If '${tagName}' is an Angular component, then verify that it is ${isHostStandalone ? "included in the '@Component.imports' of this component" : "a part of an @NgModule where this component is declared"}. `; if (tagName && tagName.indexOf("-")> -1) { message += `2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas2} of this component to suppress this message.`; } else { message += `2. To allow any element add 'NO_ERRORS_SCHEMA' to the ${schemas2} of this component.`; } if (shouldThrowErrorOnUnknownElement) { throw new RuntimeError(304, message); } else { console.error(formatRuntimeError(304, message)); } } } } function isPropertyValid(element, propName, tagName, schemas) { if (schemas === null) return true; if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) { return true; } return typeof Node === "undefined" || Node === null || !(element instanceof Node); } function handleUnknownPropertyError(propName, tagName, nodeType, lView) { if (!tagName && nodeType === 4) { tagName = "ng-template"; } const isHostStandalone = isHostComponentStandalone(lView); const templateLocation = getTemplateLocationDetails(lView); let message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'${templateLocation}.`; const schemas = `'${isHostStandalone ? "@Component" : "@NgModule"}.schemas'`; const importLocation = isHostStandalone ? "included in the '@Component.imports' of this component" : "a part of an @NgModule where this component is declared"; if (KNOWN_CONTROL_FLOW_DIRECTIVES.has(propName)) { const correspondingImport = KNOWN_CONTROL_FLOW_DIRECTIVES.get(propName); message += ` If the '${propName}' is an Angular control flow directive, please make sure that either the '${correspondingImport}' directive or the 'CommonModule' is ${importLocation}.`; } else { message += ` 1. If '${tagName}' is an Angular component and it has the '${propName}' input, then verify that it is ${importLocation}.`; if (tagName && tagName.indexOf("-")> -1) { message += ` 2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas} of this component to suppress this message.`; message += ` 3. To allow any property add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`; } else { message += ` 2. To allow any property add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`; } } reportUnknownPropertyError(message); } function reportUnknownPropertyError(message) { if (shouldThrowErrorOnUnknownProperty) { throw new RuntimeError(303, message); } else { console.error(formatRuntimeError(303, message)); } } function getDeclarationComponentDef(lView) { !ngDevMode && throwError2("Must never be called in production mode"); const declarationLView = lView[DECLARATION_COMPONENT_VIEW]; const context2 = declarationLView[CONTEXT]; if (!context2) return null; return context2.constructor ? getComponentDef(context2.constructor) : null; } function isHostComponentStandalone(lView) { !ngDevMode && throwError2("Must never be called in production mode"); const componentDef = getDeclarationComponentDef(lView); return !!componentDef?.standalone; } function getTemplateLocationDetails(lView) { !ngDevMode && throwError2("Must never be called in production mode"); const hostComponentDef = getDeclarationComponentDef(lView); const componentClassName = hostComponentDef?.type?.name; return componentClassName ? ` (used in the '${componentClassName}' component template)` : ""; } function matchingSchemas(schemas, tagName) { if (schemas !== null) { for (let i = 0; i < schemas.length; i++) { const schema = schemas[i]; if (schema === NO_ERRORS_SCHEMA || schema === CUSTOM_ELEMENTS_SCHEMA && tagName && tagName.indexOf("-")> -1) { return true; } } } return false; } function \u0275\u0275resolveWindow(element) { return element.ownerDocument.defaultView; } function \u0275\u0275resolveDocument(element) { return element.ownerDocument; } function \u0275\u0275resolveBody(element) { return element.ownerDocument.body; } function maybeUnwrapFn(value) { if (value instanceof Function) { return value(); } else { return value; } } function assertStandaloneComponentType(type) { assertComponentDef(type); const componentDef = getComponentDef(type); if (!componentDef.standalone) { throw new RuntimeError(907, `The ${stringifyForError(type)} component is not marked as standalone, but Angular expects to have a standalone component here. Please make sure the ${stringifyForError(type)} component has the \`standalone: true\` flag in the decorator.`); } } function assertComponentDef(type) { if (!getComponentDef(type)) { throw new RuntimeError(906, `The ${stringifyForError(type)} is not an Angular component, make sure it has the \`@Component\` decorator.`); } } function throwMultipleComponentError(tNode, first2, second) { throw new RuntimeError(-300, `Multiple components match node with tagname ${tNode.value}: ${stringifyForError(first2)} and ${stringifyForError(second)}`); } function throwErrorIfNoChangesMode(creationMode, oldValue, currValue, propName, lView) { const hostComponentDef = getDeclarationComponentDef(lView); const componentClassName = hostComponentDef?.type?.name; const field = propName ? ` for '${propName}'` : ""; let msg = `ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value${field}: '${formatValue(oldValue)}'. Current value: '${formatValue(currValue)}'.${componentClassName ? ` Expression location: ${componentClassName} component` : ""}`; if (creationMode) { msg += ` It seems like the view has been created after its parent and its children have been dirty checked. Has it been created in a change detection hook?`; } throw new RuntimeError(-100, msg); } function formatValue(value) { let strValue = String(value); try { if (Array.isArray(value) || strValue === "[object Object]") { strValue = JSON.stringify(value); } } catch (error) { } return strValue.length> VALUE_STRING_LENGTH_LIMIT ? strValue.substring(0, VALUE_STRING_LENGTH_LIMIT) + "\u2026" : strValue; } function constructDetailsForInterpolation(lView, rootIndex, expressionIndex, meta, changedValue) { const [propName, prefix, ...chunks] = meta.split(INTERPOLATION_DELIMITER); let oldValue = prefix, newValue = prefix; for (let i = 0; i < chunks.length; i++) { const slotIdx = rootIndex + i; oldValue += `${lView[slotIdx]}${chunks[i]}`; newValue += `${slotIdx === expressionIndex ? changedValue : lView[slotIdx]}${chunks[i]}`; } return { propName, oldValue, newValue }; } function getExpressionChangedErrorDetails(lView, bindingIndex, oldValue, newValue) { const tData = lView[TVIEW].data; const metadata = tData[bindingIndex]; if (typeof metadata === "string") { if (metadata.indexOf(INTERPOLATION_DELIMITER)> -1) { return constructDetailsForInterpolation(lView, bindingIndex, bindingIndex, metadata, newValue); } return { propName: metadata, oldValue, newValue }; } if (metadata === null) { let idx = bindingIndex - 1; while (typeof tData[idx] !== "string" && tData[idx + 1] === null) { idx--; } const meta = tData[idx]; if (typeof meta === "string") { const matches = meta.match(new RegExp(INTERPOLATION_DELIMITER, "g")); if (matches && matches.length - 1> bindingIndex - idx) { return constructDetailsForInterpolation(lView, idx, bindingIndex, meta, newValue); } } } return { propName: void 0, oldValue, newValue }; } function classIndexOf(className, classToSearch, startingIndex) { ngDevMode && assertNotEqual(classToSearch, "", 'can not look for "" string.'); let end = className.length; while (true) { const foundIndex = className.indexOf(classToSearch, startingIndex); if (foundIndex === -1) return foundIndex; if (foundIndex === 0 || className.charCodeAt(foundIndex - 1) <= 32) { const length = classToSearch.length; if (foundIndex + length === end || className.charCodeAt(foundIndex + length) <= 32) { return foundIndex; } } startingIndex = foundIndex + 1; } } function isCssClassMatching(tNode, attrs, cssClassToMatch, isProjectionMode) { ngDevMode && assertEqual(cssClassToMatch, cssClassToMatch.toLowerCase(), "Class name expected to be lowercase."); let i = 0; if (isProjectionMode) { for (; i < attrs.length && typeof attrs[i] === "string"; i += 2) { if (attrs[i] === "class" && classIndexOf(attrs[i + 1].toLowerCase(), cssClassToMatch, 0) !== -1) { return true; } } } else if (isInlineTemplate(tNode)) { return false; } i = attrs.indexOf(1, i); if (i> -1) { let item; while (++i < attrs.length && typeof (item = attrs[i]) === "string") { if (item.toLowerCase() === cssClassToMatch) { return true; } } } return false; } function isInlineTemplate(tNode) { return tNode.type === 4 && tNode.value !== NG_TEMPLATE_SELECTOR; } function hasTagAndTypeMatch(tNode, currentSelector, isProjectionMode) { const tagNameToCompare = tNode.type === 4 && !isProjectionMode ? NG_TEMPLATE_SELECTOR : tNode.value; return currentSelector === tagNameToCompare; } function isNodeMatchingSelector(tNode, selector, isProjectionMode) { ngDevMode && assertDefined(selector[0], "Selector should have a tag name"); let mode = 4; const nodeAttrs = tNode.attrs; const nameOnlyMarkerIdx = nodeAttrs !== null ? getNameOnlyMarkerIndex(nodeAttrs) : 0; let skipToNextSelector = false; for (let i = 0; i < selector.length; i++) { const current = selector[i]; if (typeof current === "number") { if (!skipToNextSelector && !isPositive(mode) && !isPositive(current)) { return false; } if (skipToNextSelector && isPositive(current)) continue; skipToNextSelector = false; mode = current | mode & 1; continue; } if (skipToNextSelector) continue; if (mode & 4) { mode = 2 | mode & 1; if (current !== "" && !hasTagAndTypeMatch(tNode, current, isProjectionMode) || current === "" && selector.length === 1) { if (isPositive(mode)) return false; skipToNextSelector = true; } } else if (mode & 8) { if (nodeAttrs === null || !isCssClassMatching(tNode, nodeAttrs, current, isProjectionMode)) { if (isPositive(mode)) return false; skipToNextSelector = true; } } else { const selectorAttrValue = selector[++i]; const attrIndexInNode = findAttrIndexInNode(current, nodeAttrs, isInlineTemplate(tNode), isProjectionMode); if (attrIndexInNode === -1) { if (isPositive(mode)) return false; skipToNextSelector = true; continue; } if (selectorAttrValue !== "") { let nodeAttrValue; if (attrIndexInNode> nameOnlyMarkerIdx) { nodeAttrValue = ""; } else { ngDevMode && assertNotEqual(nodeAttrs[attrIndexInNode], 0, "We do not match directives on namespaced attributes"); nodeAttrValue = nodeAttrs[attrIndexInNode + 1].toLowerCase(); } if (mode & 2 && selectorAttrValue !== nodeAttrValue) { if (isPositive(mode)) return false; skipToNextSelector = true; } } } } return isPositive(mode) || skipToNextSelector; } function isPositive(mode) { return (mode & 1) === 0; } function findAttrIndexInNode(name, attrs, isInlineTemplate2, isProjectionMode) { if (attrs === null) return -1; let i = 0; if (isProjectionMode || !isInlineTemplate2) { let bindingsMode = false; while (i < attrs.length) { const maybeAttrName = attrs[i]; if (maybeAttrName === name) { return i; } else if (maybeAttrName === 3 || maybeAttrName === 6) { bindingsMode = true; } else if (maybeAttrName === 1 || maybeAttrName === 2) { let value = attrs[++i]; while (typeof value === "string") { value = attrs[++i]; } continue; } else if (maybeAttrName === 4) { break; } else if (maybeAttrName === 0) { i += 4; continue; } i += bindingsMode ? 1 : 2; } return -1; } else { return matchTemplateAttribute(attrs, name); } } function isNodeMatchingSelectorList(tNode, selector, isProjectionMode = false) { for (let i = 0; i < selector.length; i++) { if (isNodeMatchingSelector(tNode, selector[i], isProjectionMode)) { return true; } } return false; } function getProjectAsAttrValue(tNode) { const nodeAttrs = tNode.attrs; if (nodeAttrs != null) { const ngProjectAsAttrIdx = nodeAttrs.indexOf( 5 /* AttributeMarker.ProjectAs */ ); if ((ngProjectAsAttrIdx & 1) === 0) { return nodeAttrs[ngProjectAsAttrIdx + 1]; } } return null; } function getNameOnlyMarkerIndex(nodeAttrs) { for (let i = 0; i < nodeAttrs.length; i++) { const nodeAttr = nodeAttrs[i]; if (isNameOnlyAttributeMarker(nodeAttr)) { return i; } } return nodeAttrs.length; } function matchTemplateAttribute(attrs, name) { let i = attrs.indexOf( 4 /* AttributeMarker.Template */ ); if (i> -1) { i++; while (i < attrs.length) { const attr = attrs[i]; if (typeof attr === "number") return -1; if (attr === name) return i; i++; } } return -1; } function isSelectorInSelectorList(selector, list) { selectorListLoop: for (let i = 0; i < list.length; i++) { const currentSelectorInList = list[i]; if (selector.length !== currentSelectorInList.length) { continue; } for (let j = 0; j < selector.length; j++) { if (selector[j] !== currentSelectorInList[j]) { continue selectorListLoop; } } return true; } return false; } function maybeWrapInNotSelector(isNegativeMode, chunk) { return isNegativeMode ? ":not(" + chunk.trim() + ")" : chunk; } function stringifyCSSSelector(selector) { let result = selector[0]; let i = 1; let mode = 2; let currentChunk = ""; let isNegativeMode = false; while (i < selector.length) { let valueOrMarker = selector[i]; if (typeof valueOrMarker === "string") { if (mode & 2) { const attrValue = selector[++i]; currentChunk += "[" + valueOrMarker + (attrValue.length> 0 ? '="' + attrValue + '"' : "") + "]"; } else if (mode & 8) { currentChunk += "." + valueOrMarker; } else if (mode & 4) { currentChunk += " " + valueOrMarker; } } else { if (currentChunk !== "" && !isPositive(valueOrMarker)) { result += maybeWrapInNotSelector(isNegativeMode, currentChunk); currentChunk = ""; } mode = valueOrMarker; isNegativeMode = isNegativeMode || !isPositive(mode); } i++; } if (currentChunk !== "") { result += maybeWrapInNotSelector(isNegativeMode, currentChunk); } return result; } function stringifyCSSSelectorList(selectorList) { return selectorList.map(stringifyCSSSelector).join(","); } function extractAttrsAndClassesFromSelector(selector) { const attrs = []; const classes = []; let i = 1; let mode = 2; while (i < selector.length) { let valueOrMarker = selector[i]; if (typeof valueOrMarker === "string") { if (mode === 2) { if (valueOrMarker !== "") { attrs.push(valueOrMarker, selector[++i]); } } else if (mode === 8) { classes.push(valueOrMarker); } } else { if (!isPositive(mode)) break; mode = valueOrMarker; } i++; } if (classes.length) { attrs.push(1, ...classes); } return attrs; } function createTextNode(renderer, value) { ngDevMode && ngDevMode.rendererCreateTextNode++; ngDevMode && ngDevMode.rendererSetText++; return renderer.createText(value); } function updateTextNode(renderer, rNode, value) { ngDevMode && ngDevMode.rendererSetText++; renderer.setValue(rNode, value); } function createCommentNode(renderer, value) { ngDevMode && ngDevMode.rendererCreateComment++; return renderer.createComment(escapeCommentText(value)); } function createElementNode(renderer, name, namespace) { ngDevMode && ngDevMode.rendererCreateElement++; return renderer.createElement(name, namespace); } function nativeInsertBefore(renderer, parent, child, beforeNode, isMove) { ngDevMode && ngDevMode.rendererInsertBefore++; renderer.insertBefore(parent, child, beforeNode, isMove); } function nativeAppendChild(renderer, parent, child) { ngDevMode && ngDevMode.rendererAppendChild++; ngDevMode && assertDefined(parent, "parent node must be defined"); renderer.appendChild(parent, child); } function nativeAppendOrInsertBefore(renderer, parent, child, beforeNode, isMove) { if (beforeNode !== null) { nativeInsertBefore(renderer, parent, child, beforeNode, isMove); } else { nativeAppendChild(renderer, parent, child); } } function nativeRemoveNode(renderer, rNode, isHostElement) { ngDevMode && ngDevMode.rendererRemoveNode++; renderer.removeChild(null, rNode, isHostElement); } function writeDirectStyle(renderer, element, newValue) { ngDevMode && assertString(newValue, "'newValue' should be a string"); renderer.setAttribute(element, "style", newValue); ngDevMode && ngDevMode.rendererSetStyle++; } function writeDirectClass(renderer, element, newValue) { ngDevMode && assertString(newValue, "'newValue' should be a string"); if (newValue === "") { renderer.removeAttribute(element, "class"); } else { renderer.setAttribute(element, "class", newValue); } ngDevMode && ngDevMode.rendererSetClassName++; } function setupStaticAttributes(renderer, element, tNode) { const { mergedAttrs, classes, styles } = tNode; if (mergedAttrs !== null) { setUpAttributes(renderer, element, mergedAttrs); } if (classes !== null) { writeDirectClass(renderer, element, classes); } if (styles !== null) { writeDirectStyle(renderer, element, styles); } } function createTView(type, declTNode, templateFn, decls, vars, directives, pipes, viewQuery, schemas, constsOrFactory, ssrId) { ngDevMode && ngDevMode.tView++; const bindingStartIndex = HEADER_OFFSET + decls; const initialViewLength = bindingStartIndex + vars; const blueprint = createViewBlueprint(bindingStartIndex, initialViewLength); const consts = typeof constsOrFactory === "function" ? constsOrFactory() : constsOrFactory; const tView = blueprint[TVIEW] = { type, blueprint, template: templateFn, queries: null, viewQuery, declTNode, data: blueprint.slice().fill(null, bindingStartIndex), bindingStartIndex, expandoStartIndex: initialViewLength, hostBindingOpCodes: null, firstCreatePass: true, firstUpdatePass: true, staticViewQueries: false, staticContentQueries: false, preOrderHooks: null, preOrderCheckHooks: null, contentHooks: null, contentCheckHooks: null, viewHooks: null, viewCheckHooks: null, destroyHooks: null, cleanup: null, contentQueries: null, components: null, directiveRegistry: typeof directives === "function" ? directives() : directives, pipeRegistry: typeof pipes === "function" ? pipes() : pipes, firstChild: null, schemas, consts, incompleteFirstPass: false, ssrId }; if (ngDevMode) { Object.seal(tView); } return tView; } function createViewBlueprint(bindingStartIndex, initialViewLength) { const blueprint = []; for (let i = 0; i < initialViewLength; i++) { blueprint.push(i < bindingStartIndex ? null : NO_CHANGE); } return blueprint; } function getOrCreateComponentTView(def) { const tView = def.tView; if (tView === null || tView.incompleteFirstPass) { const declTNode = null; return def.tView = createTView(1, declTNode, def.template, def.decls, def.vars, def.directiveDefs, def.pipeDefs, def.viewQuery, def.schemas, def.consts, def.id); } return tView; } function createLView(parentLView, tView, context2, flags, host, tHostNode, environment, renderer, injector, embeddedViewInjector, hydrationInfo) { const lView = tView.blueprint.slice(); lView[HOST] = host; lView[FLAGS] = flags | 4 | 128 | 8 | 64 | 1024; if (embeddedViewInjector !== null || parentLView && parentLView[FLAGS] & 2048) { lView[FLAGS] |= 2048; } resetPreOrderHookFlags(lView); ngDevMode && tView.declTNode && parentLView && assertTNodeForLView(tView.declTNode, parentLView); lView[PARENT] = lView[DECLARATION_VIEW] = parentLView; lView[CONTEXT] = context2; lView[ENVIRONMENT] = environment || parentLView && parentLView[ENVIRONMENT]; ngDevMode && assertDefined(lView[ENVIRONMENT], "LViewEnvironment is required"); lView[RENDERER] = renderer || parentLView && parentLView[RENDERER]; ngDevMode && assertDefined(lView[RENDERER], "Renderer is required"); lView[INJECTOR] = injector || parentLView && parentLView[INJECTOR] || null; lView[T_HOST] = tHostNode; lView[ID] = getUniqueLViewId(); lView[HYDRATION] = hydrationInfo; lView[EMBEDDED_VIEW_INJECTOR] = embeddedViewInjector; ngDevMode && assertEqual(tView.type == 2 ? parentLView !== null : true, true, "Embedded views must have parentLView"); lView[DECLARATION_COMPONENT_VIEW] = tView.type == 2 ? parentLView[DECLARATION_COMPONENT_VIEW] : lView; return lView; } function createComponentLView(lView, hostTNode, def) { const native = getNativeByTNode(hostTNode, lView); const tView = getOrCreateComponentTView(def); const rendererFactory = lView[ENVIRONMENT].rendererFactory; const componentView = addToEndOfViewTree(lView, createLView(lView, tView, null, getInitialLViewFlagsFromDef(def), native, hostTNode, null, rendererFactory.createRenderer(native, def), null, null, null)); return lView[hostTNode.index] = componentView; } function getInitialLViewFlagsFromDef(def) { let flags = 16; if (def.signals) { flags = 4096; } else if (def.onPush) { flags = 64; } return flags; } function allocExpando(tView, lView, numSlotsToAlloc, initialValue) { if (numSlotsToAlloc === 0) return -1; if (ngDevMode) { assertFirstCreatePass(tView); assertSame(tView, lView[TVIEW], "`LView` must be associated with `TView`!"); assertEqual(tView.data.length, lView.length, "Expecting LView to be same size as TView"); assertEqual(tView.data.length, tView.blueprint.length, "Expecting Blueprint to be same size as TView"); assertFirstUpdatePass(tView); } const allocIdx = lView.length; for (let i = 0; i < numSlotsToAlloc; i++) { lView.push(initialValue); tView.blueprint.push(initialValue); tView.data.push(null); } return allocIdx; } function addToEndOfViewTree(lView, lViewOrLContainer) { if (lView[CHILD_HEAD]) { lView[CHILD_TAIL][NEXT] = lViewOrLContainer; } else { lView[CHILD_HEAD] = lViewOrLContainer; } lView[CHILD_TAIL] = lViewOrLContainer; return lViewOrLContainer; } function \u0275\u0275advance(delta = 1) { ngDevMode && assertGreaterThan(delta, 0, "Can only advance forward"); selectIndexInternal(getTView(), getLView(), getSelectedIndex() + delta, !!ngDevMode && isInCheckNoChangesMode()); } function selectIndexInternal(tView, lView, index, checkNoChangesMode) { ngDevMode && assertIndexInDeclRange(lView[TVIEW], index); if (!checkNoChangesMode) { const hooksInitPhaseCompleted = (lView[FLAGS] & 3) === 3; if (hooksInitPhaseCompleted) { const preOrderCheckHooks = tView.preOrderCheckHooks; if (preOrderCheckHooks !== null) { executeCheckHooks(lView, preOrderCheckHooks, index); } } else { const preOrderHooks = tView.preOrderHooks; if (preOrderHooks !== null) { executeInitAndCheckHooks(lView, preOrderHooks, 0, index); } } } setSelectedIndex(index); } function writeToDirectiveInput(def, instance, publicName, value) { const prevConsumer = setActiveConsumer(null); try { if (ngDevMode) { if (!def.inputs.hasOwnProperty(publicName)) { throw new Error(`ASSERTION ERROR: Directive ${def.type.name} does not have an input with a public name of "${publicName}"`); } if (instance instanceof NodeInjectorFactory) { throw new Error(`ASSERTION ERROR: Cannot write input to factory for type ${def.type.name}. Directive has not been created yet.`); } } const [privateName, flags, transform] = def.inputs[publicName]; let inputSignalNode = null; if ((flags & InputFlags.SignalBased) !== 0) { const field = instance[privateName]; inputSignalNode = field[SIGNAL]; } if (inputSignalNode !== null && inputSignalNode.transformFn !== void 0) { value = inputSignalNode.transformFn(value); } else if (transform !== null) { value = transform.call(instance, value); } if (def.setInput !== null) { def.setInput(instance, inputSignalNode, value, publicName, privateName); } else { applyValueToInputField(instance, inputSignalNode, privateName, value); } } finally { setActiveConsumer(prevConsumer); } } function executeTemplate(tView, lView, templateFn, rf, context2) { const prevSelectedIndex = getSelectedIndex(); const isUpdatePhase = rf & 2; try { setSelectedIndex(-1); if (isUpdatePhase && lView.length> HEADER_OFFSET) { selectIndexInternal(tView, lView, HEADER_OFFSET, !!ngDevMode && isInCheckNoChangesMode()); } const preHookType = isUpdatePhase ? 2 : 0; profiler(preHookType, context2); templateFn(rf, context2); } finally { setSelectedIndex(prevSelectedIndex); const postHookType = isUpdatePhase ? 3 : 1; profiler(postHookType, context2); } } function createDirectivesInstances(tView, lView, tNode) { instantiateAllDirectives(tView, lView, tNode); if ((tNode.flags & 64) === 64) { invokeDirectivesHostBindings(tView, lView, tNode); } } function saveResolvedLocalsInData(viewData, tNode, localRefExtractor = getNativeByTNode) { const localNames = tNode.localNames; if (localNames !== null) { let localIndex = tNode.index + 1; for (let i = 0; i < localNames.length; i += 2) { const index = localNames[i + 1]; const value = index === -1 ? localRefExtractor(tNode, viewData) : viewData[index]; viewData[localIndex++] = value; } } } function locateHostElement(renderer, elementOrSelector, encapsulation, injector) { const preserveHostContent = injector.get(PRESERVE_HOST_CONTENT, PRESERVE_HOST_CONTENT_DEFAULT); const preserveContent = preserveHostContent || encapsulation === ViewEncapsulation.ShadowDom; const rootElement = renderer.selectRootElement(elementOrSelector, preserveContent); applyRootElementTransform(rootElement); return rootElement; } function applyRootElementTransform(rootElement) { _applyRootElementTransformImpl(rootElement); } function mapPropName(name) { if (name === "class") return "className"; if (name === "for") return "htmlFor"; if (name === "formaction") return "formAction"; if (name === "innerHtml") return "innerHTML"; if (name === "readonly") return "readOnly"; if (name === "tabindex") return "tabIndex"; return name; } function elementPropertyInternal(tView, tNode, lView, propName, value, renderer, sanitizer, nativeOnly) { ngDevMode && assertNotSame(value, NO_CHANGE, "Incoming value should never be NO_CHANGE."); if (!nativeOnly) { const hasSetInput = setAllInputsForProperty(tNode, tView, lView, propName, value); if (hasSetInput) { isComponentHost(tNode) && markDirtyIfOnPush(lView, tNode.index); ngDevMode && setNgReflectProperties(lView, tView, tNode, propName, value); return; } } if (tNode.type & 3) { const element = getNativeByTNode(tNode, lView); propName = mapPropName(propName); if (ngDevMode) { validateAgainstEventProperties(propName); if (!isPropertyValid(element, propName, tNode.value, tView.schemas)) { handleUnknownPropertyError(propName, tNode.value, tNode.type, lView); } ngDevMode.rendererSetProperty++; } value = sanitizer != null ? sanitizer(value, tNode.value || "", propName) : value; renderer.setProperty(element, propName, value); } else if (tNode.type & 12) { if (ngDevMode && !matchingSchemas(tView.schemas, tNode.value)) { handleUnknownPropertyError(propName, tNode.value, tNode.type, lView); } } } function markDirtyIfOnPush(lView, viewIndex) { ngDevMode && assertLView(lView); const childComponentLView = getComponentLViewByIndex(viewIndex, lView); if (!(childComponentLView[FLAGS] & 16)) { childComponentLView[FLAGS] |= 64; } } function setNgReflectProperty(lView, tNode, attrName, value) { const element = getNativeByTNode(tNode, lView); const renderer = lView[RENDERER]; attrName = normalizeDebugBindingName(attrName); const debugValue = normalizeDebugBindingValue(value); if (tNode.type & 3) { if (value == null) { renderer.removeAttribute(element, attrName); } else { renderer.setAttribute(element, attrName, debugValue); } } else { const textContent = escapeCommentText(`bindings=${JSON.stringify({ [attrName]: debugValue }, null, 2)}`); renderer.setValue(element, textContent); } } function setNgReflectProperties(lView, tView, tNode, publicName, value) { if (!(tNode.type & (3 | 4))) { return; } const inputConfig = tNode.inputs?.[publicName]; const hostInputConfig = tNode.hostDirectiveInputs?.[publicName]; if (hostInputConfig) { for (let i = 0; i < hostInputConfig.length; i += 2) { const index = hostInputConfig[i]; const publicName2 = hostInputConfig[i + 1]; const def = tView.data[index]; setNgReflectProperty(lView, tNode, def.inputs[publicName2][0], value); } } if (inputConfig) { for (const index of inputConfig) { const def = tView.data[index]; setNgReflectProperty(lView, tNode, def.inputs[publicName][0], value); } } } function instantiateAllDirectives(tView, lView, tNode) { const start = tNode.directiveStart; const end = tNode.directiveEnd; if (isComponentHost(tNode)) { ngDevMode && assertTNodeType( tNode, 3 /* TNodeType.AnyRNode */ ); createComponentLView(lView, tNode, tView.data[start + tNode.componentOffset]); } if (!tView.firstCreatePass) { getOrCreateNodeInjectorForNode(tNode, lView); } const initialInputs = tNode.initialInputs; for (let i = start; i < end; i++) { const def = tView.data[i]; const directive = getNodeInjectable(lView, tView, i, tNode); attachPatchData(directive, lView); if (initialInputs !== null) { setInputsFromAttrs(lView, i - start, directive, def, tNode, initialInputs); } if (isComponentDef(def)) { const componentView = getComponentLViewByIndex(tNode.index, lView); componentView[CONTEXT] = getNodeInjectable(lView, tView, i, tNode); } } } function invokeDirectivesHostBindings(tView, lView, tNode) { const start = tNode.directiveStart; const end = tNode.directiveEnd; const elementIndex = tNode.index; const currentDirectiveIndex = getCurrentDirectiveIndex(); try { setSelectedIndex(elementIndex); for (let dirIndex = start; dirIndex < end; dirIndex++) { const def = tView.data[dirIndex]; const directive = lView[dirIndex]; setCurrentDirectiveIndex(dirIndex); if (def.hostBindings !== null || def.hostVars !== 0 || def.hostAttrs !== null) { invokeHostBindingsInCreationMode(def, directive); } } } finally { setSelectedIndex(-1); setCurrentDirectiveIndex(currentDirectiveIndex); } } function invokeHostBindingsInCreationMode(def, directive) { if (def.hostBindings !== null) { def.hostBindings(1, directive); } } function findDirectiveDefMatches(tView, tNode) { ngDevMode && assertFirstCreatePass(tView); ngDevMode && assertTNodeType( tNode, 3 | 12 /* TNodeType.AnyContainer */ ); const registry = tView.directiveRegistry; let matches = null; if (registry) { for (let i = 0; i < registry.length; i++) { const def = registry[i]; if (isNodeMatchingSelectorList( tNode, def.selectors, /* isProjectionMode */ false )) { matches ??= []; if (isComponentDef(def)) { if (ngDevMode) { assertTNodeType(tNode, 2, `"${tNode.value}" tags cannot be used as component hosts. Please use a different tag to activate the ${stringify(def.type)} component.`); if (matches.length && isComponentDef(matches[0])) { throwMultipleComponentError(tNode, matches.find(isComponentDef).type, def.type); } } matches.unshift(def); } else { matches.push(def); } } } } return matches; } function elementAttributeInternal(tNode, lView, name, value, sanitizer, namespace) { if (ngDevMode) { assertNotSame(value, NO_CHANGE, "Incoming value should never be NO_CHANGE."); validateAgainstEventAttributes(name); assertTNodeType(tNode, 2, `Attempted to set attribute \`${name}\` on a container node. Host bindings are not valid on ng-container or ng-template.`); } const element = getNativeByTNode(tNode, lView); setElementAttribute(lView[RENDERER], element, namespace, tNode.value, name, value, sanitizer); } function setElementAttribute(renderer, element, namespace, tagName, name, value, sanitizer) { if (value == null) { ngDevMode && ngDevMode.rendererRemoveAttribute++; renderer.removeAttribute(element, name, namespace); } else { ngDevMode && ngDevMode.rendererSetAttribute++; const strValue = sanitizer == null ? renderStringify(value) : sanitizer(value, tagName || "", name); renderer.setAttribute(element, name, strValue, namespace); } } function setInputsFromAttrs(lView, directiveIndex, instance, def, tNode, initialInputData) { const initialInputs = initialInputData[directiveIndex]; if (initialInputs !== null) { for (let i = 0; i < initialInputs.length; i += 2) { const lookupName = initialInputs[i]; const value = initialInputs[i + 1]; writeToDirectiveInput(def, instance, lookupName, value); if (ngDevMode) { setNgReflectProperty(lView, tNode, def.inputs[lookupName][0], value); } } } } function storePropertyBindingMetadata(tData, tNode, propertyName, bindingIndex, ...interpolationParts) { if (tData[bindingIndex] === null) { if (!tNode.inputs?.[propertyName] && !tNode.hostDirectiveInputs?.[propertyName]) { const propBindingIdxs = tNode.propertyBindings || (tNode.propertyBindings = []); propBindingIdxs.push(bindingIndex); let bindingMetadata = propertyName; if (interpolationParts.length> 0) { bindingMetadata += INTERPOLATION_DELIMITER + interpolationParts.join(INTERPOLATION_DELIMITER); } tData[bindingIndex] = bindingMetadata; } } } function loadComponentRenderer(currentDef, tNode, lView) { if (currentDef === null || isComponentDef(currentDef)) { lView = unwrapLView(lView[tNode.index]); } return lView[RENDERER]; } function handleError1ドル(lView, error) { const injector = lView[INJECTOR]; const errorHandler = injector ? injector.get(ErrorHandler, null) : null; errorHandler && errorHandler.handleError(error); } function setAllInputsForProperty(tNode, tView, lView, publicName, value) { const inputs = tNode.inputs?.[publicName]; const hostDirectiveInputs = tNode.hostDirectiveInputs?.[publicName]; let hasMatch = false; if (hostDirectiveInputs) { for (let i = 0; i < hostDirectiveInputs.length; i += 2) { const index = hostDirectiveInputs[i]; ngDevMode && assertIndexInRange(lView, index); const publicName2 = hostDirectiveInputs[i + 1]; const def = tView.data[index]; writeToDirectiveInput(def, lView[index], publicName2, value); hasMatch = true; } } if (inputs) { for (const index of inputs) { ngDevMode && assertIndexInRange(lView, index); const instance = lView[index]; const def = tView.data[index]; writeToDirectiveInput(def, instance, publicName, value); hasMatch = true; } } return hasMatch; } function renderComponent(hostLView, componentHostIdx) { ngDevMode && assertEqual(isCreationMode(hostLView), true, "Should be run in creation mode"); const componentView = getComponentLViewByIndex(componentHostIdx, hostLView); const componentTView = componentView[TVIEW]; syncViewWithBlueprint(componentTView, componentView); const hostRNode = componentView[HOST]; if (hostRNode !== null && componentView[HYDRATION] === null) { componentView[HYDRATION] = retrieveHydrationInfo(hostRNode, componentView[INJECTOR]); } profiler( 18 /* ProfilerEvent.ComponentStart */ ); renderView(componentTView, componentView, componentView[CONTEXT]); profiler(19, componentView[CONTEXT]); } function syncViewWithBlueprint(tView, lView) { for (let i = lView.length; i < tView.blueprint.length; i++) { lView.push(tView.blueprint[i]); } } function renderView(tView, lView, context2) { ngDevMode && assertEqual(isCreationMode(lView), true, "Should be run in creation mode"); ngDevMode && assertNotReactive(renderView.name); enterView(lView); try { const viewQuery = tView.viewQuery; if (viewQuery !== null) { executeViewQueryFn(1, viewQuery, context2); } const templateFn = tView.template; if (templateFn !== null) { executeTemplate(tView, lView, templateFn, 1, context2); } if (tView.firstCreatePass) { tView.firstCreatePass = false; } lView[QUERIES]?.finishViewCreation(tView); if (tView.staticContentQueries) { refreshContentQueries(tView, lView); } if (tView.staticViewQueries) { executeViewQueryFn(2, tView.viewQuery, context2); } const components = tView.components; if (components !== null) { renderChildComponents(lView, components); } } catch (error) { if (tView.firstCreatePass) { tView.incompleteFirstPass = true; tView.firstCreatePass = false; } throw error; } finally { lView[FLAGS] &= -5; leaveView(); } } function renderChildComponents(hostLView, components) { for (let i = 0; i < components.length; i++) { renderComponent(hostLView, components[i]); } } function createAndRenderEmbeddedLView(declarationLView, templateTNode, context2, options) { const prevConsumer = setActiveConsumer(null); try { const embeddedTView = templateTNode.tView; ngDevMode && assertDefined(embeddedTView, "TView must be defined for a template node."); ngDevMode && assertTNodeForLView(templateTNode, declarationLView); const isSignalView = declarationLView[FLAGS] & 4096; const viewFlags = isSignalView ? 4096 : 16; const embeddedLView = createLView(declarationLView, embeddedTView, context2, viewFlags, null, templateTNode, null, null, options?.injector ?? null, options?.embeddedViewInjector ?? null, options?.dehydratedView ?? null); const declarationLContainer = declarationLView[templateTNode.index]; ngDevMode && assertLContainer(declarationLContainer); embeddedLView[DECLARATION_LCONTAINER] = declarationLContainer; const declarationViewLQueries = declarationLView[QUERIES]; if (declarationViewLQueries !== null) { embeddedLView[QUERIES] = declarationViewLQueries.createEmbeddedView(embeddedTView); } renderView(embeddedTView, embeddedLView, context2); return embeddedLView; } finally { setActiveConsumer(prevConsumer); } } function shouldAddViewToDom(tNode, dehydratedView) { return !dehydratedView || dehydratedView.firstChild === null || hasInSkipHydrationBlockFlag(tNode); } function icuContainerIterate(tIcuContainerNode, lView) { return _icuContainerIterate(tIcuContainerNode, lView); } function ensureIcuContainerVisitorLoaded(loader) { if (_icuContainerIterate === void 0) { _icuContainerIterate = loader(); } } function isDetachedByI18n(tNode) { return (tNode.flags & 32) === 32; } function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, beforeNode) { if (lNodeToHandle != null) { let lContainer; let isComponent2 = false; if (isLContainer(lNodeToHandle)) { lContainer = lNodeToHandle; } else if (isLView(lNodeToHandle)) { isComponent2 = true; ngDevMode && assertDefined(lNodeToHandle[HOST], "HOST must be defined for a component LView"); lNodeToHandle = lNodeToHandle[HOST]; } const rNode = unwrapRNode(lNodeToHandle); if (action === 0 && parent !== null) { if (beforeNode == null) { nativeAppendChild(renderer, parent, rNode); } else { nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true); } } else if (action === 1 && parent !== null) { nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true); } else if (action === 2) { nativeRemoveNode(renderer, rNode, isComponent2); } else if (action === 3) { ngDevMode && ngDevMode.rendererDestroyNode++; renderer.destroyNode(rNode); } if (lContainer != null) { applyContainer(renderer, action, lContainer, parent, beforeNode); } } } function removeViewFromDOM(tView, lView) { detachViewFromDOM(tView, lView); lView[HOST] = null; lView[T_HOST] = null; } function addViewToDOM(tView, parentTNode, renderer, lView, parentNativeNode, beforeNode) { lView[HOST] = parentNativeNode; lView[T_HOST] = parentTNode; applyView(tView, lView, renderer, 1, parentNativeNode, beforeNode); } function detachViewFromDOM(tView, lView) { lView[ENVIRONMENT].changeDetectionScheduler?.notify( 9 /* NotificationSource.ViewDetachedFromDOM */ ); applyView(tView, lView, lView[RENDERER], 2, null, null); } function destroyViewTree(rootView) { let lViewOrLContainer = rootView[CHILD_HEAD]; if (!lViewOrLContainer) { return cleanUpView(rootView[TVIEW], rootView); } while (lViewOrLContainer) { let next = null; if (isLView(lViewOrLContainer)) { next = lViewOrLContainer[CHILD_HEAD]; } else { ngDevMode && assertLContainer(lViewOrLContainer); const firstView = lViewOrLContainer[CONTAINER_HEADER_OFFSET]; if (firstView) next = firstView; } if (!next) { while (lViewOrLContainer && !lViewOrLContainer[NEXT] && lViewOrLContainer !== rootView) { if (isLView(lViewOrLContainer)) { cleanUpView(lViewOrLContainer[TVIEW], lViewOrLContainer); } lViewOrLContainer = lViewOrLContainer[PARENT]; } if (lViewOrLContainer === null) lViewOrLContainer = rootView; if (isLView(lViewOrLContainer)) { cleanUpView(lViewOrLContainer[TVIEW], lViewOrLContainer); } next = lViewOrLContainer && lViewOrLContainer[NEXT]; } lViewOrLContainer = next; } } function detachMovedView(declarationContainer, lView) { ngDevMode && assertLContainer(declarationContainer); ngDevMode && assertDefined(declarationContainer[MOVED_VIEWS], "A projected view should belong to a non-empty projected views collection"); const movedViews = declarationContainer[MOVED_VIEWS]; const declarationViewIndex = movedViews.indexOf(lView); movedViews.splice(declarationViewIndex, 1); } function destroyLView(tView, lView) { if (isDestroyed(lView)) { return; } const renderer = lView[RENDERER]; if (renderer.destroyNode) { applyView(tView, lView, renderer, 3, null, null); } destroyViewTree(lView); } function cleanUpView(tView, lView) { if (isDestroyed(lView)) { return; } const prevConsumer = setActiveConsumer(null); try { lView[FLAGS] &= ~128; lView[FLAGS] |= 256; lView[REACTIVE_TEMPLATE_CONSUMER] && consumerDestroy(lView[REACTIVE_TEMPLATE_CONSUMER]); executeOnDestroys(tView, lView); processCleanups(tView, lView); if (lView[TVIEW].type === 1) { ngDevMode && ngDevMode.rendererDestroy++; lView[RENDERER].destroy(); } const declarationContainer = lView[DECLARATION_LCONTAINER]; if (declarationContainer !== null && isLContainer(lView[PARENT])) { if (declarationContainer !== lView[PARENT]) { detachMovedView(declarationContainer, lView); } const lQueries = lView[QUERIES]; if (lQueries !== null) { lQueries.detachView(tView); } } unregisterLView(lView); } finally { setActiveConsumer(prevConsumer); } } function processCleanups(tView, lView) { ngDevMode && assertNotReactive(processCleanups.name); const tCleanup = tView.cleanup; const lCleanup = lView[CLEANUP]; if (tCleanup !== null) { for (let i = 0; i < tCleanup.length - 1; i += 2) { if (typeof tCleanup[i] === "string") { const targetIdx = tCleanup[i + 3]; ngDevMode && assertNumber(targetIdx, "cleanup target must be a number"); if (targetIdx>= 0) { lCleanup[targetIdx](); } else { lCleanup[-targetIdx].unsubscribe(); } i += 2; } else { const context2 = lCleanup[tCleanup[i + 1]]; tCleanup[i].call(context2); } } } if (lCleanup !== null) { lView[CLEANUP] = null; } const destroyHooks = lView[ON_DESTROY_HOOKS]; if (destroyHooks !== null) { lView[ON_DESTROY_HOOKS] = null; for (let i = 0; i < destroyHooks.length; i++) { const destroyHooksFn = destroyHooks[i]; ngDevMode && assertFunction(destroyHooksFn, "Expecting destroy hook to be a function."); destroyHooksFn(); } } const effects = lView[EFFECTS]; if (effects !== null) { lView[EFFECTS] = null; for (const effect2 of effects) { effect2.destroy(); } } } function executeOnDestroys(tView, lView) { ngDevMode && assertNotReactive(executeOnDestroys.name); let destroyHooks; if (tView != null && (destroyHooks = tView.destroyHooks) != null) { for (let i = 0; i < destroyHooks.length; i += 2) { const context2 = lView[destroyHooks[i]]; if (!(context2 instanceof NodeInjectorFactory)) { const toCall = destroyHooks[i + 1]; if (Array.isArray(toCall)) { for (let j = 0; j < toCall.length; j += 2) { const callContext = context2[toCall[j]]; const hook = toCall[j + 1]; profiler(4, callContext, hook); try { hook.call(callContext); } finally { profiler(5, callContext, hook); } } } else { profiler(4, context2, toCall); try { toCall.call(context2); } finally { profiler(5, context2, toCall); } } } } } } function getParentRElement(tView, tNode, lView) { return getClosestRElement(tView, tNode.parent, lView); } function getClosestRElement(tView, tNode, lView) { let parentTNode = tNode; while (parentTNode !== null && parentTNode.type & (8 | 32 | 128)) { tNode = parentTNode; parentTNode = tNode.parent; } if (parentTNode === null) { return lView[HOST]; } else { ngDevMode && assertTNodeType( parentTNode, 3 | 4 /* TNodeType.Container */ ); if (isComponentHost(parentTNode)) { ngDevMode && assertTNodeForLView(parentTNode, lView); const { encapsulation } = tView.data[parentTNode.directiveStart + parentTNode.componentOffset]; if (encapsulation === ViewEncapsulation.None || encapsulation === ViewEncapsulation.Emulated) { return null; } } return getNativeByTNode(parentTNode, lView); } } function getInsertInFrontOfRNode(parentTNode, currentTNode, lView) { return _getInsertInFrontOfRNodeWithI18n(parentTNode, currentTNode, lView); } function getInsertInFrontOfRNodeWithNoI18n(parentTNode, currentTNode, lView) { if (parentTNode.type & (8 | 32)) { return getNativeByTNode(parentTNode, lView); } return null; } function setI18nHandling(getInsertInFrontOfRNodeWithI18n2, processI18nInsertBefore2) { _getInsertInFrontOfRNodeWithI18n = getInsertInFrontOfRNodeWithI18n2; _processI18nInsertBefore = processI18nInsertBefore2; } function appendChild(tView, lView, childRNode, childTNode) { const parentRNode = getParentRElement(tView, childTNode, lView); const renderer = lView[RENDERER]; const parentTNode = childTNode.parent || lView[T_HOST]; const anchorNode = getInsertInFrontOfRNode(parentTNode, childTNode, lView); if (parentRNode != null) { if (Array.isArray(childRNode)) { for (let i = 0; i < childRNode.length; i++) { nativeAppendOrInsertBefore(renderer, parentRNode, childRNode[i], anchorNode, false); } } else { nativeAppendOrInsertBefore(renderer, parentRNode, childRNode, anchorNode, false); } } _processI18nInsertBefore !== void 0 && _processI18nInsertBefore(renderer, childTNode, lView, childRNode, parentRNode); } function getFirstNativeNode(lView, tNode) { if (tNode !== null) { ngDevMode && assertTNodeType( tNode, 3 | 12 | 32 | 16 | 128 /* TNodeType.LetDeclaration */ ); const tNodeType = tNode.type; if (tNodeType & 3) { return getNativeByTNode(tNode, lView); } else if (tNodeType & 4) { return getBeforeNodeForView(-1, lView[tNode.index]); } else if (tNodeType & 8) { const elIcuContainerChild = tNode.child; if (elIcuContainerChild !== null) { return getFirstNativeNode(lView, elIcuContainerChild); } else { const rNodeOrLContainer = lView[tNode.index]; if (isLContainer(rNodeOrLContainer)) { return getBeforeNodeForView(-1, rNodeOrLContainer); } else { return unwrapRNode(rNodeOrLContainer); } } } else if (tNodeType & 128) { return getFirstNativeNode(lView, tNode.next); } else if (tNodeType & 32) { let nextRNode = icuContainerIterate(tNode, lView); let rNode = nextRNode(); return rNode || unwrapRNode(lView[tNode.index]); } else { const projectionNodes = getProjectionNodes(lView, tNode); if (projectionNodes !== null) { if (Array.isArray(projectionNodes)) { return projectionNodes[0]; } const parentView = getLViewParent(lView[DECLARATION_COMPONENT_VIEW]); ngDevMode && assertParentView(parentView); return getFirstNativeNode(parentView, projectionNodes); } else { return getFirstNativeNode(lView, tNode.next); } } } return null; } function getProjectionNodes(lView, tNode) { if (tNode !== null) { const componentView = lView[DECLARATION_COMPONENT_VIEW]; const componentHost = componentView[T_HOST]; const slotIdx = tNode.projection; ngDevMode && assertProjectionSlots(lView); return componentHost.projection[slotIdx]; } return null; } function getBeforeNodeForView(viewIndexInContainer, lContainer) { const nextViewIndex = CONTAINER_HEADER_OFFSET + viewIndexInContainer + 1; if (nextViewIndex < lContainer.length) { const lView = lContainer[nextViewIndex]; const firstTNodeOfView = lView[TVIEW].firstChild; if (firstTNodeOfView !== null) { return getFirstNativeNode(lView, firstTNodeOfView); } } return lContainer[NATIVE]; } function applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode, isProjection) { while (tNode != null) { ngDevMode && assertTNodeForLView(tNode, lView); if (tNode.type === 128) { tNode = tNode.next; continue; } ngDevMode && assertTNodeType( tNode, 3 | 12 | 16 | 32 /* TNodeType.Icu */ ); const rawSlotValue = lView[tNode.index]; const tNodeType = tNode.type; if (isProjection) { if (action === 0) { rawSlotValue && attachPatchData(unwrapRNode(rawSlotValue), lView); tNode.flags |= 2; } } if (!isDetachedByI18n(tNode)) { if (tNodeType & 8) { applyNodes(renderer, action, tNode.child, lView, parentRElement, beforeNode, false); applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode); } else if (tNodeType & 32) { const nextRNode = icuContainerIterate(tNode, lView); let rNode; while (rNode = nextRNode()) { applyToElementOrContainer(action, renderer, parentRElement, rNode, beforeNode); } applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode); } else if (tNodeType & 16) { applyProjectionRecursive(renderer, action, lView, tNode, parentRElement, beforeNode); } else { ngDevMode && assertTNodeType( tNode, 3 | 4 /* TNodeType.Container */ ); applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode); } } tNode = isProjection ? tNode.projectionNext : tNode.next; } } function applyView(tView, lView, renderer, action, parentRElement, beforeNode) { applyNodes(renderer, action, tView.firstChild, lView, parentRElement, beforeNode, false); } function applyProjection(tView, lView, tProjectionNode) { const renderer = lView[RENDERER]; const parentRNode = getParentRElement(tView, tProjectionNode, lView); const parentTNode = tProjectionNode.parent || lView[T_HOST]; let beforeNode = getInsertInFrontOfRNode(parentTNode, tProjectionNode, lView); applyProjectionRecursive(renderer, 0, lView, tProjectionNode, parentRNode, beforeNode); } function applyProjectionRecursive(renderer, action, lView, tProjectionNode, parentRElement, beforeNode) { const componentLView = lView[DECLARATION_COMPONENT_VIEW]; const componentNode = componentLView[T_HOST]; ngDevMode && assertEqual(typeof tProjectionNode.projection, "number", "expecting projection index"); const nodeToProjectOrRNodes = componentNode.projection[tProjectionNode.projection]; if (Array.isArray(nodeToProjectOrRNodes)) { for (let i = 0; i < nodeToProjectOrRNodes.length; i++) { const rNode = nodeToProjectOrRNodes[i]; applyToElementOrContainer(action, renderer, parentRElement, rNode, beforeNode); } } else { let nodeToProject = nodeToProjectOrRNodes; const projectedComponentLView = componentLView[PARENT]; if (hasInSkipHydrationBlockFlag(tProjectionNode)) { nodeToProject.flags |= 128; } applyNodes(renderer, action, nodeToProject, projectedComponentLView, parentRElement, beforeNode, true); } } function applyContainer(renderer, action, lContainer, parentRElement, beforeNode) { ngDevMode && assertLContainer(lContainer); const anchor = lContainer[NATIVE]; const native = unwrapRNode(lContainer); if (anchor !== native) { applyToElementOrContainer(action, renderer, parentRElement, anchor, beforeNode); } for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) { const lView = lContainer[i]; applyView(lView[TVIEW], lView, renderer, action, parentRElement, anchor); } } function applyStyling(renderer, isClassBased, rNode, prop, value) { if (isClassBased) { if (!value) { ngDevMode && ngDevMode.rendererRemoveClass++; renderer.removeClass(rNode, prop); } else { ngDevMode && ngDevMode.rendererAddClass++; renderer.addClass(rNode, prop); } } else { let flags = prop.indexOf("-") === -1 ? void 0 : RendererStyleFlags2.DashCase; if (value == null) { ngDevMode && ngDevMode.rendererRemoveStyle++; renderer.removeStyle(rNode, prop, flags); } else { const isImportant = typeof value === "string" ? value.endsWith("!important") : false; if (isImportant) { value = value.slice(0, -10); flags |= RendererStyleFlags2.Important; } ngDevMode && ngDevMode.rendererSetStyle++; renderer.setStyle(rNode, prop, value, flags); } } } function collectNativeNodes(tView, lView, tNode, result, isProjection = false) { while (tNode !== null) { if (tNode.type === 128) { tNode = isProjection ? tNode.projectionNext : tNode.next; continue; } ngDevMode && assertTNodeType( tNode, 3 | 12 | 16 | 32 /* TNodeType.Icu */ ); const lNode = lView[tNode.index]; if (lNode !== null) { result.push(unwrapRNode(lNode)); } if (isLContainer(lNode)) { collectNativeNodesInLContainer(lNode, result); } const tNodeType = tNode.type; if (tNodeType & 8) { collectNativeNodes(tView, lView, tNode.child, result); } else if (tNodeType & 32) { const nextRNode = icuContainerIterate(tNode, lView); let rNode; while (rNode = nextRNode()) { result.push(rNode); } } else if (tNodeType & 16) { const nodesInSlot = getProjectionNodes(lView, tNode); if (Array.isArray(nodesInSlot)) { result.push(...nodesInSlot); } else { const parentView = getLViewParent(lView[DECLARATION_COMPONENT_VIEW]); ngDevMode && assertParentView(parentView); collectNativeNodes(parentView[TVIEW], parentView, nodesInSlot, result, true); } } tNode = isProjection ? tNode.projectionNext : tNode.next; } return result; } function collectNativeNodesInLContainer(lContainer, result) { for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) { const lViewInAContainer = lContainer[i]; const lViewFirstChildTNode = lViewInAContainer[TVIEW].firstChild; if (lViewFirstChildTNode !== null) { collectNativeNodes(lViewInAContainer[TVIEW], lViewInAContainer, lViewFirstChildTNode, result); } } if (lContainer[NATIVE] !== lContainer[HOST]) { result.push(lContainer[NATIVE]); } } function addAfterRenderSequencesForView(lView) { if (lView[AFTER_RENDER_SEQUENCES_TO_ADD] !== null) { for (const sequence of lView[AFTER_RENDER_SEQUENCES_TO_ADD]) { sequence.impl.addSequence(sequence); } lView[AFTER_RENDER_SEQUENCES_TO_ADD].length = 0; } } function getOrBorrowReactiveLViewConsumer(lView) { return lView[REACTIVE_TEMPLATE_CONSUMER] ?? borrowReactiveLViewConsumer(lView); } function borrowReactiveLViewConsumer(lView) { const consumer = freeConsumers.pop() ?? Object.create(REACTIVE_LVIEW_CONSUMER_NODE); consumer.lView = lView; return consumer; } function maybeReturnReactiveLViewConsumer(consumer) { if (consumer.lView[REACTIVE_TEMPLATE_CONSUMER] === consumer) { return; } consumer.lView = null; freeConsumers.push(consumer); } function getOrCreateTemporaryConsumer(lView) { const consumer = lView[REACTIVE_TEMPLATE_CONSUMER] ?? Object.create(TEMPORARY_CONSUMER_NODE); consumer.lView = lView; return consumer; } function viewShouldHaveReactiveConsumer(tView) { return tView.type !== 2; } function runEffectsInView(view) { if (view[EFFECTS] === null) { return; } let tryFlushEffects = true; while (tryFlushEffects) { let foundDirtyEffect = false; for (const effect2 of view[EFFECTS]) { if (!effect2.dirty) { continue; } foundDirtyEffect = true; if (effect2.zone === null || Zone.current === effect2.zone) { effect2.run(); } else { effect2.zone.run(() => effect2.run()); } } tryFlushEffects = foundDirtyEffect && !!(view[FLAGS] & 8192); } } function detectChangesInternal(lView, notifyErrorHandler = true, mode = 0) { const environment = lView[ENVIRONMENT]; const rendererFactory = environment.rendererFactory; const checkNoChangesMode = !!ngDevMode && isInCheckNoChangesMode(); if (!checkNoChangesMode) { rendererFactory.begin?.(); } try { detectChangesInViewWhileDirty(lView, mode); } catch (error) { if (notifyErrorHandler) { handleError1ドル(lView, error); } throw error; } finally { if (!checkNoChangesMode) { rendererFactory.end?.(); } } } function detectChangesInViewWhileDirty(lView, mode) { const lastIsRefreshingViewsValue = isRefreshingViews(); try { setIsRefreshingViews(true); detectChangesInView(lView, mode); if (ngDevMode && isExhaustiveCheckNoChanges()) { return; } let retries = 0; while (requiresRefreshOrTraversal(lView)) { if (retries === MAXIMUM_REFRESH_RERUNS1ドル) { throw new RuntimeError(103, ngDevMode && "Infinite change detection while trying to refresh views. There may be components which each cause the other to require a refresh, causing an infinite loop."); } retries++; detectChangesInView( lView, 1 /* ChangeDetectionMode.Targeted */ ); } } finally { setIsRefreshingViews(lastIsRefreshingViewsValue); } } function checkNoChangesInternal(lView, mode, notifyErrorHandler = true) { setIsInCheckNoChangesMode(mode); try { detectChangesInternal(lView, notifyErrorHandler); } finally { setIsInCheckNoChangesMode(CheckNoChangesMode.Off); } } function refreshView(tView, lView, templateFn, context2) { ngDevMode && assertEqual(isCreationMode(lView), false, "Should be run in update mode"); if (isDestroyed(lView)) return; const flags = lView[FLAGS]; const isInCheckNoChangesPass = ngDevMode && isInCheckNoChangesMode(); const isInExhaustiveCheckNoChangesPass = ngDevMode && isExhaustiveCheckNoChanges(); enterView(lView); let returnConsumerToPool = true; let prevConsumer = null; let currentConsumer = null; if (!isInCheckNoChangesPass) { if (viewShouldHaveReactiveConsumer(tView)) { currentConsumer = getOrBorrowReactiveLViewConsumer(lView); prevConsumer = consumerBeforeComputation(currentConsumer); } else if (getActiveConsumer() === null) { returnConsumerToPool = false; currentConsumer = getOrCreateTemporaryConsumer(lView); prevConsumer = consumerBeforeComputation(currentConsumer); } else if (lView[REACTIVE_TEMPLATE_CONSUMER]) { consumerDestroy(lView[REACTIVE_TEMPLATE_CONSUMER]); lView[REACTIVE_TEMPLATE_CONSUMER] = null; } } try { resetPreOrderHookFlags(lView); setBindingIndex(tView.bindingStartIndex); if (templateFn !== null) { executeTemplate(tView, lView, templateFn, 2, context2); } const hooksInitPhaseCompleted = (flags & 3) === 3; if (!isInCheckNoChangesPass) { if (hooksInitPhaseCompleted) { const preOrderCheckHooks = tView.preOrderCheckHooks; if (preOrderCheckHooks !== null) { executeCheckHooks(lView, preOrderCheckHooks, null); } } else { const preOrderHooks = tView.preOrderHooks; if (preOrderHooks !== null) { executeInitAndCheckHooks(lView, preOrderHooks, 0, null); } incrementInitPhaseFlags( lView, 0 /* InitPhaseState.OnInitHooksToBeRun */ ); } } if (!isInExhaustiveCheckNoChangesPass) { markTransplantedViewsForRefresh(lView); } runEffectsInView(lView); detectChangesInEmbeddedViews( lView, 0 /* ChangeDetectionMode.Global */ ); if (tView.contentQueries !== null) { refreshContentQueries(tView, lView); } if (!isInCheckNoChangesPass) { if (hooksInitPhaseCompleted) { const contentCheckHooks = tView.contentCheckHooks; if (contentCheckHooks !== null) { executeCheckHooks(lView, contentCheckHooks); } } else { const contentHooks = tView.contentHooks; if (contentHooks !== null) { executeInitAndCheckHooks( lView, contentHooks, 1 /* InitPhaseState.AfterContentInitHooksToBeRun */ ); } incrementInitPhaseFlags( lView, 1 /* InitPhaseState.AfterContentInitHooksToBeRun */ ); } } processHostBindingOpCodes(tView, lView); const components = tView.components; if (components !== null) { detectChangesInChildComponents( lView, components, 0 /* ChangeDetectionMode.Global */ ); } const viewQuery = tView.viewQuery; if (viewQuery !== null) { executeViewQueryFn(2, viewQuery, context2); } if (!isInCheckNoChangesPass) { if (hooksInitPhaseCompleted) { const viewCheckHooks = tView.viewCheckHooks; if (viewCheckHooks !== null) { executeCheckHooks(lView, viewCheckHooks); } } else { const viewHooks = tView.viewHooks; if (viewHooks !== null) { executeInitAndCheckHooks( lView, viewHooks, 2 /* InitPhaseState.AfterViewInitHooksToBeRun */ ); } incrementInitPhaseFlags( lView, 2 /* InitPhaseState.AfterViewInitHooksToBeRun */ ); } } if (tView.firstUpdatePass === true) { tView.firstUpdatePass = false; } if (lView[EFFECTS_TO_SCHEDULE]) { for (const notifyEffect of lView[EFFECTS_TO_SCHEDULE]) { notifyEffect(); } lView[EFFECTS_TO_SCHEDULE] = null; } if (!isInCheckNoChangesPass) { addAfterRenderSequencesForView(lView); lView[FLAGS] &= ~(64 | 8); } } catch (e) { if (!isInCheckNoChangesPass) { markAncestorsForTraversal(lView); } throw e; } finally { if (currentConsumer !== null) { consumerAfterComputation(currentConsumer, prevConsumer); if (returnConsumerToPool) { maybeReturnReactiveLViewConsumer(currentConsumer); } } leaveView(); } } function detectChangesInEmbeddedViews(lView, mode) { for (let lContainer = getFirstLContainer(lView); lContainer !== null; lContainer = getNextLContainer(lContainer)) { for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) { const embeddedLView = lContainer[i]; detectChangesInViewIfAttached(embeddedLView, mode); } } } function markTransplantedViewsForRefresh(lView) { for (let lContainer = getFirstLContainer(lView); lContainer !== null; lContainer = getNextLContainer(lContainer)) { if (!(lContainer[FLAGS] & 2)) continue; const movedViews = lContainer[MOVED_VIEWS]; ngDevMode && assertDefined(movedViews, "Transplanted View flags set but missing MOVED_VIEWS"); for (let i = 0; i < movedViews.length; i++) { const movedLView = movedViews[i]; markViewForRefresh(movedLView); } } } function detectChangesInComponent(hostLView, componentHostIdx, mode) { ngDevMode && assertEqual(isCreationMode(hostLView), false, "Should be run in update mode"); profiler( 18 /* ProfilerEvent.ComponentStart */ ); const componentView = getComponentLViewByIndex(componentHostIdx, hostLView); detectChangesInViewIfAttached(componentView, mode); profiler(19, componentView[CONTEXT]); } function detectChangesInViewIfAttached(lView, mode) { if (!viewAttachedToChangeDetector(lView)) { return; } detectChangesInView(lView, mode); } function detectChangesInView(lView, mode) { const isInCheckNoChangesPass = ngDevMode && isInCheckNoChangesMode(); const tView = lView[TVIEW]; const flags = lView[FLAGS]; const consumer = lView[REACTIVE_TEMPLATE_CONSUMER]; let shouldRefreshView = !!(mode === 0 && flags & 16); shouldRefreshView ||= !!(flags & 64 && mode === 0 && !isInCheckNoChangesPass); shouldRefreshView ||= !!(flags & 1024); shouldRefreshView ||= !!(consumer?.dirty && consumerPollProducersForChange(consumer)); shouldRefreshView ||= !!(ngDevMode && isExhaustiveCheckNoChanges()); if (consumer) { consumer.dirty = false; } lView[FLAGS] &= -9217; if (shouldRefreshView) { refreshView(tView, lView, tView.template, lView[CONTEXT]); } else if (flags & 8192) { if (!isInCheckNoChangesPass) { runEffectsInView(lView); } detectChangesInEmbeddedViews( lView, 1 /* ChangeDetectionMode.Targeted */ ); const components = tView.components; if (components !== null) { detectChangesInChildComponents( lView, components, 1 /* ChangeDetectionMode.Targeted */ ); } if (!isInCheckNoChangesPass) { addAfterRenderSequencesForView(lView); } } } function detectChangesInChildComponents(hostLView, components, mode) { for (let i = 0; i < components.length; i++) { detectChangesInComponent(hostLView, components[i], mode); } } function processHostBindingOpCodes(tView, lView) { const hostBindingOpCodes = tView.hostBindingOpCodes; if (hostBindingOpCodes === null) return; try { for (let i = 0; i < hostBindingOpCodes.length; i++) { const opCode = hostBindingOpCodes[i]; if (opCode < 0) { setSelectedIndex(~opCode); } else { const directiveIdx = opCode; const bindingRootIndx = hostBindingOpCodes[++i]; const hostBindingFn = hostBindingOpCodes[++i]; setBindingRootForHostBindings(bindingRootIndx, directiveIdx); const context2 = lView[directiveIdx]; profiler(24, context2); hostBindingFn(2, context2); profiler(25, context2); } } } finally { setSelectedIndex(-1); } } function markViewDirty(lView, source) { const dirtyBitsToUse = isRefreshingViews() ? ( // When we are actively refreshing views, we only use the `Dirty` bit to mark a view 64 ) : ( // When we are not actively refreshing a view tree, it is absolutely // valid to update state and mark views dirty. We use the `RefreshView` flag in this // case to allow synchronously rerunning change detection. This applies today to // afterRender hooks as well as animation listeners which execute after detecting // changes in a view when the render factory flushes. 1024 | 64 ); lView[ENVIRONMENT].changeDetectionScheduler?.notify(source); while (lView) { lView[FLAGS] |= dirtyBitsToUse; const parent = getLViewParent(lView); if (isRootView(lView) && !parent) { return lView; } lView = parent; } return null; } function createLContainer(hostNative, currentView, native, tNode) { ngDevMode && assertLView(currentView); const lContainer = [ hostNative, // host native true, // Boolean `true` in this position signifies that this is an `LContainer` 0, // flags currentView, // parent null, // next tNode, // t_host null, // dehydrated views native, // native, null, // view refs null // moved views ]; ngDevMode && assertEqual(lContainer.length, CONTAINER_HEADER_OFFSET, "Should allocate correct number of slots for LContainer header."); return lContainer; } function getLViewFromLContainer(lContainer, index) { const adjustedIndex = CONTAINER_HEADER_OFFSET + index; if (adjustedIndex < lContainer.length) { const lView = lContainer[adjustedIndex]; ngDevMode && assertLView(lView); return lView; } return void 0; } function addLViewToLContainer(lContainer, lView, index, addToDOM = true) { const tView = lView[TVIEW]; insertView(tView, lView, lContainer, index); if (addToDOM) { const beforeNode = getBeforeNodeForView(index, lContainer); const renderer = lView[RENDERER]; const parentRNode = renderer.parentNode(lContainer[NATIVE]); if (parentRNode !== null) { addViewToDOM(tView, lContainer[T_HOST], renderer, lView, parentRNode, beforeNode); } } const hydrationInfo = lView[HYDRATION]; if (hydrationInfo !== null && hydrationInfo.firstChild !== null) { hydrationInfo.firstChild = null; } } function removeLViewFromLContainer(lContainer, index) { const lView = detachView(lContainer, index); if (lView !== void 0) { destroyLView(lView[TVIEW], lView); } return lView; } function detachView(lContainer, removeIndex) { if (lContainer.length <= CONTAINER_HEADER_OFFSET) return; const indexInContainer = CONTAINER_HEADER_OFFSET + removeIndex; const viewToDetach = lContainer[indexInContainer]; if (viewToDetach) { const declarationLContainer = viewToDetach[DECLARATION_LCONTAINER]; if (declarationLContainer !== null && declarationLContainer !== lContainer) { detachMovedView(declarationLContainer, viewToDetach); } if (removeIndex> 0) { lContainer[indexInContainer - 1][NEXT] = viewToDetach[NEXT]; } const removedLView = removeFromArray(lContainer, CONTAINER_HEADER_OFFSET + removeIndex); removeViewFromDOM(viewToDetach[TVIEW], viewToDetach); const lQueries = removedLView[QUERIES]; if (lQueries !== null) { lQueries.detachView(removedLView[TVIEW]); } viewToDetach[PARENT] = null; viewToDetach[NEXT] = null; viewToDetach[FLAGS] &= -129; } return viewToDetach; } function insertView(tView, lView, lContainer, index) { ngDevMode && assertLView(lView); ngDevMode && assertLContainer(lContainer); const indexInContainer = CONTAINER_HEADER_OFFSET + index; const containerLength = lContainer.length; if (index> 0) { lContainer[indexInContainer - 1][NEXT] = lView; } if (index < containerLength - CONTAINER_HEADER_OFFSET) { lView[NEXT] = lContainer[indexInContainer]; addToArray(lContainer, CONTAINER_HEADER_OFFSET + index, lView); } else { lContainer.push(lView); lView[NEXT] = null; } lView[PARENT] = lContainer; const declarationLContainer = lView[DECLARATION_LCONTAINER]; if (declarationLContainer !== null && lContainer !== declarationLContainer) { trackMovedView(declarationLContainer, lView); } const lQueries = lView[QUERIES]; if (lQueries !== null) { lQueries.insertView(tView); } updateAncestorTraversalFlagsOnAttach(lView); lView[FLAGS] |= 128; } function trackMovedView(declarationContainer, lView) { ngDevMode && assertDefined(lView, "LView required"); ngDevMode && assertLContainer(declarationContainer); const movedViews = declarationContainer[MOVED_VIEWS]; const parent = lView[PARENT]; ngDevMode && assertDefined(parent, "missing parent"); if (isLView(parent)) { declarationContainer[FLAGS] |= 2; } else { const insertedComponentLView = parent[PARENT][DECLARATION_COMPONENT_VIEW]; ngDevMode && assertDefined(insertedComponentLView, "Missing insertedComponentLView"); const declaredComponentLView = lView[DECLARATION_COMPONENT_VIEW]; ngDevMode && assertDefined(declaredComponentLView, "Missing declaredComponentLView"); if (declaredComponentLView !== insertedComponentLView) { declarationContainer[FLAGS] |= 2; } } if (movedViews === null) { declarationContainer[MOVED_VIEWS] = [lView]; } else { movedViews.push(lView); } } function injectTemplateRef() { return createTemplateRef(getCurrentTNode(), getLView()); } function createTemplateRef(hostTNode, hostLView) { if (hostTNode.type & 4) { ngDevMode && assertDefined(hostTNode.tView, "TView must be allocated"); return new R3TemplateRef(hostLView, hostTNode, createElementRef(hostTNode, hostLView)); } return null; } function getFriendlyStringFromTNodeType(tNodeType) { switch (tNodeType) { case 4: return "view container"; case 2: return "element"; case 8: return "ng-container"; case 32: return "icu"; case 64: return "i18n"; case 16: return "projection"; case 1: return "text"; case 128: return "@let"; default: return ""; } } function validateSiblingNodeExists(node) { validateNodeExists(node); if (!node.nextSibling) { const header = "During hydration Angular expected more sibling nodes to be present.\n\n"; const actual = `Actual DOM is: ${describeDomFromNode(node)} `; const footer = getHydrationErrorFooter(); const message = header + actual + footer; markRNodeAsHavingHydrationMismatch(node, "", actual); throw new RuntimeError(-501, message); } } function validateNodeExists(node, lView = null, tNode = null) { if (!node) { const header = "During hydration, Angular expected an element to be present at this location.\n\n"; let expected = ""; let footer = ""; if (lView !== null && tNode !== null) { expected = describeExpectedDom(lView, tNode, false); footer = getHydrationErrorFooter(); markRNodeAsHavingHydrationMismatch(unwrapRNode(lView[HOST]), expected, ""); } throw new RuntimeError(-502, `${header}${expected} ${footer}`); } } function stringifyTNodeAttrs(tNode) { const results = []; if (tNode.attrs) { for (let i = 0; i < tNode.attrs.length; ) { const attrName = tNode.attrs[i++]; if (typeof attrName == "number") { break; } const attrValue = tNode.attrs[i++]; results.push(`${attrName}="${shorten(attrValue)}"`); } } return results.join(" "); } function stringifyRNodeAttrs(rNode) { const results = []; for (let i = 0; i < rNode.attributes.length; i++) { const attr = rNode.attributes[i]; if (internalAttrs.has(attr.name)) continue; results.push(`${attr.name}="${shorten(attr.value)}"`); } return results.join(" "); } function describeTNode(tNode, innerContent = "\u2026") { switch (tNode.type) { case 1: const content = tNode.value ? `(${tNode.value})` : ""; return `#text${content}`; case 2: const attrs = stringifyTNodeAttrs(tNode); const tag = tNode.value.toLowerCase(); return `<${tag}${attrs ? " " + attrs : ""}>${innerContent}`; case 8: return ""; case 4: return ""; default: const typeAsString = getFriendlyStringFromTNodeType(tNode.type); return `#node(${typeAsString})`; } } function describeRNode(rNode, innerContent = "\u2026") { const node = rNode; switch (node.nodeType) { case Node.ELEMENT_NODE: const tag = node.tagName.toLowerCase(); const attrs = stringifyRNodeAttrs(node); return `<${tag}${attrs ? " " + attrs : ""}>${innerContent}`; case Node.TEXT_NODE: const content = node.textContent ? shorten(node.textContent) : ""; return `#text${content ? `(${content})` : ""}`; case Node.COMMENT_NODE: return ``; default: return `#node(${node.nodeType})`; } } function describeExpectedDom(lView, tNode, isViewContainerAnchor) { const spacer = " "; let content = ""; if (tNode.prev) { content += spacer + "\u2026\n"; content += spacer + describeTNode(tNode.prev) + "\n"; } else if (tNode.type && tNode.type & 12) { content += spacer + "\u2026\n"; } if (isViewContainerAnchor) { content += spacer + describeTNode(tNode) + "\n"; content += spacer + ` ${AT_THIS_LOCATION} `; } else { content += spacer + describeTNode(tNode) + ` ${AT_THIS_LOCATION} `; } content += spacer + "\u2026\n"; const parentRNode = tNode.type ? getParentRElement(lView[TVIEW], tNode, lView) : null; if (parentRNode) { content = describeRNode(parentRNode, "\n" + content); } return content; } function describeDomFromNode(node) { const spacer = " "; let content = ""; const currentNode = node; if (currentNode.previousSibling) { content += spacer + "\u2026\n"; content += spacer + describeRNode(currentNode.previousSibling) + "\n"; } content += spacer + describeRNode(currentNode) + ` ${AT_THIS_LOCATION} `; if (node.nextSibling) { content += spacer + "\u2026\n"; } if (node.parentNode) { content = describeRNode(currentNode.parentNode, "\n" + content); } return content; } function getHydrationErrorFooter(componentClassName) { const componentInfo = componentClassName ? `the "${componentClassName}"` : "corresponding"; return `To fix this problem: * check ${componentInfo} component for hydration-related issues * check to see if your template has valid HTML structure * or skip hydration by adding the \`ngSkipHydration\` attribute to its host node in a template `; } function stripNewlines(input2) { return input2.replace(/\s+/gm, ""); } function shorten(input2, maxLength = 50) { if (!input2) { return ""; } input2 = stripNewlines(input2); return input2.length> maxLength ? `${input2.substring(0, maxLength - 1)}\u2026` : input2; } function getInsertInFrontOfRNodeWithI18n(parentTNode, currentTNode, lView) { const tNodeInsertBeforeIndex = currentTNode.insertBeforeIndex; const insertBeforeIndex = Array.isArray(tNodeInsertBeforeIndex) ? tNodeInsertBeforeIndex[0] : tNodeInsertBeforeIndex; if (insertBeforeIndex === null) { return getInsertInFrontOfRNodeWithNoI18n(parentTNode, currentTNode, lView); } else { ngDevMode && assertIndexInRange(lView, insertBeforeIndex); return unwrapRNode(lView[insertBeforeIndex]); } } function processI18nInsertBefore(renderer, childTNode, lView, childRNode, parentRElement) { const tNodeInsertBeforeIndex = childTNode.insertBeforeIndex; if (Array.isArray(tNodeInsertBeforeIndex)) { ngDevMode && assertDomNode(childRNode); let i18nParent = childRNode; let anchorRNode = null; if (!(childTNode.type & 3)) { anchorRNode = i18nParent; i18nParent = parentRElement; } if (i18nParent !== null && childTNode.componentOffset === -1) { for (let i = 1; i < tNodeInsertBeforeIndex.length; i++) { const i18nChild = lView[tNodeInsertBeforeIndex[i]]; nativeInsertBefore(renderer, i18nParent, i18nChild, anchorRNode, false); } } } } function getOrCreateTNode(tView, index, type, name, attrs) { ngDevMode && index !== 0 && // 0 are bogus nodes and they are OK. See `createContainerRef` in // `view_engine_compatibility` for additional context. assertGreaterThanOrEqual(index, HEADER_OFFSET, "TNodes can't be in the LView header."); ngDevMode && assertPureTNodeType(type); let tNode = tView.data[index]; if (tNode === null) { tNode = createTNodeAtIndex(tView, index, type, name, attrs); if (isInI18nBlock()) { tNode.flags |= 32; } } else if (tNode.type & 64) { tNode.type = type; tNode.value = name; tNode.attrs = attrs; const parent = getCurrentParentTNode(); tNode.injectorIndex = parent === null ? -1 : parent.injectorIndex; ngDevMode && assertTNodeForTView(tNode, tView); ngDevMode && assertEqual(index, tNode.index, "Expecting same index"); } setCurrentTNode(tNode, true); return tNode; } function createTNodeAtIndex(tView, index, type, name, attrs) { const currentTNode = getCurrentTNodePlaceholderOk(); const isParent = isCurrentTNodeParent(); const parent = isParent ? currentTNode : currentTNode && currentTNode.parent; const tNode = tView.data[index] = createTNode(tView, parent, type, index, name, attrs); linkTNodeInTView(tView, tNode, currentTNode, isParent); return tNode; } function linkTNodeInTView(tView, tNode, currentTNode, isParent) { if (tView.firstChild === null) { tView.firstChild = tNode; } if (currentTNode !== null) { if (isParent) { if (currentTNode.child == null && tNode.parent !== null) { currentTNode.child = tNode; } } else { if (currentTNode.next === null) { currentTNode.next = tNode; tNode.prev = currentTNode; } } } } function createTNode(tView, tParent, type, index, value, attrs) { ngDevMode && index !== 0 && // 0 are bogus nodes and they are OK. See `createContainerRef` in // `view_engine_compatibility` for additional context. assertGreaterThanOrEqual(index, HEADER_OFFSET, "TNodes can't be in the LView header."); ngDevMode && assertNotSame(attrs, void 0, "'undefined' is not valid value for 'attrs'"); ngDevMode && ngDevMode.tNode++; ngDevMode && tParent && assertTNodeForTView(tParent, tView); let injectorIndex = tParent ? tParent.injectorIndex : -1; let flags = 0; if (isInSkipHydrationBlock1ドル()) { flags |= 128; } const tNode = { type, index, insertBeforeIndex: null, injectorIndex, directiveStart: -1, directiveEnd: -1, directiveStylingLast: -1, componentOffset: -1, propertyBindings: null, flags, providerIndexes: 0, value, attrs, mergedAttrs: null, localNames: null, initialInputs: null, inputs: null, hostDirectiveInputs: null, outputs: null, hostDirectiveOutputs: null, directiveToIndex: null, tView: null, next: null, prev: null, projectionNext: null, child: null, parent: tParent, projection: null, styles: null, stylesWithoutHost: null, residualStyles: void 0, classes: null, classesWithoutHost: null, residualClasses: void 0, classBindings: 0, styleBindings: 0 }; if (ngDevMode) { Object.seal(tNode); } return tNode; } function addTNodeAndUpdateInsertBeforeIndex(previousTNodes, newTNode) { ngDevMode && assertEqual(newTNode.insertBeforeIndex, null, "We expect that insertBeforeIndex is not set"); previousTNodes.push(newTNode); if (previousTNodes.length> 1) { for (let i = previousTNodes.length - 2; i>= 0; i--) { const existingTNode = previousTNodes[i]; if (!isI18nText(existingTNode)) { if (isNewTNodeCreatedBefore(existingTNode, newTNode) && getInsertBeforeIndex(existingTNode) === null) { setInsertBeforeIndex(existingTNode, newTNode.index); } } } } } function isI18nText(tNode) { return !(tNode.type & 64); } function isNewTNodeCreatedBefore(existingTNode, newTNode) { return isI18nText(newTNode) || existingTNode.index> newTNode.index; } function getInsertBeforeIndex(tNode) { const index = tNode.insertBeforeIndex; return Array.isArray(index) ? index[0] : index; } function setInsertBeforeIndex(tNode, value) { const index = tNode.insertBeforeIndex; if (Array.isArray(index)) { index[0] = value; } else { setI18nHandling(getInsertInFrontOfRNodeWithI18n, processI18nInsertBefore); tNode.insertBeforeIndex = value; } } function getTIcu(tView, index) { const value = tView.data[index]; if (value === null || typeof value === "string") return null; if (ngDevMode && !(value.hasOwnProperty("tView") || value.hasOwnProperty("currentCaseLViewIndex"))) { throwError2("We expect to get 'null'|'TIcu'|'TIcuContainer', but got: " + value); } const tIcu = value.hasOwnProperty("currentCaseLViewIndex") ? value : value.value; ngDevMode && assertTIcu(tIcu); return tIcu; } function setTIcu(tView, index, tIcu) { const tNode = tView.data[index]; ngDevMode && assertEqual(tNode === null || tNode.hasOwnProperty("tView"), true, "We expect to get 'null'|'TIcuContainer'"); if (tNode === null) { tView.data[index] = tIcu; } else { ngDevMode && assertTNodeType( tNode, 32 /* TNodeType.Icu */ ); tNode.value = tIcu; } } function setTNodeInsertBeforeIndex(tNode, index) { ngDevMode && assertTNode(tNode); let insertBeforeIndex = tNode.insertBeforeIndex; if (insertBeforeIndex === null) { setI18nHandling(getInsertInFrontOfRNodeWithI18n, processI18nInsertBefore); insertBeforeIndex = tNode.insertBeforeIndex = [null, index]; } else { assertEqual(Array.isArray(insertBeforeIndex), true, "Expecting array here"); insertBeforeIndex.push(index); } } function createTNodePlaceholder(tView, previousTNodes, index) { const tNode = createTNodeAtIndex(tView, index, 64, null, null); addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tNode); return tNode; } function getCurrentICUCaseIndex(tIcu, lView) { const currentCase = lView[tIcu.currentCaseLViewIndex]; return currentCase === null ? currentCase : currentCase < 0 ? ~currentCase : currentCase; } function getParentFromIcuCreateOpCode(mergedCode) { return mergedCode>>> 17; } function getRefFromIcuCreateOpCode(mergedCode) { return (mergedCode & 131070)>>> 1; } function getInstructionFromIcuCreateOpCode(mergedCode) { return mergedCode & 1; } function icuCreateOpCode(opCode, parentIdx, refIdx) { ngDevMode && assertGreaterThanOrEqual(parentIdx, 0, "Missing parent index"); ngDevMode && assertGreaterThan(refIdx, 0, "Missing ref index"); return opCode | parentIdx << 17 | refIdx << 1; } function isRootTemplateMessage(subTemplateIndex) { return subTemplateIndex === -1; } function enterIcu(state, tIcu, lView) { state.index = 0; const currentCase = getCurrentICUCaseIndex(tIcu, lView); if (currentCase !== null) { ngDevMode && assertNumberInRange(currentCase, 0, tIcu.cases.length - 1); state.removes = tIcu.remove[currentCase]; } else { state.removes = EMPTY_ARRAY; } } function icuContainerIteratorNext(state) { if (state.index < state.removes.length) { const removeOpCode = state.removes[state.index++]; ngDevMode && assertNumber(removeOpCode, "Expecting OpCode number"); if (removeOpCode> 0) { const rNode = state.lView[removeOpCode]; ngDevMode && assertDomNode(rNode); return rNode; } else { state.stack.push(state.index, state.removes); const tIcuIndex = ~removeOpCode; const tIcu = state.lView[TVIEW].data[tIcuIndex]; ngDevMode && assertTIcu(tIcu); enterIcu(state, tIcu, state.lView); return icuContainerIteratorNext(state); } } else { if (state.stack.length === 0) { return null; } else { state.removes = state.stack.pop(); state.index = state.stack.pop(); return icuContainerIteratorNext(state); } } } function loadIcuContainerVisitor() { const _state = { stack: [], index: -1 }; function icuContainerIteratorStart(tIcuContainerNode, lView) { _state.lView = lView; while (_state.stack.length) _state.stack.pop(); ngDevMode && assertTNodeForLView(tIcuContainerNode, lView); enterIcu(_state, tIcuContainerNode.value, lView); return icuContainerIteratorNext.bind(null, _state); } return icuContainerIteratorStart; } function prepareI18nBlockForHydration(lView, index, parentTNode, subTemplateIndex) { _prepareI18nBlockForHydrationImpl(lView, index, parentTNode, subTemplateIndex); } function claimDehydratedIcuCase(lView, icuIndex, caseIndex) { _claimDehydratedIcuCaseImpl(lView, icuIndex, caseIndex); } function cleanupI18nHydrationData(lView) { const hydrationInfo = lView[HYDRATION]; if (hydrationInfo) { const { i18nNodes, dehydratedIcuData: dehydratedIcuDataMap } = hydrationInfo; if (i18nNodes && dehydratedIcuDataMap) { const renderer = lView[RENDERER]; for (const dehydratedIcuData of dehydratedIcuDataMap.values()) { cleanupDehydratedIcuData(renderer, i18nNodes, dehydratedIcuData); } } hydrationInfo.i18nNodes = void 0; hydrationInfo.dehydratedIcuData = void 0; } } function cleanupDehydratedIcuData(renderer, i18nNodes, dehydratedIcuData) { for (const node of dehydratedIcuData.node.cases[dehydratedIcuData.case]) { const rNode = i18nNodes.get(node.index - HEADER_OFFSET); if (rNode) { nativeRemoveNode(renderer, rNode, false); } } } function removeDehydratedViews(lContainer) { const views = lContainer[DEHYDRATED_VIEWS] ?? []; const parentLView = lContainer[PARENT]; const renderer = parentLView[RENDERER]; const retainedViews = []; for (const view of views) { if (view.data[DEFER_BLOCK_ID] !== void 0) { retainedViews.push(view); } else { removeDehydratedView(view, renderer); ngDevMode && ngDevMode.dehydratedViewsRemoved++; } } lContainer[DEHYDRATED_VIEWS] = retainedViews; } function removeDehydratedViewList(deferBlock) { const { lContainer } = deferBlock; const dehydratedViews = lContainer[DEHYDRATED_VIEWS]; if (dehydratedViews === null) return; const parentLView = lContainer[PARENT]; const renderer = parentLView[RENDERER]; for (const view of dehydratedViews) { removeDehydratedView(view, renderer); ngDevMode && ngDevMode.dehydratedViewsRemoved++; } } function removeDehydratedView(dehydratedView, renderer) { let nodesRemoved = 0; let currentRNode = dehydratedView.firstChild; if (currentRNode) { const numNodes = dehydratedView.data[NUM_ROOT_NODES]; while (nodesRemoved < numNodes) { ngDevMode && validateSiblingNodeExists(currentRNode); const nextSibling = currentRNode.nextSibling; nativeRemoveNode(renderer, currentRNode, false); currentRNode = nextSibling; nodesRemoved++; } } } function cleanupLContainer(lContainer) { removeDehydratedViews(lContainer); const hostLView = lContainer[HOST]; if (isLView(hostLView)) { cleanupLView(hostLView); } for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) { cleanupLView(lContainer[i]); } } function cleanupLView(lView) { cleanupI18nHydrationData(lView); const tView = lView[TVIEW]; for (let i = HEADER_OFFSET; i < tView.bindingStartIndex; i++) { if (isLContainer(lView[i])) { const lContainer = lView[i]; cleanupLContainer(lContainer); } else if (isLView(lView[i])) { cleanupLView(lView[i]); } } } function cleanupDehydratedViews(appRef) { const viewRefs = appRef._views; for (const viewRef of viewRefs) { const lNode = getLNodeForHydration(viewRef); if (lNode !== null && lNode[HOST] !== null) { if (isLView(lNode)) { cleanupLView(lNode); } else { cleanupLContainer(lNode); } ngDevMode && ngDevMode.dehydratedViewsCleanupRuns++; } } } function cleanupHydratedDeferBlocks(deferBlock, hydratedBlocks, registry, appRef) { if (deferBlock !== null) { registry.cleanup(hydratedBlocks); cleanupLContainer(deferBlock.lContainer); cleanupDehydratedViews(appRef); } } function findMatchingDehydratedView(lContainer, template) { return _findMatchingDehydratedViewImpl(lContainer, template); } function injectRenderer2() { const lView = getLView(); const tNode = getCurrentTNode(); const nodeAtIndex = getComponentLViewByIndex(tNode.index, lView); return (isLView(nodeAtIndex) ? nodeAtIndex : lView)[RENDERER]; } function isModuleWithProviders(value) { return value.ngModule !== void 0; } function isNgModule(value) { return !!getNgModuleDef(value); } function isPipe(value) { return !!getPipeDef1ドル(value); } function isDirective(value) { return !!getDirectiveDef(value); } function isComponent(value) { return !!getComponentDef(value); } function getDependencyTypeForError(type) { if (getComponentDef(type)) return "component"; if (getDirectiveDef(type)) return "directive"; if (getPipeDef1ドル(type)) return "pipe"; return "type"; } function verifyStandaloneImport(depType, importingType) { if (isForwardRef(depType)) { depType = resolveForwardRef(depType); if (!depType) { throw new Error(`Expected forwardRef function, imported from "${stringifyForError(importingType)}", to return a standalone entity or NgModule but got "${stringifyForError(depType) || depType}".`); } } if (getNgModuleDef(depType) == null) { const def = getComponentDef(depType) || getDirectiveDef(depType) || getPipeDef1ドル(depType); if (def != null) { if (!def.standalone) { throw new Error(`The "${stringifyForError(depType)}" ${getDependencyTypeForError(depType)}, imported from "${stringifyForError(importingType)}", is not standalone. Did you forget to add the standalone: true flag?`); } } else { if (isModuleWithProviders(depType)) { throw new Error(`A module with providers was imported from "${stringifyForError(importingType)}". Modules with providers are not supported in standalone components imports.`); } else { throw new Error(`The "${stringifyForError(depType)}" type, imported from "${stringifyForError(importingType)}", must be a standalone component / directive / pipe or an NgModule. Did you forget to add the required @Component / @Directive / @Pipe or @NgModule annotation?`); } } } } function addSet(sourceSet, targetSet) { for (const m of sourceSet) { targetSet.add(m); } } function computeStaticStyling(tNode, attrs, writeToHost) { ngDevMode && assertFirstCreatePass(getTView(), "Expecting to be called in first template pass only"); let styles = writeToHost ? tNode.styles : null; let classes = writeToHost ? tNode.classes : null; let mode = 0; if (attrs !== null) { for (let i = 0; i < attrs.length; i++) { const value = attrs[i]; if (typeof value === "number") { mode = value; } else if (mode == 1) { classes = concatStringsWithSpace(classes, value); } else if (mode == 2) { const style = value; const styleValue = attrs[++i]; styles = concatStringsWithSpace(styles, style + ": " + styleValue + ";"); } } } writeToHost ? tNode.styles = styles : tNode.stylesWithoutHost = styles; writeToHost ? tNode.classes = classes : tNode.classesWithoutHost = classes; } function \u0275\u0275directiveInject(token, flags = InjectFlags.Default) { const lView = getLView(); if (lView === null) { ngDevMode && assertInjectImplementationNotEqual(\u0275\u0275directiveInject); return \u0275\u0275inject(token, flags); } const tNode = getCurrentTNode(); const value = getOrCreateInjectable(tNode, lView, resolveForwardRef(token), flags); ngDevMode && emitInjectEvent(token, value, flags); return value; } function \u0275\u0275invalidFactory() { const msg = ngDevMode ? `This constructor was not compatible with Dependency Injection.` : "invalid"; throw new Error(msg); } function resolveDirectives(tView, lView, tNode, localRefs, directiveMatcher) { ngDevMode && assertFirstCreatePass(tView); const exportsMap = localRefs === null ? null : { "": -1 }; const matchedDirectiveDefs = directiveMatcher(tView, tNode); if (matchedDirectiveDefs !== null) { let directiveDefs; let hostDirectiveDefs = null; let hostDirectiveRanges = null; const hostDirectiveResolution = resolveHostDirectives(matchedDirectiveDefs); if (hostDirectiveResolution === null) { directiveDefs = matchedDirectiveDefs; } else { [directiveDefs, hostDirectiveDefs, hostDirectiveRanges] = hostDirectiveResolution; } initializeDirectives(tView, lView, tNode, directiveDefs, exportsMap, hostDirectiveDefs, hostDirectiveRanges); } if (exportsMap !== null && localRefs !== null) { cacheMatchingLocalNames(tNode, localRefs, exportsMap); } } function cacheMatchingLocalNames(tNode, localRefs, exportsMap) { const localNames = tNode.localNames = []; for (let i = 0; i < localRefs.length; i += 2) { const index = exportsMap[localRefs[i + 1]]; if (index == null) throw new RuntimeError(-301, ngDevMode && `Export of name '${localRefs[i + 1]}' not found!`); localNames.push(localRefs[i], index); } } function resolveHostDirectives(matches) { let componentDef = null; let hasHostDirectives = false; for (let i = 0; i < matches.length; i++) { const def = matches[i]; if (i === 0 && isComponentDef(def)) { componentDef = def; } if (def.findHostDirectiveDefs !== null) { hasHostDirectives = true; break; } } if (!hasHostDirectives) { return null; } let allDirectiveDefs = null; let hostDirectiveDefs = null; let hostDirectiveRanges = null; for (const def of matches) { if (def.findHostDirectiveDefs !== null) { allDirectiveDefs ??= []; hostDirectiveDefs ??= /* @__PURE__ */ new Map(); hostDirectiveRanges ??= /* @__PURE__ */ new Map(); resolveHostDirectivesForDef(def, allDirectiveDefs, hostDirectiveRanges, hostDirectiveDefs); } if (def === componentDef) { allDirectiveDefs ??= []; allDirectiveDefs.push(def); } } if (allDirectiveDefs !== null) { allDirectiveDefs.push(...componentDef === null ? matches : matches.slice(1)); ngDevMode && assertNoDuplicateDirectives(allDirectiveDefs); return [allDirectiveDefs, hostDirectiveDefs, hostDirectiveRanges]; } return null; } function resolveHostDirectivesForDef(def, allDirectiveDefs, hostDirectiveRanges, hostDirectiveDefs) { ngDevMode && assertDefined(def.findHostDirectiveDefs, "Expected host directive resolve function"); const start = allDirectiveDefs.length; def.findHostDirectiveDefs(def, allDirectiveDefs, hostDirectiveDefs); hostDirectiveRanges.set(def, [start, allDirectiveDefs.length - 1]); } function markAsComponentHost(tView, hostTNode, componentOffset) { ngDevMode && assertFirstCreatePass(tView); ngDevMode && assertGreaterThan(componentOffset, -1, "componentOffset must be great than -1"); hostTNode.componentOffset = componentOffset; (tView.components ??= []).push(hostTNode.index); } function initializeDirectives(tView, lView, tNode, directives, exportsMap, hostDirectiveDefs, hostDirectiveRanges) { ngDevMode && assertFirstCreatePass(tView); const directivesLength = directives.length; let hasSeenComponent = false; for (let i = 0; i < directivesLength; i++) { const def = directives[i]; if (!hasSeenComponent && isComponentDef(def)) { hasSeenComponent = true; markAsComponentHost(tView, tNode, i); } diPublicInInjector(getOrCreateNodeInjectorForNode(tNode, lView), tView, def.type); } initTNodeFlags(tNode, tView.data.length, directivesLength); for (let i = 0; i < directivesLength; i++) { const def = directives[i]; if (def.providersResolver) def.providersResolver(def); } let preOrderHooksFound = false; let preOrderCheckHooksFound = false; let directiveIdx = allocExpando(tView, lView, directivesLength, null); ngDevMode && assertSame(directiveIdx, tNode.directiveStart, "TNode.directiveStart should point to just allocated space"); if (directivesLength> 0) { tNode.directiveToIndex = /* @__PURE__ */ new Map(); } for (let i = 0; i < directivesLength; i++) { const def = directives[i]; tNode.mergedAttrs = mergeHostAttrs(tNode.mergedAttrs, def.hostAttrs); configureViewWithDirective(tView, tNode, lView, directiveIdx, def); saveNameToExportMap(directiveIdx, def, exportsMap); if (hostDirectiveRanges !== null && hostDirectiveRanges.has(def)) { const [start, end] = hostDirectiveRanges.get(def); tNode.directiveToIndex.set(def.type, [directiveIdx, start + tNode.directiveStart, end + tNode.directiveStart]); } else if (hostDirectiveDefs === null || !hostDirectiveDefs.has(def)) { tNode.directiveToIndex.set(def.type, directiveIdx); } if (def.contentQueries !== null) tNode.flags |= 4; if (def.hostBindings !== null || def.hostAttrs !== null || def.hostVars !== 0) tNode.flags |= 64; const lifeCycleHooks = def.type.prototype; if (!preOrderHooksFound && (lifeCycleHooks.ngOnChanges || lifeCycleHooks.ngOnInit || lifeCycleHooks.ngDoCheck)) { (tView.preOrderHooks ??= []).push(tNode.index); preOrderHooksFound = true; } if (!preOrderCheckHooksFound && (lifeCycleHooks.ngOnChanges || lifeCycleHooks.ngDoCheck)) { (tView.preOrderCheckHooks ??= []).push(tNode.index); preOrderCheckHooksFound = true; } directiveIdx++; } initializeInputAndOutputAliases(tView, tNode, hostDirectiveDefs); } function initializeInputAndOutputAliases(tView, tNode, hostDirectiveDefs) { ngDevMode && assertFirstCreatePass(tView); for (let index = tNode.directiveStart; index < tNode.directiveEnd; index++) { const directiveDef = tView.data[index]; if (hostDirectiveDefs === null || !hostDirectiveDefs.has(directiveDef)) { setupSelectorMatchedInputsOrOutputs(0, tNode, directiveDef, index); setupSelectorMatchedInputsOrOutputs(1, tNode, directiveDef, index); setupInitialInputs(tNode, index, false); } else { const hostDirectiveDef = hostDirectiveDefs.get(directiveDef); setupHostDirectiveInputsOrOutputs(0, tNode, hostDirectiveDef, index); setupHostDirectiveInputsOrOutputs(1, tNode, hostDirectiveDef, index); setupInitialInputs(tNode, index, true); } } } function setupSelectorMatchedInputsOrOutputs(mode, tNode, def, directiveIndex) { const aliasMap = mode === 0 ? def.inputs : def.outputs; for (const publicName in aliasMap) { if (aliasMap.hasOwnProperty(publicName)) { let bindings; if (mode === 0) { bindings = tNode.inputs ??= {}; } else { bindings = tNode.outputs ??= {}; } bindings[publicName] ??= []; bindings[publicName].push(directiveIndex); setShadowStylingInputFlags(tNode, publicName); } } } function setupHostDirectiveInputsOrOutputs(mode, tNode, config2, directiveIndex) { const aliasMap = mode === 0 ? config2.inputs : config2.outputs; for (const initialName in aliasMap) { if (aliasMap.hasOwnProperty(initialName)) { const publicName = aliasMap[initialName]; let bindings; if (mode === 0) { bindings = tNode.hostDirectiveInputs ??= {}; } else { bindings = tNode.hostDirectiveOutputs ??= {}; } bindings[publicName] ??= []; bindings[publicName].push(directiveIndex, initialName); setShadowStylingInputFlags(tNode, publicName); } } } function setShadowStylingInputFlags(tNode, publicName) { if (publicName === "class") { tNode.flags |= 8; } else if (publicName === "style") { tNode.flags |= 16; } } function setupInitialInputs(tNode, directiveIndex, isHostDirective) { const { attrs, inputs, hostDirectiveInputs } = tNode; if (attrs === null || !isHostDirective && inputs === null || isHostDirective && hostDirectiveInputs === null || // Do not use unbound attributes as inputs to structural directives, since structural // directive inputs can only be set using microsyntax (e.g. `
`). isInlineTemplate(tNode)) { tNode.initialInputs ??= []; tNode.initialInputs.push(null); return; } let inputsToStore = null; let i = 0; while (i < attrs.length) { const attrName = attrs[i]; if (attrName === 0) { i += 4; continue; } else if (attrName === 5) { i += 2; continue; } else if (typeof attrName === "number") { break; } if (!isHostDirective && inputs.hasOwnProperty(attrName)) { const inputConfig = inputs[attrName]; for (const index of inputConfig) { if (index === directiveIndex) { inputsToStore ??= []; inputsToStore.push(attrName, attrs[i + 1]); break; } } } else if (isHostDirective && hostDirectiveInputs.hasOwnProperty(attrName)) { const config2 = hostDirectiveInputs[attrName]; for (let j = 0; j < config2.length; j += 2) { if (config2[j] === directiveIndex) { inputsToStore ??= []; inputsToStore.push(config2[j + 1], attrs[i + 1]); break; } } } i += 2; } tNode.initialInputs ??= []; tNode.initialInputs.push(inputsToStore); } function configureViewWithDirective(tView, tNode, lView, directiveIndex, def) { ngDevMode && assertGreaterThanOrEqual(directiveIndex, HEADER_OFFSET, "Must be in Expando section"); tView.data[directiveIndex] = def; const directiveFactory = def.factory || (def.factory = getFactoryDef(def.type, true)); const nodeInjectorFactory = new NodeInjectorFactory(directiveFactory, isComponentDef(def), \u0275\u0275directiveInject); tView.blueprint[directiveIndex] = nodeInjectorFactory; lView[directiveIndex] = nodeInjectorFactory; registerHostBindingOpCodes(tView, tNode, directiveIndex, allocExpando(tView, lView, def.hostVars, NO_CHANGE), def); } function registerHostBindingOpCodes(tView, tNode, directiveIdx, directiveVarsIdx, def) { ngDevMode && assertFirstCreatePass(tView); const hostBindings = def.hostBindings; if (hostBindings) { let hostBindingOpCodes = tView.hostBindingOpCodes; if (hostBindingOpCodes === null) { hostBindingOpCodes = tView.hostBindingOpCodes = []; } const elementIndx = ~tNode.index; if (lastSelectedElementIdx(hostBindingOpCodes) != elementIndx) { hostBindingOpCodes.push(elementIndx); } hostBindingOpCodes.push(directiveIdx, directiveVarsIdx, hostBindings); } } function lastSelectedElementIdx(hostBindingOpCodes) { let i = hostBindingOpCodes.length; while (i> 0) { const value = hostBindingOpCodes[--i]; if (typeof value === "number" && value < 0) { return value; } } return 0; } function saveNameToExportMap(directiveIdx, def, exportsMap) { if (exportsMap) { if (def.exportAs) { for (let i = 0; i < def.exportAs.length; i++) { exportsMap[def.exportAs[i]] = directiveIdx; } } if (isComponentDef(def)) exportsMap[""] = directiveIdx; } } function initTNodeFlags(tNode, index, numberOfDirectives) { ngDevMode && assertNotEqual(numberOfDirectives, tNode.directiveEnd - tNode.directiveStart, "Reached the max number of directives"); tNode.flags |= 1; tNode.directiveStart = index; tNode.directiveEnd = index + numberOfDirectives; tNode.providerIndexes = index; } function assertNoDuplicateDirectives(directives) { if (directives.length < 2) { return; } const seenDirectives = /* @__PURE__ */ new Set(); for (const current of directives) { if (seenDirectives.has(current)) { throw new RuntimeError(309, `Directive ${current.type.name} matches multiple times on the same element. Directives can only match an element once.`); } seenDirectives.add(current); } } function elementStartFirstCreatePass(index, tView, lView, name, directiveMatcher, bindingsEnabled, attrsIndex, localRefsIndex) { ngDevMode && assertFirstCreatePass(tView); ngDevMode && ngDevMode.firstCreatePass++; const tViewConsts = tView.consts; const attrs = getConstant(tViewConsts, attrsIndex); const tNode = getOrCreateTNode(tView, index, 2, name, attrs); if (bindingsEnabled) { resolveDirectives(tView, lView, tNode, getConstant(tViewConsts, localRefsIndex), directiveMatcher); } tNode.mergedAttrs = mergeHostAttrs(tNode.mergedAttrs, tNode.attrs); if (tNode.attrs !== null) { computeStaticStyling(tNode, tNode.attrs, false); } if (tNode.mergedAttrs !== null) { computeStaticStyling(tNode, tNode.mergedAttrs, true); } if (tView.queries !== null) { tView.queries.elementStart(tView, tNode); } return tNode; } function elementEndFirstCreatePass(tView, tNode) { ngDevMode && assertFirstCreatePass(tView); registerPostOrderHooks(tView, tNode); if (isContentQueryHost(tNode)) { tView.queries.elementEnd(tNode); } } function toInputRefArray(map2) { return Object.keys(map2).map((name) => { const [propName, flags, transform] = map2[name]; const inputData = { propName, templateName: name, isSignal: (flags & InputFlags.SignalBased) !== 0 }; if (transform) { inputData.transform = transform; } return inputData; }); } function toOutputRefArray(map2) { return Object.keys(map2).map((name) => ({ propName: map2[name], templateName: name })); } function verifyNotAnOrphanComponent(componentDef) { if (false) { if (depsTracker.isOrphanComponent(componentDef.type)) { throw new RuntimeError(981, `Orphan component found! Trying to render the component ${debugStringifyTypeForError(componentDef.type)} without first loading the NgModule that declares it. It is recommended to make this component standalone in order to avoid this error. If this is not possible now, import the component's NgModule in the appropriate NgModule, or the standalone component in which you are trying to render this component. If this is a lazy import, load the NgModule lazily as well and use its module injector.`); } } } function createRootViewInjector(componentDef, environmentInjector, injector) { let realEnvironmentInjector = environmentInjector instanceof EnvironmentInjector ? environmentInjector : environmentInjector?.injector; if (realEnvironmentInjector && componentDef.getStandaloneInjector !== null) { realEnvironmentInjector = componentDef.getStandaloneInjector(realEnvironmentInjector) || realEnvironmentInjector; } const rootViewInjector = realEnvironmentInjector ? new ChainedInjector(injector, realEnvironmentInjector) : injector; return rootViewInjector; } function createRootLViewEnvironment(rootLViewInjector) { const rendererFactory = rootLViewInjector.get(RendererFactory2, null); if (rendererFactory === null) { throw new RuntimeError(407, ngDevMode && "Angular was not able to inject a renderer (RendererFactory2). Likely this is due to a broken DI hierarchy. Make sure that any injector used to create this component has a correct parent."); } const sanitizer = rootLViewInjector.get(Sanitizer, null); const changeDetectionScheduler = rootLViewInjector.get(ChangeDetectionScheduler, null); return { rendererFactory, sanitizer, changeDetectionScheduler }; } function createHostElement(componentDef, render) { const tagName = (componentDef.selectors[0][0] || "div").toLowerCase(); const namespace = tagName === "svg" ? SVG_NAMESPACE : tagName === "math" ? MATH_ML_NAMESPACE : null; return createElementNode(render, tagName, namespace); } function projectNodes(tNode, ngContentSelectors, projectableNodes) { const projection = tNode.projection = []; for (let i = 0; i < ngContentSelectors.length; i++) { const nodesforSlot = projectableNodes[i]; projection.push(nodesforSlot != null && nodesforSlot.length ? Array.from(nodesforSlot) : null); } } function injectViewContainerRef() { const previousTNode = getCurrentTNode(); return createContainerRef(previousTNode, getLView()); } function getViewRefs(lContainer) { return lContainer[VIEW_REFS]; } function getOrCreateViewRefs(lContainer) { return lContainer[VIEW_REFS] || (lContainer[VIEW_REFS] = []); } function createContainerRef(hostTNode, hostLView) { ngDevMode && assertTNodeType( hostTNode, 12 | 3 /* TNodeType.AnyRNode */ ); let lContainer; const slotValue = hostLView[hostTNode.index]; if (isLContainer(slotValue)) { lContainer = slotValue; } else { lContainer = createLContainer(slotValue, hostLView, null, hostTNode); hostLView[hostTNode.index] = lContainer; addToEndOfViewTree(hostLView, lContainer); } _locateOrCreateAnchorNode(lContainer, hostLView, hostTNode, slotValue); return new R3ViewContainerRef(lContainer, hostTNode, hostLView); } function insertAnchorNode(hostLView, hostTNode) { const renderer = hostLView[RENDERER]; ngDevMode && ngDevMode.rendererCreateComment++; const commentNode = renderer.createComment(ngDevMode ? "container" : ""); const hostNative = getNativeByTNode(hostTNode, hostLView); const parentOfHostNative = renderer.parentNode(hostNative); nativeInsertBefore(renderer, parentOfHostNative, commentNode, renderer.nextSibling(hostNative), false); return commentNode; } function populateDehydratedViewsInLContainer(lContainer, tNode, hostLView) { return _populateDehydratedViewsInLContainer(lContainer, tNode, hostLView); } function createAnchorNode(lContainer, hostLView, hostTNode, slotValue) { if (lContainer[NATIVE]) return; let commentNode; if (hostTNode.type & 8) { commentNode = unwrapRNode(slotValue); } else { commentNode = insertAnchorNode(hostLView, hostTNode); } lContainer[NATIVE] = commentNode; } function getIdxOfMatchingSelector(tNode, selector) { const localNames = tNode.localNames; if (localNames !== null) { for (let i = 0; i < localNames.length; i += 2) { if (localNames[i] === selector) { return localNames[i + 1]; } } } return null; } function createResultByTNodeType(tNode, currentView) { if (tNode.type & (3 | 8)) { return createElementRef(tNode, currentView); } else if (tNode.type & 4) { return createTemplateRef(tNode, currentView); } return null; } function createResultForNode(lView, tNode, matchingIdx, read) { if (matchingIdx === -1) { return createResultByTNodeType(tNode, lView); } else if (matchingIdx === -2) { return createSpecialToken(lView, tNode, read); } else { return getNodeInjectable(lView, lView[TVIEW], matchingIdx, tNode); } } function createSpecialToken(lView, tNode, read) { if (read === ElementRef) { return createElementRef(tNode, lView); } else if (read === TemplateRef) { return createTemplateRef(tNode, lView); } else if (read === ViewContainerRef) { ngDevMode && assertTNodeType( tNode, 3 | 12 /* TNodeType.AnyContainer */ ); return createContainerRef(tNode, lView); } else { ngDevMode && throwError2(`Special token to read should be one of ElementRef, TemplateRef or ViewContainerRef but got ${stringify(read)}.`); } } function materializeViewResults(tView, lView, tQuery, queryIndex) { const lQuery = lView[QUERIES].queries[queryIndex]; if (lQuery.matches === null) { const tViewData = tView.data; const tQueryMatches = tQuery.matches; const result = []; for (let i = 0; tQueryMatches !== null && i < tQueryMatches.length; i += 2) { const matchedNodeIdx = tQueryMatches[i]; if (matchedNodeIdx < 0) { result.push(null); } else { ngDevMode && assertIndexInRange(tViewData, matchedNodeIdx); const tNode = tViewData[matchedNodeIdx]; result.push(createResultForNode(lView, tNode, tQueryMatches[i + 1], tQuery.metadata.read)); } } lQuery.matches = result; } return lQuery.matches; } function collectQueryResults(tView, lView, queryIndex, result) { const tQuery = tView.queries.getByIndex(queryIndex); const tQueryMatches = tQuery.matches; if (tQueryMatches !== null) { const lViewResults = materializeViewResults(tView, lView, tQuery, queryIndex); for (let i = 0; i < tQueryMatches.length; i += 2) { const tNodeIdx = tQueryMatches[i]; if (tNodeIdx> 0) { result.push(lViewResults[i / 2]); } else { const childQueryIndex = tQueryMatches[i + 1]; const declarationLContainer = lView[-tNodeIdx]; ngDevMode && assertLContainer(declarationLContainer); for (let i2 = CONTAINER_HEADER_OFFSET; i2 < declarationLContainer.length; i2++) { const embeddedLView = declarationLContainer[i2]; if (embeddedLView[DECLARATION_LCONTAINER] === embeddedLView[PARENT]) { collectQueryResults(embeddedLView[TVIEW], embeddedLView, childQueryIndex, result); } } if (declarationLContainer[MOVED_VIEWS] !== null) { const embeddedLViews = declarationLContainer[MOVED_VIEWS]; for (let i2 = 0; i2 < embeddedLViews.length; i2++) { const embeddedLView = embeddedLViews[i2]; collectQueryResults(embeddedLView[TVIEW], embeddedLView, childQueryIndex, result); } } } } } return result; } function loadQueryInternal(lView, queryIndex) { ngDevMode && assertDefined(lView[QUERIES], "LQueries should be defined when trying to load a query"); ngDevMode && assertIndexInRange(lView[QUERIES].queries, queryIndex); return lView[QUERIES].queries[queryIndex].queryList; } function createLQuery(tView, lView, flags) { const queryList = new QueryList( (flags & 4) === 4 /* QueryFlags.emitDistinctChangesOnly */ ); storeCleanupWithContext(tView, lView, queryList, queryList.destroy); const lQueries = (lView[QUERIES] ??= new LQueries_()).queries; return lQueries.push(new LQuery_(queryList)) - 1; } function createViewQuery(predicate, flags, read) { ngDevMode && assertNumber(flags, "Expecting flags"); const tView = getTView(); if (tView.firstCreatePass) { createTQuery(tView, new TQueryMetadata_(predicate, flags, read), -1); if ((flags & 2) === 2) { tView.staticViewQueries = true; } } return createLQuery(tView, getLView(), flags); } function createContentQuery(directiveIndex, predicate, flags, read) { ngDevMode && assertNumber(flags, "Expecting flags"); const tView = getTView(); if (tView.firstCreatePass) { const tNode = getCurrentTNode(); createTQuery(tView, new TQueryMetadata_(predicate, flags, read), tNode.index); saveContentQueryAndDirectiveIndex(tView, directiveIndex); if ((flags & 2) === 2) { tView.staticContentQueries = true; } } return createLQuery(tView, getLView(), flags); } function splitQueryMultiSelectors(locator) { return locator.split(",").map((s) => s.trim()); } function createTQuery(tView, metadata, nodeIndex) { if (tView.queries === null) tView.queries = new TQueries_(); tView.queries.track(new TQuery_(metadata, nodeIndex)); } function saveContentQueryAndDirectiveIndex(tView, directiveIndex) { const tViewContentQueries = tView.contentQueries || (tView.contentQueries = []); const lastSavedDirectiveIndex = tViewContentQueries.length ? tViewContentQueries[tViewContentQueries.length - 1] : -1; if (directiveIndex !== lastSavedDirectiveIndex) { tViewContentQueries.push(tView.queries.length - 1, directiveIndex); } } function getTQuery(tView, index) { ngDevMode && assertDefined(tView.queries, "TQueries must be defined to retrieve a TQuery"); return tView.queries.getByIndex(index); } function getQueryResults(lView, queryIndex) { const tView = lView[TVIEW]; const tQuery = getTQuery(tView, queryIndex); return tQuery.crossesNgTemplate ? collectQueryResults(tView, lView, queryIndex, []) : materializeViewResults(tView, lView, tQuery, queryIndex); } function createQuerySignalFn(firstOnly, required, opts) { let node; const signalFn = createComputed(() => { node._dirtyCounter(); const value = refreshSignalQuery(node, firstOnly); if (required && value === void 0) { throw new RuntimeError(-951, ngDevMode && "Child query result is required but no value is available."); } return value; }); node = signalFn[SIGNAL]; node._dirtyCounter = signal(0); node._flatValue = void 0; if (ngDevMode) { signalFn.toString = () => `[Query Signal]`; node.debugName = opts?.debugName; } return signalFn; } function createSingleResultOptionalQuerySignalFn(opts) { return createQuerySignalFn( /* firstOnly */ true, /* required */ false, opts ); } function createSingleResultRequiredQuerySignalFn(opts) { return createQuerySignalFn( /* firstOnly */ true, /* required */ true, opts ); } function createMultiResultQuerySignalFn(opts) { return createQuerySignalFn( /* firstOnly */ false, /* required */ false, opts ); } function bindQueryToSignal(target, queryIndex) { const node = target[SIGNAL]; node._lView = getLView(); node._queryIndex = queryIndex; node._queryList = loadQueryInternal(node._lView, queryIndex); node._queryList.onDirty(() => node._dirtyCounter.update((v) => v + 1)); } function refreshSignalQuery(node, firstOnly) { const lView = node._lView; const queryIndex = node._queryIndex; if (lView === void 0 || queryIndex === void 0 || lView[FLAGS] & 4) { return firstOnly ? void 0 : EMPTY_ARRAY; } const queryList = loadQueryInternal(lView, queryIndex); const results = getQueryResults(lView, queryIndex); queryList.reset(results, unwrapElementRef); if (firstOnly) { return queryList.first; } else { const resultChanged = queryList._changesDetected; if (resultChanged || node._flatValue === void 0) { return node._flatValue = queryList.toArray(); } return node._flatValue; } } function viewChildFn(locator, opts) { ngDevMode && assertInInjectionContext(viewChild); return createSingleResultOptionalQuerySignalFn(opts); } function viewChildRequiredFn(locator, opts) { ngDevMode && assertInInjectionContext(viewChild); return createSingleResultRequiredQuerySignalFn(opts); } function contentChildFn(locator, opts) { ngDevMode && assertInInjectionContext(contentChild); return createSingleResultOptionalQuerySignalFn(opts); } function contentChildRequiredFn(locator, opts) { ngDevMode && assertInInjectionContext(contentChildren); return createSingleResultRequiredQuerySignalFn(opts); } function contentChildren(locator, opts) { return createMultiResultQuerySignalFn(opts); } function createModelSignal(initialValue, opts) { const node = Object.create(INPUT_SIGNAL_NODE); const emitterRef = new OutputEmitterRef(); node.value = initialValue; function getter() { producerAccessed(node); assertModelSet(node.value); return node.value; } getter[SIGNAL] = node; getter.asReadonly = signalAsReadonlyFn.bind(getter); getter.set = (newValue) => { if (!node.equal(node.value, newValue)) { signalSetFn(node, newValue); emitterRef.emit(newValue); } }; getter.update = (updateFn) => { assertModelSet(node.value); getter.set(updateFn(node.value)); }; getter.subscribe = emitterRef.subscribe.bind(emitterRef); getter.destroyRef = emitterRef.destroyRef; if (ngDevMode) { getter.toString = () => `[Model Signal: ${getter()}]`; node.debugName = opts?.debugName; } return getter; } function assertModelSet(value) { if (value === REQUIRED_UNSET_VALUE) { throw new RuntimeError(952, ngDevMode && "Model is required but no value is available yet."); } } function modelFunction(initialValue, opts) { ngDevMode && assertInInjectionContext(model); return createModelSignal(initialValue, opts); } function modelRequiredFunction(opts) { ngDevMode && assertInInjectionContext(model); return createModelSignal(REQUIRED_UNSET_VALUE, opts); } function resolveComponentResources(resourceResolver) { const componentResolved = []; const urlMap = /* @__PURE__ */ new Map(); function cachedResourceResolve(url) { let promise = urlMap.get(url); if (!promise) { const resp = resourceResolver(url); urlMap.set(url, promise = resp.then(unwrapResponse)); } return promise; } componentResourceResolutionQueue.forEach((component, type) => { const promises = []; if (component.templateUrl) { promises.push(cachedResourceResolve(component.templateUrl).then((template) => { component.template = template; })); } const styles = typeof component.styles === "string" ? [component.styles] : component.styles || []; component.styles = styles; if (component.styleUrl && component.styleUrls?.length) { throw new Error("@Component cannot define both `styleUrl` and `styleUrls`. Use `styleUrl` if the component has one stylesheet, or `styleUrls` if it has multiple"); } else if (component.styleUrls?.length) { const styleOffset = component.styles.length; const styleUrls = component.styleUrls; component.styleUrls.forEach((styleUrl, index) => { styles.push(""); promises.push(cachedResourceResolve(styleUrl).then((style) => { styles[styleOffset + index] = style; styleUrls.splice(styleUrls.indexOf(styleUrl), 1); if (styleUrls.length == 0) { component.styleUrls = void 0; } })); }); } else if (component.styleUrl) { promises.push(cachedResourceResolve(component.styleUrl).then((style) => { styles.push(style); component.styleUrl = void 0; })); } const fullyResolved = Promise.all(promises).then(() => componentDefResolved(type)); componentResolved.push(fullyResolved); }); clearResolutionOfComponentResourcesQueue(); return Promise.all(componentResolved).then(() => void 0); } function maybeQueueResolutionOfComponentResources(type, metadata) { if (componentNeedsResolution(metadata)) { componentResourceResolutionQueue.set(type, metadata); componentDefPendingResolution.add(type); } } function componentNeedsResolution(component) { return !!(component.templateUrl && !component.hasOwnProperty("template") || component.styleUrls && component.styleUrls.length || component.styleUrl); } function clearResolutionOfComponentResourcesQueue() { const old = componentResourceResolutionQueue; componentResourceResolutionQueue = /* @__PURE__ */ new Map(); return old; } function isComponentResourceResolutionQueueEmpty() { return componentResourceResolutionQueue.size === 0; } function unwrapResponse(response) { return typeof response == "string" ? response : response.text(); } function componentDefResolved(type) { componentDefPendingResolution.delete(type); } function assertSameOrNotExisting(id, type, incoming) { if (type && type !== incoming && checkForDuplicateNgModules) { throw new Error(`Duplicate module registered for ${id} - ${stringify(type)} vs ${stringify(type.name)}`); } } function registerNgModuleType(ngModuleType, id) { const existing = modules.get(id) || null; assertSameOrNotExisting(id, existing, ngModuleType); modules.set(id, ngModuleType); } function \u0275\u0275validateIframeAttribute(attrValue, tagName, attrName) { const lView = getLView(); const tNode = getSelectedTNode(); const element = getNativeByTNode(tNode, lView); if (tNode.type === 2 && tagName.toLowerCase() === "iframe") { const iframe = element; iframe.src = ""; iframe.srcdoc = trustedHTMLFromString(""); nativeRemoveNode(lView[RENDERER], iframe); const errorMessage = ngDevMode && `Angular has detected that the \`${attrName}\` was applied as a binding to an