// Metro module 1412 (f1413). import Module1413, { TypeTag } from "../_bundle/Module1413"; import Module38 from "../_bundle/Module38"; import { areSetsEqual } from "../_bundle/Module1414"; import shallowEqual, { areArraysShallowEqual } from "../_bundle/shallowEqual"; let isPlainRecordDataEqual; const isValueEqual = function isValueEqual(a0, a1) { let r1; L22: { if (a0 != null && a1 != null) { r1 = a0 === a1; if (r1) { break L22; } r1 = a0 instanceof Date && a1 instanceof Date ? a0.getTime() === a1.getTime() : a0 instanceof Set && a1 instanceof Set ? areSetsEqual(a0, a1) : Array.isArray(a0) && Array.isArray(a1) ? areArraysShallowEqual(a0, a1) : (typeof a0 === "object" ? typeof a1 === "object" : typeof a0 === "object") && shallowEqual(a0, a1); } else { r1 = a0 === a1; } } return r1; }; isPlainRecordDataEqual = function isPlainRecordDataEqual(a0, a1) { if (a0 === a1) { return true; } for (const item of Object.keys(a0)) { if (isValueEqual(a0[item], a1[item])) { continue; } return false; } return true; }; export default Module1413; export { TypeTag }; export function set(a0, a1, a2) { const isValueEqual2 = isValueEqual(a0[a1], a2); let r10 = a0; if (!isValueEqual2) { const r11 = { ...a0 }; r11[a1] = a2; r10 = r11; } return r10; } export function merge(a0, a1) { let r12; let r4 = a0; let r6 = null; let r5 = null; for (const key in a1) { r12 = r6; r5 = r12; const r17 = a0[key]; const r14 = a1[key]; const r13 = r14 === void 0 || isValueEqual(r17, r14); r6 = r12; if (!r13) { if (r12 == null) { const r20 = { ...a0 }; r20[key] = r14; r12 = r20; } else { r12[key] = r14; } r6 = r12; } } r12 = r6; r5 = r12; if (r5 != null) { r4 = r5; } return r4; } export function tryReuseExistingInPlacePlainRecord(a0, a1, a2) { let r4 = a1; Module38(a1 == null || a1[TypeTag] === a0, "Existing record type does not match the expected type"); if (!(a1 != null && isPlainRecordDataEqual(a1, a2))) { a2[TypeTag] = a0; r4 = a2; } return r4; } export function objectIsPlainRecordOfType(a0, a1) { return (typeof a1 === "object" ? a1 != null : typeof a1 === "object") && (TypeTag in a1 && a1[TypeTag]) === a0; } export function constructInPlace(a0, a1) { a1[TypeTag] = a0; return a1; } export function copyConstruct(a0, a1) { const r0 = { ...a1 }; r0[TypeTag] = a0; return r0; } export { isValueEqual }; export { isPlainRecordDataEqual };