@ngutil/common 0.0.81 → 0.0.83

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/destruct.d.ts CHANGED
@@ -23,5 +23,5 @@ export declare abstract class Destructible implements OnDestroy, IDisposable {
23
23
  /** @ignore */
24
24
  dispose(): void;
25
25
  static ɵfac: i0.ɵɵFactoryDeclaration<Destructible, never>;
26
- static ɵdir: i0.ɵɵDirectiveDeclaration<Destructible, never, never, {}, {}, never, never, false, never>;
26
+ static ɵdir: i0.ɵɵDirectiveDeclaration<Destructible, never, never, {}, {}, never, never, true, never>;
27
27
  }
@@ -1,7 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Directive, ElementRef } from '@angular/core';
3
3
  import { Subject, share, take, takeUntil, startWith, map, debounceTime, distinctUntilChanged, shareReplay, scan, tap, concatMap, concat, takeWhile, reduce, ReplaySubject, filter, Observable, of, from, forkJoin, takeLast, catchError, throwError } from 'rxjs';
4
- import { cloneDeep, isPlainObject as isPlainObject$1, isEqual, flatten } from 'lodash-es';
4
+ import { cloneDeep, isEqual as isEqual$1, isPlainObject, flatten } from 'es-toolkit';
5
+ export { isPlainObject } from 'es-toolkit';
5
6
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
7
  export { isPrimitive } from 'utility-types';
7
8
 
@@ -78,10 +79,10 @@ class Destructible {
78
79
  dispose() {
79
80
  this.ngOnDestroy();
80
81
  }
81
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: Destructible, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
82
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: Destructible, ngImport: i0 }); }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: Destructible, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
83
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.8", type: Destructible, isStandalone: true, ngImport: i0 }); }
83
84
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: Destructible, decorators: [{
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: Destructible, decorators: [{
85
86
  type: Directive
86
87
  }] });
87
88
 
@@ -127,8 +128,8 @@ class NumberWithUnit {
127
128
 
128
129
  // export { deepFreeze }
129
130
  const deepClone = typeof structuredClone === "function" ? structuredClone : cloneDeep;
130
- // export const deepFreeze: <T>(obj: T) => DeepReadonly<T> = o => Object.freeze(o) as any
131
- const isPlainObject = isPlainObject$1;
131
+ // TODO: submit es-toolkit pr for this
132
+ const isEqual = isEqual$1;
132
133
  function deepFreeze(obj) {
133
134
  if (obj == null) {
134
135
  return obj;
@@ -235,7 +236,7 @@ function fcObservableProperty(fc, property, opts = DEFAULT) {
235
236
  }
236
237
  function handleCommonOptions(o, opts) {
237
238
  if (opts.distinct) {
238
- o = o.pipe(distinctUntilChanged(isEqual));
239
+ o = o.pipe(distinctUntilChanged(isEqual$1));
239
240
  }
240
241
  if (opts.destruct) {
241
242
  o = o.pipe(takeUntilDestroyed());
@@ -485,5 +486,5 @@ class Lifecycle {
485
486
  * Generated bundle index. Do not edit.
486
487
  */
487
488
 
488
- export { DEFAULT, Destruct, Destructible, FastDOM, Lifecycle, NUMBER_REGEX, NumberWithUnit, StopLifecycle, UNIT_REGEX, VALUE_DEFAULT, __zone_symbol__, coerceBoolAttr, coerceElement, deepClone, deepFreeze, fcObservableProperty, fcObservableValue, isElementInput, isFalsy, isPlainObject, isTruthy, rawCancelAnimationFrame, rawClearInterval, rawClearTimeout, rawRequestAnimationFrame, rawSetInterval, rawSetTimeout, toSorted };
489
+ export { DEFAULT, Destruct, Destructible, FastDOM, Lifecycle, NUMBER_REGEX, NumberWithUnit, StopLifecycle, UNIT_REGEX, VALUE_DEFAULT, __zone_symbol__, coerceBoolAttr, coerceElement, deepClone, deepFreeze, fcObservableProperty, fcObservableValue, isElementInput, isFalsy, isTruthy, rawCancelAnimationFrame, rawClearInterval, rawClearTimeout, rawRequestAnimationFrame, rawSetInterval, rawSetTimeout, toSorted };
489
490
  //# sourceMappingURL=ngutil-common.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngutil-common.mjs","sources":["../../../../packages/common/src/destruct.ts","../../../../packages/common/src/number-with-unit.ts","../../../../packages/common/src/util.ts","../../../../packages/common/src/coerce/bool-attr.ts","../../../../packages/common/src/coerce/element.ts","../../../../packages/common/src/form/observable.ts","../../../../packages/common/src/unngzone.ts","../../../../packages/common/src/dom.ts","../../../../packages/common/src/lifecycle.ts","../../../../packages/common/src/ngutil-common.ts"],"sourcesContent":["import { Directive, OnDestroy } from \"@angular/core\"\n\nimport { Observable, share, Subject, take, takeUntil } from \"rxjs\"\n\nexport interface IDisposable {\n dispose(): void\n}\n\nexport class Destruct {\n readonly #on = new Subject<void>()\n readonly on = this.#on.pipe(share())\n\n constructor(fn?: () => void) {\n if (fn != null) {\n this.any(fn)\n }\n }\n get done(): boolean {\n return this.#on.closed\n }\n\n sub<T>(o: Observable<T>): Observable<T> {\n if (this.done) {\n return o.pipe(take(0))\n } else {\n return o.pipe(takeUntil(this.on))\n }\n }\n\n disposable<T extends IDisposable>(d: T): T {\n if (this.done) {\n d.dispose()\n } else {\n this.on.subscribe(d.dispose.bind(d))\n }\n\n return d\n }\n\n node<T extends Node>(el: T): T {\n const remove = () => {\n const parent = el.parentNode\n if (parent) {\n parent.removeChild(el)\n }\n }\n if (this.done) {\n remove()\n } else {\n this.on.subscribe(remove)\n }\n\n return el\n }\n\n any(f: () => void): void {\n if (this.done) {\n f()\n } else {\n this.on.subscribe(f)\n }\n }\n\n run() {\n if (!this.done) {\n this.#on.next()\n this.#on.complete()\n }\n }\n}\n\n@Directive()\nexport abstract class Destructible implements OnDestroy, IDisposable {\n /** @ignore */\n readonly d = new Destruct()\n\n /** @ignore */\n ngOnDestroy() {\n this.d.run()\n delete (this as any).d\n }\n\n /** @ignore */\n dispose() {\n this.ngOnDestroy()\n }\n}\n","export type NumberWithUnitInput = number | string | NumberWithUnit\n\nconst specials = [\"auto\", \"inherit\"]\n\nexport const UNIT_REGEX = \"v[h|w|min|max]|p[c|t|x]|[re|e|c|m]m|[l|c]h|%|in|Q|ex|m?s\"\nexport const NUMBER_REGEX = \"[+-]?(?:\\\\d*\\\\.\\\\d+|\\\\d+\\\\.\\\\d*|\\\\d+)\"\n\nconst regex = new RegExp(`^(${NUMBER_REGEX})\\\\s*(${UNIT_REGEX})?$`)\n\nexport class NumberWithUnit {\n static coerce(value: any, defaultUnit?: string) {\n if (value instanceof NumberWithUnit) {\n return value\n } else if (specials.includes(value)) {\n return new NumberWithUnit(NaN, value)\n } else if (typeof value === \"string\") {\n const match = value.match(regex)\n if (match) {\n return new NumberWithUnit(Number(match[1]), match[2] || defaultUnit)\n }\n } else if (typeof value === \"number\") {\n return new NumberWithUnit(value, defaultUnit)\n }\n\n throw new Error(`Not implemented number with unit: ${value}`)\n }\n\n constructor(\n public readonly value: number,\n public readonly unit?: string\n ) {}\n\n toString() {\n if (isNaN(this.value)) {\n return this.unit\n } else if (this.unit != null) {\n return `${this.value}${this.unit}`\n } else {\n return `${this.value}`\n }\n }\n}\n","import { isPlainObject as _isPlainObject, cloneDeep } from \"lodash-es\"\n\nimport { DeepReadonly } from \"./types/readonly\"\nimport { IfAny, IfTuple } from \"./types/util\"\n\n// export { deepFreeze }\n\nexport const deepClone: <T>(obj: T) => T = typeof structuredClone === \"function\" ? structuredClone : cloneDeep\n// export const deepFreeze: <T>(obj: T) => DeepReadonly<T> = o => Object.freeze(o) as any\nexport const isPlainObject: (arg: any) => arg is { [key: string]: any } = _isPlainObject as any\n\nexport function deepFreeze<T>(obj: T): DeepReadonly<T> {\n if (obj == null) {\n return obj as any\n }\n\n if (obj instanceof Map) {\n obj.clear =\n obj.delete =\n obj.set =\n function () {\n throw new Error(\"map is read-only\")\n }\n } else if (obj instanceof Set) {\n obj.add =\n obj.clear =\n obj.delete =\n function () {\n throw new Error(\"set is read-only\")\n }\n }\n\n // Freeze self\n Object.freeze(obj)\n\n Object.getOwnPropertyNames(obj).forEach(name => {\n const prop = (obj as any)[name]\n const type = typeof prop\n\n // Freeze prop if it is an object or function and also not already frozen\n if ((type === \"object\" || type === \"function\") && !Object.isFrozen(prop)) {\n deepFreeze(prop)\n }\n })\n\n return obj as any\n}\n\n/**\n * @example\n * ```ts\n * toSorted([{id: 1}, {id: 2}, {id: 3}], sortBy([{id: \"desc\"}]))\n * ```\n */\nexport function toSorted<T>(items: readonly T[], fn: (a: T, b: T) => number): T[] {\n if (typeof (items as any).toSorted === \"function\") {\n return (items as any).toSorted(fn)\n } else {\n return items.slice(0).sort(fn)\n }\n}\n\ntype FalsyIfNull<O> = O extends null ? null : never\ntype FalsyIfUndefined<O> = O extends undefined ? undefined : never\ntype FalsyIfBool<O> = O extends boolean ? false : never\ntype FalsyIfString<O> = O extends string ? \"\" : never\ntype FalsyIfNumber<O> = O extends number ? 0 : never\ntype FalsyIfTuple<O> = IfTuple<O, O, never, never>\ntype FalsyIfAny<O> = IfAny<O, O, never>\n\nexport type IsFalsy<O> =\n | FalsyIfNull<O>\n | FalsyIfUndefined<O>\n | FalsyIfBool<O>\n | FalsyIfString<O>\n | FalsyIfNumber<O>\n | FalsyIfTuple<O>\n | FalsyIfAny<O>\n\nexport function isFalsy<T>(value: T): value is IsFalsy<T> & T {\n if (value == null) {\n return true\n } else if (typeof value === \"string\") {\n return value.length === 0\n } else if (typeof value === \"number\") {\n return isNaN(value) || value === 0\n } else if (Array.isArray(value)) {\n return value.length === 0\n } else if (isPlainObject(value)) {\n return Object.keys(value).length === 0\n } else if ((value as any) instanceof Set) {\n return (value as any).size === 0\n } else if ((value as any) instanceof Map) {\n return (value as any).size === 0\n }\n return value === false\n}\n\nexport type IsTruthy<T> = Exclude<T, undefined | null | false | \"\" | 0>\n\nexport function isTruthy<T>(value: T): value is IsTruthy<T> {\n return !isFalsy(value)\n}\n","import { isTruthy } from \"../util\"\n\nexport type BooleanInput = string | boolean | null | undefined\n\nexport function coerceBoolAttr(value: BooleanInput): boolean {\n return isTruthy(value) || (typeof value === \"string\" && value !== \"false\")\n}\n","import { ElementRef } from \"@angular/core\"\n\nexport type ElementInput<T extends Element = HTMLElement> = T | ElementRef<T>\n\nexport function coerceElement<T>(value: T | ElementRef<T>): T {\n if (value instanceof ElementRef) {\n return value.nativeElement\n }\n return value\n}\n\nexport function isElementInput(value: any): value is ElementInput {\n return value instanceof Element || value instanceof ElementRef\n}\n","import { takeUntilDestroyed } from \"@angular/core/rxjs-interop\"\nimport { FormControl } from \"@angular/forms\"\n\nimport { debounceTime, distinctUntilChanged, map, Observable, shareReplay, startWith } from \"rxjs\"\n\nimport { isEqual } from \"lodash-es\"\n\nimport { isFalsy } from \"../util\"\n\nexport interface ObservableOptions {\n distinct?: boolean\n destruct?: boolean\n}\n\nexport interface ObservableValueOptions extends ObservableOptions {\n debounce?: number\n falsyToNull?: boolean\n}\n\nexport type FormControlProperties =\n | \"valid\"\n | \"invalid\"\n | \"status\"\n | \"pristine\"\n | \"dirty\"\n | \"touched\"\n | \"untouched\"\n | \"disabled\"\n | \"enabled\"\n | \"errors\"\n\nexport const DEFAULT: ObservableOptions = { distinct: true, destruct: true }\nexport const VALUE_DEFAULT: ObservableValueOptions = { ...DEFAULT, falsyToNull: true }\n\nexport function fcObservableValue<T, O extends ObservableValueOptions>(\n fc: FormControl<T>,\n opts: O = VALUE_DEFAULT as any\n): Observable<O extends { falsyToNull: true } ? T | null : T> {\n let result: Observable<any> = fc.valueChanges.pipe(\n startWith(null),\n map(() => fc.value)\n )\n\n if (opts.debounce) {\n result = result.pipe(debounceTime(opts.debounce))\n }\n\n if (opts.falsyToNull) {\n result = result.pipe(map(v => (isFalsy(v) ? null : v)))\n }\n\n return handleCommonOptions(result, opts) as any\n}\n\nexport function fcObservableProperty<T, P extends FormControlProperties>(\n fc: FormControl<T>,\n property: P,\n opts: ObservableOptions = DEFAULT\n): Observable<FormControl<T>[P]> {\n const result = fc.statusChanges.pipe(\n startWith(null),\n map(() => fc[property])\n )\n\n return handleCommonOptions(result, opts)\n}\n\nfunction handleCommonOptions<T>(o: Observable<T>, opts: ObservableOptions): Observable<T> {\n if (opts.distinct) {\n o = o.pipe(distinctUntilChanged(isEqual))\n }\n\n if (opts.destruct) {\n o = o.pipe(takeUntilDestroyed())\n }\n\n return o.pipe(shareReplay(1))\n}\n","export const Zone = (window as any).Zone\n\nexport function __zone_symbol__<T extends string>(val: T): T {\n const symbol =\n typeof Zone !== \"undefined\" && (Zone as any).__symbol__\n ? (Zone as any).__symbol__(val)\n : `__zone_symbol__${val}`\n return typeof window[symbol] !== \"undefined\" ? symbol : val\n}\n\nexport const rawSetTimeout = window[__zone_symbol__(\"setTimeout\")]\nexport const rawClearTimeout = window[__zone_symbol__(\"clearTimeout\")]\nexport const rawSetInterval = window[__zone_symbol__(\"setInterval\")]\nexport const rawClearInterval = window[__zone_symbol__(\"clearInterval\")]\nexport const rawRequestAnimationFrame = window[__zone_symbol__(\"requestAnimationFrame\")]\nexport const rawCancelAnimationFrame = window[__zone_symbol__(\"cancelAnimationFrame\")]\n","import { rawRequestAnimationFrame } from \"./unngzone\"\n\ntype FastDomHandler = () => void\n\nclass _FastDOM {\n #rafId: any\n #mutate: Array<FastDomHandler> = []\n #measure: Array<FastDomHandler> = []\n\n public mutate(handler: FastDomHandler) {\n this.#mutate.push(handler)\n this._schedule()\n }\n\n public mutateNext(handler: FastDomHandler) {\n this.#mutate.push(() => {\n this.#mutate.push(handler)\n })\n this._schedule()\n }\n\n public measure(handler: FastDomHandler) {\n this.#measure.push(handler)\n this._schedule()\n }\n\n public setStyle(el: HTMLElement, style: { [key: string]: any }, chain?: FastDomHandler) {\n this.mutate(() => {\n for (const [k, v] of Object.entries(style)) {\n if (v == null) {\n el.style.removeProperty(k)\n } else {\n el.style.setProperty(k, v)\n }\n }\n\n chain && chain()\n })\n }\n\n public setAttributes(el: HTMLElement, attrs: { [key: string]: any }, chain?: FastDomHandler) {\n this.mutate(() => {\n for (const [k, v] of Object.entries(attrs)) {\n if (v == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, v)\n }\n }\n\n chain && chain()\n })\n }\n\n private _schedule() {\n if (!this.#rafId) {\n this.#rafId = rawRequestAnimationFrame(this._apply.bind(this))\n }\n }\n\n private _apply() {\n this.#rafId = null\n\n const measure = this.#measure.slice()\n const mutate = this.#mutate.slice()\n this.#measure.length = 0\n this.#mutate.length = 0\n\n runQ(measure)\n runQ(mutate)\n\n if (this.#measure.length || this.#mutate.length) {\n this._schedule()\n }\n }\n}\n\nfunction runQ(items: FastDomHandler[]) {\n let item: FastDomHandler\n while ((item = items.shift()!)) {\n item()\n }\n}\n\nexport const FastDOM = new _FastDOM()\n","import {\n catchError,\n concat,\n concatMap,\n filter,\n forkJoin,\n from,\n map,\n Observable,\n ObservableInput,\n of,\n reduce,\n ReplaySubject,\n scan,\n share,\n shareReplay,\n Subject,\n Subscriber,\n take,\n takeLast,\n takeUntil,\n takeWhile,\n tap,\n throwError\n} from \"rxjs\"\n\nimport { flatten } from \"lodash-es\"\n\nexport type LifecycleHandler = () => ObservableInput<unknown> | null | undefined | void\n\nexport class StopLifecycle extends Error {}\n\nexport type LifecycleOptions = Record<string, { order?: \"parallel\" | \"sequential\"; cancellable?: boolean }>\n\nexport type LifecycleRemap<A, B> =\n A extends Lifecycle<infer AO, infer AS>\n ? B extends Lifecycle<infer BO, infer BS>\n ? Partial<{ [K in AS]: BS }>\n : never\n : never\n\nexport class Lifecycle<T extends LifecycleOptions, S extends keyof T = keyof T> {\n readonly states: T\n readonly #handlers: Partial<Record<S, Array<LifecycleHandler>>> = {}\n\n readonly #until = new Subject<void>()\n readonly #trigger = new Subject<S>()\n readonly #status = this.#trigger.pipe(\n takeUntil(this.#until),\n scan(\n (result, trigger) => {\n if (!result[trigger]) {\n result[trigger] = this.#run(trigger as S).pipe(\n tap(executed => {\n if (executed === false) {\n delete result[trigger]\n }\n }),\n map(executed => [trigger, !!executed] as [S, boolean]),\n shareReplay(1)\n )\n }\n return result\n },\n {} as Record<S, Observable<[S, boolean]>>\n ),\n concatMap(triggers => {\n const srcs = Object.values(triggers) as Array<Observable<[S, boolean]>>\n return concat(...srcs).pipe(\n takeWhile(([_, executed]) => executed, false),\n reduce(\n (result, [name, executed]) => {\n return { ...result, [name]: executed }\n },\n {} as Record<S, boolean>\n )\n )\n }),\n tap(status => {\n if (this.#handlers == null) {\n return\n }\n\n for (const [k, v] of Object.entries(status)) {\n if (v) {\n delete (this.#handlers as any)[k]\n }\n }\n }),\n share()\n )\n\n readonly status$ = this.#status.pipe(shareReplay(1))\n readonly current$ = new ReplaySubject<S>()\n\n constructor(states: T) {\n this.states = { ...states }\n\n for (const value of Object.values(states)) {\n if (value.order == null) {\n value.order = \"parallel\"\n }\n }\n }\n\n on(state: S, fn: LifecycleHandler) {\n if (state in this.#handlers) {\n this.#handlers[state]!.push(fn)\n } else {\n this.#handlers[state] = [fn]\n }\n\n return () => {\n const idx = this.#handlers[state]!.indexOf(fn)\n if (idx > -1) {\n this.#handlers[state]!.splice(idx, 1)\n }\n }\n }\n\n onExecute(state: S) {\n return this.current$.pipe(\n takeUntil(this.#until),\n filter(current => current === state)\n )\n }\n\n onDone(state: S) {\n return this.status$.pipe(\n filter(status => status[state]),\n take(1)\n )\n }\n\n run(...states: Array<S | S[]>) {\n const flattened = flatten(states).filter((v, i, a) => a.indexOf(v) === i)\n const expectedCount = flattened.length\n return new Observable((dest: Subscriber<void>) => {\n dest.add(\n this.#status.subscribe(currentStatus => {\n const executedCount = Object.entries(currentStatus).reduce(\n (result, [name, done]) => result + (done && flattened.includes(name as S) ? 1 : 0),\n 0\n )\n\n if (executedCount >= expectedCount) {\n dest.next()\n dest.complete()\n }\n })\n )\n\n for (const s of flattened) {\n this.#trigger.next(s)\n }\n })\n }\n\n /**\n * Run this state changes on other state\n */\n control<T extends Lifecycle<any, any>>(state: T, remap?: LifecycleRemap<this, T>) {\n const remove: Array<() => void> = []\n\n for (const selfState of Object.keys(this.states)) {\n const otherState = (remap as unknown as any)?.[selfState] || selfState\n if (otherState in state.states) {\n remove.push(this.on(selfState as any, () => state.run(otherState)))\n }\n }\n\n return () => {\n for (const fn of remove) {\n fn()\n }\n }\n }\n\n destroy() {\n ;(this as any).#handlers = null\n this.#until.next()\n this.#until.complete()\n }\n\n #run(state: S) {\n if (this.#handlers == null || !this.states[state]) {\n return of(true)\n }\n\n return new Observable((dest: Subscriber<boolean>) => {\n this.current$.next(state)\n\n const handlers = this.#handlers[state]\n if (handlers == null || handlers.length === 0) {\n dest.next(true)\n dest.complete()\n return\n }\n\n const observables: Array<Observable<any>> = handlers.map(handler => {\n const observable = handler()\n if (observable == null) {\n return of(null)\n } else {\n return from(observable)\n }\n })\n\n const config = this.states[state]\n\n if (observables.length === 1) {\n return observables[0].pipe(map(() => true)).subscribe(dest)\n } else if (config.order === \"parallel\") {\n return forkJoin(observables)\n .pipe(map(() => true))\n .subscribe(dest)\n } else if (config.order === \"sequential\") {\n return concat(...observables)\n .pipe(map(() => true))\n .subscribe(dest)\n } else {\n dest.next(true)\n dest.complete()\n }\n\n return\n }).pipe(\n takeLast(1),\n catchError(error => {\n if (error instanceof StopLifecycle) {\n return of(false)\n } else {\n return throwError(() => error)\n }\n })\n )\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_isPlainObject"],"mappings":"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"}
1
+ {"version":3,"file":"ngutil-common.mjs","sources":["../../../../packages/common/src/destruct.ts","../../../../packages/common/src/number-with-unit.ts","../../../../packages/common/src/util.ts","../../../../packages/common/src/coerce/bool-attr.ts","../../../../packages/common/src/coerce/element.ts","../../../../packages/common/src/form/observable.ts","../../../../packages/common/src/unngzone.ts","../../../../packages/common/src/dom.ts","../../../../packages/common/src/lifecycle.ts","../../../../packages/common/src/ngutil-common.ts"],"sourcesContent":["import { Directive, OnDestroy } from \"@angular/core\"\n\nimport { Observable, share, Subject, take, takeUntil } from \"rxjs\"\n\nexport interface IDisposable {\n dispose(): void\n}\n\nexport class Destruct {\n readonly #on = new Subject<void>()\n readonly on = this.#on.pipe(share())\n\n constructor(fn?: () => void) {\n if (fn != null) {\n this.any(fn)\n }\n }\n get done(): boolean {\n return this.#on.closed\n }\n\n sub<T>(o: Observable<T>): Observable<T> {\n if (this.done) {\n return o.pipe(take(0))\n } else {\n return o.pipe(takeUntil(this.on))\n }\n }\n\n disposable<T extends IDisposable>(d: T): T {\n if (this.done) {\n d.dispose()\n } else {\n this.on.subscribe(d.dispose.bind(d))\n }\n\n return d\n }\n\n node<T extends Node>(el: T): T {\n const remove = () => {\n const parent = el.parentNode\n if (parent) {\n parent.removeChild(el)\n }\n }\n if (this.done) {\n remove()\n } else {\n this.on.subscribe(remove)\n }\n\n return el\n }\n\n any(f: () => void): void {\n if (this.done) {\n f()\n } else {\n this.on.subscribe(f)\n }\n }\n\n run() {\n if (!this.done) {\n this.#on.next()\n this.#on.complete()\n }\n }\n}\n\n@Directive()\nexport abstract class Destructible implements OnDestroy, IDisposable {\n /** @ignore */\n readonly d = new Destruct()\n\n /** @ignore */\n ngOnDestroy() {\n this.d.run()\n delete (this as any).d\n }\n\n /** @ignore */\n dispose() {\n this.ngOnDestroy()\n }\n}\n","export type NumberWithUnitInput = number | string | NumberWithUnit\n\nconst specials = [\"auto\", \"inherit\"]\n\nexport const UNIT_REGEX = \"v[h|w|min|max]|p[c|t|x]|[re|e|c|m]m|[l|c]h|%|in|Q|ex|m?s\"\nexport const NUMBER_REGEX = \"[+-]?(?:\\\\d*\\\\.\\\\d+|\\\\d+\\\\.\\\\d*|\\\\d+)\"\n\nconst regex = new RegExp(`^(${NUMBER_REGEX})\\\\s*(${UNIT_REGEX})?$`)\n\nexport class NumberWithUnit {\n static coerce(value: any, defaultUnit?: string) {\n if (value instanceof NumberWithUnit) {\n return value\n } else if (specials.includes(value)) {\n return new NumberWithUnit(NaN, value)\n } else if (typeof value === \"string\") {\n const match = value.match(regex)\n if (match) {\n return new NumberWithUnit(Number(match[1]), match[2] || defaultUnit)\n }\n } else if (typeof value === \"number\") {\n return new NumberWithUnit(value, defaultUnit)\n }\n\n throw new Error(`Not implemented number with unit: ${value}`)\n }\n\n constructor(\n public readonly value: number,\n public readonly unit?: string\n ) {}\n\n toString() {\n if (isNaN(this.value)) {\n return this.unit\n } else if (this.unit != null) {\n return `${this.value}${this.unit}`\n } else {\n return `${this.value}`\n }\n }\n}\n","import { isEqual as _isEqual, cloneDeep, isPlainObject } from \"es-toolkit\"\n\nimport { DeepReadonly } from \"./types/readonly\"\nimport { IfAny, IfTuple } from \"./types/util\"\n\n// export { deepFreeze }\n\nexport const deepClone: <T>(obj: T) => T = typeof structuredClone === \"function\" ? structuredClone : cloneDeep\n// export const deepFreeze: <T>(obj: T) => DeepReadonly<T> = o => Object.freeze(o) as any\n// export const isPlainObject: (arg: any) => arg is { [key: string]: any } = _isPlainObject as any\nexport { isPlainObject }\n\n// TODO: submit es-toolkit pr for this\nexport const isEqual: <A, B extends A>(a: A, b: B) => a is B = _isEqual as unknown as any\n\nexport function deepFreeze<T>(obj: T): DeepReadonly<T> {\n if (obj == null) {\n return obj as any\n }\n\n if (obj instanceof Map) {\n obj.clear =\n obj.delete =\n obj.set =\n function () {\n throw new Error(\"map is read-only\")\n }\n } else if (obj instanceof Set) {\n obj.add =\n obj.clear =\n obj.delete =\n function () {\n throw new Error(\"set is read-only\")\n }\n }\n\n // Freeze self\n Object.freeze(obj)\n\n Object.getOwnPropertyNames(obj).forEach(name => {\n const prop = (obj as any)[name]\n const type = typeof prop\n\n // Freeze prop if it is an object or function and also not already frozen\n if ((type === \"object\" || type === \"function\") && !Object.isFrozen(prop)) {\n deepFreeze(prop)\n }\n })\n\n return obj as any\n}\n\n/**\n * @example\n * ```ts\n * toSorted([{id: 1}, {id: 2}, {id: 3}], sortBy([{id: \"desc\"}]))\n * ```\n */\nexport function toSorted<T>(items: readonly T[], fn: (a: T, b: T) => number): T[] {\n if (typeof (items as any).toSorted === \"function\") {\n return (items as any).toSorted(fn)\n } else {\n return items.slice(0).sort(fn)\n }\n}\n\ntype FalsyIfNull<O> = O extends null ? null : never\ntype FalsyIfUndefined<O> = O extends undefined ? undefined : never\ntype FalsyIfBool<O> = O extends boolean ? false : never\ntype FalsyIfString<O> = O extends string ? \"\" : never\ntype FalsyIfNumber<O> = O extends number ? 0 : never\ntype FalsyIfTuple<O> = IfTuple<O, O, never, never>\ntype FalsyIfAny<O> = IfAny<O, O, never>\n\nexport type IsFalsy<O> =\n | FalsyIfNull<O>\n | FalsyIfUndefined<O>\n | FalsyIfBool<O>\n | FalsyIfString<O>\n | FalsyIfNumber<O>\n | FalsyIfTuple<O>\n | FalsyIfAny<O>\n\nexport function isFalsy<T>(value: T): value is IsFalsy<T> & T {\n if (value == null) {\n return true\n } else if (typeof value === \"string\") {\n return value.length === 0\n } else if (typeof value === \"number\") {\n return isNaN(value) || value === 0\n } else if (Array.isArray(value)) {\n return value.length === 0\n } else if (isPlainObject(value)) {\n return Object.keys(value).length === 0\n } else if ((value as any) instanceof Set) {\n return (value as any).size === 0\n } else if ((value as any) instanceof Map) {\n return (value as any).size === 0\n }\n return value === false\n}\n\nexport type IsTruthy<T> = Exclude<T, undefined | null | false | \"\" | 0>\n\nexport function isTruthy<T>(value: T): value is IsTruthy<T> {\n return !isFalsy(value)\n}\n","import { isTruthy } from \"../util\"\n\nexport type BooleanInput = string | boolean | null | undefined\n\nexport function coerceBoolAttr(value: BooleanInput): boolean {\n return isTruthy(value) || (typeof value === \"string\" && value !== \"false\")\n}\n","import { ElementRef } from \"@angular/core\"\n\nexport type ElementInput<T extends Element = HTMLElement> = T | ElementRef<T>\n\nexport function coerceElement<T>(value: T | ElementRef<T>): T {\n if (value instanceof ElementRef) {\n return value.nativeElement\n }\n return value\n}\n\nexport function isElementInput(value: any): value is ElementInput {\n return value instanceof Element || value instanceof ElementRef\n}\n","import { takeUntilDestroyed } from \"@angular/core/rxjs-interop\"\nimport { FormControl } from \"@angular/forms\"\n\nimport { debounceTime, distinctUntilChanged, map, Observable, shareReplay, startWith } from \"rxjs\"\n\nimport { isEqual } from \"es-toolkit\"\n\nimport { isFalsy } from \"../util\"\n\nexport interface ObservableOptions {\n distinct?: boolean\n destruct?: boolean\n}\n\nexport interface ObservableValueOptions extends ObservableOptions {\n debounce?: number\n falsyToNull?: boolean\n}\n\nexport type FormControlProperties =\n | \"valid\"\n | \"invalid\"\n | \"status\"\n | \"pristine\"\n | \"dirty\"\n | \"touched\"\n | \"untouched\"\n | \"disabled\"\n | \"enabled\"\n | \"errors\"\n\nexport const DEFAULT: ObservableOptions = { distinct: true, destruct: true }\nexport const VALUE_DEFAULT: ObservableValueOptions = { ...DEFAULT, falsyToNull: true }\n\nexport function fcObservableValue<T, O extends ObservableValueOptions>(\n fc: FormControl<T>,\n opts: O = VALUE_DEFAULT as any\n): Observable<O extends { falsyToNull: true } ? T | null : T> {\n let result: Observable<any> = fc.valueChanges.pipe(\n startWith(null),\n map(() => fc.value)\n )\n\n if (opts.debounce) {\n result = result.pipe(debounceTime(opts.debounce))\n }\n\n if (opts.falsyToNull) {\n result = result.pipe(map(v => (isFalsy(v) ? null : v)))\n }\n\n return handleCommonOptions(result, opts) as any\n}\n\nexport function fcObservableProperty<T, P extends FormControlProperties>(\n fc: FormControl<T>,\n property: P,\n opts: ObservableOptions = DEFAULT\n): Observable<FormControl<T>[P]> {\n const result = fc.statusChanges.pipe(\n startWith(null),\n map(() => fc[property])\n )\n\n return handleCommonOptions(result, opts)\n}\n\nfunction handleCommonOptions<T>(o: Observable<T>, opts: ObservableOptions): Observable<T> {\n if (opts.distinct) {\n o = o.pipe(distinctUntilChanged(isEqual))\n }\n\n if (opts.destruct) {\n o = o.pipe(takeUntilDestroyed())\n }\n\n return o.pipe(shareReplay(1))\n}\n","export const Zone = (window as any).Zone\n\nexport function __zone_symbol__<T extends string>(val: T): T {\n const symbol =\n typeof Zone !== \"undefined\" && (Zone as any).__symbol__\n ? (Zone as any).__symbol__(val)\n : `__zone_symbol__${val}`\n return typeof window[symbol] !== \"undefined\" ? symbol : val\n}\n\nexport const rawSetTimeout = window[__zone_symbol__(\"setTimeout\")]\nexport const rawClearTimeout = window[__zone_symbol__(\"clearTimeout\")]\nexport const rawSetInterval = window[__zone_symbol__(\"setInterval\")]\nexport const rawClearInterval = window[__zone_symbol__(\"clearInterval\")]\nexport const rawRequestAnimationFrame = window[__zone_symbol__(\"requestAnimationFrame\")]\nexport const rawCancelAnimationFrame = window[__zone_symbol__(\"cancelAnimationFrame\")]\n","import { rawRequestAnimationFrame } from \"./unngzone\"\n\ntype FastDomHandler = () => void\n\nclass _FastDOM {\n #rafId: any\n #mutate: Array<FastDomHandler> = []\n #measure: Array<FastDomHandler> = []\n\n public mutate(handler: FastDomHandler) {\n this.#mutate.push(handler)\n this._schedule()\n }\n\n public mutateNext(handler: FastDomHandler) {\n this.#mutate.push(() => {\n this.#mutate.push(handler)\n })\n this._schedule()\n }\n\n public measure(handler: FastDomHandler) {\n this.#measure.push(handler)\n this._schedule()\n }\n\n public setStyle(el: HTMLElement, style: { [key: string]: any }, chain?: FastDomHandler) {\n this.mutate(() => {\n for (const [k, v] of Object.entries(style)) {\n if (v == null) {\n el.style.removeProperty(k)\n } else {\n el.style.setProperty(k, v)\n }\n }\n\n chain && chain()\n })\n }\n\n public setAttributes(el: HTMLElement, attrs: { [key: string]: any }, chain?: FastDomHandler) {\n this.mutate(() => {\n for (const [k, v] of Object.entries(attrs)) {\n if (v == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, v)\n }\n }\n\n chain && chain()\n })\n }\n\n private _schedule() {\n if (!this.#rafId) {\n this.#rafId = rawRequestAnimationFrame(this._apply.bind(this))\n }\n }\n\n private _apply() {\n this.#rafId = null\n\n const measure = this.#measure.slice()\n const mutate = this.#mutate.slice()\n this.#measure.length = 0\n this.#mutate.length = 0\n\n runQ(measure)\n runQ(mutate)\n\n if (this.#measure.length || this.#mutate.length) {\n this._schedule()\n }\n }\n}\n\nfunction runQ(items: FastDomHandler[]) {\n let item: FastDomHandler\n while ((item = items.shift()!)) {\n item()\n }\n}\n\nexport const FastDOM = new _FastDOM()\n","import {\n catchError,\n concat,\n concatMap,\n filter,\n forkJoin,\n from,\n map,\n Observable,\n ObservableInput,\n of,\n reduce,\n ReplaySubject,\n scan,\n share,\n shareReplay,\n Subject,\n Subscriber,\n take,\n takeLast,\n takeUntil,\n takeWhile,\n tap,\n throwError\n} from \"rxjs\"\n\nimport { flatten } from \"es-toolkit\"\n\nexport type LifecycleHandler = () => ObservableInput<unknown> | null | undefined | void\n\nexport class StopLifecycle extends Error { }\n\nexport type LifecycleOptions = Record<string, { order?: \"parallel\" | \"sequential\"; cancellable?: boolean }>\n\nexport type LifecycleRemap<A, B> =\n A extends Lifecycle<infer AO, infer AS>\n ? B extends Lifecycle<infer BO, infer BS>\n ? Partial<{ [K in AS]: BS }>\n : never\n : never\n\nexport class Lifecycle<T extends LifecycleOptions, S extends keyof T = keyof T> {\n readonly states: T\n readonly #handlers: Partial<Record<S, Array<LifecycleHandler>>> = {}\n\n readonly #until = new Subject<void>()\n readonly #trigger = new Subject<S>()\n readonly #status = this.#trigger.pipe(\n takeUntil(this.#until),\n scan(\n (result, trigger) => {\n if (!result[trigger]) {\n result[trigger] = this.#run(trigger as S).pipe(\n tap(executed => {\n if (executed === false) {\n delete result[trigger]\n }\n }),\n map(executed => [trigger, !!executed] as [S, boolean]),\n shareReplay(1)\n )\n }\n return result\n },\n {} as Record<S, Observable<[S, boolean]>>\n ),\n concatMap(triggers => {\n const srcs = Object.values(triggers) as Array<Observable<[S, boolean]>>\n return concat(...srcs).pipe(\n takeWhile(([_, executed]) => executed, false),\n reduce(\n (result, [name, executed]) => {\n return { ...result, [name]: executed }\n },\n {} as Record<S, boolean>\n )\n )\n }),\n tap(status => {\n if (this.#handlers == null) {\n return\n }\n\n for (const [k, v] of Object.entries(status)) {\n if (v) {\n delete (this.#handlers as any)[k]\n }\n }\n }),\n share()\n )\n\n readonly status$ = this.#status.pipe(shareReplay(1))\n readonly current$ = new ReplaySubject<S>()\n\n constructor(states: T) {\n this.states = { ...states }\n\n for (const value of Object.values(states)) {\n if (value.order == null) {\n value.order = \"parallel\"\n }\n }\n }\n\n on(state: S, fn: LifecycleHandler) {\n if (state in this.#handlers) {\n this.#handlers[state]!.push(fn)\n } else {\n this.#handlers[state] = [fn]\n }\n\n return () => {\n const idx = this.#handlers[state]!.indexOf(fn)\n if (idx > -1) {\n this.#handlers[state]!.splice(idx, 1)\n }\n }\n }\n\n onExecute(state: S) {\n return this.current$.pipe(\n takeUntil(this.#until),\n filter(current => current === state)\n )\n }\n\n onDone(state: S) {\n return this.status$.pipe(\n filter(status => status[state]),\n take(1)\n )\n }\n\n run(...states: Array<S | S[]>) {\n const flattened = flatten(states).filter((v, i, a) => a.indexOf(v) === i)\n const expectedCount = flattened.length\n return new Observable((dest: Subscriber<void>) => {\n dest.add(\n this.#status.subscribe(currentStatus => {\n const executedCount = Object.entries(currentStatus).reduce(\n (result, [name, done]) => result + (done && flattened.includes(name as S) ? 1 : 0),\n 0\n )\n\n if (executedCount >= expectedCount) {\n dest.next()\n dest.complete()\n }\n })\n )\n\n for (const s of flattened) {\n this.#trigger.next(s as S)\n }\n })\n }\n\n /**\n * Run this state changes on other state\n */\n control<T extends Lifecycle<any, any>>(state: T, remap?: LifecycleRemap<this, T>) {\n const remove: Array<() => void> = []\n\n for (const selfState of Object.keys(this.states)) {\n const otherState = (remap as unknown as any)?.[selfState] || selfState\n if (otherState in state.states) {\n remove.push(this.on(selfState as any, () => state.run(otherState)))\n }\n }\n\n return () => {\n for (const fn of remove) {\n fn()\n }\n }\n }\n\n destroy() {\n ; (this as any).#handlers = null\n this.#until.next()\n this.#until.complete()\n }\n\n #run(state: S) {\n if (this.#handlers == null || !this.states[state]) {\n return of(true)\n }\n\n return new Observable((dest: Subscriber<boolean>) => {\n this.current$.next(state)\n\n const handlers = this.#handlers[state]\n if (handlers == null || handlers.length === 0) {\n dest.next(true)\n dest.complete()\n return\n }\n\n const observables: Array<Observable<any>> = handlers.map(handler => {\n const observable = handler()\n if (observable == null) {\n return of(null)\n } else {\n return from(observable)\n }\n })\n\n const config = this.states[state]\n\n if (observables.length === 1) {\n return observables[0].pipe(map(() => true)).subscribe(dest)\n } else if (config.order === \"parallel\") {\n return forkJoin(observables)\n .pipe(map(() => true))\n .subscribe(dest)\n } else if (config.order === \"sequential\") {\n return concat(...observables)\n .pipe(map(() => true))\n .subscribe(dest)\n } else {\n dest.next(true)\n dest.complete()\n }\n\n return\n }).pipe(\n takeLast(1),\n catchError(error => {\n if (error instanceof StopLifecycle) {\n return of(false)\n } else {\n return throwError(() => error)\n }\n })\n )\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_isEqual","isEqual"],"mappings":";;;;;;;;MAQa,QAAQ,CAAA;AACR,IAAA,GAAG;AAGZ,IAAA,WAAA,CAAY,EAAe,EAAA;AAHlB,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,OAAO,EAAQ;QACzB,IAAE,CAAA,EAAA,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAGhC,QAAA,IAAI,EAAE,IAAI,IAAI,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;;;AAGpB,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM;;AAG1B,IAAA,GAAG,CAAI,CAAgB,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;aACnB;YACH,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;;AAIzC,IAAA,UAAU,CAAwB,CAAI,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,CAAC,CAAC,OAAO,EAAE;;aACR;AACH,YAAA,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;AAGxC,QAAA,OAAO,CAAC;;AAGZ,IAAA,IAAI,CAAiB,EAAK,EAAA;QACtB,MAAM,MAAM,GAAG,MAAK;AAChB,YAAA,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU;YAC5B,IAAI,MAAM,EAAE;AACR,gBAAA,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;;AAE9B,SAAC;AACD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,MAAM,EAAE;;aACL;AACH,YAAA,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;;AAG7B,QAAA,OAAO,EAAE;;AAGb,IAAA,GAAG,CAAC,CAAa,EAAA;AACb,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,CAAC,EAAE;;aACA;AACH,YAAA,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;;;IAI5B,GAAG,GAAA;AACC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;AACf,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;;;AAG9B;MAGqB,YAAY,CAAA;AADlC,IAAA,WAAA,GAAA;;AAGa,QAAA,IAAA,CAAA,CAAC,GAAG,IAAI,QAAQ,EAAE;AAY9B;;IATG,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;QACZ,OAAQ,IAAY,CAAC,CAAC;;;IAI1B,OAAO,GAAA;QACH,IAAI,CAAC,WAAW,EAAE;;8GAZJ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ACrED,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;AAE7B,MAAM,UAAU,GAAG;AACnB,MAAM,YAAY,GAAG;AAE5B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAK,EAAA,EAAA,YAAY,CAAS,MAAA,EAAA,UAAU,CAAK,GAAA,CAAA,CAAC;MAEtD,cAAc,CAAA;AACvB,IAAA,OAAO,MAAM,CAAC,KAAU,EAAE,WAAoB,EAAA;AAC1C,QAAA,IAAI,KAAK,YAAY,cAAc,EAAE;AACjC,YAAA,OAAO,KAAK;;AACT,aAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACjC,YAAA,OAAO,IAAI,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC;;AAClC,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAChC,IAAI,KAAK,EAAE;AACP,gBAAA,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;;;AAErE,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAClC,YAAA,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC;;AAGjD,QAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAA,CAAE,CAAC;;IAGjE,WACoB,CAAA,KAAa,EACb,IAAa,EAAA;QADb,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAI,CAAA,IAAA,GAAJ,IAAI;;IAGxB,QAAQ,GAAA;AACJ,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnB,OAAO,IAAI,CAAC,IAAI;;AACb,aAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YAC1B,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAA,CAAE;;aAC/B;AACH,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,KAAK,EAAE;;;AAGjC;;ACpCD;AAEa,MAAA,SAAS,GAAqB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG;AAKrG;AACO,MAAM,OAAO,GAA2CA,SAA0B;AAEnF,SAAU,UAAU,CAAI,GAAM,EAAA;AAChC,IAAA,IAAI,GAAG,IAAI,IAAI,EAAE;AACb,QAAA,OAAO,GAAU;;AAGrB,IAAA,IAAI,GAAG,YAAY,GAAG,EAAE;AACpB,QAAA,GAAG,CAAC,KAAK;AACL,YAAA,GAAG,CAAC,MAAM;AACV,gBAAA,GAAG,CAAC,GAAG;AACP,oBAAA,YAAA;AACI,wBAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC;AACvC,qBAAC;;AACF,SAAA,IAAI,GAAG,YAAY,GAAG,EAAE;AAC3B,QAAA,GAAG,CAAC,GAAG;AACH,YAAA,GAAG,CAAC,KAAK;AACT,gBAAA,GAAG,CAAC,MAAM;AACV,oBAAA,YAAA;AACI,wBAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC;AACvC,qBAAC;;;AAIT,IAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;IAElB,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AAC3C,QAAA,MAAM,IAAI,GAAI,GAAW,CAAC,IAAI,CAAC;AAC/B,QAAA,MAAM,IAAI,GAAG,OAAO,IAAI;;AAGxB,QAAA,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACtE,UAAU,CAAC,IAAI,CAAC;;AAExB,KAAC,CAAC;AAEF,IAAA,OAAO,GAAU;AACrB;AAEA;;;;;AAKG;AACa,SAAA,QAAQ,CAAI,KAAmB,EAAE,EAA0B,EAAA;AACvE,IAAA,IAAI,OAAQ,KAAa,CAAC,QAAQ,KAAK,UAAU,EAAE;AAC/C,QAAA,OAAQ,KAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;;SAC/B;QACH,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;AAEtC;AAmBM,SAAU,OAAO,CAAI,KAAQ,EAAA;AAC/B,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACf,QAAA,OAAO,IAAI;;AACR,SAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAClC,QAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;;AACtB,SAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAClC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;;AAC/B,SAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC7B,QAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;;AACtB,SAAA,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;QAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;;AACnC,SAAA,IAAK,KAAa,YAAY,GAAG,EAAE;AACtC,QAAA,OAAQ,KAAa,CAAC,IAAI,KAAK,CAAC;;AAC7B,SAAA,IAAK,KAAa,YAAY,GAAG,EAAE;AACtC,QAAA,OAAQ,KAAa,CAAC,IAAI,KAAK,CAAC;;IAEpC,OAAO,KAAK,KAAK,KAAK;AAC1B;AAIM,SAAU,QAAQ,CAAI,KAAQ,EAAA;AAChC,IAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAC1B;;ACtGM,SAAU,cAAc,CAAC,KAAmB,EAAA;AAC9C,IAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,CAAC;AAC9E;;ACFM,SAAU,aAAa,CAAI,KAAwB,EAAA;AACrD,IAAA,IAAI,KAAK,YAAY,UAAU,EAAE;QAC7B,OAAO,KAAK,CAAC,aAAa;;AAE9B,IAAA,OAAO,KAAK;AAChB;AAEM,SAAU,cAAc,CAAC,KAAU,EAAA;AACrC,IAAA,OAAO,KAAK,YAAY,OAAO,IAAI,KAAK,YAAY,UAAU;AAClE;;ACkBO,MAAM,OAAO,GAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;AACnE,MAAM,aAAa,GAA2B,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,IAAI;SAEpE,iBAAiB,CAC7B,EAAkB,EAClB,OAAU,aAAoB,EAAA;IAE9B,IAAI,MAAM,GAAoB,EAAE,CAAC,YAAY,CAAC,IAAI,CAC9C,SAAS,CAAC,IAAI,CAAC,EACf,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CACtB;AAED,IAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,QAAA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;AAGrD,IAAA,IAAI,IAAI,CAAC,WAAW,EAAE;QAClB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;;AAG3D,IAAA,OAAO,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAQ;AACnD;AAEM,SAAU,oBAAoB,CAChC,EAAkB,EAClB,QAAW,EACX,OAA0B,OAAO,EAAA;IAEjC,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAChC,SAAS,CAAC,IAAI,CAAC,EACf,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAC1B;AAED,IAAA,OAAO,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC;AAC5C;AAEA,SAAS,mBAAmB,CAAI,CAAgB,EAAE,IAAuB,EAAA;AACrE,IAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;QACf,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAACC,SAAO,CAAC,CAAC;;AAG7C,IAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;QACf,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;;IAGpC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACjC;;AC7EO,MAAM,IAAI,GAAI,MAAc,CAAC,IAAI;AAElC,SAAU,eAAe,CAAmB,GAAM,EAAA;IACpD,MAAM,MAAM,GACR,OAAO,IAAI,KAAK,WAAW,IAAK,IAAY,CAAC;AACzC,UAAG,IAAY,CAAC,UAAU,CAAC,GAAG;AAC9B,UAAE,CAAA,eAAA,EAAkB,GAAG,CAAA,CAAE;AACjC,IAAA,OAAO,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,WAAW,GAAG,MAAM,GAAG,GAAG;AAC/D;AAEa,MAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC;AACpD,MAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC;AACxD,MAAA,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC;AACtD,MAAA,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC;AAC1D,MAAA,wBAAwB,GAAG,MAAM,CAAC,eAAe,CAAC,uBAAuB,CAAC;AAC1E,MAAA,uBAAuB,GAAG,MAAM,CAAC,eAAe,CAAC,sBAAsB,CAAC;;ACXrF,MAAM,QAAQ,CAAA;AACV,IAAA,MAAM;IACN,OAAO,GAA0B,EAAE;IACnC,QAAQ,GAA0B,EAAE;AAE7B,IAAA,MAAM,CAAC,OAAuB,EAAA;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1B,IAAI,CAAC,SAAS,EAAE;;AAGb,IAAA,UAAU,CAAC,OAAuB,EAAA;AACrC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9B,SAAC,CAAC;QACF,IAAI,CAAC,SAAS,EAAE;;AAGb,IAAA,OAAO,CAAC,OAAuB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,SAAS,EAAE;;AAGb,IAAA,QAAQ,CAAC,EAAe,EAAE,KAA6B,EAAE,KAAsB,EAAA;AAClF,QAAA,IAAI,CAAC,MAAM,CAAC,MAAK;AACb,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxC,gBAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACX,oBAAA,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;;qBACvB;oBACH,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;;;YAIlC,KAAK,IAAI,KAAK,EAAE;AACpB,SAAC,CAAC;;AAGC,IAAA,aAAa,CAAC,EAAe,EAAE,KAA6B,EAAE,KAAsB,EAAA;AACvF,QAAA,IAAI,CAAC,MAAM,CAAC,MAAK;AACb,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxC,gBAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACX,oBAAA,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;;qBAClB;AACH,oBAAA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;;;YAI7B,KAAK,IAAI,KAAK,EAAE;AACpB,SAAC,CAAC;;IAGE,SAAS,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;IAI9D,MAAM,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAElB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC;QACb,IAAI,CAAC,MAAM,CAAC;AAEZ,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC7C,IAAI,CAAC,SAAS,EAAE;;;AAG3B;AAED,SAAS,IAAI,CAAC,KAAuB,EAAA;AACjC,IAAA,IAAI,IAAoB;IACxB,QAAQ,IAAI,GAAG,KAAK,CAAC,KAAK,EAAG,GAAG;AAC5B,QAAA,IAAI,EAAE;;AAEd;AAEa,MAAA,OAAO,GAAG,IAAI,QAAQ;;ACtD7B,MAAO,aAAc,SAAQ,KAAK,CAAA;AAAI;MAW/B,SAAS,CAAA;AAET,IAAA,SAAS;AAET,IAAA,MAAM;AACN,IAAA,QAAQ;AACR,IAAA,OAAO;AAgDhB,IAAA,WAAA,CAAY,MAAS,EAAA;QApDZ,IAAS,CAAA,SAAA,GAAgD,EAAE;AAE3D,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAAQ;AAC5B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAK;QAC3B,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CACjC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EACtB,IAAI,CACA,CAAC,MAAM,EAAE,OAAO,KAAI;AAChB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AAClB,gBAAA,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAY,CAAC,CAAC,IAAI,CAC1C,GAAG,CAAC,QAAQ,IAAG;AACX,oBAAA,IAAI,QAAQ,KAAK,KAAK,EAAE;AACpB,wBAAA,OAAO,MAAM,CAAC,OAAO,CAAC;;iBAE7B,CAAC,EACF,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAiB,CAAC,EACtD,WAAW,CAAC,CAAC,CAAC,CACjB;;AAEL,YAAA,OAAO,MAAM;SAChB,EACD,EAAyC,CAC5C,EACD,SAAS,CAAC,QAAQ,IAAG;YACjB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAoC;AACvE,YAAA,OAAO,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CACvB,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,QAAQ,EAAE,KAAK,CAAC,EAC7C,MAAM,CACF,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAI;gBACzB,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,GAAG,QAAQ,EAAE;AAC1C,aAAC,EACD,EAAwB,CAC3B,CACJ;AACL,SAAC,CAAC,EACF,GAAG,CAAC,MAAM,IAAG;AACT,YAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;gBACxB;;AAGJ,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACzC,IAAI,CAAC,EAAE;AACH,oBAAA,OAAQ,IAAI,CAAC,SAAiB,CAAC,CAAC,CAAC;;;AAG7C,SAAC,CAAC,EACF,KAAK,EAAE,CACV;AAEQ,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,aAAa,EAAK;AAGtC,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE;QAE3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACvC,YAAA,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;AACrB,gBAAA,KAAK,CAAC,KAAK,GAAG,UAAU;;;;IAKpC,EAAE,CAAC,KAAQ,EAAE,EAAoB,EAAA;AAC7B,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC;;aAC5B;YACH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;;AAGhC,QAAA,OAAO,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC,EAAE,CAAC;AAC9C,YAAA,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;AACV,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;;AAE7C,SAAC;;AAGL,IAAA,SAAS,CAAC,KAAQ,EAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EACtB,MAAM,CAAC,OAAO,IAAI,OAAO,KAAK,KAAK,CAAC,CACvC;;AAGL,IAAA,MAAM,CAAC,KAAQ,EAAA;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACpB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAC/B,IAAI,CAAC,CAAC,CAAC,CACV;;IAGL,GAAG,CAAC,GAAG,MAAsB,EAAA;QACzB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACzE,QAAA,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM;AACtC,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,IAAsB,KAAI;YAC7C,IAAI,CAAC,GAAG,CACJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,IAAG;gBACnC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CACtD,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,MAAM,IAAI,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAClF,CAAC,CACJ;AAED,gBAAA,IAAI,aAAa,IAAI,aAAa,EAAE;oBAChC,IAAI,CAAC,IAAI,EAAE;oBACX,IAAI,CAAC,QAAQ,EAAE;;aAEtB,CAAC,CACL;AAED,YAAA,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;AACvB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAM,CAAC;;AAElC,SAAC,CAAC;;AAGN;;AAEG;IACH,OAAO,CAAgC,KAAQ,EAAE,KAA+B,EAAA;QAC5E,MAAM,MAAM,GAAsB,EAAE;AAEpC,QAAA,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC9C,MAAM,UAAU,GAAI,KAAwB,GAAG,SAAS,CAAC,IAAI,SAAS;AACtE,YAAA,IAAI,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE;gBAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAgB,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;;;AAI3E,QAAA,OAAO,MAAK;AACR,YAAA,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE;AACrB,gBAAA,EAAE,EAAE;;AAEZ,SAAC;;IAGL,OAAO,GAAA;QACH;AAAG,QAAA,IAAY,CAAC,SAAS,GAAG,IAAI;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;;AAG1B,IAAA,IAAI,CAAC,KAAQ,EAAA;AACT,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC/C,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;;AAGnB,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,IAAyB,KAAI;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACtC,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACf,IAAI,CAAC,QAAQ,EAAE;gBACf;;YAGJ,MAAM,WAAW,GAA2B,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAG;AAC/D,gBAAA,MAAM,UAAU,GAAG,OAAO,EAAE;AAC5B,gBAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACpB,oBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;;qBACZ;AACH,oBAAA,OAAO,IAAI,CAAC,UAAU,CAAC;;AAE/B,aAAC,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAEjC,YAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;;AACxD,iBAAA,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE;gBACpC,OAAO,QAAQ,CAAC,WAAW;qBACtB,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC;qBACpB,SAAS,CAAC,IAAI,CAAC;;AACjB,iBAAA,IAAI,MAAM,CAAC,KAAK,KAAK,YAAY,EAAE;AACtC,gBAAA,OAAO,MAAM,CAAC,GAAG,WAAW;qBACvB,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC;qBACpB,SAAS,CAAC,IAAI,CAAC;;iBACjB;AACH,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACf,IAAI,CAAC,QAAQ,EAAE;;YAGnB;AACJ,SAAC,CAAC,CAAC,IAAI,CACH,QAAQ,CAAC,CAAC,CAAC,EACX,UAAU,CAAC,KAAK,IAAG;AACf,YAAA,IAAI,KAAK,YAAY,aAAa,EAAE;AAChC,gBAAA,OAAO,EAAE,CAAC,KAAK,CAAC;;iBACb;AACH,gBAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;;SAErC,CAAC,CACL;;AAER;;AC7OD;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@ngutil/common",
3
- "version": "0.0.81",
3
+ "version": "0.0.83",
4
4
  "peerDependencies": {
5
- "@angular/cdk": "18.2.6",
6
- "@angular/core": "18.2.6",
7
- "lodash": "^4.17.21",
5
+ "@angular/cdk": "19.2.11",
6
+ "@angular/core": "19.2.8",
7
+ "es-toolkit": "^1.35.0",
8
8
  "rxjs": "^7.8.1",
9
9
  "utility-types": "^3.11.0"
10
10
  },
@@ -21,8 +21,6 @@
21
21
  },
22
22
  ".": {
23
23
  "types": "./index.d.ts",
24
- "esm2022": "./esm2022/ngutil-common.mjs",
25
- "esm": "./esm2022/ngutil-common.mjs",
26
24
  "default": "./fesm2022/ngutil-common.mjs"
27
25
  }
28
26
  },
package/util.d.ts CHANGED
@@ -1,9 +1,9 @@
1
+ import { isPlainObject } from "es-toolkit";
1
2
  import { DeepReadonly } from "./types/readonly";
2
3
  import { IfAny, IfTuple } from "./types/util";
3
4
  export declare const deepClone: <T>(obj: T) => T;
4
- export declare const isPlainObject: (arg: any) => arg is {
5
- [key: string]: any;
6
- };
5
+ export { isPlainObject };
6
+ export declare const isEqual: <A, B extends A>(a: A, b: B) => a is B;
7
7
  export declare function deepFreeze<T>(obj: T): DeepReadonly<T>;
8
8
  /**
9
9
  * @example
@@ -23,4 +23,3 @@ export type IsFalsy<O> = FalsyIfNull<O> | FalsyIfUndefined<O> | FalsyIfBool<O> |
23
23
  export declare function isFalsy<T>(value: T): value is IsFalsy<T> & T;
24
24
  export type IsTruthy<T> = Exclude<T, undefined | null | false | "" | 0>;
25
25
  export declare function isTruthy<T>(value: T): value is IsTruthy<T>;
26
- export {};
@@ -1,5 +0,0 @@
1
- import { isTruthy } from "../util";
2
- export function coerceBoolAttr(value) {
3
- return isTruthy(value) || (typeof value === "string" && value !== "false");
4
- }
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbC1hdHRyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb2VyY2UvYm9vbC1hdHRyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFJbEMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFtQjtJQUM5QyxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUE7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzVHJ1dGh5IH0gZnJvbSBcIi4uL3V0aWxcIlxuXG5leHBvcnQgdHlwZSBCb29sZWFuSW5wdXQgPSBzdHJpbmcgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZFxuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlQm9vbEF0dHIodmFsdWU6IEJvb2xlYW5JbnB1dCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydXRoeSh2YWx1ZSkgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZSAhPT0gXCJmYWxzZVwiKVxufVxuIl19
@@ -1,11 +0,0 @@
1
- import { ElementRef } from "@angular/core";
2
- export function coerceElement(value) {
3
- if (value instanceof ElementRef) {
4
- return value.nativeElement;
5
- }
6
- return value;
7
- }
8
- export function isElementInput(value) {
9
- return value instanceof Element || value instanceof ElementRef;
10
- }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29lcmNlL2VsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUkxQyxNQUFNLFVBQVUsYUFBYSxDQUFJLEtBQXdCO0lBQ3JELElBQUksS0FBSyxZQUFZLFVBQVUsRUFBRSxDQUFDO1FBQzlCLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQTtJQUM5QixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUE7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBVTtJQUNyQyxPQUFPLEtBQUssWUFBWSxPQUFPLElBQUksS0FBSyxZQUFZLFVBQVUsQ0FBQTtBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuZXhwb3J0IHR5cGUgRWxlbWVudElucHV0PFQgZXh0ZW5kcyBFbGVtZW50ID0gSFRNTEVsZW1lbnQ+ID0gVCB8IEVsZW1lbnRSZWY8VD5cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUVsZW1lbnQ8VD4odmFsdWU6IFQgfCBFbGVtZW50UmVmPFQ+KTogVCB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRWxlbWVudFJlZikge1xuICAgICAgICByZXR1cm4gdmFsdWUubmF0aXZlRWxlbWVudFxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRWxlbWVudElucHV0KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBFbGVtZW50SW5wdXQge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50UmVmXG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdC1wcm90b2NvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29ubmVjdC1wcm90b2NvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCJcblxuLyoqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNsYXNzIEJ1c3kgaW1wbGVtZW50cyBDb25uZWN0UHJvdG9jb2wge1xuICogICAgIGNvbm5lY3Qob2I6IE9ic2VydmFibGU8YW55Pik6IE9ic2VydmFibGU8YW55PiB7XG4gKiAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShzID0+IHtcbiAqICAgICAgICAgICAgIGNvbnN0IHN1YiA9IHRoaXMuZG9Tb21ldGhpbmcoKS5zdWJzY3JpYmUocylcbiAqICAgICAgICAgICAgIHJldHVybiBzdWIudW5zdWJzY3JpYmUuYmluZChzdWIpXG4gKiAgICAgICAgIH0pXG4gKiAgICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdFByb3RvY29sIHtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBXaGVuIHRoZSBvYnNlcnZhYmxlIGlzIHVuc3Vic2NyaWJlZCwgdGhlIGNvbm5lY3QgbWV0aG9kIGNsZWFucyB1cCBldmVyeXRoaW5nXG4gICAgICovXG4gICAgY29ubmVjdCguLi5hcmdzOiBhbnlbXSk6IE9ic2VydmFibGU8dW5rbm93bj5cbn1cbiJdfQ==
@@ -1,83 +0,0 @@
1
- import { Directive } from "@angular/core";
2
- import { share, Subject, take, takeUntil } from "rxjs";
3
- import * as i0 from "@angular/core";
4
- export class Destruct {
5
- #on;
6
- constructor(fn) {
7
- this.#on = new Subject();
8
- this.on = this.#on.pipe(share());
9
- if (fn != null) {
10
- this.any(fn);
11
- }
12
- }
13
- get done() {
14
- return this.#on.closed;
15
- }
16
- sub(o) {
17
- if (this.done) {
18
- return o.pipe(take(0));
19
- }
20
- else {
21
- return o.pipe(takeUntil(this.on));
22
- }
23
- }
24
- disposable(d) {
25
- if (this.done) {
26
- d.dispose();
27
- }
28
- else {
29
- this.on.subscribe(d.dispose.bind(d));
30
- }
31
- return d;
32
- }
33
- node(el) {
34
- const remove = () => {
35
- const parent = el.parentNode;
36
- if (parent) {
37
- parent.removeChild(el);
38
- }
39
- };
40
- if (this.done) {
41
- remove();
42
- }
43
- else {
44
- this.on.subscribe(remove);
45
- }
46
- return el;
47
- }
48
- any(f) {
49
- if (this.done) {
50
- f();
51
- }
52
- else {
53
- this.on.subscribe(f);
54
- }
55
- }
56
- run() {
57
- if (!this.done) {
58
- this.#on.next();
59
- this.#on.complete();
60
- }
61
- }
62
- }
63
- export class Destructible {
64
- constructor() {
65
- /** @ignore */
66
- this.d = new Destruct();
67
- }
68
- /** @ignore */
69
- ngOnDestroy() {
70
- this.d.run();
71
- delete this.d;
72
- }
73
- /** @ignore */
74
- dispose() {
75
- this.ngOnDestroy();
76
- }
77
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: Destructible, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
78
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: Destructible, ngImport: i0 }); }
79
- }
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: Destructible, decorators: [{
81
- type: Directive
82
- }] });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJ1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2Rlc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUE7QUFFcEQsT0FBTyxFQUFjLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQTs7QUFNbEUsTUFBTSxPQUFPLFFBQVE7SUFDUixHQUFHLENBQXNCO0lBR2xDLFlBQVksRUFBZTtRQUhsQixRQUFHLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQTtRQUN6QixPQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUdoQyxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFDRCxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBQzFCLENBQUM7SUFFRCxHQUFHLENBQUksQ0FBZ0I7UUFDbkIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDMUIsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ3JDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUF3QixDQUFJO1FBQ2xDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ2YsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3hDLENBQUM7UUFFRCxPQUFPLENBQUMsQ0FBQTtJQUNaLENBQUM7SUFFRCxJQUFJLENBQWlCLEVBQUs7UUFDdEIsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFO1lBQ2hCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUE7WUFDNUIsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDVCxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQzFCLENBQUM7UUFDTCxDQUFDLENBQUE7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLE1BQU0sRUFBRSxDQUFBO1FBQ1osQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM3QixDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUE7SUFDYixDQUFDO0lBRUQsR0FBRyxDQUFDLENBQWE7UUFDYixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLENBQUMsRUFBRSxDQUFBO1FBQ1AsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN4QixDQUFDO0lBQ0wsQ0FBQztJQUVELEdBQUc7UUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtZQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDdkIsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQUdELE1BQU0sT0FBZ0IsWUFBWTtJQURsQztRQUVJLGNBQWM7UUFDTCxNQUFDLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQTtLQVk5QjtJQVZHLGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUNaLE9BQVEsSUFBWSxDQUFDLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBRUQsY0FBYztJQUNkLE9BQU87UUFDSCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDdEIsQ0FBQzs4R0FiaUIsWUFBWTtrR0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQURqQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IE9ic2VydmFibGUsIHNoYXJlLCBTdWJqZWN0LCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgSURpc3Bvc2FibGUge1xuICAgIGRpc3Bvc2UoKTogdm9pZFxufVxuXG5leHBvcnQgY2xhc3MgRGVzdHJ1Y3Qge1xuICAgIHJlYWRvbmx5ICNvbiA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcbiAgICByZWFkb25seSBvbiA9IHRoaXMuI29uLnBpcGUoc2hhcmUoKSlcblxuICAgIGNvbnN0cnVjdG9yKGZuPzogKCkgPT4gdm9pZCkge1xuICAgICAgICBpZiAoZm4gIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5hbnkoZm4pXG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGRvbmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLiNvbi5jbG9zZWRcbiAgICB9XG5cbiAgICBzdWI8VD4obzogT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgICAgICByZXR1cm4gby5waXBlKHRha2UoMCkpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gby5waXBlKHRha2VVbnRpbCh0aGlzLm9uKSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRpc3Bvc2FibGU8VCBleHRlbmRzIElEaXNwb3NhYmxlPihkOiBUKTogVCB7XG4gICAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgICAgIGQuZGlzcG9zZSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uLnN1YnNjcmliZShkLmRpc3Bvc2UuYmluZChkKSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkXG4gICAgfVxuXG4gICAgbm9kZTxUIGV4dGVuZHMgTm9kZT4oZWw6IFQpOiBUIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZWwucGFyZW50Tm9kZVxuICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChlbClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgICAgICByZW1vdmUoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbi5zdWJzY3JpYmUocmVtb3ZlKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVsXG4gICAgfVxuXG4gICAgYW55KGY6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICAgICAgZigpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uLnN1YnNjcmliZShmKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcnVuKCkge1xuICAgICAgICBpZiAoIXRoaXMuZG9uZSkge1xuICAgICAgICAgICAgdGhpcy4jb24ubmV4dCgpXG4gICAgICAgICAgICB0aGlzLiNvbi5jb21wbGV0ZSgpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERlc3RydWN0aWJsZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgSURpc3Bvc2FibGUge1xuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgZCA9IG5ldyBEZXN0cnVjdCgpXG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmQucnVuKClcbiAgICAgICAgZGVsZXRlICh0aGlzIGFzIGFueSkuZFxuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgZGlzcG9zZSgpIHtcbiAgICAgICAgdGhpcy5uZ09uRGVzdHJveSgpXG4gICAgfVxufVxuIl19
package/esm2022/dom.mjs DELETED
@@ -1,71 +0,0 @@
1
- import { rawRequestAnimationFrame } from "./unngzone";
2
- class _FastDOM {
3
- #rafId;
4
- #mutate = [];
5
- #measure = [];
6
- mutate(handler) {
7
- this.#mutate.push(handler);
8
- this._schedule();
9
- }
10
- mutateNext(handler) {
11
- this.#mutate.push(() => {
12
- this.#mutate.push(handler);
13
- });
14
- this._schedule();
15
- }
16
- measure(handler) {
17
- this.#measure.push(handler);
18
- this._schedule();
19
- }
20
- setStyle(el, style, chain) {
21
- this.mutate(() => {
22
- for (const [k, v] of Object.entries(style)) {
23
- if (v == null) {
24
- el.style.removeProperty(k);
25
- }
26
- else {
27
- el.style.setProperty(k, v);
28
- }
29
- }
30
- chain && chain();
31
- });
32
- }
33
- setAttributes(el, attrs, chain) {
34
- this.mutate(() => {
35
- for (const [k, v] of Object.entries(attrs)) {
36
- if (v == null) {
37
- el.removeAttribute(k);
38
- }
39
- else {
40
- el.setAttribute(k, v);
41
- }
42
- }
43
- chain && chain();
44
- });
45
- }
46
- _schedule() {
47
- if (!this.#rafId) {
48
- this.#rafId = rawRequestAnimationFrame(this._apply.bind(this));
49
- }
50
- }
51
- _apply() {
52
- this.#rafId = null;
53
- const measure = this.#measure.slice();
54
- const mutate = this.#mutate.slice();
55
- this.#measure.length = 0;
56
- this.#mutate.length = 0;
57
- runQ(measure);
58
- runQ(mutate);
59
- if (this.#measure.length || this.#mutate.length) {
60
- this._schedule();
61
- }
62
- }
63
- }
64
- function runQ(items) {
65
- let item;
66
- while ((item = items.shift())) {
67
- item();
68
- }
69
- }
70
- export const FastDOM = new _FastDOM();
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9kb20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBSXJELE1BQU0sUUFBUTtJQUNWLE1BQU0sQ0FBSztJQUNYLE9BQU8sR0FBMEIsRUFBRSxDQUFBO0lBQ25DLFFBQVEsR0FBMEIsRUFBRSxDQUFBO0lBRTdCLE1BQU0sQ0FBQyxPQUF1QjtRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMxQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDcEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUF1QjtRQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDOUIsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDcEIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxPQUF1QjtRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDcEIsQ0FBQztJQUVNLFFBQVEsQ0FBQyxFQUFlLEVBQUUsS0FBNkIsRUFBRSxLQUFzQjtRQUNsRixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNiLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNaLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUM5QixDQUFDO3FCQUFNLENBQUM7b0JBQ0osRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO2dCQUM5QixDQUFDO1lBQ0wsQ0FBQztZQUVELEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQTtRQUNwQixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFTSxhQUFhLENBQUMsRUFBZSxFQUFFLEtBQTZCLEVBQUUsS0FBc0I7UUFDdkYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDYixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDWixFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUN6QixDQUFDO3FCQUFNLENBQUM7b0JBQ0osRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7Z0JBQ3pCLENBQUM7WUFDTCxDQUFDO1lBRUQsS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFBO1FBQ3BCLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVPLFNBQVM7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ2xFLENBQUM7SUFDTCxDQUFDO0lBRU8sTUFBTTtRQUNWLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFBO1FBRWxCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO1FBRXZCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVaLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDcEIsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQUVELFNBQVMsSUFBSSxDQUFDLEtBQXVCO0lBQ2pDLElBQUksSUFBb0IsQ0FBQTtJQUN4QixPQUFPLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUcsQ0FBQyxFQUFFLENBQUM7UUFDN0IsSUFBSSxFQUFFLENBQUE7SUFDVixDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmF3UmVxdWVzdEFuaW1hdGlvbkZyYW1lIH0gZnJvbSBcIi4vdW5uZ3pvbmVcIlxuXG50eXBlIEZhc3REb21IYW5kbGVyID0gKCkgPT4gdm9pZFxuXG5jbGFzcyBfRmFzdERPTSB7XG4gICAgI3JhZklkOiBhbnlcbiAgICAjbXV0YXRlOiBBcnJheTxGYXN0RG9tSGFuZGxlcj4gPSBbXVxuICAgICNtZWFzdXJlOiBBcnJheTxGYXN0RG9tSGFuZGxlcj4gPSBbXVxuXG4gICAgcHVibGljIG11dGF0ZShoYW5kbGVyOiBGYXN0RG9tSGFuZGxlcikge1xuICAgICAgICB0aGlzLiNtdXRhdGUucHVzaChoYW5kbGVyKVxuICAgICAgICB0aGlzLl9zY2hlZHVsZSgpXG4gICAgfVxuXG4gICAgcHVibGljIG11dGF0ZU5leHQoaGFuZGxlcjogRmFzdERvbUhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy4jbXV0YXRlLnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jbXV0YXRlLnB1c2goaGFuZGxlcilcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5fc2NoZWR1bGUoKVxuICAgIH1cblxuICAgIHB1YmxpYyBtZWFzdXJlKGhhbmRsZXI6IEZhc3REb21IYW5kbGVyKSB7XG4gICAgICAgIHRoaXMuI21lYXN1cmUucHVzaChoYW5kbGVyKVxuICAgICAgICB0aGlzLl9zY2hlZHVsZSgpXG4gICAgfVxuXG4gICAgcHVibGljIHNldFN0eWxlKGVsOiBIVE1MRWxlbWVudCwgc3R5bGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGNoYWluPzogRmFzdERvbUhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy5tdXRhdGUoKCkgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoc3R5bGUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHYgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShrKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KGssIHYpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjaGFpbiAmJiBjaGFpbigpXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHVibGljIHNldEF0dHJpYnV0ZXMoZWw6IEhUTUxFbGVtZW50LCBhdHRyczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhaW4/OiBGYXN0RG9tSGFuZGxlcikge1xuICAgICAgICB0aGlzLm11dGF0ZSgoKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhhdHRycykpIHtcbiAgICAgICAgICAgICAgICBpZiAodiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShrLCB2KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2hhaW4gJiYgY2hhaW4oKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgX3NjaGVkdWxlKCkge1xuICAgICAgICBpZiAoIXRoaXMuI3JhZklkKSB7XG4gICAgICAgICAgICB0aGlzLiNyYWZJZCA9IHJhd1JlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9hcHBseS5iaW5kKHRoaXMpKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXBwbHkoKSB7XG4gICAgICAgIHRoaXMuI3JhZklkID0gbnVsbFxuXG4gICAgICAgIGNvbnN0IG1lYXN1cmUgPSB0aGlzLiNtZWFzdXJlLnNsaWNlKClcbiAgICAgICAgY29uc3QgbXV0YXRlID0gdGhpcy4jbXV0YXRlLnNsaWNlKClcbiAgICAgICAgdGhpcy4jbWVhc3VyZS5sZW5ndGggPSAwXG4gICAgICAgIHRoaXMuI211dGF0ZS5sZW5ndGggPSAwXG5cbiAgICAgICAgcnVuUShtZWFzdXJlKVxuICAgICAgICBydW5RKG11dGF0ZSlcblxuICAgICAgICBpZiAodGhpcy4jbWVhc3VyZS5sZW5ndGggfHwgdGhpcy4jbXV0YXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2NoZWR1bGUoKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBydW5RKGl0ZW1zOiBGYXN0RG9tSGFuZGxlcltdKSB7XG4gICAgbGV0IGl0ZW06IEZhc3REb21IYW5kbGVyXG4gICAgd2hpbGUgKChpdGVtID0gaXRlbXMuc2hpZnQoKSEpKSB7XG4gICAgICAgIGl0ZW0oKVxuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IEZhc3RET00gPSBuZXcgX0Zhc3RET00oKVxuIl19
@@ -1,2 +0,0 @@
1
- export * from "./observable";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2Zvcm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9vYnNlcnZhYmxlXCJcbiJdfQ==
@@ -1,30 +0,0 @@
1
- import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
2
- import { debounceTime, distinctUntilChanged, map, shareReplay, startWith } from "rxjs";
3
- import { isEqual } from "lodash-es";
4
- import { isFalsy } from "../util";
5
- export const DEFAULT = { distinct: true, destruct: true };
6
- export const VALUE_DEFAULT = { ...DEFAULT, falsyToNull: true };
7
- export function fcObservableValue(fc, opts = VALUE_DEFAULT) {
8
- let result = fc.valueChanges.pipe(startWith(null), map(() => fc.value));
9
- if (opts.debounce) {
10
- result = result.pipe(debounceTime(opts.debounce));
11
- }
12
- if (opts.falsyToNull) {
13
- result = result.pipe(map(v => (isFalsy(v) ? null : v)));
14
- }
15
- return handleCommonOptions(result, opts);
16
- }
17
- export function fcObservableProperty(fc, property, opts = DEFAULT) {
18
- const result = fc.statusChanges.pipe(startWith(null), map(() => fc[property]));
19
- return handleCommonOptions(result, opts);
20
- }
21
- function handleCommonOptions(o, opts) {
22
- if (opts.distinct) {
23
- o = o.pipe(distinctUntilChanged(isEqual));
24
- }
25
- if (opts.destruct) {
26
- o = o.pipe(takeUntilDestroyed());
27
- }
28
- return o.pipe(shareReplay(1));
29
- }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvZm9ybS9vYnNlcnZhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBRy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFbEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUVuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBd0JqQyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQXNCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUE7QUFDNUUsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUEyQixFQUFFLEdBQUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQTtBQUV0RixNQUFNLFVBQVUsaUJBQWlCLENBQzdCLEVBQWtCLEVBQ2xCLE9BQVUsYUFBb0I7SUFFOUIsSUFBSSxNQUFNLEdBQW9CLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUM5QyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FDdEIsQ0FBQTtJQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCxPQUFPLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQVEsQ0FBQTtBQUNuRCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUNoQyxFQUFrQixFQUNsQixRQUFXLEVBQ1gsT0FBMEIsT0FBTztJQUVqQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDaEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDMUIsQ0FBQTtJQUVELE9BQU8sbUJBQW1CLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO0FBQzVDLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFJLENBQWdCLEVBQUUsSUFBdUI7SUFDckUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiXG5cbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gXCJsb2Rhc2gtZXNcIlxuXG5pbXBvcnQgeyBpc0ZhbHN5IH0gZnJvbSBcIi4uL3V0aWxcIlxuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFibGVPcHRpb25zIHtcbiAgICBkaXN0aW5jdD86IGJvb2xlYW5cbiAgICBkZXN0cnVjdD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBPYnNlcnZhYmxlVmFsdWVPcHRpb25zIGV4dGVuZHMgT2JzZXJ2YWJsZU9wdGlvbnMge1xuICAgIGRlYm91bmNlPzogbnVtYmVyXG4gICAgZmFsc3lUb051bGw/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIEZvcm1Db250cm9sUHJvcGVydGllcyA9XG4gICAgfCBcInZhbGlkXCJcbiAgICB8IFwiaW52YWxpZFwiXG4gICAgfCBcInN0YXR1c1wiXG4gICAgfCBcInByaXN0aW5lXCJcbiAgICB8IFwiZGlydHlcIlxuICAgIHwgXCJ0b3VjaGVkXCJcbiAgICB8IFwidW50b3VjaGVkXCJcbiAgICB8IFwiZGlzYWJsZWRcIlxuICAgIHwgXCJlbmFibGVkXCJcbiAgICB8IFwiZXJyb3JzXCJcblxuZXhwb3J0IGNvbnN0IERFRkFVTFQ6IE9ic2VydmFibGVPcHRpb25zID0geyBkaXN0aW5jdDogdHJ1ZSwgZGVzdHJ1Y3Q6IHRydWUgfVxuZXhwb3J0IGNvbnN0IFZBTFVFX0RFRkFVTFQ6IE9ic2VydmFibGVWYWx1ZU9wdGlvbnMgPSB7IC4uLkRFRkFVTFQsIGZhbHN5VG9OdWxsOiB0cnVlIH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZjT2JzZXJ2YWJsZVZhbHVlPFQsIE8gZXh0ZW5kcyBPYnNlcnZhYmxlVmFsdWVPcHRpb25zPihcbiAgICBmYzogRm9ybUNvbnRyb2w8VD4sXG4gICAgb3B0czogTyA9IFZBTFVFX0RFRkFVTFQgYXMgYW55XG4pOiBPYnNlcnZhYmxlPE8gZXh0ZW5kcyB7IGZhbHN5VG9OdWxsOiB0cnVlIH0gPyBUIHwgbnVsbCA6IFQ+IHtcbiAgICBsZXQgcmVzdWx0OiBPYnNlcnZhYmxlPGFueT4gPSBmYy52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICBtYXAoKCkgPT4gZmMudmFsdWUpXG4gICAgKVxuXG4gICAgaWYgKG9wdHMuZGVib3VuY2UpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnBpcGUoZGVib3VuY2VUaW1lKG9wdHMuZGVib3VuY2UpKVxuICAgIH1cblxuICAgIGlmIChvcHRzLmZhbHN5VG9OdWxsKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5waXBlKG1hcCh2ID0+IChpc0ZhbHN5KHYpID8gbnVsbCA6IHYpKSlcbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlQ29tbW9uT3B0aW9ucyhyZXN1bHQsIG9wdHMpIGFzIGFueVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmNPYnNlcnZhYmxlUHJvcGVydHk8VCwgUCBleHRlbmRzIEZvcm1Db250cm9sUHJvcGVydGllcz4oXG4gICAgZmM6IEZvcm1Db250cm9sPFQ+LFxuICAgIHByb3BlcnR5OiBQLFxuICAgIG9wdHM6IE9ic2VydmFibGVPcHRpb25zID0gREVGQVVMVFxuKTogT2JzZXJ2YWJsZTxGb3JtQ29udHJvbDxUPltQXT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGZjLnN0YXR1c0NoYW5nZXMucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICBtYXAoKCkgPT4gZmNbcHJvcGVydHldKVxuICAgIClcblxuICAgIHJldHVybiBoYW5kbGVDb21tb25PcHRpb25zKHJlc3VsdCwgb3B0cylcbn1cblxuZnVuY3Rpb24gaGFuZGxlQ29tbW9uT3B0aW9uczxUPihvOiBPYnNlcnZhYmxlPFQ+LCBvcHRzOiBPYnNlcnZhYmxlT3B0aW9ucyk6IE9ic2VydmFibGU8VD4ge1xuICAgIGlmIChvcHRzLmRpc3RpbmN0KSB7XG4gICAgICAgIG8gPSBvLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoaXNFcXVhbCkpXG4gICAgfVxuXG4gICAgaWYgKG9wdHMuZGVzdHJ1Y3QpIHtcbiAgICAgICAgbyA9IG8ucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICB9XG5cbiAgICByZXR1cm4gby5waXBlKHNoYXJlUmVwbGF5KDEpKVxufVxuIl19
package/esm2022/index.mjs DELETED
@@ -1,12 +0,0 @@
1
- export { Destruct, Destructible } from "./destruct";
2
- export { NumberWithUnit, UNIT_REGEX, NUMBER_REGEX } from "./number-with-unit";
3
- export { coerceBoolAttr } from "./coerce/bool-attr";
4
- export { coerceElement, isElementInput } from "./coerce/element";
5
- export * from "./form";
6
- // export { StateChain, StateChainHandler } from "./state-chain"
7
- export { rawCancelAnimationFrame, rawClearInterval, rawClearTimeout, rawRequestAnimationFrame, rawSetInterval, rawSetTimeout, __zone_symbol__ } from "./unngzone";
8
- export { FastDOM } from "./dom";
9
- export { isPrimitive } from "./types/primitive";
10
- export { deepClone, deepFreeze, isPlainObject, toSorted, isFalsy, isTruthy } from "./util";
11
- export * from "./lifecycle";
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFlLE1BQU0sWUFBWSxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQXVCLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVsRyxPQUFPLEVBQUUsY0FBYyxFQUFnQixNQUFNLG9CQUFvQixDQUFBO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQWdCLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTlFLGNBQWMsUUFBUSxDQUFBO0FBRXRCLGdFQUFnRTtBQUVoRSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixlQUFlLEVBQ2Ysd0JBQXdCLEVBQ3hCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsZUFBZSxFQUNsQixNQUFNLFlBQVksQ0FBQTtBQUNuQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBTy9CLE9BQU8sRUFBdUIsV0FBVyxFQUErQixNQUFNLG1CQUFtQixDQUFBO0FBRWpHLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMxRixjQUFjLGFBQWEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IENvbm5lY3RQcm90b2NvbCB9IGZyb20gXCIuL2Nvbm5lY3QtcHJvdG9jb2xcIlxuZXhwb3J0IHsgRGVzdHJ1Y3QsIERlc3RydWN0aWJsZSwgSURpc3Bvc2FibGUgfSBmcm9tIFwiLi9kZXN0cnVjdFwiXG5leHBvcnQgeyBOdW1iZXJXaXRoVW5pdCwgTnVtYmVyV2l0aFVuaXRJbnB1dCwgVU5JVF9SRUdFWCwgTlVNQkVSX1JFR0VYIH0gZnJvbSBcIi4vbnVtYmVyLXdpdGgtdW5pdFwiXG5cbmV4cG9ydCB7IGNvZXJjZUJvb2xBdHRyLCBCb29sZWFuSW5wdXQgfSBmcm9tIFwiLi9jb2VyY2UvYm9vbC1hdHRyXCJcbmV4cG9ydCB7IGNvZXJjZUVsZW1lbnQsIEVsZW1lbnRJbnB1dCwgaXNFbGVtZW50SW5wdXQgfSBmcm9tIFwiLi9jb2VyY2UvZWxlbWVudFwiXG5cbmV4cG9ydCAqIGZyb20gXCIuL2Zvcm1cIlxuXG4vLyBleHBvcnQgeyBTdGF0ZUNoYWluLCBTdGF0ZUNoYWluSGFuZGxlciB9IGZyb20gXCIuL3N0YXRlLWNoYWluXCJcblxuZXhwb3J0IHtcbiAgICByYXdDYW5jZWxBbmltYXRpb25GcmFtZSxcbiAgICByYXdDbGVhckludGVydmFsLFxuICAgIHJhd0NsZWFyVGltZW91dCxcbiAgICByYXdSZXF1ZXN0QW5pbWF0aW9uRnJhbWUsXG4gICAgcmF3U2V0SW50ZXJ2YWwsXG4gICAgcmF3U2V0VGltZW91dCxcbiAgICBfX3pvbmVfc3ltYm9sX19cbn0gZnJvbSBcIi4vdW5uZ3pvbmVcIlxuZXhwb3J0IHsgRmFzdERPTSB9IGZyb20gXCIuL2RvbVwiXG5cbmV4cG9ydCB7IENvbmNhdCB9IGZyb20gXCIuL3R5cGVzL2NvbmNhdFwiXG5leHBvcnQgeyBFdmFsLCBJZkFueSwgSXNBbnksIElmVHVwbGUsIElzVHVwbGUsIFR1cGxlSXRlbXMsIE9iamVjdEtleSwgTWF4UmVjdXJzaW9uIH0gZnJvbSBcIi4vdHlwZXMvdXRpbFwiXG5leHBvcnQgeyBGbGF0dGVuLCBGbGF0dGVuS2V5cyB9IGZyb20gXCIuL3R5cGVzL2ZsYXR0ZW5cIlxuZXhwb3J0IHsgTWVyZ2VVbmlvbiB9IGZyb20gXCIuL3R5cGVzL21lcmdlLXVuaW9uXCJcbmV4cG9ydCB7IE51bWJlclJhbmdlIH0gZnJvbSBcIi4vdHlwZXMvbnVtYmVyLXJhbmdlXCJcbmV4cG9ydCB7IFByaW1pdGl2ZSwgQnVpbHRpbnMsIGlzUHJpbWl0aXZlLCBBc1ByaW1pdGl2ZSwgVG9QcmltaXRpdmVNYXAgfSBmcm9tIFwiLi90eXBlcy9wcmltaXRpdmVcIlxuZXhwb3J0IHsgRGVlcFJlYWRvbmx5LCBSZWFkb25seURhdGUgfSBmcm9tIFwiLi90eXBlcy9yZWFkb25seVwiXG5leHBvcnQgeyBkZWVwQ2xvbmUsIGRlZXBGcmVlemUsIGlzUGxhaW5PYmplY3QsIHRvU29ydGVkLCBpc0ZhbHN5LCBpc1RydXRoeSB9IGZyb20gXCIuL3V0aWxcIlxuZXhwb3J0ICogZnJvbSBcIi4vbGlmZWN5Y2xlXCJcbiJdfQ==
@@ -1,156 +0,0 @@
1
- import { catchError, concat, concatMap, filter, forkJoin, from, map, Observable, of, reduce, ReplaySubject, scan, share, shareReplay, Subject, take, takeLast, takeUntil, takeWhile, tap, throwError } from "rxjs";
2
- import { flatten } from "lodash-es";
3
- export class StopLifecycle extends Error {
4
- }
5
- export class Lifecycle {
6
- #handlers;
7
- #until;
8
- #trigger;
9
- #status;
10
- constructor(states) {
11
- this.#handlers = {};
12
- this.#until = new Subject();
13
- this.#trigger = new Subject();
14
- this.#status = this.#trigger.pipe(takeUntil(this.#until), scan((result, trigger) => {
15
- if (!result[trigger]) {
16
- result[trigger] = this.#run(trigger).pipe(tap(executed => {
17
- if (executed === false) {
18
- delete result[trigger];
19
- }
20
- }), map(executed => [trigger, !!executed]), shareReplay(1));
21
- }
22
- return result;
23
- }, {}), concatMap(triggers => {
24
- const srcs = Object.values(triggers);
25
- return concat(...srcs).pipe(takeWhile(([_, executed]) => executed, false), reduce((result, [name, executed]) => {
26
- return { ...result, [name]: executed };
27
- }, {}));
28
- }), tap(status => {
29
- if (this.#handlers == null) {
30
- return;
31
- }
32
- for (const [k, v] of Object.entries(status)) {
33
- if (v) {
34
- delete this.#handlers[k];
35
- }
36
- }
37
- }), share());
38
- this.status$ = this.#status.pipe(shareReplay(1));
39
- this.current$ = new ReplaySubject();
40
- this.states = { ...states };
41
- for (const value of Object.values(states)) {
42
- if (value.order == null) {
43
- value.order = "parallel";
44
- }
45
- }
46
- }
47
- on(state, fn) {
48
- if (state in this.#handlers) {
49
- this.#handlers[state].push(fn);
50
- }
51
- else {
52
- this.#handlers[state] = [fn];
53
- }
54
- return () => {
55
- const idx = this.#handlers[state].indexOf(fn);
56
- if (idx > -1) {
57
- this.#handlers[state].splice(idx, 1);
58
- }
59
- };
60
- }
61
- onExecute(state) {
62
- return this.current$.pipe(takeUntil(this.#until), filter(current => current === state));
63
- }
64
- onDone(state) {
65
- return this.status$.pipe(filter(status => status[state]), take(1));
66
- }
67
- run(...states) {
68
- const flattened = flatten(states).filter((v, i, a) => a.indexOf(v) === i);
69
- const expectedCount = flattened.length;
70
- return new Observable((dest) => {
71
- dest.add(this.#status.subscribe(currentStatus => {
72
- const executedCount = Object.entries(currentStatus).reduce((result, [name, done]) => result + (done && flattened.includes(name) ? 1 : 0), 0);
73
- if (executedCount >= expectedCount) {
74
- dest.next();
75
- dest.complete();
76
- }
77
- }));
78
- for (const s of flattened) {
79
- this.#trigger.next(s);
80
- }
81
- });
82
- }
83
- /**
84
- * Run this state changes on other state
85
- */
86
- control(state, remap) {
87
- const remove = [];
88
- for (const selfState of Object.keys(this.states)) {
89
- const otherState = remap?.[selfState] || selfState;
90
- if (otherState in state.states) {
91
- remove.push(this.on(selfState, () => state.run(otherState)));
92
- }
93
- }
94
- return () => {
95
- for (const fn of remove) {
96
- fn();
97
- }
98
- };
99
- }
100
- destroy() {
101
- ;
102
- this.#handlers = null;
103
- this.#until.next();
104
- this.#until.complete();
105
- }
106
- #run(state) {
107
- if (this.#handlers == null || !this.states[state]) {
108
- return of(true);
109
- }
110
- return new Observable((dest) => {
111
- this.current$.next(state);
112
- const handlers = this.#handlers[state];
113
- if (handlers == null || handlers.length === 0) {
114
- dest.next(true);
115
- dest.complete();
116
- return;
117
- }
118
- const observables = handlers.map(handler => {
119
- const observable = handler();
120
- if (observable == null) {
121
- return of(null);
122
- }
123
- else {
124
- return from(observable);
125
- }
126
- });
127
- const config = this.states[state];
128
- if (observables.length === 1) {
129
- return observables[0].pipe(map(() => true)).subscribe(dest);
130
- }
131
- else if (config.order === "parallel") {
132
- return forkJoin(observables)
133
- .pipe(map(() => true))
134
- .subscribe(dest);
135
- }
136
- else if (config.order === "sequential") {
137
- return concat(...observables)
138
- .pipe(map(() => true))
139
- .subscribe(dest);
140
- }
141
- else {
142
- dest.next(true);
143
- dest.complete();
144
- }
145
- return;
146
- }).pipe(takeLast(1), catchError(error => {
147
- if (error instanceof StopLifecycle) {
148
- return of(false);
149
- }
150
- else {
151
- return throwError(() => error);
152
- }
153
- }));
154
- }
155
- }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9saWZlY3ljbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFVBQVUsRUFDVixNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsSUFBSSxFQUNKLEdBQUcsRUFDSCxVQUFVLEVBRVYsRUFBRSxFQUNGLE1BQU0sRUFDTixhQUFhLEVBQ2IsSUFBSSxFQUNKLEtBQUssRUFDTCxXQUFXLEVBQ1gsT0FBTyxFQUVQLElBQUksRUFDSixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ0gsVUFBVSxFQUNiLE1BQU0sTUFBTSxDQUFBO0FBRWIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUluQyxNQUFNLE9BQU8sYUFBYyxTQUFRLEtBQUs7Q0FBRztBQVczQyxNQUFNLE9BQU8sU0FBUztJQUVULFNBQVMsQ0FBa0Q7SUFFM0QsTUFBTSxDQUFzQjtJQUM1QixRQUFRLENBQW1CO0lBQzNCLE9BQU8sQ0EyQ2Y7SUFLRCxZQUFZLE1BQVM7UUFwRFosY0FBUyxHQUFnRCxFQUFFLENBQUE7UUFFM0QsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUE7UUFDNUIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFLLENBQUE7UUFDM0IsWUFBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNqQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUN0QixJQUFJLENBQ0EsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNuQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFZLENBQUMsQ0FBQyxJQUFJLENBQzFDLEdB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cG9ydCB7XG4gICAgY2F0Y2hFcnJvcixcbiAgICBjb25jYXQsXG4gICAgY29uY2F0TWFwLFxuICAgIGZpbHRlcixcbiAgICBmb3JrSm9pbixcbiAgICBmcm9tLFxuICAgIG1hcCxcbiAgICBPYnNlcnZhYmxlLFxuICAgIE9ic2VydmFibGVJbnB1dCxcbiAgICBvZixcbiAgICByZWR1Y2UsXG4gICAgUmVwbGF5U3ViamVjdCxcbiAgICBzY2FuLFxuICAgIHNoYXJlLFxuICAgIHNoYXJlUmVwbGF5LFxuICAgIFN1YmplY3QsXG4gICAgU3Vic2NyaWJlcixcbiAgICB0YWtlLFxuICAgIHRha2VMYXN0LFxuICAgIHRha2VVbnRpbCxcbiAgICB0YWtlV2hpbGUsXG4gICAgdGFwLFxuICAgIHRocm93RXJyb3Jcbn0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBmbGF0dGVuIH0gZnJvbSBcImxvZGFzaC1lc1wiXG5cbmV4cG9ydCB0eXBlIExpZmVjeWNsZUhhbmRsZXIgPSAoKSA9PiBPYnNlcnZhYmxlSW5wdXQ8dW5rbm93bj4gfCBudWxsIHwgdW5kZWZpbmVkIHwgdm9pZFxuXG5leHBvcnQgY2xhc3MgU3RvcExpZmVjeWNsZSBleHRlbmRzIEVycm9yIHt9XG5cbmV4cG9ydCB0eXBlIExpZmVjeWNsZU9wdGlvbnMgPSBSZWNvcmQ8c3RyaW5nLCB7IG9yZGVyPzogXCJwYXJhbGxlbFwiIHwgXCJzZXF1ZW50aWFsXCI7IGNhbmNlbGxhYmxlPzogYm9vbGVhbiB9PlxuXG5leHBvcnQgdHlwZSBMaWZlY3ljbGVSZW1hcDxBLCBCPiA9XG4gICAgQSBleHRlbmRzIExpZmVjeWNsZTxpbmZlciBBTywgaW5mZXIgQVM+XG4gICAgICAgID8gQiBleHRlbmRzIExpZmVjeWNsZTxpbmZlciBCTywgaW5mZXIgQlM+XG4gICAgICAgICAgICA/IFBhcnRpYWw8eyBbSyBpbiBBU106IEJTIH0+XG4gICAgICAgICAgICA6IG5ldmVyXG4gICAgICAgIDogbmV2ZXJcblxuZXhwb3J0IGNsYXNzIExpZmVjeWNsZTxUIGV4dGVuZHMgTGlmZWN5Y2xlT3B0aW9ucywgUyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUPiB7XG4gICAgcmVhZG9ubHkgc3RhdGVzOiBUXG4gICAgcmVhZG9ubHkgI2hhbmRsZXJzOiBQYXJ0aWFsPFJlY29yZDxTLCBBcnJheTxMaWZlY3ljbGVIYW5kbGVyPj4+ID0ge31cblxuICAgIHJlYWRvbmx5ICN1bnRpbCA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcbiAgICByZWFkb25seSAjdHJpZ2dlciA9IG5ldyBTdWJqZWN0PFM+KClcbiAgICByZWFkb25seSAjc3RhdHVzID0gdGhpcy4jdHJpZ2dlci5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy4jdW50aWwpLFxuICAgICAgICBzY2FuKFxuICAgICAgICAgICAgKHJlc3VsdCwgdHJpZ2dlcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0W3RyaWdnZXJdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFt0cmlnZ2VyXSA9IHRoaXMuI3J1bih0cmlnZ2VyIGFzIFMpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXAoZXhlY3V0ZWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGVjdXRlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc3VsdFt0cmlnZ2VyXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKGV4ZWN1dGVkID0+IFt0cmlnZ2VyLCAhIWV4ZWN1dGVkXSBhcyBbUywgYm9vbGVhbl0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge30gYXMgUmVjb3JkPFMsIE9ic2VydmFibGU8W1MsIGJvb2xlYW5dPj5cbiAgICAgICAgKSxcbiAgICAgICAgY29uY2F0TWFwKHRyaWdnZXJzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNyY3MgPSBPYmplY3QudmFsdWVzKHRyaWdnZXJzKSBhcyBBcnJheTxPYnNlcnZhYmxlPFtTLCBib29sZWFuXT4+XG4gICAgICAgICAgICByZXR1cm4gY29uY2F0KC4uLnNyY3MpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVdoaWxlKChbXywgZXhlY3V0ZWRdKSA9PiBleGVjdXRlZCwgZmFsc2UpLFxuICAgICAgICAgICAgICAgIHJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VsdCwgW25hbWUsIGV4ZWN1dGVkXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucmVzdWx0LCBbbmFtZV06IGV4ZWN1dGVkIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge30gYXMgUmVjb3JkPFMsIGJvb2xlYW4+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICB9KSxcbiAgICAgICAgdGFwKHN0YXR1cyA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jaGFuZGxlcnMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhzdGF0dXMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICh0aGlzLiNoYW5kbGVycyBhcyBhbnkpW2tdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmUoKVxuICAgIClcblxuICAgIHJlYWRvbmx5IHN0YXR1cyQgPSB0aGlzLiNzdGF0dXMucGlwZShzaGFyZVJlcGxheSgxKSlcbiAgICByZWFkb25seSBjdXJyZW50JCA9IG5ldyBSZXBsYXlTdWJqZWN0PFM+KClcblxuICAgIGNvbnN0cnVjdG9yKHN0YXRlczogVCkge1xuICAgICAgICB0aGlzLnN0YXRlcyA9IHsgLi4uc3RhdGVzIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIE9iamVjdC52YWx1ZXMoc3RhdGVzKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlLm9yZGVyID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZS5vcmRlciA9IFwicGFyYWxsZWxcIlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb24oc3RhdGU6IFMsIGZuOiBMaWZlY3ljbGVIYW5kbGVyKSB7XG4gICAgICAgIGlmIChzdGF0ZSBpbiB0aGlzLiNoYW5kbGVycykge1xuICAgICAgICAgICAgdGhpcy4jaGFuZGxlcnNbc3RhdGVdIS5wdXNoKGZuKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy4jaGFuZGxlcnNbc3RhdGVdID0gW2ZuXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuI2hhbmRsZXJzW3N0YXRlXSEuaW5kZXhPZihmbilcbiAgICAgICAgICAgIGlmIChpZHggPiAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuI2hhbmRsZXJzW3N0YXRlXSEuc3BsaWNlKGlkeCwgMSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRXhlY3V0ZShzdGF0ZTogUykge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50JC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuI3VudGlsKSxcbiAgICAgICAgICAgIGZpbHRlcihjdXJyZW50ID0+IGN1cnJlbnQgPT09IHN0YXRlKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgb25Eb25lKHN0YXRlOiBTKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXR1cyQucGlwZShcbiAgICAgICAgICAgIGZpbHRlcihzdGF0dXMgPT4gc3RhdHVzW3N0YXRlXSksXG4gICAgICAgICAgICB0YWtlKDEpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBydW4oLi4uc3RhdGVzOiBBcnJheTxTIHwgU1tdPikge1xuICAgICAgICBjb25zdCBmbGF0dGVuZWQgPSBmbGF0dGVuKHN0YXRlcykuZmlsdGVyKCh2LCBpLCBhKSA9PiBhLmluZGV4T2YodikgPT09IGkpXG4gICAgICAgIGNvbnN0IGV4cGVjdGVkQ291bnQgPSBmbGF0dGVuZWQubGVuZ3RoXG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoZGVzdDogU3Vic2NyaWJlcjx2b2lkPikgPT4ge1xuICAgICAgICAgICAgZGVzdC5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy4jc3RhdHVzLnN1YnNjcmliZShjdXJyZW50U3RhdHVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhlY3V0ZWRDb3VudCA9IE9iamVjdC5lbnRyaWVzKGN1cnJlbnRTdGF0dXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHQsIFtuYW1lLCBkb25lXSkgPT4gcmVzdWx0ICsgKGRvbmUgJiYgZmxhdHRlbmVkLmluY2x1ZGVzKG5hbWUgYXMgUykgPyAxIDogMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZXhlY3V0ZWRDb3VudCA+PSBleHBlY3RlZENvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXN0Lm5leHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzdC5jb21wbGV0ZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHMgb2YgZmxhdHRlbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jdHJpZ2dlci5uZXh0KHMpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUnVuIHRoaXMgc3RhdGUgY2hhbmdlcyBvbiBvdGhlciBzdGF0ZVxuICAgICAqL1xuICAgIGNvbnRyb2w8VCBleHRlbmRzIExpZmVjeWNsZTxhbnksIGFueT4+KHN0YXRlOiBULCByZW1hcD86IExpZmVjeWNsZVJlbWFwPHRoaXMsIFQ+KSB7XG4gICAgICAgIGNvbnN0IHJlbW92ZTogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXVxuXG4gICAgICAgIGZvciAoY29uc3Qgc2VsZlN0YXRlIG9mIE9iamVjdC5rZXlzKHRoaXMuc3RhdGVzKSkge1xuICAgICAgICAgICAgY29uc3Qgb3RoZXJTdGF0ZSA9IChyZW1hcCBhcyB1bmtub3duIGFzIGFueSk/LltzZWxmU3RhdGVdIHx8IHNlbGZTdGF0ZVxuICAgICAgICAgICAgaWYgKG90aGVyU3RhdGUgaW4gc3RhdGUuc3RhdGVzKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlLnB1c2godGhpcy5vbihzZWxmU3RhdGUgYXMgYW55LCAoKSA9PiBzdGF0ZS5ydW4ob3RoZXJTdGF0ZSkpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZm4gb2YgcmVtb3ZlKSB7XG4gICAgICAgICAgICAgICAgZm4oKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgOyh0aGlzIGFzIGFueSkuI2hhbmRsZXJzID0gbnVsbFxuICAgICAgICB0aGlzLiN1bnRpbC5uZXh0KClcbiAgICAgICAgdGhpcy4jdW50aWwuY29tcGxldGUoKVxuICAgIH1cblxuICAgICNydW4oc3RhdGU6IFMpIHtcbiAgICAgICAgaWYgKHRoaXMuI2hhbmRsZXJzID09IG51bGwgfHwgIXRoaXMuc3RhdGVzW3N0YXRlXSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKGRlc3Q6IFN1YnNjcmliZXI8Ym9vbGVhbj4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudCQubmV4dChzdGF0ZSlcblxuICAgICAgICAgICAgY29uc3QgaGFuZGxlcnMgPSB0aGlzLiNoYW5kbGVyc1tzdGF0ZV1cbiAgICAgICAgICAgIGlmIChoYW5kbGVycyA9PSBudWxsIHx8IGhhbmRsZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGRlc3QubmV4dCh0cnVlKVxuICAgICAgICAgICAgICAgIGRlc3QuY29tcGxldGUoKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBvYnNlcnZhYmxlczogQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PiA9IGhhbmRsZXJzLm1hcChoYW5kbGVyID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvYnNlcnZhYmxlID0gaGFuZGxlcigpXG4gICAgICAgICAgICAgICAgaWYgKG9ic2VydmFibGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbClcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbShvYnNlcnZhYmxlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuc3RhdGVzW3N0YXRlXVxuXG4gICAgICAgICAgICBpZiAob2JzZXJ2YWJsZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVzWzBdLnBpcGUobWFwKCgpID0+IHRydWUpKS5zdWJzY3JpYmUoZGVzdClcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLm9yZGVyID09PSBcInBhcmFsbGVsXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ya0pvaW4ob2JzZXJ2YWJsZXMpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcCgoKSA9PiB0cnVlKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShkZXN0KVxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb25maWcub3JkZXIgPT09IFwic2VxdWVudGlhbFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbmNhdCguLi5vYnNlcnZhYmxlcylcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwKCgpID0+IHRydWUpKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGRlc3QpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlc3QubmV4dCh0cnVlKVxuICAgICAgICAgICAgICAgIGRlc3QuY29tcGxldGUoKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfSkucGlwZShcbiAgICAgICAgICAgIHRha2VMYXN0KDEpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU3RvcExpZmVjeWNsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgIH1cbn1cbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd1dGlsLWNvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvbmd1dGlsLWNvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,40 +0,0 @@
1
- const specials = ["auto", "inherit"];
2
- export const UNIT_REGEX = "v[h|w|min|max]|p[c|t|x]|[re|e|c|m]m|[l|c]h|%|in|Q|ex|m?s";
3
- export const NUMBER_REGEX = "[+-]?(?:\\d*\\.\\d+|\\d+\\.\\d*|\\d+)";
4
- const regex = new RegExp(`^(${NUMBER_REGEX})\\s*(${UNIT_REGEX})?$`);
5
- export class NumberWithUnit {
6
- static coerce(value, defaultUnit) {
7
- if (value instanceof NumberWithUnit) {
8
- return value;
9
- }
10
- else if (specials.includes(value)) {
11
- return new NumberWithUnit(NaN, value);
12
- }
13
- else if (typeof value === "string") {
14
- const match = value.match(regex);
15
- if (match) {
16
- return new NumberWithUnit(Number(match[1]), match[2] || defaultUnit);
17
- }
18
- }
19
- else if (typeof value === "number") {
20
- return new NumberWithUnit(value, defaultUnit);
21
- }
22
- throw new Error(`Not implemented number with unit: ${value}`);
23
- }
24
- constructor(value, unit) {
25
- this.value = value;
26
- this.unit = unit;
27
- }
28
- toString() {
29
- if (isNaN(this.value)) {
30
- return this.unit;
31
- }
32
- else if (this.unit != null) {
33
- return `${this.value}${this.unit}`;
34
- }
35
- else {
36
- return `${this.value}`;
37
- }
38
- }
39
- }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXdpdGgtdW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvbnVtYmVyLXdpdGgtdW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQTtBQUVwQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsMERBQTBELENBQUE7QUFDcEYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLHVDQUF1QyxDQUFBO0FBRW5FLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLEtBQUssWUFBWSxTQUFTLFVBQVUsS0FBSyxDQUFDLENBQUE7QUFFbkUsTUFBTSxPQUFPLGNBQWM7SUFDdkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFVLEVBQUUsV0FBb0I7UUFDMUMsSUFBSSxLQUFLLFlBQVksY0FBYyxFQUFFLENBQUM7WUFDbEMsT0FBTyxLQUFLLENBQUE7UUFDaEIsQ0FBQzthQUFNLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sSUFBSSxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3pDLENBQUM7YUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDaEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDUixPQUFPLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUE7WUFDeEUsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBQ2pELENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFFRCxZQUNvQixLQUFhLEVBQ2IsSUFBYTtRQURiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFTO0lBQzlCLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBO1FBQ3BCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDM0IsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUMxQixDQUFDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgTnVtYmVyV2l0aFVuaXRJbnB1dCA9IG51bWJlciB8IHN0cmluZyB8IE51bWJlcldpdGhVbml0XG5cbmNvbnN0IHNwZWNpYWxzID0gW1wiYXV0b1wiLCBcImluaGVyaXRcIl1cblxuZXhwb3J0IGNvbnN0IFVOSVRfUkVHRVggPSBcInZbaHx3fG1pbnxtYXhdfHBbY3x0fHhdfFtyZXxlfGN8bV1tfFtsfGNdaHwlfGlufFF8ZXh8bT9zXCJcbmV4cG9ydCBjb25zdCBOVU1CRVJfUkVHRVggPSBcIlsrLV0/KD86XFxcXGQqXFxcXC5cXFxcZCt8XFxcXGQrXFxcXC5cXFxcZCp8XFxcXGQrKVwiXG5cbmNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXigke05VTUJFUl9SRUdFWH0pXFxcXHMqKCR7VU5JVF9SRUdFWH0pPyRgKVxuXG5leHBvcnQgY2xhc3MgTnVtYmVyV2l0aFVuaXQge1xuICAgIHN0YXRpYyBjb2VyY2UodmFsdWU6IGFueSwgZGVmYXVsdFVuaXQ/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTnVtYmVyV2l0aFVuaXQpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICB9IGVsc2UgaWYgKHNwZWNpYWxzLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBOdW1iZXJXaXRoVW5pdChOYU4sIHZhbHVlKVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaChyZWdleClcbiAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTnVtYmVyV2l0aFVuaXQoTnVtYmVyKG1hdGNoWzFdKSwgbWF0Y2hbMl0gfHwgZGVmYXVsdFVuaXQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE51bWJlcldpdGhVbml0KHZhbHVlLCBkZWZhdWx0VW5pdClcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm90IGltcGxlbWVudGVkIG51bWJlciB3aXRoIHVuaXQ6ICR7dmFsdWV9YClcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSB1bml0Pzogc3RyaW5nXG4gICAgKSB7fVxuXG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIGlmIChpc05hTih0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW5pdFxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudW5pdCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7dGhpcy52YWx1ZX0ke3RoaXMudW5pdH1gXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7dGhpcy52YWx1ZX1gXG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uY2F0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy90eXBlcy9jb25jYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgQ29uY2F0VGFpbDxTRVAgZXh0ZW5kcyBzdHJpbmcsIFYgZXh0ZW5kcyBzdHJpbmc+ID0gViBleHRlbmRzIG5ldmVyID8gXCJcIiA6IGAke1NFUH0ke1Z9YFxuXG4vKipcbiAqIENvbmNhdGVuYXRlIHN0cmluZ3Mgd2l0aCBzZXBhcmF0b3JcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIHR5cGUgQyA9IENvbmNhdDxcIi5cIiwgW1wiQVwiLCBcIkJcIiwgXCJDXCJdPiA9IFwiQS5CLkNcIlxuICogYGBgXG4gKi9cbmV4cG9ydCB0eXBlIENvbmNhdDxTRVAgZXh0ZW5kcyBzdHJpbmcsIFZBTFMgZXh0ZW5kcyBzdHJpbmdbXT4gPSBWQUxTIGV4dGVuZHMgW1xuICAgIGluZmVyIFYxIGV4dGVuZHMgc3RyaW5nLFxuICAgIC4uLmluZmVyIE9WIGV4dGVuZHMgc3RyaW5nW11cbl1cbiAgICA/IE9WW1wibGVuZ3RoXCJdIGV4dGVuZHMgMFxuICAgICAgICA/IGAke1YxfWBcbiAgICAgICAgOiBgJHtWMX0ke0NvbmNhdFRhaWw8U0VQLCBDb25jYXQ8U0VQLCBPVj4+fWBcbiAgICA6IG5ldmVyXG4iXX0=
@@ -1,68 +0,0 @@
1
- export {};
2
- // ! TEST ONLY
3
- // enum CategoryState {
4
- // Pending = "pending",
5
- // Approved = "approved"
6
- // }
7
- // const enum ProductType {
8
- // Normal = "normal",
9
- // Virtual = "virtual"
10
- // }
11
- // interface UserName {
12
- // first: string
13
- // last: string
14
- // title?: string
15
- // }
16
- // interface User {
17
- // id: number
18
- // name: UserName
19
- // age: number
20
- // state: "ACTIVE" | "INACTIVE"
21
- // is_active: boolean
22
- // created_time: Date
23
- // }
24
- // interface Category {
25
- // id: number
26
- // name: string
27
- // state: CategoryState
28
- // author: User
29
- // parent: Category
30
- // }
31
- // interface Product {
32
- // id: number
33
- // name: string
34
- // type: ProductType
35
- // categories: Array<Category>
36
- // [Symbol.iterator](): IteratorResult<any>
37
- // }
38
- // class Alma {
39
- // id!: number
40
- // author!: User
41
- // xyz: any
42
- // doSomething(): void {}
43
- // }
44
- // // TODO: ...
45
- // type Poly = { type: "user"; name: string; age: number } | { type: "product"; name: string; sku: string }
46
- // const flattened: Flatten<Product> = { name: 10, dsfsfd: "OK" }
47
- // const almax: Flatten<Alma, ["root"]> = {}
48
- // const almaxc: Flatten<Alma> = {}
49
- // const flattened2: Flatten<Array<[User, Alma]>> = { "*.1.author.age": 10 }
50
- // const flattened2b: Flatten<[User, Alma]> = { "1.author.age": 10 }
51
- // const flattened3: Flatten<{ [key: string | number]: any }> = { dsfsdf: 10 }
52
- // const TE: TupleEntries<[1, "ok", false]> = null
53
- // const anyArray: Flatten<Array<any>> = { "*.alma": 10 }
54
- // const anyArray2: Flatten<{ alma: any[] }> = { "alma.*.ok.x.y": 10 }
55
- // const cat: Flatten<Category> = { "parent.parent.parent.parent.author.id": 10 }
56
- // const dt: Flatten<[Date, string]> = { 0: new Date(), 1: "alma" }
57
- // const ro_cat: DeepReadonly<Flatten<Category>> = {}
58
- // ro_cat["author.age"] = 10
59
- // const ro_obj: DeepReadonly<Flatten<{ [key: string]: any }>> = {}
60
- // ro_obj["alma"]
61
- // type X<T, F = Flatten<T>> = { [K in keyof F]: { ok: F[K] } }
62
- // const ro_obj3: DeepReadonly<X<{ [key: string]: any }>> = {}
63
- // type Obj = { [key: string]: any }
64
- // export type Filter<T extends Obj> = _FilterLite<Flatten<T>>
65
- // type _FilterLite<F extends { [key: string]: any }> = { [K in keyof F]: boolean }
66
- // const xxx: Filter<Obj> = { 10: true }
67
- // const xxx_r: DeepReadonly<Filter<Obj>> = { alma: true }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdHlwZXMvZmxhdHRlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBdUlBLGNBQWM7QUFDZCx1QkFBdUI7QUFDdkIsMkJBQTJCO0FBQzNCLDRCQUE0QjtBQUM1QixJQUFJO0FBRUosMkJBQTJCO0FBQzNCLHlCQUF5QjtBQUN6QiwwQkFBMEI7QUFDMUIsSUFBSTtBQUVKLHVCQUF1QjtBQUN2QixvQkFBb0I7QUFDcEIsbUJBQW1CO0FBQ25CLHFCQUFxQjtBQUNyQixJQUFJO0FBRUosbUJBQW1CO0FBQ25CLGlCQUFpQjtBQUNqQixxQkFBcUI7QUFDckIsa0JBQWtCO0FBQ2xCLG1DQUFtQztBQUNuQyx5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCLElBQUk7QUFFSix1QkFBdUI7QUFDdkIsaUJBQWlCO0FBQ2pCLG1CQUFtQjtBQUNuQiwyQkFBMkI7QUFDM0IsbUJBQW1CO0FBQ25CLHVCQUF1QjtBQUN2QixJQUFJO0FBRUosc0JBQXNCO0FBQ3RCLGlCQUFpQjtBQUNqQixtQkFBbUI7QUFDbkIsd0JBQXdCO0FBQ3hCLGtDQUFrQztBQUNsQywrQ0FBK0M7QUFDL0MsSUFBSTtBQUVKLGVBQWU7QUFDZixrQkFBa0I7QUFDbEIsb0JBQW9CO0FBQ3BCLGVBQWU7QUFFZiw2QkFBNkI7QUFDN0IsSUFBSTtBQUVKLGVBQWU7QUFDZiwyR0FBMkc7QUFFM0csaUVBQWlFO0FBQ2pFLDRDQUE0QztBQUM1QyxtQ0FBbUM7QUFDbkMsNEVBQTRFO0FBQzVFLG9FQUFvRTtBQUNwRSw4RUFBOEU7QUFDOUUsa0RBQWtEO0FBQ2xELHlEQUF5RDtBQUN6RCxzRUFBc0U7QUFDdEUsaUZBQWlGO0FBQ2pGLG1FQUFtRTtBQUVuRSxxREFBcUQ7QUFDckQsNEJBQTRCO0FBRTVCLG1FQUFtRTtBQUNuRSxpQkFBaUI7QUFFakIsK0RBQStEO0FBRS9ELDhEQUE4RDtBQUU5RCxvQ0FBb0M7QUFFcEMsOERBQThEO0FBRTlELG1GQUFtRjtBQUVuRix3Q0FBd0M7QUFDeEMsMERBQTBEIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlcyAqL1xuaW1wb3J0IHsgQ29uY2F0IH0gZnJvbSBcIi4vY29uY2F0XCJcbmltcG9ydCB7IE1lcmdlVW5pb24gfSBmcm9tIFwiLi9tZXJnZS11bmlvblwiXG5pbXBvcnQgeyBCdWlsdGlucyB9IGZyb20gXCIuL3ByaW1pdGl2ZVwiXG5pbXBvcnQgeyBJc0FueSwgSXNUdXBsZSwgTWF4UmVjdXJzaW9uLCBUdXBsZUl0ZW1zIH0gZnJvbSBcIi4vdXRpbFwiXG5cbnR5cGUgS2V5VHlwZXMgPSBzdHJpbmcgfCBudW1iZXJcbmV4cG9ydCB0eXBlIEZsYXR0ZW5FeGNsdWRlID0gRnVuY3Rpb25cblxuLyoqXG4gKiBAcGFyYW0gVCAtIFRoZSBvYmplY3Qgd2l0Y2ggd2Ugd2FudCB0byBmbGF0dGVuXG4gKiBAcGFyYW0gUCAtIFRoZSBwcmVmaXggb2YgcGF0aHMgKGRlZmF1bHQ6IFtdKVxuICogQHBhcmFtIEUgLSBUaGUgdmFsdWUgZXhjbHVkZXMgKGRlZmF1bHQ6IEZ1bmN0aW9uKVxuICogQHBhcmFtIEQgLSBNYXggZGVwdGggKGRlZmF1bHQ6IDEwKVxuICpcbiAqIEBleGFtcGxlXG4gKiBJbnB1dCB0eXBlOlxuICogYGBgdHNcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqICAgaWQ6IG51bWJlclxuICogICBuYW1lOiBzdHJpbmdcbiAqIH1cbiAqXG4gKiBpbnRlcmZhY2UgQ2F0ZWdvcnkge1xuICogICBpZDogbnVtYmVyXG4gKiAgIHRpdGxlOiBzdHJpbmdcbiAqIH1cbiAqXG4gKiBpbnRlcmZhY2UgQXJ0aWNsZSB7XG4gKiAgIGlkOiBudW1iZXJcbiAqICAgdGl0bGU6IHN0cmluZ1xuICogICBhdXRob3I6IFVzZXJcbiAqICAgY2F0ZWdvcmllczogQXJyYXk8Q2F0ZWdvcnk+XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBSZXN1bHQgdHlwZTpcbiAqIHR5cGUgRiA9IEZsYXR0ZW48QXJ0aWNsZT4gPSB7XG4gKiAgIFwiaWRcIjogbnVtYmVyLFxuICogICBcInRpdGxlXCI6IG51bWJlcixcbiAqICAgXCJhdXRob3IuaWRcIjogbnVtYmVyLFxuICogICBcImF1dGhvci5uYW1lXCI6IHN0cmluZyxcbiAqICAgXCJjYXRlZ29yaWVzLiouaWRcIjogbnVtYmVyLFxuICogICBcImNhdGVnb3JpZXMuKi50aXRsZVwiOiBzdHJpbmcsXG4gKiB9XG4gKi9cbmV4cG9ydCB0eXBlIEZsYXR0ZW48VCwgUCBleHRlbmRzIHN0cmluZ1tdID0gW10sIEUgPSBGbGF0dGVuRXhjbHVkZSwgRCBleHRlbmRzIG51bWJlciA9IE1heFJlY3Vyc2lvbj4gPSBfRmxhdHRlbjxcbiAgICBULFxuICAgIEUsXG4gICAgUCxcbiAgICBEXG4+XG5cbnR5cGUgX0ZsYXR0ZW48VCwgRSwgUCBleHRlbmRzIHN0cmluZ1tdLCBEIGV4dGVuZHMgbnVtYmVyPiA9IE1lcmdlVW5pb248X0ZsYXR0ZW5JdGVtPFQsIEUsIFAsIEQ+PlxuXG50eXBlIF9GbGF0dGVuSXRlbTxULCBFLCBQIGV4dGVuZHMgc3RyaW5nW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiBUIGV4dGVuZHMgRVxuICAgICAgPyBuZXZlclxuICAgICAgOiBJc0FueTxUPiBleHRlbmRzIHRydWVcbiAgICAgICAgPyBfUGF0aDxULCBQPlxuICAgICAgICA6IFQgZXh0ZW5kcyBCdWlsdGluc1xuICAgICAgICAgID8gX1BhdGg8VCwgUD5cbiAgICAgICAgICA6IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBWPlxuICAgICAgICAgICAgPyBJc1R1cGxlPFQ+IGV4dGVuZHMgdHJ1ZVxuICAgICAgICAgICAgICAgID8gX0ZsYXR0ZW5UdXBsZTxULCBFLCBQLCBEPlxuICAgICAgICAgICAgICAgIDogX0ZsYXR0ZW5BcnJheTxWLCBFLCBQLCBEPlxuICAgICAgICAgICAgOiBUIGV4dGVuZHMgb2JqZWN0XG4gICAgICAgICAgICAgID8gX0ZsYXR0ZW5PYmplY3Q8VCwgRSwgUCwgRD5cbiAgICAgICAgICAgICAgOiBfUGF0aDxULCBQPlxuXG50eXBlIF9GbGF0dGVuVHVwbGU8VCBleHRlbmRzIGFueVtdLCBFLCBQIGV4dGVuZHMgc3RyaW5nW10sIEQgZXh0ZW5kcyBudW1iZXIsIEkgPSBUdXBsZUl0ZW1zPFQ+PiA9IHtcbiAgICBbSyBpbiBrZXlvZiBJXTogSyBleHRlbmRzIEtleVR5cGVzXG4gICAgICAgID8gSXNBbnk8SVtLXT4gZXh0ZW5kcyB0cnVlXG4gICAgICAgICAgICA/IF9QYXRoPGFueSwgWy4uLlAsIGAke0t9YF0+XG4gICAgICAgICAgICA6IF9GbGF0dGVuSXRlbTxJW0tdLCBFLCBbLi4uUCwgYCR7S31gXSwgRD5cbiAgICAgICAgOiBuZXZlclxufVtrZXlvZiBJXVxuXG50eXBlIF9GbGF0dGVuQXJyYXk8VCwgRSwgUCBleHRlbmRzIHN0cmluZ1tdLCBEIGV4dGVuZHMgbnVtYmVyPiA9XG4gICAgSXNBbnk8VD4gZXh0ZW5kcyB0cnVlID8gX1BhdGg8YW55LCBbLi4uUCwgYCouJHtzdHJpbmd9YF0+IDogX0ZsYXR0ZW5JdGVtPFQsIEUsIFsuLi5QLCBcIipcIl0sIEQ+XG5cbnR5cGUgX0ZsYXR0ZW5PYmplY3Q8VCBleHRlbmRzIG9iamVjdCwgRSwgUCBleHRlbmRzIHN0cmluZ1tdLCBEIGV4dGVuZHMgbnVtYmVyPiA9IHtcbiAgICBbSyBpbiBrZXlvZiBUXS0/OiBLIGV4dGVuZHMgS2V5VHlwZXNcbiAgICAgICAgPyBJc0FueTxUW0tdPiBleHRlbmRzIHRydWVcbiAgICAgICAgICAgID8gX1BhdGg8YW55LCBbLi4uUCwgYCR7S31gXT5cbiAgICAgICAgICAgIDogX0ZsYXR0ZW5JdGVtPFRbS10sIEUsIFsuLi5QLCBgJHtLfWBdLCBEPlxuICAgICAgICA6IG5ldmVyXG59W2tleW9mIFRdXG5cbnR5cGUgX1BhdGg8VCwgUCBleHRlbmRzIHN0cmluZ1tdPiA9IFBbXCJsZW5ndGhcIl0gZXh0ZW5kcyAwID8gbmV2ZXIgOiB7IFtrZXkgaW4gQ29uY2F0PFwiLlwiLCBQPl06IFQgfVxuXG4vKipcbiAqIEBwYXJhbSBUIC0gVGhlIG9iamVjdCB3aXRjaCB3ZSB3YW50IHRvIGZsYXR0ZW5cbiAqIEBwYXJhbSBQIC0gVGhlIHByZWZpeCBvZiBwYXRocyAoZGVmYXVsdDogW10pXG4gKiBAcGFyYW0gRSAtIFRoZSB2YWx1ZSBleGNsdWRlcyAoZGVmYXVsdDogRnVuY3Rpb24pXG4gKiBAcGFyYW0gRCAtIE1heCBkZXB0aCAoZGVmYXVsdDogMTApXG4gKlxuICogQGV4YW1wbGVcbiAqIElucHV0IHR5cGU6XG4gKiBgYGB0c1xuICogaW50ZXJmYWNlIFVzZXIge1xuICogICBpZDogbnVtYmVyXG4gKiAgIG5hbWU6IHN0cmluZ1xuICogfVxuICpcbiAqIGludGVyZmFjZSBDYXRlZ29yeSB7XG4gKiAgIGlkOiBudW1iZXJcbiAqICAgdGl0bGU6IHN0cmluZ1xuICogfVxuICpcbiAqIGludGVyZmFjZSBBcnRpY2xlIHtcbiAqICAgaWQ6IG51bWJlclxuICogICB0aXRsZTogc3RyaW5nXG4gKiAgIGF1dGhvcjogVXNlclxuICogICBjYXRlZ29yaWVzOiBBcnJheTxDYXRlZ29yeT5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFJlc3VsdCB0eXBlOlxuICogdHlwZSBGSyA9IEZsYXR0ZW5LZXlzPEFydGljbGU+ID1cbiAqICAgfCBcImlkXCJcbiAqICAgfCBcInRpdGxlXCJcbiAqICAgfCBcImF1dGhvci5pZFwiXG4gKiAgIHwgXCJhdXRob3IubmFtZVwiXG4gKiAgIHwgXCJjYXRlZ29yaWVzLiouaWRcIlxuICogICB8IFwiY2F0ZWdvcmllcy4qLnRpdGxlXCJcbiAqL1xuZXhwb3J0IHR5cGUgRmxhdHRlbktleXM8XG4gICAgVCxcbiAgICBQIGV4dGVuZHMgc3RyaW5nW10gPSBbXSxcbiAgICBFID0gRmxhdHRlbkV4Y2x1ZGUsXG4gICAgRCBleHRlbmRzIG51bWJlciA9IE1heFJlY3Vyc2lvblxuPiA9IGtleW9mIEZsYXR0ZW48VCwgUCwgRSwgRD5cblxuLy8gISBURVNUIE9OTFlcbi8vIGVudW0gQ2F0ZWdvcnlTdGF0ZSB7XG4vLyAgICAgUGVuZGluZyA9IFwicGVuZGluZ1wiLFxuLy8gICAgIEFwcHJvdmVkID0gXCJhcHByb3ZlZFwiXG4vLyB9XG5cbi8vIGNvbnN0IGVudW0gUHJvZHVjdFR5cGUge1xuLy8gICAgIE5vcm1hbCA9IFwibm9ybWFsXCIsXG4vLyAgICAgVmlydHVhbCA9IFwidmlydHVhbFwiXG4vLyB9XG5cbi8vIGludGVyZmFjZSBVc2VyTmFtZSB7XG4vLyAgICAgZmlyc3Q6IHN0cmluZ1xuLy8gICAgIGxhc3Q6IHN0cmluZ1xuLy8gICAgIHRpdGxlPzogc3RyaW5nXG4vLyB9XG5cbi8vIGludGVyZmFjZSBVc2VyIHtcbi8vICAgICBpZDogbnVtYmVyXG4vLyAgICAgbmFtZTogVXNlck5hbWVcbi8vICAgICBhZ2U6IG51bWJlclxuLy8gICAgIHN0YXRlOiBcIkFDVElWRVwiIHwgXCJJTkFDVElWRVwiXG4vLyAgICAgaXNfYWN0aXZlOiBib29sZWFuXG4vLyAgICAgY3JlYXRlZF90aW1lOiBEYXRlXG4vLyB9XG5cbi8vIGludGVyZmFjZSBDYXRlZ29yeSB7XG4vLyAgICAgaWQ6IG51bWJlclxuLy8gICAgIG5hbWU6IHN0cmluZ1xuLy8gICAgIHN0YXRlOiBDYXRlZ29yeVN0YXRlXG4vLyAgICAgYXV0aG9yOiBVc2VyXG4vLyAgICAgcGFyZW50OiBDYXRlZ29yeVxuLy8gfVxuXG4vLyBpbnRlcmZhY2UgUHJvZHVjdCB7XG4vLyAgICAgaWQ6IG51bWJlclxuLy8gICAgIG5hbWU6IHN0cmluZ1xuLy8gICAgIHR5cGU6IFByb2R1Y3RUeXBlXG4vLyAgICAgY2F0ZWdvcmllczogQXJyYXk8Q2F0ZWdvcnk+XG4vLyAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmF0b3JSZXN1bHQ8YW55PlxuLy8gfVxuXG4vLyBjbGFzcyBBbG1hIHtcbi8vICAgICBpZCE6IG51bWJlclxuLy8gICAgIGF1dGhvciE6IFVzZXJcbi8vICAgICB4eXo6IGFueVxuXG4vLyAgICAgZG9Tb21ldGhpbmcoKTogdm9pZCB7fVxuLy8gfVxuXG4vLyAvLyBUT0RPOiAuLi5cbi8vIHR5cGUgUG9seSA9IHsgdHlwZTogXCJ1c2VyXCI7IG5hbWU6IHN0cmluZzsgYWdlOiBudW1iZXIgfSB8IHsgdHlwZTogXCJwcm9kdWN0XCI7IG5hbWU6IHN0cmluZzsgc2t1OiBzdHJpbmcgfVxuXG4vLyBjb25zdCBmbGF0dGVuZWQ6IEZsYXR0ZW48UHJvZHVjdD4gPSB7IG5hbWU6IDEwLCBkc2ZzZmQ6IFwiT0tcIiB9XG4vLyBjb25zdCBhbG1heDogRmxhdHRlbjxBbG1hLCBbXCJyb290XCJdPiA9IHt9XG4vLyBjb25zdCBhbG1heGM6IEZsYXR0ZW48QWxtYT4gPSB7fVxuLy8gY29uc3QgZmxhdHRlbmVkMjogRmxhdHRlbjxBcnJheTxbVXNlciwgQWxtYV0+PiA9IHsgXCIqLjEuYXV0aG9yLmFnZVwiOiAxMCB9XG4vLyBjb25zdCBmbGF0dGVuZWQyYjogRmxhdHRlbjxbVXNlciwgQWxtYV0+ID0geyBcIjEuYXV0aG9yLmFnZVwiOiAxMCB9XG4vLyBjb25zdCBmbGF0dGVuZWQzOiBGbGF0dGVuPHsgW2tleTogc3RyaW5nIHwgbnVtYmVyXTogYW55IH0+ID0geyBkc2ZzZGY6IDEwIH1cbi8vIGNvbnN0IFRFOiBUdXBsZUVudHJpZXM8WzEsIFwib2tcIiwgZmFsc2VdPiA9IG51bGxcbi8vIGNvbnN0IGFueUFycmF5OiBGbGF0dGVuPEFycmF5PGFueT4+ID0geyBcIiouYWxtYVwiOiAxMCB9XG4vLyBjb25zdCBhbnlBcnJheTI6IEZsYXR0ZW48eyBhbG1hOiBhbnlbXSB9PiA9IHsgXCJhbG1hLioub2sueC55XCI6IDEwIH1cbi8vIGNvbnN0IGNhdDogRmxhdHRlbjxDYXRlZ29yeT4gPSB7IFwicGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LmF1dGhvci5pZFwiOiAxMCB9XG4vLyBjb25zdCBkdDogRmxhdHRlbjxbRGF0ZSwgc3RyaW5nXT4gPSB7IDA6IG5ldyBEYXRlKCksIDE6IFwiYWxtYVwiIH1cblxuLy8gY29uc3Qgcm9fY2F0OiBEZWVwUmVhZG9ubHk8RmxhdHRlbjxDYXRlZ29yeT4+ID0ge31cbi8vIHJvX2NhdFtcImF1dGhvci5hZ2VcIl0gPSAxMFxuXG4vLyBjb25zdCByb19vYmo6IERlZXBSZWFkb25seTxGbGF0dGVuPHsgW2tleTogc3RyaW5nXTogYW55IH0+PiA9IHt9XG4vLyByb19vYmpbXCJhbG1hXCJdXG5cbi8vIHR5cGUgWDxULCBGID0gRmxhdHRlbjxUPj4gPSB7IFtLIGluIGtleW9mIEZdOiB7IG9rOiBGW0tdIH0gfVxuXG4vLyBjb25zdCByb19vYmozOiBEZWVwUmVhZG9ubHk8WDx7IFtrZXk6IHN0cmluZ106IGFueSB9Pj4gPSB7fVxuXG4vLyB0eXBlIE9iaiA9IHsgW2tleTogc3RyaW5nXTogYW55IH1cblxuLy8gZXhwb3J0IHR5cGUgRmlsdGVyPFQgZXh0ZW5kcyBPYmo+ID0gX0ZpbHRlckxpdGU8RmxhdHRlbjxUPj5cblxuLy8gdHlwZSBfRmlsdGVyTGl0ZTxGIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfT4gPSB7IFtLIGluIGtleW9mIEZdOiBib29sZWFuIH1cblxuLy8gY29uc3QgeHh4OiBGaWx0ZXI8T2JqPiA9IHsgMTA6IHRydWUgfVxuLy8gY29uc3QgeHh4X3I6IERlZXBSZWFkb25seTxGaWx0ZXI8T2JqPj4gPSB7IGFsbWE6IHRydWUgfVxuIl19
@@ -1,3 +0,0 @@
1
- export {};
2
- // const final: MergeUnion<Test> = null as any
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UtdW5pb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3R5cGVzL21lcmdlLXVuaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFnQkEsOENBQThDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZhbCB9IGZyb20gXCIuL3V0aWxcIlxuXG4vLyB0eXBlIFRlc3QgPVxuLy8gICAgIHwgeyBzdGF0ZTogXCJBQ1RJVkVcIiB9XG4vLyAgICAgfCB7IHN0YXRlOiBcIklOQUNUSVZFXCIgfVxuLy8gICAgIHwgeyB2aXNpYmxlOiBib29sZWFuIH1cbi8vICAgICB8IHsgaXNfYWN0aXZlOiB0cnVlIH1cbi8vICAgICB8IHsgaXNfYWN0aXZlOiBmYWxzZSB9XG5cbnR5cGUgQWxsS2V5czxUPiA9IFQgZXh0ZW5kcyBhbnkgPyBrZXlvZiBUIDogbmV2ZXJcblxudHlwZSBUeXBlT2ZLZXk8VCwgVEsgZXh0ZW5kcyBBbGxLZXlzPFQ+PiA9IFQgZXh0ZW5kcyB7IFtLIGluIFRLXT86IGFueSB9ID8gVFtUS10gOiBuZXZlclxuLy8gY29uc3QgX1N0YXRlOiBUeXBlT2ZLZXk8VGVzdCwgXCJzdGF0ZVwiPiA9IG51bGwgYXMgYW55XG5cbi8vIGV4cG9ydCB0eXBlIE1lcmdlVW5pb248VD4gPSBFdmFsPHsgW0sgaW4gQWxsS2V5czxUPl06IFR5cGVPZktleTxULCBLPiB9PlxuZXhwb3J0IHR5cGUgTWVyZ2VVbmlvbjxUPiA9IEV2YWw8eyBbSyBpbiBBbGxLZXlzPFQ+XTogVHlwZU9mS2V5PFQsIEs+IH0+XG4vLyBjb25zdCBmaW5hbDogTWVyZ2VVbmlvbjxUZXN0PiA9IG51bGwgYXMgYW55XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXJhbmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy90eXBlcy9udW1iZXItcmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgRW51bWVyYXRlPE4gZXh0ZW5kcyBudW1iZXIsIEFjYyBleHRlbmRzIG51bWJlcltdID0gW10+ID0gQWNjW1wibGVuZ3RoXCJdIGV4dGVuZHMgTlxuICAgID8gQWNjW251bWJlcl1cbiAgICA6IEVudW1lcmF0ZTxOLCBbLi4uQWNjLCBBY2NbXCJsZW5ndGhcIl1dPlxuXG4vKipcbiAqIHR5cGUgWFkgPSBOdW1iZXJSYW5nZTwwLCAxMD5cbiAqL1xuZXhwb3J0IHR5cGUgTnVtYmVyUmFuZ2U8RiBleHRlbmRzIG51bWJlciwgVCBleHRlbmRzIG51bWJlcj4gPSBFeGNsdWRlPEVudW1lcmF0ZTxUPiwgRW51bWVyYXRlPEY+PlxuIl19
@@ -1,3 +0,0 @@
1
- import { isPrimitive } from "utility-types";
2
- export { isPrimitive };
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWl0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy90eXBlcy9wcmltaXRpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGVBQWUsQ0FBQTtBQUl0RCxPQUFPLEVBQWEsV0FBVyxFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1ByaW1pdGl2ZSwgUHJpbWl0aXZlIH0gZnJvbSBcInV0aWxpdHktdHlwZXNcIlxuXG5pbXBvcnQgeyBJc0FueSB9IGZyb20gXCIuL3V0aWxcIlxuXG5leHBvcnQgeyBQcmltaXRpdmUsIGlzUHJpbWl0aXZlIH1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbmV4cG9ydCB0eXBlIEJ1aWx0aW5zID0gUHJpbWl0aXZlIHwgRnVuY3Rpb24gfCBEYXRlXG5cbmV4cG9ydCB0eXBlIFRvUHJpbWl0aXZlTWFwID0ge1xuICAgIHN0cmluZzogc3RyaW5nXG4gICAgZGVmYXVsdDogc3RyaW5nXG4gICAgbnVtYmVyOiBudW1iZXJcbiAgICBiaWdpbnQ6IGJpZ2ludFxuICAgIGJvb2xlYW46IGJvb2xlYW5cbiAgICBzeW1ib2w6IHN5bWJvbFxufVxuXG50eXBlIEFzU3RyaW5nPFQsIFAsIEYgPSBuZXZlcj4gPSBQIGV4dGVuZHMgc3RyaW5nID8gKFQgZXh0ZW5kcyBQcmltaXRpdmUgPyBQIDogRikgOiBuZXZlclxuXG4vLyB0eXBlIEhhc1RvU3RyaW5nPFQsIFAsIEYgPSBuZXZlcj4gPSBQIGV4dGVuZHMgUHJpbWl0aXZlID8gc3RyaW5nIDogVCBleHRlbmRzIHsgdG9TdHJpbmcoKTogc3RyaW5nIH0gPyBzdHJpbmcgOiBGXG5cbnR5cGUgSGFzVmFsdWVPZjxULCBQLCBGID0gbmV2ZXI+ID0gVCBleHRlbmRzIHsgdmFsdWVPZigpOiBQIH0gPyBQIDogRlxuXG50eXBlIEhhc1RvUHJpbWl0aXZlPFQsIFAsIEYgPSBuZXZlcj4gPSBUIGV4dGVuZHMgeyBbU3ltYm9sLnRvUHJpbWl0aXZlXShoaW50OiBzdHJpbmcpOiBQIH0gPyBQIDogRlxuXG50eXBlIF9Bc1ByaW1pdGl2ZTxULCBQPiA9IEhhc1RvUHJpbWl0aXZlPFQsIFAsIEhhc1ZhbHVlT2Y8VCwgUCwgQXNTdHJpbmc8VCwgUD4+PlxuXG5leHBvcnQgdHlwZSBBc1ByaW1pdGl2ZTxUPiA9XG4gICAgSXNBbnk8VD4gZXh0ZW5kcyB0cnVlXG4gICAgICAgID8gVG9QcmltaXRpdmVNYXBba2V5b2YgVG9QcmltaXRpdmVNYXBdXG4gICAgICAgIDogeyBbSyBpbiBrZXlvZiBUb1ByaW1pdGl2ZU1hcF06IF9Bc1ByaW1pdGl2ZTxULCBUb1ByaW1pdGl2ZU1hcFtLXT4gfVtrZXlvZiBUb1ByaW1pdGl2ZU1hcF1cbiJdfQ==
@@ -1,22 +0,0 @@
1
- export {};
2
- // const o1: DeepReadonly<{ alma: 1; xyz: number }> = { alma: 1, xyz: 20 }
3
- // o1.xyz = 10
4
- // const a1: DeepReadonly<Array<number>> = [1]
5
- // a1[0] = 10
6
- // const t1: DeepReadonly<[1, "ok", true, { nice: number }]> = [1, "ok", true, { nice: 10 }]
7
- // t1[0] = 1
8
- // t1[3].nice = 10
9
- // t1.push()
10
- // const t2: DeepReadonly<[1, any]> = [1, "ok", true, { nice: 10 }]
11
- // t2[0] = 1
12
- // const m1: DeepReadonly<Map<string, { nice: boolean }>> = new Map()
13
- // m1.set("x", { nice: true })
14
- // interface Rec {
15
- // id: number
16
- // parent: Rec
17
- // }
18
- // const r1: DeepReadonly<Rec> = {} as any
19
- // r1.id = 10
20
- // r1.parent.parent.parent = 10
21
- // const d1: DeepReadonly<Date> = new Date()
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3R5cGVzL3JlYWRvbmx5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFvRUEsMEVBQTBFO0FBQzFFLGNBQWM7QUFFZCw4Q0FBOEM7QUFDOUMsYUFBYTtBQUViLDRGQUE0RjtBQUM1RixZQUFZO0FBQ1osa0JBQWtCO0FBQ2xCLFlBQVk7QUFFWixtRUFBbUU7QUFDbkUsWUFBWTtBQUVaLHFFQUFxRTtBQUNyRSw4QkFBOEI7QUFFOUIsa0JBQWtCO0FBQ2xCLGlCQUFpQjtBQUNqQixrQkFBa0I7QUFDbEIsSUFBSTtBQUVKLDBDQUEwQztBQUMxQyxhQUFhO0FBQ2IsK0JBQStCO0FBRS9CLDRDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gXCIuL3ByaW1pdGl2ZVwiXG5pbXBvcnQgeyBJc0FueSwgSXNUdXBsZSwgTWF4UmVjdXJzaW9uIH0gZnJvbSBcIi4vdXRpbFwiXG5cbmV4cG9ydCB0eXBlIERlZXBSZWFkb25seTxULCBEIGV4dGVuZHMgbnVtYmVyID0gTWF4UmVjdXJzaW9uPiA9IF9EZWVwUmVhZG9ubHk8VCwgW10sIEQ+XG5cbnR5cGUgX0RlZXBSZWFkb25seTxULCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiBJc0FueTxUPiBleHRlbmRzIHRydWVcbiAgICAgID8gYW55XG4gICAgICA6IFQgZXh0ZW5kcyBQcmltaXRpdmUgfCAoKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpXG4gICAgICAgID8gVFxuICAgICAgICA6IFQgZXh0ZW5kcyBEYXRlXG4gICAgICAgICAgPyBSZWFkb25seURhdGVcbiAgICAgICAgICA6IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBWPlxuICAgICAgICAgICAgPyBJc1R1cGxlPFQ+IGV4dGVuZHMgdHJ1ZVxuICAgICAgICAgICAgICAgID8gX0RlZXBSZWFkb25seVR1cGxlPFQsIFAsIEQ+XG4gICAgICAgICAgICAgICAgOiBfRGVlcFJlYWRvbmx5QXJyYXk8ViwgUCwgRD5cbiAgICAgICAgICAgIDogVCBleHRlbmRzIE1hcDxpbmZlciBNSywgaW5mZXIgTVY+XG4gICAgICAgICAgICAgID8gX0RlZXBSZWFkb25seU1hcDxNSywgTVYsIFAsIEQ+XG4gICAgICAgICAgICAgIDogVCBleHRlbmRzIFNldDxpbmZlciBWPlxuICAgICAgICAgICAgICAgID8gX0RlZXBSZWFkb25seVNldDxWLCBQLCBEPlxuICAgICAgICAgICAgICAgIDogVCBleHRlbmRzIG9iamVjdFxuICAgICAgICAgICAgICAgICAgPyBfRGVlcFJlYWRvbmx5T2JqZWN0PFQsIFAsIEQ+XG4gICAgICAgICAgICAgICAgICA6IFRcblxudHlwZSBfRGVlcFJlYWRvbmx5VHVwbGU8VCBleHRlbmRzIGFueVtdLCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gX1JlYWRvbmx5VHVwbGU8VCwgW10sIFtdLCBQLCBEPlxuXG50eXBlIF9SZWFkb25seVR1cGxlPFxuICAgIFQgZXh0ZW5kcyBhbnlbXSxcbiAgICBLIGV4dGVuZHMgbnVtYmVyW10sXG4gICAgUiBleHRlbmRzIHJlYWRvbmx5IGFueVtdLFxuICAgIFAgZXh0ZW5kcyBudW1iZXJbXSxcbiAgICBEIGV4dGVuZHMgbnVtYmVyXG4+ID0gVFtcImxlbmd0aFwiXSBleHRlbmRzIEtbXCJsZW5ndGhcIl1cbiAgICA/IFJcbiAgICA6IF9SZWFkb25seVR1cGxlPFQsIFsuLi5LLCBLW1wibGVuZ3RoXCJdXSwgcmVhZG9ubHkgWy4uLlIsIF9EZWVwUmVhZG9ubHk8VFtLW1wibGVuZ3RoXCJdXSwgWy4uLlAsIDBdLCBEPl0sIFAsIEQ+XG5cbnR5cGUgX0RlZXBSZWFkb25seUFycmF5PFQsIFAgZXh0ZW5kcyBudW1iZXJbXSwgRCBleHRlbmRzIG51bWJlcj4gPSBSZWFkb25seUFycmF5PFxuICAgIElzQW55PFQ+IGV4dGVuZHMgdHJ1ZSA/IGFueSA6IF9EZWVwUmVhZG9ubHk8VCwgWy4uLlAsIDBdLCBEPlxuPlxuXG50eXBlIF9EZWVwUmVhZG9ubHlPYmplY3Q8VCBleHRlbmRzIG9iamVjdCwgUCBleHRlbmRzIG51bWJlcltdLCBEIGV4dGVuZHMgbnVtYmVyPiA9IHtcbiAgICByZWFkb25seSBbSyBpbiBrZXlvZiBUXTogSXNBbnk8VFtLXT4gZXh0ZW5kcyB0cnVlID8gYW55IDogX0RlZXBSZWFkb25seTxUW0tdLCBbLi4uUCwgMF0sIEQ+XG59XG5cbnR5cGUgX0RlZXBSZWFkb25seU1hcDxLLCBWLCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUmVhZG9ubHlNYXA8SywgX0RlZXBSZWFkb25seTxWLCBbLi4uUCwgMF0sIEQ+PlxuXG50eXBlIF9EZWVwUmVhZG9ubHlTZXQ8ViwgUCBleHRlbmRzIG51bWJlcltdLCBEIGV4dGVuZHMgbnVtYmVyPiA9IFJlYWRvbmx5U2V0PF9EZWVwUmVhZG9ubHk8ViwgWy4uLlAsIDBdLCBEPj5cblxuZXhwb3J0IHR5cGUgUmVhZG9ubHlEYXRlID0gT21pdDxcbiAgICBEYXRlLFxuICAgIHwgXCJzZXRUaW1lXCJcbiAgICB8IFwic2V0TWlsbGlzZWNvbmRzXCJcbiAgICB8IFwic2V0VVRDTWlsbGlzZWNvbmRzXCJcbiAgICB8IFwic2V0U2Vjb25kc1wiXG4gICAgfCBcInNldFVUQ1NlY29uZHNcIlxuICAgIHwgXCJzZXRNaW51dGVzXCJcbiAgICB8IFwic2V0VVRDTWludXRlc1wiXG4gICAgfCBcInNldEhvdXJzXCJcbiAgICB8IFwic2V0VVRDSG91cnNcIlxuICAgIHwgXCJzZXREYXRlXCJcbiAgICB8IFwic2V0VVRDRGF0ZVwiXG4gICAgfCBcInNldE1vbnRoXCJcbiAgICB8IFwic2V0VVRDTW9udGhcIlxuICAgIHwgXCJzZXRGdWxsWWVhclwiXG4gICAgfCBcInNldFVUQ0Z1bGxZZWFyXCJcbj5cblxuLy8gY29uc3QgbzE6IERlZXBSZWFkb25seTx7IGFsbWE6IDE7IHh5ejogbnVtYmVyIH0+ID0geyBhbG1hOiAxLCB4eXo6IDIwIH1cbi8vIG8xLnh5eiA9IDEwXG5cbi8vIGNvbnN0IGExOiBEZWVwUmVhZG9ubHk8QXJyYXk8bnVtYmVyPj4gPSBbMV1cbi8vIGExWzBdID0gMTBcblxuLy8gY29uc3QgdDE6IERlZXBSZWFkb25seTxbMSwgXCJva1wiLCB0cnVlLCB7IG5pY2U6IG51bWJlciB9XT4gPSBbMSwgXCJva1wiLCB0cnVlLCB7IG5pY2U6IDEwIH1dXG4vLyB0MVswXSA9IDFcbi8vIHQxWzNdLm5pY2UgPSAxMFxuLy8gdDEucHVzaCgpXG5cbi8vIGNvbnN0IHQyOiBEZWVwUmVhZG9ubHk8WzEsIGFueV0+ID0gWzEsIFwib2tcIiwgdHJ1ZSwgeyBuaWNlOiAxMCB9XVxuLy8gdDJbMF0gPSAxXG5cbi8vIGNvbnN0IG0xOiBEZWVwUmVhZG9ubHk8TWFwPHN0cmluZywgeyBuaWNlOiBib29sZWFuIH0+PiA9IG5ldyBNYXAoKVxuLy8gbTEuc2V0KFwieFwiLCB7IG5pY2U6IHRydWUgfSlcblxuLy8gaW50ZXJmYWNlIFJlYyB7XG4vLyAgICAgaWQ6IG51bWJlclxuLy8gICAgIHBhcmVudDogUmVjXG4vLyB9XG5cbi8vIGNvbnN0IHIxOiBEZWVwUmVhZG9ubHk8UmVjPiA9IHt9IGFzIGFueVxuLy8gcjEuaWQgPSAxMFxuLy8gcjEucGFyZW50LnBhcmVudC5wYXJlbnQgPSAxMFxuXG4vLyBjb25zdCBkMTogRGVlcFJlYWRvbmx5PERhdGU+ID0gbmV3IERhdGUoKVxuIl19
@@ -1,13 +0,0 @@
1
- export {};
2
- // const exca1: ExcludeAny<any> = null
3
- // const exca2: ExcludeAny<string | any> = "nice"
4
- // const exca3: ExcludeAny<"p1" | "p2" | any> = "p2"
5
- // const exca4: ExcludeAny<"p1" | "p2"> = "p2"
6
- // // type X<T> = IsAny<T> extends true ? "T" : "F"
7
- // // const isAnyCheck: X<unknown> = "F"
8
- // // const isAnyCheck2: X<any> = "T"
9
- // // const isAnyCheck3: X<{ [key: string]: any }> = "F"
10
- // const po1: IsPlainObject<{ [key: string]: any }> = true
11
- // const po2: IsPlainObject<{ p1: boolean; p2: string }> = false
12
- // const po3: IsPlainObject<{ p1: boolean; p2: any }> = false
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdHlwZXMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBNERBLHNDQUFzQztBQUN0QyxpREFBaUQ7QUFDakQsb0RBQW9EO0FBQ3BELDhDQUE4QztBQUU5QyxtREFBbUQ7QUFFbkQsd0NBQXdDO0FBQ3hDLHFDQUFxQztBQUNyQyx3REFBd0Q7QUFDeEQsMERBQTBEO0FBQzFELGdFQUFnRTtBQUNoRSw2REFBNkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXJnZVVuaW9uIH0gZnJvbSBcIi4vbWVyZ2UtdW5pb25cIlxuXG5leHBvcnQgdHlwZSBNYXhSZWN1cnNpb24gPSAxMFxuXG4vLyBjb25zdCDhl4XNtuG7viA9IFN5bWJvbChcIl9fYW55X19cIilcblxuLy8gaW50ZXJmYWNlIEFueU9iamVjdCB7XG4vLyAgICAg4ZeFzbbhu746IGJvb2xlYW5cbi8vIH1cblxuLy8gZXhwb3J0IHR5cGUgSXNBbnk8VD4gPSBBbnlPYmplY3QgZXh0ZW5kcyBUID8gdHJ1ZSA6IGZhbHNlXG5leHBvcnQgdHlwZSBJZkFueTxPLCBULCBGPiA9IDAgZXh0ZW5kcyAxICYgTyA/IFQgOiBGXG5leHBvcnQgdHlwZSBJc0FueTxUPiA9IElmQW55PFQsIHRydWUsIGZhbHNlPlxuXG5leHBvcnQgdHlwZSBJZlR1cGxlPE8sIFQsIEYsIEUgPSBuZXZlcj4gPVxuICAgIE8gZXh0ZW5kcyBBcnJheTxhbnk+ID8gKC0xIGV4dGVuZHMgT1tcImxlbmd0aFwiXSA/IEYgOiBPW1wibGVuZ3RoXCJdIGV4dGVuZHMgMCA/IEUgOiBUKSA6IEZcbmV4cG9ydCB0eXBlIElzVHVwbGU8VCwgRSA9IG5ldmVyPiA9IElmVHVwbGU8VCwgdHJ1ZSwgZmFsc2UsIEU+XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiB0eXBlIFR1cGxlID0gVHVwbGVFbnRyaWVzPFsxLCBcIm9rXCIsIGZhbHNlXT5cbiAqIFR1cGxlID0gezA6IDEsIDE6IFwib2tcIiwgMjogZmFsc2V9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgVHVwbGVJdGVtczxUPiA9IFQgZXh0ZW5kcyBBcnJheTxhbnk+ID8gTWVyZ2VVbmlvbjxfVHVwbGVJdGVtczxUPj4gOiBuZXZlclxuXG50eXBlIF9UdXBsZUl0ZW1zPFxuICAgIFQgZXh0ZW5kcyBhbnlbXSxcbiAgICBLIGV4dGVuZHMgbnVtYmVyW10gPSBbXSxcbiAgICBPIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IG5ldmVyXG4+ID0gVFtcImxlbmd0aFwiXSBleHRlbmRzIEtbXCJsZW5ndGhcIl1cbiAgICA/IE9cbiAgICA6IF9UdXBsZUl0ZW1zPFQsIFsuLi5LLCBLW1wibGVuZ3RoXCJdXSwgTyB8IHsgW2tleSBpbiBLW1wibGVuZ3RoXCJdXTogVFtLW1wibGVuZ3RoXCJdXSB9PlxuXG4vLyBUT0RPOlxuLy8gZXhwb3J0IHR5cGUgRXhjbHVkZUFueTxULCBVID0gVW5pb25pemU8eyBba2V5OiBzdHJpbmddOiBUIH0+PiA9IHsgW0sgaW4ga2V5b2YgVV06IElmQW55PFVbS10sIG5ldmVyLCBVW0tdPiB9W2tleW9mIFVdXG4vLyBleHBvcnQgdHlwZSBFeGNsdWRlQW55PFQ+ID0gQXJyYXk8VD5bbnVtYmVyXVxuXG5leHBvcnQgdHlwZSBPYmplY3RLZXkgPSBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2xcbi8vIGV4cG9ydCB0eXBlIFBsYWluT2JqZWN0PEtUIGV4dGVuZHMgT2JqZWN0S2V5ID0gT2JqZWN0S2V5PiA9IHsgW2tleSBpbiBLVF06IGFueSB9XG4vLyBleHBvcnQgdHlwZSBJZlBsYWluT2JqZWN0PE8sIFQsIEY+ID0gTyBleHRlbmRzIHsgW2tleTogT2JqZWN0S2V5XTogYW55IH1cbi8vICAgICA/IEV4Y2x1ZGVBbnk8T1trZXlvZiBPXT4gZXh0ZW5kcyBuZXZlclxuLy8gICAgICAgICA/IFRcbi8vICAgICAgICAgOiBGXG4vLyAgICAgOiBGXG4vLyBleHBvcnQgdHlwZSBJc1BsYWluT2JqZWN0PFQ+ID0gSWZQbGFpbk9iamVjdDxULCB0cnVlLCBmYWxzZT5cblxuLy8gZXhwb3J0IHR5cGUgSWZQbGFpbkFycmF5PE8sIFQsIEY+ID0gTyBleHRlbmRzIEFycmF5PGFueT4gPyAoRXhjbHVkZUFueTxPW251bWJlcl0+IGV4dGVuZHMgbmV2ZXIgPyBUIDogRikgOiBGXG4vLyBleHBvcnQgdHlwZSBJc1BsYWluQXJyYXk8VD4gPSBJZlBsYWluQXJyYXk8VCwgdHJ1ZSwgZmFsc2U+XG5cbi8qKlxuICogRXZhdWxhdGUgdHlwZSBleHByZXNzaW9uc1xuICpcbiAqIGBgYHRzXG4gKiBleHBvcnQgdHlwZSBLZXlPZjxUPiA9IEV2YWw8eyBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIG5ldmVyID8gbmV2ZXIgOiBLIH1ba2V5b2YgVF0+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgRXZhbDxUPiA9IEFycmF5PFQ+W251bWJlcl1cblxuLy8gY29uc3QgZXhjYTE6IEV4Y2x1ZGVBbnk8YW55PiA9IG51bGxcbi8vIGNvbnN0IGV4Y2EyOiBFeGNsdWRlQW55PHN0cmluZyB8IGFueT4gPSBcIm5pY2VcIlxuLy8gY29uc3QgZXhjYTM6IEV4Y2x1ZGVBbnk8XCJwMVwiIHwgXCJwMlwiIHwgYW55PiA9IFwicDJcIlxuLy8gY29uc3QgZXhjYTQ6IEV4Y2x1ZGVBbnk8XCJwMVwiIHwgXCJwMlwiPiA9IFwicDJcIlxuXG4vLyAvLyB0eXBlIFg8VD4gPSBJc0FueTxUPiBleHRlbmRzIHRydWUgPyBcIlRcIiA6IFwiRlwiXG5cbi8vIC8vIGNvbnN0IGlzQW55Q2hlY2s6IFg8dW5rbm93bj4gPSBcIkZcIlxuLy8gLy8gY29uc3QgaXNBbnlDaGVjazI6IFg8YW55PiA9IFwiVFwiXG4vLyAvLyBjb25zdCBpc0FueUNoZWNrMzogWDx7IFtrZXk6IHN0cmluZ106IGFueSB9PiA9IFwiRlwiXG4vLyBjb25zdCBwbzE6IElzUGxhaW5PYmplY3Q8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4gPSB0cnVlXG4vLyBjb25zdCBwbzI6IElzUGxhaW5PYmplY3Q8eyBwMTogYm9vbGVhbjsgcDI6IHN0cmluZyB9PiA9IGZhbHNlXG4vLyBjb25zdCBwbzM6IElzUGxhaW5PYmplY3Q8eyBwMTogYm9vbGVhbjsgcDI6IGFueSB9PiA9IGZhbHNlXG4iXX0=
@@ -1,14 +0,0 @@
1
- export const Zone = window.Zone;
2
- export function __zone_symbol__(val) {
3
- const symbol = typeof Zone !== "undefined" && Zone.__symbol__
4
- ? Zone.__symbol__(val)
5
- : `__zone_symbol__${val}`;
6
- return typeof window[symbol] !== "undefined" ? symbol : val;
7
- }
8
- export const rawSetTimeout = window[__zone_symbol__("setTimeout")];
9
- export const rawClearTimeout = window[__zone_symbol__("clearTimeout")];
10
- export const rawSetInterval = window[__zone_symbol__("setInterval")];
11
- export const rawClearInterval = window[__zone_symbol__("clearInterval")];
12
- export const rawRequestAnimationFrame = window[__zone_symbol__("requestAnimationFrame")];
13
- export const rawCancelAnimationFrame = window[__zone_symbol__("cancelAnimationFrame")];
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5uZ3pvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3Vubmd6b25lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBSSxNQUFjLENBQUMsSUFBSSxDQUFBO0FBRXhDLE1BQU0sVUFBVSxlQUFlLENBQW1CLEdBQU07SUFDcEQsTUFBTSxNQUFNLEdBQ1IsT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFLLElBQVksQ0FBQyxVQUFVO1FBQ25ELENBQUMsQ0FBRSxJQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUMvQixDQUFDLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFBO0lBQ2pDLE9BQU8sT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtBQUMvRCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQTtBQUNsRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFBO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUE7QUFDcEUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFBO0FBQ3hFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFBO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFpvbmUgPSAod2luZG93IGFzIGFueSkuWm9uZVxuXG5leHBvcnQgZnVuY3Rpb24gX196b25lX3N5bWJvbF9fPFQgZXh0ZW5kcyBzdHJpbmc+KHZhbDogVCk6IFQge1xuICAgIGNvbnN0IHN5bWJvbCA9XG4gICAgICAgIHR5cGVvZiBab25lICE9PSBcInVuZGVmaW5lZFwiICYmIChab25lIGFzIGFueSkuX19zeW1ib2xfX1xuICAgICAgICAgICAgPyAoWm9uZSBhcyBhbnkpLl9fc3ltYm9sX18odmFsKVxuICAgICAgICAgICAgOiBgX196b25lX3N5bWJvbF9fJHt2YWx9YFxuICAgIHJldHVybiB0eXBlb2Ygd2luZG93W3N5bWJvbF0gIT09IFwidW5kZWZpbmVkXCIgPyBzeW1ib2wgOiB2YWxcbn1cblxuZXhwb3J0IGNvbnN0IHJhd1NldFRpbWVvdXQgPSB3aW5kb3dbX196b25lX3N5bWJvbF9fKFwic2V0VGltZW91dFwiKV1cbmV4cG9ydCBjb25zdCByYXdDbGVhclRpbWVvdXQgPSB3aW5kb3dbX196b25lX3N5bWJvbF9fKFwiY2xlYXJUaW1lb3V0XCIpXVxuZXhwb3J0IGNvbnN0IHJhd1NldEludGVydmFsID0gd2luZG93W19fem9uZV9zeW1ib2xfXyhcInNldEludGVydmFsXCIpXVxuZXhwb3J0IGNvbnN0IHJhd0NsZWFySW50ZXJ2YWwgPSB3aW5kb3dbX196b25lX3N5bWJvbF9fKFwiY2xlYXJJbnRlcnZhbFwiKV1cbmV4cG9ydCBjb25zdCByYXdSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSB3aW5kb3dbX196b25lX3N5bWJvbF9fKFwicmVxdWVzdEFuaW1hdGlvbkZyYW1lXCIpXVxuZXhwb3J0IGNvbnN0IHJhd0NhbmNlbEFuaW1hdGlvbkZyYW1lID0gd2luZG93W19fem9uZV9zeW1ib2xfXyhcImNhbmNlbEFuaW1hdGlvbkZyYW1lXCIpXVxuIl19
package/esm2022/util.mjs DELETED
@@ -1,79 +0,0 @@
1
- import { isPlainObject as _isPlainObject, cloneDeep } from "lodash-es";
2
- // export { deepFreeze }
3
- export const deepClone = typeof structuredClone === "function" ? structuredClone : cloneDeep;
4
- // export const deepFreeze: <T>(obj: T) => DeepReadonly<T> = o => Object.freeze(o) as any
5
- export const isPlainObject = _isPlainObject;
6
- export function deepFreeze(obj) {
7
- if (obj == null) {
8
- return obj;
9
- }
10
- if (obj instanceof Map) {
11
- obj.clear =
12
- obj.delete =
13
- obj.set =
14
- function () {
15
- throw new Error("map is read-only");
16
- };
17
- }
18
- else if (obj instanceof Set) {
19
- obj.add =
20
- obj.clear =
21
- obj.delete =
22
- function () {
23
- throw new Error("set is read-only");
24
- };
25
- }
26
- // Freeze self
27
- Object.freeze(obj);
28
- Object.getOwnPropertyNames(obj).forEach(name => {
29
- const prop = obj[name];
30
- const type = typeof prop;
31
- // Freeze prop if it is an object or function and also not already frozen
32
- if ((type === "object" || type === "function") && !Object.isFrozen(prop)) {
33
- deepFreeze(prop);
34
- }
35
- });
36
- return obj;
37
- }
38
- /**
39
- * @example
40
- * ```ts
41
- * toSorted([{id: 1}, {id: 2}, {id: 3}], sortBy([{id: "desc"}]))
42
- * ```
43
- */
44
- export function toSorted(items, fn) {
45
- if (typeof items.toSorted === "function") {
46
- return items.toSorted(fn);
47
- }
48
- else {
49
- return items.slice(0).sort(fn);
50
- }
51
- }
52
- export function isFalsy(value) {
53
- if (value == null) {
54
- return true;
55
- }
56
- else if (typeof value === "string") {
57
- return value.length === 0;
58
- }
59
- else if (typeof value === "number") {
60
- return isNaN(value) || value === 0;
61
- }
62
- else if (Array.isArray(value)) {
63
- return value.length === 0;
64
- }
65
- else if (isPlainObject(value)) {
66
- return Object.keys(value).length === 0;
67
- }
68
- else if (value instanceof Set) {
69
- return value.size === 0;
70
- }
71
- else if (value instanceof Map) {
72
- return value.size === 0;
73
- }
74
- return value === false;
75
- }
76
- export function isTruthy(value) {
77
- return !isFalsy(value);
78
- }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxJQUFJLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFLdEUsd0JBQXdCO0FBRXhCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBcUIsT0FBTyxlQUFlLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtBQUM5Ryx5RkFBeUY7QUFDekYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFnRCxjQUFxQixDQUFBO0FBRS9GLE1BQU0sVUFBVSxVQUFVLENBQUksR0FBTTtJQUNoQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNkLE9BQU8sR0FBVSxDQUFBO0lBQ3JCLENBQUM7SUFFRCxJQUFJLEdBQUcsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUNyQixHQUFHLENBQUMsS0FBSztZQUNMLEdBQUcsQ0FBQyxNQUFNO2dCQUNWLEdBQUcsQ0FBQyxHQUFHO29CQUNIO3dCQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtvQkFDdkMsQ0FBQyxDQUFBO0lBQ2IsQ0FBQztTQUFNLElBQUksR0FBRyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQzVCLEdBQUcsQ0FBQyxHQUFHO1lBQ0gsR0FBRyxDQUFDLEtBQUs7Z0JBQ1QsR0FBRyxDQUFDLE1BQU07b0JBQ047d0JBQ0ksTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO29CQUN2QyxDQUFDLENBQUE7SUFDYixDQUFDO0lBRUQsY0FBYztJQUNkLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFbEIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUMzQyxNQUFNLElBQUksR0FBSSxHQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0IsTUFBTSxJQUFJLEdBQUcsT0FBTyxJQUFJLENBQUE7UUFFeEIseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN2RSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEIsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFBO0lBRUYsT0FBTyxHQUFVLENBQUE7QUFDckIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBSSxLQUFtQixFQUFFLEVBQTBCO0lBQ3ZFLElBQUksT0FBUSxLQUFhLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ2hELE9BQVEsS0FBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUN0QyxDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDbEMsQ0FBQztBQUNMLENBQUM7QUFtQkQsTUFBTSxVQUFVLE9BQU8sQ0FBSSxLQUFRO0lBQy9CLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2hCLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztTQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDO1NBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFBO0lBQ3RDLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFBO0lBQzdCLENBQUM7U0FBTSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFBO0lBQzFDLENBQUM7U0FBTSxJQUFLLEtBQWEsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QyxPQUFRLEtBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFBO0lBQ3BDLENBQUM7U0FBTSxJQUFLLEtBQWEsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QyxPQUFRLEtBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFDRCxPQUFPLEtBQUssS0FBSyxLQUFLLENBQUE7QUFDMUIsQ0FBQztBQUlELE1BQU0sVUFBVSxRQUFRLENBQUksS0FBUTtJQUNoQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYWluT2JqZWN0IGFzIF9pc1BsYWluT2JqZWN0LCBjbG9uZURlZXAgfSBmcm9tIFwibG9kYXNoLWVzXCJcblxuaW1wb3J0IHsgRGVlcFJlYWRvbmx5IH0gZnJvbSBcIi4vdHlwZXMvcmVhZG9ubHlcIlxuaW1wb3J0IHsgSWZBbnksIElmVHVwbGUgfSBmcm9tIFwiLi90eXBlcy91dGlsXCJcblxuLy8gZXhwb3J0IHsgZGVlcEZyZWV6ZSB9XG5cbmV4cG9ydCBjb25zdCBkZWVwQ2xvbmU6IDxUPihvYmo6IFQpID0+IFQgPSB0eXBlb2Ygc3RydWN0dXJlZENsb25lID09PSBcImZ1bmN0aW9uXCIgPyBzdHJ1Y3R1cmVkQ2xvbmUgOiBjbG9uZURlZXBcbi8vIGV4cG9ydCBjb25zdCBkZWVwRnJlZXplOiA8VD4ob2JqOiBUKSA9PiBEZWVwUmVhZG9ubHk8VD4gPSBvID0+IE9iamVjdC5mcmVlemUobykgYXMgYW55XG5leHBvcnQgY29uc3QgaXNQbGFpbk9iamVjdDogKGFyZzogYW55KSA9PiBhcmcgaXMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IF9pc1BsYWluT2JqZWN0IGFzIGFueVxuXG5leHBvcnQgZnVuY3Rpb24gZGVlcEZyZWV6ZTxUPihvYmo6IFQpOiBEZWVwUmVhZG9ubHk8VD4ge1xuICAgIGlmIChvYmogPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gb2JqIGFzIGFueVxuICAgIH1cblxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgb2JqLmNsZWFyID1cbiAgICAgICAgICAgIG9iai5kZWxldGUgPVxuICAgICAgICAgICAgb2JqLnNldCA9XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJtYXAgaXMgcmVhZC1vbmx5XCIpXG4gICAgICAgICAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgIG9iai5hZGQgPVxuICAgICAgICAgICAgb2JqLmNsZWFyID1cbiAgICAgICAgICAgIG9iai5kZWxldGUgPVxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic2V0IGlzIHJlYWQtb25seVwiKVxuICAgICAgICAgICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGcmVlemUgc2VsZlxuICAgIE9iamVjdC5mcmVlemUob2JqKVxuXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICBjb25zdCBwcm9wID0gKG9iaiBhcyBhbnkpW25hbWVdXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgcHJvcFxuXG4gICAgICAgIC8vIEZyZWV6ZSBwcm9wIGlmIGl0IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiBhbmQgYWxzbyBub3QgYWxyZWFkeSBmcm96ZW5cbiAgICAgICAgaWYgKCh0eXBlID09PSBcIm9iamVjdFwiIHx8IHR5cGUgPT09IFwiZnVuY3Rpb25cIikgJiYgIU9iamVjdC5pc0Zyb3plbihwcm9wKSkge1xuICAgICAgICAgICAgZGVlcEZyZWV6ZShwcm9wKVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBvYmogYXMgYW55XG59XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiB0b1NvcnRlZChbe2lkOiAxfSwge2lkOiAyfSwge2lkOiAzfV0sIHNvcnRCeShbe2lkOiBcImRlc2NcIn1dKSlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Tb3J0ZWQ8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSwgZm46IChhOiBULCBiOiBUKSA9PiBudW1iZXIpOiBUW10ge1xuICAgIGlmICh0eXBlb2YgKGl0ZW1zIGFzIGFueSkudG9Tb3J0ZWQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gKGl0ZW1zIGFzIGFueSkudG9Tb3J0ZWQoZm4pXG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLnNsaWNlKDApLnNvcnQoZm4pXG4gICAgfVxufVxuXG50eXBlIEZhbHN5SWZOdWxsPE8+ID0gTyBleHRlbmRzIG51bGwgPyBudWxsIDogbmV2ZXJcbnR5cGUgRmFsc3lJZlVuZGVmaW5lZDxPPiA9IE8gZXh0ZW5kcyB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBuZXZlclxudHlwZSBGYWxzeUlmQm9vbDxPPiA9IE8gZXh0ZW5kcyBib29sZWFuID8gZmFsc2UgOiBuZXZlclxudHlwZSBGYWxzeUlmU3RyaW5nPE8+ID0gTyBleHRlbmRzIHN0cmluZyA/IFwiXCIgOiBuZXZlclxudHlwZSBGYWxzeUlmTnVtYmVyPE8+ID0gTyBleHRlbmRzIG51bWJlciA/IDAgOiBuZXZlclxudHlwZSBGYWxzeUlmVHVwbGU8Tz4gPSBJZlR1cGxlPE8sIE8sIG5ldmVyLCBuZXZlcj5cbnR5cGUgRmFsc3lJZkFueTxPPiA9IElmQW55PE8sIE8sIG5ldmVyPlxuXG5leHBvcnQgdHlwZSBJc0ZhbHN5PE8+ID1cbiAgICB8IEZhbHN5SWZOdWxsPE8+XG4gICAgfCBGYWxzeUlmVW5kZWZpbmVkPE8+XG4gICAgfCBGYWxzeUlmQm9vbDxPPlxuICAgIHwgRmFsc3lJZlN0cmluZzxPPlxuICAgIHwgRmFsc3lJZk51bWJlcjxPPlxuICAgIHwgRmFsc3lJZlR1cGxlPE8+XG4gICAgfCBGYWxzeUlmQW55PE8+XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ZhbHN5PFQ+KHZhbHVlOiBUKTogdmFsdWUgaXMgSXNGYWxzeTxUPiAmIFQge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA9PT0gMFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJldHVybiBpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IDBcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPT09IDBcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwXG4gICAgfSBlbHNlIGlmICgodmFsdWUgYXMgYW55KSBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICByZXR1cm4gKHZhbHVlIGFzIGFueSkuc2l6ZSA9PT0gMFxuICAgIH0gZWxzZSBpZiAoKHZhbHVlIGFzIGFueSkgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgcmV0dXJuICh2YWx1ZSBhcyBhbnkpLnNpemUgPT09IDBcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlID09PSBmYWxzZVxufVxuXG5leHBvcnQgdHlwZSBJc1RydXRoeTxUPiA9IEV4Y2x1ZGU8VCwgdW5kZWZpbmVkIHwgbnVsbCB8IGZhbHNlIHwgXCJcIiB8IDA+XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RydXRoeTxUPih2YWx1ZTogVCk6IHZhbHVlIGlzIElzVHJ1dGh5PFQ+IHtcbiAgICByZXR1cm4gIWlzRmFsc3kodmFsdWUpXG59XG4iXX0=