| Server IP : 3.147.158.171 / Your IP : 216.73.216.216 Web Server : Apache/2.4.67 (Amazon Linux) OpenSSL/3.5.5 System : Linux ip-172-31-2-178.us-east-2.compute.internal 6.1.172-216.329.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Wed May 20 06:31:34 UTC 2026 x86_64 User : ec2-user ( 1000) PHP Version : 8.4.21 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /tsai/cb-build/.git/objects/df/ |
Upload File : |
x �� blob 4833819 var __create = Object.create;
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __getProtoOf = Object.getPrototypeOf;
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 __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from2, except, desc) => {
if (from2 && typeof from2 === "object" || typeof from2 === "function") {
for (let key of __getOwnPropNames(from2))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from2[key], enumerable: !(desc = __getOwnPropDesc(from2, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
// node_modules/es-errors/type.js
var require_type = __commonJS({
"node_modules/es-errors/type.js"(exports, module) {
"use strict";
module.exports = TypeError;
}
});
// (disabled):node_modules/object-inspect/util.inspect
var require_util = __commonJS({
"(disabled):node_modules/object-inspect/util.inspect"() {
"use strict";
}
});
// node_modules/object-inspect/index.js
var require_object_inspect = __commonJS({
"node_modules/object-inspect/index.js"(exports, module) {
"use strict";
var hasMap = typeof Map === "function" && Map.prototype;
var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null;
var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === "function" ? mapSizeDescriptor.get : null;
var mapForEach = hasMap && Map.prototype.forEach;
var hasSet = typeof Set === "function" && Set.prototype;
var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, "size") : null;
var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === "function" ? setSizeDescriptor.get : null;
var setForEach = hasSet && Set.prototype.forEach;
var hasWeakMap = typeof WeakMap === "function" && WeakMap.prototype;
var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;
var hasWeakSet = typeof WeakSet === "function" && WeakSet.prototype;
var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;
var hasWeakRef = typeof WeakRef === "function" && WeakRef.prototype;
var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;
var booleanValueOf = Boolean.prototype.valueOf;
var objectToString = Object.prototype.toString;
var functionToString = Function.prototype.toString;
var $match = String.prototype.match;
var $slice = String.prototype.slice;
var $replace = String.prototype.replace;
var $toUpperCase = String.prototype.toUpperCase;
var $toLowerCase = String.prototype.toLowerCase;
var $test = RegExp.prototype.test;
var $concat = Array.prototype.concat;
var $join = Array.prototype.join;
var $arrSlice = Array.prototype.slice;
var $floor = Math.floor;
var bigIntValueOf = typeof BigInt === "function" ? BigInt.prototype.valueOf : null;
var gOPS = Object.getOwnPropertySymbols;
var symToString = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? Symbol.prototype.toString : null;
var hasShammedSymbols = typeof Symbol === "function" && typeof Symbol.iterator === "object";
var toStringTag = typeof Symbol === "function" && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? "object" : "symbol") ? Symbol.toStringTag : null;
var isEnumerable = Object.prototype.propertyIsEnumerable;
var gPO = (typeof Reflect === "function" ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ([].__proto__ === Array.prototype ? function(O2) {
return O2.__proto__;
} : null);
function addNumericSeparator(num, str) {
if (num === Infinity || num === -Infinity || num !== num || num && num > -1e3 && num < 1e3 || $test.call(/e/, str)) {
return str;
}
var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;
if (typeof num === "number") {
var int = num < 0 ? -$floor(-num) : $floor(num);
if (int !== num) {
var intStr = String(int);
var dec = $slice.call(str, intStr.length + 1);
return $replace.call(intStr, sepRegex, "$&_") + "." + $replace.call($replace.call(dec, /([0-9]{3})/g, "$&_"), /_$/, "");
}
}
return $replace.call(str, sepRegex, "$&_");
}
var utilInspect = require_util();
var inspectCustom = utilInspect.custom;
var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;
var quotes = {
__proto__: null,
"double": '"',
single: "'"
};
var quoteREs = {
__proto__: null,
"double": /(["\\])/g,
single: /(['\\])/g
};
module.exports = function inspect_(obj, options, depth, seen) {
var opts = options || {};
if (has2(opts, "quoteStyle") && !has2(quotes, opts.quoteStyle)) {
throw new TypeError('option "quoteStyle" must be "single" or "double"');
}
if (has2(opts, "maxStringLength") && (typeof opts.maxStringLength === "number" ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity : opts.maxStringLength !== null)) {
throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');
}
var customInspect = has2(opts, "customInspect") ? opts.customInspect : true;
if (typeof customInspect !== "boolean" && customInspect !== "symbol") {
throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");
}
if (has2(opts, "indent") && opts.indent !== null && opts.indent !== " " && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)) {
throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');
}
if (has2(opts, "numericSeparator") && typeof opts.numericSeparator !== "boolean") {
throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');
}
var numericSeparator = opts.numericSeparator;
if (typeof obj === "undefined") {
return "undefined";
}
if (obj === null) {
return "null";
}
if (typeof obj === "boolean") {
return obj ? "true" : "false";
}
if (typeof obj === "string") {
return inspectString(obj, opts);
}
if (typeof obj === "number") {
if (obj === 0) {
return Infinity / obj > 0 ? "0" : "-0";
}
var str = String(obj);
return numericSeparator ? addNumericSeparator(obj, str) : str;
}
if (typeof obj === "bigint") {
var bigIntStr = String(obj) + "n";
return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;
}
var maxDepth = typeof opts.depth === "undefined" ? 5 : opts.depth;
if (typeof depth === "undefined") {
depth = 0;
}
if (depth >= maxDepth && maxDepth > 0 && typeof obj === "object") {
return isArray3(obj) ? "[Array]" : "[Object]";
}
var indent = getIndent(opts, depth);
if (typeof seen === "undefined") {
seen = [];
} else if (indexOf2(seen, obj) >= 0) {
return "[Circular]";
}
function inspect(value, from2, noIndent) {
if (from2) {
seen = $arrSlice.call(seen);
seen.push(from2);
}
if (noIndent) {
var newOpts = {
depth: opts.depth
};
if (has2(opts, "quoteStyle")) {
newOpts.quoteStyle = opts.quoteStyle;
}
return inspect_(value, newOpts, depth + 1, seen);
}
return inspect_(value, opts, depth + 1, seen);
}
if (typeof obj === "function" && !isRegExp2(obj)) {
var name = nameOf(obj);
var keys = arrObjKeys(obj, inspect);
return "[Function" + (name ? ": " + name : " (anonymous)") + "]" + (keys.length > 0 ? " { " + $join.call(keys, ", ") + " }" : "");
}
if (isSymbol(obj)) {
var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, "$1") : symToString.call(obj);
return typeof obj === "object" && !hasShammedSymbols ? markBoxed(symString) : symString;
}
if (isElement(obj)) {
var s = "<" + $toLowerCase.call(String(obj.nodeName));
var attrs = obj.attributes || [];
for (var i = 0; i < attrs.length; i++) {
s += " " + attrs[i].name + "=" + wrapQuotes(quote(attrs[i].value), "double", opts);
}
s += ">";
if (obj.childNodes && obj.childNodes.length) {
s += "...";
}
s += "</" + $toLowerCase.call(String(obj.nodeName)) + ">";
return s;
}
if (isArray3(obj)) {
if (obj.length === 0) {
return "[]";
}
var xs = arrObjKeys(obj, inspect);
if (indent && !singleLineValues(xs)) {
return "[" + indentedJoin(xs, indent) + "]";
}
return "[ " + $join.call(xs, ", ") + " ]";
}
if (isError(obj)) {
var parts = arrObjKeys(obj, inspect);
if (!("cause" in Error.prototype) && "cause" in obj && !isEnumerable.call(obj, "cause")) {
return "{ [" + String(obj) + "] " + $join.call($concat.call("[cause]: " + inspect(obj.cause), parts), ", ") + " }";
}
if (parts.length === 0) {
return "[" + String(obj) + "]";
}
return "{ [" + String(obj) + "] " + $join.call(parts, ", ") + " }";
}
if (typeof obj === "object" && customInspect) {
if (inspectSymbol && typeof obj[inspectSymbol] === "function" && utilInspect) {
return utilInspect(obj, { depth: maxDepth - depth });
} else if (customInspect !== "symbol" && typeof obj.inspect === "function") {
return obj.inspect();
}
}
if (isMap(obj)) {
var mapParts = [];
if (mapForEach) {
mapForEach.call(obj, function(value, key) {
mapParts.push(inspect(key, obj, true) + " => " + inspect(value, obj));
});
}
return collectionOf("Map", mapSize.call(obj), mapParts, indent);
}
if (isSet(obj)) {
var setParts = [];
if (setForEach) {
setForEach.call(obj, function(value) {
setParts.push(inspect(value, obj));
});
}
return collectionOf("Set", setSize.call(obj), setParts, indent);
}
if (isWeakMap(obj)) {
return weakCollectionOf("WeakMap");
}
if (isWeakSet(obj)) {
return weakCollectionOf("WeakSet");
}
if (isWeakRef(obj)) {
return weakCollectionOf("WeakRef");
}
if (isNumber2(obj)) {
return markBoxed(inspect(Number(obj)));
}
if (isBigInt(obj)) {
return markBoxed(inspect(bigIntValueOf.call(obj)));
}
if (isBoolean2(obj)) {
return markBoxed(booleanValueOf.call(obj));
}
if (isString3(obj)) {
return markBoxed(inspect(String(obj)));
}
if (typeof window !== "undefined" && obj === window) {
return "{ [object Window] }";
}
if (typeof globalThis !== "undefined" && obj === globalThis || typeof global !== "undefined" && obj === global) {
return "{ [object globalThis] }";
}
if (!isDate2(obj) && !isRegExp2(obj)) {
var ys = arrObjKeys(obj, inspect);
var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;
var protoTag = obj instanceof Object ? "" : "null prototype";
var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? "Object" : "";
var constructorTag = isPlainObject || typeof obj.constructor !== "function" ? "" : obj.constructor.name ? obj.constructor.name + " " : "";
var tag = constructorTag + (stringTag || protoTag ? "[" + $join.call($concat.call([], stringTag || [], protoTag || []), ": ") + "] " : "");
if (ys.length === 0) {
return tag + "{}";
}
if (indent) {
return tag + "{" + indentedJoin(ys, indent) + "}";
}
return tag + "{ " + $join.call(ys, ", ") + " }";
}
return String(obj);
};
function wrapQuotes(s, defaultStyle, opts) {
var style2 = opts.quoteStyle || defaultStyle;
var quoteChar = quotes[style2];
return quoteChar + s + quoteChar;
}
function quote(s) {
return $replace.call(String(s), /"/g, """);
}
function canTrustToString(obj) {
return !toStringTag || !(typeof obj === "object" && (toStringTag in obj || typeof obj[toStringTag] !== "undefined"));
}
function isArray3(obj) {
return toStr(obj) === "[object Array]" && canTrustToString(obj);
}
function isDate2(obj) {
return toStr(obj) === "[object Date]" && canTrustToString(obj);
}
function isRegExp2(obj) {
return toStr(obj) === "[object RegExp]" && canTrustToString(obj);
}
function isError(obj) {
return toStr(obj) === "[object Error]" && canTrustToString(obj);
}
function isString3(obj) {
return toStr(obj) === "[object String]" && canTrustToString(obj);
}
function isNumber2(obj) {
return toStr(obj) === "[object Number]" && canTrustToString(obj);
}
function isBoolean2(obj) {
return toStr(obj) === "[object Boolean]" && canTrustToString(obj);
}
function isSymbol(obj) {
if (hasShammedSymbols) {
return obj && typeof obj === "object" && obj instanceof Symbol;
}
if (typeof obj === "symbol") {
return true;
}
if (!obj || typeof obj !== "object" || !symToString) {
return false;
}
try {
symToString.call(obj);
return true;
} catch (e) {
}
return false;
}
function isBigInt(obj) {
if (!obj || typeof obj !== "object" || !bigIntValueOf) {
return false;
}
try {
bigIntValueOf.call(obj);
return true;
} catch (e) {
}
return false;
}
var hasOwn = Object.prototype.hasOwnProperty || function(key) {
return key in this;
};
function has2(obj, key) {
return hasOwn.call(obj, key);
}
function toStr(obj) {
return objectToString.call(obj);
}
function nameOf(f) {
if (f.name) {
return f.name;
}
var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/);
if (m) {
return m[1];
}
return null;
}
function indexOf2(xs, x) {
if (xs.indexOf) {
return xs.indexOf(x);
}
for (var i = 0, l = xs.length; i < l; i++) {
if (xs[i] === x) {
return i;
}
}
return -1;
}
function isMap(x) {
if (!mapSize || !x || typeof x !== "object") {
return false;
}
try {
mapSize.call(x);
try {
setSize.call(x);
} catch (s) {
return true;
}
return x instanceof Map;
} catch (e) {
}
return false;
}
function isWeakMap(x) {
if (!weakMapHas || !x || typeof x !== "object") {
return false;
}
try {
weakMapHas.call(x, weakMapHas);
try {
weakSetHas.call(x, weakSetHas);
} catch (s) {
return true;
}
return x instanceof WeakMap;
} catch (e) {
}
return false;
}
function isWeakRef(x) {
if (!weakRefDeref || !x || typeof x !== "object") {
return false;
}
try {
weakRefDeref.call(x);
return true;
} catch (e) {
}
return false;
}
function isSet(x) {
if (!setSize || !x || typeof x !== "object") {
return false;
}
try {
setSize.call(x);
try {
mapSize.call(x);
} catch (m) {
return true;
}
return x instanceof Set;
} catch (e) {
}
return false;
}
function isWeakSet(x) {
if (!weakSetHas || !x || typeof x !== "object") {
return false;
}
try {
weakSetHas.call(x, weakSetHas);
try {
weakMapHas.call(x, weakMapHas);
} catch (s) {
return true;
}
return x instanceof WeakSet;
} catch (e) {
}
return false;
}
function isElement(x) {
if (!x || typeof x !== "object") {
return false;
}
if (typeof HTMLElement !== "undefined" && x instanceof HTMLElement) {
return true;
}
return typeof x.nodeName === "string" && typeof x.getAttribute === "function";
}
function inspectString(str, opts) {
if (str.length > opts.maxStringLength) {
var remaining = str.length - opts.maxStringLength;
var trailer = "... " + remaining + " more character" + (remaining > 1 ? "s" : "");
return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;
}
var quoteRE = quoteREs[opts.quoteStyle || "single"];
quoteRE.lastIndex = 0;
var s = $replace.call($replace.call(str, quoteRE, "\\$1"), /[\x00-\x1f]/g, lowbyte);
return wrapQuotes(s, "single", opts);
}
function lowbyte(c) {
var n = c.charCodeAt(0);
var x = {
8: "b",
9: "t",
10: "n",
12: "f",
13: "r"
}[n];
if (x) {
return "\\" + x;
}
return "\\x" + (n < 16 ? "0" : "") + $toUpperCase.call(n.toString(16));
}
function markBoxed(str) {
return "Object(" + str + ")";
}
function weakCollectionOf(type) {
return type + " { ? }";
}
function collectionOf(type, size, entries, indent) {
var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ", ");
return type + " (" + size + ") {" + joinedEntries + "}";
}
function singleLineValues(xs) {
for (var i = 0; i < xs.length; i++) {
if (indexOf2(xs[i], "\n") >= 0) {
return false;
}
}
return true;
}
function getIndent(opts, depth) {
var baseIndent;
if (opts.indent === " ") {
baseIndent = " ";
} else if (typeof opts.indent === "number" && opts.indent > 0) {
baseIndent = $join.call(Array(opts.indent + 1), " ");
} else {
return null;
}
return {
base: baseIndent,
prev: $join.call(Array(depth + 1), baseIndent)
};
}
function indentedJoin(xs, indent) {
if (xs.length === 0) {
return "";
}
var lineJoiner = "\n" + indent.prev + indent.base;
return lineJoiner + $join.call(xs, "," + lineJoiner) + "\n" + indent.prev;
}
function arrObjKeys(obj, inspect) {
var isArr = isArray3(obj);
var xs = [];
if (isArr) {
xs.length = obj.length;
for (var i = 0; i < obj.length; i++) {
xs[i] = has2(obj, i) ? inspect(obj[i], obj) : "";
}
}
var syms = typeof gOPS === "function" ? gOPS(obj) : [];
var symMap;
if (hasShammedSymbols) {
symMap = {};
for (var k = 0; k < syms.length; k++) {
symMap["$" + syms[k]] = syms[k];
}
}
for (var key in obj) {
if (!has2(obj, key)) {
continue;
}
if (isArr && String(Number(key)) === key && key < obj.length) {
continue;
}
if (hasShammedSymbols && symMap["$" + key] instanceof Symbol) {
continue;
} else if ($test.call(/[^\w$]/, key)) {
xs.push(inspect(key, obj) + ": " + inspect(obj[key], obj));
} else {
xs.push(key + ": " + inspect(obj[key], obj));
}
}
if (typeof gOPS === "function") {
for (var j = 0; j < syms.length; j++) {
if (isEnumerable.call(obj, syms[j])) {
xs.push("[" + inspect(syms[j]) + "]: " + inspect(obj[syms[j]], obj));
}
}
}
return xs;
}
}
});
// node_modules/side-channel-list/index.js
var require_side_channel_list = __commonJS({
"node_modules/side-channel-list/index.js"(exports, module) {
"use strict";
var inspect = require_object_inspect();
var $TypeError = require_type();
var listGetNode = function(list2, key, isDelete) {
var prev = list2;
var curr;
for (; (curr = prev.next) != null; prev = curr) {
if (curr.key === key) {
prev.next = curr.next;
if (!isDelete) {
curr.next = /** @type {NonNullable<typeof list.next>} */
list2.next;
list2.next = curr;
}
return curr;
}
}
};
var listGet = function(objects, key) {
if (!objects) {
return void 0;
}
var node = listGetNode(objects, key);
return node && node.value;
};
var listSet = function(objects, key, value) {
var node = listGetNode(objects, key);
if (node) {
node.value = value;
} else {
objects.next = /** @type {import('./list.d.ts').ListNode<typeof value, typeof key>} */
{
// eslint-disable-line no-param-reassign, no-extra-parens
key,
next: objects.next,
value
};
}
};
var listHas = function(objects, key) {
if (!objects) {
return false;
}
return !!listGetNode(objects, key);
};
var listDelete = function(objects, key) {
if (objects) {
return listGetNode(objects, key, true);
}
};
module.exports = function getSideChannelList() {
var $o;
var channel = {
assert: function(key) {
if (!channel.has(key)) {
throw new $TypeError("Side channel does not contain " + inspect(key));
}
},
"delete": function(key) {
var root = $o && $o.next;
var deletedNode = listDelete($o, key);
if (deletedNode && root && root === deletedNode) {
$o = void 0;
}
return !!deletedNode;
},
get: function(key) {
return listGet($o, key);
},
has: function(key) {
return listHas($o, key);
},
set: function(key, value) {
if (!$o) {
$o = {
next: void 0
};
}
listSet(
/** @type {NonNullable<typeof $o>} */
$o,
key,
value
);
}
};
return channel;
};
}
});
// node_modules/es-object-atoms/index.js
var require_es_object_atoms = __commonJS({
"node_modules/es-object-atoms/index.js"(exports, module) {
"use strict";
module.exports = Object;
}
});
// node_modules/es-errors/index.js
var require_es_errors = __commonJS({
"node_modules/es-errors/index.js"(exports, module) {
"use strict";
module.exports = Error;
}
});
// node_modules/es-errors/eval.js
var require_eval = __commonJS({
"node_modules/es-errors/eval.js"(exports, module) {
"use strict";
module.exports = EvalError;
}
});
// node_modules/es-errors/range.js
var require_range = __commonJS({
"node_modules/es-errors/range.js"(exports, module) {
"use strict";
module.exports = RangeError;
}
});
// node_modules/es-errors/ref.js
var require_ref = __commonJS({
"node_modules/es-errors/ref.js"(exports, module) {
"use strict";
module.exports = ReferenceError;
}
});
// node_modules/es-errors/syntax.js
var require_syntax = __commonJS({
"node_modules/es-errors/syntax.js"(exports, module) {
"use strict";
module.exports = SyntaxError;
}
});
// node_modules/es-errors/uri.js
var require_uri = __commonJS({
"node_modules/es-errors/uri.js"(exports, module) {
"use strict";
module.exports = URIError;
}
});
// node_modules/math-intrinsics/abs.js
var require_abs = __commonJS({
"node_modules/math-intrinsics/abs.js"(exports, module) {
"use strict";
module.exports = Math.abs;
}
});
// node_modules/math-intrinsics/floor.js
var require_floor = __commonJS({
"node_modules/math-intrinsics/floor.js"(exports, module) {
"use strict";
module.exports = Math.floor;
}
});
// node_modules/math-intrinsics/max.js
var require_max = __commonJS({
"node_modules/math-intrinsics/max.js"(exports, module) {
"use strict";
module.exports = Math.max;
}
});
// node_modules/math-intrinsics/min.js
var require_min = __commonJS({
"node_modules/math-intrinsics/min.js"(exports, module) {
"use strict";
module.exports = Math.min;
}
});
// node_modules/math-intrinsics/pow.js
var require_pow = __commonJS({
"node_modules/math-intrinsics/pow.js"(exports, module) {
"use strict";
module.exports = Math.pow;
}
});
// node_modules/math-intrinsics/round.js
var require_round = __commonJS({
"node_modules/math-intrinsics/round.js"(exports, module) {
"use strict";
module.exports = Math.round;
}
});
// node_modules/math-intrinsics/isNaN.js
var require_isNaN = __commonJS({
"node_modules/math-intrinsics/isNaN.js"(exports, module) {
"use strict";
module.exports = Number.isNaN || function isNaN2(a) {
return a !== a;
};
}
});
// node_modules/math-intrinsics/sign.js
var require_sign = __commonJS({
"node_modules/math-intrinsics/sign.js"(exports, module) {
"use strict";
var $isNaN = require_isNaN();
module.exports = function sign(number) {
if ($isNaN(number) || number === 0) {
return number;
}
return number < 0 ? -1 : 1;
};
}
});
// node_modules/gopd/gOPD.js
var require_gOPD = __commonJS({
"node_modules/gopd/gOPD.js"(exports, module) {
"use strict";
module.exports = Object.getOwnPropertyDescriptor;
}
});
// node_modules/gopd/index.js
var require_gopd = __commonJS({
"node_modules/gopd/index.js"(exports, module) {
"use strict";
var $gOPD = require_gOPD();
if ($gOPD) {
try {
$gOPD([], "length");
} catch (e) {
$gOPD = null;
}
}
module.exports = $gOPD;
}
});
// node_modules/es-define-property/index.js
var require_es_define_property = __commonJS({
"node_modules/es-define-property/index.js"(exports, module) {
"use strict";
var $defineProperty = Object.defineProperty || false;
if ($defineProperty) {
try {
$defineProperty({}, "a", { value: 1 });
} catch (e) {
$defineProperty = false;
}
}
module.exports = $defineProperty;
}
});
// node_modules/has-symbols/shams.js
var require_shams = __commonJS({
"node_modules/has-symbols/shams.js"(exports, module) {
"use strict";
module.exports = function hasSymbols() {
if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") {
return false;
}
if (typeof Symbol.iterator === "symbol") {
return true;
}
var obj = {};
var sym = Symbol("test");
var symObj = Object(sym);
if (typeof sym === "string") {
return false;
}
if (Object.prototype.toString.call(sym) !== "[object Symbol]") {
return false;
}
if (Object.prototype.toString.call(symObj) !== "[object Symbol]") {
return false;
}
var symVal = 42;
obj[sym] = symVal;
for (var _ in obj) {
return false;
}
if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) {
return false;
}
if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) {
return false;
}
var syms = Object.getOwnPropertySymbols(obj);
if (syms.length !== 1 || syms[0] !== sym) {
return false;
}
if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) {
return false;
}
if (typeof Object.getOwnPropertyDescriptor === "function") {
var descriptor = (
/** @type {PropertyDescriptor} */
Object.getOwnPropertyDescriptor(obj, sym)
);
if (descriptor.value !== symVal || descriptor.enumerable !== true) {
return false;
}
}
return true;
};
}
});
// node_modules/has-symbols/index.js
var require_has_symbols = __commonJS({
"node_modules/has-symbols/index.js"(exports, module) {
"use strict";
var origSymbol = typeof Symbol !== "undefined" && Symbol;
var hasSymbolSham = require_shams();
module.exports = function hasNativeSymbols() {
if (typeof origSymbol !== "function") {
return false;
}
if (typeof Symbol !== "function") {
return false;
}
if (typeof origSymbol("foo") !== "symbol") {
return false;
}
if (typeof Symbol("bar") !== "symbol") {
return false;
}
return hasSymbolSham();
};
}
});
// node_modules/get-proto/Reflect.getPrototypeOf.js
var require_Reflect_getPrototypeOf = __commonJS({
"node_modules/get-proto/Reflect.getPrototypeOf.js"(exports, module) {
"use strict";
module.exports = typeof Reflect !== "undefined" && Reflect.getPrototypeOf || null;
}
});
// node_modules/get-proto/Object.getPrototypeOf.js
var require_Object_getPrototypeOf = __commonJS({
"node_modules/get-proto/Object.getPrototypeOf.js"(exports, module) {
"use strict";
var $Object = require_es_object_atoms();
module.exports = $Object.getPrototypeOf || null;
}
});
// node_modules/function-bind/implementation.js
var require_implementation = __commonJS({
"node_modules/function-bind/implementation.js"(exports, module) {
"use strict";
var ERROR_MESSAGE = "Function.prototype.bind called on incompatible ";
var toStr = Object.prototype.toString;
var max = Math.max;
var funcType = "[object Function]";
var concatty = function concatty2(a, b) {
var arr = [];
for (var i = 0; i < a.length; i += 1) {
arr[i] = a[i];
}
for (var j = 0; j < b.length; j += 1) {
arr[j + a.length] = b[j];
}
return arr;
};
var slicy = function slicy2(arrLike, offset) {
var arr = [];
for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {
arr[j] = arrLike[i];
}
return arr;
};
var joiny = function(arr, joiner) {
var str = "";
for (var i = 0; i < arr.length; i += 1) {
str += arr[i];
if (i + 1 < arr.length) {
str += joiner;
}
}
return str;
};
module.exports = function bind2(that) {
var target = this;
if (typeof target !== "function" || toStr.apply(target) !== funcType) {
throw new TypeError(ERROR_MESSAGE + target);
}
var args = slicy(arguments, 1);
var bound;
var binder = function() {
if (this instanceof bound) {
var result = target.apply(
this,
concatty(args, arguments)
);
if (Object(result) === result) {
return result;
}
return this;
}
return target.apply(
that,
concatty(args, arguments)
);
};
var boundLength = max(0, target.length - args.length);
var boundArgs = [];
for (var i = 0; i < boundLength; i++) {
boundArgs[i] = "$" + i;
}
bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder);
if (target.prototype) {
var Empty = function Empty2() {
};
Empty.prototype = target.prototype;
bound.prototype = new Empty();
Empty.prototype = null;
}
return bound;
};
}
});
// node_modules/function-bind/index.js
var require_function_bind = __commonJS({
"node_modules/function-bind/index.js"(exports, module) {
"use strict";
var implementation = require_implementation();
module.exports = Function.prototype.bind || implementation;
}
});
// node_modules/call-bind-apply-helpers/functionCall.js
var require_functionCall = __commonJS({
"node_modules/call-bind-apply-helpers/functionCall.js"(exports, module) {
"use strict";
module.exports = Function.prototype.call;
}
});
// node_modules/call-bind-apply-helpers/functionApply.js
var require_functionApply = __commonJS({
"node_modules/call-bind-apply-helpers/functionApply.js"(exports, module) {
"use strict";
module.exports = Function.prototype.apply;
}
});
// node_modules/call-bind-apply-helpers/reflectApply.js
var require_reflectApply = __commonJS({
"node_modules/call-bind-apply-helpers/reflectApply.js"(exports, module) {
"use strict";
module.exports = typeof Reflect !== "undefined" && Reflect && Reflect.apply;
}
});
// node_modules/call-bind-apply-helpers/actualApply.js
var require_actualApply = __commonJS({
"node_modules/call-bind-apply-helpers/actualApply.js"(exports, module) {
"use strict";
var bind2 = require_function_bind();
var $apply = require_functionApply();
var $call = require_functionCall();
var $reflectApply = require_reflectApply();
module.exports = $reflectApply || bind2.call($call, $apply);
}
});
// node_modules/call-bind-apply-helpers/index.js
var require_call_bind_apply_helpers = __commonJS({
"node_modules/call-bind-apply-helpers/index.js"(exports, module) {
"use strict";
var bind2 = require_function_bind();
var $TypeError = require_type();
var $call = require_functionCall();
var $actualApply = require_actualApply();
module.exports = function callBindBasic(args) {
if (args.length < 1 || typeof args[0] !== "function") {
throw new $TypeError("a function is required");
}
return $actualApply(bind2, $call, args);
};
}
});
// node_modules/dunder-proto/get.js
var require_get = __commonJS({
"node_modules/dunder-proto/get.js"(exports, module) {
"use strict";
var callBind = require_call_bind_apply_helpers();
var gOPD = require_gopd();
var hasProtoAccessor;
try {
hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */
[].__proto__ === Array.prototype;
} catch (e) {
if (!e || typeof e !== "object" || !("code" in e) || e.code !== "ERR_PROTO_ACCESS") {
throw e;
}
}
var desc = !!hasProtoAccessor && gOPD && gOPD(
Object.prototype,
/** @type {keyof typeof Object.prototype} */
"__proto__"
);
var $Object = Object;
var $getPrototypeOf = $Object.getPrototypeOf;
module.exports = desc && typeof desc.get === "function" ? callBind([desc.get]) : typeof $getPrototypeOf === "function" ? (
/** @type {import('./get')} */
function getDunder(value) {
return $getPrototypeOf(value == null ? value : $Object(value));
}
) : false;
}
});
// node_modules/get-proto/index.js
var require_get_proto = __commonJS({
"node_modules/get-proto/index.js"(exports, module) {
"use strict";
var reflectGetProto = require_Reflect_getPrototypeOf();
var originalGetProto = require_Object_getPrototypeOf();
var getDunderProto = require_get();
module.exports = reflectGetProto ? function getProto(O2) {
return reflectGetProto(O2);
} : originalGetProto ? function getProto(O2) {
if (!O2 || typeof O2 !== "object" && typeof O2 !== "function") {
throw new TypeError("getProto: not an object");
}
return originalGetProto(O2);
} : getDunderProto ? function getProto(O2) {
return getDunderProto(O2);
} : null;
}
});
// node_modules/hasown/index.js
var require_hasown = __commonJS({
"node_modules/hasown/index.js"(exports, module) {
"use strict";
var call = Function.prototype.call;
var $hasOwn = Object.prototype.hasOwnProperty;
var bind2 = require_function_bind();
module.exports = bind2.call(call, $hasOwn);
}
});
// node_modules/get-intrinsic/index.js
var require_get_intrinsic = __commonJS({
"node_modules/get-intrinsic/index.js"(exports, module) {
"use strict";
var undefined2;
var $Object = require_es_object_atoms();
var $Error = require_es_errors();
var $EvalError = require_eval();
var $RangeError = require_range();
var $ReferenceError = require_ref();
var $SyntaxError = require_syntax();
var $TypeError = require_type();
var $URIError = require_uri();
var abs = require_abs();
var floor2 = require_floor();
var max = require_max();
var min = require_min();
var pow = require_pow();
var round2 = require_round();
var sign = require_sign();
var $Function = Function;
var getEvalledConstructor = function(expressionSyntax) {
try {
return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")();
} catch (e) {
}
};
var $gOPD = require_gopd();
var $defineProperty = require_es_define_property();
var throwTypeError = function() {
throw new $TypeError();
};
var ThrowTypeError = $gOPD ? (function() {
try {
arguments.callee;
return throwTypeError;
} catch (calleeThrows) {
try {
return $gOPD(arguments, "callee").get;
} catch (gOPDthrows) {
return throwTypeError;
}
}
})() : throwTypeError;
var hasSymbols = require_has_symbols()();
var getProto = require_get_proto();
var $ObjectGPO = require_Object_getPrototypeOf();
var $ReflectGPO = require_Reflect_getPrototypeOf();
var $apply = require_functionApply();
var $call = require_functionCall();
var needsEval = {};
var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined2 : getProto(Uint8Array);
var INTRINSICS = {
__proto__: null,
"%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError,
"%Array%": Array,
"%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer,
"%ArrayIteratorPrototype%": hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined2,
"%AsyncFromSyncIteratorPrototype%": undefined2,
"%AsyncFunction%": needsEval,
"%AsyncGenerator%": needsEval,
"%AsyncGeneratorFunction%": needsEval,
"%AsyncIteratorPrototype%": needsEval,
"%Atomics%": typeof Atomics === "undefined" ? undefined2 : Atomics,
"%BigInt%": typeof BigInt === "undefined" ? undefined2 : BigInt,
"%BigInt64Array%": typeof BigInt64Array === "undefined" ? undefined2 : BigInt64Array,
"%BigUint64Array%": typeof BigUint64Array === "undefined" ? undefined2 : BigUint64Array,
"%Boolean%": Boolean,
"%DataView%": typeof DataView === "undefined" ? undefined2 : DataView,
"%Date%": Date,
"%decodeURI%": decodeURI,
"%decodeURIComponent%": decodeURIComponent,
"%encodeURI%": encodeURI,
"%encodeURIComponent%": encodeURIComponent,
"%Error%": $Error,
"%eval%": eval,
// eslint-disable-line no-eval
"%EvalError%": $EvalError,
"%Float16Array%": typeof Float16Array === "undefined" ? undefined2 : Float16Array,
"%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array,
"%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array,
"%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry,
"%Function%": $Function,
"%GeneratorFunction%": needsEval,
"%Int8Array%": typeof Int8Array === "undefined" ? undefined2 : Int8Array,
"%Int16Array%": typeof Int16Array === "undefined" ? undefined2 : Int16Array,
"%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array,
"%isFinite%": isFinite,
"%isNaN%": isNaN,
"%IteratorPrototype%": hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined2,
"%JSON%": typeof JSON === "object" ? JSON : undefined2,
"%Map%": typeof Map === "undefined" ? undefined2 : Map,
"%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()),
"%Math%": Math,
"%Number%": Number,
"%Object%": $Object,
"%Object.getOwnPropertyDescriptor%": $gOPD,
"%parseFloat%": parseFloat,
"%parseInt%": parseInt,
"%Promise%": typeof Promise === "undefined" ? undefined2 : Promise,
"%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy,
"%RangeError%": $RangeError,
"%ReferenceError%": $ReferenceError,
"%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect,
"%RegExp%": RegExp,
"%Set%": typeof Set === "undefined" ? undefined2 : Set,
"%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()),
"%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer,
"%String%": String,
"%StringIteratorPrototype%": hasSymbols && getProto ? getProto(""[Symbol.iterator]()) : undefined2,
"%Symbol%": hasSymbols ? Symbol : undefined2,
"%SyntaxError%": $SyntaxError,
"%ThrowTypeError%": ThrowTypeError,
"%TypedArray%": TypedArray,
"%TypeError%": $TypeError,
"%Uint8Array%": typeof Uint8Array === "undefined" ? undefined2 : Uint8Array,
"%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray,
"%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array,
"%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array,
"%URIError%": $URIError,
"%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap,
"%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef,
"%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet,
"%Function.prototype.call%": $call,
"%Function.prototype.apply%": $apply,
"%Object.defineProperty%": $defineProperty,
"%Object.getPrototypeOf%": $ObjectGPO,
"%Math.abs%": abs,
"%Math.floor%": floor2,
"%Math.max%": max,
"%Math.min%": min,
"%Math.pow%": pow,
"%Math.round%": round2,
"%Math.sign%": sign,
"%Reflect.getPrototypeOf%": $ReflectGPO
};
if (getProto) {
try {
null.error;
} catch (e) {
errorProto = getProto(getProto(e));
INTRINSICS["%Error.prototype%"] = errorProto;
}
}
var errorProto;
var doEval = function doEval2(name) {
var value;
if (name === "%AsyncFunction%") {
value = getEvalledConstructor("async function () {}");
} else if (name === "%GeneratorFunction%") {
value = getEvalledConstructor("function* () {}");
} else if (name === "%AsyncGeneratorFunction%") {
value = getEvalledConstructor("async function* () {}");
} else if (name === "%AsyncGenerator%") {
var fn = doEval2("%AsyncGeneratorFunction%");
if (fn) {
value = fn.prototype;
}
} else if (name === "%AsyncIteratorPrototype%") {
var gen = doEval2("%AsyncGenerator%");
if (gen && getProto) {
value = getProto(gen.prototype);
}
}
INTRINSICS[name] = value;
return value;
};
var LEGACY_ALIASES = {
__proto__: null,
"%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"],
"%ArrayPrototype%": ["Array", "prototype"],
"%ArrayProto_entries%": ["Array", "prototype", "entries"],
"%ArrayProto_forEach%": ["Array", "prototype", "forEach"],
"%ArrayProto_keys%": ["Array", "prototype", "keys"],
"%ArrayProto_values%": ["Array", "prototype", "values"],
"%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"],
"%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"],
"%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"],
"%BooleanPrototype%": ["Boolean", "prototype"],
"%DataViewPrototype%": ["DataView", "prototype"],
"%DatePrototype%": ["Date", "prototype"],
"%ErrorPrototype%": ["Error", "prototype"],
"%EvalErrorPrototype%": ["EvalError", "prototype"],
"%Float32ArrayPrototype%": ["Float32Array", "prototype"],
"%Float64ArrayPrototype%": ["Float64Array", "prototype"],
"%FunctionPrototype%": ["Function", "prototype"],
"%Generator%": ["GeneratorFunction", "prototype"],
"%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"],
"%Int8ArrayPrototype%": ["Int8Array", "prototype"],
"%Int16ArrayPrototype%": ["Int16Array", "prototype"],
"%Int32ArrayPrototype%": ["Int32Array", "prototype"],
"%JSONParse%": ["JSON", "parse"],
"%JSONStringify%": ["JSON", "stringify"],
"%MapPrototype%": ["Map", "prototype"],
"%NumberPrototype%": ["Number", "prototype"],
"%ObjectPrototype%": ["Object", "prototype"],
"%ObjProto_toString%": ["Object", "prototype", "toString"],
"%ObjProto_valueOf%": ["Object", "prototype", "valueOf"],
"%PromisePrototype%": ["Promise", "prototype"],
"%PromiseProto_then%": ["Promise", "prototype", "then"],
"%Promise_all%": ["Promise", "all"],
"%Promise_reject%": ["Promise", "reject"],
"%Promise_resolve%": ["Promise", "resolve"],
"%RangeErrorPrototype%": ["RangeError", "prototype"],
"%ReferenceErrorPrototype%": ["ReferenceError", "prototype"],
"%RegExpPrototype%": ["RegExp", "prototype"],
"%SetPrototype%": ["Set", "prototype"],
"%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"],
"%StringPrototype%": ["String", "prototype"],
"%SymbolPrototype%": ["Symbol", "prototype"],
"%SyntaxErrorPrototype%": ["SyntaxError", "prototype"],
"%TypedArrayPrototype%": ["TypedArray", "prototype"],
"%TypeErrorPrototype%": ["TypeError", "prototype"],
"%Uint8ArrayPrototype%": ["Uint8Array", "prototype"],
"%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"],
"%Uint16ArrayPrototype%": ["Uint16Array", "prototype"],
"%Uint32ArrayPrototype%": ["Uint32Array", "prototype"],
"%URIErrorPrototype%": ["URIError", "prototype"],
"%WeakMapPrototype%": ["WeakMap", "prototype"],
"%WeakSetPrototype%": ["WeakSet", "prototype"]
};
var bind2 = require_function_bind();
var hasOwn = require_hasown();
var $concat = bind2.call($call, Array.prototype.concat);
var $spliceApply = bind2.call($apply, Array.prototype.splice);
var $replace = bind2.call($call, String.prototype.replace);
var $strSlice = bind2.call($call, String.prototype.slice);
var $exec = bind2.call($call, RegExp.prototype.exec);
var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
var reEscapeChar = /\\(\\)?/g;
var stringToPath = function stringToPath2(string) {
var first2 = $strSlice(string, 0, 1);
var last4 = $strSlice(string, -1);
if (first2 === "%" && last4 !== "%") {
throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`");
} else if (last4 === "%" && first2 !== "%") {
throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`");
}
var result = [];
$replace(string, rePropName, function(match3, number, quote, subString) {
result[result.length] = quote ? $replace(subString, reEscapeChar, "$1") : number || match3;
});
return result;
};
var getBaseIntrinsic = function getBaseIntrinsic2(name, allowMissing) {
var intrinsicName = name;
var alias;
if (hasOwn(LEGACY_ALIASES, intrinsicName)) {
alias = LEGACY_ALIASES[intrinsicName];
intrinsicName = "%" + alias[0] + "%";
}
if (hasOwn(INTRINSICS, intrinsicName)) {
var value = INTRINSICS[intrinsicName];
if (value === needsEval) {
value = doEval(intrinsicName);
}
if (typeof value === "undefined" && !allowMissing) {
throw new $TypeError("intrinsic " + name + " exists, but is not available. Please file an issue!");
}
return {
alias,
name: intrinsicName,
value
};
}
throw new $SyntaxError("intrinsic " + name + " does not exist!");
};
module.exports = function GetIntrinsic(name, allowMissing) {
if (typeof name !== "string" || name.length === 0) {
throw new $TypeError("intrinsic name must be a non-empty string");
}
if (arguments.length > 1 && typeof allowMissing !== "boolean") {
throw new $TypeError('"allowMissing" argument must be a boolean');
}
if ($exec(/^%?[^%]*%?$/, name) === null) {
throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");
}
var parts = stringToPath(name);
var intrinsicBaseName = parts.length > 0 ? parts[0] : "";
var intrinsic = getBaseIntrinsic("%" + intrinsicBaseName + "%", allowMissing);
var intrinsicRealName = intrinsic.name;
var value = intrinsic.value;
var skipFurtherCaching = false;
var alias = intrinsic.alias;
if (alias) {
intrinsicBaseName = alias[0];
$spliceApply(parts, $concat([0, 1], alias));
}
for (var i = 1, isOwn = true; i < parts.length; i += 1) {
var part = parts[i];
var first2 = $strSlice(part, 0, 1);
var last4 = $strSlice(part, -1);
if ((first2 === '"' || first2 === "'" || first2 === "`" || (last4 === '"' || last4 === "'" || last4 === "`")) && first2 !== last4) {
throw new $SyntaxError("property names with quotes must have matching quotes");
}
if (part === "constructor" || !isOwn) {
skipFurtherCaching = true;
}
intrinsicBaseName += "." + part;
intrinsicRealName = "%" + intrinsicBaseName + "%";
if (hasOwn(INTRINSICS, intrinsicRealName)) {
value = INTRINSICS[intrinsicRealName];
} else if (value != null) {
if (!(part in value)) {
if (!allowMissing) {
throw new $TypeError("base intrinsic for " + name + " exists, but the property is not available.");
}
return void undefined2;
}
if ($gOPD && i + 1 >= parts.length) {
var desc = $gOPD(value, part);
isOwn = !!desc;
if (isOwn && "get" in desc && !("originalValue" in desc.get)) {
value = desc.get;
} else {
value = value[part];
}
} else {
isOwn = hasOwn(value, part);
value = value[part];
}
if (isOwn && !skipFurtherCaching) {
INTRINSICS[intrinsicRealName] = value;
}
}
}
return value;
};
}
});
// node_modules/call-bound/index.js
var require_call_bound = __commonJS({
"node_modules/call-bound/index.js"(exports, module) {
"use strict";
var GetIntrinsic = require_get_intrinsic();
var callBindBasic = require_call_bind_apply_helpers();
var $indexOf = callBindBasic([GetIntrinsic("%String.prototype.indexOf%")]);
module.exports = function callBoundIntrinsic(name, allowMissing) {
var intrinsic = (
/** @type {(this: unknown, ...args: unknown[]) => unknown} */
GetIntrinsic(name, !!allowMissing)
);
if (typeof intrinsic === "function" && $indexOf(name, ".prototype.") > -1) {
return callBindBasic(
/** @type {const} */
[intrinsic]
);
}
return intrinsic;
};
}
});
// node_modules/side-channel-map/index.js
var require_side_channel_map = __commonJS({
"node_modules/side-channel-map/index.js"(exports, module) {
"use strict";
var GetIntrinsic = require_get_intrinsic();
var callBound = require_call_bound();
var inspect = require_object_inspect();
var $TypeError = require_type();
var $Map = GetIntrinsic("%Map%", true);
var $mapGet = callBound("Map.prototype.get", true);
var $mapSet = callBound("Map.prototype.set", true);
var $mapHas = callBound("Map.prototype.has", true);
var $mapDelete = callBound("Map.prototype.delete", true);
var $mapSize = callBound("Map.prototype.size", true);
module.exports = !!$Map && /** @type {Exclude<import('.'), false>} */
function getSideChannelMap() {
var $m;
var channel = {
assert: function(key) {
if (!channel.has(key)) {
throw new $TypeError("Side channel does not contain " + inspect(key));
}
},
"delete": function(key) {
if ($m) {
var result = $mapDelete($m, key);
if ($mapSize($m) === 0) {
$m = void 0;
}
return result;
}
return false;
},
get: function(key) {
if ($m) {
return $mapGet($m, key);
}
},
has: function(key) {
if ($m) {
return $mapHas($m, key);
}
return false;
},
set: function(key, value) {
if (!$m) {
$m = new $Map();
}
$mapSet($m, key, value);
}
};
return channel;
};
}
});
// node_modules/side-channel-weakmap/index.js
var require_side_channel_weakmap = __commonJS({
"node_modules/side-channel-weakmap/index.js"(exports, module) {
"use strict";
var GetIntrinsic = require_get_intrinsic();
var callBound = require_call_bound();
var inspect = require_object_inspect();
var getSideChannelMap = require_side_channel_map();
var $TypeError = require_type();
var $WeakMap = GetIntrinsic("%WeakMap%", true);
var $weakMapGet = callBound("WeakMap.prototype.get", true);
var $weakMapSet = callBound("WeakMap.prototype.set", true);
var $weakMapHas = callBound("WeakMap.prototype.has", true);
var $weakMapDelete = callBound("WeakMap.prototype.delete", true);
module.exports = $WeakMap ? (
/** @type {Exclude<import('.'), false>} */
function getSideChannelWeakMap() {
var $wm;
var $m;
var channel = {
assert: function(key) {
if (!channel.has(key)) {
throw new $TypeError("Side channel does not contain " + inspect(key));
}
},
"delete": function(key) {
if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) {
if ($wm) {
return $weakMapDelete($wm, key);
}
} else if (getSideChannelMap) {
if ($m) {
return $m["delete"](key);
}
}
return false;
},
get: function(key) {
if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) {
if ($wm) {
return $weakMapGet($wm, key);
}
}
return $m && $m.get(key);
},
has: function(key) {
if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) {
if ($wm) {
return $weakMapHas($wm, key);
}
}
return !!$m && $m.has(key);
},
set: function(key, value) {
if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) {
if (!$wm) {
$wm = new $WeakMap();
}
$weakMapSet($wm, key, value);
} else if (getSideChannelMap) {
if (!$m) {
$m = getSideChannelMap();
}
$m.set(key, value);
}
}
};
return channel;
}
) : getSideChannelMap;
}
});
// node_modules/side-channel/index.js
var require_side_channel = __commonJS({
"node_modules/side-channel/index.js"(exports, module) {
"use strict";
var $TypeError = require_type();
var inspect = require_object_inspect();
var getSideChannelList = require_side_channel_list();
var getSideChannelMap = require_side_channel_map();
var getSideChannelWeakMap = require_side_channel_weakmap();
var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;
module.exports = function getSideChannel() {
var $channelData;
var channel = {
assert: function(key) {
if (!channel.has(key)) {
throw new $TypeError("Side channel does not contain " + inspect(key));
}
},
"delete": function(key) {
return !!$channelData && $channelData["delete"](key);
},
get: function(key) {
return $channelData && $channelData.get(key);
},
has: function(key) {
return !!$channelData && $channelData.has(key);
},
set: function(key, value) {
if (!$channelData) {
$channelData = makeChannel();
}
$channelData.set(key, value);
}
};
return channel;
};
}
});
// node_modules/qs/lib/formats.js
var require_formats = __commonJS({
"node_modules/qs/lib/formats.js"(exports, module) {
"use strict";
var replace2 = String.prototype.replace;
var percentTwenties = /%20/g;
var Format = {
RFC1738: "RFC1738",
RFC3986: "RFC3986"
};
module.exports = {
"default": Format.RFC3986,
formatters: {
RFC1738: function(value) {
return replace2.call(value, percentTwenties, "+");
},
RFC3986: function(value) {
return String(value);
}
},
RFC1738: Format.RFC1738,
RFC3986: Format.RFC3986
};
}
});
// node_modules/qs/lib/utils.js
var require_utils = __commonJS({
"node_modules/qs/lib/utils.js"(exports, module) {
"use strict";
var formats = require_formats();
var has2 = Object.prototype.hasOwnProperty;
var isArray3 = Array.isArray;
var hexTable = (function() {
var array = [];
for (var i = 0; i < 256; ++i) {
array.push("%" + ((i < 16 ? "0" : "") + i.toString(16)).toUpperCase());
}
return array;
})();
var compactQueue = function compactQueue2(queue) {
while (queue.length > 1) {
var item = queue.pop();
var obj = item.obj[item.prop];
if (isArray3(obj)) {
var compacted = [];
for (var j = 0; j < obj.length; ++j) {
if (typeof obj[j] !== "undefined") {
compacted.push(obj[j]);
}
}
item.obj[item.prop] = compacted;
}
}
};
var arrayToObject = function arrayToObject2(source, options) {
var obj = options && options.plainObjects ? { __proto__: null } : {};
for (var i = 0; i < source.length; ++i) {
if (typeof source[i] !== "undefined") {
obj[i] = source[i];
}
}
return obj;
};
var merge3 = function merge4(target, source, options) {
if (!source) {
return target;
}
if (typeof source !== "object" && typeof source !== "function") {
if (isArray3(target)) {
target.push(source);
} else if (target && typeof target === "object") {
if (options && (options.plainObjects || options.allowPrototypes) || !has2.call(Object.prototype, source)) {
target[source] = true;
}
} else {
return [target, source];
}
return target;
}
if (!target || typeof target !== "object") {
return [target].concat(source);
}
var mergeTarget = target;
if (isArray3(target) && !isArray3(source)) {
mergeTarget = arrayToObject(target, options);
}
if (isArray3(target) && isArray3(source)) {
source.forEach(function(item, i) {
if (has2.call(target, i)) {
var targetItem = target[i];
if (targetItem && typeof targetItem === "object" && item && typeof item === "object") {
target[i] = merge4(targetItem, item, options);
} else {
target.push(item);
}
} else {
target[i] = item;
}
});
return target;
}
return Object.keys(source).reduce(function(acc, key) {
var value = source[key];
if (has2.call(acc, key)) {
acc[key] = merge4(acc[key], value, options);
} else {
acc[key] = value;
}
return acc;
}, mergeTarget);
};
var assign3 = function assignSingleSource(target, source) {
return Object.keys(source).reduce(function(acc, key) {
acc[key] = source[key];
return acc;
}, target);
};
var decode4 = function(str, defaultDecoder, charset) {
var strWithoutPlus = str.replace(/\+/g, " ");
if (charset === "iso-8859-1") {
return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);
}
try {
return decodeURIComponent(strWithoutPlus);
} catch (e) {
return strWithoutPlus;
}
};
var limit = 1024;
var encode3 = function encode4(str, defaultEncoder, charset, kind, format2) {
if (str.length === 0) {
return str;
}
var string = str;
if (typeof str === "symbol") {
string = Symbol.prototype.toString.call(str);
} else if (typeof str !== "string") {
string = String(str);
}
if (charset === "iso-8859-1") {
return escape(string).replace(/%u[0-9a-f]{4}/gi, function($0) {
return "%26%23" + parseInt($0.slice(2), 16) + "%3B";
});
}
var out = "";
for (var j = 0; j < string.length; j += limit) {
var segment = string.length >= limit ? string.slice(j, j + limit) : string;
var arr = [];
for (var i = 0; i < segment.length; ++i) {
var c = segment.charCodeAt(i);
if (c === 45 || c === 46 || c === 95 || c === 126 || c >= 48 && c <= 57 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || format2 === formats.RFC1738 && (c === 40 || c === 41)) {
arr[arr.length] = segment.charAt(i);
continue;
}
if (c < 128) {
arr[arr.length] = hexTable[c];
continue;
}
if (c < 2048) {
arr[arr.length] = hexTable[192 | c >> 6] + hexTable[128 | c & 63];
continue;
}
if (c < 55296 || c >= 57344) {
arr[arr.length] = hexTable[224 | c >> 12] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63];
continue;
}
i += 1;
c = 65536 + ((c & 1023) << 10 | segment.charCodeAt(i) & 1023);
arr[arr.length] = hexTable[240 | c >> 18] + hexTable[128 | c >> 12 & 63] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63];
}
out += arr.join("");
}
return out;
};
var compact = function compact2(value) {
var queue = [{ obj: { o: value }, prop: "o" }];
var refs = [];
for (var i = 0; i < queue.length; ++i) {
var item = queue[i];
var obj = item.obj[item.prop];
var keys = Object.keys(obj);
for (var j �� = 0; j < keys.length; ++j) {
var key = keys[j];
var val = obj[key];
if (typeof val === "object" && val !== null && refs.indexOf(val) === -1) {
queue.push({ obj, prop: key });
refs.push(val);
}
}
}
compactQueue(queue);
return value;
};
var isRegExp2 = function isRegExp3(obj) {
return Object.prototype.toString.call(obj) === "[object RegExp]";
};
var isBuffer = function isBuffer2(obj) {
if (!obj || typeof obj !== "object") {
return false;
}
return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
};
var combine = function combine2(a, b) {
return [].concat(a, b);
};
var maybeMap = function maybeMap2(val, fn) {
if (isArray3(val)) {
var mapped = [];
for (var i = 0; i < val.length; i += 1) {
mapped.push(fn(val[i]));
}
return mapped;
}
return fn(val);
};
module.exports = {
arrayToObject,
assign: assign3,
combine,
compact,
decode: decode4,
encode: encode3,
isBuffer,
isRegExp: isRegExp2,
maybeMap,
merge: merge3
};
}
});
// node_modules/qs/lib/stringify.js
var require_stringify = __commonJS({
"node_modules/qs/lib/stringify.js"(exports, module) {
"use strict";
var getSideChannel = require_side_channel();
var utils = require_utils();
var formats = require_formats();
var has2 = Object.prototype.hasOwnProperty;
var arrayPrefixGenerators = {
brackets: function brackets(prefix) {
return prefix + "[]";
},
comma: "comma",
indices: function indices(prefix, key) {
return prefix + "[" + key + "]";
},
repeat: function repeat(prefix) {
return prefix;
}
};
var isArray3 = Array.isArray;
var push = Array.prototype.push;
var pushToArray = function(arr, valueOrArray) {
push.apply(arr, isArray3(valueOrArray) ? valueOrArray : [valueOrArray]);
};
var toISO = Date.prototype.toISOString;
var defaultFormat = formats["default"];
var defaults3 = {
addQueryPrefix: false,
allowDots: false,
allowEmptyArrays: false,
arrayFormat: "indices",
charset: "utf-8",
charsetSentinel: false,
commaRoundTrip: false,
delimiter: "&",
encode: true,
encodeDotInKeys: false,
encoder: utils.encode,
encodeValuesOnly: false,
filter: void 0,
format: defaultFormat,
formatter: formats.formatters[defaultFormat],
// deprecated
indices: false,
serializeDate: function serializeDate(date) {
return toISO.call(date);
},
skipNulls: false,
strictNullHandling: false
};
var isNonNullishPrimitive = function isNonNullishPrimitive2(v) {
return typeof v === "string" || typeof v === "number" || typeof v === "boolean" || typeof v === "symbol" || typeof v === "bigint";
};
var sentinel = {};
var stringify3 = function stringify4(object, prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, encoder, filter2, sort, allowDots, serializeDate, format2, formatter2, encodeValuesOnly, charset, sideChannel) {
var obj = object;
var tmpSc = sideChannel;
var step = 0;
var findFlag = false;
while ((tmpSc = tmpSc.get(sentinel)) !== void 0 && !findFlag) {
var pos = tmpSc.get(object);
step += 1;
if (typeof pos !== "undefined") {
if (pos === step) {
throw new RangeError("Cyclic object value");
} else {
findFlag = true;
}
}
if (typeof tmpSc.get(sentinel) === "undefined") {
step = 0;
}
}
if (typeof filter2 === "function") {
obj = filter2(prefix, obj);
} else if (obj instanceof Date) {
obj = serializeDate(obj);
} else if (generateArrayPrefix === "comma" && isArray3(obj)) {
obj = utils.maybeMap(obj, function(value2) {
if (value2 instanceof Date) {
return serializeDate(value2);
}
return value2;
});
}
if (obj === null) {
if (strictNullHandling) {
return encoder && !encodeValuesOnly ? encoder(prefix, defaults3.encoder, charset, "key", format2) : prefix;
}
obj = "";
}
if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {
if (encoder) {
var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults3.encoder, charset, "key", format2);
return [formatter2(keyValue) + "=" + formatter2(encoder(obj, defaults3.encoder, charset, "value", format2))];
}
return [formatter2(prefix) + "=" + formatter2(String(obj))];
}
var values = [];
if (typeof obj === "undefined") {
return values;
}
var objKeys;
if (generateArrayPrefix === "comma" && isArray3(obj)) {
if (encodeValuesOnly && encoder) {
obj = utils.maybeMap(obj, encoder);
}
objKeys = [{ value: obj.length > 0 ? obj.join(",") || null : void 0 }];
} else if (isArray3(filter2)) {
objKeys = filter2;
} else {
var keys = Object.keys(obj);
objKeys = sort ? keys.sort(sort) : keys;
}
var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\./g, "%2E") : String(prefix);
var adjustedPrefix = commaRoundTrip && isArray3(obj) && obj.length === 1 ? encodedPrefix + "[]" : encodedPrefix;
if (allowEmptyArrays && isArray3(obj) && obj.length === 0) {
return adjustedPrefix + "[]";
}
for (var j = 0; j < objKeys.length; ++j) {
var key = objKeys[j];
var value = typeof key === "object" && key && typeof key.value !== "undefined" ? key.value : obj[key];
if (skipNulls && value === null) {
continue;
}
var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\./g, "%2E") : String(key);
var keyPrefix = isArray3(obj) ? typeof generateArrayPrefix === "function" ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix : adjustedPrefix + (allowDots ? "." + encodedKey : "[" + encodedKey + "]");
sideChannel.set(object, step);
var valueSideChannel = getSideChannel();
valueSideChannel.set(sentinel, sideChannel);
pushToArray(values, stringify4(
value,
keyPrefix,
generateArrayPrefix,
commaRoundTrip,
allowEmptyArrays,
strictNullHandling,
skipNulls,
encodeDotInKeys,
generateArrayPrefix === "comma" && encodeValuesOnly && isArray3(obj) ? null : encoder,
filter2,
sort,
allowDots,
serializeDate,
format2,
formatter2,
encodeValuesOnly,
charset,
valueSideChannel
));
}
return values;
};
var normalizeStringifyOptions = function normalizeStringifyOptions2(opts) {
if (!opts) {
return defaults3;
}
if (typeof opts.allowEmptyArrays !== "undefined" && typeof opts.allowEmptyArrays !== "boolean") {
throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");
}
if (typeof opts.encodeDotInKeys !== "undefined" && typeof opts.encodeDotInKeys !== "boolean") {
throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");
}
if (opts.encoder !== null && typeof opts.encoder !== "undefined" && typeof opts.encoder !== "function") {
throw new TypeError("Encoder has to be a function.");
}
var charset = opts.charset || defaults3.charset;
if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") {
throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");
}
var format2 = formats["default"];
if (typeof opts.format !== "undefined") {
if (!has2.call(formats.formatters, opts.format)) {
throw new TypeError("Unknown format option provided.");
}
format2 = opts.format;
}
var formatter2 = formats.formatters[format2];
var filter2 = defaults3.filter;
if (typeof opts.filter === "function" || isArray3(opts.filter)) {
filter2 = opts.filter;
}
var arrayFormat;
if (opts.arrayFormat in arrayPrefixGenerators) {
arrayFormat = opts.arrayFormat;
} else if ("indices" in opts) {
arrayFormat = opts.indices ? "indices" : "repeat";
} else {
arrayFormat = defaults3.arrayFormat;
}
if ("commaRoundTrip" in opts && typeof opts.commaRoundTrip !== "boolean") {
throw new TypeError("`commaRoundTrip` must be a boolean, or absent");
}
var allowDots = typeof opts.allowDots === "undefined" ? opts.encodeDotInKeys === true ? true : defaults3.allowDots : !!opts.allowDots;
return {
addQueryPrefix: typeof opts.addQueryPrefix === "boolean" ? opts.addQueryPrefix : defaults3.addQueryPrefix,
allowDots,
allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean" ? !!opts.allowEmptyArrays : defaults3.allowEmptyArrays,
arrayFormat,
charset,
charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults3.charsetSentinel,
commaRoundTrip: !!opts.commaRoundTrip,
delimiter: typeof opts.delimiter === "undefined" ? defaults3.delimiter : opts.delimiter,
encode: typeof opts.encode === "boolean" ? opts.encode : defaults3.encode,
encodeDotInKeys: typeof opts.encodeDotInKeys === "boolean" ? opts.encodeDotInKeys : defaults3.encodeDotInKeys,
encoder: typeof opts.encoder === "function" ? opts.encoder : defaults3.encoder,
encodeValuesOnly: typeof opts.encodeValuesOnly === "boolean" ? opts.encodeValuesOnly : defaults3.encodeValuesOnly,
filter: filter2,
format: format2,
formatter: formatter2,
serializeDate: typeof opts.serializeDate === "function" ? opts.serializeDate : defaults3.serializeDate,
skipNulls: typeof opts.skipNulls === "boolean" ? opts.skipNulls : defaults3.skipNulls,
sort: typeof opts.sort === "function" ? opts.sort : null,
strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults3.strictNullHandling
};
};
module.exports = function(object, opts) {
var obj = object;
var options = normalizeStringifyOptions(opts);
var objKeys;
var filter2;
if (typeof options.filter === "function") {
filter2 = options.filter;
obj = filter2("", obj);
} else if (isArray3(options.filter)) {
filter2 = options.filter;
objKeys = filter2;
}
var keys = [];
if (typeof obj !== "object" || obj === null) {
return "";
}
var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];
var commaRoundTrip = generateArrayPrefix === "comma" && options.commaRoundTrip;
if (!objKeys) {
objKeys = Object.keys(obj);
}
if (options.sort) {
objKeys.sort(options.sort);
}
var sideChannel = getSideChannel();
for (var i = 0; i < objKeys.length; ++i) {
var key = objKeys[i];
var value = obj[key];
if (options.skipNulls && value === null) {
continue;
}
pushToArray(keys, stringify3(
value,
key,
generateArrayPrefix,
commaRoundTrip,
options.allowEmptyArrays,
options.strictNullHandling,
options.skipNulls,
options.encodeDotInKeys,
options.encode ? options.encoder : null,
options.filter,
options.sort,
options.allowDots,
options.serializeDate,
options.format,
options.formatter,
options.encodeValuesOnly,
options.charset,
sideChannel
));
}
var joined = keys.join(options.delimiter);
var prefix = options.addQueryPrefix === true ? "?" : "";
if (options.charsetSentinel) {
if (options.charset === "iso-8859-1") {
prefix += "utf8=%26%2310003%3B&";
} else {
prefix += "utf8=%E2%9C%93&";
}
}
return joined.length > 0 ? prefix + joined : "";
};
}
});
// node_modules/qs/lib/parse.js
var require_parse = __commonJS({
"node_modules/qs/lib/parse.js"(exports, module) {
"use strict";
var utils = require_utils();
var has2 = Object.prototype.hasOwnProperty;
var isArray3 = Array.isArray;
var defaults3 = {
allowDots: false,
allowEmptyArrays: false,
allowPrototypes: false,
allowSparse: false,
arrayLimit: 20,
charset: "utf-8",
charsetSentinel: false,
comma: false,
decodeDotInKeys: false,
decoder: utils.decode,
delimiter: "&",
depth: 5,
duplicates: "combine",
ignoreQueryPrefix: false,
interpretNumericEntities: false,
parameterLimit: 1e3,
parseArrays: true,
plainObjects: false,
strictDepth: false,
strictNullHandling: false,
throwOnLimitExceeded: false
};
var interpretNumericEntities = function(str) {
return str.replace(/&#(\d+);/g, function($0, numberStr) {
return String.fromCharCode(parseInt(numberStr, 10));
});
};
var parseArrayValue = function(val, options, currentArrayLength) {
if (val && typeof val === "string" && options.comma && val.indexOf(",") > -1) {
return val.split(",");
}
if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {
throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array.");
}
return val;
};
var isoSentinel = "utf8=%26%2310003%3B";
var charsetSentinel = "utf8=%E2%9C%93";
var parseValues = function parseQueryStringValues(str, options) {
var obj = { __proto__: null };
var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, "") : str;
cleanStr = cleanStr.replace(/%5B/gi, "[").replace(/%5D/gi, "]");
var limit = options.parameterLimit === Infinity ? void 0 : options.parameterLimit;
var parts = cleanStr.split(
options.delimiter,
options.throwOnLimitExceeded ? limit + 1 : limit
);
if (options.throwOnLimitExceeded && parts.length > limit) {
throw new RangeError("Parameter limit exceeded. Only " + limit + " parameter" + (limit === 1 ? "" : "s") + " allowed.");
}
var skipIndex = -1;
var i;
var charset = options.charset;
if (options.charsetSentinel) {
for (i = 0; i < parts.length; ++i) {
if (parts[i].indexOf("utf8=") === 0) {
if (parts[i] === charsetSentinel) {
charset = "utf-8";
} else if (parts[i] === isoSentinel) {
charset = "iso-8859-1";
}
skipIndex = i;
i = parts.length;
}
}
}
for (i = 0; i < parts.length; ++i) {
if (i === skipIndex) {
continue;
}
var part = parts[i];
var bracketEqualsPos = part.indexOf("]=");
var pos = bracketEqualsPos === -1 ? part.indexOf("=") : bracketEqualsPos + 1;
var key;
var val;
if (pos === -1) {
key = options.decoder(part, defaults3.decoder, charset, "key");
val = options.strictNullHandling ? null : "";
} else {
key = options.decoder(part.slice(0, pos), defaults3.decoder, charset, "key");
val = utils.maybeMap(
parseArrayValue(
part.slice(pos + 1),
options,
isArray3(obj[key]) ? obj[key].length : 0
),
function(encodedVal) {
return options.decoder(encodedVal, defaults3.decoder, charset, "value");
}
);
}
if (val && options.interpretNumericEntities && charset === "iso-8859-1") {
val = interpretNumericEntities(String(val));
}
if (part.indexOf("[]=") > -1) {
val = isArray3(val) ? [val] : val;
}
var existing = has2.call(obj, key);
if (existing && options.duplicates === "combine") {
obj[key] = utils.combine(obj[key], val);
} else if (!existing || options.duplicates === "last") {
obj[key] = val;
}
}
return obj;
};
var parseObject = function(chain, val, options, valuesParsed) {
var currentArrayLength = 0;
if (chain.length > 0 && chain[chain.length - 1] === "[]") {
var parentKey = chain.slice(0, -1).join("");
currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;
}
var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);
for (var i = chain.length - 1; i >= 0; --i) {
var obj;
var root = chain[i];
if (root === "[]" && options.parseArrays) {
obj = options.allowEmptyArrays && (leaf === "" || options.strictNullHandling && leaf === null) ? [] : utils.combine([], leaf);
} else {
obj = options.plainObjects ? { __proto__: null } : {};
var cleanRoot = root.charAt(0) === "[" && root.charAt(root.length - 1) === "]" ? root.slice(1, -1) : root;
var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, ".") : cleanRoot;
var index = parseInt(decodedRoot, 10);
if (!options.parseArrays && decodedRoot === "") {
obj = { 0: leaf };
} else if (!isNaN(index) && root !== decodedRoot && String(index) === decodedRoot && index >= 0 && (options.parseArrays && index <= options.arrayLimit)) {
obj = [];
obj[index] = leaf;
} else if (decodedRoot !== "__proto__") {
obj[decodedRoot] = leaf;
}
}
leaf = obj;
}
return leaf;
};
var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {
if (!givenKey) {
return;
}
var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, "[$1]") : givenKey;
var brackets = /(\[[^[\]]*])/;
var child = /(\[[^[\]]*])/g;
var segment = options.depth > 0 && brackets.exec(key);
var parent = segment ? key.slice(0, segment.index) : key;
var keys = [];
if (parent) {
if (!options.plainObjects && has2.call(Object.prototype, parent)) {
if (!options.allowPrototypes) {
return;
}
}
keys.push(parent);
}
var i = 0;
while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {
i += 1;
if (!options.plainObjects && has2.call(Object.prototype, segment[1].slice(1, -1))) {
if (!options.allowPrototypes) {
return;
}
}
keys.push(segment[1]);
}
if (segment) {
if (options.strictDepth === true) {
throw new RangeError("Input depth exceeded depth option of " + options.depth + " and strictDepth is true");
}
keys.push("[" + key.slice(segment.index) + "]");
}
return parseObject(keys, val, options, valuesParsed);
};
var normalizeParseOptions = function normalizeParseOptions2(opts) {
if (!opts) {
return defaults3;
}
if (typeof opts.allowEmptyArrays !== "undefined" && typeof opts.allowEmptyArrays !== "boolean") {
throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");
}
if (typeof opts.decodeDotInKeys !== "undefined" && typeof opts.decodeDotInKeys !== "boolean") {
throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");
}
if (opts.decoder !== null && typeof opts.decoder !== "undefined" && typeof opts.decoder !== "function") {
throw new TypeError("Decoder has to be a function.");
}
if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") {
throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");
}
if (typeof opts.throwOnLimitExceeded !== "undefined" && typeof opts.throwOnLimitExceeded !== "boolean") {
throw new TypeError("`throwOnLimitExceeded` option must be a boolean");
}
var charset = typeof opts.charset === "undefined" ? defaults3.charset : opts.charset;
var duplicates = typeof opts.duplicates === "undefined" ? defaults3.duplicates : opts.duplicates;
if (duplicates !== "combine" && duplicates !== "first" && duplicates !== "last") {
throw new TypeError("The duplicates option must be either combine, first, or last");
}
var allowDots = typeof opts.allowDots === "undefined" ? opts.decodeDotInKeys === true ? true : defaults3.allowDots : !!opts.allowDots;
return {
allowDots,
allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean" ? !!opts.allowEmptyArrays : defaults3.allowEmptyArrays,
allowPrototypes: typeof opts.allowPrototypes === "boolean" ? opts.allowPrototypes : defaults3.allowPrototypes,
allowSparse: typeof opts.allowSparse === "boolean" ? opts.allowSparse : defaults3.allowSparse,
arrayLimit: typeof opts.arrayLimit === "number" ? opts.arrayLimit : defaults3.arrayLimit,
charset,
charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults3.charsetSentinel,
comma: typeof opts.comma === "boolean" ? opts.comma : defaults3.comma,
decodeDotInKeys: typeof opts.decodeDotInKeys === "boolean" ? opts.decodeDotInKeys : defaults3.decodeDotInKeys,
decoder: typeof opts.decoder === "function" ? opts.decoder : defaults3.decoder,
delimiter: typeof opts.delimiter === "string" || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults3.delimiter,
// eslint-disable-next-line no-implicit-coercion, no-extra-parens
depth: typeof opts.depth === "number" || opts.depth === false ? +opts.depth : defaults3.depth,
duplicates,
ignoreQueryPrefix: opts.ignoreQueryPrefix === true,
interpretNumericEntities: typeof opts.interpretNumericEntities === "boolean" ? opts.interpretNumericEntities : defaults3.interpretNumericEntities,
parameterLimit: typeof opts.parameterLimit === "number" ? opts.parameterLimit : defaults3.parameterLimit,
parseArrays: opts.parseArrays !== false,
plainObjects: typeof opts.plainObjects === "boolean" ? opts.plainObjects : defaults3.plainObjects,
strictDepth: typeof opts.strictDepth === "boolean" ? !!opts.strictDepth : defaults3.strictDepth,
strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults3.strictNullHandling,
throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === "boolean" ? opts.throwOnLimitExceeded : false
};
};
module.exports = function(str, opts) {
var options = normalizeParseOptions(opts);
if (str === "" || str === null || typeof str === "undefined") {
return options.plainObjects ? { __proto__: null } : {};
}
var tempObj = typeof str === "string" ? parseValues(str, options) : str;
var obj = options.plainObjects ? { __proto__: null } : {};
var keys = Object.keys(tempObj);
for (var i = 0; i < keys.length; ++i) {
var key = keys[i];
var newObj = parseKeys(key, tempObj[key], options, typeof str === "string");
obj = utils.merge(obj, newObj, options);
}
if (options.allowSparse === true) {
return obj;
}
return utils.compact(obj);
};
}
});
// node_modules/qs/lib/index.js
var require_lib = __commonJS({
"node_modules/qs/lib/index.js"(exports, module) {
"use strict";
var stringify3 = require_stringify();
var parse = require_parse();
var formats = require_formats();
module.exports = {
formats,
parse,
stringify: stringify3
};
}
});
// node_modules/drupal-jsonapi-params/lib/index.js
var require_lib2 = __commonJS({
"node_modules/drupal-jsonapi-params/lib/index.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DrupalJsonApiParams = void 0;
var qs = require_lib();
var DrupalJsonApiParams2 = class {
/**
* Optionaly initialize with a previously stored query/object/query string.
*
* @category Init
*/
constructor(input2, config3) {
this.data = {
filter: {},
include: [],
page: void 0,
sort: [],
fields: {}
};
this.qsOptions = {};
this.config = {
useShortCutForQueryGeneration: true,
alwaysUseFieldNameForKeys: false
};
if (config3 !== void 0) {
this.config = config3;
}
this.initialize(input2);
}
/**
* Add custom parameter to the query.
*
* E.g. usage
*
* ```js
* apiParams
* // To add `foo=bar` to the query.
* .addCustomParam({foo: 'bar'})
* // To add `foo[bar]=baz` to the query.
* .addCustomParam({ foo: {bar: 'baz'}})
* // To add `bar[0]=a&bar[1]=b&bar[2]=c` to the query.
* .addCustomParam({ bar: ['a', 'b', 'c']})
* ```
*
* @param input The parameter object
*
* @category Helper
*/
addCustomParam(input2) {
this.data = Object.assign(Object.assign({}, this.data), input2);
return this;
}
/**
* Add JSON:API field.
*
* The name of this method might be miss leading. Use this to explicitely request for specific fields on an entity.
*
* @param type Resource type
* @param fields Array of field names in the given resource type
*
* @category JSON:API Query
*/
addFields(type, fields) {
this.data.fields[type] = fields.join(",");
return this;
}
/**
* Add JSON:API sort.
*
* Used to return the list of items in specific order.
*
* [Read more about Sort in Drupal.org Documentation](https://www.drupal.org/docs/8/modules/jsonapi/sorting)
*
* @param path A 'path' identifies a field on a resource
* @param direction Sort direction `ASC` or `DESC`
*
* @category JSON:API Query
*/
addSort(path, direction) {
let prefix = "";
if (direction !== void 0 && direction === "DESC") {
prefix = "-";
}
this.data.sort = this.data.sort.concat(prefix + path);
return this;
}
/**
* Add JSON:API page limit.
*
* Use to restrict max amount of items returned in the listing.
* Using this for pagination is tricky, and make sure you read
* the following document on Drupal.org to implement it correctly.
*
* [Read more about Pagination in Drupal.org Documentation](https://www.drupal.org/docs/8/core/modules/jsonapi-module/pagination)
*
* @param limit Number of items to limit to
*
* @category JSON:API Query
*/
addPageLimit(limit) {
if (this.data.page === void 0) {
this.data.page = { limit };
} else {
this.data.page.limit = limit;
}
return this;
}
/**
* Add JSON:API page offset.
*
* Use to skip some items from the start of the listing.
* Using this for pagination is tricky, and make sure you read
* the following document on Drupal.org to implement it correctly.
*
* [Read more about Pagination in Drupal.org Documentation](https://www.drupal.org/docs/8/core/modules/jsonapi-module/pagination)
*
* @param offset Number of items to skip from the begining.
*
* @category JSON:API Query
*/
addPageOffset(offset) {
if (this.data.page === void 0) {
this.data.page = { offset };
} else {
this.data.page.offset = offset;
}
return this;
}
/**
* Add JSON:API include.
*
* Used to add referenced resources inside same request.
* Thereby preventing additional api calls.
*
* [Read more about Includes in Drupal.org Documentation](https://www.drupal.org/docs/8/modules/jsonapi/includes)
*
* @param fields Array of field names
*
* @category JSON:API Query
*/
addInclude(fields) {
this.data.include = this.data.include.concat(fields);
return this;
}
/**
* Add JSON:API group.
*
* @param name Name of the group
* @param conjunction All groups have conjunctions and a conjunction is either `AND` or `OR`.
* @param memberOf Name of the group, this group belongs to
*
* @category JSON:API Query
*/
addGroup(name, conjunction = "OR", memberOf) {
this.data.filter[name] = {
group: Object.assign({ conjunction }, memberOf !== void 0 && { memberOf })
};
return this;
}
/**
* Add JSON:API filter.
*
* Following values can be used for the operator. If none is provided, it assumes "`=`" by default.
* ```
* '=', '<>',
* '>', '>=', '<', '<=',
* 'STARTS_WITH', 'CONTAINS', 'ENDS_WITH',
* 'IN', 'NOT IN',
* 'BETWEEN', 'NOT BETWEEN',
* 'IS NULL', 'IS NOT NULL'
* ```
*
* **NOTE: Make sure you match the value supplied based on the operators used as per the table below**
*
* | Value Type | Operator | Comment |
* | --- | --- | --- |
* | `string` | `=`, `<>`, `>`, `>=`, `<`, `<=`, `STARTS_WITH`, `CONTAINS`, `ENDS_WITH` | |
* | `string[]` | `IN`, `NOT IN` | |
* | `string[]` _size 2_ | `BETWEEN`, `NOT BETWEEN` | The first item is used for min (start of the range), and the second item is used for max (end of the range).
* | `null` | `IS NULL`, `IS NOT NULL` | Must use `null`
*
* [Read more about filter in Drupal.org Documentation](https://www.drupal.org/docs/8/core/modules/jsonapi-module/filtering)
*
* @param path A 'path' identifies a field on a resource
* @param value string[] | null` | A 'value' is the thing you compare against. For operators like "IN" which supports multiple parameters, you can supply an array.
* @param operator An 'operator' is a method of comparison
* @param memberOf Name of the group, the filter belongs to
*
* @category JSON:API Query
*/
addFilter(path, value, operator = "=", memberOf, key) {
const name = this.getIndexId(this.data.filter, key || path, !!key);
if (operator === "IS NULL" || operator === "IS NOT NULL") {
value = null;
}
if (value === null) {
if (!(operator === "IS NULL" || operator === "IS NOT NULL")) {
throw new TypeError(`Value cannot be null for the operator "${operator}"`);
}
this.data.filter[name] = {
condition: Object.assign(Object.assign({ path }, { operator }), memberOf !== void 0 && { memberOf })
};
return this;
}
if (Array.isArray(value)) {
switch (operator) {
case "BETWEEN":
case "NOT BETWEEN":
if (value.length !== 2) {
throw new TypeError(`Value must consists of 2 items for the "${operator}"`);
}
break;
case "IN":
case "NOT IN":
break;
default:
throw new TypeError(`Value cannot be an array for the operator "${operator}"`);
}
this.data.filter[name] = {
condition: Object.assign(Object.assign({
path,
value
}, { operator }), memberOf !== void 0 && { memberOf })
};
return this;
}
if (this.config.useShortCutForQueryGeneration && memberOf === void 0 && path === name && this.data.filter[pa ��th] === void 0) {
if (operator === "=") {
this.data.filter[name] = value;
} else {
this.data.filter[name] = {
value,
operator
};
}
return this;
}
this.data.filter[name] = {
condition: Object.assign(Object.assign({
path,
value
}, this.config.useShortCutForQueryGeneration ? operator !== "=" && { operator } : { operator }), memberOf !== void 0 && { memberOf })
};
return this;
}
/**
* Generate a unique key name for the given object.
*
* @param obj The object to generate a key name for.
* @param proposedKey The proposed key name.
* @param enforceKeyName Whether to enforce the key name.
*
* @returns The generated key name.
*/
getIndexId(obj, proposedKey, enforceKeyName) {
enforceKeyName = enforceKeyName || this.config.alwaysUseFieldNameForKeys;
let key;
if (obj[proposedKey] === void 0) {
key = proposedKey;
} else {
key = this.generateKeyName(obj, proposedKey, enforceKeyName);
}
return key;
}
/**
* Generate a unique key name for the given object.
*
* @param obj The object to generate a key name for.
* @param proposedKey The proposed key name.
* @param enforceKeyName Whether to enforce the key name.
*
* @returns The generated key name.
*/
generateKeyName(obj, proposedKey, enforceKeyName = false) {
const length = Object.keys(obj).length;
if (enforceKeyName) {
for (let ndx = 1; ndx <= length; ndx++) {
const key = `${proposedKey}--${ndx}`;
if (obj[key] === void 0) {
return key;
}
}
}
return length.toString();
}
/**
* Get query object.
*
* @category Helper
*/
getQueryObject() {
const foo = JSON.parse(JSON.stringify(this.data));
if (this.data.include.length > 0) {
foo.include = this.data.include.join(",");
} else {
delete foo.include;
}
if (this.data.sort.length > 0) {
foo.sort = this.data.sort.join(",");
} else {
delete foo.sort;
}
return foo;
}
/**
* Get query string.
*
* @param options Options to be passed to `qs` library during parsing.
*
* @category Helper
*/
getQueryString(options) {
const data = this.getQueryObject();
const qsOptions = options || this.getQsOption();
return qs.stringify(data, qsOptions);
}
/**
* Clear all parameters added so far.
*
* @category Helper
*/
clear() {
this.data = {
filter: {},
include: [],
page: void 0,
sort: [],
fields: {}
};
return this;
}
/**
* Initialize with a previously stored query object.
*
* @category Init
*/
initializeWithQueryObject(input2) {
this.clear();
const keys = Object.keys(input2);
keys.forEach((key) => {
switch (key) {
case "sort":
if (input2.sort.length) {
this.data.sort = input2.sort.split(",");
}
break;
case "include":
if (input2.include.length) {
this.data.include = input2.include.split(",");
}
break;
default:
this.data[key] = input2[key];
}
});
return this;
}
/**
* Initialize with a previously stored query string.
*
* @param input The Query string to use for initializing.
* @param options Options to be passed to `qs` library during parsing.
*
* @category Init
*/
initializeWithQueryString(input2, options) {
this.clear();
const qsOptions = options || this.getQsOption();
this.initializeWithQueryObject(qs.parse(input2, qsOptions));
return this;
}
/**
* Clone a given DrupalJsonApiParam object.
*
* @category Helper
*/
clone(input2) {
const data = JSON.parse(JSON.stringify(input2.getQueryObject()));
this.initializeWithQueryObject(data);
return this;
}
/**
* Set options that is passed to qs when parsing/serializing.
*
* @see https://www.npmjs.com/package/qs
*/
setQsOption(options) {
this.qsOptions = options;
return this;
}
/**
* Get options that is passed to qs when parsing/serializing.
*
* @see https://www.npmjs.com/package/qs
*/
getQsOption() {
return this.qsOptions;
}
/**
* Initialize with a previously stored query/object/query string.
*
* @category Init
*/
initialize(input2) {
if (input2 === void 0) {
this.initializeWithQueryString("");
} else if (typeof input2 === "object") {
try {
input2.getQueryObject();
this.clone(input2);
} catch (error2) {
this.initializeWithQueryObject(input2);
}
} else {
this.initializeWithQueryString(input2);
}
return this;
}
};
exports.DrupalJsonApiParams = DrupalJsonApiParams2;
}
});
// node_modules/@angular/core/fesm2022/not_found.mjs
var _currentInjector = void 0;
function getCurrentInjector() {
return _currentInjector;
}
function setCurrentInjector(injector) {
const former = _currentInjector;
_currentInjector = injector;
return former;
}
var NOT_FOUND = Symbol("NotFound");
function isNotFound(e) {
return e === NOT_FOUND || e?.name === "\u0275NotFound";
}
// node_modules/@angular/core/fesm2022/signal.mjs
var activeConsumer = null;
var inNotificationPhase = false;
var epoch = 1;
var postProducerCreatedFn = null;
var SIGNAL = /* @__PURE__ */ Symbol("SIGNAL");
function setActiveConsumer(consumer) {
const prev = activeConsumer;
activeConsumer = consumer;
return prev;
}
function getActiveConsumer() {
return activeConsumer;
}
function isInNotificationPhase() {
return inNotificationPhase;
}
var REACTIVE_NODE = {
version: 0,
lastCleanEpoch: 0,
dirty: false,
producers: void 0,
producersTail: void 0,
consumers: void 0,
consumersTail: void 0,
recomputing: false,
consumerAllowSignalWrites: false,
consumerIsAlwaysLive: false,
kind: "unknown",
producerMustRecompute: () => false,
producerRecomputeValue: () => {
},
consumerMarkedDirty: () => {
},
consumerOnSignalRead: () => {
}
};
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 prevProducerLink = activeConsumer.producersTail;
if (prevProducerLink !== void 0 && prevProducerLink.producer === node) {
return;
}
let nextProducerLink = void 0;
const isRecomputing = activeConsumer.recomputing;
if (isRecomputing) {
nextProducerLink = prevProducerLink !== void 0 ? prevProducerLink.nextProducer : activeConsumer.producers;
if (nextProducerLink !== void 0 && nextProducerLink.producer === node) {
activeConsumer.producersTail = nextProducerLink;
nextProducerLink.lastReadVersion = node.version;
return;
}
}
const prevConsumerLink = node.consumersTail;
if (prevConsumerLink !== void 0 && prevConsumerLink.consumer === activeConsumer && // However, we have to make sure that the link we've discovered isn't from a node that is incrementally rebuilding its producer list
(!isRecomputing || isValidLink(prevConsumerLink, activeConsumer))) {
return;
}
const isLive = consumerIsLive(activeConsumer);
const newLink = {
producer: node,
consumer: activeConsumer,
// instead of eagerly destroying the previous link, we delay until we've finished recomputing
// the producers list, so that we can destroy all of the old links at once.
nextProducer: nextProducerLink,
prevConsumer: prevConsumerLink,
lastReadVersion: node.version,
nextConsumer: void 0
};
activeConsumer.producersTail = newLink;
if (prevProducerLink !== void 0) {
prevProducerLink.nextProducer = newLink;
} else {
activeConsumer.producers = newLink;
}
if (isLive) {
producerAddLiveConsumer(node, newLink);
}
}
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.consumers === void 0) {
return;
}
const prev = inNotificationPhase;
inNotificationPhase = true;
try {
for (let link2 = node.consumers; link2 !== void 0; link2 = link2.nextConsumer) {
const consumer = link2.consumer;
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) {
if (node)
resetConsumerBeforeComputation(node);
return setActiveConsumer(node);
}
function resetConsumerBeforeComputation(node) {
node.producersTail = void 0;
node.recomputing = true;
}
function consumerAfterComputation(node, prevConsumer) {
setActiveConsumer(prevConsumer);
if (node)
finalizeConsumerAfterComputation(node);
}
function finalizeConsumerAfterComputation(node) {
node.recomputing = false;
const producersTail = node.producersTail;
let toRemove = producersTail !== void 0 ? producersTail.nextProducer : node.producers;
if (toRemove !== void 0) {
if (consumerIsLive(node)) {
do {
toRemove = producerRemoveLiveConsumerLink(toRemove);
} while (toRemove !== void 0);
}
if (producersTail !== void 0) {
producersTail.nextProducer = void 0;
} else {
node.producers = void 0;
}
}
}
function consumerPollProducersForChange(node) {
for (let link2 = node.producers; link2 !== void 0; link2 = link2.nextProducer) {
const producer = link2.producer;
const seenVersion = link2.lastReadVersion;
if (seenVersion !== producer.version) {
return true;
}
producerUpdateValueVersion(producer);
if (seenVersion !== producer.version) {
return true;
}
}
return false;
}
function consumerDestroy(node) {
if (consumerIsLive(node)) {
let link2 = node.producers;
while (link2 !== void 0) {
link2 = producerRemoveLiveConsumerLink(link2);
}
}
node.producers = void 0;
node.producersTail = void 0;
node.consumers = void 0;
node.consumersTail = void 0;
}
function producerAddLiveConsumer(node, link2) {
const consumersTail = node.consumersTail;
const wasLive = consumerIsLive(node);
if (consumersTail !== void 0) {
link2.nextConsumer = consumersTail.nextConsumer;
consumersTail.nextConsumer = link2;
} else {
link2.nextConsumer = void 0;
node.consumers = link2;
}
link2.prevConsumer = consumersTail;
node.consumersTail = link2;
if (!wasLive) {
for (let link3 = node.producers; link3 !== void 0; link3 = link3.nextProducer) {
producerAddLiveConsumer(link3.producer, link3);
}
}
}
function producerRemoveLiveConsumerLink(link2) {
const producer = link2.producer;
const nextProducer = link2.nextProducer;
const nextConsumer = link2.nextConsumer;
const prevConsumer = link2.prevConsumer;
link2.nextConsumer = void 0;
link2.prevConsumer = void 0;
if (nextConsumer !== void 0) {
nextConsumer.prevConsumer = prevConsumer;
} else {
producer.consumersTail = prevConsumer;
}
if (prevConsumer !== void 0) {
prevConsumer.nextConsumer = nextConsumer;
} else {
producer.consumers = nextConsumer;
if (!consumerIsLive(producer)) {
let producerLink = producer.producers;
while (producerLink !== void 0) {
producerLink = producerRemoveLiveConsumerLink(producerLink);
}
}
}
return nextProducer;
}
function consumerIsLive(node) {
return node.consumerIsAlwaysLive || node.consumers !== void 0;
}
function runPostProducerCreatedFn(node) {
postProducerCreatedFn?.(node);
}
function isValidLink(checkLink, consumer) {
const producersTail = consumer.producersTail;
if (producersTail !== void 0) {
let link2 = consumer.producers;
do {
if (link2 === checkLink) {
return true;
}
if (link2 === producersTail) {
break;
}
link2 = link2.nextProducer;
} while (link2 !== void 0);
}
return false;
}
function defaultEquals(a, b) {
return Object.is(a, b);
}
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;
if (typeof ngDevMode !== "undefined" && ngDevMode) {
const debugName = node.debugName ? " (" + node.debugName + ")" : "";
computed2.toString = () => `[Computed${debugName}: ${node.value}]`;
}
runPostProducerCreatedFn(node);
return computed2;
}
var UNSET = /* @__PURE__ */ Symbol("UNSET");
var COMPUTING = /* @__PURE__ */ Symbol("COMPUTING");
var ERRORED = /* @__PURE__ */ Symbol("ERRORED");
var 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(typeof ngDevMode !== "undefined" && ngDevMode ? "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++;
}
});
})();
function defaultThrowError() {
throw new Error();
}
var throwInvalidWriteToSignalErrorFn = defaultThrowError;
function throwInvalidWriteToSignalError(node) {
throwInvalidWriteToSignalErrorFn(node);
}
function setThrowInvalidWriteToSignalError(fn) {
throwInvalidWriteToSignalErrorFn = fn;
}
var postSignalSetFn = null;
function createSignal(initialValue, equal) {
const node = Object.create(SIGNAL_NODE);
node.value = initialValue;
if (equal !== void 0) {
node.equal = equal;
}
const getter = (() => signalGetFn(node));
getter[SIGNAL] = node;
if (typeof ngDevMode !== "undefined" && ngDevMode) {
const debugName = node.debugName ? " (" + node.debugName + ")" : "";
getter.toString = () => `[Signal${debugName}: ${node.value}]`;
}
runPostProducerCreatedFn(node);
const set2 = (newValue) => signalSetFn(node, newValue);
const update = (updateFn) => signalUpdateFn(node, updateFn);
return [getter, set2, update];
}
function signalGetFn(node) {
producerAccessed(node);
return node.value;
}
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));
}
var SIGNAL_NODE = /* @__PURE__ */ (() => {
return __spreadProps(__spreadValues({}, REACTIVE_NODE), {
equal: defaultEquals,
value: void 0,
kind: "signal"
});
})();
function signalValueChanged(node) {
node.version++;
producerIncrementEpoch();
producerNotifyConsumers(node);
postSignalSetFn?.(node);
}
// node_modules/rxjs/dist/esm/internal/util/isFunction.js
function isFunction(value) {
return typeof value === "function";
}
// 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;
}
// node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js
var UnsubscriptionError = createErrorClass((_super) => function UnsubscriptionErrorImpl(errors2) {
_super(this);
this.message = errors2 ? `${errors2.length} errors occurred during unsubscription:
${errors2.map((err, i) => `${i + 1}) ${err.toString()}`).join("\n ")}` : "";
this.name = "UnsubscriptionError";
this.errors = errors2;
});
// 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);
}
}
// node_modules/rxjs/dist/esm/internal/Subscription.js
var Subscription = class _Subscription {
constructor(initialTeardown) {
this.initialTeardown = initialTeardown;
this.closed = false;
this._parentage = null;
this._finalizers = null;
}
unsubscribe() {
let errors2;
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) {
errors2 = e instanceof UnsubscriptionError ? e.errors : [e];
}
}
const { _finalizers } = this;
if (_finalizers) {
this._finalizers = null;
for (const finalizer of _finalizers) {
try {
execFinalizer(finalizer);
} catch (err) {
errors2 = errors2 !== null && errors2 !== void 0 ? errors2 : [];
if (err instanceof UnsubscriptionError) {
errors2 = [...errors2, ...err.errors];
} else {
errors2.push(err);
}
}
}
}
if (errors2) {
throw new UnsubscriptionError(errors2);
}
}
}
add(teardown) {
var _a2;
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 = (_a2 = this._finalizers) !== null && _a2 !== void 0 ? _a2 : []).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;
})();
var EMPTY_SUBSCRIPTION = Subscription.EMPTY;
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();
}
}
// node_modules/rxjs/dist/esm/internal/config.js
var config = {
onUnhandledError: null,
onStoppedNotification: null,
Promise: void 0,
useDeprecatedSynchronousErrorHandling: false,
useDeprecatedNextContext: false
};
// node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js
var timeoutProvider = {
setTimeout(handler, timeout, ...args) {
const { delegate } = timeoutProvider;
if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {
return delegate.setTimeout(handler, timeout, ...args);
}
return setTimeout(handler, timeout, ...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;
}
});
}
// node_modules/rxjs/dist/esm/internal/util/noop.js
function noop() {
}
// node_modules/rxjs/dist/esm/internal/NotificationFactories.js
var COMPLETE_NOTIFICATION = (() => createNotification("C", void 0, void 0))();
function errorNotification(error2) {
return createNotification("E", void 0, error2);
}
function nextNotification(value) {
return createNotification("N", value, void 0);
}
function createNotification(kind, value, error2) {
return {
kind,
value,
error: error2
};
}
// node_modules/rxjs/dist/esm/internal/util/errorContext.js
var context = null;
function errorContext(cb) {
if (config.useDeprecatedSynchronousErrorHandling) {
const isRoot = !context;
if (isRoot) {
context = { errorThrown: false, error: null };
}
cb();
if (isRoot) {
const { errorThrown, error: error2 } = context;
context = null;
if (errorThrown) {
throw error2;
}
}
} else {
cb();
}
}
function captureError(err) {
if (config.useDeprecatedSynchronousErrorHandling && context) {
context.errorThrown = true;
context.error = err;
}
}
// node_modules/rxjs/dist/esm/internal/Subscriber.js
var 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, error2, complete) {
return new SafeSubscriber(next, error2, 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();
}
}
};
var _bind = Function.prototype.bind;
function bind(fn, thisArg) {
return _bind.call(fn, thisArg);
}
var ConsumerObserver = class {
constructor(partialObserver) {
this.partialObserver = partialObserver;
}
next(value) {
const { partialObserver } = this;
if (partialObserver.next) {
try {
partialObserver.next(value);
} catch (error2) {
handleUnhandledError(error2);
}
}
}
error(err) {
const { partialObserver } = this;
if (partialObserver.error) {
try {
partialObserver.error(err);
} catch (error2) {
handleUnhandledError(error2);
}
} else {
handleUnhandledError(err);
}
}
complete() {
const { partialObserver } = this;
if (partialObserver.complete) {
try {
partialObserver.complete();
} catch (error2) {
handleUnhandledError(error2);
}
}
}
};
var SafeSubscriber = class extends Subscriber {
constructor(observerOrNext, error2, complete) {
super();
let partialObserver;
if (isFunction(observerOrNext) || !observerOrNext) {
partialObserver = {
next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : void 0,
error: error2 !== null && error2 !== void 0 ? error2 : 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);
}
};
function handleUnhandledError(error2) {
if (config.useDeprecatedSynchronousErrorHandling) {
captureError(error2);
} else {
reportUnhandledError(error2);
}
}
function defaultErrorHandler(err) {
throw err;
}
function handleStoppedNotification(notification, subscriber) {
const { onStoppedNotification } = config;
onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));
}
var EMPTY_OBSERVER = {
closed: true,
next: noop,
error: defaultErrorHandler,
complete: noop
};
// node_modules/rxjs/dist/esm/internal/symbol/observable.js
var observable = (() => typeof Symbol === "function" && Symbol.observable || "@@observable")();
// node_modules/rxjs/dist/esm/internal/util/identity.js
function identity(x) {
return x;
}
// 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);
};
}
// node_modules/rxjs/dist/esm/internal/Observable.js
var 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, error2, complete) {
const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error2, 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 _a2;
return (_a2 = this.source) === null || _a2 === void 0 ? void 0 : _a2.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);
};
function getPromiseCtor(promiseCtor) {
var _a2;
return (_a2 = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a2 !== void 0 ? _a2 : 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);
}
// 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");
};
}
// 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 = 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 _a2;
if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {
const { closed } = this;
super.unsubscribe();
!closed && ((_a2 = this.onFinalize) === null || _a2 === void 0 ? void 0 : _a2.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();
}
});
}
// node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js
var 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/scheduler/animationFrameProvider.js
var animationFrameProvider = {
schedule(callback) {
let request = requestAnimationFrame;
let cancel = cancelAnimationFrame;
const { delegate } = animationFrameProvider;
if (delegate) {
request = delegate.requestAnimationFrame;
cancel = delegate.cancelAnimationFrame;
}
const handle = request((timestamp) => {
cancel = void 0;
callback(timestamp);
});
return new Subscription(() => cancel === null || cancel === void 0 ? void 0 : cancel(handle));
},
requestAnimationFrame(...args) {
const { delegate } = animationFrameProvider;
return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame)(...args);
},
cancelAnimationFrame(...args) {
const { delegate } = animationFrameProvider;
return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame)(...args);
},
delegate: void 0
};
// node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js
var ObjectUnsubscribedError = createErrorClass((_super) => function ObjectUnsubscribedErrorImpl() {
_super(this);
this.name = "ObjectUnsubscribedError";
this.message = "object unsubscribed";
});
// node_modules/rxjs/dist/esm/internal/Subject.js
var 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 _a2;
return ((_a2 = this.observers) === null || _a2 === void 0 ? void 0 : _a2.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);
};
var AnonymousSubject = class extends Subject {
constructor(destination, source) {
super();
this.destination = destination;
this.source = source;
}
next(value) {
var _a2, _b;
(_b = (_a2 = this.destination) === null || _a2 === void 0 ? void 0 : _a2.next) === null || _b === void 0 ? void 0 : _b.call(_a2, value);
}
error(err) {
var _a2, _b;
(_b = (_a2 = this.destination) === null || _a2 === void 0 ? void 0 : _a2.error) === null || _b === void 0 ? void 0 : _b.call(_a2, err);
}
complete() {
var _a2, _b;
(_b = (_a2 = this.destination) === null || _a2 === void 0 ? void 0 : _a2.complete) === null || _b === void 0 ? void 0 : _b.call(_a2);
}
_subscribe(subscriber) {
var _a2, _b;
return (_b = (_a2 = this.source) === null || _a2 === void 0 ? void 0 : _a2.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;
}
};
// node_modules/rxjs/dist/esm/internal/BehaviorSubject.js
var 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 = {
now() {
return (dateTimestampProvider.delegate || Date).now();
},
delegate: void 0
};
// node_modules/rxjs/dist/esm/internal/ReplaySubject.js
var 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 last4 = 0;
for (let i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {
last4 = i;
}
last4 && _buffer.splice(0, last4 + 1);
}
}
};
// node_modules/rxjs/dist/esm/internal/scheduler/Action.js
var Action = class extends Subscription {
constructor(scheduler, work) {
super();
}
schedule(state2, delay = 0) {
return this;
}
};
// node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js
var intervalProvider = {
setInterval(handler, timeout, ...args) {
const { delegate } = intervalProvider;
if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {
return delegate.setInterval(handler, timeout, ...args);
}
return setInterval(handler, timeout, ...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 = class extends Action {
constructor(scheduler, work) {
super(scheduler, work);
this.scheduler = scheduler;
this.work = work;
this.pending = false;
}
schedule(state2, delay = 0) {
var _a2;
if (this.closed) {
return this;
}
this.state = state2;
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 = (_a2 = this.id) !== null && _a2 !== void 0 ? _a2 : 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(state2, delay) {
if (this.closed) {
return new Error("executing a cancelled action");
}
this.pending = false;
const error2 = this._execute(state2, delay);
if (error2) {
return error2;
} else if (this.pending === false && this.id != null) {
this.id = this.recycleAsyncId(this.scheduler, this.id, null);
}
}
_execute(state2, _delay) {
let errored = false;
let errorValue;
try {
this.work(state2);
} 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/util/Immediate.js
var nextHandle = 1;
var resolved;
var activeHandles = {};
function findAndClearHandle(handle) {
if (handle in activeHandles) {
delete activeHandles[handle];
return true;
}
return false;
}
var Immediate = {
setImmediate(cb) {
const handle = nextHandle++;
activeHandles[handle] = true;
if (!resolved) {
resolved = Promise.resolve();
}
resolved.then(() => findAndClearHandle(handle) && cb());
return handle;
},
clearImmediate(handle) {
findAndClearHandle(handle);
}
};
// node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js
var { setImmediate, clearImmediate } = Immediate;
var immediateProvider = {
setImmediate(...args) {
const { delegate } = immediateProvider;
return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate)(...args);
},
clearImmediate(handle) {
const { delegate } = immediateProvider;
return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);
},
delegate: void 0
};
// node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js
var AsapAction = class extends AsyncAction {
constructor(scheduler, work) {
super(scheduler, work);
this.scheduler = scheduler;
this.work = work;
}
requestAsyncId(scheduler, id, delay = 0) {
if (delay !== null && delay > 0) {
return super.requestAsyncId(scheduler, id, delay);
}
scheduler.actions.push(this);
return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, void 0)));
}
recycleAsyncId(scheduler, id, delay = 0) {
var _a2;
if (delay != null ? delay > 0 : this.delay > 0) {
return super.recycleAsyncId(scheduler, id, delay);
}
const { actions } = scheduler;
if (id != null && ((_a2 = actions[actions.length - 1]) === null || _a2 === void 0 ? void 0 : _a2.id) !== id) {
immediateProvider.clearImmediate(id);
if (scheduler._scheduled === id) {
scheduler._scheduled = void 0;
}
}
return void 0;
}
};
// node_modules/rxjs/dist/esm/internal/Scheduler.js
var Scheduler = class _Scheduler {
constructor(schedulerActionCtor, now = _Scheduler.now) {
this.schedulerActionCtor = schedulerActionCtor;
this.now = now;
}
schedule(work, delay = 0, state2) {
return new this.schedulerActionCtor(this, work).schedule(state2, delay);
}
};
Scheduler.now = dateTimestampProvider.now;
// node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js
var 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 error2;
this._active = true;
do {
if (error2 = action.execute(action.state, action.delay)) {
break;
}
} while (action = actions.shift());
this._active = false;
if (error2) {
while (action = actions.shift()) {
action.unsubscribe();
}
throw error2;
}
}
};
// node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js
var AsapScheduler = class extends AsyncScheduler {
flush(action) {
this._active = true;
const flushId = this._scheduled;
this._scheduled = void 0;
const { actions } = this;
let error2;
action = action || actions.shift();
do {
if (error2 = action.execute(action.state, action.delay)) {
break;
}
} while ((action = actions[0]) && action.id === flushId && actions.shift());
this._active = false;
if (error2) {
while ((action = actions[0]) && action.id === flushId && actions.shift()) {
action.unsubscribe();
}
throw error2;
}
}
};
// node_modules/rxjs/dist/esm/internal/scheduler/asap.js
var asapScheduler = new AsapScheduler(AsapAction);
// node_modules/rxjs/dist/esm/internal/scheduler/async.js
var asyncScheduler = new AsyncScheduler(AsyncAction);
var async = asyncScheduler;
// node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js
var AnimationFrameAction = class extends AsyncAction {
constructor(scheduler, work) {
super(scheduler, work);
this.scheduler = scheduler;
this.work = work;
}
requestAsyncId(scheduler, id, delay = 0) {
if (delay !== null && delay > 0) {
return super.requestAsyncId(scheduler, id, delay);
}
scheduler.actions.push(this);
return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(void 0)));
}
recycleAsyncId(scheduler, id, delay = 0) {
var _a2;
if (delay != null ? delay > 0 : this.delay > 0) {
return super.recycleAsyncId(scheduler, id, delay);
}
const { actions } = scheduler;
if (id != null && id === scheduler._scheduled && ((_a2 = actions[actions.length - 1]) === null || _a2 === void 0 ? void 0 : _a2.id) !== id) {
animationFrameProvider.cancelAnimationFrame(id);
scheduler._scheduled = void 0;
}
return void 0;
}
};
// node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js
var AnimationFrameScheduler = class extends AsyncScheduler {
flush(action) {
this._active = true;
let flushId;
if (action) {
flushId = action.id;
} else {
flushId = this._scheduled;
this._scheduled = void 0;
}
const { actions } = this;
let error2;
action = action || actions.shift();
do {
if (error2 = action.execute(action.state, action.delay)) {
break;
}
} while ((action = actions[0]) && action.id === flushId && actions.shift());
this._active = false;
if (error2) {
while ((action = actions[0]) && action.id === flushId && actions.shift()) {
action.unsubscribe();
}
throw error2;
}
}
};
// node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js
var animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);
// node_modules/rxjs/dist/esm/internal/observable/empty.js
var EMPTY = new Observable((subscriber) => subscriber.complete());
// node_modules/rxjs/dist/esm/internal/util/isScheduler.js
function isScheduler(value) {
return value && isFunction(value.schedule);
}
// 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;
}
// node_modules/tslib/tslib.es6.mjs
function __awaiter(thisArg, _arguments, P2, generator) {
function adopt(value) {
return value instanceof P2 ? value : new P2(function(resolve) {
resolve(value);
});
}
return new (P2 || (P2 = 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);
}
}
// node_modules/rxjs/dist/esm/internal/util/isArrayLike.js
var 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);
}
// node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js
function isInteropObservable(input2) {
return isFunction(input2[observable]);
}
// 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]);
}
// 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.`);
}
// node_modules/rxjs/dist/esm/internal/symbol/iterator.js
function getSymbolIterator() {
if (typeof Symbol !== "function" || !Symbol.iterator) {
return "@@iterator";
}
return Symbol.iterator;
}
var 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]);
}
// 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);
}
// 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, _a2;
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 && (_a2 = asyncIterable_1.return)) yield _a2.call(asyncIterable_1);
} finally {
if (e_1) throw e_1.error;
}
}
subscriber.complete();
});
}
// 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;
}
}
// 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)));
});
}
// 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));
});
}
// node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js
function scheduleObservable(input2, scheduler) {
return innerFrom(input2).pipe(subscribeOn(scheduler), observeOn(scheduler));
}
// node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js
function schedulePromise(input2, scheduler) {
return innerFrom(input2).pipe(subscribeOn(scheduler), observeOn(scheduler));
}
// 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();
}
}
});
});
}
// 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();
});
}
// 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);
});
});
}
// node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js
function scheduleReadableStreamLike(input2, scheduler) {
return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input2), scheduler);
}
// 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);
}
// node_modules/rxjs/dist/esm/internal/observable/from.js
function from(input2, scheduler) {
return scheduler ? scheduled(input2, scheduler) : innerFrom(input2);
}
// node_modules/rxjs/dist/esm/internal/observable/of.js
function of(...args) {
const scheduler = popScheduler(args);
return from(args, scheduler);
}
// 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);
}
// node_modules/rxjs/dist/esm/internal/util/isObservable.js
function isObservable(obj) {
return !!obj && (obj instanceof Observa ��ble || isFunction(obj.lift) && isFunction(obj.subscribe));
}
// node_modules/rxjs/dist/esm/internal/util/EmptyError.js
var 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);
}
// 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++));
}));
});
}
// node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js
var { isArray } = Array;
function callOrApply(fn, args) {
return isArray(args) ? fn(...args) : fn(args);
}
function mapOneOrManyArgs(fn) {
return map((args) => callOrApply(fn, args));
}
// node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js
var { isArray: isArray2 } = Array;
var { getPrototypeOf, prototype: objectProto, keys: getKeys } = Object;
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;
}
// node_modules/rxjs/dist/esm/internal/util/createObject.js
function createObject(keys, values) {
return keys.reduce((result, key, i) => (result[key] = values[i], result), {});
}
// 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();
}
}
// node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js
function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand2, 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) => {
expand2 && 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 (expand2) {
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();
};
}
// 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));
}
// node_modules/rxjs/dist/esm/internal/operators/mergeAll.js
function mergeAll(concurrent = Infinity) {
return mergeMap(identity, concurrent);
}
// node_modules/rxjs/dist/esm/internal/operators/concatAll.js
function concatAll() {
return mergeAll(1);
}
// node_modules/rxjs/dist/esm/internal/observable/concat.js
function concat(...args) {
return concatAll()(from(args, popScheduler(args)));
}
// node_modules/rxjs/dist/esm/internal/observable/defer.js
function defer(observableFactory) {
return new Observable((subscriber) => {
innerFrom(observableFactory()).subscribe(subscriber);
});
}
// node_modules/rxjs/dist/esm/internal/observable/forkJoin.js
function forkJoin(...args) {
const resultSelector = popResultSelector(args);
const { args: sources, keys } = argsArgArrayOrObject(args);
const result = new Observable((subscriber) => {
const { length } = sources;
if (!length) {
subscriber.complete();
return;
}
const values = new Array(length);
let remainingCompletions = length;
let remainingEmissions = length;
for (let sourceIndex = 0; sourceIndex < length; sourceIndex++) {
let hasValue = false;
innerFrom(sources[sourceIndex]).subscribe(createOperatorSubscriber(subscriber, (value) => {
if (!hasValue) {
hasValue = true;
remainingEmissions--;
}
values[sourceIndex] = value;
}, () => remainingCompletions--, void 0, () => {
if (!remainingCompletions || !hasValue) {
if (!remainingEmissions) {
subscriber.next(keys ? createObject(keys, values) : values);
}
subscriber.complete();
}
}));
}
});
return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;
}
// node_modules/rxjs/dist/esm/internal/observable/timer.js
function timer(dueTime = 0, intervalOrScheduler, scheduler = async) {
let intervalDuration = -1;
if (intervalOrScheduler != null) {
if (isScheduler(intervalOrScheduler)) {
scheduler = intervalOrScheduler;
} else {
intervalDuration = intervalOrScheduler;
}
}
return new Observable((subscriber) => {
let due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;
if (due < 0) {
due = 0;
}
let n = 0;
return scheduler.schedule(function() {
if (!subscriber.closed) {
subscriber.next(n++);
if (0 <= intervalDuration) {
this.schedule(void 0, intervalDuration);
} else {
subscriber.complete();
}
}
}, due);
});
}
// 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));
}
// 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)));
});
}
// node_modules/rxjs/dist/esm/internal/operators/audit.js
function audit(durationSelector) {
return operate((source, subscriber) => {
let hasValue = false;
let lastValue = null;
let durationSubscriber = null;
let isComplete = false;
const endDuration = () => {
durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();
durationSubscriber = null;
if (hasValue) {
hasValue = false;
const value = lastValue;
lastValue = null;
subscriber.next(value);
}
isComplete && subscriber.complete();
};
const cleanupDuration = () => {
durationSubscriber = null;
isComplete && subscriber.complete();
};
source.subscribe(createOperatorSubscriber(subscriber, (value) => {
hasValue = true;
lastValue = value;
if (!durationSubscriber) {
innerFrom(durationSelector(value)).subscribe(durationSubscriber = createOperatorSubscriber(subscriber, endDuration, cleanupDuration));
}
}, () => {
isComplete = true;
(!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();
}));
});
}
// node_modules/rxjs/dist/esm/internal/operators/auditTime.js
function auditTime(duration, scheduler = asyncScheduler) {
return audit(() => timer(duration, scheduler));
}
// 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);
}
});
}
// node_modules/rxjs/dist/esm/internal/operators/scanInternals.js
function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {
return (source, subscriber) => {
let hasState = hasSeed;
let state2 = seed;
let index = 0;
source.subscribe(createOperatorSubscriber(subscriber, (value) => {
const i = index++;
state2 = hasState ? accumulator(state2, value, i) : (hasState = true, value);
emitOnNext && subscriber.next(state2);
}, emitBeforeComplete && (() => {
hasState && subscriber.next(state2);
subscriber.complete();
})));
};
}
// node_modules/rxjs/dist/esm/internal/operators/reduce.js
function reduce(accumulator, seed) {
return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));
}
// node_modules/rxjs/dist/esm/internal/operators/concatMap.js
function concatMap(project, resultSelector) {
return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);
}
// 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;
}));
});
}
// 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();
}));
});
}
// 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();
}
}
}));
});
}
// 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;
}
// 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();
}
// node_modules/rxjs/dist/esm/internal/operators/expand.js
function expand(project, concurrent = Infinity, scheduler) {
concurrent = (concurrent || 0) < 1 ? Infinity : concurrent;
return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent, void 0, true, scheduler));
}
// node_modules/rxjs/dist/esm/internal/operators/finalize.js
function finalize(callback) {
return operate((source, subscriber) => {
try {
source.subscribe(subscriber);
} finally {
subscriber.add(callback);
}
});
}
// 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()));
}
// 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;
}));
});
}
// 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()));
}
// node_modules/rxjs/dist/esm/internal/operators/pairwise.js
function pairwise() {
return operate((source, subscriber) => {
let prev;
let hasPrev = false;
source.subscribe(createOperatorSubscriber(subscriber, (value) => {
const p = prev;
prev = value;
hasPrev && subscriber.next([p, value]);
hasPrev = true;
}));
});
}
// node_modules/rxjs/dist/esm/internal/operators/scan.js
function scan(accumulator, seed) {
return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));
}
// 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);
}
// node_modules/rxjs/dist/esm/internal/operators/shareReplay.js
function shareReplay(configOrBufferSize, windowTime, scheduler) {
let bufferSize;
let refCount2 = false;
if (configOrBufferSize && typeof configOrBufferSize === "object") {
({ bufferSize = Infinity, windowTime = Infinity, refCount: refCount2 = false, scheduler } = configOrBufferSize);
} else {
bufferSize = configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity;
}
return share({
connector: () => new ReplaySubject(bufferSize, windowTime, scheduler),
resetOnError: true,
resetOnComplete: false,
resetOnRefCountZero: refCount2
});
}
// node_modules/rxjs/dist/esm/internal/operators/skip.js
function skip(count) {
return filter((_, index) => count <= index);
}
// node_modules/rxjs/dist/esm/internal/operators/skipWhile.js
function skipWhile(predicate) {
return operate((source, subscriber) => {
let taking = false;
let index = 0;
source.subscribe(createOperatorSubscriber(subscriber, (value) => (taking || (taking = !predicate(value, index++))) && subscriber.next(value)));
});
}
// 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);
});
}
// 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();
}));
});
}
// 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);
});
}
// node_modules/rxjs/dist/esm/internal/operators/takeWhile.js
function takeWhile(predicate, inclusive = false) {
return operate((source, subscriber) => {
let index = 0;
source.subscribe(createOperatorSubscriber(subscriber, (value) => {
const result = predicate(value, index++);
(result || inclusive) && subscriber.next(value);
!result && subscriber.complete();
}));
});
}
// node_modules/rxjs/dist/esm/internal/operators/tap.js
function tap(observerOrNext, error2, complete) {
const tapObserver = isFunction(observerOrNext) || error2 || complete ? { next: observerOrNext, error: error2, complete } : observerOrNext;
return tapObserver ? operate((source, subscriber) => {
var _a2;
(_a2 = tapObserver.subscribe) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver);
let isUnsub = true;
source.subscribe(createOperatorSubscriber(subscriber, (value) => {
var _a3;
(_a3 = tapObserver.next) === null || _a3 === void 0 ? void 0 : _a3.call(tapObserver, value);
subscriber.next(value);
}, () => {
var _a3;
isUnsub = false;
(_a3 = tapObserver.complete) === null || _a3 === void 0 ? void 0 : _a3.call(tapObserver);
subscriber.complete();
}, (err) => {
var _a3;
isUnsub = false;
(_a3 = tapObserver.error) === null || _a3 === void 0 ? void 0 : _a3.call(tapObserver, err);
subscriber.error(err);
}, () => {
var _a3, _b;
if (isUnsub) {
(_a3 = tapObserver.unsubscribe) === null || _a3 === void 0 ? void 0 : _a3.call(tapObserver);
}
(_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);
}));
}) : identity;
}
// node_modules/@angular/core/fesm2022/effect.mjs
function createLinkedSignal(sourceFn, computationFn, equalityFn) {
const node = Object.create(LINKED_SIGNAL_NODE);
node.source = sourceFn;
node.computation = computationFn;
if (equalityFn != void 0) {
node.equal = equalityFn;
}
const linkedSignalGetter = () => {
producerUpdateValueVersion(node);
producerAccessed(node);
if (node.value === ERRORED) {
throw node.error;
}
return node.value;
};
const getter = linkedSignalGetter;
getter[SIGNAL] = node;
if (typeof ngDevMode !== "undefined" && ngDevMode) {
const debugName = node.debugName ? " (" + node.debugName + ")" : "";
getter.toString = () => `[LinkedSignal${debugName}: ${node.value}]`;
}
runPostProducerCreatedFn(node);
return getter;
}
function linkedSignalSetFn(node, newValue) {
producerUpdateValueVersion(node);
signalSetFn(node, newValue);
producerMarkClean(node);
}
function linkedSignalUpdateFn(node, updater) {
producerUpdateValueVersion(node);
signalUpdateFn(node, updater);
producerMarkClean(node);
}
var LINKED_SIGNAL_NODE = /* @__PURE__ */ (() => {
return __spreadProps(__spreadValues({}, REACTIVE_NODE), {
value: UNSET,
dirty: true,
error: null,
equal: defaultEquals,
kind: "linkedSignal",
producerMustRecompute(node) {
return node.value === UNSET || node.value === COMPUTING;
},
producerRecomputeValue(node) {
if (node.value === COMPUTING) {
throw new Error(typeof ngDevMode !== "undefined" && ngDevMode ? "Detected cycle in computations." : "");
}
const oldValue = node.value;
node.value = COMPUTING;
const prevConsumer = consumerBeforeComputation(node);
let newValue;
try {
const newSourceValue = node.source();
const prev = oldValue === UNSET || oldValue === ERRORED ? void 0 : {
source: node.sourceValue,
value: oldValue
};
newValue = node.computation(newSourceValue, prev);
node.sourceValue = newSourceValue;
} catch (err) {
newValue = ERRORED;
node.error = err;
} finally {
consumerAfterComputation(node, prevConsumer);
}
if (oldValue !== UNSET && newValue !== ERRORED && node.equal(oldValue, newValue)) {
node.value = oldValue;
return;
}
node.value = newValue;
node.version++;
}
});
})();
function untracked(nonReactiveReadsFn) {
const prevConsumer = setActiveConsumer(null);
try {
return nonReactiveReadsFn();
} finally {
setActiveConsumer(prevConsumer);
}
}
var BASE_EFFECT_NODE = /* @__PURE__ */ (() => __spreadProps(__spreadValues({}, REACTIVE_NODE), {
consumerIsAlwaysLive: true,
consumerAllowSignalWrites: true,
dirty: true,
kind: "effect"
}))();
function runEffect(node) {
node.dirty = false;
if (node.version > 0 && !consumerPollProducersForChange(node)) {
return;
}
node.version++;
const prevNode = consumerBeforeComputation(node);
try {
node.cleanup();
node.fn();
} finally {
consumerAfterComputation(node, prevNode);
}
}
// node_modules/@angular/core/fesm2022/primitives/signals.mjs
var formatter = {
/**
* If the function returns `null`, the formatter is not used for this reference
*/
header: (sig, config3) => {
if (!isSignal(sig) || config3?.ngSkipFormatting)
return null;
let value;
try {
value = sig();
} catch {
return ["span", "Signal(\u26A0\uFE0F Error)"];
}
const kind = "computation" in sig[SIGNAL] ? "Computed" : "Signal";
const isPrimitive = value === null || !Array.isArray(value) && typeof value !== "object";
return [
"span",
{},
["span", {}, `${kind}(`],
(() => {
if (isSignal(value)) {
return formatter.header(value, config3);
} else if (isPrimitive && value !== void 0 && typeof value !== "function") {
return ["object", { object: value }];
} else {
return prettifyPreview(value);
}
})(),
["span", {}, `)`]
];
},
hasBody: (sig, config3) => {
if (!isSignal(sig))
return false;
try {
sig();
} catch {
return false;
}
return !config3?.ngSkipFormatting;
},
body: (sig, config3) => {
const color = "var(--sys-color-primary)";
return [
"div",
{ style: `background: #FFFFFF10; padding-left: 4px; padding-top: 2px; padding-bottom: 2px;` },
["div", { style: `color: ${color}` }, "Signal value: "],
["div", { style: `padding-left: .5rem;` }, ["object", { object: sig(), config: config3 }]],
["div", { style: `color: ${color}` }, "Signal function: "],
[
"div",
{ style: `padding-left: .5rem;` },
["object", { object: sig, config: __spreadProps(__spreadValues({}, config3), { skipFormatting: true }) }]
]
];
}
};
function prettifyPreview(value) {
if (value === null)
return "null";
if (Array.isArray(value))
return `Array(${value.length})`;
if (value instanceof Element)
return `<${value.tagName.toLowerCase()}>`;
if (value instanceof URL)
return `URL`;
switch (typeof value) {
case "undefined": {
return "undefined";
}
case "function": {
if ("prototype" in value) {
return "class";
} else {
return "() => {\u2026}";
}
}
case "object": {
if (value.constructor.name === "Object") {
return "{\u2026}";
} else {
return `${value.constructor.name} {}`;
}
}
default: {
return ["object", { object: value, config: { skipFormatting: true } }];
}
}
}
function isSignal(value) {
return value[SIGNAL] !== void 0;
}
function installDevToolsSignalFormatter() {
globalThis.devtoolsFormatters ??= [];
if (!globalThis.devtoolsFormatters.some((f) => f === formatter)) {
globalThis.devtoolsFormatters.push(formatter);
}
}
if (typeof ngDevMode !== "undefined" && ngDevMode) {
installDevToolsSignalFormatter();
}
// node_modules/@angular/core/fesm2022/root_effect_scheduler.mjs
var Version = class {
full;
major;
minor;
patch;
constructor(full) {
this.full = full;
const parts = full.split(".");
this.major = parts[0];
this.minor = parts[1];
this.patch = parts.slice(2).join(".");
}
};
var VERSION = /* @__PURE__ */ new Version("20.3.6");
var ERROR_DETAILS_PAGE_BASE_URL = (() => {
const versionSubDomain = VERSION.major !== "0" ? `v${VERSION.major}.` : "";
return `https://${versionSubDomain}angular.dev/errors`;
})();
var XSS_SECURITY_URL = "https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss";
var RuntimeError = class extends Error {
code;
constructor(code2, message) {
super(formatRuntimeError(code2, message));
this.code = code2;
}
};
function formatRuntimeErrorCode(code2) {
return `NG0${Math.abs(code2)}`;
}
function formatRuntimeError(code2, message) {
const fullCode = formatRuntimeErrorCode(code2);
let errorMessage = `${fullCode}${message ? ": " + message : ""}`;
if (ngDevMode && code2 < 0) {
const addPeriodSeparator = !errorMessage.match(/[.,;!?\n]$/);
const separator = addPeriodSeparator ? "." : "";
errorMessage = `${errorMessage}${separator} Find more at ${ERROR_DETAILS_PAGE_BASE_URL}/${fullCode}`;
}
return errorMessage;
}
var _global = globalThis;
function ngDevModeResetPerfCounters() {
const locationString = typeof location !== "undefined" ? location.toString() : "";
const newCounters = {
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(typeof ngDevMode !== "undefined" && ngDevMode ? "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}`;
}
var __forward_ref__ = getClosureSafeProperty({ __forward_ref__: getClosureSafeProperty });
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);
}
function isInjectable(type) {
return getInjectableDef(type) !== null;
}
function getOwnDefinition(type, field) {
return type.hasOwnProperty(field) && type[field] || null;
}
function getInheritedInjectableDef(type) {
const def = type?.[NG_PROV_DEF] ?? null;
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[NG_INJ_DEF] : null;
}
var NG_PROV_DEF = getClosureSafeProperty({ \u0275prov: getClosureSafeProperty });
var NG_INJ_DEF = getClosureSafeProperty({ \u0275inj: getClosureSafeProperty });
var InjectionToken = class {
_desc;
/** @internal */
ngMetadataName = "InjectionToken";
\u0275prov;
/**
* @param _desc Description for the token,
* used only for debugging purposes,
* it should but does not need to be unique
* @param options Options for the token's usage, as described above
*/
constructor(_desc, options) {
this._desc = _desc;
this.\u0275prov = void 0;
if (typeof options == "number") {
(typeof ngDevMode === "undefined" || ngDevMode) && assertLessThan(options, 0, "Only negative numbers are supported here");
this.__NG_ELEMENT_ID__ = options;
} else if (options !== void 0) {
this.\u0275prov = \u0275\u0275defineInjectable({
token: this,
providedIn: options.providedIn || "root",
factory: options.factory
});
}
}
/**
* @internal
*/
get multi() {
return this;
}
toString() {
return `InjectionToken ${this._desc}`;
}
};
var _injectorProfilerContext;
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;
}
var injectorProfilerCallbacks = [];
var NOOP_PROFILER_REMOVAL = () => {
};
function removeProfiler(profiler2) {
const profilerIdx = injectorProfilerCallbacks.indexOf(profiler2);
if (profilerIdx !== -1) {
injectorProfilerCallbacks.splice(profilerIdx, 1);
}
}
function setInjectorProfiler(injectorProfiler2) {
!ngDevMode && throwError2("setInjectorProfiler should never be called in production mode");
if (injectorProfiler2 !== null) {
if (!injectorProfilerCallbacks.includes(injectorProfiler2)) {
injectorProfilerCallbacks.push(injectorProfiler2);
}
return () => removeProfiler(injectorProfiler2);
} else {
injectorProfilerCallbacks.length = 0;
return NOOP_PROFILER_REMOVAL;
}
}
function injectorProfiler(event) {
!ngDevMode && throwError2("Injector profiler should never be called in production mode");
for (let i = 0; i < injectorProfilerCallbacks.length; i++) {
const injectorProfilerCallback = injectorProfilerCallbacks[i];
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 emitInjectorToCreateInstanceEvent(token) {
!ngDevMode && throwError2("Injector profiler should never be called in production mode");
injectorProfiler({
type: 4,
context: getInjectorProfilerContext(),
token
});
}
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;
}
var NG_COMP_DEF = getClosureSafeProperty({ \u0275cmp: getClosureSafeProperty });
var NG_DIR_DEF = getClosureSafeProperty({ \u0275dir: getClosureSafeProperty });
var NG_PIPE_DEF = getClosureSafeProperty({ \u0275pipe: getClosureSafeProperty });
var NG_MOD_DEF = getClosureSafeProperty({ \u0275mod: getClosureSafeProperty });
var NG_FACTORY_DEF = getClosureSafeProperty({ \u0275fac: getClosureSafeProperty });
var NG_ELEMENT_ID = getClosureSafeProperty({
__NG_ELEMENT_ID__: getClosureSafeProperty
});
var NG_ENV_ID = getClosureSafeProperty({ __NG_ENV_ID__: getClosureSafeProperty });
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);
}
var NG_RUNTIME_ERROR_CODE = getClosureSafeProperty({ "ngErrorCode": getClosureSafeProperty });
var NG_RUNTIME_ERROR_MESSAGE = getClosureSafeProperty({ "ngErrorMessage": getClosureSafeProperty });
var NG_TOKEN_PATH = getClosureSafeProperty({ "ngTokenPath": getClosureSafeProperty });
function cyclicDependencyError(token, path) {
const message = ngDevMode ? `Circular dependency detected for \`${token}\`.` : "";
return createRuntimeError(message, -200, path);
}
function cyclicDependencyErrorWithDetails(token, path) {
return augmentRuntimeError(cyclicDependencyError(token, path), null);
}
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 prependTokenToDependencyPath(error2, token) {
error2[NG_TOKEN_PATH] ??= [];
const currentPath = error2[NG_TOKEN_PATH];
let pathStr;
if (typeof token === "object" && "multi" in token && token?.multi === true) {
assertDefined(token.provide, "Token with multi: true should have a provide property");
pathStr = stringifyForError(token.provide);
} else {
pathStr = stringifyForError(token);
}
if (currentPath[0] !== pathStr) {
error2[NG_TOKEN_PATH].unshift(pathStr);
}
}
function augmentRuntimeError(error2, source) {
const tokenPath = error2[NG_TOKEN_PATH];
const errorCode = error2[NG_RUNTIME_ERROR_CODE];
const message = error2[NG_RUNTIME_ERROR_MESSAGE] || error2.message;
error2.message = formatErrorMessage(message, errorCode, tokenPath, source);
return error2;
}
function createRuntimeError(message, code2, path) {
const error2 = new RuntimeError(code2, message);
error2[NG_RUNTIME_ERROR_CODE] = code2;
error2[NG_RUNTIME_ERROR_MESSAGE] = message;
if (path) {
error2[NG_TOKEN_PATH] = path;
}
return error2;
}
function getRuntimeErrorCode(error2) {
return error2[NG_RUNTIME_ERROR_CODE];
}
function formatErrorMessage(text2, code2, path = [], source = null) {
let pathDetails = "";
if (path && path.length > 1) {
pathDetails = ` Path: ${path.join(" -> ")}.`;
}
const sourceDetails = source ? ` Source: ${source}.` : "";
return formatRuntimeError(code2, `${text2}${sourceDetails}${pathDetails}`);
}
var _injectImplementation;
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 & 8)
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");
}
var _THROW_IF_NOT_FOUND = {};
var THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;
var DI_DECORATOR_FLAG = "__NG_DI_FLAG__";
var RetrievingInjector = class {
injector;
constructor(injector) {
this.injector = injector;
}
retrieve(token, options) {
const flags = convertToBitFlags(options) || 0;
try {
return this.injector.get(
token,
// When a dependency is requested with an optional flag, DI returns null as the default value.
flags & 8 ? null : THROW_IF_NOT_FOUND,
flags
);
} catch (e) {
if (isNotFound(e)) {
return e;
}
throw e;
}
}
};
function injectInjectorOnly(token, flags = 0) {
const currentInjector = getCurrentInjector();
if (currentInjector === 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 (currentInjector === null) {
return injectRootLimpMode(token, void 0, flags);
} else {
const options = convertToInjectOptions(flags);
const value = currentInjector.retrieve(token, options);
ngDevMode && emitInjectEvent(token, value, flags);
if (isNotFound(value)) {
if (options.optional) {
return null;
}
throw value;
}
return value;
}
}
function \u0275\u0275inject(token, flags = 0) {
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 inject2(token, options) {
return \u0275\u0275inject(token, convertToBitFlags(options));
}
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 convertToInjectOptions(flags) {
return {
optional: !!(flags & 8),
host: !!(flags & 1),
self: !!(flags & 2),
skipSelf: !!(flags & 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 = 0;
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 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(list2) {
return list2.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 list2 = [];
for (let i = 0; i < size; i++) {
list2.push(value);
}
return list2;
}
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);
}
var EMPTY_OBJ = {};
var EMPTY_ARRAY = [];
if ((typeof ngDevMode === "undefined" || ngDevMode) && initNgDevMode()) {
Object.freeze(EMPTY_OBJ);
Object.freeze(EMPTY_ARRAY);
}
var ENVIRONMENT_INITIALIZER = new InjectionToken(ngDevMode ? "ENVIRONMENT_INITIALIZER" : "");
var INJECTOR$1 = new InjectionToken(
ngDevMode ? "INJECTOR" : "",
// Disable tslint because this is const enum which gets inlined not top level prop access.
// tslint:disable-next-line: no-toplevel-property-access
-1
/* InjectorMarkers.Injector */
);
var INJECTOR_DEF_TYPES = new InjectionToken(ngDevMode ? "INJECTOR_DEF_TYPES" : "");
var NullInjector = class {
get(token, notFoundValue = THROW_IF_NOT_FOUND) {
if (notFoundValue === THROW_IF_NOT_FOUND) {
const message = ngDevMode ? `No provider found for \`${stringify(token)}\`.` : "";
const error2 = createRuntimeError(
message,
-201
/* RuntimeErrorCode.PROVIDER_NOT_FOUND */
);
error2.name = "\u0275NotFound";
throw error2;
}
return notFoundValue;
}
};
function getNgModuleDef(type) {
return type[NG_MOD_DEF] || null;
}
function getNgModuleDefOrThrow(type) {
const ngModuleDef = getNgModuleDef(type);
if (!ngModuleDef) {
throw new RuntimeError(915, (typeof ngDevMode === "undefined" || ngDevMode) && `Type ${stringify(type)} does not have '\u0275mod' property.`);
}
return ngModuleDef;
}
function getComponentDef(type) {
return type[NG_COMP_DEF] || null;
}
function getDirectiveDefOrThrow(type) {
const def = getDirectiveDef(type);
if (!def) {
throw new RuntimeError(916, (typeof ngDevMode === "undefined" || ngDevMode) && `Type ${stringify(type)} does not have '\u0275dir' property.`);
}
return def;
}
function getDirectiveDef(type) {
return type[NG_DIR_DEF] || null;
}
function getPipeDef(type) {
return type[NG_PIPE_DEF] || null;
}
function isStandalone(type) {
const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef(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).concat(defName);
throw cyclicDependencyErrorWithDetails(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);
}
}
}
var USE_VALUE = getClosureSafeProperty({
provide: String,
useValue: getClosureSafeProperty
});
function isValueProvider(value) {
return value !== null && typeof value == "object" && USE_VALUE 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;
}
var INJECTOR_SCOPE = new InjectionToken(ngDevMode ? "Set Injector scope." : "");
var NOT_YET = {};
var CIRCULAR = {};
var NULL_INJECTOR = void 0;
function getNullInjector() {
if (NULL_INJECTOR === void 0) {
NULL_INJECTOR = new NullInjector();
}
return NULL_INJECTOR;
}
var EnvironmentInjector = class {
};
var R3Injector = class extends EnvironmentInjector {
parent;
source;
scopes;
/**
* Map of tokens to records which contain the instances of those tokens.
* - `null` value implies that we don't have the record. Used by tree-shakable injectors
* to prevent further searches.
*/
records = /* @__PURE__ */ new Map();
/**
* Set of values instantiated by this injector which contain `ngOnDestroy` lifecycle hooks.
*/
_ngOnDestroyHooks = /* @__PURE__ */ new Set();
_onDestroyHooks = [];
/**
* Flag indicating that this injector was previously destroyed.
*/
get destroyed() {
return this._destroyed;
}
_destroyed = false;
injectorDefTypes;
constructor(providers, parent, source, scopes) {
super();
this.parent = parent;
this.source = source;
this.scopes = scopes;
forEachSingleProvider(providers, (provider) => this.processProvider(provider));
this.records.set(INJECTOR$1, makeRecord(void 0, this));
if (scopes.has("environment")) {
this.records.set(EnvironmentInjector, makeRecord(void 0, this));
}
const record = this.records.get(INJECTOR_SCOPE);
if (record != null && typeof record.value === "string") {
this.scopes.add(record.value);
}
this.injectorDefTypes = new Set(this.get(INJECTOR_DEF_TYPES, EMPTY_ARRAY, { self: true }));
}
retrieve(token, options) {
const flags = convertToBitFlags(options) || 0;
try {
return this.get(
token,
// When a dependency is requested with an optional flag, DI returns null as the default value.
THROW_IF_NOT_FOUND,
flags
);
} catch (e) {
if (isNotFound(e)) {
return e;
}
throw e;
}
}
/**
* Destroy the injector and release references to every instance or provider associated with it.
*
* Also calls the `OnDestroy` lifecycle hooks of every instance that was created for which a
* hook was found.
*/
destroy() {
assertNotDestroyed(this);
this._destroyed = true;
const prevConsumer = setActiveConsumer(null);
try {
for (const service of this._ngOnDestroyHooks) {
service.ngOnDestroy();
}
const onDestroyHooks = this._onDestroyHooks;
this._onDestroyHooks = [];
for (const hook of onDestroyHooks) {
hook();
}
} finally {
this.records.clear();
this._ngOnDestroyHooks.clear();
this.injectorDefTypes.clear();
setActiveConsumer(prevConsumer);
}
}
onDes ��troy(callback) {
assertNotDestroyed(this);
this._onDestroyHooks.push(callback);
return () => this.removeOnDestroy(callback);
}
runInContext(fn) {
assertNotDestroyed(this);
const previousInjector = setCurrentInjector(this);
const previousInjectImplementation = setInjectImplementation(void 0);
let prevInjectContext;
if (ngDevMode) {
prevInjectContext = setInjectorProfilerContext({ injector: this, token: null });
}
try {
return fn();
} finally {
setCurrentInjector(previousInjector);
setInjectImplementation(previousInjectImplementation);
ngDevMode && setInjectorProfilerContext(prevInjectContext);
}
}
get(token, notFoundValue = THROW_IF_NOT_FOUND, options) {
assertNotDestroyed(this);
if (token.hasOwnProperty(NG_ENV_ID)) {
return token[NG_ENV_ID](this);
}
const flags = convertToBitFlags(options);
let prevInjectContext;
if (ngDevMode) {
prevInjectContext = setInjectorProfilerContext({ injector: this, token });
}
const previousInjector = setCurrentInjector(this);
const previousInjectImplementation = setInjectImplementation(void 0);
try {
if (!(flags & 4)) {
let record = this.records.get(token);
if (record === void 0) {
const def = couldBeInjectableType(token) && getInjectableDef(token);
if (def && this.injectableDefInScope(def)) {
if (ngDevMode) {
runInInjectorProfilerContext(this, token, () => {
emitProviderConfiguredEvent(token);
});
}
record = makeRecord(injectableDefOrInjectorDefFactory(token), NOT_YET);
} else {
record = null;
}
this.records.set(token, record);
}
if (record != null) {
return this.hydrate(token, record, flags);
}
}
const nextInjector = !(flags & 2) ? this.parent : getNullInjector();
notFoundValue = flags & 8 && notFoundValue === THROW_IF_NOT_FOUND ? null : notFoundValue;
return nextInjector.get(token, notFoundValue);
} catch (error2) {
const errorCode = getRuntimeErrorCode(error2);
if (errorCode === -200 || errorCode === -201) {
if (ngDevMode) {
prependTokenToDependencyPath(error2, token);
if (previousInjector) {
throw error2;
} else {
throw augmentRuntimeError(error2, this.source);
}
} else {
throw new RuntimeError(errorCode, null);
}
} else {
throw error2;
}
} finally {
setInjectImplementation(previousInjectImplementation);
setCurrentInjector(previousInjector);
ngDevMode && setInjectorProfilerContext(prevInjectContext);
}
}
/** @internal */
resolveInjectorInitializers() {
const prevConsumer = setActiveConsumer(null);
const previousInjector = setCurrentInjector(this);
const previousInjectImplementation = setInjectImplementation(void 0);
let prevInjectContext;
if (ngDevMode) {
prevInjectContext = setInjectorProfilerContext({ injector: this, token: null });
}
try {
const initializers = this.get(ENVIRONMENT_INITIALIZER, EMPTY_ARRAY, { self: true });
if (ngDevMode && !Array.isArray(initializers)) {
throw new RuntimeError(-209, `Unexpected type of the \`ENVIRONMENT_INITIALIZER\` token value (expected an array, but got ${typeof initializers}). Please check that the \`ENVIRONMENT_INITIALIZER\` token is configured as a \`multi: true\` provider.`);
}
for (const initializer of initializers) {
initializer();
}
} finally {
setCurrentInjector(previousInjector);
setInjectImplementation(previousInjectImplementation);
ngDevMode && setInjectorProfilerContext(prevInjectContext);
setActiveConsumer(prevConsumer);
}
}
toString() {
const tokens = [];
const records = this.records;
for (const token of records.keys()) {
tokens.push(stringify(token));
}
return `R3Injector[${tokens.join(", ")}]`;
}
/**
* Process a `SingleProvider` and add it.
*/
processProvider(provider) {
provider = resolveForwardRef(provider);
let token = isTypeProvider(provider) ? provider : resolveForwardRef(provider && provider.provide);
const record = providerToRecord(provider);
if (ngDevMode) {
runInInjectorProfilerContext(this, token, () => {
if (isValueProvider(provider)) {
emitInjectorToCreateInstanceEvent(token);
emitInstanceCreatedByInjectorEvent(provider.useValue);
}
emitProviderConfiguredEvent(provider);
});
}
if (!isTypeProvider(provider) && provider.multi === true) {
let multiRecord = this.records.get(token);
if (multiRecord) {
if (ngDevMode && multiRecord.multi === void 0) {
throwMixedMultiProviderError();
}
} else {
multiRecord = makeRecord(void 0, NOT_YET, true);
multiRecord.factory = () => injectArgs(multiRecord.multi);
this.records.set(token, multiRecord);
}
token = provider;
multiRecord.multi.push(provider);
} else {
if (ngDevMode) {
const existing = this.records.get(token);
if (existing && existing.multi !== void 0) {
throwMixedMultiProviderError();
}
}
}
this.records.set(token, record);
}
hydrate(token, record, flags) {
const prevConsumer = setActiveConsumer(null);
try {
if (record.value === CIRCULAR) {
throw cyclicDependencyError(stringify(token));
} else if (record.value === NOT_YET) {
record.value = CIRCULAR;
if (ngDevMode) {
runInInjectorProfilerContext(this, token, () => {
emitInjectorToCreateInstanceEvent(token);
record.value = record.factory(void 0, flags);
emitInstanceCreatedByInjectorEvent(record.value);
});
} else {
record.value = record.factory(void 0, flags);
}
}
if (typeof record.value === "object" && record.value && hasOnDestroy(record.value)) {
this._ngOnDestroyHooks.add(record.value);
}
return record.value;
} finally {
setActiveConsumer(prevConsumer);
}
}
injectableDefInScope(def) {
if (!def.providedIn) {
return false;
}
const providedIn = resolveForwardRef(def.providedIn);
if (typeof providedIn === "string") {
return providedIn === "any" || this.scopes.has(providedIn);
} else {
return this.injectorDefTypes.has(providedIn);
}
}
removeOnDestroy(callback) {
const destroyCBIdx = this._onDestroyHooks.indexOf(callback);
if (destroyCBIdx !== -1) {
this._onDestroyHooks.splice(destroyCBIdx, 1);
}
}
};
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 & 8 ? 8 : 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.ngMetadataName === "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`");
}
}
var HOST = 0;
var TVIEW = 1;
var FLAGS = 2;
var PARENT = 3;
var NEXT = 4;
var T_HOST = 5;
var HYDRATION = 6;
var CLEANUP = 7;
var CONTEXT = 8;
var INJECTOR = 9;
var ENVIRONMENT = 10;
var RENDERER = 11;
var CHILD_HEAD = 12;
var CHILD_TAIL = 13;
var DECLARATION_VIEW = 14;
var DECLARATION_COMPONENT_VIEW = 15;
var DECLARATION_LCONTAINER = 16;
var PREORDER_HOOK_FLAGS = 17;
var QUERIES = 18;
var ID = 19;
var EMBEDDED_VIEW_INJECTOR = 20;
var ON_DESTROY_HOOKS = 21;
var EFFECTS_TO_SCHEDULE = 22;
var EFFECTS = 23;
var REACTIVE_TEMPLATE_CONSUMER = 24;
var AFTER_RENDER_SEQUENCES_TO_ADD = 25;
var ANIMATIONS = 26;
var HEADER_OFFSET = 27;
var TYPE = 1;
var DEHYDRATED_VIEWS = 6;
var NATIVE = 7;
var VIEW_REFS = 8;
var MOVED_VIEWS = 9;
var CONTAINER_HEADER_OFFSET = 10;
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 assertTNodeCreationIndex(lView, index) {
const adjustedIndex = index + HEADER_OFFSET;
assertIndexInRange(lView, adjustedIndex);
assertLessThan(adjustedIndex, lView[TVIEW].bindingStartIndex, "TNodes should be created before any bindings");
}
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 (<ng-content>) 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");
}
var SVG_NAMESPACE = "svg";
var MATH_ML_NAMESPACE = "math";
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));
}
}
}
var instructionState = {
lFrame: createLFrame(null),
bindingsEnabled: true,
skipHydrationRootTNode: null
};
var CheckNoChangesMode;
(function(CheckNoChangesMode2) {
CheckNoChangesMode2[CheckNoChangesMode2["Off"] = 0] = "Off";
CheckNoChangesMode2[CheckNoChangesMode2["Exhaustive"] = 1] = "Exhaustive";
CheckNoChangesMode2[CheckNoChangesMode2["OnlyDirtyViews"] = 2] = "OnlyDirtyViews";
})(CheckNoChangesMode || (CheckNoChangesMode = {}));
var _checkNoChangesMode = 0;
var _isRefreshingViews = false;
function getElementDepthCount() {
return instructionState.lFrame.elementDepthCount;
}
function increaseElementDepthCount() {
instructionState.lFrame.elementDepthCount++;
}
function decreaseElementDepthCount() {
instructionState.lFrame.elementDepthCount--;
}
function getBindingsEnabled() {
return instructionState.bindingsEnabled;
}
function isInSkipHydrationBlock() {
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 & 4) {
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 & 1)) {
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;
}
var leaveDI = leaveViewLight;
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;
}
var _wasLastNodeCreated = true;
function wasLastNodeCreated() {
return _wasLastNodeCreated;
}
function lastNodeWasCreated(flag) {
_wasLastNodeCreated = flag;
}
function createInjector(defType, parent = null, additionalProviders = null, name) {
const injector = createInjectorWithoutInjectorInstances(defType, parent, additionalProviders, name);
injector.resolveInjectorInitializers();
return injector;
}
function createIn ��jectorWithoutInjectorInstances(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);
}
var Injector = class _Injector {
static THROW_IF_NOT_FOUND = THROW_IF_NOT_FOUND;
static NULL = new NullInjector();
static create(options, parent) {
if (Array.isArray(options)) {
return createInjector({ name: "" }, parent, options, "");
} else {
const name = options.name ?? "";
return createInjector({ name }, options.parent, options.providers, name);
}
}
/** @nocollapse */
static \u0275prov = (
/** @pureOrBreakMyCode */
/* @__PURE__ */ \u0275\u0275defineInjectable({
token: _Injector,
providedIn: "any",
factory: () => \u0275\u0275inject(INJECTOR$1)
})
);
/**
* @internal
* @nocollapse
*/
static __NG_ELEMENT_ID__ = -1;
};
var DOCUMENT = new InjectionToken(ngDevMode ? "DocumentToken" : "");
var DestroyRef = class {
/**
* @internal
* @nocollapse
*/
static __NG_ELEMENT_ID__ = injectDestroyRef;
/**
* @internal
* @nocollapse
*/
static __NG_ENV_ID__ = (injector) => injector;
};
var NodeInjectorDestroyRef = class extends DestroyRef {
_lView;
constructor(_lView) {
super();
this._lView = _lView;
}
get destroyed() {
return isDestroyed(this._lView);
}
onDestroy(callback) {
const lView = this._lView;
storeLViewOnDestroy(lView, callback);
return () => removeLViewOnDestroy(lView, callback);
}
};
function injectDestroyRef() {
return new NodeInjectorDestroyRef(getLView());
}
var ErrorHandler = class {
/**
* @internal
*/
_console = console;
handleError(error2) {
this._console.error("ERROR", error2);
}
};
var INTERNAL_APPLICATION_ERROR_HANDLER = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "internal error handler" : "", {
providedIn: "root",
factory: () => {
const injector = inject2(EnvironmentInjector);
let userErrorHandler;
return (e) => {
if (injector.destroyed && !userErrorHandler) {
setTimeout(() => {
throw e;
});
} else {
userErrorHandler ??= injector.get(ErrorHandler);
userErrorHandler.handleError(e);
}
};
}
});
var errorHandlerEnvironmentInitializer = {
provide: ENVIRONMENT_INITIALIZER,
useValue: () => void inject2(ErrorHandler),
multi: true
};
var globalErrorListeners = new InjectionToken(ngDevMode ? "GlobalErrorListeners" : "", {
providedIn: "root",
factory: () => {
if (false) {
return;
}
const window2 = inject2(DOCUMENT).defaultView;
if (!window2) {
return;
}
const errorHandler2 = inject2(INTERNAL_APPLICATION_ERROR_HANDLER);
const rejectionListener = (e) => {
errorHandler2(e.reason);
e.preventDefault();
};
const errorListener = (e) => {
if (e.error) {
errorHandler2(e.error);
} else {
errorHandler2(new Error(ngDevMode ? `An ErrorEvent with no error occurred. See Error.cause for details: ${e.message}` : e.message, { cause: e }));
}
e.preventDefault();
};
const setupEventListeners = () => {
window2.addEventListener("unhandledrejection", rejectionListener);
window2.addEventListener("error", errorListener);
};
if (typeof Zone !== "undefined") {
Zone.root.run(setupEventListeners);
} else {
setupEventListeners();
}
inject2(DestroyRef).onDestroy(() => {
window2.removeEventListener("error", errorListener);
window2.removeEventListener("unhandledrejection", rejectionListener);
});
}
});
function provideBrowserGlobalErrorListeners() {
return makeEnvironmentProviders([
provideEnvironmentInitializer(() => void inject2(globalErrorListeners))
]);
}
function isSignal2(value) {
return typeof value === "function" && value[SIGNAL] !== void 0;
}
function signal(initialValue, options) {
const [get, set2, update] = createSignal(initialValue, options?.equal);
const signalFn = get;
const node = signalFn[SIGNAL];
signalFn.set = set2;
signalFn.update = update;
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 isSignal2(value) && typeof value.set === "function";
}
function assertNotInReactiveContext(debugFn, extraContext) {
if (getActiveConsumer() !== null) {
throw new RuntimeError(-602, ngDevMode && `${debugFn.name}() cannot be called from within a reactive context.${extraContext ? ` ${extraContext}` : ""}`);
}
}
var ViewContext = class {
view;
node;
constructor(view, node) {
this.view = view;
this.node = node;
}
/**
* @internal
* @nocollapse
*/
static __NG_ELEMENT_ID__ = injectViewContext;
};
function injectViewContext() {
return new ViewContext(getLView(), getCurrentTNode());
}
var ChangeDetectionScheduler = class {
};
var ZONELESS_ENABLED = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "Zoneless enabled" : "", { providedIn: "root", factory: () => false });
var PROVIDED_ZONELESS = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "Zoneless provided" : "", { providedIn: "root", factory: () => false });
var ZONELESS_SCHEDULER_DISABLED = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "scheduler disabled" : "");
var SCHEDULE_IN_ROOT_ZONE = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "run changes outside zone in root" : "");
var PendingTasksInternal = class _PendingTasksInternal {
taskId = 0;
pendingTasks = /* @__PURE__ */ new Set();
destroyed = false;
pendingTask = new BehaviorSubject(false);
get hasPendingTasks() {
return this.destroyed ? false : this.pendingTask.value;
}
/**
* In case the service is about to be destroyed, return a self-completing observable.
* Otherwise, return the observable that emits the current state of pending tasks.
*/
get hasPendingTasksObservable() {
if (this.destroyed) {
return new Observable((subscriber) => {
subscriber.next(false);
subscriber.complete();
});
}
return this.pendingTask;
}
add() {
if (!this.hasPendingTasks && !this.destroyed) {
this.pendingTask.next(true);
}
const taskId = this.taskId++;
this.pendingTasks.add(taskId);
return taskId;
}
has(taskId) {
return this.pendingTasks.has(taskId);
}
remove(taskId) {
this.pendingTasks.delete(taskId);
if (this.pendingTasks.size === 0 && this.hasPendingTasks) {
this.pendingTask.next(false);
}
}
ngOnDestroy() {
this.pendingTasks.clear();
if (this.hasPendingTasks) {
this.pendingTask.next(false);
}
this.destroyed = true;
this.pendingTask.unsubscribe();
}
/** @nocollapse */
static \u0275prov = (
/** @pureOrBreakMyCode */
/* @__PURE__ */ \u0275\u0275defineInjectable({
token: _PendingTasksInternal,
providedIn: "root",
factory: () => new _PendingTasksInternal()
})
);
};
var PendingTasks = class _PendingTasks {
internalPendingTasks = inject2(PendingTasksInternal);
scheduler = inject2(ChangeDetectionScheduler);
errorHandler = inject2(INTERNAL_APPLICATION_ERROR_HANDLER);
/**
* Adds a new task that should block application's stability.
* @returns A cleanup function that removes a task when called.
*/
add() {
const taskId = this.internalPendingTasks.add();
return () => {
if (!this.internalPendingTasks.has(taskId)) {
return;
}
this.scheduler.notify(
11
/* NotificationSource.PendingTaskRemoved */
);
this.internalPendingTasks.remove(taskId);
};
}
/**
* Runs an asynchronous function and blocks the application's stability until the function completes.
*
* ```ts
* pendingTasks.run(async () => {
* const userData = await fetch('/api/user');
* this.userData.set(userData);
* });
* ```
*
* @param fn The asynchronous function to execute
* @developerPreview 19.0
*/
run(fn) {
const removeTask = this.add();
fn().catch(this.errorHandler).finally(removeTask);
}
/** @nocollapse */
static \u0275prov = (
/** @pureOrBreakMyCode */
/* @__PURE__ */ \u0275\u0275defineInjectable({
token: _PendingTasks,
providedIn: "root",
factory: () => new _PendingTasks()
})
);
};
function noop2(...args) {
}
var EffectScheduler = class _EffectScheduler {
/** @nocollapse */
static \u0275prov = (
/** @pureOrBreakMyCode */
/* @__PURE__ */ \u0275\u0275defineInjectable({
token: _EffectScheduler,
providedIn: "root",
factory: () => new ZoneAwareEffectScheduler()
})
);
};
var ZoneAwareEffectScheduler = class {
dirtyEffectCount = 0;
queues = /* @__PURE__ */ new Map();
add(handle) {
this.enqueue(handle);
this.schedule(handle);
}
schedule(handle) {
if (!handle.dirty) {
return;
}
this.dirtyEffectCount++;
}
remove(handle) {
const zone = handle.zone;
const queue = this.queues.get(zone);
if (!queue.has(handle)) {
return;
}
queue.delete(handle);
if (handle.dirty) {
this.dirtyEffectCount--;
}
}
enqueue(handle) {
const zone = handle.zone;
if (!this.queues.has(zone)) {
this.queues.set(zone, /* @__PURE__ */ new Set());
}
const queue = this.queues.get(zone);
if (queue.has(handle)) {
return;
}
queue.add(handle);
}
/**
* Run all scheduled effects.
*
* Execution order of effects within the same zone is guaranteed to be FIFO, but there is no
* ordering guarantee between effects scheduled in different zones.
*/
flush() {
while (this.dirtyEffectCount > 0) {
let ranOneEffect = false;
for (const [zone, queue] of this.queues) {
if (zone === null) {
ranOneEffect ||= this.flushQueue(queue);
} else {
ranOneEffect ||= zone.run(() => this.flushQueue(queue));
}
}
if (!ranOneEffect) {
this.dirtyEffectCount = 0;
}
}
}
flushQueue(queue) {
let ranOneEffect = false;
for (const handle of queue) {
if (!handle.dirty) {
continue;
}
this.dirtyEffectCount--;
ranOneEffect = true;
handle.run();
}
return ranOneEffect;
}
};
// node_modules/@angular/core/fesm2022/debug_node.mjs
function noSideEffects(fn) {
return { toString: fn }.toString();
}
var ANNOTATIONS = "__annotations__";
var PARAMETERS = "__parameters__";
var PROP_METADATA = "__prop__metadata__";
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;
});
}
var Inject = attachInjectFlag(
// Disable tslint because `DecoratorFlags` is a const enum which gets inlined.
makeParamDecorator("Inject", (token) => ({ token })),
-1
/* DecoratorFlags.Inject */
);
var Optional = (
// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
// tslint:disable-next-line: no-toplevel-property-access
attachInjectFlag(
makeParamDecorator("Optional"),
8
/* InternalInjectFlags.Optional */
)
);
var Self = (
// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
// tslint:disable-next-line: no-toplevel-property-access
attachInjectFlag(
makeParamDecorator("Self"),
2
/* InternalInjectFlags.Self */
)
);
var SkipSelf = (
// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
// tslint:disable-next-line: no-toplevel-property-access
attachInjectFlag(
makeParamDecorator("SkipSelf"),
4
/* InternalInjectFlags.SkipSelf */
)
);
var Host = (
// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.
// tslint:disable-next-line: no-toplevel-property-access
attachInjectFlag(
makeParamDecorator("Host"),
1
/* InternalInjectFlags.Host */
)
);
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");
}
}
var angularCoreDiEnv = {
"\u0275\u0275defineInjectable": \u0275\u0275defineInjectable,
"\u0275\u0275defineInjector": \u0275\u0275defineInjector,
"\u0275\u0275inject": \u0275\u0275inject,
"\u0275\u0275invalidFactoryDep": \u0275\u0275invalidFactoryDep,
"resolveForwardRef": resolveForwardRef
};
var Type = Function;
function isType(v) {
return typeof v === "function";
}
var ES5_DELEGATE_CTOR = /^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*(arguments|(?:[^()]+\(\[\],)?[^()]+\(arguments\).*)\)/;
var ES2015_INHERITED_CLASS = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/;
var ES2015_INHERITED_CLASS_WITH_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/;
var ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{[^}]*super\(\.\.\.arguments\)/;
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);
}
var ReflectionCapabilities = class {
_reflect;
constructor(reflect) {
this._reflect = reflect || _global["Reflect"];
}
factory(t) {
return (...args) => new t(...args);
}
/** @internal */
_zipTypesAndAnnotations(paramTypes, paramAnnotations) {
let result;
if (typeof paramTypes === "undefined") {
result = newArray(paramAnnotations.length);
} else {
result = newArray(paramTypes.length);
}
for (let i = 0; i < result.length; i++) {
if (typeof paramTypes === "undefined") {
result[i] = [];
} else if (paramTypes[i] && paramTypes[i] != Object) {
result[i] = [paramTypes[i]];
} else {
result[i] = [];
}
if (paramAnnotations && paramAnnotations[i] != null) {
result[i] = result[i].concat(paramAnnotations[i]);
}
}
return result;
}
_ownParameters(type, parentCtor) {
const typeStr = type.toString();
if (isDelegateCtor(typeStr)) {
return null;
}
if (type.parameters && type.parameters !== parentCtor.parameters) {
return type.parameters;
}
const tsickleCtorParams = type.ctorParameters;
if (tsickleCtorParams && tsickleCtorParams !== parentCtor.ctorParameters) {
const ctorParameters = typeof tsickleCtorParams === "function" ? tsickleCtorParams() : tsickleCtorParams;
const paramTypes2 = ctorParameters.map((ctorParam) => ctorParam && ctorParam.type);
const paramAnnotations2 = ctorParameters.map((ctorParam) => ctorParam && convertTsickleDecoratorIntoMetadata(ctorParam.decorators));
return this._zipTypesAndAnnotations(paramTypes2, paramAnnotations2);
}
const paramAnnotations = type.hasOwnProperty(PARAMETERS) && type[PARAMETERS];
const paramTypes = this._reflect && this._reflect.getOwnMetadata && this._reflect.getOwnMetadata("design:paramtypes", type);
if (paramTypes || paramAnnotations) {
return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);
}
return newArray(type.length);
}
parameters(type) {
if (!isType(type)) {
return [];
}
const parentCtor = getParentCtor(type);
let parameters = this._ownParameters(type, parentCtor);
if (!parameters && parentCtor !== Object) {
parameters = this.parameters(parentCtor);
}
return parameters || [];
}
_ownAnnotations(typeOrFunc, parentCtor) {
if (typeOrFunc.annotations && typeOrFunc.annotations !== parentCtor.annotations) {
let annotations = typeOrFunc.annotations;
if (typeof annotations === "function" && annotations.annotations) {
annotations = annotations.annotations;
}
return annotations;
}
if (typeOrFunc.decorators && typeOrFunc.decorators !== parentCtor.decorators) {
return convertTsickleDecoratorIntoMetadata(typeOrFunc.decorators);
}
if (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {
return typeOrFunc[ANNOTATIONS];
}
return null;
}
annotations(typeOrFunc) {
if (!isType(typeOrFunc)) {
return [];
}
const parentCtor = getParentCtor(typeOrFunc);
const ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];
const parentAnnotations = parentCtor !== Object ? this.annotations(parentCtor) : [];
return parentAnnotations.concat(ownAnnotations);
}
_ownPropMetadata(typeOrFunc, parentCtor) {
if (typeOrFunc.propMetadata && typeOrFunc.propMetadata !== parentCtor.propMetadata) {
let propMetadata = typeOrFunc.propMetadata;
if (typeof propMetadata === "function" && propMetadata.propMetadata) {
propMetadata = propMetadata.propMetadata;
}
return propMetadata;
}
if (typeOrFunc.propDecorators && typeOrFunc.propDecorators !== parentCtor.propDecorators) {
const propDecorators = typeOrFunc.propDecorators;
const propMetadata = {};
Object.keys(propDecorators).forEach((prop) => {
propMetadata[prop] = convertTsickleDecoratorIntoMetadata(propDecorators[prop]);
});
return propMetadata;
}
if (typeOrFunc.hasOwnProperty(PROP_METADATA)) {
return typeOrFunc[PROP_METADATA];
}
return null;
}
propMetadata(typeOrFunc) {
if (!isType(typeOrFunc)) {
return {};
}
const parentCtor = getParentCtor(typeOrFunc);
const propMetadata = {};
if (parentCtor !== Object) {
const parentPropMetadata = this.propMetadata(parentCtor);
Object.keys(parentPropMetadata).forEach((propName) => {
propMetadata[propName] = parentPropMetadata[propName];
});
}
const ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);
if (ownPropMetadata) {
Object.keys(ownPropMetadata).forEach((propName) => {
const decorators = [];
if (propMetadata.hasOwnProperty(propName)) {
decorators.push(...propMetadata[propName]);
}
decorators.push(...ownPropMetadata[propName]);
propMetadata[propName] = decorators;
});
}
return propMetadata;
}
ownPropMetadata(typeOrFunc) {
if (!isType(typeOrFunc)) {
return {};
}
return this._ownPropMetadata(typeOrFunc, getParentCtor(typeOrFunc)) || {};
}
hasLifecycleHook(type, lcProperty) {
return type instanceof Type && lcProperty in type.prototype;
}
};
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;
}
var SimpleChange = class {
previousValue;
currentValue;
firstChange;
constructor(previousValue, currentValue, firstChange) {
this.previousValue = previousValue;
this.currentValue = currentValue;
this.firstChange = firstChange;
}
/**
* Check whether the new value is the first value assigned.
*/
isFirstChange() {
return this.firstChange;
}
};
function applyValueToInputField(instance, inputSignalNode, privateName, value) {
if (inputSignalNode !== null) {
inputSignalNode.applyValueToInputSignal(inputSignalNode, value);
} else {
instance[privateName] = value;
}
}
var \u0275\u0275NgOnChangesFeature = /* @__PURE__ */ (() => {
const \u0275\u0275NgOnChangesFeatureImpl = () => NgOnChangesFeatureImpl;
\u0275\u0275NgOnChangesFeatureImpl.ngInherit = true;
return \u0275\u0275NgOnChangesFeatureImpl;
})();
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);
}
var SIMPLE_CHANGES_STORE = "__ngSimpleChanges__";
function getSimpleChangesStore(instance) {
return instance[SIMPLE_CHANGES_STORE] || null;
}
function setSimpleChangesStore(instance, store2) {
return instance[SIMPLE_CHANGES_STORE] = store2;
}
var profilerCallbacks = [];
var NOOP_PROFILER_REMOVAL2 = () => {
};
function removeProfiler2(profiler2) {
const profilerIdx = profilerCallbacks.indexOf(profiler2);
if (profilerIdx !== -1) {
profilerCallbacks.splice(profilerIdx, 1);
}
}
function setProfiler(profiler2) {
if (profiler2 !== null) {
if (!profilerCallbacks.includes(profiler2)) {
profilerCallbacks.push(profiler2);
}
return () => removeProfiler2(profiler2);
} else {
profilerCallbacks.length = 0;
return NOOP_PROFILER_REMOVAL2;
}
}
var profiler = function(event, instance = null, eventFn) {
for (let i = 0; i < profilerCallbacks.length; i++) {
const profilerCallback = profilerCallbacks[i];
profilerCallback(event, instance, eventFn);
}
};
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);
}
}
var NO_PARENT_INJECTOR = -1;
var NodeInjectorFactory = class {
factory;
name;
/**
* The inject implementation to be activated when using the factory.
*/
injectImpl;
/**
* Marker set to true during factory invocation to see if we get into recursive loop.
* Recursive loop causes an error to be displayed.
*/
resolving = false;
/**
* Marks that the token can see other Tokens declared in `viewProviders` on the same node.
*/
canSeeViewProviders;
/**
* An array of factories to use in case of `multi` provider.
*/
multi;
/**
* Number of `multi`-providers which belong to the component.
*
* This is needed because when multiple components and directives declare the `multi` provider
* they have to be concatenated in the correct order.
*
* Example:
*
* If we have a component and directive active an a single element as declared here
* ```ts
* component:
* providers: [ {provide: String, useValue: �� 'component', multi: true} ],
* viewProviders: [ {provide: String, useValue: 'componentView', multi: true} ],
*
* directive:
* providers: [ {provide: String, useValue: 'directive', multi: true} ],
* ```
*
* Then the expected results are:
*
* ```ts
* providers: ['component', 'directive']
* viewProviders: ['component', 'componentView', 'directive']
* ```
*
* The way to think about it is that the `viewProviders` have been inserted after the component
* but before the directives, which is why we need to know how many `multi`s have been declared by
* the component.
*/
componentProviders;
/**
* Current index of the Factory in the `data`. Needed for `viewProviders` and `providers` merging.
* See `providerFactory`.
*/
index;
/**
* Because the same `multi` provider can be declared in `providers` and `viewProviders` it is
* possible for `viewProviders` to shadow the `providers`. For this reason we store the
* `provideFactory` of the `providers` so that `providers` can be extended with `viewProviders`.
*
* Example:
*
* Given:
* ```ts
* providers: [ {provide: String, useValue: 'all', multi: true} ],
* viewProviders: [ {provide: String, useValue: 'viewOnly', multi: true} ],
* ```
*
* We have to return `['all']` in case of content injection, but `['all', 'viewOnly']` in case
* of view injection. We further have to make sure that the shared instances (in our case
* `all`) are the exact same instance in both the content as well as the view injection. (We
* have to make sure that we don't double instantiate.) For this reason the `viewProviders`
* `Factory` has a pointer to the shadowed `providers` factory so that it can instantiate the
* `providers` (`['all']`) and then extend it with `viewProviders` (`['all'] + ['viewOnly'] =
* ['all', 'viewOnly']`).
*/
providerFactory;
constructor(factory, isViewProvider, injectImplementation, name) {
this.factory = factory;
this.name = name;
ngDevMode && assertDefined(factory, "Factory not specified");
ngDevMode && assertEqual(typeof factory, "function", "Expected factory function.");
this.canSeeViewProviders = isViewProvider;
this.injectImpl = injectImplementation;
}
};
function toTNodeTypeAsString(tNodeType) {
let text2 = "";
tNodeType & 1 && (text2 += "|Text");
tNodeType & 2 && (text2 += "|Element");
tNodeType & 4 && (text2 += "|Container");
tNodeType & 8 && (text2 += "|ElementContainer");
tNodeType & 16 && (text2 += "|Projection");
tNodeType & 32 && (text2 += "|IcuContainer");
tNodeType & 64 && (text2 += "|Placeholder");
tNodeType & 128 && (text2 += "|LetDeclaration");
return text2.length > 0 ? text2.substring(1) : text2;
}
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++];
renderer.setAttribute(native, attrName, attrVal, namespaceURI);
} else {
const attrName = value;
const attrVal = attrs[++i];
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;
}
var includeViewProviders = true;
function setIncludeViewProviders(v) {
const oldValue = includeViewProviders;
includeViewProviders = v;
return oldValue;
}
var BLOOM_SIZE = 256;
var BLOOM_MASK = BLOOM_SIZE - 1;
var BLOOM_BUCKET_BITS = 5;
var nextNgElementId = 0;
var NOT_FOUND2 = {};
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 & 8 || notFoundValue !== void 0) {
return notFoundValue;
} else {
throwProviderNotFoundError(token, "NodeInjector");
}
}
function lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue) {
if (flags & 8 && notFoundValue === void 0) {
notFoundValue = null;
}
if ((flags & (2 | 1)) === 0) {
const moduleInjector = lView[INJECTOR];
const previousInjectImplementation = setInjectImplementation(void 0);
try {
if (moduleInjector) {
return moduleInjector.get(
token,
notFoundValue,
flags & 8
/* InternalInjectFlags.Optional */
);
} else {
return injectRootLimpMode(
token,
notFoundValue,
flags & 8
/* InternalInjectFlags.Optional */
);
}
} finally {
setInjectImplementation(previousInjectImplementation);
}
}
return notFoundValueOrThrow(notFoundValue, token, flags);
}
function getOrCreateInjectable(tNode, lView, token, flags = 0, 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 & 2)) {
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 & 1 ? notFoundValueOrThrow(notFoundValue, token, flags) : lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);
}
try {
let value;
if (ngDevMode) {
runInInjectorProfilerContext(new NodeInjector(getCurrentTNode(), getLView()), token, () => {
emitInjectorToCreateInstanceEvent(token);
value = bloomHash(flags);
emitInstanceCreatedByInjectorEvent(value);
});
} else {
value = bloomHash(flags);
}
if (value == null && !(flags & 8)) {
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 & 1 ? lView[DECLARATION_COMPONENT_VIEW][T_HOST] : null;
if (injectorIndex === -1 || flags & 4) {
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 & 1 && 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;
}
var injectionPath = [];
function getNodeInjectable(lView, tView, index, tNode, flags) {
let value = lView[index];
const tData = tView.data;
if (value instanceof NodeInjectorFactory) {
const factory = value;
ngDevMode && injectionPath.push(factory.name ?? "unknown");
if (factory.resolving) {
const token2 = stringifyForError(tData[index]);
if (ngDevMode) {
throw cyclicDependencyErrorWithDetails(token2, injectionPath);
} else {
throw cyclicDependencyError(token2);
}
}
const previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders);
factory.resolving = true;
const token = tData[index].type || tData[index];
let prevInjectContext;
if (ngDevMode) {
const injector = new NodeInjector(tNode, lView);
prevInjectContext = setInjectorProfilerContext({ injector, token });
}
const previousInjectImplementation = factory.injectImpl ? setInjectImplementation(factory.injectImpl) : null;
const success = enterDI(
lView,
tNode,
0
/* InternalInjectFlags.Default */
);
ngDevMode && assertEqual(success, true, "Because flags do not contain `SkipSelf' we expect this to always succeed.");
try {
ngDevMode && emitInjectorToCreateInstanceEvent(token);
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();
ngDevMode && (injectionPath = []);
}
}
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 & 2) && !(flags & 1 && isFirstHostTNode);
}
function getNodeInjectorLView(nodeInjector) {
return nodeInjector._lView;
}
function getNodeInjectorTNode(nodeInjector) {
return nodeInjector._tNode;
}
var NodeInjector = class {
_tNode;
_lView;
constructor(_tNode, _lView) {
this._tNode = _tNode;
this._lView = _lView;
}
get(token, notFoundValue, flags) {
return getOrCreateInjectable(this._tNode, this._lView, token, convertToBitFlags(flags), notFoundValue);
}
};
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 | 2, 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);
}
var Attribute = makeParamDecorator("Attribute", (attributeName) => ({
attributeName,
__NG_ELEMENT_ID__: () => \u0275\u0275injectAttribute(attributeName)
}));
var _reflect = null;
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
});
}
}
var USE_VALUE2 = getClosureSafeProperty({
provide: String,
useValue: getClosureSafeProperty
});
function isUseClassProvider(meta) {
return meta.useClass !== void 0;
}
function isUseValueProvider(meta) {
return USE_VALUE2 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;
}
var Injectable = makeDecorator("Injectable", void 0, void 0, void 0, (type, meta) => compileInjectable(type, meta));
function injectElementRef() {
return createElementRef(getCurrentTNode(), getLView());
}
function createElementRef(tNode, lView) {
return new ElementRef(getNativeByTNode(tNode, lView));
}
var ElementRef = class {
/**
* <div class="docs-alert docs-alert-important">
* <header>Use with caution</header>
* <p>
* Use this API as the last resort when direct access to DOM is needed. Use templating and
* data-binding provided by Angular instead. If used, it is recommended in combination with
* {@link /best-practices/security#direct-use-of-the-dom-apis-and-explicit-sanitization-calls DomSanitizer}
* for maxiumum security;
* </p>
* </div>
*/
nativeElement;
constructor(nativeElement) {
this.nativeElement = nativeElement;
}
/**
* @internal
* @nocollapse
*/
static __NG_ELEMENT_ID__ = injectElementRef;
};
function unwrapElementRef(value) {
return value instanceof ElementRef ? value.nativeElement : value;
}
function symbolIterator() {
return this._results[Symbol.iterator]();
}
var QueryList = class {
_emitDistinctChangesOnly;
dirty = true;
_onDirty = void 0;
_results = [];
_changesDetected = false;
_changes = void 0;
length = 0;
first = void 0;
last = void 0;
/**
* Returns `Observable` of `QueryList` notifying the subscriber of changes.
*/
get changes() {
return this._changes ??= new Subject();
}
/**
* @param emitDistinctChangesOnly Whether `QueryList.changes` should fire only when actual change
* has occurred. Or if it should fire when query is recomputed. (recomputing could resolve in
* the same result)
*/
constructor(_emitDistinctChangesOnly = false) {
this._emitDistinctChangesOnly = _emitDistinctChangesOnly;
}
/**
* Returns the QueryList entry at `index`.
*/
get(index) {
return this._results[index];
}
/**
* See
* [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)
*/
map(fn) {
return this._results.map(fn);
}
filter(fn) {
return this._results.filter(fn);
}
/**
* See
* [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)
*/
find(fn) {
return this._results.find(fn);
}
/**
* See
* [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)
*/
reduce(fn, init) {
return this._results.reduce(fn, init);
}
/**
* See
* [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)
*/
forEach(fn) {
this._results.forEach(fn);
}
/**
* See
* [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)
*/
some(fn) {
return this._results.some(fn);
}
/**
* Returns a copy of the internal results list as an Array.
*/
toArray() {
return this._results.slice();
}
toString() {
return this._results.toString();
}
/**
* Updates the stored data of the query list, and resets the `dirty` flag to `false`, so that
* on change detection, it will not notify of changes to the queries, unless a new change
* occurs.
*
* @param resultsTree The query results to store
* @param identityAccessor Optional function for extracting stable object identity from a value
* in the array. This function is executed for each element of the query result list while
* comparing current query list with the new one (provided as a first argument of the `reset`
* function) to detect if the lists are different. If the function is not provided, elements
* are compared as is (without any pre-processing).
*/
reset(resultsTree, identityAccessor) {
this.dirty = false ��;
const newResultFlat = flatten(resultsTree);
if (this._changesDetected = !arrayEquals(this._results, newResultFlat, identityAccessor)) {
this._results = newResultFlat;
this.length = newResultFlat.length;
this.last = newResultFlat[this.length - 1];
this.first = newResultFlat[0];
}
}
/**
* Triggers a change event by emitting on the `changes` {@link EventEmitter}.
*/
notifyOnChanges() {
if (this._changes !== void 0 && (this._changesDetected || !this._emitDistinctChangesOnly))
this._changes.next(this);
}
/** @internal */
onDirty(cb) {
this._onDirty = cb;
}
/** internal */
setDirty() {
this.dirty = true;
this._onDirty?.();
}
/** internal */
destroy() {
if (this._changes !== void 0) {
this._changes.complete();
this._changes.unsubscribe();
}
}
[Symbol.iterator] = /* @__PURE__ */ (() => symbolIterator)();
};
function hasInSkipHydrationBlockFlag(tNode) {
return (tNode.flags & 128) === 128;
}
var ChangeDetectionStrategy;
(function(ChangeDetectionStrategy2) {
ChangeDetectionStrategy2[ChangeDetectionStrategy2["OnPush"] = 0] = "OnPush";
ChangeDetectionStrategy2[ChangeDetectionStrategy2["Default"] = 1] = "Default";
})(ChangeDetectionStrategy || (ChangeDetectionStrategy = {}));
var TRACKED_LVIEWS = /* @__PURE__ */ new Map();
var uniqueIdCounter = 0;
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;
}
var LContext = class {
lViewId;
nodeIndex;
native;
/**
* The instance of the Component node.
*/
component;
/**
* The list of active directives that exist on this element.
*/
directives;
/**
* The map of local references (local reference name => element or directive instance) that
* exist on this element.
*/
localRefs;
/** Component's parent view data. */
get lView() {
return getLViewById(this.lViewId);
}
constructor(lViewId, nodeIndex, native) {
this.lViewId = lViewId;
this.nodeIndex = nodeIndex;
this.native = native;
}
};
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;
}
var MONKEY_PATCH_KEY_NAME = "__ngContext__";
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];
}
var Framework;
(function(Framework2) {
Framework2["Angular"] = "angular";
Framework2["ACX"] = "acx";
Framework2["Wiz"] = "wiz";
})(Framework || (Framework = {}));
var AcxChangeDetectionStrategy;
(function(AcxChangeDetectionStrategy2) {
AcxChangeDetectionStrategy2[AcxChangeDetectionStrategy2["Default"] = 0] = "Default";
AcxChangeDetectionStrategy2[AcxChangeDetectionStrategy2["OnPush"] = 1] = "OnPush";
})(AcxChangeDetectionStrategy || (AcxChangeDetectionStrategy = {}));
var AcxViewEncapsulation;
(function(AcxViewEncapsulation2) {
AcxViewEncapsulation2[AcxViewEncapsulation2["Emulated"] = 0] = "Emulated";
AcxViewEncapsulation2[AcxViewEncapsulation2["None"] = 1] = "None";
})(AcxViewEncapsulation || (AcxViewEncapsulation = {}));
function getDirectiveMetadata$1(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;
}
var DOCUMENT2 = void 0;
function setDocument(document2) {
DOCUMENT2 = document2;
}
function getDocument() {
if (DOCUMENT2 !== void 0) {
return DOCUMENT2;
} 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.`);
}
var APP_ID = new InjectionToken(ngDevMode ? "AppId" : "", {
providedIn: "root",
factory: () => DEFAULT_APP_ID
});
var DEFAULT_APP_ID = "ng";
var PLATFORM_INITIALIZER = new InjectionToken(ngDevMode ? "Platform Initializer" : "");
var PLATFORM_ID = new InjectionToken(ngDevMode ? "Platform ID" : "", {
providedIn: "platform",
factory: () => "unknown"
// set a default platform name, when none set explicitly
});
var PACKAGE_ROOT_URL = new InjectionToken(ngDevMode ? "Application Packages Root URL" : "");
var ANIMATION_MODULE_TYPE = new InjectionToken(ngDevMode ? "AnimationModuleType" : "");
var CSP_NONCE = new InjectionToken(ngDevMode ? "CSP nonce" : "", {
providedIn: "root",
factory: () => {
return getDocument().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce") || null;
}
});
var IMAGE_CONFIG_DEFAULTS = {
breakpoints: [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840],
placeholderResolution: 30,
disableImageSizeWarning: false,
disableImageLazyLoadWarning: false
};
var IMAGE_CONFIG = new InjectionToken(ngDevMode ? "ImageConfig" : "", {
providedIn: "root",
factory: () => IMAGE_CONFIG_DEFAULTS
});
function makeStateKey(key) {
return key;
}
function initTransferState() {
const transferState = new TransferState();
if (true) {
transferState.store = retrieveTransferredState(getDocument(), inject2(APP_ID));
}
return transferState;
}
var TransferState = class _TransferState {
/** @nocollapse */
static \u0275prov = (
/** @pureOrBreakMyCode */
/* @__PURE__ */ \u0275\u0275defineInjectable({
token: _TransferState,
providedIn: "root",
factory: initTransferState
})
);
/** @internal */
store = {};
onSerializeCallbacks = {};
/**
* Get the value corresponding to a key. Return `defaultValue` if key is not found.
*/
get(key, defaultValue) {
return this.store[key] !== void 0 ? this.store[key] : defaultValue;
}
/**
* Set the value corresponding to a key.
*/
set(key, value) {
this.store[key] = value;
}
/**
* Remove a key from the store.
*/
remove(key) {
delete this.store[key];
}
/**
* Test whether a key exists in the store.
*/
hasKey(key) {
return this.store.hasOwnProperty(key);
}
/**
* Indicates whether the state is empty.
*/
get isEmpty() {
return Object.keys(this.store).length === 0;
}
/**
* Register a callback to provide the value for a key when `toJson` is called.
*/
onSerialize(key, callback) {
this.onSerializeCallbacks[key] = callback;
}
/**
* Serialize the current state of the store to JSON.
*/
toJson() {
for (const key in this.onSerializeCallbacks) {
if (this.onSerializeCallbacks.hasOwnProperty(key)) {
try {
this.store[key] = this.onSerializeCallbacks[key]();
} catch (e) {
console.warn("Exception in onSerialize callback: ", e);
}
}
}
return JSON.stringify(this.store).replace(/</g, "\\u003C");
}
};
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 {};
}
var REFERENCE_NODE_HOST = "h";
var REFERENCE_NODE_BODY = "b";
var NUM_ROOT_NODES = "r";
var DEFER_BLOCK_ID = "di";
var DEFER_BLOCK_STATE$1 = "s";
var DEFER_PARENT_BLOCK_ID = "p";
var IS_HYDRATION_DOM_REUSE_ENABLED = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "IS_HYDRATION_DOM_REUSE_ENABLED" : "");
var PRESERVE_HOST_CONTENT_DEFAULT = false;
var PRESERVE_HOST_CONTENT = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "PRESERVE_HOST_CONTENT" : "", {
providedIn: "root",
factory: () => PRESERVE_HOST_CONTENT_DEFAULT
});
var IS_I18N_HYDRATION_ENABLED = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "IS_I18N_HYDRATION_ENABLED" : "");
var IS_EVENT_REPLAY_ENABLED = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "IS_EVENT_REPLAY_ENABLED" : "");
var IS_INCREMENTAL_HYDRATION_ENABLED = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "IS_INCREMENTAL_HYDRATION_ENABLED" : "");
var JSACTION_BLOCK_ELEMENT_MAP = new InjectionToken(ngDevMode ? "JSACTION_BLOCK_ELEMENT_MAP" : "", {
providedIn: "root",
factory: () => /* @__PURE__ */ new Map()
});
var IS_ENABLED_BLOCKING_INITIAL_NAVIGATION = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "IS_ENABLED_BLOCKING_INITIAL_NAVIGATION" : "");
var eventListenerOptions = {
passive: true,
capture: true
};
var hoverTriggers = /* @__PURE__ */ new WeakMap();
var interactionTriggers = /* @__PURE__ */ new WeakMap();
var viewportTriggers = /* @__PURE__ */ new WeakMap();
var interactionEventNames = ["click", "keydown"];
var hoverEventNames = ["mouseenter", "mouseover", "focusin"];
var intersectionObserver = null;
var observedViewportElements = 0;
var DeferEventEntry = class {
callbacks = /* @__PURE__ */ new Set();
listener = () => {
for (const callback of this.callbacks) {
callback();
}
};
};
function onInteraction(trigger2, callback) {
let entry = interactionTriggers.get(trigger2);
if (!entry) {
entry = new DeferEventEntry();
interactionTriggers.set(trigger2, entry);
for (const name of interactionEventNames) {
trigger2.addEventListener(name, entry.listener, eventListenerOptions);
}
}
entry.callbacks.add(callback);
return () => {
const { callbacks, listener } = entry;
callbacks.delete(callback);
if (callbacks.size === 0) {
interactionTriggers.delete(trigger2);
for (const name of interactionEventNames) {
trigger2.removeEventListener(name, listener, eventListenerOptions);
}
}
};
}
function onHover(trigger2, callback) {
let entry = hoverTriggers.get(trigger2);
if (!entry) {
entry = new DeferEventEntry();
hoverTriggers.set(trigger2, entry);
for (const name of hoverEventNames) {
trigger2.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) {
trigger2.removeEventListener(name, listener, eventListenerOptions);
}
hoverTriggers.delete(trigger2);
}
};
}
function createIntersectionObserver() {
return new IntersectionObserver((entries) => {
for (const current of entries) {
if (current.isIntersecting && viewportTriggers.has(current.target)) {
viewportTriggers.get(current.target).listener();
}
}
});
}
function onViewport(trigger2, callback, observerFactoryFn) {
let entry = viewportTriggers.get(trigger2);
intersectionObserver = intersectionObserver || observerFactoryFn();
if (!entry) {
entry = new DeferEventEntry();
intersectionObserver.observe(trigger2);
viewportTriggers.set(trigger2, entry);
observedViewportElements++;
}
entry.callbacks.add(callback);
return () => {
if (!viewportTriggers.has(trigger2)) {
return;
}
entry.callbacks.delete(callback);
if (entry.callbacks.size === 0) {
intersectionObserver?.unobserve(trigger2);
viewportTriggers.delete(trigger2);
observedViewportElements--;
}
if (observedViewportElements === 0) {
intersectionObserver?.disconnect();
intersectionObserver = null;
}
};
}
var JSACTION_EVENT_CONTRACT = new InjectionToken(ngDevMode ? "EVENT_CONTRACT_DETAILS" : "", {
providedIn: "root",
factory: () => ({})
});
var _stashEventListenerImpl = (lView, target, eventName, wrappedListener) => {
};
function stashEventListenerImpl(lView, target, eventName, wrappedListener) {
_stashEventListenerImpl(lView, target, eventName, wrappedListener);
}
var DEHYDRATED_BLOCK_REGISTRY = new InjectionToken(ngDevMode ? "DEHYDRATED_BLOCK_REGISTRY" : "");
function isDetachedByI18n(tNode) {
return (tNode.flags & 32) === 32;
}
var TRANSFER_STATE_TOKEN_ID = "__nghData__";
var NGH_DATA_KEY = makeStateKey(TRANSFER_STATE_TOKEN_ID);
var TRANSFER_STATE_DEFER_BLOCKS_INFO = "__nghDeferData__";
var NGH_DEFER_BLOCKS_KEY = makeStateKey(TRANSFER_STATE_DEFER_BLOCKS_INFO);
function isInternalHydrationTransferStateKey(key) {
return key === TRANSFER_STATE_TOKEN_ID || key === TRANSFER_STATE_DEFER_BLOCKS_INFO;
}
var _retrieveHydrationInfoImpl = () => null;
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;
}
var HydrationStatus;
(function(HydrationStatus2) {
HydrationStatus2["Hydrated"] = "hydrated";
HydrationStatus2["Skipped"] = "skipped";
HydrationStatus2["Mismatched"] = "mismatched";
})(HydrationStatus || (HydrationStatus = {}));
var HYDRATION_INFO_KEY = "__ngDebugHydrationInfo__";
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
});
}
var incrementalHydrationEnabledWarned = false;
function warnIncrementalHydrationNotConfigured() {
if (!incrementalHydrationEnabledWarned) {
incrementalHydrationEnabledWarned = true;
console.warn(formatRuntimeError(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);
}
}
}
var ViewEncapsulation;
(function(ViewEncapsulation3) {
ViewEncapsulation3[ViewEncapsulation3["Emulated"] = 0] = "Emulated";
ViewEncapsulation3[ViewEncapsulation3["None"] = 2] = "None";
ViewEncapsulation3[ViewEncapsulation3["ShadowDom"] = 3] = "ShadowDom";
})(ViewEncapsulation || (ViewEncapsulation = {}));
var policy$1;
function getPolicy$1() {
if (policy$1 === void 0) {
policy$1 = null;
if (_global.trustedTypes) {
try {
policy$1 = _global.trustedTypes.createPolicy("angular", {
createHTML: (s) => s,
createScript: (s) => s,
createScriptURL: (s) => s
});
} catch {
}
}
}
return policy$1;
}
function trustedHTMLFromString(html) {
return getPolicy$1()?.createHTML(html) || html;
}
function trustedScriptURLFromString(url) {
return getPolicy$1()?.createScriptURL(url) || url;
}
var policy;
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;
}
var SafeValueImpl = class {
changingThisBreaksApplicationSecurity;
constructor(changingThisBreaksApplicationSecurity) {
this.changingThisBreaksApplicationSecurity = changingThisBreaksApplicationSecurity;
}
toString() {
return `SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${XSS_SECURITY_URL})`;
}
};
var SafeHtmlImpl = class extends SafeValueImpl {
getTypeName() {
return "HTML";
}
};
var SafeStyleImpl = class extends SafeValueImpl {
getTypeName() {
return "Style";
}
};
var SafeScriptImpl = class extends SafeValueImpl {
getTypeName() {
return "Script";
}
};
var SafeUrlImpl = class extends SafeValueImpl {
getTypeName() {
return "URL";
}
};
var SafeResourceUrlImpl = class extends SafeValueImpl {
getTypeName() {
return "ResourceURL";
}
};
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(inertDocumentHel ��per) : inertDocumentHelper;
}
var DOMParserHelper = class {
inertDocumentHelper;
constructor(inertDocumentHelper) {
this.inertDocumentHelper = inertDocumentHelper;
}
getInertBodyElement(html) {
html = "<body><remove></remove>" + html;
try {
const body = new window.DOMParser().parseFromString(trustedHTMLFromString(html), "text/html").body;
if (body === null) {
return this.inertDocumentHelper.getInertBodyElement(html);
}
body.firstChild?.remove();
return body;
} catch {
return null;
}
}
};
var InertDocumentHelper = class {
defaultDoc;
inertDocument;
constructor(defaultDoc) {
this.defaultDoc = defaultDoc;
this.inertDocument = this.defaultDoc.implementation.createHTMLDocument("sanitization-inert");
}
getInertBodyElement(html) {
const templateEl = this.inertDocument.createElement("template");
templateEl.innerHTML = trustedHTMLFromString(html);
return templateEl;
}
};
function isDOMParserAvailable() {
try {
return !!new window.DOMParser().parseFromString(trustedHTMLFromString(""), "text/html");
} catch {
return false;
}
}
var SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;
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;
}
var VOID_ELEMENTS = tagSet("area,br,col,hr,img,wbr");
var OPTIONAL_END_TAG_BLOCK_ELEMENTS = tagSet("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr");
var OPTIONAL_END_TAG_INLINE_ELEMENTS = tagSet("rp,rt");
var OPTIONAL_END_TAG_ELEMENTS = merge2(OPTIONAL_END_TAG_INLINE_ELEMENTS, OPTIONAL_END_TAG_BLOCK_ELEMENTS);
var BLOCK_ELEMENTS = merge2(OPTIONAL_END_TAG_BLOCK_ELEMENTS, tagSet("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul"));
var INLINE_ELEMENTS = merge2(OPTIONAL_END_TAG_INLINE_ELEMENTS, tagSet("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video"));
var VALID_ELEMENTS = merge2(VOID_ELEMENTS, BLOCK_ELEMENTS, INLINE_ELEMENTS, OPTIONAL_END_TAG_ELEMENTS);
var URI_ATTRS = tagSet("background,cite,href,itemtype,longdesc,poster,src,xlink:href");
var HTML_ATTRS = tagSet("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width");
var ARIA_ATTRS = tagSet("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext");
var VALID_ATTRS = merge2(URI_ATTRS, HTML_ATTRS, ARIA_ATTRS);
var SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS = tagSet("script,style,template");
var SanitizingHtmlSerializer = class {
// Explicitly track if something was stripped, to avoid accidentally warning of sanitization just
// because characters were re-encoded.
sanitizedSomething = false;
buf = [];
sanitizeChildren(el) {
let current = el.firstChild;
let traverseContent = true;
let parentNodes = [];
while (current) {
if (current.nodeType === Node.ELEMENT_NODE) {
traverseContent = this.startElement(current);
} else if (current.nodeType === Node.TEXT_NODE) {
this.chars(current.nodeValue);
} else {
this.sanitizedSomething = true;
}
if (traverseContent && current.firstChild) {
parentNodes.push(current);
current = getFirstChild(current);
continue;
}
while (current) {
if (current.nodeType === Node.ELEMENT_NODE) {
this.endElement(current);
}
let next = getNextSibling(current);
if (next) {
current = next;
break;
}
current = parentNodes.pop();
}
}
return this.buf.join("");
}
/**
* Sanitizes an opening element tag (if valid) and returns whether the element's contents should
* be traversed. Element content must always be traversed (even if the element itself is not
* valid/safe), unless the element is one of `SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS`.
*
* @param element The element to sanitize.
* @return True if the element's contents should be traversed.
*/
startElement(element) {
const tagName = getNodeName(element).toLowerCase();
if (!VALID_ELEMENTS.hasOwnProperty(tagName)) {
this.sanitizedSomething = true;
return !SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS.hasOwnProperty(tagName);
}
this.buf.push("<");
this.buf.push(tagName);
const elAttrs = element.attributes;
for (let i = 0; i < elAttrs.length; i++) {
const elAttr = elAttrs.item(i);
const attrName = elAttr.name;
const lower = attrName.toLowerCase();
if (!VALID_ATTRS.hasOwnProperty(lower)) {
this.sanitizedSomething = true;
continue;
}
let value = elAttr.value;
if (URI_ATTRS[lower])
value = _sanitizeUrl(value);
this.buf.push(" ", attrName, '="', encodeEntities(value), '"');
}
this.buf.push(">");
return true;
}
endElement(current) {
const tagName = getNodeName(current).toLowerCase();
if (VALID_ELEMENTS.hasOwnProperty(tagName) && !VOID_ELEMENTS.hasOwnProperty(tagName)) {
this.buf.push("</");
this.buf.push(tagName);
this.buf.push(">");
}
}
chars(chars) {
this.buf.push(encodeEntities(chars));
}
};
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}`);
}
var SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
var NON_ALPHANUMERIC_REGEXP = /([^\#-~ |!])/g;
function encodeEntities(value) {
return value.replace(/&/g, "&").replace(SURROGATE_PAIR_REGEXP, function(match3) {
const hi = match3.charCodeAt(0);
const low = match3.charCodeAt(1);
return "&#" + ((hi - 55296) * 1024 + (low - 56320) + 65536) + ";";
}).replace(NON_ALPHANUMERIC_REGEXP, function(match3) {
return "&#" + match3.charCodeAt(0) + ";";
}).replace(/</g, "<").replace(/>/g, ">");
}
var inertBodyHelper;
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";
}
var SecurityContext;
(function(SecurityContext2) {
SecurityContext2[SecurityContext2["NONE"] = 0] = "NONE";
SecurityContext2[SecurityContext2["HTML"] = 1] = "HTML";
SecurityContext2[SecurityContext2["STYLE"] = 2] = "STYLE";
SecurityContext2[SecurityContext2["SCRIPT"] = 3] = "SCRIPT";
SecurityContext2[SecurityContext2["URL"] = 4] = "URL";
SecurityContext2[SecurityContext2["RESOURCE_URL"] = 5] = "RESOURCE_URL";
})(SecurityContext || (SecurityContext = {}));
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;
}
var COMMENT_DISALLOWED = /^>|^->|<!--|-->|--!>|<!-$/g;
var COMMENT_DELIMITER = /(<|>)/g;
var COMMENT_DELIMITER_ESCAPED = "\u200B$1\u200B";
function escapeCommentText(value) {
return value.replace(COMMENT_DISALLOWED, (text2) => text2.replace(COMMENT_DELIMITER, COMMENT_DELIMITER_ESCAPED));
}
var NG_REFLECT_ATTRS_FLAG_DEFAULT = false;
var NG_REFLECT_ATTRS_FLAG = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "NG_REFLECT_FLAG" : "", {
providedIn: "root",
factory: () => NG_REFLECT_ATTRS_FLAG_DEFAULT
});
function normalizeDebugBindingName(name) {
name = camelCaseToDashCase(name.replace(/[$@]/g, "_"));
return `ng-reflect-${name}`;
}
var CAMEL_CASE_REGEXP = /([A-Z])/g;
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";
}
}
var CUSTOM_ELEMENTS_SCHEMA = {
name: "custom-elements"
};
var NO_ERRORS_SCHEMA = {
name: "no-errors-schema"
};
var shouldThrowErrorOnUnknownElement = false;
var shouldThrowErrorOnUnknownProperty = false;
function validateElementIsKnown(lView, tNode) {
const tView = lView[TVIEW];
if (tView.schemas === null)
return;
const tagName = tNode.value;
if (!isDirectiveHost(tNode) && 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 && getNativeByTNode(tNode, lView) instanceof HTMLUnknownElement || typeof customElements !== "undefined" && tagName.indexOf("-") > -1 && !customElements.get(tagName)
);
if (isUnknown && !matchingSchemas(tView.schemas, tagName)) {
const isHostStandalone = isHostComponentStandalone(lView);
const templateLocation = getTemplateLocationDetails(lView);
const schemas = `'${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 ${schemas} of this component to suppress this message.`;
} else {
message += `2. To allow any element add 'NO_ERRORS_SCHEMA' to the ${schemas} 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)` : "";
}
var KNOWN_CONTROL_FLOW_DIRECTIVES = /* @__PURE__ */ new Map([
["ngIf", "NgIf"],
["ngFor", "NgFor"],
["ngSwitchCase", "NgSwitchCase"],
["ngSwitchDefault", "NgSwitchDefault"]
]);
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;
}
var INTERPOLATION_DELIMITER = `\uFFFD`;
function maybeUnwrapFn(value) {
if (value instanceof Function) {
return value();
} else {
return value;
}
}
var VALUE_STRING_LENGTH_LIMIT = 200;
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 (error2) {
}
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;
}
}
var NG_TEMPLATE_SELECTOR = "ng-template";
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, list2) {
selectorListLoop: for (let i = 0; i < list2.length; i++) {
const currentSelectorInList = list2[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;
}
var NO_CHANGE = typeof ngDevMode === "undefined" || ngDevMode ? { __brand__: "NO_CHANGE" } : {};
function createTextNode(renderer, value) {
return renderer.createText(value);
}
function updateTextNode(renderer, rNode, value) {
renderer.setValue(rNode, value);
}
function createCommentNode(renderer, value) {
return renderer.createComment(escapeCommentText(value));
}
function createElementNode(renderer, name, namespace) {
return renderer.createElement(name, namespace);
}
function nativeInsertBefore(renderer, parent, child, beforeNode, isMove) {
renderer.insertBefore(parent, child, beforeNode, isMove);
}
function nativeAppendChild(renderer, parent, child) {
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, requireSynchronousElementRemoval) {
renderer.removeChild(null, rNode, isHostElement, requireSynchronousElementRemoval);
}
function writeDirectStyle(renderer, element, newValue) {
ngDevMode && assertString(newValue, "'newValue' should be a string");
renderer.setAttribute(element, "style", newValue);
}
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);
}
}
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) {
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, environment2, 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] = environment2 || 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);
}
var InputFlags;
(function(InputFlags2) {
InputFlags2[InputFlags2["None"] = 0] = "None";
InputFlags2[InputFlags2["SignalBased"] = 1] = "SignalBased";
InputFlags2[InputFlags2["HasDecoratorInputTransform"] = 2] = "HasDecoratorInputTransform";
})(InputFlags || (InputFlags = {}));
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);
}
}
var RendererStyleFlags2;
(function(RendererStyleFlags22) {
RendererStyleFlags22[RendererStyleFlags22["Important"] = 1] = "Important";
RendererStyleFlags22[RendererStyleFlags22["DashCase"] = 2] = "DashCase";
})(RendererStyleFlags2 || (RendererStyleFlags2 = {}));
var _icuContainerIterate;
function icuContainerIterate(tIcuContainerNode, lView) {
return _icuContainerIterate(tIcuContainerNode, lView);
}
function ensureIcuContainerVisitorLoaded(loader) {
if (_icuContainerIterate === void 0) {
_icuContainerIterate = loader();
}
}
function parseCssTimeUnitsToMs(value) {
if (!value)
return 0;
const multiplier = value.toLowerCase().indexOf("ms") > -1 ? 1 : 1e3;
return parseFloat(value) * multiplier;
}
function parseCssPropertyValue(computedStyle, name) {
const value = computedStyle.getPropertyValue(name);
return value.split(",").map((part) => part.trim());
}
function getLongestComputedTransition(computedStyle) {
const transitionedProperties = parseCssPropertyValue(computedStyle, "transition-property");
const rawDurations = parseCssPropertyValue(computedStyle, "transition-duration");
const rawDelays = parseCssPropertyValue(computedStyle, "transition-delay");
const longest = { propertyName: "", duration: 0, animationName: void 0 };
for (let i = 0; i < transitionedProperties.length; i++) {
const duration = parseCssTimeUnitsToMs(rawDelays[i]) + parseCssTimeUnitsToMs(rawDurations[i]);
if (duration > longest.duration) {
longest.propertyName = transitionedProperties[i];
longest.duration = duration;
}
}
return longest;
}
function getLongestComputedAnimation(computedStyle) {
const rawNames = parseCssPropertyValue(computedStyle, "animation-name");
const rawDelays = parseCssPropertyValue(computedStyle, "animation-delay");
const rawDurations = parseCssPropertyValue(computedStyle, "animation-duration");
const longest = { animationName: "", propertyName: void 0, duration: 0 };
for (let i = 0; i < rawNames.length; i++) {
const duration = parseCssTimeUnitsToMs(rawDelays[i]) + parseCssTimeUnitsToMs(rawDurations[i]);
if (duration > longest.duration) {
longest.animationName = rawNames[i];
longest.duration = duration;
}
}
return longest;
}
function isShorterThanExistingAnimation(existing, longest) {
return existing !== void 0 && existing.duration > longest.duration;
}
function longestExists(longest) {
return (longest.animationName != void 0 || longest.propertyName != void 0) && longest.duration > 0;
}
function determineLongestAnimationFromComputedStyles(el, animationsMap) {
const computedStyle = getComputedStyle(el);
const longestAnimation = getLongestComputedAnimation(computedStyle);
const longestTransition = getLongestComputedTransition(computedStyle);
const longest = longestAnimation.duration > longestTransition.duration ? longestAnimation : longestTransition;
if (isShorterThanExistingAnimation(animationsMap.get(el), longest))
return;
if (longestExists(longest)) {
animationsMap.set(el, longest);
}
}
function determineLongestAnimation(el, animationsMap, areAnimationSupported2) {
if (!areAnimationSupported2)
return;
const animations = el.getAnimations();
return animations.length === 0 ? (
// fallback to computed styles if getAnimations is empty. This would happen if styles are
// currently recalculating due to a reflow happening elsewhere.
determineLongestAnimationFromComputedStyles(el, animationsMap)
) : determineLongestAnimationFromElementAnimations(el, animationsMap, animations);
}
function determineLongestAnimationFromElementAnimations(el, animationsMap, animations) {
let longest = {
animationName: void 0,
propertyName: void 0,
duration: 0
};
for (const animation2 of animations) {
const timing = animation2.effect?.getTiming();
const animDuration = typeof timing?.duration === "number" ? timing.duration : 0;
let duration = (timing?.delay ?? 0) + animDuration;
let propertyName;
let animationName;
if (animation2.animationName) {
animationName = animation2.animationName;
} else {
propertyName = animation2.transitionProperty;
}
if (duration >= longest.duration) {
longest = { animationName, propertyName, duration };
}
}
if (isShorterThanExistingAnimation(animationsMap.get(el), longest))
return;
if (longestExists(longest)) {
animationsMap.set(el, longest);
}
}
var allLeavingAnimations = /* @__PURE__ */ new Set();
var TracingAction;
(function(TracingAction2) {
TracingAction2[TracingAction2["CHANGE_DETECTION"] = 0] = "CHANGE_DETECTION";
TracingAction2[TracingAction2["AFTER_NEXT_RENDER"] = 1] = "AFTER_NEXT_RENDER";
})(TracingAction || (TracingAction = {}));
var TracingService = new InjectionToken(ngDevMode ? "TracingService" : "");
var markedFeatures = /* @__PURE__ */ new Set();
function performanceMarkFeature(feature) {
if (markedFeatures.has(feature)) {
return;
}
markedFeatures.add(feature);
performance?.mark?.("mark_feature_usage", { detail: { feature } });
}
var SCHEDULE_IN_ROOT_ZONE_DEFAULT = false;
var EventEmitter_ = class extends Subject {
// tslint:disable-next-line:require-internal-with-underscore
__isAsync;
destroyRef = void 0;
pendingTasks = void 0;
constructor(isAsync = false) {
super();
this.__isAsync = isAsync;
if (isInInjectionContext()) {
this.destroyRef = inject2(DestroyRef, { optional: true }) ?? void 0;
this.pendingTasks = inject2(PendingTasksInternal, { optional: true }) ?? void 0;
}
}
emit(value) {
const prevConsumer = setActiveConsumer(null);
try {
super.next(value);
} finally {
setActiveConsumer(prevConsumer);
}
}
subscribe(observerOrNext, error2, complete) {
let nextFn = observerOrNext;
let errorFn = error2 || (() => null);
let completeFn = complete;
if (observerOrNext && typeof observerOrNext === "object") {
const observer = observerOrNext;
nextFn = observer.next?.bind(observer);
errorFn = observer.error?.bind(observer);
completeFn = observer.complete?.bind(observer);
}
if (this.__isAsync) {
errorFn = this.wrapInTimeout(errorFn);
if (nextFn) {
nextFn = this.wrapInTimeout(nextFn);
}
if (completeFn) {
completeFn = this.wrapInTimeout(completeFn);
}
}
const sink = super.subscribe({ next: nextFn, error: errorFn, complete: completeFn });
if (observerOrNext instanceof Subscription) {
observerOrNext.add(sink);
}
return sink;
}
wrapInTimeout(fn) {
return (value) => {
const taskId = this.pendingTasks?.add();
setTimeout(() => {
try {
fn(value);
} finally {
if (taskId !== void 0) {
this.pendingTasks?.remove(taskId);
}
}
});
};
}
};
var EventEmitter = EventEmitter_;
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;
};
}
var AsyncStackTaggingZoneSpec = class {
createTask;
constructor(namePrefix, consoleAsyncStackTaggingImpl = console) {
this.name = "asyncStackTagging for " + namePrefix;
this.createTask = consoleAsyncStackTaggingImpl?.createTask ?? (() => null);
}
// ZoneSpec implementation below.
name;
onScheduleTask(delegate, _current, target, task) {
task.consoleTask = this.createTask(`Zone - ${task.source || task.type}`);
return delegate.scheduleTask(target, task);
}
onInvokeTask(delegate, _currentZone, targetZone, task, applyThis, applyArgs) {
let ret;
if (task.consoleTask) {
ret = task.consoleTask.run(() => delegate.invokeTask(targetZone, task, applyThis, applyArgs));
} else {
ret = delegate.invokeTask(targetZone, task, applyThis, applyArgs);
}
return ret;
}
};
var isAngularZoneProperty = "isAngularZone";
var angularZoneInstanceIdProperty = isAngularZoneProperty + "_ID";
var ngZoneInstanceId = 0;
var NgZone = class _NgZone {
hasPendingMacrotasks = false;
hasPendingMicrotasks = false;
/**
* Whether there are no outstanding microtasks or macrotasks.
*/
isStable = true;
/**
* Notifies when code enters Angular Zone. This gets fired first on VM Turn.
*/
onUnstable = new EventEmitter(false);
/**
* Notifies when there is no more microtasks enqueued in the current VM Turn.
* This is a hint for Angular to do change detection, which may enqueue more microtasks.
* For this reason this event can fire multiple times per VM Turn.
*/
onMicrotaskEmpty = new EventEmitter(false);
/**
* Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which
* implies we are about to relinquish VM turn.
* This event gets called just once.
*/
onStable = new EventEmitter(false);
/**
* Notifies that an error has been delivered.
*/
onError = new EventEmitter(false);
constructor(options) {
const { enableLongStackTrace = false, shouldCoalesceEventChangeDetection = false, shouldCoalesceRunChangeDetection = false, scheduleInRootZone = SCHEDULE_IN_ROOT_ZONE_DEFAULT } = options;
if (typeof Zone == "undefined") {
throw new RuntimeError(908, ngDevMode && `In this configuration Angular requires Zone.js`);
}
Zone.assertZonePatched();
const self = this;
self._nesting = 0;
self._outer = self._inner = Zone.current;
if (ngDevMode) {
self._inner = self._inner.fork(new AsyncStackTaggingZoneSpec("Angular"));
}
if (Zone["TaskTrackingZoneSpec"]) {
self._inner = self._inner.fork(new Zone["TaskTrackingZoneSpec"]());
}
if (enableLongStackTrace && Zone["longStackTraceZoneSpec"]) {
self._inner = self._inner.fork(Zone["longStackTraceZoneSpec"]);
}
self.shouldCoalesceEventChangeDetection = !shouldCoalesceRunChangeDetection && shouldCoalesceEventChangeDetection;
self.shouldCoalesceRunChangeDetection = shouldCoalesceRunChangeDetection;
self.callbackScheduled = false;
self.scheduleInRootZone = scheduleInRootZone;
forkInnerZoneWithAngularBehavior(self);
}
/**
This method checks whether the method call happens within an Angular Zone instance.
*/
static isInAngularZone() {
return typeof Zone !== "undefined" && Zone.current.get(isAngularZoneProperty) === true;
}
/**
Assures that the method is called within the Angular Zone, otherwise throws an error.
*/
static assertInAngularZone() {
if (!_NgZone.isInAngularZone()) {
throw new RuntimeError(909, ngDevMode && "Expected to be in Angular Zone, but it is not!");
}
}
/**
Assures that the method is called outside of the Angular Zone, otherwise throws an error.
*/
static assertNotInAngularZone() {
if (_NgZone.isInAngularZone()) {
throw new RuntimeError(909, ngDevMode && "Expected to not be in Angular Zone, but it is!");
}
}
/**
* Executes the `fn` function synchronously within the Angular zone and returns value returned by
* the function.
*
* Running functions via `run` allows you to reenter Angular zone from a task that was executed
* outside of the Angular zone (typically started via {@link #runOutsideAngular}).
*
* Any future tasks or microtasks scheduled from within this function will continue executing from
* within the Angular zone.
*
* If a synchronous error happens it will be rethrown and not reported via `onError`.
*/
run(fn, applyThis, applyArgs) {
return this._inner.run(fn, applyThis, applyArgs);
}
/**
* Executes the `fn` function synchronously within the Angular zone as a task and returns value
* returned by the function.
*
* Running functions via `runTask` allows you to reenter Angular zone from a task that was executed
* outside of the Angular zone (typically started via {@link #runOutsideAngular}).
*
* Any future tasks or microtasks scheduled from within this function will continue executing from
* within the Angular zone.
*
* If a synchronous error happens it will be rethrown and not reported via `onError`.
*/
runTask(fn, applyThis, applyArgs, name) {
const zone = this._inner;
const task = zone.scheduleEventTask("NgZoneEvent: " + name, fn, EMPTY_PAYLOAD, noop2, noop2);
try {
return zone.runTask(task, applyThis, applyArgs);
} finally {
zone.cancelTask(task);
}
}
/**
* Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not
* rethrown.
*/
runGuarded(fn, applyThis, applyArgs) {
return this._inner.runGuarded(fn, applyThis, applyArgs);
}
/**
* Executes the `fn` function synchronously in Angular's parent zone and returns value returned by
* the function.
*
* Running functions via {@link #runOutsideAngular} allows you to escape Angular's zone and do
* work that
* doesn't trigger Angular change-detection or is subject to Angular's error handling.
*
* Any future tasks or microtasks scheduled from within this function will continue executing from
* outside of the Angular zone.
*
* Use {@link #run} to reenter the Angular zone and do work that updates the application model.
*/
runOutsideAngular(fn) {
return this._outer.run(fn);
}
};
var EMPTY_PAYLOAD = {};
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, error2) => {
delegate.handleError(target, error2);
zone.runOutsideAngular(() => zone.onError.emit(error2));
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);
}
var NoopNgZone = class {
hasPendingMicrotasks = false;
hasPendingMacrotasks = false;
isStable = true;
onUnstable = new EventEmitter();
onMicrotaskEmpty = new EventEmitter();
onStable = new EventEmitter();
onError = new EventEmitter();
run(fn, applyThis, applyArgs) {
return fn.apply(applyThis, applyArgs);
}
runGuarded(fn, applyThis, applyArgs) {
return fn.apply(applyThis, applyArgs);
}
runOutsideAngular(fn) {
return fn();
}
runTask(fn, applyThis, applyArgs, name) {
return fn.apply(applyThis, applyArgs);
}
};
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;
}
var AfterRenderManager = class _AfterRenderManager {
impl = null;
execute() {
this.impl?.execute();
}
/** @nocollapse */
static \u0275prov = (
/** @pureOrBreakMyCode */
/* @__PURE__ */ \u0275\u0275defineInjectable({
token: _AfterRenderManager,
providedIn: "root",
factory: () => new _AfterRenderManager()
})
);
};
var AFTER_RENDER_PHASES = /* @__PURE__ */ (() => [
0,
1,
2,
3
])();
var AfterRenderImpl = class _AfterRenderImpl {
ngZone = inject2(NgZone);
scheduler = inject2(ChangeDetectionScheduler);
errorHandler = inject2(ErrorHandler, { optional: true });
/** Current set of active sequences. */
sequences = /* @__PURE__ */ new Set();
/** Tracks registrations made during the current set of executions. */
deferredRegistrations = /* @__PURE__ */ new Set();
/** Whether the `AfterRenderManager` is currently executing hooks. */
executing = false;
constructor() {
inject2(TracingService, { optional: true });
}
/**
* Run the sequence of phases of hooks, once through. As a result of executing some hooks, more
* might be scheduled.
*/
execute() {
const hasSequencesToExecute = this.sequences.size > 0;
if (hasSequencesToExecute) {
profiler(
16
/* ProfilerEvent.AfterRenderHooksStart */
);
}
this.executing = true;
for (const phase of AFTER_RENDER_PHASES) {
for (const sequence2 of this.sequences) {
if (sequence2.erroredOrDestroyed || !sequence2.hooks[phase]) {
continue;
}
try {
sequence2.pipelinedValue = this.ngZone.runOutsideAngular(() => this.maybeTrace(() => {
const hookFn = sequence2.hooks[phase];
const value = hookFn(sequence2.pipelinedValue);
return value;
}, sequence2.snapshot));
} catch (err) {
sequence2.erroredOrDestroyed = true;
this.errorHandler?.handleError(err);
}
}
}
this.executing = false;
for (const sequence2 of this.sequences) {
sequence2.afterRun();
if (sequence2.once) {
this.sequences.delete(sequence2);
sequence2.destroy();
}
}
for (const sequence2 of this.deferredRegistrations) {
this.sequences.add(sequence2);
}
if (this.deferredRegistrations.size > 0) {
this.scheduler.notify(
7
/* NotificationSource.RenderHook */
);
}
this.deferredRegistrations.clear();
if (hasSequencesToExecute) {
profiler(
17
/* ProfilerEvent.AfterRenderHooksEnd */
);
}
}
register(sequence2) {
const { view } = sequence2;
if (view !== void 0) {
(view[AFTER_RENDER_SEQUENCES_TO_ADD] ??= []).push(sequence2);
markAncestorsForTraversal(view);
view[FLAGS] |= 8192;
} else if (!this.executing) {
this.addSequence(sequence2);
} else {
this.deferredRegistrations.add(sequence2);
}
}
addSequence(sequence2) {
this.sequences.add(sequence2);
this.scheduler.notify(
7
/* NotificationSource.RenderHook */
);
}
unregister(sequence2) {
if (this.executing && this.sequences.has(sequence2)) {
sequence2.erroredOrDestroyed = true;
sequence2.pipelinedValue = void 0;
sequence2.once = true;
} else {
this.sequences.delete(sequence2);
this.deferredRegistrations.delete(sequence2);
}
}
maybeTrace(fn, snapshot) {
return snapshot ? snapshot.run(TracingAction.AFTER_NEXT_RENDER, fn) : fn();
}
/** @nocollapse */
static \u0275prov = (
/** @pureOrBreakMyCode */
/* @__PURE__ */ \u0275\u0275defineInjectable({
token: _AfterRenderImpl,
providedIn: "root",
factory: () => new _AfterRenderImpl()
})
);
};
var AfterRenderSequence = cla ��ss {
impl;
hooks;
view;
once;
snapshot;
/**
* Whether this sequence errored or was destroyed during this execution, and hooks should no
* longer run for it.
*/
erroredOrDestroyed = false;
/**
* The value returned by the last hook execution (if any), ready to be pipelined into the next
* one.
*/
pipelinedValue = void 0;
unregisterOnDestroy;
constructor(impl, hooks, view, once, destroyRef, snapshot = null) {
this.impl = impl;
this.hooks = hooks;
this.view = view;
this.once = once;
this.snapshot = snapshot;
this.unregisterOnDestroy = destroyRef?.onDestroy(() => this.destroy());
}
afterRun() {
this.erroredOrDestroyed = false;
this.pipelinedValue = void 0;
this.snapshot?.dispose();
this.snapshot = null;
}
destroy() {
this.impl.unregister(this);
this.unregisterOnDestroy?.();
const scheduled2 = this.view?.[AFTER_RENDER_SEQUENCES_TO_ADD];
if (scheduled2) {
this.view[AFTER_RENDER_SEQUENCES_TO_ADD] = scheduled2.filter((s) => s !== this);
}
}
};
function afterEveryRender(callbackOrSpec, options) {
ngDevMode && assertNotInReactiveContext(afterEveryRender, "Call `afterEveryRender` outside of a reactive context. For example, schedule the render callback inside the component constructor`.");
if (ngDevMode && !options?.injector) {
assertInInjectionContext(afterEveryRender);
}
const injector = options?.injector ?? inject2(Injector);
if (false) {
return NOOP_AFTER_RENDER_REF;
}
performanceMarkFeature("NgAfterRender");
return afterEveryRenderImpl(
callbackOrSpec,
injector,
options,
/* once */
false
);
}
function afterNextRender(callbackOrSpec, options) {
if (ngDevMode && !options?.injector) {
assertInInjectionContext(afterNextRender);
}
const injector = options?.injector ?? inject2(Injector);
if (false) {
return NOOP_AFTER_RENDER_REF;
}
performanceMarkFeature("NgAfterNextRender");
return afterEveryRenderImpl(
callbackOrSpec,
injector,
options,
/* once */
true
);
}
function getHooks(callbackOrSpec) {
if (callbackOrSpec instanceof Function) {
return [
void 0,
void 0,
/* MixedReadWrite */
callbackOrSpec,
void 0
];
} else {
return [
callbackOrSpec.earlyRead,
callbackOrSpec.write,
callbackOrSpec.mixedReadWrite,
callbackOrSpec.read
];
}
}
function afterEveryRenderImpl(callbackOrSpec, injector, options, once) {
const manager = injector.get(AfterRenderManager);
manager.impl ??= injector.get(AfterRenderImpl);
const tracing = injector.get(TracingService, null, { optional: true });
const destroyRef = options?.manualCleanup !== true ? injector.get(DestroyRef) : null;
const viewContext = injector.get(ViewContext, null, { optional: true });
const sequence2 = new AfterRenderSequence(manager.impl, getHooks(callbackOrSpec), viewContext?.view, once, destroyRef, tracing?.snapshot(null));
manager.impl.register(sequence2);
return sequence2;
}
var ANIMATION_QUEUE = new InjectionToken(typeof ngDevMode !== "undefined" && ngDevMode ? "AnimationQueue" : "", {
providedIn: "root",
factory: () => {
return {
queue: /* @__PURE__ */ new Set(),
isScheduled: false,
scheduler: null
};
}
});
function addToAnimationQueue(injector, animationFns) {
const animationQueue = injector.get(ANIMATION_QUEUE);
if (Array.isArray(animationFns)) {
for (const animateFn of animationFns) {
animationQueue.queue.add(animateFn);
}
} else {
animationQueue.queue.add(animationFns);
}
animationQueue.scheduler && animationQueue.scheduler(injector);
}
function scheduleAnimationQueue(injector) {
const animationQueue = injector.get(ANIMATION_QUEUE);
if (!animationQueue.isScheduled) {
afterNextRender(() => {
animationQueue.isScheduled = false;
for (let animateFn of animationQueue.queue) {
animateFn();
}
animationQueue.queue.clear();
}, { injector });
animationQueue.isScheduled = true;
}
}
function initializeAnimationQueueScheduler(injector) {
const animationQueue = injector.get(ANIMATION_QUEUE);
animationQueue.scheduler = scheduleAnimationQueue;
animationQueue.scheduler(injector);
}
function queueEnterAnimations(injector, enterAnimations) {
for (const [_, nodeAnimations] of enterAnimations) {
addToAnimationQueue(injector, nodeAnimations.animateFns);
}
}
function maybeQueueEnterAnimation(parentLView, parent, tNode, injector) {
const enterAnimations = parentLView?.[ANIMATIONS]?.enter;
if (parent !== null && enterAnimations && enterAnimations.has(tNode.index)) {
queueEnterAnimations(injector, enterAnimations);
}
}
function applyToElementOrContainer(action, renderer, injector, parent, lNodeToHandle, tNode, beforeNode, parentLView) {
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) {
maybeQueueEnterAnimation(parentLView, parent, tNode, injector);
if (beforeNode == null) {
nativeAppendChild(renderer, parent, rNode);
} else {
nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true);
}
} else if (action === 1 && parent !== null) {
maybeQueueEnterAnimation(parentLView, parent, tNode, injector);
nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true);
} else if (action === 2) {
runLeaveAnimationsWithCallback(parentLView, tNode, injector, (nodeHasLeaveAnimations) => {
nativeRemoveNode(renderer, rNode, isComponent2, nodeHasLeaveAnimations);
});
} else if (action === 3) {
runLeaveAnimationsWithCallback(parentLView, tNode, injector, () => {
renderer.destroyNode(rNode);
});
}
if (lContainer != null) {
applyContainer(renderer, action, injector, lContainer, tNode, 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) {
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 runLeaveAnimationsWithCallback(lView, tNode, injector, callback) {
const animations = lView?.[ANIMATIONS];
if (animations == null || animations.leave == void 0 || !animations.leave.has(tNode.index))
return callback(false);
if (animations.skipLeaveAnimations) {
animations.skipLeaveAnimations = false;
return callback(false);
}
if (lView)
allLeavingAnimations.add(lView);
addToAnimationQueue(injector, () => {
if (animations.leave && animations.leave.has(tNode.index)) {
const leaveAnimationMap = animations.leave;
const leaveAnimations = leaveAnimationMap.get(tNode.index);
const runningAnimations = [];
if (leaveAnimations) {
for (let index = 0; index < leaveAnimations.animateFns.length; index++) {
const animationFn = leaveAnimations.animateFns[index];
const { promise } = animationFn();
runningAnimations.push(promise);
}
}
animations.running = Promise.allSettled(runningAnimations);
runAfterLeaveAnimations(lView, callback);
} else {
if (lView)
allLeavingAnimations.delete(lView);
callback(false);
}
});
}
function runAfterLeaveAnimations(lView, callback) {
const runningAnimations = lView[ANIMATIONS]?.running;
if (runningAnimations) {
runningAnimations.then(() => {
lView[ANIMATIONS].running = void 0;
allLeavingAnimations.delete(lView);
callback(true);
});
return;
}
callback(false);
}
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;
}
var _getInsertInFrontOfRNodeWithI18n = getInsertInFrontOfRNodeWithNoI18n;
var _processI18nInsertBefore;
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);
const injector = lView[INJECTOR];
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, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView);
} else if (tNodeType & 32) {
const nextRNode = icuContainerIterate(tNode, lView);
let rNode;
while (rNode = nextRNode()) {
applyToElementOrContainer(action, renderer, injector, parentRElement, rNode, tNode, beforeNode, lView);
}
applyToElementOrContainer(action, renderer, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView);
} else if (tNodeType & 16) {
applyProjectionRecursive(renderer, action, lView, tNode, parentRElement, beforeNode);
} else {
ngDevMode && assertTNodeType(
tNode,
3 | 4
/* TNodeType.Container */
);
applyToElementOrContainer(action, renderer, injector, parentRElement, rawSlotValue, tNode, beforeNode, lView);
}
}
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, lView[INJECTOR], parentRElement, rNode, tProjectionNode, beforeNode, lView);
}
} 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, injector, lContainer, tNode, parentRElement, beforeNode) {
ngDevMode && assertLContainer(lContainer);
const anchor = lContainer[NATIVE];
const native = unwrapRNode(lContainer);
if (anchor !== native) {
applyToElementOrContainer(action, renderer, injector, parentRElement, anchor, tNode, 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) {
renderer.removeClass(rNode, prop);
} else {
renderer.addClass(rNode, prop);
}
} else {
let flags = prop.indexOf("-") === -1 ? void 0 : RendererStyleFlags2.DashCase;
if (value == null) {
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;
}
renderer.setStyle(rNode, prop, value, flags);
}
}
}
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);
templateFn(rf, context2);
} finally {
setSelectedIndex(prevSelectedIndex);
const postHookType = isUpdatePhase ? 3 : 1;
profiler(postHookType, context2, templateFn);
}
}
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);
}
var _applyRootElementTransformImpl = () => null;
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 setPropertyAndInputs(tNode, lView, propName, value, renderer, sanitizer) {
ngDevMode && assertNotSame(value, NO_CHANGE, "Incoming value should never be NO_CHANGE.");
const tView = lView[TVIEW];
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) {
propName = mapPropName(propName);
}
setDomProperty(tNode, lView, propName, value, renderer, sanitizer);
}
function setDomProperty(tNode, lView, propName, value, renderer, sanitizer) {
if (tNode.type & 3) {
const element = getNativeByTNode(tNode, lView);
if (ngDevMode) {
validateAgainstEventProperties(propName);
if (!isPropertyValid(element, propName, tNode.value, lView[TVIEW].schemas)) {
handleUnknownPropertyError(propName, tNode.value, tNode.type, lView);
}
}
value = sanitizer != null ? sanitizer(value, tNode.value || "", propName) : value;
renderer.setProperty(element, propName, value);
} else if (tNode.type & 12) {
if (ngDevMode && !matchingSchemas(lView[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 environment2 = lView[ENVIRONMENT];
if (!environment2.ngReflect) {
return;
}
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) {
const environment2 = lView[ENVIRONMENT];
if (!environment2.ngReflect || !(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) {
renderer.removeAttribute(element, name, namespace);
} else {
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 elementLikeStartShared(tNode, lView, index, name, locateOrCreateNativeNode) {
const adjustedIndex = HEADER_OFFSET + index;
const tView = lView[TVIEW];
const native = locateOrCreateNativeNode(tView, lView, tNode, name, index);
lView[adjustedIndex] = native;
setCurrentTNode(tNode, true);
const isElement = tNode.type === 2;
if (isElement) {
setupStaticAttributes(lView[RENDERER], native, tNode);
if (getElementDepthCount() === 0 || isDirectiveHost(tNode)) {
attachPatchData(native, lView);
}
increaseElementDepthCount();
} else {
attachPatchData(native, lView);
}
if (wasLastNodeCreated() && (!isElement || !isDetachedByI18n(tNode))) {
appendChild(tView, lView, native, tNode);
}
return tNode;
}
function elementLikeEndShared(tNode) {
let currentTNode = tNode;
if (isCurrentTNod ��eParent()) {
setCurrentTNodeAsNotParent();
} else {
ngDevMode && assertHasParent(getCurrentTNode());
currentTNode = currentTNode.parent;
setCurrentTNode(currentTNode, false);
}
return currentTNode;
}
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 handleUncaughtError(lView, error2) {
const injector = lView[INJECTOR];
if (!injector) {
return;
}
let errorHandler2;
try {
errorHandler2 = injector.get(INTERNAL_APPLICATION_ERROR_HANDLER, null);
} catch {
errorHandler2 = null;
}
errorHandler2?.(error2);
}
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 (error2) {
if (tView.firstCreatePass) {
tView.incompleteFirstPass = true;
tView.firstCreatePass = false;
}
throw error2;
} finally {
lView[FLAGS] &= ~4;
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);
}
var USE_EXHAUSTIVE_CHECK_NO_CHANGES_DEFAULT = false;
var UseExhaustiveCheckNoChanges = new InjectionToken(ngDevMode ? "exhaustive checkNoChanges" : "");
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 sequence2 of lView[AFTER_RENDER_SEQUENCES_TO_ADD]) {
sequence2.impl.addSequence(sequence2);
}
lView[AFTER_RENDER_SEQUENCES_TO_ADD].length = 0;
}
}
var freeConsumers = [];
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);
}
var REACTIVE_LVIEW_CONSUMER_NODE = __spreadProps(__spreadValues({}, REACTIVE_NODE), {
consumerIsAlwaysLive: true,
kind: "template",
consumerMarkedDirty: (node) => {
markAncestorsForTraversal(node.lView);
},
consumerOnSignalRead() {
this.lView[REACTIVE_TEMPLATE_CONSUMER] = this;
}
});
function getOrCreateTemporaryConsumer(lView) {
const consumer = lView[REACTIVE_TEMPLATE_CONSUMER] ?? Object.create(TEMPORARY_CONSUMER_NODE);
consumer.lView = lView;
return consumer;
}
var TEMPORARY_CONSUMER_NODE = __spreadProps(__spreadValues({}, REACTIVE_NODE), {
consumerIsAlwaysLive: true,
kind: "template",
consumerMarkedDirty: (node) => {
let parent = getLViewParent(node.lView);
while (parent && !viewShouldHaveReactiveConsumer(parent[TVIEW])) {
parent = getLViewParent(parent);
}
if (!parent) {
return;
}
markViewForRefresh(parent);
},
consumerOnSignalRead() {
this.lView[REACTIVE_TEMPLATE_CONSUMER] = this;
}
});
function viewShouldHaveReactiveConsumer(tView) {
return tView.type !== 2;
}
function isReactiveLViewConsumer(node) {
return node.kind === "template";
}
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);
}
}
var MAXIMUM_REFRESH_RERUNS$1 = 100;
function detectChangesInternal(lView, mode = 0) {
const environment2 = lView[ENVIRONMENT];
const rendererFactory = environment2.rendererFactory;
const checkNoChangesMode = !!ngDevMode && isInCheckNoChangesMode();
if (!checkNoChangesMode) {
rendererFactory.begin?.();
}
try {
detectChangesInViewWhileDirty(lView, mode);
} 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_RERUNS$1) {
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, exhaustive) {
setIsInCheckNoChangesMode(exhaustive ? CheckNoChangesMode.Exhaustive : CheckNoChangesMode.OnlyDirtyViews);
try {
detectChangesInternal(lView);
} 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] &= ~(8192 | 1024);
if (shouldRefreshView) {
refreshView(tView, lView, tView.template, lView[CONTEXT]);
} else if (flags & 8192) {
const prevConsumer = setActiveConsumer(null);
try {
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);
}
} finally {
setActiveConsumer(prevConsumer);
}
}
}
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] &= ~128;
}
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);
}
}
var ViewRef = class {
_lView;
_cdRefInjectingView;
_appRef = null;
_attachedToViewContainer = false;
exhaustive;
get rootNodes() {
const lView = this._lView;
const tView = lView[TVIEW];
return collectNativeNodes(tView, lView, tView.firstChild, []);
}
constructor(_lView, _cdRefInjectingView) {
this._lView = _lView;
this._cdRefInjectingView = _cdRefInjectingView;
}
get context() {
return this._lView[CONTEXT];
}
/**
* @deprecated Replacing the full context object is not supported. Modify the context
* directly, or consider using a `Proxy` if you need to replace the full object.
* // TODO(devversion): Remove this.
*/
set context(value) {
if (ngDevMode) {
console.warn("Angular: Replacing the `context` object of an `EmbeddedViewRef` is deprecated.");
}
this._lView[CONTEXT] = value;
}
get destroyed() {
return isDestroyed(this._lView);
}
destroy() {
if (this._appRef) {
this._appRef.detachView(this);
} else if (this._attachedToViewContainer) {
const parent = this._lView[PARENT];
if (isLContainer(parent)) {
const viewRefs = parent[VIEW_REFS];
const index = viewRefs ? viewRefs.indexOf(this) : -1;
if (index > -1) {
ngDevMode && assertEqual(index, parent.indexOf(this._lView) - CONTAINER_HEADER_OFFSET, "An attached view should be in the same position within its container as its ViewRef in the VIEW_REFS array.");
detachView(parent, index);
removeFromArray(viewRefs, index);
}
}
this._attachedToViewContainer = false;
}
destroyLView(this._lView[TVIEW], this._lView);
}
onDestroy(callback) {
storeLViewOnDestroy(this._lView, callback);
}
/**
* Marks a view and all of its ancestors dirty.
*
* This can be used to ensure an {@link ChangeDetectionStrategy#OnPush} component is
* checked when it needs to be re-rendered but the two normal triggers haven't marked it
* dirty (i.e. inputs haven't changed and events haven't fired in the view).
*
* <!-- TODO: Add a link to a chapter on OnPush components -->
*
* @usageNotes
* ### Example
*
* ```ts
* @Component({
* selector: 'app-root',
* template: `Number of ticks: {{numberOfTicks}}`
* changeDetection: ChangeDetectionStrategy.OnPush,
* })
* class AppComponent {
* numberOfTicks = 0;
*
* constructor(private ref: ChangeDetectorRef) {
* setInterval(() => {
* this.numberOfTicks++;
* // the following is required, otherwise the view will not be updated
* this.ref.markForCheck();
* }, 1000);
* }
* }
* ```
*/
markForCheck() {
markViewDirty(
this._cdRefInjectingView || this._lView,
4
/* NotificationSource.MarkForCheck */
);
}
/**
* Detaches the view from the change detection tree.
*
* Detached views will not be checked during change detection runs until they are
* re-attached, even if they are dirty. `detach` can be used in combination with
* {@link ChangeDetectorRef#detectChanges} to implement local change
* detection checks.
*
* <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
* <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
*
* @usageNotes
* ### Example
*
* The following example defines a component with a large list of readonly data.
* Imagine the data changes constantly, many times per second. For performance reasons,
* we want to check and update the list every five seconds. We can do that by detaching
* the component's change detector and doing a local check every five seconds.
*
* ```ts
* class DataProvider {
* // in a real application the returned data will be different every time
* get data() {
* return [1,2,3,4,5];
* }
* }
*
* @Component({
* selector: 'giant-list',
* template: `
* @for(d of dataProvider.data; track $index) {
* <li>Data {{d}}</li>
* }
* `,
* })
* class GiantList {
* constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {
* ref.detach();
* setInterval(() => {
* this.ref.detectChanges();
* }, 5000);
* }
* }
*
* @Component({
* selector: 'app',
* providers: [DataProvider],
* template: `
* <giant-list><giant-list>
* `,
* })
* class App {
* }
* ```
*/
detach() {
this._lView[FLAGS] &= ~128;
}
/**
* Re-attaches a view to the change detection tree.
*
* This can be used to re-attach views that were previously detached from the tree
* using {@link ChangeDetectorRef#detach}. Views are attached to the tree by default.
*
* <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
*
* @usageNotes
* ### Example
*
* The following example creates a component displaying `live` data. The component will detach
* its change detector from the main change detector tree when the component's live property
* is set to false.
*
* ```ts
* class DataProvider {
* data = 1;
*
* constructor() {
* setInterval(() => {
* this.data = this.data * 2;
* }, 500);
* }
* }
*
* @Component({
* selector: 'live-data',
* inputs: ['live'],
* template: 'Data: {{dataProvider.data}}'
* })
* class LiveData {
* constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {}
*
* set live(value) {
* if (value) {
* this.ref.reattach();
* } else {
* this.ref.detach();
* }
* }
* }
*
* @Component({
* selector: 'app-root',
* providers: [DataProvider],
* template: `
* Live Update: <input type="checkbox" [(ngModel)]="live">
* <live-data [live]="live"><live-data>
* `,
* })
* class AppComponent {
* live = true;
* }
* ```
*/
reattach() {
updateAncestorTraversalFlagsOnAttach(this._lView);
this._lView[FLAGS] |= 128;
}
/**
* Checks the view and its children.
*
* This can also be used in combination with {@link ChangeDetectorRef#detach} to implement
* local change detection checks.
*
* <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
* <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
*
* @usageNotes
* ### Example
*
* The following example defines a component with a large list of readonly data.
* Imagine, the data changes constantly, many times per second. For performance reasons,
* we want to check and update the list every five seconds.
*
* We can do that by detaching the component's change detector and doing a local change detection
* check every five seconds.
*
* See {@link ChangeDetectorRef#detach} for more information.
*/
detectChanges() {
this._lView[FLAGS] |= 1024;
detectChangesInternal(this._lView);
}
/**
* Checks the change detector and its children, and throws i ��f any changes are detected.
*
* This is used in development mode to verify that running change detection doesn't
* introduce other changes.
*/
checkNoChanges() {
if (ngDevMode) {
try {
this.exhaustive ??= this._lView[INJECTOR].get(UseExhaustiveCheckNoChanges, USE_EXHAUSTIVE_CHECK_NO_CHANGES_DEFAULT);
} catch {
this.exhaustive = USE_EXHAUSTIVE_CHECK_NO_CHANGES_DEFAULT;
}
checkNoChangesInternal(this._lView, this.exhaustive);
}
}
attachToViewContainerRef() {
if (this._appRef) {
throw new RuntimeError(902, ngDevMode && "This view is already attached directly to the ApplicationRef!");
}
this._attachedToViewContainer = true;
}
detachFromAppRef() {
this._appRef = null;
const isRoot = isRootView(this._lView);
const declarationContainer = this._lView[DECLARATION_LCONTAINER];
if (declarationContainer !== null && !isRoot) {
detachMovedView(declarationContainer, this._lView);
}
detachViewFromDOM(this._lView[TVIEW], this._lView);
}
attachToAppRef(appRef) {
if (this._attachedToViewContainer) {
throw new RuntimeError(902, ngDevMode && "This view is already attached to a ViewContainer!");
}
this._appRef = appRef;
const isRoot = isRootView(this._lView);
const declarationContainer = this._lView[DECLARATION_LCONTAINER];
if (declarationContainer !== null && !isRoot) {
trackMovedView(declarationContainer, this._lView);
}
updateAncestorTraversalFlagsOnAttach(this._lView);
}
};
var TemplateRef = class {
_declarationLView;
_declarationTContainer;
/**
* The anchor element in the parent view for this embedded view.
*
* The data-binding and [injection contexts](guide/di/dependency-injection-context) of embedded
* views created from this `TemplateRef` inherit from the contexts of this location.
*
* Typically new embedded views are attached to the view container of this location, but in
* advanced use-cases, the view can be attached to a different container while keeping the
* data-binding and injection context from the original location.
*
*/
elementRef;
/**
* @internal
* @nocollapse
*/
static __NG_ELEMENT_ID__ = injectTemplateRef;
/** @internal */
constructor(_declarationLView, _declarationTContainer, elementRef) {
this._declarationLView = _declarationLView;
this._declarationTContainer = _declarationTContainer;
this.elementRef = elementRef;
}
/**
* Returns an `ssrId` associated with a TView, which was used to
* create this instance of the `TemplateRef`.
*
* @internal
*/
get ssrId() {
return this._declarationTContainer.tView?.ssrId || null;
}
/**
* Instantiates an unattached embedded view based on this template.
* @param context The data-binding context of the embedded view, as declared
* in the `<ng-template>` usage.
* @param injector Injector to be used within the embedded view.
* @returns The new embedded view object.
*/
createEmbeddedView(context2, injector) {
return this.createEmbeddedViewImpl(context2, injector);
}
/**
* Implementation of the `createEmbeddedView` function.
*
* This implementation is internal and allows framework code
* to invoke it with extra parameters (e.g. for hydration) without
* affecting public API.
*
* @internal
*/
createEmbeddedViewImpl(context2, injector, dehydratedView) {
const embeddedLView = createAndRenderEmbeddedLView(this._declarationLView, this._declarationTContainer, context2, { embeddedViewInjector: injector, dehydratedView });
return new ViewRef(embeddedLView);
}
};
function injectTemplateRef() {
return createTemplateRef(getCurrentTNode(), getLView());
}
function createTemplateRef(hostTNode, hostLView) {
if (hostTNode.type & 4) {
ngDevMode && assertDefined(hostTNode.tView, "TView must be allocated");
return new TemplateRef(hostLView, hostTNode, createElementRef(hostTNode, hostLView));
}
return null;
}
var AT_THIS_LOCATION = "<-- AT THIS LOCATION";
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 "<unknown>";
}
}
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(" ");
}
var internalAttrs = /* @__PURE__ */ new Set(["ngh", "ng-version", "ng-server-context"]);
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}</${tag}>`;
case 8:
return "<!-- ng-container -->";
case 4:
return "<!-- container -->";
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}</${tag}>`;
case Node.TEXT_NODE:
const content = node.textContent ? shorten(node.textContent) : "";
return `#text${content ? `(${content})` : ""}`;
case Node.COMMENT_NODE:
return `<!-- ${shorten(node.textContent ?? "")} -->`;
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 + `<!-- container --> ${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 && tParent && assertTNodeForTView(tParent, tView);
let injectorIndex = tParent ? tParent.injectorIndex : -1;
let flags = 0;
if (isInSkipHydrationBlock()) {
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(state2, tIcu, lView) {
state2.index = 0;
const currentCase = getCurrentICUCaseIndex(tIcu, lView);
if (currentCase !== null) {
ngDevMode && assertNumberInRange(currentCase, 0, tIcu.cases.length - 1);
state2.removes = tIcu.remove[currentCase];
} else {
state2.removes = EMPTY_ARRAY;
}
}
function icuContainerIteratorNext(state2) {
if (state2.index < state2.removes.length) {
const removeOpCode = state2.removes[state2.index++];
ngDevMode && assertNumber(removeOpCode, "Expecting OpCode number");
if (removeOpCode > 0) {
const rNode = state2.lView[removeOpCode];
ngDevMode && assertDomNode(rNode);
return rNode;
} else {
state2.stack.push(state2.index, state2.removes);
const tIcuIndex = ~removeOpCode;
const tIcu = state2.lView[TVIEW].data[tIcuIndex];
ngDevMode && assertTIcu(tIcu);
enterIcu(state2, tIcu, state2.lView);
return icuContainerIteratorNext(state2);
}
} else {
if (state2.stack.length === 0) {
return null;
} else {
state2.removes = state2.stack.pop();
state2.index = state2.stack.pop();
return icuContainerIteratorNext(state2);
}
}
}
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;
}
var REF_EXTRACTOR_REGEXP = /* @__PURE__ */ new RegExp(`^(\\d+)*(${REFERENCE_NODE_BODY}|${REFERENCE_NODE_HOST})*(.*)`);
var _prepareI18nBlockForHydrationImpl = () => {
};
function prepareI18nBlockForHydration(lView, index, parentTNode, subTemplateIndex) {
_prepareI18nBlockForHydrationImpl(lView, index, parentTNode, subTemplateIndex);
}
var _claimDehydratedIcuCaseImpl = () => {
};
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);
}
}
var _findMatchingDehydratedViewImpl = () => null;
var _findAndReconcileMatchingDehydratedViewsImpl = () => null;
function findMatchingDehydratedView(lContainer, template) {
return _findMatchingDehydratedViewImpl(lContainer, template);
}
function findAndReconcileMatchingDehydratedViews(lContainer, templateTNode, hostLView) {
return _findAndReconcileMatchingDehydratedViewsImpl(lContainer, templateTNode, hostLView);
}
var ComponentRef$1 = class ComponentRef {
};
var ComponentFactory$1 = class ComponentFactory {
};
var _NullComponentFactoryResolver = class {
resolveComponentFactory(component) {
throw new RuntimeError(917, typeof ngDevMode !== "undefined" && ngDevMode && `No component factory found for ${stringify(component)}.`);
}
};
var ComponentFactoryResolver$1 = class ComponentFactoryResolver {
static NULL = new _NullComponentFactoryResolver();
};
var RendererFactory2 = class {
};
var Renderer2 = class {
/**
* If null or undefined, the view engine won't call it.
* This is used as a performance optimization for production mode.
*/
destroyNode = null;
/**
* @internal
* @nocollapse
*/
static __NG_ELEMENT_ID__ = () => injectRenderer2();
};
function injectRenderer2() {
const lView = getLView();
const tNode = getCurrentTNode();
const nodeAtIndex = getComponentLViewByIndex(tNode.index, lView);
return (isLView(nodeAtIndex) ? nodeAtIndex : lView)[RENDERER];
}
var Sanitizer = class _Sanitizer {
/** @nocollapse */
static \u0275prov = (
/** @pureOrBreakMyCode */
/* @__PURE__ */ \u0275\u0275defineInjectable({
token: _Sanitizer,
providedIn: "root",
factory: () => null
})
);
};
function isModuleWithProviders(value) {
return value.ngModule !== void 0;
}
function isNgModule(value) {
return !!getNgModuleDef(value);
}
function isPipe(value) {
return !!getPipeDef(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 (getPipeDef(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) || getPipeDef(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?`);
}
}
}
}
var DepsTracker = class {
ownerNgModule = /* @__PURE__ */ new Map();
ngModulesWithSomeUnresolvedDecls = /* @__PURE__ */ new Set();
ngModulesScopeCache = /* @__PURE__ */ new Map();
standaloneComponentsScopeCache = /* @__PURE__ */ new Map();
/**
* Attempts to resolve ng module's forward ref declarations as much as possible and add them to
* the `ownerNgModule` map. This method normally should be called after the initial parsing when
* all the forward refs are resolved (e.g., when trying to render a component)
*/
resolveNgModulesDecls() {
if (this.ngModulesWithSomeUnresolvedDecls.size === 0) {
return;
}
for (const moduleType of this.ngModulesWithSomeUnresolvedDecls) {
const def = getNgModuleDef(moduleType);
if (def?.declarations) {
for (const decl of maybeUnwrapFn(def.declarations)) {
if (isComponent(decl)) {
this.ownerNgModule.set(decl, moduleType);
}
}
}
}
this.ngModulesWithSomeUnresolvedDecls.clear();
}
/** @override */
getComponentDependencies(type, rawImports) {
this.resolveNgModulesDecls();
const def = getComponentDef(type);
if (def === null) {
throw new Error(`Attempting to get component dependencies for a type that is not a component: ${type}`);
}
if (def.standalone) {
const scope = this.getStandaloneComponentScope(type, rawImports);
if (scope.compilation.isPoisoned) {
return { dependencies: [] };
}
return {
dependencies: [
...scope.compilation.directives,
...scope.compilation.pipes,
...scope.compilation.ngModules
]
};
} else {
if (!this.ownerNgModule.has(type)) {
return { dependencies: [] };
}
const scope = this.getNgModuleScope(this.ownerNgModule.get(type));
if (scope.compilation.isPoisoned) {
return { dependencies: [] };
}
return {
dependencies: [...scope.compilation.directives, ...scope.compilation.pipes]
};
}
}
/**
* @override
* This implementation does not make use of param scopeInfo since it assumes the scope info is
* already added to the type itself through methods like {@link ɵɵsetNgModuleScope}
*/
registerNgModule(type, scopeInfo) {
if (!isNgModule(type)) {
throw new Error(`Attempting to register a Type which is not NgModule as NgModule: ${type}`);
}
this.ngModulesWithSomeUnresolvedDecls.add(type);
}
/** @override */
clearScopeCacheFor(type) {
this.ngModulesScopeCache.delete(type);
this.standaloneComponentsScopeCache.delete(type);
}
/** @override */
getNgModuleScope(type) {
if (this.ngModulesScopeCache.has(type)) {
return this.ngModulesScopeCache.get(type);
}
const scope = this.computeNgModuleScope(type);
this.ngModulesScopeCache.set(type, scope);
return scope;
}
/** Compute NgModule scope afresh. */
computeNgModuleScope(type) {
const def = getNgModuleDefOrThrow(type);
const scope = {
exported: { directives: /* @__PURE__ */ new Set(), pipes: /* @__PURE__ */ new Set() },
compilation: { directives: /* @__PURE__ */ new Set(), pipes: /* @__PURE__ */ new Set() }
};
for (const imported of maybeUnwrapFn(def.imports)) {
if (isNgModule(imported)) {
const importedScope = this.getNgModuleScope(imported);
addSet(importedScope.exported.directives, scope.compilation.directives);
addSet(importedScope.exported.pipes, scope.compilation.pipes);
} else if (isStandalone(imported)) {
if (isDirective(imported) || isComponent(imported)) {
scope.compilation.directives.add(imported);
} else if (isPipe(imported)) {
scope.compilation.pipes.add(imported);
} else {
throw new RuntimeError(980, "The standalone imported type is neither a component nor a directive nor a pipe");
}
} else {
scope.compilation.isPoisoned = true;
break;
}
}
if (!scope.compilation.isPoisoned) {
for (const decl of maybeUnwrapFn(def.declarations)) {
if (isNgModule(decl) || isStandalone(decl)) {
scope.compilation.isPoisoned = true;
break;
}
if (isPipe(decl)) {
scope.compilation.pipes.add(decl);
} else {
scope.compilation.directives.add(decl);
}
}
}
for (const exported of maybeUnwrapFn(def.exports)) {
if (isNgModule(exported)) {
const exportedScope = this.getNgModuleScope(exported);
addSet(exportedScope.exported.directives, scope.exported.directives);
addSet(exportedScope.exported.pipes, scope.exported.pipes);
addSet(exportedScope.exported.directives, scope.compilation.directives);
addSet(exportedScope.exported.pipes, scope.compilation.pipes);
} else if (isPipe(exported)) {
scope.exported.pipes.add(exported);
} else {
scope.exported.directives.add(exported);
}
}
return scope;
}
/** @override */
getStandaloneComponentScope(type, rawImports) {
if (this.standaloneComponentsScopeCache.has(type)) {
return this.standaloneComponentsScopeCache.get(type);
}
const ans = this.computeStandaloneComponentScope(type, rawImports);
this.standaloneComponentsScopeCache.set(type, ans);
return ans;
}
computeStandaloneComponentScope(type, rawImports) {
const ans = {
compilation: {
// Standalone components are always able to self-reference.
directives: /* @__PURE__ */ new Set([type]),
pipes: /* @__PURE__ */ new Set(),
ngModules: /* @__PURE__ */ new Set()
}
};
for (const rawImport of flatten(rawImports ?? [])) {
const imported = resolveForwardRef(rawImport);
try {
verifyStandaloneImport(imported, type);
} catch (e) {
ans.compilation.isPoisoned = true;
return ans;
}
if (isNgModule(imported)) {
ans.compilation.ngModules.add(imported);
const importedScope = this.getNgModuleScope(imported);
if (importedScope.exported.isPoisoned) {
a ��ns.compilation.isPoisoned = true;
return ans;
}
addSet(importedScope.exported.directives, ans.compilation.directives);
addSet(importedScope.exported.pipes, ans.compilation.pipes);
} else if (isPipe(imported)) {
ans.compilation.pipes.add(imported);
} else if (isDirective(imported) || isComponent(imported)) {
ans.compilation.directives.add(imported);
} else {
ans.compilation.isPoisoned = true;
return ans;
}
}
return ans;
}
/** @override */
isOrphanComponent(cmp) {
const def = getComponentDef(cmp);
if (!def || def.standalone) {
return false;
}
this.resolveNgModulesDecls();
return !this.ownerNgModule.has(cmp);
}
};
function addSet(sourceSet, targetSet) {
for (const m of sourceSet) {
targetSet.add(m);
}
}
var depsTracker = new DepsTracker();
var NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = {};
var ChainedInjector = class {
injector;
parentInjector;
constructor(injector, parentInjector) {
this.injector = injector;
this.parentInjector = parentInjector;
}
get(token, notFoundValue, options) {
const value = this.injector.get(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, options);
if (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR || notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) {
return value;
}
return this.parentInjector.get(token, notFoundValue, options);
}
};
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 style2 = value;
const styleValue = attrs[++i];
styles = concatStringsWithSpace(styles, style2 + ": " + styleValue + ";");
}
}
}
writeToHost ? tNode.styles = styles : tNode.stylesWithoutHost = styles;
writeToHost ? tNode.classes = classes : tNode.classesWithoutHost = classes;
}
function \u0275\u0275directiveInject(token, flags = 0) {
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 = matchedDirectiveDefs;
let hostDirectiveDefs = null;
let hostDirectiveRanges = null;
for (const def of matchedDirectiveDefs) {
if (def.resolveHostDirectives !== null) {
[directiveDefs, hostDirectiveDefs, hostDirectiveRanges] = def.resolveHostDirectives(matchedDirectiveDefs);
break;
}
}
ngDevMode && assertNoDuplicateDirectives(directiveDefs);
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 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, config3, directiveIndex) {
const aliasMap = mode === 0 ? config3.inputs : config3.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. `<div *dir="exp">`).
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 config3 = hostDirectiveInputs[attrName];
for (let j = 0; j < config3.length; j += 2) {
if (config3[j] === directiveIndex) {
inputsToStore ??= [];
inputsToStore.push(config3[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, ngDevMode ? def.type.name : null);
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 directiveHostFirstCreatePass(index, lView, type, name, directiveMatcher, bindingsEnabled, attrsIndex, localRefsIndex) {
const tView = lView[TVIEW];
ngDevMode && assertFirstCreatePass(tView);
const tViewConsts = tView.consts;
const attrs = getConstant(tViewConsts, attrsIndex);
const tNode = getOrCreateTNode(tView, index, type, 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 directiveHostEndFirstCreatePass(tView, tNode) {
ngDevMode && assertFirstCreatePass(tView);
registerPostOrderHooks(tView, tNode);
if (isContentQueryHost(tNode)) {
tView.queries.elementEnd(tNode);
}
}
function domOnlyFirstCreatePass(index, tView, type, name, attrsIndex, localRefsIndex) {
ngDevMode && assertFirstCreatePass(tView);
const tViewConsts = tView.consts;
const attrs = getConstant(tViewConsts, attrsIndex);
const tNode = getOrCreateTNode(tView, index, type, name, attrs);
tNode.mergedAttrs = mergeHostAttrs(tNode.mergedAttrs, tNode.attrs);
if (localRefsIndex != null) {
const refs = getConstant(tViewConsts, localRefsIndex);
tNode.localNames = [];
for (let i = 0; i < refs.length; i += 2) {
tNode.localNames.push(refs[i], -1);
}
}
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 isListLikeIterable(obj) {
if (!isJsObject(obj))
return false;
return Array.isArray(obj) || !(obj instanceof Map) && // JS Map are iterables but return entries as [k, v]
Symbol.iterator in obj;
}
function areIterablesEqual(a, b, comparator) {
const iterator1 = a[Symbol.iterator]();
const iterator2 = b[Symbol.iterator]();
while (true) {
const item1 = iterator1.next();
const item2 = iterator2.next();
if (item1.done && item2.done)
return true;
if (item1.done || item2.done)
return false;
if (!comparator(item1.value, item2.value))
return false;
}
}
function iterateListLike(obj, fn) {
if (Array.isArray(obj)) {
for (let i = 0; i < obj.length; i++) {
fn(obj[i]);
}
} else {
const iterator2 = obj[Symbol.iterator]();
let item;
while (!(item = iterator2.next()).done) {
fn(item.value);
}
}
}
function isJsObject(o) {
return o !== null && (typeof o === "function" || typeof o === "object");
}
function devModeEqual(a, b) {
const isListLikeIterableA = isListLikeIterable(a);
const isListLikeIterableB = isListLikeIterable(b);
if (isListLikeIterableA && isListLikeIterableB) {
return areIterablesEqual(a, b, devModeEqual);
} else {
const isAObject = a && (typeof a === "object" || typeof a === "function");
const isBObject = b && (typeof b === "object" || typeof b === "function");
if (!isListLikeIterableA && isAObject && !isListLikeIterableB && isBObject) {
return true;
} else {
return Object.is(a, b);
}
}
}
function updateBinding(lView, bindingIndex, value) {
return lView[bindingIndex] = value;
}
function getBinding(lView, bindingIndex) {
ngDevMode && assertIndexInRange(lView, bindingIndex);
ngDevMode && assertNotSame(lView[bindingIndex], NO_CHANGE, "Stored value should never be NO_CHANGE.");
return lView[bindingIndex];
}
function bindingUpdated(lView, bindingIndex, value) {
ngDevMode && assertLessThan(bindingIndex, lView.length, `Slot should have been initialized to NO_CHANGE`);
if (value === NO_CHANGE) {
return false;
}
const oldValue = lView[bindingIndex];
if (Object.is(oldValue, value)) {
return false;
} else {
if (ngDevMode && isInCheckNoChangesMode()) {
const oldValueToCompare = oldValue !== NO_CHANGE ? oldValue : void 0;
if (!devModeEqual(oldValueToCompare, value)) {
const details = getExpressionChangedErrorDetails(lView, bindingIndex, oldValueToCompare, value);
throwErrorIfNoChangesMode(oldValue === NO_CHANGE, details.oldValue, details.newValue, details.propName, lView);
}
return false;
}
lView[bindingIndex] = value;
return true;
}
}
function bindingUpdated2(lView, bindingIndex, exp1, exp2) {
const different = bindingUpdated(lView, bindingIndex, exp1);
return bindingUpdated(lView, bindingIndex + 1, exp2) || different;
}
function bindingUpdated3(lView, bindingIndex, exp1, exp2, exp3) {
const different = bindingUpdated2(lView, bindingIndex, exp1, exp2);
return bindingUpdated(lView, bindingIndex + 2, exp3) || different;
}
function bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4) {
const different = bindingUpdated2(lView, bindingIndex, exp1, exp2);
return bindingUpdated2(lView, bindingIndex + 2, exp3, exp4) || different;
}
function wrapListener(tNode, lView, listenerFn) {
return function wrapListenerIn_markDirtyAndPreventDefault(event) {
const startView = isComponentHost(tNode) ? getComponentLViewByIndex(tNode.index, lView) : lView;
markViewDirty(
startView,
5
/* NotificationSource.Listener */
);
const context2 = lView[CONTEXT];
let result = executeListenerWithErrorHandling(lView, context2, listenerFn, event);
let nextListenerFn = wrapListenerIn_markDirtyAndPreventDefault.__ngNextListenerFn__;
while (nextListenerFn) {
result = executeListenerWithErrorHandling(lView, context2, nextListenerFn, event) && result;
nextListenerFn = nextListenerFn.__ngNextListenerFn__;
}
return result;
};
}
function executeListenerWithErrorHandling(lView, context2, listenerFn, e) {
const prevConsumer = setActiveConsumer(null);
try {
profiler(6, context2, listenerFn);
return listenerFn(e) !== false;
} catch (error2) {
handleUncaughtError(lView, error2);
return false;
} finally {
profiler(7, context2, listenerFn);
setActiveConsumer(prevConsumer);
}
}
function listenToDomEvent(tNode, tView, lView, eventTargetResolver, renderer, eventName, originalListener, wrappedListener) {
ngDevMode && assertNotSame(wrappedListener, originalListener, "Expected wrapped and original listeners to be different.");
const isTNodeDirectiveHost = isDirectiveHost(tNode);
let hasCoalesced = false;
let existingListener = null;
if (!eventTargetResolver && isTNodeDirectiveHost) {
existingListener = findExistingListener(tView, lView, eventName, tNode.index);
}
if (existingListener !== null) {
const lastListenerFn = existingListener.__ngLastListenerFn__ || existingListener;
lastListenerFn.__ngNextListenerFn__ = originalListener;
existingListener.__ngLastListenerFn__ = originalListener;
hasCoalesced = true;
} else {
const native = getNativeByTNode(tNode, lView);
const target = eventTargetResolver ? eventTargetResolver(native) : native;
stashEventListenerImpl(lView, target, eventName, wrappedListener);
const cleanupFn = renderer.listen(target, eventName, wrappedListener);
if (!isAnimationEventType(eventName)) {
const idxOrTargetGetter = eventTargetResolver ? (_lView) => eventTargetResolver(unwrapRNode(_lView[tNode.index])) : tNode.index;
storeListenerCleanup(idxOrTargetGetter, tView, lView, eventName, wrappedListener, cleanupFn, false);
}
}
return hasCoalesced;
}
function isAnimationEventType(eventName) {
return eventName.startsWith("animation") || eventName.startsWith("transition");
}
function findExistingListener(tView, lView, eventName, tNodeIndex) {
const tCleanup = tView.cleanup;
if (tCleanup != null) {
for (let i = 0; i < tCleanup.length - 1; i += 2) {
const cleanupEventName = tCleanup[i];
if (cleanupEventName === eventName && tCleanup[i + 1] === tNodeIndex) {
const lCleanup = lView[CLEANUP];
const listenerIdxInLCleanup = tCleanup[i + 2];
return lCleanup && lCleanup.length > listenerIdxInLCleanup ? lCleanup[listenerIdxInLCleanup] : null;
}
if (typeof cleanupEventName === "string") {
i += 2;
}
}
}
return null;
}
function storeListenerCleanup(indexOrTargetGetter, tView, lView, eventName, listenerFn, cleanup, isOutput) {
const tCleanup = tView.firstCreatePass ? getOrCreateTViewCleanup(tView) : null;
const lCleanup = getOrCreateLViewCleanup(lView);
const index = lCleanup.length;
lCleanup.push(listenerFn, cleanup);
tCleanup && tCleanup.push(eventName, indexOrTargetGetter, index, (index + 1) * (isOutput ? -1 : 1));
}
function listenToOutput(tNode, lView, directiveIndex, lookupName, eventName, listenerFn) {
ngDevMode && assertIndexInRange(lView, directiveIndex);
const instance = lView[directiveIndex];
const tView = lView[TVIEW];
const def = tView.data[directiveIndex];
const propertyName = def.outputs[lookupName];
const output2 = instance[propertyName];
if (ngDevMode && !isOutputSubscribable(output2)) {
throw new Error(`@Output ${propertyName} not initialized in '${instance.constructor.name}'.`);
}
const subscription = output2.subscribe(listenerFn);
storeListenerCleanup(tNode.index, tView, lView, eventName, listenerFn, subscription, true);
}
function isOutputSubscribable(value) {
return value != null && typeof value.subscribe === "function";
}
var BINDING = /* @__PURE__ */ Symbol("BINDING");
var ComponentFactoryResolver2 = class extends ComponentFactoryResolver$1 {
ngModule;
/**
* @param ngModule The NgModuleRef to which all resolved factories are bound.
*/
constructor(ngModule) {
super();
this.ngModule = ngModule;
}
resolveComponentFactory(component) {
ngDevMode && assertComponentType(component);
const componentDef = getComponentDef(component);
return new ComponentFactory2(componentDef, this.ngModule);
}
};
function toInputRefArray(map3) {
return Object.keys(map3).map((name) => {
const [propName, flags, transform] = map3[name];
const inputData = {
propName,
templateName: name,
isSignal: (flags & InputFlags.SignalBased) !== 0
};
if (transform) {
inputData.transform = transform;
}
return inputData;
});
}
function toOutputRefArray(map3) {
return Object.keys(map3).map((name) => ({ propName: map3[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);
let ngReflect = false;
if (typeof ngDevMode === "undefined" || ngDevMode) {
ngReflect = rootLViewInjector.get(NG_REFLECT_ATTRS_FLAG, NG_REFLECT_ATTRS_FLAG_DEFAULT);
}
return {
rendererFactory,
sanitizer,
changeDetectionScheduler,
ngReflect
};
}
function createHostElement(componentDef, renderer) {
const tagName = inferTagNameFromDefinition(componentDef);
const namespace = tagName === "svg" ? SVG_NAMESPACE : tagName === "math" ? MATH_ML_NAMESPACE : null;
return createElementNode(renderer, tagName, namespace);
}
function inferTagNameFromDefinition(componentDef) {
return (componentDef.selectors[0][0] || "div").toLowerCase();
}
var ComponentFactory2 = class extends ComponentFactory$1 {
componentDef;
ngModule;
selector;
componentType;
ngContentSelectors;
isBoundToModule;
cachedInputs = null;
cachedOutputs = null;
get inputs() {
this.cachedInputs ??= toInputRefArray(this.componentDef.inputs);
return this.cachedInputs;
}
get outputs() {
this.cachedOutputs ??= toOutputRefArray(this.componentDef.outputs);
return this.cachedOutputs;
}
/**
* @param componentDef The component definition.
* @param ngModule The NgModuleRef to which the factory is bound.
*/
constructor(componentDef, ngModule) {
super();
this.componentDef = componentDef;
this.ngModule = ngModule;
this.componentType = componentDef.type;
this.selector = stringifyCSSSelectorList(componentDef.selectors);
this.ngContentSelectors = componentDef.ngContentSelectors ?? [];
this.isBoundToModule = !!ngModule;
}
create(injector, projectableNodes, rootSelectorOrNode, environmentInjector, directives, componentBindings) {
profiler(
22
/* ProfilerEvent.DynamicComponentStart */
);
const prevConsumer = setActiveConsumer(null);
try {
const cmpDef = this.componentDef;
ngDevMode && verifyNotAnOrphanComponent(cmpDef);
const rootTView = createRootTView(rootSelectorOrNode, cmpDef, componentBindings, directives);
const rootViewInjector = createRootViewInjector(cmpDef, environmentInjector || this.ngModule, injector);
const environment2 = createRootLViewEnvironment(rootViewInjector);
const hostRenderer = environment2.rendererFactory.createRenderer(null, cmpDef);
const hostElement = rootSelectorOrNode ? locateHostElement(hostRenderer, rootSelectorOrNode, cmpDef.encapsulation, rootViewInjector) : createHostElement(cmpDef, hostRenderer);
const hasInputBindings = componentBindings?.some(isInputBinding) || directives?.some((d) => typeof d !== "function" && d.bindings.some(isInputBinding));
const rootLView = createLView(null, rootTView, null, 512 | getInitialLViewFlagsFromDef(cmpDef), null, null, environment2, hostRenderer, rootViewInjector, null, retrieveHydrationInfo(
hostElement,
rootViewInjector,
true
/* isRootView */
));
rootLView[HEADER_OFFSET] = hostElement;
enterView(rootLView);
let componentView = null;
try {
const hostTNode = directiveHostFirstCreatePass(HEADER_OFFSET, rootLView, 2, "#host", () => rootTView.directiveRegistry, true, 0);
setupStaticAttributes(hostRenderer, hostElement, hostTNode);
attachPatchData(hostElement, rootLView);
createDirectivesInstances(rootTView, rootLView, hostTNode);
executeContentQueries(rootTView, hostTNode, rootLView);
directiveHostEndFirstCreatePass(rootTView, hostTNode);
if (projectableNodes !== void 0) {
projectNodes(hostTNode, this.ngContentSelectors, projectableNodes);
}
componentView = getComponentLViewByIndex(hostTNode.index, rootLView);
rootLView[CONTEXT] = componentView[CONTEXT];
renderView(rootTView, rootLView, null);
} catch (e) {
if (componentView !== null) {
unregisterLView(componentView);
}
unregisterLView(rootLView);
throw e;
} finally {
profiler(
23
/* ProfilerEvent.DynamicComponentEnd */
);
leaveView();
}
return new ComponentRef2(this.componentType, rootLView, !!hasInputBindings);
} finally {
setActiveConsumer(prevConsumer);
}
}
};
function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
const tAttributes = rootSelectorOrNode ? ["ng-version", "20.3.6"] : (
// Extract attributes and classes from the first selector only to match VE behavior.
extractAttrsAndClassesFromSelector(componentDef.selectors[0])
);
let creationBindings = null;
let updateBindings = null;
let varsToAllocate = 0;
if (componentBindings) {
for (const binding of componentBindings) {
varsToAllocate += binding[BINDING].requiredVars;
if (binding.create) {
binding.targetIdx = 0;
(creationBindings ??= []).push(binding);
}
if (binding.update) {
binding.targetIdx = 0;
(updateBindings ??= []).push(binding);
}
}
}
if (directives) {
for (let i = 0; i < directives.length; i++) {
const directive = directives[i];
if (typeof directive !== "function") {
for (const binding of directive.bindings) {
varsToAllocate += binding[BINDING].requiredVars;
const targetDirectiveIdx = i + 1;
if (binding.create) {
binding.targetIdx = targetDirectiveIdx;
(creationBindings ??= []).push(binding);
}
if (binding.update) {
binding.targetIdx = targetDirectiveIdx;
(updateBindings ??= []).push(binding);
}
}
}
}
}
const directivesToApply = [componentDef];
if (directives) {
for (const directive of directives) {
const directiveType = typeof directive === "function" ? directive : directive.type;
const directiveDef = ngDevMode ? getDirectiveDefOrThrow(directiveType) : getDirectiveDef(directiveType);
if (ngDevMode && !directiveDef.standalone) {
throw new RuntimeError(907, `The ${stringifyForError(directiveType)} directive must be standalone in order to be applied to a dynamically-created component.`);
}
directivesToApply.push(directiveDef);
}
}
const rootTView = createTView(0, null, getRootTViewTemplate(creationBindings, updateBindings), 1, varsToAllocate, directivesToApply, null, null, null, [tAttributes], null);
return rootTView;
}
function getRootTViewTemplate(creationBindings, updateBindings) {
if (!creationBindings && !updateBindings) {
return null;
}
return (flags) => {
if (flags & 1 && creationBindings) {
for (const binding of creationBindings) {
binding.create();
}
}
if (flags & 2 && updateBindings) {
for (const binding of updateBindings) {
binding.update();
}
}
};
}
function isInputBinding( ��binding) {
const kind = binding[BINDING].kind;
return kind === "input" || kind === "twoWay";
}
var ComponentRef2 = class extends ComponentRef$1 {
_rootLView;
_hasInputBindings;
instance;
hostView;
changeDetectorRef;
componentType;
location;
previousInputValues = null;
_tNode;
constructor(componentType, _rootLView, _hasInputBindings) {
super();
this._rootLView = _rootLView;
this._hasInputBindings = _hasInputBindings;
this._tNode = getTNode(_rootLView[TVIEW], HEADER_OFFSET);
this.location = createElementRef(this._tNode, _rootLView);
this.instance = getComponentLViewByIndex(this._tNode.index, _rootLView)[CONTEXT];
this.hostView = this.changeDetectorRef = new ViewRef(
_rootLView,
void 0
/* _cdRefInjectingView */
);
this.componentType = componentType;
}
setInput(name, value) {
if (this._hasInputBindings && ngDevMode) {
throw new RuntimeError(317, "Cannot call `setInput` on a component that is using the `inputBinding` or `twoWayBinding` functions.");
}
const tNode = this._tNode;
this.previousInputValues ??= /* @__PURE__ */ new Map();
if (this.previousInputValues.has(name) && Object.is(this.previousInputValues.get(name), value)) {
return;
}
const lView = this._rootLView;
const hasSetInput = setAllInputsForProperty(tNode, lView[TVIEW], lView, name, value);
this.previousInputValues.set(name, value);
const childComponentLView = getComponentLViewByIndex(tNode.index, lView);
markViewDirty(
childComponentLView,
1
/* NotificationSource.SetInput */
);
if (ngDevMode && !hasSetInput) {
const cmpNameForError = stringifyForError(this.componentType);
let message = `Can't set value of the '${name}' input on the '${cmpNameForError}' component. `;
message += `Make sure that the '${name}' property is declared as an input using the input() or model() function or the @Input() decorator.`;
reportUnknownPropertyError(message);
}
}
get injector() {
return new NodeInjector(this._tNode, this._rootLView);
}
destroy() {
this.hostView.destroy();
}
onDestroy(callback) {
this.hostView.onDestroy(callback);
}
};
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);
}
}
var ViewContainerRef = class {
/**
* @internal
* @nocollapse
*/
static __NG_ELEMENT_ID__ = injectViewContainerRef;
};
function injectViewContainerRef() {
const previousTNode = getCurrentTNode();
return createContainerRef(previousTNode, getLView());
}
var VE_ViewContainerRef = ViewContainerRef;
var R3ViewContainerRef = class ViewContainerRef2 extends VE_ViewContainerRef {
_lContainer;
_hostTNode;
_hostLView;
constructor(_lContainer, _hostTNode, _hostLView) {
super();
this._lContainer = _lContainer;
this._hostTNode = _hostTNode;
this._hostLView = _hostLView;
}
get element() {
return createElementRef(this._hostTNode, this._hostLView);
}
get injector() {
return new NodeInjector(this._hostTNode, this._hostLView);
}
/** @deprecated No replacement */
get parentInjector() {
const parentLocation = getParentInjectorLocation(this._hostTNode, this._hostLView);
if (hasParentInjector(parentLocation)) {
const parentView = getParentInjectorView(parentLocation, this._hostLView);
const injectorIndex = getParentInjectorIndex(parentLocation);
ngDevMode && assertNodeInjector(parentView, injectorIndex);
const parentTNode = parentView[TVIEW].data[
injectorIndex + 8
/* NodeInjectorOffset.TNODE */
];
return new NodeInjector(parentTNode, parentView);
} else {
return new NodeInjector(null, this._hostLView);
}
}
clear() {
while (this.length > 0) {
this.remove(this.length - 1);
}
}
get(index) {
const viewRefs = getViewRefs(this._lContainer);
return viewRefs !== null && viewRefs[index] || null;
}
get length() {
return this._lContainer.length - CONTAINER_HEADER_OFFSET;
}
createEmbeddedView(templateRef, context2, indexOrOptions) {
let index;
let injector;
if (typeof indexOrOptions === "number") {
index = indexOrOptions;
} else if (indexOrOptions != null) {
index = indexOrOptions.index;
injector = indexOrOptions.injector;
}
const dehydratedView = findMatchingDehydratedView(this._lContainer, templateRef.ssrId);
const viewRef = templateRef.createEmbeddedViewImpl(context2 || {}, injector, dehydratedView);
this.insertImpl(viewRef, index, shouldAddViewToDom(this._hostTNode, dehydratedView));
return viewRef;
}
createComponent(componentFactoryOrType, indexOrOptions, injector, projectableNodes, environmentInjector, directives, bindings) {
const isComponentFactory = componentFactoryOrType && !isType(componentFactoryOrType);
let index;
if (isComponentFactory) {
if (ngDevMode) {
assertEqual(typeof indexOrOptions !== "object", true, "It looks like Component factory was provided as the first argument and an options object as the second argument. This combination of arguments is incompatible. You can either change the first argument to provide Component type or change the second argument to be a number (representing an index at which to insert the new component's host view into this container)");
}
index = indexOrOptions;
} else {
if (ngDevMode) {
assertDefined(getComponentDef(componentFactoryOrType), `Provided Component class doesn't contain Component definition. Please check whether provided class has @Component decorator.`);
assertEqual(typeof indexOrOptions !== "number", true, "It looks like Component type was provided as the first argument and a number (representing an index at which to insert the new component's host view into this container as the second argument. This combination of arguments is incompatible. Please use an object as the second argument instead.");
}
const options = indexOrOptions || {};
if (ngDevMode && options.environmentInjector && options.ngModuleRef) {
throwError2(`Cannot pass both environmentInjector and ngModuleRef options to createComponent().`);
}
index = options.index;
injector = options.injector;
projectableNodes = options.projectableNodes;
environmentInjector = options.environmentInjector || options.ngModuleRef;
directives = options.directives;
bindings = options.bindings;
}
const componentFactory = isComponentFactory ? componentFactoryOrType : new ComponentFactory2(getComponentDef(componentFactoryOrType));
const contextInjector = injector || this.parentInjector;
if (!environmentInjector && componentFactory.ngModule == null) {
const _injector = isComponentFactory ? contextInjector : this.parentInjector;
const result = _injector.get(EnvironmentInjector, null);
if (result) {
environmentInjector = result;
}
}
const componentDef = getComponentDef(componentFactory.componentType ?? {});
const dehydratedView = findMatchingDehydratedView(this._lContainer, componentDef?.id ?? null);
const rNode = dehydratedView?.firstChild ?? null;
const componentRef = componentFactory.create(contextInjector, projectableNodes, rNode, environmentInjector, directives, bindings);
this.insertImpl(componentRef.hostView, index, shouldAddViewToDom(this._hostTNode, dehydratedView));
return componentRef;
}
insert(viewRef, index) {
return this.insertImpl(viewRef, index, true);
}
insertImpl(viewRef, index, addToDOM) {
const lView = viewRef._lView;
if (ngDevMode && viewRef.destroyed) {
throw new Error("Cannot insert a destroyed View in a ViewContainer!");
}
if (viewAttachedToContainer(lView)) {
const prevIdx = this.indexOf(viewRef);
if (prevIdx !== -1) {
this.detach(prevIdx);
} else {
const prevLContainer = lView[PARENT];
ngDevMode && assertEqual(isLContainer(prevLContainer), true, "An attached view should have its PARENT point to a container.");
const prevVCRef = new R3ViewContainerRef(prevLContainer, prevLContainer[T_HOST], prevLContainer[PARENT]);
prevVCRef.detach(prevVCRef.indexOf(viewRef));
}
}
const adjustedIdx = this._adjustIndex(index);
const lContainer = this._lContainer;
addLViewToLContainer(lContainer, lView, adjustedIdx, addToDOM);
viewRef.attachToViewContainerRef();
addToArray(getOrCreateViewRefs(lContainer), adjustedIdx, viewRef);
return viewRef;
}
move(viewRef, newIndex) {
if (ngDevMode && viewRef.destroyed) {
throw new Error("Cannot move a destroyed View in a ViewContainer!");
}
return this.insert(viewRef, newIndex);
}
indexOf(viewRef) {
const viewRefsArr = getViewRefs(this._lContainer);
return viewRefsArr !== null ? viewRefsArr.indexOf(viewRef) : -1;
}
remove(index) {
const adjustedIdx = this._adjustIndex(index, -1);
const detachedView = detachView(this._lContainer, adjustedIdx);
if (detachedView) {
removeFromArray(getOrCreateViewRefs(this._lContainer), adjustedIdx);
destroyLView(detachedView[TVIEW], detachedView);
}
}
detach(index) {
const adjustedIdx = this._adjustIndex(index, -1);
const view = detachView(this._lContainer, adjustedIdx);
const wasDetached = view && removeFromArray(getOrCreateViewRefs(this._lContainer), adjustedIdx) != null;
return wasDetached ? new ViewRef(view) : null;
}
_adjustIndex(index, shift = 0) {
if (index == null) {
return this.length + shift;
}
if (ngDevMode) {
assertGreaterThan(index, -1, `ViewRef index must be positive, got ${index}`);
assertLessThan(index, this.length + 1 + shift, "index");
}
return index;
}
};
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];
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;
}
var _locateOrCreateAnchorNode = createAnchorNode;
var _populateDehydratedViewsInLContainer = () => false;
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;
}
var LQuery_ = class _LQuery_ {
queryList;
matches = null;
constructor(queryList) {
this.queryList = queryList;
}
clone() {
return new _LQuery_(this.queryList);
}
setDirty() {
this.queryList.setDirty();
}
};
var LQueries_ = class _LQueries_ {
queries;
constructor(queries = []) {
this.queries = queries;
}
createEmbeddedView(tView) {
const tQueries = tView.queries;
if (tQueries !== null) {
const noOfInheritedQueries = tView.contentQueries !== null ? tView.contentQueries[0] : tQueries.length;
const viewLQueries = [];
for (let i = 0; i < noOfInheritedQueries; i++) {
const tQuery = tQueries.getByIndex(i);
const parentLQuery = this.queries[tQuery.indexInDeclarationView];
viewLQueries.push(parentLQuery.clone());
}
return new _LQueries_(viewLQueries);
}
return null;
}
insertView(tView) {
this.dirtyQueriesWithMatches(tView);
}
detachView(tView) {
this.dirtyQueriesWithMatches(tView);
}
finishViewCreation(tView) {
this.dirtyQueriesWithMatches(tView);
}
dirtyQueriesWithMatches(tView) {
for (let i = 0; i < this.queries.length; i++) {
if (getTQuery(tView, i).matches !== null) {
this.queries[i].setDirty();
}
}
}
};
var TQueryMetadata_ = class {
flags;
read;
predicate;
constructor(predicate, flags, read = null) {
this.flags = flags;
this.read = read;
if (typeof predicate === "string") {
this.predicate = splitQueryMultiSelectors(predicate);
} else {
this.predicate = predicate;
}
}
};
var TQueries_ = class _TQueries_ {
queries;
constructor(queries = []) {
this.queries = queries;
}
elementStart(tView, tNode) {
ngDevMode && assertFirstCreatePass(tView, "Queries should collect results on the first template pass only");
for (let i = 0; i < this.queries.length; i++) {
this.queries[i].elementStart(tView, tNode);
}
}
elementEnd(tNode) {
for (let i = 0; i < this.queries.length; i++) {
this.queries[i].elementEnd(tNode);
}
}
embeddedTView(tNode) {
let queriesForTemplateRef = null;
for (let i = 0; i < this.length; i++) {
const childQueryIndex = queriesForTemplateRef !== null ? queriesForTemplateRef.length : 0;
const tqueryClone = this.getByIndex(i).embeddedTView(tNode, childQueryIndex);
if (tqueryClone) {
tqueryClone.indexInDeclarationView = i;
if (queriesForTemplateRef !== null) {
queriesForTemplateRef.push(tqueryClone);
} else {
queriesForTemplateRef = [tqueryClone];
}
}
}
return queriesForTemplateRef !== null ? new _TQueries_(queriesForTemplateRef) : null;
}
template(tView, tNode) {
ngDevMode && assertFirstCreatePass(tView, "Queries should collect results on the first template pass only");
for (let i = 0; i < this.queries.length; i++) {
this.queries[i].template(tView, tNode);
}
}
getByIndex(index) {
ngDevMode && assertIndexInRange(this.queries, index);
return this.queries[index];
}
get length() {
return this.queries.length;
}
track(tquery) {
this.queries.push(tquery);
}
};
var TQuery_ = class _TQuery_ {
metadata;
matches = null;
indexInDeclarationView = -1;
crossesNgTemplate = false;
/**
* A node index on which a query was declared (-1 for view queries and ones inherited from the
* declaration template). We use this index (alongside with _appliesToNextNode flag) to know
* when to apply content queries to elements in a template.
*/
_declarationNodeIndex;
/**
* A flag indicating if a given query still applies to nodes it is crossing. We use this flag
* (alongside with _declarationNodeIndex) to know when to stop applying content queries to
* elements in a template.
*/
_appliesToNextNode = true;
constructor(metadata, nodeIndex = -1) {
this.metadata = metadata;
this._declarationNodeIndex = nodeIndex;
}
elementStart(tView, tNode) {
if (this.isApplyingToNode(tNode)) {
this.matchTNode(tView, tNode);
}
}
elementEnd(tNode) {
if (this._declarationNodeIndex === tNode.index) {
this._appliesToNextNode = false;
}
}
template(tView, tNode) {
this.elementStart(tView, tNode);
}
embeddedTView(tNode, childQueryIndex) {
if (this.isApplyingToNode(tNode)) {
this.crossesNgTemplate = true;
this.addMatch(-tNode.index, childQueryIndex);
return new _TQuery_(this.metadata);
}
return null;
}
isApplyingToNode(tNode) {
if (this._appliesToNextNode && (this.metadata.flags & 1) !== 1) {
const declarationNodeIdx = this._declarationNodeIndex;
let parent = tNode.parent;
while (parent !== null && parent.type & 8 && parent.index !== declarationNodeIdx) {
parent = parent.parent;
}
return declarationNodeIdx === (parent !== null ? parent.index : -1);
}
return this._appliesToNextNode;
}
matchTNode(tView, tNode) {
const predicate = this.metadata.predicate;
if (Array.isArray(predicate)) {
for (let i = 0; i < predicate.length; i++) {
const name = predicate[i];
this.matchTNodeWithReadOption(tView, tNode, getIdxOfMatchingSelector(tNode, name));
this.matchTNodeWithReadOption(tView, tNode, locateDirectiveOrProvider(tNode, tView, name, false, false));
}
} else {
if (predicate === TemplateRef) {
if (tNode.type & 4) {
this.matchTNodeWithReadOption(tView, tNode, -1);
}
} else {
this.matchTNodeWithReadOption(tView, tNode, locateDirectiveOrProvider(tNode, tView, predicate, false, false));
}
}
}
matchTNodeWithReadOption(tView, tNode, nodeMatchIdx) {
if (nodeMatchIdx !== null) {
const read = this.metadata.read;
if (read !== null) {
if (read === ElementRef || read === ViewContainerRef || read === TemplateRef && tNode.type & 4) {
this.addMatch(tNode.index, -2);
} else {
const directiveOrProviderIdx = locateDirectiveOrProvider(tNode, tView, read, false, false);
if (directiveOrProviderIdx !== null) {
this.addMatch(tNode.index, directiveOrProviderIdx);
}
}
} else {
this.addMatch(tNode.index, nodeMatchIdx);
}
}
}
addMatch(tNodeIdx, matchIdx) {
if (this.matches === null) {
this.matches = [tNodeIdx, matchIdx];
} else {
this.matches.push(tNodeIdx, matchIdx);
}
}
};
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 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((res) => unwrapResponse(url, res)));
}
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((style2) => {
styles[styleOffset + index] = style2;
styleUrls.splice(styleUrls.indexOf(styleUrl), 1);
if (styleUrls.length == 0) {
component.styleUrls = void 0;
}
}));
});
} else if (component.styleUrl) {
promises.push(cachedResourceResolve(component.styleUrl).then((style2) => {
styles.push(style2);
component.styleUrl = void 0;
}));
}
const fullyResolved = Promise.all(promises).then(() => componentDefResolved(type));
componentResolved.push(fullyResolved);
});
clearResolutionOfComponentResourcesQueue();
return Promise.all(componentResolved).then(() => void 0);
}
var componentResourceResolutionQueue = /* @__PURE__ */ new Map();
var componentDefPendingResolution = /* @__PURE__ */ new Set();
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(url, response) {
if (typeof response === "string") {
return response;
}
if (response.status !== void 0 && response.status !== 200) {
return Promise.reject(new RuntimeError(918, ngDevMode && `Could not load resource: ${url}. Response status: ${response.status}`));
}
return response.text();
}
function componentDefResolved(type) {
componentDefPendingResolution.delete(type);
}
var modules = /* @__PURE__ */ new Map();
var checkForDuplicateNgModules = true;
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 <iframe>${getTemplateLocationDetails(lView)}. For security reasons, the \`${attrName}\` can be set on an <iframe> as a static attribute only.
To fix this, switch the \`${attrName}\` binding to a static attribute in a template or in host bindings section.`;
throw new RuntimeError(-910, errorMessage);
}
return attrValue;
}
var NgModuleRef$1 = class NgModuleRef {
};
var NgModuleFactory$1 = class NgModuleFactory {
};
function createNgModule(ngModule, parentInjector) {
return new NgModuleRef2(ngModule, parentInjector ?? null, []);
}
var NgModuleRef2 = class extends NgModuleRef$1 {
ngModuleType;
_parent;
// tslint:disable-next-line:require-internal-with-underscore
_bootstrapComponents = [];
_r3Injector;
instance;
destroyCbs = [];
// When bootstrapping a module we have a dependency graph that looks like this:
// ApplicationRef -> ComponentFactoryResolver -> NgModuleRef. The problem is that if the
// module being resolved tries to inject the ComponentFactoryResolver, it'll create a
// circular dependency which will result in a runtime error, because the injector doesn't
// exist yet. We work around the issue by creating the ComponentFactoryResolver ourselves
// and providing it, rather than letting the injector resolve it.
componentFactoryResolver = new ComponentFactoryResolver2(this);
constructor(ngModuleType, _parent, additionalProviders, runInjectorInitializers = true) {
super();
this.ngModuleType = ngModuleType;
this._parent = _parent;
const ngModuleDef = getNgModuleDef(ngModuleType);
ngDevMode && assertDefined(ngModuleDef, `NgModule '${stringify(ngModuleType)}' is not a subtype of 'NgModuleType'.`);
this._bootstrapComponents = maybeUnwrapFn(ngModuleDef.bootstrap);
this._r3Injector = createInjectorWithoutInjectorInstances(ngModuleType, _parent, [
{ provide: NgModuleRef$1, useValue: this },
{
provide: ComponentFactoryResolver$1,
useValue: this.componentFactoryResolver
},
...additio ��nalProviders
], stringify(ngModuleType), /* @__PURE__ */ new Set(["environment"]));
if (runInjectorInitializers) {
this.resolveInjectorInitializers();
}
}
resolveInjectorInitializers() {
this._r3Injector.resolveInjectorInitializers();
this.instance = this._r3Injector.get(this.ngModuleType);
}
get injector() {
return this._r3Injector;
}
destroy() {
ngDevMode && assertDefined(this.destroyCbs, "NgModule already destroyed");
const injector = this._r3Injector;
!injector.destroyed && injector.destroy();
this.destroyCbs.forEach((fn) => fn());
this.destroyCbs = null;
}
onDestroy(callback) {
ngDevMode && assertDefined(this.destroyCbs, "NgModule already destroyed");
this.destroyCbs.push(callback);
}
};
var NgModuleFactory2 = class extends NgModuleFactory$1 {
moduleType;
constructor(moduleType) {
super();
this.moduleType = moduleType;
}
create(parentInjector) {
return new NgModuleRef2(this.moduleType, parentInjector, []);
}
};
function createNgModuleRefWithProviders(moduleType, parentInjector, additionalProviders) {
return new NgModuleRef2(moduleType, parentInjector, additionalProviders, false);
}
var EnvironmentNgModuleRefAdapter = class extends NgModuleRef$1 {
injector;
componentFactoryResolver = new ComponentFactoryResolver2(this);
instance = null;
constructor(config3) {
super();
const injector = new R3Injector([
...config3.providers,
{ provide: NgModuleRef$1, useValue: this },
{ provide: ComponentFactoryResolver$1, useValue: this.componentFactoryResolver }
], config3.parent || getNullInjector(), config3.debugName, /* @__PURE__ */ new Set(["environment"]));
this.injector = injector;
if (config3.runEnvironmentInitializers) {
injector.resolveInjectorInitializers();
}
}
destroy() {
this.injector.destroy();
}
onDestroy(callback) {
this.injector.onDestroy(callback);
}
};
function createEnvironmentInjector(providers, parent, debugName = null) {
const adapter = new EnvironmentNgModuleRefAdapter({
providers,
parent,
debugName,
runEnvironmentInitializers: true
});
return adapter.injector;
}
var StandaloneService = class _StandaloneService {
_injector;
cachedInjectors = /* @__PURE__ */ new Map();
constructor(_injector) {
this._injector = _injector;
}
getOrCreateStandaloneInjector(componentDef) {
if (!componentDef.standalone) {
return null;
}
if (!this.cachedInjectors.has(componentDef)) {
const providers = internalImportProvidersFrom(false, componentDef.type);
const standaloneInjector = providers.length > 0 ? createEnvironmentInjector([providers], this._injector, `Standalone[${componentDef.type.name}]`) : null;
this.cachedInjectors.set(componentDef, standaloneInjector);
}
return this.cachedInjectors.get(componentDef);
}
ngOnDestroy() {
try {
for (const injector of this.cachedInjectors.values()) {
if (injector !== null) {
injector.destroy();
}
}
} finally {
this.cachedInjectors.clear();
}
}
/** @nocollapse */
static \u0275prov = (
/** @pureOrBreakMyCode */
/* @__PURE__ */ \u0275\u0275defineInjectable({
token: _StandaloneService,
providedIn: "environment",
factory: () => new _StandaloneService(\u0275\u0275inject(EnvironmentInjector))
})
);
};
function \u0275\u0275defineComponent(componentDefinition) {
return noSideEffects(() => {
(typeof ngDevMode === "undefined" || ngDevMode) && initNgDevMode();
const baseDef = getNgDirectiveDef(componentDefinition);
const def = __spreadProps(__spreadValues({}, baseDef), {
decls: componentDefinition.decls,
vars: componentDefinition.vars,
template: componentDefinition.template,
consts: componentDefinition.consts || null,
ngContentSelectors: componentDefinition.ngContentSelectors,
onPush: componentDefinition.changeDetection === ChangeDetectionStrategy.OnPush,
directiveDefs: null,
// assigned in noSideEffects
pipeDefs: null,
// assigned in noSideEffects
dependencies: baseDef.standalone && componentDefinition.dependencies || null,
getStandaloneInjector: baseDef.standalone ? (parentInjector) => {
return parentInjector.get(StandaloneService).getOrCreateStandaloneInjector(def);
} : null,
getExternalStyles: null,
signals: componentDefinition.signals ?? false,
data: componentDefinition.data || {},
encapsulation: componentDefinition.encapsulation || ViewEncapsulation.Emulated,
styles: componentDefinition.styles || EMPTY_ARRAY,
_: null,
schemas: componentDefinition.schemas || null,
tView: null,
id: ""
});
if (baseDef.standalone) {
performanceMarkFeature("NgStandalone");
}
initFeatures(def);
const dependencies = componentDefinition.dependencies;
def.directiveDefs = extractDefListOrFactory(dependencies, extractDirectiveDef);
def.pipeDefs = extractDefListOrFactory(dependencies, getPipeDef);
def.id = getComponentId(def);
return def;
});
}
function extractDirectiveDef(type) {
return getComponentDef(type) || getDirectiveDef(type);
}
function \u0275\u0275defineNgModule(def) {
return noSideEffects(() => {
const res = {
type: def.type,
bootstrap: def.bootstrap || EMPTY_ARRAY,
declarations: def.declarations || EMPTY_ARRAY,
imports: def.imports || EMPTY_ARRAY,
exports: def.exports || EMPTY_ARRAY,
transitiveCompileScopes: null,
schemas: def.schemas || null,
id: def.id || null
};
return res;
});
}
function parseAndConvertInputsForDefinition(obj, declaredInputs) {
if (obj == null)
return EMPTY_OBJ;
const newLookup = {};
for (const minifiedKey in obj) {
if (obj.hasOwnProperty(minifiedKey)) {
const value = obj[minifiedKey];
let publicName;
let declaredName;
let inputFlags;
let transform;
if (Array.isArray(value)) {
inputFlags = value[0];
publicName = value[1];
declaredName = value[2] ?? publicName;
transform = value[3] || null;
} else {
publicName = value;
declaredName = value;
inputFlags = InputFlags.None;
transform = null;
}
newLookup[publicName] = [minifiedKey, inputFlags, transform];
declaredInputs[publicName] = declaredName;
}
}
return newLookup;
}
function parseAndConvertOutputsForDefinition(obj) {
if (obj == null)
return EMPTY_OBJ;
const newLookup = {};
for (const minifiedKey in obj) {
if (obj.hasOwnProperty(minifiedKey)) {
newLookup[obj[minifiedKey]] = minifiedKey;
}
}
return newLookup;
}
function \u0275\u0275defineDirective(directiveDefinition) {
return noSideEffects(() => {
const def = getNgDirectiveDef(directiveDefinition);
initFeatures(def);
return def;
});
}
function \u0275\u0275definePipe(pipeDef) {
return {
type: pipeDef.type,
name: pipeDef.name,
factory: null,
pure: pipeDef.pure !== false,
standalone: pipeDef.standalone ?? true,
onDestroy: pipeDef.type.prototype.ngOnDestroy || null
};
}
function getNgDirectiveDef(directiveDefinition) {
const declaredInputs = {};
return {
type: directiveDefinition.type,
providersResolver: null,
factory: null,
hostBindings: directiveDefinition.hostBindings || null,
hostVars: directiveDefinition.hostVars || 0,
hostAttrs: directiveDefinition.hostAttrs || null,
contentQueries: directiveDefinition.contentQueries || null,
declaredInputs,
inputConfig: directiveDefinition.inputs || EMPTY_OBJ,
exportAs: directiveDefinition.exportAs || null,
standalone: directiveDefinition.standalone ?? true,
signals: directiveDefinition.signals === true,
selectors: directiveDefinition.selectors || EMPTY_ARRAY,
viewQuery: directiveDefinition.viewQuery || null,
features: directiveDefinition.features || null,
setInput: null,
resolveHostDirectives: null,
hostDirectives: null,
inputs: parseAndConvertInputsForDefinition(directiveDefinition.inputs, declaredInputs),
outputs: parseAndConvertOutputsForDefinition(directiveDefinition.outputs),
debugInfo: null
};
}
function initFeatures(definition) {
definition.features?.forEach((fn) => fn(definition));
}
function extractDefListOrFactory(dependencies, defExtractor) {
if (!dependencies) {
return null;
}
return () => {
const resolvedDependencies = typeof dependencies === "function" ? dependencies() : dependencies;
const result = [];
for (const dep of resolvedDependencies) {
const definition = defExtractor(dep);
if (definition !== null) {
result.push(definition);
}
}
return result;
};
}
var GENERATED_COMP_IDS = /* @__PURE__ */ new Map();
function getComponentId(componentDef) {
let hash = 0;
const componentDefConsts = typeof componentDef.consts === "function" ? "" : componentDef.consts;
const hashSelectors = [
componentDef.selectors,
componentDef.ngContentSelectors,
componentDef.hostVars,
componentDef.hostAttrs,
componentDefConsts,
componentDef.vars,
componentDef.decls,
componentDef.encapsulation,
componentDef.standalone,
componentDef.signals,
componentDef.exportAs,
JSON.stringify(componentDef.inputs),
JSON.stringify(componentDef.outputs),
// We cannot use 'componentDef.type.name' as the name of the symbol will change and will not
// match in the server and browser bundles.
Object.getOwnPropertyNames(componentDef.type.prototype),
!!componentDef.contentQueries,
!!componentDef.viewQuery
];
if (typeof ngDevMode === "undefined" || ngDevMode) {
for (const item of hashSelectors) {
assertNotEqual(typeof item, "function", "Internal error: attempting to use a function in component id computation logic.");
}
}
for (const char of hashSelectors.join("|")) {
hash = Math.imul(31, hash) + char.charCodeAt(0) << 0;
}
hash += 2147483647 + 1;
const compId = "c" + hash;
if ((typeof ngDevMode === "undefined" || ngDevMode) && true) {
if (GENERATED_COMP_IDS.has(compId)) {
const previousCompDefType = GENERATED_COMP_IDS.get(compId);
if (previousCompDefType !== componentDef.type) {
console.warn(formatRuntimeError(-912, `Component ID generation collision detected. Components '${previousCompDefType.name}' and '${componentDef.type.name}' with selector '${stringifyCSSSelectorList(componentDef.selectors)}' generated the same component ID. To fix this, you can change the selector of one of those components or add an extra host attribute to force a different ID.`));
}
} else {
GENERATED_COMP_IDS.set(compId, componentDef.type);
}
}
return compId;
}
function getSuperType(type) {
return Object.getPrototypeOf(type.prototype).constructor;
}
function \u0275\u0275InheritDefinitionFeature(definition) {
let superType = getSuperType(definition.type);
let shouldInheritFields = true;
const inheritanceChain = [definition];
while (superType) {
let superDef = void 0;
if (isComponentDef(definition)) {
superDef = superType.\u0275cmp || superType.\u0275dir;
} else {
if (superType.\u0275cmp) {
throw new RuntimeError(903, ngDevMode && `Directives cannot inherit Components. Directive ${stringifyForError(definition.type)} is attempting to extend component ${stringifyForError(superType)}`);
}
superDef = superType.\u0275dir;
}
if (superDef) {
if (shouldInheritFields) {
inheritanceChain.push(superDef);
const writeableDef = definition;
writeableDef.inputs = maybeUnwrapEmpty(definition.inputs);
writeableDef.declaredInputs = maybeUnwrapEmpty(definition.declaredInputs);
writeableDef.outputs = maybeUnwrapEmpty(definition.outputs);
const superHostBindings = superDef.hostBindings;
superHostBindings && inheritHostBindings(definition, superHostBindings);
const superViewQuery = superDef.viewQuery;
const superContentQueries = superDef.contentQueries;
superViewQuery && inheritViewQuery(definition, superViewQuery);
superContentQueries && inheritContentQueries(definition, superContentQueries);
mergeInputsWithTransforms(definition, superDef);
fillProperties(definition.outputs, superDef.outputs);
if (isComponentDef(superDef) && superDef.data.animation) {
const defData = definition.data;
defData.animation = (defData.animation || []).concat(superDef.data.animation);
}
}
const features = superDef.features;
if (features) {
for (let i = 0; i < features.length; i++) {
const feature = features[i];
if (feature && feature.ngInherit) {
feature(definition);
}
if (feature === \u0275\u0275InheritDefinitionFeature) {
shouldInheritFields = false;
}
}
}
}
superType = Object.getPrototypeOf(superType);
}
mergeHostAttrsAcrossInheritance(inheritanceChain);
}
function mergeInputsWithTransforms(target, source) {
for (const key in source.inputs) {
if (!source.inputs.hasOwnProperty(key)) {
continue;
}
if (target.inputs.hasOwnProperty(key)) {
continue;
}
const value = source.inputs[key];
if (value !== void 0) {
target.inputs[key] = value;
target.declaredInputs[key] = source.declaredInputs[key];
}
}
}
function mergeHostAttrsAcrossInheritance(inheritanceChain) {
let hostVars = 0;
let hostAttrs = null;
for (let i = inheritanceChain.length - 1; i >= 0; i--) {
const def = inheritanceChain[i];
def.hostVars = hostVars += def.hostVars;
def.hostAttrs = mergeHostAttrs(def.hostAttrs, hostAttrs = mergeHostAttrs(hostAttrs, def.hostAttrs));
}
}
function maybeUnwrapEmpty(value) {
if (value === EMPTY_OBJ) {
return {};
} else if (value === EMPTY_ARRAY) {
return [];
} else {
return value;
}
}
function inheritViewQuery(definition, superViewQuery) {
const prevViewQuery = definition.viewQuery;
if (prevViewQuery) {
definition.viewQuery = (rf, ctx) => {
superViewQuery(rf, ctx);
prevViewQuery(rf, ctx);
};
} else {
definition.viewQuery = superViewQuery;
}
}
function inheritContentQueries(definition, superContentQueries) {
const prevContentQueries = definition.contentQueries;
if (prevContentQueries) {
definition.contentQueries = (rf, ctx, directiveIndex) => {
superContentQueries(rf, ctx, directiveIndex);
prevContentQueries(rf, ctx, directiveIndex);
};
} else {
definition.contentQueries = superContentQueries;
}
}
function inheritHostBindings(definition, superHostBindings) {
const prevHostBindings = definition.hostBindings;
if (prevHostBindings) {
definition.hostBindings = (rf, ctx) => {
superHostBindings(rf, ctx);
prevHostBindings(rf, ctx);
};
} else {
definition.hostBindings = superHostBindings;
}
}
var COPY_DIRECTIVE_FIELDS = [
// The child class should use the providers of its parent.
"providersResolver"
// Not listed here are any fields which are handled by the `ɵɵInheritDefinitionFeature`, such
// as inputs, outputs, and host binding functions.
];
var COPY_COMPONENT_FIELDS = [
// The child class should use the template function of its parent, including all template
// semantics.
"template",
"decls",
"consts",
"vars",
"onPush",
"ngContentSelectors",
// The child class should use the CSS styles of its parent, including all styling semantics.
"styles",
"encapsulation",
// The child class should be checked by the runtime in the same way as its parent.
"schemas"
];
function \u0275\u0275CopyDefinitionFeature(definition) {
let superType = getSuperType(definition.type);
let superDef = void 0;
if (isComponentDef(definition)) {
superDef = superType.\u0275cmp;
} else {
superDef = superType.\u0275dir;
}
const defAny = definition;
for (const field of COPY_DIRECTIVE_FIELDS) {
defAny[field] = superDef[field];
}
if (isComponentDef(superDef)) {
for (const field of COPY_COMPONENT_FIELDS) {
defAny[field] = superDef[field];
}
}
}
function \u0275\u0275HostDirectivesFeature(rawHostDirectives) {
const feature = (definition) => {
const isEager = Array.isArray(rawHostDirectives);
if (definition.hostDirectives === null) {
definition.resolveHostDirectives = resolveHostDirectives;
definition.hostDirectives = isEager ? rawHostDirectives.map(createHostDirectiveDef) : [rawHostDirectives];
} else if (isEager) {
definition.hostDirectives.unshift(...rawHostDirectives.map(createHostDirectiveDef));
} else {
definition.hostDirectives.unshift(rawHostDirectives);
}
};
feature.ngInherit = true;
return feature;
}
function resolveHostDirectives(matches) {
const allDirectiveDefs = [];
let hasComponent = false;
let hostDirectiveDefs = null;
let hostDirectiveRanges = null;
for (let i = 0; i < matches.length; i++) {
const def = matches[i];
if (def.hostDirectives !== null) {
const start = allDirectiveDefs.length;
hostDirectiveDefs ??= /* @__PURE__ */ new Map();
hostDirectiveRanges ??= /* @__PURE__ */ new Map();
findHostDirectiveDefs(def, allDirectiveDefs, hostDirectiveDefs);
hostDirectiveRanges.set(def, [start, allDirectiveDefs.length - 1]);
}
if (i === 0 && isComponentDef(def)) {
hasComponent = true;
allDirectiveDefs.push(def);
}
}
for (let i = hasComponent ? 1 : 0; i < matches.length; i++) {
allDirectiveDefs.push(matches[i]);
}
return [allDirectiveDefs, hostDirectiveDefs, hostDirectiveRanges];
}
function findHostDirectiveDefs(currentDef, matchedDefs, hostDirectiveDefs) {
if (currentDef.hostDirectives !== null) {
for (const configOrFn of currentDef.hostDirectives) {
if (typeof configOrFn === "function") {
const resolved2 = configOrFn();
for (const config3 of resolved2) {
trackHostDirectiveDef(createHostDirectiveDef(config3), matchedDefs, hostDirectiveDefs);
}
} else {
trackHostDirectiveDef(configOrFn, matchedDefs, hostDirectiveDefs);
}
}
}
}
function trackHostDirectiveDef(def, matchedDefs, hostDirectiveDefs) {
const hostDirectiveDef = getDirectiveDef(def.directive);
if (typeof ngDevMode === "undefined" || ngDevMode) {
validateHostDirective(def, hostDirectiveDef);
}
patchDeclaredInputs(hostDirectiveDef.declaredInputs, def.inputs);
findHostDirectiveDefs(hostDirectiveDef, matchedDefs, hostDirectiveDefs);
hostDirectiveDefs.set(hostDirectiveDef, def);
matchedDefs.push(hostDirectiveDef);
}
function createHostDirectiveDef(config3) {
return typeof config3 === "function" ? { directive: resolveForwardRef(config3), inputs: EMPTY_OBJ, outputs: EMPTY_OBJ } : {
directive: resolveForwardRef(config3.directive),
inputs: bindingArrayToMap(config3.inputs),
outputs: bindingArrayToMap(config3.outputs)
};
}
function bindingArrayToMap(bindings) {
if (bindings === void 0 || bindings.length === 0) {
return EMPTY_OBJ;
}
const result = {};
for (let i = 0; i < bindings.length; i += 2) {
result[bindings[i]] = bindings[i + 1];
}
return result;
}
function patchDeclaredInputs(declaredInputs, exposedInputs) {
for (const publicName in exposedInputs) {
if (exposedInputs.hasOwnProperty(publicName)) {
const remappedPublicName = exposedInputs[publicName];
const privateName = declaredInputs[publicName];
if ((typeof ngDevMode === "undefined" || ngDevMode) && declaredInputs.hasOwnProperty(remappedPublicName)) {
assertEqual(declaredInputs[remappedPublicName], declaredInputs[publicName], `Conflicting host directive input alias ${publicName}.`);
}
declaredInputs[remappedPublicName] = privateName;
}
}
}
function validateHostDirective(hostDirectiveConfig, directiveDef) {
const type = hostDirectiveConfig.directive;
if (directiveDef === null) {
if (getComponentDef(type) !== null) {
throw new RuntimeError(310, `Host directive ${type.name} cannot be a component.`);
}
throw new RuntimeError(307, `Could not resolve metadata for host directive ${type.name}. Make sure that the ${type.name} class is annotated with an @Directive decorator.`);
}
if (!directiveDef.standalone) {
throw new RuntimeError(308, `Host directive ${directiveDef.type.name} must be standalone.`);
}
validateMappings("input", directiveDef, hostDirectiveConfig.inputs);
validateMappings("output", directiveDef, hostDirectiveConfig.outputs);
}
function validateMappings(bindingType, def, hostDirectiveBindings) {
const className = def.type.name;
const bindings = bindingType === "input" ? def.inputs : def.outputs;
for (const publicName in hostDirectiveBindings) {
if (hostDirectiveBindings.hasOwnProperty(publicName)) {
if (!bindings.hasOwnProperty(publicName)) {
throw new RuntimeError(311, `Directive ${className} does not have an ${bindingType} with a public name of ${publicName}.`);
}
const remappedPublicName = hostDirectiveBindings[publicName];
if (bindings.hasOwnProperty(remappedPublicName) && remappedPublicName !== publicName) {
throw new RuntimeError(312, `Cannot alias ${bindingType} ${publicName} of host directive ${className} to ${remappedPublicName}, because it already has a different ${bindingType} with the same public name.`);
}
}
}
}
function templateCreate(tNode, declarationLView, declarationTView, index, templateFn, decls, vars, flags) {
if (declarationTView.firstCreatePass) {
tNode.mergedAttrs = mergeHostAttrs(tNode.mergedAttrs, tNode.attrs);
const embeddedTView = tNode.tView = createTView(
2,
tNode,
templateFn,
decls,
vars,
declarationTView.directiveRegistry,
declarationTView.pipeRegistry,
null,
declarationTView.schemas,
declarationTView.consts,
null
/* ssrId */
);
if (declarationTView.queries !== null) {
declarationTView.queries.template(declarationTView, tNode);
embeddedTView.queries = declarationTView.queries.embeddedTView(tNode);
}
}
if (flags) {
tNode.flags |= flags;
}
setCurrentTNode(tNode, false);
const comment2 = _locateOrCreateContainerAnchor(declarationTView, declarationLView, tNode, index);
if (wasLastNodeCreated()) {
appendChild(declarationTView, declarationLView, comment2, tNode);
}
attachPatchData(comment2, declarationLView);
const lContainer = createLContainer(comment2, declarationLView, comment2, tNode);
declarationLView[index + HEADER_OFFSET] = lContainer;
addToEndOfViewTree(declarationLView, lContainer);
populateDehydratedViewsInLContainer(lContainer, tNode, declarationLView);
}
function declareDirectiveHostTemplate(declarationLView, declarationTView, index, templateFn, decls, vars, tagName, attrs, flags, localRefsIndex, localRefExtractor) {
const adjustedIndex = index + HEADER_OFFSET;
let tNode;
if (declarationTView.firstCreatePass) {
tNode = getOrCreateTNode(declarationTView, adjustedIndex, 4, tagName || null, attrs || null);
if (getBindingsEnabled()) {
resolveDirectives(declarationTView, declarationLView, tNode, getConstant(declarationTView.consts, localRefsIndex), findDirectiveDefMatches);
}
registerPostOrderHooks(declarationTView, tNode);
} else {
tNode = declarationTView.data[adjustedIndex];
}
templateCreate(tNode, declarationLView, declarationTView, index, templateFn, decls, vars, flags);
if (isDirectiveHost(tNode)) {
createDirectivesInstances(declarationTView, declarationLView, tNode);
}
if (localRefsIndex != null) {
saveResolvedLocalsInData(declarationLView, tNode, localRefExtractor);
}
return tNode;
}
function declareNoDirectiveHostTemplate(declarationLView, declarationTView, index, templateFn, decls, vars, tagName, attrs, flags, localRefsIndex, localRefExtractor) {
const adjustedIndex = index + HEADER_OFFSET;
let tNode;
if (declarationTView.firstCreatePass) {
tNode = getOrCreateTNode(declarationTView, adjustedIndex, 4, tagName || null, attrs || null);
if (localRefsIndex != null) {
const refs = getConstant(declarationTView.consts, localRefsIndex);
tNode.localNames = [];
for (let i = 0; i < refs.length; i += 2) {
tNode.localNames.push(refs[i], -1);
}
}
} else {
tNode = declarationTView.data[adjustedIndex];
}
templateCreate(tNode, declarationLView, declarationTView, index, templateFn, decls, vars, flags);
if (localRefsIndex != null) {
saveResolvedLocalsInData(declarationLView, tNode, localRefExtractor);
}
return tNode;
}
function \u0275\u0275template(index, templateFn, decls, vars, tagName, attrsIndex, localRefsIndex, localRefExtractor) {
const lView = getLView();
const tView = getTView();
const attrs = getConstant(tView.consts, attrsIndex);
declareDirectiveHostTemplate(lView, tView, index, templateFn, decls, vars, tagName, attrs, void 0, localRefsIndex, localRefExtractor);
return \u0275\u0275template;
}
function \u0275\u0275domTemplate(index, templateFn, decls, vars, tagName, attrsIndex, localRefsIndex, localRefExtractor) {
const lView = getLView();
const tView = getTView();
const attrs = getConstant(tView.consts, attrsIndex);
declareNoDirectiveHostTemplate(lView, tView, index, templateFn, decls, vars, tagName, attrs, void 0, localRefsIndex, localRefExtractor);
return \u0275\u0275domTemplate;
}
var _locateOrCreateContainerAnchor = createContainerAnchorImpl;
function createContainerAnchorImpl(tView, lView, tNode, index) {
lastNodeWasCreated(true);
return lView[RENDERER].createComment(ngDevMode ? "container" : "");
}
var DeferDependenciesLoadingState;
(function(DeferDependenciesLoadingState2) {
DeferDependenciesLoadingState2[DeferDependenciesLoadingState2["NOT_STARTED"] = 0] = "NOT_STARTED";
DeferDependenciesLoadingState2[DeferDependenciesLoadingState2["IN_PROGRESS"] = 1] = "IN_PROGRESS";
DeferDependenciesLoadingState2[DeferDependenciesLoadingState2["COMPLETE"] = 2] = "COMPLETE";
DeferDependenciesLoadingState2[DeferDependenciesLoadingState2["FAILED"] = 3] = "FAILED";
})(DeferDependenciesLoadingState || (DeferDependenciesLoadingState = {}));
var MINIMUM_SLOT = 0;
var LOADING_AFTER_SLOT = 1;
var DeferBlockState;
(function(DeferBlockState2) {
DeferBlockState2[DeferBlockState2["Placeholder"] = 0] = "Placeholder";
DeferBlockState2[DeferBlockState2["Loading"] = 1] = "Loading";
DeferBlockState2[DeferBlockState2["Complete"] = 2] = "Complete";
DeferBlockState2[DeferBlockState2["Error"] = 3] = "Error";
})(DeferBlockState || (DeferBlockState = {}));
var DeferBlockInternalState;
(function(DeferBlockInternalState2) {
DeferBlockInternalState2[DeferBlockInternalState2["Initial"] = -1] = "Initial";
})(DeferBlockInternalState || (DeferBlockInternalState = {}));
var NEXT_DEFER_BLOCK_STATE = 0;
var DEFER_BLOCK_STATE = 1;
var STATE_IS_FROZEN_UNTIL = 2;
var LOADING_AFTER_CLEANUP_FN = 3;
var TRIGGER_CLEANUP_FNS = 4;
var PREFETCH_TRIGGER_CLEANUP_FNS = 5;
var SSR_UNIQUE_ID = 6;
var SSR_BLOCK_STATE = 7;
var ON_COMPLETE_FNS = 8;
var HYDRATE_TRIGGER_CLEANUP_FNS = 9;
var DeferBlockBehavior;
(function(DeferBlockBehavior2) {
DeferBlockBehavior2[DeferBlockBehavior2["Manual"] = 0] = "Manual";
DeferBlockBehavior2[DeferBlockBehavior2["Playthrough"] = 1] = "Playthrough";
})(DeferBlockBehavior || (DeferBlockBehavior = {}));
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 onViewportWrapper(trigger2, callback, injector) {
const ngZone = injector.get(NgZone);
return onViewport(trigger2, () => ngZone.run(callback), () => ngZone.runOutsideAngular(() => createIntersectionObserver()));
}
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 &&