From 6da02414d3320de6f9ae9d015af2fa8b6aa98741 Mon Sep 17 00:00:00 2001 From: blokhin Date: Fri, 31 Jan 2025 15:34:09 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20tilde-la?= =?UTF-8?q?b/cifplayer@8d8ac3cf016a3cb935f60ae8b32240e7d9efa2bf=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- node.audit.js | 3 +- node.d.ts | 4999 -------------- node.d.ts.map | 2 +- node.deps.json | 2 +- node.js | 11737 -------------------------------- node.js.map | 2 +- node.locale=en.json | 5 - node.locale=ru.json | 5 - node.locale=uk.json | 5 - node.meta.tree | 9 +- node.mjs | 11737 -------------------------------- node.test.js | 15235 ------------------------------------------ node.test.js.map | 2 +- node.view.tree | 1028 --- package.json | 225 +- web.audit.js | 3 +- web.d.ts | 50 +- web.d.ts.map | 2 +- web.deps.json | 2 +- web.js | 243 +- web.js.map | 2 +- web.meta.tree | 1 + web.mjs | 243 +- web.view.tree | 7 +- 24 files changed, 313 insertions(+), 45236 deletions(-) delete mode 100644 node.locale=en.json delete mode 100644 node.locale=ru.json delete mode 100644 node.locale=uk.json delete mode 100644 node.view.tree diff --git a/node.audit.js b/node.audit.js index 8229211..5dce63b 100644 --- a/node.audit.js +++ b/node.audit.js @@ -1 +1,2 @@ -console.info( '%c ▫ $mol_build ▫ Audit passed', 'color:forestgreen; font-weight:bolder' ) \ No newline at end of file +console.info( `%cplace: $mol_build +message: Audit passed`, 'color:forestgreen; font-weight:bolder' ) \ No newline at end of file diff --git a/node.d.ts b/node.d.ts index 0025169..f9c677f 100644 --- a/node.d.ts +++ b/node.d.ts @@ -13,5004 +13,5 @@ declare namespace $ { export {}; } -declare namespace $ { - const $mol_ambient_ref: unique symbol; - type $mol_ambient_context = $; - function $mol_ambient(this: $ | void, overrides: Partial<$>): $; -} - -declare namespace $ { - function $mol_delegate(proto: Value, target: () => Value): Value; -} - -declare namespace $ { - const $mol_owning_map: WeakMap; - function $mol_owning_allow(having: Having): having is Having & { - destructor(): void; - }; - function $mol_owning_get(having: Having, Owner?: { - new (): Owner; - }): Owner | null; - function $mol_owning_check(owner: Owner, having: Having): having is Having & { - destructor(): void; - }; - function $mol_owning_catch(owner: Owner, having: Having): boolean; -} - -declare namespace $ { - function $mol_fail(error: any): never; -} - -declare namespace $ { - function $mol_fail_hidden(error: any): never; -} - -declare namespace $ { - type $mol_type_writable = { - -readonly [P in keyof T]: T[P]; - }; -} - -declare namespace $ { - function $mol_func_name(this: $, func: Function): string; - function $mol_func_name_from(target: Target, source: Function): Target; -} - -declare namespace $ { - class $mol_object2 { - static $: $; - [Symbol.toStringTag]: string; - [$mol_ambient_ref]: $; - get $(): $; - set $(next: $); - static create(this: new (init?: (instance: any) => void) => Instance, init?: (instance: $mol_type_writable) => void): Instance; - static [Symbol.toPrimitive](): any; - static toString(): any; - static toJSON(): any; - destructor(): void; - static destructor(): void; - toString(): string; - } -} - -declare namespace $ { - namespace $$ { } - const $mol_object_field: unique symbol; - class $mol_object extends $mol_object2 { - static make(this: This, config: Partial>): InstanceType; - } -} - -declare namespace $ { - class $mol_window extends $mol_object { - static size(): { - width: number; - height: number; - }; - } -} - -declare namespace $ { - enum $mol_wire_cursor { - stale = -1, - doubt = -2, - fresh = -3, - final = -4 - } -} - -declare namespace $ { - class $mol_wire_pub extends Object { - data: unknown[]; - static get [Symbol.species](): ArrayConstructor; - protected sub_from: number; - get sub_list(): readonly $mol_wire_sub[]; - get sub_empty(): boolean; - sub_on(sub: $mol_wire_pub, pub_pos: number): number; - sub_off(sub_pos: number): void; - reap(): void; - promote(): void; - fresh(): void; - complete(): void; - get incompleted(): boolean; - emit(quant?: $mol_wire_cursor): void; - peer_move(from_pos: number, to_pos: number): void; - peer_repos(peer_pos: number, self_pos: number): void; - } -} - -declare namespace $ { - interface $mol_wire_sub extends $mol_wire_pub { - temp: boolean; - pub_list: $mol_wire_pub[]; - track_on(): $mol_wire_sub | null; - track_next(pub?: $mol_wire_pub): $mol_wire_pub | null; - pub_off(pub_pos: number): void; - track_cut(sub: $mol_wire_pub | null): void; - track_off(sub: $mol_wire_pub | null): void; - absorb(quant: $mol_wire_cursor): void; - destructor(): void; - } -} - -declare namespace $ { - let $mol_wire_auto_sub: $mol_wire_sub | null; - function $mol_wire_auto(next?: $mol_wire_sub | null): $mol_wire_sub | null; - const $mol_wire_affected: ($mol_wire_sub | number)[]; -} - -declare namespace $ { - function $mol_dev_format_register(config: { - header: (val: any, config: any) => any; - hasBody: (val: any, config: any) => false; - } | { - header: (val: any, config: any) => any; - hasBody: (val: any, config: any) => boolean; - body: (val: any, config: any) => any; - }): void; - const $mol_dev_format_head: unique symbol; - const $mol_dev_format_body: unique symbol; - function $mol_dev_format_native(obj: any): any[]; - function $mol_dev_format_auto(obj: any): any[]; - function $mol_dev_format_element(element: string, style: object, ...content: any[]): any[]; - function $mol_dev_format_span(style: object, ...content: any[]): any[]; - let $mol_dev_format_div: (style: object, ...content: any[]) => any[]; - let $mol_dev_format_ol: (style: object, ...content: any[]) => any[]; - let $mol_dev_format_li: (style: object, ...content: any[]) => any[]; - let $mol_dev_format_table: (style: object, ...content: any[]) => any[]; - let $mol_dev_format_tr: (style: object, ...content: any[]) => any[]; - let $mol_dev_format_td: (style: object, ...content: any[]) => any[]; - let $mol_dev_format_accent: (...args: any[]) => any[]; - let $mol_dev_format_strong: (...args: any[]) => any[]; - let $mol_dev_format_string: (...args: any[]) => any[]; - let $mol_dev_format_shade: (...args: any[]) => any[]; - let $mol_dev_format_indent: (...args: any[]) => any[]; -} - -declare namespace $ { - class $mol_wire_pub_sub extends $mol_wire_pub implements $mol_wire_sub { - protected pub_from: number; - protected cursor: $mol_wire_cursor; - get temp(): boolean; - get pub_list(): $mol_wire_pub[]; - track_on(): $mol_wire_sub | null; - promote(): void; - track_next(pub?: $mol_wire_pub): $mol_wire_pub | null; - track_off(sub: $mol_wire_sub | null): void; - pub_off(sub_pos: number): void; - destructor(): void; - track_cut(): void; - complete(): void; - complete_pubs(): void; - absorb(quant?: $mol_wire_cursor): void; - [$mol_dev_format_head](): any[]; - get pub_empty(): boolean; - } -} - -declare namespace $ { - class $mol_after_tick extends $mol_object2 { - task: () => void; - static promise: Promise | null; - cancelled: boolean; - constructor(task: () => void); - destructor(): void; - } -} - -declare namespace $ { - function $mol_promise_like(val: any): val is Promise; -} - -declare namespace $ { - abstract class $mol_wire_fiber extends $mol_wire_pub_sub { - readonly task: (this: Host, ...args: Args) => Result; - readonly host?: Host | undefined; - static warm: boolean; - static planning: Set<$mol_wire_fiber>; - static reaping: Set<$mol_wire_fiber>; - static plan_task: $mol_after_tick | null; - static plan(): void; - static sync(): void; - [Symbol.toStringTag]: string; - cache: Result | Error | Promise; - get args(): Args; - result(): Result | undefined; - get incompleted(): boolean; - field(): string; - constructor(id: string, task: (this: Host, ...args: Args) => Result, host?: Host | undefined, args?: Args); - plan(): this; - reap(): void; - toString(): string; - toJSON(): string; - [$mol_dev_format_head](): any[]; - get $(): any; - emit(quant?: $mol_wire_cursor): void; - fresh(): this | undefined; - refresh(): void; - abstract put(next: Result | Error | Promise): Result | Error | Promise; - sync(): Awaited; - async_raw(): Promise; - async(): Promise & { - destructor(): void; - }; - step(): Promise; - destructor(): void; - } -} - -declare namespace $ { - function $mol_guid(length?: number, exists?: (id: string) => boolean): string; -} - -declare namespace $ { - const $mol_key_store: WeakMap; - function $mol_key(value: Value): string; -} - -declare namespace $ { - class $mol_after_timeout extends $mol_object2 { - delay: number; - task: () => void; - id: any; - constructor(delay: number, task: () => void); - destructor(): void; - } -} - -declare namespace $ { - class $mol_after_frame extends $mol_after_timeout { - task: () => void; - constructor(task: () => void); - } -} - -declare namespace $ { - let $mol_compare_deep_cache: WeakMap>; - function $mol_compare_deep(left: Value, right: Value): boolean; -} - -declare namespace $ { - type $mol_log3_event = { - [key in string]: unknown; - } & { - time?: string; - place: unknown; - message: string; - } & Fields; - type $mol_log3_logger = (this: $, event: $mol_log3_event) => Res; - let $mol_log3_come: $mol_log3_logger<{}>; - let $mol_log3_done: $mol_log3_logger<{}>; - let $mol_log3_fail: $mol_log3_logger<{}>; - let $mol_log3_warn: $mol_log3_logger<{ - hint: string; - }>; - let $mol_log3_rise: $mol_log3_logger<{}>; - let $mol_log3_area: $mol_log3_logger<{}, () => void>; - function $mol_log3_area_lazy(this: $, event: $mol_log3_event<{}>): () => void; - let $mol_log3_stack: (() => void)[]; -} - -declare namespace $ { - class $mol_span extends $mol_object2 { - readonly uri: string; - readonly source: string; - readonly row: number; - readonly col: number; - readonly length: number; - constructor(uri: string, source: string, row: number, col: number, length: number); - static unknown: $mol_span; - static begin(uri: string, source?: string): $mol_span; - static end(uri: string, source: string): $mol_span; - static entire(uri: string, source: string): $mol_span; - toString(): string; - toJSON(): { - uri: string; - row: number; - col: number; - length: number; - }; - error(message: string, Class?: ErrorConstructor): Error; - span(row: number, col: number, length: number): $mol_span; - after(length?: number): $mol_span; - slice(begin: number, end?: number): $mol_span; - } -} - -declare namespace $ { - function $mol_tree2_to_string(this: $, tree: $mol_tree2): string; -} - -declare namespace $ { - type $mol_tree2_path = Array; - type $mol_tree2_hack = (input: $mol_tree2, belt: $mol_tree2_belt, context: Context) => readonly $mol_tree2[]; - type $mol_tree2_belt = Record>; - class $mol_tree2 extends Object { - readonly type: string; - readonly value: string; - readonly kids: readonly $mol_tree2[]; - readonly span: $mol_span; - constructor(type: string, value: string, kids: readonly $mol_tree2[], span: $mol_span); - static list(kids: readonly $mol_tree2[], span?: $mol_span): $mol_tree2; - list(kids: readonly $mol_tree2[]): $mol_tree2; - static data(value: string, kids?: readonly $mol_tree2[], span?: $mol_span): $mol_tree2; - data(value: string, kids?: readonly $mol_tree2[]): $mol_tree2; - static struct(type: string, kids?: readonly $mol_tree2[], span?: $mol_span): $mol_tree2; - struct(type: string, kids?: readonly $mol_tree2[]): $mol_tree2; - clone(kids: readonly $mol_tree2[], span?: $mol_span): $mol_tree2; - text(): string; - static fromString(str: string, uri?: string): $mol_tree2; - toString(): string; - insert(value: $mol_tree2 | null, ...path: $mol_tree2_path): $mol_tree2; - select(...path: $mol_tree2_path): $mol_tree2; - filter(path: string[], value?: string): $mol_tree2; - hack_self(belt: $mol_tree2_belt, context?: Context): readonly $mol_tree2[]; - hack(belt: $mol_tree2_belt, context?: Context): $mol_tree2[]; - error(message: string, Class?: ErrorConstructor): Error; - } - class $mol_tree2_empty extends $mol_tree2 { - constructor(); - } -} - -declare namespace $ { - class $mol_error_syntax extends SyntaxError { - reason: string; - line: string; - span: $mol_span; - constructor(reason: string, line: string, span: $mol_span); - } -} - -declare namespace $ { - function $mol_tree2_from_string(this: $, str: string, uri?: string): $mol_tree2; -} - -declare namespace $ { - function $mol_tree2_from_json(json: any, span?: $mol_span): $mol_tree2; -} - -declare namespace $ { - class $mol_term_color { - static reset: (str: string) => string; - static bold: (str: string) => string; - static italic: (str: string) => string; - static underline: (str: string) => string; - static inverse: (str: string) => string; - static hidden: (str: string) => string; - static strike: (str: string) => string; - static gray: (str: string) => string; - static red: (str: string) => string; - static green: (str: string) => string; - static yellow: (str: string) => string; - static blue: (str: string) => string; - static magenta: (str: string) => string; - static cyan: (str: string) => string; - static Gray: (str: string) => string; - static Red: (str: string) => string; - static Green: (str: string) => string; - static Yellow: (str: string) => string; - static Blue: (str: string) => string; - static Magenta: (str: string) => string; - static Cyan: (str: string) => string; - static ansi(open: number, close: number): (str: string) => string; - } -} - -declare namespace $ { - function $mol_log3_node_make(level: keyof Console, output: 'stdout' | 'stderr', type: string, color: (str: string) => string): (this: $, event: $mol_log3_event<{}>) => () => void; -} - -declare namespace $ { - class $mol_wire_task extends $mol_wire_fiber { - static getter(task: (this: Host, ...args: Args) => Result): (host: Host, args: Args) => $mol_wire_task; - get temp(): boolean; - complete(): void; - put(next: Result | Error | Promise): Error | Result | Promise; - } -} - -declare namespace $ { - function $mol_wire_method(host: Host, field: PropertyKey, descr?: TypedPropertyDescriptor<(...args: Args) => any>): { - value: (this: Host, ...args: Args) => any; - enumerable?: boolean; - configurable?: boolean; - writable?: boolean; - get?: (() => (...args: Args) => any) | undefined; - set?: ((value: (...args: Args) => any) => void) | undefined; - }; -} - -declare namespace $ { - type $mol_type_tail = ((...tail: Tuple) => any) extends ((head: any, ...tail: infer Tail) => any) ? Tail : never; -} - -declare namespace $ { - type $mol_type_foot = Tuple['length'] extends 0 ? never : Tuple[$mol_type_tail['length']]; -} - -declare namespace $ { - function $mol_fail_catch(error: unknown): boolean; -} - -declare namespace $ { - function $mol_fail_log(error: unknown): boolean; -} - -declare namespace $ { - class $mol_wire_atom extends $mol_wire_fiber { - static solo(host: Host, task: (this: Host, ...args: Args) => Result): $mol_wire_atom; - static plex(host: Host, task: (this: Host, ...args: Args) => Result, key: Args[0]): $mol_wire_atom; - static watching: Set<$mol_wire_atom>; - static watcher: $mol_after_frame | null; - static watch(): void; - watch(): void; - resync(args: Args): Error | Result | Promise; - once(): Awaited; - channel(): ((next?: $mol_type_foot) => Awaited) & { - atom: $mol_wire_atom; - }; - destructor(): void; - put(next: Result | Error | Promise): Error | Result | Promise; - } -} - -declare namespace $ { - export function $mol_wire_solo(host: object, field: string, descr?: TypedPropertyDescriptor<(...args: Args) => any>): TypedPropertyDescriptor<(...args: First_optional) => any>; - type First_optional = Args extends [] ? [] : [Args[0] | undefined, ...$mol_type_tail]; - export {}; -} - -declare namespace $ { - function $mol_wire_plex(host: object, field: string, descr?: TypedPropertyDescriptor<(...args: Args) => any>): { - value: (this: typeof host, ...args: Args) => any; - enumerable?: boolean; - configurable?: boolean; - writable?: boolean; - get?: (() => (...args: Args) => any) | undefined; - set?: ((value: (...args: Args) => any) => void) | undefined; - }; -} - -declare namespace $ { - let $mol_mem: typeof $mol_wire_solo; - let $mol_mem_key: typeof $mol_wire_plex; -} - -declare namespace $ { - var $mol_dom_context: typeof globalThis; -} - -interface $node { - [key: string]: any; -} -declare var $node: $node; -declare const cache: Map; - -declare namespace $ { - class $mol_error_mix extends AggregateError { - readonly cause: Cause; - name: string; - constructor(message: string, cause?: Cause, ...errors: Error[]); - static [Symbol.toPrimitive](): string; - static toString(): string; - static make(...params: ConstructorParameters): $mol_error_mix<{}>; - } -} - -declare namespace $ { - function $mol_env(): Record; -} - -declare namespace $ { -} - -declare namespace $ { - export function $mol_wire_sync(obj: Host): ObjectOrFunctionResultAwaited; - type FunctionResultAwaited = Some extends (...args: infer Args) => infer Res ? (...args: Args) => Awaited : Some; - type ConstructorResultAwaited = Some extends new (...args: infer Args) => infer Res ? new (...args: Args) => Res : {}; - type MethodsResultAwaited = { - [K in keyof Host]: FunctionResultAwaited; - }; - type ObjectOrFunctionResultAwaited = (Some extends (...args: any) => unknown ? FunctionResultAwaited : {}) & (Some extends Object ? MethodsResultAwaited & ConstructorResultAwaited : Some); - export {}; -} - -declare namespace $ { - type $mol_run_error_context = { - pid?: number; - stdout: Buffer | string; - stderr: Buffer | string; - }; - class $mol_run_error extends $mol_error_mix<{ - timeout_kill?: boolean; - pid?: number; - signal?: NodeJS.Signals | null; - status?: number | null; - command: string; - dir: string; - }> { - } - const $mol_run_spawn: (command: string, args: readonly string[], options: import("child_process").SpawnOptions) => import("child_process").ChildProcess; - const $mol_run_spawn_sync: (command: string, args?: readonly string[] | undefined, options?: import("child_process").SpawnSyncOptions | undefined) => import("child_process").SpawnSyncReturns>; - type $mol_run_options = { - command: readonly string[] | string; - dir: string; - timeout?: number; - env?: Record; - }; - class $mol_run extends $mol_object { - static async_enabled(): boolean; - static spawn(options: $mol_run_options): $mol_run_error_context | import("child_process").SpawnSyncReturns>; - static spawn_async({ dir, sync, timeout, command, env }: $mol_run_options & { - sync?: boolean; - }): import("child_process").SpawnSyncReturns> | (Promise<$mol_run_error_context> & { - destructor: () => void; - }); - static error_message(res?: $mol_run_error_context): string; - } -} - -declare namespace $ { - function $mol_exec(this: $, dir: string, command: string, ...args: readonly string[]): $mol_run_error_context | import("child_process").SpawnSyncReturns>; -} - -declare namespace $ { -} - -declare namespace $ { - class $mol_view_selection extends $mol_object { - static focused(next?: Element[], notify?: 'notify'): Element[]; - } -} - -declare namespace $ { - class $mol_wrapper extends $mol_object2 { - static wrap: (task: (...ags: any[]) => any) => (...ags: any[]) => any; - static run(task: () => Result): Result; - static func(func: (this: Host, ...args: Args) => Result): (this: Host, ...args: Args) => Result; - static get class(): any>(Class: Class) => Class; - static get method(): (obj: object, name: PropertyKey, descr: PropertyDescriptor) => PropertyDescriptor; - static get field(): (obj: Host, name: Field, descr: TypedPropertyDescriptor) => TypedPropertyDescriptor; - } -} - -declare namespace $ { - class $mol_memo extends $mol_wrapper { - static wrap(task: (this: This, next?: Value) => Value): (this: This, next?: Value) => Value | undefined; - } -} - -declare namespace $ { - var $mol_dom: typeof globalThis; -} - -declare namespace $ { - function $mol_dom_qname(name: string): string; -} - -declare namespace $ { - function $mol_wire_probe(task: () => Value, def?: Value): Value | undefined; -} - -declare namespace $ { - function $mol_wire_watch(): void; -} - -declare namespace $ { - function $mol_const(value: Value): { - (): Value; - '()': Value; - }; -} - -declare namespace $ { - function $mol_wire_solid(): void; -} - -declare namespace $ { - function $mol_dom_render_attributes(el: Element, attrs: { - [key: string]: string | number | boolean | null; - }): void; -} - -declare namespace $ { - function $mol_dom_render_events(el: Element, events: { - [key: string]: (event: Event) => any; - }, passive?: boolean): void; -} - -declare namespace $ { - function $mol_dom_render_styles(el: Element, styles: { - [key: string]: string | number; - }): void; -} - -declare namespace $ { - function $mol_dom_render_children(el: Element | DocumentFragment, childNodes: NodeList | Array): void; -} - -declare namespace $ { - function $mol_dom_render_fields(el: Element, fields: { - [key: string]: any; - }): void; -} - -declare namespace $ { - export function $mol_wire_async(obj: Host): ObjectOrFunctionResultPromisify; - type FunctionResultPromisify = Some extends (...args: infer Args) => infer Res ? Res extends PromiseLike ? Some : (...args: Args) => Promise : Some; - type MethodsResultPromisify = { - [K in keyof Host]: FunctionResultPromisify; - }; - type ObjectOrFunctionResultPromisify = (Some extends (...args: any) => unknown ? FunctionResultPromisify : {}) & (Some extends Object ? MethodsResultPromisify : Some); - export {}; -} - -declare namespace $ { - type $mol_type_keys_extract = { - [Field in keyof Input]: unknown extends Input[Field] ? never : Input[Field] extends never ? never : Input[Field] extends Upper ? [ - Lower - ] extends [Input[Field]] ? Field : never : never; - }[keyof Input]; -} - -declare namespace $ { - type $mol_type_pick = Pick>; -} - -declare namespace $ { - function $mol_style_attach(id: string, text: string): HTMLStyleElement | null; -} - -declare namespace $ { - class $mol_decor { - readonly value: Value; - constructor(value: Value); - prefix(): string; - valueOf(): Value; - postfix(): string; - toString(): string; - } -} - -declare namespace $ { - type $mol_style_unit_length = '%' | 'px' | 'cm' | 'mm' | 'Q' | 'in' | 'pc' | 'pt' | 'cap' | 'ch' | 'em' | 'rem' | 'ex' | 'ic' | 'lh' | 'rlh' | 'vh' | 'vw' | 'vi' | 'vb' | 'vmin' | 'vmax'; - type $mol_style_unit_angle = 'deg' | 'rad' | 'grad' | 'turn'; - type $mol_style_unit_time = 's' | 'ms'; - type $mol_style_unit_any = $mol_style_unit_length | $mol_style_unit_angle | $mol_style_unit_time; - type $mol_style_unit_str = `${number}${Quanity}`; - class $mol_style_unit extends $mol_decor { - readonly literal: Literal; - constructor(value: number, literal: Literal); - postfix(): Literal; - static per(value: number): `${number}%`; - static px(value: number): `${number}px`; - static mm(value: number): `${number}mm`; - static cm(value: number): `${number}cm`; - static Q(value: number): `${number}Q`; - static in(value: number): `${number}in`; - static pc(value: number): `${number}pc`; - static pt(value: number): `${number}pt`; - static cap(value: number): `${number}cap`; - static ch(value: number): `${number}ch`; - static em(value: number): `${number}em`; - static rem(value: number): `${number}rem`; - static ex(value: number): `${number}ex`; - static ic(value: number): `${number}ic`; - static lh(value: number): `${number}lh`; - static rlh(value: number): `${number}rlh`; - static vh(value: number): `${number}vh`; - static vw(value: number): `${number}vw`; - static vi(value: number): `${number}vi`; - static vb(value: number): `${number}vb`; - static vmin(value: number): `${number}vmin`; - static vmax(value: number): `${number}vmax`; - static deg(value: number): `${number}deg`; - static rad(value: number): `${number}rad`; - static grad(value: number): `${number}grad`; - static turn(value: number): `${number}turn`; - static s(value: number): `${number}s`; - static ms(value: number): `${number}ms`; - } -} - -declare namespace $ { - type $mol_style_func_name = 'calc' | 'hsla' | 'rgba' | 'var' | 'clamp' | 'scale' | 'cubic-bezier' | 'linear' | 'steps' | $mol_style_func_image | $mol_style_func_filter; - type $mol_style_func_image = 'url' | 'linear-gradient' | 'radial-gradient' | 'conic-gradient'; - type $mol_style_func_filter = 'blur' | 'brightness' | 'contrast' | 'drop-shadow' | 'grayscale' | 'hue-rotate' | 'invert' | 'opacity' | 'sepia' | 'saturate'; - class $mol_style_func extends $mol_decor { - readonly name: Name; - constructor(name: Name, value: Value); - prefix(): string; - postfix(): string; - static linear_gradient(value: Value): $mol_style_func<"linear-gradient", Value>; - static calc(value: Value): $mol_style_func<"calc", Value>; - static vary(name: Name, defaultValue?: Value): $mol_style_func<"var", Name | (Name | Value)[]>; - static url(href: Href): $mol_style_func<"url", string>; - static hsla(hue: number, saturation: number, lightness: number, alpha: number): $mol_style_func<"hsla", (number | `${number}%`)[]>; - static clamp(min: $mol_style_unit_str, mid: $mol_style_unit_str, max: $mol_style_unit_str): $mol_style_func<"clamp", `${number}${any}`[]>; - static rgba(red: number, green: number, blue: number, alpha: number): $mol_style_func<"rgba", number[]>; - static scale(zoom: number): $mol_style_func<"scale", number[]>; - static linear(...breakpoints: Array]>): $mol_style_func<"linear", string[]>; - static cubic_bezier(x1: number, y1: number, x2: number, y2: number): $mol_style_func<"cubic-bezier", number[]>; - static steps(value: number, step_position: 'jump-start' | 'jump-end' | 'jump-none' | 'jump-both' | 'start' | 'end'): $mol_style_func<"steps", (number | "end" | "start" | "jump-start" | "jump-end" | "jump-none" | "jump-both")[]>; - static blur(value?: $mol_style_unit_str<$mol_style_unit_length>): $mol_style_func<"blur", string>; - static brightness(value?: number | $mol_style_unit_str<'%'>): $mol_style_func<"brightness", string | number>; - static contrast(value?: number | $mol_style_unit_str<'%'>): $mol_style_func<"contrast", string | number>; - static drop_shadow(color: $mol_style_properties_color, x_offset: $mol_style_unit_str<$mol_style_unit_length>, y_offset: $mol_style_unit_str<$mol_style_unit_length>, blur_radius?: $mol_style_unit_str<$mol_style_unit_length>): $mol_style_func<"drop-shadow", (`${number}%` | `${number}px` | `${number}mm` | `${number}cm` | `${number}Q` | `${number}in` | `${number}pc` | `${number}pt` | `${number}cap` | `${number}ch` | `${number}em` | `${number}rem` | `${number}ex` | `${number}ic` | `${number}lh` | `${number}rlh` | `${number}vh` | `${number}vw` | `${number}vi` | `${number}vb` | `${number}vmin` | `${number}vmax` | $mol_style_properties_color)[]>; - static grayscale(value?: number | $mol_style_unit_str<'%'>): $mol_style_func<"grayscale", string | number>; - static hue_rotate(value?: 0 | $mol_style_unit_str<$mol_style_unit_angle>): $mol_style_func<"hue-rotate", string | 0>; - static invert(value?: number | $mol_style_unit_str<'%'>): $mol_style_func<"invert", string | number>; - static opacity(value?: number | $mol_style_unit_str<'%'>): $mol_style_func<"opacity", string | number>; - static sepia(value?: number | $mol_style_unit_str<'%'>): $mol_style_func<"sepia", string | number>; - static saturate(value?: number | $mol_style_unit_str<'%'>): $mol_style_func<"saturate", string | number>; - } -} - -declare namespace $ { - type $mol_type_override = Omit & Over; -} - -declare namespace $ { - export type $mol_style_properties = Partial<$mol_type_override>; - type Common = 'inherit' | 'initial' | 'unset' | 'revert' | 'revert-layer' | $mol_style_func<'var'>; - export type $mol_style_properties_color = 'aliceblue' | 'antiquewhite' | 'aqua' | 'aquamarine' | 'azure' | 'beige' | 'bisque' | 'black' | 'blanchedalmond' | 'blue' | 'blueviolet' | 'brown' | 'burlywood' | 'cadetblue' | 'chartreuse' | 'chocolate' | 'coral' | 'cornflowerblue' | 'cornsilk' | 'crimson' | 'cyan' | 'darkblue' | 'darkcyan' | 'darkgoldenrod' | 'darkgray' | 'darkgreen' | 'darkgrey' | 'darkkhaki' | 'darkmagenta' | 'darkolivegreen' | 'darkorange' | 'darkorchid' | 'darkred' | 'darksalmon' | 'darkseagreen' | 'darkslateblue' | 'darkslategrey' | 'darkturquoise' | 'darkviolet' | 'deeppink' | 'deepskyblue' | 'dimgray' | 'dimgrey' | 'dodgerblue' | 'firebrick' | 'floralwhite' | 'forestgreen' | 'fuchsia' | 'gainsboro' | 'ghostwhite' | 'gold' | 'goldenrod' | 'gray' | 'green' | 'greenyellow' | 'grey' | 'honeydew' | 'hotpink' | 'indianred' | 'indigo' | 'ivory' | 'khaki' | 'lavender' | 'lavenderblush' | 'lawngreen' | 'lemonchiffon' | 'lightblue' | 'lightcoral' | 'lightcyan' | 'lightgoldenrodyellow' | 'lightgray' | 'lightgreen' | 'lightgrey' | 'lightpink' | 'lightsalmon' | 'lightseagreen' | 'lightskyblue' | 'lightslategray' | 'lightslategrey' | 'lightsteelblue' | 'lightyellow' | 'lime' | 'limegreen' | 'linen' | 'magenta' | 'maroon' | 'mediumaquamarine' | 'mediumblue' | 'mediumorchid' | 'mediumpurple' | 'mediumseagreen' | 'mediumslateblue' | 'mediumspringgreen' | 'mediumturquoise' | 'mediumvioletred' | 'midnightblue' | 'mintcream' | 'mistyrose' | 'moccasin' | 'navajowhite' | 'navy' | 'oldlace' | 'olive' | 'olivedrab' | 'orange' | 'orangered' | 'orchid' | 'palegoldenrod' | 'palegreen' | 'paleturquoise' | 'palevioletred' | 'papayawhip' | 'peachpuff' | 'peru' | 'pink' | 'plum' | 'powderblue' | 'purple' | 'rebeccapurple' | 'red' | 'rosybrown' | 'royalblue' | 'saddlebrown' | 'salmon' | 'sandybrown' | 'seagreen' | 'seashell' | 'sienna' | 'silver' | 'skyblue' | 'slateblue' | 'slategray' | 'slategrey' | 'snow' | 'springgreen' | 'steelblue' | 'tan' | 'teal' | 'thistle' | 'tomato' | 'turquoise' | 'violet' | 'wheat' | 'white' | 'whitesmoke' | 'yellow' | 'yellowgreen' | 'transparent' | 'currentcolor' | $mol_style_func<'hsla' | 'rgba' | 'var'> | `#${string}`; - type Length = 0 | `${number}${$mol_style_unit_length}` | $mol_style_func<'calc' | 'var' | 'clamp'>; - type Size = 'auto' | 'max-content' | 'min-content' | 'fit-content' | Length | Common; - type Directions = Value | readonly [Value, Value] | { - top?: Value; - right?: Value; - bottom?: Value; - left?: Value; - }; - type Single_animation_composition = 'replace' | 'add' | 'accumulate'; - type Single_animation_direction = 'normal' | 'reverse' | 'alternate' | 'alternate-reverse'; - type Single_animation_fill_mode = 'none' | 'forwards' | 'backwards' | 'both'; - type Single_animation_iteration_count = 'infinite' | number; - type Single_animation_play_state = 'running' | 'paused'; - type Easing_function = Linear_easing_function | Cubic_bezier_easing_function | Step_easing_function; - type Linear_easing_function = 'linear' | $mol_style_func<'linear'>; - type Cubic_bezier_easing_function = 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out' | $mol_style_func<'cubic-bezier'>; - type Step_easing_function = 'step-start' | 'step-end' | $mol_style_func<'steps'>; - type Compat_auto = 'searchfield' | 'textarea' | 'push-button' | 'slider-horizontal' | 'checkbox' | 'radio' | 'menulist' | 'listbox' | 'meter' | 'progress-bar' | 'button'; - type Compat_special = 'textfield' | 'menulist-button'; - type Mix_blend_mode = Blend_mode | 'plus-darker' | 'plus-lighter'; - type Blend_mode = 'normal' | 'multiply' | 'screen' | 'overlay' | 'darken' | 'lighten' | 'color-dodge' | 'color-burn' | 'hard-light' | 'soft-light' | 'difference' | 'exclusion' | 'hue' | 'saturation' | 'color' | 'luminosity'; - type Box = 'border-box' | 'padding-box' | 'content-box'; - type Baseline_position = 'baseline' | `${'first' | 'last'} baseline`; - type Content_distribution = 'space-between' | 'space-around' | 'space-evenly' | 'stretch'; - type Self_position = 'center' | 'start' | 'end' | 'self-start' | 'self-end' | 'flex-start' | 'flex-end'; - type Content_position = 'center' | 'start' | 'end' | 'flex-start' | 'flex-end'; - type Span_align = 'none' | 'start' | 'end' | 'center' | $mol_style_func<'var'>; - type Snap_axis = 'x' | 'y' | 'block' | 'inline' | 'both' | $mol_style_func<'var'>; - type Overflow = 'visible' | 'hidden' | 'clip' | 'scroll' | 'auto' | 'overlay' | Common; - type Overflow_position = 'unsafe' | 'safe'; - type ContainRule = 'size' | 'layout' | 'style' | 'paint' | $mol_style_func<'var'>; - type Repeat = 'repeat-x' | 'repeat-y' | 'repeat' | 'space' | 'round' | 'no-repeat' | $mol_style_func<'var'>; - type BG_size = Length | 'auto' | 'contain' | 'cover'; - interface Overrides { - accentColor?: $mol_style_properties_color | Common; - align?: { - content?: 'normal' | Baseline_position | Content_distribution | Content_position | `${Overflow_position} ${Content_position}` | Common; - items?: 'normal' | 'stretch' | Baseline_position | Self_position | `${Overflow_position} ${Self_position}` | Common; - self?: 'auto' | 'normal' | 'stretch' | Baseline_position | Self_position | `${Overflow_position} ${Self_position}` | Common; - }; - justify?: { - content?: 'normal' | Baseline_position | Content_distribution | Content_position | `${Overflow_position} ${Content_position}` | Common; - items?: 'normal' | 'stretch' | Baseline_position | Self_position | `${Overflow_position} ${Self_position}` | Common; - self?: 'auto' | 'normal' | 'stretch' | Baseline_position | Self_position | `${Overflow_position} ${Self_position}` | Common; - }; - all?: Common; - animation?: { - composition?: Single_animation_composition | Single_animation_composition[][] | Common; - delay?: $mol_style_unit_str<$mol_style_unit_time> | $mol_style_unit_str<$mol_style_unit_time>[][] | Common; - direction?: Single_animation_direction | Single_animation_direction[][] | Common; - duration?: $mol_style_unit_str<$mol_style_unit_time> | $mol_style_unit_str<$mol_style_unit_time>[][] | Common; - fillMode?: Single_animation_fill_mode | Single_animation_fill_mode[][] | Common; - iterationCount?: Single_animation_iteration_count | Single_animation_iteration_count[][] | Common; - name?: 'none' | string & {} | ('none' | string & {})[][] | Common; - playState?: Single_animation_play_state | Single_animation_play_state[][] | Common; - timingFunction?: Easing_function | Easing_function[][] | Common; - }; - appearance?: 'none' | 'auto' | Compat_auto | Compat_special | Common; - aspectRatio?: 'auto' | number | `${number} / ${number}`; - backdropFilter: $mol_style_func<$mol_style_func_filter> | $mol_style_func<'url'> | ($mol_style_func<$mol_style_func_filter> | $mol_style_func<'url'>)[][] | 'none' | Common; - backfaceVisibility: 'visible' | 'hidden' | Common; - justifyContent?: 'start' | 'end' | 'flex-start' | 'flex-end' | 'left' | 'right' | 'space-between' | 'space-around' | 'space-evenly' | 'normal' | 'stretch' | 'center' | Common; - gap?: Length; - background?: 'none' | { - attachment?: 'scroll' | 'fixed' | 'local' | ('scroll' | 'fixed' | 'local')[][] | Common; - blendMode?: Mix_blend_mode | Mix_blend_mode[][] | Common; - clip?: Box | Box[][] | Common; - color?: $mol_style_properties_color | Common; - image?: readonly (readonly [$mol_style_func<$mol_style_func_image> | string & {}])[] | 'none' | Common; - repeat?: Repeat | [Repeat, Repeat] | Common; - position?: 'left' | 'right' | 'top' | 'bottom' | 'center' | Common; - size?: (BG_size | [BG_size, BG_size])[]; - }; - box?: { - shadow?: readonly ([ - ...[inset: 'inset'] | [], - x: Length, - y: Length, - blur: Length, - spread: Length, - color: $mol_style_properties_color - ] | { - inset?: boolean; - x: Length; - y: Length; - blur: Length; - spread: Length; - color: $mol_style_properties_color; - })[] | 'none' | Common; - }; - font?: { - style?: 'normal' | 'italic' | Common; - weight?: 'normal' | 'bold' | 'lighter' | 'bolder' | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | Common; - size?: 'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | 'x-large' | 'xx-large' | 'xxx-large' | 'smaller' | 'larger' | Length | Common; - family?: string & {} | 'serif' | 'sans-serif' | 'monospace' | 'cursive' | 'fantasy' | 'system-ui' | 'ui-serif' | 'ui-sans-serif' | 'ui-monospace' | 'ui-rounded' | 'emoji' | 'math' | 'fangsong' | Common; - }; - color?: $mol_style_properties_color | Common; - display?: 'block' | 'inline' | 'run-in' | 'list-item' | 'none' | 'flow' | 'flow-root' | 'table' | 'flex' | 'grid' | 'contents' | 'table-row-group' | 'table-header-group' | 'table-footer-group' | 'table-column-group' | 'table-row' | 'table-cell' | 'table-column' | 'table-caption' | 'inline-block' | 'inline-table' | 'inline-flex' | 'inline-grid' | 'ruby' | 'ruby-base' | 'ruby-text' | 'ruby-base-container' | 'ruby-text-container' | Common; - overflow?: Overflow | { - x?: Overflow | Common; - y?: Overflow | Common; - anchor?: 'auto' | 'none' | Common; - }; - contain?: 'none' | 'strict' | 'content' | ContainRule | readonly ContainRule[] | Common; - whiteSpace?: 'normal' | 'nowrap' | 'break-spaces' | 'pre' | 'pre-wrap' | 'pre-line' | Common; - webkitOverflowScrolling?: 'auto' | 'touch' | Common; - scrollbar?: { - color?: readonly [$mol_style_properties_color, $mol_style_properties_color] | 'auto' | Common; - width?: 'auto' | 'thin' | 'none' | Common; - }; - scroll?: { - snap?: { - type: 'none' | Snap_axis | readonly [Snap_axis, 'mandatory' | 'proximity'] | Common; - stop: 'normal' | 'always' | Common; - align: Span_align | readonly [Span_align, Span_align] | Common; - }; - padding?: Directions; - }; - width?: Size; - minWidth?: Size; - maxWidth?: Size; - height?: Size; - minHeight?: Size; - maxHeight?: Size; - margin?: Directions; - padding?: Directions; - position?: 'static' | 'relative' | 'absolute' | 'sticky' | 'fixed' | Common; - top?: Length | 'auto' | Common; - right?: Length | 'auto' | Common; - bottom?: Length | 'auto' | Common; - left?: Length | 'auto' | Common; - border?: Directions<{ - radius?: Length | [Length, Length]; - style?: 'none' | 'hidden' | 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset' | Common; - color?: $mol_style_properties_color | Common; - width?: Length | Common; - }>; - flex?: 'none' | 'auto' | { - grow?: number | Common; - shrink?: number | Common; - basis?: Size | Common; - direction?: 'row' | 'row-reverse' | 'column' | 'column-reverse' | Common; - wrap?: 'wrap' | 'nowrap' | 'wrap-reverse' | Common; - }; - zIndex: number | Common; - opacity: number | Common; - } - export {}; -} - -declare namespace $ { - function $mol_style_prop(prefix: string, keys: Keys): Record>; -} - -declare namespace $ { - const $mol_theme: Record<"image" | "line" | "text" | "field" | "focus" | "back" | "hover" | "card" | "current" | "special" | "control" | "shade", $mol_style_func<"var", unknown>>; -} - -declare namespace $ { -} - -declare namespace $ { - let $mol_gap: Record<"text" | "space" | "block" | "blur" | "round", $mol_style_func<"var", unknown>>; -} - -declare namespace $ { -} - -declare namespace $ { - type $mol_view_content = $mol_view | Node | string | number | boolean | null; - function $mol_view_visible_width(): number; - function $mol_view_visible_height(): number; - function $mol_view_state_key(suffix: string): string; - class $mol_view extends $mol_object { - static Root(this: This, id: number): InstanceType; - autorun(): void; - static autobind(): void; - title(): string; - focused(next?: boolean): boolean; - state_key(suffix?: string): string; - dom_name(): string; - dom_name_space(): string; - sub(): readonly $mol_view_content[]; - sub_visible(): readonly $mol_view_content[]; - minimal_width(): number; - maximal_width(): number; - minimal_height(): number; - static watchers: Set<$mol_view>; - view_rect(): { - width: number; - height: number; - left: number; - right: number; - top: number; - bottom: number; - } | null; - dom_id(): string; - dom_node_external(next?: Element): Element; - dom_node(next?: Element): Element; - dom_final(): Element | undefined; - dom_tree(next?: Element): Element; - dom_node_actual(): Element; - auto(): any; - render(): void; - static view_classes(): (typeof $mol_view)[]; - static _view_names?: Map; - static view_names(suffix: string): string[]; - view_names_owned(): string[]; - view_names(): Set; - theme(next?: null | string): string | null; - attr_static(): { - [key: string]: string | number | boolean | null; - }; - attr(): {}; - style_size(): { - [key: string]: string | number; - }; - style(): { - [key: string]: string | number; - }; - field(): { - [key: string]: any; - }; - event(): { - [key: string]: (event: Event) => void; - }; - event_async(): { - [x: string]: (event: Event) => Promise; - }; - plugins(): readonly $mol_view[]; - [$mol_dev_format_head](): any[]; - view_find(check: (path: $mol_view, text?: string) => boolean, path?: $mol_view[]): Generator<$mol_view[]>; - force_render(path: Set<$mol_view>): void; - ensure_visible(view: $mol_view, align?: ScrollLogicalPosition): void; - bring(): void; - destructor(): void; - } - type $mol_view_all = $mol_type_pick<$, typeof $mol_view>; -} - -declare namespace $ { -} - -declare namespace $ { - class $mol_plugin extends $mol_view { - dom_node_external(next?: Element): Element; - render(): void; - } -} - -declare namespace $ { - - export class $mol_ghost extends $mol_view { - Sub( ): $mol_view - } - -} - -//# sourceMappingURL=ghost.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_ghost extends $.$mol_ghost { - dom_node_external(next?: Element): Element; - dom_node_actual(): Element; - dom_tree(): Element; - title(): string; - minimal_width(): number; - minimal_height(): number; - } -} - -declare namespace $ { - - export class $mol_drop extends $mol_ghost { - enter( next?: any ): any - move( next?: any ): any - leave( next?: any ): any - drop( next?: any ): any - status( next?: string ): string - enabled( next?: boolean ): boolean - event( ): ({ - dragenter( next?: ReturnType< $mol_drop['enter'] > ): ReturnType< $mol_drop['enter'] >, - dragover( next?: ReturnType< $mol_drop['move'] > ): ReturnType< $mol_drop['move'] >, - dragleave( next?: ReturnType< $mol_drop['leave'] > ): ReturnType< $mol_drop['leave'] >, - drop( next?: ReturnType< $mol_drop['drop'] > ): ReturnType< $mol_drop['drop'] >, - }) - attr( ): ({ - 'mol_drop_status': ReturnType< $mol_drop['status'] >, - }) - adopt( next?: Record ): Record - receive( next?: any ): any - allow( ): readonly(any)[] - } - -} - -//# sourceMappingURL=drop.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_drop extends $.$mol_drop { - status(next?: "ready" | "drag"): "ready" | "drag"; - protected _target: EventTarget | null; - enter(event: DragEvent): void; - move(event: DragEvent): void; - decide_action(event: DragEvent): any; - leave(event: DragEvent): void; - receive(transfer: unknown): unknown; - drop(event: DragEvent): void; - } -} - -declare namespace $ { - let $mol_action: typeof $mol_wire_method; -} - -declare namespace $ { - class $mol_state_arg extends $mol_object { - prefix: string; - static prolog: string; - static separator: string; - static href(next?: string): string; - static href_normal(): string; - static dict(next?: { - [key: string]: string | null; - }): Readonly<{ - [key: string]: string; - }>; - static value(key: string, next?: string | null): string | null; - static link(next: Record): string; - static make_link(next: Record): string; - static go(next: { - [key: string]: string | null; - }): void; - constructor(prefix?: string); - value(key: string, next?: string): string | null; - sub(postfix: string): $mol_state_arg; - link(next: Record): string; - } -} - -declare namespace $ { - class $mol_media extends $mol_object2 { - static match(query: string, next?: boolean): boolean; - } -} - -declare namespace $ { - let $mol_mem_persist: typeof $mol_wire_solid; -} - -declare namespace $ { - let $mol_mem_cached: typeof $mol_wire_probe; -} - -declare namespace $ { - class $mol_storage extends $mol_object2 { - static native(): StorageManager; - static persisted(next?: boolean, cache?: 'cache'): boolean; - static estimate(): StorageEstimate; - static dir(): FileSystemDirectoryHandle; - } -} - -declare namespace $ { - class $mol_state_local extends $mol_object { - static 'native()': Pick; - static native(): Storage | { - getItem(key: string): any; - setItem(key: string, value: string): void; - removeItem(key: string): void; - }; - static changes(next?: StorageEvent): StorageEvent | undefined; - static value(key: string, next?: Value | null): Value | null; - prefix(): string; - value(key: string, next?: Value): Value | null; - } -} - -declare namespace $ { - class $mol_lock extends $mol_object { - protected promise: null | Promise; - wait(): Promise<() => void>; - grab(): () => void; - } -} - -declare namespace $ { - function $mol_compare_array>(a: Value, b: Value): boolean; -} - -declare namespace $ { - type $mol_charset_encoding = 'utf8' | 'utf-16le' | 'utf-16be' | 'ibm866' | 'iso-8859-2' | 'iso-8859-3' | 'iso-8859-4' | 'iso-8859-5' | 'iso-8859-6' | 'iso-8859-7' | 'iso-8859-8' | 'iso-8859-8i' | 'iso-8859-10' | 'iso-8859-13' | 'iso-8859-14' | 'iso-8859-15' | 'iso-8859-16' | 'koi8-r' | 'koi8-u' | 'koi8-r' | 'macintosh' | 'windows-874' | 'windows-1250' | 'windows-1251' | 'windows-1252' | 'windows-1253' | 'windows-1254' | 'windows-1255' | 'windows-1256' | 'windows-1257' | 'windows-1258' | 'x-mac-cyrillic' | 'gbk' | 'gb18030' | 'hz-gb-2312' | 'big5' | 'euc-jp' | 'iso-2022-jp' | 'shift-jis' | 'euc-kr' | 'iso-2022-kr'; -} - -declare namespace $ { - function $mol_charset_decode(buffer: BufferSource, encoding?: $mol_charset_encoding): string; -} - -declare namespace $ { - function $mol_charset_encode(value: string): Uint8Array; -} - -declare namespace $ { - type $mol_file_transaction_mode = 'create' | 'exists_truncate' | 'exists_fail' | 'read_only' | 'write_only' | 'read_write' | 'append'; - type $mol_file_transaction_buffer = ArrayBufferView; - class $mol_file_transaction extends $mol_object { - path(): string; - modes(): readonly $mol_file_transaction_mode[]; - write(options: { - buffer: ArrayBufferView | string | readonly ArrayBufferView[]; - offset?: number | null; - length?: number | null; - position?: number | null; - }): number; - read(): Uint8Array; - truncate(size: number): void; - close(): void; - destructor(): void; - } -} - -declare namespace $ { - class $mol_file_transaction_node extends $mol_file_transaction { - protected descr(): number; - write({ buffer, offset, length, position }: { - buffer: ArrayBufferView | string | readonly ArrayBufferView[]; - offset?: number | null; - length?: number | null; - position?: number | null; - }): number; - truncate(size: number): void; - read(): Uint8Array; - close(): void; - } -} - -declare namespace $ { - class $mol_file_base extends $mol_object { - static absolute(this: This, path: string): InstanceType; - static relative(this: This, path: string): InstanceType; - static base: string; - path(): string; - parent(): this; - exists_cut(): boolean; - protected root(): boolean; - protected stat(next?: $mol_file_stat | null, virt?: 'virt'): $mol_file_stat | null; - protected static changed: Set<$mol_file_base>; - protected static frame: null | $mol_after_timeout; - protected static changed_add(type: 'change' | 'rename', path: string): void; - static watch_debounce(): number; - static flush(): void; - protected static watching: boolean; - protected static lock: $mol_lock; - protected static watch_off(path: string): void; - static unwatched(side_effect: () => Result, affected_dir: string): Result; - reset(): void; - modified(): Date | null; - version(): string; - protected info(path: string): null | $mol_file_stat; - protected ensure(): void; - protected drop(): void; - protected copy(to: string): void; - protected read(): Uint8Array; - protected write(buffer: Uint8Array): void; - protected kids(): readonly this[]; - readable(opts: { - start?: number; - end?: number; - }): ReadableStream>; - writable(opts: { - start?: number; - }): WritableStream>; - buffer(next?: Uint8Array): Uint8Array; - stat_make(size: number): { - readonly type: "file"; - readonly size: number; - readonly atime: Date; - readonly mtime: Date; - readonly ctime: Date; - }; - clone(to: string): this | null; - watcher(): { - destructor(): void; - }; - exists(next?: boolean): boolean; - type(): "" | $mol_file_type; - name(): string; - ext(): string; - text(next?: string, virt?: 'virt'): string; - text_int(next?: string, virt?: 'virt'): string; - sub(reset?: null): this[]; - resolve(path: string): this; - relate(base?: $mol_file_base): string; - find(include?: RegExp, exclude?: RegExp): this[]; - size(): number; - toJSON(): string; - open(...modes: readonly $mol_file_transaction_mode[]): $mol_file_transaction; - } -} - -declare namespace $ { - type $mol_file_type = 'file' | 'dir' | 'link'; - interface $mol_file_stat { - type: $mol_file_type; - size: number; - atime: Date; - mtime: Date; - ctime: Date; - } - class $mol_file extends $mol_file_base { - } -} - -declare namespace $ { - function $mol_file_node_buffer_normalize(buf: Buffer): Uint8Array; - class $mol_file_node extends $mol_file { - static relative(this: This, path: string): InstanceType; - watcher(reset?: null): { - destructor(): void; - }; - protected info(path: string): $mol_file_stat | null; - protected ensure(): null | undefined; - protected copy(to: string): void; - protected drop(): void; - protected read(): Uint8Array; - protected write(buffer: Uint8Array): undefined; - protected kids(): this[]; - resolve(path: string): this; - relate(base?: $mol_file): string; - readable(opts: { - start?: number; - end?: number; - }): ReadableStream>; - writable(opts?: { - start?: number; - }): WritableStream>; - } -} - -declare namespace $ { - class $mol_state_local_node extends $mol_state_local { - static dir(): $mol_file; - static value(key: string, next?: Value | null): Value | null; - } -} - -declare namespace $ { - function $mol_lights(this: $, next?: boolean): boolean; -} - -declare namespace $ { - - export class $mol_theme_auto extends $mol_plugin { - theme( ): string - attr( ): ({ - 'mol_theme': ReturnType< $mol_theme_auto['theme'] >, - }) - } - -} - -//# sourceMappingURL=auto.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_theme_auto extends $.$mol_theme_auto { - theme(): "$mol_theme_light" | "$mol_theme_dark"; - } -} - -declare namespace $ { - class $mol_dom_listener extends $mol_object { - _node: any; - _event: string; - _handler: (event: any) => any; - _config: boolean | { - passive: boolean; - }; - constructor(_node: any, _event: string, _handler: (event: any) => any, _config?: boolean | { - passive: boolean; - }); - destructor(): void; - } -} - -declare namespace $ { - class $mol_print extends $mol_object { - static before(): $mol_dom_listener; - static after(): $mol_dom_listener; - static active(next?: boolean): boolean; - } -} - -declare namespace $ { - type $mol_style_pseudo_class = ':active' | ':any' | ':any-link' | ':checked' | ':default' | ':defined' | ':dir(rtl)' | ':dir(ltr)' | ':disabled' | ':empty' | ':enabled' | ':first' | ':first-child' | ':first-of-type' | ':fullscreen' | ':focus' | ':focus-visible' | ':focus-within' | ':hover' | ':indeterminate' | ':in-range' | ':invalid' | ':last-child' | ':last-of-type' | ':left' | ':link' | ':not()' | ':nth-child(even)' | ':nth-child(odd)' | ':nth-last-child(even)' | ':nth-last-child(odd)' | ':nth-of-type(even)' | ':nth-of-type(odd)' | ':nth-last-of-type(even)' | ':nth-last-of-type(odd)' | ':only-child' | ':only-of-type' | ':optional' | ':out-of-range' | ':placeholder-shown' | ':read-only' | ':read-write' | ':required' | ':right' | ':root' | ':scope' | ':target' | ':valid' | ':visited'; -} - -declare namespace $ { - type $mol_style_pseudo_element = '::after' | '::before' | '::cue' | '::first-letter' | '::first-line' | '::selection' | '::slotted' | '::backdrop' | '::placeholder' | '::marker' | '::spelling-error' | '::grammar-error' | '::-webkit-calendar-picker-indicator' | '::-webkit-color-swatch' | '::-webkit-color-swatch-wrapper' | '::-webkit-details-marker' | '::-webkit-file-upload-button' | '::-webkit-image-inner-element' | '::-webkit-inner-spin-button' | '::-webkit-input-placeholder' | '::-webkit-input-speech-button' | '::-webkit-keygen-select' | '::-webkit-media-controls-panel' | '::-webkit-media-controls-timeline-container' | '::-webkit-media-slider-container' | '::-webkit-meter-bar' | '::-webkit-meter-even-less-good-value' | '::-webkit-meter-optimum-value' | '::-webkit-meter-suboptimal-value' | '::-webkit-progress-bar' | '::-webkit-progress-value' | '::-webkit-resizer' | '::-webkit-resizer:window-inactive' | '::-webkit-scrollbar' | '::-webkit-scrollbar-button' | '::-webkit-scrollbar-button:disabled' | '::-webkit-scrollbar-button:double-button:horizontal:end:decrement' | '::-webkit-scrollbar-button:double-button:horizontal:end:increment' | '::-webkit-scrollbar-button:double-button:horizontal:end:increment:corner-present' | '::-webkit-scrollbar-button:double-button:horizontal:start:decrement' | '::-webkit-scrollbar-button:double-button:horizontal:start:increment' | '::-webkit-scrollbar-button:double-button:vertical:end:decrement' | '::-webkit-scrollbar-button:double-button:vertical:end:increment' | '::-webkit-scrollbar-button:double-button:vertical:end:increment:corner-present' | '::-webkit-scrollbar-button:double-button:vertical:start:decrement' | '::-webkit-scrollbar-button:double-button:vertical:start:increment' | '::-webkit-scrollbar-button:end' | '::-webkit-scrollbar-button:end:decrement' | '::-webkit-scrollbar-button:end:increment' | '::-webkit-scrollbar-button:horizontal' | '::-webkit-scrollbar-button:horizontal:decrement' | '::-webkit-scrollbar-button:horizontal:decrement:active' | '::-webkit-scrollbar-button:horizontal:decrement:hover' | '::-webkit-scrollbar-button:horizontal:decrement:window-inactive' | '::-webkit-scrollbar-button:horizontal:end' | '::-webkit-scrollbar-button:horizontal:end:decrement' | '::-webkit-scrollbar-button:horizontal:end:increment' | '::-webkit-scrollbar-button:horizontal:end:increment:corner-present' | '::-webkit-scrollbar-button:horizontal:increment' | '::-webkit-scrollbar-button:horizontal:increment:active' | '::-webkit-scrollbar-button:horizontal:increment:hover' | '::-webkit-scrollbar-button:horizontal:increment:window-inactive' | '::-webkit-scrollbar-button:horizontal:start' | '::-webkit-scrollbar-button:horizontal:start:decrement' | '::-webkit-scrollbar-button:horizontal:start:increment' | '::-webkit-scrollbar-button:start' | '::-webkit-scrollbar-button:start:decrement' | '::-webkit-scrollbar-button:start:increment' | '::-webkit-scrollbar-button:vertical' | '::-webkit-scrollbar-button:vertical:decrement' | '::-webkit-scrollbar-button:vertical:decrement:active' | '::-webkit-scrollbar-button:vertical:decrement:hover' | '::-webkit-scrollbar-button:vertical:decrement:window-inactive' | '::-webkit-scrollbar-button:vertical:end' | '::-webkit-scrollbar-button:vertical:end:decrement' | '::-webkit-scrollbar-button:vertical:end:increment' | '::-webkit-scrollbar-button:vertical:end:increment:corner-present' | '::-webkit-scrollbar-button:vertical:increment' | '::-webkit-scrollbar-button:vertical:increment:active' | '::-webkit-scrollbar-button:vertical:increment:hover' | '::-webkit-scrollbar-button:vertical:increment:window-inactive' | '::-webkit-scrollbar-button:vertical:start' | '::-webkit-scrollbar-button:vertical:start:decrement' | '::-webkit-scrollbar-button:vertical:start:increment' | '::-webkit-scrollbar-corner' | '::-webkit-scrollbar-corner:window-inactive' | '::-webkit-scrollbar-thumb' | '::-webkit-scrollbar-thumb:horizontal' | '::-webkit-scrollbar-thumb:horizontal:active' | '::-webkit-scrollbar-thumb:horizontal:hover' | '::-webkit-scrollbar-thumb:horizontal:window-inactive' | '::-webkit-scrollbar-thumb:vertical' | '::-webkit-scrollbar-thumb:vertical:active' | '::-webkit-scrollbar-thumb:vertical:hover' | '::-webkit-scrollbar-thumb:vertical:window-inactive' | '::-webkit-scrollbar-track' | '::-webkit-scrollbar-track-piece' | '::-webkit-scrollbar-track-piece:disabled' | '::-webkit-scrollbar-track-piece:end' | '::-webkit-scrollbar-track-piece:horizontal:decrement' | '::-webkit-scrollbar-track-piece:horizontal:decrement:active' | '::-webkit-scrollbar-track-piece:horizontal:decrement:hover' | '::-webkit-scrollbar-track-piece:horizontal:end' | '::-webkit-scrollbar-track-piece:horizontal:end:corner-present' | '::-webkit-scrollbar-track-piece:horizontal:end:double-button' | '::-webkit-scrollbar-track-piece:horizontal:end:no-button' | '::-webkit-scrollbar-track-piece:horizontal:end:no-button:corner-present' | '::-webkit-scrollbar-track-piece:horizontal:end:single-button' | '::-webkit-scrollbar-track-piece:horizontal:increment' | '::-webkit-scrollbar-track-piece:horizontal:increment:active' | '::-webkit-scrollbar-track-piece:horizontal:increment:hover' | '::-webkit-scrollbar-track-piece:horizontal:start' | '::-webkit-scrollbar-track-piece:horizontal:start:double-button' | '::-webkit-scrollbar-track-piece:horizontal:start:no-button' | '::-webkit-scrollbar-track-piece:horizontal:start:single-button' | '::-webkit-scrollbar-track-piece:start' | '::-webkit-scrollbar-track-piece:vertical:decrement' | '::-webkit-scrollbar-track-piece:vertical:decrement:active' | '::-webkit-scrollbar-track-piece:vertical:decrement:hover' | '::-webkit-scrollbar-track-piece:vertical:end' | '::-webkit-scrollbar-track-piece:vertical:end:corner-present' | '::-webkit-scrollbar-track-piece:vertical:end:double-button' | '::-webkit-scrollbar-track-piece:vertical:end:no-button' | '::-webkit-scrollbar-track-piece:vertical:end:no-button:corner-present' | '::-webkit-scrollbar-track-piece:vertical:end:single-button' | '::-webkit-scrollbar-track-piece:vertical:increment' | '::-webkit-scrollbar-track-piece:vertical:increment:active' | '::-webkit-scrollbar-track-piece:vertical:increment:hover' | '::-webkit-scrollbar-track-piece:vertical:start' | '::-webkit-scrollbar-track-piece:vertical:start:double-button' | '::-webkit-scrollbar-track-piece:vertical:start:no-button' | '::-webkit-scrollbar-track-piece:vertical:start:single-button' | '::-webkit-scrollbar-track:disabled' | '::-webkit-scrollbar-track:horizontal' | '::-webkit-scrollbar-track:horizontal:disabled' | '::-webkit-scrollbar-track:horizontal:disabled:corner-present' | '::-webkit-scrollbar-track:vertical:disabled' | '::-webkit-scrollbar-track:vertical:disabled:corner-present' | '::-webkit-scrollbar:horizontal' | '::-webkit-scrollbar:horizontal:corner-present' | '::-webkit-scrollbar:horizontal:window-inactive' | '::-webkit-scrollbar:vertical' | '::-webkit-scrollbar:vertical:corner-present' | '::-webkit-scrollbar:vertical:window-inactive' | '::-webkit-search-cancel-button' | '::-webkit-search-decoration' | '::-webkit-search-results-button' | '::-webkit-search-results-decoration' | '::-webkit-slider-container' | '::-webkit-slider-runnable-track' | '::-webkit-slider-thumb' | '::-webkit-slider-thumb:disabled' | '::-webkit-slider-thumb:hover' | '::-webkit-textfield-decoration-container' | '::-webkit-validation-bubble' | '::-webkit-validation-bubble-arrow' | '::-webkit-validation-bubble-arrow-clipper' | '::-webkit-validation-bubble-heading' | '::-webkit-validation-bubble-message' | '::-webkit-validation-bubble-text-block'; -} - -declare namespace $ { - type $mol_type_error = Message & { - $mol_type_error: Info; - }; -} - -declare namespace $ { - type Attrs> = { - [name in keyof Attrs]?: { - [val in keyof Config[Extract]]: $mol_style_guard][val]>; - }; - }; - type Medias = { - [query in keyof Config]: $mol_style_guard; - }; - type Keys = '>' | '@' | keyof $mol_style_properties | $mol_style_pseudo_element | $mol_style_pseudo_class | $mol_type_keys_extract $mol_view> | `$${string}`; - export type $mol_style_guard = { - [key in Keys]?: unknown; - } & $mol_style_properties & { - [key in keyof Config]: key extends keyof $mol_style_properties ? $mol_style_properties[key] : key extends '>' | $mol_style_pseudo_class | $mol_style_pseudo_element ? $mol_style_guard : key extends '@' ? Attrs : key extends '@media' ? Medias : key extends `[${string}]` ? { - [val in keyof Config[key]]: $mol_style_guard; - } : key extends `--${string}` ? any : key extends keyof $ ? $mol_style_guard>, Config[key]> : key extends keyof View ? View[key] extends (id?: any) => infer Sub ? Sub extends $mol_view ? $mol_style_guard : $mol_type_error<'Property returns non $mol_view', { - Returns: Sub; - }> : $mol_type_error<'Field is not a Property'> : key extends `$${string}` ? $mol_type_error<'Unknown View Class'> : $mol_type_error<'Unknown CSS Property'>; - }; - export {}; -} - -declare namespace $ { - function $mol_style_sheet>(Component: new () => Component, config0: Config): string; -} - -declare namespace $ { - function $mol_style_define>(Component: new () => Component, config: Config): HTMLStyleElement | null; -} - -declare namespace $ { - - export class $mol_scroll extends $mol_view { - tabindex( ): number - event_scroll( next?: any ): any - scroll_top( next?: number ): number - scroll_left( next?: number ): number - field( ): ({ - 'tabIndex': ReturnType< $mol_scroll['tabindex'] >, - }) & ReturnType< $mol_view['field'] > - event( ): ({ - scroll( next?: ReturnType< $mol_scroll['event_scroll'] > ): ReturnType< $mol_scroll['event_scroll'] >, - }) & ReturnType< $mol_view['event'] > - } - -} - -//# sourceMappingURL=scroll.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_scroll extends $.$mol_scroll { - scroll_top(next?: number, cache?: 'cache'): number; - scroll_left(next?: number, cache?: 'cache'): number; - event_scroll(next?: Event): void; - minimal_height(): number; - minimal_width(): number; - } -} - -declare namespace $.$$ { -} - -declare namespace $ { - let $mol_layer: Record<"focus" | "float" | "hover" | "speck" | "popup", $mol_style_func<"var", unknown>>; -} - -declare namespace $ { -} - -declare namespace $ { - type $mol_type_enforce = Actual; -} - -declare namespace $ { - - type $mol_view__title_mol_book2_1 = $mol_type_enforce< - string - , - ReturnType< $mol_view['title'] > - > - export class $mol_book2 extends $mol_scroll { - pages( ): readonly($mol_view)[] - menu_title( ): string - sub( ): ReturnType< $mol_book2['pages'] > - minimal_width( ): number - Placeholder( ): $mol_view - Gap( id: any): $mol_view - } - -} - -//# sourceMappingURL=book2.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_book2 extends $.$mol_book2 { - title(): string; - menu_title(): string; - sub(): readonly $mol_view[]; - bring(): void; - } -} - -declare namespace $ { -} - -declare namespace $ { - - export class $mol_link extends $mol_view { - uri_toggle( ): string - hint( ): string - hint_safe( ): ReturnType< $mol_link['hint'] > - target( ): string - file_name( ): string - current( ): boolean - relation( ): string - event_click( next?: any ): any - click( next?: ReturnType< $mol_link['event_click'] > ): ReturnType< $mol_link['event_click'] > - uri( ): string - dom_name( ): string - uri_off( ): string - uri_native( ): any - external( ): boolean - attr( ): ({ - 'href': ReturnType< $mol_link['uri_toggle'] >, - 'title': ReturnType< $mol_link['hint_safe'] >, - 'target': ReturnType< $mol_link['target'] >, - 'download': ReturnType< $mol_link['file_name'] >, - 'mol_link_current': ReturnType< $mol_link['current'] >, - 'rel': ReturnType< $mol_link['relation'] >, - }) & ReturnType< $mol_view['attr'] > - sub( ): readonly($mol_view_content)[] - arg( ): Record - event( ): ({ - click( next?: ReturnType< $mol_link['click'] > ): ReturnType< $mol_link['click'] >, - }) & ReturnType< $mol_view['event'] > - } - -} - -//# sourceMappingURL=link.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_link extends $.$mol_link { - uri_toggle(): string; - uri(): string; - uri_off(): string; - uri_native(): URL; - current(): boolean; - file_name(): string; - minimal_height(): number; - external(): boolean; - target(): '_self' | '_blank' | '_top' | '_parent' | string; - hint_safe(): string; - } -} - -declare namespace $ { -} - -declare namespace $ { - - export class $mol_image extends $mol_view { - uri( ): string - loading( ): string - decoding( ): string - cors( ): any - natural_width( ): number - natural_height( ): number - load( next?: any ): any - dom_name( ): string - field( ): Record & ReturnType< $mol_view['field'] > - attr( ): Record & ReturnType< $mol_view['attr'] > - event( ): Record - minimal_width( ): number - minimal_height( ): number - } - -} - -//# sourceMappingURL=image.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_image extends $.$mol_image { - natural_width(next?: null): number; - natural_height(next?: null): number; - load(): void; - } -} - -declare namespace $ { -} - -declare namespace $ { - - type $mol_image__uri_mol_link_iconed_1 = $mol_type_enforce< - ReturnType< $mol_link_iconed['icon'] > - , - ReturnType< $mol_image['uri'] > - > - type $mol_image__title_mol_link_iconed_2 = $mol_type_enforce< - string - , - ReturnType< $mol_image['title'] > - > - export class $mol_link_iconed extends $mol_link { - icon( ): string - Icon( ): $mol_image - title( ): ReturnType< $mol_link_iconed['uri'] > - sub( ): readonly(any)[] - content( ): readonly(any)[] - host( ): string - } - -} - -//# sourceMappingURL=iconed.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_link_iconed extends $.$mol_link_iconed { - icon(): string; - host(): string; - title(): string; - sub(): readonly any[]; - } -} - -declare namespace $ { -} - -declare namespace $ { -} - -declare namespace $ { - - export class $mol_speck extends $mol_view { - theme( ): string - value( ): any - attr( ): ({ - 'mol_theme': ReturnType< $mol_speck['theme'] >, - }) & ReturnType< $mol_view['attr'] > - style( ): ({ - 'minHeight': string, - }) & ReturnType< $mol_view['style'] > - sub( ): readonly(any)[] - } - -} - -//# sourceMappingURL=speck.view.tree.d.ts.map -declare namespace $ { - enum $mol_keyboard_code { - backspace = 8, - tab = 9, - enter = 13, - shift = 16, - ctrl = 17, - alt = 18, - pause = 19, - capsLock = 20, - escape = 27, - space = 32, - pageUp = 33, - pageDown = 34, - end = 35, - home = 36, - left = 37, - up = 38, - right = 39, - down = 40, - insert = 45, - delete = 46, - key0 = 48, - key1 = 49, - key2 = 50, - key3 = 51, - key4 = 52, - key5 = 53, - key6 = 54, - key7 = 55, - key8 = 56, - key9 = 57, - A = 65, - B = 66, - C = 67, - D = 68, - E = 69, - F = 70, - G = 71, - H = 72, - I = 73, - J = 74, - K = 75, - L = 76, - M = 77, - N = 78, - O = 79, - P = 80, - Q = 81, - R = 82, - S = 83, - T = 84, - U = 85, - V = 86, - W = 87, - X = 88, - Y = 89, - Z = 90, - metaLeft = 91, - metaRight = 92, - select = 93, - numpad0 = 96, - numpad1 = 97, - numpad2 = 98, - numpad3 = 99, - numpad4 = 100, - numpad5 = 101, - numpad6 = 102, - numpad7 = 103, - numpad8 = 104, - numpad9 = 105, - multiply = 106, - add = 107, - subtract = 109, - decimal = 110, - divide = 111, - F1 = 112, - F2 = 113, - F3 = 114, - F4 = 115, - F5 = 116, - F6 = 117, - F7 = 118, - F8 = 119, - F9 = 120, - F10 = 121, - F11 = 122, - F12 = 123, - numLock = 144, - scrollLock = 145, - semicolon = 186, - equals = 187, - comma = 188, - dash = 189, - period = 190, - forwardSlash = 191, - graveAccent = 192, - bracketOpen = 219, - slashBack = 220, - slashBackLeft = 226, - bracketClose = 221, - quoteSingle = 222 - } -} - -declare namespace $ { - - type $mol_speck__value_mol_button_1 = $mol_type_enforce< - ReturnType< $mol_button['error'] > - , - ReturnType< $mol_speck['value'] > - > - export class $mol_button extends $mol_view { - event_activate( next?: any ): any - clicks( next?: any ): any - event_key_press( next?: any ): any - disabled( ): boolean - tab_index( ): number - hint( ): string - hint_safe( ): ReturnType< $mol_button['hint'] > - error( ): string - enabled( ): boolean - click( next?: any ): any - event_click( next?: any ): any - event( ): ({ - click( next?: ReturnType< $mol_button['event_activate'] > ): ReturnType< $mol_button['event_activate'] >, - dblclick( next?: ReturnType< $mol_button['clicks'] > ): ReturnType< $mol_button['clicks'] >, - keydown( next?: ReturnType< $mol_button['event_key_press'] > ): ReturnType< $mol_button['event_key_press'] >, - }) & ReturnType< $mol_view['event'] > - attr( ): ({ - 'disabled': ReturnType< $mol_button['disabled'] >, - 'role': string, - 'tabindex': ReturnType< $mol_button['tab_index'] >, - 'title': ReturnType< $mol_button['hint_safe'] >, - }) & ReturnType< $mol_view['attr'] > - sub( ): readonly($mol_view_content)[] - Speck( ): $mol_speck - } - -} - -//# sourceMappingURL=button.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_button extends $.$mol_button { - status(next?: any[]): any[]; - disabled(): boolean; - event_activate(next: Event): void; - event_key_press(event: KeyboardEvent): void; - tab_index(): number; - error(): string; - hint_safe(): string; - sub_visible(): ($mol_view_content | $mol_speck)[]; - } -} - -declare namespace $ { -} - -declare namespace $ { -} - -declare namespace $ { - - export class $mol_button_typed extends $mol_button { - minimal_height( ): number - minimal_width( ): number - } - -} - -//# sourceMappingURL=typed.view.tree.d.ts.map -declare namespace $ { -} - -declare namespace $ { - - export class $mol_button_minor extends $mol_button_typed { - } - -} - -//# sourceMappingURL=minor.view.tree.d.ts.map -declare namespace $ { - function $mol_maybe(value: Value | null | undefined): Value[]; -} - -declare namespace $ { -} - -declare namespace $ { - - type $mol_view__sub_mol_check_1 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_view['sub'] > - > - export class $mol_check extends $mol_button_minor { - checked( next?: boolean ): boolean - aria_checked( ): string - aria_role( ): string - Icon( ): any - title( ): string - Title( ): $mol_view - label( ): readonly(any)[] - attr( ): ({ - 'mol_check_checked': ReturnType< $mol_check['checked'] >, - 'aria-checked': ReturnType< $mol_check['aria_checked'] >, - 'role': ReturnType< $mol_check['aria_role'] >, - }) & ReturnType< $mol_button_minor['attr'] > - sub( ): readonly($mol_view_content)[] - } - -} - -//# sourceMappingURL=check.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_check extends $.$mol_check { - click(next?: Event): void; - sub(): readonly $mol_view_content[]; - label(): readonly any[]; - aria_checked(): string; - } -} - -declare namespace $ { -} - -declare namespace $ { - - export class $mol_check_icon extends $mol_check { - } - -} - -//# sourceMappingURL=icon.view.tree.d.ts.map -declare namespace $ { - class $mol_state_time extends $mol_object { - static task(precision: number, reset?: null): $mol_after_timeout | $mol_after_frame; - static now(precision: number): number; - } -} - -declare namespace $ { - - export class $mol_svg extends $mol_view { - dom_name( ): string - dom_name_space( ): string - font_size( ): number - font_family( ): string - style_size( ): Record - } - -} - -//# sourceMappingURL=svg.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_svg extends $.$mol_svg { - computed_style(): Record; - font_size(): number; - font_family(): any; - } -} - -declare namespace $ { -} - -declare namespace $ { - - export class $mol_svg_root extends $mol_svg { - view_box( ): string - aspect( ): string - dom_name( ): string - attr( ): ({ - 'viewBox': ReturnType< $mol_svg_root['view_box'] >, - 'preserveAspectRatio': ReturnType< $mol_svg_root['aspect'] >, - }) & ReturnType< $mol_svg['attr'] > - } - -} - -//# sourceMappingURL=root.view.tree.d.ts.map -declare namespace $ { - - export class $mol_svg_path extends $mol_svg { - geometry( ): string - dom_name( ): string - attr( ): ({ - 'd': ReturnType< $mol_svg_path['geometry'] >, - }) & ReturnType< $mol_svg['attr'] > - } - -} - -//# sourceMappingURL=path.view.tree.d.ts.map -declare namespace $ { -} - -declare namespace $ { - - type $mol_svg_path__geometry_mol_icon_1 = $mol_type_enforce< - ReturnType< $mol_icon['path'] > - , - ReturnType< $mol_svg_path['geometry'] > - > - export class $mol_icon extends $mol_svg_root { - path( ): string - Path( ): $mol_svg_path - view_box( ): string - minimal_width( ): number - minimal_height( ): number - sub( ): readonly(any)[] - } - -} - -//# sourceMappingURL=icon.view.tree.d.ts.map -declare namespace $ { - - export class $mol_icon_brightness_4 extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=4.view.tree.d.ts.map -declare namespace $ { - interface $mol_locale_dict { - [key: string]: string; - } - class $mol_locale extends $mol_object { - static lang_default(): string; - static lang(next?: string): string; - static source(lang: string): any; - static texts(lang: string, next?: $mol_locale_dict): $mol_locale_dict; - static text(key: string): string; - static warn(key: string): null; - } -} - -declare namespace $ { - - export class $mol_lights_toggle extends $mol_check_icon { - Lights_icon( ): $mol_icon_brightness_4 - lights( next?: boolean ): boolean - Icon( ): ReturnType< $mol_lights_toggle['Lights_icon'] > - hint( ): string - checked( next?: ReturnType< $mol_lights_toggle['lights'] > ): ReturnType< $mol_lights_toggle['lights'] > - } - -} - -//# sourceMappingURL=toggle.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_lights_toggle extends $.$mol_lights_toggle { - lights(next?: boolean): boolean; - } -} - -declare namespace $ { - - export class $mol_icon_upload extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=upload.view.tree.d.ts.map -declare namespace $ { - - type $mol_button_open_native__files_mol_button_open_1 = $mol_type_enforce< - ReturnType< $mol_button_open['files'] > - , - ReturnType< $mol_button_open_native['files'] > - > - type $mol_button_open_native__accept_mol_button_open_2 = $mol_type_enforce< - ReturnType< $mol_button_open['accept'] > - , - ReturnType< $mol_button_open_native['accept'] > - > - type $mol_button_open_native__multiple_mol_button_open_3 = $mol_type_enforce< - ReturnType< $mol_button_open['multiple'] > - , - ReturnType< $mol_button_open_native['multiple'] > - > - export class $mol_button_open extends $mol_button_minor { - Icon( ): $mol_icon_upload - files( next?: readonly(any)[] ): readonly(any)[] - accept( ): string - multiple( ): boolean - Native( ): $mol_button_open_native - sub( ): readonly(any)[] - } - - export class $mol_button_open_native extends $mol_view { - accept( ): string - multiple( ): boolean - picked( next?: any ): any - dom_name( ): string - files( next?: readonly(any)[] ): readonly(any)[] - attr( ): ({ - 'type': string, - 'accept': ReturnType< $mol_button_open_native['accept'] >, - 'multiple': ReturnType< $mol_button_open_native['multiple'] >, - }) - event( ): ({ - change( next?: ReturnType< $mol_button_open_native['picked'] > ): ReturnType< $mol_button_open_native['picked'] >, - }) - } - -} - -//# sourceMappingURL=open.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_button_open_native extends $.$mol_button_open_native { - dom_node(): HTMLInputElement; - picked(): void; - } -} - -declare namespace $ { -} - -declare namespace $ { -} - -declare namespace $ { - - export class $mol_stack extends $mol_view { - } - -} - -//# sourceMappingURL=stack.view.tree.d.ts.map -declare namespace $ { - class $mol_syntax2 { - lexems: Lexems; - constructor(lexems: Lexems); - rules: Array<{ - regExp: RegExp; - name: string; - size: number; - }>; - regexp: RegExp; - tokenize(text: string, handle: (name: string, found: string, chunks: string[], offset: number) => void): void; - parse(text: string, handlers: { - [key in keyof Lexems | '']: (found: string, chunks: string[], offset: number) => void; - }): void; - } -} - -declare namespace $ { - - export class $mol_paragraph extends $mol_view { - line_height( ): number - letter_width( ): number - width_limit( ): number - row_width( ): number - sub( ): readonly(any)[] - } - -} - -//# sourceMappingURL=paragraph.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_paragraph extends $.$mol_paragraph { - maximal_width(): number; - width_limit(): number; - minimal_width(): number; - row_width(): number; - minimal_height(): number; - } -} - -declare namespace $ { -} - -declare namespace $ { - type $mol_type_equals = (() => X extends A ? 1 : 2) extends (() => X extends B ? 1 : 2) ? unknown : never; -} - -declare namespace $ { - type $mol_type_merge = Intersection extends (...a: any[]) => any ? Intersection : Intersection extends new (...a: any[]) => any ? Intersection : Intersection extends object ? $mol_type_merge_object extends Intersection ? unknown extends $mol_type_equals<{ - [Key in keyof Intersection]: Intersection[Key]; - }, Intersection> ? Intersection : { - [Key in keyof Intersection]: $mol_type_merge; - } : Intersection : Intersection; - type $mol_type_merge_object = { - [Key in keyof Intersection]: Intersection[Key]; - }; -} - -declare namespace $ { - type $mol_type_intersect = (Union extends any ? (_: Union) => void : never) extends ((_: infer Intersection) => void) ? Intersection : never; -} - -declare namespace $ { - type $mol_unicode_category = [$mol_unicode_category_binary] | ['General_Category', $mol_char_category_general] | ['Script', $mol_unicode_category_script] | ['Script_Extensions', $mol_unicode_category_script]; - type $mol_unicode_category_binary = 'ASCII' | 'ASCII_Hex_Digit' | 'Alphabetic' | 'Any' | 'Assigned' | 'Bidi_Control' | 'Bidi_Mirrored' | 'Case_Ignorable' | 'Cased' | 'Changes_When_Casefolded' | 'Changes_When_Casemapped' | 'Changes_When_Lowercased' | 'Changes_When_NFKC_Casefolded' | 'Changes_When_Titlecased' | 'Changes_When_Uppercased' | 'Dash' | 'Default_Ignorable_Code_Point' | 'Deprecated' | 'Diacritic' | 'Emoji' | 'Emoji_Component' | 'Emoji_Modifier' | 'Emoji_Modifier_Base' | 'Emoji_Presentation' | 'Extended_Pictographic' | 'Extender' | 'Grapheme_Base' | 'Grapheme_Extend' | 'Hex_Digit' | 'IDS_Binary_Operator' | 'IDS_Trinary_Operator' | 'ID_Continue' | 'ID_Start' | 'Ideographic' | 'Join_Control' | 'Logical_Order_Exception' | 'Lowercase' | 'Math' | 'Noncharacter_Code_Point' | 'Pattern_Syntax' | 'Pattern_White_Space' | 'Quotation_Mark' | 'Radical' | 'Regional_Indicator' | 'Sentence_Terminal' | 'Soft_Dotted' | 'Terminal_Punctuation' | 'Unified_Ideograph' | 'Uppercase' | 'Variation_Selector' | 'White_Space' | 'XID_Continue' | 'XID_Start'; - type $mol_char_category_general = 'Cased_Letter' | 'Close_Punctuation' | 'Connector_Punctuation' | 'Control' | 'Currency_Symbol' | 'Dash_Punctuation' | 'Decimal_Number' | 'Enclosing_Mark' | 'Final_Punctuation' | 'Format' | 'Initial_Punctuation' | 'Letter' | 'Letter_Number' | 'Line_Separator' | 'Lowercase_Letter' | 'Mark' | 'Math_Symbol' | 'Modifier_Letter' | 'Modifier_Symbol' | 'Nonspacing_Mark' | 'Number' | 'Open_Punctuation' | 'Other' | 'Other_Letter' | 'Other_Number' | 'Other_Punctuation' | 'Other_Symbol' | 'Paragraph_Separator' | 'Private_Use' | 'Punctuation' | 'Separator' | 'Space_Separator' | 'Spacing_Mark' | 'Surrogate' | 'Symbol' | 'Titlecase_Letter' | 'Unassigned' | 'Uppercase_Letter'; - type $mol_unicode_category_script = 'Adlam' | 'Ahom' | 'Anatolian_Hieroglyphs' | 'Arabic' | 'Armenian' | 'Avestan' | 'Balinese' | 'Bamum' | 'Bassa_Vah' | 'Batak' | 'Bengali' | 'Bhaiksuki' | 'Bopomofo' | 'Brahmi' | 'Braille' | 'Buginese' | 'Buhid' | 'Canadian_Aboriginal' | 'Carian' | 'Caucasian_Albanian' | 'Chakma' | 'Cham' | 'Chorasmian' | 'Cherokee' | 'Common' | 'Coptic' | 'Cuneiform' | 'Cypriot' | 'Cyrillic' | 'Deseret' | 'Devanagari' | 'Dives_Akuru' | 'Dogra' | 'Duployan' | 'Egyptian_Hieroglyphs' | 'Elbasan' | 'Elymaic' | 'Ethiopic' | 'Georgian' | 'Glagolitic' | 'Gothic' | 'Grantha' | 'Greek' | 'Gujarati' | 'Gunjala_Gondi' | 'Gurmukhi' | 'Han' | 'Hangul' | 'Hanifi_Rohingya' | 'Hanunoo' | 'Hatran' | 'Hebrew' | 'Hiragana' | 'Imperial_Aramaic' | 'Inherited' | 'Inscriptional_Pahlavi' | 'Inscriptional_Parthian' | 'Javanese' | 'Kaithi' | 'Kannada' | 'Katakana' | 'Kayah_Li' | 'Kharoshthi' | 'Khitan_Small_Script' | 'Khmer' | 'Khojki' | 'Khudawadi' | 'Lao' | 'Latin' | 'Lepcha' | 'Limbu' | 'Linear_A' | 'Linear_B' | 'Lisu' | 'Lycian' | 'Lydian' | 'Mahajani' | 'Makasar' | 'Malayalam' | 'Mandaic' | 'Manichaean' | 'Marchen' | 'Medefaidrin' | 'Masaram_Gondi' | 'Meetei_Mayek' | 'Mende_Kikakui' | 'Meroitic_Cursive' | 'Meroitic_Hieroglyphs' | 'Miao' | 'Modi' | 'Mongolian' | 'Mro' | 'Multani' | 'Myanmar' | 'Nabataean' | 'Nandinagari' | 'New_Tai_Lue' | 'Newa' | 'Nko' | 'Nushu' | 'Nyiakeng_Puachue_Hmong' | 'Ogham' | 'Ol_Chiki' | 'Old_Hungarian' | 'Old_Italic' | 'Old_North_Arabian' | 'Old_Permic' | 'Old_Persian' | 'Old_Sogdian' | 'Old_South_Arabian' | 'Old_Turkic' | 'Oriya' | 'Osage' | 'Osmanya' | 'Pahawh_Hmong' | 'Palmyrene' | 'Pau_Cin_Hau' | 'Phags_Pa' | 'Phoenician' | 'Psalter_Pahlavi' | 'Rejang' | 'Runic' | 'Samaritan' | 'Saurashtra' | 'Sharada' | 'Shavian' | 'Siddham' | 'SignWriting' | 'Sinhala' | 'Sogdian' | 'Sora_Sompeng' | 'Soyombo' | 'Sundanese' | 'Syloti_Nagri' | 'Syriac' | 'Tagalog' | 'Tagbanwa' | 'Tai_Le' | 'Tai_Tham' | 'Tai_Viet' | 'Takri' | 'Tamil' | 'Tangut' | 'Telugu' | 'Thaana' | 'Thai' | 'Tibetan' | 'Tifinagh' | 'Tirhuta' | 'Ugaritic' | 'Vai' | 'Wancho' | 'Warang_Citi' | 'Yezidi' | 'Yi' | 'Zanabazar_Square'; -} - -interface String { - match(regexp: RE): ReturnType; - matchAll(regexp: RE): ReturnType; -} -declare namespace $ { - type Groups_to_params = { - [P in keyof T]?: T[P] | boolean | undefined; - }; - export type $mol_regexp_source = number | string | RegExp | { - [key in string]: $mol_regexp_source; - } | readonly [$mol_regexp_source, ...$mol_regexp_source[]]; - export type $mol_regexp_groups = Source extends number ? {} : Source extends string ? {} : Source extends $mol_regexp_source[] ? $mol_type_merge<$mol_type_intersect<{ - [key in Extract]: $mol_regexp_groups; - }[Extract]>> : Source extends RegExp ? Record extends NonNullable>['groups']> ? {} : NonNullable>['groups']> : Source extends { - readonly [key in string]: $mol_regexp_source; - } ? $mol_type_merge<$mol_type_intersect<{ - [key in keyof Source]: $mol_type_merge<$mol_type_override<{ - readonly [k in Extract]: string; - }, { - readonly [k in key]: Source[key] extends string ? Source[key] : string; - }> & $mol_regexp_groups>; - }[keyof Source]>> : never; - export class $mol_regexp> extends RegExp { - readonly groups: (Extract)[]; - constructor(source: string, flags?: string, groups?: (Extract)[]); - [Symbol.matchAll](str: string): RegExpStringIterator>; - [Symbol.match](str: string): null | RegExpMatchArray; - [Symbol.split](str: string): string[]; - test(str: string): boolean; - exec(str: string): RegExpExecArray & $mol_type_override | null; - generate(params: Groups_to_params): string | null; - get native(): RegExp; - static repeat(source: Source, min?: number, max?: number): $mol_regexp<$mol_regexp_groups>; - static repeat_greedy(source: Source, min?: number, max?: number): $mol_regexp<$mol_regexp_groups>; - static vary(sources: Sources): $mol_regexp<$mol_regexp_groups>; - static optional(source: Source): $mol_regexp<$mol_regexp_groups>; - static force_after(source: $mol_regexp_source): $mol_regexp>; - static forbid_after(source: $mol_regexp_source): $mol_regexp>; - static from(source: Source, { ignoreCase, multiline }?: Partial>): $mol_regexp<$mol_regexp_groups>; - static unicode_only(...category: $mol_unicode_category): $mol_regexp>; - static unicode_except(...category: $mol_unicode_category): $mol_regexp>; - static char_range(from: number, to: number): $mol_regexp<{}>; - static char_only(...allowed: readonly [$mol_regexp_source, ...$mol_regexp_source[]]): $mol_regexp<{}>; - static char_except(...forbidden: readonly [$mol_regexp_source, ...$mol_regexp_source[]]): $mol_regexp<{}>; - static decimal_only: $mol_regexp<{}>; - static decimal_except: $mol_regexp<{}>; - static latin_only: $mol_regexp<{}>; - static latin_except: $mol_regexp<{}>; - static space_only: $mol_regexp<{}>; - static space_except: $mol_regexp<{}>; - static word_break_only: $mol_regexp<{}>; - static word_break_except: $mol_regexp<{}>; - static tab: $mol_regexp<{}>; - static slash_back: $mol_regexp<{}>; - static nul: $mol_regexp<{}>; - static char_any: $mol_regexp<{}>; - static begin: $mol_regexp<{}>; - static end: $mol_regexp<{}>; - static or: $mol_regexp<{}>; - static line_end: $mol_regexp<{ - readonly win_end: string; - readonly mac_end: string; - }>; - } - export {}; -} - -declare namespace $ { - - type $mol_paragraph__sub_mol_dimmer_1 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_paragraph['sub'] > - > - type $mol_paragraph__sub_mol_dimmer_2 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_paragraph['sub'] > - > - export class $mol_dimmer extends $mol_paragraph { - parts( ): readonly($mol_view_content)[] - string( id: any): string - haystack( ): string - needle( ): string - sub( ): ReturnType< $mol_dimmer['parts'] > - Low( id: any): $mol_paragraph - High( id: any): $mol_paragraph - } - -} - -//# sourceMappingURL=dimmer.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_dimmer extends $.$mol_dimmer { - parts(): any[]; - strings(): string[]; - string(index: number): string; - view_find(check: (path: $mol_view, text?: string) => boolean, path?: $mol_view[]): Generator<$mol_view[]>; - } -} - -declare namespace $ { -} - -declare namespace $ { - - export class $mol_text_code_token extends $mol_dimmer { - type( ): string - attr( ): ({ - 'mol_text_code_token_type': ReturnType< $mol_text_code_token['type'] >, - }) & ReturnType< $mol_dimmer['attr'] > - } - - export class $mol_text_code_token_link extends $mol_text_code_token { - uri( ): string - dom_name( ): string - type( ): string - attr( ): ({ - 'href': ReturnType< $mol_text_code_token_link['uri'] >, - 'target': string, - }) & ReturnType< $mol_text_code_token['attr'] > - } - -} - -//# sourceMappingURL=token.view.tree.d.ts.map -declare namespace $.$$ { -} - -declare namespace $ { - var $mol_syntax2_md_flow: $mol_syntax2<{ - quote: RegExp; - spoiler: RegExp; - header: RegExp; - list: RegExp; - code: RegExp; - 'code-indent': RegExp; - table: RegExp; - grid: RegExp; - cut: RegExp; - block: RegExp; - }>; - var $mol_syntax2_md_line: $mol_syntax2<{ - strong: RegExp; - emphasis: RegExp; - code: RegExp; - insert: RegExp; - delete: RegExp; - embed: RegExp; - link: RegExp; - 'image-link': RegExp; - 'text-link': RegExp; - 'text-link-http': RegExp; - }>; - const $mol_syntax2_md_code: $mol_syntax2<{ - 'code-indent': RegExp; - 'code-docs': RegExp; - 'code-comment-block': RegExp; - 'code-link': RegExp; - 'code-comment-inline': RegExp; - 'code-string': RegExp; - 'code-number': RegExp; - 'code-call': RegExp; - 'code-sexpr': RegExp; - 'code-field': RegExp; - 'code-keyword': RegExp; - 'code-global': RegExp; - 'code-word': RegExp; - 'code-decorator': RegExp; - 'code-tag': RegExp; - 'code-punctuation': RegExp; - }>; -} - -declare namespace $ { - - type $mol_view__sub_mol_text_code_line_1 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_view['sub'] > - > - type $mol_text_code_token__type_mol_text_code_line_2 = $mol_type_enforce< - ReturnType< $mol_text_code_line['token_type'] > - , - ReturnType< $mol_text_code_token['type'] > - > - type $mol_text_code_token__haystack_mol_text_code_line_3 = $mol_type_enforce< - ReturnType< $mol_text_code_line['token_text'] > - , - ReturnType< $mol_text_code_token['haystack'] > - > - type $mol_text_code_token__needle_mol_text_code_line_4 = $mol_type_enforce< - ReturnType< $mol_text_code_line['highlight'] > - , - ReturnType< $mol_text_code_token['needle'] > - > - type $mol_text_code_token_link__haystack_mol_text_code_line_5 = $mol_type_enforce< - ReturnType< $mol_text_code_line['token_text'] > - , - ReturnType< $mol_text_code_token_link['haystack'] > - > - type $mol_text_code_token_link__needle_mol_text_code_line_6 = $mol_type_enforce< - ReturnType< $mol_text_code_line['highlight'] > - , - ReturnType< $mol_text_code_token_link['needle'] > - > - type $mol_text_code_token_link__uri_mol_text_code_line_7 = $mol_type_enforce< - ReturnType< $mol_text_code_line['token_uri'] > - , - ReturnType< $mol_text_code_token_link['uri'] > - > - export class $mol_text_code_line extends $mol_paragraph { - numb( ): number - token_type( id: any): string - token_text( id: any): string - highlight( ): string - token_uri( id: any): string - text( ): string - minimal_height( ): number - numb_showed( ): boolean - syntax( ): any - uri_resolve( id: any): string - Numb( ): $mol_view - Token( id: any): $mol_text_code_token - Token_link( id: any): $mol_text_code_token_link - find_pos( id: any): any - } - -} - -//# sourceMappingURL=line.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_text_code_line extends $.$mol_text_code_line { - maximal_width(): number; - syntax(): $mol_syntax2<{ - 'code-indent': RegExp; - 'code-docs': RegExp; - 'code-comment-block': RegExp; - 'code-link': RegExp; - 'code-comment-inline': RegExp; - 'code-string': RegExp; - 'code-number': RegExp; - 'code-call': RegExp; - 'code-sexpr': RegExp; - 'code-field': RegExp; - 'code-keyword': RegExp; - 'code-global': RegExp; - 'code-word': RegExp; - 'code-decorator': RegExp; - 'code-tag': RegExp; - 'code-punctuation': RegExp; - }>; - tokens(path: number[]): Readonly<{ - name: string; - found: string; - chunks: string[]; - }[]>; - sub(): $mol_view[]; - row_content(path: number[]): $mol_text_code_token[]; - Token(path: number[]): $mol_text_code_token; - token_type(path: number[]): string; - token_content(path: number[]): (string | $mol_text_code_token)[]; - token_text(path: number[]): string; - token_uri(path: number[]): string; - view_find(check: (path: $mol_view, text?: string) => boolean, path?: $mol_view[]): Generator<$mol_view[]>; - find_pos(offset: number): { - token: $mol_text_code_token; - offset: number; - } | null; - find_token_pos([offset, ...path]: number[]): { - token: $mol_text_code_token; - offset: number; - } | null; - } -} - -declare namespace $.$$ { -} - -declare namespace $ { - function $mol_support_css_overflow_anchor(this: $): boolean; -} - -declare namespace $ { - - type $mol_view__style_mol_list_1 = $mol_type_enforce< - ({ - 'paddingTop': ReturnType< $mol_list['gap_before'] >, - }) - , - ReturnType< $mol_view['style'] > - > - type $mol_view__style_mol_list_2 = $mol_type_enforce< - ({ - 'paddingTop': ReturnType< $mol_list['gap_after'] >, - }) - , - ReturnType< $mol_view['style'] > - > - export class $mol_list extends $mol_view { - rows( ): readonly($mol_view)[] - gap_before( ): number - gap_after( ): number - render_visible_only( ): boolean - render_over( ): number - sub( ): ReturnType< $mol_list['rows'] > - Empty( ): $mol_view - Gap_before( ): $mol_view - Gap_after( ): $mol_view - view_window( ): readonly(any)[] - } - -} - -//# sourceMappingURL=list.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_list extends $.$mol_list { - sub(): readonly $mol_view[]; - render_visible_only(): boolean; - view_window(next?: [number, number]): [number, number]; - gap_before(): number; - gap_after(): number; - sub_visible(): $mol_view[]; - minimal_height(): number; - force_render(path: Set<$mol_view>): void; - } -} - -declare namespace $ { -} - -declare namespace $ { - type $mol_blob = Blob; - let $mol_blob: { - prototype: Blob; - new (blobParts?: readonly BlobPart[], options?: BlobPropertyBag): Blob; - }; -} - -declare namespace $ { - - export class $mol_icon_clipboard extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=clipboard.view.tree.d.ts.map -declare namespace $ { - - export class $mol_icon_clipboard_outline extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=outline.view.tree.d.ts.map -declare namespace $ { - function $mol_html_encode(text: string): string; -} - -declare namespace $ { - - type $mol_blob__mol_button_copy_1 = $mol_type_enforce< - [ readonly(BlobPart)[], ({ - 'type': string, - }) ] - , - ConstructorParameters< typeof $mol_blob > - > - type $mol_blob__mol_button_copy_2 = $mol_type_enforce< - [ readonly(BlobPart)[], ({ - 'type': string, - }) ] - , - ConstructorParameters< typeof $mol_blob > - > - export class $mol_button_copy extends $mol_button_minor { - text( ): ReturnType< $mol_button_copy['title'] > - text_blob( next?: $mol_blob ): $mol_blob - html( ): string - html_blob( next?: $mol_blob ): $mol_blob - Icon( ): $mol_icon_clipboard_outline - title( ): string - blobs( ): readonly($mol_blob)[] - data( ): Record - sub( ): readonly(any)[] - } - -} - -//# sourceMappingURL=copy.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_button_copy extends $.$mol_button_copy { - data(): { - [k: string]: Blob; - }; - html(): string; - attachments(): ClipboardItem[]; - click(event?: Event): void; - } -} - -declare namespace $ { - - type $mol_text_code_line__numb_showed_mol_text_code_1 = $mol_type_enforce< - ReturnType< $mol_text_code['sidebar_showed'] > - , - ReturnType< $mol_text_code_line['numb_showed'] > - > - type $mol_text_code_line__numb_mol_text_code_2 = $mol_type_enforce< - ReturnType< $mol_text_code['row_numb'] > - , - ReturnType< $mol_text_code_line['numb'] > - > - type $mol_text_code_line__text_mol_text_code_3 = $mol_type_enforce< - ReturnType< $mol_text_code['row_text'] > - , - ReturnType< $mol_text_code_line['text'] > - > - type $mol_text_code_line__syntax_mol_text_code_4 = $mol_type_enforce< - ReturnType< $mol_text_code['syntax'] > - , - ReturnType< $mol_text_code_line['syntax'] > - > - type $mol_text_code_line__uri_resolve_mol_text_code_5 = $mol_type_enforce< - ReturnType< $mol_text_code['uri_resolve'] > - , - ReturnType< $mol_text_code_line['uri_resolve'] > - > - type $mol_text_code_line__highlight_mol_text_code_6 = $mol_type_enforce< - ReturnType< $mol_text_code['highlight'] > - , - ReturnType< $mol_text_code_line['highlight'] > - > - type $mol_list__render_visible_only_mol_text_code_7 = $mol_type_enforce< - ReturnType< $mol_text_code['render_visible_only'] > - , - ReturnType< $mol_list['render_visible_only'] > - > - type $mol_list__rows_mol_text_code_8 = $mol_type_enforce< - ReturnType< $mol_text_code['rows'] > - , - ReturnType< $mol_list['rows'] > - > - type $mol_button_copy__hint_mol_text_code_9 = $mol_type_enforce< - string - , - ReturnType< $mol_button_copy['hint'] > - > - type $mol_button_copy__text_mol_text_code_10 = $mol_type_enforce< - ReturnType< $mol_text_code['text_export'] > - , - ReturnType< $mol_button_copy['text'] > - > - export class $mol_text_code extends $mol_stack { - sidebar_showed( ): boolean - render_visible_only( ): boolean - row_numb( id: any): number - row_text( id: any): string - syntax( ): any - uri_resolve( id: any): string - highlight( ): string - Row( id: any): $mol_text_code_line - rows( ): readonly(any)[] - Rows( ): $mol_list - text_export( ): string - Copy( ): $mol_button_copy - attr( ): ({ - 'mol_text_code_sidebar_showed': ReturnType< $mol_text_code['sidebar_showed'] >, - }) & ReturnType< $mol_stack['attr'] > - text( ): string - text_lines( ): readonly(string)[] - find_pos( id: any): any - uri_base( ): string - sub( ): readonly(any)[] - } - -} - -//# sourceMappingURL=code.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_text_code extends $.$mol_text_code { - render_visible_only(): boolean; - text_lines(): readonly string[]; - rows(): $.$mol_text_code_line[]; - row_text(index: number): string; - row_numb(index: number): number; - find_pos(offset: number): any; - sub(): ($.$mol_list | $.$mol_button_copy)[]; - syntax(): $mol_syntax2<{ - 'code-indent': RegExp; - 'code-docs': RegExp; - 'code-comment-block': RegExp; - 'code-link': RegExp; - 'code-comment-inline': RegExp; - 'code-string': RegExp; - 'code-number': RegExp; - 'code-call': RegExp; - 'code-sexpr': RegExp; - 'code-field': RegExp; - 'code-keyword': RegExp; - 'code-global': RegExp; - 'code-word': RegExp; - 'code-decorator': RegExp; - 'code-tag': RegExp; - 'code-punctuation': RegExp; - }>; - uri_base(): string; - uri_resolve(uri: string): string; - text_export(): string; - } -} - -declare namespace $.$$ { -} - -declare namespace $ { - - export class $mol_hotkey extends $mol_plugin { - keydown( next?: any ): any - event( ): ({ - keydown( next?: ReturnType< $mol_hotkey['keydown'] > ): ReturnType< $mol_hotkey['keydown'] >, - }) & ReturnType< $mol_plugin['event'] > - key( ): Record - mod_ctrl( ): boolean - mod_alt( ): boolean - mod_shift( ): boolean - } - -} - -//# sourceMappingURL=hotkey.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_hotkey extends $.$mol_hotkey { - key(): { [key in keyof typeof $mol_keyboard_code]?: (event: KeyboardEvent) => void; }; - keydown(event?: KeyboardEvent): void; - } -} - -declare namespace $ { - - type $mol_hotkey__mod_ctrl_mol_string_1 = $mol_type_enforce< - ReturnType< $mol_string['submit_with_ctrl'] > - , - ReturnType< $mol_hotkey['mod_ctrl'] > - > - type $mol_hotkey__key_mol_string_2 = $mol_type_enforce< - ({ - enter( next?: ReturnType< $mol_string['submit'] > ): ReturnType< $mol_string['submit'] >, - }) - , - ReturnType< $mol_hotkey['key'] > - > - export class $mol_string extends $mol_view { - selection_watcher( ): any - error_report( ): any - disabled( ): boolean - value( next?: string ): string - value_changed( next?: ReturnType< $mol_string['value'] > ): ReturnType< $mol_string['value'] > - hint( ): string - hint_visible( ): ReturnType< $mol_string['hint'] > - spellcheck( ): boolean - autocomplete_native( ): string - selection_end( ): number - selection_start( ): number - keyboard( ): string - enter( ): string - length_max( ): number - type( next?: string ): string - event_change( next?: any ): any - submit_with_ctrl( ): boolean - submit( next?: any ): any - Submit( ): $mol_hotkey - dom_name( ): string - enabled( ): boolean - minimal_height( ): number - autocomplete( ): boolean - selection( next?: readonly(number)[] ): readonly(number)[] - auto( ): readonly(any)[] - field( ): ({ - 'disabled': ReturnType< $mol_string['disabled'] >, - 'value': ReturnType< $mol_string['value_changed'] >, - 'placeholder': ReturnType< $mol_string['hint_visible'] >, - 'spellcheck': ReturnType< $mol_string['spellcheck'] >, - 'autocomplete': ReturnType< $mol_string['autocomplete_native'] >, - 'selectionEnd': ReturnType< $mol_string['selection_end'] >, - 'selectionStart': ReturnType< $mol_string['selection_start'] >, - 'inputMode': ReturnType< $mol_string['keyboard'] >, - 'enterkeyhint': ReturnType< $mol_string['enter'] >, - }) & ReturnType< $mol_view['field'] > - attr( ): ({ - 'maxlength': ReturnType< $mol_string['length_max'] >, - 'type': ReturnType< $mol_string['type'] >, - }) & ReturnType< $mol_view['attr'] > - event( ): ({ - input( next?: ReturnType< $mol_string['event_change'] > ): ReturnType< $mol_string['event_change'] >, - }) & ReturnType< $mol_view['event'] > - plugins( ): readonly(any)[] - } - -} - -//# sourceMappingURL=string.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_string extends $.$mol_string { - event_change(next?: Event): void; - error_report(): void; - hint_visible(): string; - disabled(): boolean; - autocomplete_native(): "on" | "off"; - selection_watcher(): $mol_dom_listener; - selection_change(event: Event): void; - selection_start(): number; - selection_end(): number; - } -} - -declare namespace $ { -} - -declare namespace $ { - - type $mol_textarea_edit__value_mol_textarea_1 = $mol_type_enforce< - ReturnType< $mol_textarea['value'] > - , - ReturnType< $mol_textarea_edit['value'] > - > - type $mol_textarea_edit__hint_mol_textarea_2 = $mol_type_enforce< - ReturnType< $mol_textarea['hint'] > - , - ReturnType< $mol_textarea_edit['hint'] > - > - type $mol_textarea_edit__enabled_mol_textarea_3 = $mol_type_enforce< - ReturnType< $mol_textarea['enabled'] > - , - ReturnType< $mol_textarea_edit['enabled'] > - > - type $mol_textarea_edit__spellcheck_mol_textarea_4 = $mol_type_enforce< - ReturnType< $mol_textarea['spellcheck'] > - , - ReturnType< $mol_textarea_edit['spellcheck'] > - > - type $mol_textarea_edit__length_max_mol_textarea_5 = $mol_type_enforce< - ReturnType< $mol_textarea['length_max'] > - , - ReturnType< $mol_textarea_edit['length_max'] > - > - type $mol_textarea_edit__selection_mol_textarea_6 = $mol_type_enforce< - ReturnType< $mol_textarea['selection'] > - , - ReturnType< $mol_textarea_edit['selection'] > - > - type $mol_textarea_edit__submit_mol_textarea_7 = $mol_type_enforce< - ReturnType< $mol_textarea['submit'] > - , - ReturnType< $mol_textarea_edit['submit'] > - > - type $mol_textarea_edit__submit_with_ctrl_mol_textarea_8 = $mol_type_enforce< - ReturnType< $mol_textarea['submit_with_ctrl'] > - , - ReturnType< $mol_textarea_edit['submit_with_ctrl'] > - > - type $mol_text_code__text_mol_textarea_9 = $mol_type_enforce< - ReturnType< $mol_textarea['value'] > - , - ReturnType< $mol_text_code['text'] > - > - type $mol_text_code__render_visible_only_mol_textarea_10 = $mol_type_enforce< - boolean - , - ReturnType< $mol_text_code['render_visible_only'] > - > - type $mol_text_code__row_numb_mol_textarea_11 = $mol_type_enforce< - ReturnType< $mol_textarea['row_numb'] > - , - ReturnType< $mol_text_code['row_numb'] > - > - type $mol_text_code__sidebar_showed_mol_textarea_12 = $mol_type_enforce< - ReturnType< $mol_textarea['sidebar_showed'] > - , - ReturnType< $mol_text_code['sidebar_showed'] > - > - type $mol_text_code__highlight_mol_textarea_13 = $mol_type_enforce< - ReturnType< $mol_textarea['highlight'] > - , - ReturnType< $mol_text_code['highlight'] > - > - type $mol_text_code__syntax_mol_textarea_14 = $mol_type_enforce< - ReturnType< $mol_textarea['syntax'] > - , - ReturnType< $mol_text_code['syntax'] > - > - export class $mol_textarea extends $mol_stack { - clickable( next?: boolean ): boolean - sidebar_showed( ): boolean - press( next?: any ): any - hover( next?: any ): any - value( next?: string ): string - hint( ): string - enabled( ): boolean - spellcheck( ): boolean - length_max( ): number - selection( next?: readonly(number)[] ): readonly(number)[] - bring( ): ReturnType< ReturnType< $mol_textarea['Edit'] >['bring'] > - submit( next?: any ): any - submit_with_ctrl( ): boolean - Edit( ): $mol_textarea_edit - row_numb( id: any): number - highlight( ): string - syntax( ): $mol_syntax2 - View( ): $mol_text_code - attr( ): ({ - 'mol_textarea_clickable': ReturnType< $mol_textarea['clickable'] >, - 'mol_textarea_sidebar_showed': ReturnType< $mol_textarea['sidebar_showed'] >, - }) & ReturnType< $mol_stack['attr'] > - event( ): ({ - keydown( next?: ReturnType< $mol_textarea['press'] > ): ReturnType< $mol_textarea['press'] >, - pointermove( next?: ReturnType< $mol_textarea['hover'] > ): ReturnType< $mol_textarea['hover'] >, - }) - sub( ): readonly(any)[] - symbols_alt( ): Record - symbols_alt_ctrl( ): Record - symbols_alt_shift( ): Record - } - - export class $mol_textarea_edit extends $mol_string { - dom_name( ): string - enter( ): string - field( ): ({ - 'scrollTop': number, - }) & ReturnType< $mol_string['field'] > - } - -} - -//# sourceMappingURL=textarea.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_textarea extends $.$mol_textarea { - indent_inc(): void; - indent_dec(): void; - symbol_insert(event: KeyboardEvent): void; - clickable(next?: boolean): boolean; - hover(event: PointerEvent): void; - press(event: KeyboardEvent): void; - row_numb(index: number): number; - syntax(): $mol_syntax2<{ - 'code-indent': RegExp; - 'code-docs': RegExp; - 'code-comment-block': RegExp; - 'code-link': RegExp; - 'code-comment-inline': RegExp; - 'code-string': RegExp; - 'code-number': RegExp; - 'code-call': RegExp; - 'code-sexpr': RegExp; - 'code-field': RegExp; - 'code-keyword': RegExp; - 'code-global': RegExp; - 'code-word': RegExp; - 'code-decorator': RegExp; - 'code-tag': RegExp; - 'code-punctuation': RegExp; - }>; - } -} - -declare namespace $ { -} - -declare namespace $ { - - type $mol_view__dom_name_mol_page_1 = $mol_type_enforce< - string - , - ReturnType< $mol_view['dom_name'] > - > - type $mol_view__sub_mol_page_2 = $mol_type_enforce< - ReturnType< $mol_page['title_content'] > - , - ReturnType< $mol_view['sub'] > - > - type $mol_view__sub_mol_page_3 = $mol_type_enforce< - ReturnType< $mol_page['tools'] > - , - ReturnType< $mol_view['sub'] > - > - type $mol_view__minimal_height_mol_page_4 = $mol_type_enforce< - number - , - ReturnType< $mol_view['minimal_height'] > - > - type $mol_view__dom_name_mol_page_5 = $mol_type_enforce< - string - , - ReturnType< $mol_view['dom_name'] > - > - type $mol_view__sub_mol_page_6 = $mol_type_enforce< - ReturnType< $mol_page['head'] > - , - ReturnType< $mol_view['sub'] > - > - type __mol_page_7 = $mol_type_enforce< - Parameters< $mol_page['body_scroll_top'] >[0] - , - Parameters< ReturnType< $mol_page['Body'] >['scroll_top'] >[0] - > - type $mol_view__sub_mol_page_8 = $mol_type_enforce< - ReturnType< $mol_page['body'] > - , - ReturnType< $mol_view['sub'] > - > - type $mol_scroll__sub_mol_page_9 = $mol_type_enforce< - ReturnType< $mol_page['body_content'] > - , - ReturnType< $mol_scroll['sub'] > - > - type $mol_view__dom_name_mol_page_10 = $mol_type_enforce< - string - , - ReturnType< $mol_view['dom_name'] > - > - type $mol_view__sub_mol_page_11 = $mol_type_enforce< - ReturnType< $mol_page['foot'] > - , - ReturnType< $mol_view['sub'] > - > - export class $mol_page extends $mol_view { - tabindex( ): number - Logo( ): any - title_content( ): readonly(any)[] - Title( ): $mol_view - tools( ): readonly($mol_view_content)[] - Tools( ): $mol_view - head( ): readonly(any)[] - Head( ): $mol_view - body_scroll_top( next?: ReturnType< ReturnType< $mol_page['Body'] >['scroll_top'] > ): ReturnType< ReturnType< $mol_page['Body'] >['scroll_top'] > - body( ): readonly($mol_view)[] - Body_content( ): $mol_view - body_content( ): readonly(any)[] - Body( ): $mol_scroll - foot( ): readonly($mol_view)[] - Foot( ): $mol_view - dom_name( ): string - attr( ): ({ - 'tabIndex': ReturnType< $mol_page['tabindex'] >, - }) & ReturnType< $mol_view['attr'] > - sub( ): readonly(any)[] - } - -} - -//# sourceMappingURL=page.view.tree.d.ts.map -declare namespace $.$$ { -} - -declare namespace $ { - - export class $optimade_cifplayer_lib_three_view extends $mol_view { - canvas( ): any - controls_target_changed( ): any - resize( ): any - start_render_loop( ): any - sub( ): readonly(any)[] - scene( ): any - camera( ): any - controls( ): any - controls_target( ): any - on_render( ): any - new_object( id: any, next?: any ): any - object( id: any, next?: any ): any - auto( ): readonly(any)[] - } - -} - -//# sourceMappingURL=view.view.tree.d.ts.map -declare namespace $.$$ { -} - -declare namespace $ { - - export class $mol_icon_eye extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=eye.view.tree.d.ts.map -declare namespace $ { - - export class $mol_icon_eye_check extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=check.view.tree.d.ts.map -declare namespace $ { - - export class $mol_icon_tick extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=tick.view.tree.d.ts.map -declare namespace $ { -} - -declare namespace $ { - - export class $mol_check_box extends $mol_check { - Icon( ): $mol_icon_tick - } - -} - -//# sourceMappingURL=box.view.tree.d.ts.map -declare namespace $ { - - type $mol_pop_bubble__align_mol_pop_1 = $mol_type_enforce< - ReturnType< $mol_pop['align'] > - , - ReturnType< $mol_pop_bubble['align'] > - > - type $mol_pop_bubble__content_mol_pop_2 = $mol_type_enforce< - ReturnType< $mol_pop['bubble_content'] > - , - ReturnType< $mol_pop_bubble['content'] > - > - type $mol_pop_bubble__height_max_mol_pop_3 = $mol_type_enforce< - ReturnType< $mol_pop['height_max'] > - , - ReturnType< $mol_pop_bubble['height_max'] > - > - export class $mol_pop extends $mol_view { - Anchor( ): any - align( ): string - bubble_content( ): readonly($mol_view_content)[] - height_max( ): number - Bubble( ): $mol_pop_bubble - showed( next?: boolean ): boolean - align_vert( ): string - align_hor( ): string - prefer( ): string - sub( ): readonly(any)[] - sub_visible( ): readonly(any)[] - } - - export class $mol_pop_bubble extends $mol_view { - content( ): readonly($mol_view_content)[] - height_max( ): number - align( ): string - sub( ): ReturnType< $mol_pop_bubble['content'] > - style( ): ({ - 'maxHeight': ReturnType< $mol_pop_bubble['height_max'] >, - }) & ReturnType< $mol_view['style'] > - attr( ): ({ - 'mol_pop_align': ReturnType< $mol_pop_bubble['align'] >, - 'tabindex': number, - }) & ReturnType< $mol_view['attr'] > - } - -} - -//# sourceMappingURL=pop.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_pop extends $.$mol_pop { - showed(next?: boolean): boolean; - sub_visible(): any[]; - height_max(): number; - align(): string; - align_vert(): "suspense" | "top" | "bottom"; - align_hor(): "suspense" | "left" | "right"; - View_port(): $mol_view; - view_port(): { - width: number; - height: number; - left: number; - right: number; - top: number; - bottom: number; - } | { - left: number; - top: number; - width: number; - height: number; - }; - } -} - -declare namespace $ { -} - -declare namespace $ { - - type $mol_check__minimal_width_mol_pick_1 = $mol_type_enforce< - number - , - ReturnType< $mol_check['minimal_width'] > - > - type $mol_check__minimal_height_mol_pick_2 = $mol_type_enforce< - number - , - ReturnType< $mol_check['minimal_height'] > - > - type $mol_check__enabled_mol_pick_3 = $mol_type_enforce< - ReturnType< $mol_pick['trigger_enabled'] > - , - ReturnType< $mol_check['enabled'] > - > - type $mol_check__checked_mol_pick_4 = $mol_type_enforce< - ReturnType< $mol_pick['showed'] > - , - ReturnType< $mol_check['checked'] > - > - type $mol_check__clicks_mol_pick_5 = $mol_type_enforce< - ReturnType< $mol_pick['clicks'] > - , - ReturnType< $mol_check['clicks'] > - > - type $mol_check__sub_mol_pick_6 = $mol_type_enforce< - ReturnType< $mol_pick['trigger_content'] > - , - ReturnType< $mol_check['sub'] > - > - type $mol_check__hint_mol_pick_7 = $mol_type_enforce< - ReturnType< $mol_pick['hint'] > - , - ReturnType< $mol_check['hint'] > - > - export class $mol_pick extends $mol_pop { - keydown( next?: any ): any - trigger_enabled( ): boolean - clicks( next?: any ): any - trigger_content( ): readonly($mol_view_content)[] - hint( ): string - Trigger( ): $mol_check - event( ): ({ - keydown( next?: ReturnType< $mol_pick['keydown'] > ): ReturnType< $mol_pick['keydown'] >, - }) & ReturnType< $mol_pop['event'] > - Anchor( ): ReturnType< $mol_pick['Trigger'] > - } - -} - -//# sourceMappingURL=pick.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_pick extends $.$mol_pick { - keydown(event: KeyboardEvent): void; - } -} - -declare namespace $ { -} - -declare namespace $ { - - export class $mol_icon_minus extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=minus.view.tree.d.ts.map -declare namespace $ { - - export class $mol_icon_plus extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=plus.view.tree.d.ts.map -declare namespace $ { -} - -declare namespace $ { - - type $mol_string__type_mol_number_1 = $mol_type_enforce< - ReturnType< $mol_number['type'] > - , - ReturnType< $mol_string['type'] > - > - type $mol_string__value_mol_number_2 = $mol_type_enforce< - ReturnType< $mol_number['value_string'] > - , - ReturnType< $mol_string['value'] > - > - type $mol_string__hint_mol_number_3 = $mol_type_enforce< - ReturnType< $mol_number['hint'] > - , - ReturnType< $mol_string['hint'] > - > - type $mol_string__enabled_mol_number_4 = $mol_type_enforce< - ReturnType< $mol_number['string_enabled'] > - , - ReturnType< $mol_string['enabled'] > - > - type $mol_string__submit_mol_number_5 = $mol_type_enforce< - ReturnType< $mol_number['submit'] > - , - ReturnType< $mol_string['submit'] > - > - type $mol_button_minor__event_click_mol_number_6 = $mol_type_enforce< - ReturnType< $mol_number['event_dec'] > - , - ReturnType< $mol_button_minor['event_click'] > - > - type $mol_button_minor__enabled_mol_number_7 = $mol_type_enforce< - ReturnType< $mol_number['dec_enabled'] > - , - ReturnType< $mol_button_minor['enabled'] > - > - type $mol_button_minor__sub_mol_number_8 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_button_minor['sub'] > - > - type $mol_button_minor__event_click_mol_number_9 = $mol_type_enforce< - ReturnType< $mol_number['event_inc'] > - , - ReturnType< $mol_button_minor['event_click'] > - > - type $mol_button_minor__enabled_mol_number_10 = $mol_type_enforce< - ReturnType< $mol_number['inc_enabled'] > - , - ReturnType< $mol_button_minor['enabled'] > - > - type $mol_button_minor__sub_mol_number_11 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_button_minor['sub'] > - > - export class $mol_number extends $mol_view { - precision( ): number - type( ): string - value_string( next?: string ): string - hint( ): string - string_enabled( ): ReturnType< $mol_number['enabled'] > - submit( next?: any ): any - String( ): $mol_string - event_dec( next?: any ): any - dec_enabled( ): ReturnType< $mol_number['enabled'] > - dec_icon( ): $mol_icon_minus - Dec( ): $mol_button_minor - event_inc( next?: any ): any - inc_enabled( ): ReturnType< $mol_number['enabled'] > - inc_icon( ): $mol_icon_plus - Inc( ): $mol_button_minor - precision_view( ): ReturnType< $mol_number['precision'] > - precision_change( ): ReturnType< $mol_number['precision'] > - value_min( ): number - value_max( ): number - value( next?: number ): number - enabled( ): boolean - sub( ): readonly(any)[] - } - -} - -//# sourceMappingURL=number.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_number extends $.$mol_number { - value_limited(val?: number): number; - event_dec(next?: Event): void; - event_inc(next?: Event): void; - round(val: number): string; - value_string(next?: string): string; - dec_enabled(): boolean; - inc_enabled(): boolean; - } -} - -declare namespace $ { - - export class $mol_icon_image extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=image.view.tree.d.ts.map -declare namespace $ { - - export class $mol_icon_image_filter extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=filter.view.tree.d.ts.map -declare namespace $ { - - export class $mol_icon_image_filter_center_focus extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=focus.view.tree.d.ts.map -declare namespace $ { - - export class $mol_icon_magnify extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=magnify.view.tree.d.ts.map -declare namespace $ { - - export class $mol_icon_magnify_plus extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=plus.view.tree.d.ts.map -declare namespace $ { - - export class $mol_icon_magnify_plus_outline extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=outline.view.tree.d.ts.map -declare namespace $ { - - export class $mol_icon_magnify_minus extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=minus.view.tree.d.ts.map -declare namespace $ { - - export class $mol_icon_magnify_minus_outline extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=outline.view.tree.d.ts.map -declare namespace $ { - - type $mol_check__checked_mol_check_list_1 = $mol_type_enforce< - ReturnType< $mol_check_list['option_checked'] > - , - ReturnType< $mol_check['checked'] > - > - type $mol_check__label_mol_check_list_2 = $mol_type_enforce< - ReturnType< $mol_check_list['option_label'] > - , - ReturnType< $mol_check['label'] > - > - type $mol_check__enabled_mol_check_list_3 = $mol_type_enforce< - ReturnType< $mol_check_list['option_enabled'] > - , - ReturnType< $mol_check['enabled'] > - > - type $mol_check__hint_mol_check_list_4 = $mol_type_enforce< - ReturnType< $mol_check_list['option_hint'] > - , - ReturnType< $mol_check['hint'] > - > - type $mol_check__minimal_height_mol_check_list_5 = $mol_type_enforce< - number - , - ReturnType< $mol_check['minimal_height'] > - > - export class $mol_check_list extends $mol_view { - option_checked( id: any, next?: boolean ): boolean - option_title( id: any): string - option_label( id: any): readonly(any)[] - enabled( ): boolean - option_enabled( id: any): ReturnType< $mol_check_list['enabled'] > - option_hint( id: any): string - items( ): readonly($mol_check)[] - dictionary( ): Record - Option( id: any): $mol_check - options( ): Record - keys( ): readonly(string)[] - sub( ): ReturnType< $mol_check_list['items'] > - } - -} - -//# sourceMappingURL=list.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_check_list extends $.$mol_check_list { - options(): { - [key: string]: string; - }; - dictionary(next?: Record): Record; - option_checked(id: string, next?: boolean | null): boolean; - keys(): readonly string[]; - items(): $.$mol_check[]; - option_title(key: string): string; - } -} - -declare namespace $ { -} - -declare namespace $ { - class $mol_state_session extends $mol_object { - static 'native()': Pick; - static native(): Storage | { - getItem(key: string): any; - setItem(key: string, value: string): void; - removeItem(key: string): void; - }; - static value(key: string, next?: Value): Value; - prefix(): string; - value(key: string, next?: Value): Value; - } -} - -declare namespace $ { - - export class $mol_switch extends $mol_check_list { - value( next?: string ): string - } - -} - -//# sourceMappingURL=switch.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_switch extends $.$mol_switch { - value(next?: string): string; - option_checked(key: string, next?: boolean): boolean; - } -} - -declare namespace $ { - - type $mol_view__sub_mol_card_1 = $mol_type_enforce< - ReturnType< $mol_card['content'] > - , - ReturnType< $mol_view['sub'] > - > - type $mol_view__minimal_height_mol_card_2 = $mol_type_enforce< - number - , - ReturnType< $mol_view['minimal_height'] > - > - type $mol_view__sub_mol_card_3 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_view['sub'] > - > - export class $mol_card extends $mol_list { - status( ): string - content( ): readonly($mol_view_content)[] - Content( ): $mol_view - status_text( ): ReturnType< $mol_card['status'] > - Status( ): $mol_view - attr( ): ({ - 'mol_card_status_type': ReturnType< $mol_card['status'] >, - }) & ReturnType< $mol_list['attr'] > - rows( ): readonly($mol_view)[] - } - -} - -//# sourceMappingURL=card.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_card extends $.$mol_card { - rows(): readonly $mol_view[]; - } -} - -declare namespace $ { -} - -declare namespace $ { -} - -declare namespace $ { - - type $optimade_cifplayer_lib_three_view__controls_target_optimade_cifplayer_player_1 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['controls_target'] > - , - ReturnType< $optimade_cifplayer_lib_three_view['controls_target'] > - > - type $optimade_cifplayer_lib_three_view__on_render_optimade_cifplayer_player_2 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['on_render'] > - , - ReturnType< $optimade_cifplayer_lib_three_view['on_render'] > - > - type $mol_paragraph__title_optimade_cifplayer_player_3 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['descr_a'] > - , - ReturnType< $mol_paragraph['title'] > - > - type $mol_paragraph__title_optimade_cifplayer_player_4 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['descr_b'] > - , - ReturnType< $mol_paragraph['title'] > - > - type $mol_paragraph__title_optimade_cifplayer_player_5 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['descr_c'] > - , - ReturnType< $mol_paragraph['title'] > - > - type $mol_paragraph__title_optimade_cifplayer_player_6 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['descr_alpha'] > - , - ReturnType< $mol_paragraph['title'] > - > - type $mol_paragraph__title_optimade_cifplayer_player_7 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['descr_beta'] > - , - ReturnType< $mol_paragraph['title'] > - > - type $mol_paragraph__title_optimade_cifplayer_player_8 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['descr_gamma'] > - , - ReturnType< $mol_paragraph['title'] > - > - type $mol_view__sub_optimade_cifplayer_player_9 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['info_sub'] > - , - ReturnType< $mol_view['sub'] > - > - type $mol_button_minor__title_optimade_cifplayer_player_10 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['Toogle_all_title'] > - , - ReturnType< $mol_button_minor['title'] > - > - type $mol_button_minor__click_optimade_cifplayer_player_11 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['toogle_all_symmetry'] > - , - ReturnType< $mol_button_minor['click'] > - > - type $mol_check_box__title_optimade_cifplayer_player_12 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['sym_name'] > - , - ReturnType< $mol_check_box['title'] > - > - type $mol_check_box__checked_optimade_cifplayer_player_13 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['symmetry_visible'] > - , - ReturnType< $mol_check_box['checked'] > - > - type $mol_list__sub_optimade_cifplayer_player_14 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['sym_checks'] > - , - ReturnType< $mol_list['sub'] > - > - type $mol_scroll__sub_optimade_cifplayer_player_15 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_scroll['sub'] > - > - type $mol_pick__trigger_content_optimade_cifplayer_player_16 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_pick['trigger_content'] > - > - type $mol_pick__bubble_content_optimade_cifplayer_player_17 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_pick['bubble_content'] > - > - type $mol_paragraph__title_optimade_cifplayer_player_18 = $mol_type_enforce< - string - , - ReturnType< $mol_paragraph['title'] > - > - type $mol_number__value_optimade_cifplayer_player_19 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['translate_a'] > - , - ReturnType< $mol_number['value'] > - > - type $mol_number__hint_optimade_cifplayer_player_20 = $mol_type_enforce< - string - , - ReturnType< $mol_number['hint'] > - > - type $mol_number__value_min_optimade_cifplayer_player_21 = $mol_type_enforce< - number - , - ReturnType< $mol_number['value_min'] > - > - type $mol_number__value_max_optimade_cifplayer_player_22 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['translate_limit_a'] > - , - ReturnType< $mol_number['value_max'] > - > - type $mol_paragraph__title_optimade_cifplayer_player_23 = $mol_type_enforce< - string - , - ReturnType< $mol_paragraph['title'] > - > - type $mol_number__value_optimade_cifplayer_player_24 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['translate_b'] > - , - ReturnType< $mol_number['value'] > - > - type $mol_number__hint_optimade_cifplayer_player_25 = $mol_type_enforce< - string - , - ReturnType< $mol_number['hint'] > - > - type $mol_number__value_min_optimade_cifplayer_player_26 = $mol_type_enforce< - number - , - ReturnType< $mol_number['value_min'] > - > - type $mol_number__value_max_optimade_cifplayer_player_27 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['translate_limit_b'] > - , - ReturnType< $mol_number['value_max'] > - > - type $mol_paragraph__title_optimade_cifplayer_player_28 = $mol_type_enforce< - string - , - ReturnType< $mol_paragraph['title'] > - > - type $mol_number__value_optimade_cifplayer_player_29 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['translate_c'] > - , - ReturnType< $mol_number['value'] > - > - type $mol_number__hint_optimade_cifplayer_player_30 = $mol_type_enforce< - string - , - ReturnType< $mol_number['hint'] > - > - type $mol_number__value_min_optimade_cifplayer_player_31 = $mol_type_enforce< - number - , - ReturnType< $mol_number['value_min'] > - > - type $mol_number__value_max_optimade_cifplayer_player_32 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['translate_limit_c'] > - , - ReturnType< $mol_number['value_max'] > - > - type $mol_pick__trigger_content_optimade_cifplayer_player_33 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_pick['trigger_content'] > - > - type $mol_pick__bubble_content_optimade_cifplayer_player_34 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_pick['bubble_content'] > - > - type $mol_check_icon__checked_optimade_cifplayer_player_35 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['centered'] > - , - ReturnType< $mol_check_icon['checked'] > - > - type $mol_check_icon__Icon_optimade_cifplayer_player_36 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['Center_icon'] > - , - ReturnType< $mol_check_icon['Icon'] > - > - type $mol_view__sub_optimade_cifplayer_player_37 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['left_panel'] > - , - ReturnType< $mol_view['sub'] > - > - type $mol_button_minor__click_optimade_cifplayer_player_38 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['zoom_up'] > - , - ReturnType< $mol_button_minor['click'] > - > - type $mol_button_minor__sub_optimade_cifplayer_player_39 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_button_minor['sub'] > - > - type $mol_button_minor__click_optimade_cifplayer_player_40 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['zoom_down'] > - , - ReturnType< $mol_button_minor['click'] > - > - type $mol_button_minor__sub_optimade_cifplayer_player_41 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_button_minor['sub'] > - > - type $mol_list__sub_optimade_cifplayer_player_42 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_list['sub'] > - > - type $mol_view__sub_optimade_cifplayer_player_43 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_view['sub'] > - > - type $mol_switch__value_optimade_cifplayer_player_44 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['overlay'] > - , - ReturnType< $mol_switch['value'] > - > - type $mol_switch__options_optimade_cifplayer_player_45 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['available_overlays'] > - , - ReturnType< $mol_switch['options'] > - > - type $mol_view__sub_optimade_cifplayer_player_46 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['overlays_sub'] > - , - ReturnType< $mol_view['sub'] > - > - type $mol_card__theme_optimade_cifplayer_player_47 = $mol_type_enforce< - string - , - ReturnType< $mol_card['theme'] > - > - type $mol_card__title_optimade_cifplayer_player_48 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_player['message'] > - , - ReturnType< $mol_card['title'] > - > - type $mol_view__sub_optimade_cifplayer_player_49 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_view['sub'] > - > - export class $optimade_cifplayer_player extends $mol_view { - translate_a( next?: number ): number - translate_b( next?: number ): number - translate_c( next?: number ): number - Theme( ): $mol_theme_auto - external_theme_auto( ): any - dir_light( ): any - ambient_light( ): any - atom_boxes( ): readonly(any)[] - overlay_boxes( ): readonly(any)[] - cell_box( ): any - axes_box( ): any - overlay_changed( ): any - vibration_active( next?: boolean ): boolean - vibration_restart( ): any - scene( ): ReturnType< ReturnType< $optimade_cifplayer_player['Three'] >['scene'] > - controls( ): ReturnType< ReturnType< $optimade_cifplayer_player['Three'] >['controls'] > - controls_target( ): any - camera( ): ReturnType< ReturnType< $optimade_cifplayer_player['Three'] >['camera'] > - on_render( ): any - Three( ): $optimade_cifplayer_lib_three_view - descr_a( ): string - Descr_a( ): $mol_paragraph - descr_b( ): string - Descr_b( ): $mol_paragraph - descr_c( ): string - Descr_c( ): $mol_paragraph - descr_alpha( ): string - Descr_alpha( ): $mol_paragraph - descr_beta( ): string - Descr_beta( ): $mol_paragraph - descr_gamma( ): string - Descr_gamma( ): $mol_paragraph - info_sub( ): readonly(any)[] - Info( ): $mol_view - Sym_icon( ): $mol_icon_eye_check - symlabel( ): string - Toogle_all_title( ): string - toogle_all_symmetry( next?: any ): any - Toogle_all( ): $mol_button_minor - sym_name( id: any): string - symmetry_visible( id: any, next?: boolean ): boolean - Sym_check( id: any): $mol_check_box - sym_checks( ): readonly(any)[] - Sym_checks( ): $mol_list - Sym_list( ): $mol_scroll - Symlabel( ): $mol_pick - symlabel_visible( ): readonly(any)[] - translate_cell_label( ): string - Translate_label_a( ): $mol_paragraph - translate_limit_a( ): number - Translate_a( ): $mol_number - Translate_label_b( ): $mol_paragraph - translate_limit_b( ): number - Translate_b( ): $mol_number - Translate_label_c( ): $mol_paragraph - translate_limit_c( ): number - Translate_c( ): $mol_number - Translate_cells( ): $mol_pick - centered( next?: boolean ): boolean - Center_icon( ): $mol_icon_image_filter_center_focus - Center( ): $mol_check_icon - left_panel( ): readonly(any)[] - Left_panel( ): $mol_view - zoom_up( next?: any ): any - Zoom_up_icon( ): $mol_icon_magnify_plus_outline - Zoom_up( ): $mol_button_minor - zoom_down( next?: any ): any - Zoom_down_icon( ): $mol_icon_magnify_minus_outline - Zoom_down( ): $mol_button_minor - Zoom_section( ): $mol_list - Tools( ): $mol_view - overlay( next?: string ): string - available_overlays( ): Record - Switch_overlay( ): $mol_switch - overlays_sub( ): readonly(any)[] - Overlays( ): $mol_view - message( ): string - Message_card( ): $mol_card - Message( ): $mol_view - message_visible( ): readonly(any)[] - color_a( ): string - color_b( ): string - color_c( ): string - data( next?: any ): any - externals( next?: any ): any - fullscreen( next?: boolean ): boolean - skip_panel( next?: boolean ): boolean - atom_radius_scale( ): number - zoom_scale_step( ): number - vibrate( next?: any ): any - unvibrate( ): any - phonon( next?: any ): any - translate_cells( ): readonly(any)[] - translate_cells_limit( ): number - plugins( ): readonly(any)[] - auto( ): readonly(any)[] - atom_box( id: any): any - overlay_box( id: any): any - minimal_heigth( ): number - sub( ): readonly(any)[] - colors_light( ): ({ - 'a': string, - 'b': string, - 'c': string, - }) - colors_dark( ): ({ - 'a': string, - 'b': string, - 'c': string, - }) - cell_lines_color( ): string - axcolor( ): readonly(any)[] - style( ): ({ - '--color_a': ReturnType< $optimade_cifplayer_player['color_a'] >, - '--color_b': ReturnType< $optimade_cifplayer_player['color_b'] >, - '--color_c': ReturnType< $optimade_cifplayer_player['color_c'] >, - }) & ReturnType< $mol_view['style'] > - attr( ): ({ - 'fullscreen': ReturnType< $optimade_cifplayer_player['fullscreen'] >, - }) & ReturnType< $mol_view['attr'] > - } - -} - -//# sourceMappingURL=player.view.tree.d.ts.map -declare namespace $.$$ { -} - -declare namespace $ { -} - -declare namespace $ { - - export class $mol_float extends $mol_view { - style( ): ({ - 'minHeight': string, - }) & ReturnType< $mol_view['style'] > - } - -} - -//# sourceMappingURL=float.view.tree.d.ts.map -declare namespace $ { - - export class $mol_icon_chevron extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=chevron.view.tree.d.ts.map -declare namespace $ { - - export class $mol_check_expand extends $mol_check { - level_style( ): string - expanded( next?: boolean ): boolean - expandable( ): boolean - Icon( ): $mol_icon_chevron - level( ): number - style( ): ({ - 'paddingLeft': ReturnType< $mol_check_expand['level_style'] >, - }) & ReturnType< $mol_check['style'] > - checked( next?: ReturnType< $mol_check_expand['expanded'] > ): ReturnType< $mol_check_expand['expanded'] > - enabled( ): ReturnType< $mol_check_expand['expandable'] > - } - -} - -//# sourceMappingURL=expand.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_check_expand extends $.$mol_check_expand { - level_style(): string; - expandable(): boolean; - } -} - -declare namespace $ { -} - -declare namespace $ { - - type $mol_grid_table__sub_mol_grid_1 = $mol_type_enforce< - ReturnType< $mol_grid['rows'] > - , - ReturnType< $mol_grid_table['sub'] > - > - type $mol_dimmer__needle_mol_grid_2 = $mol_type_enforce< - ReturnType< $mol_grid['needle'] > - , - ReturnType< $mol_dimmer['needle'] > - > - type $mol_dimmer__haystack_mol_grid_3 = $mol_type_enforce< - ReturnType< $mol_grid['cell_value'] > - , - ReturnType< $mol_dimmer['haystack'] > - > - type $mol_grid_row__cells_mol_grid_4 = $mol_type_enforce< - ReturnType< $mol_grid['head_cells'] > - , - ReturnType< $mol_grid_row['cells'] > - > - type $mol_grid_row__minimal_height_mol_grid_5 = $mol_type_enforce< - ReturnType< $mol_grid['row_height'] > - , - ReturnType< $mol_grid_row['minimal_height'] > - > - type $mol_grid_row__minimal_width_mol_grid_6 = $mol_type_enforce< - ReturnType< $mol_grid['minimal_width'] > - , - ReturnType< $mol_grid_row['minimal_width'] > - > - type $mol_grid_row__cells_mol_grid_7 = $mol_type_enforce< - ReturnType< $mol_grid['cells'] > - , - ReturnType< $mol_grid_row['cells'] > - > - type $mol_grid_cell__sub_mol_grid_8 = $mol_type_enforce< - ReturnType< $mol_grid['cell_content_text'] > - , - ReturnType< $mol_grid_cell['sub'] > - > - type $mol_grid_number__sub_mol_grid_9 = $mol_type_enforce< - ReturnType< $mol_grid['cell_content_number'] > - , - ReturnType< $mol_grid_number['sub'] > - > - type $mol_float__dom_name_mol_grid_10 = $mol_type_enforce< - string - , - ReturnType< $mol_float['dom_name'] > - > - type $mol_float__sub_mol_grid_11 = $mol_type_enforce< - ReturnType< $mol_grid['col_head_content'] > - , - ReturnType< $mol_float['sub'] > - > - type $mol_check_expand__level_mol_grid_12 = $mol_type_enforce< - ReturnType< $mol_grid['cell_level'] > - , - ReturnType< $mol_check_expand['level'] > - > - type $mol_check_expand__label_mol_grid_13 = $mol_type_enforce< - ReturnType< $mol_grid['cell_content'] > - , - ReturnType< $mol_check_expand['label'] > - > - type $mol_check_expand__expanded_mol_grid_14 = $mol_type_enforce< - ReturnType< $mol_grid['cell_expanded'] > - , - ReturnType< $mol_check_expand['expanded'] > - > - export class $mol_grid extends $mol_view { - rows( ): readonly($mol_view)[] - Table( ): $mol_grid_table - head_cells( ): readonly($mol_view)[] - cells( id: any): readonly($mol_view)[] - cell_content( id: any): readonly($mol_view_content)[] - cell_content_text( id: any): ReturnType< $mol_grid['cell_content'] > - cell_content_number( id: any): ReturnType< $mol_grid['cell_content'] > - col_head_content( id: any): readonly($mol_view_content)[] - cell_level( id: any): number - cell_expanded( id: any, next?: boolean ): boolean - needle( ): string - cell_value( id: any): string - Cell_dimmer( id: any): $mol_dimmer - row_height( ): number - row_ids( ): readonly(string[])[] - row_id( id: any): any - col_ids( ): readonly(any)[] - records( ): Record - record( id: any): any - hierarchy( ): any - hierarchy_col( ): string - minimal_width( ): number - sub( ): readonly(any)[] - Head( ): $mol_grid_row - Row( id: any): $mol_grid_row - Cell( id: any): $mol_view - cell( id: any): any - Cell_text( id: any): $mol_grid_cell - Cell_number( id: any): $mol_grid_number - Col_head( id: any): $mol_float - Cell_branch( id: any): $mol_check_expand - Cell_content( id: any): readonly(any)[] - } - - export class $mol_grid_table extends $mol_list { - } - - export class $mol_grid_row extends $mol_view { - cells( ): readonly($mol_view)[] - sub( ): ReturnType< $mol_grid_row['cells'] > - } - - export class $mol_grid_cell extends $mol_view { - minimal_height( ): number - } - - export class $mol_grid_number extends $mol_grid_cell { - } - -} - -//# sourceMappingURL=grid.view.tree.d.ts.map -declare namespace $.$$ { - interface $mol_grid_node { - id: string; - parent: $mol_grid_node; - sub: $mol_grid_node[]; - } - class $mol_grid extends $.$mol_grid { - head_cells(): readonly $mol_view[]; - col_head_content(colId: string): readonly string[]; - rows(): readonly $mol_view[]; - cells(row_id: string[]): readonly $mol_view[]; - col_type(col_id: string): "number" | "text" | "branch"; - Cell(id: { - row: string[]; - col: string; - }): $mol_view; - cell_content(id: { - row: string[]; - col: string; - }): any[]; - cell_content_text(id: { - row: string[]; - col: string; - }): any[]; - records(): any; - record(id: string): any; - record_ids(): string[]; - row_id(index: number): string; - col_ids(): readonly string[]; - hierarchy(): { - [id: string]: $mol_grid_node; - }; - row_sub_ids(row: string[]): string[][]; - row_root_id(): string[]; - cell_level(id: { - row: string[]; - }): number; - row_ids(): readonly string[][]; - row_expanded(row_id: string[], next?: boolean): boolean | null; - row_expanded_default(row_id: string[]): boolean; - cell_expanded(id: { - row: string[]; - }, next?: boolean): boolean; - } -} - -declare namespace $ { -} - -declare namespace $ { - function $mol_promise(): Promise & { - done: (res: Result | PromiseLike) => void; - fail: (error?: any) => void; - }; -} - -declare namespace $ { - function $mol_wait_timeout_async(this: $, timeout: number): Promise; - function $mol_wait_timeout(this: $, timeout: number): void; -} - -declare namespace $ { - - type $mol_link__uri_mol_embed_native_1 = $mol_type_enforce< - ReturnType< $mol_embed_native['uri'] > - , - ReturnType< $mol_link['uri'] > - > - type $mol_link__sub_mol_embed_native_2 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_link['sub'] > - > - export class $mol_embed_native extends $mol_scroll { - mime( ): string - title( ): string - Fallback( ): $mol_link - uri_change( next?: any ): any - uri( next?: string ): string - dom_name( ): string - window( ): any - attr( ): ({ - 'data': ReturnType< $mol_embed_native['uri'] >, - 'type': ReturnType< $mol_embed_native['mime'] >, - }) & ReturnType< $mol_scroll['attr'] > - sub( ): readonly(any)[] - message( ): ({ - hashchange( next?: ReturnType< $mol_embed_native['uri_change'] > ): ReturnType< $mol_embed_native['uri_change'] >, - }) - } - -} - -//# sourceMappingURL=native.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_embed_native extends $.$mol_embed_native { - window(): Window; - load(frame: HTMLIFrameElement): Promise; - uri_resource(): string; - message_listener(): $mol_dom_listener; - message_receive(event?: MessageEvent<[string, string]>): void; - uri_change(event: MessageEvent<[string, string]>): void; - auto(): (Window | $mol_dom_listener)[]; - } -} - -declare namespace $ { -} - -declare namespace $ { - - export class $mol_icon_youtube extends $mol_icon { - path( ): string - } - -} - -//# sourceMappingURL=youtube.view.tree.d.ts.map -declare namespace $ { - - export class $mol_frame extends $mol_embed_native { - allow( ): string - uri( next?: string ): string - html( ): any - dom_name( ): string - attr( ): ({ - 'data': any, - 'type': any, - 'allow': ReturnType< $mol_frame['allow'] >, - 'src': ReturnType< $mol_frame['uri'] >, - 'srcdoc': ReturnType< $mol_frame['html'] >, - }) & ReturnType< $mol_embed_native['attr'] > - fullscreen( ): boolean - accelerometer( ): boolean - autoplay( ): boolean - encription( ): boolean - gyroscope( ): boolean - pip( ): boolean - clipboard_read( ): boolean - clipboard_write( ): boolean - } - -} - -//# sourceMappingURL=frame.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_frame extends $.$mol_frame { - window(): any; - allow(): string; - } -} - -declare namespace $ { -} - -declare namespace $ { - - type $mol_image__title_mol_embed_service_1 = $mol_type_enforce< - ReturnType< $mol_embed_service['title'] > - , - ReturnType< $mol_image['title'] > - > - type $mol_image__uri_mol_embed_service_2 = $mol_type_enforce< - ReturnType< $mol_embed_service['video_preview'] > - , - ReturnType< $mol_image['uri'] > - > - type $mol_frame__title_mol_embed_service_3 = $mol_type_enforce< - ReturnType< $mol_embed_service['title'] > - , - ReturnType< $mol_frame['title'] > - > - type $mol_frame__uri_mol_embed_service_4 = $mol_type_enforce< - ReturnType< $mol_embed_service['video_embed'] > - , - ReturnType< $mol_frame['uri'] > - > - export class $mol_embed_service extends $mol_check { - active( next?: boolean ): boolean - title( ): string - video_preview( ): string - Image( ): $mol_image - Hint( ): $mol_icon_youtube - video_embed( ): string - Frame( ): $mol_frame - uri( ): string - video_id( ): string - checked( next?: ReturnType< $mol_embed_service['active'] > ): ReturnType< $mol_embed_service['active'] > - sub( ): readonly(any)[] - } - -} - -//# sourceMappingURL=service.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_embed_service extends $.$mol_embed_service { - sub(): $.$mol_frame[] | ($.$mol_image | $mol_icon_youtube)[]; - } -} - -declare namespace $ { -} - -declare namespace $ { - - export class $mol_embed_youtube extends $mol_embed_service { - } - -} - -//# sourceMappingURL=youtube.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_embed_youtube extends $.$mol_embed_youtube { - video_embed(): string; - video_id(): string; - video_preview(): string; - } -} - -declare namespace $ { - - export class $mol_embed_rutube extends $mol_embed_service { - } - -} - -//# sourceMappingURL=rutube.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_embed_rutube extends $.$mol_embed_rutube { - video_embed(): string; - video_id(): string; - video_preview(): string; - } -} - -declare namespace $ { - - type $mol_image__title_mol_embed_any_1 = $mol_type_enforce< - ReturnType< $mol_embed_any['title'] > - , - ReturnType< $mol_image['title'] > - > - type $mol_image__uri_mol_embed_any_2 = $mol_type_enforce< - ReturnType< $mol_embed_any['uri'] > - , - ReturnType< $mol_image['uri'] > - > - type $mol_embed_native__title_mol_embed_any_3 = $mol_type_enforce< - ReturnType< $mol_embed_any['title'] > - , - ReturnType< $mol_embed_native['title'] > - > - type $mol_embed_native__uri_mol_embed_any_4 = $mol_type_enforce< - ReturnType< $mol_embed_any['uri'] > - , - ReturnType< $mol_embed_native['uri'] > - > - type $mol_embed_youtube__title_mol_embed_any_5 = $mol_type_enforce< - ReturnType< $mol_embed_any['title'] > - , - ReturnType< $mol_embed_youtube['title'] > - > - type $mol_embed_youtube__uri_mol_embed_any_6 = $mol_type_enforce< - ReturnType< $mol_embed_any['uri'] > - , - ReturnType< $mol_embed_youtube['uri'] > - > - type $mol_embed_rutube__title_mol_embed_any_7 = $mol_type_enforce< - ReturnType< $mol_embed_any['title'] > - , - ReturnType< $mol_embed_rutube['title'] > - > - type $mol_embed_rutube__uri_mol_embed_any_8 = $mol_type_enforce< - ReturnType< $mol_embed_any['uri'] > - , - ReturnType< $mol_embed_rutube['uri'] > - > - export class $mol_embed_any extends $mol_view { - title( ): string - uri( ): string - Image( ): $mol_image - Object( ): $mol_embed_native - Youtube( ): $mol_embed_youtube - Rutube( ): $mol_embed_rutube - } - -} - -//# sourceMappingURL=any.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_embed_any extends $.$mol_embed_any { - type(): "object" | "image" | "youtube" | "rutube"; - sub(): $.$mol_image[] | $.$mol_embed_youtube[] | $.$mol_embed_native[]; - } -} - -declare namespace $ { - - type $mol_check_expand__checked_mol_expander_1 = $mol_type_enforce< - ReturnType< $mol_expander['expanded'] > - , - ReturnType< $mol_check_expand['checked'] > - > - type $mol_check_expand__expandable_mol_expander_2 = $mol_type_enforce< - ReturnType< $mol_expander['expandable'] > - , - ReturnType< $mol_check_expand['expandable'] > - > - type $mol_check_expand__label_mol_expander_3 = $mol_type_enforce< - ReturnType< $mol_expander['label'] > - , - ReturnType< $mol_check_expand['label'] > - > - type $mol_view__sub_mol_expander_4 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_view['sub'] > - > - type $mol_list__rows_mol_expander_5 = $mol_type_enforce< - ReturnType< $mol_expander['content'] > - , - ReturnType< $mol_list['rows'] > - > - export class $mol_expander extends $mol_list { - expanded( next?: boolean ): boolean - expandable( ): boolean - label( ): readonly(any)[] - Trigger( ): $mol_check_expand - Tools( ): any - Label( ): $mol_view - content( ): readonly(any)[] - Content( ): $mol_list - rows( ): readonly(any)[] - } - -} - -//# sourceMappingURL=expander.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_expander extends $.$mol_expander { - rows(): $mol_view[]; - expandable(): boolean; - } -} - -declare namespace $ { -} - -declare namespace $ { - - type $mol_text__text_mol_text_1 = $mol_type_enforce< - ReturnType< $mol_text['spoiler_label'] > - , - ReturnType< $mol_text['text'] > - > - type $mol_text__text_mol_text_2 = $mol_type_enforce< - ReturnType< $mol_text['spoiler_content'] > - , - ReturnType< $mol_text['text'] > - > - type $mol_paragraph__sub_mol_text_3 = $mol_type_enforce< - ReturnType< $mol_text['block_content'] > - , - ReturnType< $mol_paragraph['sub'] > - > - type $mol_text__uri_resolve_mol_text_4 = $mol_type_enforce< - ReturnType< $mol_text['uri_resolve'] > - , - ReturnType< $mol_text['uri_resolve'] > - > - type $mol_text__text_mol_text_5 = $mol_type_enforce< - ReturnType< $mol_text['quote_text'] > - , - ReturnType< $mol_text['text'] > - > - type $mol_text__highlight_mol_text_6 = $mol_type_enforce< - ReturnType< $mol_text['highlight'] > - , - ReturnType< $mol_text['highlight'] > - > - type $mol_text__auto_scroll_mol_text_7 = $mol_type_enforce< - any - , - ReturnType< $mol_text['auto_scroll'] > - > - type $mol_text_list__uri_resolve_mol_text_8 = $mol_type_enforce< - ReturnType< $mol_text['uri_resolve'] > - , - ReturnType< $mol_text_list['uri_resolve'] > - > - type $mol_text_list__type_mol_text_9 = $mol_type_enforce< - ReturnType< $mol_text['list_type'] > - , - ReturnType< $mol_text_list['type'] > - > - type $mol_text_list__text_mol_text_10 = $mol_type_enforce< - ReturnType< $mol_text['list_text'] > - , - ReturnType< $mol_text_list['text'] > - > - type $mol_text_list__highlight_mol_text_11 = $mol_type_enforce< - ReturnType< $mol_text['highlight'] > - , - ReturnType< $mol_text_list['highlight'] > - > - type $mol_text_header__minimal_height_mol_text_12 = $mol_type_enforce< - number - , - ReturnType< $mol_text_header['minimal_height'] > - > - type $mol_text_header__level_mol_text_13 = $mol_type_enforce< - ReturnType< $mol_text['header_level'] > - , - ReturnType< $mol_text_header['level'] > - > - type $mol_text_header__content_mol_text_14 = $mol_type_enforce< - ReturnType< $mol_text['block_content'] > - , - ReturnType< $mol_text_header['content'] > - > - type $mol_text_header__arg_mol_text_15 = $mol_type_enforce< - ReturnType< $mol_text['header_arg'] > - , - ReturnType< $mol_text_header['arg'] > - > - type $mol_text_code__text_mol_text_16 = $mol_type_enforce< - ReturnType< $mol_text['pre_text'] > - , - ReturnType< $mol_text_code['text'] > - > - type $mol_text_code__highlight_mol_text_17 = $mol_type_enforce< - ReturnType< $mol_text['highlight'] > - , - ReturnType< $mol_text_code['highlight'] > - > - type $mol_text_code__uri_resolve_mol_text_18 = $mol_type_enforce< - ReturnType< $mol_text['uri_resolve'] > - , - ReturnType< $mol_text_code['uri_resolve'] > - > - type $mol_text_code__sidebar_showed_mol_text_19 = $mol_type_enforce< - ReturnType< $mol_text['pre_sidebar_showed'] > - , - ReturnType< $mol_text_code['sidebar_showed'] > - > - type $mol_view__dom_name_mol_text_20 = $mol_type_enforce< - string - , - ReturnType< $mol_view['dom_name'] > - > - type $mol_grid__head_cells_mol_text_21 = $mol_type_enforce< - ReturnType< $mol_text['table_head_cells'] > - , - ReturnType< $mol_grid['head_cells'] > - > - type $mol_grid__rows_mol_text_22 = $mol_type_enforce< - ReturnType< $mol_text['table_rows'] > - , - ReturnType< $mol_grid['rows'] > - > - type $mol_grid_row__cells_mol_text_23 = $mol_type_enforce< - ReturnType< $mol_text['table_cells'] > - , - ReturnType< $mol_grid_row['cells'] > - > - type $mol_text__auto_scroll_mol_text_24 = $mol_type_enforce< - any - , - ReturnType< $mol_text['auto_scroll'] > - > - type $mol_text__highlight_mol_text_25 = $mol_type_enforce< - ReturnType< $mol_text['highlight'] > - , - ReturnType< $mol_text['highlight'] > - > - type $mol_text__uri_resolve_mol_text_26 = $mol_type_enforce< - ReturnType< $mol_text['uri_resolve'] > - , - ReturnType< $mol_text['uri_resolve'] > - > - type $mol_text__text_mol_text_27 = $mol_type_enforce< - ReturnType< $mol_text['table_cell_text'] > - , - ReturnType< $mol_text['text'] > - > - type $mol_grid__rows_mol_text_28 = $mol_type_enforce< - ReturnType< $mol_text['grid_rows'] > - , - ReturnType< $mol_grid['rows'] > - > - type $mol_grid_row__cells_mol_text_29 = $mol_type_enforce< - ReturnType< $mol_text['grid_cells'] > - , - ReturnType< $mol_grid_row['cells'] > - > - type $mol_text__auto_scroll_mol_text_30 = $mol_type_enforce< - any - , - ReturnType< $mol_text['auto_scroll'] > - > - type $mol_text__highlight_mol_text_31 = $mol_type_enforce< - ReturnType< $mol_text['highlight'] > - , - ReturnType< $mol_text['highlight'] > - > - type $mol_text__uri_resolve_mol_text_32 = $mol_type_enforce< - ReturnType< $mol_text['uri_resolve'] > - , - ReturnType< $mol_text['uri_resolve'] > - > - type $mol_text__text_mol_text_33 = $mol_type_enforce< - ReturnType< $mol_text['grid_cell_text'] > - , - ReturnType< $mol_text['text'] > - > - type $mol_dimmer__dom_name_mol_text_34 = $mol_type_enforce< - string - , - ReturnType< $mol_dimmer['dom_name'] > - > - type $mol_dimmer__needle_mol_text_35 = $mol_type_enforce< - ReturnType< $mol_text['highlight'] > - , - ReturnType< $mol_dimmer['needle'] > - > - type $mol_dimmer__haystack_mol_text_36 = $mol_type_enforce< - ReturnType< $mol_text['line_text'] > - , - ReturnType< $mol_dimmer['haystack'] > - > - type $mol_text_span__dom_name_mol_text_37 = $mol_type_enforce< - string - , - ReturnType< $mol_text_span['dom_name'] > - > - type $mol_text_span__type_mol_text_38 = $mol_type_enforce< - ReturnType< $mol_text['line_type'] > - , - ReturnType< $mol_text_span['type'] > - > - type $mol_text_span__sub_mol_text_39 = $mol_type_enforce< - ReturnType< $mol_text['line_content'] > - , - ReturnType< $mol_text_span['sub'] > - > - type $mol_text_code_line__numb_showed_mol_text_40 = $mol_type_enforce< - boolean - , - ReturnType< $mol_text_code_line['numb_showed'] > - > - type $mol_text_code_line__highlight_mol_text_41 = $mol_type_enforce< - ReturnType< $mol_text['highlight'] > - , - ReturnType< $mol_text_code_line['highlight'] > - > - type $mol_text_code_line__text_mol_text_42 = $mol_type_enforce< - ReturnType< $mol_text['line_text'] > - , - ReturnType< $mol_text_code_line['text'] > - > - type $mol_text_code_line__uri_resolve_mol_text_43 = $mol_type_enforce< - ReturnType< $mol_text['uri_resolve'] > - , - ReturnType< $mol_text_code_line['uri_resolve'] > - > - type $mol_text_code_line__syntax_mol_text_44 = $mol_type_enforce< - ReturnType< $mol_text['code_syntax'] > - , - ReturnType< $mol_text_code_line['syntax'] > - > - type $mol_link_iconed__uri_mol_text_45 = $mol_type_enforce< - ReturnType< $mol_text['link_uri'] > - , - ReturnType< $mol_link_iconed['uri'] > - > - type $mol_link_iconed__content_mol_text_46 = $mol_type_enforce< - ReturnType< $mol_text['line_content'] > - , - ReturnType< $mol_link_iconed['content'] > - > - type $mol_link_iconed__uri_mol_text_47 = $mol_type_enforce< - ReturnType< $mol_text['link_uri'] > - , - ReturnType< $mol_link_iconed['uri'] > - > - type $mol_link_iconed__content_mol_text_48 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_link_iconed['content'] > - > - type $mol_embed_any__uri_mol_text_49 = $mol_type_enforce< - ReturnType< $mol_text['link_uri'] > - , - ReturnType< $mol_embed_any['uri'] > - > - type $mol_embed_any__title_mol_text_50 = $mol_type_enforce< - ReturnType< $mol_text['line_text'] > - , - ReturnType< $mol_embed_any['title'] > - > - type $mol_expander__label_mol_text_51 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_expander['label'] > - > - type $mol_expander__content_mol_text_52 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_expander['content'] > - > - export class $mol_text extends $mol_list { - auto_scroll( ): any - block_content( id: any): readonly(any)[] - uri_resolve( id: any): string - quote_text( id: any): string - highlight( ): string - list_type( id: any): string - list_text( id: any): string - header_level( id: any): number - header_arg( id: any): Record - pre_text( id: any): string - code_sidebar_showed( ): boolean - pre_sidebar_showed( ): ReturnType< $mol_text['code_sidebar_showed'] > - table_head_cells( id: any): readonly(any)[] - table_rows( id: any): readonly(any)[] - table_cells( id: any): readonly(any)[] - table_cell_text( id: any): string - grid_rows( id: any): readonly(any)[] - grid_cells( id: any): readonly(any)[] - grid_cell_text( id: any): string - line_text( id: any): string - line_type( id: any): string - line_content( id: any): readonly(any)[] - code_syntax( ): any - link_uri( id: any): string - link_host( id: any): string - spoiler_label( id: any): string - Spoiler_label( id: any): $mol_text - spoiler_content( id: any): string - Spoiler_content( id: any): $mol_text - uri_base( ): string - text( ): string - param( ): string - flow_tokens( ): readonly(any)[] - block_text( id: any): string - auto( ): readonly(any)[] - Paragraph( id: any): $mol_paragraph - Quote( id: any): $mol_text - List( id: any): $mol_text_list - item_index( id: any): number - Header( id: any): $mol_text_header - Pre( id: any): $mol_text_code - Cut( id: any): $mol_view - Table( id: any): $mol_grid - Table_row( id: any): $mol_grid_row - Table_cell( id: any): $mol_text - Grid( id: any): $mol_grid - Grid_row( id: any): $mol_grid_row - Grid_cell( id: any): $mol_text - String( id: any): $mol_dimmer - Span( id: any): $mol_text_span - Code_line( id: any): $mol_text_code_line - Link( id: any): $mol_link_iconed - Link_http( id: any): $mol_link_iconed - Embed( id: any): $mol_embed_any - Spoiler( id: any): $mol_expander - } - - type $mol_link__arg_mol_text_header_1 = $mol_type_enforce< - ReturnType< $mol_text_header['arg'] > - , - ReturnType< $mol_link['arg'] > - > - type $mol_link__hint_mol_text_header_2 = $mol_type_enforce< - string - , - ReturnType< $mol_link['hint'] > - > - type $mol_link__sub_mol_text_header_3 = $mol_type_enforce< - ReturnType< $mol_text_header['content'] > - , - ReturnType< $mol_link['sub'] > - > - export class $mol_text_header extends $mol_paragraph { - arg( ): Record - content( ): readonly(any)[] - Link( ): $mol_link - level( ): number - sub( ): readonly(any)[] - } - - export class $mol_text_span extends $mol_paragraph { - type( ): string - dom_name( ): string - attr( ): ({ - 'mol_text_type': ReturnType< $mol_text_span['type'] >, - }) & ReturnType< $mol_paragraph['attr'] > - } - -} - -//# sourceMappingURL=text.view.tree.d.ts.map -declare namespace $.$$ { - class $mol_text extends $.$mol_text { - flow_tokens(): Readonly<{ - name: string; - found: string; - chunks: string[]; - }[]>; - block_type(index: number): string; - rows(): ($mol_view | $.$mol_paragraph | $.$mol_text_code | $.$mol_grid)[]; - param(): string; - header_level(index: number): number; - header_arg(index: number): { - [x: string]: string; - }; - list_type(index: number): string; - item_index(index: number): number; - pre_text(index: number): string; - quote_text(index: number): string; - list_text(index: number): string; - cell_content(indexBlock: number): string[][]; - table_rows(blockId: number): $mol_grid_row[]; - table_head_cells(blockId: number): $.$mol_text[]; - table_cells(id: { - block: number; - row: number; - }): $.$mol_text[]; - table_cell_text(id: { - block: number; - row: number; - cell: number; - }): string; - grid_content(indexBlock: number): string[][]; - grid_rows(blockId: number): $mol_grid_row[]; - grid_cells(id: { - block: number; - row: number; - }): $.$mol_text[]; - grid_cell_text(id: { - block: number; - row: number; - cell: number; - }): string; - uri_base(): string; - uri_base_abs(): URL; - uri_resolve(uri: string): string; - code_syntax(): $mol_syntax2<{ - 'code-indent': RegExp; - 'code-docs': RegExp; - 'code-comment-block': RegExp; - 'code-link': RegExp; - 'code-comment-inline': RegExp; - 'code-string': RegExp; - 'code-number': RegExp; - 'code-call': RegExp; - 'code-sexpr': RegExp; - 'code-field': RegExp; - 'code-keyword': RegExp; - 'code-global': RegExp; - 'code-word': RegExp; - 'code-decorator': RegExp; - 'code-tag': RegExp; - 'code-punctuation': RegExp; - }>; - block_text(index: number): string; - block_content(index: number): ($.$mol_link_iconed | $.$mol_dimmer | $.$mol_text_code_line | $.$mol_embed_any | $mol_text_span)[]; - line_tokens(path: readonly number[]): Readonly<{ - name: string; - found: string; - chunks: string[]; - }[]>; - line_token(path: readonly number[]): { - name: string; - found: string; - chunks: string[]; - }; - line_type(path: readonly number[]): string; - line_text(path: readonly number[]): string; - line_content(path: readonly number[]): ($.$mol_link_iconed | $.$mol_dimmer | $.$mol_text_code_line | $.$mol_embed_any | $mol_text_span)[]; - link_uri(path: readonly number[]): string; - link_host(path: readonly number[]): string; - auto_scroll(): void; - spoiler_rows(index: number): string[]; - spoiler_label(index: number): string; - spoiler_content(index: number): string; - } - class $mol_text_header extends $.$mol_text_header { - dom_name(): string; - } -} - -declare namespace $ { -} - -declare namespace $ { -} - -declare namespace $ { - - type $mol_text_list_item__index_mol_text_list_1 = $mol_type_enforce< - ReturnType< $mol_text_list['item_index'] > - , - ReturnType< $mol_text_list_item['index'] > - > - type $mol_text_list_item__sub_mol_text_list_2 = $mol_type_enforce< - ReturnType< $mol_text_list['block_content'] > - , - ReturnType< $mol_text_list_item['sub'] > - > - export class $mol_text_list extends $mol_text { - type( ): string - auto_scroll( ): any - attr( ): ({ - 'mol_text_list_type': ReturnType< $mol_text_list['type'] >, - }) & ReturnType< $mol_text['attr'] > - Paragraph( id: any): $mol_text_list_item - } - - export class $mol_text_list_item extends $mol_paragraph { - index( ): number - attr( ): ({ - 'mol_text_list_item_index': ReturnType< $mol_text_list_item['index'] >, - }) & ReturnType< $mol_paragraph['attr'] > - } - -} - -//# sourceMappingURL=list.view.tree.d.ts.map -declare namespace $ { - - type $mol_book2__plugins_optimade_cifplayer_app_1 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_book2['plugins'] > - > - type $mol_book2__pages_optimade_cifplayer_app_2 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_app['pages'] > - , - ReturnType< $mol_book2['pages'] > - > - type $mol_book2__Placeholder_optimade_cifplayer_app_3 = $mol_type_enforce< - any - , - ReturnType< $mol_book2['Placeholder'] > - > - type $mol_link_iconed__uri_optimade_cifplayer_app_4 = $mol_type_enforce< - string - , - ReturnType< $mol_link_iconed['uri'] > - > - type $mol_link_iconed__title_optimade_cifplayer_app_5 = $mol_type_enforce< - string - , - ReturnType< $mol_link_iconed['title'] > - > - type $mol_button_open__files_optimade_cifplayer_app_6 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_app['files_read'] > - , - ReturnType< $mol_button_open['files'] > - > - type $mol_button_open__sub_optimade_cifplayer_app_7 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_button_open['sub'] > - > - type $mol_textarea__value_optimade_cifplayer_app_8 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_app['data_str'] > - , - ReturnType< $mol_textarea['value'] > - > - type $mol_textarea__hint_optimade_cifplayer_app_9 = $mol_type_enforce< - string - , - ReturnType< $mol_textarea['hint'] > - > - type $mol_view__sub_optimade_cifplayer_app_10 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_view['sub'] > - > - type $mol_page__title_optimade_cifplayer_app_11 = $mol_type_enforce< - string - , - ReturnType< $mol_page['title'] > - > - type $mol_page__tools_optimade_cifplayer_app_12 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_page['tools'] > - > - type $mol_page__body_optimade_cifplayer_app_13 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_page['body'] > - > - type __optimade_cifplayer_app_14 = $mol_type_enforce< - Parameters< $optimade_cifplayer_app['vibrate'] >[0] - , - Parameters< ReturnType< $optimade_cifplayer_app['Player'] >['vibrate'] >[0] - > - type $optimade_cifplayer_player__data_optimade_cifplayer_app_15 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_app['data_str'] > - , - ReturnType< $optimade_cifplayer_player['data'] > - > - type $mol_text__text_optimade_cifplayer_app_16 = $mol_type_enforce< - string - , - ReturnType< $mol_text['text'] > - > - type $mol_button_minor__title_optimade_cifplayer_app_17 = $mol_type_enforce< - string - , - ReturnType< $mol_button_minor['title'] > - > - type $mol_button_minor__click_optimade_cifplayer_app_18 = $mol_type_enforce< - ReturnType< $optimade_cifplayer_app['paste_example'] > - , - ReturnType< $mol_button_minor['click'] > - > - type $mol_view__sub_optimade_cifplayer_app_19 = $mol_type_enforce< - readonly(any)[] - , - ReturnType< $mol_view['sub'] > - > - export class $optimade_cifplayer_app extends $mol_drop { - drop_file( next?: any ): any - Theme( ): $mol_theme_auto - Book( ): $mol_book2 - Source( ): $mol_link_iconed - Lights( ): $mol_lights_toggle - Upload_icon( ): ReturnType< ReturnType< $optimade_cifplayer_app['Upload'] >['Icon'] > - Upload_native( ): ReturnType< ReturnType< $optimade_cifplayer_app['Upload'] >['Native'] > - files_read( next?: any ): any - Upload( ): $mol_button_open - Data_text( ): $mol_textarea - Body( ): $mol_view - Menu( ): $mol_page - data_str( next?: string ): string - vibrate( next?: ReturnType< ReturnType< $optimade_cifplayer_app['Player'] >['vibrate'] > ): ReturnType< ReturnType< $optimade_cifplayer_app['Player'] >['vibrate'] > - unvibrate( ): ReturnType< ReturnType< $optimade_cifplayer_app['Player'] >['unvibrate'] > - Player( ): $optimade_cifplayer_player - Start_message( ): $mol_text - paste_example( next?: any ): any - Paste_example( ): $mol_button_minor - receive( next?: ReturnType< $optimade_cifplayer_app['drop_file'] > ): ReturnType< $optimade_cifplayer_app['drop_file'] > - Sub( ): ReturnType< $optimade_cifplayer_app['Book'] > - pages( ): readonly(any)[] - Start( ): $mol_view - } - -} - -//# sourceMappingURL=app.view.tree.d.ts.map -declare namespace $.$$ { -} - export = $; //# sourceMappingURL=node.d.ts.map diff --git a/node.d.ts.map b/node.d.ts.map index a21ac96..17bee33 100644 --- a/node.d.ts.map +++ b/node.d.ts.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../mam.d.ts","../../../../mol/ambient/ambient.d.ts","../../../../mol/delegate/delegate.d.ts","../../../../mol/owning/owning.d.ts","../../../../mol/fail/fail.d.ts","../../../../mol/fail/hidden/hidden.d.ts","../../../../mol/type/writable/writable.d.ts","../../../../mol/func/name/name.d.ts","../../../../mol/object2/object2.d.ts","../../../../mol/object/object.d.ts","../../../../mol/window/window.node.d.ts","../../../../mol/wire/cursor/cursor.d.ts","../../../../mol/wire/pub/pub.d.ts","../../../../mol/wire/sub/sub.d.ts","../../../../mol/wire/wire.d.ts","../../../../mol/dev/format/format.d.ts","../../../../mol/wire/pub/sub/sub.d.ts","../../../../mol/after/tick/tick.d.ts","../../../../mol/promise/like/like.d.ts","../../../../mol/wire/fiber/fiber.d.ts","../../../../mol/guid/guid.d.ts","../../../../mol/key/key.d.ts","../../../../mol/after/timeout/timeout.d.ts","../../../../mol/after/frame/frame.node.d.ts","../../../../mol/compare/deep/deep.d.ts","../../../../mol/log3/log3.d.ts","../../../../mol/span/span.d.ts","../../../../mol/tree2/to/string/string.d.ts","../../../../mol/tree2/tree2.d.ts","../../../../mol/error/syntax/syntax.d.ts","../../../../mol/tree2/from/string/string.d.ts","../../../../mol/tree2/from/json/json.d.ts","../../../../mol/term/color/color.d.ts","../../../../mol/log3/log3.node.d.ts","../../../../mol/wire/task/task.d.ts","../../../../mol/wire/method/method.d.ts","../../../../mol/type/tail/tail.d.ts","../../../../mol/type/foot/foot.d.ts","../../../../mol/fail/catch/catch.d.ts","../../../../mol/fail/log/log.d.ts","../../../../mol/wire/atom/atom.d.ts","../../../../mol/wire/solo/solo.d.ts","../../../../mol/wire/plex/plex.d.ts","../../../../mol/mem/mem.d.ts","../../../../mol/dom/context/context.d.ts","../../../../node/node.node.d.ts","../../../../mol/error/mix/mix.d.ts","../../../../mol/env/env.d.ts","../../../../mol/env/env.node.d.ts","../../../../mol/wire/sync/sync.d.ts","../../../../mol/run/run.node.d.ts","../../../../mol/exec/exec.node.d.ts","../../../../mol/dom/context/context.node.d.ts","../../../../mol/view/selection/selection.d.ts","../../../../mol/wrapper/wrapper.d.ts","../../../../mol/memo/memo.d.ts","../../../../mol/dom/dom.d.ts","../../../../mol/dom/qname/qname.d.ts","../../../../mol/wire/probe/probe.d.ts","../../../../mol/wire/watch/watch.d.ts","../../../../mol/const/const.d.ts","../../../../mol/wire/solid/solid.d.ts","../../../../mol/dom/render/attributes/attributes.d.ts","../../../../mol/dom/render/events/events.d.ts","../../../../mol/dom/render/styles/styles.d.ts","../../../../mol/dom/render/children/children.d.ts","../../../../mol/dom/render/fields/fields.d.ts","../../../../mol/wire/async/async.d.ts","../../../../mol/type/keys/extract/extract.d.ts","../../../../mol/type/pick/pick.d.ts","../../../../mol/style/attach/attach.d.ts","../../../../mol/decor/decor.d.ts","../../../../mol/style/unit/unit.d.ts","../../../../mol/style/func/func.d.ts","../../../../mol/type/override/override.d.ts","../../../../mol/style/properties/properties.d.ts","../../../../mol/style/prop/prop.d.ts","../../../../mol/theme/theme.d.ts","../../../../mol/theme/-css/theme.css.d.ts","../../../../mol/gap/gap.d.ts","../../../../mol/gap/-css/gap.css.d.ts","../../../../mol/view/view/view.d.ts","../../../../mol/view/view/-css/view.css.d.ts","../../../../mol/plugin/plugin.d.ts","../../../../mol/ghost/-view.tree/ghost.view.tree.d.ts","../../../../mol/ghost/ghost.view.d.ts","../../../../mol/drop/-view.tree/drop.view.tree.d.ts","../../../../mol/drop/drop.view.d.ts","../../../../mol/action/action.d.ts","../../../../mol/state/arg/arg.node.d.ts","../../../../mol/media/media.d.ts","../../../../mol/mem/persist/persist.d.ts","../../../../mol/mem/cached/cached.d.ts","../../../../mol/storage/storage.d.ts","../../../../mol/state/local/local.d.ts","../../../../mol/lock/lock.d.ts","../../../../mol/compare/array/array.d.ts","../../../../mol/charset/encoding/encoding.d.ts","../../../../mol/charset/decode/decode.d.ts","../../../../mol/charset/encode/encode.d.ts","../../../../mol/file/transaction/transaction.d.ts","../../../../mol/file/transaction/transaction.node.d.ts","../../../../mol/file/base/base.d.ts","../../../../mol/file/file.d.ts","../../../../mol/file/file.node.d.ts","../../../../mol/state/local/local.node.d.ts","../../../../mol/lights/lights.d.ts","../../../../mol/theme/auto/-view.tree/auto.view.tree.d.ts","../../../../mol/theme/auto/auto.view.d.ts","../../../../mol/dom/listener/listener.d.ts","../../../../mol/print/print.d.ts","../../../../mol/style/pseudo/class.d.ts","../../../../mol/style/pseudo/element.d.ts","../../../../mol/type/error/error.d.ts","../../../../mol/style/guard/guard.d.ts","../../../../mol/style/sheet/sheet.d.ts","../../../../mol/style/define/define.d.ts","../../../../mol/scroll/-view.tree/scroll.view.tree.d.ts","../../../../mol/scroll/scroll.view.d.ts","../../../../mol/scroll/scroll.view.css.d.ts","../../../../mol/layer/layer.d.ts","../../../../mol/layer/-css/layer.css.d.ts","../../../../mol/type/enforce/enforce.d.ts","../../../../mol/book2/-view.tree/book2.view.tree.d.ts","../../../../mol/book2/book2.view.d.ts","../../../../mol/book2/-css/book2.view.css.d.ts","../../../../mol/link/-view.tree/link.view.tree.d.ts","../../../../mol/link/link.view.d.ts","../../../../mol/link/link.view.css.d.ts","../../../../mol/image/-view.tree/image.view.tree.d.ts","../../../../mol/image/image.view.d.ts","../../../../mol/image/-css/image.view.css.d.ts","../../../../mol/link/iconed/-view.tree/iconed.view.tree.d.ts","../../../../mol/link/iconed/iconed.view.d.ts","../../../../mol/link/iconed/-css/iconed.view.css.d.ts","../../../../mol/speck/-css/speck.view.css.d.ts","../../../../mol/speck/-view.tree/speck.view.tree.d.ts","../../../../mol/keyboard/code/code.d.ts","../../../../mol/button/-view.tree/button.view.tree.d.ts","../../../../mol/button/button.view.d.ts","../../../../mol/button/-css/button.view.css.d.ts","../../../../mol/button/typed/-css/typed.view.css.d.ts","../../../../mol/button/typed/-view.tree/typed.view.tree.d.ts","../../../../mol/button/minor/-css/minor.view.css.d.ts","../../../../mol/button/minor/-view.tree/minor.view.tree.d.ts","../../../../mol/maybe/maybe.d.ts","../../../../mol/check/-css/check.css.d.ts","../../../../mol/check/-view.tree/check.view.tree.d.ts","../../../../mol/check/check.view.d.ts","../../../../mol/check/icon/-css/icon.view.css.d.ts","../../../../mol/check/icon/-view.tree/icon.view.tree.d.ts","../../../../mol/state/time/time.d.ts","../../../../mol/svg/-view.tree/svg.view.tree.d.ts","../../../../mol/svg/svg.view.d.ts","../../../../mol/svg/root/-css/root.view.css.d.ts","../../../../mol/svg/root/-view.tree/root.view.tree.d.ts","../../../../mol/svg/path/-view.tree/path.view.tree.d.ts","../../../../mol/icon/-css/icon.view.css.d.ts","../../../../mol/icon/-view.tree/icon.view.tree.d.ts","../../../../mol/icon/brightness/4/-view.tree/4.view.tree.d.ts","../../../../mol/locale/locale.d.ts","../../../../mol/lights/toggle/-view.tree/toggle.view.tree.d.ts","../../../../mol/lights/toggle/toggle.view.d.ts","../../../../mol/icon/upload/-view.tree/upload.view.tree.d.ts","../../../../mol/button/open/-view.tree/open.view.tree.d.ts","../../../../mol/button/open/open.view.d.ts","../../../../mol/button/open/-css/open.view.css.d.ts","../../../../mol/stack/-css/stack.view.css.d.ts","../../../../mol/stack/-view.tree/stack.view.tree.d.ts","../../../../mol/syntax2/syntax2.d.ts","../../../../mol/paragraph/-view.tree/paragraph.view.tree.d.ts","../../../../mol/paragraph/paragraph.view.d.ts","../../../../mol/paragraph/-css/paragraph.view.css.d.ts","../../../../mol/type/equals/equals.d.ts","../../../../mol/type/merge/merge.d.ts","../../../../mol/type/intersect/intersect.d.ts","../../../../mol/unicode/unicode.d.ts","../../../../mol/regexp/regexp.d.ts","../../../../mol/dimmer/-view.tree/dimmer.view.tree.d.ts","../../../../mol/dimmer/dimmer.view.d.ts","../../../../mol/dimmer/-css/dimmer.view.css.d.ts","../../../../mol/text/code/token/-view.tree/token.view.tree.d.ts","../../../../mol/text/code/token/token.view.css.d.ts","../../../../mol/syntax2/md/md.d.ts","../../../../mol/text/code/line/-view.tree/line.view.tree.d.ts","../../../../mol/text/code/line/line.view.d.ts","../../../../mol/text/code/line/line.view.css.d.ts","../../../../mol/support/css/css.d.ts","../../../../mol/list/-view.tree/list.view.tree.d.ts","../../../../mol/list/list.view.d.ts","../../../../mol/list/-css/list.view.css.d.ts","../../../../mol/blob/blob.d.ts","../../../../mol/icon/clipboard/-view.tree/clipboard.view.tree.d.ts","../../../../mol/icon/clipboard/outline/-view.tree/outline.view.tree.d.ts","../../../../mol/html/encode/encode.d.ts","../../../../mol/button/copy/-view.tree/copy.view.tree.d.ts","../../../../mol/button/copy/copy.view.d.ts","../../../../mol/text/code/-view.tree/code.view.tree.d.ts","../../../../mol/text/code/code.view.d.ts","../../../../mol/text/code/code.view.css.d.ts","../../../../mol/hotkey/-view.tree/hotkey.view.tree.d.ts","../../../../mol/hotkey/hotkey.view.d.ts","../../../../mol/string/-view.tree/string.view.tree.d.ts","../../../../mol/string/string.view.d.ts","../../../../mol/string/-css/string.view.css.d.ts","../../../../mol/textarea/-view.tree/textarea.view.tree.d.ts","../../../../mol/textarea/textarea.view.d.ts","../../../../mol/textarea/-css/textarea.view.css.d.ts","../../../../mol/page/-view.tree/page.view.tree.d.ts","../../../../mol/page/page.view.css.d.ts","../../lib/three/view/-view.tree/view.view.tree.d.ts","../../lib/three/view/view.view.css.d.ts","../../../../mol/icon/eye/-view.tree/eye.view.tree.d.ts","../../../../mol/icon/eye/check/-view.tree/check.view.tree.d.ts","../../../../mol/icon/tick/-view.tree/tick.view.tree.d.ts","../../../../mol/check/box/-css/box.view.css.d.ts","../../../../mol/check/box/-view.tree/box.view.tree.d.ts","../../../../mol/pop/-view.tree/pop.view.tree.d.ts","../../../../mol/pop/pop.view.d.ts","../../../../mol/pop/-css/pop.view.css.d.ts","../../../../mol/pick/-view.tree/pick.view.tree.d.ts","../../../../mol/pick/pick.view.d.ts","../../../../mol/pick/-css/pick.view.css.d.ts","../../../../mol/icon/minus/-view.tree/minus.view.tree.d.ts","../../../../mol/icon/plus/-view.tree/plus.view.tree.d.ts","../../../../mol/number/-css/number.css.d.ts","../../../../mol/number/-view.tree/number.view.tree.d.ts","../../../../mol/number/number.view.d.ts","../../../../mol/icon/image/-view.tree/image.view.tree.d.ts","../../../../mol/icon/image/filter/-view.tree/filter.view.tree.d.ts","../../../../mol/icon/image/filter/center/focus/-view.tree/focus.view.tree.d.ts","../../../../mol/icon/magnify/-view.tree/magnify.view.tree.d.ts","../../../../mol/icon/magnify/plus/-view.tree/plus.view.tree.d.ts","../../../../mol/icon/magnify/plus/outline/-view.tree/outline.view.tree.d.ts","../../../../mol/icon/magnify/minus/-view.tree/minus.view.tree.d.ts","../../../../mol/icon/magnify/minus/outline/-view.tree/outline.view.tree.d.ts","../../../../mol/check/list/-view.tree/list.view.tree.d.ts","../../../../mol/check/list/list.view.d.ts","../../../../mol/check/list/-css/list.view.css.d.ts","../../../../mol/state/session/session.d.ts","../../../../mol/switch/-view.tree/switch.view.tree.d.ts","../../../../mol/switch/switch.view.d.ts","../../../../mol/card/-view.tree/card.view.tree.d.ts","../../../../mol/card/card.view.d.ts","../../../../mol/card/-css/card.view.css.d.ts","../../player/-css/player.view.css.d.ts","../../player/-view.tree/player.view.tree.d.ts","../../player/player.view.css.d.ts","../../../../mol/float/-css/float.view.css.d.ts","../../../../mol/float/-view.tree/float.view.tree.d.ts","../../../../mol/icon/chevron/-view.tree/chevron.view.tree.d.ts","../../../../mol/check/expand/-view.tree/expand.view.tree.d.ts","../../../../mol/check/expand/expand.view.d.ts","../../../../mol/check/expand/-css/expand.view.css.d.ts","../../../../mol/grid/-view.tree/grid.view.tree.d.ts","../../../../mol/grid/grid.view.d.ts","../../../../mol/grid/-css/grid.view.css.d.ts","../../../../mol/promise/promise/promise.d.ts","../../../../mol/wait/timeout/timeout.d.ts","../../../../mol/embed/native/-view.tree/native.view.tree.d.ts","../../../../mol/embed/native/native.view.d.ts","../../../../mol/embed/native/-css/native.view.css.d.ts","../../../../mol/icon/youtube/-view.tree/youtube.view.tree.d.ts","../../../../mol/frame/-view.tree/frame.view.tree.d.ts","../../../../mol/frame/frame.view.d.ts","../../../../mol/frame/frame.view.css.d.ts","../../../../mol/embed/service/-view.tree/service.view.tree.d.ts","../../../../mol/embed/service/service.view.d.ts","../../../../mol/embed/service/-css/service.view.css.d.ts","../../../../mol/embed/youtube/-view.tree/youtube.view.tree.d.ts","../../../../mol/embed/youtube/youtube.view.d.ts","../../../../mol/embed/rutube/-view.tree/rutube.view.tree.d.ts","../../../../mol/embed/rutube/rutube.view.d.ts","../../../../mol/embed/any/-view.tree/any.view.tree.d.ts","../../../../mol/embed/any/any.view.d.ts","../../../../mol/expander/-view.tree/expander.view.tree.d.ts","../../../../mol/expander/expander.view.d.ts","../../../../mol/expander/-css/expander.view.css.d.ts","../../../../mol/text/text/-view.tree/text.view.tree.d.ts","../../../../mol/text/text/text.view.d.ts","../../../../mol/text/text/-css/text.view.css.d.ts","../../../../mol/text/list/-css/list.view.css.d.ts","../../../../mol/text/list/-view.tree/list.view.tree.d.ts","../-view.tree/app.view.tree.d.ts","../app.view.css.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACdA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACTA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpCA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzBA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1BA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjBA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;AACA;ACJA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;ACHA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClCA;AACA;AACA;AACA;ACHA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChCA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzJA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;ACFA;AACA;AACA;AACA;ACHA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvEA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACZA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxBA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACXA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrBA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACTA;AACA;AACA;ACFA;AACA;AACA;AACA;ACHA;AACA;AACA;ACFA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACdA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;ACFA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACZA;AACA;AACA;ACFA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACTA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;ACHA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACZA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACZA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;ACFA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACTA;AACA;AACA;ACFA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrBA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5CA;AACA;AACA;ACFA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACZA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChCA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7BA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClFA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpBA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxBA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpDA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACZA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/BA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;ACFA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpXA;AACA;AACA;ACFA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7CA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACXA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtCA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzFA;AACA;AACA;ACFA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7HA;AACA;AACA","sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]} \ No newline at end of file +{"version":3,"sources":["../../../../mam.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sourcesContent":[null]} \ No newline at end of file diff --git a/node.deps.json b/node.deps.json index 0171d82..2f1fa4d 100644 --- a/node.deps.json +++ b/node.deps.json @@ -1 +1 @@ -{"files":["mam.ts","LICENSE","README.md","mam.jam.js","tsfmt.json","package.json","tsconfig.json","lang.lang.tree","meta.lang.tree","sandbox.config.json","optimade/optimade.meta.tree","optimade/cifplayer/CNAME","optimade/cifplayer/LICENSE","optimade/cifplayer/README.md","optimade/cifplayer/CITATION.cff","optimade/cifplayer/package.json","mol/CNAME","mol/LICENSE","mol/readme.md","mol/mol.meta.tree","mol/CONTRIBUTING.md","mol/CODE_OF_CONDUCT.md","mol/view/readme.md","mol/view/view.lang.tree","mol/ambient/readme.md","mol/ambient/ambient.ts","mol/delegate/delegate.ts","mol/owning/owning.ts","mol/fail/fail.ts","mol/fail/hidden/hidden.ts","mol/type/README.md","mol/type/writable/writable.ts","mol/func/name/name.ts","mol/object2/object2.ts","mol/object/object.ts","mol/object/readme.md","mol/window/window.node.ts","mol/wire/cursor/cursor.ts","mol/wire/pub/pub.ts","mol/wire/sub/sub.ts","mol/wire/wire.ts","mol/wire/README.md","mol/dev/format/format.ts","mol/wire/pub/sub/sub.ts","mol/wire/pub/sub/README.md","mol/after/tick/tick.ts","mol/promise/like/like.ts","mol/wire/fiber/fiber.ts","mol/wire/fiber/readme.md","mol/guid/guid.ts","mol/key/key.ts","mol/key/README.md","mol/after/timeout/readme.md","mol/after/timeout/timeout.ts","mol/after/frame/frame.node.ts","mol/compare/deep/deep.ts","mol/compare/deep/README.md","mol/log3/log3.ts","mol/span/span.ts","mol/tree2/to/string/string.ts","mol/tree2/tree2.ts","mol/tree2/readme.md","mol/error/syntax/syntax.ts","mol/tree2/from/string/string.ts","mol/tree2/from/json/json.ts","mol/term/readme.md","mol/term/color/color.ts","mol/log3/log3.node.ts","mol/wire/task/task.ts","mol/wire/method/README.md","mol/wire/method/method.ts","mol/type/tail/tail.ts","mol/type/foot/foot.ts","mol/fail/catch/catch.ts","mol/fail/log/log.ts","mol/wire/atom/atom.ts","mol/wire/solo/solo.ts","mol/wire/solo/readme.md","mol/wire/plex/plex.ts","mol/mem/mem.ts","mol/dom/context/context.ts","node/node.ts","node/node.node.ts","mol/error/mix/mix.ts","mol/env/env.ts","mol/env/env.node.ts","mol/wire/sync/sync.ts","mol/wire/sync/README.md","mol/run/run.node.ts","mol/exec/exec.node.ts","mol/dom/context/context.node.ts","mol/view/selection/selection.ts","mol/wrapper/wrapper.ts","mol/memo/memo.ts","mol/dom/dom.ts","mol/dom/qname/qname.ts","mol/wire/probe/probe.ts","mol/wire/watch/watch.ts","mol/const/const.ts","mol/const/readme.md","mol/wire/solid/solid.ts","mol/dom/render/attributes/attributes.ts","mol/dom/render/events/events.ts","mol/dom/render/styles/styles.ts","mol/dom/render/children/children.ts","mol/dom/render/fields/fields.ts","mol/wire/async/async.ts","mol/wire/async/README.md","mol/type/keys/extract/extract.ts","mol/type/pick/pick.ts","mol/style/readme.md","mol/style/attach/attach.ts","mol/decor/decor.ts","mol/style/unit/unit.ts","mol/style/func/func.ts","mol/type/override/override.ts","mol/style/properties/properties.ts","mol/style/prop/prop.ts","mol/style/prop/readme.md","mol/theme/theme.ts","mol/theme/-css/theme.css.ts","mol/theme/theme.css","mol/gap/gap.ts","mol/gap/-css/gap.css.ts","mol/gap/gap.css","mol/view/view/view.ts","mol/view/view/-css/view.css.ts","mol/view/view/view.css","mol/plugin/plugin.ts","mol/plugin/readme.md","mol/ghost/-view.tree/ghost.view.tree.js","mol/ghost/ghost.view.tree","mol/ghost/readme.md","mol/ghost/-view.tree/ghost.view.tree.js.map","mol/ghost/-view.tree/ghost.view.tree.d.ts","mol/ghost/-view.tree/ghost.view.tree.d.ts.map","mol/ghost/-view.tree/ghost.view.tree.locale=en.json","mol/ghost/ghost.view.ts","mol/drop/-view.tree/drop.view.tree.js","mol/drop/drop.view.tree","mol/drop/-view.tree/drop.view.tree.js.map","mol/drop/-view.tree/drop.view.tree.d.ts","mol/drop/-view.tree/drop.view.tree.d.ts.map","mol/drop/-view.tree/drop.view.tree.locale=en.json","mol/drop/drop.view.ts","mol/theme/auto/-view.tree/auto.view.tree.js","mol/theme/auto/auto.view.tree","mol/state/arg/arg.ts","mol/action/action.ts","mol/state/arg/readme.md","mol/state/arg/arg.node.ts","mol/media/media.ts","mol/mem/persist/persist.ts","mol/mem/cached/cached.ts","mol/storage/storage.ts","mol/state/local/local.ts","mol/lock/lock.ts","mol/compare/array/array.ts","mol/charset/encoding/encoding.ts","mol/charset/decode/decode.ts","mol/charset/encode/encode.ts","mol/file/transaction/transaction.ts","mol/file/transaction/transaction.node.ts","mol/file/base/base.ts","mol/file/file.ts","mol/file/file.node.ts","mol/state/local/local.node.ts","mol/lights/lights.ts","mol/lights/readme.md","mol/theme/auto/readme.md","mol/theme/auto/-view.tree/auto.view.tree.js.map","mol/theme/auto/-view.tree/auto.view.tree.d.ts","mol/theme/auto/-view.tree/auto.view.tree.d.ts.map","mol/theme/auto/-view.tree/auto.view.tree.locale=en.json","mol/theme/auto/auto.view.ts","mol/scroll/-view.tree/scroll.view.tree.js","mol/scroll/scroll.view.tree","mol/dom/listener/listener.ts","mol/print/print.ts","mol/style/pseudo/class.ts","mol/style/pseudo/element.ts","mol/type/error/error.ts","mol/style/guard/guard.ts","mol/style/sheet/sheet.ts","mol/style/define/define.ts","mol/scroll/readme.md","mol/scroll/-view.tree/scroll.view.tree.js.map","mol/scroll/-view.tree/scroll.view.tree.d.ts","mol/scroll/-view.tree/scroll.view.tree.d.ts.map","mol/scroll/-view.tree/scroll.view.tree.locale=en.json","mol/scroll/scroll.view.ts","mol/scroll/scroll.view.css.ts","mol/book2/-view.tree/book2.view.tree.js","mol/book2/book2.view.tree","mol/layer/layer.ts","mol/layer/-css/layer.css.ts","mol/layer/layer.css","mol/type/enforce/enforce.ts","mol/book2/readme.md","mol/book2/-view.tree/book2.view.tree.js.map","mol/book2/-view.tree/book2.view.tree.d.ts","mol/book2/-view.tree/book2.view.tree.d.ts.map","mol/book2/-view.tree/book2.view.tree.locale=en.json","mol/book2/book2.view.ts","mol/book2/-css/book2.view.css.ts","mol/book2/book2.view.css","mol/link/-view.tree/link.view.tree.js","mol/link/link.view.tree","mol/link/readme.md","mol/link/-view.tree/link.view.tree.js.map","mol/link/-view.tree/link.view.tree.d.ts","mol/link/-view.tree/link.view.tree.d.ts.map","mol/link/-view.tree/link.view.tree.locale=en.json","mol/link/link.view.ts","mol/link/link.view.css.ts","mol/image/-view.tree/image.view.tree.js","mol/image/image.view.tree","mol/image/-view.tree/image.view.tree.js.map","mol/image/-view.tree/image.view.tree.d.ts","mol/image/-view.tree/image.view.tree.d.ts.map","mol/image/-view.tree/image.view.tree.locale=en.json","mol/image/image.view.ts","mol/image/-css/image.view.css.ts","mol/image/image.view.css","mol/link/iconed/-view.tree/iconed.view.tree.js","mol/link/iconed/iconed.view.tree","mol/link/iconed/readme.md","mol/link/iconed/-view.tree/iconed.view.tree.js.map","mol/link/iconed/-view.tree/iconed.view.tree.d.ts","mol/link/iconed/-view.tree/iconed.view.tree.d.ts.map","mol/link/iconed/-view.tree/iconed.view.tree.locale=en.json","mol/link/iconed/iconed.view.ts","mol/link/iconed/-css/iconed.view.css.ts","mol/link/iconed/iconed.view.css","mol/speck/-view.tree/speck.view.tree.js","mol/speck/speck.view.tree","mol/speck/readme.md","mol/speck/-css/speck.view.css.ts","mol/speck/-view.tree/speck.view.tree.js.map","mol/speck/-view.tree/speck.view.tree.d.ts","mol/speck/-view.tree/speck.view.tree.d.ts.map","mol/speck/-view.tree/speck.view.tree.locale=en.json","mol/speck/speck.view.css","mol/button/-view.tree/button.view.tree.js","mol/button/button.view.tree","mol/keyboard/code/code.ts","mol/button/readme.md","mol/button/-view.tree/button.view.tree.js.map","mol/button/-view.tree/button.view.tree.d.ts","mol/button/-view.tree/button.view.tree.d.ts.map","mol/button/-view.tree/button.view.tree.locale=en.json","mol/button/button.view.ts","mol/button/-css/button.view.css.ts","mol/button/button.view.css","mol/button/typed/-view.tree/typed.view.tree.js","mol/button/typed/typed.view.tree","mol/button/typed/-css/typed.view.css.ts","mol/button/typed/-view.tree/typed.view.tree.js.map","mol/button/typed/-view.tree/typed.view.tree.d.ts","mol/button/typed/-view.tree/typed.view.tree.d.ts.map","mol/button/typed/-view.tree/typed.view.tree.locale=en.json","mol/button/typed/typed.view.css","mol/button/minor/-view.tree/minor.view.tree.js","mol/button/minor/minor.view.tree","mol/button/minor/-css/minor.view.css.ts","mol/button/minor/-view.tree/minor.view.tree.js.map","mol/button/minor/-view.tree/minor.view.tree.d.ts","mol/button/minor/-view.tree/minor.view.tree.d.ts.map","mol/button/minor/-view.tree/minor.view.tree.locale=en.json","mol/button/minor/minor.view.css","mol/check/-view.tree/check.view.tree.js","mol/check/check.view.tree","mol/maybe/maybe.ts","mol/check/-css/check.css.ts","mol/check/check.css","mol/check/readme.md","mol/check/-view.tree/check.view.tree.js.map","mol/check/-view.tree/check.view.tree.d.ts","mol/check/-view.tree/check.view.tree.d.ts.map","mol/check/-view.tree/check.view.tree.locale=en.json","mol/check/check.view.ts","mol/check/icon/-view.tree/icon.view.tree.js","mol/check/icon/icon.view.tree","mol/check/icon/-css/icon.view.css.ts","mol/check/icon/-view.tree/icon.view.tree.js.map","mol/check/icon/-view.tree/icon.view.tree.d.ts","mol/check/icon/-view.tree/icon.view.tree.d.ts.map","mol/check/icon/-view.tree/icon.view.tree.locale=en.json","mol/check/icon/icon.view.css","mol/svg/-view.tree/svg.view.tree.js","mol/svg/svg.view.tree","mol/state/time/time.ts","mol/state/time/readme.md","mol/svg/readme.md","mol/svg/-view.tree/svg.view.tree.js.map","mol/svg/-view.tree/svg.view.tree.d.ts","mol/svg/-view.tree/svg.view.tree.d.ts.map","mol/svg/-view.tree/svg.view.tree.locale=en.json","mol/svg/svg.view.ts","mol/svg/root/-view.tree/root.view.tree.js","mol/svg/root/root.view.tree","mol/svg/root/-css/root.view.css.ts","mol/svg/root/-view.tree/root.view.tree.js.map","mol/svg/root/-view.tree/root.view.tree.d.ts","mol/svg/root/-view.tree/root.view.tree.d.ts.map","mol/svg/root/-view.tree/root.view.tree.locale=en.json","mol/svg/root/root.view.css","mol/svg/path/-view.tree/path.view.tree.js","mol/svg/path/-view.tree/path.view.tree.js.map","mol/svg/path/-view.tree/path.view.tree.d.ts","mol/svg/path/-view.tree/path.view.tree.d.ts.map","mol/svg/path/-view.tree/path.view.tree.locale=en.json","mol/svg/path/path.view.tree","mol/icon/-view.tree/icon.view.tree.js","mol/icon/icon.view.tree","mol/icon/README.md","mol/icon/-css/icon.view.css.ts","mol/icon/icon.view.css","mol/icon/-view.tree/icon.view.tree.js.map","mol/icon/-view.tree/icon.view.tree.d.ts","mol/icon/-view.tree/icon.view.tree.d.ts.map","mol/icon/-view.tree/icon.view.tree.locale=en.json","mol/icon/brightness/4/-view.tree/4.view.tree.js","mol/icon/brightness/4/-view.tree/4.view.tree.js.map","mol/icon/brightness/4/-view.tree/4.view.tree.d.ts","mol/icon/brightness/4/-view.tree/4.view.tree.d.ts.map","mol/icon/brightness/4/-view.tree/4.view.tree.locale=en.json","mol/icon/brightness/4/4.view.tree","mol/locale/locale.ts","mol/locale/readme.md","mol/lights/toggle/-view.tree/toggle.view.tree.js","mol/lights/toggle/toggle.view.tree","mol/lights/toggle/-view.tree/toggle.view.tree.js.map","mol/lights/toggle/-view.tree/toggle.view.tree.d.ts","mol/lights/toggle/-view.tree/toggle.view.tree.d.ts.map","mol/lights/toggle/-view.tree/toggle.view.tree.locale=en.json","mol/lights/toggle/toggle.view.ts","mol/lights/toggle/toggle.locale=ru.json","mol/lights/toggle/toggle.locale=uk.json","mol/icon/upload/-view.tree/upload.view.tree.js","mol/icon/upload/-view.tree/upload.view.tree.js.map","mol/icon/upload/-view.tree/upload.view.tree.d.ts","mol/icon/upload/-view.tree/upload.view.tree.d.ts.map","mol/icon/upload/-view.tree/upload.view.tree.locale=en.json","mol/icon/upload/upload.view.tree","mol/button/open/-view.tree/open.view.tree.js","mol/button/open/open.view.tree","mol/button/open/-view.tree/open.view.tree.js.map","mol/button/open/-view.tree/open.view.tree.d.ts","mol/button/open/-view.tree/open.view.tree.d.ts.map","mol/button/open/-view.tree/open.view.tree.locale=en.json","mol/button/open/open.view.ts","mol/button/open/-css/open.view.css.ts","mol/button/open/open.view.css","mol/stack/-view.tree/stack.view.tree.js","mol/stack/stack.view.tree","mol/stack/readme.md","mol/stack/-css/stack.view.css.ts","mol/stack/-view.tree/stack.view.tree.js.map","mol/stack/-view.tree/stack.view.tree.d.ts","mol/stack/-view.tree/stack.view.tree.d.ts.map","mol/stack/-view.tree/stack.view.tree.locale=en.json","mol/stack/stack.view.css","mol/syntax2/readme.md","mol/syntax2/syntax2.ts","mol/paragraph/-view.tree/paragraph.view.tree.js","mol/paragraph/paragraph.view.tree","mol/paragraph/-view.tree/paragraph.view.tree.js.map","mol/paragraph/-view.tree/paragraph.view.tree.d.ts","mol/paragraph/-view.tree/paragraph.view.tree.d.ts.map","mol/paragraph/-view.tree/paragraph.view.tree.locale=en.json","mol/paragraph/paragraph.view.ts","mol/paragraph/-css/paragraph.view.css.ts","mol/paragraph/paragraph.view.css","mol/dimmer/-view.tree/dimmer.view.tree.js","mol/dimmer/dimmer.view.tree","mol/type/equals/equals.ts","mol/type/merge/merge.ts","mol/type/intersect/intersect.ts","mol/unicode/unicode.ts","mol/regexp/README.md","mol/regexp/regexp.ts","mol/dimmer/readme.md","mol/dimmer/-view.tree/dimmer.view.tree.js.map","mol/dimmer/-view.tree/dimmer.view.tree.d.ts","mol/dimmer/-view.tree/dimmer.view.tree.d.ts.map","mol/dimmer/-view.tree/dimmer.view.tree.locale=en.json","mol/dimmer/dimmer.view.ts","mol/dimmer/-css/dimmer.view.css.ts","mol/dimmer/dimmer.view.css","mol/text/code/token/-view.tree/token.view.tree.js","mol/text/code/token/-view.tree/token.view.tree.js.map","mol/text/code/token/-view.tree/token.view.tree.d.ts","mol/text/code/token/-view.tree/token.view.tree.d.ts.map","mol/text/code/token/-view.tree/token.view.tree.locale=en.json","mol/text/code/token/token.view.tree","mol/text/code/token/token.view.css.ts","mol/text/code/line/-view.tree/line.view.tree.js","mol/text/code/line/line.view.tree","mol/syntax2/md/md.ts","mol/text/code/line/-view.tree/line.view.tree.js.map","mol/text/code/line/-view.tree/line.view.tree.d.ts","mol/text/code/line/-view.tree/line.view.tree.d.ts.map","mol/text/code/line/-view.tree/line.view.tree.locale=en.json","mol/text/code/line/line.view.ts","mol/text/code/line/line.view.css.ts","mol/list/-view.tree/list.view.tree.js","mol/list/list.view.tree","mol/support/css/css.ts","mol/list/readme.md","mol/list/-view.tree/list.view.tree.js.map","mol/list/-view.tree/list.view.tree.d.ts","mol/list/-view.tree/list.view.tree.d.ts.map","mol/list/-view.tree/list.view.tree.locale=en.json","mol/list/list.view.ts","mol/list/-css/list.view.css.ts","mol/list/list.view.css","mol/blob/blob.ts","mol/icon/clipboard/-view.tree/clipboard.view.tree.js","mol/icon/clipboard/-view.tree/clipboard.view.tree.js.map","mol/icon/clipboard/-view.tree/clipboard.view.tree.d.ts","mol/icon/clipboard/-view.tree/clipboard.view.tree.d.ts.map","mol/icon/clipboard/-view.tree/clipboard.view.tree.locale=en.json","mol/icon/clipboard/clipboard.view.tree","mol/icon/clipboard/outline/-view.tree/outline.view.tree.js","mol/icon/clipboard/outline/-view.tree/outline.view.tree.js.map","mol/icon/clipboard/outline/-view.tree/outline.view.tree.d.ts","mol/icon/clipboard/outline/-view.tree/outline.view.tree.d.ts.map","mol/icon/clipboard/outline/-view.tree/outline.view.tree.locale=en.json","mol/icon/clipboard/outline/outline.view.tree","mol/button/copy/-view.tree/copy.view.tree.js","mol/button/copy/copy.view.tree","mol/html/encode/encode.ts","mol/button/copy/-view.tree/copy.view.tree.js.map","mol/button/copy/-view.tree/copy.view.tree.d.ts","mol/button/copy/-view.tree/copy.view.tree.d.ts.map","mol/button/copy/-view.tree/copy.view.tree.locale=en.json","mol/button/copy/copy.view.ts","mol/text/code/-view.tree/code.view.tree.js","mol/text/code/code.view.tree","mol/text/code/-view.tree/code.view.tree.js.map","mol/text/code/-view.tree/code.view.tree.d.ts","mol/text/code/-view.tree/code.view.tree.d.ts.map","mol/text/code/-view.tree/code.view.tree.locale=en.json","mol/text/code/code.view.ts","mol/text/code/code.view.css.ts","mol/text/code/code.locale=ru.json","mol/text/code/code.locale=uk.json","mol/hotkey/-view.tree/hotkey.view.tree.js","mol/hotkey/hotkey.view.tree","mol/hotkey/readme.md","mol/hotkey/-view.tree/hotkey.view.tree.js.map","mol/hotkey/-view.tree/hotkey.view.tree.d.ts","mol/hotkey/-view.tree/hotkey.view.tree.d.ts.map","mol/hotkey/-view.tree/hotkey.view.tree.locale=en.json","mol/hotkey/hotkey.view.ts","mol/string/-view.tree/string.view.tree.js","mol/string/string.view.tree","mol/string/readme.md","mol/string/-view.tree/string.view.tree.js.map","mol/string/-view.tree/string.view.tree.d.ts","mol/string/-view.tree/string.view.tree.d.ts.map","mol/string/-view.tree/string.view.tree.locale=en.json","mol/string/string.view.ts","mol/string/-css/string.view.css.ts","mol/string/string.view.css","mol/textarea/-view.tree/textarea.view.tree.js","mol/textarea/textarea.view.tree","mol/textarea/readme.md","mol/textarea/-view.tree/textarea.view.tree.js.map","mol/textarea/-view.tree/textarea.view.tree.d.ts","mol/textarea/-view.tree/textarea.view.tree.d.ts.map","mol/textarea/-view.tree/textarea.view.tree.locale=en.json","mol/textarea/textarea.view.ts","mol/textarea/-css/textarea.view.css.ts","mol/textarea/textarea.view.css","mol/page/-view.tree/page.view.tree.js","mol/page/readme.md","mol/page/-view.tree/page.view.tree.js.map","mol/page/-view.tree/page.view.tree.d.ts","mol/page/-view.tree/page.view.tree.d.ts.map","mol/page/-view.tree/page.view.tree.locale=en.json","mol/page/page.view.tree","mol/page/page.view.css.ts","optimade/cifplayer/lib/three/_three.js","optimade/cifplayer/lib/three/three.meta.tree","optimade/cifplayer/lib/three/view/-view.tree/view.view.tree.js","optimade/cifplayer/lib/three/view/-view.tree/view.view.tree.js.map","optimade/cifplayer/lib/three/view/-view.tree/view.view.tree.d.ts","optimade/cifplayer/lib/three/view/-view.tree/view.view.tree.d.ts.map","optimade/cifplayer/lib/three/view/-view.tree/view.view.tree.locale=en.json","optimade/cifplayer/lib/three/view/view.view.tree","optimade/cifplayer/lib/three/view/view.view.css.ts","mol/icon/eye/-view.tree/eye.view.tree.js","mol/icon/eye/-view.tree/eye.view.tree.js.map","mol/icon/eye/-view.tree/eye.view.tree.d.ts","mol/icon/eye/-view.tree/eye.view.tree.d.ts.map","mol/icon/eye/-view.tree/eye.view.tree.locale=en.json","mol/icon/eye/eye.view.tree","mol/icon/eye/check/-view.tree/check.view.tree.js","mol/icon/eye/check/-view.tree/check.view.tree.js.map","mol/icon/eye/check/-view.tree/check.view.tree.d.ts","mol/icon/eye/check/-view.tree/check.view.tree.d.ts.map","mol/icon/eye/check/-view.tree/check.view.tree.locale=en.json","mol/icon/eye/check/check.view.tree","mol/icon/tick/-view.tree/tick.view.tree.js","mol/icon/tick/-view.tree/tick.view.tree.js.map","mol/icon/tick/-view.tree/tick.view.tree.d.ts","mol/icon/tick/-view.tree/tick.view.tree.d.ts.map","mol/icon/tick/-view.tree/tick.view.tree.locale=en.json","mol/icon/tick/tick.view.tree","mol/check/box/-view.tree/box.view.tree.js","mol/check/box/box.view.tree","mol/check/box/-css/box.view.css.ts","mol/check/box/-view.tree/box.view.tree.js.map","mol/check/box/-view.tree/box.view.tree.d.ts","mol/check/box/-view.tree/box.view.tree.d.ts.map","mol/check/box/-view.tree/box.view.tree.locale=en.json","mol/check/box/box.view.css","mol/pop/-view.tree/pop.view.tree.js","mol/pop/pop.view.tree","mol/pop/readme.md","mol/pop/-view.tree/pop.view.tree.js.map","mol/pop/-view.tree/pop.view.tree.d.ts","mol/pop/-view.tree/pop.view.tree.d.ts.map","mol/pop/-view.tree/pop.view.tree.locale=en.json","mol/pop/pop.view.ts","mol/pop/-css/pop.view.css.ts","mol/pop/pop.view.css","mol/pick/-view.tree/pick.view.tree.js","mol/pick/pick.view.tree","mol/pick/readme.md","mol/pick/-view.tree/pick.view.tree.js.map","mol/pick/-view.tree/pick.view.tree.d.ts","mol/pick/-view.tree/pick.view.tree.d.ts.map","mol/pick/-view.tree/pick.view.tree.locale=en.json","mol/pick/pick.view.ts","mol/pick/-css/pick.view.css.ts","mol/pick/pick.view.css","mol/icon/minus/-view.tree/minus.view.tree.js","mol/icon/minus/-view.tree/minus.view.tree.js.map","mol/icon/minus/-view.tree/minus.view.tree.d.ts","mol/icon/minus/-view.tree/minus.view.tree.d.ts.map","mol/icon/minus/-view.tree/minus.view.tree.locale=en.json","mol/icon/minus/minus.view.tree","mol/icon/plus/-view.tree/plus.view.tree.js","mol/icon/plus/-view.tree/plus.view.tree.js.map","mol/icon/plus/-view.tree/plus.view.tree.d.ts","mol/icon/plus/-view.tree/plus.view.tree.d.ts.map","mol/icon/plus/-view.tree/plus.view.tree.locale=en.json","mol/icon/plus/plus.view.tree","mol/number/-view.tree/number.view.tree.js","mol/number/number.view.tree","mol/number/readme.md","mol/number/-css/number.css.ts","mol/number/number.css","mol/number/-view.tree/number.view.tree.js.map","mol/number/-view.tree/number.view.tree.d.ts","mol/number/-view.tree/number.view.tree.d.ts.map","mol/number/-view.tree/number.view.tree.locale=en.json","mol/number/number.view.ts","mol/icon/image/-view.tree/image.view.tree.js","mol/icon/image/-view.tree/image.view.tree.js.map","mol/icon/image/-view.tree/image.view.tree.d.ts","mol/icon/image/-view.tree/image.view.tree.d.ts.map","mol/icon/image/-view.tree/image.view.tree.locale=en.json","mol/icon/image/image.view.tree","mol/icon/image/filter/-view.tree/filter.view.tree.js","mol/icon/image/filter/-view.tree/filter.view.tree.js.map","mol/icon/image/filter/-view.tree/filter.view.tree.d.ts","mol/icon/image/filter/-view.tree/filter.view.tree.d.ts.map","mol/icon/image/filter/-view.tree/filter.view.tree.locale=en.json","mol/icon/image/filter/filter.view.tree","mol/icon/image/filter/center/focus/-view.tree/focus.view.tree.js","mol/icon/image/filter/center/focus/-view.tree/focus.view.tree.js.map","mol/icon/image/filter/center/focus/-view.tree/focus.view.tree.d.ts","mol/icon/image/filter/center/focus/-view.tree/focus.view.tree.d.ts.map","mol/icon/image/filter/center/focus/-view.tree/focus.view.tree.locale=en.json","mol/icon/image/filter/center/focus/focus.view.tree","mol/icon/magnify/-view.tree/magnify.view.tree.js","mol/icon/magnify/-view.tree/magnify.view.tree.js.map","mol/icon/magnify/-view.tree/magnify.view.tree.d.ts","mol/icon/magnify/-view.tree/magnify.view.tree.d.ts.map","mol/icon/magnify/-view.tree/magnify.view.tree.locale=en.json","mol/icon/magnify/magnify.view.tree","mol/icon/magnify/plus/-view.tree/plus.view.tree.js","mol/icon/magnify/plus/-view.tree/plus.view.tree.js.map","mol/icon/magnify/plus/-view.tree/plus.view.tree.d.ts","mol/icon/magnify/plus/-view.tree/plus.view.tree.d.ts.map","mol/icon/magnify/plus/-view.tree/plus.view.tree.locale=en.json","mol/icon/magnify/plus/plus.view.tree","mol/icon/magnify/plus/outline/-view.tree/outline.view.tree.js","mol/icon/magnify/plus/outline/-view.tree/outline.view.tree.js.map","mol/icon/magnify/plus/outline/-view.tree/outline.view.tree.d.ts","mol/icon/magnify/plus/outline/-view.tree/outline.view.tree.d.ts.map","mol/icon/magnify/plus/outline/-view.tree/outline.view.tree.locale=en.json","mol/icon/magnify/plus/outline/outline.view.tree","mol/icon/magnify/minus/-view.tree/minus.view.tree.js","mol/icon/magnify/minus/-view.tree/minus.view.tree.js.map","mol/icon/magnify/minus/-view.tree/minus.view.tree.d.ts","mol/icon/magnify/minus/-view.tree/minus.view.tree.d.ts.map","mol/icon/magnify/minus/-view.tree/minus.view.tree.locale=en.json","mol/icon/magnify/minus/minus.view.tree","mol/icon/magnify/minus/outline/-view.tree/outline.view.tree.js","mol/icon/magnify/minus/outline/-view.tree/outline.view.tree.js.map","mol/icon/magnify/minus/outline/-view.tree/outline.view.tree.d.ts","mol/icon/magnify/minus/outline/-view.tree/outline.view.tree.d.ts.map","mol/icon/magnify/minus/outline/-view.tree/outline.view.tree.locale=en.json","mol/icon/magnify/minus/outline/outline.view.tree","mol/check/list/-view.tree/list.view.tree.js","mol/check/list/list.view.tree","mol/check/list/-view.tree/list.view.tree.js.map","mol/check/list/-view.tree/list.view.tree.d.ts","mol/check/list/-view.tree/list.view.tree.d.ts.map","mol/check/list/-view.tree/list.view.tree.locale=en.json","mol/check/list/list.view.ts","mol/check/list/-css/list.view.css.ts","mol/check/list/list.view.css","mol/switch/-view.tree/switch.view.tree.js","mol/switch/switch.view.tree","mol/state/session/session.ts","mol/switch/readme.md","mol/switch/-view.tree/switch.view.tree.js.map","mol/switch/-view.tree/switch.view.tree.d.ts","mol/switch/-view.tree/switch.view.tree.d.ts.map","mol/switch/-view.tree/switch.view.tree.locale=en.json","mol/switch/switch.view.ts","mol/card/-view.tree/card.view.tree.js","mol/card/card.view.tree","mol/card/readme.md","mol/card/-view.tree/card.view.tree.js.map","mol/card/-view.tree/card.view.tree.d.ts","mol/card/-view.tree/card.view.tree.d.ts.map","mol/card/-view.tree/card.view.tree.locale=en.json","mol/card/card.view.ts","mol/card/-css/card.view.css.ts","mol/card/card.view.css","optimade/cifplayer/player/-view.tree/player.view.tree.js","optimade/cifplayer/player/player.view.tree","optimade/cifplayer/player/index.html","optimade/cifplayer/player/-css/player.view.css.ts","optimade/cifplayer/player/-view.tree/player.view.tree.js.map","optimade/cifplayer/player/-view.tree/player.view.tree.d.ts","optimade/cifplayer/player/-view.tree/player.view.tree.d.ts.map","optimade/cifplayer/player/-view.tree/player.view.tree.locale=en.json","optimade/cifplayer/player/player.view.css","optimade/cifplayer/player/player.meta.tree","optimade/cifplayer/player/player.view.css.ts","mol/float/-view.tree/float.view.tree.js","mol/float/float.view.tree","mol/float/-css/float.view.css.ts","mol/float/-view.tree/float.view.tree.js.map","mol/float/-view.tree/float.view.tree.d.ts","mol/float/-view.tree/float.view.tree.d.ts.map","mol/float/-view.tree/float.view.tree.locale=en.json","mol/float/float.view.css","mol/icon/chevron/-view.tree/chevron.view.tree.js","mol/icon/chevron/-view.tree/chevron.view.tree.js.map","mol/icon/chevron/-view.tree/chevron.view.tree.d.ts","mol/icon/chevron/-view.tree/chevron.view.tree.d.ts.map","mol/icon/chevron/-view.tree/chevron.view.tree.locale=en.json","mol/icon/chevron/chevron.view.tree","mol/check/expand/-view.tree/expand.view.tree.js","mol/check/expand/expand.view.tree","mol/check/expand/-view.tree/expand.view.tree.js.map","mol/check/expand/-view.tree/expand.view.tree.d.ts","mol/check/expand/-view.tree/expand.view.tree.d.ts.map","mol/check/expand/-view.tree/expand.view.tree.locale=en.json","mol/check/expand/expand.view.ts","mol/check/expand/-css/expand.view.css.ts","mol/check/expand/expand.view.css","mol/grid/-view.tree/grid.view.tree.js","mol/grid/grid.view.tree","mol/grid/-view.tree/grid.view.tree.js.map","mol/grid/-view.tree/grid.view.tree.d.ts","mol/grid/-view.tree/grid.view.tree.d.ts.map","mol/grid/-view.tree/grid.view.tree.locale=en.json","mol/grid/grid.view.ts","mol/grid/-css/grid.view.css.ts","mol/grid/grid.view.css","mol/embed/native/-view.tree/native.view.tree.js","mol/embed/native/native.view.tree","mol/promise/promise/promise.ts","mol/wait/timeout/timeout.ts","mol/embed/native/-view.tree/native.view.tree.js.map","mol/embed/native/-view.tree/native.view.tree.d.ts","mol/embed/native/-view.tree/native.view.tree.d.ts.map","mol/embed/native/-view.tree/native.view.tree.locale=en.json","mol/embed/native/native.view.ts","mol/embed/native/-css/native.view.css.ts","mol/embed/native/native.view.css","mol/icon/youtube/-view.tree/youtube.view.tree.js","mol/icon/youtube/-view.tree/youtube.view.tree.js.map","mol/icon/youtube/-view.tree/youtube.view.tree.d.ts","mol/icon/youtube/-view.tree/youtube.view.tree.d.ts.map","mol/icon/youtube/-view.tree/youtube.view.tree.locale=en.json","mol/icon/youtube/youtube.view.tree","mol/frame/-view.tree/frame.view.tree.js","mol/frame/frame.view.tree","mol/frame/-view.tree/frame.view.tree.js.map","mol/frame/-view.tree/frame.view.tree.d.ts","mol/frame/-view.tree/frame.view.tree.d.ts.map","mol/frame/-view.tree/frame.view.tree.locale=en.json","mol/frame/frame.view.ts","mol/frame/frame.view.css.ts","mol/embed/service/-view.tree/service.view.tree.js","mol/embed/service/service.view.tree","mol/embed/service/-view.tree/service.view.tree.js.map","mol/embed/service/-view.tree/service.view.tree.d.ts","mol/embed/service/-view.tree/service.view.tree.d.ts.map","mol/embed/service/-view.tree/service.view.tree.locale=en.json","mol/embed/service/service.view.ts","mol/embed/service/-css/service.view.css.ts","mol/embed/service/service.view.css","mol/embed/youtube/-view.tree/youtube.view.tree.js","mol/embed/youtube/youtube.view.tree","mol/embed/youtube/-view.tree/youtube.view.tree.js.map","mol/embed/youtube/-view.tree/youtube.view.tree.d.ts","mol/embed/youtube/-view.tree/youtube.view.tree.d.ts.map","mol/embed/youtube/-view.tree/youtube.view.tree.locale=en.json","mol/embed/youtube/youtube.view.ts","mol/embed/rutube/-view.tree/rutube.view.tree.js","mol/embed/rutube/rutube.view.tree","mol/embed/rutube/-view.tree/rutube.view.tree.js.map","mol/embed/rutube/-view.tree/rutube.view.tree.d.ts","mol/embed/rutube/-view.tree/rutube.view.tree.d.ts.map","mol/embed/rutube/-view.tree/rutube.view.tree.locale=en.json","mol/embed/rutube/rutube.view.ts","mol/embed/any/-view.tree/any.view.tree.js","mol/embed/any/any.view.tree","mol/embed/any/-view.tree/any.view.tree.js.map","mol/embed/any/-view.tree/any.view.tree.d.ts","mol/embed/any/-view.tree/any.view.tree.d.ts.map","mol/embed/any/-view.tree/any.view.tree.locale=en.json","mol/embed/any/any.view.ts","mol/expander/-view.tree/expander.view.tree.js","mol/expander/expander.view.tree","mol/expander/readme.md","mol/expander/-view.tree/expander.view.tree.js.map","mol/expander/-view.tree/expander.view.tree.d.ts","mol/expander/-view.tree/expander.view.tree.d.ts.map","mol/expander/-view.tree/expander.view.tree.locale=en.json","mol/expander/expander.view.ts","mol/expander/-css/expander.view.css.ts","mol/expander/expander.view.css","mol/text/text/-view.tree/text.view.tree.js","mol/text/text/text.view.tree","mol/text/text/readme.md","mol/text/text/-view.tree/text.view.tree.js.map","mol/text/text/-view.tree/text.view.tree.d.ts","mol/text/text/-view.tree/text.view.tree.d.ts.map","mol/text/text/-view.tree/text.view.tree.locale=en.json","mol/text/text/text.view.ts","mol/text/text/-css/text.view.css.ts","mol/text/text/text.view.css","mol/text/text/text.locale=ru.json","mol/text/text/text.locale=uk.json","optimade/cifplayer/app/-view.tree/app.view.tree.js","mol/text/list/-view.tree/list.view.tree.js","mol/text/list/list.view.tree","mol/text/list/-css/list.view.css.ts","mol/text/list/-view.tree/list.view.tree.js.map","mol/text/list/-view.tree/list.view.tree.d.ts","mol/text/list/-view.tree/list.view.tree.d.ts.map","mol/text/list/-view.tree/list.view.tree.locale=en.json","mol/text/list/list.view.css","optimade/cifplayer/app/index.html","optimade/cifplayer/app/-view.tree/app.view.tree.js.map","optimade/cifplayer/app/-view.tree/app.view.tree.d.ts","optimade/cifplayer/app/-view.tree/app.view.tree.d.ts.map","optimade/cifplayer/app/-view.tree/app.view.tree.locale=en.json","optimade/cifplayer/app/app.view.tree","optimade/cifplayer/app/app.view.css.ts"],"mods":{},"deps_in":{"optimade/cifplayer":{"optimade/cifplayer/app":-9007199254740991,"optimade/cifplayer/player":-9007199254740991,"optimade/cifplayer/lib":-9007199254740991},"optimade":{"optimade/cifplayer":-9007199254740991},"":{"optimade":-9007199254740991,"mol":-9007199254740991,"node":-9007199254740991,"node_modules":-9007199254740991},"mol/drop":{"optimade/cifplayer/app":-1,"optimade/cifplayer/app/-view.tree/app.view.tree.js":-1},"mol":{"mol/drop":-9007199254740991,"mol/ghost":-9007199254740991,"mol/view":-9007199254740991,"mol/window":-9007199254740991,"mol/object":-9007199254740991,"mol/object2":-9007199254740991,"mol/ambient":-9007199254740991,"mol/owning":-9007199254740991,"mol/delegate":-9007199254740991,"mol/fail":-9007199254740991,"mol/type":-9007199254740991,"mol/func":-9007199254740991,"mol/mem":-9007199254740991,"mol/wire":-9007199254740991,"mol/dev":-9007199254740991,"mol/after":-9007199254740991,"mol/promise":-9007199254740991,"mol/key":-9007199254740991,"mol/guid":-9007199254740991,"mol/compare":-9007199254740991,"mol/log3":-9007199254740991,"mol/tree2":-9007199254740991,"mol/span":-9007199254740991,"mol/error":-9007199254740991,"mol/term":-9007199254740991,"mol/dom":-9007199254740991,"mol/exec":-9007199254740991,"mol/run":-9007199254740991,"mol/env":-9007199254740991,"mol/memo":-9007199254740991,"mol/wrapper":-9007199254740991,"mol/const":-9007199254740991,"mol/plugin":-9007199254740991,"mol/style":-9007199254740991,"mol/theme":-9007199254740991,"mol/decor":-9007199254740991,"mol/gap":-9007199254740991,"mol/lights":-9007199254740991,"mol/state":-9007199254740991,"mol/action":-9007199254740991,"mol/media":-9007199254740991,"mol/storage":-9007199254740991,"mol/file":-9007199254740991,"mol/lock":-9007199254740991,"mol/charset":-9007199254740991,"mol/book2":-9007199254740991,"mol/scroll":-9007199254740991,"mol/print":-9007199254740991,"mol/layer":-9007199254740991,"mol/link":-9007199254740991,"mol/image":-9007199254740991,"mol/check":-9007199254740991,"mol/button":-9007199254740991,"mol/speck":-9007199254740991,"mol/keyboard":-9007199254740991,"mol/maybe":-9007199254740991,"mol/icon":-9007199254740991,"mol/svg":-9007199254740991,"mol/locale":-1.25,"mol/textarea":-9007199254740991,"mol/stack":-9007199254740991,"mol/syntax2":-9007199254740991,"mol/text":-9007199254740991,"mol/paragraph":-9007199254740991,"mol/dimmer":-9007199254740991,"mol/regexp":-9007199254740991,"mol/unicode":-1,"mol/list":-9007199254740991,"mol/support":-9007199254740991,"mol/blob":-9007199254740991,"mol/html":-9007199254740991,"mol/string":-9007199254740991,"mol/hotkey":-9007199254740991,"mol/page":-9007199254740991,"mol/pick":-9007199254740991,"mol/pop":-9007199254740991,"mol/number":-9007199254740991,"mol/switch":-9007199254740991,"mol/card":-9007199254740991,"mol/grid":-9007199254740991,"mol/float":-9007199254740991,"mol/embed":-9007199254740991,"mol/wait":-9007199254740991,"mol/frame":-9007199254740991,"mol/expander":-9007199254740991},"mol/drop/drop.view.tree":{"mol/drop":0},"mol/drop/-view.tree/drop.view.tree.js":{"mol/drop/drop.view.tree":0,"mol/drop":0},"mol/ghost":{"mol/drop/-view.tree/drop.view.tree.js":-1,"mol/drop":-1},"mol/ghost/ghost.view.tree":{"mol/ghost":0},"mol/ghost/-view.tree/ghost.view.tree.js":{"mol/ghost/ghost.view.tree":0,"mol/ghost":0},"mol/view/view":{"mol/ghost/-view.tree/ghost.view.tree.js":-1,"mol/plugin":-1,"mol/ghost":-1,"mol/scroll/-view.tree/scroll.view.tree.js":-1,"mol/scroll":-1,"mol/style/define":-2,"mol/style/guard":-1,"mol/style/sheet":-2,"mol/book2/-view.tree/book2.view.tree.js":-3,"mol/book2":0,"mol/link/-view.tree/link.view.tree.js":-1,"mol/link":-1,"mol/image/-view.tree/image.view.tree.js":-1,"mol/image":-1,"mol/button/-view.tree/button.view.tree.js":-1,"mol/speck/-view.tree/speck.view.tree.js":-1,"mol/speck":-1,"mol/button":-1,"mol/check/-view.tree/check.view.tree.js":-3,"mol/check":-1,"mol/svg/-view.tree/svg.view.tree.js":-1,"mol/svg":-1,"mol/button/open/-view.tree/open.view.tree.js":-1,"mol/button/open":-1,"mol/stack/-view.tree/stack.view.tree.js":-1,"mol/stack":-1,"mol/paragraph/-view.tree/paragraph.view.tree.js":-1,"mol/paragraph":-1,"mol/text/code/line/-view.tree/line.view.tree.js":-3,"mol/dimmer":-2,"mol/text/code/line":-1,"mol/list/-view.tree/list.view.tree.js":-1,"mol/list":-1,"mol/string/-view.tree/string.view.tree.js":-1,"mol/string":-1,"optimade/cifplayer/app":-1,"mol/page":-1,"mol/page/-view.tree/page.view.tree.js":-1,"optimade/cifplayer/player/-view.tree/player.view.tree.js":-1,"optimade/cifplayer/lib/three/view":-1,"optimade/cifplayer/lib/three/view/-view.tree/view.view.tree.js":-1,"mol/pop/-view.tree/pop.view.tree.js":-1,"mol/pop":-1,"mol/number/-view.tree/number.view.tree.js":-1,"mol/number":-1,"mol/check/list/-view.tree/list.view.tree.js":-1,"mol/check/list":-1,"mol/card/-view.tree/card.view.tree.js":-3,"mol/card":-1,"optimade/cifplayer/player":-1,"mol/text/text/-view.tree/text.view.tree.js":-3,"mol/grid/-view.tree/grid.view.tree.js":-1,"mol/float/-view.tree/float.view.tree.js":-1,"mol/float":-1,"mol/grid":-1,"mol/embed/any/-view.tree/any.view.tree.js":-1,"mol/embed/any":-1,"mol/expander/-view.tree/expander.view.tree.js":-3,"mol/expander":-1,"mol/text/text":-1,"optimade/cifplayer/app/-view.tree/app.view.tree.js":-3},"mol/view":{"mol/view/view":0,"mol/view/selection":-9007199254740991,"mol/link":-2,"mol/button":-2,"mol/check":-2,"mol/dimmer":-2,"mol/page":-2,"mol/pop":-2,"mol/pick":-2,"mol/card":-2,"mol/grid":-2},"mol/window":{"mol/view/view":-2,"mol/paragraph":-3,"mol/list":-3,"mol/pop":-3},"mol/object":{"mol/window":-1,"mol/view/view":-1,"mol/run":-1,"mol/view/selection":-1,"mol/state/arg":-1,"mol/state/local":-1,"mol/state/local/local.ts":-1,"mol/file/base":-1,"mol/lock":-1,"mol/file/transaction":-1,"mol/file/transaction/transaction.ts":-1,"mol/print":-1,"mol/dom/listener":-1,"mol/state/time":-1,"mol/locale":-1,"mol/state/session":-1},"mol/object2":{"mol/object":-1,"mol/after/tick":-1,"mol/after/timeout":-1,"mol/span":-1,"mol/wrapper":-1,"mol/media":-1,"mol/storage":-1},"mol/ambient":{"mol/object2":-2,"mol/style/sheet":-2},"mol/owning":{"mol/object2":-3,"mol/wire/fiber":-3,"mol/wire/task":-4,"mol/wire/atom":-4,"mol/plugin":-3,"mol/view/view":-3},"mol/delegate":{"mol/owning":-3},"mol/fail/hidden":{"mol/object2":-3,"mol/wire/fiber":-4,"mol/tree2":-4,"mol/fail/catch":-2,"mol/view/view":-4,"mol/file/base":-4,"mol/file":-4,"mol/button":-4,"mol/string":-4},"mol/fail":{"mol/fail/hidden":-9007199254740991,"mol/wire/pub":-4,"mol/wire/pub/sub":-3,"mol/span":-3,"mol/tree2":-4,"mol/tree2/from/string":-4,"mol/fail/log":-9007199254740991,"mol/fail/catch":-9007199254740991,"mol/wire/watch":-3,"mol/file":-2,"mol/syntax2":-4,"mol/regexp":-4},"mol/type/writable":{"mol/object2":-3},"mol/type":{"mol/type/writable":-9007199254740991,"mol/type/foot":-9007199254740991,"mol/type/tail":-9007199254740991,"mol/type/pick":-9007199254740991,"mol/type/keys":-9007199254740991,"mol/type/override":-9007199254740991,"mol/type/error":-9007199254740991,"mol/type/enforce":-9007199254740991,"mol/type/merge":-9007199254740991,"mol/type/equals":-9007199254740991,"mol/type/intersect":-9007199254740991},"mol/func/name":{"mol/object2":-3,"mol/wire/atom":-3,"mol/error/mix":-2,"mol/wire/sync":-2,"mol/view/view":-4,"mol/style/sheet":-2},"mol/func":{"mol/func/name":-9007199254740991},"mol/mem":{"mol/view/view":-2,"mol/view/selection":-2,"mol/ghost/-view.tree/ghost.view.tree.js":-1,"mol/ghost":-1,"mol/drop/-view.tree/drop.view.tree.js":-1,"mol/drop":-1,"mol/state/arg":-2,"mol/media":-2,"mol/state/local":-2,"mol/storage":-2,"mol/mem/persist":-9007199254740991,"mol/mem/cached":-9007199254740991,"mol/state/local/local.ts":-2,"mol/file/base":-2,"mol/file/transaction":-2,"mol/file":-2,"mol/scroll/-view.tree/scroll.view.tree.js":-1,"mol/scroll":-1,"mol/print":-2,"mol/book2/-view.tree/book2.view.tree.js":-1,"mol/book2":-1,"mol/link/-view.tree/link.view.tree.js":-1,"mol/link":-1,"mol/image/-view.tree/image.view.tree.js":-1,"mol/image":-1,"mol/link/iconed/-view.tree/iconed.view.tree.js":-1,"mol/link/iconed":-1,"mol/button/-view.tree/button.view.tree.js":-1,"mol/button":-1,"mol/check/-view.tree/check.view.tree.js":-1,"mol/check":-1,"mol/svg":-2,"mol/state/time":-2,"mol/icon/-view.tree/icon.view.tree.js":-1,"mol/icon":-1,"mol/locale":-2,"mol/lights/toggle/-view.tree/toggle.view.tree.js":-1,"mol/lights/toggle":-1,"mol/button/open/-view.tree/open.view.tree.js":-1,"mol/button/open":-1,"mol/paragraph":-2,"mol/dimmer/-view.tree/dimmer.view.tree.js":-1,"mol/dimmer":-1,"mol/text/code/line/-view.tree/line.view.tree.js":-1,"mol/text/code/line":-1,"mol/list/-view.tree/list.view.tree.js":-1,"mol/list":-1,"mol/button/copy/-view.tree/copy.view.tree.js":-1,"mol/button/copy":-1,"mol/text/code/-view.tree/code.view.tree.js":-1,"mol/text/code":-1,"mol/textarea/-view.tree/textarea.view.tree.js":-1,"mol/hotkey/-view.tree/hotkey.view.tree.js":-1,"mol/hotkey":-1,"mol/string/-view.tree/string.view.tree.js":-1,"mol/string":-1,"mol/textarea":-1,"mol/page":-1,"mol/page/-view.tree/page.view.tree.js":-1,"optimade/cifplayer/lib/three/view":-1,"optimade/cifplayer/lib/three/view/-view.tree/view.view.tree.js":-1,"mol/check/box/-view.tree/box.view.tree.js":-1,"mol/check/box":-1,"mol/pop/-view.tree/pop.view.tree.js":-1,"mol/pop":-1,"mol/pick/-view.tree/pick.view.tree.js":-1,"mol/pick":-1,"mol/number/-view.tree/number.view.tree.js":-1,"mol/number":-1,"mol/check/list/-view.tree/list.view.tree.js":-1,"mol/check/list":-1,"mol/switch/-view.tree/switch.view.tree.js":-1,"mol/state/session":-2,"mol/switch":-1,"mol/card/-view.tree/card.view.tree.js":-1,"mol/card":-1,"optimade/cifplayer/player/-view.tree/player.view.tree.js":-1,"optimade/cifplayer/player":-1,"mol/text/list/-view.tree/list.view.tree.js":-1,"mol/text/list":-1,"mol/check/expand/-view.tree/expand.view.tree.js":-1,"mol/check/expand":-1,"mol/grid/-view.tree/grid.view.tree.js":-1,"mol/grid":-1,"mol/embed/native/-view.tree/native.view.tree.js":-1,"mol/embed/native":-1,"mol/frame/-view.tree/frame.view.tree.js":-1,"mol/frame":-1,"mol/embed/service/-view.tree/service.view.tree.js":-1,"mol/embed/service":-1,"mol/embed/youtube":-2,"mol/embed/rutube":-2,"mol/embed/any/-view.tree/any.view.tree.js":-1,"mol/embed/any":-1,"mol/expander/-view.tree/expander.view.tree.js":-1,"mol/expander":-1,"mol/text/text/-view.tree/text.view.tree.js":-1,"mol/text/text":-1,"optimade/cifplayer/app":-1,"optimade/cifplayer/app/-view.tree/app.view.tree.js":-1},"mol/wire/solo":{"mol/mem":-1},"mol/wire":{"mol/wire/solo":-5,"mol/wire/atom":-4,"mol/wire/fiber":-9007199254740991,"mol/wire/pub/sub":-3,"mol/wire/method":-9007199254740991,"mol/wire/task":-4,"mol/wire/plex":-5,"mol/run":-3,"mol/wire/sync":-9007199254740991,"mol/wire/probe":-9007199254740991,"mol/wire/watch":-2,"mol/wire/solid":-2,"mol/wire/async":-9007199254740991,"mol/lock":-3},"mol/wire/sub":{"mol/wire":-1,"mol/wire/pub/sub":-1},"mol/wire/pub":{"mol/wire/sub":-1,"mol/wire/pub/sub":-1,"mol/wire/fiber":-5},"mol/wire/cursor":{"mol/wire/pub":-2,"mol/wire/sub":-2,"mol/wire/pub/sub":-2,"mol/wire/fiber":-2,"mol/wire/atom":-3,"mol/wire/task":-3},"mol/wire/atom":{"mol/wire/solo":-4,"mol/wire/plex":-4,"mol/wire/watch":-2},"mol/wire/fiber":{"mol/wire/atom":-1,"mol/wire/task":-1,"mol/wire/solo":-5,"mol/wire/plex":-5,"mol/wire/probe":-2,"mol/wire/solid":-2,"mol/plugin":-3,"mol/view/view":-3,"mol/wire/async":-2},"mol/wire/pub/sub":{"mol/wire/fiber":-1,"mol/wire/solid":-1},"mol/dev/format":{"mol/wire/pub/sub":-2,"mol/wire/fiber":-2,"mol/const":-2,"mol/view/view":-2},"mol/dev":{"mol/dev/format":-9007199254740991},"mol/after/tick":{"mol/wire/fiber":-2,"mol/view/selection":-3,"mol/book2":-4,"mol/text/text":-4},"mol/after":{"mol/after/tick":-9007199254740991,"mol/after/frame":-9007199254740991,"mol/after/timeout":-9007199254740991},"mol/promise/like":{"mol/wire/fiber":-3,"mol/wire/task":-3,"mol/fail/log":-2,"mol/fail/catch":-2,"mol/wire/atom":-3,"mol/view/view":-4,"mol/file/base":-4,"mol/file":-4},"mol/promise":{"mol/promise/like":-9007199254740991,"mol/promise/promise":-9007199254740991},"mol/key":{"mol/wire/atom":-3},"mol/guid":{"mol/key":-3},"mol/after/frame":{"mol/wire/atom":-2,"mol/state/time":-2},"mol/after/timeout":{"mol/after/frame":-1,"mol/view/view":-3,"mol/file/base":-2,"mol/state/time":-2,"mol/wait/timeout":-2},"mol/wire/method":{"mol/wire/atom":-2,"mol/action":-1},"mol/wire/task":{"mol/wire/method":-2,"mol/wire/sync":-4,"mol/wire/async":-2},"mol/compare/deep":{"mol/wire/task":-5,"mol/wire/atom":-5},"mol/compare":{"mol/compare/deep":-9007199254740991,"mol/compare/array":-9007199254740991},"mol/log3":{"mol/wire/task":-5,"mol/run":-3,"mol/storage":-5,"mol/file/base":-4},"mol/log3/log3.ts":{"mol/log3":0},"mol/tree2/from/json":{"mol/log3":-3},"mol/tree2/from":{"mol/tree2/from/json":-9007199254740991},"mol/tree2":{"mol/tree2/from":-9007199254740991,"mol/tree2/from/string":-1,"mol/tree2/from/json":-1},"mol/span":{"mol/tree2":-2,"mol/tree2/from/string":-2,"mol/error/syntax":-3,"mol/tree2/from/json":-1},"mol/tree2/from/string":{"mol/tree2/from":-2},"mol/error/syntax":{"mol/tree2/from/string":-4},"mol/error":{"mol/error/syntax":-9007199254740991,"mol/error/mix":-9007199254740991},"mol/tree2/to/string":{"mol/tree2":-3},"mol/tree2/to":{"mol/tree2/to/string":-9007199254740991},"mol/term/color":{"mol/log3":-1},"mol/term":{"mol/term/color":-9007199254740991},"mol/type/foot":{"mol/wire/atom":-3},"mol/type/tail":{"mol/type/foot":-1.25,"mol/wire/solo":-2},"mol/fail/log":{"mol/wire/atom":-5,"mol/view/view":-4,"node":-3,"mol/ghost":-4,"mol/file/base":-5,"mol/file":-3,"mol/book2":-5,"mol/link":-4,"mol/button":-4,"mol/list":-5,"mol/text/code":-4,"mol/embed/any":-4,"mol/text/text":-4},"mol/fail/catch":{"mol/fail/log":-2,"node":-3,"mol/file/base":-4,"mol/file":-4,"mol/locale":-4},"mol/wire/plex":{"mol/mem":-1},"mol/dom/context":{"mol/view/view":-3,"mol/dom":-1,"mol/view/selection":-3,"mol/dom/render/children":-3,"mol/style/attach":-2,"mol/media":-3,"mol/state/local":-4,"mol/storage":-3,"mol/state/local/local.ts":-4,"mol/print":-3,"mol/link":-3,"mol/svg":-3,"mol/locale":-3,"mol/support/css":-3,"mol/blob":-1,"mol/button/copy":-3,"mol/text/code":-3,"mol/string":-3,"mol/pop":-4,"mol/state/session":-4,"mol/embed/native":-4,"mol/text/text":-3},"mol/dom":{"mol/dom/qname":-9007199254740991,"mol/dom/render":-9007199254740991,"mol/dom/listener":-9007199254740991,"mol/view/view":-9007199254740991},"mol/dom/context/context.ts":{"mol/dom/context":0},"node":{"mol/dom/context":-1,"mol/run":-1,"mol/state/local":-3,"mol/charset/encode":-1,"mol/file/transaction":-2,"mol/file":-1,"mol/blob":-1},"node/node.ts":{"node":0},"mol/exec":{"mol/dom/context":-3},"mol/run":{"mol/exec":-2},"mol/error/mix":{"mol/run":-1},"mol/env":{"mol/run":-3},"mol/env/env.ts":{"mol/env":0},"mol/wire/sync":{"mol/run":-3,"mol/storage":-3,"mol/lock":-2,"mol/button/copy":-3,"mol/embed/native":-3,"mol/wait/timeout":-2},"mol/view/selection":{"mol/view/view":-3},"mol/memo":{"mol/view/view":-2},"mol/wrapper":{"mol/memo":-1},"mol/dom/qname":{"mol/view/view":-3,"mol/style/sheet":-2},"mol/wire/probe":{"mol/view/view":-3,"mol/mem/cached":-1,"mol/file/base":-5,"mol/number":-4},"mol/wire/watch":{"mol/view/view":-4},"mol/const":{"mol/view/view":-3,"mol/file/base":-4},"mol/wire/solid":{"mol/view/view":-3,"mol/mem/persist":-1,"mol/file/transaction":-3,"mol/embed/native":-3},"mol/dom/render/attributes":{"mol/view/view":-3,"mol/ghost":-3},"mol/dom/render":{"mol/dom/render/attributes":-9007199254740991,"mol/dom/render/events":-9007199254740991,"mol/dom/render/styles":-9007199254740991,"mol/dom/render/children":-9007199254740991,"mol/dom/render/fields":-9007199254740991},"mol/dom/render/events":{"mol/view/view":-3},"mol/plugin":{"mol/theme/auto/-view.tree/auto.view.tree.js":-1,"mol/theme/auto":-1,"mol/hotkey/-view.tree/hotkey.view.tree.js":-1,"mol/hotkey":-1,"mol/ghost/-view.tree/ghost.view.tree.js":-6},"mol/dom/render/styles":{"mol/view/view":-3,"mol/ghost":-3},"mol/dom/render/children":{"mol/view/view":-3},"mol/dom/render/fields":{"mol/view/view":-3,"mol/ghost":-3},"mol/wire/async":{"mol/view/view":-3,"mol/file/base":-4,"mol/file":-4,"mol/string":-4,"mol/embed/native":-4},"mol/type/pick":{"mol/view/view":-1},"mol/type/keys/extract":{"mol/type/pick":-3,"mol/style/guard":-1},"mol/type/keys":{"mol/type/keys/extract":-9007199254740991},"mol/style/attach":{"mol/view/view":0,"mol/theme":0,"mol/gap":0,"mol/style/define":-2,"mol/book2":0,"mol/layer":0,"mol/image":0,"mol/link/iconed":0,"mol/check":0,"mol/speck":0,"mol/button":0,"mol/button/minor":0,"mol/button/typed":0,"mol/check/icon":0,"mol/icon":0,"mol/svg/root":0,"mol/button/open":0,"mol/stack":0,"mol/paragraph":0,"mol/dimmer":0,"mol/list":0,"mol/string":0,"mol/textarea":0,"optimade/cifplayer/player":0,"mol/check/box":0,"mol/pop":0,"mol/pick":0,"mol/number":0,"mol/check/list":0,"mol/card":0,"mol/text/list":0,"mol/float":0,"mol/check/expand":0,"mol/grid":0,"mol/embed/native":0,"mol/embed/service":0,"mol/expander":0,"mol/text/text":0},"mol/style":{"mol/style/attach":-9007199254740991,"mol/style/prop":-9007199254740991,"mol/style/func":-9007199254740991,"mol/style/unit":-9007199254740991,"mol/style/properties":-9007199254740991,"mol/style/define":-9007199254740991,"mol/style/guard":-9007199254740991,"mol/style/pseudo":-9007199254740991,"mol/style/sheet":-9007199254740991},"mol/theme":{"mol/view/view":-1,"mol/theme/auto":-3,"mol/book2":-1,"mol/link":-2,"mol/link/iconed":0,"mol/speck/-view.tree/speck.view.tree.js":-3,"mol/speck":-3,"mol/button/typed":-1,"mol/button/minor":-1,"mol/check/icon":-1,"mol/icon":-1,"mol/dimmer":-1,"mol/text/code/line":-3,"mol/string":-1,"mol/textarea":-1,"mol/page":-2,"optimade/cifplayer/player":0,"mol/check/box":-1,"mol/pop":-1,"mol/check/list":-1,"mol/card":-1,"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"mol/float":-1,"mol/grid":-1,"mol/text/text":-1,"optimade/cifplayer/app":-4},"mol/style/prop":{"mol/theme":-1,"mol/gap":-1,"mol/layer":-1},"mol/style/func":{"mol/style/prop":-2,"mol/style/properties":-1,"mol/text/code/token":-1,"mol/page":-1,"optimade/cifplayer/player":-3},"mol/style/unit":{"mol/style/func":-1,"mol/style/properties":-1,"mol/scroll":-1,"mol/link":-1,"mol/text/code/line":-1,"mol/text/code":-1,"mol/page":-1,"mol/frame":-2},"mol/decor":{"mol/style/unit":-1,"mol/style/func":-1},"mol/style/properties":{"mol/style/guard":-1,"mol/style/prop":-3},"mol/type/override":{"mol/style/properties":-1,"mol/regexp":-2},"mol/gap":{"mol/view/view":-1,"mol/link":-2,"mol/image":-1,"mol/link/iconed":-1,"mol/button":-1,"mol/button/typed":-1,"mol/text/code":-3,"mol/string":-1,"mol/textarea":-1,"mol/page":-3,"mol/check/box":-1,"mol/pop":-1,"mol/check/list":-1,"mol/card":-1,"optimade/cifplayer/player":-3,"mol/grid":-1,"mol/embed/native":-1,"mol/expander":-1,"mol/text/text":-1,"optimade/cifplayer/app":-4},"mol/theme/auto":{"optimade/cifplayer/app":-2,"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"optimade/cifplayer/player":-2,"optimade/cifplayer/app/-view.tree/app.view.tree.js":-3},"mol/theme/auto/auto.view.tree":{"mol/theme/auto":0},"mol/theme/auto/-view.tree/auto.view.tree.js":{"mol/theme/auto/auto.view.tree":0,"mol/theme/auto":0},"mol/lights":{"mol/theme/auto":-3,"mol/lights/toggle":-3},"mol/state/arg":{"mol/lights":-2,"mol/link":-3,"mol/link/iconed":-3,"mol/text/text":-4},"mol/state":{"mol/state/arg":-9007199254740991,"mol/state/local":-9007199254740991,"mol/state/time":-9007199254740991,"mol/state/session":-9007199254740991},"mol/state/arg/arg.ts":{"mol/state/arg":0},"mol/action":{"mol/state/arg":-2,"mol/file/base":-2,"mol/file":-2,"mol/string":-2},"mol/media":{"mol/lights":-2},"mol/state/local":{"mol/lights":-3,"mol/locale":-3},"mol/storage":{"mol/state/local":-4,"mol/state/local/local.ts":-4},"mol/mem/persist":{"mol/storage":-3},"mol/mem/cached":{"mol/storage":-3,"mol/file/base":-3,"mol/book2":-3,"mol/list":-3},"mol/state/local/local.ts":{"mol/state/local":0},"mol/file":{"mol/state/local":-3,"mol/locale":-3},"mol/file/base":{"mol/file":-1,"mol/file/file.ts":-1},"mol/lock":{"mol/file/base":-2},"mol/compare/array":{"mol/file/base":-3},"mol/charset/decode":{"mol/file/base":-4},"mol/charset":{"mol/charset/decode":-9007199254740991,"mol/charset/encoding":-9007199254740991,"mol/charset/encode":-9007199254740991},"mol/charset/encoding":{"mol/charset/decode":-1},"mol/charset/encode":{"mol/file/base":-4},"mol/file/transaction":{"mol/file/base":-2},"mol/file/transaction/transaction.ts":{"mol/file/transaction":0},"mol/file/file.ts":{"mol/file":0},"node_modules":{"mol/file":-3},"mol/book2":{"optimade/cifplayer/app":-1,"optimade/cifplayer/app/-view.tree/app.view.tree.js":-3},"mol/book2/book2.view.tree":{"mol/book2":0},"mol/book2/-view.tree/book2.view.tree.js":{"mol/book2/book2.view.tree":0,"mol/book2":0},"mol/scroll":{"mol/book2/-view.tree/book2.view.tree.js":-1,"mol/book2":-1,"mol/page":-1,"mol/page/-view.tree/page.view.tree.js":-3,"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"mol/pop":0,"optimade/cifplayer/player":-1,"mol/embed/native/-view.tree/native.view.tree.js":-1,"mol/embed/native":-1},"mol/scroll/scroll.view.tree":{"mol/scroll":0},"mol/scroll/-view.tree/scroll.view.tree.js":{"mol/scroll/scroll.view.tree":0,"mol/scroll":0},"mol/print":{"mol/scroll":-3,"mol/list":-3},"mol/dom/listener":{"mol/print":-3,"mol/string":-3,"mol/embed/native":-3},"mol/style/define":{"mol/scroll":-1,"mol/link":-1,"mol/text/code/token":-1,"mol/text/code/line":-1,"mol/text/code":-1,"mol/page":-1,"optimade/cifplayer/lib/three/view":-1,"optimade/cifplayer/player":-1,"mol/frame":-1,"optimade/cifplayer/app":-1},"mol/style/guard":{"mol/style/define":-2,"mol/style/sheet":-2},"mol/style/pseudo":{"mol/style/guard":-1},"mol/type/error":{"mol/style/guard":-2},"mol/style/sheet":{"mol/style/define":-3},"mol/layer":{"mol/book2":-1,"mol/speck":-1,"mol/button":-1,"mol/string":-1,"mol/textarea":-1,"mol/pop":-1,"mol/float":-1},"mol/type/enforce":{"mol/book2":-1,"mol/link/iconed":-1,"mol/button":-1,"mol/check":-1,"mol/icon":-1,"mol/button/open":-1,"mol/dimmer":-1,"mol/text/code/line":-1,"mol/list":-1,"mol/button/copy":-1,"mol/text/code":-1,"mol/string":-1,"mol/textarea":-1,"mol/page":-1,"mol/pop":-1,"mol/pick":-1,"mol/number":-1,"mol/check/list":-1,"mol/card":-1,"optimade/cifplayer/player":-1,"mol/text/list":-1,"mol/grid":-1,"mol/embed/native":-1,"mol/embed/service":-1,"mol/embed/any":-1,"mol/expander":-1,"mol/text/text":-1,"optimade/cifplayer/app":-1},"mol/link/iconed":{"optimade/cifplayer/app":-1,"mol/text/text/-view.tree/text.view.tree.js":-3,"mol/text/text":-1,"optimade/cifplayer/app/-view.tree/app.view.tree.js":-3},"mol/link":{"mol/link/iconed":-1,"mol/link/iconed/-view.tree/iconed.view.tree.js":-1,"mol/embed/native/-view.tree/native.view.tree.js":-3,"mol/embed/native":-1,"mol/text/text/-view.tree/text.view.tree.js":-3,"mol/text/text":-1},"mol/link/link.view.tree":{"mol/link":0},"mol/link/-view.tree/link.view.tree.js":{"mol/link/link.view.tree":0,"mol/link":0},"mol/link/iconed/iconed.view.tree":{"mol/link/iconed":0},"mol/link/iconed/-view.tree/iconed.view.tree.js":{"mol/link/iconed/iconed.view.tree":0,"mol/link/iconed":0},"mol/image":{"mol/link/iconed/-view.tree/iconed.view.tree.js":-3,"mol/link/iconed":-1,"mol/embed/any/-view.tree/any.view.tree.js":-3,"mol/embed/service/-view.tree/service.view.tree.js":-3,"mol/embed/service":-1,"mol/embed/any":-1},"mol/image/image.view.tree":{"mol/image":0},"mol/image/-view.tree/image.view.tree.js":{"mol/image/image.view.tree":0,"mol/image":0},"mol/lights/toggle":{"optimade/cifplayer/app":-2,"optimade/cifplayer/app/-view.tree/app.view.tree.js":-3},"mol/lights/toggle/toggle.view.tree":{"mol/lights/toggle":0},"mol/lights/toggle/-view.tree/toggle.view.tree.js":{"mol/lights/toggle/toggle.view.tree":0,"mol/lights/toggle":0},"mol/check/icon":{"mol/lights/toggle/-view.tree/toggle.view.tree.js":-1,"mol/lights/toggle":-1,"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"optimade/cifplayer/player":-1},"mol/check":{"mol/check/icon":0,"mol/check/icon/-view.tree/icon.view.tree.js":-1,"mol/check/box":0,"mol/check/box/-view.tree/box.view.tree.js":-1,"mol/pick/-view.tree/pick.view.tree.js":-3,"mol/pick":-1,"mol/check/list":0,"mol/check/list/-view.tree/list.view.tree.js":-3,"mol/check/expand":0,"mol/check/expand/-view.tree/expand.view.tree.js":-1,"mol/embed/service/-view.tree/service.view.tree.js":-1,"mol/embed/service":-1},"mol/check/check.view.tree":{"mol/check":0},"mol/check/-view.tree/check.view.tree.js":{"mol/check/check.view.tree":0,"mol/check":0},"mol/button/minor":{"mol/check/-view.tree/check.view.tree.js":-1,"mol/check":-1,"mol/button/open/-view.tree/open.view.tree.js":-1,"mol/button/open":-1,"mol/button/copy/-view.tree/copy.view.tree.js":-1,"mol/button/copy":-1,"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"mol/number/-view.tree/number.view.tree.js":-3,"mol/number":-1,"optimade/cifplayer/player":-1,"optimade/cifplayer/app":-1,"optimade/cifplayer/app/-view.tree/app.view.tree.js":-3},"mol/button":{"mol/button/minor":-9007199254740991,"mol/button/typed":-1,"mol/button/typed/-view.tree/typed.view.tree.js":-1,"mol/button/open":-9007199254740991,"mol/button/copy":-9007199254740991},"mol/button/button.view.tree":{"mol/button":0},"mol/button/-view.tree/button.view.tree.js":{"mol/button/button.view.tree":0,"mol/button":0},"mol/speck":{"mol/button/-view.tree/button.view.tree.js":-3,"mol/button":-1},"mol/speck/speck.view.tree":{"mol/speck":0},"mol/speck/-view.tree/speck.view.tree.js":{"mol/speck/speck.view.tree":0,"mol/speck":0},"mol/keyboard/code":{"mol/button":-3,"mol/hotkey":-3,"mol/textarea":-4,"mol/pick":-3},"mol/keyboard":{"mol/keyboard/code":-9007199254740991},"mol/button/minor/minor.view.tree":{"mol/button/minor":0},"mol/button/minor/-view.tree/minor.view.tree.js":{"mol/button/minor/minor.view.tree":0,"mol/button/minor":0},"mol/button/typed":{"mol/button/minor/-view.tree/minor.view.tree.js":-1,"mol/button/minor":-1},"mol/button/typed/typed.view.tree":{"mol/button/typed":0},"mol/button/typed/-view.tree/typed.view.tree.js":{"mol/button/typed/typed.view.tree":0,"mol/button/typed":0},"mol/maybe":{"mol/check":-4},"mol/check/icon/icon.view.tree":{"mol/check/icon":0},"mol/check/icon/-view.tree/icon.view.tree.js":{"mol/check/icon/icon.view.tree":0,"mol/check/icon":0},"mol/icon/brightness/4":{"mol/lights/toggle/-view.tree/toggle.view.tree.js":-3,"mol/lights/toggle":-2},"mol/icon/brightness":{"mol/icon/brightness/4":-9007199254740991},"mol/icon":{"mol/icon/brightness":-9007199254740991,"mol/icon/brightness/4":-1,"mol/icon/brightness/4/-view.tree/4.view.tree.js":-1,"mol/icon/upload":-1,"mol/icon/upload/-view.tree/upload.view.tree.js":-1,"mol/icon/clipboard":-1,"mol/icon/clipboard/-view.tree/clipboard.view.tree.js":-1,"mol/icon/clipboard/outline":-1,"mol/icon/clipboard/outline/-view.tree/outline.view.tree.js":-1,"mol/icon/eye":-1,"mol/icon/eye/-view.tree/eye.view.tree.js":-1,"mol/icon/eye/check":-1,"mol/icon/eye/check/-view.tree/check.view.tree.js":-1,"mol/icon/tick":-1,"mol/icon/tick/-view.tree/tick.view.tree.js":-1,"mol/icon/minus":-1,"mol/icon/minus/-view.tree/minus.view.tree.js":-1,"mol/icon/plus":-1,"mol/icon/plus/-view.tree/plus.view.tree.js":-1,"mol/icon/image":-1,"mol/icon/image/-view.tree/image.view.tree.js":-1,"mol/icon/image/filter":-1,"mol/icon/image/filter/-view.tree/filter.view.tree.js":-1,"mol/icon/image/filter/center/focus":-1,"mol/icon/image/filter/center/focus/-view.tree/focus.view.tree.js":-1,"mol/icon/magnify":-1,"mol/icon/magnify/-view.tree/magnify.view.tree.js":-1,"mol/icon/magnify/plus":-1,"mol/icon/magnify/plus/-view.tree/plus.view.tree.js":-1,"mol/icon/magnify/plus/outline":-1,"mol/icon/magnify/plus/outline/-view.tree/outline.view.tree.js":-1,"mol/icon/magnify/minus":-1,"mol/icon/magnify/minus/-view.tree/minus.view.tree.js":-1,"mol/icon/magnify/minus/outline":-1,"mol/icon/magnify/minus/outline/-view.tree/outline.view.tree.js":-1,"mol/icon/chevron":-1,"mol/icon/chevron/-view.tree/chevron.view.tree.js":-1,"mol/icon/youtube":-1,"mol/icon/youtube/-view.tree/youtube.view.tree.js":-1},"mol/icon/icon.view.tree":{"mol/icon":0},"mol/icon/-view.tree/icon.view.tree.js":{"mol/icon/icon.view.tree":0,"mol/icon":0},"mol/svg/root":{"mol/icon/-view.tree/icon.view.tree.js":-1,"mol/icon":-1},"mol/svg":{"mol/svg/root":-1,"mol/svg/root/-view.tree/root.view.tree.js":-1,"mol/svg/path":-1,"mol/svg/path/-view.tree/path.view.tree.js":-1},"mol/svg/svg.view.tree":{"mol/svg":0},"mol/svg/-view.tree/svg.view.tree.js":{"mol/svg/svg.view.tree":0,"mol/svg":0},"mol/state/time":{"mol/svg":-3},"mol/svg/root/root.view.tree":{"mol/svg/root":0},"mol/svg/root/-view.tree/root.view.tree.js":{"mol/svg/root/root.view.tree":0,"mol/svg/root":0},"mol/svg/path":{"mol/icon/-view.tree/icon.view.tree.js":-3,"mol/icon":-1},"mol/svg/path/-view.tree/path.view.tree.js":{"mol/svg/path":0},"mol/icon/brightness/4/-view.tree/4.view.tree.js":{"mol/icon/brightness/4":0},"mol/locale":{"mol/lights/toggle/-view.tree/toggle.view.tree.js":-3,"mol/lights/toggle":-3,"mol/text/code/-view.tree/code.view.tree.js":-3,"mol/text/code":-3,"mol/text/text/-view.tree/text.view.tree.js":-3,"mol/text/text":-3},"mol/button/open":{"optimade/cifplayer/app":-1,"optimade/cifplayer/app/-view.tree/app.view.tree.js":-3},"mol/button/open/open.view.tree":{"mol/button/open":0},"mol/button/open/-view.tree/open.view.tree.js":{"mol/button/open/open.view.tree":0,"mol/button/open":0},"mol/icon/upload":{"mol/button/open/-view.tree/open.view.tree.js":-3,"mol/button/open":-2},"mol/icon/upload/-view.tree/upload.view.tree.js":{"mol/icon/upload":0},"mol/textarea":{"optimade/cifplayer/app":-1,"optimade/cifplayer/app/-view.tree/app.view.tree.js":-3},"mol/textarea/textarea.view.tree":{"mol/textarea":0},"mol/textarea/-view.tree/textarea.view.tree.js":{"mol/textarea/textarea.view.tree":0,"mol/textarea":0},"mol/stack":{"mol/textarea/-view.tree/textarea.view.tree.js":-1,"mol/text/code/-view.tree/code.view.tree.js":-1,"mol/text/code":-1,"mol/textarea":-1},"mol/stack/stack.view.tree":{"mol/stack":0},"mol/stack/-view.tree/stack.view.tree.js":{"mol/stack/stack.view.tree":0,"mol/stack":0},"mol/syntax2":{"mol/textarea/-view.tree/textarea.view.tree.js":-3,"mol/syntax2/md":-1,"mol/textarea":-2},"mol/text/code":{"mol/textarea/-view.tree/textarea.view.tree.js":-3,"mol/textarea":-1,"mol/text/text/-view.tree/text.view.tree.js":-3,"mol/text/text":-1},"mol/text":{"mol/text/code":-9007199254740991,"mol/text/text":0,"mol/text/list":-9007199254740991,"mol/text/text/-view.tree/text.view.tree.js":-1},"mol/text/code/code.view.tree":{"mol/text/code":0},"mol/text/code/-view.tree/code.view.tree.js":{"mol/text/code/code.view.tree":0,"mol/text/code":0},"mol/text/code/line":{"mol/text/code/-view.tree/code.view.tree.js":-3,"mol/text/code":-1,"mol/text/text/-view.tree/text.view.tree.js":-3,"mol/text/text":0},"mol/text/code/line/line.view.tree":{"mol/text/code/line":0},"mol/text/code/line/-view.tree/line.view.tree.js":{"mol/text/code/line/line.view.tree":0,"mol/text/code/line":0},"mol/paragraph":{"mol/text/code/line/-view.tree/line.view.tree.js":-1,"mol/dimmer/-view.tree/dimmer.view.tree.js":-1,"mol/dimmer":-1,"mol/text/code/line":-1,"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"optimade/cifplayer/player":-1,"mol/text/text/-view.tree/text.view.tree.js":-1,"mol/text/list/-view.tree/list.view.tree.js":-1,"mol/text/list":-1,"mol/text/text":-1},"mol/paragraph/paragraph.view.tree":{"mol/paragraph":0},"mol/paragraph/-view.tree/paragraph.view.tree.js":{"mol/paragraph/paragraph.view.tree":0,"mol/paragraph":0},"mol/text/code/token":{"mol/text/code/line/-view.tree/line.view.tree.js":-3,"mol/text/code/line":-1},"mol/dimmer":{"mol/text/code/token":-1,"mol/text/code/token/-view.tree/token.view.tree.js":-1,"mol/grid/-view.tree/grid.view.tree.js":-3,"mol/grid":-1,"mol/text/text/-view.tree/text.view.tree.js":-3,"mol/text/text":-1},"mol/dimmer/dimmer.view.tree":{"mol/dimmer":0},"mol/dimmer/-view.tree/dimmer.view.tree.js":{"mol/dimmer/dimmer.view.tree":0,"mol/dimmer":0},"mol/regexp":{"mol/dimmer":-3},"mol/type/merge":{"mol/regexp":-2},"mol/type/equals":{"mol/type/merge":-3},"mol/type/intersect":{"mol/regexp":-2},"mol/unicode":{"mol/regexp":-2},"mol/text/code/token/-view.tree/token.view.tree.js":{"mol/text/code/token":0},"mol/syntax2/md":{"mol/text/code/line":-3,"mol/text/code":-3,"mol/textarea":-3,"mol/text/text":-3},"mol/list":{"mol/text/code/-view.tree/code.view.tree.js":-3,"mol/text/code":-1,"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"mol/card/-view.tree/card.view.tree.js":-1,"mol/card":-1,"optimade/cifplayer/player":-1,"mol/text/text/-view.tree/text.view.tree.js":-1,"mol/grid/-view.tree/grid.view.tree.js":-1,"mol/grid":-1,"mol/expander/-view.tree/expander.view.tree.js":-1,"mol/expander":-1,"mol/text/text":-1},"mol/list/list.view.tree":{"mol/list":0},"mol/list/-view.tree/list.view.tree.js":{"mol/list/list.view.tree":0,"mol/list":0},"mol/support/css":{"mol/list":-3,"mol/text/code":-3},"mol/support":{"mol/support/css":-9007199254740991},"mol/button/copy":{"mol/text/code/-view.tree/code.view.tree.js":-3,"mol/text/code":-1},"mol/button/copy/copy.view.tree":{"mol/button/copy":0},"mol/button/copy/-view.tree/copy.view.tree.js":{"mol/button/copy/copy.view.tree":0,"mol/button/copy":0},"mol/blob":{"mol/button/copy/-view.tree/copy.view.tree.js":-3,"mol/button/copy":-1},"mol/icon/clipboard/outline":{"mol/button/copy/-view.tree/copy.view.tree.js":-3,"mol/button/copy":-2},"mol/icon/clipboard":{"mol/icon/clipboard/outline":-9007199254740991},"mol/icon/clipboard/-view.tree/clipboard.view.tree.js":{"mol/icon/clipboard":0},"mol/icon/clipboard/outline/-view.tree/outline.view.tree.js":{"mol/icon/clipboard/outline":0},"mol/html/encode":{"mol/button/copy":-3},"mol/html":{"mol/html/encode":-9007199254740991},"mol/string":{"mol/textarea/-view.tree/textarea.view.tree.js":-1,"mol/textarea":-1,"mol/number/-view.tree/number.view.tree.js":-3,"mol/number":-1},"mol/string/string.view.tree":{"mol/string":0},"mol/string/-view.tree/string.view.tree.js":{"mol/string/string.view.tree":0,"mol/string":0},"mol/hotkey":{"mol/string/-view.tree/string.view.tree.js":-3,"mol/string":-1},"mol/hotkey/hotkey.view.tree":{"mol/hotkey":0},"mol/hotkey/-view.tree/hotkey.view.tree.js":{"mol/hotkey/hotkey.view.tree":0,"mol/hotkey":0},"mol/page":{"optimade/cifplayer/app":-1,"optimade/cifplayer/app/-view.tree/app.view.tree.js":-3},"mol/page/-view.tree/page.view.tree.js":{"mol/page":0},"optimade/cifplayer/player":{"optimade/cifplayer/app":-1,"optimade/cifplayer/app/-view.tree/app.view.tree.js":-3},"optimade/cifplayer/player/player.view.tree":{"optimade/cifplayer/player":0},"optimade/cifplayer/player/-view.tree/player.view.tree.js":{"optimade/cifplayer/player/player.view.tree":0,"optimade/cifplayer/player":0},"optimade/cifplayer/lib/three/view":{"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"optimade/cifplayer/player":-1},"optimade/cifplayer/lib/three":{"optimade/cifplayer/lib/three/view":-9007199254740991},"optimade/cifplayer/lib":{"optimade/cifplayer/lib/three":-9007199254740991},"optimade/cifplayer/lib/three/_three.js":{"optimade/cifplayer/lib/three":0},"optimade/cifplayer/lib/three/view/-view.tree/view.view.tree.js":{"optimade/cifplayer/lib/three/view":0},"mol/icon/eye/check":{"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"optimade/cifplayer/player":-2},"mol/icon/eye":{"mol/icon/eye/check":-9007199254740991},"mol/icon/eye/-view.tree/eye.view.tree.js":{"mol/icon/eye":0},"mol/icon/eye/check/-view.tree/check.view.tree.js":{"mol/icon/eye/check":0},"mol/check/box":{"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"optimade/cifplayer/player":-1},"mol/check/box/box.view.tree":{"mol/check/box":0},"mol/check/box/-view.tree/box.view.tree.js":{"mol/check/box/box.view.tree":0,"mol/check/box":0},"mol/icon/tick":{"mol/check/box/-view.tree/box.view.tree.js":-3,"mol/check/box":-2},"mol/icon/tick/-view.tree/tick.view.tree.js":{"mol/icon/tick":0},"mol/pick":{"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"optimade/cifplayer/player":-1},"mol/pick/pick.view.tree":{"mol/pick":0},"mol/pick/-view.tree/pick.view.tree.js":{"mol/pick/pick.view.tree":0,"mol/pick":0},"mol/pop":{"mol/pick/-view.tree/pick.view.tree.js":-1,"mol/pick":-1},"mol/pop/pop.view.tree":{"mol/pop":0},"mol/pop/-view.tree/pop.view.tree.js":{"mol/pop/pop.view.tree":0,"mol/pop":0},"mol/number":{"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"optimade/cifplayer/player":-1},"mol/number/number.view.tree":{"mol/number":0},"mol/number/-view.tree/number.view.tree.js":{"mol/number/number.view.tree":0,"mol/number":0},"mol/icon/minus":{"mol/number/-view.tree/number.view.tree.js":-3,"mol/number":-2},"mol/icon/minus/-view.tree/minus.view.tree.js":{"mol/icon/minus":0},"mol/icon/plus":{"mol/number/-view.tree/number.view.tree.js":-3,"mol/number":-2},"mol/icon/plus/-view.tree/plus.view.tree.js":{"mol/icon/plus":0},"mol/icon/image/filter/center/focus":{"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"optimade/cifplayer/player":-2},"mol/icon/image/filter/center":{"mol/icon/image/filter/center/focus":-9007199254740991},"mol/icon/image/filter":{"mol/icon/image/filter/center":-9007199254740991},"mol/icon/image":{"mol/icon/image/filter":-9007199254740991},"mol/icon/image/-view.tree/image.view.tree.js":{"mol/icon/image":0},"mol/icon/image/filter/-view.tree/filter.view.tree.js":{"mol/icon/image/filter":0},"mol/icon/image/filter/center/focus/-view.tree/focus.view.tree.js":{"mol/icon/image/filter/center/focus":0},"mol/icon/magnify/plus/outline":{"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"optimade/cifplayer/player":-2},"mol/icon/magnify/plus":{"mol/icon/magnify/plus/outline":-9007199254740991},"mol/icon/magnify":{"mol/icon/magnify/plus":-9007199254740991,"mol/icon/magnify/minus":-9007199254740991},"mol/icon/magnify/-view.tree/magnify.view.tree.js":{"mol/icon/magnify":0},"mol/icon/magnify/plus/-view.tree/plus.view.tree.js":{"mol/icon/magnify/plus":0},"mol/icon/magnify/plus/outline/-view.tree/outline.view.tree.js":{"mol/icon/magnify/plus/outline":0},"mol/icon/magnify/minus/outline":{"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"optimade/cifplayer/player":-2},"mol/icon/magnify/minus":{"mol/icon/magnify/minus/outline":-9007199254740991},"mol/icon/magnify/minus/-view.tree/minus.view.tree.js":{"mol/icon/magnify/minus":0},"mol/icon/magnify/minus/outline/-view.tree/outline.view.tree.js":{"mol/icon/magnify/minus/outline":0},"mol/switch":{"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"optimade/cifplayer/player":-1},"mol/switch/switch.view.tree":{"mol/switch":0},"mol/switch/-view.tree/switch.view.tree.js":{"mol/switch/switch.view.tree":0,"mol/switch":0},"mol/check/list":{"mol/switch/-view.tree/switch.view.tree.js":-1,"mol/switch":-1},"mol/check/list/list.view.tree":{"mol/check/list":0},"mol/check/list/-view.tree/list.view.tree.js":{"mol/check/list/list.view.tree":0,"mol/check/list":0},"mol/state/session":{"mol/switch":-3,"mol/grid":-3},"mol/card":{"optimade/cifplayer/player/-view.tree/player.view.tree.js":-3,"optimade/cifplayer/player":-1},"mol/card/card.view.tree":{"mol/card":0},"mol/card/-view.tree/card.view.tree.js":{"mol/card/card.view.tree":0,"mol/card":0},"mol/text/text":{"optimade/cifplayer/app":-1,"mol/text/list/-view.tree/list.view.tree.js":-1,"mol/text/list":-1,"optimade/cifplayer/app/-view.tree/app.view.tree.js":-3},"mol/text/text/text.view.tree":{"mol/text/text":0},"mol/text/text/-view.tree/text.view.tree.js":{"mol/text/text/text.view.tree":0,"mol/text/text":0},"mol/text/list":{"optimade/cifplayer/app":-3},"mol/text/list/list.view.tree":{"mol/text/list":0},"mol/text/list/-view.tree/list.view.tree.js":{"mol/text/list/list.view.tree":0,"mol/text/list":0},"mol/grid":{"mol/text/text/-view.tree/text.view.tree.js":-3,"mol/text/text":-1},"mol/grid/grid.view.tree":{"mol/grid":0},"mol/grid/-view.tree/grid.view.tree.js":{"mol/grid/grid.view.tree":0,"mol/grid":0},"mol/float":{"mol/grid/-view.tree/grid.view.tree.js":-3,"mol/grid":-1},"mol/float/float.view.tree":{"mol/float":0},"mol/float/-view.tree/float.view.tree.js":{"mol/float/float.view.tree":0,"mol/float":0},"mol/check/expand":{"mol/grid/-view.tree/grid.view.tree.js":-3,"mol/grid":-1,"mol/expander/-view.tree/expander.view.tree.js":-3,"mol/expander":-1},"mol/check/expand/expand.view.tree":{"mol/check/expand":0},"mol/check/expand/-view.tree/expand.view.tree.js":{"mol/check/expand/expand.view.tree":0,"mol/check/expand":0},"mol/icon/chevron":{"mol/check/expand/-view.tree/expand.view.tree.js":-3,"mol/check/expand":-2},"mol/icon/chevron/-view.tree/chevron.view.tree.js":{"mol/icon/chevron":0},"mol/embed/any":{"mol/text/text/-view.tree/text.view.tree.js":-3,"mol/text/text":-1},"mol/embed":{"mol/embed/any":-9007199254740991,"mol/embed/native":-9007199254740991,"mol/embed/youtube":-9007199254740991,"mol/embed/service":-9007199254740991,"mol/embed/rutube":-9007199254740991},"mol/embed/any/any.view.tree":{"mol/embed/any":0},"mol/embed/any/-view.tree/any.view.tree.js":{"mol/embed/any/any.view.tree":0,"mol/embed/any":0},"mol/embed/native":{"mol/embed/any/-view.tree/any.view.tree.js":-3,"mol/frame/-view.tree/frame.view.tree.js":-1,"mol/frame":-1,"mol/embed/any":-1},"mol/embed/native/native.view.tree":{"mol/embed/native":0},"mol/embed/native/-view.tree/native.view.tree.js":{"mol/embed/native/native.view.tree":0,"mol/embed/native":0},"mol/wait/timeout":{"mol/embed/native":-3},"mol/wait":{"mol/wait/timeout":-9007199254740991},"mol/promise/promise":{"mol/wait/timeout":-2},"mol/embed/youtube":{"mol/embed/any/-view.tree/any.view.tree.js":-3,"mol/embed/any":-1},"mol/embed/youtube/youtube.view.tree":{"mol/embed/youtube":0},"mol/embed/youtube/-view.tree/youtube.view.tree.js":{"mol/embed/youtube/youtube.view.tree":0,"mol/embed/youtube":0},"mol/embed/service":{"mol/embed/youtube/-view.tree/youtube.view.tree.js":-1,"mol/embed/youtube":-1,"mol/embed/rutube/-view.tree/rutube.view.tree.js":-1,"mol/embed/rutube":-1},"mol/embed/service/service.view.tree":{"mol/embed/service":0},"mol/embed/service/-view.tree/service.view.tree.js":{"mol/embed/service/service.view.tree":0,"mol/embed/service":0},"mol/icon/youtube":{"mol/embed/service/-view.tree/service.view.tree.js":-3,"mol/embed/service":-2},"mol/icon/youtube/-view.tree/youtube.view.tree.js":{"mol/icon/youtube":0},"mol/frame":{"mol/embed/service/-view.tree/service.view.tree.js":-3,"mol/embed/service":-1},"mol/frame/frame.view.tree":{"mol/frame":0},"mol/frame/-view.tree/frame.view.tree.js":{"mol/frame/frame.view.tree":0,"mol/frame":0},"mol/embed/rutube":{"mol/embed/any/-view.tree/any.view.tree.js":-3,"mol/embed/any":-1},"mol/embed/rutube/rutube.view.tree":{"mol/embed/rutube":0},"mol/embed/rutube/-view.tree/rutube.view.tree.js":{"mol/embed/rutube/rutube.view.tree":0,"mol/embed/rutube":0},"mol/expander":{"mol/text/text/-view.tree/text.view.tree.js":-3,"mol/text/text":-1},"mol/expander/expander.view.tree":{"mol/expander":0},"mol/expander/-view.tree/expander.view.tree.js":{"mol/expander/expander.view.tree":0,"mol/expander":0},"optimade/cifplayer/app/-view.tree/app.view.tree.js":{"optimade/cifplayer/app":0},"optimade/cifplayer/app":{}},"deps_out":{"optimade/cifplayer/app":{"optimade/cifplayer":-9007199254740991,"mol/drop":-1,"mol/theme/auto":-2,"mol/book2":-1,"mol/link/iconed":-1,"mol/lights/toggle":-2,"mol/button/open":-1,"mol/textarea":-1,"mol/view/view":-1,"mol/page":-1,"optimade/cifplayer/player":-1,"mol/text/text":-1,"mol/button/minor":-1,"mol/mem":-1,"mol/type/enforce":-1,"optimade/cifplayer/app/-view.tree/app.view.tree.js":0,"mol/style/define":-1,"mol/theme":-4,"mol/gap":-4,"mol/text/list":-3},"optimade/cifplayer":{"optimade":-9007199254740991},"optimade":{"":-9007199254740991},"mol/drop":{"mol":-9007199254740991,"mol/drop/drop.view.tree":0,"mol/mem":-1,"mol/ghost":-1,"mol/drop/-view.tree/drop.view.tree.js":0},"mol":{"":-9007199254740991},"mol/drop/drop.view.tree":{"mol/drop/-view.tree/drop.view.tree.js":0},"mol/drop/-view.tree/drop.view.tree.js":{"mol/ghost":-1,"mol/mem":-1},"mol/ghost":{"mol":-9007199254740991,"mol/ghost/ghost.view.tree":0,"mol/mem":-1,"mol/dom/render/attributes":-3,"mol/dom/render/styles":-3,"mol/dom/render/fields":-3,"mol/fail/log":-4,"mol/view/view":-1,"mol/ghost/-view.tree/ghost.view.tree.js":0},"mol/ghost/ghost.view.tree":{"mol/ghost/-view.tree/ghost.view.tree.js":0},"mol/ghost/-view.tree/ghost.view.tree.js":{"mol/view/view":-1,"mol/mem":-1,"mol/plugin":-6},"mol/view/view":{"mol/view":0,"mol/window":-2,"mol/object":-1,"mol/mem":-2,"mol/fail/log":-4,"mol/dom/context":-3,"mol/view/selection":-3,"mol/memo":-2,"mol/dom/qname":-3,"mol/wire/probe":-3,"mol/wire/watch":-4,"mol/const":-3,"mol/wire/solid":-3,"mol/dom/render/attributes":-3,"mol/dom/render/events":-3,"mol/promise/like":-4,"mol/dom/render/styles":-3,"mol/dom/render/children":-3,"mol/dom/render/fields":-3,"mol/func/name":-4,"mol/owning":-3,"mol/wire/fiber":-3,"mol/wire/async":-3,"mol/dev/format":-2,"mol/fail/hidden":-4,"mol/after/timeout":-3,"mol/type/pick":-1,"mol/style/attach":0,"mol/theme":-1,"mol/gap":-1,"mol/dom":-9007199254740991},"mol/view":{"mol":-9007199254740991},"mol/window":{"mol":-9007199254740991,"mol/object":-1},"mol/object":{"mol":-9007199254740991,"mol/object2":-1},"mol/object2":{"mol":-9007199254740991,"mol/ambient":-2,"mol/owning":-3,"mol/fail/hidden":-3,"mol/type/writable":-3,"mol/func/name":-3},"mol/ambient":{"mol":-9007199254740991},"mol/owning":{"mol":-9007199254740991,"mol/delegate":-3},"mol/delegate":{"mol":-9007199254740991},"mol/fail/hidden":{"mol/fail":-9007199254740991},"mol/fail":{"mol":-9007199254740991},"mol/type/writable":{"mol/type":-9007199254740991},"mol/type":{"mol":-9007199254740991},"mol/func/name":{"mol/func":-9007199254740991},"mol/func":{"mol":-9007199254740991},"mol/mem":{"mol":-9007199254740991,"mol/wire/solo":-1,"mol/wire/plex":-1},"mol/wire/solo":{"mol/wire":-5,"mol/wire/atom":-4,"mol/wire/fiber":-5,"mol/type/tail":-2},"mol/wire":{"mol":-9007199254740991,"mol/wire/sub":-1},"mol/wire/sub":{"mol/wire/pub":-1,"mol/wire/cursor":-2},"mol/wire/pub":{"mol/fail":-4,"mol/wire/cursor":-2},"mol/wire/cursor":{},"mol/wire/atom":{"mol/wire":-4,"mol/wire/fiber":-1,"mol/func/name":-3,"mol/key":-3,"mol/after/frame":-2,"mol/wire/cursor":-3,"mol/wire/method":-2,"mol/type/foot":-3,"mol/compare/deep":-5,"mol/fail/log":-5,"mol/owning":-4,"mol/promise/like":-3},"mol/wire/fiber":{"mol/wire":-9007199254740991,"mol/wire/pub/sub":-1,"mol/after/tick":-2,"mol/wire/cursor":-2,"mol/promise/like":-3,"mol/dev/format":-2,"mol/owning":-3,"mol/wire/pub":-5,"mol/fail/hidden":-4},"mol/wire/pub/sub":{"mol/wire/pub":-1,"mol/wire/sub":-1,"mol/wire/cursor":-2,"mol/wire":-3,"mol/fail":-3,"mol/dev/format":-2},"mol/dev/format":{"mol/dev":-9007199254740991},"mol/dev":{"mol":-9007199254740991},"mol/after/tick":{"mol/after":-9007199254740991,"mol/object2":-1},"mol/after":{"mol":-9007199254740991},"mol/promise/like":{"mol/promise":-9007199254740991},"mol/promise":{"mol":-9007199254740991},"mol/key":{"mol":-9007199254740991,"mol/guid":-3},"mol/guid":{"mol":-9007199254740991},"mol/after/frame":{"mol/after":-9007199254740991,"mol/after/timeout":-1},"mol/after/timeout":{"mol/after":-9007199254740991,"mol/object2":-1},"mol/wire/method":{"mol/wire":-9007199254740991,"mol/wire/task":-2},"mol/wire/task":{"mol/wire":-4,"mol/wire/fiber":-1,"mol/compare/deep":-5,"mol/log3":-5,"mol/promise/like":-3,"mol/wire/cursor":-3,"mol/owning":-4},"mol/compare/deep":{"mol/compare":-9007199254740991},"mol/compare":{"mol":-9007199254740991},"mol/log3":{"mol":-9007199254740991,"mol/log3/log3.ts":0,"mol/tree2/from/json":-3,"mol/term/color":-1},"mol/log3/log3.ts":{},"mol/tree2/from/json":{"mol/tree2/from":-9007199254740991,"mol/span":-1,"mol/tree2":-1},"mol/tree2/from":{"mol/tree2":-9007199254740991,"mol/tree2/from/string":-2},"mol/tree2":{"mol":-9007199254740991,"mol/span":-2,"mol/fail":-4,"mol/tree2/to/string":-3,"mol/fail/hidden":-4},"mol/span":{"mol":-9007199254740991,"mol/object2":-1,"mol/fail":-3},"mol/tree2/from/string":{"mol/tree2":-1,"mol/span":-2,"mol/fail":-4,"mol/error/syntax":-4},"mol/error/syntax":{"mol/error":-9007199254740991,"mol/span":-3},"mol/error":{"mol":-9007199254740991},"mol/tree2/to/string":{"mol/tree2/to":-9007199254740991},"mol/tree2/to":{},"mol/term/color":{"mol/term":-9007199254740991},"mol/term":{"mol":-9007199254740991},"mol/type/foot":{"mol/type":-9007199254740991,"mol/type/tail":-1.25},"mol/type/tail":{"mol/type":-9007199254740991},"mol/fail/log":{"mol/fail":-9007199254740991,"mol/promise/like":-2,"mol/fail/catch":-2},"mol/fail/catch":{"mol/fail":-9007199254740991,"mol/promise/like":-2,"mol/fail/hidden":-2},"mol/wire/plex":{"mol/wire":-5,"mol/wire/atom":-4,"mol/wire/fiber":-5},"mol/dom/context":{"mol/dom/context/context.ts":0,"node":-1,"mol/exec":-3},"mol/dom":{"mol":-9007199254740991,"mol/dom/context":-1},"mol/dom/context/context.ts":{},"node":{"":-9007199254740991,"node/node.ts":0,"mol/fail/catch":-3,"mol/fail/log":-3},"mol/exec":{"mol":-9007199254740991,"mol/run":-2},"mol/run":{"mol":-9007199254740991,"mol/error/mix":-1,"node":-1,"mol/object":-1,"mol/env":-3,"mol/wire":-3,"mol/wire/sync":-3,"mol/log3":-3},"mol/error/mix":{"mol/error":-9007199254740991,"mol/func/name":-2},"mol/env":{"mol":-9007199254740991,"mol/env/env.ts":0},"mol/env/env.ts":{},"mol/wire/sync":{"mol/wire":-9007199254740991,"mol/func/name":-2,"mol/wire/task":-4},"mol/view/selection":{"mol/view":-9007199254740991,"mol/object":-1,"mol/mem":-2,"mol/dom/context":-3,"mol/after/tick":-3},"mol/memo":{"mol":-9007199254740991,"mol/wrapper":-1},"mol/wrapper":{"mol":-9007199254740991,"mol/object2":-1},"mol/dom/qname":{"mol/dom":-9007199254740991},"mol/wire/probe":{"mol/wire":-9007199254740991,"mol/wire/fiber":-2},"mol/wire/watch":{"mol/wire":-2,"mol/wire/atom":-2,"mol/fail":-3},"mol/const":{"mol":-9007199254740991,"mol/dev/format":-2},"mol/wire/solid":{"mol/wire":-2,"mol/wire/fiber":-2,"mol/wire/pub/sub":-1},"mol/dom/render/attributes":{"mol/dom/render":-9007199254740991},"mol/dom/render":{"mol/dom":-9007199254740991},"mol/dom/render/events":{"mol/dom/render":-9007199254740991},"mol/plugin":{"mol":-9007199254740991,"mol/view/view":-1,"mol/owning":-3,"mol/wire/fiber":-3},"mol/dom/render/styles":{"mol/dom/render":-9007199254740991},"mol/dom/render/children":{"mol/dom/render":-9007199254740991,"mol/dom/context":-3},"mol/dom/render/fields":{"mol/dom/render":-9007199254740991},"mol/wire/async":{"mol/wire":-9007199254740991,"mol/wire/fiber":-2,"mol/wire/task":-2},"mol/type/pick":{"mol/type":-9007199254740991,"mol/type/keys/extract":-3},"mol/type/keys/extract":{"mol/type/keys":-9007199254740991},"mol/type/keys":{"mol/type":-9007199254740991},"mol/style/attach":{"mol/style":-9007199254740991,"mol/dom/context":-2},"mol/style":{"mol":-9007199254740991},"mol/theme":{"mol":-9007199254740991,"mol/style/prop":-1,"mol/style/attach":0},"mol/style/prop":{"mol/style":-9007199254740991,"mol/style/func":-2,"mol/style/properties":-3},"mol/style/func":{"mol/style":-9007199254740991,"mol/style/unit":-1,"mol/decor":-1},"mol/style/unit":{"mol/style":-9007199254740991,"mol/decor":-1},"mol/decor":{"mol":-9007199254740991},"mol/style/properties":{"mol/style":-9007199254740991,"mol/type/override":-1,"mol/style/func":-1,"mol/style/unit":-1},"mol/type/override":{"mol/type":-9007199254740991},"mol/gap":{"mol":-9007199254740991,"mol/style/prop":-1,"mol/style/attach":0},"mol/theme/auto":{"mol/theme":-3,"mol/theme/auto/auto.view.tree":0,"mol/lights":-3,"mol/plugin":-1,"mol/theme/auto/-view.tree/auto.view.tree.js":0},"mol/theme/auto/auto.view.tree":{"mol/theme/auto/-view.tree/auto.view.tree.js":0},"mol/theme/auto/-view.tree/auto.view.tree.js":{"mol/plugin":-1},"mol/lights":{"mol":-9007199254740991,"mol/state/arg":-2,"mol/media":-2,"mol/state/local":-3},"mol/state/arg":{"mol/state":-9007199254740991,"mol/state/arg/arg.ts":0,"mol/object":-1,"mol/mem":-2,"mol/action":-2},"mol/state":{"mol":-9007199254740991},"mol/action":{"mol":-9007199254740991,"mol/wire/method":-1},"mol/media":{"mol":-9007199254740991,"mol/object2":-1,"mol/mem":-2,"mol/dom/context":-3},"mol/state/local":{"mol/state":-9007199254740991,"mol/object":-1,"mol/dom/context":-4,"mol/mem":-2,"mol/storage":-4,"mol/state/local/local.ts":0,"node":-3,"mol/file":-3},"mol/storage":{"mol":-9007199254740991,"mol/object2":-1,"mol/mem":-2,"mol/dom/context":-3,"mol/mem/persist":-3,"mol/mem/cached":-3,"mol/log3":-5,"mol/wire/sync":-3},"mol/mem/persist":{"mol/mem":-9007199254740991,"mol/wire/solid":-1},"mol/mem/cached":{"mol/mem":-9007199254740991,"mol/wire/probe":-1},"mol/state/local/local.ts":{"mol/object":-1,"mol/dom/context":-4,"mol/mem":-2,"mol/storage":-4},"mol/file":{"mol":-9007199254740991,"mol/file/base":-1,"mol/file/file.ts":0,"node":-1,"mol/fail":-2,"mol/mem":-2,"mol/fail/log":-3,"mol/wire/async":-4,"mol/action":-2,"mol/fail/catch":-4,"mol/fail/hidden":-4,"mol/promise/like":-4,"node_modules":-3},"mol/file/base":{"mol/object":-1,"mol/mem":-2,"mol/const":-4,"mol/action":-2,"mol/after/timeout":-2,"mol/wire/async":-4,"mol/wire/probe":-5,"mol/fail/catch":-4,"mol/fail/log":-5,"mol/lock":-2,"mol/promise/like":-4,"mol/fail/hidden":-4,"mol/mem/cached":-3,"mol/compare/array":-3,"mol/log3":-4,"mol/charset/decode":-4,"mol/charset/encode":-4,"mol/file/transaction":-2},"mol/lock":{"mol":-9007199254740991,"mol/object":-1,"mol/wire":-3,"mol/wire/sync":-2},"mol/compare/array":{"mol/compare":-9007199254740991},"mol/charset/decode":{"mol/charset":-9007199254740991,"mol/charset/encoding":-1},"mol/charset":{"mol":-9007199254740991},"mol/charset/encoding":{"mol/charset":-9007199254740991},"mol/charset/encode":{"mol/charset":-9007199254740991,"node":-1},"mol/file/transaction":{"mol/object":-1,"mol/file/transaction/transaction.ts":0,"node":-2,"mol/mem":-2,"mol/wire/solid":-3},"mol/file/transaction/transaction.ts":{"mol/object":-1},"mol/file/file.ts":{"mol/file/base":-1},"node_modules":{"":-9007199254740991},"mol/book2":{"mol":-9007199254740991,"mol/book2/book2.view.tree":0,"mol/fail/log":-5,"mol/mem":-1,"mol/mem/cached":-3,"mol/after/tick":-4,"mol/view/view":0,"mol/style/attach":0,"mol/theme":-1,"mol/layer":-1,"mol/scroll":-1,"mol/type/enforce":-1,"mol/book2/-view.tree/book2.view.tree.js":0},"mol/book2/book2.view.tree":{"mol/book2/-view.tree/book2.view.tree.js":0},"mol/book2/-view.tree/book2.view.tree.js":{"mol/scroll":-1,"mol/view/view":-3,"mol/mem":-1},"mol/scroll":{"mol":-9007199254740991,"mol/scroll/scroll.view.tree":0,"mol/mem":-1,"mol/print":-3,"mol/view/view":-1,"mol/scroll/-view.tree/scroll.view.tree.js":0,"mol/style/unit":-1,"mol/style/define":-1},"mol/scroll/scroll.view.tree":{"mol/scroll/-view.tree/scroll.view.tree.js":0},"mol/scroll/-view.tree/scroll.view.tree.js":{"mol/view/view":-1,"mol/mem":-1},"mol/print":{"mol":-9007199254740991,"mol/object":-1,"mol/mem":-2,"mol/dom/listener":-3,"mol/dom/context":-3},"mol/dom/listener":{"mol/dom":-9007199254740991,"mol/object":-1},"mol/style/define":{"mol/style":-9007199254740991,"mol/view/view":-2,"mol/style/guard":-2,"mol/style/attach":-2,"mol/style/sheet":-3},"mol/style/guard":{"mol/style":-9007199254740991,"mol/view/view":-1,"mol/style/properties":-1,"mol/style/pseudo":-1,"mol/type/keys/extract":-1,"mol/type/error":-2},"mol/style/pseudo":{"mol/style":-9007199254740991},"mol/type/error":{"mol/type":-9007199254740991},"mol/style/sheet":{"mol/style":-9007199254740991,"mol/view/view":-2,"mol/style/guard":-2,"mol/dom/qname":-2,"mol/ambient":-2,"mol/func/name":-2},"mol/layer":{"mol":-9007199254740991,"mol/style/prop":-1,"mol/style/attach":0},"mol/type/enforce":{"mol/type":-9007199254740991},"mol/link/iconed":{"mol/link":-1,"mol/link/iconed/iconed.view.tree":0,"mol/mem":-1,"mol/state/arg":-3,"mol/style/attach":0,"mol/theme":0,"mol/gap":-1,"mol/image":-1,"mol/type/enforce":-1,"mol/link/iconed/-view.tree/iconed.view.tree.js":0},"mol/link":{"mol":-9007199254740991,"mol/link/link.view.tree":0,"mol/mem":-1,"mol/state/arg":-3,"mol/dom/context":-3,"mol/fail/log":-4,"mol/view/view":-1,"mol/view":-2,"mol/link/-view.tree/link.view.tree.js":0,"mol/style/unit":-1,"mol/style/define":-1,"mol/theme":-2,"mol/gap":-2},"mol/link/link.view.tree":{"mol/link/-view.tree/link.view.tree.js":0},"mol/link/-view.tree/link.view.tree.js":{"mol/view/view":-1,"mol/mem":-1},"mol/link/iconed/iconed.view.tree":{"mol/link/iconed/-view.tree/iconed.view.tree.js":0},"mol/link/iconed/-view.tree/iconed.view.tree.js":{"mol/link":-1,"mol/image":-3,"mol/mem":-1},"mol/image":{"mol":-9007199254740991,"mol/image/image.view.tree":0,"mol/mem":-1,"mol/style/attach":0,"mol/gap":-1,"mol/view/view":-1,"mol/image/-view.tree/image.view.tree.js":0},"mol/image/image.view.tree":{"mol/image/-view.tree/image.view.tree.js":0},"mol/image/-view.tree/image.view.tree.js":{"mol/view/view":-1,"mol/mem":-1},"mol/lights/toggle":{"mol/lights":-3,"mol/lights/toggle/toggle.view.tree":0,"mol/check/icon":-1,"mol/icon/brightness/4":-2,"mol/locale":-3,"mol/mem":-1,"mol/lights/toggle/-view.tree/toggle.view.tree.js":0},"mol/lights/toggle/toggle.view.tree":{"mol/lights/toggle/-view.tree/toggle.view.tree.js":0},"mol/lights/toggle/-view.tree/toggle.view.tree.js":{"mol/check/icon":-1,"mol/icon/brightness/4":-3,"mol/locale":-3,"mol/mem":-1},"mol/check/icon":{"mol/check":0,"mol/style/attach":0,"mol/check/icon/icon.view.tree":0,"mol/theme":-1,"mol/check/icon/-view.tree/icon.view.tree.js":0},"mol/check":{"mol":-9007199254740991,"mol/style/attach":0,"mol/check/check.view.tree":0,"mol/maybe":-4,"mol/view":-2,"mol/button/minor":-1,"mol/view/view":-1,"mol/mem":-1,"mol/type/enforce":-1,"mol/check/-view.tree/check.view.tree.js":0},"mol/check/check.view.tree":{"mol/check/-view.tree/check.view.tree.js":0},"mol/check/-view.tree/check.view.tree.js":{"mol/button/minor":-1,"mol/view/view":-3,"mol/mem":-1},"mol/button/minor":{"mol/button":-9007199254740991,"mol/style/attach":0,"mol/button/minor/minor.view.tree":0,"mol/theme":-1,"mol/button/typed":-1,"mol/button/minor/-view.tree/minor.view.tree.js":0},"mol/button":{"mol":-9007199254740991,"mol/button/button.view.tree":0,"mol/mem":-1,"mol/fail/hidden":-4,"mol/keyboard/code":-3,"mol/fail/log":-4,"mol/style/attach":0,"mol/gap":-1,"mol/layer":-1,"mol/view/view":-1,"mol/speck":-1,"mol/type/enforce":-1,"mol/view":-2,"mol/button/-view.tree/button.view.tree.js":0},"mol/button/button.view.tree":{"mol/button/-view.tree/button.view.tree.js":0},"mol/button/-view.tree/button.view.tree.js":{"mol/view/view":-1,"mol/speck":-3,"mol/mem":-1},"mol/speck":{"mol":-9007199254740991,"mol/style/attach":0,"mol/speck/speck.view.tree":0,"mol/layer":-1,"mol/view/view":-1,"mol/theme":-3,"mol/speck/-view.tree/speck.view.tree.js":0},"mol/speck/speck.view.tree":{"mol/speck/-view.tree/speck.view.tree.js":0},"mol/speck/-view.tree/speck.view.tree.js":{"mol/view/view":-1,"mol/theme":-3},"mol/keyboard/code":{"mol/keyboard":-9007199254740991},"mol/keyboard":{"mol":-9007199254740991},"mol/button/minor/minor.view.tree":{"mol/button/minor/-view.tree/minor.view.tree.js":0},"mol/button/minor/-view.tree/minor.view.tree.js":{"mol/button/typed":-1},"mol/button/typed":{"mol/button":-1,"mol/style/attach":0,"mol/button/typed/typed.view.tree":0,"mol/gap":-1,"mol/theme":-1,"mol/button/typed/-view.tree/typed.view.tree.js":0},"mol/button/typed/typed.view.tree":{"mol/button/typed/-view.tree/typed.view.tree.js":0},"mol/button/typed/-view.tree/typed.view.tree.js":{"mol/button":-1},"mol/maybe":{"mol":-9007199254740991},"mol/check/icon/icon.view.tree":{"mol/check/icon/-view.tree/icon.view.tree.js":0},"mol/check/icon/-view.tree/icon.view.tree.js":{"mol/check":-1},"mol/icon/brightness/4":{"mol/icon/brightness":-9007199254740991,"mol/icon":-1,"mol/icon/brightness/4/-view.tree/4.view.tree.js":0},"mol/icon/brightness":{"mol/icon":-9007199254740991},"mol/icon":{"mol":-9007199254740991,"mol/style/attach":0,"mol/icon/icon.view.tree":0,"mol/theme":-1,"mol/svg/root":-1,"mol/svg/path":-1,"mol/mem":-1,"mol/type/enforce":-1,"mol/icon/-view.tree/icon.view.tree.js":0},"mol/icon/icon.view.tree":{"mol/icon/-view.tree/icon.view.tree.js":0},"mol/icon/-view.tree/icon.view.tree.js":{"mol/svg/root":-1,"mol/svg/path":-3,"mol/mem":-1},"mol/svg/root":{"mol/svg":-1,"mol/style/attach":0,"mol/svg/root/root.view.tree":0,"mol/svg/root/-view.tree/root.view.tree.js":0},"mol/svg":{"mol":-9007199254740991,"mol/svg/svg.view.tree":0,"mol/mem":-2,"mol/dom/context":-3,"mol/state/time":-3,"mol/view/view":-1,"mol/svg/-view.tree/svg.view.tree.js":0},"mol/svg/svg.view.tree":{"mol/svg/-view.tree/svg.view.tree.js":0},"mol/svg/-view.tree/svg.view.tree.js":{"mol/view/view":-1},"mol/state/time":{"mol/state":-9007199254740991,"mol/object":-1,"mol/mem":-2,"mol/after/timeout":-2,"mol/after/frame":-2},"mol/svg/root/root.view.tree":{"mol/svg/root/-view.tree/root.view.tree.js":0},"mol/svg/root/-view.tree/root.view.tree.js":{"mol/svg":-1},"mol/svg/path":{"mol/svg":-1,"mol/svg/path/-view.tree/path.view.tree.js":0},"mol/svg/path/-view.tree/path.view.tree.js":{"mol/svg":-1},"mol/icon/brightness/4/-view.tree/4.view.tree.js":{"mol/icon":-1},"mol/locale":{"mol":-1.25,"mol/object":-1,"mol/mem":-2,"mol/state/local":-3,"mol/dom/context":-3,"mol/file":-3,"mol/fail/catch":-4},"mol/button/open":{"mol/button":-9007199254740991,"mol/button/open/open.view.tree":0,"mol/style/attach":0,"mol/button/minor":-1,"mol/icon/upload":-2,"mol/mem":-1,"mol/view/view":-1,"mol/type/enforce":-1,"mol/button/open/-view.tree/open.view.tree.js":0},"mol/button/open/open.view.tree":{"mol/button/open/-view.tree/open.view.tree.js":0},"mol/button/open/-view.tree/open.view.tree.js":{"mol/button/minor":-1,"mol/icon/upload":-3,"mol/mem":-1,"mol/view/view":-1},"mol/icon/upload":{"mol/icon":-1,"mol/icon/upload/-view.tree/upload.view.tree.js":0},"mol/icon/upload/-view.tree/upload.view.tree.js":{"mol/icon":-1},"mol/textarea":{"mol":-9007199254740991,"mol/textarea/textarea.view.tree":0,"mol/keyboard/code":-4,"mol/mem":-1,"mol/syntax2/md":-3,"mol/style/attach":0,"mol/gap":-1,"mol/theme":-1,"mol/layer":-1,"mol/stack":-1,"mol/syntax2":-2,"mol/text/code":-1,"mol/string":-1,"mol/type/enforce":-1,"mol/textarea/-view.tree/textarea.view.tree.js":0},"mol/textarea/textarea.view.tree":{"mol/textarea/-view.tree/textarea.view.tree.js":0},"mol/textarea/-view.tree/textarea.view.tree.js":{"mol/stack":-1,"mol/syntax2":-3,"mol/text/code":-3,"mol/mem":-1,"mol/string":-1},"mol/stack":{"mol":-9007199254740991,"mol/style/attach":0,"mol/stack/stack.view.tree":0,"mol/view/view":-1,"mol/stack/-view.tree/stack.view.tree.js":0},"mol/stack/stack.view.tree":{"mol/stack/-view.tree/stack.view.tree.js":0},"mol/stack/-view.tree/stack.view.tree.js":{"mol/view/view":-1},"mol/syntax2":{"mol":-9007199254740991,"mol/fail":-4},"mol/text/code":{"mol/text":-9007199254740991,"mol/text/code/code.view.tree":0,"mol/support/css":-3,"mol/mem":-1,"mol/syntax2/md":-3,"mol/dom/context":-3,"mol/fail/log":-4,"mol/stack":-1,"mol/text/code/line":-1,"mol/list":-1,"mol/button/copy":-1,"mol/locale":-3,"mol/type/enforce":-1,"mol/text/code/-view.tree/code.view.tree.js":0,"mol/style/unit":-1,"mol/style/define":-1,"mol/gap":-3},"mol/text":{"mol":-9007199254740991},"mol/text/code/code.view.tree":{"mol/text/code/-view.tree/code.view.tree.js":0},"mol/text/code/-view.tree/code.view.tree.js":{"mol/stack":-1,"mol/text/code/line":-3,"mol/list":-3,"mol/button/copy":-3,"mol/locale":-3,"mol/mem":-1},"mol/text/code/line":{"mol/text/code/line/line.view.tree":0,"mol/syntax2/md":-3,"mol/mem":-1,"mol/view/view":-1,"mol/paragraph":-1,"mol/text/code/token":-1,"mol/type/enforce":-1,"mol/text/code/line/-view.tree/line.view.tree.js":0,"mol/style/unit":-1,"mol/style/define":-1,"mol/theme":-3},"mol/text/code/line/line.view.tree":{"mol/text/code/line/-view.tree/line.view.tree.js":0},"mol/text/code/line/-view.tree/line.view.tree.js":{"mol/paragraph":-1,"mol/view/view":-3,"mol/text/code/token":-3,"mol/mem":-1},"mol/paragraph":{"mol":-9007199254740991,"mol/paragraph/paragraph.view.tree":0,"mol/mem":-2,"mol/view/view":-1,"mol/window":-3,"mol/style/attach":0,"mol/paragraph/-view.tree/paragraph.view.tree.js":0},"mol/paragraph/paragraph.view.tree":{"mol/paragraph/-view.tree/paragraph.view.tree.js":0},"mol/paragraph/-view.tree/paragraph.view.tree.js":{"mol/view/view":-1},"mol/text/code/token":{"mol/dimmer":-1,"mol/text/code/token/-view.tree/token.view.tree.js":0,"mol/style/func":-1,"mol/style/define":-1},"mol/dimmer":{"mol":-9007199254740991,"mol/dimmer/dimmer.view.tree":0,"mol/mem":-1,"mol/regexp":-3,"mol/view/view":-2,"mol/style/attach":0,"mol/theme":-1,"mol/paragraph":-1,"mol/type/enforce":-1,"mol/view":-2,"mol/dimmer/-view.tree/dimmer.view.tree.js":0},"mol/dimmer/dimmer.view.tree":{"mol/dimmer/-view.tree/dimmer.view.tree.js":0},"mol/dimmer/-view.tree/dimmer.view.tree.js":{"mol/paragraph":-1,"mol/mem":-1},"mol/regexp":{"mol":-9007199254740991,"mol/type/merge":-2,"mol/type/intersect":-2,"mol/type/override":-2,"mol/fail":-4,"mol/unicode":-2},"mol/type/merge":{"mol/type":-9007199254740991,"mol/type/equals":-3},"mol/type/equals":{"mol/type":-9007199254740991},"mol/type/intersect":{"mol/type":-9007199254740991},"mol/unicode":{"mol":-1},"mol/text/code/token/-view.tree/token.view.tree.js":{"mol/dimmer":-1},"mol/syntax2/md":{"mol/syntax2":-1},"mol/list":{"mol":-9007199254740991,"mol/list/list.view.tree":0,"mol/mem":-1,"mol/support/css":-3,"mol/print":-3,"mol/mem/cached":-3,"mol/window":-3,"mol/fail/log":-5,"mol/view/view":-1,"mol/style/attach":0,"mol/type/enforce":-1,"mol/list/-view.tree/list.view.tree.js":0},"mol/list/list.view.tree":{"mol/list/-view.tree/list.view.tree.js":0},"mol/list/-view.tree/list.view.tree.js":{"mol/view/view":-1,"mol/mem":-1},"mol/support/css":{"mol/support":-9007199254740991,"mol/dom/context":-3},"mol/support":{"mol":-9007199254740991},"mol/button/copy":{"mol/button":-9007199254740991,"mol/button/copy/copy.view.tree":0,"mol/mem":-1,"mol/html/encode":-3,"mol/wire/sync":-3,"mol/dom/context":-3,"mol/button/minor":-1,"mol/blob":-1,"mol/icon/clipboard/outline":-2,"mol/type/enforce":-1,"mol/button/copy/-view.tree/copy.view.tree.js":0},"mol/button/copy/copy.view.tree":{"mol/button/copy/-view.tree/copy.view.tree.js":0},"mol/button/copy/-view.tree/copy.view.tree.js":{"mol/button/minor":-1,"mol/blob":-3,"mol/icon/clipboard/outline":-3,"mol/mem":-1},"mol/blob":{"mol":-9007199254740991,"node":-1,"mol/dom/context":-1},"mol/icon/clipboard/outline":{"mol/icon/clipboard":-9007199254740991,"mol/icon":-1,"mol/icon/clipboard/outline/-view.tree/outline.view.tree.js":0},"mol/icon/clipboard":{"mol/icon":-1,"mol/icon/clipboard/-view.tree/clipboard.view.tree.js":0},"mol/icon/clipboard/-view.tree/clipboard.view.tree.js":{"mol/icon":-1},"mol/icon/clipboard/outline/-view.tree/outline.view.tree.js":{"mol/icon":-1},"mol/html/encode":{"mol/html":-9007199254740991},"mol/html":{"mol":-9007199254740991},"mol/string":{"mol":-9007199254740991,"mol/string/string.view.tree":0,"mol/action":-2,"mol/fail/hidden":-4,"mol/mem":-1,"mol/dom/listener":-3,"mol/dom/context":-3,"mol/wire/async":-4,"mol/style/attach":0,"mol/gap":-1,"mol/theme":-1,"mol/layer":-1,"mol/view/view":-1,"mol/hotkey":-1,"mol/type/enforce":-1,"mol/string/-view.tree/string.view.tree.js":0},"mol/string/string.view.tree":{"mol/string/-view.tree/string.view.tree.js":0},"mol/string/-view.tree/string.view.tree.js":{"mol/view/view":-1,"mol/hotkey":-3,"mol/mem":-1},"mol/hotkey":{"mol":-9007199254740991,"mol/hotkey/hotkey.view.tree":0,"mol/keyboard/code":-3,"mol/plugin":-1,"mol/mem":-1,"mol/hotkey/-view.tree/hotkey.view.tree.js":0},"mol/hotkey/hotkey.view.tree":{"mol/hotkey/-view.tree/hotkey.view.tree.js":0},"mol/hotkey/-view.tree/hotkey.view.tree.js":{"mol/plugin":-1,"mol/mem":-1},"mol/page":{"mol":-9007199254740991,"mol/view/view":-1,"mol/scroll":-1,"mol/mem":-1,"mol/type/enforce":-1,"mol/view":-2,"mol/page/-view.tree/page.view.tree.js":0,"mol/style/unit":-1,"mol/style/func":-1,"mol/style/define":-1,"mol/theme":-2,"mol/gap":-3},"mol/page/-view.tree/page.view.tree.js":{"mol/view/view":-1,"mol/scroll":-3,"mol/mem":-1},"optimade/cifplayer/player":{"optimade/cifplayer":-9007199254740991,"mol/style/attach":0,"mol/theme":0,"optimade/cifplayer/player/player.view.tree":0,"mol/view/view":-1,"mol/theme/auto":-2,"optimade/cifplayer/lib/three/view":-1,"mol/paragraph":-1,"mol/icon/eye/check":-2,"mol/button/minor":-1,"mol/check/box":-1,"mol/list":-1,"mol/scroll":-1,"mol/pick":-1,"mol/number":-1,"mol/icon/image/filter/center/focus":-2,"mol/check/icon":-1,"mol/icon/magnify/plus/outline":-2,"mol/icon/magnify/minus/outline":-2,"mol/switch":-1,"mol/card":-1,"mol/mem":-1,"mol/type/enforce":-1,"optimade/cifplayer/player/-view.tree/player.view.tree.js":0,"mol/style/define":-1,"mol/style/func":-3,"mol/gap":-3},"optimade/cifplayer/player/player.view.tree":{"optimade/cifplayer/player/-view.tree/player.view.tree.js":0},"optimade/cifplayer/player/-view.tree/player.view.tree.js":{"mol/view/view":-1,"mol/theme/auto":-3,"optimade/cifplayer/lib/three/view":-3,"mol/paragraph":-3,"mol/icon/eye/check":-3,"mol/button/minor":-3,"mol/check/box":-3,"mol/list":-3,"mol/scroll":-3,"mol/pick":-3,"mol/number":-3,"mol/icon/image/filter/center/focus":-3,"mol/check/icon":-3,"mol/icon/magnify/plus/outline":-3,"mol/icon/magnify/minus/outline":-3,"mol/switch":-3,"mol/card":-3,"mol/theme":-3,"mol/mem":-1},"optimade/cifplayer/lib/three/view":{"optimade/cifplayer/lib/three":-9007199254740991,"mol/view/view":-1,"mol/mem":-1,"optimade/cifplayer/lib/three/view/-view.tree/view.view.tree.js":0,"mol/style/define":-1},"optimade/cifplayer/lib/three":{"optimade/cifplayer/lib":-9007199254740991,"optimade/cifplayer/lib/three/_three.js":0},"optimade/cifplayer/lib":{"optimade/cifplayer":-9007199254740991},"optimade/cifplayer/lib/three/view/-view.tree/view.view.tree.js":{"mol/view/view":-1,"mol/mem":-1},"mol/icon/eye/check":{"mol/icon/eye":-9007199254740991,"mol/icon":-1,"mol/icon/eye/check/-view.tree/check.view.tree.js":0},"mol/icon/eye":{"mol/icon":-1,"mol/icon/eye/-view.tree/eye.view.tree.js":0},"mol/icon/eye/-view.tree/eye.view.tree.js":{"mol/icon":-1},"mol/icon/eye/check/-view.tree/check.view.tree.js":{"mol/icon":-1},"mol/check/box":{"mol/check":0,"mol/style/attach":0,"mol/check/box/box.view.tree":0,"mol/gap":-1,"mol/theme":-1,"mol/icon/tick":-2,"mol/mem":-1,"mol/check/box/-view.tree/box.view.tree.js":0},"mol/check/box/box.view.tree":{"mol/check/box/-view.tree/box.view.tree.js":0},"mol/check/box/-view.tree/box.view.tree.js":{"mol/check":-1,"mol/icon/tick":-3,"mol/mem":-1},"mol/icon/tick":{"mol/icon":-1,"mol/icon/tick/-view.tree/tick.view.tree.js":0},"mol/icon/tick/-view.tree/tick.view.tree.js":{"mol/icon":-1},"mol/pick":{"mol":-9007199254740991,"mol/pick/pick.view.tree":0,"mol/keyboard/code":-3,"mol/style/attach":0,"mol/pop":-1,"mol/check":-1,"mol/mem":-1,"mol/type/enforce":-1,"mol/view":-2,"mol/pick/-view.tree/pick.view.tree.js":0},"mol/pick/pick.view.tree":{"mol/pick/-view.tree/pick.view.tree.js":0},"mol/pick/-view.tree/pick.view.tree.js":{"mol/pop":-1,"mol/check":-3,"mol/mem":-1},"mol/pop":{"mol":-9007199254740991,"mol/pop/pop.view.tree":0,"mol/mem":-1,"mol/window":-3,"mol/view/view":-1,"mol/dom/context":-4,"mol/style/attach":0,"mol/gap":-1,"mol/layer":-1,"mol/theme":-1,"mol/scroll":0,"mol/type/enforce":-1,"mol/view":-2,"mol/pop/-view.tree/pop.view.tree.js":0},"mol/pop/pop.view.tree":{"mol/pop/-view.tree/pop.view.tree.js":0},"mol/pop/-view.tree/pop.view.tree.js":{"mol/view/view":-1,"mol/mem":-1},"mol/number":{"mol":-9007199254740991,"mol/style/attach":0,"mol/number/number.view.tree":0,"mol/mem":-1,"mol/wire/probe":-4,"mol/view/view":-1,"mol/string":-1,"mol/icon/minus":-2,"mol/button/minor":-1,"mol/icon/plus":-2,"mol/type/enforce":-1,"mol/number/-view.tree/number.view.tree.js":0},"mol/number/number.view.tree":{"mol/number/-view.tree/number.view.tree.js":0},"mol/number/-view.tree/number.view.tree.js":{"mol/view/view":-1,"mol/string":-3,"mol/icon/minus":-3,"mol/button/minor":-3,"mol/icon/plus":-3,"mol/mem":-1},"mol/icon/minus":{"mol/icon":-1,"mol/icon/minus/-view.tree/minus.view.tree.js":0},"mol/icon/minus/-view.tree/minus.view.tree.js":{"mol/icon":-1},"mol/icon/plus":{"mol/icon":-1,"mol/icon/plus/-view.tree/plus.view.tree.js":0},"mol/icon/plus/-view.tree/plus.view.tree.js":{"mol/icon":-1},"mol/icon/image/filter/center/focus":{"mol/icon/image/filter/center":-9007199254740991,"mol/icon":-1,"mol/icon/image/filter/center/focus/-view.tree/focus.view.tree.js":0},"mol/icon/image/filter/center":{"mol/icon/image/filter":-9007199254740991},"mol/icon/image/filter":{"mol/icon/image":-9007199254740991,"mol/icon":-1,"mol/icon/image/filter/-view.tree/filter.view.tree.js":0},"mol/icon/image":{"mol/icon":-1,"mol/icon/image/-view.tree/image.view.tree.js":0},"mol/icon/image/-view.tree/image.view.tree.js":{"mol/icon":-1},"mol/icon/image/filter/-view.tree/filter.view.tree.js":{"mol/icon":-1},"mol/icon/image/filter/center/focus/-view.tree/focus.view.tree.js":{"mol/icon":-1},"mol/icon/magnify/plus/outline":{"mol/icon/magnify/plus":-9007199254740991,"mol/icon":-1,"mol/icon/magnify/plus/outline/-view.tree/outline.view.tree.js":0},"mol/icon/magnify/plus":{"mol/icon/magnify":-9007199254740991,"mol/icon":-1,"mol/icon/magnify/plus/-view.tree/plus.view.tree.js":0},"mol/icon/magnify":{"mol/icon":-1,"mol/icon/magnify/-view.tree/magnify.view.tree.js":0},"mol/icon/magnify/-view.tree/magnify.view.tree.js":{"mol/icon":-1},"mol/icon/magnify/plus/-view.tree/plus.view.tree.js":{"mol/icon":-1},"mol/icon/magnify/plus/outline/-view.tree/outline.view.tree.js":{"mol/icon":-1},"mol/icon/magnify/minus/outline":{"mol/icon/magnify/minus":-9007199254740991,"mol/icon":-1,"mol/icon/magnify/minus/outline/-view.tree/outline.view.tree.js":0},"mol/icon/magnify/minus":{"mol/icon/magnify":-9007199254740991,"mol/icon":-1,"mol/icon/magnify/minus/-view.tree/minus.view.tree.js":0},"mol/icon/magnify/minus/-view.tree/minus.view.tree.js":{"mol/icon":-1},"mol/icon/magnify/minus/outline/-view.tree/outline.view.tree.js":{"mol/icon":-1},"mol/switch":{"mol":-9007199254740991,"mol/switch/switch.view.tree":0,"mol/state/session":-3,"mol/check/list":-1,"mol/mem":-1,"mol/switch/-view.tree/switch.view.tree.js":0},"mol/switch/switch.view.tree":{"mol/switch/-view.tree/switch.view.tree.js":0},"mol/switch/-view.tree/switch.view.tree.js":{"mol/check/list":-1,"mol/mem":-1},"mol/check/list":{"mol/check":0,"mol/check/list/list.view.tree":0,"mol/mem":-1,"mol/style/attach":0,"mol/gap":-1,"mol/theme":-1,"mol/view/view":-1,"mol/type/enforce":-1,"mol/check/list/-view.tree/list.view.tree.js":0},"mol/check/list/list.view.tree":{"mol/check/list/-view.tree/list.view.tree.js":0},"mol/check/list/-view.tree/list.view.tree.js":{"mol/view/view":-1,"mol/check":-3,"mol/mem":-1},"mol/state/session":{"mol/state":-9007199254740991,"mol/object":-1,"mol/dom/context":-4,"mol/mem":-2},"mol/card":{"mol":-9007199254740991,"mol/card/card.view.tree":0,"mol/view/view":-1,"mol/style/attach":0,"mol/theme":-1,"mol/gap":-1,"mol/list":-1,"mol/mem":-1,"mol/type/enforce":-1,"mol/view":-2,"mol/card/-view.tree/card.view.tree.js":0},"mol/card/card.view.tree":{"mol/card/-view.tree/card.view.tree.js":0},"mol/card/-view.tree/card.view.tree.js":{"mol/list":-1,"mol/view/view":-3,"mol/mem":-1},"mol/text/text":{"mol/text":0,"mol/text/text/text.view.tree":0,"mol/mem":-1,"mol/syntax2/md":-3,"mol/dom/context":-3,"mol/state/arg":-4,"mol/fail/log":-4,"mol/after/tick":-4,"mol/style/attach":0,"mol/gap":-1,"mol/theme":-1,"mol/text/code/line":0,"mol/list":-1,"mol/paragraph":-1,"mol/text/code":-1,"mol/view/view":-1,"mol/grid":-1,"mol/dimmer":-1,"mol/link/iconed":-1,"mol/embed/any":-1,"mol/expander":-1,"mol/link":-1,"mol/locale":-3,"mol/type/enforce":-1,"mol/text/text/-view.tree/text.view.tree.js":0},"mol/text/text/text.view.tree":{"mol/text/text/-view.tree/text.view.tree.js":0},"mol/text/text/-view.tree/text.view.tree.js":{"mol/list":-1,"mol/paragraph":-1,"mol/text":-1,"mol/text/code":-3,"mol/view/view":-3,"mol/grid":-3,"mol/dimmer":-3,"mol/text/code/line":-3,"mol/link/iconed":-3,"mol/embed/any":-3,"mol/expander":-3,"mol/mem":-1,"mol/link":-3,"mol/locale":-3},"mol/text/list":{"mol/text":-9007199254740991,"mol/style/attach":0,"mol/text/list/list.view.tree":0,"mol/text/text":-1,"mol/mem":-1,"mol/paragraph":-1,"mol/type/enforce":-1,"mol/text/list/-view.tree/list.view.tree.js":0},"mol/text/list/list.view.tree":{"mol/text/list/-view.tree/list.view.tree.js":0},"mol/text/list/-view.tree/list.view.tree.js":{"mol/text/text":-1,"mol/mem":-1,"mol/paragraph":-1},"mol/grid":{"mol":-9007199254740991,"mol/grid/grid.view.tree":0,"mol/mem":-1,"mol/view/view":-1,"mol/state/session":-3,"mol/style/attach":0,"mol/gap":-1,"mol/theme":-1,"mol/dimmer":-1,"mol/float":-1,"mol/check/expand":-1,"mol/list":-1,"mol/type/enforce":-1,"mol/view":-2,"mol/grid/-view.tree/grid.view.tree.js":0},"mol/grid/grid.view.tree":{"mol/grid/-view.tree/grid.view.tree.js":0},"mol/grid/-view.tree/grid.view.tree.js":{"mol/view/view":-1,"mol/dimmer":-3,"mol/float":-3,"mol/check/expand":-3,"mol/mem":-1,"mol/list":-1},"mol/float":{"mol":-9007199254740991,"mol/style/attach":0,"mol/float/float.view.tree":0,"mol/layer":-1,"mol/theme":-1,"mol/view/view":-1,"mol/float/-view.tree/float.view.tree.js":0},"mol/float/float.view.tree":{"mol/float/-view.tree/float.view.tree.js":0},"mol/float/-view.tree/float.view.tree.js":{"mol/view/view":-1},"mol/check/expand":{"mol/check":0,"mol/check/expand/expand.view.tree":0,"mol/style/attach":0,"mol/icon/chevron":-2,"mol/mem":-1,"mol/check/expand/-view.tree/expand.view.tree.js":0},"mol/check/expand/expand.view.tree":{"mol/check/expand/-view.tree/expand.view.tree.js":0},"mol/check/expand/-view.tree/expand.view.tree.js":{"mol/check":-1,"mol/icon/chevron":-3,"mol/mem":-1},"mol/icon/chevron":{"mol/icon":-1,"mol/icon/chevron/-view.tree/chevron.view.tree.js":0},"mol/icon/chevron/-view.tree/chevron.view.tree.js":{"mol/icon":-1},"mol/embed/any":{"mol/embed":-9007199254740991,"mol/embed/any/any.view.tree":0,"mol/mem":-1,"mol/fail/log":-4,"mol/view/view":-1,"mol/image":-1,"mol/embed/native":-1,"mol/embed/youtube":-1,"mol/embed/rutube":-1,"mol/type/enforce":-1,"mol/embed/any/-view.tree/any.view.tree.js":0},"mol/embed":{"mol":-9007199254740991},"mol/embed/any/any.view.tree":{"mol/embed/any/-view.tree/any.view.tree.js":0},"mol/embed/any/-view.tree/any.view.tree.js":{"mol/view/view":-1,"mol/image":-3,"mol/embed/native":-3,"mol/embed/youtube":-3,"mol/embed/rutube":-3,"mol/mem":-1},"mol/embed/native":{"mol/embed":-9007199254740991,"mol/embed/native/native.view.tree":0,"mol/mem":-1,"mol/wire/solid":-3,"mol/wire/sync":-3,"mol/dom/listener":-3,"mol/dom/context":-4,"mol/wire/async":-4,"mol/wait/timeout":-3,"mol/style/attach":0,"mol/gap":-1,"mol/scroll":-1,"mol/link":-1,"mol/type/enforce":-1,"mol/embed/native/-view.tree/native.view.tree.js":0},"mol/embed/native/native.view.tree":{"mol/embed/native/-view.tree/native.view.tree.js":0},"mol/embed/native/-view.tree/native.view.tree.js":{"mol/scroll":-1,"mol/link":-3,"mol/mem":-1},"mol/wait/timeout":{"mol/wait":-9007199254740991,"mol/promise/promise":-2,"mol/after/timeout":-2,"mol/wire/sync":-2},"mol/wait":{"mol":-9007199254740991},"mol/promise/promise":{"mol/promise":-9007199254740991},"mol/embed/youtube":{"mol/embed":-9007199254740991,"mol/embed/youtube/youtube.view.tree":0,"mol/mem":-2,"mol/embed/service":-1,"mol/embed/youtube/-view.tree/youtube.view.tree.js":0},"mol/embed/youtube/youtube.view.tree":{"mol/embed/youtube/-view.tree/youtube.view.tree.js":0},"mol/embed/youtube/-view.tree/youtube.view.tree.js":{"mol/embed/service":-1},"mol/embed/service":{"mol/embed":-9007199254740991,"mol/embed/service/service.view.tree":0,"mol/mem":-1,"mol/style/attach":0,"mol/check":-1,"mol/image":-1,"mol/icon/youtube":-2,"mol/frame":-1,"mol/type/enforce":-1,"mol/embed/service/-view.tree/service.view.tree.js":0},"mol/embed/service/service.view.tree":{"mol/embed/service/-view.tree/service.view.tree.js":0},"mol/embed/service/-view.tree/service.view.tree.js":{"mol/check":-1,"mol/image":-3,"mol/icon/youtube":-3,"mol/frame":-3,"mol/mem":-1},"mol/icon/youtube":{"mol/icon":-1,"mol/icon/youtube/-view.tree/youtube.view.tree.js":0},"mol/icon/youtube/-view.tree/youtube.view.tree.js":{"mol/icon":-1},"mol/frame":{"mol":-9007199254740991,"mol/frame/frame.view.tree":0,"mol/embed/native":-1,"mol/mem":-1,"mol/frame/-view.tree/frame.view.tree.js":0,"mol/style/define":-1,"mol/style/unit":-2},"mol/frame/frame.view.tree":{"mol/frame/-view.tree/frame.view.tree.js":0},"mol/frame/-view.tree/frame.view.tree.js":{"mol/embed/native":-1,"mol/mem":-1},"mol/embed/rutube":{"mol/embed":-9007199254740991,"mol/embed/rutube/rutube.view.tree":0,"mol/mem":-2,"mol/embed/service":-1,"mol/embed/rutube/-view.tree/rutube.view.tree.js":0},"mol/embed/rutube/rutube.view.tree":{"mol/embed/rutube/-view.tree/rutube.view.tree.js":0},"mol/embed/rutube/-view.tree/rutube.view.tree.js":{"mol/embed/service":-1},"mol/expander":{"mol":-9007199254740991,"mol/expander/expander.view.tree":0,"mol/mem":-1,"mol/style/attach":0,"mol/gap":-1,"mol/list":-1,"mol/check/expand":-1,"mol/view/view":-1,"mol/type/enforce":-1,"mol/expander/-view.tree/expander.view.tree.js":0},"mol/expander/expander.view.tree":{"mol/expander/-view.tree/expander.view.tree.js":0},"mol/expander/-view.tree/expander.view.tree.js":{"mol/list":-1,"mol/check/expand":-3,"mol/view/view":-3,"mol/mem":-1},"optimade/cifplayer/app/-view.tree/app.view.tree.js":{"mol/drop":-1,"mol/theme/auto":-3,"mol/book2":-3,"mol/link/iconed":-3,"mol/lights/toggle":-3,"mol/button/open":-3,"mol/textarea":-3,"mol/view/view":-3,"mol/page":-3,"optimade/cifplayer/player":-3,"mol/text/text":-3,"mol/button/minor":-3,"mol/mem":-1}},"sloc":{"ts":8592,"LICENSE":130,"md":2804,"js":15,"json":141,"tree":1007,"CNAME":2,"cff":16,"css":1060,"html":26},"deps":{"optimade/cifplayer/app":{"..":-9007199254740991,"/optimade/cifplayer/app":-1,"/mol/drop":-1,"/mol/theme/auto":-2,"/mol/book2":-1,"/mol/link/iconed":-1,"/mol/lights/toggle":-2,"/mol/button/open":-1,"/mol/textarea":-1,"/mol/view":-1,"/mol/page":-1,"/optimade/cifplayer/player":-1,"/mol/text":-1,"/mol/button/minor":-1,"/mol/mem":-1,"/optimade/cifplayer/app/prototype":-1,"/mol/type/enforce":-1,"/optimade/cifplayer/app/-view.tree/app.view.tree.js":0,"/mol/style/define":-1,"/mol/theme/hover":-6,"/mol/theme/back":-4,"/mol/gap/block":-4},"optimade/cifplayer":{"..":-9007199254740991},"optimade":{"..":-9007199254740991},"":{},"mol/drop":{"..":-9007199254740991,"./drop.view.tree":0,"/mol/drop":-1,"/mol/mem":-1,"/mol/ghost":-1,"/mol/drop/prototype":-1,"/mol/drop/-view.tree/drop.view.tree.js":0},"mol":{"..":-9007199254740991},"mol/drop/drop.view.tree":{"/mol/drop/-view.tree/drop.view.tree.js":0},"mol/drop/-view.tree/drop.view.tree.js":{"/mol/drop":-1,"/mol/ghost":-1,"/mol/mem":-1,"/mol/drop/prototype":-1},"mol/ghost":{"..":-9007199254740991,"./ghost.view.tree":0,"/mol/ghost":-1,"/mol/mem":-1,"/mol/dom/render/attributes":-3,"/mol/dom/render/styles":-3,"/mol/dom/render/fields":-3,"/mol/fail/log":-4,"/mol/view":-1,"/mol/ghost/prototype":-1,"/mol/ghost/-view.tree/ghost.view.tree.js":0},"mol/ghost/ghost.view.tree":{"/mol/ghost/-view.tree/ghost.view.tree.js":0},"mol/ghost/-view.tree/ghost.view.tree.js":{"/mol/ghost":-1,"/mol/view":-1,"/mol/mem":-1,"/mol/ghost/prototype":-1},"mol/view/view":{"..":-9007199254740991,"/mol/view/content":-1,"/mol/view":0,"/mol/view/visible/width":-1,"/mol/window/size":-2,"/mol/view/visible/height":-1,"/mol/view/state/key":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/mem":-2,"/mol/fail/log":-4,"/mol/dom/context/document/query/selector/all":-3,"/mol/view/selection/focused":-3,"/mol/memo/method":-2,"/mol/dom/qname":-3,"/mol/wire/probe":-3,"/mol/wire/watch":-4,"/mol/dom/context/document/create/element":-3,"/mol/const":-3,"/mol/wire/solid":-3,"/mol/dom/render/attributes":-3,"/mol/dom/render/events":-3,"/mol/plugin":-6,"/mol/promise/like":-4,"/mol/dom/render/styles":-3,"/mol/dom/context":-3,"/mol/dom/render/children":-3,"/mol/dom/render/fields":-3,"/mol/func/name":-4,"/mol/owning/get":-3,"/mol/wire/fiber":-3,"/mol/wire/async":-3,"/mol/dev/format/head":-2,"/mol/dev/format/span":-3,"/mol/dev/format/native":-4,"/mol/fail/hidden":-4,"/mol/after/timeout":-3,"/mol/view/all":-1,"/mol/type/pick":-1,"/mol/style/attach":0,"/mol/theme/line":-1,"/mol/gap/round":-1,"/mol/view/root":0,"/mol/theme/back":-1,"/mol/theme/text":-1,"/mol/view/error":0,"/mol/theme/hover":-1},"mol/view":{"..":-9007199254740991},"mol/window":{"..":-9007199254740991,"./window.ts":0,"/mol/window":-1,"/mol/object":-1},"mol/object":{"..":-9007199254740991,"/mol/object/field":-1,"/mol/object":-1,"/mol/object2":-1},"mol/object2":{"..":-9007199254740991,"/mol/object2":-1,"/mol/ambient/ref":-2,"/mol/owning/get":-3,"/mol/fail/hidden":-3,"/mol/type/writable":-3,"/mol/func/name":-3},"mol/ambient":{"..":-9007199254740991,"/mol/ambient/ref":-1,"/mol/ambient/context":-1,"/mol/ambient":-1},"mol/owning":{"..":-9007199254740991,"/mol/owning/map":-1,"/mol/owning/allow":-1,"/mol/delegate":-3,"/mol/owning/get":-1,"/mol/owning/map/get":-2,"/mol/owning/check":-1,"/mol/owning/catch":-1,"/mol/owning/map/set":-2},"mol/delegate":{"..":-9007199254740991,"/mol/delegate":-1},"mol/fail/hidden":{"..":-9007199254740991,"/mol/fail/hidden":-1},"mol/fail":{"..":-9007199254740991,"/mol/fail":-1},"mol/type/writable":{"..":-9007199254740991,"/mol/type/writable":-1},"mol/type":{"..":-9007199254740991},"mol/func/name":{"..":-9007199254740991,"/mol/func/name":-1,"/mol/func/name/from":-1},"mol/func":{"..":-9007199254740991},"mol/mem":{"..":-9007199254740991,"/mol/mem":-1,"/mol/wire/solo":-1,"/mol/mem/key":-1,"/mol/wire/plex":-1},"mol/wire/solo":{"..":-9007199254740991,"/mol/wire/solo":-1,"/mol/wire/atom/solo":-4,"/mol/wire/fiber/warm":-5,"/mol/wire/auto":-5,"/mol/type/tail":-2},"mol/wire":{"..":-9007199254740991,"/mol/wire/auto/sub":-1,"/mol/wire/sub":-1,"/mol/wire/auto":-1,"/mol/wire/affected":-1},"mol/wire/sub":{"..":-9007199254740991,"/mol/wire/sub":-1,"/mol/wire/pub":-1,"/mol/wire/cursor":-2},"mol/wire/pub":{"..":-9007199254740991,"/mol/wire/pub":-1,"/mol/wire/sub":-3,"/mol/fail":-4,"/mol/wire/auto":-3,"/mol/wire/cursor/stale":-2},"mol/wire/cursor":{"..":-9007199254740991,"/mol/wire/cursor":-1},"mol/wire/atom":{"..":-9007199254740991,"/mol/wire/atom":-1,"/mol/wire/fiber":-1,"/mol/func/name":-3,"/mol/key":-3,"/mol/after/frame":-2,"/mol/wire/atom/watcher":-3,"/mol/wire/atom/watch":-3,"/mol/wire/atom/watching":-3,"/mol/wire/cursor/final":-4,"/mol/wire/atom/watching/delete":-5,"/mol/wire/cursor/stale":-5,"/mol/wire/atom/watching/add":-3,"/mol/wire/method":-2,"/mol/type/foot":-3,"/mol/wire/fiber/warm":-4,"/mol/wire/auto":-4,"/mol/compare/deep":-5,"/mol/fail/log":-5,"/mol/owning/check":-4,"/mol/owning/catch":-4,"/mol/wire/cursor/fresh":-3,"/mol/promise/like":-3},"mol/wire/fiber":{"..":-9007199254740991,"/mol/wire/fiber":-1,"/mol/wire/pub/sub":-1,"/mol/after/tick":-2,"/mol/wire/fiber/plan/task":-5,"/mol/wire/cursor/final":-3,"/mol/promise/like":-3,"/mol/wire/fiber/planning/add":-3,"/mol/wire/fiber/plan":-3,"/mol/wire/fiber/reaping/add":-3,"/mol/dev/format/head":-2,"/mol/wire/cursor/stale":-2,"/mol/wire/cursor/doubt":-3,"/mol/wire/cursor/fresh":-3,"/mol/dev/format/div":-3,"/mol/owning/check":-3,"/mol/dev/format/auto":-4,"/mol/dev/format/shade":-5,"/mol/dev/format/body":-6,"/mol/dev/format/native":-5,"/mol/wire/pub":-5,"/mol/wire/fiber/warm":-3,"/mol/fail/hidden":-4},"mol/wire/pub/sub":{"..":-9007199254740991,"/mol/wire/pub/sub":-1,"/mol/wire/pub":-1,"/mol/wire/sub":-1,"/mol/wire/cursor/stale":-2,"/mol/wire/auto":-3,"/mol/fail":-3,"/mol/wire/cursor/fresh":-3,"/mol/wire/cursor/final":-3,"/mol/wire/cursor/doubt":-3,"/mol/dev/format/head":-2,"/mol/dev/format/native":-3},"mol/dev/format":{"..":-9007199254740991,"/mol/dev/format/register":-1,"/mol/dev/format/head":-1,"/mol/dev/format/body":-1,"/mol/dev/format/accent":-1,"/mol/dev/format/native":-1,"/mol/dev/format/shade":-1,"/mol/dev/format/auto":-1,"/mol/dev/format/element":-1,"/mol/dev/format/span":-1,"/mol/dev/format/div":-1,"/mol/dev/format/element/bind":-1,"/mol/dev/format/ol":-1,"/mol/dev/format/li":-1,"/mol/dev/format/table":-1,"/mol/dev/format/tr":-1,"/mol/dev/format/td":-1,"/mol/dev/format/span/bind":-1,"/mol/dev/format/strong":-1,"/mol/dev/format/string":-1,"/mol/dev/format/indent":-1,"/mol/dev/format/div/bind":-1},"mol/dev":{"..":-9007199254740991},"mol/after/tick":{"..":-9007199254740991,"/mol/after/tick":-1,"/mol/object2":-1,"/mol/after/tick/promise":-3,"/mol/after/tick/promise/then":-3},"mol/after":{"..":-9007199254740991},"mol/promise/like":{"..":-9007199254740991,"/mol/promise/like":-1},"mol/promise":{"..":-9007199254740991},"mol/key":{"..":-9007199254740991,"/mol/key/store":-1,"/mol/key":-1,"/mol/key/store/get":-3,"/mol/guid":-3,"/mol/key/store/set":-3},"mol/guid":{"..":-9007199254740991,"/mol/guid":-1},"mol/after/frame":{"..":-9007199254740991,"./frame.ts":0,"/mol/after/frame":-1,"/mol/after/timeout":-1},"mol/after/timeout":{"..":-9007199254740991,"/mol/after/timeout":-1,"/mol/object2":-1},"mol/wire/method":{"..":-9007199254740991,"/mol/wire/method":-1,"/mol/wire/task/getter":-2},"mol/wire/task":{"..":-9007199254740991,"/mol/wire/task":-1,"/mol/wire/fiber":-1,"/mol/wire/task/get":-3,"/mol/wire/auto":-4,"/mol/compare/deep":-5,"/mol/log3/warn":-5,"/mol/promise/like":-3,"/mol/wire/cursor/fresh":-4,"/mol/owning/catch":-4,"/mol/wire/cursor/final":-3},"mol/compare/deep":{"..":-9007199254740991,"/mol/compare/deep/cache":-1,"/mol/compare/deep":-1,"/mol/compare/deep/cache/get":-2,"/mol/compare/deep/cache/set":-3},"mol/compare":{"..":-9007199254740991},"mol/log3":{"..":-9007199254740991,"/mol/log3/event":-1,"/mol/log3/logger":-1,"/mol/log3/come":-1,"/mol/log3/done":-1,"/mol/log3/fail":-1,"/mol/log3/warn":-1,"/mol/log3/rise":-1,"/mol/log3/area":-1,"/mol/log3/area/lazy":-1,"/mol/log3/stack":-1,"/mol/log3/area/call":-3,"./log3.ts":0,"/mol/log3/node/make":-1,"/mol/tree2/from/json":-3,"/mol/term/color/blue":-1,"/mol/term/color/green":-1,"/mol/term/color/red":-1,"/mol/term/color/yellow":-1,"/mol/term/color/magenta":-1,"/mol/term/color/cyan":-1},"mol/log3/log3.ts":{"/mol/log3/event":-1,"/mol/log3/logger":-1,"/mol/log3/come":-1,"/mol/log3/done":-1,"/mol/log3/fail":-1,"/mol/log3/warn":-1,"/mol/log3/rise":-1,"/mol/log3/area":-1,"/mol/log3/area/lazy":-1,"/mol/log3/stack":-1,"/mol/log3/area/call":-3},"mol/tree2/from/json":{"..":-9007199254740991,"/mol/tree2/from/json":-1,"/mol/span/unknown":-1,"/mol/tree2":-1,"/mol/tree2/data":-3},"mol/tree2/from":{"..":-9007199254740991},"mol/tree2":{"..":-9007199254740991,"/mol/tree2/path":-1,"/mol/tree2/hack":-1,"/mol/tree2":-1,"/mol/tree2/belt":-1,"/mol/span":-2,"/mol/span/unknown":-3,"/mol/tree2/list":-3,"/mol/tree2/data":-3,"/mol/fail":-4,"/mol/tree2/struct":-3,"/mol/tree2/from/string":-2,"/mol/tree2/to/string":-3,"/mol/fail/hidden":-4,"/mol/tree2/empty":-1},"mol/span":{"..":-9007199254740991,"/mol/span":-1,"/mol/object2":-1,"/mol/span/begin":-2,"/mol/fail":-3},"mol/tree2/from/string":{"..":-9007199254740991,"/mol/tree2/from/string":-1,"/mol/tree2":-1,"/mol/span/entire":-2,"/mol/tree2/list":-2,"/mol/fail":-4,"/mol/error/syntax":-4},"mol/error/syntax":{"..":-9007199254740991,"/mol/error/syntax":-1,"/mol/span":-3},"mol/error":{"..":-9007199254740991},"mol/tree2/to/string":{"..":-9007199254740991,"/mol/tree2/to/string":-1,"/mol/tree2":-2},"mol/tree2/to":{"..":-9007199254740991},"mol/term/color":{"..":-9007199254740991,"/mol/term/color":-1},"mol/term":{"..":-9007199254740991},"mol/type/foot":{"..":-9007199254740991,"/mol/type/tail":-1.25,"/mol/type/foot":-1},"mol/type/tail":{"..":-9007199254740991,"/mol/type/tail":-1},"mol/fail/log":{"..":-9007199254740991,"/mol/fail/log":-1,"/mol/promise/like":-2,"/mol/fail/catch":-2},"mol/fail/catch":{"..":-9007199254740991,"/mol/fail/catch":-1,"/mol/promise/like":-2,"/mol/fail/hidden":-2},"mol/wire/plex":{"..":-9007199254740991,"/mol/wire/plex":-1,"/mol/wire/atom/plex":-4,"/mol/wire/fiber/warm":-5,"/mol/wire/auto":-5},"mol/dom/context":{"..":-9007199254740991,"/mol/dom/context":-1,"./context.ts":0,"/node/jsdom":-1},"mol/dom":{"..":-9007199254740991,"/mol/dom":-1,"/mol/dom/context":-1},"mol/dom/context/context.ts":{"/mol/dom/context":-1},"node":{"..":-9007199254740991,"./node.ts":0,"/node":0,"/mol/exec":-3,"/mol/fail/catch":-3,"/mol/fail/log":-3},"node/node.ts":{},"mol/exec":{"..":-9007199254740991,"./exec.ts":0,"/mol/exec":-1,"/mol/run/spawn":-2},"mol/run":{"..":-9007199254740991,"./run.ts":0,"/mol/run/error/context":-1,"/mol/run/error":-1,"/mol/error/mix":-1,"/mol/run/spawn":-1,"/node/child_process":-1,"/mol/run/spawn/sync":-1,"/mol/run/options":-1,"/mol/run":-1,"/mol/object":-1,"/mol/env":-3,"/mol/wire/auto":-3,"/mol/wire/sync":-3,"/node/path/relative":-4,"/mol/log3/come":-3,"/mol/log3/done":-5},"mol/error/mix":{"..":-9007199254740991,"/mol/error/mix":-1,"/mol/func/name":-2},"mol/env":{"..":-9007199254740991,"/mol/env":-1,"./env.ts":0},"mol/env/env.ts":{"/mol/env":-1},"mol/wire/sync":{"..":-9007199254740991,"/mol/func/name/from":-2,"/mol/wire/sync":-1,"/mol/wire/task/getter":-4},"mol/view/selection":{"..":-9007199254740991,"/mol/view/selection":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/dom/context/document/active/element":-3,"/mol/after/tick":-3,"/mol/dom/context/blur":-4},"mol/memo":{"..":-9007199254740991,"/mol/memo":-1,"/mol/wrapper":-1},"mol/wrapper":{"..":-9007199254740991,"/mol/wrapper":-1,"/mol/object2":-1},"mol/dom/qname":{"..":-9007199254740991,"/mol/dom/qname":-1},"mol/wire/probe":{"..":-9007199254740991,"/mol/wire/probe":-1,"/mol/wire/fiber/warm":-2},"mol/wire/watch":{"..":-9007199254740991,"/mol/wire/watch":-1,"/mol/wire/auto":-2,"/mol/wire/atom":-2,"/mol/fail":-3},"mol/const":{"..":-9007199254740991,"/mol/const":-1,"/mol/dev/format/head":-2,"/mol/dev/format/span":-2,"/mol/dev/format/auto":-2},"mol/wire/solid":{"..":-9007199254740991,"/mol/wire/solid":-1,"/mol/wire/auto":-2,"/mol/wire/fiber":-2,"/mol/wire/pub/sub":-1},"mol/dom/render/attributes":{"..":-9007199254740991,"/mol/dom/render/attributes":-1},"mol/dom/render":{"..":-9007199254740991},"mol/dom/render/events":{"..":-9007199254740991,"/mol/dom/render/events":-1},"mol/plugin":{"..":-9007199254740991,"/mol/plugin":-1,"/mol/view":-1,"/mol/owning/get":-3,"/mol/wire/fiber":-3},"mol/dom/render/styles":{"..":-9007199254740991,"/mol/dom/render/styles":-1},"mol/dom/render/children":{"..":-9007199254740991,"/mol/dom/render/children":-1,"/mol/dom/context":-3,"/mol/dom/context/document/create/text/node":-5},"mol/dom/render/fields":{"..":-9007199254740991,"/mol/dom/render/fields":-1},"mol/wire/async":{"..":-9007199254740991,"/mol/wire/async":-1,"/mol/wire/fiber":-2,"/mol/wire/task/getter":-2},"mol/type/pick":{"..":-9007199254740991,"/mol/type/pick":-1,"/mol/type/keys/extract":-3},"mol/type/keys/extract":{"..":-9007199254740991,"/mol/type/keys/extract":-1},"mol/type/keys":{"..":-9007199254740991},"mol/style/attach":{"..":-9007199254740991,"/mol/style/attach":-1,"/mol/dom/context/document":-2},"mol/style":{"..":-9007199254740991},"mol/theme":{"..":-9007199254740991,"/mol/theme":0,"/mol/style/prop":-1,"/mol/style/attach":0,"/mol/theme/dark":-0.25,"/mol/theme/light":-0.25,"/mol/theme/base":-0.25,"/mol/theme/accent":-0.25,"/mol/theme/current":-0.25,"/mol/theme/special":-0.25,"/mol/theme/hue":-1,"/mol/theme/hue/spread":-1,"/mol/theme/text":-1,"/mol/theme/back":-1,"/mol/theme/luma":-1,"/mol/theme/image":-1,"/mol/theme/card":-1,"/mol/theme/field":-1,"/mol/theme/hover":-1,"/mol/theme/shade":-1,"/mol/theme/line":-1,"/mol/theme/focus":-1,"/mol/theme/control":-1},"mol/style/prop":{"..":-9007199254740991,"/mol/style/prop":-1,"/mol/style/func/vary":-3,"/mol/style/func":-2},"mol/style/func":{"..":-9007199254740991,"/mol/style/func/name":-1,"/mol/style/func/image":-1,"/mol/style/func/filter":-1,"/mol/style/unit":-1,"/mol/style/func":-1,"/mol/decor":-1,"/mol/style/unit/str":-2,"/mol/style/unit/length":-2,"/mol/style/properties/color":-3,"/mol/style/unit/angle":-2},"mol/style/unit":{"..":-9007199254740991,"/mol/style/unit/length":-1,"/mol/style/unit/angle":-1,"/mol/style/unit/time":-1,"/mol/style/unit/any":-1,"/mol/style/unit/str":-1,"/mol/style/unit":-1,"/mol/decor":-1},"mol/decor":{"..":-9007199254740991,"/mol/decor":-1},"mol/style/properties":{"..":-9007199254740991,"/mol/style/properties":-1,"/mol/type/override":-1,"/mol/style/func":-1,"/mol/style/properties/color":-1,"/mol/style/unit/length":-1,"/mol/style/unit/str":-3,"/mol/style/unit/time":-3,"/mol/style/func/filter":-2,"/mol/style/func/image":-3},"mol/type/override":{"..":-9007199254740991,"/mol/type/override":-1},"mol/gap":{"..":-9007199254740991,"/mol/gap":-1,"/mol/style/prop":-1,"/mol/style/attach":0,"/mol/gap/block":-1,"/mol/gap/text":-1,"/mol/gap/round":-1,"/mol/gap/space":-1,"/mol/gap/blur":-1},"mol/theme/auto":{"..":-9007199254740991,"./auto.view.tree":0,"/mol/theme/auto":-1,"/mol/lights":-3,"/mol/theme/light":-3,"/mol/theme/dark":-3,"/mol/plugin":-1,"/mol/theme/auto/-view.tree/auto.view.tree.js":0},"mol/theme/auto/auto.view.tree":{"/mol/theme/auto/-view.tree/auto.view.tree.js":0},"mol/theme/auto/-view.tree/auto.view.tree.js":{"/mol/theme/auto":-1,"/mol/plugin":-1},"mol/lights":{"..":-9007199254740991,"/mol/lights":-1,"/mol/state/arg/value":-2,"/mol/media/match":-2,"/mol/state/local/value":-3},"mol/state/arg":{"..":-9007199254740991,"./arg.ts":0,"/mol/state/arg":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/mem/key":-2,"/mol/action":-2},"mol/state":{"..":-9007199254740991},"mol/state/arg/arg.ts":{},"mol/action":{"..":-9007199254740991,"/mol/action":-1,"/mol/wire/method":-1},"mol/media":{"..":-9007199254740991,"/mol/media":-1,"/mol/object2":-1,"/mol/mem/key":-2,"/mol/dom/context/match/media":-3},"mol/state/local":{"..":-9007199254740991,"/mol/state/local":-1,"/mol/object":-1,"/mol/dom/context/local/storage":-4,"/mol/mem":-2,"/mol/mem/key":-2,"/mol/storage/persisted":-4,"/mol/state/local/value":-3,"./local.ts":0,"/mol/state/local/node":-1,"/node/os/homedir":-3,"/mol/file/absolute":-3},"mol/storage":{"..":-9007199254740991,"/mol/storage":-1,"/mol/object2":-1,"/mol/mem":-2,"/mol/dom/context/navigator/storage":-3,"/mol/mem/persist":-3,"/mol/mem/cached":-3,"/mol/log3/done":-5,"/mol/log3/fail":-5,"/mol/wire/sync":-3},"mol/mem/persist":{"..":-9007199254740991,"/mol/mem/persist":-1,"/mol/wire/solid":-1},"mol/mem/cached":{"..":-9007199254740991,"/mol/mem/cached":-1,"/mol/wire/probe":-1},"mol/state/local/local.ts":{"/mol/state/local":-1,"/mol/object":-1,"/mol/dom/context/local/storage":-4,"/mol/mem":-2,"/mol/mem/key":-2,"/mol/storage/persisted":-4,"/mol/state/local/value":-3},"mol/file":{"..":-9007199254740991,"/mol/file/type":-1,"/mol/file/stat":-1,"/mol/file":-1,"/mol/file/base":-1,"./file.ts":0,"/node/fs/stat/sync":-1,"/mol/fail":-2,"/mol/file/node/buffer/normalize":-1,"/mol/file/node":-1,"/node/path/resolve":-3,"/mol/mem":-2,"/node/fs/watch":-4,"/mol/fail/log":-3,"/node/path/join":-4,"/mol/wire/async":-4,"/mol/action":-2,"/mol/fail/catch":-4,"/mol/fail/hidden":-4,"/node/fs/mkdir/sync":-4,"/node/fs/copy/file/sync":-3,"/node/fs/unlink/sync":-3,"/node/fs/read/file/sync":-4,"/mol/promise/like":-4,"/node/fs/write/file/sync":-4,"/node/fs/readdir/sync":-4,"/node/path/relative":-3,"/mol/mem/key":-2,"/node/node:stream":-3,"stream":-3,"/node/fs/create/read/stream":-3,"/node/fs/create/write/stream":-3},"mol/file/base":{"..":-9007199254740991,"/mol/file/base":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/const":-4,"/mol/action":-2,"/mol/mem":-2,"/mol/file/stat":-2,"/mol/after/timeout":-2,"/mol/wire/async":-4,"/mol/wire/probe":-5,"/mol/fail/catch":-4,"/mol/fail/log":-5,"/mol/lock":-2,"/mol/promise/like":-4,"/mol/fail/hidden":-4,"/mol/mem/cached":-3,"/mol/compare/array":-3,"/mol/log3/rise":-4,"/mol/file/node/buffer":-5,"/mol/charset/decode":-4,"/mol/charset/encode":-4,"/mol/file/transaction/mode":-2,"/mol/file/transaction/make":-3},"mol/lock":{"..":-9007199254740991,"/mol/lock":-1,"/mol/object":-1,"/mol/wire/auto":-3,"/mol/wire/sync":-2},"mol/compare/array":{"..":-9007199254740991,"/mol/compare/array":-1},"mol/charset/decode":{"..":-9007199254740991,"/mol/charset/encoding":-1,"/mol/charset/decode":-1},"mol/charset":{"..":-9007199254740991},"mol/charset/encoding":{"..":-9007199254740991,"/mol/charset/encoding":-1},"mol/charset/encode":{"..":-9007199254740991,"/node/util":-1,"/mol/charset/encode":-1},"mol/file/transaction":{"..":-9007199254740991,"/mol/file/transaction/mode":-1,"/mol/file/transaction/buffer":-1,"/mol/file/transaction":-1,"/mol/object":-1,"./transaction.ts":0,"/node/fs/constants":-2,"/mol/file/transaction/node":-1,"/mol/mem":-2,"/mol/wire/solid":-3,"/node/fs/open/sync":-3,"/node/fs/writev/sync":-4,"/node/fs/write/sync":-3,"/node/fs/ftruncate/sync":-3,"/mol/file/node/buffer/normalize":-3,"/node/fs/read/file/sync":-3,"/node/fs/close/sync":-3},"mol/file/transaction/transaction.ts":{"/mol/file/transaction/mode":-1,"/mol/file/transaction/buffer":-1,"/mol/file/transaction":-1,"/mol/object":-1},"mol/file/file.ts":{"/mol/file/type":-1,"/mol/file/stat":-1,"/mol/file":-1,"/mol/file/base":-1},"node_modules":{"..":-9007199254740991},"mol/book2":{"..":-9007199254740991,"./book2.view.tree":0,"/mol/book2":0,"/mol/fail/log":-5,"/mol/mem":-1,"/mol/mem/cached":-3,"/mol/after/tick":-4,"/mol/view":0,"/mol/style/attach":0,"/mol/theme/field":-1,"/mol/theme/focus":-2,"/mol/layer/speck":-1,"/mol/theme/card":-1,"/mol/book2/placeholder":0,"/mol/book2/gap":0,"/mol/scroll":-1,"/mol/book2/prototype":-1,"/mol/mem/key":-1,"/mol/type/enforce":-1,"/mol/book2/-view.tree/book2.view.tree.js":0},"mol/book2/book2.view.tree":{"/mol/book2/-view.tree/book2.view.tree.js":0},"mol/book2/-view.tree/book2.view.tree.js":{"/mol/book2":-1,"/mol/scroll":-1,"/mol/view":-3,"/mol/mem":-1,"/mol/book2/prototype":-1,"/mol/mem/key":-1},"mol/scroll":{"..":-9007199254740991,"./scroll.view.tree":0,"/mol/scroll":-1,"/mol/mem":-1,"/mol/print/active":-3,"/mol/view":-1,"/mol/scroll/prototype":-1,"/mol/scroll/-view.tree/scroll.view.tree.js":0,"/mol/style/unit":-1,"/mol/style/define":-1},"mol/scroll/scroll.view.tree":{"/mol/scroll/-view.tree/scroll.view.tree.js":0},"mol/scroll/-view.tree/scroll.view.tree.js":{"/mol/scroll":-1,"/mol/view":-1,"/mol/mem":-1,"/mol/scroll/prototype":-1},"mol/print":{"..":-9007199254740991,"/mol/print":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/dom/listener":-3,"/mol/dom/context":-3},"mol/dom/listener":{"..":-9007199254740991,"/mol/dom/listener":-1,"/mol/object":-1},"mol/style/define":{"..":-9007199254740991,"/mol/style/define":-1,"/mol/view":-2,"/mol/style/guard":-2,"/mol/style/attach":-2,"/mol/style/sheet":-3},"mol/style/guard":{"..":-9007199254740991,"/mol/view":-1,"/mol/style/guard":-1,"/mol/style/properties":-1,"/mol/style/pseudo/element":-1,"/mol/style/pseudo/class":-1,"/mol/type/keys/extract":-1,"/mol/type/error":-2},"mol/style/pseudo":{"..":-9007199254740991,"/mol/style/pseudo/class":-1,"/mol/style/pseudo/element":-1},"mol/type/error":{"..":-9007199254740991,"/mol/type/error":-1},"mol/style/sheet":{"..":-9007199254740991,"/mol/style/sheet":-1,"/mol/view":-2,"/mol/style/guard":-2,"/mol/dom/qname":-2,"/mol/ambient":-2,"/mol/func/name":-2},"mol/layer":{"..":-9007199254740991,"/mol/layer":-1,"/mol/style/prop":-1,"/mol/style/attach":0,"/mol/layer/hover":-1,"/mol/layer/focus":-1,"/mol/layer/speck":-1,"/mol/layer/float":-1,"/mol/layer/popup":-1},"mol/type/enforce":{"..":-9007199254740991,"/mol/type/enforce":-1},"mol/link/iconed":{"..":-9007199254740991,"./iconed.view.tree":0,"/mol/link/iconed":0,"/mol/mem":-1,"/mol/state/arg/href":-3,"/mol/style/attach":0,"/mol/theme/dark":-0.25,"/mol/gap/text":-1,"/mol/link/iconed/icon":0,"/mol/theme":0,"/mol/theme/image":-1,"/mol/link":-1,"/mol/image":-1,"/mol/link/iconed/prototype":-1,"/mol/type/enforce":-1,"/mol/link/iconed/-view.tree/iconed.view.tree.js":0},"mol/link":{"..":-9007199254740991,"./link.view.tree":0,"/mol/link":-1,"/mol/mem":-1,"/mol/state/arg":-3,"/mol/state/arg/href":-3,"/mol/state/arg/href/normal":-3,"/mol/state/arg/value":-4,"/mol/dom/context/location/origin":-3,"/mol/fail/log":-4,"/mol/view":-1,"/mol/link/prototype":-1,"/mol/view/content":-2,"/mol/link/-view.tree/link.view.tree.js":0,"/mol/style/unit":-1,"/mol/style/define":-1,"/mol/theme/control":-2,"/mol/gap/text":-2,"/mol/gap/space":-2,"/mol/gap/round":-3,"/mol/theme/hover":-4,"/mol/theme/focus":-3,"/mol/theme/current":-5},"mol/link/link.view.tree":{"/mol/link/-view.tree/link.view.tree.js":0},"mol/link/-view.tree/link.view.tree.js":{"/mol/link":-1,"/mol/view":-1,"/mol/mem":-1,"/mol/link/prototype":-1},"mol/link/iconed/iconed.view.tree":{"/mol/link/iconed/-view.tree/iconed.view.tree.js":0},"mol/link/iconed/-view.tree/iconed.view.tree.js":{"/mol/link/iconed":-1,"/mol/link":-1,"/mol/image":-3,"/mol/mem":-1,"/mol/link/iconed/prototype":-1},"mol/image":{"..":-9007199254740991,"./image.view.tree":0,"/mol/image":0,"/mol/mem":-1,"/mol/style/attach":0,"/mol/gap/round":-1,"/mol/view":-1,"/mol/image/prototype":-1,"/mol/image/-view.tree/image.view.tree.js":0},"mol/image/image.view.tree":{"/mol/image/-view.tree/image.view.tree.js":0},"mol/image/-view.tree/image.view.tree.js":{"/mol/image":-1,"/mol/view":-1,"/mol/mem":-1,"/mol/image/prototype":-1},"mol/lights/toggle":{"..":-9007199254740991,"./toggle.view.tree":0,"/mol/lights/toggle":-1,"/mol/lights":-3,"/mol/check/icon":-1,"/mol/icon/brightness/4":-2,"/mol/locale/text":-3,"/mol/lights/toggle/hint":-3,"/mol/mem":-1,"/mol/lights/toggle/prototype":-1,"/mol/lights/toggle/-view.tree/toggle.view.tree.js":0},"mol/lights/toggle/toggle.view.tree":{"/mol/lights/toggle/-view.tree/toggle.view.tree.js":0},"mol/lights/toggle/-view.tree/toggle.view.tree.js":{"/mol/lights/toggle":-1,"/mol/check/icon":-1,"/mol/icon/brightness/4":-3,"/mol/locale/text":-3,"/mol/lights/toggle/hint":-3,"/mol/mem":-1,"/mol/lights/toggle/prototype":-1},"mol/check/icon":{"..":-9007199254740991,"/mol/style/attach":0,"./icon.view.tree":0,"/mol/check/icon":0,"/mol/check/checked":0,"/mol/theme/current":-1,"/mol/check":-1,"/mol/check/icon/-view.tree/icon.view.tree.js":0},"mol/check":{"..":-9007199254740991,"/mol/style/attach":0,"/mol/check":0,"/mol/check/title":0,"./check.view.tree":0,"/mol/maybe":-4,"/mol/view/content":-2,"/mol/button/minor":-1,"/mol/view":-1,"/mol/mem":-1,"/mol/check/prototype":-1,"/mol/type/enforce":-1,"/mol/check/-view.tree/check.view.tree.js":0},"mol/check/check.view.tree":{"/mol/check/-view.tree/check.view.tree.js":0},"mol/check/-view.tree/check.view.tree.js":{"/mol/check":-1,"/mol/button/minor":-1,"/mol/view":-3,"/mol/mem":-1,"/mol/check/prototype":-1},"mol/button/minor":{"..":-9007199254740991,"/mol/style/attach":0,"./minor.view.tree":0,"/mol/button/minor":0,"/mol/theme/control":-1,"/mol/theme/shade":-1,"/mol/button/typed":-1,"/mol/button/minor/-view.tree/minor.view.tree.js":0},"mol/button":{"..":-9007199254740991,"./button.view.tree":0,"/mol/button":0,"/mol/mem":-1,"/mol/fail/hidden":-4,"/mol/keyboard/code/enter":-3,"/mol/fail/log":-4,"/mol/style/attach":0,"/mol/gap/round":-1,"/mol/layer/hover":-1,"/mol/layer/focus":-1,"/mol/view":-1,"/mol/speck":-1,"/mol/button/prototype":-1,"/mol/type/enforce":-1,"/mol/view/content":-2,"/mol/button/-view.tree/button.view.tree.js":0},"mol/button/button.view.tree":{"/mol/button/-view.tree/button.view.tree.js":0},"mol/button/-view.tree/button.view.tree.js":{"/mol/button":-1,"/mol/view":-1,"/mol/speck":-3,"/mol/mem":-1,"/mol/button/prototype":-1},"mol/speck":{"..":-9007199254740991,"/mol/style/attach":0,"./speck.view.tree":0,"/mol/speck":0,"/mol/layer/speck":-1,"/mol/view":-1,"/mol/theme/accent":-3,"/mol/speck/-view.tree/speck.view.tree.js":0},"mol/speck/speck.view.tree":{"/mol/speck/-view.tree/speck.view.tree.js":0},"mol/speck/-view.tree/speck.view.tree.js":{"/mol/speck":-1,"/mol/view":-1,"/mol/theme/accent":-3},"mol/keyboard/code":{"..":-9007199254740991,"/mol/keyboard/code":-1},"mol/keyboard":{"..":-9007199254740991},"mol/button/minor/minor.view.tree":{"/mol/button/minor/-view.tree/minor.view.tree.js":0},"mol/button/minor/-view.tree/minor.view.tree.js":{"/mol/button/minor":-1,"/mol/button/typed":-1},"mol/button/typed":{"..":-9007199254740991,"/mol/style/attach":0,"./typed.view.tree":0,"/mol/button/typed":0,"/mol/gap/text":-1,"/mol/gap/round":-1,"/mol/gap/space":-1,"/mol/theme/hover":-1,"/mol/theme/focus":-1,"/mol/button":-1,"/mol/button/typed/-view.tree/typed.view.tree.js":0},"mol/button/typed/typed.view.tree":{"/mol/button/typed/-view.tree/typed.view.tree.js":0},"mol/button/typed/-view.tree/typed.view.tree.js":{"/mol/button/typed":-1,"/mol/button":-1},"mol/maybe":{"..":-9007199254740991,"/mol/maybe":-1},"mol/check/icon/icon.view.tree":{"/mol/check/icon/-view.tree/icon.view.tree.js":0},"mol/check/icon/-view.tree/icon.view.tree.js":{"/mol/check/icon":-1,"/mol/check":-1},"mol/icon/brightness/4":{"..":-9007199254740991,"/mol/icon/brightness/4":-1,"/mol/icon":-1,"/mol/icon/brightness/4/-view.tree/4.view.tree.js":0},"mol/icon/brightness":{"..":-9007199254740991},"mol/icon":{"..":-9007199254740991,"/mol/style/attach":0,"./icon.view.tree":0,"/mol/icon":0,"/mol/theme/back":-1,"/mol/icon/path":0,"/mol/svg/root":-1,"/mol/svg/path":-1,"/mol/mem":-1,"/mol/icon/prototype":-1,"/mol/type/enforce":-1,"/mol/icon/-view.tree/icon.view.tree.js":0},"mol/icon/icon.view.tree":{"/mol/icon/-view.tree/icon.view.tree.js":0},"mol/icon/-view.tree/icon.view.tree.js":{"/mol/icon":-1,"/mol/svg/root":-1,"/mol/svg/path":-3,"/mol/mem":-1,"/mol/icon/prototype":-1},"mol/svg/root":{"..":-9007199254740991,"/mol/style/attach":0,"./root.view.tree":0,"/mol/svg/root":0,"/mol/svg":-1,"/mol/svg/root/-view.tree/root.view.tree.js":0},"mol/svg":{"..":-9007199254740991,"./svg.view.tree":0,"/mol/svg":-1,"/mol/mem":-2,"/mol/dom/context":-3,"/mol/state/time/now":-3,"/mol/view":-1,"/mol/svg/-view.tree/svg.view.tree.js":0},"mol/svg/svg.view.tree":{"/mol/svg/-view.tree/svg.view.tree.js":0},"mol/svg/-view.tree/svg.view.tree.js":{"/mol/svg":-1,"/mol/view":-1},"mol/state/time":{"..":-9007199254740991,"/mol/state/time":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/after/timeout":-2,"/mol/after/frame":-2},"mol/svg/root/root.view.tree":{"/mol/svg/root/-view.tree/root.view.tree.js":0},"mol/svg/root/-view.tree/root.view.tree.js":{"/mol/svg/root":-1,"/mol/svg":-1},"mol/svg/path":{"..":-9007199254740991,"/mol/svg/path":-1,"/mol/svg":-1,"/mol/svg/path/-view.tree/path.view.tree.js":0},"mol/svg/path/-view.tree/path.view.tree.js":{"/mol/svg/path":-1,"/mol/svg":-1},"mol/icon/brightness/4/-view.tree/4.view.tree.js":{"/mol/icon/brightness/4":-1,"/mol/icon":-1},"mol/locale":{"..":-9007199254740991,"/mol/locale/dict":-1,"/mol":-1.25,"/mol/locale":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/state/local/value":-3,"/mol/dom/context/navigator/language/replace":-3,"/mol/mem/key":-2,"/mol/file/relative":-3,"/mol/fail/catch":-4},"mol/button/open":{"..":-9007199254740991,"./open.view.tree":0,"/mol/button/open/native":0,"/mol/style/attach":0,"/mol/button/open":-1,"/mol/button/minor":-1,"/mol/icon/upload":-2,"/mol/mem":-1,"/mol/button/open/prototype":-1,"/mol/view":-1,"/mol/button/open/native/prototype":-1,"/mol/type/enforce":-1,"/mol/button/open/-view.tree/open.view.tree.js":0},"mol/button/open/open.view.tree":{"/mol/button/open/-view.tree/open.view.tree.js":0},"mol/button/open/-view.tree/open.view.tree.js":{"/mol/button/open":-1,"/mol/button/minor":-1,"/mol/icon/upload":-3,"/mol/button/open/native":-1,"/mol/mem":-1,"/mol/button/open/prototype":-1,"/mol/view":-1,"/mol/button/open/native/prototype":-1},"mol/icon/upload":{"..":-9007199254740991,"/mol/icon/upload":-1,"/mol/icon":-1,"/mol/icon/upload/-view.tree/upload.view.tree.js":0},"mol/icon/upload/-view.tree/upload.view.tree.js":{"/mol/icon/upload":-1,"/mol/icon":-1},"mol/textarea":{"..":-9007199254740991,"./textarea.view.tree":0,"/mol/textarea":0,"/mol/keyboard/code":-4,"/mol/mem":-1,"/mol/keyboard/code/tab":-5,"/mol/syntax2/md/code":-3,"/mol/style/attach":0,"/mol/gap/round":-1,"/mol/textarea/view":0,"/mol/textarea/view/copy":0,"/mol/textarea/clickable":0,"/mol/textarea/edit":0,"/mol/gap/text":-1,"/mol/theme/text":-1,"/mol/textarea/sidebar/showed":0,"/mol/layer/hover":-1,"/mol/layer/focus":-1,"/mol/stack":-1,"/mol/syntax2":-2,"/mol/text/code":-1,"/mol/textarea/prototype":-1,"/mol/string":-1,"/mol/type/enforce":-1,"/mol/textarea/-view.tree/textarea.view.tree.js":0},"mol/textarea/textarea.view.tree":{"/mol/textarea/-view.tree/textarea.view.tree.js":0},"mol/textarea/-view.tree/textarea.view.tree.js":{"/mol/textarea":-1,"/mol/stack":-1,"/mol/textarea/edit":-1,"/mol/syntax2":-3,"/mol/text/code":-3,"/mol/mem":-1,"/mol/textarea/prototype":-1,"/mol/string":-1},"mol/stack":{"..":-9007199254740991,"/mol/style/attach":0,"./stack.view.tree":0,"/mol/stack":0,"/mol/view":-1,"/mol/stack/-view.tree/stack.view.tree.js":0},"mol/stack/stack.view.tree":{"/mol/stack/-view.tree/stack.view.tree.js":0},"mol/stack/-view.tree/stack.view.tree.js":{"/mol/stack":-1,"/mol/view":-1},"mol/syntax2":{"..":-9007199254740991,"/mol/syntax2":-1,"/mol/fail":-4},"mol/text/code":{"..":-9007199254740991,"./code.view.tree":0,"/mol/text/code":-1,"/mol/support/css/overflow/anchor":-3,"/mol/mem":-1,"/mol/mem/key":-1,"/mol/syntax2/md/code":-3,"/mol/dom/context/document/location/href":-3,"/mol/fail/log":-4,"/mol/stack":-1,"/mol/text/code/line":-1,"/mol/list":-1,"/mol/button/copy":-1,"/mol/locale/text":-3,"/mol/text/code/prototype":-1,"/mol/type/enforce":-1,"/mol/text/code/-view.tree/code.view.tree.js":0,"/mol/style/unit":-1,"/mol/style/define":-1,"/mol/gap/text":-3},"mol/text":{"..":-9007199254740991},"mol/text/code/code.view.tree":{"/mol/text/code/-view.tree/code.view.tree.js":0},"mol/text/code/-view.tree/code.view.tree.js":{"/mol/text/code":-1,"/mol/stack":-1,"/mol/text/code/line":-3,"/mol/list":-3,"/mol/button/copy":-3,"/mol/locale/text":-3,"/mol/mem/key":-1,"/mol/text/code/prototype":-1,"/mol/mem":-1},"mol/text/code/line":{"..":-9007199254740991,"./line.view.tree":0,"/mol/text/code/line":-1,"/mol/syntax2/md/code":-3,"/mol/mem/key":-1,"/mol/view":-1,"/mol/paragraph":-1,"/mol/text/code/token":-1,"/mol/text/code/token/link":-1,"/mol/mem":-1,"/mol/text/code/line/prototype":-1,"/mol/type/enforce":-1,"/mol/text/code/line/-view.tree/line.view.tree.js":0,"/mol/style/unit":-1,"/mol/style/define":-1,"/mol/theme/shade":-3},"mol/text/code/line/line.view.tree":{"/mol/text/code/line/-view.tree/line.view.tree.js":0},"mol/text/code/line/-view.tree/line.view.tree.js":{"/mol/text/code/line":-1,"/mol/paragraph":-1,"/mol/view":-3,"/mol/text/code/token":-3,"/mol/text/code/token/link":-3,"/mol/mem":-1,"/mol/text/code/line/prototype":-1,"/mol/mem/key":-1},"mol/paragraph":{"..":-9007199254740991,"./paragraph.view.tree":0,"/mol/paragraph":0,"/mol/mem":-2,"/mol/view":-1,"/mol/window/size":-3,"/mol/style/attach":0,"/mol/paragraph/-view.tree/paragraph.view.tree.js":0},"mol/paragraph/paragraph.view.tree":{"/mol/paragraph/-view.tree/paragraph.view.tree.js":0},"mol/paragraph/-view.tree/paragraph.view.tree.js":{"/mol/paragraph":-1,"/mol/view":-1},"mol/text/code/token":{"..":-9007199254740991,"/mol/text/code/token":-1,"/mol/dimmer":-1,"/mol/text/code/token/link":-1,"/mol/text/code/token/-view.tree/token.view.tree.js":0,"/mol/style/func":-1,"/mol/style/define":-1},"mol/dimmer":{"..":-9007199254740991,"./dimmer.view.tree":0,"/mol/dimmer":0,"/mol/mem":-2,"/mol/regexp/from":-3,"/mol/view":-2,"/mol/style/attach":0,"/mol/dimmer/low":0,"/mol/dimmer/high":0,"/mol/theme/focus":-1,"/mol/paragraph":-1,"/mol/mem/key":-1,"/mol/dimmer/prototype":-1,"/mol/type/enforce":-1,"/mol/view/content":-2,"/mol/dimmer/-view.tree/dimmer.view.tree.js":0},"mol/dimmer/dimmer.view.tree":{"/mol/dimmer/-view.tree/dimmer.view.tree.js":0},"mol/dimmer/-view.tree/dimmer.view.tree.js":{"/mol/dimmer":-1,"/mol/paragraph":-1,"/mol/mem/key":-1,"/mol/dimmer/prototype":-1},"mol/regexp":{"..":-9007199254740991,"/mol/regexp/source":-1,"/mol/regexp/groups":-1,"/mol/type/merge":-2,"/mol/type/intersect":-2,"/mol/type/override":-2,"/mol/regexp":-1,"/mol/regexp/from":-2,"/mol/fail":-4,"/mol/regexp/repeat/greedy":-3,"/mol/regexp/optional":-5,"/mol/unicode/category":-2},"mol/type/merge":{"..":-9007199254740991,"/mol/type/merge":-1,"/mol/type/merge/object":-1,"/mol/type/equals":-3},"mol/type/equals":{"..":-9007199254740991,"/mol/type/equals":-1},"mol/type/intersect":{"..":-9007199254740991,"/mol/type/intersect":-1},"mol/unicode":{"..":-9007199254740991,"/mol/unicode/category":-1,"/mol/unicode/category/binary":-1,"/mol/char/category/general":-1,"/mol/unicode/category/script":-1},"mol/text/code/token/-view.tree/token.view.tree.js":{"/mol/text/code/token":-1,"/mol/dimmer":-1,"/mol/text/code/token/link":-1},"mol/syntax2/md":{"..":-9007199254740991,"/mol/syntax2/md/flow":-1,"/mol/syntax2":-1,"/mol/syntax2/md/line":-1,"/mol/syntax2/md/code":-1},"mol/list":{"..":-9007199254740991,"./list.view.tree":0,"/mol/list":0,"/mol/mem":-1,"/mol/support/css/overflow/anchor":-3,"/mol/print/active":-3,"/mol/mem/cached":-3,"/mol/window/size":-3,"/mol/fail/log":-5,"/mol/view":-1,"/mol/style/attach":0,"/mol/list/gap/before":0,"/mol/list/gap/after":0,"/mol/list/prototype":-1,"/mol/type/enforce":-1,"/mol/list/-view.tree/list.view.tree.js":0},"mol/list/list.view.tree":{"/mol/list/-view.tree/list.view.tree.js":0},"mol/list/-view.tree/list.view.tree.js":{"/mol/list":-1,"/mol/view":-1,"/mol/mem":-1,"/mol/list/prototype":-1},"mol/support/css":{"..":-9007199254740991,"/mol/support/css/overflow/anchor":-1,"/mol/dom/context":-3},"mol/support":{"..":-9007199254740991},"mol/button/copy":{"..":-9007199254740991,"./copy.view.tree":0,"/mol/button/copy":-1,"/mol/mem":-1,"/mol/html/encode":-3,"/mol/wire/sync":-3,"/mol/dom/context/navigator/clipboard":-3,"/mol/button/minor":-1,"/mol/blob":-1,"/mol/icon/clipboard/outline":-2,"/mol/button/copy/prototype":-1,"/mol/type/enforce":-1,"/mol/button/copy/-view.tree/copy.view.tree.js":0},"mol/button/copy/copy.view.tree":{"/mol/button/copy/-view.tree/copy.view.tree.js":0},"mol/button/copy/-view.tree/copy.view.tree.js":{"/mol/button/copy":-1,"/mol/button/minor":-1,"/mol/blob":-3,"/mol/icon/clipboard/outline":-3,"/mol/mem":-1,"/mol/button/copy/prototype":-1},"mol/blob":{"..":-9007199254740991,"/mol/blob":-1,"/node/buffer":-1,"/mol/dom/context":-1},"mol/icon/clipboard/outline":{"..":-9007199254740991,"/mol/icon/clipboard/outline":-1,"/mol/icon":-1,"/mol/icon/clipboard/outline/-view.tree/outline.view.tree.js":0},"mol/icon/clipboard":{"..":-9007199254740991,"/mol/icon/clipboard":-1,"/mol/icon":-1,"/mol/icon/clipboard/-view.tree/clipboard.view.tree.js":0},"mol/icon/clipboard/-view.tree/clipboard.view.tree.js":{"/mol/icon/clipboard":-1,"/mol/icon":-1},"mol/icon/clipboard/outline/-view.tree/outline.view.tree.js":{"/mol/icon/clipboard/outline":-1,"/mol/icon":-1},"mol/html/encode":{"..":-9007199254740991,"/mol/html/encode":-1},"mol/html":{"..":-9007199254740991},"mol/string":{"..":-9007199254740991,"./string.view.tree":0,"/mol/string":0,"/mol/action":-2,"/mol/fail/hidden":-4,"/mol/mem":-1,"/mol/dom/listener":-3,"/mol/dom/context/document":-4,"/mol/wire/async":-4,"/mol/dom/context/document/active/element":-3,"/mol/style/attach":0,"/mol/gap/round":-1,"/mol/gap/text":-1,"/mol/theme/field":-1,"/mol/theme/text":-1,"/mol/theme/line":-1,"/mol/layer/hover":-1,"/mol/layer/focus":-1,"/mol/theme/focus":-1,"/mol/theme/shade":-1,"/mol/view":-1,"/mol/hotkey":-1,"/mol/string/prototype":-1,"/mol/type/enforce":-1,"/mol/string/-view.tree/string.view.tree.js":0},"mol/string/string.view.tree":{"/mol/string/-view.tree/string.view.tree.js":0},"mol/string/-view.tree/string.view.tree.js":{"/mol/string":-1,"/mol/view":-1,"/mol/hotkey":-3,"/mol/mem":-1,"/mol/string/prototype":-1},"mol/hotkey":{"..":-9007199254740991,"./hotkey.view.tree":0,"/mol/hotkey":-1,"/mol/keyboard/code":-3,"/mol/plugin":-1,"/mol/mem":-1,"/mol/hotkey/prototype":-1,"/mol/hotkey/-view.tree/hotkey.view.tree.js":0},"mol/hotkey/hotkey.view.tree":{"/mol/hotkey/-view.tree/hotkey.view.tree.js":0},"mol/hotkey/-view.tree/hotkey.view.tree.js":{"/mol/hotkey":-1,"/mol/plugin":-1,"/mol/mem":-1,"/mol/hotkey/prototype":-1},"mol/page":{"..":-9007199254740991,"/mol/page":-1,"/mol/view":-1,"/mol/scroll":-1,"/mol/mem":-1,"/mol/page/prototype":-1,"/mol/type/enforce":-1,"/mol/view/content":-2,"/mol/page/-view.tree/page.view.tree.js":0,"/mol/style/unit":-1,"/mol/style/func":-1,"/mol/style/define":-1,"/mol/theme/text":-2,"/mol/gap/block":-3,"/mol/theme/card":-4,"/mol/gap/round":-4,"/mol/gap/text":-3},"mol/page/-view.tree/page.view.tree.js":{"/mol/page":-1,"/mol/view":-1,"/mol/scroll":-3,"/mol/mem":-1,"/mol/page/prototype":-1},"optimade/cifplayer/player":{"..":-9007199254740991,"/mol/style/attach":0,"/mol/theme/light":-0.25,"./player.view.tree":0,"/mol/theme":0,"/mol/theme/back":-1,"/optimade/cifplayer/player":-1,"/mol/view":-1,"/mol/theme/auto":-2,"/optimade/cifplayer/lib/three/view":-1,"/mol/paragraph":-1,"/mol/icon/eye/check":-2,"/mol/button/minor":-1,"/mol/check/box":-1,"/mol/list":-1,"/mol/scroll":-1,"/mol/pick":-1,"/mol/number":-1,"/mol/icon/image/filter/center/focus":-2,"/mol/check/icon":-1,"/mol/icon/magnify/plus/outline":-2,"/mol/icon/magnify/minus/outline":-2,"/mol/switch":-1,"/mol/card":-1,"/mol/theme/special":-3,"/mol/mem":-1,"/optimade/cifplayer/player/prototype":-1,"/mol/mem/key":-1,"/mol/type/enforce":-1,"/optimade/cifplayer/player/-view.tree/player.view.tree.js":0,"/mol/style/define":-1,"/mol/style/func/vary":-3,"/mol/gap/text":-3,"/mol/gap/block":-3,"/mol/gap/space":-3},"optimade/cifplayer/player/player.view.tree":{"/optimade/cifplayer/player/-view.tree/player.view.tree.js":0},"optimade/cifplayer/player/-view.tree/player.view.tree.js":{"/optimade/cifplayer/player":-1,"/mol/view":-1,"/mol/theme/auto":-3,"/optimade/cifplayer/lib/three/view":-3,"/mol/paragraph":-3,"/mol/icon/eye/check":-3,"/mol/button/minor":-3,"/mol/check/box":-3,"/mol/list":-3,"/mol/scroll":-3,"/mol/pick":-3,"/mol/number":-3,"/mol/icon/image/filter/center/focus":-3,"/mol/check/icon":-3,"/mol/icon/magnify/plus/outline":-3,"/mol/icon/magnify/minus/outline":-3,"/mol/switch":-3,"/mol/card":-3,"/mol/theme/special":-3,"/mol/mem":-1,"/optimade/cifplayer/player/prototype":-1,"/mol/mem/key":-1},"optimade/cifplayer/lib/three/view":{"..":-9007199254740991,"/optimade/cifplayer/lib/three/view":-1,"/mol/view":-1,"/mol/mem/key":-1,"/optimade/cifplayer/lib/three/view/prototype":-1,"/optimade/cifplayer/lib/three/view/-view.tree/view.view.tree.js":0,"/mol/style/define":-1},"optimade/cifplayer/lib/three":{"..":-9007199254740991,"/optimade/cifplayer/lib/three/_three.js":0},"optimade/cifplayer/lib":{"..":-9007199254740991},"optimade/cifplayer/lib/three/_three.js":{},"optimade/cifplayer/lib/three/view/-view.tree/view.view.tree.js":{"/optimade/cifplayer/lib/three/view":-1,"/mol/view":-1,"/mol/mem/key":-1,"/optimade/cifplayer/lib/three/view/prototype":-1},"mol/icon/eye/check":{"..":-9007199254740991,"/mol/icon/eye/check":-1,"/mol/icon":-1,"/mol/icon/eye/check/-view.tree/check.view.tree.js":0},"mol/icon/eye":{"..":-9007199254740991,"/mol/icon/eye":-1,"/mol/icon":-1,"/mol/icon/eye/-view.tree/eye.view.tree.js":0},"mol/icon/eye/-view.tree/eye.view.tree.js":{"/mol/icon/eye":-1,"/mol/icon":-1},"mol/icon/eye/check/-view.tree/check.view.tree.js":{"/mol/icon/eye/check":-1,"/mol/icon":-1},"mol/check/box":{"..":-9007199254740991,"/mol/style/attach":0,"./box.view.tree":0,"/mol/check/box/icon":0,"/mol/gap/round":-1,"/mol/theme/line":-1,"/mol/theme/shade":-1,"/mol/check":0,"/mol/check/checked":0,"/mol/theme/field":-1,"/mol/theme/text":-1,"/mol/check/box":-1,"/mol/icon/tick":-2,"/mol/mem":-1,"/mol/check/box/prototype":-1,"/mol/check/box/-view.tree/box.view.tree.js":0},"mol/check/box/box.view.tree":{"/mol/check/box/-view.tree/box.view.tree.js":0},"mol/check/box/-view.tree/box.view.tree.js":{"/mol/check/box":-1,"/mol/check":-1,"/mol/icon/tick":-3,"/mol/mem":-1,"/mol/check/box/prototype":-1},"mol/icon/tick":{"..":-9007199254740991,"/mol/icon/tick":-1,"/mol/icon":-1,"/mol/icon/tick/-view.tree/tick.view.tree.js":0},"mol/icon/tick/-view.tree/tick.view.tree.js":{"/mol/icon/tick":-1,"/mol/icon":-1},"mol/pick":{"..":-9007199254740991,"./pick.view.tree":0,"/mol/pick":-1,"/mol/keyboard/code/escape":-3,"/mol/style/attach":0,"/mol/pick/trigger":0,"/mol/pop":-1,"/mol/check":-1,"/mol/mem":-1,"/mol/pick/prototype":-1,"/mol/type/enforce":-1,"/mol/view/content":-2,"/mol/pick/-view.tree/pick.view.tree.js":0},"mol/pick/pick.view.tree":{"/mol/pick/-view.tree/pick.view.tree.js":0},"mol/pick/-view.tree/pick.view.tree.js":{"/mol/pick":-1,"/mol/pop":-1,"/mol/check":-3,"/mol/mem":-1,"/mol/pick/prototype":-1},"mol/pop":{"..":-9007199254740991,"./pop.view.tree":0,"/mol/pop":0,"/mol/mem":-1,"/mol/window/size":-3,"/mol/view":-1,"/mol/dom/context/get/computed/style":-5,"/mol/dom/context/document/document/element":-4,"/mol/style/attach":0,"/mol/pop/bubble":0,"/mol/gap/round":-1,"/mol/layer/popup":-1,"/mol/theme/back":-1,"/mol/theme/card":-1,"/mol/scroll":0,"/mol/pop/align":0,"/mol/pop/prototype":-1,"/mol/type/enforce":-1,"/mol/view/content":-2,"/mol/pop/-view.tree/pop.view.tree.js":0},"mol/pop/pop.view.tree":{"/mol/pop/-view.tree/pop.view.tree.js":0},"mol/pop/-view.tree/pop.view.tree.js":{"/mol/pop":-1,"/mol/view":-1,"/mol/pop/bubble":-1,"/mol/mem":-1,"/mol/pop/prototype":-1},"mol/number":{"..":-9007199254740991,"/mol/style/attach":0,"/mol/number":0,"/mol/number/string":0,"./number.view.tree":0,"/mol/mem":-1,"/mol/wire/probe":-4,"/mol/view":-1,"/mol/string":-1,"/mol/icon/minus":-2,"/mol/button/minor":-1,"/mol/icon/plus":-2,"/mol/number/prototype":-1,"/mol/type/enforce":-1,"/mol/number/-view.tree/number.view.tree.js":0},"mol/number/number.view.tree":{"/mol/number/-view.tree/number.view.tree.js":0},"mol/number/-view.tree/number.view.tree.js":{"/mol/number":-1,"/mol/view":-1,"/mol/string":-3,"/mol/icon/minus":-3,"/mol/button/minor":-3,"/mol/icon/plus":-3,"/mol/mem":-1,"/mol/number/prototype":-1},"mol/icon/minus":{"..":-9007199254740991,"/mol/icon/minus":-1,"/mol/icon":-1,"/mol/icon/minus/-view.tree/minus.view.tree.js":0},"mol/icon/minus/-view.tree/minus.view.tree.js":{"/mol/icon/minus":-1,"/mol/icon":-1},"mol/icon/plus":{"..":-9007199254740991,"/mol/icon/plus":-1,"/mol/icon":-1,"/mol/icon/plus/-view.tree/plus.view.tree.js":0},"mol/icon/plus/-view.tree/plus.view.tree.js":{"/mol/icon/plus":-1,"/mol/icon":-1},"mol/icon/image/filter/center/focus":{"..":-9007199254740991,"/mol/icon/image/filter/center/focus":-1,"/mol/icon":-1,"/mol/icon/image/filter/center/focus/-view.tree/focus.view.tree.js":0},"mol/icon/image/filter/center":{"..":-9007199254740991},"mol/icon/image/filter":{"..":-9007199254740991,"/mol/icon/image/filter":-1,"/mol/icon":-1,"/mol/icon/image/filter/-view.tree/filter.view.tree.js":0},"mol/icon/image":{"..":-9007199254740991,"/mol/icon/image":-1,"/mol/icon":-1,"/mol/icon/image/-view.tree/image.view.tree.js":0},"mol/icon/image/-view.tree/image.view.tree.js":{"/mol/icon/image":-1,"/mol/icon":-1},"mol/icon/image/filter/-view.tree/filter.view.tree.js":{"/mol/icon/image/filter":-1,"/mol/icon":-1},"mol/icon/image/filter/center/focus/-view.tree/focus.view.tree.js":{"/mol/icon/image/filter/center/focus":-1,"/mol/icon":-1},"mol/icon/magnify/plus/outline":{"..":-9007199254740991,"/mol/icon/magnify/plus/outline":-1,"/mol/icon":-1,"/mol/icon/magnify/plus/outline/-view.tree/outline.view.tree.js":0},"mol/icon/magnify/plus":{"..":-9007199254740991,"/mol/icon/magnify/plus":-1,"/mol/icon":-1,"/mol/icon/magnify/plus/-view.tree/plus.view.tree.js":0},"mol/icon/magnify":{"..":-9007199254740991,"/mol/icon/magnify":-1,"/mol/icon":-1,"/mol/icon/magnify/-view.tree/magnify.view.tree.js":0},"mol/icon/magnify/-view.tree/magnify.view.tree.js":{"/mol/icon/magnify":-1,"/mol/icon":-1},"mol/icon/magnify/plus/-view.tree/plus.view.tree.js":{"/mol/icon/magnify/plus":-1,"/mol/icon":-1},"mol/icon/magnify/plus/outline/-view.tree/outline.view.tree.js":{"/mol/icon/magnify/plus/outline":-1,"/mol/icon":-1},"mol/icon/magnify/minus/outline":{"..":-9007199254740991,"/mol/icon/magnify/minus/outline":-1,"/mol/icon":-1,"/mol/icon/magnify/minus/outline/-view.tree/outline.view.tree.js":0},"mol/icon/magnify/minus":{"..":-9007199254740991,"/mol/icon/magnify/minus":-1,"/mol/icon":-1,"/mol/icon/magnify/minus/-view.tree/minus.view.tree.js":0},"mol/icon/magnify/minus/-view.tree/minus.view.tree.js":{"/mol/icon/magnify/minus":-1,"/mol/icon":-1},"mol/icon/magnify/minus/outline/-view.tree/outline.view.tree.js":{"/mol/icon/magnify/minus/outline":-1,"/mol/icon":-1},"mol/switch":{"..":-9007199254740991,"./switch.view.tree":0,"/mol/switch":-1,"/mol/state/session/value":-3,"/mol/check/list":-1,"/mol/mem":-1,"/mol/switch/prototype":-1,"/mol/switch/-view.tree/switch.view.tree.js":0},"mol/switch/switch.view.tree":{"/mol/switch/-view.tree/switch.view.tree.js":0},"mol/switch/-view.tree/switch.view.tree.js":{"/mol/switch":-1,"/mol/check/list":-1,"/mol/mem":-1,"/mol/switch/prototype":-1},"mol/check/list":{"..":-9007199254740991,"./list.view.tree":0,"/mol/check/list":0,"/mol/mem":-2,"/mol/style/attach":0,"/mol/gap/round":-1,"/mol/check/list/option":0,"/mol/check/checked":0,"/mol/theme/current":-1,"/mol/theme/text":-1,"/mol/view":-1,"/mol/check":-1,"/mol/mem/key":-1,"/mol/check/list/prototype":-1,"/mol/type/enforce":-1,"/mol/check/list/-view.tree/list.view.tree.js":0},"mol/check/list/list.view.tree":{"/mol/check/list/-view.tree/list.view.tree.js":0},"mol/check/list/-view.tree/list.view.tree.js":{"/mol/check/list":-1,"/mol/view":-1,"/mol/check":-3,"/mol/mem/key":-1,"/mol/check/list/prototype":-1},"mol/state/session":{"..":-9007199254740991,"/mol/state/session":-1,"/mol/object":-1,"/mol/dom/context/session/storage":-4,"/mol/mem/key":-2,"/mol/state/session/value":-3},"mol/card":{"..":-9007199254740991,"./card.view.tree":0,"/mol/card":0,"/mol/view":-1,"/mol/style/attach":0,"/mol/theme/card":-1,"/mol/theme/text":-1,"/mol/gap/round":-1,"/mol/card/content":0,"/mol/gap/block":-1,"/mol/card/status":0,"/mol/theme/line":-1,"/mol/gap/text":-1,"/mol/list":-1,"/mol/mem":-1,"/mol/card/prototype":-1,"/mol/type/enforce":-1,"/mol/view/content":-2,"/mol/card/-view.tree/card.view.tree.js":0},"mol/card/card.view.tree":{"/mol/card/-view.tree/card.view.tree.js":0},"mol/card/-view.tree/card.view.tree.js":{"/mol/card":-1,"/mol/list":-1,"/mol/view":-3,"/mol/mem":-1,"/mol/card/prototype":-1},"mol/text/text":{"..":-9007199254740991,"./text.view.tree":0,"/mol/text":0,"/mol/mem":-1,"/mol/syntax2/md/flow/tokenize":-3,"/mol/mem/key":-1,"/mol/dom/context/document/location/href":-3,"/mol/state/arg/separator":-4,"/mol/state/arg/link":-4,"/mol/fail/log":-4,"/mol/syntax2/md/code":-3,"/mol/syntax2/md/line/tokenize":-3,"/mol/after/tick":-4,"/mol/text/header":0,"/mol/style/attach":0,"/mol/gap/round":-1,"/mol/text/paragraph":0,"/mol/gap/text":-1,"/mol/text/spoiler/label/paragraph":0,"/mol/text/span":0,"/mol/text/string":0,"/mol/text/quote":0,"/mol/gap/block":-1,"/mol/theme/card":-1,"/mol/theme/back":-1,"/mol/text/header/link":0,"/mol/text/table":0,"/mol/text/table/cell":0,"/mol/text/grid":0,"/mol/text/grid/cell":0,"/mol/text/cut":0,"/mol/theme/line":-1,"/mol/text/link/http":0,"/mol/text/link":0,"/mol/text/link/icon":0,"/mol/text/embed":0,"/mol/text/embed/youtube":0,"/mol/text/embed/youtube/image":0,"/mol/text/embed/youtube/frame":0,"/mol/text/embed/object":0,"/mol/text/embed/object/fallback":0,"/mol/text/embed/image":0,"/mol/text/pre":0,"/mol/text/code/line":0,"/mol/text/type":0,"/mol/theme/special":-1,"/mol/theme/shade":-1,"/mol/list":-1,"/mol/paragraph":-1,"/mol/text/list":-1,"/mol/text/code":-1,"/mol/view":-1,"/mol/grid":-1,"/mol/grid/row":-1,"/mol/dimmer":-1,"/mol/link/iconed":-1,"/mol/embed/any":-1,"/mol/expander":-1,"/mol/text/prototype":-1,"/mol/link":-1,"/mol/locale/text":-3,"/mol/text/header/prototype":-1,"/mol/type/enforce":-1,"/mol/text/text/-view.tree/text.view.tree.js":0},"mol/text/text/text.view.tree":{"/mol/text/text/-view.tree/text.view.tree.js":0},"mol/text/text/-view.tree/text.view.tree.js":{"/mol/text":-1,"/mol/list":-1,"/mol/paragraph":-1,"/mol/text/list":-3,"/mol/text/header":-1,"/mol/text/code":-3,"/mol/view":-3,"/mol/grid":-3,"/mol/grid/row":-3,"/mol/dimmer":-3,"/mol/text/span":-1,"/mol/text/code/line":-3,"/mol/link/iconed":-3,"/mol/embed/any":-3,"/mol/expander":-3,"/mol/mem/key":-1,"/mol/text/prototype":-1,"/mol/link":-3,"/mol/locale/text":-3,"/mol/mem":-1,"/mol/text/header/prototype":-1},"mol/text/list":{"..":-9007199254740991,"/mol/style/attach":0,"./list.view.tree":0,"/mol/text/list":0,"/mol/text/list/item":0,"/mol/text/list/type":0,"/mol/text":-1,"/mol/mem/key":-1,"/mol/text/list/prototype":-1,"/mol/paragraph":-1,"/mol/type/enforce":-1,"/mol/text/list/-view.tree/list.view.tree.js":0},"mol/text/list/list.view.tree":{"/mol/text/list/-view.tree/list.view.tree.js":0},"mol/text/list/-view.tree/list.view.tree.js":{"/mol/text/list":-1,"/mol/text":-1,"/mol/text/list/item":-1,"/mol/mem/key":-1,"/mol/text/list/prototype":-1,"/mol/paragraph":-1},"mol/grid":{"..":-9007199254740991,"./grid.view.tree":0,"/mol/grid/node":-1,"/mol/grid":0,"/mol/mem":-1,"/mol/view":-1,"/mol/mem/key":-1,"/mol/state/session/value":-3,"/mol/style/attach":0,"/mol/grid/gap":0,"/mol/grid/table":0,"/mol/grid/head":0,"/mol/gap/text":-1,"/mol/theme/line":-1,"/mol/grid/row":0,"/mol/grid/col/head":0,"/mol/theme/shade":-1,"/mol/grid/cell/dimmer":0,"/mol/dimmer":-1,"/mol/grid/cell":-1,"/mol/grid/number":-1,"/mol/float":-1,"/mol/check/expand":-1,"/mol/grid/prototype":-1,"/mol/list":-1,"/mol/type/enforce":-1,"/mol/view/content":-2,"/mol/grid/-view.tree/grid.view.tree.js":0},"mol/grid/grid.view.tree":{"/mol/grid/-view.tree/grid.view.tree.js":0},"mol/grid/-view.tree/grid.view.tree.js":{"/mol/grid":-1,"/mol/view":-1,"/mol/grid/table":-1,"/mol/dimmer":-3,"/mol/grid/row":-1,"/mol/grid/cell":-1,"/mol/grid/number":-1,"/mol/float":-3,"/mol/check/expand":-3,"/mol/mem":-1,"/mol/grid/prototype":-1,"/mol/mem/key":-1,"/mol/list":-1},"mol/float":{"..":-9007199254740991,"/mol/style/attach":0,"./float.view.tree":0,"/mol/float":0,"/mol/layer/float":-1,"/mol/theme/card":-1,"/mol/theme/back":-1,"/mol/view":-1,"/mol/float/-view.tree/float.view.tree.js":0},"mol/float/float.view.tree":{"/mol/float/-view.tree/float.view.tree.js":0},"mol/float/-view.tree/float.view.tree.js":{"/mol/float":-1,"/mol/view":-1},"mol/check/expand":{"..":-9007199254740991,"./expand.view.tree":0,"/mol/check/expand":0,"/mol/style/attach":0,"/mol/check/expand/icon":0,"/mol/check/checked":0,"/mol/check/expand/label":0,"/mol/check":-1,"/mol/icon/chevron":-2,"/mol/mem":-1,"/mol/check/expand/prototype":-1,"/mol/check/expand/-view.tree/expand.view.tree.js":0},"mol/check/expand/expand.view.tree":{"/mol/check/expand/-view.tree/expand.view.tree.js":0},"mol/check/expand/-view.tree/expand.view.tree.js":{"/mol/check/expand":-1,"/mol/check":-1,"/mol/icon/chevron":-3,"/mol/mem":-1,"/mol/check/expand/prototype":-1},"mol/icon/chevron":{"..":-9007199254740991,"/mol/icon/chevron":-1,"/mol/icon":-1,"/mol/icon/chevron/-view.tree/chevron.view.tree.js":0},"mol/icon/chevron/-view.tree/chevron.view.tree.js":{"/mol/icon/chevron":-1,"/mol/icon":-1},"mol/embed/any":{"..":-9007199254740991,"./any.view.tree":0,"/mol/embed/any":-1,"/mol/mem":-1,"/mol/fail/log":-4,"/mol/view":-1,"/mol/image":-1,"/mol/embed/native":-1,"/mol/embed/youtube":-1,"/mol/embed/rutube":-1,"/mol/embed/any/prototype":-1,"/mol/type/enforce":-1,"/mol/embed/any/-view.tree/any.view.tree.js":0},"mol/embed":{"..":-9007199254740991},"mol/embed/any/any.view.tree":{"/mol/embed/any/-view.tree/any.view.tree.js":0},"mol/embed/any/-view.tree/any.view.tree.js":{"/mol/embed/any":-1,"/mol/view":-1,"/mol/image":-3,"/mol/embed/native":-3,"/mol/embed/youtube":-3,"/mol/embed/rutube":-3,"/mol/mem":-1,"/mol/embed/any/prototype":-1},"mol/embed/native":{"..":-9007199254740991,"./native.view.tree":0,"/mol/embed/native":0,"/mol/mem":-1,"/mol/wire/solid":-3,"/mol/wire/sync":-3,"/mol/dom/listener":-3,"/mol/dom/context":-4,"/mol/wire/async":-4,"/mol/wait/timeout":-3,"/mol/style/attach":0,"/mol/gap/round":-1,"/mol/scroll":-1,"/mol/link":-1,"/mol/embed/native/prototype":-1,"/mol/type/enforce":-1,"/mol/embed/native/-view.tree/native.view.tree.js":0},"mol/embed/native/native.view.tree":{"/mol/embed/native/-view.tree/native.view.tree.js":0},"mol/embed/native/-view.tree/native.view.tree.js":{"/mol/embed/native":-1,"/mol/scroll":-1,"/mol/link":-3,"/mol/mem":-1,"/mol/embed/native/prototype":-1},"mol/wait/timeout":{"..":-9007199254740991,"/mol/wait/timeout/async":-1,"/mol/promise":-2,"/mol/after/timeout":-2,"/mol/wait/timeout":-1,"/mol/wire/sync":-2},"mol/wait":{"..":-9007199254740991},"mol/promise/promise":{"..":-9007199254740991,"/mol/promise":-1},"mol/embed/youtube":{"..":-9007199254740991,"./youtube.view.tree":0,"/mol/embed/youtube":-1,"/mol/mem":-2,"/mol/embed/service":-1,"/mol/embed/youtube/-view.tree/youtube.view.tree.js":0},"mol/embed/youtube/youtube.view.tree":{"/mol/embed/youtube/-view.tree/youtube.view.tree.js":0},"mol/embed/youtube/-view.tree/youtube.view.tree.js":{"/mol/embed/youtube":-1,"/mol/embed/service":-1},"mol/embed/service":{"..":-9007199254740991,"./service.view.tree":0,"/mol/embed/service":0,"/mol/mem":-1,"/mol/style/attach":0,"/mol/embed/service/image":0,"/mol/embed/service/frame":0,"/mol/embed/service/hint":0,"/mol/check":-1,"/mol/image":-1,"/mol/icon/youtube":-2,"/mol/frame":-1,"/mol/embed/service/prototype":-1,"/mol/type/enforce":-1,"/mol/embed/service/-view.tree/service.view.tree.js":0},"mol/embed/service/service.view.tree":{"/mol/embed/service/-view.tree/service.view.tree.js":0},"mol/embed/service/-view.tree/service.view.tree.js":{"/mol/embed/service":-1,"/mol/check":-1,"/mol/image":-3,"/mol/icon/youtube":-3,"/mol/frame":-3,"/mol/mem":-1,"/mol/embed/service/prototype":-1},"mol/icon/youtube":{"..":-9007199254740991,"/mol/icon/youtube":-1,"/mol/icon":-1,"/mol/icon/youtube/-view.tree/youtube.view.tree.js":0},"mol/icon/youtube/-view.tree/youtube.view.tree.js":{"/mol/icon/youtube":-1,"/mol/icon":-1},"mol/frame":{"..":-9007199254740991,"./frame.view.tree":0,"/mol/frame":-1,"/mol/embed/native":-1,"/mol/mem":-1,"/mol/frame/prototype":-1,"/mol/frame/-view.tree/frame.view.tree.js":0,"/mol/style/define":-1,"/mol/style/unit/vh":-2},"mol/frame/frame.view.tree":{"/mol/frame/-view.tree/frame.view.tree.js":0},"mol/frame/-view.tree/frame.view.tree.js":{"/mol/frame":-1,"/mol/embed/native":-1,"/mol/mem":-1,"/mol/frame/prototype":-1},"mol/embed/rutube":{"..":-9007199254740991,"./rutube.view.tree":0,"/mol/embed/rutube":-1,"/mol/mem":-2,"/mol/embed/service":-1,"/mol/embed/rutube/-view.tree/rutube.view.tree.js":0},"mol/embed/rutube/rutube.view.tree":{"/mol/embed/rutube/-view.tree/rutube.view.tree.js":0},"mol/embed/rutube/-view.tree/rutube.view.tree.js":{"/mol/embed/rutube":-1,"/mol/embed/service":-1},"mol/expander":{"..":-9007199254740991,"./expander.view.tree":0,"/mol/expander":0,"/mol/mem":-1,"/mol/style/attach":0,"/mol/expander/label":0,"/mol/gap/round":-1,"/mol/expander/trigger":0,"/mol/list":-1,"/mol/check/expand":-1,"/mol/view":-1,"/mol/expander/prototype":-1,"/mol/type/enforce":-1,"/mol/expander/-view.tree/expander.view.tree.js":0},"mol/expander/expander.view.tree":{"/mol/expander/-view.tree/expander.view.tree.js":0},"mol/expander/-view.tree/expander.view.tree.js":{"/mol/expander":-1,"/mol/list":-1,"/mol/check/expand":-3,"/mol/view":-3,"/mol/mem":-1,"/mol/expander/prototype":-1},"optimade/cifplayer/app/-view.tree/app.view.tree.js":{"/optimade/cifplayer/app":-1,"/mol/drop":-1,"/mol/theme/auto":-3,"/mol/book2":-3,"/mol/link/iconed":-3,"/mol/lights/toggle":-3,"/mol/button/open":-3,"/mol/textarea":-3,"/mol/view":-3,"/mol/page":-3,"/optimade/cifplayer/player":-3,"/mol/text":-3,"/mol/button/minor":-3,"/mol/mem":-1,"/optimade/cifplayer/app/prototype":-1}}} \ No newline at end of file +{"files":["mam.ts","LICENSE","README.md","mam.jam.js","tsfmt.json","package.json","tsconfig.json","lang.lang.tree","meta.lang.tree","sandbox.config.json","optimade/optimade.meta.tree","optimade/cifplayer/CNAME","optimade/cifplayer/LICENSE","optimade/cifplayer/README.md","optimade/cifplayer/CITATION.cff","optimade/cifplayer/package.json","optimade/cifplayer/app/index.html"],"mods":{},"deps_in":{"optimade/cifplayer":{"optimade/cifplayer/app":-999},"optimade":{"optimade/cifplayer":-999},"":{"optimade":-999}},"deps_out":{"optimade/cifplayer/app":{"optimade/cifplayer":-999},"optimade/cifplayer":{"optimade":-999},"optimade":{"":-999}},"sloc":{"ts":11,"LICENSE":113,"md":122,"js":9,"json":123,"tree":42,"CNAME":1,"cff":16,"html":13},"deps":{"optimade/cifplayer/app":{"..":-999},"optimade/cifplayer":{"..":-999},"optimade":{"..":-999},"":{}}} \ No newline at end of file diff --git a/node.js b/node.js index bcb95fa..059ffae 100644 --- a/node.js +++ b/node.js @@ -28,11742 +28,5 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, var $ = ( typeof module === 'object' ) ? ( module['export'+'s'] = globalThis ) : globalThis $.$$ = $ -; -"use strict"; -var $; -(function ($) { - $.$mol_ambient_ref = Symbol('$mol_ambient_ref'); - function $mol_ambient(overrides) { - return Object.setPrototypeOf(overrides, this || $); - } - $.$mol_ambient = $mol_ambient; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const instances = new WeakSet(); - function $mol_delegate(proto, target) { - const proxy = new Proxy(proto, { - get: (_, field) => { - const obj = target(); - let val = Reflect.get(obj, field); - if (typeof val === 'function') { - val = val.bind(obj); - } - return val; - }, - has: (_, field) => Reflect.has(target(), field), - set: (_, field, value) => Reflect.set(target(), field, value), - getOwnPropertyDescriptor: (_, field) => Reflect.getOwnPropertyDescriptor(target(), field), - ownKeys: () => Reflect.ownKeys(target()), - getPrototypeOf: () => Reflect.getPrototypeOf(target()), - setPrototypeOf: (_, donor) => Reflect.setPrototypeOf(target(), donor), - isExtensible: () => Reflect.isExtensible(target()), - preventExtensions: () => Reflect.preventExtensions(target()), - apply: (_, self, args) => Reflect.apply(target(), self, args), - construct: (_, args, retarget) => Reflect.construct(target(), args, retarget), - defineProperty: (_, field, descr) => Reflect.defineProperty(target(), field, descr), - deleteProperty: (_, field) => Reflect.deleteProperty(target(), field), - }); - instances.add(proxy); - return proxy; - } - $.$mol_delegate = $mol_delegate; - Reflect.defineProperty($mol_delegate, Symbol.hasInstance, { - value: (obj) => instances.has(obj), - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_owning_map = new WeakMap(); - function $mol_owning_allow(having) { - try { - if (!having) - return false; - if (typeof having !== 'object' && typeof having !== 'function') - return false; - if (having instanceof $mol_delegate) - return false; - if (typeof having['destructor'] !== 'function') - return false; - return true; - } - catch { - return false; - } - } - $.$mol_owning_allow = $mol_owning_allow; - function $mol_owning_get(having, Owner) { - if (!$mol_owning_allow(having)) - return null; - while (true) { - const owner = $.$mol_owning_map.get(having); - if (!owner) - return owner; - if (!Owner) - return owner; - if (owner instanceof Owner) - return owner; - having = owner; - } - } - $.$mol_owning_get = $mol_owning_get; - function $mol_owning_check(owner, having) { - if (!$mol_owning_allow(having)) - return false; - if ($.$mol_owning_map.get(having) !== owner) - return false; - return true; - } - $.$mol_owning_check = $mol_owning_check; - function $mol_owning_catch(owner, having) { - if (!$mol_owning_allow(having)) - return false; - if ($.$mol_owning_map.get(having)) - return false; - $.$mol_owning_map.set(having, owner); - return true; - } - $.$mol_owning_catch = $mol_owning_catch; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_fail(error) { - throw error; - } - $.$mol_fail = $mol_fail; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_fail_hidden(error) { - throw error; - } - $.$mol_fail_hidden = $mol_fail_hidden; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - const named = new WeakSet(); - function $mol_func_name(func) { - let name = func.name; - if (name?.length > 1) - return name; - if (named.has(func)) - return name; - for (let key in this) { - try { - if (this[key] !== func) - continue; - name = key; - Object.defineProperty(func, 'name', { value: name }); - break; - } - catch { } - } - named.add(func); - return name; - } - $.$mol_func_name = $mol_func_name; - function $mol_func_name_from(target, source) { - Object.defineProperty(target, 'name', { value: source.name }); - return target; - } - $.$mol_func_name_from = $mol_func_name_from; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_object2 { - static $ = $; - [Symbol.toStringTag]; - [$mol_ambient_ref] = null; - get $() { - if (this[$mol_ambient_ref]) - return this[$mol_ambient_ref]; - const owner = $mol_owning_get(this); - return this[$mol_ambient_ref] = owner?.$ || $mol_object2.$; - } - set $(next) { - if (this[$mol_ambient_ref]) - $mol_fail_hidden(new Error('Context already defined')); - this[$mol_ambient_ref] = next; - } - static create(init) { - const obj = new this; - if (init) - init(obj); - return obj; - } - static [Symbol.toPrimitive]() { - return this.toString(); - } - static toString() { - return this[Symbol.toStringTag] || this.$.$mol_func_name(this); - } - static toJSON() { - return this.toString(); - } - destructor() { } - static destructor() { } - toString() { - return this[Symbol.toStringTag] || this.constructor.name + '<>'; - } - } - $.$mol_object2 = $mol_object2; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - let $$; - (function ($$) { - let $; - })($$ = $_1.$$ || ($_1.$$ = {})); - $_1.$mol_object_field = Symbol('$mol_object_field'); - class $mol_object extends $mol_object2 { - static make(config) { - return super.create(obj => { - for (let key in config) - obj[key] = config[key]; - }); - } - } - $_1.$mol_object = $mol_object; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_window extends $mol_object { - static size() { - return { - width: 1024, - height: 768, - }; - } - } - $.$mol_window = $mol_window; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - let $mol_wire_cursor; - (function ($mol_wire_cursor) { - $mol_wire_cursor[$mol_wire_cursor["stale"] = -1] = "stale"; - $mol_wire_cursor[$mol_wire_cursor["doubt"] = -2] = "doubt"; - $mol_wire_cursor[$mol_wire_cursor["fresh"] = -3] = "fresh"; - $mol_wire_cursor[$mol_wire_cursor["final"] = -4] = "final"; - })($mol_wire_cursor = $.$mol_wire_cursor || ($.$mol_wire_cursor = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wire_pub extends Object { - data = []; - static get [Symbol.species]() { - return Array; - } - sub_from = 0; - get sub_list() { - const res = []; - for (let i = this.sub_from; i < this.data.length; i += 2) { - res.push(this.data[i]); - } - return res; - } - get sub_empty() { - return this.sub_from === this.data.length; - } - sub_on(sub, pub_pos) { - const pos = this.data.length; - this.data.push(sub, pub_pos); - return pos; - } - sub_off(sub_pos) { - if (!(sub_pos < this.data.length)) { - $mol_fail(new Error(`Wrong pos ${sub_pos}`)); - } - const end = this.data.length - 2; - if (sub_pos !== end) { - this.peer_move(end, sub_pos); - } - this.data.pop(); - this.data.pop(); - if (this.data.length === this.sub_from) - this.reap(); - } - reap() { } - promote() { - $mol_wire_auto()?.track_next(this); - } - fresh() { } - complete() { } - get incompleted() { - return false; - } - emit(quant = $mol_wire_cursor.stale) { - for (let i = this.sub_from; i < this.data.length; i += 2) { - ; - this.data[i].absorb(quant); - } - } - peer_move(from_pos, to_pos) { - const peer = this.data[from_pos]; - const self_pos = this.data[from_pos + 1]; - this.data[to_pos] = peer; - this.data[to_pos + 1] = self_pos; - peer.peer_repos(self_pos, to_pos); - } - peer_repos(peer_pos, self_pos) { - this.data[peer_pos + 1] = self_pos; - } - } - $.$mol_wire_pub = $mol_wire_pub; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - $.$mol_wire_auto_sub = null; - function $mol_wire_auto(next = $.$mol_wire_auto_sub) { - return $.$mol_wire_auto_sub = next; - } - $.$mol_wire_auto = $mol_wire_auto; - $.$mol_wire_affected = []; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $['devtoolsFormatters'] ||= []; - function $mol_dev_format_register(config) { - $['devtoolsFormatters'].push(config); - } - $.$mol_dev_format_register = $mol_dev_format_register; - $.$mol_dev_format_head = Symbol('$mol_dev_format_head'); - $.$mol_dev_format_body = Symbol('$mol_dev_format_body'); - $mol_dev_format_register({ - header: (val, config = false) => { - if (config) - return null; - if (!val) - return null; - if ($.$mol_dev_format_head in val) { - try { - return val[$.$mol_dev_format_head](); - } - catch (error) { - return $.$mol_dev_format_accent($mol_dev_format_native(val), '💨', $mol_dev_format_native(error), ''); - } - } - if (typeof val === 'function') { - return $mol_dev_format_native(val); - } - if (Symbol.toStringTag in val) { - return $mol_dev_format_native(val); - } - return null; - }, - hasBody: val => val[$.$mol_dev_format_body], - body: val => val[$.$mol_dev_format_body](), - }); - function $mol_dev_format_native(obj) { - if (typeof obj === 'undefined') - return $.$mol_dev_format_shade('undefined'); - return [ - 'object', - { - object: obj, - config: true, - }, - ]; - } - $.$mol_dev_format_native = $mol_dev_format_native; - function $mol_dev_format_auto(obj) { - if (obj == null) - return $.$mol_dev_format_shade(String(obj)); - return [ - 'object', - { - object: obj, - config: false, - }, - ]; - } - $.$mol_dev_format_auto = $mol_dev_format_auto; - function $mol_dev_format_element(element, style, ...content) { - const styles = []; - for (let key in style) - styles.push(`${key} : ${style[key]}`); - return [ - element, - { - style: styles.join(' ; '), - }, - ...content, - ]; - } - $.$mol_dev_format_element = $mol_dev_format_element; - function $mol_dev_format_span(style, ...content) { - return $mol_dev_format_element('span', { - ...style, - }, ...content); - } - $.$mol_dev_format_span = $mol_dev_format_span; - $.$mol_dev_format_div = $mol_dev_format_element.bind(null, 'div'); - $.$mol_dev_format_ol = $mol_dev_format_element.bind(null, 'ol'); - $.$mol_dev_format_li = $mol_dev_format_element.bind(null, 'li'); - $.$mol_dev_format_table = $mol_dev_format_element.bind(null, 'table'); - $.$mol_dev_format_tr = $mol_dev_format_element.bind(null, 'tr'); - $.$mol_dev_format_td = $mol_dev_format_element.bind(null, 'td'); - $.$mol_dev_format_accent = $mol_dev_format_span.bind(null, { - 'color': 'magenta', - }); - $.$mol_dev_format_strong = $mol_dev_format_span.bind(null, { - 'font-weight': 'bold', - }); - $.$mol_dev_format_string = $mol_dev_format_span.bind(null, { - 'color': 'green', - }); - $.$mol_dev_format_shade = $mol_dev_format_span.bind(null, { - 'color': 'gray', - }); - $.$mol_dev_format_indent = $.$mol_dev_format_div.bind(null, { - 'margin-left': '13px' - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wire_pub_sub extends $mol_wire_pub { - pub_from = 0; - cursor = $mol_wire_cursor.stale; - get temp() { - return false; - } - get pub_list() { - const res = []; - const max = this.cursor >= 0 ? this.cursor : this.sub_from; - for (let i = this.pub_from; i < max; i += 2) { - if (this.data[i]) - res.push(this.data[i]); - } - return res; - } - track_on() { - this.cursor = this.pub_from; - const sub = $mol_wire_auto(); - $mol_wire_auto(this); - return sub; - } - promote() { - if (this.cursor >= this.pub_from) { - $mol_fail(new Error('Circular subscription')); - } - super.promote(); - } - track_next(pub) { - if (this.cursor < 0) - $mol_fail(new Error('Promo to non begun sub')); - if (this.cursor < this.sub_from) { - const next = this.data[this.cursor]; - if (pub === undefined) - return next ?? null; - if (next === pub) { - this.cursor += 2; - return next; - } - if (next) { - if (this.sub_from < this.data.length) { - this.peer_move(this.sub_from, this.data.length); - } - this.peer_move(this.cursor, this.sub_from); - this.sub_from += 2; - } - } - else { - if (pub === undefined) - return null; - if (this.sub_from < this.data.length) { - this.peer_move(this.sub_from, this.data.length); - } - this.sub_from += 2; - } - this.data[this.cursor] = pub; - this.data[this.cursor + 1] = pub.sub_on(this, this.cursor); - this.cursor += 2; - return pub; - } - track_off(sub) { - $mol_wire_auto(sub); - if (this.cursor < 0) { - $mol_fail(new Error('End of non begun sub')); - } - for (let cursor = this.pub_from; cursor < this.cursor; cursor += 2) { - const pub = this.data[cursor]; - pub.fresh(); - } - this.cursor = $mol_wire_cursor.fresh; - } - pub_off(sub_pos) { - this.data[sub_pos] = undefined; - this.data[sub_pos + 1] = undefined; - } - destructor() { - for (let cursor = this.data.length - 2; cursor >= this.sub_from; cursor -= 2) { - const sub = this.data[cursor]; - const pos = this.data[cursor + 1]; - sub.pub_off(pos); - this.data.pop(); - this.data.pop(); - } - this.cursor = this.pub_from; - this.track_cut(); - this.cursor = $mol_wire_cursor.final; - } - track_cut() { - if (this.cursor < this.pub_from) { - $mol_fail(new Error('Cut of non begun sub')); - } - let tail = 0; - for (let cursor = this.cursor; cursor < this.sub_from; cursor += 2) { - const pub = this.data[cursor]; - pub?.sub_off(this.data[cursor + 1]); - if (this.sub_from < this.data.length) { - this.peer_move(this.data.length - 2, cursor); - this.data.pop(); - this.data.pop(); - } - else { - ++tail; - } - } - for (; tail; --tail) { - this.data.pop(); - this.data.pop(); - } - this.sub_from = this.cursor; - } - complete() { } - complete_pubs() { - const limit = this.cursor < 0 ? this.sub_from : this.cursor; - for (let cursor = this.pub_from; cursor < limit; cursor += 2) { - const pub = this.data[cursor]; - if (pub?.incompleted) - return; - } - for (let cursor = this.pub_from; cursor < limit; cursor += 2) { - const pub = this.data[cursor]; - pub?.complete(); - } - } - absorb(quant = $mol_wire_cursor.stale) { - if (this.cursor === $mol_wire_cursor.final) - return; - if (this.cursor >= quant) - return; - this.cursor = quant; - this.emit($mol_wire_cursor.doubt); - } - [$mol_dev_format_head]() { - return $mol_dev_format_native(this); - } - get pub_empty() { - return this.sub_from === this.pub_from; - } - } - $.$mol_wire_pub_sub = $mol_wire_pub_sub; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_after_tick extends $mol_object2 { - task; - static promise = null; - cancelled = false; - constructor(task) { - super(); - this.task = task; - if (!$mol_after_tick.promise) - $mol_after_tick.promise = Promise.resolve().then(() => { - $mol_after_tick.promise = null; - }); - $mol_after_tick.promise.then(() => { - if (this.cancelled) - return; - task(); - }); - } - destructor() { - this.cancelled = true; - } - } - $.$mol_after_tick = $mol_after_tick; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_promise_like(val) { - try { - return val && typeof val === 'object' && 'then' in val && typeof val.then === 'function'; - } - catch { - return false; - } - } - $.$mol_promise_like = $mol_promise_like; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const wrappers = new WeakMap(); - class $mol_wire_fiber extends $mol_wire_pub_sub { - task; - host; - static warm = true; - static planning = new Set(); - static reaping = new Set(); - static plan_task = null; - static plan() { - if (this.plan_task) - return; - this.plan_task = new $mol_after_tick(() => { - try { - this.sync(); - } - finally { - $mol_wire_fiber.plan_task = null; - } - }); - } - static sync() { - while (this.planning.size) { - for (const fiber of this.planning) { - this.planning.delete(fiber); - if (fiber.cursor >= 0) - continue; - if (fiber.cursor === $mol_wire_cursor.final) - continue; - fiber.fresh(); - } - } - while (this.reaping.size) { - const fibers = this.reaping; - this.reaping = new Set; - for (const fiber of fibers) { - if (!fiber.sub_empty) - continue; - fiber.destructor(); - } - } - } - [Symbol.toStringTag]; - cache = undefined; - get args() { - return this.data.slice(0, this.pub_from); - } - result() { - if ($mol_promise_like(this.cache)) - return; - if (this.cache instanceof Error) - return; - return this.cache; - } - get incompleted() { - return $mol_promise_like(this.cache); - } - field() { - return this.task.name + '<>'; - } - constructor(id, task, host, args) { - super(); - this.task = task; - this.host = host; - if (args) - this.data.push(...args); - this.pub_from = this.sub_from = args?.length ?? 0; - this[Symbol.toStringTag] = id; - } - plan() { - $mol_wire_fiber.planning.add(this); - $mol_wire_fiber.plan(); - return this; - } - reap() { - $mol_wire_fiber.reaping.add(this); - $mol_wire_fiber.plan(); - } - toString() { - return this[Symbol.toStringTag]; - } - toJSON() { - return this[Symbol.toStringTag]; - } - [$mol_dev_format_head]() { - const cursor = { - [$mol_wire_cursor.stale]: '🔴', - [$mol_wire_cursor.doubt]: '🟡', - [$mol_wire_cursor.fresh]: '🟢', - [$mol_wire_cursor.final]: '🔵', - }[this.cursor] ?? this.cursor.toString(); - return $mol_dev_format_div({}, $mol_owning_check(this, this.cache) - ? $mol_dev_format_auto({ - [$mol_dev_format_head]: () => $mol_dev_format_shade(cursor), - [$mol_dev_format_body]: () => $mol_dev_format_native(this), - }) - : $mol_dev_format_shade($mol_dev_format_native(this), cursor), $mol_dev_format_auto(this.cache)); - } - get $() { - return (this.host ?? this.task)['$']; - } - emit(quant = $mol_wire_cursor.stale) { - if (this.sub_empty) - this.plan(); - else - super.emit(quant); - } - fresh() { - if (this.cursor === $mol_wire_cursor.fresh) - return; - if (this.cursor === $mol_wire_cursor.final) - return; - check: if (this.cursor === $mol_wire_cursor.doubt) { - for (let i = this.pub_from; i < this.sub_from; i += 2) { - ; - this.data[i]?.fresh(); - if (this.cursor !== $mol_wire_cursor.doubt) - break check; - } - this.cursor = $mol_wire_cursor.fresh; - return; - } - const bu = this.track_on(); - let result; - try { - switch (this.pub_from) { - case 0: - result = this.task.call(this.host); - break; - case 1: - result = this.task.call(this.host, this.data[0]); - break; - default: - result = this.task.call(this.host, ...this.args); - break; - } - if ($mol_promise_like(result)) { - if (wrappers.has(result)) { - result = wrappers.get(result).then(a => a); - } - else { - const put = (res) => { - if (this.cache === result) - this.put(res); - return res; - }; - wrappers.set(result, result = Object.assign(result.then(put, put), { destructor: result.destructor || (() => { }) })); - wrappers.set(result, result); - const error = new Error(`Promise in ${this}`); - Object.defineProperty(result, 'stack', { get: () => error.stack }); - } - } - } - catch (error) { - if (error instanceof Error || $mol_promise_like(error)) { - result = error; - } - else { - result = new Error(String(error), { cause: error }); - } - if ($mol_promise_like(result)) { - if (wrappers.has(result)) { - result = wrappers.get(result); - } - else { - wrappers.set(result, result = Object.assign(result.finally(() => { - if (this.cache === result) - this.absorb(); - }), { destructor: result.destructor || (() => { }) })); - const error = new Error(`Promise in ${this}`); - Object.defineProperty(result, 'stack', { get: () => error.stack }); - } - } - } - if (!$mol_promise_like(result)) { - this.track_cut(); - } - this.track_off(bu); - this.put(result); - return this; - } - refresh() { - this.cursor = $mol_wire_cursor.stale; - this.fresh(); - } - sync() { - if (!$mol_wire_fiber.warm) { - return this.result(); - } - this.promote(); - this.fresh(); - if (this.cache instanceof Error) { - return $mol_fail_hidden(this.cache); - } - if ($mol_promise_like(this.cache)) { - return $mol_fail_hidden(this.cache); - } - return this.cache; - } - async async_raw() { - while (true) { - this.fresh(); - if (this.cache instanceof Error) { - $mol_fail_hidden(this.cache); - } - if (!$mol_promise_like(this.cache)) - return this.cache; - await Promise.race([this.cache, this.step()]); - if (!$mol_promise_like(this.cache)) - return this.cache; - if (this.cursor === $mol_wire_cursor.final) { - await new Promise(() => { }); - } - } - } - async() { - const promise = this.async_raw(); - if (!promise.destructor) - promise.destructor = () => this.destructor(); - return promise; - } - step() { - return new Promise(done => { - const sub = new $mol_wire_pub_sub; - const prev = sub.track_on(); - sub.track_next(this); - sub.track_off(prev); - sub.absorb = () => { - done(null); - setTimeout(() => sub.destructor()); - }; - }); - } - destructor() { - super.destructor(); - if ($mol_owning_check(this, this.cache)) { - this.cache.destructor(); - } - } - } - $.$mol_wire_fiber = $mol_wire_fiber; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_guid(length = 8, exists = () => false) { - for (;;) { - let id = Math.random().toString(36).substring(2, length + 2).toUpperCase(); - if (exists(id)) - continue; - return id; - } - } - $.$mol_guid = $mol_guid; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_key_store = new WeakMap(); - const TypedArray = Object.getPrototypeOf(Uint8Array); - function $mol_key(value) { - if (typeof value === 'bigint') - return value.toString() + 'n'; - if (typeof value === 'symbol') - return value.description; - if (!value) - return JSON.stringify(value); - if (typeof value !== 'object' && typeof value !== 'function') - return JSON.stringify(value); - return JSON.stringify(value, (field, value) => { - if (typeof value === 'bigint') - return value.toString() + 'n'; - if (typeof value === 'symbol') - return value.description; - if (!value) - return value; - if (typeof value !== 'object' && typeof value !== 'function') - return value; - if (Array.isArray(value)) - return value; - const proto = Reflect.getPrototypeOf(value); - if (!proto) - return value; - if (Reflect.getPrototypeOf(proto) === null) - return value; - if ('toJSON' in value) - return value; - if (value instanceof RegExp) - return value.toString(); - if (value instanceof TypedArray) - return [...value]; - let key = $.$mol_key_store.get(value); - if (key) - return key; - key = $mol_guid(); - $.$mol_key_store.set(value, key); - return key; - }); - } - $.$mol_key = $mol_key; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_after_timeout extends $mol_object2 { - delay; - task; - id; - constructor(delay, task) { - super(); - this.delay = delay; - this.task = task; - this.id = setTimeout(task, delay); - } - destructor() { - clearTimeout(this.id); - } - } - $.$mol_after_timeout = $mol_after_timeout; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_after_frame extends $mol_after_timeout { - task; - constructor(task) { - super(16, task); - this.task = task; - } - } - $.$mol_after_frame = $mol_after_frame; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_compare_deep_cache = new WeakMap(); - function $mol_compare_deep(left, right) { - if (Object.is(left, right)) - return true; - if (left === null) - return false; - if (right === null) - return false; - if (typeof left !== 'object') - return false; - if (typeof right !== 'object') - return false; - const left_proto = Reflect.getPrototypeOf(left); - const right_proto = Reflect.getPrototypeOf(right); - if (left_proto !== right_proto) - return false; - if (left instanceof Boolean) - return Object.is(left.valueOf(), right['valueOf']()); - if (left instanceof Number) - return Object.is(left.valueOf(), right['valueOf']()); - if (left instanceof String) - return Object.is(left.valueOf(), right['valueOf']()); - if (left instanceof Date) - return Object.is(left.valueOf(), right['valueOf']()); - if (left instanceof RegExp) - return left.source === right.source && left.flags === right.flags; - if (left instanceof Error) - return left.message === right.message && left.stack === right.stack; - let left_cache = $.$mol_compare_deep_cache.get(left); - if (left_cache) { - const right_cache = left_cache.get(right); - if (typeof right_cache === 'boolean') - return right_cache; - } - else { - left_cache = new WeakMap(); - $.$mol_compare_deep_cache.set(left, left_cache); - } - left_cache.set(right, true); - let result; - try { - if (!left_proto) - result = compare_pojo(left, right); - else if (!Reflect.getPrototypeOf(left_proto)) - result = compare_pojo(left, right); - else if (Symbol.toPrimitive in left) - result = compare_primitive(left, right); - else if (Array.isArray(left)) - result = compare_array(left, right); - else if (left instanceof Set) - result = compare_set(left, right); - else if (left instanceof Map) - result = compare_map(left, right); - else if (ArrayBuffer.isView(left)) - result = compare_buffer(left, right); - else if (Symbol.iterator in left) - result = compare_iterator(left[Symbol.iterator](), right[Symbol.iterator]()); - else - result = false; - } - finally { - left_cache.set(right, result); - } - return result; - } - $.$mol_compare_deep = $mol_compare_deep; - function compare_array(left, right) { - const len = left.length; - if (len !== right.length) - return false; - for (let i = 0; i < len; ++i) { - if (!$mol_compare_deep(left[i], right[i])) - return false; - } - return true; - } - function compare_buffer(left, right) { - const len = left.byteLength; - if (len !== right.byteLength) - return false; - if (left instanceof DataView) - return compare_buffer(new Uint8Array(left.buffer, left.byteOffset, left.byteLength), new Uint8Array(right.buffer, left.byteOffset, left.byteLength)); - for (let i = 0; i < len; ++i) { - if (left[i] !== right[i]) - return false; - } - return true; - } - function compare_iterator(left, right) { - while (true) { - const left_next = left.next(); - const right_next = right.next(); - if (left_next.done !== right_next.done) - return false; - if (left_next.done) - break; - if (!$mol_compare_deep(left_next.value, right_next.value)) - return false; - } - return true; - } - function compare_set(left, right) { - if (left.size !== right.size) - return false; - return compare_iterator(left.values(), right.values()); - } - function compare_map(left, right) { - if (left.size !== right.size) - return false; - return compare_iterator(left.keys(), right.keys()) - && compare_iterator(left.values(), right.values()); - } - function compare_pojo(left, right) { - const left_keys = Object.getOwnPropertyNames(left); - const right_keys = Object.getOwnPropertyNames(right); - if (!compare_array(left_keys, right_keys)) - return false; - for (let key of left_keys) { - if (!$mol_compare_deep(left[key], right[key])) - return false; - } - const left_syms = Object.getOwnPropertySymbols(left); - const right_syms = Object.getOwnPropertySymbols(right); - if (!compare_array(left_syms, right_syms)) - return false; - for (let key of left_syms) { - if (!$mol_compare_deep(left[key], right[key])) - return false; - } - return true; - } - function compare_primitive(left, right) { - return Object.is(left[Symbol.toPrimitive]('default'), right[Symbol.toPrimitive]('default')); - } -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_log3_area_lazy(event) { - const self = this; - const stack = self.$mol_log3_stack; - const deep = stack.length; - let logged = false; - stack.push(() => { - logged = true; - self.$mol_log3_area.call(self, event); - }); - return () => { - if (logged) - self.console.groupEnd(); - if (stack.length > deep) - stack.length = deep; - }; - } - $.$mol_log3_area_lazy = $mol_log3_area_lazy; - $.$mol_log3_stack = []; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_span extends $mol_object2 { - uri; - source; - row; - col; - length; - constructor(uri, source, row, col, length) { - super(); - this.uri = uri; - this.source = source; - this.row = row; - this.col = col; - this.length = length; - this[Symbol.toStringTag] = this.uri + ('#' + this.row + ':' + this.col + '/' + this.length); - } - static unknown = $mol_span.begin('?'); - static begin(uri, source = '') { - return new $mol_span(uri, source, 1, 1, 0); - } - static end(uri, source) { - return new $mol_span(uri, source, 1, source.length + 1, 0); - } - static entire(uri, source) { - return new $mol_span(uri, source, 1, 1, source.length); - } - toString() { - return this[Symbol.toStringTag]; - } - toJSON() { - return { - uri: this.uri, - row: this.row, - col: this.col, - length: this.length - }; - } - error(message, Class = Error) { - return new Class(`${message} (${this})`); - } - span(row, col, length) { - return new $mol_span(this.uri, this.source, row, col, length); - } - after(length = 0) { - return new $mol_span(this.uri, this.source, this.row, this.col + this.length, length); - } - slice(begin, end = -1) { - let len = this.length; - if (begin < 0) - begin += len; - if (end < 0) - end += len; - if (begin < 0 || begin > len) - this.$.$mol_fail(this.error(`Begin value '${begin}' out of range`, RangeError)); - if (end < 0 || end > len) - this.$.$mol_fail(this.error(`End value '${end}' out of range`, RangeError)); - if (end < begin) - this.$.$mol_fail(this.error(`End value '${end}' can't be less than begin value`, RangeError)); - return this.span(this.row, this.col + begin, end - begin); - } - } - $.$mol_span = $mol_span; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_tree2_to_string(tree) { - let output = []; - function dump(tree, prefix = '') { - if (tree.type.length) { - if (!prefix.length) { - prefix = "\t"; - } - output.push(tree.type); - if (tree.kids.length == 1) { - output.push(' '); - dump(tree.kids[0], prefix); - return; - } - output.push("\n"); - } - else if (tree.value.length || prefix.length) { - output.push("\\" + tree.value + "\n"); - } - for (const kid of tree.kids) { - output.push(prefix); - dump(kid, prefix + "\t"); - } - } - dump(tree); - return output.join(''); - } - $.$mol_tree2_to_string = $mol_tree2_to_string; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_tree2 extends Object { - type; - value; - kids; - span; - constructor(type, value, kids, span) { - super(); - this.type = type; - this.value = value; - this.kids = kids; - this.span = span; - this[Symbol.toStringTag] = type || '\\' + value; - } - static list(kids, span = $mol_span.unknown) { - return new $mol_tree2('', '', kids, span); - } - list(kids) { - return $mol_tree2.list(kids, this.span); - } - static data(value, kids = [], span = $mol_span.unknown) { - const chunks = value.split('\n'); - if (chunks.length > 1) { - let kid_span = span.span(span.row, span.col, 0); - const data = chunks.map(chunk => { - kid_span = kid_span.after(chunk.length); - return new $mol_tree2('', chunk, [], kid_span); - }); - kids = [...data, ...kids]; - value = ''; - } - return new $mol_tree2('', value, kids, span); - } - data(value, kids = []) { - return $mol_tree2.data(value, kids, this.span); - } - static struct(type, kids = [], span = $mol_span.unknown) { - if (/[ \n\t\\]/.test(type)) { - $$.$mol_fail(span.error(`Wrong type ${JSON.stringify(type)}`)); - } - return new $mol_tree2(type, '', kids, span); - } - struct(type, kids = []) { - return $mol_tree2.struct(type, kids, this.span); - } - clone(kids, span = this.span) { - return new $mol_tree2(this.type, this.value, kids, span); - } - text() { - var values = []; - for (var kid of this.kids) { - if (kid.type) - continue; - values.push(kid.value); - } - return this.value + values.join('\n'); - } - static fromString(str, uri = 'unknown') { - return $$.$mol_tree2_from_string(str, uri); - } - toString() { - return $$.$mol_tree2_to_string(this); - } - insert(value, ...path) { - if (path.length === 0) - return value; - const type = path[0]; - if (typeof type === 'string') { - let replaced = false; - const sub = this.kids.map((item, index) => { - if (item.type !== type) - return item; - replaced = true; - return item.insert(value, ...path.slice(1)); - }).filter(Boolean); - if (!replaced && value) { - sub.push(this.struct(type, []).insert(value, ...path.slice(1))); - } - return this.clone(sub); - } - else if (typeof type === 'number') { - const sub = this.kids.slice(); - sub[type] = (sub[type] || this.list([])) - .insert(value, ...path.slice(1)); - return this.clone(sub.filter(Boolean)); - } - else { - const kids = ((this.kids.length === 0) ? [this.list([])] : this.kids) - .map(item => item.insert(value, ...path.slice(1))) - .filter(Boolean); - return this.clone(kids); - } - } - select(...path) { - let next = [this]; - for (const type of path) { - if (!next.length) - break; - const prev = next; - next = []; - for (var item of prev) { - switch (typeof (type)) { - case 'string': - for (var child of item.kids) { - if (child.type == type) { - next.push(child); - } - } - break; - case 'number': - if (type < item.kids.length) - next.push(item.kids[type]); - break; - default: next.push(...item.kids); - } - } - } - return this.list(next); - } - filter(path, value) { - const sub = this.kids.filter(item => { - var found = item.select(...path); - if (value === undefined) { - return Boolean(found.kids.length); - } - else { - return found.kids.some(child => child.value == value); - } - }); - return this.clone(sub); - } - hack_self(belt, context = {}) { - let handle = belt[this.type] || belt['']; - if (!handle || handle === Object.prototype[this.type]) { - handle = (input, belt, context) => [ - input.clone(input.hack(belt, context), context.span) - ]; - } - try { - return handle(this, belt, context); - } - catch (error) { - error.message += `\n${this.clone([])}${this.span}`; - $mol_fail_hidden(error); - } - } - hack(belt, context = {}) { - return [].concat(...this.kids.map(child => child.hack_self(belt, context))); - } - error(message, Class = Error) { - return this.span.error(`${message}\n${this.clone([])}`, Class); - } - } - $.$mol_tree2 = $mol_tree2; - class $mol_tree2_empty extends $mol_tree2 { - constructor() { - super('', '', [], $mol_span.unknown); - } - } - $.$mol_tree2_empty = $mol_tree2_empty; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_error_syntax extends SyntaxError { - reason; - line; - span; - constructor(reason, line, span) { - super(`${reason}\n${span}\n${line.substring(0, span.col - 1).replace(/\S/g, ' ')}${''.padEnd(span.length, '!')}\n${line}`); - this.reason = reason; - this.line = line; - this.span = span; - } - } - $.$mol_error_syntax = $mol_error_syntax; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_tree2_from_string(str, uri = '?') { - const span = $mol_span.entire(uri, str); - var root = $mol_tree2.list([], span); - var stack = [root]; - var pos = 0, row = 0, min_indent = 0; - while (str.length > pos) { - var indent = 0; - var line_start = pos; - row++; - while (str.length > pos && str[pos] == '\t') { - indent++; - pos++; - } - if (!root.kids.length) { - min_indent = indent; - } - indent -= min_indent; - if (indent < 0 || indent >= stack.length) { - const sp = span.span(row, 1, pos - line_start); - while (str.length > pos && str[pos] != '\n') { - pos++; - } - if (indent < 0) { - if (str.length > pos) { - this.$mol_fail(new this.$mol_error_syntax(`Too few tabs`, str.substring(line_start, pos), sp)); - } - } - else { - this.$mol_fail(new this.$mol_error_syntax(`Too many tabs`, str.substring(line_start, pos), sp)); - } - } - stack.length = indent + 1; - var parent = stack[indent]; - while (str.length > pos && str[pos] != '\\' && str[pos] != '\n') { - var error_start = pos; - while (str.length > pos && (str[pos] == ' ' || str[pos] == '\t')) { - pos++; - } - if (pos > error_start) { - let line_end = str.indexOf('\n', pos); - if (line_end === -1) - line_end = str.length; - const sp = span.span(row, error_start - line_start + 1, pos - error_start); - this.$mol_fail(new this.$mol_error_syntax(`Wrong nodes separator`, str.substring(line_start, line_end), sp)); - } - var type_start = pos; - while (str.length > pos && - str[pos] != '\\' && - str[pos] != ' ' && - str[pos] != '\t' && - str[pos] != '\n') { - pos++; - } - if (pos > type_start) { - let next = new $mol_tree2(str.slice(type_start, pos), '', [], span.span(row, type_start - line_start + 1, pos - type_start)); - const parent_kids = parent.kids; - parent_kids.push(next); - parent = next; - } - if (str.length > pos && str[pos] == ' ') { - pos++; - } - } - if (str.length > pos && str[pos] == '\\') { - var data_start = pos; - while (str.length > pos && str[pos] != '\n') { - pos++; - } - let next = new $mol_tree2('', str.slice(data_start + 1, pos), [], span.span(row, data_start - line_start + 2, pos - data_start - 1)); - const parent_kids = parent.kids; - parent_kids.push(next); - parent = next; - } - if (str.length === pos && stack.length > 0) { - const sp = span.span(row, pos - line_start + 1, 1); - this.$mol_fail(new this.$mol_error_syntax(`Unexpected EOF, LF required`, str.substring(line_start, str.length), sp)); - } - stack.push(parent); - pos++; - } - return root; - } - $.$mol_tree2_from_string = $mol_tree2_from_string; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_tree2_from_json(json, span = $mol_span.unknown) { - if (typeof json === 'boolean' || typeof json === 'number' || json === null) { - return new $mol_tree2(String(json), '', [], span); - } - if (typeof json === 'string') { - return $mol_tree2.data(json, [], span); - } - if (typeof json.toJSON === 'function') { - return $mol_tree2_from_json(json.toJSON()); - } - if (Array.isArray(json)) { - const sub = json.map(json => $mol_tree2_from_json(json, span)); - return new $mol_tree2('/', '', sub, span); - } - if (ArrayBuffer.isView(json)) { - const buf = new Uint8Array(json.buffer, json.byteOffset, json.byteLength); - return $mol_tree2.data(String.fromCharCode(...buf), [], span); - } - if (json instanceof Date) { - return new $mol_tree2('', json.toISOString(), [], span); - } - if (json.toString !== Object.prototype.toString) { - return $mol_tree2.data(json.toString(), [], span); - } - if (json instanceof Error) { - const { name, message, stack } = json; - json = { ...json, name, message, stack }; - } - const sub = []; - for (var key in json) { - const val = json[key]; - if (val === undefined) - continue; - const subsub = $mol_tree2_from_json(val, span); - if (/^[^\n\t\\ ]+$/.test(key)) { - sub.push(new $mol_tree2(key, '', [subsub], span)); - } - else { - sub.push($mol_tree2.data(key, [subsub], span)); - } - } - return new $mol_tree2('*', '', sub, span); - } - $.$mol_tree2_from_json = $mol_tree2_from_json; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_term_color { - static reset = this.ansi(0, 0); - static bold = this.ansi(1, 22); - static italic = this.ansi(3, 23); - static underline = this.ansi(4, 24); - static inverse = this.ansi(7, 27); - static hidden = this.ansi(8, 28); - static strike = this.ansi(9, 29); - static gray = this.ansi(90, 39); - static red = this.ansi(91, 39); - static green = this.ansi(92, 39); - static yellow = this.ansi(93, 39); - static blue = this.ansi(94, 39); - static magenta = this.ansi(95, 39); - static cyan = this.ansi(96, 39); - static Gray = (str) => this.inverse(this.gray(str)); - static Red = (str) => this.inverse(this.red(str)); - static Green = (str) => this.inverse(this.green(str)); - static Yellow = (str) => this.inverse(this.yellow(str)); - static Blue = (str) => this.inverse(this.blue(str)); - static Magenta = (str) => this.inverse(this.magenta(str)); - static Cyan = (str) => this.inverse(this.cyan(str)); - static ansi(open, close) { - if (typeof process === 'undefined') - return String; - if (!process.stdout.isTTY) - return String; - const prefix = `\x1b[${open}m`; - const postfix = `\x1b[${close}m`; - const suffix_regexp = new RegExp(postfix.replace('[', '\\['), 'g'); - return function colorer(str) { - str = String(str); - if (str === '') - return str; - const suffix = str.replace(suffix_regexp, prefix); - return prefix + suffix + postfix; - }; - } - } - $.$mol_term_color = $mol_term_color; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_log3_node_make(level, output, type, color) { - return function $mol_log3_logger(event) { - if (!event.time) - event = { time: new Date().toISOString(), ...event }; - let tree = this.$mol_tree2_from_json(event); - tree = tree.struct(type, tree.kids); - let str = color(tree.toString()); - this.console[level](str); - const self = this; - return () => self.console.groupEnd(); - }; - } - $.$mol_log3_node_make = $mol_log3_node_make; - $.$mol_log3_come = $mol_log3_node_make('info', 'stdout', 'come', $mol_term_color.blue); - $.$mol_log3_done = $mol_log3_node_make('info', 'stdout', 'done', $mol_term_color.green); - $.$mol_log3_fail = $mol_log3_node_make('error', 'stderr', 'fail', $mol_term_color.red); - $.$mol_log3_warn = $mol_log3_node_make('warn', 'stderr', 'warn', $mol_term_color.yellow); - $.$mol_log3_rise = $mol_log3_node_make('log', 'stdout', 'rise', $mol_term_color.magenta); - $.$mol_log3_area = $mol_log3_node_make('log', 'stdout', 'area', $mol_term_color.cyan); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wire_task extends $mol_wire_fiber { - static getter(task) { - return function $mol_wire_task_get(host, args) { - const sub = $mol_wire_auto(); - const existen = sub?.track_next(); - reuse: if (existen) { - if (!existen.temp) - break reuse; - if (existen.host !== host) - break reuse; - if (existen.task !== task) - break reuse; - if (!$mol_compare_deep(existen.args, args)) - break reuse; - return existen; - } - const key = (host?.[Symbol.toStringTag] ?? host) + ('.' + task.name + '<#>'); - const next = new $mol_wire_task(key, task, host, args); - if (existen?.temp) { - $$.$mol_log3_warn({ - place: '$mol_wire_task', - message: `Non idempotency`, - sub, - pubs: [...sub?.pub_list ?? [], existen], - next, - hint: 'Ignore it', - }); - } - return next; - }; - } - get temp() { - return true; - } - complete() { - if ($mol_promise_like(this.cache)) - return; - this.destructor(); - } - put(next) { - const prev = this.cache; - this.cache = next; - if ($mol_promise_like(next)) { - this.cursor = $mol_wire_cursor.fresh; - if (next !== prev) - this.emit(); - if ($mol_owning_catch(this, next)) { - try { - next[Symbol.toStringTag] = this[Symbol.toStringTag]; - } - catch { - Object.defineProperty(next, Symbol.toStringTag, { value: this[Symbol.toStringTag] }); - } - } - return next; - } - this.cursor = $mol_wire_cursor.final; - if (this.sub_empty) - this.destructor(); - else if (next !== prev) - this.emit(); - return next; - } - } - $.$mol_wire_task = $mol_wire_task; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_method(host, field, descr) { - if (!descr) - descr = Reflect.getOwnPropertyDescriptor(host, field); - const orig = descr?.value ?? host[field]; - const sup = Reflect.getPrototypeOf(host); - if (typeof sup[field] === 'function') { - Object.defineProperty(orig, 'name', { value: sup[field].name }); - } - const temp = $mol_wire_task.getter(orig); - const value = function (...args) { - const fiber = temp(this ?? null, args); - return fiber.sync(); - }; - Object.defineProperty(value, 'name', { value: orig.name + ' ' }); - Object.assign(value, { orig }); - const descr2 = { ...descr, value }; - Reflect.defineProperty(host, field, descr2); - return descr2; - } - $.$mol_wire_method = $mol_wire_method; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - const catched = new WeakMap(); - function $mol_fail_catch(error) { - if (typeof error !== 'object') - return false; - if ($mol_promise_like(error)) - $mol_fail_hidden(error); - if (catched.get(error)) - return false; - catched.set(error, true); - return true; - } - $.$mol_fail_catch = $mol_fail_catch; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_fail_log(error) { - if ($mol_promise_like(error)) - return false; - if (!$mol_fail_catch(error)) - return false; - console.error(error); - return true; - } - $.$mol_fail_log = $mol_fail_log; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wire_atom extends $mol_wire_fiber { - static solo(host, task) { - const field = task.name + '<>'; - const existen = Object.getOwnPropertyDescriptor(host ?? task, field)?.value; - if (existen) - return existen; - const prefix = host?.[Symbol.toStringTag] ?? (host instanceof Function ? $$.$mol_func_name(host) : host); - const key = prefix + ('.' + field); - const fiber = new $mol_wire_atom(key, task, host, []); - (host ?? task)[field] = fiber; - return fiber; - } - static plex(host, task, key) { - const field = task.name + '<>'; - let dict = Object.getOwnPropertyDescriptor(host ?? task, field)?.value; - const prefix = host?.[Symbol.toStringTag] ?? (host instanceof Function ? $$.$mol_func_name(host) : host); - const key_str = $mol_key(key); - if (dict) { - const existen = dict.get(key_str); - if (existen) - return existen; - } - else { - dict = (host ?? task)[field] = new Map(); - } - const id = prefix + ('.' + task.name) + ('<' + key_str.replace(/^"|"$/g, "'") + '>'); - const fiber = new $mol_wire_atom(id, task, host, [key]); - dict.set(key_str, fiber); - return fiber; - } - static watching = new Set(); - static watcher = null; - static watch() { - $mol_wire_atom.watcher = new $mol_after_frame($mol_wire_atom.watch); - for (const atom of $mol_wire_atom.watching) { - if (atom.cursor === $mol_wire_cursor.final) { - $mol_wire_atom.watching.delete(atom); - } - else { - atom.cursor = $mol_wire_cursor.stale; - atom.fresh(); - } - } - } - watch() { - if (!$mol_wire_atom.watcher) { - $mol_wire_atom.watcher = new $mol_after_frame($mol_wire_atom.watch); - } - $mol_wire_atom.watching.add(this); - } - resync(args) { - return this.put(this.task.call(this.host, ...args)); - } - once() { - return this.sync(); - } - channel() { - return Object.assign((next) => { - if (next !== undefined) - return this.resync([...this.args, next]); - if (!$mol_wire_fiber.warm) - return this.result(); - if ($mol_wire_auto()?.temp) { - return this.once(); - } - else { - return this.sync(); - } - }, { atom: this }); - } - destructor() { - super.destructor(); - if (this.pub_from === 0) { - ; - (this.host ?? this.task)[this.field()] = null; - } - else { - ; - (this.host ?? this.task)[this.field()].delete($mol_key(this.args[0])); - } - } - put(next) { - const prev = this.cache; - update: if (next !== prev) { - try { - if ($mol_compare_deep(prev, next)) - break update; - } - catch (error) { - $mol_fail_log(error); - } - if ($mol_owning_check(this, prev)) { - prev.destructor(); - } - if ($mol_owning_catch(this, next)) { - try { - next[Symbol.toStringTag] = this[Symbol.toStringTag]; - } - catch { - Object.defineProperty(next, Symbol.toStringTag, { value: this[Symbol.toStringTag] }); - } - } - if (!this.sub_empty) - this.emit(); - } - this.cache = next; - this.cursor = $mol_wire_cursor.fresh; - if ($mol_promise_like(next)) - return next; - this.complete_pubs(); - return next; - } - } - __decorate([ - $mol_wire_method - ], $mol_wire_atom.prototype, "resync", null); - __decorate([ - $mol_wire_method - ], $mol_wire_atom.prototype, "once", null); - $.$mol_wire_atom = $mol_wire_atom; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_solo(host, field, descr) { - if (!descr) - descr = Reflect.getOwnPropertyDescriptor(host, field); - const orig = descr?.value ?? host[field]; - const sup = Reflect.getPrototypeOf(host); - if (typeof sup[field] === 'function') { - Object.defineProperty(orig, 'name', { value: sup[field].name }); - } - const descr2 = { - ...descr, - value: function (...args) { - let atom = $mol_wire_atom.solo(this, orig); - if ((args.length === 0) || (args[0] === undefined)) { - if (!$mol_wire_fiber.warm) - return atom.result(); - if ($mol_wire_auto()?.temp) { - return atom.once(); - } - else { - return atom.sync(); - } - } - return atom.resync(args); - } - }; - Reflect.defineProperty(descr2.value, 'name', { value: orig.name + ' ' }); - Reflect.defineProperty(descr2.value, 'length', { value: orig.length }); - Object.assign(descr2.value, { orig }); - Reflect.defineProperty(host, field, descr2); - return descr2; - } - $.$mol_wire_solo = $mol_wire_solo; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_plex(host, field, descr) { - if (!descr) - descr = Reflect.getOwnPropertyDescriptor(host, field); - const orig = descr?.value ?? host[field]; - const sup = Reflect.getPrototypeOf(host); - if (typeof sup[field] === 'function') { - Object.defineProperty(orig, 'name', { value: sup[field].name }); - } - const descr2 = { - ...descr, - value: function (...args) { - let atom = $mol_wire_atom.plex(this, orig, args[0]); - if ((args.length === 1) || (args[1] === undefined)) { - if (!$mol_wire_fiber.warm) - return atom.result(); - if ($mol_wire_auto()?.temp) { - return atom.once(); - } - else { - return atom.sync(); - } - } - return atom.resync(args); - } - }; - Reflect.defineProperty(descr2.value, 'name', { value: orig.name + ' ' }); - Reflect.defineProperty(descr2.value, 'length', { value: orig.length }); - Object.assign(descr2.value, { orig }); - Reflect.defineProperty(host, field, descr2); - return descr2; - } - $.$mol_wire_plex = $mol_wire_plex; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_mem = $mol_wire_solo; - $.$mol_mem_key = $mol_wire_plex; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $node = new Proxy({ require }, { - get(target, name, wrapper) { - if (target[name]) - return target[name]; - const mod = target.require('module'); - if (mod.builtinModules.indexOf(name) >= 0) - return target.require(name); - if (name[0] === '.') - return target.require(name); - try { - target.require.resolve(name); - } - catch { - const $$ = $; - $$.$mol_exec('.', 'npm', 'install', '--omit=dev', name); - try { - $$.$mol_exec('.', 'npm', 'install', '--omit=dev', '@types/' + name); - } - catch (e) { - if ($$.$mol_fail_catch(e)) { - $$.$mol_fail_log(e); - } - } - } - try { - return target.require(name); - } - catch (error) { - if ($.$mol_fail_catch(error) && error.code === 'ERR_REQUIRE_ESM') { - const module = cache.get(name); - if (module) - return module; - throw import(name).then(module => cache.set(name, module)); - } - $.$mol_fail_log(error); - return null; - } - }, - set(target, name, value) { - target[name] = value; - return true; - }, -}); -const cache = new Map(); -require = (req => Object.assign(function require(name) { - return $node[name]; -}, req))(require); - -; -"use strict"; -var $; -(function ($) { - class $mol_error_mix extends AggregateError { - cause; - name = $$.$mol_func_name(this.constructor).replace(/^\$/, '') + '_Error'; - constructor(message, cause = {}, ...errors) { - super(errors, message, { cause }); - this.cause = cause; - const stack_get = Object.getOwnPropertyDescriptor(this, 'stack')?.get ?? (() => super.stack); - Object.defineProperty(this, 'stack', { - get: () => (stack_get.call(this) ?? this.message) + '\n' + [JSON.stringify(this.cause, null, ' ') ?? 'no cause', ...this.errors.map(e => e.stack)].map(e => e.trim() - .replace(/at /gm, ' at ') - .replace(/^(?! +at )(.*)/gm, ' at | $1 (#)')).join('\n') - }); - } - static [Symbol.toPrimitive]() { - return this.toString(); - } - static toString() { - return $$.$mol_func_name(this); - } - static make(...params) { - return new this(...params); - } - } - $.$mol_error_mix = $mol_error_mix; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_env() { - return {}; - } - $.$mol_env = $mol_env; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_env = function $mol_env() { - return this.process.env; - }; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const factories = new WeakMap(); - function factory(val) { - let make = factories.get(val); - if (make) - return make; - make = $mol_func_name_from((...args) => new val(...args), val); - factories.set(val, make); - return make; - } - function $mol_wire_sync(obj) { - return new Proxy(obj, { - get(obj, field) { - let val = obj[field]; - if (typeof val !== 'function') - return val; - const temp = $mol_wire_task.getter(val); - return function $mol_wire_sync(...args) { - const fiber = temp(obj, args); - return fiber.sync(); - }; - }, - construct(obj, args) { - const temp = $mol_wire_task.getter(factory(obj)); - return temp(obj, args).sync(); - }, - apply(obj, self, args) { - const temp = $mol_wire_task.getter(obj); - return temp(self, args).sync(); - }, - }); - } - $.$mol_wire_sync = $mol_wire_sync; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_run_error extends $mol_error_mix { - } - $.$mol_run_error = $mol_run_error; - $.$mol_run_spawn = (...args) => $node['child_process'].spawn(...args); - $.$mol_run_spawn_sync = (...args) => $node['child_process'].spawnSync(...args); - class $mol_run extends $mol_object { - static async_enabled() { - return Boolean(this.$.$mol_env()['MOL_RUN_ASYNC']); - } - static spawn(options) { - const sync = !this.async_enabled() || !Boolean($mol_wire_auto()); - const env = options.env ?? this.$.$mol_env(); - return $mol_wire_sync(this).spawn_async({ ...options, sync, env }); - } - static spawn_async({ dir, sync, timeout, command, env }) { - const args_raw = typeof command === 'string' ? command.split(' ') : command; - const [app, ...args] = args_raw; - const opts = { shell: true, cwd: dir, env }; - const log_object = { - place: `${this}.spawn()`, - message: 'Run', - command: args_raw.join(' '), - dir: $node.path.relative('', dir), - }; - if (sync) { - this.$.$mol_log3_come({ - hint: 'Run inside fiber', - ...log_object - }); - let error; - let res; - try { - res = this.$.$mol_run_spawn_sync(app, args, opts); - error = res.error; - } - catch (err) { - error = err; - } - if (!res || error || res.status) { - throw new $mol_run_error(this.error_message(res), { ...log_object, status: res?.status, signal: res?.signal }, ...(error ? [error] : [])); - } - return res; - } - let sub; - try { - sub = this.$.$mol_run_spawn(app, args, { - ...opts, - stdio: ['pipe', 'inherit', 'inherit'], - }); - } - catch (error) { - throw new $mol_run_error(this.error_message(undefined), log_object, error); - } - const pid = sub.pid ?? 0; - this.$.$mol_log3_come({ - ...log_object, - pid, - }); - let timeout_kill = false; - let timer; - const std_data = []; - const error_data = []; - const add = (std_chunk, error_chunk) => { - if (std_chunk) - std_data.push(std_chunk); - if (error_chunk) - error_data.push(error_chunk); - if (!timeout) - return; - clearTimeout(timer); - timer = setTimeout(() => { - const signal = timeout_kill ? 'SIGKILL' : 'SIGTERM'; - timeout_kill = true; - add(); - sub.kill(signal); - }, timeout); - }; - add(); - sub.stdout?.on('data', data => add(data)); - sub.stderr?.on('data', data => add(undefined, data)); - const result_promise = new Promise((done, fail) => { - const close = (error, status = null, signal = null) => { - if (!timer && timeout) - return; - clearTimeout(timer); - timer = undefined; - const res = { - pid, - signal, - get stdout() { return Buffer.concat(std_data); }, - get stderr() { return Buffer.concat(error_data); } - }; - if (error || status || timeout_kill) - return fail(new $mol_run_error(this.error_message(res) + (timeout_kill ? ', timeout' : ''), { ...log_object, pid, status, signal, timeout_kill }, ...error ? [error] : [])); - this.$.$mol_log3_done({ - ...log_object, - pid, - }); - done(res); - }; - sub.on('disconnect', () => close(new Error('Disconnected'))); - sub.on('error', err => close(err)); - sub.on('exit', (status, signal) => close(null, status, signal)); - }); - return Object.assign(result_promise, { destructor: () => { - clearTimeout(timer); - sub.kill('SIGKILL'); - } }); - } - static error_message(res) { - return res?.stderr.toString() || res?.stdout.toString() || 'Run error'; - } - } - $.$mol_run = $mol_run; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_exec(dir, command, ...args) { - return this.$mol_run.spawn({ command: [command, ...args], dir }); - } - $.$mol_exec = $mol_exec; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_dom_context = new $node.jsdom.JSDOM('', { url: 'https://localhost/' }).window; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_view_selection extends $mol_object { - static focused(next, notify) { - const parents = []; - let element = next?.[0] ?? $mol_dom_context.document.activeElement; - while (element) { - parents.push(element); - element = element.parentNode; - } - if (!next || notify) - return parents; - new $mol_after_tick(() => { - const element = this.focused()[0]; - if (element) - element.focus(); - else - $mol_dom_context.blur(); - }); - return parents; - } - } - __decorate([ - $mol_mem - ], $mol_view_selection, "focused", null); - $.$mol_view_selection = $mol_view_selection; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wrapper extends $mol_object2 { - static wrap; - static run(task) { - return this.func(task)(); - } - static func(func) { - return this.wrap(func); - } - static get class() { - return (Class) => { - const construct = (target, args) => new Class(...args); - const handler = { - construct: this.func(construct) - }; - handler[Symbol.toStringTag] = Class.name + '#'; - return new Proxy(Class, handler); - }; - } - static get method() { - return (obj, name, descr) => { - descr.value = this.func(descr.value); - return descr; - }; - } - static get field() { - return (obj, name, descr) => { - descr.get = descr.set = this.func(descr.get); - return descr; - }; - } - } - $.$mol_wrapper = $mol_wrapper; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_memo extends $mol_wrapper { - static wrap(task) { - const store = new WeakMap(); - const fun = function (next) { - if (next === undefined && store.has(this)) - return store.get(this); - const val = task.call(this, next) ?? next; - store.set(this, val); - return val; - }; - Reflect.defineProperty(fun, 'name', { value: task.name + ' ' }); - return fun; - } - } - $.$mol_memo = $mol_memo; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_dom = $mol_dom_context; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_qname(name) { - return name.replace(/\W/g, '').replace(/^(?=\d+)/, '_'); - } - $.$mol_dom_qname = $mol_dom_qname; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_probe(task, def) { - const warm = $mol_wire_fiber.warm; - try { - $mol_wire_fiber.warm = false; - const res = task(); - if (res === undefined) - return def; - return res; - } - finally { - $mol_wire_fiber.warm = warm; - } - } - $.$mol_wire_probe = $mol_wire_probe; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_watch() { - const atom = $mol_wire_auto(); - if (atom instanceof $mol_wire_atom) { - atom.watch(); - } - else { - $mol_fail(new Error('Atom is required for watching')); - } - } - $.$mol_wire_watch = $mol_wire_watch; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_const(value) { - const getter = (() => value); - getter['()'] = value; - getter[Symbol.toStringTag] = value; - getter[$mol_dev_format_head] = () => $mol_dev_format_span({}, '()=> ', $mol_dev_format_auto(value)); - return getter; - } - $.$mol_const = $mol_const; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_solid() { - let current = $mol_wire_auto(); - if (current.temp) - current = current.host; - if (current.reap !== nothing) { - current?.sub_on(sub, sub.data.length); - } - current.reap = nothing; - } - $.$mol_wire_solid = $mol_wire_solid; - const nothing = () => { }; - const sub = new $mol_wire_pub_sub; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_attributes(el, attrs) { - for (let name in attrs) { - let val = attrs[name]; - if (val === undefined) { - continue; - } - else if (val === null || val === false) { - if (!el.hasAttribute(name)) - continue; - el.removeAttribute(name); - } - else { - const str = String(val); - if (el.getAttribute(name) === str) - continue; - el.setAttribute(name, str); - } - } - } - $.$mol_dom_render_attributes = $mol_dom_render_attributes; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_events(el, events, passive = false) { - for (let name in events) { - el.addEventListener(name, events[name], { passive }); - } - } - $.$mol_dom_render_events = $mol_dom_render_events; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_styles(el, styles) { - for (let name in styles) { - let val = styles[name]; - const style = el.style; - const kebab = (name) => name.replace(/[A-Z]/g, letter => '-' + letter.toLowerCase()); - if (typeof val === 'number') { - style.setProperty(kebab(name), `${val}px`); - } - else { - style.setProperty(kebab(name), val); - } - } - } - $.$mol_dom_render_styles = $mol_dom_render_styles; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_children(el, childNodes) { - const node_set = new Set(childNodes); - let nextNode = el.firstChild; - for (let view of childNodes) { - if (view == null) - continue; - if (view instanceof $mol_dom_context.Node) { - while (true) { - if (!nextNode) { - el.appendChild(view); - break; - } - if (nextNode == view) { - nextNode = nextNode.nextSibling; - break; - } - else { - if (node_set.has(nextNode)) { - el.insertBefore(view, nextNode); - break; - } - else { - const nn = nextNode.nextSibling; - el.removeChild(nextNode); - nextNode = nn; - } - } - } - } - else { - if (nextNode && nextNode.nodeName === '#text') { - const str = String(view); - if (nextNode.nodeValue !== str) - nextNode.nodeValue = str; - nextNode = nextNode.nextSibling; - } - else { - const textNode = $mol_dom_context.document.createTextNode(String(view)); - el.insertBefore(textNode, nextNode); - } - } - } - while (nextNode) { - const currNode = nextNode; - nextNode = currNode.nextSibling; - el.removeChild(currNode); - } - } - $.$mol_dom_render_children = $mol_dom_render_children; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_fields(el, fields) { - for (let key in fields) { - const val = fields[key]; - if (val === undefined) - continue; - if (val === el[key]) - continue; - el[key] = val; - } - } - $.$mol_dom_render_fields = $mol_dom_render_fields; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_async(obj) { - let fiber; - const temp = $mol_wire_task.getter(obj); - return new Proxy(obj, { - get(obj, field) { - const val = obj[field]; - if (typeof val !== 'function') - return val; - let fiber; - const temp = $mol_wire_task.getter(val); - return function $mol_wire_async(...args) { - fiber?.destructor(); - fiber = temp(obj, args); - return fiber.async(); - }; - }, - apply(obj, self, args) { - fiber?.destructor(); - fiber = temp(self, args); - return fiber.async(); - }, - }); - } - $.$mol_wire_async = $mol_wire_async; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - function $mol_style_attach(id, text) { - const doc = $mol_dom_context.document; - if (!doc) - return null; - const elid = `$mol_style_attach:${id}`; - let el = doc.getElementById(elid); - if (!el) { - el = doc.createElement('style'); - el.id = elid; - doc.head.appendChild(el); - } - if (el.innerHTML != text) - el.innerHTML = text; - return el; - } - $.$mol_style_attach = $mol_style_attach; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_decor { - value; - constructor(value) { - this.value = value; - } - prefix() { return ''; } - valueOf() { return this.value; } - postfix() { return ''; } - toString() { - return `${this.prefix()}${this.valueOf()}${this.postfix()}`; - } - } - $.$mol_decor = $mol_decor; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_style_unit extends $mol_decor { - literal; - constructor(value, literal) { - super(value); - this.literal = literal; - } - postfix() { - return this.literal; - } - static per(value) { return `${value}%`; } - static px(value) { return `${value}px`; } - static mm(value) { return `${value}mm`; } - static cm(value) { return `${value}cm`; } - static Q(value) { return `${value}Q`; } - static in(value) { return `${value}in`; } - static pc(value) { return `${value}pc`; } - static pt(value) { return `${value}pt`; } - static cap(value) { return `${value}cap`; } - static ch(value) { return `${value}ch`; } - static em(value) { return `${value}em`; } - static rem(value) { return `${value}rem`; } - static ex(value) { return `${value}ex`; } - static ic(value) { return `${value}ic`; } - static lh(value) { return `${value}lh`; } - static rlh(value) { return `${value}rlh`; } - static vh(value) { return `${value}vh`; } - static vw(value) { return `${value}vw`; } - static vi(value) { return `${value}vi`; } - static vb(value) { return `${value}vb`; } - static vmin(value) { return `${value}vmin`; } - static vmax(value) { return `${value}vmax`; } - static deg(value) { return `${value}deg`; } - static rad(value) { return `${value}rad`; } - static grad(value) { return `${value}grad`; } - static turn(value) { return `${value}turn`; } - static s(value) { return `${value}s`; } - static ms(value) { return `${value}ms`; } - } - $.$mol_style_unit = $mol_style_unit; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const { per } = $mol_style_unit; - class $mol_style_func extends $mol_decor { - name; - constructor(name, value) { - super(value); - this.name = name; - } - prefix() { return this.name + '('; } - postfix() { return ')'; } - static linear_gradient(value) { - return new $mol_style_func('linear-gradient', value); - } - static calc(value) { - return new $mol_style_func('calc', value); - } - static vary(name, defaultValue) { - return new $mol_style_func('var', defaultValue ? [name, defaultValue] : name); - } - static url(href) { - return new $mol_style_func('url', JSON.stringify(href)); - } - static hsla(hue, saturation, lightness, alpha) { - return new $mol_style_func('hsla', [hue, per(saturation), per(lightness), alpha]); - } - static clamp(min, mid, max) { - return new $mol_style_func('clamp', [min, mid, max]); - } - static rgba(red, green, blue, alpha) { - return new $mol_style_func('rgba', [red, green, blue, alpha]); - } - static scale(zoom) { - return new $mol_style_func('scale', [zoom]); - } - static linear(...breakpoints) { - return new $mol_style_func("linear", breakpoints.map((e) => Array.isArray(e) - ? String(e[0]) + - " " + - (typeof e[1] === "number" ? e[1] + "%" : e[1].toString()) - : String(e))); - } - static cubic_bezier(x1, y1, x2, y2) { - return new $mol_style_func('cubic-bezier', [x1, y1, x2, y2]); - } - static steps(value, step_position) { - return new $mol_style_func('steps', [value, step_position]); - } - static blur(value) { - return new $mol_style_func('blur', value ?? ""); - } - static brightness(value) { - return new $mol_style_func('brightness', value ?? ""); - } - static contrast(value) { - return new $mol_style_func('contrast', value ?? ""); - } - static drop_shadow(color, x_offset, y_offset, blur_radius) { - return new $mol_style_func("drop-shadow", blur_radius - ? [color, x_offset, y_offset, blur_radius] - : [color, x_offset, y_offset]); - } - static grayscale(value) { - return new $mol_style_func('grayscale', value ?? ""); - } - static hue_rotate(value) { - return new $mol_style_func('hue-rotate', value ?? ""); - } - static invert(value) { - return new $mol_style_func('invert', value ?? ""); - } - static opacity(value) { - return new $mol_style_func('opacity', value ?? ""); - } - static sepia(value) { - return new $mol_style_func('sepia', value ?? ""); - } - static saturate(value) { - return new $mol_style_func('saturate', value ?? ""); - } - } - $.$mol_style_func = $mol_style_func; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - function $mol_style_prop(prefix, keys) { - const record = keys.reduce((rec, key) => { - rec[key] = $mol_style_func.vary(`--${prefix}_${key}`); - return rec; - }, {}); - return record; - } - $.$mol_style_prop = $mol_style_prop; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_theme = $mol_style_prop('mol_theme', [ - 'back', - 'hover', - 'card', - 'current', - 'special', - 'text', - 'control', - 'shade', - 'line', - 'focus', - 'field', - 'image', - ]); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/theme/theme.css", ":root {\n\t--mol_theme_hue: 210deg;\n\t--mol_theme_hue_spread: 90deg;\n}\n\n:where([mol_theme]) {\n\tcolor: var(--mol_theme_text);\n\tfill: var(--mol_theme_text);\n\tbackground-color: var(--mol_theme_back);\n}\n\t\n:root, [mol_theme=\"$mol_theme_dark\"], :where([mol_theme=\"$mol_theme_dark\"]) [mol_theme] {\n\n\t--mol_theme_luma: -1;\n\t--mol_theme_image: invert(1) hue-rotate( 180deg );\n\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 20%, 10% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 50%, 20%, .25 );\n\t--mol_theme_field: hsl( var(--mol_theme_hue), 50%, 8%, .25 );\n\t--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );\n\t\n\t--mol_theme_text: hsl( var(--mol_theme_hue), 0%, 80% );\n\t--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 60%, 1 );\n\t--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .25 );\n\t--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, 65% );\n\t\n\t--mol_theme_control: hsl( var(--mol_theme_hue), 60%, 65% );\n\t--mol_theme_current: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 60%, 65% );\n\t--mol_theme_special: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 60%, 65% );\n\n\t/* --mol_theme_back: oklch( 20% .03 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 35% .05 var(--mol_theme_hue) / .25 );\n\t--mol_theme_field: oklch( 0% 0 var(--mol_theme_hue) / .25 );\n\t--mol_theme_hover: oklch( 70% 0 var(--mol_theme_hue) / .1 );\n\t\n\t--mol_theme_text: oklch( 80% 0 var(--mol_theme_hue) );\n\t--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );\n\t--mol_theme_line: oklch( 50% 0 var(--mol_theme_hue) / .2 );\n\t--mol_theme_focus: oklch( 80% .2 calc( var(--mol_theme_hue) + 120deg ) );\n\t\n\t--mol_theme_control: oklch( 70% .1 var(--mol_theme_hue) );\n\t--mol_theme_current: oklch( 80% .2 calc( var(--mol_theme_hue) - 60deg ) );\n\t--mol_theme_special: oklch( 80% .3 calc( var(--mol_theme_hue) + 60deg ) ); */\n\n}\n\n[mol_theme=\"$mol_theme_light\"], :where([mol_theme=\"$mol_theme_light\"]) [mol_theme] {\n\t\n\t--mol_theme_luma: 1;\n\t--mol_theme_image: none;\n\t\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 20%, 92% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 50%, 100%, .5 );\n\t--mol_theme_field: hsl( var(--mol_theme_hue), 50%, 100%, .75 );\n\t--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );\n\t\n\t--mol_theme_text: hsl( var(--mol_theme_hue), 0%, 0% );\n\t--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 40%, 1 );\n\t--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .25 );\n\t--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, 40% );\n\t\n\t--mol_theme_control: hsl( var(--mol_theme_hue), 80%, 30% );\n\t--mol_theme_current: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 80%, 30% );\n\t--mol_theme_special: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 80%, 30% );\n\t\n\t/* --mol_theme_back: oklch( 93% .01 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 100% .02 var(--mol_theme_hue) / .25 );\n\t--mol_theme_field: oklch( 100% 0 var(--mol_theme_hue) / .5 );\n\t--mol_theme_hover: oklch( 70% 0 var(--mol_theme_hue) / .1 );\n\t\n\t--mol_theme_text: oklch( 20% 0 var(--mol_theme_hue) );\n\t--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );\n\t--mol_theme_line: oklch( 70% 0 var(--mol_theme_hue) / .2 );\n\t--mol_theme_focus: oklch( 20% .8 calc( var(--mol_theme_hue) + 120deg ) );\n\t\n\t--mol_theme_control: oklch( 45% .25 var(--mol_theme_hue) );\n\t--mol_theme_current: oklch( 45% .5 calc( var(--mol_theme_hue) - 60deg ) );\n\t--mol_theme_special: oklch( 45% .5 calc( var(--mol_theme_hue) + 60deg ) ); */\n\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_base\"] {\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 50%, 30% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 40%, 20%, .25 );\n\t/* --mol_theme_back: oklch( 25% .05 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 35% .1 var(--mol_theme_hue) / .25 ); */\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_base\"] {\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 50%, 80% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 80%, 95%, .25 );\n\t/* --mol_theme_back: oklch( 95% .02 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 80% .05 var(--mol_theme_hue) / .25 ); */\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_accent\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + 180deg ), 90%, 30% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + 180deg ), 80%, 20%, .25 );\n\t/* --mol_theme_back: oklch( 40% .2 calc( var(--mol_theme_hue) + 120deg ) );\n\t--mol_theme_card: oklch( 50% .3 calc( var(--mol_theme_hue) + 120deg ) / .25 ); */\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_accent\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + 180deg ), 90%, 75% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + 180deg ), 80%, 90%, .25 );\n\t/* --mol_theme_back: oklch( 90% .03 calc( var(--mol_theme_hue) + 120deg ) );\n\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) + 120deg ) / .25 ); */\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_current\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 50%, 30% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 40%, 20%, .25 );\n\t/* --mol_theme_back: oklch( 25% .05 calc( var(--mol_theme_hue) - 60deg ) );\n\t--mol_theme_card: oklch( 35% .1 calc( var(--mol_theme_hue) - 60deg ) / .25 ); */\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_current\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 50%, 92% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 80%, 100%, .5 );\n\t/* --mol_theme_back: oklch( 95% .02 calc( var(--mol_theme_hue) - 60deg ) );\n\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) - 60deg ) / .25 ); */\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_special\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 50%, 30% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 40%, 20%, .25 );\n\t/* --mol_theme_back: oklch( 25% .05 calc( var(--mol_theme_hue) + 60deg ) );\n\t--mol_theme_card: oklch( 35% .1 calc( var(--mol_theme_hue) + 60deg ) / .25 ); */\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_special\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 50%, 92% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 80%, 100%, .5 );\n\t/* --mol_theme_back: oklch( 95% .02 calc( var(--mol_theme_hue) + 60deg ) );\n\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) + 60deg ) / .25 ); */\n}\n"); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_gap = $mol_style_prop('mol_gap', [ - 'block', - 'text', - 'round', - 'space', - 'blur', - ]); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/gap/gap.css", ":root {\n\t--mol_gap_block: .75rem;\n\t--mol_gap_text: .5rem .75rem;\n\t--mol_gap_round: .25rem;\n\t--mol_gap_space: .25rem;\n\t--mol_gap_blur: .5rem;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_view_visible_width() { - return $mol_window.size().width; - } - $.$mol_view_visible_width = $mol_view_visible_width; - function $mol_view_visible_height() { - return $mol_window.size().height; - } - $.$mol_view_visible_height = $mol_view_visible_height; - function $mol_view_state_key(suffix) { - return suffix; - } - $.$mol_view_state_key = $mol_view_state_key; - class $mol_view extends $mol_object { - static Root(id) { - return new this; - } - autorun() { - try { - this.dom_tree(); - document.title = this.title(); - } - catch (error) { - $mol_fail_log(error); - } - } - static autobind() { - const nodes = $mol_dom_context.document.querySelectorAll('[mol_view_root]:not([mol_view_root=""])'); - for (let i = nodes.length - 1; i >= 0; --i) { - const name = nodes.item(i).getAttribute('mol_view_root'); - const View = $[name]; - if (!View) { - console.error(`Can not attach view. Class not found: ${name}`); - continue; - } - const view = View.Root(i); - view.dom_node(nodes.item(i)); - view.autorun(); - } - } - title() { - return this.toString().match(/.*\.(\w+)/)?.[1] ?? this.toString(); - } - focused(next) { - let node = this.dom_node(); - const value = $mol_view_selection.focused(next === undefined ? undefined : (next ? [node] : [])); - return value.indexOf(node) !== -1; - } - state_key(suffix = '') { - return this.$.$mol_view_state_key(suffix); - } - dom_name() { - return $mol_dom_qname(this.constructor.toString()) || 'div'; - } - dom_name_space() { return 'http://www.w3.org/1999/xhtml'; } - sub() { - return []; - } - sub_visible() { - return this.sub(); - } - minimal_width() { - let min = 0; - try { - const sub = this.sub(); - if (!sub) - return 0; - sub.forEach(view => { - if (view instanceof $mol_view) { - min = Math.max(min, view.minimal_width()); - } - }); - } - catch (error) { - $mol_fail_log(error); - return 24; - } - return min; - } - maximal_width() { - return this.minimal_width(); - } - minimal_height() { - let min = 0; - try { - for (const view of this.sub() ?? []) { - if (view instanceof $mol_view) { - min = Math.max(min, view.minimal_height()); - } - } - } - catch (error) { - $mol_fail_log(error); - return 24; - } - return min; - } - static watchers = new Set(); - view_rect() { - if ($mol_wire_probe(() => this.view_rect()) === undefined) { - $mol_wire_watch(); - return null; - } - else { - const { width, height, left, right, top, bottom } = this.dom_node().getBoundingClientRect(); - return { width, height, left, right, top, bottom }; - } - } - dom_id() { - return this.toString().replace(//g, ')').replaceAll(/"/g, "'"); - } - dom_node_external(next) { - const node = next ?? $mol_dom_context.document.createElementNS(this.dom_name_space(), this.dom_name()); - const id = this.dom_id(); - node.setAttribute('id', id); - node.toString = $mol_const('<#' + id + '>'); - return node; - } - dom_node(next) { - $mol_wire_solid(); - const node = this.dom_node_external(next); - $mol_dom_render_attributes(node, this.attr_static()); - const events = this.event_async(); - $mol_dom_render_events(node, events); - return node; - } - dom_final() { - this.render(); - const sub = this.sub_visible(); - if (!sub) - return; - for (const el of sub) { - if (el && typeof el === 'object' && 'dom_final' in el) { - el['dom_final'](); - } - } - return this.dom_node(); - } - dom_tree(next) { - const node = this.dom_node(next); - render: try { - $mol_dom_render_attributes(node, { mol_view_error: null }); - try { - this.render(); - } - finally { - for (let plugin of this.plugins()) { - if (plugin instanceof $mol_plugin) { - plugin.dom_tree(); - } - } - } - } - catch (error) { - $mol_fail_log(error); - const mol_view_error = $mol_promise_like(error) ? 'Promise' : error.name || error.constructor.name; - $mol_dom_render_attributes(node, { mol_view_error }); - if ($mol_promise_like(error)) - break render; - try { - const message = error.message || error; - node.innerText = message.replace(/^|$/mg, '\xA0\xA0'); - } - catch { } - } - try { - this.auto(); - } - catch (error) { - $mol_fail_log(error); - } - return node; - } - dom_node_actual() { - const node = this.dom_node(); - $mol_dom_render_styles(node, this.style_size()); - const attr = this.attr(); - const style = this.style(); - $mol_dom_render_attributes(node, attr); - $mol_dom_render_styles(node, style); - return node; - } - auto() { - return null; - } - render() { - const node = this.dom_node_actual(); - const sub = this.sub_visible(); - if (!sub) - return; - const nodes = sub.map(child => { - if (child == null) - return null; - return (child instanceof $mol_view) - ? child.dom_node() - : child instanceof $mol_dom_context.Node - ? child - : String(child); - }); - $mol_dom_render_children(node, nodes); - for (const el of sub) - if (el && typeof el === 'object' && 'dom_tree' in el) - el['dom_tree'](); - $mol_dom_render_fields(node, this.field()); - } - static view_classes() { - const proto = this.prototype; - let current = proto; - const classes = []; - while (current) { - if (current.constructor.name !== classes.at(-1)?.name) { - classes.push(current.constructor); - } - if (!(current instanceof $mol_view)) - break; - current = Object.getPrototypeOf(current); - } - return classes; - } - static _view_names; - static view_names(suffix) { - let cache = Reflect.getOwnPropertyDescriptor(this, '_view_names')?.value; - if (!cache) - cache = this._view_names = new Map; - const cached = cache.get(suffix); - if (cached) - return cached; - const names = []; - const suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1); - for (const Class of this.view_classes()) { - if (suffix in Class.prototype) - names.push(this.$.$mol_func_name(Class) + suffix2); - else - break; - } - cache.set(suffix, names); - return names; - } - view_names_owned() { - const names = []; - let owner = $mol_owning_get(this); - if (!(owner?.host instanceof $mol_view)) - return names; - const suffix = owner.task.name.trim(); - const suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1); - names.push(...owner.host.constructor.view_names(suffix)); - for (let prefix of owner.host.view_names_owned()) { - names.push(prefix + suffix2); - } - return names; - } - view_names() { - const names = new Set(); - for (let name of this.view_names_owned()) - names.add(name); - for (let Class of this.constructor.view_classes()) { - const name = this.$.$mol_func_name(Class); - if (name) - names.add(name); - } - return names; - } - theme(next = null) { - return next; - } - attr_static() { - let attrs = {}; - for (let name of this.view_names()) - attrs[name.replace(/\$/g, '').replace(/^(?=\d)/, '_').toLowerCase()] = ''; - return attrs; - } - attr() { - return { - mol_theme: this.theme() ?? undefined, - }; - } - style_size() { - return { - minHeight: this.minimal_height(), - minWidth: this.minimal_width(), - }; - } - style() { - return {}; - } - field() { - return {}; - } - event() { - return {}; - } - event_async() { - return { ...$mol_wire_async(this.event()) }; - } - plugins() { - return []; - } - [$mol_dev_format_head]() { - return $mol_dev_format_span({}, $mol_dev_format_native(this)); - } - *view_find(check, path = []) { - if (check(this)) - return yield [...path, this]; - try { - for (const item of this.sub()) { - if (item instanceof $mol_view) { - yield* item.view_find(check, [...path, this]); - } - } - } - catch (error) { - if ($mol_promise_like(error)) - $mol_fail_hidden(error); - $mol_fail_log(error); - } - } - force_render(path) { - const kids = this.sub(); - const index = kids.findIndex(item => { - if (item instanceof $mol_view) { - return path.has(item); - } - else { - return false; - } - }); - if (index >= 0) { - kids[index].force_render(path); - } - } - ensure_visible(view, align = "start") { - const path = this.view_find(v => v === view).next().value; - this.force_render(new Set(path)); - try { - this.dom_final(); - } - catch (err) { - $mol_fail_log(err); - } - view.dom_node().scrollIntoView({ block: align }); - } - bring() { - const win = this.$.$mol_dom_context; - if (win.parent !== win.self && !win.document.hasFocus()) - return; - new this.$.$mol_after_timeout(0, () => { - this.focused(true); - }); - } - destructor() { - const node = $mol_wire_probe(() => this.dom_node()); - if (!node) - return; - const events = $mol_wire_probe(() => this.event_async()); - if (!events) - return; - for (let event_name in events) { - node.removeEventListener(event_name, events[event_name]); - } - } - } - __decorate([ - $mol_mem - ], $mol_view.prototype, "autorun", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "title", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "focused", null); - __decorate([ - $mol_memo.method - ], $mol_view.prototype, "dom_name", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "minimal_width", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "minimal_height", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "view_rect", null); - __decorate([ - $mol_memo.method - ], $mol_view.prototype, "dom_id", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "dom_node", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "dom_final", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "dom_tree", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "dom_node_actual", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "render", null); - __decorate([ - $mol_memo.method - ], $mol_view.prototype, "view_names_owned", null); - __decorate([ - $mol_memo.method - ], $mol_view.prototype, "view_names", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "theme", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "event_async", null); - __decorate([ - $mol_mem_key - ], $mol_view, "Root", null); - __decorate([ - $mol_mem - ], $mol_view, "autobind", null); - __decorate([ - $mol_memo.method - ], $mol_view, "view_classes", null); - $.$mol_view = $mol_view; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/view/view/view.css", "[mol_view] {\n\ttransition-property: height, width, min-height, min-width, max-width, max-height, transform;\n\ttransition-duration: .2s;\n\ttransition-timing-function: ease-out;\n\t-webkit-appearance: none;\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\tflex-shrink: 0;\n\tcontain: style;\n\tscrollbar-color: var(--mol_theme_line) transparent;\n\tscrollbar-width: thin;\n}\t\n\n[mol_view]::selection {\n\tbackground: var(--mol_theme_line);\n}\t\n\n[mol_view]::-webkit-scrollbar {\n\twidth: .25rem;\n\theight: .25rem;\n}\n\n[mol_view]::-webkit-scrollbar-corner {\n\tbackground-color: var(--mol_theme_line);\n}\n\n[mol_view]::-webkit-scrollbar-track {\n\tbackground-color: transparent;\n}\n\n[mol_view]::-webkit-scrollbar-thumb {\n\tbackground-color: var(--mol_theme_line);\n\tborder-radius: var(--mol_gap_round);\n}\n\n[mol_view] > * {\n\tword-break: inherit;\n}\n\n[mol_view_root] {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbox-sizing: border-box;\n\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\tfont-size: 1rem;\n\tline-height: 1.5rem;\n\tbackground: var(--mol_theme_back);\n\tcolor: var(--mol_theme_text);\n\tcontain: unset; /** Fixes bg ignoring when applied to body on Chrome */\n\ttab-size: 4;\n\toverscroll-behavior: contain; /** Disable navigation gestures **/\n}\n\n@media print {\n\t[mol_view_root] {\n\t\theight: auto;\n\t}\n}\n\n[mol_view][mol_view_error]:not([mol_view_error=\"Promise\"]) {\n\tbackground-image: repeating-linear-gradient(\n\t\t-45deg,\n\t\t#f92323,\n\t\t#f92323 .5rem,\n\t\t#ff3d3d .5rem,\n\t\t#ff3d3d 1.5rem\n\t);\n\tcolor: black;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n@keyframes mol_view_wait {\n\tfrom {\n\t\topacity: .25;\n\t}\n\t20% {\n\t\topacity: .75;\n\t}\n\tto {\n\t\topacity: .25;\n\t}\n}\n\n:where([mol_view][mol_view_error=\"Promise\"]) {\n\tbackground: var(--mol_theme_hover);\n}\n\n[mol_view][mol_view_error=\"Promise\"] {\n\tanimation: mol_view_wait 1s steps(20,end) infinite;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_plugin extends $mol_view { - dom_node_external(next) { - return next ?? $mol_owning_get(this).host.dom_node(); - } - render() { - this.dom_node_actual(); - } - } - $.$mol_plugin = $mol_plugin; -})($ || ($ = {})); - -; - ($.$mol_ghost) = class $mol_ghost extends ($.$mol_view) { - Sub(){ - const obj = new this.$.$mol_view(); - return obj; - } - }; - ($mol_mem(($.$mol_ghost.prototype), "Sub")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_ghost extends $.$mol_ghost { - dom_node_external(next) { - return this.Sub().dom_node(next); - } - dom_node_actual() { - this.dom_node(); - const node = this.Sub().dom_node_actual(); - const attr = this.attr(); - const style = this.style(); - const fields = this.field(); - $mol_dom_render_attributes(node, attr); - $mol_dom_render_styles(node, style); - $mol_dom_render_fields(node, fields); - return node; - } - dom_tree() { - const Sub = this.Sub(); - const node = Sub.dom_tree(); - try { - this.dom_node_actual(); - this.auto(); - } - catch (error) { - $mol_fail_log(error); - } - return node; - } - title() { - return this.Sub().title(); - } - minimal_width() { - return this.Sub().minimal_width(); - } - minimal_height() { - return this.Sub().minimal_height(); - } - } - __decorate([ - $mol_mem - ], $mol_ghost.prototype, "dom_node_actual", null); - $$.$mol_ghost = $mol_ghost; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_drop) = class $mol_drop extends ($.$mol_ghost) { - enter(next){ - if(next !== undefined) return next; - return null; - } - move(next){ - if(next !== undefined) return next; - return null; - } - leave(next){ - if(next !== undefined) return next; - return null; - } - drop(next){ - if(next !== undefined) return next; - return null; - } - status(next){ - if(next !== undefined) return next; - return "ready"; - } - enabled(next){ - if(next !== undefined) return next; - return true; - } - event(){ - return { - "dragenter": (next) => (this.enter(next)), - "dragover": (next) => (this.move(next)), - "dragleave": (next) => (this.leave(next)), - "drop": (next) => (this.drop(next)) - }; - } - attr(){ - return {"mol_drop_status": (this.status())}; - } - adopt(next){ - if(next !== undefined) return next; - return {}; - } - receive(next){ - if(next !== undefined) return next; - return null; - } - allow(){ - return [ - "copy", - "move", - "link" - ]; - } - }; - ($mol_mem(($.$mol_drop.prototype), "enter")); - ($mol_mem(($.$mol_drop.prototype), "move")); - ($mol_mem(($.$mol_drop.prototype), "leave")); - ($mol_mem(($.$mol_drop.prototype), "drop")); - ($mol_mem(($.$mol_drop.prototype), "status")); - ($mol_mem(($.$mol_drop.prototype), "enabled")); - ($mol_mem(($.$mol_drop.prototype), "adopt")); - ($mol_mem(($.$mol_drop.prototype), "receive")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_drop extends $.$mol_drop { - status(next = 'ready') { return next; } - _target = null; - enter(event) { - if (event.defaultPrevented) - return; - if (!this.enabled()) - return; - const action = this.decide_action(event); - event.dataTransfer.dropEffect = action; - if (action !== 'none') - this.status('drag'); - this._target = event.target; - event.preventDefault(); - } - move(event) { - if (event.defaultPrevented) - return; - if (!this.enabled()) - return; - event.dataTransfer.dropEffect = this.decide_action(event); - event.preventDefault(); - } - decide_action(event) { - const allow = this.allow(); - if (allow.includes('move') && event.shiftKey) - return 'move'; - else if (allow.includes('copy') && event.ctrlKey) - return 'copy'; - else if (allow.includes('link') && event.altKey) - return 'link'; - else - return allow[0]; - } - leave(event) { - if (this._target === event.target) { - this.status('ready'); - } - } - receive(transfer) { - return transfer; - } - drop(event) { - if (event.defaultPrevented) - return; - event.preventDefault(); - setTimeout(() => this.status('ready')); - const obj = this.adopt(event.dataTransfer); - if (!obj) - return; - this.receive(obj); - } - } - __decorate([ - $mol_mem - ], $mol_drop.prototype, "status", null); - $$.$mol_drop = $mol_drop; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_theme_auto) = class $mol_theme_auto extends ($.$mol_plugin) { - theme(){ - return ""; - } - attr(){ - return {"mol_theme": (this.theme())}; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - $.$mol_action = $mol_wire_method; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_state_arg extends $mol_object { - prefix; - static prolog = ''; - static separator = ' '; - static href(next) { - return next || process.argv.slice(2).join(' '); - } - static href_normal() { - return this.link({}); - } - static dict(next) { - if (next !== void 0) - this.href(this.make_link(next)); - var href = this.href(); - var chunks = href.split(' '); - var params = {}; - chunks.forEach(chunk => { - if (!chunk) - return; - var vals = chunk.split('=').map(decodeURIComponent); - params[vals.shift()] = vals.join('='); - }); - return params; - } - static value(key, next) { - if (next === void 0) - return this.dict()[key] ?? null; - this.href(this.link({ [key]: next })); - return next; - } - static link(next) { - const params = {}; - var prev = this.dict(); - for (var key in prev) { - params[key] = prev[key]; - } - for (var key in next) { - params[key] = next[key]; - } - return this.make_link(params); - } - static make_link(next) { - const chunks = []; - for (const key in next) { - if (next[key] !== null) { - chunks.push([key, next[key]].map(encodeURIComponent).join('=')); - } - } - return chunks.join(' '); - } - static go(next) { - this.href(this.link(next)); - } - constructor(prefix = '') { - super(); - this.prefix = prefix; - } - value(key, next) { - return this.constructor.value(this.prefix + key, next); - } - sub(postfix) { - return new this.constructor(this.prefix + postfix + '.'); - } - link(next) { - const prefix = this.prefix; - const dict = {}; - for (var key in next) { - dict[prefix + key] = next[key]; - } - return this.constructor.link(dict); - } - } - __decorate([ - $mol_mem - ], $mol_state_arg, "href", null); - __decorate([ - $mol_mem - ], $mol_state_arg, "href_normal", null); - __decorate([ - $mol_mem - ], $mol_state_arg, "dict", null); - __decorate([ - $mol_mem_key - ], $mol_state_arg, "value", null); - __decorate([ - $mol_action - ], $mol_state_arg, "go", null); - $.$mol_state_arg = $mol_state_arg; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_media extends $mol_object2 { - static match(query, next) { - if (next !== undefined) - return next; - const res = this.$.$mol_dom_context.matchMedia?.(query) ?? {}; - res.onchange = () => this.match(query, res.matches); - return res.matches; - } - } - __decorate([ - $mol_mem_key - ], $mol_media, "match", null); - $.$mol_media = $mol_media; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_mem_persist = $mol_wire_solid; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_mem_cached = $mol_wire_probe; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_storage extends $mol_object2 { - static native() { - return this.$.$mol_dom_context.navigator.storage ?? { - persisted: async () => false, - persist: async () => false, - estimate: async () => ({}), - getDirectory: async () => null, - }; - } - static persisted(next, cache) { - $mol_mem_persist(); - if (cache) - return Boolean(next); - const native = this.native(); - if (next && !$mol_mem_cached(() => this.persisted())) { - native.persist().then(actual => { - setTimeout(() => this.persisted(actual, 'cache'), 5000); - if (actual) - this.$.$mol_log3_done({ place: `$mol_storage`, message: `Persist: Yes` }); - else - this.$.$mol_log3_fail({ place: `$mol_storage`, message: `Persist: No` }); - }); - } - return next ?? $mol_wire_sync(native).persisted(); - } - static estimate() { - return $mol_wire_sync(this.native() ?? {}).estimate(); - } - static dir() { - return $mol_wire_sync(this.native()).getDirectory(); - } - } - __decorate([ - $mol_mem - ], $mol_storage, "native", null); - __decorate([ - $mol_mem - ], $mol_storage, "persisted", null); - $.$mol_storage = $mol_storage; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_state_local extends $mol_object { - static 'native()'; - static native() { - if (this['native()']) - return this['native()']; - check: try { - const native = $mol_dom_context.localStorage; - if (!native) - break check; - native.setItem('', ''); - native.removeItem(''); - return this['native()'] = native; - } - catch (error) { - console.warn(error); - } - return this['native()'] = { - getItem(key) { - return this[':' + key]; - }, - setItem(key, value) { - this[':' + key] = value; - }, - removeItem(key) { - this[':' + key] = void 0; - } - }; - } - static changes(next) { return next; } - static value(key, next) { - this.changes(); - if (next === void 0) - return JSON.parse(this.native().getItem(key) || 'null'); - if (next === null) { - this.native().removeItem(key); - } - else { - this.native().setItem(key, JSON.stringify(next)); - this.$.$mol_storage.persisted(true); - } - return next; - } - prefix() { return ''; } - value(key, next) { - return $mol_state_local.value(this.prefix() + '.' + key, next); - } - } - __decorate([ - $mol_mem - ], $mol_state_local, "changes", null); - __decorate([ - $mol_mem_key - ], $mol_state_local, "value", null); - $.$mol_state_local = $mol_state_local; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_lock extends $mol_object { - promise = null; - async wait() { - let next = () => { }; - let destructed = false; - const task = $mol_wire_auto(); - if (!task) - return next; - const destructor = task.destructor.bind(task); - task.destructor = () => { - destructor(); - destructed = true; - next(); - }; - let promise; - do { - promise = this.promise; - await promise; - if (destructed) - return next; - } while (promise !== this.promise); - this.promise = new Promise(done => { next = done; }); - return next; - } - grab() { return $mol_wire_sync(this).wait(); } - } - $.$mol_lock = $mol_lock; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_compare_array(a, b) { - if (a === b) - return true; - if (Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) - return false; - if (a.length !== b.length) - return false; - for (let i = 0; i < a.length; i++) - if (a[i] !== b[i]) - return false; - return true; - } - $.$mol_compare_array = $mol_compare_array; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - const decoders = {}; - function $mol_charset_decode(buffer, encoding = 'utf8') { - let decoder = decoders[encoding]; - if (!decoder) - decoder = decoders[encoding] = new TextDecoder(encoding); - return decoder.decode(buffer); - } - $.$mol_charset_decode = $mol_charset_decode; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const TextEncoder = globalThis.TextEncoder ?? $node.util.TextEncoder; - const encoder = new TextEncoder(); - function $mol_charset_encode(value) { - return encoder.encode(value); - } - $.$mol_charset_encode = $mol_charset_encode; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_file_transaction extends $mol_object { - path() { return ''; } - modes() { return []; } - write(options) { - return 0; - } - read() { - return new Uint8Array(); - } - truncate(size) { } - close() { } - destructor() { - this.close(); - } - } - $.$mol_file_transaction = $mol_file_transaction; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - let file_modes; - (function (file_modes) { - file_modes[file_modes["create"] = $node.fs.constants.O_CREAT] = "create"; - file_modes[file_modes["exists_truncate"] = $node.fs.constants.O_TRUNC] = "exists_truncate"; - file_modes[file_modes["exists_fail"] = $node.fs.constants.O_EXCL] = "exists_fail"; - file_modes[file_modes["read_only"] = $node.fs.constants.O_RDONLY] = "read_only"; - file_modes[file_modes["write_only"] = $node.fs.constants.O_WRONLY] = "write_only"; - file_modes[file_modes["read_write"] = $node.fs.constants.O_RDWR] = "read_write"; - file_modes[file_modes["append"] = $node.fs.constants.O_APPEND] = "append"; - })(file_modes || (file_modes = {})); - function mode_mask(modes) { - return modes.reduce((res, mode) => res | file_modes[mode], 0); - } - class $mol_file_transaction_node extends $mol_file_transaction { - descr() { - $mol_wire_solid(); - return $node.fs.openSync(this.path(), mode_mask(this.modes())); - } - write({ buffer, offset = 0, length, position = null }) { - if (Array.isArray(buffer)) { - return $node.fs.writevSync(this.descr(), buffer, position ?? undefined); - } - if (typeof buffer === 'string') { - return $node.fs.writeSync(this.descr(), buffer, position); - } - length = length ?? buffer.byteLength; - return $node.fs.writeSync(this.descr(), buffer, offset, length, position); - } - truncate(size) { - $node.fs.ftruncateSync(this.descr()); - } - read() { - return $mol_file_node_buffer_normalize($node.fs.readFileSync(this.descr())); - } - close() { - $node.fs.closeSync(this.descr()); - } - } - __decorate([ - $mol_mem - ], $mol_file_transaction_node.prototype, "descr", null); - $.$mol_file_transaction_node = $mol_file_transaction_node; - $.$mol_file_transaction = $mol_file_transaction_node; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_file_base extends $mol_object { - static absolute(path) { - return this.make({ - path: $mol_const(path) - }); - } - static relative(path) { - throw new Error('Not implemented yet'); - } - static base = ''; - path() { - return '.'; - } - parent() { - return this.resolve('..'); - } - exists_cut() { return this.exists(); } - root() { - const path = this.path(); - const base = this.constructor.base; - return base.startsWith(path) || this == this.parent(); - } - stat(next, virt) { - const path = this.path(); - const parent = this.parent(); - if (!this.root()) { - parent.version(); - } - parent.watcher(); - if (virt) - return next ?? null; - return next ?? this.info(path); - } - static changed = new Set; - static frame = null; - static changed_add(type, path) { - if (/([\/\\]\.|___$)/.test(path)) - return; - const file = this.relative(path.at(-1) === '/' ? path.slice(0, -1) : path); - this.changed.add(file); - if (!this.watching) - return; - this.frame?.destructor(); - this.frame = new this.$.$mol_after_timeout(this.watch_debounce(), () => { - if (!this.watching) - return; - this.watching = false; - $mol_wire_async(this).flush(); - }); - } - static watch_debounce() { return 500; } - static flush() { - for (const file of this.changed) { - const parent = file.parent(); - try { - if ($mol_wire_probe(() => parent.sub())) - parent.sub(null); - file.reset(); - } - catch (error) { - if ($mol_fail_catch(error)) - $mol_fail_log(error); - } - } - this.changed.clear(); - this.watching = true; - } - static watching = true; - static lock = new $mol_lock; - static watch_off(path) { - this.watching = false; - this.flush(); - this.watching = false; - this.changed.add(this.absolute(path)); - } - static unwatched(side_effect, affected_dir) { - const unlock = this.lock.grab(); - this.watch_off(affected_dir); - try { - const result = side_effect(); - this.flush(); - unlock(); - return result; - } - catch (e) { - if (!$mol_promise_like(e)) { - this.flush(); - unlock(); - } - $mol_fail_hidden(e); - } - } - reset() { - this.stat(null); - } - modified() { return this.stat()?.mtime ?? null; } - version() { - const next = this.stat()?.mtime.getTime().toString(36).toUpperCase() ?? ''; - return next; - } - info(path) { return null; } - ensure() { } - drop() { } - copy(to) { } - read() { return new Uint8Array; } - write(buffer) { } - kids() { - return []; - } - readable(opts) { - return new ReadableStream; - } - writable(opts) { - return new WritableStream; - } - buffer(next) { - let readed = new Uint8Array(); - if (next === undefined) { - if (this.version()) - readed = this.read(); - } - const prev = $mol_mem_cached(() => this.buffer()); - const changed = prev === undefined || !$mol_compare_array(prev, next ?? readed); - if (prev !== undefined && changed) { - this.$.$mol_log3_rise({ - place: `$mol_file_node.buffer()`, - message: 'Changed', - path: this.relate(), - }); - } - if (next === undefined) - return changed ? readed : prev; - if (!changed && this.exists()) - return prev; - this.parent().exists(true); - this.stat(this.stat_make(next.length), 'virt'); - this.write(next); - return next; - } - stat_make(size) { - const now = new Date(); - return { - type: 'file', - size, - atime: now, - mtime: now, - ctime: now, - }; - } - clone(to) { - if (!this.exists()) - return null; - const target = this.constructor.absolute(to); - try { - this.version(); - target.parent().exists(true); - this.copy(to); - target.reset(); - return target; - } - catch (error) { - if ($mol_fail_catch(error)) { - console.error(error); - } - } - return null; - } - watcher() { - return { - destructor() { } - }; - } - exists(next) { - const exists = Boolean(this.stat()); - if (next === undefined) - return exists; - if (next === exists) - return exists; - if (next) { - this.parent().exists(true); - this.ensure(); - } - else { - this.drop(); - } - this.reset(); - return next; - } - type() { - return this.stat()?.type ?? ''; - } - name() { - return this.path().replace(/^.*\//, ''); - } - ext() { - const match = /((?:\.\w+)+)$/.exec(this.path()); - return match ? match[1].substring(1) : ''; - } - text(next, virt) { - if (next !== undefined) - this.exists(); - return this.text_int(next, virt); - } - text_int(next, virt) { - if (virt) { - this.stat(this.stat_make(0), 'virt'); - return next; - } - if (next === undefined) { - return $mol_charset_decode(this.buffer()); - } - else { - const buffer = $mol_charset_encode(next); - this.buffer(buffer); - return next; - } - } - sub(reset) { - if (!this.exists()) - return []; - if (this.type() !== 'dir') - return []; - this.version(); - return this.kids().filter(file => file.exists()); - } - resolve(path) { - throw new Error('implement'); - } - relate(base = this.constructor.relative('.')) { - const base_path = base.path(); - const path = this.path(); - return path.startsWith(base_path) ? path.slice(base_path.length) : path; - } - find(include, exclude) { - const found = []; - const sub = this.sub(); - for (const child of sub) { - const child_path = child.path(); - if (exclude && child_path.match(exclude)) - continue; - if (!include || child_path.match(include)) - found.push(child); - if (child.type() === 'dir') { - const sub_child = child.find(include, exclude); - for (const child of sub_child) - found.push(child); - } - } - return found; - } - size() { - switch (this.type()) { - case 'file': return this.stat()?.size ?? 0; - default: return 0; - } - } - toJSON() { - return this.path(); - } - open(...modes) { - return this.$.$mol_file_transaction.make({ - path: () => this.path(), - modes: () => modes - }); - } - } - __decorate([ - $mol_action - ], $mol_file_base.prototype, "exists_cut", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "stat", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "modified", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "version", null); - __decorate([ - $mol_mem_key - ], $mol_file_base.prototype, "readable", null); - __decorate([ - $mol_mem_key - ], $mol_file_base.prototype, "writable", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "buffer", null); - __decorate([ - $mol_action - ], $mol_file_base.prototype, "stat_make", null); - __decorate([ - $mol_mem_key - ], $mol_file_base.prototype, "clone", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "exists", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "type", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "text_int", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "sub", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "size", null); - __decorate([ - $mol_action - ], $mol_file_base.prototype, "open", null); - __decorate([ - $mol_mem_key - ], $mol_file_base, "absolute", null); - __decorate([ - $mol_action - ], $mol_file_base, "flush", null); - __decorate([ - $mol_action - ], $mol_file_base, "watch_off", null); - $.$mol_file_base = $mol_file_base; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_file extends $mol_file_base { - } - $.$mol_file = $mol_file; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function stat_convert(stat) { - if (!stat) - return null; - let type; - if (stat.isDirectory()) - type = 'dir'; - if (stat.isFile()) - type = 'file'; - if (stat.isSymbolicLink()) - type = 'link'; - if (!type) - return $mol_fail(new Error(`Unsupported file type`)); - return { - type, - size: Number(stat.size), - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime - }; - } - function $mol_file_node_buffer_normalize(buf) { - return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength); - } - $.$mol_file_node_buffer_normalize = $mol_file_node_buffer_normalize; - class $mol_file_node extends $mol_file { - static relative(path) { - return this.absolute($node.path.resolve(this.base, path).replace(/\\/g, '/')); - } - watcher(reset) { - const path = this.path(); - const root = this.root(); - if (!root && !this.exists()) - return super.watcher(); - let watcher; - try { - watcher = $node.fs.watch(path); - } - catch (error) { - if (!(error instanceof Error)) - error = new Error('Unknown watch error', { cause: error }); - error.message += '\n' + path; - if (root || error.code !== 'ENOENT') { - this.$.$mol_fail_log(error); - } - return super.watcher(); - } - watcher.on('change', (type, name) => { - if (!name) - return; - const path = $node.path.join(this.path(), name.toString()); - this.constructor.changed_add(type, path); - }); - watcher.on('error', e => this.$.$mol_fail_log(e)); - let destructed = false; - watcher.on('close', () => { - if (!destructed) - setTimeout(() => $mol_wire_async(this).watcher(null), 500); - }); - return { - destructor() { - destructed = true; - watcher.close(); - } - }; - } - info(path) { - try { - return stat_convert($node.fs.statSync(path)); - } - catch (error) { - if (this.$.$mol_fail_catch(error)) { - if (error.code === 'ENOENT') - return null; - error.message += '\n' + path; - this.$.$mol_fail_hidden(error); - } - } - return null; - } - ensure() { - const path = this.path(); - try { - $node.fs.mkdirSync(path, { recursive: true }); - return null; - } - catch (e) { - if (this.$.$mol_fail_catch(e)) { - if (e.code === 'EEXIST') - return null; - e.message += '\n' + path; - this.$.$mol_fail_hidden(e); - } - } - } - copy(to) { - $node.fs.copyFileSync(this.path(), to); - } - drop() { - $node.fs.unlinkSync(this.path()); - } - read() { - const path = this.path(); - try { - return $mol_file_node_buffer_normalize($node.fs.readFileSync(path)); - } - catch (error) { - if (!$mol_promise_like(error)) { - error.message += '\n' + path; - } - $mol_fail_hidden(error); - } - } - write(buffer) { - const path = this.path(); - try { - $node.fs.writeFileSync(path, buffer); - } - catch (error) { - if (this.$.$mol_fail_catch(error)) { - error.message += '\n' + path; - } - return this.$.$mol_fail_hidden(error); - } - } - kids() { - const path = this.path(); - try { - const kids = $node.fs.readdirSync(path) - .filter(name => !/^\.+$/.test(name)) - .map(name => this.resolve(name)); - return kids; - } - catch (e) { - if (this.$.$mol_fail_catch(e)) { - if (e.code === 'ENOENT') - return []; - e.message += '\n' + path; - } - $mol_fail_hidden(e); - } - } - resolve(path) { - return this.constructor - .relative($node.path.join(this.path(), path)); - } - relate(base = this.constructor.relative('.')) { - return $node.path.relative(base.path(), this.path()).replace(/\\/g, '/'); - } - readable(opts) { - const { Readable } = $node['node:stream']; - const stream = $node.fs.createReadStream(this.path(), { - flags: 'r', - autoClose: true, - start: opts?.start, - end: opts?.end, - encoding: 'binary', - }); - return Readable.toWeb(stream); - } - writable(opts) { - const { Writable } = $node['node:stream']; - const stream = $node.fs.createWriteStream(this.path(), { - flags: 'w+', - autoClose: true, - start: opts?.start, - encoding: 'binary', - }); - return Writable.toWeb(stream); - } - } - __decorate([ - $mol_mem - ], $mol_file_node.prototype, "watcher", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "info", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "ensure", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "copy", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "drop", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "read", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "write", null); - __decorate([ - $mol_mem_key - ], $mol_file_node.prototype, "readable", null); - __decorate([ - $mol_mem - ], $mol_file_node.prototype, "writable", null); - $.$mol_file_node = $mol_file_node; - $.$mol_file = $mol_file_node; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_state_local_node extends $mol_state_local { - static dir() { - const base = process.env.XDG_DATA_HOME || ($node.os.homedir() + '/.local/share'); - return $mol_file.absolute(base).resolve('./mol_state_local'); - } - static value(key, next) { - const file = this.dir().resolve(encodeURIComponent(key) + '.json'); - if (next === null) { - file.exists(false); - return null; - } - const arg = next === undefined ? undefined : JSON.stringify(next); - return JSON.parse(file.text(arg) || 'null'); - } - } - __decorate([ - $mol_mem - ], $mol_state_local_node, "dir", null); - __decorate([ - $mol_mem_key - ], $mol_state_local_node, "value", null); - $.$mol_state_local_node = $mol_state_local_node; - $.$mol_state_local = $mol_state_local_node; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function parse(theme) { - if (theme === 'true') - return true; - if (theme === 'false') - return false; - return null; - } - function $mol_lights(next) { - const arg = parse(this.$mol_state_arg.value('mol_lights')); - const base = this.$mol_media.match('(prefers-color-scheme: light)'); - if (next === undefined) { - return arg ?? this.$mol_state_local.value('$mol_lights') ?? base; - } - else { - if (arg === null) { - this.$mol_state_local.value('$mol_lights', next === base ? null : next); - } - else { - this.$mol_state_arg.value('mol_lights', String(next)); - } - return next; - } - } - $.$mol_lights = $mol_lights; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_theme_auto extends $.$mol_theme_auto { - theme() { - return this.$.$mol_lights() ? '$mol_theme_light' : '$mol_theme_dark'; - } - } - $$.$mol_theme_auto = $mol_theme_auto; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_scroll) = class $mol_scroll extends ($.$mol_view) { - tabindex(){ - return -1; - } - event_scroll(next){ - if(next !== undefined) return next; - return null; - } - scroll_top(next){ - if(next !== undefined) return next; - return 0; - } - scroll_left(next){ - if(next !== undefined) return next; - return 0; - } - field(){ - return {...(super.field()), "tabIndex": (this.tabindex())}; - } - event(){ - return {...(super.event()), "scroll": (next) => (this.event_scroll(next))}; - } - }; - ($mol_mem(($.$mol_scroll.prototype), "event_scroll")); - ($mol_mem(($.$mol_scroll.prototype), "scroll_top")); - ($mol_mem(($.$mol_scroll.prototype), "scroll_left")); - - -; -"use strict"; -var $; -(function ($) { - class $mol_dom_listener extends $mol_object { - _node; - _event; - _handler; - _config; - constructor(_node, _event, _handler, _config = { passive: true }) { - super(); - this._node = _node; - this._event = _event; - this._handler = _handler; - this._config = _config; - this._node.addEventListener(this._event, this._handler, this._config); - } - destructor() { - this._node.removeEventListener(this._event, this._handler, this._config); - super.destructor(); - } - } - $.$mol_dom_listener = $mol_dom_listener; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_print extends $mol_object { - static before() { - return new $mol_dom_listener(this.$.$mol_dom_context, 'beforeprint', () => { - this.active(true); - }); - } - static after() { - return new $mol_dom_listener(this.$.$mol_dom_context, 'afterprint', () => { - this.active(false); - }); - } - static active(next) { - this.before(); - this.after(); - return next || false; - } - } - __decorate([ - $mol_mem - ], $mol_print, "before", null); - __decorate([ - $mol_mem - ], $mol_print, "after", null); - __decorate([ - $mol_mem - ], $mol_print, "active", null); - $.$mol_print = $mol_print; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - function $mol_style_sheet(Component, config0) { - let rules = []; - const block = $mol_dom_qname($mol_ambient({}).$mol_func_name(Component)); - const kebab = (name) => name.replace(/[A-Z]/g, letter => '-' + letter.toLowerCase()); - const make_class = (prefix, path, config) => { - const props = []; - const selector = (prefix, path) => { - if (path.length === 0) - return prefix || `[${block}]`; - let res = `[${block}_${path.join('_')}]`; - if (prefix) - res = prefix + ' :where(' + res + ')'; - return res; - }; - for (const key of Object.keys(config).reverse()) { - if (/^(--)?[a-z]/.test(key)) { - const addProp = (keys, val) => { - if (Array.isArray(val)) { - if (val[0] && [Array, Object].includes(val[0].constructor)) { - val = val.map(v => { - return Object.entries(v).map(([n, a]) => { - if (a === true) - return kebab(n); - if (a === false) - return null; - return String(a); - }).filter(Boolean).join(' '); - }).join(','); - } - else { - val = val.join(' '); - } - props.push(`\t${keys.join('-')}: ${val};\n`); - } - else if (val.constructor === Object) { - for (let suffix in val) { - addProp([...keys, kebab(suffix)], val[suffix]); - } - } - else { - props.push(`\t${keys.join('-')}: ${val};\n`); - } - }; - addProp([kebab(key)], config[key]); - } - else if (/^[A-Z]/.test(key)) { - make_class(prefix, [...path, key.toLowerCase()], config[key]); - } - else if (key[0] === '$') { - make_class(selector(prefix, path) + ' :where([' + $mol_dom_qname(key) + '])', [], config[key]); - } - else if (key === '>') { - const types = config[key]; - for (let type in types) { - make_class(selector(prefix, path) + ' > :where([' + $mol_dom_qname(type) + '])', [], types[type]); - } - } - else if (key === '@') { - const attrs = config[key]; - for (let name in attrs) { - for (let val in attrs[name]) { - make_class(selector(prefix, path) + ':where([' + name + '=' + JSON.stringify(val) + '])', [], attrs[name][val]); - } - } - } - else if (key === '@media') { - const media = config[key]; - for (let query in media) { - rules.push('}\n'); - make_class(prefix, path, media[query]); - rules.push(`${key} ${query} {\n`); - } - } - else if (key[0] === '[' && key[key.length - 1] === ']') { - const attr = key.slice(1, -1); - const vals = config[key]; - for (let val in vals) { - make_class(selector(prefix, path) + ':where([' + attr + '=' + JSON.stringify(val) + '])', [], vals[val]); - } - } - else { - make_class(selector(prefix, path) + key, [], config[key]); - } - } - if (props.length) { - rules.push(`${selector(prefix, path)} {\n${props.reverse().join('')}}\n`); - } - }; - make_class('', [], config0); - return rules.reverse().join(''); - } - $.$mol_style_sheet = $mol_style_sheet; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_style_define(Component, config) { - return $mol_style_attach(Component.name, $mol_style_sheet(Component, config)); - } - $.$mol_style_define = $mol_style_define; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_scroll extends $.$mol_scroll { - scroll_top(next, cache) { - const el = this.dom_node(); - if (next !== undefined && !cache) - el.scrollTop = next; - return el.scrollTop; - } - scroll_left(next, cache) { - const el = this.dom_node(); - if (next !== undefined && !cache) - el.scrollLeft = next; - return el.scrollLeft; - } - event_scroll(next) { - const el = this.dom_node(); - this.scroll_left(el.scrollLeft, 'cache'); - this.scroll_top(el.scrollTop, 'cache'); - } - minimal_height() { - return this.$.$mol_print.active() ? null : 0; - } - minimal_width() { - return this.$.$mol_print.active() ? null : 0; - } - } - __decorate([ - $mol_mem - ], $mol_scroll.prototype, "scroll_top", null); - __decorate([ - $mol_mem - ], $mol_scroll.prototype, "scroll_left", null); - $$.$mol_scroll = $mol_scroll; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { per, rem, px } = $mol_style_unit; - $mol_style_define($mol_scroll, { - display: 'grid', - overflow: 'auto', - flex: { - direction: 'column', - grow: 1, - shrink: 1, - }, - outline: 'none', - align: { - self: 'stretch', - items: 'flex-start', - }, - boxSizing: 'border-box', - willChange: 'scroll-position', - scroll: { - padding: [rem(.75), 0], - }, - maxHeight: per(100), - maxWidth: per(100), - webkitOverflowScrolling: 'touch', - contain: 'content', - '>': { - $mol_view: { - gridArea: '1/1', - }, - }, - '::before': { - display: 'none', - }, - '::after': { - display: 'none', - }, - '::-webkit-scrollbar': { - width: rem(.25), - height: rem(.25), - }, - '@media': { - 'print': { - overflow: 'hidden', - contain: 'none', - maxHeight: 'unset', - }, - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_book2) = class $mol_book2 extends ($.$mol_scroll) { - pages(){ - return []; - } - menu_title(){ - return ""; - } - sub(){ - return (this.pages()); - } - minimal_width(){ - return 0; - } - Placeholder(){ - const obj = new this.$.$mol_view(); - return obj; - } - Gap(id){ - const obj = new this.$.$mol_view(); - (obj.title) = () => (""); - return obj; - } - }; - ($mol_mem(($.$mol_book2.prototype), "Placeholder")); - ($mol_mem_key(($.$mol_book2.prototype), "Gap")); - - -; -"use strict"; -var $; -(function ($) { - $.$mol_layer = $mol_style_prop('mol_layer', [ - 'hover', - 'focus', - 'speck', - 'float', - 'popup', - ]); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/layer/layer.css", ":root {\n\t--mol_layer_hover: 1;\n\t--mol_layer_focus: 2;\n\t--mol_layer_speck: 3;\n\t--mol_layer_float: 4;\n\t--mol_layer_popup: 5;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_book2 extends $.$mol_book2 { - title() { - return this.pages().map(page => { - try { - return page?.title(); - } - catch (error) { - $mol_fail_log(error); - } - }).reverse().filter(Boolean).join(' | '); - } - menu_title() { - return this.pages()[0]?.title() || this.title(); - } - sub() { - const placeholder = this.Placeholder(); - const next = [...this.pages(), placeholder]; - const prev = $mol_mem_cached(() => this.sub()) ?? []; - for (let i = 1; i++;) { - const p = prev[prev.length - i]; - const n = next[next.length - i]; - if (!n) - break; - if (p === n) - continue; - if (n === placeholder) - continue; - new this.$.$mol_after_tick(() => { - const b = this.dom_node(); - const p = n.dom_node(); - b.scroll({ - left: p.offsetLeft + p.offsetWidth - b.offsetWidth, - behavior: 'smooth', - }); - }); - break; - } - return next; - } - bring() { - const pages = this.pages(); - if (pages.length) - pages[pages.length - 1].bring(); - else - super.bring(); - } - } - __decorate([ - $mol_mem - ], $mol_book2.prototype, "sub", null); - $$.$mol_book2 = $mol_book2; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/book2/book2.view.css", "[mol_book2] {\n\tdisplay: flex;\n\tflex-flow: row nowrap;\n\talign-items: stretch;\n\tflex: 1 1 auto;\n\talign-self: stretch;\n\tmargin: 0;\n\t/* box-shadow: 0 0 0 1px var(--mol_theme_line); */\n\t/* transform: translateZ(0); */\n\ttransition: none;\n\tscroll-snap-type: x mandatory;\n\t/* padding: 0 1px;\n\tscroll-padding: 0 1px;\n\tgap: 1px; */\n}\n\n[mol_book2] > * {\n/* \tflex: none; */\n\tscroll-snap-stop: always;\n\tscroll-snap-align: end;\n\tposition: relative;\n\tmin-height: 100%;\n\tmax-height: 100%;\n\tmax-width: 100%;\n\tflex-shrink: 0;\n\tbox-shadow: inset 0 0 0 1px var(--mol_theme_field);\n}\n\n[mol_book2] > *:not(:first-of-type):before,\n[mol_book2] > *:not(:last-of-type)::after {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 1.5rem;\n\twidth: 3px;\n\theight: 1rem;\n\tbackground: linear-gradient(\n\t\tto bottom,\n\t\tvar(--mol_theme_focus) 0%,\n\t\tvar(--mol_theme_focus) 14%,\n\t\ttransparent 15%,\n\t\ttransparent 42%,\n\t\tvar(--mol_theme_focus) 43%,\n\t\tvar(--mol_theme_focus) 57%,\n\t\ttransparent 58%,\n\t\ttransparent 85%,\n\t\tvar(--mol_theme_focus) 86%,\n\t\tvar(--mol_theme_focus) 100%\n\t);\n\topacity: .5;\n\tz-index: var(--mol_layer_speck);\n}\n[mol_book2] > *:not(:first-of-type):before {\n\tleft: -1px;\n}\n[mol_book2] > *:not(:last-of-type)::after {\n\tright: -1px;\n}\n\n:where([mol_book2]) > * {\n\tbackground-color: var(--mol_theme_card);\n\t/* box-shadow: 0 0 0 1px var(--mol_theme_back); */\n}\n\n[mol_book2] > [mol_book2] {\n\tdisplay: contents;\n}\n\n[mol_book2] > *:first-child {\n\tscroll-snap-align: start;\n}\n\n[mol_book2] > [mol_view] {\n\ttransform: none; /* prevent content clipping */\n}\n\n[mol_book2_placeholder] {\n\tflex: 1 1 0;\n\tbackground: none;\n}\n\n[mol_book2_gap] {\n\tbackground: none;\n\tflex-grow: 1;\n\tscroll-snap-align: none;\n\tmargin-right: -1px;\n\tbox-shadow: none;\n}\n\n[mol_book2_gap]::before,\n[mol_book2_gap]::after {\n\tdisplay: none;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_link) = class $mol_link extends ($.$mol_view) { - uri_toggle(){ - return ""; - } - hint(){ - return ""; - } - hint_safe(){ - return (this.hint()); - } - target(){ - return "_self"; - } - file_name(){ - return ""; - } - current(){ - return false; - } - relation(){ - return ""; - } - event_click(next){ - if(next !== undefined) return next; - return null; - } - click(next){ - return (this.event_click(next)); - } - uri(){ - return ""; - } - dom_name(){ - return "a"; - } - uri_off(){ - return ""; - } - uri_native(){ - return null; - } - external(){ - return false; - } - attr(){ - return { - ...(super.attr()), - "href": (this.uri_toggle()), - "title": (this.hint_safe()), - "target": (this.target()), - "download": (this.file_name()), - "mol_link_current": (this.current()), - "rel": (this.relation()) - }; - } - sub(){ - return [(this.title())]; - } - arg(){ - return {}; - } - event(){ - return {...(super.event()), "click": (next) => (this.click(next))}; - } - }; - ($mol_mem(($.$mol_link.prototype), "event_click")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_link extends $.$mol_link { - uri_toggle() { - return this.current() ? this.uri_off() : this.uri(); - } - uri() { - return new this.$.$mol_state_arg(this.state_key()).link(this.arg()); - } - uri_off() { - const arg2 = {}; - for (let i in this.arg()) - arg2[i] = null; - return new this.$.$mol_state_arg(this.state_key()).link(arg2); - } - uri_native() { - const base = this.$.$mol_state_arg.href(); - return new URL(this.uri(), base); - } - current() { - const base = this.$.$mol_state_arg.href_normal(); - const target = this.uri_native().toString(); - if (base === target) - return true; - const args = this.arg(); - const keys = Object.keys(args).filter(key => args[key] != null); - if (keys.length === 0) - return false; - for (const key of keys) { - if (this.$.$mol_state_arg.value(key) != args[key]) - return false; - } - return true; - } - file_name() { - return null; - } - minimal_height() { - return Math.max(super.minimal_height(), 24); - } - external() { - return this.uri_native().origin !== $mol_dom_context.location.origin; - } - target() { - return this.external() ? '_blank' : '_self'; - } - hint_safe() { - try { - return this.hint(); - } - catch (error) { - $mol_fail_log(error); - return ''; - } - } - } - __decorate([ - $mol_mem - ], $mol_link.prototype, "uri_toggle", null); - __decorate([ - $mol_mem - ], $mol_link.prototype, "uri", null); - __decorate([ - $mol_mem - ], $mol_link.prototype, "uri_off", null); - __decorate([ - $mol_mem - ], $mol_link.prototype, "uri_native", null); - __decorate([ - $mol_mem - ], $mol_link.prototype, "current", null); - $$.$mol_link = $mol_link; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const { rem } = $mol_style_unit; - $mol_style_define($mol_link, { - textDecoration: 'none', - color: $mol_theme.control, - stroke: 'currentcolor', - cursor: 'pointer', - padding: $mol_gap.text, - boxSizing: 'border-box', - position: 'relative', - minWidth: rem(2.5), - gap: $mol_gap.space, - border: { - radius: $mol_gap.round, - }, - ':hover': { - background: { - color: $mol_theme.hover, - }, - }, - ':focus-visible': { - outline: 'none', - background: { - color: $mol_theme.hover, - }, - }, - ':active': { - color: $mol_theme.focus, - }, - '@': { - mol_link_current: { - 'true': { - color: $mol_theme.current, - textShadow: '0 0', - } - } - }, - }); -})($ || ($ = {})); - -; - ($.$mol_image) = class $mol_image extends ($.$mol_view) { - uri(){ - return ""; - } - loading(){ - return "eager"; - } - decoding(){ - return "async"; - } - cors(){ - return null; - } - natural_width(){ - return 0; - } - natural_height(){ - return 0; - } - load(next){ - if(next !== undefined) return next; - return null; - } - dom_name(){ - return "img"; - } - field(){ - return { - ...(super.field()), - "src": (this.uri()), - "alt": (this.title()), - "loading": (this.loading()), - "decoding": (this.decoding()), - "crossOrigin": (this.cors()) - }; - } - attr(){ - return { - ...(super.attr()), - "width": (this.natural_width()), - "height": (this.natural_height()) - }; - } - event(){ - return {"load": (next) => (this.load(next))}; - } - minimal_width(){ - return 16; - } - minimal_height(){ - return 16; - } - }; - ($mol_mem(($.$mol_image.prototype), "load")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_image extends $.$mol_image { - natural_width(next) { - const dom = this.dom_node(); - if (dom.naturalWidth) - return dom.naturalWidth; - const found = this.uri().match(/\bwidth=(\d+)/); - return found ? Number(found[1]) : null; - } - natural_height(next) { - const dom = this.dom_node(); - if (dom.naturalHeight) - return dom.naturalHeight; - const found = this.uri().match(/\bheight=(\d+)/); - return found ? Number(found[1]) : null; - } - load() { - this.natural_width(null); - this.natural_height(null); - } - } - __decorate([ - $mol_mem - ], $mol_image.prototype, "natural_width", null); - __decorate([ - $mol_mem - ], $mol_image.prototype, "natural_height", null); - $$.$mol_image = $mol_image; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/image/image.view.css", "[mol_image] {\n\tborder-radius: var(--mol_gap_round);\n\toverflow: hidden;\n\tflex: 0 1 auto;\n\tmax-width: 100%;\n\tobject-fit: cover;\n\theight: fit-content;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_link_iconed) = class $mol_link_iconed extends ($.$mol_link) { - icon(){ - return ""; - } - Icon(){ - const obj = new this.$.$mol_image(); - (obj.uri) = () => ((this.icon())); - (obj.title) = () => (""); - return obj; - } - title(){ - return (this.uri()); - } - sub(){ - return [(this.Icon())]; - } - content(){ - return [(this.title())]; - } - host(){ - return ""; - } - }; - ($mol_mem(($.$mol_link_iconed.prototype), "Icon")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_link_iconed extends $.$mol_link_iconed { - icon() { - return `https://favicon.yandex.net/favicon/${this.host()}?color=0,0,0,0&size=32&stub=1`; - } - host() { - const base = this.$.$mol_state_arg.href(); - const url = new URL(this.uri(), base); - return url.hostname; - } - title() { - const uri = this.uri(); - const host = this.host(); - const suffix = (host ? uri.split(this.host(), 2)[1] : uri)?.replace(/^[\/\?#!]+/, ''); - return decodeURIComponent(suffix || host).replace(/^\//, ' '); - } - sub() { - return [ - ...this.host() ? [this.Icon()] : [], - ...this.content() ? [' ', ...this.content()] : [], - ]; - } - } - __decorate([ - $mol_mem - ], $mol_link_iconed.prototype, "icon", null); - __decorate([ - $mol_mem - ], $mol_link_iconed.prototype, "host", null); - __decorate([ - $mol_mem - ], $mol_link_iconed.prototype, "title", null); - __decorate([ - $mol_mem - ], $mol_link_iconed.prototype, "sub", null); - $$.$mol_link_iconed = $mol_link_iconed; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/link/iconed/iconed.view.css", "[mol_link_iconed] {\n\talign-items: baseline;\n\tdisplay: inline-flex;\n\tpadding: var(--mol_gap_text);\n}\n\n[mol_link_iconed_icon] {\n\tbox-shadow: none;\n\theight: 1.5em;\n\twidth: 1em;\n\tflex: 0 0 auto;\n\tdisplay: inline-block;\n\talign-self: normal;\n\tvertical-align: top;\n\tborder-radius: 0;\n\tobject-fit: scale-down;\n\topacity: .75;\n}\n\n[mol_theme=\"$mol_theme_dark\"] [mol_link_iconed_icon] {\n\tfilter: var(--mol_theme_image);\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_speck) = class $mol_speck extends ($.$mol_view) { - theme(){ - return "$mol_theme_accent"; - } - value(){ - return null; - } - attr(){ - return {...(super.attr()), "mol_theme": (this.theme())}; - } - style(){ - return {...(super.style()), "minHeight": "1em"}; - } - sub(){ - return [(this.value())]; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/speck/speck.view.css", "[mol_speck] {\n\tfont-size: .625rem;\n\tborder-radius: 1rem;\n\tmargin: -0.5rem -0.25rem;\n\talign-self: flex-start;\n\tmin-height: 1em;\n\tmin-width: .5em;\n\tvertical-align: sub;\n\tpadding: .25em .5em;\n\tposition: absolute;\n\tz-index: var(--mol_layer_speck);\n\ttext-align: center;\n\tline-height: 1;\n\tdisplay: inline-block;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\tuser-select: none;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_button) = class $mol_button extends ($.$mol_view) { - event_activate(next){ - if(next !== undefined) return next; - return null; - } - clicks(next){ - if(next !== undefined) return next; - return null; - } - event_key_press(next){ - if(next !== undefined) return next; - return null; - } - disabled(){ - return false; - } - tab_index(){ - return 0; - } - hint(){ - return ""; - } - hint_safe(){ - return (this.hint()); - } - error(){ - return ""; - } - enabled(){ - return true; - } - click(next){ - if(next !== undefined) return next; - return null; - } - event_click(next){ - if(next !== undefined) return next; - return null; - } - event(){ - return { - ...(super.event()), - "click": (next) => (this.event_activate(next)), - "dblclick": (next) => (this.clicks(next)), - "keydown": (next) => (this.event_key_press(next)) - }; - } - attr(){ - return { - ...(super.attr()), - "disabled": (this.disabled()), - "role": "button", - "tabindex": (this.tab_index()), - "title": (this.hint_safe()) - }; - } - sub(){ - return [(this.title())]; - } - Speck(){ - const obj = new this.$.$mol_speck(); - (obj.value) = () => ((this.error())); - return obj; - } - }; - ($mol_mem(($.$mol_button.prototype), "event_activate")); - ($mol_mem(($.$mol_button.prototype), "clicks")); - ($mol_mem(($.$mol_button.prototype), "event_key_press")); - ($mol_mem(($.$mol_button.prototype), "click")); - ($mol_mem(($.$mol_button.prototype), "event_click")); - ($mol_mem(($.$mol_button.prototype), "Speck")); - - -; -"use strict"; -var $; -(function ($) { - let $mol_keyboard_code; - (function ($mol_keyboard_code) { - $mol_keyboard_code[$mol_keyboard_code["backspace"] = 8] = "backspace"; - $mol_keyboard_code[$mol_keyboard_code["tab"] = 9] = "tab"; - $mol_keyboard_code[$mol_keyboard_code["enter"] = 13] = "enter"; - $mol_keyboard_code[$mol_keyboard_code["shift"] = 16] = "shift"; - $mol_keyboard_code[$mol_keyboard_code["ctrl"] = 17] = "ctrl"; - $mol_keyboard_code[$mol_keyboard_code["alt"] = 18] = "alt"; - $mol_keyboard_code[$mol_keyboard_code["pause"] = 19] = "pause"; - $mol_keyboard_code[$mol_keyboard_code["capsLock"] = 20] = "capsLock"; - $mol_keyboard_code[$mol_keyboard_code["escape"] = 27] = "escape"; - $mol_keyboard_code[$mol_keyboard_code["space"] = 32] = "space"; - $mol_keyboard_code[$mol_keyboard_code["pageUp"] = 33] = "pageUp"; - $mol_keyboard_code[$mol_keyboard_code["pageDown"] = 34] = "pageDown"; - $mol_keyboard_code[$mol_keyboard_code["end"] = 35] = "end"; - $mol_keyboard_code[$mol_keyboard_code["home"] = 36] = "home"; - $mol_keyboard_code[$mol_keyboard_code["left"] = 37] = "left"; - $mol_keyboard_code[$mol_keyboard_code["up"] = 38] = "up"; - $mol_keyboard_code[$mol_keyboard_code["right"] = 39] = "right"; - $mol_keyboard_code[$mol_keyboard_code["down"] = 40] = "down"; - $mol_keyboard_code[$mol_keyboard_code["insert"] = 45] = "insert"; - $mol_keyboard_code[$mol_keyboard_code["delete"] = 46] = "delete"; - $mol_keyboard_code[$mol_keyboard_code["key0"] = 48] = "key0"; - $mol_keyboard_code[$mol_keyboard_code["key1"] = 49] = "key1"; - $mol_keyboard_code[$mol_keyboard_code["key2"] = 50] = "key2"; - $mol_keyboard_code[$mol_keyboard_code["key3"] = 51] = "key3"; - $mol_keyboard_code[$mol_keyboard_code["key4"] = 52] = "key4"; - $mol_keyboard_code[$mol_keyboard_code["key5"] = 53] = "key5"; - $mol_keyboard_code[$mol_keyboard_code["key6"] = 54] = "key6"; - $mol_keyboard_code[$mol_keyboard_code["key7"] = 55] = "key7"; - $mol_keyboard_code[$mol_keyboard_code["key8"] = 56] = "key8"; - $mol_keyboard_code[$mol_keyboard_code["key9"] = 57] = "key9"; - $mol_keyboard_code[$mol_keyboard_code["A"] = 65] = "A"; - $mol_keyboard_code[$mol_keyboard_code["B"] = 66] = "B"; - $mol_keyboard_code[$mol_keyboard_code["C"] = 67] = "C"; - $mol_keyboard_code[$mol_keyboard_code["D"] = 68] = "D"; - $mol_keyboard_code[$mol_keyboard_code["E"] = 69] = "E"; - $mol_keyboard_code[$mol_keyboard_code["F"] = 70] = "F"; - $mol_keyboard_code[$mol_keyboard_code["G"] = 71] = "G"; - $mol_keyboard_code[$mol_keyboard_code["H"] = 72] = "H"; - $mol_keyboard_code[$mol_keyboard_code["I"] = 73] = "I"; - $mol_keyboard_code[$mol_keyboard_code["J"] = 74] = "J"; - $mol_keyboard_code[$mol_keyboard_code["K"] = 75] = "K"; - $mol_keyboard_code[$mol_keyboard_code["L"] = 76] = "L"; - $mol_keyboard_code[$mol_keyboard_code["M"] = 77] = "M"; - $mol_keyboard_code[$mol_keyboard_code["N"] = 78] = "N"; - $mol_keyboard_code[$mol_keyboard_code["O"] = 79] = "O"; - $mol_keyboard_code[$mol_keyboard_code["P"] = 80] = "P"; - $mol_keyboard_code[$mol_keyboard_code["Q"] = 81] = "Q"; - $mol_keyboard_code[$mol_keyboard_code["R"] = 82] = "R"; - $mol_keyboard_code[$mol_keyboard_code["S"] = 83] = "S"; - $mol_keyboard_code[$mol_keyboard_code["T"] = 84] = "T"; - $mol_keyboard_code[$mol_keyboard_code["U"] = 85] = "U"; - $mol_keyboard_code[$mol_keyboard_code["V"] = 86] = "V"; - $mol_keyboard_code[$mol_keyboard_code["W"] = 87] = "W"; - $mol_keyboard_code[$mol_keyboard_code["X"] = 88] = "X"; - $mol_keyboard_code[$mol_keyboard_code["Y"] = 89] = "Y"; - $mol_keyboard_code[$mol_keyboard_code["Z"] = 90] = "Z"; - $mol_keyboard_code[$mol_keyboard_code["metaLeft"] = 91] = "metaLeft"; - $mol_keyboard_code[$mol_keyboard_code["metaRight"] = 92] = "metaRight"; - $mol_keyboard_code[$mol_keyboard_code["select"] = 93] = "select"; - $mol_keyboard_code[$mol_keyboard_code["numpad0"] = 96] = "numpad0"; - $mol_keyboard_code[$mol_keyboard_code["numpad1"] = 97] = "numpad1"; - $mol_keyboard_code[$mol_keyboard_code["numpad2"] = 98] = "numpad2"; - $mol_keyboard_code[$mol_keyboard_code["numpad3"] = 99] = "numpad3"; - $mol_keyboard_code[$mol_keyboard_code["numpad4"] = 100] = "numpad4"; - $mol_keyboard_code[$mol_keyboard_code["numpad5"] = 101] = "numpad5"; - $mol_keyboard_code[$mol_keyboard_code["numpad6"] = 102] = "numpad6"; - $mol_keyboard_code[$mol_keyboard_code["numpad7"] = 103] = "numpad7"; - $mol_keyboard_code[$mol_keyboard_code["numpad8"] = 104] = "numpad8"; - $mol_keyboard_code[$mol_keyboard_code["numpad9"] = 105] = "numpad9"; - $mol_keyboard_code[$mol_keyboard_code["multiply"] = 106] = "multiply"; - $mol_keyboard_code[$mol_keyboard_code["add"] = 107] = "add"; - $mol_keyboard_code[$mol_keyboard_code["subtract"] = 109] = "subtract"; - $mol_keyboard_code[$mol_keyboard_code["decimal"] = 110] = "decimal"; - $mol_keyboard_code[$mol_keyboard_code["divide"] = 111] = "divide"; - $mol_keyboard_code[$mol_keyboard_code["F1"] = 112] = "F1"; - $mol_keyboard_code[$mol_keyboard_code["F2"] = 113] = "F2"; - $mol_keyboard_code[$mol_keyboard_code["F3"] = 114] = "F3"; - $mol_keyboard_code[$mol_keyboard_code["F4"] = 115] = "F4"; - $mol_keyboard_code[$mol_keyboard_code["F5"] = 116] = "F5"; - $mol_keyboard_code[$mol_keyboard_code["F6"] = 117] = "F6"; - $mol_keyboard_code[$mol_keyboard_code["F7"] = 118] = "F7"; - $mol_keyboard_code[$mol_keyboard_code["F8"] = 119] = "F8"; - $mol_keyboard_code[$mol_keyboard_code["F9"] = 120] = "F9"; - $mol_keyboard_code[$mol_keyboard_code["F10"] = 121] = "F10"; - $mol_keyboard_code[$mol_keyboard_code["F11"] = 122] = "F11"; - $mol_keyboard_code[$mol_keyboard_code["F12"] = 123] = "F12"; - $mol_keyboard_code[$mol_keyboard_code["numLock"] = 144] = "numLock"; - $mol_keyboard_code[$mol_keyboard_code["scrollLock"] = 145] = "scrollLock"; - $mol_keyboard_code[$mol_keyboard_code["semicolon"] = 186] = "semicolon"; - $mol_keyboard_code[$mol_keyboard_code["equals"] = 187] = "equals"; - $mol_keyboard_code[$mol_keyboard_code["comma"] = 188] = "comma"; - $mol_keyboard_code[$mol_keyboard_code["dash"] = 189] = "dash"; - $mol_keyboard_code[$mol_keyboard_code["period"] = 190] = "period"; - $mol_keyboard_code[$mol_keyboard_code["forwardSlash"] = 191] = "forwardSlash"; - $mol_keyboard_code[$mol_keyboard_code["graveAccent"] = 192] = "graveAccent"; - $mol_keyboard_code[$mol_keyboard_code["bracketOpen"] = 219] = "bracketOpen"; - $mol_keyboard_code[$mol_keyboard_code["slashBack"] = 220] = "slashBack"; - $mol_keyboard_code[$mol_keyboard_code["slashBackLeft"] = 226] = "slashBackLeft"; - $mol_keyboard_code[$mol_keyboard_code["bracketClose"] = 221] = "bracketClose"; - $mol_keyboard_code[$mol_keyboard_code["quoteSingle"] = 222] = "quoteSingle"; - })($mol_keyboard_code = $.$mol_keyboard_code || ($.$mol_keyboard_code = {})); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_button extends $.$mol_button { - status(next = [null]) { return next; } - disabled() { - return !this.enabled(); - } - event_activate(next) { - if (!next) - return; - if (!this.enabled()) - return; - try { - this.event_click(next); - this.click(next); - this.status([null]); - } - catch (error) { - Promise.resolve().then(() => this.status([error])); - $mol_fail_hidden(error); - } - } - event_key_press(event) { - if (event.keyCode === $mol_keyboard_code.enter) { - return this.event_activate(event); - } - } - tab_index() { - return this.enabled() ? super.tab_index() : -1; - } - error() { - const [error] = this.status(); - if (!error) - return ''; - if (error instanceof Promise) { - return $mol_fail_hidden(error); - } - return String(error.message ?? error); - } - hint_safe() { - try { - return this.hint(); - } - catch (error) { - $mol_fail_log(error); - return ''; - } - } - sub_visible() { - return [ - ...this.error() ? [this.Speck()] : [], - ...this.sub(), - ]; - } - } - __decorate([ - $mol_mem - ], $mol_button.prototype, "status", null); - $$.$mol_button = $mol_button; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/button/button.view.css", "[mol_button] {\n\tborder: none;\n\tfont: inherit;\n\tdisplay: inline-flex;\n\tflex-shrink: 0;\n\ttext-decoration: inherit;\n\tcursor: inherit;\n\tposition: relative;\n\tbox-sizing: border-box;\n\tword-break: normal;\n\tcursor: default;\n\tuser-select: none;\n\tborder-radius: var(--mol_gap_round);\n\tbackground: transparent;\n\tcolor: inherit;\n}\n\n[mol_button]:where(:not(:disabled)):hover {\n\tz-index: var(--mol_layer_hover);\n}\n\n[mol_button]:focus-visible {\n\toutline: none;\n\tz-index: var(--mol_layer_focus);\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_button_typed) = class $mol_button_typed extends ($.$mol_button) { - minimal_height(){ - return 40; - } - minimal_width(){ - return 40; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/button/typed/typed.view.css", "[mol_button_typed] {\n\talign-content: center;\n\talign-items: center;\n\tpadding: var(--mol_gap_text);\n\tborder-radius: var(--mol_gap_round);\n\tgap: var(--mol_gap_space);\n\tuser-select: none;\n\tcursor: pointer;\n}\n\n[mol_button_typed][disabled] {\n\tpointer-events: none;\n}\n\n[mol_button_typed]:hover ,\n[mol_button_typed]:focus-visible {\n\tbox-shadow: inset 0 0 0 10rem var(--mol_theme_hover);\n}\n\n[mol_button_typed]:active {\n\tcolor: var(--mol_theme_focus);\n}\n\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_button_minor) = class $mol_button_minor extends ($.$mol_button_typed) {}; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/button/minor/minor.view.css", "[mol_button_minor] {\n\tcolor: var(--mol_theme_control);\n}\n\n[mol_button_minor][disabled] {\n\tcolor: var(--mol_theme_shade);\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_check) = class $mol_check extends ($.$mol_button_minor) { - checked(next){ - if(next !== undefined) return next; - return false; - } - aria_checked(){ - return "false"; - } - aria_role(){ - return "checkbox"; - } - Icon(){ - return null; - } - title(){ - return ""; - } - Title(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.title())]); - return obj; - } - label(){ - return [(this.Title())]; - } - attr(){ - return { - ...(super.attr()), - "mol_check_checked": (this.checked()), - "aria-checked": (this.aria_checked()), - "role": (this.aria_role()) - }; - } - sub(){ - return [(this.Icon()), (this.label())]; - } - }; - ($mol_mem(($.$mol_check.prototype), "checked")); - ($mol_mem(($.$mol_check.prototype), "Title")); - - -; -"use strict"; -var $; -(function ($) { - function $mol_maybe(value) { - return (value == null) ? [] : [value]; - } - $.$mol_maybe = $mol_maybe; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/check.css", "[mol_check] {\n\tflex: 0 0 auto;\n\tjustify-content: flex-start;\n\talign-content: center;\n\t/* align-items: flex-start; */\n\tborder: none;\n\tfont-weight: inherit;\n\tbox-shadow: none;\n\ttext-align: left;\n\tdisplay: inline-flex;\n\tflex-wrap: nowrap;\n}\n\n[mol_check_title] {\n\tflex-shrink: 1;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_check extends $.$mol_check { - click(next) { - if (next?.defaultPrevented) - return; - this.checked(!this.checked()); - if (next) - next.preventDefault(); - } - sub() { - return [ - ...$mol_maybe(this.Icon()), - ...this.label(), - ]; - } - label() { - return this.title() ? super.label() : []; - } - aria_checked() { - return String(this.checked()); - } - } - $$.$mol_check = $mol_check; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_check_icon) = class $mol_check_icon extends ($.$mol_check) {}; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/icon/icon.view.css", "[mol_check_icon]:where([mol_check_checked]) {\n\tcolor: var(--mol_theme_current);\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_svg) = class $mol_svg extends ($.$mol_view) { - dom_name(){ - return "svg"; - } - dom_name_space(){ - return "http://www.w3.org/2000/svg"; - } - font_size(){ - return 16; - } - font_family(){ - return ""; - } - style_size(){ - return {}; - } - }; - - -; -"use strict"; -var $; -(function ($) { - class $mol_state_time extends $mol_object { - static task(precision, reset) { - if (precision) { - return new $mol_after_timeout(precision, () => this.task(precision, null)); - } - else { - return new $mol_after_frame(() => this.task(precision, null)); - } - } - static now(precision) { - this.task(precision); - return Date.now(); - } - } - __decorate([ - $mol_mem_key - ], $mol_state_time, "task", null); - __decorate([ - $mol_mem_key - ], $mol_state_time, "now", null); - $.$mol_state_time = $mol_state_time; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_svg extends $.$mol_svg { - computed_style() { - const win = this.$.$mol_dom_context; - const style = win.getComputedStyle(this.dom_node()); - if (!style['font-size']) - $mol_state_time.now(0); - return style; - } - font_size() { - return parseInt(this.computed_style()['font-size']) || 16; - } - font_family() { - return this.computed_style()['font-family']; - } - } - __decorate([ - $mol_mem - ], $mol_svg.prototype, "computed_style", null); - __decorate([ - $mol_mem - ], $mol_svg.prototype, "font_size", null); - __decorate([ - $mol_mem - ], $mol_svg.prototype, "font_family", null); - $$.$mol_svg = $mol_svg; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_svg_root) = class $mol_svg_root extends ($.$mol_svg) { - view_box(){ - return "0 0 100 100"; - } - aspect(){ - return "xMidYMid"; - } - dom_name(){ - return "svg"; - } - attr(){ - return { - ...(super.attr()), - "viewBox": (this.view_box()), - "preserveAspectRatio": (this.aspect()) - }; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/svg/root/root.view.css", "[mol_svg_root] {\n\toverflow: hidden;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_svg_path) = class $mol_svg_path extends ($.$mol_svg) { - geometry(){ - return ""; - } - dom_name(){ - return "path"; - } - attr(){ - return {...(super.attr()), "d": (this.geometry())}; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon) = class $mol_icon extends ($.$mol_svg_root) { - path(){ - return ""; - } - Path(){ - const obj = new this.$.$mol_svg_path(); - (obj.geometry) = () => ((this.path())); - return obj; - } - view_box(){ - return "0 0 24 24"; - } - minimal_width(){ - return 16; - } - minimal_height(){ - return 16; - } - sub(){ - return [(this.Path())]; - } - }; - ($mol_mem(($.$mol_icon.prototype), "Path")); - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/icon/icon.view.css", "[mol_icon] {\n\tfill: currentColor;\n\tstroke: none;\n\twidth: 1em;\n\theight: 1.5em;\n\tflex: 0 0 auto;\n\tvertical-align: top;\n\tdisplay: inline-block;\n\tfilter: drop-shadow(0px 1px 1px var(--mol_theme_back));\n\ttransform-origin: center;\n}\n\n[mol_icon_path] {\n\ttransform-origin: center;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_icon_brightness_4) = class $mol_icon_brightness_4 extends ($.$mol_icon) { - path(){ - return "M12,18C11.11,18 10.26,17.8 9.5,17.45C11.56,16.5 13,14.42 13,12C13,9.58 11.56,7.5 9.5,6.55C10.26,6.2 11.11,6 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z"; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - class $mol_locale extends $mol_object { - static lang_default() { - return 'en'; - } - static lang(next) { - return this.$.$mol_state_local.value('locale', next) || $mol_dom_context.navigator.language.replace(/-.*/, '') || this.lang_default(); - } - static source(lang) { - return JSON.parse(this.$.$mol_file.relative(`web.locale=${lang}.json`).text().toString()); - } - static texts(lang, next) { - if (next) - return next; - try { - return this.source(lang).valueOf(); - } - catch (error) { - if ($mol_fail_catch(error)) { - const def = this.lang_default(); - if (lang === def) - throw error; - } - } - return {}; - } - static text(key) { - const lang = this.lang(); - const target = this.texts(lang)[key]; - if (target) - return target; - this.warn(key); - const en = this.texts('en')[key]; - if (!en) - return key; - return en; - } - static warn(key) { - console.warn(`Not translated to "${this.lang()}": ${key}`); - return null; - } - } - __decorate([ - $mol_mem - ], $mol_locale, "lang_default", null); - __decorate([ - $mol_mem - ], $mol_locale, "lang", null); - __decorate([ - $mol_mem_key - ], $mol_locale, "source", null); - __decorate([ - $mol_mem_key - ], $mol_locale, "texts", null); - __decorate([ - $mol_mem_key - ], $mol_locale, "text", null); - __decorate([ - $mol_mem_key - ], $mol_locale, "warn", null); - $.$mol_locale = $mol_locale; -})($ || ($ = {})); - -; - ($.$mol_lights_toggle) = class $mol_lights_toggle extends ($.$mol_check_icon) { - Lights_icon(){ - const obj = new this.$.$mol_icon_brightness_4(); - return obj; - } - lights(next){ - if(next !== undefined) return next; - return false; - } - Icon(){ - return (this.Lights_icon()); - } - hint(){ - return (this.$.$mol_locale.text("$mol_lights_toggle_hint")); - } - checked(next){ - return (this.lights(next)); - } - }; - ($mol_mem(($.$mol_lights_toggle.prototype), "Lights_icon")); - ($mol_mem(($.$mol_lights_toggle.prototype), "lights")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_lights_toggle extends $.$mol_lights_toggle { - lights(next) { - return this.$.$mol_lights(next); - } - } - $$.$mol_lights_toggle = $mol_lights_toggle; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_icon_upload) = class $mol_icon_upload extends ($.$mol_icon) { - path(){ - return "M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_button_open) = class $mol_button_open extends ($.$mol_button_minor) { - Icon(){ - const obj = new this.$.$mol_icon_upload(); - return obj; - } - files(next){ - if(next !== undefined) return next; - return []; - } - accept(){ - return ""; - } - multiple(){ - return true; - } - Native(){ - const obj = new this.$.$mol_button_open_native(); - (obj.files) = (next) => ((this.files(next))); - (obj.accept) = () => ((this.accept())); - (obj.multiple) = () => ((this.multiple())); - return obj; - } - sub(){ - return [(this.Icon()), (this.Native())]; - } - }; - ($mol_mem(($.$mol_button_open.prototype), "Icon")); - ($mol_mem(($.$mol_button_open.prototype), "files")); - ($mol_mem(($.$mol_button_open.prototype), "Native")); - ($.$mol_button_open_native) = class $mol_button_open_native extends ($.$mol_view) { - accept(){ - return ""; - } - multiple(){ - return true; - } - picked(next){ - if(next !== undefined) return next; - return null; - } - dom_name(){ - return "input"; - } - files(next){ - if(next !== undefined) return next; - return []; - } - attr(){ - return { - "type": "file", - "accept": (this.accept()), - "multiple": (this.multiple()) - }; - } - event(){ - return {"change": (next) => (this.picked(next))}; - } - }; - ($mol_mem(($.$mol_button_open_native.prototype), "picked")); - ($mol_mem(($.$mol_button_open_native.prototype), "files")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_button_open_native extends $.$mol_button_open_native { - dom_node() { - return super.dom_node(); - } - picked() { - const files = this.dom_node().files; - if (!files || !files.length) - return; - this.files([...files]); - } - } - $$.$mol_button_open_native = $mol_button_open_native; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/button/open/open.view.css", "[mol_button_open_native] {\n\tposition: absolute;\n\tleft: 0;\n\ttop: -100%;\n\twidth: 100%;\n\theight: 200%;\n\tcursor: pointer;\n\topacity: 0;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_stack) = class $mol_stack extends ($.$mol_view) {}; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/stack/stack.view.css", "[mol_stack] {\n\tdisplay: grid;\n\t/* width: max-content; */\n\t/* height: max-content; */\n\talign-items: flex-start;\n\tjustify-items: flex-start;\n}\n\n[mol_stack] > * {\n\tgrid-area: 1/1;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - class $mol_syntax2 { - lexems; - constructor(lexems) { - this.lexems = lexems; - for (let name in lexems) { - this.rules.push({ - name: name, - regExp: lexems[name], - size: RegExp('^$|' + lexems[name].source).exec('').length - 1, - }); - } - const parts = '(' + this.rules.map(rule => rule.regExp.source).join(')|(') + ')'; - this.regexp = RegExp(`([\\s\\S]*?)(?:(${parts})|$(?![^]))`, 'gmu'); - } - rules = []; - regexp; - tokenize(text, handle) { - let end = 0; - lexing: while (end < text.length) { - const start = end; - this.regexp.lastIndex = start; - var found = this.regexp.exec(text); - end = this.regexp.lastIndex; - if (start === end) - throw new Error('Empty token'); - var prefix = found[1]; - if (prefix) - handle('', prefix, [prefix], start); - var suffix = found[2]; - if (!suffix) - continue; - let offset = 4; - for (let rule of this.rules) { - if (found[offset - 1]) { - handle(rule.name, suffix, found.slice(offset, offset + rule.size), start + prefix.length); - continue lexing; - } - offset += rule.size + 1; - } - $mol_fail(new Error('$mol_syntax2 is broken')); - } - } - parse(text, handlers) { - this.tokenize(text, (name, ...args) => handlers[name](...args)); - } - } - $.$mol_syntax2 = $mol_syntax2; -})($ || ($ = {})); - -; - ($.$mol_paragraph) = class $mol_paragraph extends ($.$mol_view) { - line_height(){ - return 24; - } - letter_width(){ - return 7; - } - width_limit(){ - return +Infinity; - } - row_width(){ - return 0; - } - sub(){ - return [(this.title())]; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_paragraph extends $.$mol_paragraph { - maximal_width() { - let width = 0; - const letter = this.letter_width(); - for (const kid of this.sub()) { - if (!kid) - continue; - if (kid instanceof $mol_view) { - width += kid.maximal_width(); - } - else if (typeof kid !== 'object') { - width += String(kid).length * letter; - } - } - return width; - } - width_limit() { - return this.$.$mol_window.size().width; - } - minimal_width() { - return this.letter_width(); - } - row_width() { - return Math.max(Math.min(this.width_limit(), this.maximal_width()), this.letter_width()); - } - minimal_height() { - return Math.max(1, Math.ceil(this.maximal_width() / this.row_width())) * this.line_height(); - } - } - __decorate([ - $mol_mem - ], $mol_paragraph.prototype, "maximal_width", null); - __decorate([ - $mol_mem - ], $mol_paragraph.prototype, "row_width", null); - __decorate([ - $mol_mem - ], $mol_paragraph.prototype, "minimal_height", null); - $$.$mol_paragraph = $mol_paragraph; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/paragraph/paragraph.view.css", ":where([mol_paragraph]) {\n\tmargin: 0;\n\tmax-width: 100%;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_dimmer) = class $mol_dimmer extends ($.$mol_paragraph) { - parts(){ - return []; - } - string(id){ - return ""; - } - haystack(){ - return ""; - } - needle(){ - return ""; - } - sub(){ - return (this.parts()); - } - Low(id){ - const obj = new this.$.$mol_paragraph(); - (obj.sub) = () => ([(this.string(id))]); - return obj; - } - High(id){ - const obj = new this.$.$mol_paragraph(); - (obj.sub) = () => ([(this.string(id))]); - return obj; - } - }; - ($mol_mem_key(($.$mol_dimmer.prototype), "Low")); - ($mol_mem_key(($.$mol_dimmer.prototype), "High")); - - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - class $mol_regexp extends RegExp { - groups; - constructor(source, flags = 'gsu', groups = []) { - super(source, flags); - this.groups = groups; - } - *[Symbol.matchAll](str) { - const index = this.lastIndex; - this.lastIndex = 0; - try { - while (this.lastIndex < str.length) { - const found = this.exec(str); - if (!found) - break; - yield found; - } - } - finally { - this.lastIndex = index; - } - } - [Symbol.match](str) { - const res = [...this[Symbol.matchAll](str)].filter(r => r.groups).map(r => r[0]); - if (!res.length) - return null; - return res; - } - [Symbol.split](str) { - const res = []; - let token_last = null; - for (let token of this[Symbol.matchAll](str)) { - if (token.groups && (token_last ? token_last.groups : true)) - res.push(''); - res.push(token[0]); - token_last = token; - } - if (!res.length) - res.push(''); - return res; - } - test(str) { - return Boolean(str.match(this)); - } - exec(str) { - const from = this.lastIndex; - if (from >= str.length) - return null; - const res = super.exec(str); - if (res === null) { - this.lastIndex = str.length; - if (!str) - return null; - return Object.assign([str.slice(from)], { - index: from, - input: str, - }); - } - if (from === this.lastIndex) { - $mol_fail(new Error('Captured empty substring')); - } - const groups = {}; - const skipped = str.slice(from, this.lastIndex - res[0].length); - if (skipped) { - this.lastIndex = this.lastIndex - res[0].length; - return Object.assign([skipped], { - index: from, - input: res.input, - }); - } - for (let i = 0; i < this.groups.length; ++i) { - const group = this.groups[i]; - groups[group] = groups[group] || res[i + 1] || ''; - } - return Object.assign(res, { groups }); - } - generate(params) { - return null; - } - get native() { - return new RegExp(this.source, this.flags); - } - static repeat(source, min = 0, max = Number.POSITIVE_INFINITY) { - const regexp = $mol_regexp.from(source); - const upper = Number.isFinite(max) ? max : ''; - const str = `(?:${regexp.source}){${min},${upper}}?`; - const regexp2 = new $mol_regexp(str, regexp.flags, regexp.groups); - regexp2.generate = params => { - const res = regexp.generate(params); - if (res) - return res; - if (min > 0) - return res; - return ''; - }; - return regexp2; - } - static repeat_greedy(source, min = 0, max = Number.POSITIVE_INFINITY) { - const regexp = $mol_regexp.from(source); - const upper = Number.isFinite(max) ? max : ''; - const str = `(?:${regexp.source}){${min},${upper}}`; - const regexp2 = new $mol_regexp(str, regexp.flags, regexp.groups); - regexp2.generate = params => { - const res = regexp.generate(params); - if (res) - return res; - if (min > 0) - return res; - return ''; - }; - return regexp2; - } - static vary(sources) { - const groups = []; - const chunks = sources.map(source => { - const regexp = $mol_regexp.from(source); - groups.push(...regexp.groups); - return regexp.source; - }); - return new $mol_regexp(`(?:${chunks.join('|')})`, '', groups); - } - static optional(source) { - return $mol_regexp.repeat_greedy(source, 0, 1); - } - static force_after(source) { - const regexp = $mol_regexp.from(source); - return new $mol_regexp(`(?=${regexp.source})`, regexp.flags, regexp.groups); - } - static forbid_after(source) { - const regexp = $mol_regexp.from(source); - return new $mol_regexp(`(?!${regexp.source})`, regexp.flags, regexp.groups); - } - static from(source, { ignoreCase, multiline } = { - ignoreCase: false, - multiline: false, - }) { - let flags = 'gsu'; - if (multiline) - flags += 'm'; - if (ignoreCase) - flags += 'i'; - if (typeof source === 'number') { - const src = `\\u{${source.toString(16)}}`; - const regexp = new $mol_regexp(src, flags); - regexp.generate = () => src; - return regexp; - } - if (typeof source === 'string') { - const src = source.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - const regexp = new $mol_regexp(src, flags); - regexp.generate = () => source; - return regexp; - } - else if (source instanceof $mol_regexp) { - const regexp = new $mol_regexp(source.source, flags, source.groups); - regexp.generate = params => source.generate(params); - return regexp; - } - if (source instanceof RegExp) { - const test = new RegExp('|' + source.source); - const groups = Array.from({ length: test.exec('').length - 1 }, (_, i) => String(i + 1)); - const regexp = new $mol_regexp(source.source, source.flags, groups); - regexp.generate = () => ''; - return regexp; - } - if (Array.isArray(source)) { - const patterns = source.map(src => Array.isArray(src) - ? $mol_regexp.optional(src) - : $mol_regexp.from(src)); - const chunks = patterns.map(pattern => pattern.source); - const groups = []; - let index = 0; - for (const pattern of patterns) { - for (let group of pattern.groups) { - if (Number(group) >= 0) { - groups.push(String(index++)); - } - else { - groups.push(group); - } - } - } - const regexp = new $mol_regexp(chunks.join(''), flags, groups); - regexp.generate = params => { - let res = ''; - for (const pattern of patterns) { - let sub = pattern.generate(params); - if (sub === null) - return ''; - res += sub; - } - return res; - }; - return regexp; - } - else { - const groups = []; - const chunks = Object.keys(source).map(name => { - groups.push(name); - const regexp = $mol_regexp.from(source[name]); - groups.push(...regexp.groups); - return `(${regexp.source})`; - }); - const regexp = new $mol_regexp(`(?:${chunks.join('|')})`, flags, groups); - const validator = new RegExp('^' + regexp.source + '$', flags); - regexp.generate = (params) => { - for (let option in source) { - if (option in params) { - if (typeof params[option] === 'boolean') { - if (!params[option]) - continue; - } - else { - const str = String(params[option]); - if (str.match(validator)) - return str; - $mol_fail(new Error(`Wrong param: ${option}=${str}`)); - } - } - else { - if (typeof source[option] !== 'object') - continue; - } - const res = $mol_regexp.from(source[option]).generate(params); - if (res) - return res; - } - return null; - }; - return regexp; - } - } - static unicode_only(...category) { - return new $mol_regexp(`\\p{${category.join('=')}}`); - } - static unicode_except(...category) { - return new $mol_regexp(`\\P{${category.join('=')}}`); - } - static char_range(from, to) { - return new $mol_regexp(`${$mol_regexp.from(from).source}-${$mol_regexp.from(to).source}`); - } - static char_only(...allowed) { - const regexp = allowed.map(f => $mol_regexp.from(f).source).join(''); - return new $mol_regexp(`[${regexp}]`); - } - static char_except(...forbidden) { - const regexp = forbidden.map(f => $mol_regexp.from(f).source).join(''); - return new $mol_regexp(`[^${regexp}]`); - } - static decimal_only = $mol_regexp.from(/\d/gsu); - static decimal_except = $mol_regexp.from(/\D/gsu); - static latin_only = $mol_regexp.from(/\w/gsu); - static latin_except = $mol_regexp.from(/\W/gsu); - static space_only = $mol_regexp.from(/\s/gsu); - static space_except = $mol_regexp.from(/\S/gsu); - static word_break_only = $mol_regexp.from(/\b/gsu); - static word_break_except = $mol_regexp.from(/\B/gsu); - static tab = $mol_regexp.from(/\t/gsu); - static slash_back = $mol_regexp.from(/\\/gsu); - static nul = $mol_regexp.from(/\0/gsu); - static char_any = $mol_regexp.from(/./gsu); - static begin = $mol_regexp.from(/^/gsu); - static end = $mol_regexp.from(/$/gsu); - static or = $mol_regexp.from(/|/gsu); - static line_end = $mol_regexp.from({ - win_end: [['\r'], '\n'], - mac_end: '\r', - }); - } - $.$mol_regexp = $mol_regexp; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_dimmer extends $.$mol_dimmer { - parts() { - const needle = this.needle(); - if (needle.length < 2) - return [this.haystack()]; - let chunks = []; - let strings = this.strings(); - for (let index = 0; index < strings.length; index++) { - if (strings[index] === '') - continue; - chunks.push((index % 2) ? this.High(index) : this.Low(index)); - } - return chunks; - } - strings() { - const options = this.needle().split(/\s+/g).filter(Boolean); - if (!options.length) - return [this.haystack()]; - const variants = { ...options }; - const regexp = $mol_regexp.from({ needle: variants }, { ignoreCase: true }); - return this.haystack().split(regexp); - } - string(index) { - return this.strings()[index]; - } - *view_find(check, path = []) { - if (check(this, this.haystack())) { - yield [...path, this]; - } - } - } - __decorate([ - $mol_mem - ], $mol_dimmer.prototype, "strings", null); - $$.$mol_dimmer = $mol_dimmer; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/dimmer/dimmer.view.css", "[mol_dimmer] {\n\tdisplay: block;\n\tmax-width: 100%;\n}\n\n[mol_dimmer_low] {\n\tdisplay: inline;\n\topacity: 0.8;\n}\n\n[mol_dimmer_high] {\n\tdisplay: inline;\n\tcolor: var(--mol_theme_focus);\n\ttext-shadow: 0 0;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_text_code_token) = class $mol_text_code_token extends ($.$mol_dimmer) { - type(){ - return ""; - } - attr(){ - return {...(super.attr()), "mol_text_code_token_type": (this.type())}; - } - }; - ($.$mol_text_code_token_link) = class $mol_text_code_token_link extends ($.$mol_text_code_token) { - uri(){ - return ""; - } - dom_name(){ - return "a"; - } - type(){ - return "code-link"; - } - attr(){ - return { - ...(super.attr()), - "href": (this.uri()), - "target": "_blank" - }; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { hsla } = $mol_style_func; - $mol_style_define($mol_text_code_token, { - display: 'inline', - textDecoration: 'none', - '@': { - mol_text_code_token_type: { - 'code-keyword': { - color: hsla(0, 70, 60, 1), - }, - 'code-field': { - color: hsla(300, 70, 50, 1), - }, - 'code-tag': { - color: hsla(330, 70, 50, 1), - }, - 'code-global': { - color: hsla(30, 80, 50, 1), - }, - 'code-decorator': { - color: hsla(180, 40, 50, 1), - }, - 'code-punctuation': { - color: hsla(0, 0, 50, 1), - }, - 'code-string': { - color: hsla(90, 40, 50, 1), - }, - 'code-number': { - color: hsla(55, 65, 45, 1), - }, - 'code-call': { - color: hsla(270, 60, 50, 1), - }, - 'code-link': { - color: hsla(210, 60, 50, 1), - }, - 'code-comment-inline': { - opacity: .5, - }, - 'code-comment-block': { - opacity: .5, - }, - 'code-docs': { - opacity: .75, - }, - }, - } - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_text_code_line) = class $mol_text_code_line extends ($.$mol_paragraph) { - numb(){ - return 0; - } - token_type(id){ - return ""; - } - token_text(id){ - return ""; - } - highlight(){ - return ""; - } - token_uri(id){ - return ""; - } - text(){ - return ""; - } - minimal_height(){ - return 24; - } - numb_showed(){ - return true; - } - syntax(){ - return null; - } - uri_resolve(id){ - return ""; - } - Numb(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.numb())]); - return obj; - } - Token(id){ - const obj = new this.$.$mol_text_code_token(); - (obj.type) = () => ((this.token_type(id))); - (obj.haystack) = () => ((this.token_text(id))); - (obj.needle) = () => ((this.highlight())); - return obj; - } - Token_link(id){ - const obj = new this.$.$mol_text_code_token_link(); - (obj.haystack) = () => ((this.token_text(id))); - (obj.needle) = () => ((this.highlight())); - (obj.uri) = () => ((this.token_uri(id))); - return obj; - } - find_pos(id){ - return null; - } - }; - ($mol_mem(($.$mol_text_code_line.prototype), "Numb")); - ($mol_mem_key(($.$mol_text_code_line.prototype), "Token")); - ($mol_mem_key(($.$mol_text_code_line.prototype), "Token_link")); - - -; -"use strict"; -var $; -(function ($) { - $.$mol_syntax2_md_flow = new $mol_syntax2({ - 'quote': /^((?:(?:[>"] )(?:[^]*?)$(\r?\n?))+)([\n\r]*)/, - 'spoiler': /^((?:(?:[\?] )(?:[^]*?)$(\r?\n?))+)([\n\r]*)/, - 'header': /^([#=]+)(\s+)(.*?)$([\n\r]*)/, - 'list': /^((?:(?: ?([*+-])|(?:\d+[\.\)])+) +(?:[^]*?)$(?:\r?\n?)(?: (?:[^]*?)$(?:\r?\n?))*)+)((?:\r?\n)*)/, - 'code': /^(```\s*)([\w.-]*)[\r\n]+([^]*?)^(```)$([\n\r]*)/, - 'code-indent': /^((?:(?: |\t)(?:[^]*?)$\r?\n?)+)([\n\r]*)/, - 'table': /((?:^\|.+?$\r?\n?)+)([\n\r]*)/, - 'grid': /((?:^ *! .*?$\r?\n?)+)([\n\r]*)/, - 'cut': /^--+$((?:\r?\n)*)/, - 'block': /^(.*?)$((?:\r?\n)*)/, - }); - $.$mol_syntax2_md_line = new $mol_syntax2({ - 'strong': /\*\*(.+?)\*\*/, - 'emphasis': /\*(?!\s)(.+?)\*|\/\/(?!\s)(.+?)\/\//, - 'code': /```(.+?)```|;;(.+?);;|`(.+?)`/, - 'insert': /\+\+(.+?)\+\+/, - 'delete': /~~(.+?)~~|--(.+?)--/, - 'embed': /""(?:(.*?)\\)?(.*?)""/, - 'link': /\\\\(?:(.*?)\\)?(.*?)\\\\/, - 'image-link': /!\[([^\[\]]*?)\]\((.*?)\)/, - 'text-link': /\[(.*?(?:\[[^\[\]]*?\][^\[\]]*?)*)\]\((.*?)\)/, - 'text-link-http': /\b(https?:\/\/[^\s,.;:!?")]+(?:[,.;:!?")][^\s,.;:!?")]+)+)/, - }); - $.$mol_syntax2_md_code = new $mol_syntax2({ - 'code-indent': /\t+/, - 'code-docs': /\/\/\/.*?$/, - 'code-comment-block': /(?:\/\*[^]*?\*\/|\/\+[^]*?\+\/|)/, - 'code-link': /(?:\w+:\/\/|#)\S+?(?=\s|\\\\|""|$)/, - 'code-comment-inline': /\/\/.*?(?:$|\/\/)|- \\(?!\\).*|#!? .*/, - 'code-string': /(?:".*?"|'.*?'|`.*?`| ?\\\\.+?\\\\|\/.+?\/[dygimsu]*(?!\p{Letter})|[ \t]*\\[^\n]*)/u, - 'code-number': /[+-]?(?:\d*\.)?\d+\w*/, - 'code-call': /\.?\w+ *(?=\()/, - 'code-sexpr': /\((\w+ )/, - 'code-field': /(?:(?:\.|::|->)\w+|[\w-]+\??\s*:(?!\/\/|:))/, - 'code-keyword': /\b(throw|readonly|unknown|keyof|typeof|never|from|class|struct|interface|type|function|extends|implements|module|namespace|import|export|include|require|var|val|let|const|for|do|while|until|in|out|of|new|if|then|else|switch|case|this|return|async|await|yield|try|catch|break|continue|get|set|public|private|protected|string|boolean|number|null|undefined|true|false|void|int|float|ref)\b/, - 'code-global': /[$]+\w*|\b[A-Z][a-z0-9]+[A-Z]\w*/, - 'code-word': /\w+/, - 'code-decorator': /@.+/, - 'code-tag': /<\/?[\w-]+\/?>?|&\w+;/, - 'code-punctuation': /[\-\[\]\{\}\(\)<=>~!\?@#%&\*_\+\\\/\|;:\.,\^]+?/, - }); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_text_code_line extends $.$mol_text_code_line { - maximal_width() { - return this.text().length * this.letter_width(); - } - syntax() { - return this.$.$mol_syntax2_md_code; - } - tokens(path) { - const tokens = []; - const text = (path.length > 0) - ? this.tokens(path.slice(0, path.length - 1))[path[path.length - 1]].found.slice(1, -1) - : this.text(); - this.syntax().tokenize(text, (name, found, chunks) => { - if (name === 'code-sexpr') { - tokens.push({ name: 'code-punctuation', found: '(', chunks: [] }); - tokens.push({ name: 'code-call', found: chunks[0], chunks: [] }); - } - else { - tokens.push({ name, found, chunks }); - } - }); - return tokens; - } - sub() { - return [ - ...this.numb_showed() ? [this.Numb()] : [], - ...this.row_content([]) - ]; - } - row_content(path) { - return this.tokens(path).map((t, i) => this.Token([...path, i])); - } - Token(path) { - return this.token_type(path) === 'code-link' ? this.Token_link(path) : super.Token(path); - } - token_type(path) { - return this.tokens([...path.slice(0, path.length - 1)])[path[path.length - 1]].name; - } - token_content(path) { - const tokens = this.tokens([...path.slice(0, path.length - 1)]); - const token = tokens[path[path.length - 1]]; - switch (token.name) { - case 'code-string': return [ - token.found[0], - ...this.row_content(path), - token.found[token.found.length - 1], - ]; - default: return [token.found]; - } - } - token_text(path) { - const tokens = this.tokens([...path.slice(0, path.length - 1)]); - const token = tokens[path[path.length - 1]]; - return token.found; - } - token_uri(path) { - const uri = this.token_text(path); - return this.uri_resolve(uri); - } - *view_find(check, path = []) { - if (check(this, this.text())) { - yield [...path, this]; - } - } - find_pos(offset) { - return this.find_token_pos([offset]); - } - find_token_pos([offset, ...path]) { - for (const [index, token] of this.tokens(path).entries()) { - if (token.found.length >= offset) { - const token = this.Token([...path, index]); - return { token, offset }; - } - else { - offset -= token.found.length; - } - } - return null; - } - } - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "tokens", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "row_content", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "token_type", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "token_content", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "token_text", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "token_uri", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "find_pos", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "find_token_pos", null); - $$.$mol_text_code_line = $mol_text_code_line; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { rem } = $mol_style_unit; - $mol_style_define($mol_text_code_line, { - display: 'block', - position: 'relative', - font: { - family: 'monospace', - }, - Numb: { - textAlign: 'right', - color: $mol_theme.shade, - width: rem(3), - margin: { - left: rem(-4), - }, - display: 'inline-block', - whiteSpace: 'nowrap', - userSelect: 'none', - position: 'absolute', - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_list) = class $mol_list extends ($.$mol_view) { - rows(){ - return []; - } - gap_before(){ - return 0; - } - gap_after(){ - return 0; - } - render_visible_only(){ - return true; - } - render_over(){ - return 0; - } - sub(){ - return (this.rows()); - } - Empty(){ - const obj = new this.$.$mol_view(); - return obj; - } - Gap_before(){ - const obj = new this.$.$mol_view(); - (obj.style) = () => ({"paddingTop": (this.gap_before())}); - return obj; - } - Gap_after(){ - const obj = new this.$.$mol_view(); - (obj.style) = () => ({"paddingTop": (this.gap_after())}); - return obj; - } - view_window(){ - return [0, 0]; - } - }; - ($mol_mem(($.$mol_list.prototype), "Empty")); - ($mol_mem(($.$mol_list.prototype), "Gap_before")); - ($mol_mem(($.$mol_list.prototype), "Gap_after")); - - -; -"use strict"; -var $; -(function ($) { - let cache = null; - function $mol_support_css_overflow_anchor() { - return cache ?? (cache = this.$mol_dom_context.CSS?.supports('overflow-anchor:auto') ?? false); - } - $.$mol_support_css_overflow_anchor = $mol_support_css_overflow_anchor; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_list extends $.$mol_list { - sub() { - const rows = this.rows(); - return (rows.length === 0) ? [this.Empty()] : rows; - } - render_visible_only() { - return this.$.$mol_support_css_overflow_anchor(); - } - view_window(next) { - const kids = this.sub(); - if (kids.length < 3) - return [0, kids.length]; - if (this.$.$mol_print.active()) - return [0, kids.length]; - const rect = this.view_rect(); - if (next) - return next; - let [min, max] = $mol_mem_cached(() => this.view_window()) ?? [0, 0]; - let max2 = max = Math.min(max, kids.length); - let min2 = min = Math.max(0, Math.min(min, max - 1)); - const anchoring = this.render_visible_only(); - const window_height = this.$.$mol_window.size().height + 40; - const over = Math.ceil(window_height * this.render_over()); - const limit_top = -over; - const limit_bottom = window_height + over; - const gap_before = $mol_mem_cached(() => this.gap_before()) ?? 0; - const gap_after = $mol_mem_cached(() => this.gap_after()) ?? 0; - let top = Math.ceil(rect?.top ?? 0) + gap_before; - let bottom = Math.ceil(rect?.bottom ?? 0) - gap_after; - if (top <= limit_top && bottom >= limit_bottom) { - return [min2, max2]; - } - if (anchoring && ((bottom < limit_top) || (top > limit_bottom))) { - min = 0; - top = Math.ceil(rect?.top ?? 0); - while (min < (kids.length - 1)) { - const height = kids[min].minimal_height(); - if (top + height >= limit_top) - break; - top += height; - ++min; - } - min2 = min; - max2 = max = min; - bottom = top; - } - let top2 = top; - let bottom2 = bottom; - if (anchoring && (top < limit_top) && (bottom < limit_bottom) && (max < kids.length)) { - min2 = max; - top2 = bottom; - } - if ((bottom > limit_bottom) && (top > limit_top) && (min > 0)) { - max2 = min; - bottom2 = top; - } - while (anchoring && ((top2 > limit_top) && (min2 > 0))) { - --min2; - top2 -= kids[min2].minimal_height(); - } - while (bottom2 < limit_bottom && max2 < kids.length) { - bottom2 += kids[max2].minimal_height(); - ++max2; - } - return [min2, max2]; - } - gap_before() { - const skipped = this.sub().slice(0, this.view_window()[0]); - return Math.max(0, skipped.reduce((sum, view) => sum + view.minimal_height(), 0)); - } - gap_after() { - const skipped = this.sub().slice(this.view_window()[1]); - return Math.max(0, skipped.reduce((sum, view) => sum + view.minimal_height(), 0)); - } - sub_visible() { - return [ - ...this.gap_before() ? [this.Gap_before()] : [], - ...this.sub().slice(...this.view_window()), - ...this.gap_after() ? [this.Gap_after()] : [], - ]; - } - minimal_height() { - return this.sub().reduce((sum, view) => { - try { - return sum + view.minimal_height(); - } - catch (error) { - $mol_fail_log(error); - return sum; - } - }, 0); - } - force_render(path) { - const kids = this.rows(); - const index = kids.findIndex(item => path.has(item)); - if (index >= 0) { - const win = this.view_window(); - if (index < win[0] || index >= win[1]) { - this.view_window([this.render_visible_only() ? index : 0, index + 1]); - } - kids[index].force_render(path); - } - } - } - __decorate([ - $mol_mem - ], $mol_list.prototype, "sub", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "view_window", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "gap_before", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "gap_after", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "sub_visible", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "minimal_height", null); - $$.$mol_list = $mol_list; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/list/list.view.css", "[mol_list] {\n\twill-change: contents;\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-shrink: 0;\n\tmax-width: 100%;\n\t/* display: flex;\n\talign-items: stretch;\n\talign-content: stretch; */\n\ttransition: none;\n\tmin-height: 1.5rem;\n}\n\n[mol_list_gap_before] ,\n[mol_list_gap_after] {\n\tdisplay: block !important;\n\tflex: none;\n\ttransition: none;\n\toverflow-anchor: none;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_blob = ($node.buffer?.Blob ?? $mol_dom_context.Blob); -})($ || ($ = {})); - -; - ($.$mol_icon_clipboard) = class $mol_icon_clipboard extends ($.$mol_icon) { - path(){ - return "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_clipboard_outline) = class $mol_icon_clipboard_outline extends ($.$mol_icon) { - path(){ - return "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_button_copy) = class $mol_button_copy extends ($.$mol_button_minor) { - text(){ - return (this.title()); - } - text_blob(next){ - if(next !== undefined) return next; - const obj = new this.$.$mol_blob([(this.text())], {"type": "text/plain"}); - return obj; - } - html(){ - return ""; - } - html_blob(next){ - if(next !== undefined) return next; - const obj = new this.$.$mol_blob([(this.html())], {"type": "text/html"}); - return obj; - } - Icon(){ - const obj = new this.$.$mol_icon_clipboard_outline(); - return obj; - } - title(){ - return ""; - } - blobs(){ - return [(this.text_blob()), (this.html_blob())]; - } - data(){ - return {}; - } - sub(){ - return [(this.Icon()), (this.title())]; - } - }; - ($mol_mem(($.$mol_button_copy.prototype), "text_blob")); - ($mol_mem(($.$mol_button_copy.prototype), "html_blob")); - ($mol_mem(($.$mol_button_copy.prototype), "Icon")); - - -; -"use strict"; -var $; -(function ($) { - const mapping = { - '<': '<', - '>': '>', - '"': '"', - '&': '&', - }; - function $mol_html_encode(text) { - return text.replace(/[&<">]/gi, str => mapping[str]); - } - $.$mol_html_encode = $mol_html_encode; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_button_copy extends $.$mol_button_copy { - data() { - return Object.fromEntries(this.blobs().map(blob => [blob.type, blob])); - } - html() { - return $mol_html_encode(this.text()); - } - attachments() { - return [new ClipboardItem(this.data())]; - } - click(event) { - const cb = $mol_wire_sync(this.$.$mol_dom_context.navigator.clipboard); - cb.writeText?.(this.text()); - cb.write?.(this.attachments()); - if (cb.writeText === undefined && cb.write === undefined) { - throw new Error("doesn't support copy to clipoard"); - } - } - } - __decorate([ - $mol_mem - ], $mol_button_copy.prototype, "html", null); - __decorate([ - $mol_mem - ], $mol_button_copy.prototype, "attachments", null); - $$.$mol_button_copy = $mol_button_copy; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_text_code) = class $mol_text_code extends ($.$mol_stack) { - sidebar_showed(){ - return false; - } - render_visible_only(){ - return false; - } - row_numb(id){ - return 0; - } - row_text(id){ - return ""; - } - syntax(){ - return null; - } - uri_resolve(id){ - return ""; - } - highlight(){ - return ""; - } - Row(id){ - const obj = new this.$.$mol_text_code_line(); - (obj.numb_showed) = () => ((this.sidebar_showed())); - (obj.numb) = () => ((this.row_numb(id))); - (obj.text) = () => ((this.row_text(id))); - (obj.syntax) = () => ((this.syntax())); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.highlight) = () => ((this.highlight())); - return obj; - } - rows(){ - return [(this.Row("0"))]; - } - Rows(){ - const obj = new this.$.$mol_list(); - (obj.render_visible_only) = () => ((this.render_visible_only())); - (obj.rows) = () => ((this.rows())); - return obj; - } - text_export(){ - return ""; - } - Copy(){ - const obj = new this.$.$mol_button_copy(); - (obj.hint) = () => ((this.$.$mol_locale.text("$mol_text_code_Copy_hint"))); - (obj.text) = () => ((this.text_export())); - return obj; - } - attr(){ - return {...(super.attr()), "mol_text_code_sidebar_showed": (this.sidebar_showed())}; - } - text(){ - return ""; - } - text_lines(){ - return []; - } - find_pos(id){ - return null; - } - uri_base(){ - return ""; - } - sub(){ - return [(this.Rows()), (this.Copy())]; - } - }; - ($mol_mem_key(($.$mol_text_code.prototype), "Row")); - ($mol_mem(($.$mol_text_code.prototype), "Rows")); - ($mol_mem(($.$mol_text_code.prototype), "Copy")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_text_code extends $.$mol_text_code { - render_visible_only() { - return this.$.$mol_support_css_overflow_anchor(); - } - text_lines() { - return (this.text() ?? '').split('\n'); - } - rows() { - return this.text_lines().map((_, index) => this.Row(index + 1)); - } - row_text(index) { - return this.text_lines()[index - 1]; - } - row_numb(index) { - return index; - } - find_pos(offset) { - for (const [index, line] of this.text_lines().entries()) { - if (line.length >= offset) { - return this.Row(index + 1).find_pos(offset); - } - else { - offset -= line.length + 1; - } - } - return null; - } - sub() { - return [ - this.Rows(), - ...this.sidebar_showed() ? [this.Copy()] : [] - ]; - } - syntax() { - return this.$.$mol_syntax2_md_code; - } - uri_base() { - return $mol_dom_context.document.location.href; - } - uri_resolve(uri) { - if (/^(\w+script+:)+/.test(uri)) - return null; - try { - const url = new URL(uri, this.uri_base()); - return url.toString(); - } - catch (error) { - $mol_fail_log(error); - return null; - } - } - text_export() { - return this.text() + '\n'; - } - } - __decorate([ - $mol_mem - ], $mol_text_code.prototype, "text_lines", null); - __decorate([ - $mol_mem - ], $mol_text_code.prototype, "rows", null); - __decorate([ - $mol_mem_key - ], $mol_text_code.prototype, "row_text", null); - __decorate([ - $mol_mem_key - ], $mol_text_code.prototype, "find_pos", null); - __decorate([ - $mol_mem - ], $mol_text_code.prototype, "sub", null); - __decorate([ - $mol_mem_key - ], $mol_text_code.prototype, "uri_resolve", null); - $$.$mol_text_code = $mol_text_code; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { rem, px } = $mol_style_unit; - $mol_style_define($mol_text_code, { - whiteSpace: 'pre-wrap', - font: { - family: 'monospace', - }, - Rows: { - padding: $mol_gap.text, - }, - Row: { - font: { - family: 'inherit', - }, - }, - Copy: { - alignSelf: 'flex-start', - justifySelf: 'flex-start', - }, - '@': { - 'mol_text_code_sidebar_showed': { - true: { - $mol_text_code_line: { - margin: { - left: rem(1.75), - }, - }, - }, - }, - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_hotkey) = class $mol_hotkey extends ($.$mol_plugin) { - keydown(next){ - if(next !== undefined) return next; - return null; - } - event(){ - return {...(super.event()), "keydown": (next) => (this.keydown(next))}; - } - key(){ - return {}; - } - mod_ctrl(){ - return false; - } - mod_alt(){ - return false; - } - mod_shift(){ - return false; - } - }; - ($mol_mem(($.$mol_hotkey.prototype), "keydown")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_hotkey extends $.$mol_hotkey { - key() { - return super.key(); - } - keydown(event) { - if (!event) - return; - if (event.defaultPrevented) - return; - let name = $mol_keyboard_code[event.keyCode]; - if (this.mod_ctrl() !== (event.ctrlKey || event.metaKey)) - return; - if (this.mod_alt() !== event.altKey) - return; - if (this.mod_shift() !== event.shiftKey) - return; - const handle = this.key()[name]; - if (handle) - handle(event); - } - } - $$.$mol_hotkey = $mol_hotkey; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_string) = class $mol_string extends ($.$mol_view) { - selection_watcher(){ - return null; - } - error_report(){ - return null; - } - disabled(){ - return false; - } - value(next){ - if(next !== undefined) return next; - return ""; - } - value_changed(next){ - return (this.value(next)); - } - hint(){ - return ""; - } - hint_visible(){ - return (this.hint()); - } - spellcheck(){ - return true; - } - autocomplete_native(){ - return ""; - } - selection_end(){ - return 0; - } - selection_start(){ - return 0; - } - keyboard(){ - return "text"; - } - enter(){ - return "go"; - } - length_max(){ - return +Infinity; - } - type(next){ - if(next !== undefined) return next; - return "text"; - } - event_change(next){ - if(next !== undefined) return next; - return null; - } - submit_with_ctrl(){ - return false; - } - submit(next){ - if(next !== undefined) return next; - return null; - } - Submit(){ - const obj = new this.$.$mol_hotkey(); - (obj.mod_ctrl) = () => ((this.submit_with_ctrl())); - (obj.key) = () => ({"enter": (next) => (this.submit(next))}); - return obj; - } - dom_name(){ - return "input"; - } - enabled(){ - return true; - } - minimal_height(){ - return 40; - } - autocomplete(){ - return false; - } - selection(next){ - if(next !== undefined) return next; - return [0, 0]; - } - auto(){ - return [(this.selection_watcher()), (this.error_report())]; - } - field(){ - return { - ...(super.field()), - "disabled": (this.disabled()), - "value": (this.value_changed()), - "placeholder": (this.hint_visible()), - "spellcheck": (this.spellcheck()), - "autocomplete": (this.autocomplete_native()), - "selectionEnd": (this.selection_end()), - "selectionStart": (this.selection_start()), - "inputMode": (this.keyboard()), - "enterkeyhint": (this.enter()) - }; - } - attr(){ - return { - ...(super.attr()), - "maxlength": (this.length_max()), - "type": (this.type()) - }; - } - event(){ - return {...(super.event()), "input": (next) => (this.event_change(next))}; - } - plugins(){ - return [(this.Submit())]; - } - }; - ($mol_mem(($.$mol_string.prototype), "value")); - ($mol_mem(($.$mol_string.prototype), "type")); - ($mol_mem(($.$mol_string.prototype), "event_change")); - ($mol_mem(($.$mol_string.prototype), "submit")); - ($mol_mem(($.$mol_string.prototype), "Submit")); - ($mol_mem(($.$mol_string.prototype), "selection")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_string extends $.$mol_string { - event_change(next) { - if (!next) - return; - const el = next.target; - const from = el.selectionStart; - const to = el.selectionEnd; - try { - el.value = this.value_changed(el.value); - } - catch (error) { - const el = this.dom_node(); - if (error instanceof Error) { - el.setCustomValidity(error.message); - el.reportValidity(); - } - $mol_fail_hidden(error); - } - if (to === null) - return; - el.selectionEnd = to; - el.selectionStart = from; - this.selection_change(next); - } - error_report() { - try { - if (this.focused()) - this.value(); - } - catch (error) { - const el = this.dom_node(); - if (error instanceof Error) { - el.setCustomValidity(error.message); - el.reportValidity(); - } - } - } - hint_visible() { - return (this.enabled() ? this.hint() : '') || ' '; - } - disabled() { - return !this.enabled(); - } - autocomplete_native() { - return this.autocomplete() ? 'on' : 'off'; - } - selection_watcher() { - return new $mol_dom_listener(this.$.$mol_dom_context.document, 'selectionchange', $mol_wire_async(event => this.selection_change(event))); - } - selection_change(event) { - const el = this.dom_node(); - if (el !== this.$.$mol_dom_context.document.activeElement) - return; - const [from, to] = this.selection([ - el.selectionStart, - el.selectionEnd, - ]); - el.selectionEnd = to; - el.selectionStart = from; - if (to !== from && el.selectionEnd === el.selectionStart) { - el.selectionEnd = to; - } - } - selection_start() { - const el = this.dom_node(); - if (el.selectionStart === null) - return undefined; - return this.selection()[0]; - } - selection_end() { - const el = this.dom_node(); - if (el.selectionEnd === null) - return undefined; - return this.selection()[1]; - } - } - __decorate([ - $mol_action - ], $mol_string.prototype, "event_change", null); - __decorate([ - $mol_mem - ], $mol_string.prototype, "error_report", null); - __decorate([ - $mol_mem - ], $mol_string.prototype, "selection_watcher", null); - $$.$mol_string = $mol_string; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/string/string.view.css", "[mol_string] {\n\tbox-sizing: border-box;\n\toutline-offset: 0;\n\tborder: none;\n\tborder-radius: var(--mol_gap_round);\n\twhite-space: pre-line;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tpadding: var(--mol_gap_text);\n\ttext-align: left;\n\tposition: relative;\n\tfont: inherit;\n\tflex: 1 1 auto;\n\tbackground: transparent;\n\tmin-width: 0;\n\tcolor: inherit;\n\tbackground: var(--mol_theme_field);\n}\n\n[mol_string]:disabled:not(:placeholder-shown) {\n\tbackground-color: transparent;\n\tcolor: var(--mol_theme_text);\n}\n\n[mol_string]:where(:not(:disabled)) {\n\tbox-shadow: inset 0 0 0 1px var(--mol_theme_line);\n}\n\n[mol_string]:where(:not(:disabled)):hover {\n\tbox-shadow: inset 0 0 0 2px var(--mol_theme_line);\n\tz-index: var(--mol_layer_hover);\n}\n\n[mol_string]:focus {\n\toutline: none;\n\tz-index: var(--mol_layer_focus);\n\tcolor: var(--mol_theme_text);\n\tbox-shadow: inset 0 0 0 1px var(--mol_theme_focus);\n}\n\n[mol_string]::placeholder {\n\tcolor: var(--mol_theme_shade);\n}\n\n[mol_string]::-ms-clear {\n\tdisplay: none;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_textarea) = class $mol_textarea extends ($.$mol_stack) { - clickable(next){ - if(next !== undefined) return next; - return false; - } - sidebar_showed(){ - return false; - } - press(next){ - if(next !== undefined) return next; - return null; - } - hover(next){ - if(next !== undefined) return next; - return null; - } - value(next){ - if(next !== undefined) return next; - return ""; - } - hint(){ - return " "; - } - enabled(){ - return true; - } - spellcheck(){ - return true; - } - length_max(){ - return +Infinity; - } - selection(next){ - if(next !== undefined) return next; - return []; - } - bring(){ - return (this.Edit().bring()); - } - submit(next){ - if(next !== undefined) return next; - return null; - } - submit_with_ctrl(){ - return true; - } - Edit(){ - const obj = new this.$.$mol_textarea_edit(); - (obj.value) = (next) => ((this.value(next))); - (obj.hint) = () => ((this.hint())); - (obj.enabled) = () => ((this.enabled())); - (obj.spellcheck) = () => ((this.spellcheck())); - (obj.length_max) = () => ((this.length_max())); - (obj.selection) = (next) => ((this.selection(next))); - (obj.submit) = (next) => ((this.submit(next))); - (obj.submit_with_ctrl) = () => ((this.submit_with_ctrl())); - return obj; - } - row_numb(id){ - return 0; - } - highlight(){ - return ""; - } - syntax(){ - const obj = new this.$.$mol_syntax2(); - return obj; - } - View(){ - const obj = new this.$.$mol_text_code(); - (obj.text) = () => ((this.value())); - (obj.render_visible_only) = () => (false); - (obj.row_numb) = (id) => ((this.row_numb(id))); - (obj.sidebar_showed) = () => ((this.sidebar_showed())); - (obj.highlight) = () => ((this.highlight())); - (obj.syntax) = () => ((this.syntax())); - return obj; - } - attr(){ - return { - ...(super.attr()), - "mol_textarea_clickable": (this.clickable()), - "mol_textarea_sidebar_showed": (this.sidebar_showed()) - }; - } - event(){ - return {"keydown": (next) => (this.press(next)), "pointermove": (next) => (this.hover(next))}; - } - sub(){ - return [(this.Edit()), (this.View())]; - } - symbols_alt(){ - return { - "comma": "<", - "period": ">", - "dash": "−", - "equals": "≈", - "graveAccent": "́", - "forwardSlash": "÷", - "E": "€", - "V": "✔", - "X": "×", - "C": "©", - "P": "§", - "H": "₽", - "key0": "°", - "key8": "•", - "key2": "@", - "key3": "#", - "key4": "$", - "key6": "^", - "key7": "&", - "bracketOpen": "[", - "bracketClose": "]", - "slashBack": "|" - }; - } - symbols_alt_ctrl(){ - return {"space": " "}; - } - symbols_alt_shift(){ - return { - "V": "✅", - "X": "❌", - "O": "⭕", - "key1": "❗", - "key4": "💲", - "key7": "❓", - "comma": "«", - "period": "»", - "semicolon": "“", - "quoteSingle": "”", - "dash": "—", - "equals": "≠", - "graveAccent": "̱", - "bracketOpen": "{", - "bracketClose": "}" - }; - } - }; - ($mol_mem(($.$mol_textarea.prototype), "clickable")); - ($mol_mem(($.$mol_textarea.prototype), "press")); - ($mol_mem(($.$mol_textarea.prototype), "hover")); - ($mol_mem(($.$mol_textarea.prototype), "value")); - ($mol_mem(($.$mol_textarea.prototype), "selection")); - ($mol_mem(($.$mol_textarea.prototype), "submit")); - ($mol_mem(($.$mol_textarea.prototype), "Edit")); - ($mol_mem(($.$mol_textarea.prototype), "syntax")); - ($mol_mem(($.$mol_textarea.prototype), "View")); - ($.$mol_textarea_edit) = class $mol_textarea_edit extends ($.$mol_string) { - dom_name(){ - return "textarea"; - } - enter(){ - return "enter"; - } - field(){ - return {...(super.field()), "scrollTop": 0}; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_textarea extends $.$mol_textarea { - indent_inc() { - let text = this.value(); - let [from, to] = this.selection(); - const rows = text.split('\n'); - let start = 0; - for (let i = 0; i < rows.length; ++i) { - let end = start + rows[i].length; - if (end >= from && start <= to) { - if (to === from || start !== to) { - rows[i] = '\t' + rows[i]; - to += 1; - end += 1; - } - } - start = end + 1; - } - this.value(rows.join('\n')); - this.selection([from + 1, to]); - } - indent_dec() { - let text = this.value(); - let [from, to] = this.selection(); - const rows = text.split('\n'); - let start = 0; - for (let i = 0; i < rows.length; ++i) { - const end = start + rows[i].length; - if (end >= from && start <= to && rows[i].startsWith('\t')) { - rows[i] = rows[i].slice(1); - to -= 1; - if (start < from) - from -= 1; - } - start = end + 1; - } - this.value(rows.join('\n')); - this.selection([from, to]); - } - symbol_insert(event) { - const symbol = event.shiftKey - ? this.symbols_alt_shift()[$mol_keyboard_code[event.keyCode]] - : event.ctrlKey - ? this.symbols_alt_ctrl()[$mol_keyboard_code[event.keyCode]] - : this.symbols_alt()[$mol_keyboard_code[event.keyCode]]; - if (!symbol) - return; - event.preventDefault(); - document.execCommand('insertText', false, symbol); - } - clickable(next) { - if (!this.enabled()) - return true; - return next ?? false; - } - hover(event) { - this.clickable(event.ctrlKey); - } - press(event) { - if (event.altKey) { - this.symbol_insert(event); - } - else { - switch (event.keyCode) { - case !event.shiftKey && $mol_keyboard_code.tab: - this.indent_inc(); - break; - case event.shiftKey && $mol_keyboard_code.tab: - this.indent_dec(); - break; - default: return; - } - event.preventDefault(); - } - } - row_numb(index) { - return index; - } - syntax() { - return this.$.$mol_syntax2_md_code; - } - } - __decorate([ - $mol_mem - ], $mol_textarea.prototype, "clickable", null); - $$.$mol_textarea = $mol_textarea; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/textarea/textarea.view.css", "[mol_textarea] {\n\tflex: 1 0 auto;\n\tflex-direction: column;\n\tvertical-align: top;\n\tmin-height: max-content;\n\twhite-space: pre-wrap;\n\tword-break: break-word;\n\tborder-radius: var(--mol_gap_round);\n\tfont-family: monospace;\n\tposition: relative;\n\ttab-size: 4;\n}\n\n[mol_textarea_view] {\n\tpointer-events: none;\n\twhite-space: inherit;\n\tfont-family: inherit;\n\ttab-size: inherit;\n\tuser-select: none;\n}\n\n[mol_textarea_view_copy] {\n\tpointer-events: all;\n}\n\n[mol_textarea_clickable] > [mol_textarea_view] {\n\tpointer-events: all;\n\tuser-select: auto;\n}\n\n[mol_textarea_clickable] > [mol_textarea_edit] {\n\tuser-select: none;\n}\n\n[mol_textarea_edit] {\n\tfont-family: inherit;\n\tpadding: var(--mol_gap_text);\n\tcolor: transparent !important;\n\tcaret-color: var(--mol_theme_text);\n\tresize: none;\n\ttext-align: inherit;\n\twhite-space: inherit;\n\tborder-radius: inherit;\n\toverflow-anchor: none;\n\tposition: absolute;\n\theight: 100%;\n\twidth: 100%;\n\ttab-size: inherit;\n}\n\n[mol_textarea_sidebar_showed] [mol_textarea_edit] {\n\tleft: 1.75rem;\n\twidth: calc( 100% - 1.75rem );\n}\n\n[mol_textarea_edit]:hover + [mol_textarea_view] {\n\tz-index: var(--mol_layer_hover);\n}\n\n[mol_textarea_edit]:focus + [mol_textarea_view] {\n\tz-index: var(--mol_layer_focus);\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_page) = class $mol_page extends ($.$mol_view) { - tabindex(){ - return -1; - } - Logo(){ - return null; - } - title_content(){ - return [(this.Logo()), (this.title())]; - } - Title(){ - const obj = new this.$.$mol_view(); - (obj.dom_name) = () => ("h1"); - (obj.sub) = () => ((this.title_content())); - return obj; - } - tools(){ - return []; - } - Tools(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.tools())); - return obj; - } - head(){ - return [(this.Title()), (this.Tools())]; - } - Head(){ - const obj = new this.$.$mol_view(); - (obj.minimal_height) = () => (64); - (obj.dom_name) = () => ("header"); - (obj.sub) = () => ((this.head())); - return obj; - } - body_scroll_top(next){ - return (this.Body().scroll_top(next)); - } - body(){ - return []; - } - Body_content(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.body())); - return obj; - } - body_content(){ - return [(this.Body_content())]; - } - Body(){ - const obj = new this.$.$mol_scroll(); - (obj.sub) = () => ((this.body_content())); - return obj; - } - foot(){ - return []; - } - Foot(){ - const obj = new this.$.$mol_view(); - (obj.dom_name) = () => ("footer"); - (obj.sub) = () => ((this.foot())); - return obj; - } - dom_name(){ - return "article"; - } - attr(){ - return {...(super.attr()), "tabIndex": (this.tabindex())}; - } - sub(){ - return [ - (this.Head()), - (this.Body()), - (this.Foot()) - ]; - } - }; - ($mol_mem(($.$mol_page.prototype), "Title")); - ($mol_mem(($.$mol_page.prototype), "Tools")); - ($mol_mem(($.$mol_page.prototype), "Head")); - ($mol_mem(($.$mol_page.prototype), "Body_content")); - ($mol_mem(($.$mol_page.prototype), "Body")); - ($mol_mem(($.$mol_page.prototype), "Foot")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { per, rem } = $mol_style_unit; - const { hsla, blur } = $mol_style_func; - $mol_style_define($mol_page, { - display: 'flex', - flex: { - basis: 'auto', - direction: 'column', - }, - position: 'relative', - alignSelf: 'stretch', - maxWidth: per(100), - maxHeight: per(100), - boxSizing: 'border-box', - color: $mol_theme.text, - ':focus': { - outline: 'none', - }, - Head: { - display: 'flex', - flexWrap: 'wrap', - justifyContent: 'flex-end', - flex: 'none', - position: 'relative', - margin: 0, - minHeight: rem(4), - padding: $mol_gap.block, - background: { - color: $mol_theme.card, - }, - border: { - radius: $mol_gap.round, - }, - box: { - shadow: [[0, `0.5rem`, `0.5rem`, `-0.5rem`, hsla(0, 0, 0, .25)]], - }, - zIndex: 2, - '@media': { - 'print': { - box: { - shadow: [[0, `1px`, 0, 0, hsla(0, 0, 0, .25)]], - }, - }, - }, - }, - Title: { - minHeight: rem(2), - margin: 0, - padding: $mol_gap.text, - gap: $mol_gap.text, - wordBreak: 'normal', - textShadow: '0 0', - font: { - size: 'inherit', - weight: 'normal', - }, - flex: { - grow: 1, - shrink: 1, - basis: 'auto', - }, - }, - Tools: { - flex: { - basis: 'auto', - grow: 0, - shrink: 1, - }, - display: 'flex', - justifyContent: 'flex-end', - alignItems: 'flex-start', - flexWrap: 'wrap', - '@media': { - 'print': { - display: 'none', - }, - }, - }, - Body: { - flex: { - grow: 1000, - shrink: 1, - basis: per(100), - }, - }, - Body_content: { - padding: $mol_gap.block, - flex: { - direction: 'column', - shrink: 1, - grow: 1, - }, - justify: { - self: 'stretch', - }, - }, - Foot: { - display: 'flex', - justifyContent: 'space-between', - flex: 'none', - margin: 0, - background: { - color: $mol_theme.card, - }, - border: { - radius: $mol_gap.round, - }, - box: { - shadow: [[0, `-0.5rem`, `0.5rem`, `-0.5rem`, hsla(0, 0, 0, .25)]], - }, - zIndex: 1, - padding: $mol_gap.block, - ':empty': { - display: 'none', - }, - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - -var $node = $node || {} -void function( module ) { var exports = module.exports = this; function require( id ) { return $node[ id.replace( /^.\// , "../optimade/cifplayer/lib/three/" ) ] }; -; -"use strict"; -/** - * @license - * Copyright 2010-2023 Three.js Authors - * SPDX-License-Identifier: MIT - */const t="158",e=0,n=1,i=2,r=1,a=2,s=3,o=0,l=1,c=100,h=0,u=1,d=2,p=0,f=1,m=2,g=3,_=4,v=5,x=301,M=302,y=306,S=1e3,E=1001,T=1002,b=1003,w=1005,A=1006,R=1008,C=1009,L=1012,P=1013,U=1014,D=1015,I=1016,N=1020,O=1023,F=1026,z=1027,B=33776,H=33777,G=33778,V=33779,k=36492,W=3001,X="",j="srgb",Y="srgb-linear",q="display-p3",Z="display-p3-linear",K="linear",J="srgb",Q="rec709",tt="p3",et=7680,nt=35044,it="300 es",rt=1035,at=2e3,st=2001;class ot{addEventListener(t,e){void 0===this._listeners&&(this._listeners={});const n=this._listeners;void 0===n[t]&&(n[t]=[]),-1===n[t].indexOf(e)&&n[t].push(e)}hasEventListener(t,e){if(void 0===this._listeners)return!1;const n=this._listeners;return void 0!==n[t]&&-1!==n[t].indexOf(e)}removeEventListener(t,e){if(void 0===this._listeners)return;const n=this._listeners[t];if(void 0!==n){const t=n.indexOf(e);-1!==t&&n.splice(t,1)}}dispatchEvent(t){if(void 0===this._listeners)return;const e=this._listeners[t.type];if(void 0!==e){t.target=this;const n=e.slice(0);for(let e=0,i=n.length;e>8&255]+lt[t>>16&255]+lt[t>>24&255]+"-"+lt[255&e]+lt[e>>8&255]+"-"+lt[e>>16&15|64]+lt[e>>24&255]+"-"+lt[63&n|128]+lt[n>>8&255]+"-"+lt[n>>16&255]+lt[n>>24&255]+lt[255&i]+lt[i>>8&255]+lt[i>>16&255]+lt[i>>24&255]).toLowerCase()}function pt(t,e,n){return Math.max(e,Math.min(n,t))}function ft(t,e){return(t%e+e)%e}function mt(t,e,n){return(1-n)*t+n*e}function gt(t){return 0==(t&t-1)&&0!==t}function _t(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function vt(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return t/4294967295;case Uint16Array:return t/65535;case Uint8Array:return t/255;case Int32Array:return Math.max(t/2147483647,-1);case Int16Array:return Math.max(t/32767,-1);case Int8Array:return Math.max(t/127,-1);default:throw new Error("Invalid component type.")}}function xt(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return Math.round(4294967295*t);case Uint16Array:return Math.round(65535*t);case Uint8Array:return Math.round(255*t);case Int32Array:return Math.round(2147483647*t);case Int16Array:return Math.round(32767*t);case Int8Array:return Math.round(127*t);default:throw new Error("Invalid component type.")}}const Mt={DEG2RAD:ht,RAD2DEG:ut,generateUUID:dt,clamp:pt,euclideanModulo:ft,mapLinear:function(t,e,n,i,r){return i+(t-e)*(r-i)/(n-e)},inverseLerp:function(t,e,n){return t!==e?(n-t)/(e-t):0},lerp:mt,damp:function(t,e,n,i){return mt(t,e,1-Math.exp(-n*i))},pingpong:function(t,e=1){return e-Math.abs(ft(t,2*e)-e)},smoothstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*(3-2*t)},smootherstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*t*(t*(6*t-15)+10)},randInt:function(t,e){return t+Math.floor(Math.random()*(e-t+1))},randFloat:function(t,e){return t+Math.random()*(e-t)},randFloatSpread:function(t){return t*(.5-Math.random())},seededRandom:function(t){void 0!==t&&(ct=t);let e=ct+=1831565813;return e=Math.imul(e^e>>>15,1|e),e^=e+Math.imul(e^e>>>7,61|e),((e^e>>>14)>>>0)/4294967296},degToRad:function(t){return t*ht},radToDeg:function(t){return t*ut},isPowerOfTwo:gt,ceilPowerOfTwo:function(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},floorPowerOfTwo:_t,setQuaternionFromProperEuler:function(t,e,n,i,r){const a=Math.cos,s=Math.sin,o=a(n/2),l=s(n/2),c=a((e+i)/2),h=s((e+i)/2),u=a((e-i)/2),d=s((e-i)/2),p=a((i-e)/2),f=s((i-e)/2);switch(r){case"XYX":t.set(o*h,l*u,l*d,o*c);break;case"YZY":t.set(l*d,o*h,l*u,o*c);break;case"ZXZ":t.set(l*u,l*d,o*h,o*c);break;case"XZX":t.set(o*h,l*f,l*p,o*c);break;case"YXY":t.set(l*p,o*h,l*f,o*c);break;case"ZYZ":t.set(l*f,l*p,o*h,o*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}},normalize:xt,denormalize:vt};class yt{constructor(t=0,e=0){yt.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(pt(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const n=Math.cos(e),i=Math.sin(e),r=this.x-t.x,a=this.y-t.y;return this.x=r*n-a*i+t.x,this.y=r*i+a*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class St{constructor(t,e,n,i,r,a,s,o,l){St.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==t&&this.set(t,e,n,i,r,a,s,o,l)}set(t,e,n,i,r,a,s,o,l){const c=this.elements;return c[0]=t,c[1]=i,c[2]=s,c[3]=e,c[4]=r,c[5]=o,c[6]=n,c[7]=a,c[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,i=e.elements,r=this.elements,a=n[0],s=n[3],o=n[6],l=n[1],c=n[4],h=n[7],u=n[2],d=n[5],p=n[8],f=i[0],m=i[3],g=i[6],_=i[1],v=i[4],x=i[7],M=i[2],y=i[5],S=i[8];return r[0]=a*f+s*_+o*M,r[3]=a*m+s*v+o*y,r[6]=a*g+s*x+o*S,r[1]=l*f+c*_+h*M,r[4]=l*m+c*v+h*y,r[7]=l*g+c*x+h*S,r[2]=u*f+d*_+p*M,r[5]=u*m+d*v+p*y,r[8]=u*g+d*x+p*S,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],s=t[5],o=t[6],l=t[7],c=t[8];return e*a*c-e*s*l-n*r*c+n*s*o+i*r*l-i*a*o}invert(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],h=c*a-s*l,u=s*o-c*r,d=l*r-a*o,p=e*h+n*u+i*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);const f=1/p;return t[0]=h*f,t[1]=(i*l-c*n)*f,t[2]=(s*n-i*a)*f,t[3]=u*f,t[4]=(c*e-i*o)*f,t[5]=(i*r-s*e)*f,t[6]=d*f,t[7]=(n*o-l*e)*f,t[8]=(a*e-n*r)*f,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,i,r,a,s){const o=Math.cos(r),l=Math.sin(r);return this.set(n*o,n*l,-n*(o*a+l*s)+a+t,-i*l,i*o,-i*(-l*a+o*s)+s+e,0,0,1),this}scale(t,e){return this.premultiply(Et.makeScale(t,e)),this}rotate(t){return this.premultiply(Et.makeRotation(-t)),this}translate(t,e){return this.premultiply(Et.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,n=t.elements;for(let t=0;t<9;t++)if(e[t]!==n[t])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return(new this.constructor).fromArray(this.elements)}}const Et=new St;function Tt(t){for(let e=t.length-1;e>=0;--e)if(t[e]>=65535)return!0;return!1}function bt(t){return document.createElementNS("http://www.w3.org/1999/xhtml",t)}function wt(){const t=bt("canvas");return t.style.display="block",t}const At={};function Rt(t){t in At||(At[t]=!0,console.warn(t))}const Ct=(new St).set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Lt=(new St).set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),Pt={[Y]:{transfer:K,primaries:Q,toReference:t=>t,fromReference:t=>t},[j]:{transfer:J,primaries:Q,toReference:t=>t.convertSRGBToLinear(),fromReference:t=>t.convertLinearToSRGB()},[Z]:{transfer:K,primaries:tt,toReference:t=>t.applyMatrix3(Lt),fromReference:t=>t.applyMatrix3(Ct)},[q]:{transfer:J,primaries:tt,toReference:t=>t.convertSRGBToLinear().applyMatrix3(Lt),fromReference:t=>t.applyMatrix3(Ct).convertLinearToSRGB()}},Ut=new Set([Y,Z]),Dt={enabled:!0,_workingColorSpace:Y,get legacyMode(){return console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),!this.enabled},set legacyMode(t){console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),this.enabled=!t},get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(t){if(!Ut.has(t))throw new Error(`Unsupported working color space, "${t}".`);this._workingColorSpace=t},convert:function(t,e,n){if(!1===this.enabled||e===n||!e||!n)return t;const i=Pt[e].toReference;return(0,Pt[n].fromReference)(i(t))},fromWorkingColorSpace:function(t,e){return this.convert(t,this._workingColorSpace,e)},toWorkingColorSpace:function(t,e){return this.convert(t,e,this._workingColorSpace)},getPrimaries:function(t){return Pt[t].primaries},getTransfer:function(t){return t===X?K:Pt[t].transfer}};function It(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function Nt(t){return t<.0031308?12.92*t:1.055*Math.pow(t,.41666)-.055}let Ot;class Ft{static getDataURL(t){if(/^data:/i.test(t.src))return t.src;if("undefined"==typeof HTMLCanvasElement)return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{void 0===Ot&&(Ot=bt("canvas")),Ot.width=t.width,Ot.height=t.height;const n=Ot.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),e=Ot}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(t){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){const e=bt("canvas");e.width=t.width,e.height=t.height;const n=e.getContext("2d");n.drawImage(t,0,0,t.width,t.height);const i=n.getImageData(0,0,t.width,t.height),r=i.data;for(let t=0;t0&&(n.userData=this.userData),e||(t.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(300!==this.mapping)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case S:t.x=t.x-Math.floor(t.x);break;case E:t.x=t.x<0?0:1;break;case T:1===Math.abs(Math.floor(t.x)%2)?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x)}if(t.y<0||t.y>1)switch(this.wrapT){case S:t.y=t.y-Math.floor(t.y);break;case E:t.y=t.y<0?0:1;break;case T:1===Math.abs(Math.floor(t.y)%2)?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y)}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){!0===t&&(this.version++,this.source.needsUpdate=!0)}get encoding(){return Rt("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace===j?W:3e3}set encoding(t){Rt("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace=t===W?j:X}}Vt.DEFAULT_IMAGE=null,Vt.DEFAULT_MAPPING=300,Vt.DEFAULT_ANISOTROPY=1;class kt{constructor(t=0,e=0,n=0,i=1){kt.prototype.isVector4=!0,this.x=t,this.y=e,this.z=n,this.w=i}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=void 0!==t.w?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,n=this.y,i=this.z,r=this.w,a=t.elements;return this.x=a[0]*e+a[4]*n+a[8]*i+a[12]*r,this.y=a[1]*e+a[5]*n+a[9]*i+a[13]*r,this.z=a[2]*e+a[6]*n+a[10]*i+a[14]*r,this.w=a[3]*e+a[7]*n+a[11]*i+a[15]*r,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,i,r;const a=.01,s=.1,o=t.elements,l=o[0],c=o[4],h=o[8],u=o[1],d=o[5],p=o[9],f=o[2],m=o[6],g=o[10];if(Math.abs(c-u)o&&t>_?t_?o=0?1:-1,i=1-e*e;if(i>Number.EPSILON){const r=Math.sqrt(i),a=Math.atan2(r,e*n);t=Math.sin(t*a)/r,s=Math.sin(s*a)/r}const r=s*n;if(o=o*t+u*r,l=l*t+d*r,c=c*t+p*r,h=h*t+f*r,t===1-s){const t=1/Math.sqrt(o*o+l*l+c*c+h*h);o*=t,l*=t,c*=t,h*=t}}t[e]=o,t[e+1]=l,t[e+2]=c,t[e+3]=h}static multiplyQuaternionsFlat(t,e,n,i,r,a){const s=n[i],o=n[i+1],l=n[i+2],c=n[i+3],h=r[a],u=r[a+1],d=r[a+2],p=r[a+3];return t[e]=s*p+c*h+o*d-l*u,t[e+1]=o*p+c*u+l*h-s*d,t[e+2]=l*p+c*d+s*u-o*h,t[e+3]=c*p-s*h-o*u-l*d,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e){const n=t._x,i=t._y,r=t._z,a=t._order,s=Math.cos,o=Math.sin,l=s(n/2),c=s(i/2),h=s(r/2),u=o(n/2),d=o(i/2),p=o(r/2);switch(a){case"XYZ":this._x=u*c*h+l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h-u*d*p;break;case"YXZ":this._x=u*c*h+l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h+u*d*p;break;case"ZXY":this._x=u*c*h-l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h-u*d*p;break;case"ZYX":this._x=u*c*h-l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h+u*d*p;break;case"YZX":this._x=u*c*h+l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h-u*d*p;break;case"XZY":this._x=u*c*h-l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h+u*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return!1!==e&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,n=e[0],i=e[4],r=e[8],a=e[1],s=e[5],o=e[9],l=e[2],c=e[6],h=e[10],u=n+s+h;if(u>0){const t=.5/Math.sqrt(u+1);this._w=.25/t,this._x=(c-o)*t,this._y=(r-l)*t,this._z=(a-i)*t}else if(n>s&&n>h){const t=2*Math.sqrt(1+n-s-h);this._w=(c-o)/t,this._x=.25*t,this._y=(i+a)/t,this._z=(r+l)/t}else if(s>h){const t=2*Math.sqrt(1+s-n-h);this._w=(r-l)/t,this._x=(i+a)/t,this._y=.25*t,this._z=(o+c)/t}else{const t=2*Math.sqrt(1+h-n-s);this._w=(a-i)/t,this._x=(r+l)/t,this._y=(o+c)/t,this._z=.25*t}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return nMath.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(pt(this.dot(t),-1,1)))}rotateTowards(t,e){const n=this.angleTo(t);if(0===n)return this;const i=Math.min(1,e/n);return this.slerp(t,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return 0===t?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const n=t._x,i=t._y,r=t._z,a=t._w,s=e._x,o=e._y,l=e._z,c=e._w;return this._x=n*c+a*s+i*l-r*o,this._y=i*c+a*o+r*s-n*l,this._z=r*c+a*l+n*o-i*s,this._w=a*c-n*s-i*o-r*l,this._onChangeCallback(),this}slerp(t,e){if(0===e)return this;if(1===e)return this.copy(t);const n=this._x,i=this._y,r=this._z,a=this._w;let s=a*t._w+n*t._x+i*t._y+r*t._z;if(s<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,s=-s):this.copy(t),s>=1)return this._w=a,this._x=n,this._y=i,this._z=r,this;const o=1-s*s;if(o<=Number.EPSILON){const t=1-e;return this._w=t*a+e*this._w,this._x=t*n+e*this._x,this._y=t*i+e*this._y,this._z=t*r+e*this._z,this.normalize(),this._onChangeCallback(),this}const l=Math.sqrt(o),c=Math.atan2(l,s),h=Math.sin((1-e)*c)/l,u=Math.sin(e*c)/l;return this._w=a*h+this._w*u,this._x=n*h+this._x*u,this._y=i*h+this._y*u,this._z=r*h+this._z*u,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){const t=Math.random(),e=Math.sqrt(1-t),n=Math.sqrt(t),i=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(e*Math.cos(i),n*Math.sin(r),n*Math.cos(r),e*Math.sin(i))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class Zt{constructor(t=0,e=0,n=0){Zt.prototype.isVector3=!0,this.x=t,this.y=e,this.z=n}set(t,e,n){return void 0===n&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(Jt.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(Jt.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6]*i,this.y=r[1]*e+r[4]*n+r[7]*i,this.z=r[2]*e+r[5]*n+r[8]*i,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,n=this.y,i=this.z,r=t.elements,a=1/(r[3]*e+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*e+r[4]*n+r[8]*i+r[12])*a,this.y=(r[1]*e+r[5]*n+r[9]*i+r[13])*a,this.z=(r[2]*e+r[6]*n+r[10]*i+r[14])*a,this}applyQuaternion(t){const e=this.x,n=this.y,i=this.z,r=t.x,a=t.y,s=t.z,o=t.w,l=2*(a*i-s*n),c=2*(s*e-r*i),h=2*(r*n-a*e);return this.x=e+o*l+a*h-s*c,this.y=n+o*c+s*l-r*h,this.z=i+o*h+r*c-a*l,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[4]*n+r[8]*i,this.y=r[1]*e+r[5]*n+r[9]*i,this.z=r[2]*e+r[6]*n+r[10]*i,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const n=t.x,i=t.y,r=t.z,a=e.x,s=e.y,o=e.z;return this.x=i*o-r*s,this.y=r*a-n*o,this.z=n*s-i*a,this}projectOnVector(t){const e=t.lengthSq();if(0===e)return this.set(0,0,0);const n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return Kt.copy(this).projectOnVector(t),this.sub(Kt)}reflect(t){return this.sub(Kt.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(pt(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){const i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,4*e)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,3*e)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=2*(Math.random()-.5),e=Math.random()*Math.PI*2,n=Math.sqrt(1-t**2);return this.x=n*Math.cos(e),this.y=n*Math.sin(e),this.z=t,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Kt=new Zt,Jt=new qt;class Qt{constructor(t=new Zt(1/0,1/0,1/0),e=new Zt(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,n=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)}intersectsSphere(t){return this.clampPoint(t.center,te),te.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(le),ce.subVectors(this.max,le),ne.subVectors(t.a,le),ie.subVectors(t.b,le),re.subVectors(t.c,le),ae.subVectors(ie,ne),se.subVectors(re,ie),oe.subVectors(ne,re);let e=[0,-ae.z,ae.y,0,-se.z,se.y,0,-oe.z,oe.y,ae.z,0,-ae.x,se.z,0,-se.x,oe.z,0,-oe.x,-ae.y,ae.x,0,-se.y,se.x,0,-oe.y,oe.x,0];return!!de(e,ne,ie,re,ce)&&(e=[1,0,0,0,1,0,0,0,1],!!de(e,ne,ie,re,ce)&&(he.crossVectors(ae,se),e=[he.x,he.y,he.z],de(e,ne,ie,re,ce)))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,te).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=.5*this.getSize(te).length()),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()||($t[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),$t[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),$t[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),$t[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),$t[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),$t[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),$t[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),$t[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints($t)),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}const $t=[new Zt,new Zt,new Zt,new Zt,new Zt,new Zt,new Zt,new Zt],te=new Zt,ee=new Qt,ne=new Zt,ie=new Zt,re=new Zt,ae=new Zt,se=new Zt,oe=new Zt,le=new Zt,ce=new Zt,he=new Zt,ue=new Zt;function de(t,e,n,i,r){for(let a=0,s=t.length-3;a<=s;a+=3){ue.fromArray(t,a);const s=r.x*Math.abs(ue.x)+r.y*Math.abs(ue.y)+r.z*Math.abs(ue.z),o=e.dot(ue),l=n.dot(ue),c=i.dot(ue);if(Math.max(-Math.max(o,l,c),Math.min(o,l,c))>s)return!1}return!0}const pe=new Qt,fe=new Zt,me=new Zt;class ge{constructor(t=new Zt,e=-1){this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const n=this.center;void 0!==e?n.copy(e):pe.setFromPoints(t).getCenter(n);let i=0;for(let e=0,r=t.length;ethis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;fe.subVectors(t,this.center);const e=fe.lengthSq();if(e>this.radius*this.radius){const t=Math.sqrt(e),n=.5*(t-this.radius);this.center.addScaledVector(fe,n/t),this.radius+=n}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(!0===this.center.equals(t.center)?this.radius=Math.max(this.radius,t.radius):(me.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(fe.copy(t.center).add(me)),this.expandByPoint(fe.copy(t.center).sub(me))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return(new this.constructor).copy(this)}}const _e=new Zt,ve=new Zt,xe=new Zt,Me=new Zt,ye=new Zt,Se=new Zt,Ee=new Zt;class Te{constructor(t=new Zt,e=new Zt(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,_e)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=_e.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(_e.copy(this.origin).addScaledVector(this.direction,e),_e.distanceToSquared(t))}distanceSqToSegment(t,e,n,i){ve.copy(t).add(e).multiplyScalar(.5),xe.copy(e).sub(t).normalize(),Me.copy(this.origin).sub(ve);const r=.5*t.distanceTo(e),a=-this.direction.dot(xe),s=Me.dot(this.direction),o=-Me.dot(xe),l=Me.lengthSq(),c=Math.abs(1-a*a);let h,u,d,p;if(c>0)if(h=a*o-s,u=a*s-o,p=r*c,h>=0)if(u>=-p)if(u<=p){const t=1/c;h*=t,u*=t,d=h*(h+a*u+2*s)+u*(a*h+u+2*o)+l}else u=r,h=Math.max(0,-(a*u+s)),d=-h*h+u*(u+2*o)+l;else u=-r,h=Math.max(0,-(a*u+s)),d=-h*h+u*(u+2*o)+l;else u<=-p?(h=Math.max(0,-(-a*r+s)),u=h>0?-r:Math.min(Math.max(-r,-o),r),d=-h*h+u*(u+2*o)+l):u<=p?(h=0,u=Math.min(Math.max(-r,-o),r),d=u*(u+2*o)+l):(h=Math.max(0,-(a*r+s)),u=h>0?r:Math.min(Math.max(-r,-o),r),d=-h*h+u*(u+2*o)+l);else u=a>0?-r:r,h=Math.max(0,-(a*u+s)),d=-h*h+u*(u+2*o)+l;return n&&n.copy(this.origin).addScaledVector(this.direction,h),i&&i.copy(ve).addScaledVector(xe,u),d}intersectSphere(t,e){_e.subVectors(t.center,this.origin);const n=_e.dot(this.direction),i=_e.dot(_e)-n*n,r=t.radius*t.radius;if(i>r)return null;const a=Math.sqrt(r-i),s=n-a,o=n+a;return o<0?null:s<0?this.at(o,e):this.at(s,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(0===e)return 0===t.distanceToPoint(this.origin)?0:null;const n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){const n=this.distanceToPlane(t);return null===n?null:this.at(n,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);if(0===e)return!0;return t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,i,r,a,s,o;const l=1/this.direction.x,c=1/this.direction.y,h=1/this.direction.z,u=this.origin;return l>=0?(n=(t.min.x-u.x)*l,i=(t.max.x-u.x)*l):(n=(t.max.x-u.x)*l,i=(t.min.x-u.x)*l),c>=0?(r=(t.min.y-u.y)*c,a=(t.max.y-u.y)*c):(r=(t.max.y-u.y)*c,a=(t.min.y-u.y)*c),n>a||r>i?null:((r>n||isNaN(n))&&(n=r),(a=0?(s=(t.min.z-u.z)*h,o=(t.max.z-u.z)*h):(s=(t.max.z-u.z)*h,o=(t.min.z-u.z)*h),n>o||s>i?null:((s>n||n!=n)&&(n=s),(o=0?n:i,e)))}intersectsBox(t){return null!==this.intersectBox(t,_e)}intersectTriangle(t,e,n,i,r){ye.subVectors(e,t),Se.subVectors(n,t),Ee.crossVectors(ye,Se);let a,s=this.direction.dot(Ee);if(s>0){if(i)return null;a=1}else{if(!(s<0))return null;a=-1,s=-s}Me.subVectors(this.origin,t);const o=a*this.direction.dot(Se.crossVectors(Me,Se));if(o<0)return null;const l=a*this.direction.dot(ye.cross(Me));if(l<0)return null;if(o+l>s)return null;const c=-a*Me.dot(Ee);return c<0?null:this.at(c/s,r)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}}class be{constructor(t,e,n,i,r,a,s,o,l,c,h,u,d,p,f,m){be.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==t&&this.set(t,e,n,i,r,a,s,o,l,c,h,u,d,p,f,m)}set(t,e,n,i,r,a,s,o,l,c,h,u,d,p,f,m){const g=this.elements;return g[0]=t,g[4]=e,g[8]=n,g[12]=i,g[1]=r,g[5]=a,g[9]=s,g[13]=o,g[2]=l,g[6]=c,g[10]=h,g[14]=u,g[3]=d,g[7]=p,g[11]=f,g[15]=m,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return(new be).fromArray(this.elements)}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){const e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,n=t.elements,i=1/we.setFromMatrixColumn(t,0).length(),r=1/we.setFromMatrixColumn(t,1).length(),a=1/we.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*r,e[5]=n[5]*r,e[6]=n[6]*r,e[7]=0,e[8]=n[8]*a,e[9]=n[9]*a,e[10]=n[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){const e=this.elements,n=t.x,i=t.y,r=t.z,a=Math.cos(n),s=Math.sin(n),o=Math.cos(i),l=Math.sin(i),c=Math.cos(r),h=Math.sin(r);if("XYZ"===t.order){const t=a*c,n=a*h,i=s*c,r=s*h;e[0]=o*c,e[4]=-o*h,e[8]=l,e[1]=n+i*l,e[5]=t-r*l,e[9]=-s*o,e[2]=r-t*l,e[6]=i+n*l,e[10]=a*o}else if("YXZ"===t.order){const t=o*c,n=o*h,i=l*c,r=l*h;e[0]=t+r*s,e[4]=i*s-n,e[8]=a*l,e[1]=a*h,e[5]=a*c,e[9]=-s,e[2]=n*s-i,e[6]=r+t*s,e[10]=a*o}else if("ZXY"===t.order){const t=o*c,n=o*h,i=l*c,r=l*h;e[0]=t-r*s,e[4]=-a*h,e[8]=i+n*s,e[1]=n+i*s,e[5]=a*c,e[9]=r-t*s,e[2]=-a*l,e[6]=s,e[10]=a*o}else if("ZYX"===t.order){const t=a*c,n=a*h,i=s*c,r=s*h;e[0]=o*c,e[4]=i*l-n,e[8]=t*l+r,e[1]=o*h,e[5]=r*l+t,e[9]=n*l-i,e[2]=-l,e[6]=s*o,e[10]=a*o}else if("YZX"===t.order){const t=a*o,n=a*l,i=s*o,r=s*l;e[0]=o*c,e[4]=r-t*h,e[8]=i*h+n,e[1]=h,e[5]=a*c,e[9]=-s*c,e[2]=-l*c,e[6]=n*h+i,e[10]=t-r*h}else if("XZY"===t.order){const t=a*o,n=a*l,i=s*o,r=s*l;e[0]=o*c,e[4]=-h,e[8]=l*c,e[1]=t*h+r,e[5]=a*c,e[9]=n*h-i,e[2]=i*h-n,e[6]=s*c,e[10]=r*h+t}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Re,t,Ce)}lookAt(t,e,n){const i=this.elements;return Ue.subVectors(t,e),0===Ue.lengthSq()&&(Ue.z=1),Ue.normalize(),Le.crossVectors(n,Ue),0===Le.lengthSq()&&(1===Math.abs(n.z)?Ue.x+=1e-4:Ue.z+=1e-4,Ue.normalize(),Le.crossVectors(n,Ue)),Le.normalize(),Pe.crossVectors(Ue,Le),i[0]=Le.x,i[4]=Pe.x,i[8]=Ue.x,i[1]=Le.y,i[5]=Pe.y,i[9]=Ue.y,i[2]=Le.z,i[6]=Pe.z,i[10]=Ue.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,i=e.elements,r=this.elements,a=n[0],s=n[4],o=n[8],l=n[12],c=n[1],h=n[5],u=n[9],d=n[13],p=n[2],f=n[6],m=n[10],g=n[14],_=n[3],v=n[7],x=n[11],M=n[15],y=i[0],S=i[4],E=i[8],T=i[12],b=i[1],w=i[5],A=i[9],R=i[13],C=i[2],L=i[6],P=i[10],U=i[14],D=i[3],I=i[7],N=i[11],O=i[15];return r[0]=a*y+s*b+o*C+l*D,r[4]=a*S+s*w+o*L+l*I,r[8]=a*E+s*A+o*P+l*N,r[12]=a*T+s*R+o*U+l*O,r[1]=c*y+h*b+u*C+d*D,r[5]=c*S+h*w+u*L+d*I,r[9]=c*E+h*A+u*P+d*N,r[13]=c*T+h*R+u*U+d*O,r[2]=p*y+f*b+m*C+g*D,r[6]=p*S+f*w+m*L+g*I,r[10]=p*E+f*A+m*P+g*N,r[14]=p*T+f*R+m*U+g*O,r[3]=_*y+v*b+x*C+M*D,r[7]=_*S+v*w+x*L+M*I,r[11]=_*E+v*A+x*P+M*N,r[15]=_*T+v*R+x*U+M*O,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[4],i=t[8],r=t[12],a=t[1],s=t[5],o=t[9],l=t[13],c=t[2],h=t[6],u=t[10],d=t[14];return t[3]*(+r*o*h-i*l*h-r*s*u+n*l*u+i*s*d-n*o*d)+t[7]*(+e*o*d-e*l*u+r*a*u-i*a*d+i*l*c-r*o*c)+t[11]*(+e*l*h-e*s*d-r*a*h+n*a*d+r*s*c-n*l*c)+t[15]*(-i*s*c-e*o*h+e*s*u+i*a*h-n*a*u+n*o*c)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,n){const i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this}invert(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],h=t[9],u=t[10],d=t[11],p=t[12],f=t[13],m=t[14],g=t[15],_=h*m*l-f*u*l+f*o*d-s*m*d-h*o*g+s*u*g,v=p*u*l-c*m*l-p*o*d+a*m*d+c*o*g-a*u*g,x=c*f*l-p*h*l+p*s*d-a*f*d-c*s*g+a*h*g,M=p*h*o-c*f*o-p*s*u+a*f*u+c*s*m-a*h*m,y=e*_+n*v+i*x+r*M;if(0===y)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const S=1/y;return t[0]=_*S,t[1]=(f*u*r-h*m*r-f*i*d+n*m*d+h*i*g-n*u*g)*S,t[2]=(s*m*r-f*o*r+f*i*l-n*m*l-s*i*g+n*o*g)*S,t[3]=(h*o*r-s*u*r-h*i*l+n*u*l+s*i*d-n*o*d)*S,t[4]=v*S,t[5]=(c*m*r-p*u*r+p*i*d-e*m*d-c*i*g+e*u*g)*S,t[6]=(p*o*r-a*m*r-p*i*l+e*m*l+a*i*g-e*o*g)*S,t[7]=(a*u*r-c*o*r+c*i*l-e*u*l-a*i*d+e*o*d)*S,t[8]=x*S,t[9]=(p*h*r-c*f*r-p*n*d+e*f*d+c*n*g-e*h*g)*S,t[10]=(a*f*r-p*s*r+p*n*l-e*f*l-a*n*g+e*s*g)*S,t[11]=(c*s*r-a*h*r-c*n*l+e*h*l+a*n*d-e*s*d)*S,t[12]=M*S,t[13]=(c*f*i-p*h*i+p*n*u-e*f*u-c*n*m+e*h*m)*S,t[14]=(p*s*i-a*f*i-p*n*o+e*f*o+a*n*m-e*s*m)*S,t[15]=(a*h*i-c*s*i+c*n*o-e*h*o-a*n*u+e*s*u)*S,this}scale(t){const e=this.elements,n=t.x,i=t.y,r=t.z;return e[0]*=n,e[4]*=i,e[8]*=r,e[1]*=n,e[5]*=i,e[9]*=r,e[2]*=n,e[6]*=i,e[10]*=r,e[3]*=n,e[7]*=i,e[11]*=r,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))}makeTranslation(t,e,n){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const n=Math.cos(e),i=Math.sin(e),r=1-n,a=t.x,s=t.y,o=t.z,l=r*a,c=r*s;return this.set(l*a+n,l*s-i*o,l*o+i*s,0,l*s+i*o,c*s+n,c*o-i*a,0,l*o-i*s,c*o+i*a,r*o*o+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,i,r,a){return this.set(1,n,r,0,t,1,a,0,e,i,1,0,0,0,0,1),this}compose(t,e,n){const i=this.elements,r=e._x,a=e._y,s=e._z,o=e._w,l=r+r,c=a+a,h=s+s,u=r*l,d=r*c,p=r*h,f=a*c,m=a*h,g=s*h,_=o*l,v=o*c,x=o*h,M=n.x,y=n.y,S=n.z;return i[0]=(1-(f+g))*M,i[1]=(d+x)*M,i[2]=(p-v)*M,i[3]=0,i[4]=(d-x)*y,i[5]=(1-(u+g))*y,i[6]=(m+_)*y,i[7]=0,i[8]=(p+v)*S,i[9]=(m-_)*S,i[10]=(1-(u+f))*S,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,n){const i=this.elements;let r=we.set(i[0],i[1],i[2]).length();const a=we.set(i[4],i[5],i[6]).length(),s=we.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),t.x=i[12],t.y=i[13],t.z=i[14],Ae.copy(this);const o=1/r,l=1/a,c=1/s;return Ae.elements[0]*=o,Ae.elements[1]*=o,Ae.elements[2]*=o,Ae.elements[4]*=l,Ae.elements[5]*=l,Ae.elements[6]*=l,Ae.elements[8]*=c,Ae.elements[9]*=c,Ae.elements[10]*=c,e.setFromRotationMatrix(Ae),n.x=r,n.y=a,n.z=s,this}makePerspective(t,e,n,i,r,a,s=2e3){const o=this.elements,l=2*r/(e-t),c=2*r/(n-i),h=(e+t)/(e-t),u=(n+i)/(n-i);let d,p;if(s===at)d=-(a+r)/(a-r),p=-2*a*r/(a-r);else{if(s!==st)throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+s);d=-a/(a-r),p=-a*r/(a-r)}return o[0]=l,o[4]=0,o[8]=h,o[12]=0,o[1]=0,o[5]=c,o[9]=u,o[13]=0,o[2]=0,o[6]=0,o[10]=d,o[14]=p,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(t,e,n,i,r,a,s=2e3){const o=this.elements,l=1/(e-t),c=1/(n-i),h=1/(a-r),u=(e+t)*l,d=(n+i)*c;let p,f;if(s===at)p=(a+r)*h,f=-2*h;else{if(s!==st)throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+s);p=r*h,f=-1*h}return o[0]=2*l,o[4]=0,o[8]=0,o[12]=-u,o[1]=0,o[5]=2*c,o[9]=0,o[13]=-d,o[2]=0,o[6]=0,o[10]=f,o[14]=-p,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(t){const e=this.elements,n=t.elements;for(let t=0;t<16;t++)if(e[t]!==n[t])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}}const we=new Zt,Ae=new be,Re=new Zt(0,0,0),Ce=new Zt(1,1,1),Le=new Zt,Pe=new Zt,Ue=new Zt,De=new be,Ie=new qt;class Ne{constructor(t=0,e=0,n=0,i=Ne.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=n,this._order=i}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,i=this._order){return this._x=t,this._y=e,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){const i=t.elements,r=i[0],a=i[4],s=i[8],o=i[1],l=i[5],c=i[9],h=i[2],u=i[6],d=i[10];switch(e){case"XYZ":this._y=Math.asin(pt(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(-c,d),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(u,l),this._z=0);break;case"YXZ":this._x=Math.asin(-pt(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(s,d),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-h,r),this._z=0);break;case"ZXY":this._x=Math.asin(pt(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-h,d),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-pt(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(u,d),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(pt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-c,l),this._y=Math.atan2(-h,r)):(this._x=0,this._y=Math.atan2(s,d));break;case"XZY":this._z=Math.asin(-pt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(u,l),this._y=Math.atan2(s,r)):(this._x=Math.atan2(-c,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,!0===n&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return De.makeRotationFromQuaternion(t),this.setFromRotationMatrix(De,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return Ie.setFromEuler(this),this.setFromQuaternion(Ie,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],void 0!==t[3]&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Ne.DEFAULT_ORDER="XYZ";class Oe{constructor(){this.mask=1}set(t){this.mask=(1<>>0}enable(t){this.mask|=1<1){for(let t=0;t1){for(let t=0;t0&&(n=n.concat(r))}return n}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Ve,t,ke),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Ve,We,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);const e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);const e=this.children;for(let n=0,i=e.length;n0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(i.instanceColor=this.instanceColor.toJSON())),this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(i.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(t.geometries,this.geometry);const e=this.geometry.parameters;if(void 0!==e&&void 0!==e.shapes){const n=e.shapes;if(Array.isArray(n))for(let e=0,i=n.length;e0){i.children=[];for(let e=0;e0){i.animations=[];for(let e=0;e0&&(n.geometries=e),i.length>0&&(n.materials=i),r.length>0&&(n.textures=r),s.length>0&&(n.images=s),o.length>0&&(n.shapes=o),l.length>0&&(n.skeletons=l),c.length>0&&(n.animations=c),h.length>0&&(n.nodes=h)}return n.object=i,n;function a(t){const e=[];for(const n in t){const i=t[n];delete i.metadata,e.push(i)}return e}}clone(t){return(new this.constructor).copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),!0===e)for(let e=0;e0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(t,e,n,i,r){Je.subVectors(i,e),Qe.subVectors(n,e),$e.subVectors(t,e);const a=Je.dot(Je),s=Je.dot(Qe),o=Je.dot($e),l=Qe.dot(Qe),c=Qe.dot($e),h=a*l-s*s;if(0===h)return r.set(-2,-1,-1);const u=1/h,d=(l*o-s*c)*u,p=(a*c-s*o)*u;return r.set(1-d-p,p,d)}static containsPoint(t,e,n,i){return this.getBarycoord(t,e,n,i,tn),tn.x>=0&&tn.y>=0&&tn.x+tn.y<=1}static getUV(t,e,n,i,r,a,s,o){return!1===ln&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),ln=!0),this.getInterpolation(t,e,n,i,r,a,s,o)}static getInterpolation(t,e,n,i,r,a,s,o){return this.getBarycoord(t,e,n,i,tn),o.setScalar(0),o.addScaledVector(r,tn.x),o.addScaledVector(a,tn.y),o.addScaledVector(s,tn.z),o}static isFrontFacing(t,e,n,i){return Je.subVectors(n,e),Qe.subVectors(t,e),Je.cross(Qe).dot(i)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this}setFromAttributeAndIndices(t,e,n,i){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,i),this}clone(){return(new this.constructor).copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return Je.subVectors(this.c,this.b),Qe.subVectors(this.a,this.b),.5*Je.cross(Qe).length()}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return cn.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return cn.getBarycoord(t,this.a,this.b,this.c,e)}getUV(t,e,n,i,r){return!1===ln&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),ln=!0),cn.getInterpolation(t,this.a,this.b,this.c,e,n,i,r)}getInterpolation(t,e,n,i,r){return cn.getInterpolation(t,this.a,this.b,this.c,e,n,i,r)}containsPoint(t){return cn.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return cn.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const n=this.a,i=this.b,r=this.c;let a,s;en.subVectors(i,n),nn.subVectors(r,n),an.subVectors(t,n);const o=en.dot(an),l=nn.dot(an);if(o<=0&&l<=0)return e.copy(n);sn.subVectors(t,i);const c=en.dot(sn),h=nn.dot(sn);if(c>=0&&h<=c)return e.copy(i);const u=o*h-c*l;if(u<=0&&o>=0&&c<=0)return a=o/(o-c),e.copy(n).addScaledVector(en,a);on.subVectors(t,r);const d=en.dot(on),p=nn.dot(on);if(p>=0&&d<=p)return e.copy(r);const f=d*l-o*p;if(f<=0&&l>=0&&p<=0)return s=l/(l-p),e.copy(n).addScaledVector(nn,s);const m=c*p-d*h;if(m<=0&&h-c>=0&&d-p>=0)return rn.subVectors(r,i),s=(h-c)/(h-c+(d-p)),e.copy(i).addScaledVector(rn,s);const g=1/(m+f+u);return a=f*g,s=u*g,e.copy(n).addScaledVector(en,a).addScaledVector(nn,s)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}const hn={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},un={h:0,s:0,l:0},dn={h:0,s:0,l:0};function pn(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+6*(e-t)*(2/3-n):t}class fn{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,n)}set(t,e,n){if(void 0===e&&void 0===n){const e=t;e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e)}else this.setRGB(t,e,n);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=j){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,Dt.toWorkingColorSpace(this,e),this}setRGB(t,e,n,i=Dt.workingColorSpace){return this.r=t,this.g=e,this.b=n,Dt.toWorkingColorSpace(this,i),this}setHSL(t,e,n,i=Dt.workingColorSpace){if(t=ft(t,1),e=pt(e,0,1),n=pt(n,0,1),0===e)this.r=this.g=this.b=n;else{const i=n<=.5?n*(1+e):n+e-n*e,r=2*n-i;this.r=pn(r,i,t+1/3),this.g=pn(r,i,t),this.b=pn(r,i,t-1/3)}return Dt.toWorkingColorSpace(this,i),this}setStyle(t,e=j){function n(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(t)){let r;const a=i[1],s=i[2];switch(a){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,e);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,e);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,e);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(t)){const n=i[1],r=n.length;if(3===r)return this.setRGB(parseInt(n.charAt(0),16)/15,parseInt(n.charAt(1),16)/15,parseInt(n.charAt(2),16)/15,e);if(6===r)return this.setHex(parseInt(n,16),e);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,e);return this}setColorName(t,e=j){const n=hn[t.toLowerCase()];return void 0!==n?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=It(t.r),this.g=It(t.g),this.b=It(t.b),this}copyLinearToSRGB(t){return this.r=Nt(t.r),this.g=Nt(t.g),this.b=Nt(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=j){return Dt.fromWorkingColorSpace(mn.copy(this),t),65536*Math.round(pt(255*mn.r,0,255))+256*Math.round(pt(255*mn.g,0,255))+Math.round(pt(255*mn.b,0,255))}getHexString(t=j){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=Dt.workingColorSpace){Dt.fromWorkingColorSpace(mn.copy(this),e);const n=mn.r,i=mn.g,r=mn.b,a=Math.max(n,i,r),s=Math.min(n,i,r);let o,l;const c=(s+a)/2;if(s===a)o=0,l=0;else{const t=a-s;switch(l=c<=.5?t/(a+s):t/(2-a-s),a){case n:o=(i-r)/t+(i0!=t>0&&this.version++,this._alphaTest=t}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(void 0!==t)for(const e in t){const n=t[e];if(void 0===n){console.warn(`THREE.Material: parameter '${e}' has value of undefined.`);continue}const i=this[e];void 0!==i?i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[e]=n:console.warn(`THREE.Material: '${e}' is not a property of THREE.${this.type}.`)}}toJSON(t){const e=void 0===t||"string"==typeof t;e&&(t={textures:{},images:{}});const n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};function i(t){const e=[];for(const n in t){const i=t[n];delete i.metadata,e.push(i)}return e}if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),void 0!==this.roughness&&(n.roughness=this.roughness),void 0!==this.metalness&&(n.metalness=this.metalness),void 0!==this.sheen&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(n.shininess=this.shininess),void 0!==this.clearcoat&&(n.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.iridescence&&(n.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(n.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),void 0!==this.anisotropy&&(n.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,void 0!==this.combine&&(n.combine=this.combine)),void 0!==this.envMapIntensity&&(n.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(n.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(t).uuid),void 0!==this.transmission&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),void 0!==this.thickness&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(n.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(n.size=this.size),null!==this.shadowSide&&(n.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(n.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(n.blending=this.blending),this.side!==o&&(n.side=this.side),!0===this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),!0===this.transparent&&(n.transparent=!0),204!==this.blendSrc&&(n.blendSrc=this.blendSrc),205!==this.blendDst&&(n.blendDst=this.blendDst),this.blendEquation!==c&&(n.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(n.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(n.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(n.blendAlpha=this.blendAlpha),3!==this.depthFunc&&(n.depthFunc=this.depthFunc),!1===this.depthTest&&(n.depthTest=this.depthTest),!1===this.depthWrite&&(n.depthWrite=this.depthWrite),!1===this.colorWrite&&(n.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(n.stencilWriteMask=this.stencilWriteMask),519!==this.stencilFunc&&(n.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(n.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==et&&(n.stencilFail=this.stencilFail),this.stencilZFail!==et&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==et&&(n.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(n.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(n.rotation=this.rotation),!0===this.polygonOffset&&(n.polygonOffset=!0),0!==this.polygonOffsetFactor&&(n.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(n.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(n.linewidth=this.linewidth),void 0!==this.dashSize&&(n.dashSize=this.dashSize),void 0!==this.gapSize&&(n.gapSize=this.gapSize),void 0!==this.scale&&(n.scale=this.scale),!0===this.dithering&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),!0===this.alphaHash&&(n.alphaHash=!0),!0===this.alphaToCoverage&&(n.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=!0),!0===this.forceSinglePass&&(n.forceSinglePass=!0),!0===this.wireframe&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(n.flatShading=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),!1===this.fog&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData),e){const e=i(t.textures),r=i(t.images);e.length>0&&(n.textures=e),r.length>0&&(n.images=r)}return n}clone(){return(new this.constructor).copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let n=null;if(null!==e){const t=e.length;n=new Array(t);for(let i=0;i!==t;++i)n[i]=e[i].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){!0===t&&this.version++}}class vn extends _n{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new fn(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=h,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}}const xn=new Zt,Mn=new yt;class yn{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=void 0!==t?t.length/e:0,this.normalized=n,this.usage=nt,this.updateRange={offset:0,count:-1},this.gpuType=D,this.version=0}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let i=0,r=this.itemSize;i0&&(t.userData=this.userData),void 0!==this.parameters){const e=this.parameters;for(const n in e)void 0!==e[n]&&(t[n]=e[n]);return t}t.data={attributes:{}};const e=this.index;null!==e&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const n=this.attributes;for(const e in n){const i=n[e];t.data.attributes[e]=i.toJSON(t.data)}const i={};let r=!1;for(const e in this.morphAttributes){const n=this.morphAttributes[e],a=[];for(let e=0,i=n.length;e0&&(i[e]=a,r=!0)}r&&(t.data.morphAttributes=i,t.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(t.data.groups=JSON.parse(JSON.stringify(a)));const s=this.boundingSphere;return null!==s&&(t.data.boundingSphere={center:s.center.toArray(),radius:s.radius}),t}clone(){return(new this.constructor).copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const n=t.index;null!==n&&this.setIndex(n.clone(e));const i=t.attributes;for(const t in i){const n=i[t];this.setAttribute(t,n.clone(e))}const r=t.morphAttributes;for(const t in r){const n=[],i=r[t];for(let t=0,r=i.length;t0){const n=t[e[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=n.length;t(t.far-t.near)**2)return}Dn.copy(r).invert(),In.copy(t.ray).applyMatrix4(Dn),null!==n.boundingBox&&!1===In.intersectsBox(n.boundingBox)||this._computeIntersections(t,e,In)}}_computeIntersections(t,e,n){let i;const r=this.geometry,a=this.material,s=r.index,o=r.attributes.position,l=r.attributes.uv,c=r.attributes.uv1,h=r.attributes.normal,u=r.groups,d=r.drawRange;if(null!==s)if(Array.isArray(a))for(let r=0,o=u.length;rn.far?null:{distance:u,point:Zn.clone(),object:t}}(t,e,n,i,Fn,zn,Bn,qn);if(d){r&&(Vn.fromBufferAttribute(r,c),kn.fromBufferAttribute(r,h),Wn.fromBufferAttribute(r,u),d.uv=cn.getInterpolation(qn,Fn,zn,Bn,Vn,kn,Wn,new yt)),a&&(Vn.fromBufferAttribute(a,c),kn.fromBufferAttribute(a,h),Wn.fromBufferAttribute(a,u),d.uv1=cn.getInterpolation(qn,Fn,zn,Bn,Vn,kn,Wn,new yt),d.uv2=d.uv1),s&&(Xn.fromBufferAttribute(s,c),jn.fromBufferAttribute(s,h),Yn.fromBufferAttribute(s,u),d.normal=cn.getInterpolation(qn,Fn,zn,Bn,Xn,jn,Yn,new Zt),d.normal.dot(i.direction)>0&&d.normal.multiplyScalar(-1));const t={a:c,b:h,c:u,normal:new Zt,materialIndex:0};cn.getNormal(Fn,zn,Bn,t.normal),d.face=t}return d}class Qn extends Un{constructor(t=1,e=1,n=1,i=1,r=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:i,heightSegments:r,depthSegments:a};const s=this;i=Math.floor(i),r=Math.floor(r),a=Math.floor(a);const o=[],l=[],c=[],h=[];let u=0,d=0;function p(t,e,n,i,r,a,p,f,m,g,_){const v=a/m,x=p/g,M=a/2,y=p/2,S=f/2,E=m+1,T=g+1;let b=0,w=0;const A=new Zt;for(let a=0;a0?1:-1,c.push(A.x,A.y,A.z),h.push(o/m),h.push(1-a/g),b+=1}}for(let t=0;t0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;const n={};for(const t in this.extensions)!0===this.extensions[t]&&(n[t]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}}class ri extends Ke{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new be,this.projectionMatrix=new be,this.projectionMatrixInverse=new be,this.coordinateSystem=at}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this.coordinateSystem=t.coordinateSystem,this}getWorldDirection(t){return super.getWorldDirection(t).negate()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}}class ai extends ri{constructor(t=50,e=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=null===t.view?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){const e=.5*this.getFilmHeight()/t;this.fov=2*ut*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){const t=Math.tan(.5*ht*this.fov);return.5*this.getFilmHeight()/t}getEffectiveFOV(){return 2*ut*Math.atan(Math.tan(.5*ht*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(t,e,n,i,r,a){this.aspect=t/e,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=this.near;let e=t*Math.tan(.5*ht*this.fov)/this.zoom,n=2*e,i=this.aspect*n,r=-.5*i;const a=this.view;if(null!==this.view&&this.view.enabled){const t=a.fullWidth,s=a.fullHeight;r+=a.offsetX*i/t,e-=a.offsetY*n/s,i*=a.width/t,n*=a.height/s}const s=this.filmOffset;0!==s&&(r+=t*s/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,e,e-n,t,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,null!==this.view&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}}const si=-90;class oi extends Ke{constructor(t,e,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new ai(si,1,t,e);i.layers=this.layers,this.add(i);const r=new ai(si,1,t,e);r.layers=this.layers,this.add(r);const a=new ai(si,1,t,e);a.layers=this.layers,this.add(a);const s=new ai(si,1,t,e);s.layers=this.layers,this.add(s);const o=new ai(si,1,t,e);o.layers=this.layers,this.add(o);const l=new ai(si,1,t,e);l.layers=this.layers,this.add(l)}updateCoordinateSystem(){const t=this.coordinateSystem,e=this.children.concat(),[n,i,r,a,s,o]=e;for(const t of e)this.remove(t);if(t===at)n.up.set(0,1,0),n.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),s.up.set(0,1,0),s.lookAt(0,0,1),o.up.set(0,1,0),o.lookAt(0,0,-1);else{if(t!==st)throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+t);n.up.set(0,-1,0),n.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),s.up.set(0,-1,0),s.lookAt(0,0,1),o.up.set(0,-1,0),o.lookAt(0,0,-1)}for(const t of e)this.add(t),t.updateMatrixWorld()}update(t,e){null===this.parent&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:i}=this;this.coordinateSystem!==t.coordinateSystem&&(this.coordinateSystem=t.coordinateSystem,this.updateCoordinateSystem());const[r,a,s,o,l,c]=this.children,h=t.getRenderTarget(),u=t.getActiveCubeFace(),d=t.getActiveMipmapLevel(),p=t.xr.enabled;t.xr.enabled=!1;const f=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0,i),t.render(e,r),t.setRenderTarget(n,1,i),t.render(e,a),t.setRenderTarget(n,2,i),t.render(e,s),t.setRenderTarget(n,3,i),t.render(e,o),t.setRenderTarget(n,4,i),t.render(e,l),n.texture.generateMipmaps=f,t.setRenderTarget(n,5,i),t.render(e,c),t.setRenderTarget(h,u,d),t.xr.enabled=p,n.texture.needsPMREMUpdate=!0}}class li extends Vt{constructor(t,e,n,i,r,a,s,o,l,c){super(t=void 0!==t?t:[],e=void 0!==e?e:x,n,i,r,a,s,o,l,c),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}}class ci extends Xt{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;const n={width:t,height:t,depth:1},i=[n,n,n,n,n,n];void 0!==e.encoding&&(Rt("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."),e.colorSpace=e.encoding===W?j:X),this.texture=new li(i,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==e.generateMipmaps&&e.generateMipmaps,this.texture.minFilter=void 0!==e.minFilter?e.minFilter:A}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.colorSpace=e.colorSpace,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:"\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t",fragmentShader:"\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t"},i=new Qn(5,5,5),r=new ii({name:"CubemapFromEquirect",uniforms:$n(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:l,blending:0});r.uniforms.tEquirect.value=e;const a=new Kn(i,r),s=e.minFilter;e.minFilter===R&&(e.minFilter=A);return new oi(1,10,this).update(t,a),e.minFilter=s,a.geometry.dispose(),a.material.dispose(),this}clear(t,e,n,i){const r=t.getRenderTarget();for(let r=0;r<6;r++)t.setRenderTarget(this,r),t.clear(e,n,i);t.setRenderTarget(r)}}const hi=new Zt,ui=new Zt,di=new St;class pi{constructor(t=new Zt(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,n,i){return this.normal.set(t,e,n),this.constant=i,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,n){const i=hi.subVectors(n,e).cross(ui.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectLine(t,e){const n=t.delta(hi),i=this.normal.dot(n);if(0===i)return 0===this.distanceToPoint(t.start)?e.copy(t.start):null;const r=-(t.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:e.copy(t.start).addScaledVector(n,r)}intersectsLine(t){const e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const n=e||di.getNormalMatrix(t),i=this.coplanarPoint(hi).applyMatrix4(t),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return(new this.constructor).copy(this)}}const fi=new ge,mi=new Zt;class gi{constructor(t=new pi,e=new pi,n=new pi,i=new pi,r=new pi,a=new pi){this.planes=[t,e,n,i,r,a]}set(t,e,n,i,r,a){const s=this.planes;return s[0].copy(t),s[1].copy(e),s[2].copy(n),s[3].copy(i),s[4].copy(r),s[5].copy(a),this}copy(t){const e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t,e=2e3){const n=this.planes,i=t.elements,r=i[0],a=i[1],s=i[2],o=i[3],l=i[4],c=i[5],h=i[6],u=i[7],d=i[8],p=i[9],f=i[10],m=i[11],g=i[12],_=i[13],v=i[14],x=i[15];if(n[0].setComponents(o-r,u-l,m-d,x-g).normalize(),n[1].setComponents(o+r,u+l,m+d,x+g).normalize(),n[2].setComponents(o+a,u+c,m+p,x+_).normalize(),n[3].setComponents(o-a,u-c,m-p,x-_).normalize(),n[4].setComponents(o-s,u-h,m-f,x-v).normalize(),e===at)n[5].setComponents(o+s,u+h,m+f,x+v).normalize();else{if(e!==st)throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+e);n[5].setComponents(s,h,f,v).normalize()}return this}intersectsObject(t){if(void 0!==t.boundingSphere)null===t.boundingSphere&&t.computeBoundingSphere(),fi.copy(t.boundingSphere).applyMatrix4(t.matrixWorld);else{const e=t.geometry;null===e.boundingSphere&&e.computeBoundingSphere(),fi.copy(e.boundingSphere).applyMatrix4(t.matrixWorld)}return this.intersectsSphere(fi)}intersectsSprite(t){return fi.center.set(0,0,0),fi.radius=.7071067811865476,fi.applyMatrix4(t.matrixWorld),this.intersectsSphere(fi)}intersectsSphere(t){const e=this.planes,n=t.center,i=-t.radius;for(let t=0;t<6;t++){if(e[t].distanceToPoint(n)0?t.max.x:t.min.x,mi.y=i.normal.y>0?t.max.y:t.min.y,mi.z=i.normal.z>0?t.max.z:t.min.z,i.distanceToPoint(mi)<0)return!1}return!0}containsPoint(t){const e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}}function _i(){let t=null,e=!1,n=null,i=null;function r(e,a){n(e,a),i=t.requestAnimationFrame(r)}return{start:function(){!0!==e&&null!==n&&(i=t.requestAnimationFrame(r),e=!0)},stop:function(){t.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(t){n=t},setContext:function(e){t=e}}}function vi(t,e){const n=e.isWebGL2,i=new WeakMap;return{get:function(t){return t.isInterleavedBufferAttribute&&(t=t.data),i.get(t)},remove:function(e){e.isInterleavedBufferAttribute&&(e=e.data);const n=i.get(e);n&&(t.deleteBuffer(n.buffer),i.delete(e))},update:function(e,r){if(e.isGLBufferAttribute){const t=i.get(e);return void((!t||t.version 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\n#ifdef USE_ALPHAHASH\n\tvarying vec3 vPosition;\n#endif\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat luminance( const in vec3 rgb ) {\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\n\treturn dot( weights, rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define cubeUV_r0 1.0\n\t#define cubeUV_v0 0.339\n\t#define cubeUV_m0 - 2.0\n\t#define cubeUV_r1 0.8\n\t#define cubeUV_v1 0.276\n\t#define cubeUV_m1 - 1.0\n\t#define cubeUV_r4 0.4\n\t#define cubeUV_v4 0.046\n\t#define cubeUV_m4 2.0\n\t#define cubeUV_r5 0.305\n\t#define cubeUV_v5 0.016\n\t#define cubeUV_m5 3.0\n\t#define cubeUV_r6 0.21\n\t#define cubeUV_v6 0.0038\n\t#define cubeUV_m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= cubeUV_r1 ) {\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n\t\t} else if ( roughness >= cubeUV_r4 ) {\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n\t\t} else if ( roughness >= cubeUV_r5 ) {\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n\t\t} else if ( roughness >= cubeUV_r6 ) {\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",colorspace_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",colorspace_pars_fragment:"\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\n\tvec3( 0.8224621, 0.177538, 0.0 ),\n\tvec3( 0.0331941, 0.9668058, 0.0 ),\n\tvec3( 0.0170827, 0.0723974, 0.9105199 )\n);\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\n\tvec3( 1.2249401, - 0.2249404, 0.0 ),\n\tvec3( - 0.0420569, 1.0420571, 0.0 ),\n\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\n);\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\n\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\n}\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\n\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\n}\nvec4 LinearTransferOETF( in vec4 value ) {\n\treturn value;\n}\nvec4 sRGBTransferOETF( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn sRGBTransferOETF( value );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#ifdef USE_ENVMAP\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\t#ifdef USE_ANISOTROPY\n\t\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n\t\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\t\tvec3 bentNormal = cross( bitangent, viewDir );\n\t\t\t\tbentNormal = normalize( cross( bentNormal, bitangent ) );\n\t\t\t\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n\t\t\t\treturn getIBLRadiance( viewDir, bentNormal, roughness );\n\t\t\t#else\n\t\t\t\treturn vec3( 0.0 );\n\t\t\t#endif\n\t\t}\n\t#endif\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\n\t#else\n\t\tvec2 fw = fwidth( coord ) * 0.5;\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_fragment:"LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;",lights_lambert_pars_fragment:"varying vec3 vViewPosition;\nstruct LambertMaterial {\n\tvec3 diffuseColor;\n\tfloat specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\n#if defined( USE_LIGHT_PROBES )\n\tuniform vec3 lightProbe[ 9 ];\n#endif\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( LEGACY_LIGHTS )\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#else\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometryPosition;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometryPosition;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\tmaterial.ior = ior;\n\t#ifdef USE_SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULAR_COLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n\t\t#endif\n\t\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\t#ifdef USE_ANISOTROPYMAP\n\t\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n\t\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n\t\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n\t#else\n\t\tvec2 anisotropyV = anisotropyVector;\n\t#endif\n\tmaterial.anisotropy = length( anisotropyV );\n\tanisotropyV /= material.anisotropy;\n\tmaterial.anisotropy = saturate( material.anisotropy );\n\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x - tbn[ 1 ] * anisotropyV.y;\n\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x + tbn[ 0 ] * anisotropyV.y;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat anisotropy;\n\t\tfloat alphaT;\n\t\tvec3 anisotropyT;\n\t\tvec3 anisotropyB;\n\t#endif\n};\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\nvec3 sheenSpecularDirect = vec3( 0.0 );\nvec3 sheenSpecularIndirect = vec3(0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_ANISOTROPY\n\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\n\t\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\n\t\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n\t\tfloat v = 0.5 / ( gv + gl );\n\t\treturn saturate(v);\n\t}\n\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n\t\tfloat a2 = alphaT * alphaB;\n\t\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n\t\thighp float v2 = dot( v, v );\n\t\tfloat w2 = a2 / v2;\n\t\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\n\t}\n#endif\n#ifdef USE_CLEARCOAT\n\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n\t\tvec3 f0 = material.clearcoatF0;\n\t\tfloat f90 = material.clearcoatF90;\n\t\tfloat roughness = material.clearcoatRoughness;\n\t\tfloat alpha = pow2( roughness );\n\t\tvec3 halfDir = normalize( lightDir + viewDir );\n\t\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\t\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\t\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\t\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\t\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t\treturn F * ( V * D );\n\t}\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n\tvec3 f0 = material.specularColor;\n\tfloat f90 = material.specularF90;\n\tfloat roughness = material.roughness;\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t#ifdef USE_IRIDESCENCE\n\t\tF = mix( F, material.iridescenceFresnel, material.iridescence );\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat dotTL = dot( material.anisotropyT, lightDir );\n\t\tfloat dotTV = dot( material.anisotropyT, viewDir );\n\t\tfloat dotTH = dot( material.anisotropyT, halfDir );\n\t\tfloat dotBL = dot( material.anisotropyB, lightDir );\n\t\tfloat dotBV = dot( material.anisotropyB, viewDir );\n\t\tfloat dotBH = dot( material.anisotropyB, halfDir );\n\t\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n\t\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n\t#else\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t#endif\n\treturn F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometryNormal;\n\t\tvec3 viewDir = geometryViewDir;\n\t\tvec3 position = geometryPosition;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nvec3 geometryPosition = - vViewPosition;\nvec3 geometryNormal = normal;\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\nvec3 geometryClearcoatNormal = vec3( 0.0 );\n#ifdef USE_CLEARCOAT\n\tgeometryClearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\n\tif ( material.iridescenceThickness == 0.0 ) {\n\t\tmaterial.iridescence = 0.0;\n\t} else {\n\t\tmaterial.iridescence = saturate( material.iridescence );\n\t}\n\tif ( material.iridescence > 0.0 ) {\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n\t}\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometryPosition, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tvec4 spotColor;\n\tvec3 spotLightCoord;\n\tbool inSpotLightMap;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n\t\t#else\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#endif\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n\t\t#endif\n\t\t#undef SPOT_LIGHT_MAP_INDEX\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if defined( USE_LIGHT_PROBES )\n\t\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n\t#endif\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometryNormal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\t#ifdef USE_ANISOTROPY\n\t\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\n\t#else\n\t\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n\t\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\t#if defined( USE_POINTS_UV )\n\t\tvec2 uv = vUv;\n\t#else\n\t\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\t#endif\n#endif\n#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_POINTS_UV )\n\tvarying vec2 vUv;\n#else\n\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\t\tuniform mat3 uvTransform;\n\t#endif\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphcolor_vertex:"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\n\tvColor *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t#if defined( USE_COLOR_ALPHA )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n\t\t#elif defined( USE_COLOR )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n\t\t#endif\n\t}\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n\t#endif\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t\tuniform sampler2DArray morphTargetsTexture;\n\t\tuniform ivec2 morphTargetsTextureSize;\n\t\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n\t\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n\t\t\tint y = texelIndex / morphTargetsTextureSize.x;\n\t\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\n\t\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\n\t\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\n\t\t}\n\t#else\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\tuniform float morphTargetInfluences[ 8 ];\n\t\t#else\n\t\t\tuniform float morphTargetInfluences[ 4 ];\n\t\t#endif\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t\t#endif\n\t#endif\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal *= faceDirection;\n\t#endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\n\t\t#if defined( USE_NORMALMAP )\n\t\t\tvNormalMapUv\n\t\t#elif defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tvClearcoatNormalMapUv\n\t\t#else\n\t\t\tvUv\n\t\t#endif\n\t\t);\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn[0] *= faceDirection;\n\t\ttbn[1] *= faceDirection;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn2[0] *= faceDirection;\n\t\ttbn2[1] *= faceDirection;\n\t#endif\n#endif\nvec3 nonPerturbedNormal = normal;",normal_fragment_maps:"#ifdef USE_NORMALMAP_OBJECTSPACE\n\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\n\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\tnormal = normalize( tbn * mapN );\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( uv.st );\n\t\tvec2 st1 = dFdy( uv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n\t\treturn mat3( T * scale, B * scale, N );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = nonPerturbedNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif",iridescence_pars_fragment:"#ifdef USE_IRIDESCENCEMAP\n\tuniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform sampler2D iridescenceThicknessMap;\n#endif",opaque_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec2 packDepthToRG( in highp float v ) {\n\treturn packDepthToRGBA( v ).yx;\n}\nfloat unpackRGToDepth( const in highp vec2 v ) {\n\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\n\treturn depth * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * depth - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#if NUM_SPOT_LIGHT_COORDS > 0\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#if NUM_SPOT_LIGHT_COORDS > 0\n\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\tvec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition;\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n\t\t#endif\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\tuniform highp sampler2D boneTexture;\n\tuniform int boneTextureSize;\n\tmat4 getBoneMatrix( const in float i ) {\n\t\tfloat j = i * 4.0;\n\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\ty = dy * ( y + 0.5 );\n\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\treturn bone;\n\t}\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n\tmaterial.transmission = transmission;\n\tmaterial.transmissionAlpha = 1.0;\n\tmaterial.thickness = thickness;\n\tmaterial.attenuationDistance = attenuationDistance;\n\tmaterial.attenuationColor = attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmitted = getIBLVolumeRefraction(\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\n\t\tmaterial.attenuationColor, material.attenuationDistance );\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tfloat w0( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n\t}\n\tfloat w1( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n\t}\n\tfloat w2( float a ){\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n\t}\n\tfloat w3( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * a );\n\t}\n\tfloat g0( float a ) {\n\t\treturn w0( a ) + w1( a );\n\t}\n\tfloat g1( float a ) {\n\t\treturn w2( a ) + w3( a );\n\t}\n\tfloat h0( float a ) {\n\t\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n\t}\n\tfloat h1( float a ) {\n\t\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n\t}\n\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n\t\tuv = uv * texelSize.zw + 0.5;\n\t\tvec2 iuv = floor( uv );\n\t\tvec2 fuv = fract( uv );\n\t\tfloat g0x = g0( fuv.x );\n\t\tfloat g1x = g1( fuv.x );\n\t\tfloat h0x = h0( fuv.x );\n\t\tfloat h1x = h1( fuv.x );\n\t\tfloat h0y = h0( fuv.y );\n\t\tfloat h1y = h1( fuv.y );\n\t\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n\t\t\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n\t}\n\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n\t\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n\t\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n\t\tvec2 fLodSizeInv = 1.0 / fLodSize;\n\t\tvec2 cLodSizeInv = 1.0 / cLodSize;\n\t\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n\t\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n\t\treturn mix( fSample, cSample, fract( lod ) );\n\t}\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n\t}\n\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( isinf( attenuationDistance ) ) {\n\t\t\treturn vec3( 1.0 );\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n\t}\n#endif",uv_pars_fragment:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif",uv_pars_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tuniform mat3 mapTransform;\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform mat3 alphaMapTransform;\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tuniform mat3 lightMapTransform;\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tuniform mat3 aoMapTransform;\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tuniform mat3 bumpMapTransform;\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tuniform mat3 normalMapTransform;\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tuniform mat3 displacementMapTransform;\n\tvarying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tuniform mat3 emissiveMapTransform;\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tuniform mat3 metalnessMapTransform;\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tuniform mat3 roughnessMapTransform;\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tuniform mat3 anisotropyMapTransform;\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tuniform mat3 clearcoatMapTransform;\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform mat3 clearcoatNormalMapTransform;\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform mat3 clearcoatRoughnessMapTransform;\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tuniform mat3 sheenColorMapTransform;\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tuniform mat3 sheenRoughnessMapTransform;\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tuniform mat3 iridescenceMapTransform;\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform mat3 iridescenceThicknessMapTransform;\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tuniform mat3 specularMapTransform;\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tuniform mat3 specularColorMapTransform;\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tuniform mat3 specularIntensityMapTransform;\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif",uv_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",background_frag:"uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}",backgroundCube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",backgroundCube_frag:"#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include \n\t#include \n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_frag:"#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\tuniform vec2 anisotropyVector;\n\t#ifdef USE_ANISOTROPYMAP\n\t\tuniform sampler2D anisotropyMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \n#ifdef USE_POINTS_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\nvoid main() {\n\t#ifdef USE_POINTS_UV\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_vert:"#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}"},yi={common:{diffuse:{value:new fn(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new St},alphaMap:{value:null},alphaMapTransform:{value:new St},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new St}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new St}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new St}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new St},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new St},normalScale:{value:new yt(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new St},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new St}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new St}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new St}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new fn(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new fn(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new St},alphaTest:{value:0},uvTransform:{value:new St}},sprite:{diffuse:{value:new fn(16777215)},opacity:{value:1},center:{value:new yt(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new St},alphaMap:{value:null},alphaMapTransform:{value:new St},alphaTest:{value:0}}},Si={basic:{uniforms:ti([yi.common,yi.specularmap,yi.envmap,yi.aomap,yi.lightmap,yi.fog]),vertexShader:Mi.meshbasic_vert,fragmentShader:Mi.meshbasic_frag},lambert:{uniforms:ti([yi.common,yi.specularmap,yi.envmap,yi.aomap,yi.lightmap,yi.emissivemap,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.fog,yi.lights,{emissive:{value:new fn(0)}}]),vertexShader:Mi.meshlambert_vert,fragmentShader:Mi.meshlambert_frag},phong:{uniforms:ti([yi.common,yi.specularmap,yi.envmap,yi.aomap,yi.lightmap,yi.emissivemap,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.fog,yi.lights,{emissive:{value:new fn(0)},specular:{value:new fn(1118481)},shininess:{value:30}}]),vertexShader:Mi.meshphong_vert,fragmentShader:Mi.meshphong_frag},standard:{uniforms:ti([yi.common,yi.envmap,yi.aomap,yi.lightmap,yi.emissivemap,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.roughnessmap,yi.metalnessmap,yi.fog,yi.lights,{emissive:{value:new fn(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Mi.meshphysical_vert,fragmentShader:Mi.meshphysical_frag},toon:{uniforms:ti([yi.common,yi.aomap,yi.lightmap,yi.emissivemap,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.gradientmap,yi.fog,yi.lights,{emissive:{value:new fn(0)}}]),vertexShader:Mi.meshtoon_vert,fragmentShader:Mi.meshtoon_frag},matcap:{uniforms:ti([yi.common,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.fog,{matcap:{value:null}}]),vertexShader:Mi.meshmatcap_vert,fragmentShader:Mi.meshmatcap_frag},points:{uniforms:ti([yi.points,yi.fog]),vertexShader:Mi.points_vert,fragmentShader:Mi.points_frag},dashed:{uniforms:ti([yi.common,yi.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Mi.linedashed_vert,fragmentShader:Mi.linedashed_frag},depth:{uniforms:ti([yi.common,yi.displacementmap]),vertexShader:Mi.depth_vert,fragmentShader:Mi.depth_frag},normal:{uniforms:ti([yi.common,yi.bumpmap,yi.normalmap,yi.displacementmap,{opacity:{value:1}}]),vertexShader:Mi.meshnormal_vert,fragmentShader:Mi.meshnormal_frag},sprite:{uniforms:ti([yi.sprite,yi.fog]),vertexShader:Mi.sprite_vert,fragmentShader:Mi.sprite_frag},background:{uniforms:{uvTransform:{value:new St},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Mi.background_vert,fragmentShader:Mi.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:Mi.backgroundCube_vert,fragmentShader:Mi.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Mi.cube_vert,fragmentShader:Mi.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Mi.equirect_vert,fragmentShader:Mi.equirect_frag},distanceRGBA:{uniforms:ti([yi.common,yi.displacementmap,{referencePosition:{value:new Zt},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Mi.distanceRGBA_vert,fragmentShader:Mi.distanceRGBA_frag},shadow:{uniforms:ti([yi.lights,yi.fog,{color:{value:new fn(0)},opacity:{value:1}}]),vertexShader:Mi.shadow_vert,fragmentShader:Mi.shadow_frag}};Si.physical={uniforms:ti([Si.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new St},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new St},clearcoatNormalScale:{value:new yt(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new St},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new St},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new St},sheen:{value:0},sheenColor:{value:new fn(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new St},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new St},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new St},transmissionSamplerSize:{value:new yt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new St},attenuationDistance:{value:0},attenuationColor:{value:new fn(0)},specularColor:{value:new fn(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new St},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new St},anisotropyVector:{value:new yt},anisotropyMap:{value:null},anisotropyMapTransform:{value:new St}}]),vertexShader:Mi.meshphysical_vert,fragmentShader:Mi.meshphysical_frag};const Ei={r:0,b:0,g:0};function Ti(t,e,n,i,r,a,s){const c=new fn(0);let h,u,d=!0===a?0:1,p=null,f=0,m=null;function g(e,n){e.getRGB(Ei,ei(t)),i.buffers.color.setClear(Ei.r,Ei.g,Ei.b,n,s)}return{getClearColor:function(){return c},setClearColor:function(t,e=1){c.set(t),d=e,g(c,d)},getClearAlpha:function(){return d},setClearAlpha:function(t){d=t,g(c,d)},render:function(a,_){let v=!1,x=!0===_.isScene?_.background:null;if(x&&x.isTexture){x=(_.backgroundBlurriness>0?n:e).get(x)}null===x?g(c,d):x&&x.isColor&&(g(x,1),v=!0);const M=t.xr.getEnvironmentBlendMode();"additive"===M?i.buffers.color.setClear(0,0,0,1,s):"alpha-blend"===M&&i.buffers.color.setClear(0,0,0,0,s),(t.autoClear||v)&&t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil),x&&(x.isCubeTexture||x.mapping===y)?(void 0===u&&(u=new Kn(new Qn(1,1,1),new ii({name:"BackgroundCubeMaterial",uniforms:$n(Si.backgroundCube.uniforms),vertexShader:Si.backgroundCube.vertexShader,fragmentShader:Si.backgroundCube.fragmentShader,side:l,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(t,e,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(u)),u.material.uniforms.envMap.value=x,u.material.uniforms.flipEnvMap.value=x.isCubeTexture&&!1===x.isRenderTargetTexture?-1:1,u.material.uniforms.backgroundBlurriness.value=_.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=_.backgroundIntensity,u.material.toneMapped=Dt.getTransfer(x.colorSpace)!==J,p===x&&f===x.version&&m===t.toneMapping||(u.material.needsUpdate=!0,p=x,f=x.version,m=t.toneMapping),u.layers.enableAll(),a.unshift(u,u.geometry,u.material,0,0,null)):x&&x.isTexture&&(void 0===h&&(h=new Kn(new xi(2,2),new ii({name:"BackgroundMaterial",uniforms:$n(Si.background.uniforms),vertexShader:Si.background.vertexShader,fragmentShader:Si.background.fragmentShader,side:o,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),Object.defineProperty(h.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(h)),h.material.uniforms.t2D.value=x,h.material.uniforms.backgroundIntensity.value=_.backgroundIntensity,h.material.toneMapped=Dt.getTransfer(x.colorSpace)!==J,!0===x.matrixAutoUpdate&&x.updateMatrix(),h.material.uniforms.uvTransform.value.copy(x.matrix),p===x&&f===x.version&&m===t.toneMapping||(h.material.needsUpdate=!0,p=x,f=x.version,m=t.toneMapping),h.layers.enableAll(),a.unshift(h,h.geometry,h.material,0,0,null))}}}function bi(t,e,n,i){const r=t.getParameter(t.MAX_VERTEX_ATTRIBS),a=i.isWebGL2?null:e.get("OES_vertex_array_object"),s=i.isWebGL2||null!==a,o={},l=p(null);let c=l,h=!1;function u(e){return i.isWebGL2?t.bindVertexArray(e):a.bindVertexArrayOES(e)}function d(e){return i.isWebGL2?t.deleteVertexArray(e):a.deleteVertexArrayOES(e)}function p(t){const e=[],n=[],i=[];for(let t=0;t=0){const n=r[e];let i=a[e];if(void 0===i&&("instanceMatrix"===e&&t.instanceMatrix&&(i=t.instanceMatrix),"instanceColor"===e&&t.instanceColor&&(i=t.instanceColor)),void 0===n)return!0;if(n.attribute!==i)return!0;if(i&&n.data!==i.data)return!0;s++}}return c.attributesNum!==s||c.index!==i}(r,x,d,M),y&&function(t,e,n,i){const r={},a=e.attributes;let s=0;const o=n.getAttributes();for(const e in o){if(o[e].location>=0){let n=a[e];void 0===n&&("instanceMatrix"===e&&t.instanceMatrix&&(n=t.instanceMatrix),"instanceColor"===e&&t.instanceColor&&(n=t.instanceColor));const i={};i.attribute=n,n&&n.data&&(i.data=n.data),r[e]=i,s++}}c.attributes=r,c.attributesNum=s,c.index=i}(r,x,d,M)}else{const t=!0===l.wireframe;c.geometry===x.id&&c.program===d.id&&c.wireframe===t||(c.geometry=x.id,c.program=d.id,c.wireframe=t,y=!0)}null!==M&&n.update(M,t.ELEMENT_ARRAY_BUFFER),(y||h)&&(h=!1,function(r,a,s,o){if(!1===i.isWebGL2&&(r.isInstancedMesh||o.isInstancedBufferGeometry)&&null===e.get("ANGLE_instanced_arrays"))return;f();const l=o.attributes,c=s.getAttributes(),h=a.defaultAttributeValues;for(const e in c){const a=c[e];if(a.location>=0){let s=l[e];if(void 0===s&&("instanceMatrix"===e&&r.instanceMatrix&&(s=r.instanceMatrix),"instanceColor"===e&&r.instanceColor&&(s=r.instanceColor)),void 0!==s){const e=s.normalized,l=s.itemSize,c=n.get(s);if(void 0===c)continue;const h=c.buffer,u=c.type,d=c.bytesPerElement,p=!0===i.isWebGL2&&(u===t.INT||u===t.UNSIGNED_INT||s.gpuType===P);if(s.isInterleavedBufferAttribute){const n=s.data,i=n.stride,c=s.offset;if(n.isInstancedInterleavedBuffer){for(let t=0;t0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0)return"highp";e="mediump"}return"mediump"===e&&t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}const a="undefined"!=typeof WebGL2RenderingContext&&"WebGL2RenderingContext"===t.constructor.name;let s=void 0!==n.precision?n.precision:"highp";const o=r(s);o!==s&&(console.warn("THREE.WebGLRenderer:",s,"not supported, using",o,"instead."),s=o);const l=a||e.has("WEBGL_draw_buffers"),c=!0===n.logarithmicDepthBuffer,h=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),u=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),d=t.getParameter(t.MAX_TEXTURE_SIZE),p=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),f=t.getParameter(t.MAX_VERTEX_ATTRIBS),m=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),g=t.getParameter(t.MAX_VARYING_VECTORS),_=t.getParameter(t.MAX_FRAGMENT_UNIFORM_VECTORS),v=u>0,x=a||e.has("OES_texture_float");return{isWebGL2:a,drawBuffers:l,getMaxAnisotropy:function(){if(void 0!==i)return i;if(!0===e.has("EXT_texture_filter_anisotropic")){const n=e.get("EXT_texture_filter_anisotropic");i=t.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else i=0;return i},getMaxPrecision:r,precision:s,logarithmicDepthBuffer:c,maxTextures:h,maxVertexTextures:u,maxTextureSize:d,maxCubemapSize:p,maxAttributes:f,maxVertexUniforms:m,maxVaryings:g,maxFragmentUniforms:_,vertexTextures:v,floatFragmentTextures:x,floatVertexTextures:v&&x,maxSamples:a?t.getParameter(t.MAX_SAMPLES):0}}function Ri(t){const e=this;let n=null,i=0,r=!1,a=!1;const s=new pi,o=new St,l={value:null,needsUpdate:!1};function c(t,n,i,r){const a=null!==t?t.length:0;let c=null;if(0!==a){if(c=l.value,!0!==r||null===c){const e=i+4*a,r=n.matrixWorldInverse;o.getNormalMatrix(r),(null===c||c.length0);e.numPlanes=i,e.numIntersection=0}();else{const t=a?0:i,e=4*t;let r=f.clippingState||null;l.value=r,r=c(u,o,e,h);for(let t=0;t!==e;++t)r[t]=n[t];f.clippingState=r,this.numIntersection=d?this.numPlanes:0,this.numPlanes+=t}}}function Ci(t){let e=new WeakMap;function n(t,e){return 303===e?t.mapping=x:304===e&&(t.mapping=M),t}function i(t){const n=t.target;n.removeEventListener("dispose",i);const r=e.get(n);void 0!==r&&(e.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture&&!1===r.isRenderTargetTexture){const a=r.mapping;if(303===a||304===a){if(e.has(r)){return n(e.get(r).texture,r.mapping)}{const a=r.image;if(a&&a.height>0){const s=new ci(a.height/2);return s.fromEquirectangularTexture(t,r),e.set(r,s),r.addEventListener("dispose",i),n(s.texture,r.mapping)}return null}}}return r},dispose:function(){e=new WeakMap}}}class Li extends ri{constructor(t=-1,e=1,n=1,i=-1,r=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=n,this.bottom=i,this.near=r,this.far=a,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=null===t.view?null:Object.assign({},t.view),this}setViewOffset(t,e,n,i,r,a){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let r=n-t,a=n+t,s=i+e,o=i-e;if(null!==this.view&&this.view.enabled){const t=(this.right-this.left)/this.view.fullWidth/this.zoom,e=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=t*this.view.offsetX,a=r+t*this.view.width,s-=e*this.view.offsetY,o=s-e*this.view.height}this.projectionMatrix.makeOrthographic(r,a,s,o,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,null!==this.view&&(e.object.view=Object.assign({},this.view)),e}}const Pi=[.125,.215,.35,.446,.526,.582],Ui=20,Di=new Li,Ii=new fn;let Ni=null,Oi=0,Fi=0;const zi=(1+Math.sqrt(5))/2,Bi=1/zi,Hi=[new Zt(1,1,1),new Zt(-1,1,1),new Zt(1,1,-1),new Zt(-1,1,-1),new Zt(0,zi,Bi),new Zt(0,zi,-Bi),new Zt(Bi,0,zi),new Zt(-Bi,0,zi),new Zt(zi,Bi,0),new Zt(-zi,Bi,0)];class Gi{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,n=.1,i=100){Ni=this._renderer.getRenderTarget(),Oi=this._renderer.getActiveCubeFace(),Fi=this._renderer.getActiveMipmapLevel(),this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(t,n,i,r),e>0&&this._blur(r,0,0,e),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=Xi(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=Wi(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let t=0;tt-4?o=Pi[s-t+4-1]:0===s&&(o=0),i.push(o);const l=1/(a-2),c=-l,h=1+l,u=[c,c,h,c,h,h,c,c,h,h,c,h],d=6,p=6,f=3,m=2,g=1,_=new Float32Array(f*p*d),v=new Float32Array(m*p*d),x=new Float32Array(g*p*d);for(let t=0;t2?0:-1,i=[e,n,0,e+2/3,n,0,e+2/3,n+1,0,e,n,0,e+2/3,n+1,0,e,n+1,0];_.set(i,f*p*t),v.set(u,m*p*t);const r=[t,t,t,t,t,t];x.set(r,g*p*t)}const M=new Un;M.setAttribute("position",new yn(_,f)),M.setAttribute("uv",new yn(v,m)),M.setAttribute("faceIndex",new yn(x,g)),e.push(M),r>4&&r--}return{lodPlanes:e,sizeLods:n,sigmas:i}}(i)),this._blurMaterial=function(t,e,n){const i=new Float32Array(Ui),r=new Zt(0,1,0),a=new ii({name:"SphericalGaussianBlur",defines:{n:Ui,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/n,CUBEUV_MAX_MIP:`${t}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:ji(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1});return a}(i,t,e)}return i}_compileMaterial(t){const e=new Kn(this._lodPlanes[0],t);this._renderer.compile(e,Di)}_sceneToCubeUV(t,e,n,i){const r=new ai(90,1,e,n),a=[1,-1,1,1,1,1],s=[1,1,1,-1,-1,-1],o=this._renderer,c=o.autoClear,h=o.toneMapping;o.getClearColor(Ii),o.toneMapping=p,o.autoClear=!1;const u=new vn({name:"PMREM.Background",side:l,depthWrite:!1,depthTest:!1}),d=new Kn(new Qn,u);let f=!1;const m=t.background;m?m.isColor&&(u.color.copy(m),t.background=null,f=!0):(u.color.copy(Ii),f=!0);for(let e=0;e<6;e++){const n=e%3;0===n?(r.up.set(0,a[e],0),r.lookAt(s[e],0,0)):1===n?(r.up.set(0,0,a[e]),r.lookAt(0,s[e],0)):(r.up.set(0,a[e],0),r.lookAt(0,0,s[e]));const l=this._cubeSize;ki(i,n*l,e>2?l:0,l,l),o.setRenderTarget(i),f&&o.render(d,r),o.render(t,r)}d.geometry.dispose(),d.material.dispose(),o.toneMapping=h,o.autoClear=c,t.background=m}_textureToCubeUV(t,e){const n=this._renderer,i=t.mapping===x||t.mapping===M;i?(null===this._cubemapMaterial&&(this._cubemapMaterial=Xi()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===t.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=Wi());const r=i?this._cubemapMaterial:this._equirectMaterial,a=new Kn(this._lodPlanes[0],r);r.uniforms.envMap.value=t;const s=this._cubeSize;ki(e,0,0,3*s,2*s),n.setRenderTarget(e),n.render(a,Di)}_applyPMREM(t){const e=this._renderer,n=e.autoClear;e.autoClear=!1;for(let e=1;eUi&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${f} samples when the maximum is set to 20`);const m=[];let g=0;for(let t=0;t_-4?i-_+4:0),4*(this._cubeSize-v),3*v,2*v),o.setRenderTarget(e),o.render(c,Di)}}function Vi(t,e,n){const i=new Xt(t,e,n);return i.texture.mapping=y,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function ki(t,e,n,i,r){t.viewport.set(e,n,i,r),t.scissor.set(e,n,i,r)}function Wi(){return new ii({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:ji(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function Xi(){return new ii({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:ji(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function ji(){return"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t"}function Yi(t){let e=new WeakMap,n=null;function i(t){const n=t.target;n.removeEventListener("dispose",i);const r=e.get(n);void 0!==r&&(e.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){const a=r.mapping,s=303===a||304===a,o=a===x||a===M;if(s||o){if(r.isRenderTargetTexture&&!0===r.needsPMREMUpdate){r.needsPMREMUpdate=!1;let i=e.get(r);return null===n&&(n=new Gi(t)),i=s?n.fromEquirectangular(r,i):n.fromCubemap(r,i),e.set(r,i),i.texture}if(e.has(r))return e.get(r).texture;{const a=r.image;if(s&&a&&a.height>0||o&&a&&function(t){let e=0;const n=6;for(let i=0;ie.maxTextureSize&&(b=Math.ceil(T/e.maxTextureSize),T=e.maxTextureSize);const w=new Float32Array(T*b*4*p),A=new jt(w,T,b,p);A.type=D,A.needsUpdate=!0;const R=4*E;for(let L=0;L0)return t;const r=e*n;let a=sr[r];if(void 0===a&&(a=new Float32Array(r),sr[r]=a),0!==e){i.toArray(a,0);for(let i=1,r=0;i!==e;++i)r+=n,t[i].toArray(a,r)}return a}function dr(t,e){if(t.length!==e.length)return!1;for(let n=0,i=t.length;n":" "} ${r}: ${n[t]}`)}return i.join("\n")}(t.getShaderSource(e),i)}return r}function ha(t,e){const n=function(t){const e=Dt.getPrimaries(Dt.workingColorSpace),n=Dt.getPrimaries(t);let i;switch(e===n?i="":e===tt&&n===Q?i="LinearDisplayP3ToLinearSRGB":e===Q&&n===tt&&(i="LinearSRGBToLinearDisplayP3"),t){case Y:case Z:return[i,"LinearTransferOETF"];case j:case q:return[i,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",t),[i,"LinearTransferOETF"]}}(e);return`vec4 ${t}( vec4 value ) { return ${n[0]}( ${n[1]}( value ) ); }`}function ua(t,e){let n;switch(e){case f:n="Linear";break;case m:n="Reinhard";break;case g:n="OptimizedCineon";break;case _:n="ACESFilmic";break;case v:n="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),n="Linear"}return"vec3 "+t+"( vec3 color ) { return "+n+"ToneMapping( color ); }"}function da(t){return""!==t}function pa(t,e){const n=e.numSpotLightShadows+e.numSpotLightMaps-e.numSpotLightShadowsWithMaps;return t.replace(/NUM_DIR_LIGHTS/g,e.numDirLights).replace(/NUM_SPOT_LIGHTS/g,e.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,e.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,n).replace(/NUM_RECT_AREA_LIGHTS/g,e.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,e.numPointLights).replace(/NUM_HEMI_LIGHTS/g,e.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,e.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,e.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,e.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,e.numPointLightShadows)}function fa(t,e){return t.replace(/NUM_CLIPPING_PLANES/g,e.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,e.numClippingPlanes-e.numClipIntersection)}const ma=/^[ \t]*#include +<([\w\d./]+)>/gm;function ga(t){return t.replace(ma,va)}const _a=new Map([["encodings_fragment","colorspace_fragment"],["encodings_pars_fragment","colorspace_pars_fragment"],["output_fragment","opaque_fragment"]]);function va(t,e){let n=Mi[e];if(void 0===n){const t=_a.get(e);if(void 0===t)throw new Error("Can not resolve #include <"+e+">");n=Mi[t],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,t)}return ga(n)}const xa=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Ma(t){return t.replace(xa,ya)}function ya(t,e,n,i){let r="";for(let t=parseInt(e);t0&&(w+="\n"),A=[E,"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,T].filter(da).join("\n"),A.length>0&&(A+="\n")):(w=[Sa(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,T,n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+_:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.displacementMap?"#define USE_DISPLACEMENTMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.mapUv?"#define MAP_UV "+n.mapUv:"",n.alphaMapUv?"#define ALPHAMAP_UV "+n.alphaMapUv:"",n.lightMapUv?"#define LIGHTMAP_UV "+n.lightMapUv:"",n.aoMapUv?"#define AOMAP_UV "+n.aoMapUv:"",n.emissiveMapUv?"#define EMISSIVEMAP_UV "+n.emissiveMapUv:"",n.bumpMapUv?"#define BUMPMAP_UV "+n.bumpMapUv:"",n.normalMapUv?"#define NORMALMAP_UV "+n.normalMapUv:"",n.displacementMapUv?"#define DISPLACEMENTMAP_UV "+n.displacementMapUv:"",n.metalnessMapUv?"#define METALNESSMAP_UV "+n.metalnessMapUv:"",n.roughnessMapUv?"#define ROUGHNESSMAP_UV "+n.roughnessMapUv:"",n.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+n.anisotropyMapUv:"",n.clearcoatMapUv?"#define CLEARCOATMAP_UV "+n.clearcoatMapUv:"",n.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+n.clearcoatNormalMapUv:"",n.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+n.clearcoatRoughnessMapUv:"",n.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+n.iridescenceMapUv:"",n.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+n.iridescenceThicknessMapUv:"",n.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+n.sheenColorMapUv:"",n.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+n.sheenRoughnessMapUv:"",n.specularMapUv?"#define SPECULARMAP_UV "+n.specularMapUv:"",n.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+n.specularColorMapUv:"",n.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+n.specularIntensityMapUv:"",n.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+n.transmissionMapUv:"",n.thicknessMapUv?"#define THICKNESSMAP_UV "+n.thicknessMapUv:"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&!1===n.flatShading?"#define USE_MORPHNORMALS":"",n.morphColors&&n.isWebGL2?"#define USE_MORPHCOLORS":"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+n.morphTextureStride:"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_COUNT "+n.morphTargetsCount:"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+m:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.useLegacyLights?"#define LEGACY_LIGHTS":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1","\tattribute vec2 uv1;","#endif","#ifdef USE_UV2","\tattribute vec2 uv2;","#endif","#ifdef USE_UV3","\tattribute vec2 uv3;","#endif","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(da).join("\n"),A=[E,Sa(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,T,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+g:"",n.envMap?"#define "+_:"",n.envMap?"#define "+v:"",S?"#define CUBEUV_TEXEL_WIDTH "+S.texelWidth:"",S?"#define CUBEUV_TEXEL_HEIGHT "+S.texelHeight:"",S?"#define CUBEUV_MAX_MIP "+S.maxMip+".0":"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoat?"#define USE_CLEARCOAT":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescence?"#define USE_IRIDESCENCE":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaTest?"#define USE_ALPHATEST":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.sheen?"#define USE_SHEEN":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+m:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.useLegacyLights?"#define LEGACY_LIGHTS":"",n.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",n.toneMapping!==p?"#define TONE_MAPPING":"",n.toneMapping!==p?Mi.tonemapping_pars_fragment:"",n.toneMapping!==p?ua("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",n.opaque?"#define OPAQUE":"",Mi.colorspace_pars_fragment,ha("linearToOutputTexel",n.outputColorSpace),n.useDepthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(da).join("\n")),c=ga(c),c=pa(c,n),c=fa(c,n),f=ga(f),f=pa(f,n),f=fa(f,n),c=Ma(c),f=Ma(f),n.isWebGL2&&!0!==n.isRawShaderMaterial&&(R="#version 300 es\n",w=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+w,A=["precision mediump sampler2DArray;","#define varying in",n.glslVersion===it?"":"layout(location = 0) out highp vec4 pc_fragColor;",n.glslVersion===it?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+A);const C=R+w+c,L=R+A+f,P=sa(o,o.VERTEX_SHADER,C),U=sa(o,o.FRAGMENT_SHADER,L);function D(e){if(t.debug.checkShaderErrors){const n=o.getProgramInfoLog(b).trim(),i=o.getShaderInfoLog(P).trim(),r=o.getShaderInfoLog(U).trim();let a=!0,s=!0;if(!1===o.getProgramParameter(b,o.LINK_STATUS))if(a=!1,"function"==typeof t.debug.onShaderError)t.debug.onShaderError(o,b,P,U);else{const t=ca(o,P,"vertex"),e=ca(o,U,"fragment");console.error("THREE.WebGLProgram: Shader Error "+o.getError()+" - VALIDATE_STATUS "+o.getProgramParameter(b,o.VALIDATE_STATUS)+"\n\nProgram Info Log: "+n+"\n"+t+"\n"+e)}else""!==n?console.warn("THREE.WebGLProgram: Program Info Log:",n):""!==i&&""!==r||(s=!1);s&&(e.diagnostics={runnable:a,programLog:n,vertexShader:{log:i,prefix:w},fragmentShader:{log:r,prefix:A}})}o.deleteShader(P),o.deleteShader(U),I=new aa(o,b),N=function(t,e){const n={},i=t.getProgramParameter(e,t.ACTIVE_ATTRIBUTES);for(let r=0;r0,Z=a.clearcoat>0,K=a.iridescence>0,Q=a.sheen>0,tt=a.transmission>0,et=q&&!!a.anisotropyMap,nt=Z&&!!a.clearcoatMap,it=Z&&!!a.clearcoatNormalMap,rt=Z&&!!a.clearcoatRoughnessMap,at=K&&!!a.iridescenceMap,st=K&&!!a.iridescenceThicknessMap,ot=Q&&!!a.sheenColorMap,lt=Q&&!!a.sheenRoughnessMap,ct=!!a.specularMap,ht=!!a.specularColorMap,ut=!!a.specularIntensityMap,dt=tt&&!!a.transmissionMap,pt=tt&&!!a.thicknessMap,ft=!!a.gradientMap,mt=!!a.alphaMap,gt=a.alphaTest>0,_t=!!a.alphaHash,vt=!!a.extensions,xt=!!S.attributes.uv1,Mt=!!S.attributes.uv2,yt=!!S.attributes.uv3;let St=p;return a.toneMapped&&(null!==I&&!0!==I.isXRRenderTarget||(St=t.toneMapping)),{isWebGL2:u,shaderID:w,shaderType:a.type,shaderName:a.name,vertexShader:C,fragmentShader:L,defines:a.defines,customVertexShaderID:P,customFragmentShaderID:U,isRawShaderMaterial:!0===a.isRawShaderMaterial,glslVersion:a.glslVersion,precision:m,instancing:N,instancingColor:N&&null!==x.instanceColor,supportsVertexTextures:f,outputColorSpace:null===I?t.outputColorSpace:!0===I.isXRRenderTarget?I.texture.colorSpace:Y,map:O,matcap:F,envMap:z,envMapMode:z&&T.mapping,envMapCubeUVHeight:b,aoMap:B,lightMap:H,bumpMap:G,normalMap:V,displacementMap:f&&k,emissiveMap:W,normalMapObjectSpace:V&&1===a.normalMapType,normalMapTangentSpace:V&&0===a.normalMapType,metalnessMap:X,roughnessMap:j,anisotropy:q,anisotropyMap:et,clearcoat:Z,clearcoatMap:nt,clearcoatNormalMap:it,clearcoatRoughnessMap:rt,iridescence:K,iridescenceMap:at,iridescenceThicknessMap:st,sheen:Q,sheenColorMap:ot,sheenRoughnessMap:lt,specularMap:ct,specularColorMap:ht,specularIntensityMap:ut,transmission:tt,transmissionMap:dt,thicknessMap:pt,gradientMap:ft,opaque:!1===a.transparent&&1===a.blending,alphaMap:mt,alphaTest:gt,alphaHash:_t,combine:a.combine,mapUv:O&&_(a.map.channel),aoMapUv:B&&_(a.aoMap.channel),lightMapUv:H&&_(a.lightMap.channel),bumpMapUv:G&&_(a.bumpMap.channel),normalMapUv:V&&_(a.normalMap.channel),displacementMapUv:k&&_(a.displacementMap.channel),emissiveMapUv:W&&_(a.emissiveMap.channel),metalnessMapUv:X&&_(a.metalnessMap.channel),roughnessMapUv:j&&_(a.roughnessMap.channel),anisotropyMapUv:et&&_(a.anisotropyMap.channel),clearcoatMapUv:nt&&_(a.clearcoatMap.channel),clearcoatNormalMapUv:it&&_(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:rt&&_(a.clearcoatRoughnessMap.channel),iridescenceMapUv:at&&_(a.iridescenceMap.channel),iridescenceThicknessMapUv:st&&_(a.iridescenceThicknessMap.channel),sheenColorMapUv:ot&&_(a.sheenColorMap.channel),sheenRoughnessMapUv:lt&&_(a.sheenRoughnessMap.channel),specularMapUv:ct&&_(a.specularMap.channel),specularColorMapUv:ht&&_(a.specularColorMap.channel),specularIntensityMapUv:ut&&_(a.specularIntensityMap.channel),transmissionMapUv:dt&&_(a.transmissionMap.channel),thicknessMapUv:pt&&_(a.thicknessMap.channel),alphaMapUv:mt&&_(a.alphaMap.channel),vertexTangents:!!S.attributes.tangent&&(V||q),vertexColors:a.vertexColors,vertexAlphas:!0===a.vertexColors&&!!S.attributes.color&&4===S.attributes.color.itemSize,vertexUv1s:xt,vertexUv2s:Mt,vertexUv3s:yt,pointsUvs:!0===x.isPoints&&!!S.attributes.uv&&(O||mt),fog:!!M,useFog:!0===a.fog,fogExp2:M&&M.isFogExp2,flatShading:!0===a.flatShading,sizeAttenuation:!0===a.sizeAttenuation,logarithmicDepthBuffer:d,skinning:!0===x.isSkinnedMesh,morphTargets:void 0!==S.morphAttributes.position,morphNormals:void 0!==S.morphAttributes.normal,morphColors:void 0!==S.morphAttributes.color,morphTargetsCount:R,morphTextureStride:D,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numSpotLightMaps:o.spotLightMap.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numSpotLightShadowsWithMaps:o.numSpotLightShadowsWithMaps,numLightProbes:o.numLightProbes,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:a.dithering,shadowMapEnabled:t.shadowMap.enabled&&h.length>0,shadowMapType:t.shadowMap.type,toneMapping:St,useLegacyLights:t._useLegacyLights,decodeVideoTexture:O&&!0===a.map.isVideoTexture&&Dt.getTransfer(a.map.colorSpace)===J,premultipliedAlpha:a.premultipliedAlpha,doubleSided:2===a.side,flipSided:a.side===l,useDepthPacking:a.depthPacking>=0,depthPacking:a.depthPacking||0,index0AttributeName:a.index0AttributeName,extensionDerivatives:vt&&!0===a.extensions.derivatives,extensionFragDepth:vt&&!0===a.extensions.fragDepth,extensionDrawBuffers:vt&&!0===a.extensions.drawBuffers,extensionShaderTextureLOD:vt&&!0===a.extensions.shaderTextureLOD,rendererExtensionFragDepth:u||i.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||i.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||i.has("EXT_shader_texture_lod"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:a.customProgramCacheKey()}},getProgramCacheKey:function(e){const n=[];if(e.shaderID?n.push(e.shaderID):(n.push(e.customVertexShaderID),n.push(e.customFragmentShaderID)),void 0!==e.defines)for(const t in e.defines)n.push(t),n.push(e.defines[t]);return!1===e.isRawShaderMaterial&&(!function(t,e){t.push(e.precision),t.push(e.outputColorSpace),t.push(e.envMapMode),t.push(e.envMapCubeUVHeight),t.push(e.mapUv),t.push(e.alphaMapUv),t.push(e.lightMapUv),t.push(e.aoMapUv),t.push(e.bumpMapUv),t.push(e.normalMapUv),t.push(e.displacementMapUv),t.push(e.emissiveMapUv),t.push(e.metalnessMapUv),t.push(e.roughnessMapUv),t.push(e.anisotropyMapUv),t.push(e.clearcoatMapUv),t.push(e.clearcoatNormalMapUv),t.push(e.clearcoatRoughnessMapUv),t.push(e.iridescenceMapUv),t.push(e.iridescenceThicknessMapUv),t.push(e.sheenColorMapUv),t.push(e.sheenRoughnessMapUv),t.push(e.specularMapUv),t.push(e.specularColorMapUv),t.push(e.specularIntensityMapUv),t.push(e.transmissionMapUv),t.push(e.thicknessMapUv),t.push(e.combine),t.push(e.fogExp2),t.push(e.sizeAttenuation),t.push(e.morphTargetsCount),t.push(e.morphAttributeCount),t.push(e.numDirLights),t.push(e.numPointLights),t.push(e.numSpotLights),t.push(e.numSpotLightMaps),t.push(e.numHemiLights),t.push(e.numRectAreaLights),t.push(e.numDirLightShadows),t.push(e.numPointLightShadows),t.push(e.numSpotLightShadows),t.push(e.numSpotLightShadowsWithMaps),t.push(e.numLightProbes),t.push(e.shadowMapType),t.push(e.toneMapping),t.push(e.numClippingPlanes),t.push(e.numClipIntersection),t.push(e.depthPacking)}(n,e),function(t,e){o.disableAll(),e.isWebGL2&&o.enable(0);e.supportsVertexTextures&&o.enable(1);e.instancing&&o.enable(2);e.instancingColor&&o.enable(3);e.matcap&&o.enable(4);e.envMap&&o.enable(5);e.normalMapObjectSpace&&o.enable(6);e.normalMapTangentSpace&&o.enable(7);e.clearcoat&&o.enable(8);e.iridescence&&o.enable(9);e.alphaTest&&o.enable(10);e.vertexColors&&o.enable(11);e.vertexAlphas&&o.enable(12);e.vertexUv1s&&o.enable(13);e.vertexUv2s&&o.enable(14);e.vertexUv3s&&o.enable(15);e.vertexTangents&&o.enable(16);e.anisotropy&&o.enable(17);e.alphaHash&&o.enable(18);t.push(o.mask),o.disableAll(),e.fog&&o.enable(0);e.useFog&&o.enable(1);e.flatShading&&o.enable(2);e.logarithmicDepthBuffer&&o.enable(3);e.skinning&&o.enable(4);e.morphTargets&&o.enable(5);e.morphNormals&&o.enable(6);e.morphColors&&o.enable(7);e.premultipliedAlpha&&o.enable(8);e.shadowMapEnabled&&o.enable(9);e.useLegacyLights&&o.enable(10);e.doubleSided&&o.enable(11);e.flipSided&&o.enable(12);e.useDepthPacking&&o.enable(13);e.dithering&&o.enable(14);e.transmission&&o.enable(15);e.sheen&&o.enable(16);e.opaque&&o.enable(17);e.pointsUvs&&o.enable(18);e.decodeVideoTexture&&o.enable(19);t.push(o.mask)}(n,e),n.push(t.outputColorSpace)),n.push(e.customProgramCacheKey),n.join()},getUniforms:function(t){const e=g[t.type];let n;if(e){const t=Si[e];n=ni.clone(t.uniforms)}else n=t.uniforms;return n},acquireProgram:function(e,n){let i;for(let t=0,e=h.length;t0?i.push(h):!0===s.transparent?r.push(h):n.push(h)},unshift:function(t,e,s,o,l,c){const h=a(t,e,s,o,l,c);s.transmission>0?i.unshift(h):!0===s.transparent?r.unshift(h):n.unshift(h)},finish:function(){for(let n=e,i=t.length;n1&&n.sort(t||Ca),i.length>1&&i.sort(e||La),r.length>1&&r.sort(e||La)}}}function Ua(){let t=new WeakMap;return{get:function(e,n){const i=t.get(e);let r;return void 0===i?(r=new Pa,t.set(e,[r])):n>=i.length?(r=new Pa,i.push(r)):r=i[n],r},dispose:function(){t=new WeakMap}}}function Da(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let n;switch(e.type){case"DirectionalLight":n={direction:new Zt,color:new fn};break;case"SpotLight":n={position:new Zt,direction:new Zt,color:new fn,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new Zt,color:new fn,distance:0,decay:0};break;case"HemisphereLight":n={direction:new Zt,skyColor:new fn,groundColor:new fn};break;case"RectAreaLight":n={color:new fn,position:new Zt,halfWidth:new Zt,halfHeight:new Zt}}return t[e.id]=n,n}}}let Ia=0;function Na(t,e){return(e.castShadow?2:0)-(t.castShadow?2:0)+(e.map?1:0)-(t.map?1:0)}function Oa(t,e){const n=new Da,i=function(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let n;switch(e.type){case"DirectionalLight":case"SpotLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new yt};break;case"PointLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new yt,shadowCameraNear:1,shadowCameraFar:1e3}}return t[e.id]=n,n}}}(),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let t=0;t<9;t++)r.probe.push(new Zt);const a=new Zt,s=new be,o=new be;return{setup:function(a,s){let o=0,l=0,c=0;for(let t=0;t<9;t++)r.probe[t].set(0,0,0);let h=0,u=0,d=0,p=0,f=0,m=0,g=0,_=0,v=0,x=0,M=0;a.sort(Na);const y=!0===s?Math.PI:1;for(let t=0,e=a.length;t0&&(e.isWebGL2||!0===t.has("OES_texture_float_linear")?(r.rectAreaLTC1=yi.LTC_FLOAT_1,r.rectAreaLTC2=yi.LTC_FLOAT_2):!0===t.has("OES_texture_half_float_linear")?(r.rectAreaLTC1=yi.LTC_HALF_1,r.rectAreaLTC2=yi.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),r.ambient[0]=o,r.ambient[1]=l,r.ambient[2]=c;const S=r.hash;S.directionalLength===h&&S.pointLength===u&&S.spotLength===d&&S.rectAreaLength===p&&S.hemiLength===f&&S.numDirectionalShadows===m&&S.numPointShadows===g&&S.numSpotShadows===_&&S.numSpotMaps===v&&S.numLightProbes===M||(r.directional.length=h,r.spot.length=d,r.rectArea.length=p,r.point.length=u,r.hemi.length=f,r.directionalShadow.length=m,r.directionalShadowMap.length=m,r.pointShadow.length=g,r.pointShadowMap.length=g,r.spotShadow.length=_,r.spotShadowMap.length=_,r.directionalShadowMatrix.length=m,r.pointShadowMatrix.length=g,r.spotLightMatrix.length=_+v-x,r.spotLightMap.length=v,r.numSpotLightShadowsWithMaps=x,r.numLightProbes=M,S.directionalLength=h,S.pointLength=u,S.spotLength=d,S.rectAreaLength=p,S.hemiLength=f,S.numDirectionalShadows=m,S.numPointShadows=g,S.numSpotShadows=_,S.numSpotMaps=v,S.numLightProbes=M,r.version=Ia++)},setupView:function(t,e){let n=0,i=0,l=0,c=0,h=0;const u=e.matrixWorldInverse;for(let e=0,d=t.length;e=a.length?(s=new Fa(t,e),a.push(s)):s=a[r],s},dispose:function(){n=new WeakMap}}}class Ba extends _n{constructor(t){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=3200,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}}class Ha extends _n{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}}function Ga(t,e,n){let i=new gi;const a=new yt,c=new yt,h=new kt,u=new Ba({depthPacking:3201}),d=new Ha,p={},f=n.maxTextureSize,m={[o]:l,[l]:o,2:2},g=new ii({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new yt},radius:{value:4}},vertexShader:"void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),_=g.clone();_.defines.HORIZONTAL_PASS=1;const v=new Un;v.setAttribute("position",new yn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const x=new Kn(v,g),M=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=r;let y=this.type;function S(n,i){const r=e.update(x);g.defines.VSM_SAMPLES!==n.blurSamples&&(g.defines.VSM_SAMPLES=n.blurSamples,_.defines.VSM_SAMPLES=n.blurSamples,g.needsUpdate=!0,_.needsUpdate=!0),null===n.mapPass&&(n.mapPass=new Xt(a.x,a.y)),g.uniforms.shadow_pass.value=n.map.texture,g.uniforms.resolution.value=n.mapSize,g.uniforms.radius.value=n.radius,t.setRenderTarget(n.mapPass),t.clear(),t.renderBufferDirect(i,null,r,g,x,null),_.uniforms.shadow_pass.value=n.mapPass.texture,_.uniforms.resolution.value=n.mapSize,_.uniforms.radius.value=n.radius,t.setRenderTarget(n.map),t.clear(),t.renderBufferDirect(i,null,r,_,x,null)}function E(e,n,i,r){let a=null;const o=!0===i.isPointLight?e.customDistanceMaterial:e.customDepthMaterial;if(void 0!==o)a=o;else if(a=!0===i.isPointLight?d:u,t.localClippingEnabled&&!0===n.clipShadows&&Array.isArray(n.clippingPlanes)&&0!==n.clippingPlanes.length||n.displacementMap&&0!==n.displacementScale||n.alphaMap&&n.alphaTest>0||n.map&&n.alphaTest>0){const t=a.uuid,e=n.uuid;let i=p[t];void 0===i&&(i={},p[t]=i);let r=i[e];void 0===r&&(r=a.clone(),i[e]=r),a=r}if(a.visible=n.visible,a.wireframe=n.wireframe,a.side=r===s?null!==n.shadowSide?n.shadowSide:n.side:null!==n.shadowSide?n.shadowSide:m[n.side],a.alphaMap=n.alphaMap,a.alphaTest=n.alphaTest,a.map=n.map,a.clipShadows=n.clipShadows,a.clippingPlanes=n.clippingPlanes,a.clipIntersection=n.clipIntersection,a.displacementMap=n.displacementMap,a.displacementScale=n.displacementScale,a.displacementBias=n.displacementBias,a.wireframeLinewidth=n.wireframeLinewidth,a.linewidth=n.linewidth,!0===i.isPointLight&&!0===a.isMeshDistanceMaterial){t.properties.get(a).light=i}return a}function T(n,r,a,o,l){if(!1===n.visible)return;if(n.layers.test(r.layers)&&(n.isMesh||n.isLine||n.isPoints)&&(n.castShadow||n.receiveShadow&&l===s)&&(!n.frustumCulled||i.intersectsObject(n))){n.modelViewMatrix.multiplyMatrices(a.matrixWorldInverse,n.matrixWorld);const i=e.update(n),r=n.material;if(Array.isArray(r)){const e=i.groups;for(let s=0,c=e.length;sf||a.y>f)&&(a.x>f&&(c.x=Math.floor(f/g.x),a.x=c.x*g.x,u.mapSize.x=c.x),a.y>f&&(c.y=Math.floor(f/g.y),a.y=c.y*g.y,u.mapSize.y=c.y)),null===u.map||!0===p||!0===m){const t=this.type!==s?{minFilter:b,magFilter:b}:{};null!==u.map&&u.map.dispose(),u.map=new Xt(a.x,a.y,t),u.map.texture.name=l.name+".shadowMap",u.camera.updateProjectionMatrix()}t.setRenderTarget(u.map),t.clear();const _=u.getViewportCount();for(let t=0;t<_;t++){const e=u.getViewport(t);h.set(c.x*e.x,c.y*e.y,c.x*e.z,c.y*e.w),d.viewport(h),u.updateMatrices(l,t),i=u.getFrustum(),T(n,r,u.camera,l,this.type)}!0!==u.isPointLightShadow&&this.type===s&&S(u,r),u.needsUpdate=!1}y=this.type,M.needsUpdate=!1,t.setRenderTarget(o,l,u)}}function Va(t,e,n){const i=n.isWebGL2;const r=new function(){let e=!1;const n=new kt;let i=null;const r=new kt(0,0,0,0);return{setMask:function(n){i===n||e||(t.colorMask(n,n,n,n),i=n)},setLocked:function(t){e=t},setClear:function(e,i,a,s,o){!0===o&&(e*=s,i*=s,a*=s),n.set(e,i,a,s),!1===r.equals(n)&&(t.clearColor(e,i,a,s),r.copy(n))},reset:function(){e=!1,i=null,r.set(-1,0,0,0)}}},a=new function(){let e=!1,n=null,i=null,r=null;return{setTest:function(e){e?W(t.DEPTH_TEST):X(t.DEPTH_TEST)},setMask:function(i){n===i||e||(t.depthMask(i),n=i)},setFunc:function(e){if(i!==e){switch(e){case 0:t.depthFunc(t.NEVER);break;case 1:t.depthFunc(t.ALWAYS);break;case 2:t.depthFunc(t.LESS);break;case 3:default:t.depthFunc(t.LEQUAL);break;case 4:t.depthFunc(t.EQUAL);break;case 5:t.depthFunc(t.GEQUAL);break;case 6:t.depthFunc(t.GREATER);break;case 7:t.depthFunc(t.NOTEQUAL)}i=e}},setLocked:function(t){e=t},setClear:function(e){r!==e&&(t.clearDepth(e),r=e)},reset:function(){e=!1,n=null,i=null,r=null}}},s=new function(){let e=!1,n=null,i=null,r=null,a=null,s=null,o=null,l=null,c=null;return{setTest:function(n){e||(n?W(t.STENCIL_TEST):X(t.STENCIL_TEST))},setMask:function(i){n===i||e||(t.stencilMask(i),n=i)},setFunc:function(e,n,s){i===e&&r===n&&a===s||(t.stencilFunc(e,n,s),i=e,r=n,a=s)},setOp:function(e,n,i){s===e&&o===n&&l===i||(t.stencilOp(e,n,i),s=e,o=n,l=i)},setLocked:function(t){e=t},setClear:function(e){c!==e&&(t.clearStencil(e),c=e)},reset:function(){e=!1,n=null,i=null,r=null,a=null,s=null,o=null,l=null,c=null}}},o=new WeakMap,h=new WeakMap;let u={},d={},p=new WeakMap,f=[],m=null,g=!1,_=null,v=null,x=null,M=null,y=null,S=null,E=null,T=new fn(0,0,0),b=0,w=!1,A=null,R=null,C=null,L=null,P=null;const U=t.getParameter(t.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let D=!1,I=0;const N=t.getParameter(t.VERSION);-1!==N.indexOf("WebGL")?(I=parseFloat(/^WebGL (\d)/.exec(N)[1]),D=I>=1):-1!==N.indexOf("OpenGL ES")&&(I=parseFloat(/^OpenGL ES (\d)/.exec(N)[1]),D=I>=2);let O=null,F={};const z=t.getParameter(t.SCISSOR_BOX),B=t.getParameter(t.VIEWPORT),H=(new kt).fromArray(z),G=(new kt).fromArray(B);function V(e,n,r,a){const s=new Uint8Array(4),o=t.createTexture();t.bindTexture(e,o),t.texParameteri(e,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(e,t.TEXTURE_MAG_FILTER,t.NEAREST);for(let o=0;oi||t.height>i)&&(r=i/Math.max(t.width,t.height)),r<1||!0===e){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){const i=e?_t:Math.floor,a=i(r*t.width),s=i(r*t.height);void 0===m&&(m=v(a,s));const o=n?v(a,s):m;o.width=a,o.height=s;return o.getContext("2d").drawImage(t,0,0,a,s),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+t.width+"x"+t.height+") to ("+a+"x"+s+")."),o}return"data"in t&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+t.width+"x"+t.height+")."),t}return t}function M(t){return gt(t.width)&>(t.height)}function y(t,e){return t.generateMipmaps&&e&&t.minFilter!==b&&t.minFilter!==A}function P(e){t.generateMipmap(e)}function B(n,i,r,a,s=!1){if(!1===o)return i;if(null!==n){if(void 0!==t[n])return t[n];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+n+"'")}let l=i;if(i===t.RED&&(r===t.FLOAT&&(l=t.R32F),r===t.HALF_FLOAT&&(l=t.R16F),r===t.UNSIGNED_BYTE&&(l=t.R8)),i===t.RED_INTEGER&&(r===t.UNSIGNED_BYTE&&(l=t.R8UI),r===t.UNSIGNED_SHORT&&(l=t.R16UI),r===t.UNSIGNED_INT&&(l=t.R32UI),r===t.BYTE&&(l=t.R8I),r===t.SHORT&&(l=t.R16I),r===t.INT&&(l=t.R32I)),i===t.RG&&(r===t.FLOAT&&(l=t.RG32F),r===t.HALF_FLOAT&&(l=t.RG16F),r===t.UNSIGNED_BYTE&&(l=t.RG8)),i===t.RGBA){const e=s?K:Dt.getTransfer(a);r===t.FLOAT&&(l=t.RGBA32F),r===t.HALF_FLOAT&&(l=t.RGBA16F),r===t.UNSIGNED_BYTE&&(l=e===J?t.SRGB8_ALPHA8:t.RGBA8),r===t.UNSIGNED_SHORT_4_4_4_4&&(l=t.RGBA4),r===t.UNSIGNED_SHORT_5_5_5_1&&(l=t.RGB5_A1)}return l!==t.R16F&&l!==t.R32F&&l!==t.RG16F&&l!==t.RG32F&&l!==t.RGBA16F&&l!==t.RGBA32F||e.get("EXT_color_buffer_float"),l}function H(t,e,n){return!0===y(t,n)||t.isFramebufferTexture&&t.minFilter!==b&&t.minFilter!==A?Math.log2(Math.max(e.width,e.height))+1:void 0!==t.mipmaps&&t.mipmaps.length>0?t.mipmaps.length:t.isCompressedTexture&&Array.isArray(t.image)?e.mipmaps.length:1}function G(e){return e===b||1004===e||e===w?t.NEAREST:t.LINEAR}function V(t){const e=t.target;e.removeEventListener("dispose",V),function(t){const e=i.get(t);if(void 0===e.__webglInit)return;const n=t.source,r=g.get(n);if(r){const i=r[e.__cacheKey];i.usedTimes--,0===i.usedTimes&&W(t),0===Object.keys(r).length&&g.delete(n)}i.remove(t)}(e),e.isVideoTexture&&f.delete(e)}function k(e){const n=e.target;n.removeEventListener("dispose",k),function(e){const n=e.texture,r=i.get(e),a=i.get(n);void 0!==a.__webglTexture&&(t.deleteTexture(a.__webglTexture),s.memory.textures--);e.depthTexture&&e.depthTexture.dispose();if(e.isWebGLCubeRenderTarget)for(let e=0;e<6;e++){if(Array.isArray(r.__webglFramebuffer[e]))for(let n=0;n0&&a.__version!==e.version){const t=e.image;if(null===t)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==t.complete)return void it(a,e,r);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}n.bindTexture(t.TEXTURE_2D,a.__webglTexture,t.TEXTURE0+r)}const Z={[S]:t.REPEAT,[E]:t.CLAMP_TO_EDGE,[T]:t.MIRRORED_REPEAT},Q={[b]:t.NEAREST,1004:t.NEAREST_MIPMAP_NEAREST,[w]:t.NEAREST_MIPMAP_LINEAR,[A]:t.LINEAR,1007:t.LINEAR_MIPMAP_NEAREST,[R]:t.LINEAR_MIPMAP_LINEAR},tt={512:t.NEVER,519:t.ALWAYS,513:t.LESS,515:t.LEQUAL,514:t.EQUAL,518:t.GEQUAL,516:t.GREATER,517:t.NOTEQUAL};function et(n,a,s){if(s?(t.texParameteri(n,t.TEXTURE_WRAP_S,Z[a.wrapS]),t.texParameteri(n,t.TEXTURE_WRAP_T,Z[a.wrapT]),n!==t.TEXTURE_3D&&n!==t.TEXTURE_2D_ARRAY||t.texParameteri(n,t.TEXTURE_WRAP_R,Z[a.wrapR]),t.texParameteri(n,t.TEXTURE_MAG_FILTER,Q[a.magFilter]),t.texParameteri(n,t.TEXTURE_MIN_FILTER,Q[a.minFilter])):(t.texParameteri(n,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(n,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),n!==t.TEXTURE_3D&&n!==t.TEXTURE_2D_ARRAY||t.texParameteri(n,t.TEXTURE_WRAP_R,t.CLAMP_TO_EDGE),a.wrapS===E&&a.wrapT===E||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),t.texParameteri(n,t.TEXTURE_MAG_FILTER,G(a.magFilter)),t.texParameteri(n,t.TEXTURE_MIN_FILTER,G(a.minFilter)),a.minFilter!==b&&a.minFilter!==A&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),a.compareFunction&&(t.texParameteri(n,t.TEXTURE_COMPARE_MODE,t.COMPARE_REF_TO_TEXTURE),t.texParameteri(n,t.TEXTURE_COMPARE_FUNC,tt[a.compareFunction])),!0===e.has("EXT_texture_filter_anisotropic")){const s=e.get("EXT_texture_filter_anisotropic");if(a.magFilter===b)return;if(a.minFilter!==w&&a.minFilter!==R)return;if(a.type===D&&!1===e.has("OES_texture_float_linear"))return;if(!1===o&&a.type===I&&!1===e.has("OES_texture_half_float_linear"))return;(a.anisotropy>1||i.get(a).__currentAnisotropy)&&(t.texParameterf(n,s.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(a.anisotropy,r.getMaxAnisotropy())),i.get(a).__currentAnisotropy=a.anisotropy)}}function nt(e,n){let i=!1;void 0===e.__webglInit&&(e.__webglInit=!0,n.addEventListener("dispose",V));const r=n.source;let a=g.get(r);void 0===a&&(a={},g.set(r,a));const o=function(t){const e=[];return e.push(t.wrapS),e.push(t.wrapT),e.push(t.wrapR||0),e.push(t.magFilter),e.push(t.minFilter),e.push(t.anisotropy),e.push(t.internalFormat),e.push(t.format),e.push(t.type),e.push(t.generateMipmaps),e.push(t.premultiplyAlpha),e.push(t.flipY),e.push(t.unpackAlignment),e.push(t.colorSpace),e.join()}(n);if(o!==e.__cacheKey){void 0===a[o]&&(a[o]={texture:t.createTexture(),usedTimes:0},s.memory.textures++,i=!0),a[o].usedTimes++;const r=a[e.__cacheKey];void 0!==r&&(a[e.__cacheKey].usedTimes--,0===r.usedTimes&&W(n)),e.__cacheKey=o,e.__webglTexture=a[o].texture}return i}function it(e,r,s){let l=t.TEXTURE_2D;(r.isDataArrayTexture||r.isCompressedArrayTexture)&&(l=t.TEXTURE_2D_ARRAY),r.isData3DTexture&&(l=t.TEXTURE_3D);const c=nt(e,r),u=r.source;n.bindTexture(l,e.__webglTexture,t.TEXTURE0+s);const d=i.get(u);if(u.version!==d.__version||!0===c){n.activeTexture(t.TEXTURE0+s);const e=Dt.getPrimaries(Dt.workingColorSpace),i=r.colorSpace===X?null:Dt.getPrimaries(r.colorSpace),p=r.colorSpace===X||e===i?t.NONE:t.BROWSER_DEFAULT_WEBGL;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,r.flipY),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r.premultiplyAlpha),t.pixelStorei(t.UNPACK_ALIGNMENT,r.unpackAlignment),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,p);const f=function(t){return!o&&(t.wrapS!==E||t.wrapT!==E||t.minFilter!==b&&t.minFilter!==A)}(r)&&!1===M(r.image);let m=x(r.image,f,!1,h);m=ht(r,m);const g=M(m)||o,_=a.convert(r.format,r.colorSpace);let v,S=a.convert(r.type),T=B(r.internalFormat,_,S,r.colorSpace,r.isVideoTexture);et(l,r,g);const w=r.mipmaps,R=o&&!0!==r.isVideoTexture,C=void 0===d.__version||!0===c,I=H(r,m,g);if(r.isDepthTexture)T=t.DEPTH_COMPONENT,o?T=r.type===D?t.DEPTH_COMPONENT32F:r.type===U?t.DEPTH_COMPONENT24:r.type===N?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT16:r.type===D&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),r.format===F&&T===t.DEPTH_COMPONENT&&r.type!==L&&r.type!==U&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),r.type=U,S=a.convert(r.type)),r.format===z&&T===t.DEPTH_COMPONENT&&(T=t.DEPTH_STENCIL,r.type!==N&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),r.type=N,S=a.convert(r.type))),C&&(R?n.texStorage2D(t.TEXTURE_2D,1,T,m.width,m.height):n.texImage2D(t.TEXTURE_2D,0,T,m.width,m.height,0,_,S,null));else if(r.isDataTexture)if(w.length>0&&g){R&&C&&n.texStorage2D(t.TEXTURE_2D,I,T,w[0].width,w[0].height);for(let e=0,i=w.length;e>=1,i>>=1}}else if(w.length>0&&g){R&&C&&n.texStorage2D(t.TEXTURE_2D,I,T,w[0].width,w[0].height);for(let e=0,i=w.length;e>c),i=Math.max(1,r.height>>c);l===t.TEXTURE_3D||l===t.TEXTURE_2D_ARRAY?n.texImage3D(l,c,p,e,i,r.depth,0,h,u,null):n.texImage2D(l,c,p,e,i,0,h,u,null)}n.bindFramebuffer(t.FRAMEBUFFER,e),ct(r)?d.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,o,l,i.get(s).__webglTexture,0,lt(r)):(l===t.TEXTURE_2D||l>=t.TEXTURE_CUBE_MAP_POSITIVE_X&&l<=t.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&t.framebufferTexture2D(t.FRAMEBUFFER,o,l,i.get(s).__webglTexture,c),n.bindFramebuffer(t.FRAMEBUFFER,null)}function st(e,n,i){if(t.bindRenderbuffer(t.RENDERBUFFER,e),n.depthBuffer&&!n.stencilBuffer){let r=!0===o?t.DEPTH_COMPONENT24:t.DEPTH_COMPONENT16;if(i||ct(n)){const e=n.depthTexture;e&&e.isDepthTexture&&(e.type===D?r=t.DEPTH_COMPONENT32F:e.type===U&&(r=t.DEPTH_COMPONENT24));const i=lt(n);ct(n)?d.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,i,r,n.width,n.height):t.renderbufferStorageMultisample(t.RENDERBUFFER,i,r,n.width,n.height)}else t.renderbufferStorage(t.RENDERBUFFER,r,n.width,n.height);t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,e)}else if(n.depthBuffer&&n.stencilBuffer){const r=lt(n);i&&!1===ct(n)?t.renderbufferStorageMultisample(t.RENDERBUFFER,r,t.DEPTH24_STENCIL8,n.width,n.height):ct(n)?d.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,r,t.DEPTH24_STENCIL8,n.width,n.height):t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_STENCIL,n.width,n.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,e)}else{const e=!0===n.isWebGLMultipleRenderTargets?n.texture:[n.texture];for(let r=0;r0&&!0===e.has("WEBGL_multisampled_render_to_texture")&&!1!==n.__useRenderToTexture}function ht(t,n){const i=t.colorSpace,r=t.format,a=t.type;return!0===t.isCompressedTexture||!0===t.isVideoTexture||t.format===rt||i!==Y&&i!==X&&(Dt.getTransfer(i)===J?!1===o?!0===e.has("EXT_sRGB")&&r===O?(t.format=rt,t.minFilter=A,t.generateMipmaps=!1):n=Ft.sRGBToLinear(n):r===O&&a===C||console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",i)),n}this.allocateTextureUnit=function(){const t=j;return t>=l&&console.warn("THREE.WebGLTextures: Trying to use "+t+" texture units while this GPU supports only "+l),j+=1,t},this.resetTextureUnits=function(){j=0},this.setTexture2D=q,this.setTexture2DArray=function(e,r){const a=i.get(e);e.version>0&&a.__version!==e.version?it(a,e,r):n.bindTexture(t.TEXTURE_2D_ARRAY,a.__webglTexture,t.TEXTURE0+r)},this.setTexture3D=function(e,r){const a=i.get(e);e.version>0&&a.__version!==e.version?it(a,e,r):n.bindTexture(t.TEXTURE_3D,a.__webglTexture,t.TEXTURE0+r)},this.setTextureCube=function(e,r){const s=i.get(e);e.version>0&&s.__version!==e.version?function(e,r,s){if(6!==r.image.length)return;const l=nt(e,r),h=r.source;n.bindTexture(t.TEXTURE_CUBE_MAP,e.__webglTexture,t.TEXTURE0+s);const u=i.get(h);if(h.version!==u.__version||!0===l){n.activeTexture(t.TEXTURE0+s);const e=Dt.getPrimaries(Dt.workingColorSpace),i=r.colorSpace===X?null:Dt.getPrimaries(r.colorSpace),d=r.colorSpace===X||e===i?t.NONE:t.BROWSER_DEFAULT_WEBGL;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,r.flipY),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r.premultiplyAlpha),t.pixelStorei(t.UNPACK_ALIGNMENT,r.unpackAlignment),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,d);const p=r.isCompressedTexture||r.image[0].isCompressedTexture,f=r.image[0]&&r.image[0].isDataTexture,m=[];for(let t=0;t<6;t++)m[t]=p||f?f?r.image[t].image:r.image[t]:x(r.image[t],!1,!0,c),m[t]=ht(r,m[t]);const g=m[0],_=M(g)||o,v=a.convert(r.format,r.colorSpace),S=a.convert(r.type),E=B(r.internalFormat,v,S,r.colorSpace),T=o&&!0!==r.isVideoTexture,b=void 0===u.__version||!0===l;let w,A=H(r,g,_);if(et(t.TEXTURE_CUBE_MAP,r,_),p){T&&b&&n.texStorage2D(t.TEXTURE_CUBE_MAP,A,E,g.width,g.height);for(let e=0;e<6;e++){w=m[e].mipmaps;for(let i=0;i0&&A++,n.texStorage2D(t.TEXTURE_CUBE_MAP,A,E,m[0].width,m[0].height));for(let e=0;e<6;e++)if(f){T?n.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,0,0,m[e].width,m[e].height,v,S,m[e].data):n.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,E,m[e].width,m[e].height,0,v,S,m[e].data);for(let i=0;i0){c.__webglFramebuffer[e]=[];for(let n=0;n0){c.__webglFramebuffer=[];for(let e=0;e0&&!1===ct(e)){const i=d?l:[l];c.__webglMultisampledFramebuffer=t.createFramebuffer(),c.__webglColorRenderbuffer=[],n.bindFramebuffer(t.FRAMEBUFFER,c.__webglMultisampledFramebuffer);for(let n=0;n0)for(let i=0;i0)for(let n=0;n0&&!1===ct(e)){const r=e.isWebGLMultipleRenderTargets?e.texture:[e.texture],a=e.width,s=e.height;let o=t.COLOR_BUFFER_BIT;const l=[],c=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,h=i.get(e),u=!0===e.isWebGLMultipleRenderTargets;if(u)for(let e=0;eo+c?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!l.inputState.pinching&&s<=o-c&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else null!==o&&t.gripSpace&&(r=e.getPose(t.gripSpace,n),null!==r&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1));null!==s&&(i=e.getPose(t.targetRaySpace,n),null===i&&null!==r&&(i=r),null!==i&&(s.matrix.fromArray(i.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale),s.matrixWorldNeedsUpdate=!0,i.linearVelocity?(s.hasLinearVelocity=!0,s.linearVelocity.copy(i.linearVelocity)):s.hasLinearVelocity=!1,i.angularVelocity?(s.hasAngularVelocity=!0,s.angularVelocity.copy(i.angularVelocity)):s.hasAngularVelocity=!1,this.dispatchEvent(Ya)))}return null!==s&&(s.visible=null!==i),null!==o&&(o.visible=null!==r),null!==l&&(l.visible=null!==a),this}_getHandJoint(t,e){if(void 0===t.joints[e.jointName]){const n=new ja;n.matrixAutoUpdate=!1,n.visible=!1,t.joints[e.jointName]=n,t.add(n)}return t.joints[e.jointName]}}class Za extends Vt{constructor(t,e,n,i,r,a,s,o,l,c){if((c=void 0!==c?c:F)!==F&&c!==z)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===n&&c===F&&(n=U),void 0===n&&c===z&&(n=N),super(null,i,r,a,s,o,c,n,l),this.isDepthTexture=!0,this.image={width:t,height:e},this.magFilter=void 0!==s?s:b,this.minFilter=void 0!==o?o:b,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(t){return super.copy(t),this.compareFunction=t.compareFunction,this}toJSON(t){const e=super.toJSON(t);return null!==this.compareFunction&&(e.compareFunction=this.compareFunction),e}}class Ka extends ot{constructor(t,e){super();const n=this;let i=null,r=1,a=null,s="local-floor",o=1,l=null,c=null,h=null,u=null,d=null,p=null;const f=e.getContextAttributes();let m=null,g=null;const _=[],v=[],x=new ai;x.layers.enable(1),x.viewport=new kt;const M=new ai;M.layers.enable(2),M.viewport=new kt;const y=[x,M],S=new Xa;S.layers.enable(1),S.layers.enable(2);let E=null,T=null;function b(t){const e=v.indexOf(t.inputSource);if(-1===e)return;const n=_[e];void 0!==n&&(n.update(t.inputSource,t.frame,l||a),n.dispatchEvent({type:t.type,data:t.inputSource}))}function w(){i.removeEventListener("select",b),i.removeEventListener("selectstart",b),i.removeEventListener("selectend",b),i.removeEventListener("squeeze",b),i.removeEventListener("squeezestart",b),i.removeEventListener("squeezeend",b),i.removeEventListener("end",w),i.removeEventListener("inputsourceschange",A);for(let t=0;t<_.length;t++){const e=v[t];null!==e&&(v[t]=null,_[t].disconnect(e))}E=null,T=null,t.setRenderTarget(m),d=null,u=null,h=null,i=null,g=null,I.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}function A(t){for(let e=0;e=0&&(v[i]=null,_[i].disconnect(n))}for(let e=0;e=v.length){v.push(n),i=t;break}if(null===v[t]){v[t]=n,i=t;break}}if(-1===i)break}const r=_[i];r&&r.connect(n)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(t){let e=_[t];return void 0===e&&(e=new qa,_[t]=e),e.getTargetRaySpace()},this.getControllerGrip=function(t){let e=_[t];return void 0===e&&(e=new qa,_[t]=e),e.getGripSpace()},this.getHand=function(t){let e=_[t];return void 0===e&&(e=new qa,_[t]=e),e.getHandSpace()},this.setFramebufferScaleFactor=function(t){r=t,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(t){s=t,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||a},this.setReferenceSpace=function(t){l=t},this.getBaseLayer=function(){return null!==u?u:d},this.getBinding=function(){return h},this.getFrame=function(){return p},this.getSession=function(){return i},this.setSession=async function(c){if(i=c,null!==i){if(m=t.getRenderTarget(),i.addEventListener("select",b),i.addEventListener("selectstart",b),i.addEventListener("selectend",b),i.addEventListener("squeeze",b),i.addEventListener("squeezestart",b),i.addEventListener("squeezeend",b),i.addEventListener("end",w),i.addEventListener("inputsourceschange",A),!0!==f.xrCompatible&&await e.makeXRCompatible(),void 0===i.renderState.layers||!1===t.capabilities.isWebGL2){const n={antialias:void 0!==i.renderState.layers||f.antialias,alpha:!0,depth:f.depth,stencil:f.stencil,framebufferScaleFactor:r};d=new XRWebGLLayer(i,e,n),i.updateRenderState({baseLayer:d}),g=new Xt(d.framebufferWidth,d.framebufferHeight,{format:O,type:C,colorSpace:t.outputColorSpace,stencilBuffer:f.stencil})}else{let n=null,a=null,s=null;f.depth&&(s=f.stencil?e.DEPTH24_STENCIL8:e.DEPTH_COMPONENT24,n=f.stencil?z:F,a=f.stencil?N:U);const o={colorFormat:e.RGBA8,depthFormat:s,scaleFactor:r};h=new XRWebGLBinding(i,e),u=h.createProjectionLayer(o),i.updateRenderState({layers:[u]}),g=new Xt(u.textureWidth,u.textureHeight,{format:O,type:C,depthTexture:new Za(u.textureWidth,u.textureHeight,a,void 0,void 0,void 0,void 0,void 0,void 0,n),stencilBuffer:f.stencil,colorSpace:t.outputColorSpace,samples:f.antialias?4:0});t.properties.get(g).__ignoreDepthValues=u.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(o),l=null,a=await i.requestReferenceSpace(s),I.setContext(i),I.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(null!==i)return i.environmentBlendMode};const R=new Zt,L=new Zt;function P(t,e){null===e?t.matrixWorld.copy(t.matrix):t.matrixWorld.multiplyMatrices(e.matrixWorld,t.matrix),t.matrixWorldInverse.copy(t.matrixWorld).invert()}this.updateCamera=function(t){if(null===i)return;S.near=M.near=x.near=t.near,S.far=M.far=x.far=t.far,E===S.near&&T===S.far||(i.updateRenderState({depthNear:S.near,depthFar:S.far}),E=S.near,T=S.far);const e=t.parent,n=S.cameras;P(S,e);for(let t=0;t0&&(i.alphaTest.value=r.alphaTest);const a=e.get(r).envMap;if(a&&(i.envMap.value=a,i.flipEnvMap.value=a.isCubeTexture&&!1===a.isRenderTargetTexture?-1:1,i.reflectivity.value=r.reflectivity,i.ior.value=r.ior,i.refractionRatio.value=r.refractionRatio),r.lightMap){i.lightMap.value=r.lightMap;const e=!0===t._useLegacyLights?Math.PI:1;i.lightMapIntensity.value=r.lightMapIntensity*e,n(r.lightMap,i.lightMapTransform)}r.aoMap&&(i.aoMap.value=r.aoMap,i.aoMapIntensity.value=r.aoMapIntensity,n(r.aoMap,i.aoMapTransform))}return{refreshFogUniforms:function(e,n){n.color.getRGB(e.fogColor.value,ei(t)),n.isFog?(e.fogNear.value=n.near,e.fogFar.value=n.far):n.isFogExp2&&(e.fogDensity.value=n.density)},refreshMaterialUniforms:function(t,r,a,s,o){r.isMeshBasicMaterial||r.isMeshLambertMaterial?i(t,r):r.isMeshToonMaterial?(i(t,r),function(t,e){e.gradientMap&&(t.gradientMap.value=e.gradientMap)}(t,r)):r.isMeshPhongMaterial?(i(t,r),function(t,e){t.specular.value.copy(e.specular),t.shininess.value=Math.max(e.shininess,1e-4)}(t,r)):r.isMeshStandardMaterial?(i(t,r),function(t,i){t.metalness.value=i.metalness,i.metalnessMap&&(t.metalnessMap.value=i.metalnessMap,n(i.metalnessMap,t.metalnessMapTransform));t.roughness.value=i.roughness,i.roughnessMap&&(t.roughnessMap.value=i.roughnessMap,n(i.roughnessMap,t.roughnessMapTransform));const r=e.get(i).envMap;r&&(t.envMapIntensity.value=i.envMapIntensity)}(t,r),r.isMeshPhysicalMaterial&&function(t,e,i){t.ior.value=e.ior,e.sheen>0&&(t.sheenColor.value.copy(e.sheenColor).multiplyScalar(e.sheen),t.sheenRoughness.value=e.sheenRoughness,e.sheenColorMap&&(t.sheenColorMap.value=e.sheenColorMap,n(e.sheenColorMap,t.sheenColorMapTransform)),e.sheenRoughnessMap&&(t.sheenRoughnessMap.value=e.sheenRoughnessMap,n(e.sheenRoughnessMap,t.sheenRoughnessMapTransform)));e.clearcoat>0&&(t.clearcoat.value=e.clearcoat,t.clearcoatRoughness.value=e.clearcoatRoughness,e.clearcoatMap&&(t.clearcoatMap.value=e.clearcoatMap,n(e.clearcoatMap,t.clearcoatMapTransform)),e.clearcoatRoughnessMap&&(t.clearcoatRoughnessMap.value=e.clearcoatRoughnessMap,n(e.clearcoatRoughnessMap,t.clearcoatRoughnessMapTransform)),e.clearcoatNormalMap&&(t.clearcoatNormalMap.value=e.clearcoatNormalMap,n(e.clearcoatNormalMap,t.clearcoatNormalMapTransform),t.clearcoatNormalScale.value.copy(e.clearcoatNormalScale),e.side===l&&t.clearcoatNormalScale.value.negate()));e.iridescence>0&&(t.iridescence.value=e.iridescence,t.iridescenceIOR.value=e.iridescenceIOR,t.iridescenceThicknessMinimum.value=e.iridescenceThicknessRange[0],t.iridescenceThicknessMaximum.value=e.iridescenceThicknessRange[1],e.iridescenceMap&&(t.iridescenceMap.value=e.iridescenceMap,n(e.iridescenceMap,t.iridescenceMapTransform)),e.iridescenceThicknessMap&&(t.iridescenceThicknessMap.value=e.iridescenceThicknessMap,n(e.iridescenceThicknessMap,t.iridescenceThicknessMapTransform)));e.transmission>0&&(t.transmission.value=e.transmission,t.transmissionSamplerMap.value=i.texture,t.transmissionSamplerSize.value.set(i.width,i.height),e.transmissionMap&&(t.transmissionMap.value=e.transmissionMap,n(e.transmissionMap,t.transmissionMapTransform)),t.thickness.value=e.thickness,e.thicknessMap&&(t.thicknessMap.value=e.thicknessMap,n(e.thicknessMap,t.thicknessMapTransform)),t.attenuationDistance.value=e.attenuationDistance,t.attenuationColor.value.copy(e.attenuationColor));e.anisotropy>0&&(t.anisotropyVector.value.set(e.anisotropy*Math.cos(e.anisotropyRotation),e.anisotropy*Math.sin(e.anisotropyRotation)),e.anisotropyMap&&(t.anisotropyMap.value=e.anisotropyMap,n(e.anisotropyMap,t.anisotropyMapTransform)));t.specularIntensity.value=e.specularIntensity,t.specularColor.value.copy(e.specularColor),e.specularColorMap&&(t.specularColorMap.value=e.specularColorMap,n(e.specularColorMap,t.specularColorMapTransform));e.specularIntensityMap&&(t.specularIntensityMap.value=e.specularIntensityMap,n(e.specularIntensityMap,t.specularIntensityMapTransform))}(t,r,o)):r.isMeshMatcapMaterial?(i(t,r),function(t,e){e.matcap&&(t.matcap.value=e.matcap)}(t,r)):r.isMeshDepthMaterial?i(t,r):r.isMeshDistanceMaterial?(i(t,r),function(t,n){const i=e.get(n).light;t.referencePosition.value.setFromMatrixPosition(i.matrixWorld),t.nearDistance.value=i.shadow.camera.near,t.farDistance.value=i.shadow.camera.far}(t,r)):r.isMeshNormalMaterial?i(t,r):r.isLineBasicMaterial?(function(t,e){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,e.map&&(t.map.value=e.map,n(e.map,t.mapTransform))}(t,r),r.isLineDashedMaterial&&function(t,e){t.dashSize.value=e.dashSize,t.totalSize.value=e.dashSize+e.gapSize,t.scale.value=e.scale}(t,r)):r.isPointsMaterial?function(t,e,i,r){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.size.value=e.size*i,t.scale.value=.5*r,e.map&&(t.map.value=e.map,n(e.map,t.uvTransform));e.alphaMap&&(t.alphaMap.value=e.alphaMap,n(e.alphaMap,t.alphaMapTransform));e.alphaTest>0&&(t.alphaTest.value=e.alphaTest)}(t,r,a,s):r.isSpriteMaterial?function(t,e){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.rotation.value=e.rotation,e.map&&(t.map.value=e.map,n(e.map,t.mapTransform));e.alphaMap&&(t.alphaMap.value=e.alphaMap,n(e.alphaMap,t.alphaMapTransform));e.alphaTest>0&&(t.alphaTest.value=e.alphaTest)}(t,r):r.isShadowMaterial?(t.color.value.copy(r.color),t.opacity.value=r.opacity):r.isShaderMaterial&&(r.uniformsNeedUpdate=!1)}}}function Qa(t,e,n,i){let r={},a={},s=[];const o=n.isWebGL2?t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS):0;function l(t,e,n){const i=t.value;if(void 0===n[e]){if("number"==typeof i)n[e]=i;else{const t=Array.isArray(i)?i:[i],r=[];for(let e=0;e0){r=n%i;0!==r&&i-r-s.boundary<0&&(n+=i-r,a.__offset=n)}n+=s.storage}r=n%i,r>0&&(n+=i-r);t.__size=n,t.__cache={}}(n),d=function(e){const n=function(){for(let t=0;t0),u=!!n.morphAttributes.position,d=!!n.morphAttributes.normal,f=!!n.morphAttributes.color;let m=p;i.toneMapped&&(null!==w&&!0!==w.isXRRenderTarget||(m=S.toneMapping));const g=n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color,_=void 0!==g?g.length:0,v=dt.get(i),M=x.state.lights;if(!0===tt&&(!0===et||t!==P)){const e=t===P&&i.id===A;bt.setState(i,t,e)}let y=!1;i.version===v.__version?v.needsLights&&v.lightsStateVersion!==M.state.version||v.outputColorSpace!==o||r.isInstancedMesh&&!1===v.instancing?y=!0:r.isInstancedMesh||!0!==v.instancing?r.isSkinnedMesh&&!1===v.skinning?y=!0:r.isSkinnedMesh||!0!==v.skinning?r.isInstancedMesh&&!0===v.instancingColor&&null===r.instanceColor||r.isInstancedMesh&&!1===v.instancingColor&&null!==r.instanceColor||v.envMap!==l||!0===i.fog&&v.fog!==a?y=!0:void 0===v.numClippingPlanes||v.numClippingPlanes===bt.numPlanes&&v.numIntersection===bt.numIntersection?(v.vertexAlphas!==c||v.vertexTangents!==h||v.morphTargets!==u||v.morphNormals!==d||v.morphColors!==f||v.toneMapping!==m||!0===ct.isWebGL2&&v.morphTargetsCount!==_)&&(y=!0):y=!0:y=!0:y=!0:(y=!0,v.__version=i.version);let E=v.currentProgram;!0===y&&(E=ee(i,e,r));let T=!1,b=!1,R=!1;const C=E.getUniforms(),L=v.uniforms;ht.useProgram(E.program)&&(T=!0,b=!0,R=!0);i.id!==A&&(A=i.id,b=!0);if(T||P!==t){C.setValue(Nt,"projectionMatrix",t.projectionMatrix),C.setValue(Nt,"viewMatrix",t.matrixWorldInverse);const e=C.map.cameraPosition;void 0!==e&&e.setValue(Nt,at.setFromMatrixPosition(t.matrixWorld)),ct.logarithmicDepthBuffer&&C.setValue(Nt,"logDepthBufFC",2/(Math.log(t.far+1)/Math.LN2)),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&C.setValue(Nt,"isOrthographic",!0===t.isOrthographicCamera),P!==t&&(P=t,b=!0,R=!0)}if(r.isSkinnedMesh){C.setOptional(Nt,r,"bindMatrix"),C.setOptional(Nt,r,"bindMatrixInverse");const t=r.skeleton;t&&(ct.floatVertexTextures?(null===t.boneTexture&&t.computeBoneTexture(),C.setValue(Nt,"boneTexture",t.boneTexture,pt),C.setValue(Nt,"boneTextureSize",t.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}const U=n.morphAttributes;(void 0!==U.position||void 0!==U.normal||void 0!==U.color&&!0===ct.isWebGL2)&&Ct.update(r,n,E);(b||v.receiveShadow!==r.receiveShadow)&&(v.receiveShadow=r.receiveShadow,C.setValue(Nt,"receiveShadow",r.receiveShadow));i.isMeshGouraudMaterial&&null!==i.envMap&&(L.envMap.value=l,L.flipEnvMap.value=l.isCubeTexture&&!1===l.isRenderTargetTexture?-1:1);b&&(C.setValue(Nt,"toneMappingExposure",S.toneMappingExposure),v.needsLights&&(I=R,(D=L).ambientLightColor.needsUpdate=I,D.lightProbe.needsUpdate=I,D.directionalLights.needsUpdate=I,D.directionalLightShadows.needsUpdate=I,D.pointLights.needsUpdate=I,D.pointLightShadows.needsUpdate=I,D.spotLights.needsUpdate=I,D.spotLightShadows.needsUpdate=I,D.rectAreaLights.needsUpdate=I,D.hemisphereLights.needsUpdate=I),a&&!0===i.fog&&St.refreshFogUniforms(L,a),St.refreshMaterialUniforms(L,i,W,k,nt),aa.upload(Nt,ne(v),L,pt));var D,I;i.isShaderMaterial&&!0===i.uniformsNeedUpdate&&(aa.upload(Nt,ne(v),L,pt),i.uniformsNeedUpdate=!1);i.isSpriteMaterial&&C.setValue(Nt,"center",r.center);if(C.setValue(Nt,"modelViewMatrix",r.modelViewMatrix),C.setValue(Nt,"normalMatrix",r.normalMatrix),C.setValue(Nt,"modelMatrix",r.matrixWorld),i.isShaderMaterial||i.isRawShaderMaterial){const t=i.uniformsGroups;for(let e=0,n=t.length;e{function n(){i.forEach((function(t){dt.get(t).currentProgram.isReady()&&i.delete(t)})),0!==i.size?setTimeout(n,10):e(t)}null!==lt.get("KHR_parallel_shader_compile")?n():setTimeout(n,10)}))};let jt=null;function Yt(){Kt.stop()}function qt(){Kt.start()}const Kt=new _i;function Jt(t,e,n,i){if(!1===t.visible)return;if(t.layers.test(e.layers))if(t.isGroup)n=t.renderOrder;else if(t.isLOD)!0===t.autoUpdate&&t.update(e);else if(t.isLight)x.pushLight(t),t.castShadow&&x.pushShadow(t);else if(t.isSprite){if(!t.frustumCulled||Q.intersectsSprite(t)){i&&at.setFromMatrixPosition(t.matrixWorld).applyMatrix4(it);const e=xt.update(t),r=t.material;r.visible&&v.push(t,e,r,n,at.z,null)}}else if((t.isMesh||t.isLine||t.isPoints)&&(!t.frustumCulled||Q.intersectsObject(t))){const e=xt.update(t),r=t.material;if(i&&(void 0!==t.boundingSphere?(null===t.boundingSphere&&t.computeBoundingSphere(),at.copy(t.boundingSphere.center)):(null===e.boundingSphere&&e.computeBoundingSphere(),at.copy(e.boundingSphere.center)),at.applyMatrix4(t.matrixWorld).applyMatrix4(it)),Array.isArray(r)){const i=e.groups;for(let a=0,s=i.length;a0&&function(t,e,n,i){const r=!0===n.isScene?n.overrideMaterial:null;if(null!==r)return;const a=ct.isWebGL2;null===nt&&(nt=new Xt(1,1,{generateMipmaps:!0,type:lt.has("EXT_color_buffer_half_float")?I:C,minFilter:R,samples:a?4:0}));S.getDrawingBufferSize(rt),a?nt.setSize(rt.x,rt.y):nt.setSize(_t(rt.x),_t(rt.y));const s=S.getRenderTarget();S.setRenderTarget(nt),S.getClearColor(H),G=S.getClearAlpha(),G<1&&S.setClearColor(16777215,.5);S.clear();const o=S.toneMapping;S.toneMapping=p,$t(t,n,i),pt.updateMultisampleRenderTarget(nt),pt.updateRenderTargetMipmap(nt);let c=!1;for(let t=0,r=e.length;t0&&$t(r,e,n),a.length>0&&$t(a,e,n),s.length>0&&$t(s,e,n),ht.buffers.depth.setTest(!0),ht.buffers.depth.setMask(!0),ht.buffers.color.setMask(!0),ht.setPolygonOffset(!1)}function $t(t,e,n){const i=!0===e.isScene?e.overrideMaterial:null;for(let r=0,a=t.length;r0?y[y.length-1]:null,M.pop(),v=M.length>0?M[M.length-1]:null},this.getActiveCubeFace=function(){return T},this.getActiveMipmapLevel=function(){return b},this.getRenderTarget=function(){return w},this.setRenderTargetTextures=function(t,e,n){dt.get(t.texture).__webglTexture=e,dt.get(t.depthTexture).__webglTexture=n;const i=dt.get(t);i.__hasExternalTextures=!0,i.__hasExternalTextures&&(i.__autoAllocateDepthBuffer=void 0===n,i.__autoAllocateDepthBuffer||!0===lt.has("WEBGL_multisampled_render_to_texture")&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),i.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(t,e){const n=dt.get(t);n.__webglFramebuffer=e,n.__useDefaultFramebuffer=void 0===e},this.setRenderTarget=function(t,e=0,n=0){w=t,T=e,b=n;let i=!0,r=null,a=!1,s=!1;if(t){const o=dt.get(t);void 0!==o.__useDefaultFramebuffer?(ht.bindFramebuffer(Nt.FRAMEBUFFER,null),i=!1):void 0===o.__webglFramebuffer?pt.setupRenderTarget(t):o.__hasExternalTextures&&pt.rebindTextures(t,dt.get(t.texture).__webglTexture,dt.get(t.depthTexture).__webglTexture);const l=t.texture;(l.isData3DTexture||l.isDataArrayTexture||l.isCompressedArrayTexture)&&(s=!0);const c=dt.get(t).__webglFramebuffer;t.isWebGLCubeRenderTarget?(r=Array.isArray(c[e])?c[e][n]:c[e],a=!0):r=ct.isWebGL2&&t.samples>0&&!1===pt.useMultisampledRTT(t)?dt.get(t).__webglMultisampledFramebuffer:Array.isArray(c)?c[n]:c,F.copy(t.viewport),z.copy(t.scissor),B=t.scissorTest}else F.copy(Z).multiplyScalar(W).floor(),z.copy(K).multiplyScalar(W).floor(),B=J;if(ht.bindFramebuffer(Nt.FRAMEBUFFER,r)&&ct.drawBuffers&&i&&ht.drawBuffers(t,r),ht.viewport(F),ht.scissor(z),ht.setScissorTest(B),a){const i=dt.get(t.texture);Nt.framebufferTexture2D(Nt.FRAMEBUFFER,Nt.COLOR_ATTACHMENT0,Nt.TEXTURE_CUBE_MAP_POSITIVE_X+e,i.__webglTexture,n)}else if(s){const i=dt.get(t.texture),r=e||0;Nt.framebufferTextureLayer(Nt.FRAMEBUFFER,Nt.COLOR_ATTACHMENT0,i.__webglTexture,n||0,r)}A=-1},this.readRenderTargetPixels=function(t,e,n,i,r,a,s){if(!t||!t.isWebGLRenderTarget)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let o=dt.get(t).__webglFramebuffer;if(t.isWebGLCubeRenderTarget&&void 0!==s&&(o=o[s]),o){ht.bindFramebuffer(Nt.FRAMEBUFFER,o);try{const s=t.texture,o=s.format,l=s.type;if(o!==O&&Ut.convert(o)!==Nt.getParameter(Nt.IMPLEMENTATION_COLOR_READ_FORMAT))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");const c=l===I&&(lt.has("EXT_color_buffer_half_float")||ct.isWebGL2&<.has("EXT_color_buffer_float"));if(!(l===C||Ut.convert(l)===Nt.getParameter(Nt.IMPLEMENTATION_COLOR_READ_TYPE)||l===D&&(ct.isWebGL2||lt.has("OES_texture_float")||lt.has("WEBGL_color_buffer_float"))||c))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");e>=0&&e<=t.width-i&&n>=0&&n<=t.height-r&&Nt.readPixels(e,n,i,r,Ut.convert(o),Ut.convert(l),a)}finally{const t=null!==w?dt.get(w).__webglFramebuffer:null;ht.bindFramebuffer(Nt.FRAMEBUFFER,t)}}},this.copyFramebufferToTexture=function(t,e,n=0){const i=Math.pow(2,-n),r=Math.floor(e.image.width*i),a=Math.floor(e.image.height*i);pt.setTexture2D(e,0),Nt.copyTexSubImage2D(Nt.TEXTURE_2D,n,0,0,t.x,t.y,r,a),ht.unbindTexture()},this.copyTextureToTexture=function(t,e,n,i=0){const r=e.image.width,a=e.image.height,s=Ut.convert(n.format),o=Ut.convert(n.type);pt.setTexture2D(n,0),Nt.pixelStorei(Nt.UNPACK_FLIP_Y_WEBGL,n.flipY),Nt.pixelStorei(Nt.UNPACK_PREMULTIPLY_ALPHA_WEBGL,n.premultiplyAlpha),Nt.pixelStorei(Nt.UNPACK_ALIGNMENT,n.unpackAlignment),e.isDataTexture?Nt.texSubImage2D(Nt.TEXTURE_2D,i,t.x,t.y,r,a,s,o,e.image.data):e.isCompressedTexture?Nt.compressedTexSubImage2D(Nt.TEXTURE_2D,i,t.x,t.y,e.mipmaps[0].width,e.mipmaps[0].height,s,e.mipmaps[0].data):Nt.texSubImage2D(Nt.TEXTURE_2D,i,t.x,t.y,s,o,e.image),0===i&&n.generateMipmaps&&Nt.generateMipmap(Nt.TEXTURE_2D),ht.unbindTexture()},this.copyTextureToTexture3D=function(t,e,n,i,r=0){if(S.isWebGL1Renderer)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");const a=t.max.x-t.min.x+1,s=t.max.y-t.min.y+1,o=t.max.z-t.min.z+1,l=Ut.convert(i.format),c=Ut.convert(i.type);let h;if(i.isData3DTexture)pt.setTexture3D(i,0),h=Nt.TEXTURE_3D;else{if(!i.isDataArrayTexture)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");pt.setTexture2DArray(i,0),h=Nt.TEXTURE_2D_ARRAY}Nt.pixelStorei(Nt.UNPACK_FLIP_Y_WEBGL,i.flipY),Nt.pixelStorei(Nt.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i.premultiplyAlpha),Nt.pixelStorei(Nt.UNPACK_ALIGNMENT,i.unpackAlignment);const u=Nt.getParameter(Nt.UNPACK_ROW_LENGTH),d=Nt.getParameter(Nt.UNPACK_IMAGE_HEIGHT),p=Nt.getParameter(Nt.UNPACK_SKIP_PIXELS),f=Nt.getParameter(Nt.UNPACK_SKIP_ROWS),m=Nt.getParameter(Nt.UNPACK_SKIP_IMAGES),g=n.isCompressedTexture?n.mipmaps[0]:n.image;Nt.pixelStorei(Nt.UNPACK_ROW_LENGTH,g.width),Nt.pixelStorei(Nt.UNPACK_IMAGE_HEIGHT,g.height),Nt.pixelStorei(Nt.UNPACK_SKIP_PIXELS,t.min.x),Nt.pixelStorei(Nt.UNPACK_SKIP_ROWS,t.min.y),Nt.pixelStorei(Nt.UNPACK_SKIP_IMAGES,t.min.z),n.isDataTexture||n.isData3DTexture?Nt.texSubImage3D(h,r,e.x,e.y,e.z,a,s,o,l,c,g.data):n.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),Nt.compressedTexSubImage3D(h,r,e.x,e.y,e.z,a,s,o,l,g.data)):Nt.texSubImage3D(h,r,e.x,e.y,e.z,a,s,o,l,c,g),Nt.pixelStorei(Nt.UNPACK_ROW_LENGTH,u),Nt.pixelStorei(Nt.UNPACK_IMAGE_HEIGHT,d),Nt.pixelStorei(Nt.UNPACK_SKIP_PIXELS,p),Nt.pixelStorei(Nt.UNPACK_SKIP_ROWS,f),Nt.pixelStorei(Nt.UNPACK_SKIP_IMAGES,m),0===r&&i.generateMipmaps&&Nt.generateMipmap(h),ht.unbindTexture()},this.initTexture=function(t){t.isCubeTexture?pt.setTextureCube(t,0):t.isData3DTexture?pt.setTexture3D(t,0):t.isDataArrayTexture||t.isCompressedArrayTexture?pt.setTexture2DArray(t,0):pt.setTexture2D(t,0),ht.unbindTexture()},this.resetState=function(){T=0,b=0,w=null,ht.reset(),Dt.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return at}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(t){this._outputColorSpace=t;const e=this.getContext();e.drawingBufferColorSpace=t===q?"display-p3":"srgb",e.unpackColorSpace=Dt.workingColorSpace===Z?"display-p3":"srgb"}get physicallyCorrectLights(){return console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),!this.useLegacyLights}set physicallyCorrectLights(t){console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),this.useLegacyLights=!t}get outputEncoding(){return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace===j?W:3e3}set outputEncoding(t){console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace=t===W?j:Y}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(t){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=t}}(class extends $a{}).prototype.isWebGL1Renderer=!0;class ts{constructor(t,e){this.isInterleavedBuffer=!0,this.array=t,this.stride=e,this.count=void 0!==t?t.length/e:0,this.usage=nt,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=dt()}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.array=new t.array.constructor(t.array),this.count=t.count,this.stride=t.stride,this.usage=t.usage,this}copyAt(t,e,n){t*=this.stride,n*=e.stride;for(let i=0,r=this.stride;io)continue;u.applyMatrix4(this.matrixWorld);const a=t.ray.origin.distanceTo(u);at.far||e.push({distance:a,point:h.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this})}}else{for(let n=Math.max(0,a.start),i=Math.min(f.count,a.start+a.count)-1;no)continue;u.applyMatrix4(this.matrixWorld);const i=t.ray.origin.distanceTo(u);it.far||e.push({distance:i,point:h.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){const t=this.geometry.morphAttributes,e=Object.keys(t);if(e.length>0){const n=t[e[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=n.length;t0&&_(!0),e>0&&_(!1)),this.setIndex(c),this.setAttribute("position",new Tn(h,3)),this.setAttribute("normal",new Tn(u,3)),this.setAttribute("uv",new Tn(d,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new Rs(t.radiusTop,t.radiusBottom,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}}const Cs=new Zt,Ls=new Zt,Ps=new Zt,Us=new cn;class Ds extends Un{constructor(t=1,e=32,n=16,i=0,r=2*Math.PI,a=0,s=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:t,widthSegments:e,heightSegments:n,phiStart:i,phiLength:r,thetaStart:a,thetaLength:s},e=Math.max(3,Math.floor(e)),n=Math.max(2,Math.floor(n));const o=Math.min(a+s,Math.PI);let l=0;const c=[],h=new Zt,u=new Zt,d=[],p=[],f=[],m=[];for(let d=0;d<=n;d++){const g=[],_=d/n;let v=0;0===d&&0===a?v=.5/e:d===n&&o===Math.PI&&(v=-.5/e);for(let n=0;n<=e;n++){const o=n/e;h.x=-t*Math.cos(i+o*r)*Math.sin(a+_*s),h.y=t*Math.cos(a+_*s),h.z=t*Math.sin(i+o*r)*Math.sin(a+_*s),p.push(h.x,h.y,h.z),u.copy(h).normalize(),f.push(u.x,u.y,u.z),m.push(o+v,1-_),g.push(l++)}c.push(g)}for(let t=0;t0)&&d.push(e,r,l),(t!==n-1||o.99999)this.quaternion.set(0,0,0,1);else if(t.y<-.99999)this.quaternion.set(1,0,0,0);else{Ys.set(t.z,0,-t.x).normalize();const e=Math.acos(t.y);this.quaternion.setFromAxisAngle(Ys,e)}}setLength(t,e=.2*t,n=.2*e){this.line.scale.set(1,Math.max(1e-4,t-e),1),this.line.updateMatrix(),this.cone.scale.set(n,e,n),this.cone.position.y=t,this.cone.updateMatrix()}setColor(t){this.line.material.color.set(t),this.cone.material.color.set(t)}copy(t){return super.copy(t,!1),this.line.copy(t.line),this.cone.copy(t.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}},exports.AxesHelper=class extends As{constructor(t=1){const e=[0,0,0,t,0,0,0,0,0,0,t,0,0,0,0,0,0,t],n=new Un;n.setAttribute("position",new Tn(e,3)),n.setAttribute("color",new Tn([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3));super(n,new vs({vertexColors:!0,toneMapped:!1})),this.type="AxesHelper"}setColors(t,e,n){const i=new fn,r=this.geometry.attributes.color.array;return i.set(t),i.toArray(r,0),i.toArray(r,3),i.set(e),i.toArray(r,6),i.toArray(r,9),i.set(n),i.toArray(r,12),i.toArray(r,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},exports.BoxGeometry=Qn,exports.BufferAttribute=yn,exports.BufferGeometry=Un,exports.CameraHelper=class extends As{constructor(t){const e=new Un,n=new vs({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],r=[],a={};function s(t,e){o(t),o(e)}function o(t){i.push(0,0,0),r.push(0,0,0),void 0===a[t]&&(a[t]=[]),a[t].push(i.length/3-1)}s("n1","n2"),s("n2","n4"),s("n4","n3"),s("n3","n1"),s("f1","f2"),s("f2","f4"),s("f4","f3"),s("f3","f1"),s("n1","f1"),s("n2","f2"),s("n3","f3"),s("n4","f4"),s("p","n1"),s("p","n2"),s("p","n3"),s("p","n4"),s("u1","u2"),s("u2","u3"),s("u3","u1"),s("c","t"),s("p","c"),s("cn1","cn2"),s("cn3","cn4"),s("cf1","cf2"),s("cf3","cf4"),e.setAttribute("position",new Tn(i,3)),e.setAttribute("color",new Tn(r,3)),super(e,n),this.type="CameraHelper",this.camera=t,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update();const l=new fn(16755200),c=new fn(16711680),h=new fn(43775),u=new fn(16777215),d=new fn(3355443);this.setColors(l,c,h,u,d)}setColors(t,e,n,i,r){const a=this.geometry.getAttribute("color");a.setXYZ(0,t.r,t.g,t.b),a.setXYZ(1,t.r,t.g,t.b),a.setXYZ(2,t.r,t.g,t.b),a.setXYZ(3,t.r,t.g,t.b),a.setXYZ(4,t.r,t.g,t.b),a.setXYZ(5,t.r,t.g,t.b),a.setXYZ(6,t.r,t.g,t.b),a.setXYZ(7,t.r,t.g,t.b),a.setXYZ(8,t.r,t.g,t.b),a.setXYZ(9,t.r,t.g,t.b),a.setXYZ(10,t.r,t.g,t.b),a.setXYZ(11,t.r,t.g,t.b),a.setXYZ(12,t.r,t.g,t.b),a.setXYZ(13,t.r,t.g,t.b),a.setXYZ(14,t.r,t.g,t.b),a.setXYZ(15,t.r,t.g,t.b),a.setXYZ(16,t.r,t.g,t.b),a.setXYZ(17,t.r,t.g,t.b),a.setXYZ(18,t.r,t.g,t.b),a.setXYZ(19,t.r,t.g,t.b),a.setXYZ(20,t.r,t.g,t.b),a.setXYZ(21,t.r,t.g,t.b),a.setXYZ(22,t.r,t.g,t.b),a.setXYZ(23,t.r,t.g,t.b),a.setXYZ(24,e.r,e.g,e.b),a.setXYZ(25,e.r,e.g,e.b),a.setXYZ(26,e.r,e.g,e.b),a.setXYZ(27,e.r,e.g,e.b),a.setXYZ(28,e.r,e.g,e.b),a.setXYZ(29,e.r,e.g,e.b),a.setXYZ(30,e.r,e.g,e.b),a.setXYZ(31,e.r,e.g,e.b),a.setXYZ(32,n.r,n.g,n.b),a.setXYZ(33,n.r,n.g,n.b),a.setXYZ(34,n.r,n.g,n.b),a.setXYZ(35,n.r,n.g,n.b),a.setXYZ(36,n.r,n.g,n.b),a.setXYZ(37,n.r,n.g,n.b),a.setXYZ(38,i.r,i.g,i.b),a.setXYZ(39,i.r,i.g,i.b),a.setXYZ(40,r.r,r.g,r.b),a.setXYZ(41,r.r,r.g,r.b),a.setXYZ(42,r.r,r.g,r.b),a.setXYZ(43,r.r,r.g,r.b),a.setXYZ(44,r.r,r.g,r.b),a.setXYZ(45,r.r,r.g,r.b),a.setXYZ(46,r.r,r.g,r.b),a.setXYZ(47,r.r,r.g,r.b),a.setXYZ(48,r.r,r.g,r.b),a.setXYZ(49,r.r,r.g,r.b),a.needsUpdate=!0}update(){const t=this.geometry,e=this.pointMap;Xs.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),js("c",e,t,Xs,0,0,-1),js("t",e,t,Xs,0,0,1),js("n1",e,t,Xs,-1,-1,-1),js("n2",e,t,Xs,1,-1,-1),js("n3",e,t,Xs,-1,1,-1),js("n4",e,t,Xs,1,1,-1),js("f1",e,t,Xs,-1,-1,1),js("f2",e,t,Xs,1,-1,1),js("f3",e,t,Xs,-1,1,1),js("f4",e,t,Xs,1,1,1),js("u1",e,t,Xs,.7,1.1,-1),js("u2",e,t,Xs,-.7,1.1,-1),js("u3",e,t,Xs,0,2,-1),js("cf1",e,t,Xs,-1,0,1),js("cf2",e,t,Xs,1,0,1),js("cf3",e,t,Xs,0,-1,1),js("cf4",e,t,Xs,0,1,1),js("cn1",e,t,Xs,-1,0,-1),js("cn2",e,t,Xs,1,0,-1),js("cn3",e,t,Xs,0,-1,-1),js("cn4",e,t,Xs,0,1,-1),t.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}},exports.DirectionalLight=class extends Is{constructor(t,e){super(t,e),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(Ke.DEFAULT_UP),this.updateMatrix(),this.target=new Ke,this.shadow=new ks}dispose(){this.shadow.dispose()}copy(t){return super.copy(t),this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}},exports.EdgesGeometry=class extends Un{constructor(t=null,e=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:t,thresholdAngle:e},null!==t){const n=4,i=Math.pow(10,n),r=Math.cos(ht*e),a=t.getIndex(),s=t.getAttribute("position"),o=a?a.count:s.count,l=[0,0,0],c=["a","b","c"],h=new Array(3),u={},d=[];for(let t=0;t0&&(e.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(e.object.backgroundIntensity=this.backgroundIntensity),e}},exports.SphereGeometry=Ds,exports.Sprite=class extends Ke{constructor(t=new is){if(super(),this.isSprite=!0,this.type="Sprite",void 0===rs){rs=new Un;const t=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),e=new ts(t,5);rs.setIndex([0,1,2,0,2,3]),rs.setAttribute("position",new ns(e,3,0,!1)),rs.setAttribute("uv",new ns(e,2,3,!1))}this.geometry=rs,this.material=t,this.center=new yt(.5,.5)}raycast(t,e){null===t.camera&&console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),ss.setFromMatrixScale(this.matrixWorld),hs.copy(t.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(t.camera.matrixWorldInverse,this.matrixWorld),os.setFromMatrixPosition(this.modelViewMatrix),t.camera.isPerspectiveCamera&&!1===this.material.sizeAttenuation&&ss.multiplyScalar(-os.z);const n=this.material.rotation;let i,r;0!==n&&(r=Math.cos(n),i=Math.sin(n));const a=this.center;_s(us.set(-.5,-.5,0),os,a,ss,i,r),_s(ds.set(.5,-.5,0),os,a,ss,i,r),_s(ps.set(.5,.5,0),os,a,ss,i,r),fs.set(0,0),ms.set(1,0),gs.set(1,1);let s=t.ray.intersectTriangle(us,ds,ps,!1,as);if(null===s&&(_s(ds.set(-.5,.5,0),os,a,ss,i,r),ms.set(0,1),s=t.ray.intersectTriangle(us,ps,ds,!1,as),null===s))return;const o=t.ray.origin.distanceTo(as);ot.far||e.push({distance:o,point:as.clone(),uv:cn.getInterpolation(as,us,ds,ps,fs,ms,gs,new yt),face:null,object:this})}copy(t,e){return super.copy(t,e),void 0!==t.center&&this.center.copy(t.center),this.material=t.material,this}},exports.SpriteMaterial=is,exports.Texture=Vt,exports.TrackballControls=class extends ot{constructor(t,r){super();const a=this,s=-1,o=0,l=1,c=2,h=3,u=4;this.object=t,this.domElement=r,this.domElement.style.touchAction="none",this.enabled=!0,this.screen={left:0,top:0,width:0,height:0},this.rotateSpeed=1,this.zoomSpeed=1.2,this.panSpeed=.3,this.noRotate=!1,this.noZoom=!1,this.noPan=!1,this.staticMoving=!1,this.dynamicDampingFactor=.2,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.keys=["KeyA","KeyS","KeyD"],this.mouseButtons={LEFT:e,MIDDLE:n,RIGHT:i},this.target=new Zt;const d=1e-6,p=new Zt;let f=1,m=s,g=s,_=0,v=0,x=0;const M=new Zt,y=new yt,S=new yt,E=new Zt,T=new yt,b=new yt,w=new yt,A=new yt,R=[],C={};this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.up0=this.object.up.clone(),this.zoom0=this.object.zoom,this.handleResize=function(){const t=a.domElement.getBoundingClientRect(),e=a.domElement.ownerDocument.documentElement;a.screen.left=t.left+window.pageXOffset-e.clientLeft,a.screen.top=t.top+window.pageYOffset-e.clientTop,a.screen.width=t.width,a.screen.height=t.height};const L=function(){const t=new yt;return function(e,n){return t.set((e-a.screen.left)/a.screen.width,(n-a.screen.top)/a.screen.height),t}}(),P=function(){const t=new yt;return function(e,n){return t.set((e-.5*a.screen.width-a.screen.left)/(.5*a.screen.width),(a.screen.height+2*(a.screen.top-n))/a.screen.width),t}}();function U(t){!1!==a.enabled&&(0===R.length&&(a.domElement.setPointerCapture(t.pointerId),a.domElement.addEventListener("pointermove",D),a.domElement.addEventListener("pointerup",I)),function(t){R.push(t)}(t),"touch"===t.pointerType?function(t){if(1===(G(t),R.length))m=h,S.copy(P(R[0].pageX,R[0].pageY)),y.copy(S);else{m=u;const t=R[0].pageX-R[1].pageX,e=R[0].pageY-R[1].pageY;v=_=Math.sqrt(t*t+e*e);const n=(R[0].pageX+R[1].pageX)/2,i=(R[0].pageY+R[1].pageY)/2;w.copy(L(n,i)),A.copy(w)}a.dispatchEvent(Js)}(t):function(t){if(m===s)switch(t.button){case a.mouseButtons.LEFT:m=o;break;case a.mouseButtons.MIDDLE:m=l;break;case a.mouseButtons.RIGHT:m=c}const e=g!==s?g:m;e!==o||a.noRotate?e!==l||a.noZoom?e!==c||a.noPan||(w.copy(L(t.pageX,t.pageY)),A.copy(w)):(T.copy(L(t.pageX,t.pageY)),b.copy(T)):(S.copy(P(t.pageX,t.pageY)),y.copy(S));a.dispatchEvent(Js)}(t))}function D(t){!1!==a.enabled&&("touch"===t.pointerType?function(t){if(1===(G(t),R.length))y.copy(S),S.copy(P(t.pageX,t.pageY));else{const e=function(t){const e=t.pointerId===R[0].pointerId?R[1]:R[0];return C[e.pointerId]}(t),n=t.pageX-e.x,i=t.pageY-e.y;v=Math.sqrt(n*n+i*i);const r=(t.pageX+e.x)/2,a=(t.pageY+e.y)/2;A.copy(L(r,a))}}(t):function(t){const e=g!==s?g:m;e!==o||a.noRotate?e!==l||a.noZoom?e!==c||a.noPan||A.copy(L(t.pageX,t.pageY)):b.copy(L(t.pageX,t.pageY)):(y.copy(S),S.copy(P(t.pageX,t.pageY)))}(t))}function I(t){!1!==a.enabled&&("touch"===t.pointerType?function(t){switch(R.length){case 0:m=s;break;case 1:m=h,S.copy(P(t.pageX,t.pageY)),y.copy(S);break;case 2:m=u;for(let e=0;e0&&(a.object.isPerspectiveCamera?M.multiplyScalar(t):a.object.isOrthographicCamera?(a.object.zoom=Mt.clamp(a.object.zoom/t,a.minZoom,a.maxZoom),f!==a.object.zoom&&a.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")),a.staticMoving?T.copy(b):T.y+=(b.y-T.y)*this.dynamicDampingFactor)},this.panCamera=function(){const t=new yt,e=new Zt,n=new Zt;return function(){if(t.copy(A).sub(w),t.lengthSq()){if(a.object.isOrthographicCamera){const e=(a.object.right-a.object.left)/a.object.zoom/a.domElement.clientWidth,n=(a.object.top-a.object.bottom)/a.object.zoom/a.domElement.clientWidth;t.x*=e,t.y*=n}t.multiplyScalar(M.length()*a.panSpeed),n.copy(M).cross(a.object.up).setLength(t.x),n.add(e.copy(a.object.up).setLength(t.y)),a.object.position.add(n),a.target.add(n),a.staticMoving?w.copy(A):w.add(t.subVectors(A,w).multiplyScalar(a.dynamicDampingFactor))}}}(),this.checkDistances=function(){a.noZoom&&a.noPan||(M.lengthSq()>a.maxDistance*a.maxDistance&&(a.object.position.addVectors(a.target,M.setLength(a.maxDistance)),T.copy(b)),M.lengthSq()d&&(a.dispatchEvent(Ks),p.copy(a.object.position))):a.object.isOrthographicCamera?(a.object.lookAt(a.target),(p.distanceToSquared(a.object.position)>d||f!==a.object.zoom)&&(a.dispatchEvent(Ks),p.copy(a.object.position),f=a.object.zoom)):console.warn("THREE.TrackballControls: Unsupported camera type")},this.reset=function(){m=s,g=s,a.target.copy(a.target0),a.object.position.copy(a.position0),a.object.up.copy(a.up0),a.object.zoom=a.zoom0,a.object.updateProjectionMatrix(),M.subVectors(a.object.position,a.target),a.object.lookAt(a.target),a.dispatchEvent(Ks),p.copy(a.object.position),f=a.object.zoom},this.dispose=function(){a.domElement.removeEventListener("contextmenu",B),a.domElement.removeEventListener("pointerdown",U),a.domElement.removeEventListener("pointercancel",N),a.domElement.removeEventListener("wheel",z),a.domElement.removeEventListener("pointermove",D),a.domElement.removeEventListener("pointerup",I),window.removeEventListener("keydown",O),window.removeEventListener("keyup",F)},this.domElement.addEventListener("contextmenu",B),this.domElement.addEventListener("pointerdown",U),this.domElement.addEventListener("pointercancel",N),this.domElement.addEventListener("wheel",z,{passive:!1}),window.addEventListener("keydown",O),window.addEventListener("keyup",F),this.handleResize(),this.update()}},exports.Vector3=Zt,exports.WebGLRenderer=$a; - -; - -$node[ "../optimade/cifplayer/lib/three/_three" ] = $node[ "../optimade/cifplayer/lib/three/_three.js" ] = module.exports }.call( {} , {} ) -; - ($.$optimade_cifplayer_lib_three_view) = class $optimade_cifplayer_lib_three_view extends ($.$mol_view) { - canvas(){ - return null; - } - controls_target_changed(){ - return null; - } - resize(){ - return null; - } - start_render_loop(){ - return null; - } - sub(){ - return [(this.canvas())]; - } - scene(){ - return null; - } - camera(){ - return null; - } - controls(){ - return null; - } - controls_target(){ - return null; - } - on_render(){ - return null; - } - new_object(id, next){ - if(next !== undefined) return next; - return null; - } - object(id, next){ - if(next !== undefined) return next; - return null; - } - auto(){ - return [ - (this.controls_target_changed()), - (this.resize()), - (this.start_render_loop()) - ]; - } - }; - ($mol_mem_key(($.$optimade_cifplayer_lib_three_view.prototype), "new_object")); - ($mol_mem_key(($.$optimade_cifplayer_lib_three_view.prototype), "object")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - $mol_style_define($optimade_cifplayer_lib_three_view, { - flex: { - grow: 1, - basis: '20rem', - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_icon_eye) = class $mol_icon_eye extends ($.$mol_icon) { - path(){ - return "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_eye_check) = class $mol_icon_eye_check extends ($.$mol_icon) { - path(){ - return "M23.5,17L18.5,22L15,18.5L16.5,17L18.5,19L22,15.5L23.5,17M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,17C12.5,17 12.97,16.93 13.42,16.79C13.15,17.5 13,18.22 13,19V19.45L12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5C17,4.5 21.27,7.61 23,12C22.75,12.64 22.44,13.26 22.08,13.85C21.18,13.31 20.12,13 19,13C18.22,13 17.5,13.15 16.79,13.42C16.93,12.97 17,12.5 17,12A5,5 0 0,0 12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_tick) = class $mol_icon_tick extends ($.$mol_icon) { - path(){ - return "M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_check_box) = class $mol_check_box extends ($.$mol_check) { - Icon(){ - const obj = new this.$.$mol_icon_tick(); - return obj; - } - }; - ($mol_mem(($.$mol_check_box.prototype), "Icon")); - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/box/box.view.css", "[mol_check_box_icon] {\n\tborder-radius: var(--mol_gap_round);\n\tbox-shadow: inset 0 0 0 1px var(--mol_theme_line);\n\tcolor: var(--mol_theme_shade);\n\theight: 1rem;\n\talign-self: center;\n}\n\n[mol_check]:not([mol_check_checked]) > [mol_check_box_icon] {\n\tfill: transparent;\n}\n\n[mol_check]:not([disabled]) > [mol_check_box_icon] {\n\tbackground: var(--mol_theme_field);\n\tcolor: var(--mol_theme_text);\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_pop) = class $mol_pop extends ($.$mol_view) { - Anchor(){ - return null; - } - align(){ - return "bottom_center"; - } - bubble_content(){ - return []; - } - height_max(){ - return 9999; - } - Bubble(){ - const obj = new this.$.$mol_pop_bubble(); - (obj.align) = () => ((this.align())); - (obj.content) = () => ((this.bubble_content())); - (obj.height_max) = () => ((this.height_max())); - return obj; - } - showed(next){ - if(next !== undefined) return next; - return false; - } - align_vert(){ - return ""; - } - align_hor(){ - return ""; - } - prefer(){ - return "vert"; - } - sub(){ - return [(this.Anchor())]; - } - sub_visible(){ - return [(this.Anchor()), (this.Bubble())]; - } - }; - ($mol_mem(($.$mol_pop.prototype), "Bubble")); - ($mol_mem(($.$mol_pop.prototype), "showed")); - ($.$mol_pop_bubble) = class $mol_pop_bubble extends ($.$mol_view) { - content(){ - return []; - } - height_max(){ - return 9999; - } - align(){ - return ""; - } - sub(){ - return (this.content()); - } - style(){ - return {...(super.style()), "maxHeight": (this.height_max())}; - } - attr(){ - return { - ...(super.attr()), - "mol_pop_align": (this.align()), - "tabindex": 0 - }; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_pop extends $.$mol_pop { - showed(next = false) { - this.focused(); - return next; - } - sub_visible() { - return [ - this.Anchor(), - ...this.showed() ? [this.Bubble()] : [], - ]; - } - height_max() { - const viewport = this.$.$mol_window.size(); - const rect_bubble = this.view_rect(); - const align = this.align_vert(); - if (align === 'bottom') - return (viewport.height - rect_bubble.bottom) * .66; - if (align === 'top') - return rect_bubble.top * .66; - return 0; - } - align() { - switch (this.prefer()) { - case 'hor': return `${this.align_hor()}_${this.align_vert()}`; - case 'vert': return `${this.align_vert()}_${this.align_hor()}`; - default: return this.prefer(); - } - } - align_vert() { - const viewport = this.view_port(); - const rect_pop = this.view_rect(); - if (!rect_pop) - return 'suspense'; - return rect_pop.top > (viewport.top + viewport.height / 2) ? 'top' : 'bottom'; - } - align_hor() { - const viewport = this.view_port(); - const rect_pop = this.view_rect(); - if (!rect_pop) - return 'suspense'; - return rect_pop.left > (viewport.left + viewport.width / 2) ? 'left' : 'right'; - } - View_port() { - const view = new $mol_view; - view.dom_node = () => { - let node = this.dom_node(); - while (node = node.offsetParent) { - if (this.$.$mol_dom_context.getComputedStyle(node).overflow !== 'visible') - return node; - } - return this.$.$mol_dom_context.document.documentElement; - }; - return view; - } - view_port() { - return this.View_port().view_rect() ?? { ...this.$.$mol_window.size(), left: 0, top: 0 }; - } - } - __decorate([ - $mol_mem - ], $mol_pop.prototype, "showed", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "sub_visible", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "height_max", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "align", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "align_vert", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "align_hor", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "View_port", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "view_port", null); - $$.$mol_pop = $mol_pop; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/pop/pop.view.css", "[mol_pop] {\n\tposition: relative;\n\tdisplay: inline-flex;\n}\n\n[mol_pop_bubble] {\n\tbox-shadow: 0 0 1rem hsla(0,0%,0%,.5);\n\tborder-radius: var(--mol_gap_round);\n\tposition: absolute;\n\tz-index: var(--mol_layer_popup);\n\tbackground: var(--mol_theme_back);\n\tmax-width: none;\n\tmax-height: none;\n\t/* overflow: hidden;\n\toverflow-y: scroll;\n\toverflow-y: overlay; */\n\tword-break: normal;\n\twidth: max-content;\n\theight: max-content;\n\tflex-direction: column;\n\tmax-width: 80vw;\n\tmax-height: 80vw;\n\tcontain: paint;\n\ttransition-property: opacity;\n}\n\n:where( [mol_pop_bubble] > * ) {\n\tbackground: var(--mol_theme_card);\n}\n\n[mol_pop_bubble][mol_scroll] {\n\tbackground: var(--mol_theme_back);\n}\n\n[mol_pop_bubble]:focus {\n\toutline: none;\n}\n\n[mol_pop_align=\"suspense_suspense\"] {\n\topacity: 0;\n}\n\n[mol_pop_align=\"left_top\"] {\n\ttransform: translate(-100%);\n\tleft: 0;\n\tbottom: 0;\n}\n\n[mol_pop_align=\"left_center\"] {\n\ttransform: translate(-100%, -50%);\n\tleft: 0;\n\ttop: 50%;\n}\n\n[mol_pop_align=\"left_bottom\"] {\n\ttransform: translate(-100%);\n\tleft: 0;\n\ttop: 0;\n}\n\n[mol_pop_align=\"right_top\"] {\n\ttransform: translate(100%);\n\tright: 0;\n\tbottom: 0;\n}\n\n[mol_pop_align=\"right_center\"] {\n\ttransform: translate(100%, -50%);\n\tright: 0;\n\ttop: 50%;\n}\n\n[mol_pop_align=\"right_bottom\"] {\n\ttransform: translate(100%);\n\tright: 0;\n\ttop: 0;\n}\n\n[mol_pop_align=\"center\"] {\n\tleft: 50%;\n\ttop: 50%;\n\ttransform: translate(-50%, -50%);\n}\n\n[mol_pop_align=\"top_left\"] {\n\tright: 0;\n\tbottom: 100%;\n}\n\n[mol_pop_align=\"top_center\"] {\n\ttransform: translate(-50%);\n\tleft: 50%;\n\tbottom: 100%;\n}\n\n[mol_pop_align=\"top_right\"] {\n\tleft: 0;\n\tbottom: 100%;\n}\n\n[mol_pop_align=\"bottom_left\"] {\n\tright: 0;\n\ttop: 100%;\n}\n\n[mol_pop_align=\"bottom_center\"] {\n\ttransform: translate(-50%);\n\tleft: 50%;\n\ttop: 100%;\n}\n\n[mol_pop_align=\"bottom_right\"] {\n\tleft: 0;\n\ttop: 100%;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_pick) = class $mol_pick extends ($.$mol_pop) { - keydown(next){ - if(next !== undefined) return next; - return null; - } - trigger_enabled(){ - return true; - } - clicks(next){ - if(next !== undefined) return next; - return null; - } - trigger_content(){ - return [(this.title())]; - } - hint(){ - return ""; - } - Trigger(){ - const obj = new this.$.$mol_check(); - (obj.minimal_width) = () => (40); - (obj.minimal_height) = () => (40); - (obj.enabled) = () => ((this.trigger_enabled())); - (obj.checked) = (next) => ((this.showed(next))); - (obj.clicks) = (next) => ((this.clicks(next))); - (obj.sub) = () => ((this.trigger_content())); - (obj.hint) = () => ((this.hint())); - return obj; - } - event(){ - return {...(super.event()), "keydown": (next) => (this.keydown(next))}; - } - Anchor(){ - return (this.Trigger()); - } - }; - ($mol_mem(($.$mol_pick.prototype), "keydown")); - ($mol_mem(($.$mol_pick.prototype), "clicks")); - ($mol_mem(($.$mol_pick.prototype), "Trigger")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_pick extends $.$mol_pick { - keydown(event) { - if (!this.trigger_enabled()) - return; - if (event.defaultPrevented) - return; - if (event.keyCode === $mol_keyboard_code.escape) { - if (!this.showed()) - return; - event.preventDefault(); - this.showed(false); - } - } - } - $$.$mol_pick = $mol_pick; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/pick/pick.view.css", "[mol_pick_trigger] {\n\talign-items: center;\n\tflex-grow: 1;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_icon_minus) = class $mol_icon_minus extends ($.$mol_icon) { - path(){ - return "M19,13H5V11H19V13Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_plus) = class $mol_icon_plus extends ($.$mol_icon) { - path(){ - return "M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_number) = class $mol_number extends ($.$mol_view) { - precision(){ - return 1; - } - type(){ - return "tel"; - } - value_string(next){ - if(next !== undefined) return next; - return ""; - } - hint(){ - return " "; - } - string_enabled(){ - return (this.enabled()); - } - submit(next){ - if(next !== undefined) return next; - return null; - } - String(){ - const obj = new this.$.$mol_string(); - (obj.type) = () => ((this.type())); - (obj.value) = (next) => ((this.value_string(next))); - (obj.hint) = () => ((this.hint())); - (obj.enabled) = () => ((this.string_enabled())); - (obj.submit) = (next) => ((this.submit(next))); - return obj; - } - event_dec(next){ - if(next !== undefined) return next; - return null; - } - dec_enabled(){ - return (this.enabled()); - } - dec_icon(){ - const obj = new this.$.$mol_icon_minus(); - return obj; - } - Dec(){ - const obj = new this.$.$mol_button_minor(); - (obj.event_click) = (next) => ((this.event_dec(next))); - (obj.enabled) = () => ((this.dec_enabled())); - (obj.sub) = () => ([(this.dec_icon())]); - return obj; - } - event_inc(next){ - if(next !== undefined) return next; - return null; - } - inc_enabled(){ - return (this.enabled()); - } - inc_icon(){ - const obj = new this.$.$mol_icon_plus(); - return obj; - } - Inc(){ - const obj = new this.$.$mol_button_minor(); - (obj.event_click) = (next) => ((this.event_inc(next))); - (obj.enabled) = () => ((this.inc_enabled())); - (obj.sub) = () => ([(this.inc_icon())]); - return obj; - } - precision_view(){ - return (this.precision()); - } - precision_change(){ - return (this.precision()); - } - value_min(){ - return -Infinity; - } - value_max(){ - return +Infinity; - } - value(next){ - if(next !== undefined) return next; - return +NaN; - } - enabled(){ - return true; - } - sub(){ - return [ - (this.String()), - (this.Dec()), - (this.Inc()) - ]; - } - }; - ($mol_mem(($.$mol_number.prototype), "value_string")); - ($mol_mem(($.$mol_number.prototype), "submit")); - ($mol_mem(($.$mol_number.prototype), "String")); - ($mol_mem(($.$mol_number.prototype), "event_dec")); - ($mol_mem(($.$mol_number.prototype), "dec_icon")); - ($mol_mem(($.$mol_number.prototype), "Dec")); - ($mol_mem(($.$mol_number.prototype), "event_inc")); - ($mol_mem(($.$mol_number.prototype), "inc_icon")); - ($mol_mem(($.$mol_number.prototype), "Inc")); - ($mol_mem(($.$mol_number.prototype), "value")); - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/number/number.css", "[mol_number] {\n\tdisplay: flex;\n\tflex: 0 1 auto;\n\tposition: relative;\n\talign-items: stretch;\n\tmax-width: 100%;\n}\n\n[mol_number_string] {\n\tappearance: textfield;\n\tflex: 1 1 7rem;\n\twidth: 7rem;\n}\n\n[mol_number_string]::-webkit-inner-spin-button {\n\tdisplay: none;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_number extends $.$mol_number { - value_limited(val) { - if (Number.isNaN(val)) - return this.value(val); - if (val === undefined) - return this.value(); - const min = this.value_min(); - const max = this.value_max(); - if (val < min) - return this.value(min); - if (val > max) - return this.value(max); - return this.value(val); - } - event_dec(next) { - this.value_limited((this.value_limited() || 0) - this.precision_change()); - } - event_inc(next) { - this.value_limited((this.value_limited() || 0) + this.precision_change()); - } - round(val) { - if (Number.isNaN(val)) - return ''; - if (val === 0) - return '0'; - if (!val) - return ''; - const precision_view = this.precision_view(); - if (!precision_view) - return val.toFixed(); - if (precision_view >= 1) { - return (val / precision_view).toFixed(); - } - else { - const fixed_number = Math.log10(1 / precision_view); - return val.toFixed(Math.ceil(fixed_number)); - } - } - value_string(next) { - const current = this.round(this.value_limited()); - if (next === undefined) - return current; - const precision = this.precision_view(); - if (precision - Math.floor(precision) === 0) - next = next.replace(/[.,]/g, ''); - next = (this.value_min() < 0 && next.startsWith('-') ? '-' : '') - + next.replace(/,/g, '.').replace(/[^\d\.]/g, '').replace(/^0{2,}/, '0'); - let dot_pos = next.indexOf('.'); - if (dot_pos !== -1) { - const prev = $mol_wire_probe(() => this.value_string()) ?? ''; - const dot_pos_prev = prev.indexOf('.'); - if (dot_pos_prev === dot_pos) - dot_pos = next.lastIndexOf('.'); - const frac = next.slice(dot_pos + 1).replace(/\./g, ''); - next = (next.slice(0, dot_pos) || '0').replace(/\./g, '') + '.' + frac; - } - if (Number.isNaN(Number(next))) - return next; - if (next.endsWith('.')) - return next; - if (next.endsWith('-')) - return next; - this.value_limited(Number(next || Number.NaN)); - return next; - } - dec_enabled() { - return this.enabled() && (!((this.value() || 0) <= this.value_min())); - } - inc_enabled() { - return this.enabled() && (!((this.value() || 0) >= this.value_max())); - } - } - __decorate([ - $mol_mem - ], $mol_number.prototype, "value_string", null); - __decorate([ - $mol_mem - ], $mol_number.prototype, "dec_enabled", null); - __decorate([ - $mol_mem - ], $mol_number.prototype, "inc_enabled", null); - $$.$mol_number = $mol_number; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_icon_image) = class $mol_icon_image extends ($.$mol_icon) { - path(){ - return "M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_image_filter) = class $mol_icon_image_filter extends ($.$mol_icon) { - path(){ - return "M21,17H7V3H21M21,1H7C5.9,1 5,1.9 5,3V17C5,18.1 5.9,19 7,19H21C22.1,19 23,18.1 23,17V3C23,1.9 22.1,1 21,1M3,5H1V21C1,22.1 1.9,23 3,23H19V21H3M15.96,10.29L13.21,13.83L11.25,11.47L8.5,15H19.5L15.96,10.29Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_image_filter_center_focus) = class $mol_icon_image_filter_center_focus extends ($.$mol_icon) { - path(){ - return "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify) = class $mol_icon_magnify extends ($.$mol_icon) { - path(){ - return "M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify_plus) = class $mol_icon_magnify_plus extends ($.$mol_icon) { - path(){ - return "M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M8,5V8H5V10H8V13H10V10H13V8H10V5H8Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify_plus_outline) = class $mol_icon_magnify_plus_outline extends ($.$mol_icon) { - path(){ - return "M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14M12,10H10V12H9V10H7V9H9V7H10V9H12V10Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify_minus) = class $mol_icon_magnify_minus extends ($.$mol_icon) { - path(){ - return "M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M5,8V10H13V8H5Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify_minus_outline) = class $mol_icon_magnify_minus_outline extends ($.$mol_icon) { - path(){ - return "M15.5,14H14.71L14.43,13.73C15.41,12.59 16,11.11 16,9.5A6.5,6.5 0 0,0 9.5,3A6.5,6.5 0 0,0 3,9.5A6.5,6.5 0 0,0 9.5,16C11.11,16 12.59,15.41 13.73,14.43L14,14.71V15.5L19,20.5L20.5,19L15.5,14M9.5,14C7,14 5,12 5,9.5C5,7 7,5 9.5,5C12,5 14,7 14,9.5C14,12 12,14 9.5,14M7,9H12V10H7V9Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_check_list) = class $mol_check_list extends ($.$mol_view) { - option_checked(id, next){ - if(next !== undefined) return next; - return false; - } - option_title(id){ - return ""; - } - option_label(id){ - return [(this.option_title(id))]; - } - enabled(){ - return true; - } - option_enabled(id){ - return (this.enabled()); - } - option_hint(id){ - return ""; - } - items(){ - return []; - } - dictionary(){ - return {}; - } - Option(id){ - const obj = new this.$.$mol_check(); - (obj.checked) = (next) => ((this.option_checked(id, next))); - (obj.label) = () => ((this.option_label(id))); - (obj.enabled) = () => ((this.option_enabled(id))); - (obj.hint) = () => ((this.option_hint(id))); - (obj.minimal_height) = () => (24); - return obj; - } - options(){ - return {}; - } - keys(){ - return []; - } - sub(){ - return (this.items()); - } - }; - ($mol_mem_key(($.$mol_check_list.prototype), "option_checked")); - ($mol_mem_key(($.$mol_check_list.prototype), "Option")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_check_list extends $.$mol_check_list { - options() { - return {}; - } - dictionary(next) { - return next ?? {}; - } - option_checked(id, next) { - const prev = this.dictionary(); - if (next === undefined) - return prev[id] ?? null; - const next_rec = { ...prev, [id]: next }; - if (next === null) - delete next_rec[id]; - return this.dictionary(next_rec)[id] ?? null; - } - keys() { - return Object.keys(this.options()); - } - items() { - return this.keys().map(key => this.Option(key)); - } - option_title(key) { - return this.options()[key] || key; - } - } - __decorate([ - $mol_mem - ], $mol_check_list.prototype, "keys", null); - __decorate([ - $mol_mem - ], $mol_check_list.prototype, "items", null); - $$.$mol_check_list = $mol_check_list; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/list/list.view.css", "[mol_check_list] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex: 1 1 auto;\n\tborder-radius: var(--mol_gap_round);\n\tgap: 1px;\n}\n\n[mol_check_list_option] {\n\tflex: 0 1 auto;\n}\n\n[mol_check_list_option]:where([mol_check_checked=\"true\"]) {\n\ttext-shadow: 0 0;\n\tcolor: var(--mol_theme_current);\n}\n\n[mol_check_list_option]:where([mol_check_checked=\"true\"][disabled]) {\n\tcolor: var(--mol_theme_text);\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_switch) = class $mol_switch extends ($.$mol_check_list) { - value(next){ - if(next !== undefined) return next; - return ""; - } - }; - ($mol_mem(($.$mol_switch.prototype), "value")); - - -; -"use strict"; -var $; -(function ($) { - class $mol_state_session extends $mol_object { - static 'native()'; - static native() { - if (this['native()']) - return this['native()']; - check: try { - const native = $mol_dom_context.sessionStorage; - if (!native) - break check; - native.setItem('', ''); - native.removeItem(''); - return this['native()'] = native; - } - catch (error) { - console.warn(error); - } - return this['native()'] = { - getItem(key) { - return this[':' + key]; - }, - setItem(key, value) { - this[':' + key] = value; - }, - removeItem(key) { - this[':' + key] = void 0; - } - }; - } - static value(key, next) { - if (next === void 0) - return JSON.parse(this.native().getItem(key) || 'null'); - if (next === null) - this.native().removeItem(key); - else - this.native().setItem(key, JSON.stringify(next)); - return next; - } - prefix() { return ''; } - value(key, next) { - return $mol_state_session.value(this.prefix() + '.' + key, next); - } - } - __decorate([ - $mol_mem_key - ], $mol_state_session, "value", null); - $.$mol_state_session = $mol_state_session; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_switch extends $.$mol_switch { - value(next) { - return $mol_state_session.value(`${this}.value()`, next) ?? ''; - } - option_checked(key, next) { - if (next === undefined) - return this.value() == key; - this.value(next ? key : ''); - return next; - } - } - $$.$mol_switch = $mol_switch; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_card) = class $mol_card extends ($.$mol_list) { - status(){ - return ""; - } - content(){ - return [(this.title())]; - } - Content(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.content())); - return obj; - } - status_text(){ - return (this.status()); - } - Status(){ - const obj = new this.$.$mol_view(); - (obj.minimal_height) = () => (30); - (obj.sub) = () => ([(this.status_text())]); - return obj; - } - attr(){ - return {...(super.attr()), "mol_card_status_type": (this.status())}; - } - rows(){ - return [(this.Content()), (this.Status())]; - } - }; - ($mol_mem(($.$mol_card.prototype), "Content")); - ($mol_mem(($.$mol_card.prototype), "Status")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_card extends $.$mol_card { - rows() { - return [ - this.Content(), - ...this.status_text() ? [this.Status()] : [], - ]; - } - } - $$.$mol_card = $mol_card; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/card/card.view.css", "[mol_card] {\n\tbackground: var(--mol_theme_card);\n\tcolor: var(--mol_theme_text);\n\tborder-radius: var(--mol_gap_round);\n\tdisplay: flex;\n\tflex: 0 1 auto;\n\tflex-direction: column;\n\tposition: relative;\n\tbox-shadow: 0 0 0.5rem 0rem hsla(0,0%,0%,.125);\n\t/* overflow: hidden; */\n}\n\n[mol_card_content] {\n\tflex: 1 1 auto;\n\tborder-radius: var(--mol_gap_round);\n\tmargin: 0;\n\tpadding: var(--mol_gap_block);\n}\n\n[mol_card_status] {\n\tbackground: var(--mol_theme_line);\n\ttext-transform: capitalize;\n\tpadding: var(--mol_gap_text);\n\tmargin: 0;\n}\n\n[mol_card_status] {\n\tbackground: var(--mol_theme_line);\n}\n"); -})($ || ($ = {})); - -; - ($.$optimade_cifplayer_player) = class $optimade_cifplayer_player extends ($.$mol_view) { - translate_a(next){ - if(next !== undefined) return next; - return 1; - } - translate_b(next){ - if(next !== undefined) return next; - return 1; - } - translate_c(next){ - if(next !== undefined) return next; - return 1; - } - Theme(){ - const obj = new this.$.$mol_theme_auto(); - return obj; - } - external_theme_auto(){ - return null; - } - dir_light(){ - return null; - } - ambient_light(){ - return null; - } - atom_boxes(){ - return []; - } - overlay_boxes(){ - return []; - } - cell_box(){ - return null; - } - axes_box(){ - return null; - } - overlay_changed(){ - return null; - } - vibration_active(next){ - if(next !== undefined) return next; - return false; - } - vibration_restart(){ - return null; - } - scene(){ - return (this.Three().scene()); - } - controls(){ - return (this.Three().controls()); - } - controls_target(){ - return null; - } - camera(){ - return (this.Three().camera()); - } - on_render(){ - return null; - } - Three(){ - const obj = new this.$.$optimade_cifplayer_lib_three_view(); - (obj.controls_target) = () => ((this.controls_target())); - (obj.on_render) = () => ((this.on_render())); - return obj; - } - descr_a(){ - return "a="; - } - Descr_a(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_a())); - return obj; - } - descr_b(){ - return "b="; - } - Descr_b(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_b())); - return obj; - } - descr_c(){ - return "c="; - } - Descr_c(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_c())); - return obj; - } - descr_alpha(){ - return "α="; - } - Descr_alpha(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_alpha())); - return obj; - } - descr_beta(){ - return "β="; - } - Descr_beta(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_beta())); - return obj; - } - descr_gamma(){ - return "γ="; - } - Descr_gamma(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_gamma())); - return obj; - } - info_sub(){ - return [ - (this.Descr_a()), - (this.Descr_b()), - (this.Descr_c()), - (this.Descr_alpha()), - (this.Descr_beta()), - (this.Descr_gamma()) - ]; - } - Info(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.info_sub())); - return obj; - } - Sym_icon(){ - const obj = new this.$.$mol_icon_eye_check(); - return obj; - } - symlabel(){ - return "SG"; - } - Toogle_all_title(){ - return "Enable all"; - } - toogle_all_symmetry(next){ - if(next !== undefined) return next; - return null; - } - Toogle_all(){ - const obj = new this.$.$mol_button_minor(); - (obj.title) = () => ((this.Toogle_all_title())); - (obj.click) = (next) => ((this.toogle_all_symmetry(next))); - return obj; - } - sym_name(id){ - return ""; - } - symmetry_visible(id, next){ - if(next !== undefined) return next; - return false; - } - Sym_check(id){ - const obj = new this.$.$mol_check_box(); - (obj.title) = () => ((this.sym_name(id))); - (obj.checked) = (next) => ((this.symmetry_visible(id, next))); - return obj; - } - sym_checks(){ - return [(this.Sym_check("0"))]; - } - Sym_checks(){ - const obj = new this.$.$mol_list(); - (obj.sub) = () => ((this.sym_checks())); - return obj; - } - Sym_list(){ - const obj = new this.$.$mol_scroll(); - (obj.sub) = () => ([(this.Sym_checks())]); - return obj; - } - Symlabel(){ - const obj = new this.$.$mol_pick(); - (obj.trigger_content) = () => ([(this.Sym_icon()), (this.symlabel())]); - (obj.bubble_content) = () => ([(this.Toogle_all()), (this.Sym_list())]); - return obj; - } - symlabel_visible(){ - return [(this.Symlabel())]; - } - translate_cell_label(){ - return "1×1×1"; - } - Translate_label_a(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ("a"); - return obj; - } - translate_limit_a(){ - return 1; - } - Translate_a(){ - const obj = new this.$.$mol_number(); - (obj.value) = (next) => ((this.translate_a(next))); - (obj.hint) = () => ("1"); - (obj.value_min) = () => (1); - (obj.value_max) = () => ((this.translate_limit_a())); - return obj; - } - Translate_label_b(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ("b"); - return obj; - } - translate_limit_b(){ - return 1; - } - Translate_b(){ - const obj = new this.$.$mol_number(); - (obj.value) = (next) => ((this.translate_b(next))); - (obj.hint) = () => ("1"); - (obj.value_min) = () => (1); - (obj.value_max) = () => ((this.translate_limit_b())); - return obj; - } - Translate_label_c(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ("c"); - return obj; - } - translate_limit_c(){ - return 1; - } - Translate_c(){ - const obj = new this.$.$mol_number(); - (obj.value) = (next) => ((this.translate_c(next))); - (obj.hint) = () => ("1"); - (obj.value_min) = () => (1); - (obj.value_max) = () => ((this.translate_limit_c())); - return obj; - } - Translate_cells(){ - const obj = new this.$.$mol_pick(); - (obj.trigger_content) = () => ([(this.translate_cell_label())]); - (obj.bubble_content) = () => ([ - (this.Translate_label_a()), - (this.Translate_a()), - (this.Translate_label_b()), - (this.Translate_b()), - (this.Translate_label_c()), - (this.Translate_c()) - ]); - return obj; - } - centered(next){ - if(next !== undefined) return next; - return true; - } - Center_icon(){ - const obj = new this.$.$mol_icon_image_filter_center_focus(); - return obj; - } - Center(){ - const obj = new this.$.$mol_check_icon(); - (obj.checked) = (next) => ((this.centered(next))); - (obj.Icon) = () => ((this.Center_icon())); - return obj; - } - left_panel(){ - return [ - (this.Info()), - ...(this.symlabel_visible()), - (this.Translate_cells()), - (this.Center()) - ]; - } - Left_panel(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.left_panel())); - return obj; - } - zoom_up(next){ - if(next !== undefined) return next; - return null; - } - Zoom_up_icon(){ - const obj = new this.$.$mol_icon_magnify_plus_outline(); - return obj; - } - Zoom_up(){ - const obj = new this.$.$mol_button_minor(); - (obj.click) = (next) => ((this.zoom_up(next))); - (obj.sub) = () => ([(this.Zoom_up_icon())]); - return obj; - } - zoom_down(next){ - if(next !== undefined) return next; - return null; - } - Zoom_down_icon(){ - const obj = new this.$.$mol_icon_magnify_minus_outline(); - return obj; - } - Zoom_down(){ - const obj = new this.$.$mol_button_minor(); - (obj.click) = (next) => ((this.zoom_down(next))); - (obj.sub) = () => ([(this.Zoom_down_icon())]); - return obj; - } - Zoom_section(){ - const obj = new this.$.$mol_list(); - (obj.sub) = () => ([(this.Zoom_up()), (this.Zoom_down())]); - return obj; - } - Tools(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Zoom_section())]); - return obj; - } - overlay(next){ - if(next !== undefined) return next; - return "S"; - } - available_overlays(){ - return {"": "display none", "S": "elements"}; - } - Switch_overlay(){ - const obj = new this.$.$mol_switch(); - (obj.value) = (next) => ((this.overlay(next))); - (obj.options) = () => ((this.available_overlays())); - return obj; - } - overlays_sub(){ - return [(this.Switch_overlay())]; - } - Overlays(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.overlays_sub())); - return obj; - } - message(){ - return ""; - } - Message_card(){ - const obj = new this.$.$mol_card(); - (obj.theme) = () => ("$mol_theme_special"); - (obj.title) = () => ((this.message())); - return obj; - } - Message(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Message_card())]); - return obj; - } - message_visible(){ - return [(this.Message())]; - } - color_a(){ - return ""; - } - color_b(){ - return ""; - } - color_c(){ - return ""; - } - data(next){ - if(next !== undefined) return next; - return null; - } - externals(next){ - if(next !== undefined) return next; - return null; - } - fullscreen(next){ - if(next !== undefined) return next; - return true; - } - skip_panel(next){ - if(next !== undefined) return next; - return false; - } - atom_radius_scale(){ - return 0.6; - } - zoom_scale_step(){ - return 0.3; - } - vibrate(next){ - if(next !== undefined) return next; - return null; - } - unvibrate(){ - return null; - } - phonon(next){ - if(next !== undefined) return next; - return null; - } - translate_cells(){ - return [ - (this.translate_a()), - (this.translate_b()), - (this.translate_c()) - ]; - } - translate_cells_limit(){ - return 50; - } - plugins(){ - return [(this.Theme())]; - } - auto(){ - return [ - (this.external_theme_auto()), - (this.dir_light()), - (this.ambient_light()), - ...(this.atom_boxes()), - ...(this.overlay_boxes()), - (this.cell_box()), - (this.axes_box()), - (this.overlay_changed()), - (this.vibration_active()), - (this.vibration_restart()) - ]; - } - atom_box(id){ - return null; - } - overlay_box(id){ - return null; - } - minimal_heigth(){ - return 300; - } - sub(){ - return [ - (this.Three()), - (this.Left_panel()), - (this.Tools()), - (this.Overlays()), - ...(this.message_visible()) - ]; - } - colors_light(){ - return { - "a": "#990000", - "b": "#009900", - "c": "#0099FF" - }; - } - colors_dark(){ - return { - "a": "#EE4B2B", - "b": "#009900", - "c": "#0099FF" - }; - } - cell_lines_color(){ - return "#DDDDDD"; - } - axcolor(){ - return [ - (this.color_a()), - (this.color_b()), - (this.color_c()) - ]; - } - style(){ - return { - ...(super.style()), - "--color_a": (this.color_a()), - "--color_b": (this.color_b()), - "--color_c": (this.color_c()) - }; - } - attr(){ - return {...(super.attr()), "fullscreen": (this.fullscreen())}; - } - }; - ($mol_mem(($.$optimade_cifplayer_player.prototype), "translate_a")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "translate_b")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "translate_c")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Theme")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "vibration_active")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Three")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_a")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_b")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_c")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_alpha")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_beta")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_gamma")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Info")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Sym_icon")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "toogle_all_symmetry")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Toogle_all")); - ($mol_mem_key(($.$optimade_cifplayer_player.prototype), "symmetry_visible")); - ($mol_mem_key(($.$optimade_cifplayer_player.prototype), "Sym_check")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Sym_checks")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Sym_list")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Symlabel")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_label_a")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_a")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_label_b")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_b")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_label_c")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_c")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_cells")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "centered")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Center_icon")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Center")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Left_panel")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "zoom_up")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_up_icon")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_up")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "zoom_down")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_down_icon")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_down")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_section")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Tools")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "overlay")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Switch_overlay")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Overlays")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Message_card")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Message")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "data")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "externals")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "fullscreen")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "skip_panel")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "vibrate")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "phonon")); - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("optimade/cifplayer/player/player.view.css", "*{font-family:Exo2,Arial;}\n\n[mol_theme=\"$mol_theme_light\"] {\n\t--mol_theme_back: white;\n}\n\n@font-face {\nfont-family:Exo2;src:local('Exo 2 Regular'),local('Exo2-Regular'),url('data:font/woff;charset=utf-8;base64,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') format('woff');\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - $mol_style_define($optimade_cifplayer_player, { - background: { - color: $mol_theme.back, - }, - position: 'relative', - height: '100%', - '@': { - fullscreen: { - 'true': { - position: 'fixed', - zIndex: 9999, - top: 0, - left: 0, - right: 0, - bottom: 0, - }, - }, - }, - Descr_a: { - color: $mol_style_func.vary('--color_a') - }, - Descr_b: { - color: $mol_style_func.vary('--color_b') - }, - Descr_c: { - color: $mol_style_func.vary('--color_c') - }, - Translate_label_a: { - color: $mol_style_func.vary('--color_a'), - padding: $mol_gap.text, - }, - Translate_label_b: { - color: $mol_style_func.vary('--color_b'), - padding: $mol_gap.text, - }, - Translate_label_c: { - color: $mol_style_func.vary('--color_c'), - padding: $mol_gap.text, - }, - Translate_cells: { - pointerEvents: 'auto', - Bubble: { - display: 'grid', - gridTemplateColumns: 'auto auto', - }, - }, - Left_panel: { - userSelect: 'none', - pointerEvents: 'none', - position: 'absolute', - zIndex: 1, - fontSize: '13px', - flex: { - direction: 'column', - }, - align: { - items: 'flex-start', - }, - }, - Info: { - padding: $mol_gap.block, - gap: $mol_gap.space, - flex: { - direction: 'column', - }, - }, - Symlabel: { - pointerEvents: 'auto', - }, - Center: { - pointerEvents: 'auto', - }, - Toogle_all: { - boxShadow: `0 0.5rem 0.5rem -0.5rem hsla(0,0%,0%,.5)`, - }, - Overlays: { - position: 'absolute', - bottom: 0, - width: '100%', - align: { - items: 'center', - }, - zIndex: 1, - }, - Switch_overlay: { - justify: { - content: 'center' - }, - }, - Tools: { - position: 'absolute', - right: 0, - zIndex: 1, - flex: { - direction: 'column', - }, - align: { - items: 'flex-end', - }, - }, - Zoom_section: { - padding: { - top: '2rem', - bottom: '1rem', - }, - }, - Zoom_up_icon: { - width: '2rem', - height: '2rem', - }, - Zoom_down_icon: { - width: '2rem', - height: '2rem', - }, - Message: { - position: 'absolute', - zIndex: 1, - top: '6rem', - left: 0, - right: 0, - }, - Message_card: { - background: { - color: $mol_theme.back, - }, - margin: 'auto', - }, - Three: { - cursor: 'move', - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_float) = class $mol_float extends ($.$mol_view) { - style(){ - return {...(super.style()), "minHeight": "auto"}; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/float/float.view.css", "[mol_float] {\n\tposition: sticky;\n\ttop: 0;\n\tleft: 0;\n\tz-index: var(--mol_layer_float);\n\topacity: 1;\n\ttransition: opacity .25s ease-in;\n\tdisplay: block;\n\tbackground: linear-gradient( var(--mol_theme_card), var(--mol_theme_card) ), var(--mol_theme_back);\n\tbox-shadow: 0 0 .5rem hsla(0,0%,0%,.25);\n}\n\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_icon_chevron) = class $mol_icon_chevron extends ($.$mol_icon) { - path(){ - return "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_check_expand) = class $mol_check_expand extends ($.$mol_check) { - level_style(){ - return "0px"; - } - expanded(next){ - if(next !== undefined) return next; - return false; - } - expandable(){ - return false; - } - Icon(){ - const obj = new this.$.$mol_icon_chevron(); - return obj; - } - level(){ - return 0; - } - style(){ - return {...(super.style()), "paddingLeft": (this.level_style())}; - } - checked(next){ - return (this.expanded(next)); - } - enabled(){ - return (this.expandable()); - } - }; - ($mol_mem(($.$mol_check_expand.prototype), "expanded")); - ($mol_mem(($.$mol_check_expand.prototype), "Icon")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_check_expand extends $.$mol_check_expand { - level_style() { - return `${this.level() * 1 - 1}rem`; - } - expandable() { - return this.expanded() !== null; - } - } - $$.$mol_check_expand = $mol_check_expand; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/expand/expand.view.css", "[mol_check_expand] {\n\tmin-width: 20px;\n}\n\n:where([mol_check_expand][disabled]) [mol_check_expand_icon] {\n\tvisibility: hidden;\n}\n\n[mol_check_expand_icon] {\n\tbox-shadow: none;\n\tmargin-left: -0.375rem;\n}\n[mol_check_expand_icon] {\n\ttransform: rotateZ(0deg);\n}\n\n:where([mol_check_checked]) [mol_check_expand_icon] {\n\ttransform: rotateZ(90deg);\n}\n\n[mol_check_expand_icon] {\n\tvertical-align: text-top;\n}\n\n[mol_check_expand_label] {\n\tmargin-left: 0;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_grid) = class $mol_grid extends ($.$mol_view) { - rows(){ - return []; - } - Table(){ - const obj = new this.$.$mol_grid_table(); - (obj.sub) = () => ((this.rows())); - return obj; - } - head_cells(){ - return []; - } - cells(id){ - return []; - } - cell_content(id){ - return []; - } - cell_content_text(id){ - return (this.cell_content(id)); - } - cell_content_number(id){ - return (this.cell_content(id)); - } - col_head_content(id){ - return []; - } - cell_level(id){ - return 0; - } - cell_expanded(id, next){ - if(next !== undefined) return next; - return false; - } - needle(){ - return ""; - } - cell_value(id){ - return ""; - } - Cell_dimmer(id){ - const obj = new this.$.$mol_dimmer(); - (obj.needle) = () => ((this.needle())); - (obj.haystack) = () => ((this.cell_value(id))); - return obj; - } - row_height(){ - return 32; - } - row_ids(){ - return []; - } - row_id(id){ - return null; - } - col_ids(){ - return []; - } - records(){ - return {}; - } - record(id){ - return null; - } - hierarchy(){ - return null; - } - hierarchy_col(){ - return ""; - } - minimal_width(){ - return 0; - } - sub(){ - return [(this.Head()), (this.Table())]; - } - Head(){ - const obj = new this.$.$mol_grid_row(); - (obj.cells) = () => ((this.head_cells())); - return obj; - } - Row(id){ - const obj = new this.$.$mol_grid_row(); - (obj.minimal_height) = () => ((this.row_height())); - (obj.minimal_width) = () => ((this.minimal_width())); - (obj.cells) = () => ((this.cells(id))); - return obj; - } - Cell(id){ - const obj = new this.$.$mol_view(); - return obj; - } - cell(id){ - return null; - } - Cell_text(id){ - const obj = new this.$.$mol_grid_cell(); - (obj.sub) = () => ((this.cell_content_text(id))); - return obj; - } - Cell_number(id){ - const obj = new this.$.$mol_grid_number(); - (obj.sub) = () => ((this.cell_content_number(id))); - return obj; - } - Col_head(id){ - const obj = new this.$.$mol_float(); - (obj.dom_name) = () => ("th"); - (obj.sub) = () => ((this.col_head_content(id))); - return obj; - } - Cell_branch(id){ - const obj = new this.$.$mol_check_expand(); - (obj.level) = () => ((this.cell_level(id))); - (obj.label) = () => ((this.cell_content(id))); - (obj.expanded) = (next) => ((this.cell_expanded(id, next))); - return obj; - } - Cell_content(id){ - return [(this.Cell_dimmer(id))]; - } - }; - ($mol_mem(($.$mol_grid.prototype), "Table")); - ($mol_mem_key(($.$mol_grid.prototype), "cell_expanded")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell_dimmer")); - ($mol_mem(($.$mol_grid.prototype), "Head")); - ($mol_mem_key(($.$mol_grid.prototype), "Row")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell_text")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell_number")); - ($mol_mem_key(($.$mol_grid.prototype), "Col_head")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell_branch")); - ($.$mol_grid_table) = class $mol_grid_table extends ($.$mol_list) {}; - ($.$mol_grid_row) = class $mol_grid_row extends ($.$mol_view) { - cells(){ - return []; - } - sub(){ - return (this.cells()); - } - }; - ($.$mol_grid_cell) = class $mol_grid_cell extends ($.$mol_view) { - minimal_height(){ - return 40; - } - }; - ($.$mol_grid_number) = class $mol_grid_number extends ($.$mol_grid_cell) {}; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_grid extends $.$mol_grid { - head_cells() { - return this.col_ids().map(colId => this.Col_head(colId)); - } - col_head_content(colId) { - return [colId]; - } - rows() { - return this.row_ids().map(id => this.Row(id)); - } - cells(row_id) { - return this.col_ids().map(col_id => this.Cell({ row: row_id, col: col_id })); - } - col_type(col_id) { - if (col_id === this.hierarchy_col()) - return 'branch'; - const rowFirst = this.row_id(0); - const val = this.record(rowFirst[rowFirst.length - 1])[col_id]; - if (typeof val === 'number') - return 'number'; - return 'text'; - } - Cell(id) { - switch (this.col_type(id.col).valueOf()) { - case 'branch': return this.Cell_branch(id); - case 'number': return this.Cell_number(id); - } - return this.Cell_text(id); - } - cell_content(id) { - return [this.record(id.row[id.row.length - 1])[id.col]]; - } - cell_content_text(id) { - return this.cell_content(id).map(val => typeof val === 'object' ? JSON.stringify(val) : val); - } - records() { - return []; - } - record(id) { - return this.records()[id]; - } - record_ids() { - return Object.keys(this.records()); - } - row_id(index) { - return this.row_ids().slice(index, index + 1).valueOf()[0]; - } - col_ids() { - const rowFirst = this.row_id(0); - if (rowFirst === void 0) - return []; - const record = this.record(rowFirst[rowFirst.length - 1]); - if (!record) - return []; - return Object.keys(record); - } - hierarchy() { - const hierarchy = {}; - const root = hierarchy[''] = { - id: '', - parent: null, - sub: [], - }; - this.record_ids().map(id => { - root.sub.push(hierarchy[id] = { - id, - parent: root, - sub: [], - }); - }); - return hierarchy; - } - row_sub_ids(row) { - return this.hierarchy()[row[row.length - 1]].sub.map(child => row.concat(child.id)); - } - row_root_id() { - return ['']; - } - cell_level(id) { - return id.row.length - 1; - } - row_ids() { - const next = []; - const add = (row) => { - next.push(row); - if (this.row_expanded(row)) { - this.row_sub_ids(row).forEach(child => add(child)); - } - }; - this.row_sub_ids(this.row_root_id()).forEach(child => add(child)); - return next; - } - row_expanded(row_id, next) { - if (!this.row_sub_ids(row_id).length) - return null; - const key = `row_expanded(${JSON.stringify(row_id)})`; - const next2 = $mol_state_session.value(key, next); - return (next2 == null) ? this.row_expanded_default(row_id) : next2; - } - row_expanded_default(row_id) { - return true; - } - cell_expanded(id, next) { - return this.row_expanded(id.row, next); - } - } - __decorate([ - $mol_mem - ], $mol_grid.prototype, "head_cells", null); - __decorate([ - $mol_mem - ], $mol_grid.prototype, "rows", null); - __decorate([ - $mol_mem_key - ], $mol_grid.prototype, "col_type", null); - __decorate([ - $mol_mem - ], $mol_grid.prototype, "record_ids", null); - __decorate([ - $mol_mem - ], $mol_grid.prototype, "hierarchy", null); - __decorate([ - $mol_mem - ], $mol_grid.prototype, "row_ids", null); - $$.$mol_grid = $mol_grid; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/grid/grid.view.css", "[mol_grid] {\n\tdisplay: block;\n\tflex: 0 1 auto;\n\tposition: relative;\n\toverflow-x: auto;\n}\n\n[mol_grid_gap] {\n\tposition: absolute;\n\tpadding: .1px;\n\ttop: 0;\n\ttransform: translateZ(0);\n}\n\n[mol_grid_table] {\n\tborder-spacing: 0;\n\tdisplay: table-row-group;\n\tposition: relative;\n}\n\n[mol_grid_table] > * {\n\tdisplay: table-row;\n\ttransition: none;\n}\n\n[mol_grid_head] > *,\n[mol_grid_table] > * > * {\n\tdisplay: table-cell;\n\tpadding: var(--mol_gap_text);\n\twhite-space: nowrap;\n\tvertical-align: middle;\n\tbox-shadow: inset 2px 2px 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_row]:where(:first-child) > * {\n\tbox-shadow: inset 2px 0 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_table] > * > *:where(:first-child) {\n\tbox-shadow: inset 0px 2px 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_head] > * {\n\tbox-shadow: inset 2px -2px 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_head] > *:where(:first-child) {\n\tbox-shadow: inset 0px -2px 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_table] > [mol_grid_row]:where(:first-child) > *:where(:first-child) {\n\tbox-shadow: none;\n}\t\n\n[mol_grid_head] {\n\tdisplay: table-row;\n\ttransform: none !important;\n}\n\n/* [mol_grid_cell_number] {\n\ttext-align: right;\n} */\n\n[mol_grid_col_head] {\n\tfont-weight: inherit;\n\ttext-align: inherit;\n\tdisplay: table-cell;\n\tcolor: var(--mol_theme_shade);\n}\n\n[mol_grid_cell_dimmer] {\n\tdisplay: inline-block;\n\tvertical-align: inherit;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_embed_native) = class $mol_embed_native extends ($.$mol_scroll) { - mime(){ - return ""; - } - title(){ - return ""; - } - Fallback(){ - const obj = new this.$.$mol_link(); - (obj.uri) = () => ((this.uri())); - (obj.sub) = () => ([(this.title())]); - return obj; - } - uri_change(next){ - if(next !== undefined) return next; - return null; - } - uri(next){ - if(next !== undefined) return next; - return ""; - } - dom_name(){ - return "object"; - } - window(){ - return null; - } - attr(){ - return { - ...(super.attr()), - "data": (this.uri()), - "type": (this.mime()) - }; - } - sub(){ - return [(this.Fallback())]; - } - message(){ - return {"hashchange": (next) => (this.uri_change(next))}; - } - }; - ($mol_mem(($.$mol_embed_native.prototype), "Fallback")); - ($mol_mem(($.$mol_embed_native.prototype), "uri_change")); - ($mol_mem(($.$mol_embed_native.prototype), "uri")); - - -; -"use strict"; -var $; -(function ($) { - function $mol_promise() { - let done; - let fail; - const promise = new Promise((d, f) => { - done = d; - fail = f; - }); - return Object.assign(promise, { - done, - fail, - }); - } - $.$mol_promise = $mol_promise; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wait_timeout_async(timeout) { - const promise = $mol_promise(); - const task = new this.$mol_after_timeout(timeout, () => promise.done()); - return Object.assign(promise, { - destructor: () => task.destructor() - }); - } - $.$mol_wait_timeout_async = $mol_wait_timeout_async; - function $mol_wait_timeout(timeout) { - return this.$mol_wire_sync(this).$mol_wait_timeout_async(timeout); - } - $.$mol_wait_timeout = $mol_wait_timeout; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_native extends $.$mol_embed_native { - window() { - $mol_wire_solid(); - return $mol_wire_sync(this).load(this.dom_node_actual()); - } - load(frame) { - return new Promise((done, fail) => { - frame.onload = () => { - try { - if (frame.contentWindow.location.href === 'about:blank') { - return; - } - } - catch { } - done(frame.contentWindow); - }; - frame.onerror = (event) => { - fail(typeof event === 'string' ? new Error(event) : event.error || event); - }; - }); - } - uri_resource() { - return this.uri().replace(/#.*/, ''); - } - message_listener() { - return new $mol_dom_listener($mol_dom_context, 'message', $mol_wire_async(this).message_receive); - } - message_receive(event) { - if (!event) - return; - if (event.source !== this.window()) - return; - if (!Array.isArray(event.data)) - return; - this.message()[event.data[0]]?.(event); - } - uri_change(event) { - this.$.$mol_wait_timeout(1000); - this.uri(event.data[1]); - } - auto() { - return [ - this.message_listener(), - this.window(), - ]; - } - } - __decorate([ - $mol_mem - ], $mol_embed_native.prototype, "window", null); - __decorate([ - $mol_mem - ], $mol_embed_native.prototype, "uri_resource", null); - __decorate([ - $mol_mem - ], $mol_embed_native.prototype, "message_listener", null); - $$.$mol_embed_native = $mol_embed_native; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/embed/native/native.view.css", "[mol_embed_native] {\n\tmax-width: 100%;\n\tmax-height: 100vh;\n\tobject-fit: cover;\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\tobject-position: top left;\n\tborder-radius: var(--mol_gap_round);\n\taspect-ratio: 4/3;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_icon_youtube) = class $mol_icon_youtube extends ($.$mol_icon) { - path(){ - return "M10,15L15.19,12L10,9V15M21.56,7.17C21.69,7.64 21.78,8.27 21.84,9.07C21.91,9.87 21.94,10.56 21.94,11.16L22,12C22,14.19 21.84,15.8 21.56,16.83C21.31,17.73 20.73,18.31 19.83,18.56C19.36,18.69 18.5,18.78 17.18,18.84C15.88,18.91 14.69,18.94 13.59,18.94L12,19C7.81,19 5.2,18.84 4.17,18.56C3.27,18.31 2.69,17.73 2.44,16.83C2.31,16.36 2.22,15.73 2.16,14.93C2.09,14.13 2.06,13.44 2.06,12.84L2,12C2,9.81 2.16,8.2 2.44,7.17C2.69,6.27 3.27,5.69 4.17,5.44C4.64,5.31 5.5,5.22 6.82,5.16C8.12,5.09 9.31,5.06 10.41,5.06L12,5C16.19,5 18.8,5.16 19.83,5.44C20.73,5.69 21.31,6.27 21.56,7.17Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_frame) = class $mol_frame extends ($.$mol_embed_native) { - allow(){ - return ""; - } - uri(next){ - if(next !== undefined) return next; - return "about:config"; - } - html(){ - return null; - } - dom_name(){ - return "iframe"; - } - attr(){ - return { - ...(super.attr()), - "data": null, - "type": null, - "allow": (this.allow()), - "src": (this.uri()), - "srcdoc": (this.html()) - }; - } - fullscreen(){ - return true; - } - accelerometer(){ - return true; - } - autoplay(){ - return true; - } - encription(){ - return true; - } - gyroscope(){ - return true; - } - pip(){ - return true; - } - clipboard_read(){ - return true; - } - clipboard_write(){ - return true; - } - }; - ($mol_mem(($.$mol_frame.prototype), "uri")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_frame extends $.$mol_frame { - window() { - return super.window(); - } - allow() { - return [ - ...this.fullscreen() ? ['fullscreen'] : [], - ...this.accelerometer() ? ['accelerometer'] : [], - ...this.autoplay() ? ['autoplay'] : [], - ...this.encription() ? ['encrypted-media'] : [], - ...this.gyroscope() ? ['gyroscope'] : [], - ...this.pip() ? ['picture-in-picture'] : [], - ...this.clipboard_read() ? [`clipboard-read ${this.uri()}`] : [], - ...this.clipboard_write() ? [`clipboard-write ${this.uri()}`] : [], - ].join('; '); - } - } - $$.$mol_frame = $mol_frame; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_define($mol_frame, { - border: { - style: 'none', - }, - maxHeight: $mol_style_unit.vh(100), - }); -})($ || ($ = {})); - -; - ($.$mol_embed_service) = class $mol_embed_service extends ($.$mol_check) { - active(next){ - if(next !== undefined) return next; - return false; - } - title(){ - return ""; - } - video_preview(){ - return ""; - } - Image(){ - const obj = new this.$.$mol_image(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.video_preview())); - return obj; - } - Hint(){ - const obj = new this.$.$mol_icon_youtube(); - return obj; - } - video_embed(){ - return ""; - } - Frame(){ - const obj = new this.$.$mol_frame(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.video_embed())); - return obj; - } - uri(){ - return ""; - } - video_id(){ - return ""; - } - checked(next){ - return (this.active(next)); - } - sub(){ - return [ - (this.Image()), - (this.Hint()), - (this.Frame()) - ]; - } - }; - ($mol_mem(($.$mol_embed_service.prototype), "active")); - ($mol_mem(($.$mol_embed_service.prototype), "Image")); - ($mol_mem(($.$mol_embed_service.prototype), "Hint")); - ($mol_mem(($.$mol_embed_service.prototype), "Frame")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_service extends $.$mol_embed_service { - sub() { - return this.active() - ? [this.Frame()] - : [this.Image(), this.Hint()]; - } - } - __decorate([ - $mol_mem - ], $mol_embed_service.prototype, "sub", null); - $$.$mol_embed_service = $mol_embed_service; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/embed/service/service.view.css", "[mol_embed_service] {\n\tpadding: 0;\n\tmax-width: 100%;\n}\n\n[mol_embed_service_image] {\n\tflex: auto 1 1;\n\twidth: 100vw;\n}\n\n[mol_embed_service_frame] {\n\twidth: 100vw;\n}\n\n[mol_embed_service_hint] {\n\tposition: absolute;\n left: 50%;\n top: 50%;\n width: 50%;\n height: 50%;\n opacity: 0.3;\n transform: translate(-50%, -50%);\n}\n\n[mol_embed_service]:hover [mol_embed_service_hint] {\n\topacity: .6;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_embed_youtube) = class $mol_embed_youtube extends ($.$mol_embed_service) {}; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_youtube extends $.$mol_embed_youtube { - video_embed() { - return `https://www.youtube.com/embed/${encodeURIComponent(this.video_id())}?autoplay=1&loop=1`; - } - video_id() { - return this.uri().match(/^https\:\/\/www\.youtube\.com\/(?:embed\/|shorts\/|watch\?v=)([^\/&?#]+)/)?.[1] - ?? this.uri().match(/^https\:\/\/youtu\.be\/([^\/&?#]+)/)?.[1] - ?? 'about:blank'; - } - video_preview() { - return `https://i.ytimg.com/vi/${this.video_id()}/sddefault.jpg`; - } - } - __decorate([ - $mol_mem - ], $mol_embed_youtube.prototype, "video_embed", null); - __decorate([ - $mol_mem - ], $mol_embed_youtube.prototype, "video_id", null); - __decorate([ - $mol_mem - ], $mol_embed_youtube.prototype, "video_preview", null); - $$.$mol_embed_youtube = $mol_embed_youtube; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_embed_rutube) = class $mol_embed_rutube extends ($.$mol_embed_service) {}; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_rutube extends $.$mol_embed_rutube { - video_embed() { - return `https://rutube.ru/play/embed/${encodeURIComponent(this.video_id())}`; - } - video_id() { - return this.uri().match(/^https:\/\/rutube.ru\/video\/([^\/&?#]+)/)?.[1] ?? 'about:blank'; - } - video_preview() { - return `https://rutube.ru/api/video/${this.video_id()}/thumbnail/?redirect=1`; - } - } - __decorate([ - $mol_mem - ], $mol_embed_rutube.prototype, "video_embed", null); - __decorate([ - $mol_mem - ], $mol_embed_rutube.prototype, "video_id", null); - __decorate([ - $mol_mem - ], $mol_embed_rutube.prototype, "video_preview", null); - $$.$mol_embed_rutube = $mol_embed_rutube; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_embed_any) = class $mol_embed_any extends ($.$mol_view) { - title(){ - return ""; - } - uri(){ - return ""; - } - Image(){ - const obj = new this.$.$mol_image(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.uri())); - return obj; - } - Object(){ - const obj = new this.$.$mol_embed_native(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.uri())); - return obj; - } - Youtube(){ - const obj = new this.$.$mol_embed_youtube(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.uri())); - return obj; - } - Rutube(){ - const obj = new this.$.$mol_embed_rutube(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.uri())); - return obj; - } - }; - ($mol_mem(($.$mol_embed_any.prototype), "Image")); - ($mol_mem(($.$mol_embed_any.prototype), "Object")); - ($mol_mem(($.$mol_embed_any.prototype), "Youtube")); - ($mol_mem(($.$mol_embed_any.prototype), "Rutube")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_any extends $.$mol_embed_any { - type() { - try { - const uri = this.uri(); - if (/\b(png|gif|jpg|jpeg|jfif|webp|svg)\b/.test(uri)) - return 'image'; - if (/^https:\/\/www\.youtube\.com\//.test(uri)) - return 'youtube'; - if (/^https:\/\/youtu\.be\//.test(uri)) - return 'youtube'; - if (/^https:\/\/rutube\.ru\//.test(uri)) - return 'rutube'; - } - catch (error) { - $mol_fail_log(error); - return 'image'; - } - return 'object'; - } - sub() { - switch (this.type()) { - case 'image': return [this.Image()]; - case 'youtube': return [this.Youtube()]; - case 'rutube': return [this.Rutube()]; - default: return [this.Object()]; - } - } - } - __decorate([ - $mol_mem - ], $mol_embed_any.prototype, "type", null); - __decorate([ - $mol_mem - ], $mol_embed_any.prototype, "sub", null); - $$.$mol_embed_any = $mol_embed_any; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_expander) = class $mol_expander extends ($.$mol_list) { - expanded(next){ - if(next !== undefined) return next; - return false; - } - expandable(){ - return true; - } - label(){ - return [(this.title())]; - } - Trigger(){ - const obj = new this.$.$mol_check_expand(); - (obj.checked) = (next) => ((this.expanded(next))); - (obj.expandable) = () => ((this.expandable())); - (obj.label) = () => ((this.label())); - return obj; - } - Tools(){ - return null; - } - Label(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Trigger()), (this.Tools())]); - return obj; - } - content(){ - return []; - } - Content(){ - const obj = new this.$.$mol_list(); - (obj.rows) = () => ((this.content())); - return obj; - } - rows(){ - return [(this.Label()), (this.Content())]; - } - }; - ($mol_mem(($.$mol_expander.prototype), "expanded")); - ($mol_mem(($.$mol_expander.prototype), "Trigger")); - ($mol_mem(($.$mol_expander.prototype), "Label")); - ($mol_mem(($.$mol_expander.prototype), "Content")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_expander extends $.$mol_expander { - rows() { - return [ - this.Label(), - ...this.expanded() ? [this.Content()] : [] - ]; - } - expandable() { - return this.content().length > 0; - } - } - __decorate([ - $mol_mem - ], $mol_expander.prototype, "rows", null); - $$.$mol_expander = $mol_expander; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/expander/expander.view.css", "[mol_expander] {\n\tflex-direction: column;\n}\n\n[mol_expander_label] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tborder-radius: var(--mol_gap_round);\n}\n\n[mol_expander_trigger] {\n\tflex: auto;\n\tposition: relative;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_text) = class $mol_text extends ($.$mol_list) { - auto_scroll(){ - return null; - } - block_content(id){ - return []; - } - uri_resolve(id){ - return ""; - } - quote_text(id){ - return ""; - } - highlight(){ - return ""; - } - list_type(id){ - return "-"; - } - list_text(id){ - return ""; - } - header_level(id){ - return 1; - } - header_arg(id){ - return {}; - } - pre_text(id){ - return ""; - } - code_sidebar_showed(){ - return true; - } - pre_sidebar_showed(){ - return (this.code_sidebar_showed()); - } - table_head_cells(id){ - return []; - } - table_rows(id){ - return []; - } - table_cells(id){ - return []; - } - table_cell_text(id){ - return ""; - } - grid_rows(id){ - return []; - } - grid_cells(id){ - return []; - } - grid_cell_text(id){ - return ""; - } - line_text(id){ - return ""; - } - line_type(id){ - return ""; - } - line_content(id){ - return []; - } - code_syntax(){ - return null; - } - link_uri(id){ - return ""; - } - link_host(id){ - return ""; - } - spoiler_label(id){ - return ""; - } - Spoiler_label(id){ - const obj = new this.$.$mol_text(); - (obj.text) = () => ((this.spoiler_label(id))); - return obj; - } - spoiler_content(id){ - return ""; - } - Spoiler_content(id){ - const obj = new this.$.$mol_text(); - (obj.text) = () => ((this.spoiler_content(id))); - return obj; - } - uri_base(){ - return ""; - } - text(){ - return ""; - } - param(){ - return ""; - } - flow_tokens(){ - return []; - } - block_text(id){ - return ""; - } - auto(){ - return [(this.auto_scroll())]; - } - Paragraph(id){ - const obj = new this.$.$mol_paragraph(); - (obj.sub) = () => ((this.block_content(id))); - return obj; - } - Quote(id){ - const obj = new this.$.$mol_text(); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.text) = () => ((this.quote_text(id))); - (obj.highlight) = () => ((this.highlight())); - (obj.auto_scroll) = () => (null); - return obj; - } - List(id){ - const obj = new this.$.$mol_text_list(); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.type) = () => ((this.list_type(id))); - (obj.text) = () => ((this.list_text(id))); - (obj.highlight) = () => ((this.highlight())); - return obj; - } - item_index(id){ - return 0; - } - Header(id){ - const obj = new this.$.$mol_text_header(); - (obj.minimal_height) = () => (40); - (obj.level) = () => ((this.header_level(id))); - (obj.content) = () => ((this.block_content(id))); - (obj.arg) = () => ((this.header_arg(id))); - return obj; - } - Pre(id){ - const obj = new this.$.$mol_text_code(); - (obj.text) = () => ((this.pre_text(id))); - (obj.highlight) = () => ((this.highlight())); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.sidebar_showed) = () => ((this.pre_sidebar_showed())); - return obj; - } - Cut(id){ - const obj = new this.$.$mol_view(); - (obj.dom_name) = () => ("hr"); - return obj; - } - Table(id){ - const obj = new this.$.$mol_grid(); - (obj.head_cells) = () => ((this.table_head_cells(id))); - (obj.rows) = () => ((this.table_rows(id))); - return obj; - } - Table_row(id){ - const obj = new this.$.$mol_grid_row(); - (obj.cells) = () => ((this.table_cells(id))); - return obj; - } - Table_cell(id){ - const obj = new this.$.$mol_text(); - (obj.auto_scroll) = () => (null); - (obj.highlight) = () => ((this.highlight())); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.text) = () => ((this.table_cell_text(id))); - return obj; - } - Grid(id){ - const obj = new this.$.$mol_grid(); - (obj.rows) = () => ((this.grid_rows(id))); - return obj; - } - Grid_row(id){ - const obj = new this.$.$mol_grid_row(); - (obj.cells) = () => ((this.grid_cells(id))); - return obj; - } - Grid_cell(id){ - const obj = new this.$.$mol_text(); - (obj.auto_scroll) = () => (null); - (obj.highlight) = () => ((this.highlight())); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.text) = () => ((this.grid_cell_text(id))); - return obj; - } - String(id){ - const obj = new this.$.$mol_dimmer(); - (obj.dom_name) = () => ("span"); - (obj.needle) = () => ((this.highlight())); - (obj.haystack) = () => ((this.line_text(id))); - return obj; - } - Span(id){ - const obj = new this.$.$mol_text_span(); - (obj.dom_name) = () => ("span"); - (obj.type) = () => ((this.line_type(id))); - (obj.sub) = () => ((this.line_content(id))); - return obj; - } - Code_line(id){ - const obj = new this.$.$mol_text_code_line(); - (obj.numb_showed) = () => (false); - (obj.highlight) = () => ((this.highlight())); - (obj.text) = () => ((this.line_text(id))); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.syntax) = () => ((this.code_syntax())); - return obj; - } - Link(id){ - const obj = new this.$.$mol_link_iconed(); - (obj.uri) = () => ((this.link_uri(id))); - (obj.content) = () => ((this.line_content(id))); - return obj; - } - Link_http(id){ - const obj = new this.$.$mol_link_iconed(); - (obj.uri) = () => ((this.link_uri(id))); - (obj.content) = () => ([(this.link_host(id))]); - return obj; - } - Embed(id){ - const obj = new this.$.$mol_embed_any(); - (obj.uri) = () => ((this.link_uri(id))); - (obj.title) = () => ((this.line_text(id))); - return obj; - } - Spoiler(id){ - const obj = new this.$.$mol_expander(); - (obj.label) = () => ([(this.Spoiler_label(id))]); - (obj.content) = () => ([(this.Spoiler_content(id))]); - return obj; - } - }; - ($mol_mem_key(($.$mol_text.prototype), "Spoiler_label")); - ($mol_mem_key(($.$mol_text.prototype), "Spoiler_content")); - ($mol_mem_key(($.$mol_text.prototype), "Paragraph")); - ($mol_mem_key(($.$mol_text.prototype), "Quote")); - ($mol_mem_key(($.$mol_text.prototype), "List")); - ($mol_mem_key(($.$mol_text.prototype), "Header")); - ($mol_mem_key(($.$mol_text.prototype), "Pre")); - ($mol_mem_key(($.$mol_text.prototype), "Cut")); - ($mol_mem_key(($.$mol_text.prototype), "Table")); - ($mol_mem_key(($.$mol_text.prototype), "Table_row")); - ($mol_mem_key(($.$mol_text.prototype), "Table_cell")); - ($mol_mem_key(($.$mol_text.prototype), "Grid")); - ($mol_mem_key(($.$mol_text.prototype), "Grid_row")); - ($mol_mem_key(($.$mol_text.prototype), "Grid_cell")); - ($mol_mem_key(($.$mol_text.prototype), "String")); - ($mol_mem_key(($.$mol_text.prototype), "Span")); - ($mol_mem_key(($.$mol_text.prototype), "Code_line")); - ($mol_mem_key(($.$mol_text.prototype), "Link")); - ($mol_mem_key(($.$mol_text.prototype), "Link_http")); - ($mol_mem_key(($.$mol_text.prototype), "Embed")); - ($mol_mem_key(($.$mol_text.prototype), "Spoiler")); - ($.$mol_text_header) = class $mol_text_header extends ($.$mol_paragraph) { - arg(){ - return {}; - } - content(){ - return []; - } - Link(){ - const obj = new this.$.$mol_link(); - (obj.arg) = () => ((this.arg())); - (obj.hint) = () => ((this.$.$mol_locale.text("$mol_text_header_Link_hint"))); - (obj.sub) = () => ((this.content())); - return obj; - } - level(){ - return 1; - } - sub(){ - return [(this.Link())]; - } - }; - ($mol_mem(($.$mol_text_header.prototype), "Link")); - ($.$mol_text_span) = class $mol_text_span extends ($.$mol_paragraph) { - type(){ - return ""; - } - dom_name(){ - return "span"; - } - attr(){ - return {...(super.attr()), "mol_text_type": (this.type())}; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_text extends $.$mol_text { - flow_tokens() { - const tokens = []; - this.$.$mol_syntax2_md_flow.tokenize(this.text(), (name, found, chunks) => tokens.push({ name, found, chunks })); - return tokens; - } - block_type(index) { - return this.flow_tokens()[index].name; - } - rows() { - return this.flow_tokens().map(({ name }, index) => { - switch (name) { - case 'quote': return this.Quote(index); - case 'spoiler': return this.Spoiler(index); - case 'header': return this.Header(index); - case 'list': return this.List(index); - case 'code': return this.Pre(index); - case 'code-indent': return this.Pre(index); - case 'table': return this.Table(index); - case 'grid': return this.Grid(index); - case 'cut': return this.Cut(index); - default: return this.Paragraph(index); - } - }); - } - param() { - return this.toString().replace(/^.*?[\)>]\./, '').replace(/[(<>)]/g, ''); - } - header_level(index) { - return this.flow_tokens()[index].chunks[0].length; - } - header_arg(index) { - return { - [this.param()]: this.block_text(index) - }; - } - list_type(index) { - return this.flow_tokens()[index].chunks[1] ?? ''; - } - item_index(index) { - return this.flow_tokens().slice(0, index).filter(token => token.name === 'block').length + 1; - } - pre_text(index) { - const token = this.flow_tokens()[index]; - return (token.chunks[2] ?? token.chunks[0].replace(/^(\t| (?:\+\+|--|\*\*| ) )/gm, '')).replace(/[\n\r]*$/, ''); - } - quote_text(index) { - return this.flow_tokens()[index].chunks[0].replace(/^[>"] /mg, ''); - } - list_text(index) { - return this.flow_tokens()[index].chunks[0].replace(/^([-*+]|(?:\d+[\.\)])+) ?/mg, '').replace(/^ ?/mg, ''); - } - cell_content(indexBlock) { - return this.flow_tokens()[indexBlock].chunks[0] - .split(/\r?\n/g) - .filter(row => row && !/\|--/.test(row)) - .map((row, rowId) => { - return row.split(/\|/g) - .filter(cell => cell) - .map((cell, cellId) => cell.trim()); - }); - } - table_rows(blockId) { - return this.cell_content(blockId) - .slice(1) - .map((row, rowId) => this.Table_row({ block: blockId, row: rowId + 1 })); - } - table_head_cells(blockId) { - return this.cell_content(blockId)[0] - .map((cell, cellId) => this.Table_cell({ block: blockId, row: 0, cell: cellId })); - } - table_cells(id) { - return this.cell_content(id.block)[id.row] - .map((cell, cellId) => this.Table_cell({ block: id.block, row: id.row, cell: cellId })); - } - table_cell_text(id) { - return this.cell_content(id.block)[id.row][id.cell]; - } - grid_content(indexBlock) { - return [...this.flow_tokens()[indexBlock].chunks[0].match(/(?:^! .*?$\r?\n?)+(?:^ +! .*?$\r?\n?)*/gm)] - .map((row, rowId) => { - const cells = []; - for (const line of row.trim().split(/\r?\n/)) { - const [_, indent, content] = /^( *)! (.*)/.exec(line); - const col = Math.ceil(indent.length / 2); - cells[col] = (cells[col] ? cells[col] + '\n' : '') + content; - } - return cells; - }); - } - grid_rows(blockId) { - return this.grid_content(blockId) - .map((row, rowId) => this.Grid_row({ block: blockId, row: rowId })); - } - grid_cells(id) { - return this.grid_content(id.block)[id.row] - .map((cell, cellId) => this.Grid_cell({ block: id.block, row: id.row, cell: cellId })); - } - grid_cell_text(id) { - return this.grid_content(id.block)[id.row][id.cell]; - } - uri_base() { - return $mol_dom_context.document.location.href; - } - uri_base_abs() { - return new URL(this.uri_base(), $mol_dom_context.document.location.href); - } - uri_resolve(uri) { - if (/^(\w+script+:)+/.test(uri)) - return null; - if (/^#\!/.test(uri)) { - const params = {}; - for (const chunk of uri.slice(2).split(this.$.$mol_state_arg.separator)) { - if (!chunk) - continue; - const vals = chunk.split('=').map(decodeURIComponent); - params[vals.shift()] = vals.join('='); - } - return this.$.$mol_state_arg.link(params); - } - try { - const url = new URL(uri, this.uri_base_abs()); - return url.toString(); - } - catch (error) { - $mol_fail_log(error); - return null; - } - } - code_syntax() { - return this.$.$mol_syntax2_md_code; - } - block_text(index) { - const token = this.flow_tokens()[index]; - switch (token.name) { - case 'header': return token.chunks[2]; - default: return token.chunks[0]; - } - } - block_content(index) { - return this.line_content([index]); - } - line_tokens(path) { - const tokens = []; - this.$.$mol_syntax2_md_line.tokenize(this.line_text(path), (name, found, chunks) => tokens.push({ name, found, chunks })); - return tokens; - } - line_token(path) { - const tokens = this.line_tokens(path.slice(0, path.length - 1)); - return tokens[path[path.length - 1]]; - } - line_type(path) { - return this.line_token(path).name; - } - line_text(path) { - if (path.length === 1) - return this.block_text(path[0]); - const { name, found, chunks } = this.line_token(path); - switch (name) { - case 'link': return chunks[0] || chunks[1].replace(/^.*?\/\/|\/.*$/g, ''); - case 'text-link': return chunks[0] || chunks[1].replace(/^.*?\/\/|\/.*$/g, ''); - default: return (chunks[0] || chunks[1] || chunks[2]) ?? found; - } - } - line_content(path) { - return this.line_tokens(path).map(({ name, chunks }, index) => { - const path2 = [...path, index]; - switch (name) { - case 'embed': return this.Embed(path2); - case 'link': return this.Link(path2); - case 'text-link-http': return this.Link_http(path2); - case 'text-link': return this.Link(path2); - case 'image-link': return this.Embed(path2); - case 'code': return this.Code_line(path2); - case '': return this.String(path2); - default: return this.Span(path2); - } - }); - } - link_uri(path) { - const token = this.line_token(path); - const uri = this.uri_resolve(token.chunks[1] ?? token.found); - if (!uri) - throw new Error('Bad link'); - return uri; - } - link_host(path) { - return this.link_uri(path).replace(/^.*?\/\/|\/.*$/g, ''); - } - auto_scroll() { - for (const [index, token] of this.flow_tokens().entries()) { - if (token.name !== 'header') - continue; - const header = this.Header(index); - if (!header.Link().current()) - continue; - new $mol_after_tick(() => this.ensure_visible(header)); - } - } - spoiler_rows(index) { - return this.flow_tokens()[index].chunks[0].replace(/^[\?] /mg, '').split('\n'); - } - spoiler_label(index) { - return this.spoiler_rows(index)[0]; - } - spoiler_content(index) { - return this.spoiler_rows(index).slice(1).join('\n'); - } - } - __decorate([ - $mol_mem - ], $mol_text.prototype, "flow_tokens", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "block_type", null); - __decorate([ - $mol_mem - ], $mol_text.prototype, "rows", null); - __decorate([ - $mol_mem - ], $mol_text.prototype, "param", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "header_level", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "header_arg", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "pre_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "quote_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "list_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "cell_content", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "table_rows", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "table_head_cells", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "table_cells", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "table_cell_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "grid_content", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "grid_rows", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "grid_cells", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "grid_cell_text", null); - __decorate([ - $mol_mem - ], $mol_text.prototype, "uri_base_abs", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "uri_resolve", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "block_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_tokens", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_token", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_type", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_content", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "link_uri", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "link_host", null); - __decorate([ - $mol_mem - ], $mol_text.prototype, "auto_scroll", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "spoiler_rows", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "spoiler_label", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "spoiler_content", null); - $$.$mol_text = $mol_text; - class $mol_text_header extends $.$mol_text_header { - dom_name() { - return 'h' + this.level(); - } - } - $$.$mol_text_header = $mol_text_header; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/text/text/text.view.css", "[mol_text] {\n\tline-height: 1.5em;\n\tbox-sizing: border-box;\n\tborder-radius: var(--mol_gap_round);\n\twhite-space: pre-line;\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 0 0 auto;\n\ttab-size: 4;\n}\n\n[mol_text_paragraph] {\n\tpadding: var(--mol_gap_text);\n\toverflow: auto;\n\toverflow-x: overlay;\n\tmax-width: 100%;\n\tdisplay: block;\n\tmax-width: 60rem;\n\tbreak-inside: avoid;\n}\n\n[mol_text_spoiler_label_paragraph] {\n\tpadding: 0;\n}\n\n[mol_text_span] {\n\tdisplay: inline;\n}\n\n[mol_text_string] {\n\tdisplay: inline;\n\tflex: 0 1 auto;\n\twhite-space: normal;\n}\n\n[mol_text_quote] {\n\tmargin: var(--mol_gap_block);\n\tpadding: var(--mol_gap_block);\n\tbackground: var(--mol_theme_card);\n\tbox-shadow: 0 0 0 1px var(--mol_theme_back);\n\tbreak-inside: avoid;\n}\n\n[mol_text_header] {\n\tdisplay: block;\n\ttext-shadow: 0 0;\n\tfont-weight: normal;\n\tbreak-after: avoid;\n}\n\n* + [mol_text_header] {\n\tmargin-top: 0.75rem;\n}\n\nh1[mol_text_header] {\n\tfont-size: 1.5rem;\n}\n\nh2[mol_text_header] {\n\tfont-size: 1.5rem;\n\tfont-style: italic;\n}\n\nh3[mol_text_header] {\n\tfont-size: 1.25rem;\n}\n\nh4[mol_text_header] {\n\tfont-size: 1.25em;\n\tfont-style: italic;\n}\n\nh5[mol_text_header] {\n\tfont-size: 1rem;\n}\n\nh6[mol_text_header] {\n\tfont-size: 1rem;\n\tfont-style: italic;\n}\n\n[mol_text_header_link] {\n\tcolor: inherit;\n}\n\n[mol_text_table] {\n\tbreak-inside: avoid;\n}\n\n[mol_text_table_cell] {\n\twidth: auto;\n\tdisplay: table-cell;\n\tvertical-align: baseline;\n\tpadding: 0;\n\tborder-radius: 0;\n}\n\n[mol_text_grid] {\n\tbreak-inside: avoid;\n}\n\n[mol_text_grid_cell] {\n\twidth: auto;\n\tdisplay: table-cell;\n\tvertical-align: top;\n\tpadding: 0;\n\tborder-radius: 0;\n}\n\n[mol_text_cut] {\n\tborder: none;\n\twidth: 100%;\n\tbox-shadow: 0 0 0 1px var(--mol_theme_line);\n}\n\n[mol_text_link_http],\n[mol_text_link] {\n\tpadding: 0;\n\tdisplay: inline;\n\twhite-space: nowrap;\n}\n\n[mol_text_link_icon] + [mol_text_embed] {\n\tmargin-left: -1.5rem;\n}\n\n[mol_text_embed_youtube] {\n\tdisplay: inline;\n}\n\n[mol_text_embed_youtube_image],\n[mol_text_embed_youtube_frame],\n[mol_text_embed_object] {\n\tobject-fit: contain;\n\tobject-position: center;\n\tdisplay: inline;\n\twidth: 100vw;\n\tmax-height: calc( 100vh - 6rem );\n\tvertical-align: top;\n}\n[mol_text_embed_object_fallback] {\n\tpadding: 0;\n}\n[mol_text_embed_image] {\n\tobject-fit: contain;\n\tobject-position: center;\n\tdisplay: inline;\n\t/* max-height: calc( 100vh - 6rem ); */\n\tvertical-align: top;\n}\n\n[mol_text_pre] {\n\twhite-space: pre;\n\toverflow-x: auto;\n\toverflow-x: overlay;\n\ttab-size: 2;\n\tbreak-inside: avoid;\n}\n\n[mol_text_code_line] {\n\tdisplay: inline-block;\n}\n\n[mol_text_type=\"strong\"] {\n\ttext-shadow: 0 0;\n\tfilter: contrast(1.5);\n}\n\n[mol_text_type=\"emphasis\"] {\n\tfont-style: italic;\n}\n\n[mol_text_type=\"insert\"] {\n\tcolor: var(--mol_theme_special);\n}\n\n[mol_text_type=\"delete\"] {\n\tcolor: var(--mol_theme_shade);\n}\n\n[mol_text_type=\"remark\"] {\n\tcolor: var(--mol_theme_shade);\n}\n\n[mol_text_type=\"quote\"] {\n\tfont-style: italic;\n}\n"); -})($ || ($ = {})); - -; - ($.$optimade_cifplayer_app) = class $optimade_cifplayer_app extends ($.$mol_drop) { - drop_file(next){ - if(next !== undefined) return next; - return null; - } - Theme(){ - const obj = new this.$.$mol_theme_auto(); - return obj; - } - Book(){ - const obj = new this.$.$mol_book2(); - (obj.plugins) = () => ([(this.Theme())]); - (obj.pages) = () => ((this.pages())); - (obj.Placeholder) = () => (null); - return obj; - } - Source(){ - const obj = new this.$.$mol_link_iconed(); - (obj.uri) = () => ("https://github.com/tilde-lab/cifplayer"); - (obj.title) = () => (""); - return obj; - } - Lights(){ - const obj = new this.$.$mol_lights_toggle(); - return obj; - } - Upload_icon(){ - return (this.Upload().Icon()); - } - Upload_native(){ - return (this.Upload().Native()); - } - files_read(next){ - if(next !== undefined) return next; - return null; - } - Upload(){ - const obj = new this.$.$mol_button_open(); - (obj.files) = (next) => ((this.files_read(next))); - (obj.sub) = () => ([ - (this.Upload_icon()), - (this.Upload_native()), - "Choose file" - ]); - return obj; - } - Data_text(){ - const obj = new this.$.$mol_textarea(); - (obj.value) = (next) => ((this.data_str(next))); - (obj.hint) = () => ("or paste here..."); - return obj; - } - Body(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Upload()), (this.Data_text())]); - return obj; - } - Menu(){ - const obj = new this.$.$mol_page(); - (obj.title) = () => ("Crystal structure web-viewer"); - (obj.tools) = () => ([(this.Source()), (this.Lights())]); - (obj.body) = () => ([(this.Body())]); - return obj; - } - data_str(next){ - if(next !== undefined) return next; - return ""; - } - vibrate(next){ - return (this.Player().vibrate(next)); - } - unvibrate(){ - return (this.Player().unvibrate()); - } - Player(){ - const obj = new this.$.$optimade_cifplayer_player(); - (obj.data) = () => ((this.data_str())); - return obj; - } - Start_message(){ - const obj = new this.$.$mol_text(); - (obj.text) = () => ("Choose or paste a CIF, POSCAR, or Optimade file. No remote server is used."); - return obj; - } - paste_example(next){ - if(next !== undefined) return next; - return null; - } - Paste_example(){ - const obj = new this.$.$mol_button_minor(); - (obj.title) = () => ("Show example"); - (obj.click) = (next) => ((this.paste_example(next))); - return obj; - } - receive(next){ - return (this.drop_file(next)); - } - Sub(){ - return (this.Book()); - } - pages(){ - return [(this.Menu()), (this.Player())]; - } - Start(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Start_message()), (this.Paste_example())]); - return obj; - } - }; - ($mol_mem(($.$optimade_cifplayer_app.prototype), "drop_file")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Theme")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Book")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Source")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Lights")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "files_read")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Upload")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Data_text")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Body")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Menu")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "data_str")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Player")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Start_message")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "paste_example")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Paste_example")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Start")); - - -; - ($.$mol_text_list) = class $mol_text_list extends ($.$mol_text) { - type(){ - return ""; - } - auto_scroll(){ - return null; - } - attr(){ - return {...(super.attr()), "mol_text_list_type": (this.type())}; - } - Paragraph(id){ - const obj = new this.$.$mol_text_list_item(); - (obj.index) = () => ((this.item_index(id))); - (obj.sub) = () => ((this.block_content(id))); - return obj; - } - }; - ($mol_mem_key(($.$mol_text_list.prototype), "Paragraph")); - ($.$mol_text_list_item) = class $mol_text_list_item extends ($.$mol_paragraph) { - index(){ - return 0; - } - attr(){ - return {...(super.attr()), "mol_text_list_item_index": (this.index())}; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/text/list/list.view.css", "[mol_text_list] {\r\n\tpadding-left: 1.75rem;\r\n}\r\n\r\n[mol_text_list_item] {\r\n\tcontain: none;\r\n\tdisplay: list-item;\r\n}\r\n\r\n[mol_text_list_item]::before {\r\n\tcontent: attr( mol_text_list_item_index ) \".\";\r\n\twidth: 1.25rem;\r\n\tdisplay: inline-block;\r\n\tposition: absolute;\r\n\tmargin-left: -1.75rem;\r\n\ttext-align: end;\r\n}\r\n\r\n[mol_text_list_type=\"-\"] > [mol_text_list_item]::before,\r\n[mol_text_list_type=\"*\"] > [mol_text_list_item]::before {\r\n\tcontent: \"•\";\r\n}\r\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - $mol_style_define($optimade_cifplayer_app, { - contain: 'none', - '[mol_drop_status]': { - drag: { - Menu: { - background: { - color: $mol_theme.hover, - }, - }, - }, - }, - Start: { - background: { - color: $mol_theme.back, - }, - padding: { - top: '6rem', - }, - flex: { - grow: 1, - direction: 'column', - }, - align: { - items: 'center', - }, - }, - Menu: { - Body_content: { - gap: $mol_gap.block, - maxWidth: '25rem', - flex: { - direction: 'row', - }, - }, - Head: { - justify: { - content: 'flex-start' - }, - }, - }, - Body: { - flex: { - direction: 'column', - grow: 1, - }, - }, - Player: { - flex: { - grow: 1, - basis: '30rem', - }, - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - //# sourceMappingURL=node.js.map diff --git a/node.js.map b/node.js.map index 5a66f77..98c7c78 100644 --- a/node.js.map +++ b/node.js.map @@ -1 +1 @@ -{"version":3,"sources":["-","../../../../mam.ts","../../../../mol/ambient/ambient.ts","../../../../mol/delegate/delegate.ts","../../../../mol/owning/owning.ts","../../../../mol/fail/fail.ts","../../../../mol/fail/hidden/hidden.ts","../../../../mol/func/name/name.ts","../../../../mol/object2/object2.ts","../../../../mol/object/object.ts","../../../../mol/window/window.node.ts","../../../../mol/wire/cursor/cursor.ts","../../../../mol/wire/pub/pub.ts","../../../../mol/wire/wire.ts","../../../../mol/dev/format/format.ts","../../../../mol/wire/pub/sub/sub.ts","../../../../mol/after/tick/tick.ts","../../../../mol/promise/like/like.ts","../../../../mol/wire/fiber/fiber.ts","../../../../mol/guid/guid.ts","../../../../mol/key/key.ts","../../../../mol/after/timeout/timeout.ts","../../../../mol/after/frame/frame.node.ts","../../../../mol/compare/deep/deep.ts","../../../../mol/log3/log3.ts","../../../../mol/span/span.ts","../../../../mol/tree2/to/string/string.ts","../../../../mol/tree2/tree2.ts","../../../../mol/error/syntax/syntax.ts","../../../../mol/tree2/from/string/string.ts","../../../../mol/tree2/from/json/json.ts","../../../../mol/term/color/color.ts","../../../../mol/log3/log3.node.ts","../../../../mol/wire/task/task.ts","../../../../mol/wire/method/method.ts","../../../../mol/fail/catch/catch.ts","../../../../mol/fail/log/log.ts","../../../../mol/wire/atom/atom.ts","../../../../mol/wire/solo/solo.ts","../../../../mol/wire/plex/plex.ts","../../../../mol/mem/mem.ts","../../../../mol/dom/context/context.ts","../../../../node/node.node.ts","../../../../mol/error/mix/mix.ts","../../../../mol/env/env.ts","../../../../mol/env/env.node.ts","../../../../mol/wire/sync/sync.ts","../../../../mol/run/run.node.ts","../../../../mol/exec/exec.node.ts","../../../../mol/dom/context/context.node.ts","../../../../mol/view/selection/selection.ts","../../../../mol/wrapper/wrapper.ts","../../../../mol/memo/memo.ts","../../../../mol/dom/dom.ts","../../../../mol/dom/qname/qname.ts","../../../../mol/wire/probe/probe.ts","../../../../mol/wire/watch/watch.ts","../../../../mol/const/const.ts","../../../../mol/wire/solid/solid.ts","../../../../mol/dom/render/attributes/attributes.ts","../../../../mol/dom/render/events/events.ts","../../../../mol/dom/render/styles/styles.ts","../../../../mol/dom/render/children/children.ts","../../../../mol/dom/render/fields/fields.ts","../../../../mol/wire/async/async.ts","../../../../mol/style/attach/attach.ts","../../../../mol/decor/decor.ts","../../../../mol/style/unit/unit.ts","../../../../mol/style/func/func.ts","../../../../mol/style/prop/prop.ts","../../../../mol/theme/theme.ts","../../../../mol/theme/-css/theme.css.ts","../../../../mol/gap/gap.ts","../../../../mol/gap/-css/gap.css.ts","../../../../mol/view/view/view.ts","../../../../mol/view/view/-css/view.css.ts","../../../../mol/plugin/plugin.ts","../../../../mol/ghost/ghost.view.tree","../../../../mol/ghost/ghost.view.ts","../../../../mol/drop/drop.view.tree","../../../../mol/drop/drop.view.ts","../../../../mol/theme/auto/auto.view.tree","../../../../mol/action/action.ts","../../../../mol/state/arg/arg.node.ts","../../../../mol/media/media.ts","../../../../mol/mem/persist/persist.ts","../../../../mol/mem/cached/cached.ts","../../../../mol/storage/storage.ts","../../../../mol/state/local/local.ts","../../../../mol/lock/lock.ts","../../../../mol/compare/array/array.ts","../../../../mol/charset/decode/decode.ts","../../../../mol/charset/encode/encode.ts","../../../../mol/file/transaction/transaction.ts","../../../../mol/file/transaction/transaction.node.ts","../../../../mol/file/base/base.ts","../../../../mol/file/file.ts","../../../../mol/file/file.node.ts","../../../../mol/state/local/local.node.ts","../../../../mol/lights/lights.ts","../../../../mol/theme/auto/auto.view.ts","../../../../mol/scroll/scroll.view.tree","../../../../mol/dom/listener/listener.ts","../../../../mol/print/print.ts","../../../../mol/style/sheet/sheet.ts","../../../../mol/style/define/define.ts","../../../../mol/scroll/scroll.view.ts","../../../../mol/scroll/scroll.view.css.ts","../../../../mol/book2/book2.view.tree","../../../../mol/layer/layer.ts","../../../../mol/layer/-css/layer.css.ts","../../../../mol/book2/book2.view.ts","../../../../mol/book2/-css/book2.view.css.ts","../../../../mol/link/link.view.tree","../../../../mol/link/link.view.ts","../../../../mol/link/link.view.css.ts","../../../../mol/image/image.view.tree","../../../../mol/image/image.view.ts","../../../../mol/image/-css/image.view.css.ts","../../../../mol/link/iconed/iconed.view.tree","../../../../mol/link/iconed/iconed.view.ts","../../../../mol/link/iconed/-css/iconed.view.css.ts","../../../../mol/speck/speck.view.tree","../../../../mol/speck/-css/speck.view.css.ts","../../../../mol/button/button.view.tree","../../../../mol/keyboard/code/code.ts","../../../../mol/button/button.view.ts","../../../../mol/button/-css/button.view.css.ts","../../../../mol/button/typed/typed.view.tree","../../../../mol/button/typed/-css/typed.view.css.ts","../../../../mol/button/minor/minor.view.tree","../../../../mol/button/minor/-css/minor.view.css.ts","../../../../mol/check/check.view.tree","../../../../mol/maybe/maybe.ts","../../../../mol/check/-css/check.css.ts","../../../../mol/check/check.view.ts","../../../../mol/check/icon/icon.view.tree","../../../../mol/check/icon/-css/icon.view.css.ts","../../../../mol/svg/svg.view.tree","../../../../mol/state/time/time.ts","../../../../mol/svg/svg.view.ts","../../../../mol/svg/root/root.view.tree","../../../../mol/svg/root/-css/root.view.css.ts","../../../../mol/svg/path/path.view.tree","../../../../mol/icon/icon.view.tree","../../../../mol/icon/-css/icon.view.css.ts","../../../../mol/icon/brightness/4/4.view.tree","../../../../mol/locale/locale.ts","../../../../mol/lights/toggle/toggle.view.tree","../../../../localized_string","../../../../mol/lights/toggle/toggle.view.ts","../../../../mol/icon/upload/upload.view.tree","../../../../mol/button/open/open.view.tree","../../../../mol/button/open/open.view.ts","../../../../mol/button/open/-css/open.view.css.ts","../../../../mol/stack/stack.view.tree","../../../../mol/stack/-css/stack.view.css.ts","../../../../mol/syntax2/syntax2.ts","../../../../mol/paragraph/paragraph.view.tree","../../../../mol/paragraph/paragraph.view.ts","../../../../mol/paragraph/-css/paragraph.view.css.ts","../../../../mol/dimmer/dimmer.view.tree","../../../../mol/regexp/regexp.ts","../../../../mol/dimmer/dimmer.view.ts","../../../../mol/dimmer/-css/dimmer.view.css.ts","../../../../mol/text/code/token/token.view.tree","../../../../mol/text/code/token/token.view.css.ts","../../../../mol/text/code/line/line.view.tree","../../../../mol/syntax2/md/md.ts","../../../../mol/text/code/line/line.view.ts","../../../../mol/text/code/line/line.view.css.ts","../../../../mol/list/list.view.tree","../../../../mol/support/css/css.ts","../../../../mol/list/list.view.ts","../../../../mol/list/-css/list.view.css.ts","../../../../mol/blob/blob.ts","../../../../mol/icon/clipboard/clipboard.view.tree","../../../../mol/icon/clipboard/outline/outline.view.tree","../../../../mol/button/copy/copy.view.tree","../../../../mol/html/encode/encode.ts","../../../../mol/button/copy/copy.view.ts","../../../../mol/text/code/code.view.tree","../../../../mol/text/code/code.view.ts","../../../../mol/text/code/code.view.css.ts","../../../../mol/hotkey/hotkey.view.tree","../../../../mol/hotkey/hotkey.view.ts","../../../../mol/string/string.view.tree","../../../../mol/string/string.view.ts","../../../../mol/string/-css/string.view.css.ts","../../../../mol/textarea/textarea.view.tree","../../../../mol/textarea/textarea.view.ts","../../../../mol/textarea/-css/textarea.view.css.ts","../../../../mol/page/page.view.tree","../../../../mol/page/page.view.css.ts","../../../../optimade/cifplayer/lib/three/view/view.view.tree","../../../../optimade/cifplayer/lib/three/view/view.view.css.ts","../../../../mol/icon/eye/eye.view.tree","../../../../mol/icon/eye/check/check.view.tree","../../../../mol/icon/tick/tick.view.tree","../../../../mol/check/box/box.view.tree","../../../../mol/check/box/-css/box.view.css.ts","../../../../mol/pop/pop.view.tree","../../../../mol/pop/pop.view.ts","../../../../mol/pop/-css/pop.view.css.ts","../../../../mol/pick/pick.view.tree","../../../../mol/pick/pick.view.ts","../../../../mol/pick/-css/pick.view.css.ts","../../../../mol/icon/minus/minus.view.tree","../../../../mol/icon/plus/plus.view.tree","../../../../mol/number/number.view.tree","../../../../mol/number/-css/number.css.ts","../../../../mol/number/number.view.ts","../../../../mol/icon/image/image.view.tree","../../../../mol/icon/image/filter/filter.view.tree","../../../../mol/icon/image/filter/center/focus/focus.view.tree","../../../../mol/icon/magnify/magnify.view.tree","../../../../mol/icon/magnify/plus/plus.view.tree","../../../../mol/icon/magnify/plus/outline/outline.view.tree","../../../../mol/icon/magnify/minus/minus.view.tree","../../../../mol/icon/magnify/minus/outline/outline.view.tree","../../../../mol/check/list/list.view.tree","../../../../mol/check/list/list.view.ts","../../../../mol/check/list/-css/list.view.css.ts","../../../../mol/switch/switch.view.tree","../../../../mol/state/session/session.ts","../../../../mol/switch/switch.view.ts","../../../../mol/card/card.view.tree","../../../../mol/card/card.view.ts","../../../../mol/card/-css/card.view.css.ts","../../../../optimade/cifplayer/player/player.view.tree","../../../../optimade/cifplayer/player/-css/player.view.css.ts","../../../../optimade/cifplayer/player/player.view.css.ts","../../../../mol/float/float.view.tree","../../../../mol/float/-css/float.view.css.ts","../../../../mol/icon/chevron/chevron.view.tree","../../../../mol/check/expand/expand.view.tree","../../../../mol/check/expand/expand.view.ts","../../../../mol/check/expand/-css/expand.view.css.ts","../../../../mol/grid/grid.view.tree","../../../../mol/grid/grid.view.ts","../../../../mol/grid/-css/grid.view.css.ts","../../../../mol/embed/native/native.view.tree","../../../../mol/promise/promise/promise.ts","../../../../mol/wait/timeout/timeout.ts","../../../../mol/embed/native/native.view.ts","../../../../mol/embed/native/-css/native.view.css.ts","../../../../mol/icon/youtube/youtube.view.tree","../../../../mol/frame/frame.view.tree","../../../../mol/frame/frame.view.ts","../../../../mol/frame/frame.view.css.ts","../../../../mol/embed/service/service.view.tree","../../../../mol/embed/service/service.view.ts","../../../../mol/embed/service/-css/service.view.css.ts","../../../../mol/embed/youtube/youtube.view.tree","../../../../mol/embed/youtube/youtube.view.ts","../../../../mol/embed/rutube/rutube.view.tree","../../../../mol/embed/rutube/rutube.view.ts","../../../../mol/embed/any/any.view.tree","../../../../mol/embed/any/any.view.ts","../../../../mol/expander/expander.view.tree","../../../../mol/expander/expander.view.ts","../../../../mol/expander/-css/expander.view.css.ts","../../../../mol/text/text/text.view.tree","../../../../mol/text/text/text.view.ts","../../../../mol/text/text/-css/text.view.css.ts","../../../../optimade/cifplayer/app/app.view.tree","../../../../mol/text/list/list.view.tree","../../../../mol/text/list/-css/list.view.css.ts","../../../../optimade/cifplayer/app/app.view.css.ts"],"names":[],"mappings":"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","sourcesContent":[null,"Error.stackTraceLimit = 50;\n\ndeclare let _$_: { new(): {} } & typeof globalThis\ndeclare class $ extends _$_ {}\n\nnamespace $ {\n\texport type $ = typeof $$\n\texport declare class $$ extends $ {}\n\tnamespace $$ {\n\t\texport type $$ = $\n\t}\n}\n\nmodule.exports = $\n","namespace $ {\n\n\texport const $mol_ambient_ref : unique symbol = Symbol( '$mol_ambient_ref' )\n\n\t/** @deprecated use $ instead */\n\texport type $mol_ambient_context = $\n\n\texport function $mol_ambient( this : $ | void , overrides : Partial< $ > ) : $ {\n\t\treturn Object.setPrototypeOf( overrides , this || $ )\n\t}\n\n}\n","namespace $ {\n\n\tconst instances = new WeakSet< any >()\n\n\t/**\n\t * Proxy that delegates all to lazy returned target.\n\t * \n\t * \t$mol_delegate( Array.prototype , ()=> fetch_array() )\n\t */\n export function $mol_delegate< Value extends object >(\n\t\tproto : Value ,\n\t\ttarget : ()=> Value ,\n\t) {\n\n\t\tconst proxy = new Proxy( proto , {\n\n\t\t\tget: ( _ , field )=> {\n\t\t\t\tconst obj = target()\n\t\t\t\tlet val = Reflect.get( obj , field )\n\t\t\t\tif( typeof val === 'function' ) {\n\t\t\t\t\tval = val.bind( obj )\n\t\t\t\t} \n\t\t\t\treturn val\n\t\t\t},\n\t\t\thas: ( _ , field )=> Reflect.has( target(), field ),\n\t\t\tset: ( _ , field , value )=> Reflect.set( target() , field , value ),\n\t\t\t\n\t\t\tgetOwnPropertyDescriptor: ( _ , field )=> Reflect.getOwnPropertyDescriptor( target() , field ),\n\t\t\townKeys: ()=> Reflect.ownKeys( target() ),\n\t\t\t\n\t\t\tgetPrototypeOf: ()=> Reflect.getPrototypeOf( target() ),\n\t\t\tsetPrototypeOf: ( _ , donor )=> Reflect.setPrototypeOf( target() , donor ),\n\t\t\t\n\t\t\tisExtensible: ()=> Reflect.isExtensible( target() ),\n\t\t\tpreventExtensions: ()=> Reflect.preventExtensions( target() ),\n\t\t\t\n\t\t\tapply: ( _ , self , args )=> Reflect.apply( target() as Function , self , args ),\n\t\t\tconstruct: ( _ , args , retarget )=> Reflect.construct( target() as Function , args , retarget ),\n\t\t\t\n\t\t\tdefineProperty: ( _ , field , descr )=> Reflect.defineProperty( target() , field , descr ),\n\t\t\tdeleteProperty: ( _ , field )=> Reflect.deleteProperty( target() , field ),\n\n\t\t} )\n\n\t\tinstances.add( proxy )\n\n\t\treturn proxy\n\n\t}\n\n\tReflect.defineProperty(\n\t\t$mol_delegate ,\n\t\tSymbol.hasInstance ,\n\t\t{\n\t\t\tvalue : ( obj : object )=> instances.has( obj ),\n\t\t},\n\t)\n\n}\n","namespace $ {\n\n\texport const $mol_owning_map = new WeakMap< any , any >()\n\n\texport function $mol_owning_allow< Having >(\n\t\thaving : Having ,\n\t) : having is Having & {\n\t\tdestructor() : void\n\t} {\n\t\ttry {\n\t\t\tif( !having ) return false\n\t\t\tif( typeof having !== 'object' && typeof having !== 'function' ) return false\n\t\t\tif( having instanceof $mol_delegate ) return false\n\t\t\tif( typeof (having as any)['destructor'] !== 'function' ) return false\n\t\t\treturn true\n\t\t} catch {\n\t\t\treturn false\n\t\t}\n\t}\n\n\texport function $mol_owning_get< Having , Owner extends object >( having : Having , Owner? : { new() : Owner } ) : Owner | null {\n\t\n\t\tif( !$mol_owning_allow( having ) ) return null\n\n\t\twhile( true ) {\n\n\t\t\tconst owner = $mol_owning_map.get( having )\n\t\t\tif( !owner ) return owner\n\t\t\tif( !Owner ) return owner\n\t\t\t\n\t\t\tif( owner instanceof Owner ) return owner\n\n\t\t\thaving = owner\n\t\t}\n\n\t}\n\t\n\texport function $mol_owning_check< Owner , Having >(\n\t\towner : Owner ,\n\t\thaving : Having ,\n\t) : having is Having & { destructor() : void } {\n\t\tif( !$mol_owning_allow( having ) ) return false\n\t\tif( $mol_owning_map.get( having ) !== owner ) return false\n\t\treturn true\n\t}\n\t\n\texport function $mol_owning_catch< Owner , Having >(\n\t\towner : Owner ,\n\t\thaving : Having ,\n\t) {\n\t\tif( !$mol_owning_allow( having ) ) return false\n\t\tif( $mol_owning_map.get( having ) ) return false\n\n\t\t$mol_owning_map.set( having , owner )\n\t\treturn true\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_fail( error : any ) : never {\n\t\tthrow error\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_fail_hidden( error : any ) : never {\n\t\tthrow error /// Use 'Never Pause Here' breakpoint in DevTools or simply blackbox this script\n\t}\n\n}\n","namespace $ {\n\t\n\tconst named = new WeakSet< Function >()\n\t\n\texport function $mol_func_name( this : $ , func : Function ) : string {\n\t\t\n\t\tlet name = func.name\n\t\tif( name?.length > 1 ) return name\n\t\tif( named.has( func ) ) return name\n\n\t\tfor( let key in this ) {\n\t\t\ttry {\n\t\t\t\tif( (this as any)[ key ] !== func ) continue\n\t\t\t\tname = key\n\t\t\t\tObject.defineProperty( func , 'name' , { value : name } )\n\t\t\t\tbreak\n\t\t\t} catch {}\n\t\t}\n\n\t\tnamed.add( func )\n\t\treturn name\n\t\t\n\t}\n\n\texport function $mol_func_name_from< Target extends Function >( target : Target , source : Function ) {\n\t\tObject.defineProperty( target , 'name' , { value : source.name } )\n\t\treturn target\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_object2 {\n\t\t\n\t\tstatic $ = $ as any as $\n\t\t\n\t\t[Symbol.toStringTag]!: string\n\n\t\t[ $mol_ambient_ref ] = null as any as $\n\t\tget $() {\n\t\t\tif( this[ $mol_ambient_ref ] ) return this[ $mol_ambient_ref ]\n\t\t\tconst owner = $mol_owning_get( this ) as any\n\t\t\treturn this[ $mol_ambient_ref ] = owner?.$ || $mol_object2.$ as $\n\t\t}\n\t\tset $( next : $ ) {\n\t\t\tif( this[ $mol_ambient_ref ] ) $mol_fail_hidden( new Error( 'Context already defined' ) )\n\t\t\tthis[ $mol_ambient_ref ] = next\n\t\t}\n\n\t\tpublic static create< Instance >(\n\t\t\tthis : new( init? : ( instance : any )=> void )=> Instance ,\n\t\t\tinit? : ( instance : $mol_type_writable )=> void\n\t\t) : Instance {\n\t\t\tconst obj = new this\n\t\t\tif( init ) init( obj )\n\t\t\treturn obj\n\t\t}\n\t\t\n\t\tstatic [ Symbol.toPrimitive ]() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\tstatic toString() {\n\t\t\treturn ( this as any )[ Symbol.toStringTag ] || this.$.$mol_func_name( this )\n\t\t}\n\t\t\n\t\tstatic toJSON() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\tdestructor() { }\n\t\tstatic destructor() { }\n\t\t\n\t\t//[ Symbol.toPrimitive ]( hint: string ) {\n\t\t//\treturn hint === 'number' ? this.valueOf() : this.toString()\n\t\t//}\n\t\t\n\t\ttoString(): string {\n\t\t\treturn this[ Symbol.toStringTag ] || this.constructor.name + '<>'\n\t\t}\n\t\t\n\t\t// toJSON(): any {\n\t\t// \treturn this.toString()\n\t\t// }\n\n\t}\n}\n","namespace $ {\n\n\texport namespace $$ { let $ }\n\n\texport const $mol_object_field = Symbol( '$mol_object_field' )\n\t\n\texport class $mol_object extends $mol_object2 {\n\t\t\n\t\tpublic static make< This extends typeof $mol_object >(\n\t\t\tthis: This,\n\t\t\tconfig: Partial< InstanceType< This > >,\n\t\t) {\n\t\t\treturn super.create( obj => {\n\t\t\t\tfor( let key in config ) ( obj as any )[ key ] = config[ key ]!\n\t\t\t} ) as InstanceType< This >\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\tstatic size() {\n\t\t\treturn {\n\t\t\t\twidth: 1024,\n\t\t\t\theight: 768,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/** Special status statuses. */\n\texport enum $mol_wire_cursor {\n\t\t\n\t\t/** Update required. */\n\t\tstale = -1,\n\t\t\n\t\t/** Some of (transitive) pub update required. */\n\t\tdoubt = -2,\n\t\t\n\t\t/** Actual state but may be dropped. */\n\t\tfresh = -3,\n\t\t\n\t\t/** State will never be changed. */\n\t\tfinal = -4,\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/**\n\t * Collects subscribers in compact array. 28B\n\t */\n\texport class $mol_wire_pub extends Object {\n\t\t\n\t\tdata = [] as unknown[]\n\t\t\n\t\t// Derived objects should be Arrays.\n\t\tstatic get [ Symbol.species ]() {\n\t\t\treturn Array\n\t\t}\n\t\t\n\t\t/**\n\t\t * Index of first subscriber.\n\t\t */\n\t\tprotected sub_from = 0 // 4B\n\t\t\n\t\t/**\n\t\t * All current subscribers.\n\t\t */\n\t\tget sub_list() {\n\t\t\tconst res = [] as $mol_wire_sub[]\n\t\t\tfor( let i = this.sub_from; i < this.data.length; i += 2 ) {\n\t\t\t\tres.push( this.data[i] as $mol_wire_sub )\n\t\t\t}\n\t\t\treturn res as readonly $mol_wire_sub[]\n\t\t}\n\t\t\n\t\t/**\n\t\t * Has any subscribers or not.\n\t\t */\n\t\tget sub_empty() {\n\t\t\treturn this.sub_from === this.data.length\n\t\t}\n\t\t\n\t\t/**\n\t\t * Subscribe subscriber to this publisher events and return position of subscriber that required to unsubscribe.\n\t\t */\n\t\tsub_on( sub: $mol_wire_pub, pub_pos: number ) {\n\t\t\tconst pos = this.data.length\n\t\t\tthis.data.push( sub, pub_pos )\n\t\t\treturn pos\n\t\t}\n\t\t\n\t\t/**\n\t\t * Unsubscribe subscriber from this publisher events by subscriber position provided by `on(pub)`.\n\t\t */\n\t\tsub_off( sub_pos: number ) {\n\t\t\t\n\t\t\tif(!( sub_pos < this.data.length )) {\n\t\t\t\t$mol_fail( new Error( `Wrong pos ${ sub_pos }` ) )\n\t\t\t}\n\t\t\t\n\t\t\tconst end = this.data.length - 2\n\t\t\tif( sub_pos !== end ) {\n\t\t\t\tthis.peer_move( end, sub_pos )\n\t\t\t}\n\t\t\t\n\t\t\tthis.data.pop()\n\t\t\tthis.data.pop()\n\t\t\t\n\t\t\tif( this.data.length === this.sub_from ) this.reap()\n\t\t\t\n\t\t}\n\t\t\n\t\t/**\n\t\t * Called when last sub was unsubscribed.\n\t\t **/\n\t\treap() { }\n\t\t\n\t\t/**\n\t\t * Autowire this publisher with current subscriber.\n\t\t **/\n\t\tpromote() {\n\t\t\t$mol_wire_auto()?.track_next( this )\n\t\t}\n\t\t\n\t\t/**\n\t\t * Enforce actualization. Should not throw errors.\n\t\t */\n\t\tfresh() {}\n\t\t\n\t\t/**\n\t\t * Allow to put data to caches in the subtree.\n\t\t */\n\t\tcomplete() {}\n\t\t\n\t\tget incompleted() {\n\t\t\treturn false\n\t\t}\n\t\t\n\t\t/**\n\t\t * Notify subscribers about self changes.\n\t\t */\n\t\temit( quant = $mol_wire_cursor.stale ) {\n\t\t\tfor( let i = this.sub_from; i < this.data.length; i += 2 ) {\n\t\t\t\t;( this.data[i] as $mol_wire_sub ).absorb( quant )\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Moves peer from one position to another. Doesn't clear data at old position!\n\t\t */\n\t\tpeer_move( from_pos: number, to_pos: number ) {\n\t\t\t\n\t\t\tconst peer = this.data[ from_pos ] as $mol_wire_pub\n\t\t\tconst self_pos = this.data[ from_pos + 1 ] as number\n\t\t\t\n\t\t\tthis.data[ to_pos ] = peer\n\t\t\tthis.data[ to_pos + 1 ] = self_pos\n\t\t\t\n\t\t\tpeer.peer_repos( self_pos, to_pos )\n\t\t}\n\t\t\n\t\t/**\n\t\t * Updates self position in the peer.\n\t\t */\n\t\tpeer_repos( peer_pos: number, self_pos: number ) {\n\t\t\tthis.data[ peer_pos + 1 ] = self_pos\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport let $mol_wire_auto_sub: $mol_wire_sub | null = null\n\t\n\t/**\n\t * When fulfilled, all publishers are promoted to this subscriber on access to its.\n\t */\n\texport function $mol_wire_auto( next = $mol_wire_auto_sub ) {\n\t\treturn $mol_wire_auto_sub = next\n\t}\n\t\n\t/**\n\t * Affection queue. Used to prevent accidental stack overflow on emit.\n\t */\n\texport const $mol_wire_affected = [] as ( $mol_wire_sub | number )[]\n\t\n}\n","namespace $ {\n\n\t// https://docs.google.com/document/d/1FTascZXT9cxfetuPRT2eXPQKXui4nWFivUnS_335T3U/preview#\n\t($ as any)['devtoolsFormatters'] ||= []\n\n\texport function $mol_dev_format_register( config : {\n\t\theader : ( val : any , config : any )=> any\n\t\thasBody : ( val : any , config : any )=> false\n\t} | {\n\t\theader : ( val : any , config : any )=> any\n\t\thasBody : ( val : any , config : any )=> boolean\n\t\tbody : ( val : any , config : any )=> any\n\t} ) {\n\t\t($ as any)['devtoolsFormatters'].push( config )\n\t}\n\n\texport const $mol_dev_format_head = Symbol( '$mol_dev_format_head' )\n\texport const $mol_dev_format_body = Symbol( '$mol_dev_format_body' )\n\n\t$mol_dev_format_register({\n\n\t\theader : ( val : any , config = false ) => {\n\t\t\t\n\t\t\tif( config ) return null\n\n\t\t\tif( !val ) return null\n\t\t\t\n\t\t\tif( $mol_dev_format_head in val ) {\n\t\t\t\ttry {\n\t\t\t\t\treturn val[ $mol_dev_format_head ]()\n\t\t\t\t} catch( error ) {\n\t\t\t\t\treturn $mol_dev_format_accent( $mol_dev_format_native( val ), '💨', $mol_dev_format_native( error ), '' )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif( typeof val === 'function' ) {\n\t\t\t\treturn $mol_dev_format_native( val )\n\t\t\t}\n\t\t\t\n\t\t\tif( Symbol.toStringTag in val ) {\n\t\t\t\treturn $mol_dev_format_native( val )\n\t\t\t}\n\t\t\t\n\t\t\treturn null\n\t\t\t\n\t\t} ,\n\t\t\n\t\thasBody : val => val[ $mol_dev_format_body ] ,\n\n\t\tbody : val => val[ $mol_dev_format_body ]() ,\n\n\t})\n\n\texport function $mol_dev_format_native( obj : any ) {\n\t\t\n\t\tif( typeof obj === 'undefined' ) return $mol_dev_format_shade( 'undefined' )\n\t\t\n\t\t// if( ![ 'object', 'function', 'symbol' ].includes( typeof obj ) ) return obj\n\n\t\treturn [\n\t\t\t'object' ,\n\t\t\t{\n\t\t\t\tobject : obj ,\n\t\t\t\tconfig : true ,\n\t\t\t} ,\n\t\t]\n\n\t}\n\n\texport function $mol_dev_format_auto( obj : any ) {\n\t\t\n\t\tif( obj == null ) return $mol_dev_format_shade( String( obj ) )\n\n\t\treturn [\n\t\t\t'object' ,\n\t\t\t{\n\t\t\t\tobject : obj ,\n\t\t\t\tconfig : false ,\n\t\t\t} ,\n\t\t]\n\n\t}\n\n\texport function $mol_dev_format_element( element : string , style : object , ...content : any[] ) {\n\t\t\t\n\t\tconst styles = [] as string[]\n\t\t\n\t\tfor( let key in style ) styles.push( `${ key } : ${ (style as any)[key] }` )\n\t\t\n\t\treturn [\n\t\t\telement ,\n\t\t\t{\n\t\t\t\tstyle : styles.join( ' ; ' ) ,\n\t\t\t} ,\n\t\t\t... content ,\n\t\t]\n\n\t}\n\n\texport function $mol_dev_format_span( style : object , ...content : any[] ) {\n\t\treturn $mol_dev_format_element(\n\t\t\t'span' ,\n\t\t\t{\n\t\t\t\t// 'vertical-align' : '8%',\n\t\t\t\t... style ,\n\t\t\t} ,\n\t\t\t... content ,\n\t\t)\n\t}\n\n\texport let $mol_dev_format_div = $mol_dev_format_element.bind( null , 'div' )\n\texport let $mol_dev_format_ol = $mol_dev_format_element.bind( null , 'ol' )\n\texport let $mol_dev_format_li = $mol_dev_format_element.bind( null , 'li' )\n\texport let $mol_dev_format_table = $mol_dev_format_element.bind( null , 'table' )\n\texport let $mol_dev_format_tr = $mol_dev_format_element.bind( null , 'tr' )\n\texport let $mol_dev_format_td = $mol_dev_format_element.bind( null , 'td' )\n\n\texport let $mol_dev_format_accent = $mol_dev_format_span.bind( null , {\n\t\t'color' : 'magenta' ,\n\t} )\n\n\texport let $mol_dev_format_strong = $mol_dev_format_span.bind( null , {\n\t\t'font-weight' : 'bold' ,\n\t} )\n\n\texport let $mol_dev_format_string = $mol_dev_format_span.bind( null , {\n\t\t'color' : 'green',\n\t} )\n\n\texport let $mol_dev_format_shade = $mol_dev_format_span.bind( null , {\n\t\t'color' : 'gray',\n\t} )\n\n\texport let $mol_dev_format_indent = $mol_dev_format_div.bind( null , {\n\t\t'margin-left': '13px'\n\t} )\n\n}\n","namespace $ {\n\t\n\t/**\n\t * Publisher that can auto collect other publishers. 32B\n\t * \n\t * \tP1 P2 P3 P4 S1 S2 S3\n\t * \t^ ^\n\t * \tpubs_from subs_from\n\t */\n\texport class $mol_wire_pub_sub extends $mol_wire_pub implements $mol_wire_sub {\n\t\t\n\t\tprotected pub_from = 0 // 4B\n\t\tprotected cursor = $mol_wire_cursor.stale // 4B\n\t\t\n\t\tget temp() {\n\t\t\treturn false\n\t\t}\n\t\t\n\t\tget pub_list() {\n\t\t\tconst res = [] as $mol_wire_pub[]\n\t\t\tconst max = this.cursor >=0 ? this.cursor : this.sub_from\n\t\t\tfor( let i = this.pub_from; i < max; i += 2 ) {\n\t\t\t\tif( this.data[i] ) res.push( this.data[i] as $mol_wire_pub )\n\t\t\t}\n\t\t\treturn res\n\t\t}\n\t\t\n\t\ttrack_on() {\n\t\t\tthis.cursor = this.pub_from\n\t\t\tconst sub = $mol_wire_auto()\n\t\t\t$mol_wire_auto( this )\n\t\t\treturn sub\n\t\t}\n\t\t\n\t\tpromote() {\n\t\t\t\n\t\t\tif( this.cursor >= this.pub_from ) {\n\t\t\t\t$mol_fail( new Error( 'Circular subscription' ) )\n\t\t\t}\n\t\t\t\n\t\t\tsuper.promote()\n\t\t}\n\t\t\n\t\ttrack_next( pub?: $mol_wire_pub ): $mol_wire_pub | null {\n\t\t\t\n\t\t\tif( this.cursor < 0 ) $mol_fail( new Error( 'Promo to non begun sub' ) )\n\t\t\t\n\t\t\tif( this.cursor < this.sub_from ) {\n\t\t\t\n \t\t\t\tconst next = this.data[ this.cursor ] as $mol_wire_pub | undefined\n\t\t\t\tif( pub === undefined ) return next ?? null\n\t\t\t\t\n\t\t\t\tif( next === pub ) {\n\t\t\t\t\tthis.cursor += 2\n\t\t\t\t\treturn next\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( next ) {\n\t\t\t\t\t\n\t\t\t\t\tif( this.sub_from < this.data.length ) {\n\t\t\t\t\t\tthis.peer_move( this.sub_from, this.data.length )\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.peer_move( this.cursor, this.sub_from )\n\t\t\t\t\tthis.sub_from += 2\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tif( pub === undefined ) return null\n\t\t\t\t\n\t\t\t\tif( this.sub_from < this.data.length ) {\n\t\t\t\t\tthis.peer_move( this.sub_from, this.data.length )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.sub_from += 2\n\t\t\t\t\n\t\t\t}\t\t\t\n\t\t\t\n\t\t\tthis.data[ this.cursor ] = pub\n\t\t\tthis.data[ this.cursor + 1 ] = pub.sub_on( this, this.cursor )\n\t\t\t\n\t\t\tthis.cursor += 2\n\t\t\t\n\t\t\treturn pub\n\t\t}\n\t\t\n\t\ttrack_off( sub: $mol_wire_sub | null ) {\n\t\t\t\n\t\t\t$mol_wire_auto( sub )\n\t\t\t\n\t\t\tif( this.cursor < 0 ) {\n\t\t\t\t$mol_fail( new Error( 'End of non begun sub' ) )\n\t\t\t}\n\t\t\t\n\t\t\tfor(\n\t\t\t\tlet cursor = this.pub_from;\n\t\t\t\tcursor < this.cursor;\n\t\t\t\tcursor += 2\n\t\t\t) {\n\t\t\t\tconst pub = this.data[ cursor ] as $mol_wire_pub\n\t\t\t\tpub.fresh()\n\t\t\t}\n\t\t\t\n\t\t\tthis.cursor = $mol_wire_cursor.fresh\n\t\t\t\n\t\t}\n\t\t\n\t\tpub_off( sub_pos: number ) {\n\t\t\tthis.data[ sub_pos ] = undefined as any\n\t\t\tthis.data[ sub_pos + 1 ] = undefined as any \n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\t\n\t\t\tfor(\n\t\t\t\tlet cursor = this.data.length - 2;\n\t\t\t\tcursor >= this.sub_from;\n\t\t\t\tcursor -= 2\n\t\t\t) {\n\t\t\t\tconst sub = this.data[ cursor ] as $mol_wire_sub\n\t\t\t\tconst pos = this.data[ cursor + 1 ] as number\n\t\t\t\tsub.pub_off( pos )\n\t\t\t\tthis.data.pop()\n\t\t\t\tthis.data.pop()\n\t\t\t}\n\t\t\t\n\t\t\tthis.cursor = this.pub_from\n\t\t\tthis.track_cut()\n\t\t\tthis.cursor = $mol_wire_cursor.final\n\t\t\t\n\t\t}\n\t\t\n\t\ttrack_cut() {\n\t\t\t\n\t\t\tif( this.cursor < this.pub_from ) {\n\t\t\t\t$mol_fail( new Error( 'Cut of non begun sub' ) )\n\t\t\t}\n\t\t\t\n\t\t\tlet tail = 0\n\t\t\t\n\t\t\tfor(\n\t\t\t\tlet cursor = this.cursor;\n\t\t\t\tcursor < this.sub_from;\n\t\t\t\tcursor += 2\n\t\t\t) {\n\t\t\t\t\n\t\t\t\tconst pub = this.data[ cursor ] as $mol_wire_pub | undefined\n\t\t\t\tpub?.sub_off( this.data[ cursor + 1 ] as number )\n\t\t\t\t\n\t\t\t\tif( this.sub_from < this.data.length ) {\n\t\t\t\t\tthis.peer_move( this.data.length - 2, cursor )\n\t\t\t\t\tthis.data.pop()\n\t\t\t\t\tthis.data.pop()\n\t\t\t\t} else {\n\t\t\t\t\t++ tail\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tfor(; tail; -- tail ) {\n\t\t\t\tthis.data.pop()\n\t\t\t\tthis.data.pop()\n\t\t\t}\n\t\t\t\n\t\t\tthis.sub_from = this.cursor\n\t\t\t\n\t\t}\n\t\t\n\t\tcomplete() { }\n\t\t\n\t\tcomplete_pubs() {\n\t\t\t\n\t\t\tconst limit = this.cursor < 0 ? this.sub_from : this.cursor \n\t\t\t\n\t\t\tfor(\n\t\t\t\tlet cursor = this.pub_from;\n\t\t\t\tcursor < limit;\n\t\t\t\tcursor += 2\n\t\t\t) {\n\t\t\t\tconst pub = this.data[ cursor ] as $mol_wire_pub\n\t\t\t\tif( pub?.incompleted ) return \n\t\t\t}\n\t\t\t\n\t\t\tfor(\n\t\t\t\tlet cursor = this.pub_from;\n\t\t\t\tcursor < limit;\n\t\t\t\tcursor += 2\n\t\t\t) {\n\t\t\t\tconst pub = this.data[ cursor ] as $mol_wire_pub\n\t\t\t\tpub?.complete()\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tabsorb( quant = $mol_wire_cursor.stale ) {\n\t\t\t\n\t\t\tif( this.cursor === $mol_wire_cursor.final ) return\n\t\t\tif( this.cursor >= quant ) return\n\t\t\t\n\t\t\tthis.cursor = quant\n\t\t\tthis.emit( $mol_wire_cursor.doubt )\n\t\t\t\n\t\t}\n\t\t\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_native( this )\n\t\t}\n\t\t\n\t\t/**\n\t\t * Is subscribed to any publisher or not.\n\t\t */\n\t\tget pub_empty() {\n\t\t\treturn this.sub_from === this.pub_from\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\texport class $mol_after_tick extends $mol_object2 {\n\n\t\tstatic promise = null as Promise | null\n\t\tcancelled = false\n\n\t\tconstructor(\n\t\t\tpublic task : ()=> void ,\n\t\t) {\n\t\t\tsuper()\n\t\t\t\n\t\t\tif( !$mol_after_tick.promise ) $mol_after_tick.promise = Promise.resolve().then( ()=> {\n\t\t\t\t$mol_after_tick.promise = null\n\t\t\t} )\n\t\t\t\n\t\t\t$mol_after_tick.promise.then( ()=> {\n\t\t\t\tif( this.cancelled ) return\n\t\t\t\ttask()\n\t\t\t} )\n\t\t\t\n\t\t}\n\n\t\tdestructor() {\n\t\t\tthis.cancelled = true\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_promise_like( val: any ): val is Promise {\n\t\ttry {\n\t\t\treturn val && typeof val === 'object' && 'then' in val && typeof val.then === 'function'\n\t\t} catch {\n\t\t\treturn false\n\t\t}\n\t}\n\n}\n","namespace $ {\n\t\n\tconst wrappers = new WeakMap< Promise< unknown >, Promise< any > >()\n\t\n\t/**\n\t * Suspendable task with support both sync/async api.\n\t * \n\t * \tA1 A2 A3 A4 P1 P2 P3 P4 S1 S2 S3\n\t * \t^ ^ ^\n\t * \targs_from pubs_from subs_from\n\t **/\n\texport abstract class $mol_wire_fiber<\n\t\tHost,\n\t\tArgs extends readonly unknown[],\n\t\tResult,\n\t> extends $mol_wire_pub_sub {\n\t\n\t\tstatic warm = true\n\t\t\n\t\tstatic planning = new Set< $mol_wire_fiber< any, any, any > >()\n\t\tstatic reaping = new Set< $mol_wire_fiber< any, any, any > >()\n\t\t\n\t\tstatic plan_task: $mol_after_tick | null = null\n\t\tstatic plan() {\n\t\t\t\n\t\t\tif( this.plan_task ) return\n\t\t\t\n\t\t\tthis.plan_task = new $mol_after_tick( ()=> {\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tthis.sync()\n\t\t\t\t} finally {\n\t\t\t\t\t$mol_wire_fiber.plan_task = null\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t\n\t\t}\n\t\t\n\t\tstatic sync() {\n\t\t\t\n\t\t\t// Sync whole fiber graph\n\t\t\twhile( this.planning.size ) {\n\t\t\t\tfor( const fiber of this.planning ) {\n\t\t\t\t\tthis.planning.delete( fiber )\n\t\t\t\t\tif( fiber.cursor >= 0 ) continue\n\t\t\t\t\tif( fiber.cursor === $mol_wire_cursor.final ) continue\n\t\t\t\t\tfiber.fresh()\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Collect garbage\n\t\t\twhile( this.reaping.size ) {\n\t\t\t\t\n\t\t\t\tconst fibers = this.reaping\n\t\t\t\tthis.reaping = new Set\n\t\t\t\t\n\t\t\t\tfor( const fiber of fibers ) {\n\t\t\t\t\tif( !fiber.sub_empty ) continue\n\t\t\t\t\tfiber.destructor()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\t[Symbol.toStringTag]!: string\n\n\t\tpublic cache: Result | Error | Promise< Result | Error > = undefined as any\n\t\t\n\t\tget args() {\n\t\t\treturn this.data.slice( 0 , this.pub_from ) as any as Args\n\t\t}\n\t\t\n\t\tresult() {\n\t\t\tif( $mol_promise_like( this.cache ) ) return\n\t\t\tif( this.cache instanceof Error ) return\n\t\t\treturn this.cache\n\t\t}\n\t\t\n\t\tget incompleted() {\n\t\t\treturn $mol_promise_like( this.cache )\n\t\t}\n\t\t\n\t\tfield() {\n\t\t\treturn this.task.name + '<>'\n\t\t}\n\t\t\n\t\tconstructor(\n\t\t\tid: string,\n\t\t\treadonly task: ( this : Host , ... args : Args )=> Result,\n\t\t\treadonly host?: Host,\n\t\t\targs?: Args\n\t\t) {\n\t\t\t\n\t\t\tsuper()\n\t\t\tif( args ) this.data.push( ... args )\n\t\t\tthis.pub_from = this.sub_from = args?.length ?? 0\n\t\t\tthis[ Symbol.toStringTag ] = id\n\t\t\t\n\t\t}\n\t\t\n\t\tplan() {\n\t\t\t$mol_wire_fiber.planning.add( this )\n\t\t\t$mol_wire_fiber.plan()\n\t\t\treturn this\n\t\t}\n\t\t\n\t\treap() {\n\t\t\t$mol_wire_fiber.reaping.add( this )\n\t\t\t$mol_wire_fiber.plan()\n\t\t}\n\t\t\n\t\ttoString() {\n\t\t\treturn this[ Symbol.toStringTag ]\n\t\t}\n\t\t\n\t\ttoJSON() {\n\t\t\treturn this[ Symbol.toStringTag ]\n\t\t}\n\n\t\t[ $mol_dev_format_head ]() {\n\t\t\t\n\t\t\tconst cursor = {\n\t\t\t\t[ $mol_wire_cursor.stale ]: '🔴',\n\t\t\t\t[ $mol_wire_cursor.doubt ]: '🟡',\n\t\t\t\t[ $mol_wire_cursor.fresh ]: '🟢',\n\t\t\t\t[ $mol_wire_cursor.final ]: '🔵',\n\t\t\t}[ this.cursor ] ?? this.cursor.toString()\n\t\t\t\n\t\t\treturn $mol_dev_format_div( {},\n\t\t\t\t$mol_owning_check( this, this.cache )\n\t\t\t\t\t? $mol_dev_format_auto({\n\t\t\t\t\t\t[ $mol_dev_format_head ]: ()=> $mol_dev_format_shade( cursor ),\n\t\t\t\t\t\t[ $mol_dev_format_body ]: ()=> $mol_dev_format_native( this ),\n\t\t\t\t\t})\n\t\t\t\t\t: $mol_dev_format_shade( $mol_dev_format_native( this ), cursor ),\n\t\t\t\t$mol_dev_format_auto( this.cache ),\n\t\t\t)\n\t\t\t\n\t\t}\n\t\t\n\t\tget $() {\n\t\t\treturn ( this.host ?? this.task as any )['$']\n\t\t}\n\t\t\n\t\temit( quant = $mol_wire_cursor.stale ) {\n\t\t\tif( this.sub_empty ) this.plan()\n\t\t\telse super.emit( quant )\n\t\t}\n\t\t\n\t\tfresh() {\n\n\t\t\ttype Result = typeof this.cache\n\t\t\t\n\t\t\tif( this.cursor === $mol_wire_cursor.fresh ) return\n\t\t\tif( this.cursor === $mol_wire_cursor.final ) return\n\t\t\t\n\t\t\tcheck: if( this.cursor === $mol_wire_cursor.doubt ) {\n\t\t\t\t\n\t\t\t\tfor( let i = this.pub_from ; i < this.sub_from; i += 2 ) {\n\t\t\t\t\t;( this.data[i] as $mol_wire_pub )?.fresh()\n\t\t\t\t\tif( this.cursor !== $mol_wire_cursor.doubt ) break check\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.cursor = $mol_wire_cursor.fresh\n\t\t\t\treturn\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tconst bu = this.track_on()\n\t\t\tlet result: typeof this.cache\n\n\t\t\ttry {\n\n\t\t\t\tswitch( this.pub_from ) {\n\t\t\t\t\tcase 0: result = (this.task as any).call( this.host! ); break\n\t\t\t\t\tcase 1: result = (this.task as any).call( this.host!, this.data[0] ); break\n\t\t\t\t\tdefault: result = (this.task as any).call( this.host!, ... this.args ); break\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( $mol_promise_like( result ) ) {\n\n\t\t\t\t\tif( wrappers.has( result ) ) {\n\t\t\t\t\t\tresult = wrappers.get( result )!.then(a=>a)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst put = ( res: Result )=> {\n\t\t\t\t\t\t\tif( this.cache === result ) this.put( res )\n\t\t\t\t\t\t\treturn res\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twrappers.set( result, result = Object.assign(\n\t\t\t\t\t\t\tresult.then( put, put ),\n\t\t\t\t\t\t\t{ destructor: ( result as any ).destructor || (()=> {}) }\n\t\t\t\t\t\t) )\n\t\t\t\t\t\twrappers.set( result, result )\n\n\t\t\t\t\t\tconst error = new Error( `Promise in ${ this }` )\n\t\t\t\t\t\tObject.defineProperty( result, 'stack', { get: ()=> error.stack } )\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} catch( error: any ) {\n\t\t\t\t\n\t\t\t\tif( error instanceof Error || $mol_promise_like( error ) ) {\n\t\t\t\t\tresult = error\n\t\t\t\t} else {\n\t\t\t\t\tresult = new Error( String( error ), { cause: error } )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( $mol_promise_like( result ) ) {\n\t\t\t\t\t\n\t\t\t\t\tif( wrappers.has( result ) ) {\n\t\t\t\t\t\tresult = wrappers.get( result )!\n\t\t\t\t\t} else {\n\t\t\t\t\t\t\n\t\t\t\t\t\twrappers.set( result, result = Object.assign(\n\t\t\t\t\t\t\tresult.finally( ()=> {\n\t\t\t\t\t\t\t\tif( this.cache === result ) this.absorb()\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t\t{ destructor: ( result as any ).destructor || (()=> {}) }\n\t\t\t\t\t\t) )\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst error = new Error( `Promise in ${ this }` )\n\t\t\t\t\t\tObject.defineProperty( result, 'stack', { get: ()=> error.stack } )\n\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif( ! $mol_promise_like( result ) ) {\n\t\t\t\tthis.track_cut()\n\t\t\t}\n\t\t\t\n\t\t\tthis.track_off( bu )\n\t\t\tthis.put( result )\n\t\t\t\n\t\t\treturn this\n\t\t}\n\t\t\n\t\trefresh() {\n\t\t\tthis.cursor = $mol_wire_cursor.stale\n\t\t\tthis.fresh()\n\t\t}\n\t\t\n\t\tabstract put( next: Result | Error | Promise< Result | Error > ): Result | Error | Promise< Result | Error >\n\t\t\n\t\t/**\n\t\t * Synchronous execution. Throws Promise when waits async task (SuspenseAPI provider).\n\t\t * Should be called inside SuspenseAPI consumer (ie fiber).\n\t\t */\n\t\tsync() {\n\t\t\t\n\t\t\tif( !$mol_wire_fiber.warm ) {\n\t\t\t\treturn this.result() as Awaited< Result >\n\t\t\t}\n\t\t\t\n\t\t\tthis.promote()\n\t\t\tthis.fresh()\n\t\t\t\n\t\t\tif( this.cache instanceof Error ) {\n\t\t\t\treturn $mol_fail_hidden( this.cache )\n\t\t\t}\n\t\t\t\n\t\t\tif( $mol_promise_like( this.cache ) ) {\n\t\t\t\treturn $mol_fail_hidden( this.cache )\n\t\t\t}\n\t\t\t\n\t\t\treturn this.cache as Awaited< Result >\n\t\t}\n\n\t\t/**\n\t\t * Asynchronous execution.\n\t\t * It's SuspenseAPI consumer. So SuspenseAPI providers can be called inside.\n\t\t */\n\t\tasync async_raw() {\n\t\t\t\n\t\t\twhile( true ) {\n\t\t\t\t\n\t\t\t\tthis.fresh()\n\t\t\t\t\n\t\t\t\tif( this.cache instanceof Error ) {\n\t\t\t\t\t$mol_fail_hidden( this.cache )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( ! $mol_promise_like( this.cache ) ) return this.cache\n\t\t\t\t\t\n\t\t\t\tawait Promise.race([ this.cache, this.step() ])\n\t\t\t\tif( ! $mol_promise_like( this.cache ) ) return this.cache\n\t\t\t\t\t\n\t\t\t\tif( this.cursor === $mol_wire_cursor.final ) {\n\t\t\t\t\t// never ends on destructed fiber\n\t\t\t\t\tawait new Promise( ()=> {} )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tasync() {\n\t\t\tconst promise = this.async_raw() as Promise & { destructor(): void }\n\n\t\t\tif (! promise.destructor) promise.destructor = () => this.destructor()\n\n\t\t\treturn promise\n\t\t}\n\t\t\n\t\tstep() {\n\t\t\treturn new Promise< null >( done => {\n\t\t\t\tconst sub = new $mol_wire_pub_sub\n\t\t\t\tconst prev = sub.track_on()\n\t\t\t\tsub.track_next( this )\n\t\t\t\tsub.track_off( prev )\n\t\t\t\tsub.absorb = ()=> {\n\t\t\t\t\tdone( null )\n\t\t\t\t\tsetTimeout( ()=> sub.destructor() )\n\t\t\t\t}\n\t\t\t} )\n\t\t}\n\n\t\tdestructor() {\n\t\t\t\n\t\t\tsuper.destructor()\n\t\t\t\n\t\t\tif( $mol_owning_check( this, this.cache ) ) {\n\t\t\t\tthis.cache.destructor()\n\t\t\t}\n\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\t/** Generates unique identifier. */\n\texport function $mol_guid(\n\t\tlength = 8,\n\t\texists: ( id: string )=> boolean = ()=> false,\n\t) {\n\n\t\tfor(;;) {\n\n\t\t\tlet id = Math.random().toString( 36 ).substring( 2, length + 2 ).toUpperCase()\n\t\t\tif( exists( id ) ) continue\n\t\t\t\n\t\t\treturn id\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\t\n\texport const $mol_key_store = new WeakMap< object, string >()\n\t\n\tconst TypedArray = Object.getPrototypeOf( Uint8Array )\n\n\t/** Returns string key for any value. */\n\texport function $mol_key< Value >( value : Value ) : string {\n\t\t\n\t\tif( typeof value === 'bigint' ) return value.toString() + 'n'\n\t\tif( typeof value === 'symbol' ) return value.description!\n\t\tif( !value ) return JSON.stringify( value )\n\t\tif( typeof value !== 'object' && typeof value !== 'function' ) return JSON.stringify( value )\n\t\t\n\t\treturn JSON.stringify( value, ( field, value )=> {\n\t\t\t\n\t\t\tif( typeof value === 'bigint' ) return value.toString() + 'n'\n\t\t\tif( typeof value === 'symbol' ) return value.description\n\t\t\tif( !value ) return value\n\t\t\tif( typeof value !== 'object' && typeof value !== 'function' ) return value\n\t\t\tif( Array.isArray( value ) ) return value\n\t\t\t\n\t\t\tconst proto = Reflect.getPrototypeOf( value )\n\t\t\tif( !proto ) return value\n\t\t\tif( Reflect.getPrototypeOf( proto ) === null ) return value\n\t\t\t\n\t\t\tif( 'toJSON' in value ) return value\n\t\t\tif( value instanceof RegExp ) return value.toString()\n\t\t\t// if( value instanceof DataView ) return [ ... new Uint8Array( value.buffer ) ]\n\t\t\tif( value instanceof TypedArray ) return [ ... value as any ]\n\t\t\t\n\t\t\tlet key = $mol_key_store.get( value )\n\t\t\tif( key ) return key\n\t\t\t\n\t\t\tkey = $mol_guid()\n\t\t\t$mol_key_store.set( value, key )\n\t\t\t\n\t\t\treturn key\n\t\t} )\n\n\t}\n\t\n}\n","namespace $ {\n\n\texport class $mol_after_timeout extends $mol_object2 {\n\n\t\tid : any\n\n\t\tconstructor(\n\t\t\tpublic delay : number ,\n\t\t\tpublic task : ()=> void ,\n\t\t) {\n\t\t\tsuper()\n\t\t\tthis.id = setTimeout( task , delay )\n\t\t}\n\n\t\tdestructor() {\n\t\t\tclearTimeout( this.id )\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\n\texport class $mol_after_frame extends $mol_after_timeout {\n\n\t\tconstructor(\n\t\t\tpublic task : ()=> void ,\n\t\t) {\n\t\t\tsuper( 16 , task )\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\n\texport let $mol_compare_deep_cache = new WeakMap< any , WeakMap< any , boolean > >()\n\t\n\t/**\n\t * Deeply compares two values. Returns true if equal.\n\t * Define `Symbol.toPrimitive` to customize.\n\t */\n\texport function $mol_compare_deep< Value >( left: Value, right: Value ): boolean {\n\n\t\tif( Object.is( left , right ) ) return true\n\n\t\tif( left === null ) return false\n\t\tif( right === null ) return false\n\n\t\tif( typeof left !== 'object' ) return false\n\t\tif( typeof right !== 'object' ) return false\n\n\t\tconst left_proto = Reflect.getPrototypeOf( left as any )\n\t\tconst right_proto = Reflect.getPrototypeOf( right as any )\n\t\t\n\t\tif( left_proto !== right_proto ) return false\n\n\t\tif( left instanceof Boolean ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof Number ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof String ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof Date ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof RegExp ) return left.source === (right as any).source && left.flags === (right as any).flags\n\t\tif( left instanceof Error ) return left.message === (right as any).message && left.stack === (right as any).stack\n\n\t\tlet left_cache = $mol_compare_deep_cache.get( left )\n\t\tif( left_cache ) {\n\n\t\t\tconst right_cache = left_cache.get( right )\n\t\t\tif( typeof right_cache === 'boolean' ) return right_cache\n\n\t\t} else {\n\t\t\t\n\t\t\tleft_cache = new WeakMap< any , boolean >()\n\t\t\t$mol_compare_deep_cache.set( left , left_cache )\n\n\t\t}\n\n\t\tleft_cache.set(right, true);\n\n\t\tlet result!: boolean\n\n\t\ttry {\n\t\t\t\n\t\t\tif( !left_proto ) result = compare_pojo( left, right as any )\n\t\t\telse if( !Reflect.getPrototypeOf( left_proto ) ) result = compare_pojo( left, right as any )\n\t\t\telse if( Symbol.toPrimitive in left ) result = compare_primitive( left, right )\n\t\t\telse if( Array.isArray( left ) ) result = compare_array( left, right as any )\n\t\t\telse if( left instanceof Set ) result = compare_set( left, right as any )\n\t\t\telse if( left instanceof Map ) result = compare_map( left, right as any )\n\t\t\telse if( ArrayBuffer.isView( left ) ) result = compare_buffer( left, right as any )\n\t\t\telse if( Symbol.iterator in left ) result = compare_iterator( ( left as any )[ Symbol.iterator ](), ( right as any )[ Symbol.iterator ]() )\n\t\t\telse result = false\n\n\t\t} finally {\n\t\t\tleft_cache.set( right , result )\n\t\t}\n\t\t\n\t\treturn result\n\t}\n\n\tfunction compare_array< Value extends any[] >( left: Value, right: Value ): boolean {\n\t\t\n\t\tconst len = left.length\n\t\tif( len !== right.length ) return false\n\t\t\n\t\tfor( let i = 0; i < len; ++i ) {\n\t\t\tif( !$mol_compare_deep( left[i] , right[i] ) ) return false\n\t\t}\n\t\t\n\t\treturn true\n\t}\n\t\n\tfunction compare_buffer( left: ArrayBufferView, right: ArrayBufferView ): boolean {\n\t\t\n\t\tconst len = left.byteLength\n\t\tif( len !== right.byteLength ) return false\n\t\t\n\t\tif( left instanceof DataView ) return compare_buffer(\n\t\t\tnew Uint8Array( left.buffer, left.byteOffset, left.byteLength ),\n\t\t\tnew Uint8Array( right.buffer, left.byteOffset, left.byteLength ),\n\t\t)\n\t\t\n\t\tfor( let i = 0; i < len; ++i ) {\n\t\t\tif( (left as any)[i] !== (right as any)[i] ) return false\n\t\t}\n\t\t\n\t\treturn true\n\t}\n\t\n\tfunction compare_iterator< Value extends IterableIterator >(\n\t\tleft: Value,\n\t\tright: Value,\n\t): boolean {\n\t\t\n\t\twhile( true ) {\n\n\t\t\tconst left_next = left.next()\n\t\t\tconst right_next = right.next()\n\n\t\t\tif( left_next.done !== right_next.done ) return false\n\t\t\tif( left_next.done ) break\n\n\t\t\tif( !$mol_compare_deep( left_next.value , right_next.value ) ) return false\n\n\t\t}\n\n\t\treturn true\n\n\t}\n\t\n\tfunction compare_set< Value extends Set >( left: Value, right: Value ): boolean {\n\t\tif( left.size !== right.size ) return false\n\t\treturn compare_iterator( left.values(), right.values() )\n\t}\n\t\n\tfunction compare_map< Key, Value >( left: Map< Key, Value > , right: Map< Key, Value > ): boolean {\n\t\tif( left.size !== right.size ) return false\n\t\treturn compare_iterator( left.keys(), right.keys() )\n\t\t\t&& compare_iterator( left.values(), right.values() )\n\t}\n\t\n\tfunction compare_pojo( left: {}, right: {} ): boolean {\n\t\t\n\t\tconst left_keys = Object.getOwnPropertyNames( left )\n\t\tconst right_keys = Object.getOwnPropertyNames( right )\n\t\t\n\t\tif( !compare_array( left_keys, right_keys ) ) return false\n\n\t\tfor( let key of left_keys ) {\n\t\t\tif( !$mol_compare_deep( ( left as any )[ key ], ( right as any )[ key ] ) ) return false\n\t\t}\n\n\t\tconst left_syms = Object.getOwnPropertySymbols( left )\n\t\tconst right_syms = Object.getOwnPropertySymbols( right )\n\t\t\n\t\tif( !compare_array( left_syms, right_syms ) ) return false\n\n\t\tfor( let key of left_syms ) {\n\t\t\tif( !$mol_compare_deep( ( left as any )[ key ], ( right as any )[ key ] ) ) return false\n\t\t}\n\n\t\treturn true\n\t}\n\t\n\tfunction compare_primitive( left: {}, right: {} ): boolean {\n\t\treturn Object.is(\n\t\t\t(left as any)[ Symbol.toPrimitive ]( 'default' ),\n\t\t\t(right as any)[ Symbol.toPrimitive ]( 'default' ),\n\t\t)\n\t}\n\t\n}\n","namespace $ {\n\n\t/** Logger event data */\n\texport type $mol_log3_event< Fields > = {\n\t\t[ key in string ] : unknown\n\t} & {\n\t\t\n\t\t/** Time of event creation */\n\t\ttime? : string\n\n\t\t/** Place of event creation */\n\t\tplace : unknown\n\n\t\t/** Short description of event */\n\t\tmessage : string\n\n\t} & Fields\n\n\t/** Logger function */\n\texport type $mol_log3_logger< Fields , Res = void > = (\n\t\tthis : $ ,\n\t\tevent : $mol_log3_event< Fields > ,\n\t)=> Res\n\n\t/** Log begin of some task */\n\texport declare let $mol_log3_come : $mol_log3_logger<{}>\n\t\n\t/** Log end of some task */\n\texport declare let $mol_log3_done : $mol_log3_logger<{}>\n\t\n\t/** Log error */\n\texport declare let $mol_log3_fail : $mol_log3_logger<{}>\n\t\n\t/** Log warning message */\n\texport declare let $mol_log3_warn : $mol_log3_logger<{ hint : string }>\n\t\n\t/** Log some generic event */\n\texport declare let $mol_log3_rise : $mol_log3_logger<{}>\n\n\t/** Log begin of log group, returns func to close group */\n\texport declare let $mol_log3_area : $mol_log3_logger< {} , ()=> void >\n\n\t/** Log begin of collapsed group only when some logged inside, returns func to close group */\n\texport function $mol_log3_area_lazy(\n\t\tthis : $ ,\n\t\tevent : $mol_log3_event<{}> ,\n\t) {\n\n\t\tconst self = this\n\t\tconst stack = self.$mol_log3_stack\n\n\t\tconst deep = stack.length\n\t\tlet logged = false\n\n\t\tstack.push( ()=> {\n\t\t\tlogged = true\n\t\t\tself.$mol_log3_area.call( self , event )\n\t\t} )\n\n\t\treturn ()=> {\n\t\t\tif( logged ) self.console.groupEnd()\n\t\t\tif( stack.length > deep ) stack.length = deep\n\t\t}\n\n\t}\n\n\texport let $mol_log3_stack = [] as ( ()=> void )[]\n\n}\n","namespace $ {\n\n\t/** Position in any resource. */\n\texport class $mol_span extends $mol_object2 {\n\n\t\tconstructor(\n\t\t\treadonly uri: string ,\n\t\t\treadonly source: string ,\n\t\t\treadonly row: number ,\n\t\t\treadonly col: number ,\n\t\t\treadonly length: number ,\n\t\t) {\n\t\t\tsuper()\n\t\t\tthis[ Symbol.toStringTag ] = this.uri + ( '#' + this.row + ':' + this.col + '/' + this.length )\n\t\t}\n\n\t\t/** Span for begin of unknown resource */\n\t\tstatic unknown = $mol_span.begin('?')\n\n\t\t/** Makes new span for begin of resource. */\n\t\tstatic begin( uri: string, source = '' ) {\n\t\t\treturn new $mol_span( uri , source, 1 , 1 , 0 )\n\t\t}\n\n\t\t/** Makes new span for end of resource. */\n\t\tstatic end( uri: string , source: string ) {\n\t\t\treturn new $mol_span( uri , source, 1 , source.length + 1 , 0 )\n\t\t}\n\n\t\t/** Makes new span for entire resource. */\n\t\tstatic entire( uri: string , source: string ) {\n\t\t\treturn new $mol_span( uri , source, 1 , 1 , source.length )\n\t\t}\n\n\t\ttoString() {\n\t\t\treturn this[ Symbol.toStringTag ]\n\t\t}\n\n\t\ttoJSON() {\n\t\t\treturn {\n\t\t\t\turi: this.uri,\n\t\t\t\trow: this.row,\n\t\t\t\tcol: this.col,\n\t\t\t\tlength: this.length\n\t\t\t}\n\t\t}\n\n\t\t/** Makes new error for this span. */\n\t\terror( message : string , Class = Error ) {\n\t\t\treturn new Class( `${message} (${this})` )\n\t\t}\n\n\t\t/** Makes new span for same uri. */\n\t\tspan( row : number , col : number , length : number ) {\n\t\t\treturn new $mol_span( this.uri , this.source, row , col , length )\n\t\t}\n\n\t\t/** Makes new span after end of this. */\n\t\tafter( length = 0 ) {\n\t\t\treturn new $mol_span( this.uri , this.source, this.row , this.col + this.length , length )\n\t\t}\n\n\t\t/** Makes new span between begin and end. */\n\t\tslice( begin: number, end = -1 ) {\n\t\t\tlet len = this.length\n\t\t\t\n\t\t\tif( begin < 0 ) begin += len\n\t\t\tif( end < 0 ) end += len\n\n\t\t\tif (begin < 0 || begin > len) this.$.$mol_fail( this.error( `Begin value '${begin}' out of range`, RangeError ) )\n\t\t\tif (end < 0 || end > len) this.$.$mol_fail( this.error( `End value '${end}' out of range`, RangeError ) )\n\t\t\tif (end < begin) this.$.$mol_fail( this.error( `End value '${end}' can't be less than begin value`, RangeError ) )\n\n\t\t\treturn this.span( this.row , this.col + begin , end - begin )\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\t/** Serializes tree to string in tree format. */\n\texport function $mol_tree2_to_string(\n\t\tthis: $,\n\t\ttree: $mol_tree2,\n\t) : string {\n\n\t\tlet output = [] as string[]\n\t\t\n\t\tfunction dump(\n\t\t\ttree: $mol_tree2,\n\t\t\tprefix = '',\n\t\t) {\n\n\t\t\tif( tree.type.length ) {\n\t\t\t\t\n\t\t\t\tif( !prefix.length ) {\n\t\t\t\t\tprefix = \"\\t\";\n\t\t\t\t}\n\n\t\t\t\toutput.push( tree.type )\n\n\t\t\t\tif( tree.kids.length == 1 ) {\n\t\t\t\t\toutput.push( ' ' )\n\t\t\t\t\tdump( tree.kids[ 0 ], prefix )\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\toutput.push( \"\\n\" )\n\n\t\t\t} else if( tree.value.length || prefix.length ) {\n\n\t\t\t\toutput.push( \"\\\\\" + tree.value + \"\\n\" )\n\n\t\t\t}\n\n\t\t\tfor( const kid of tree.kids ) {\n\t\t\t\toutput.push( prefix )\n\t\t\t\tdump( kid, prefix + \"\\t\" )\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tdump( tree )\n\n\t\treturn output.join('')\n\t}\n\t\t\n}\n","namespace $ {\n\n\t/** Path by types in tree. */\n\texport type $mol_tree2_path =\n\t\tArray< string | number | null >\n\t\n\t/** Hask tool for processing node. */\n\texport type $mol_tree2_hack< Context > =\n\t\t(\n\t\t\tinput : $mol_tree2 ,\n\t\t\tbelt : $mol_tree2_belt< Context > ,\n\t\t\tcontext : Context ,\n\t\t)=> readonly $mol_tree2[]\n\n\t/** Collection of hask tools for processing tree. */\n\texport type $mol_tree2_belt< Context > =\n\t\tRecord< string , $mol_tree2_hack< Context > >\n\n\t/**\n\t * Abstract Syntax Tree with human readable serialization.\n\t * Avoid direct instantiation. Use static factories instead.\n\t * @see https://github.com/nin-jin/tree.d\n\t */\n\texport class $mol_tree2 extends Object {\n\t\t\n\t\tconstructor(\n\n\t\t\t/** Type of structural node, `value` should be empty */\n\t\t\treadonly type : string,\n\t\t\t\n\t\t\t/** Content of data node, `type` should be empty */\n\t\t\treadonly value : string,\n\n\t\t\t/** Child nodes */\n\t\t\treadonly kids : readonly $mol_tree2[],\n\t\t\t\n\t\t\t/** Position in most far source resource */\n\t\t\treadonly span : $mol_span,\n\n\t\t) {\n\t\t\tsuper()\n\t\t\t;(this as any)[ Symbol.toStringTag ] = type || '\\\\' + value\n\t\t}\n\n\t\t/** Makes collection node. */\n\t\tstatic list(\n\t\t\tkids : readonly $mol_tree2[] ,\n\t\t\tspan = $mol_span.unknown ,\n\t\t) {\n\t\t\treturn new $mol_tree2( '' , '' , kids , span )\n\t\t}\n\t\t\n\t\t/** Makes new derived collection node. */\n\t\tlist(\n\t\t\tkids : readonly $mol_tree2[] ,\n\t\t) {\n\t\t\treturn $mol_tree2.list( kids , this.span )\n\t\t}\n\n\t\t/** Makes data node for any string. */\n\t\tstatic data(\n\t\t\tvalue : string ,\n\t\t\tkids = [] as readonly $mol_tree2[] ,\n\t\t\tspan = $mol_span.unknown ,\n\t\t) {\n\n\t\t\tconst chunks = value.split( '\\n' )\n\n\t\t\tif( chunks.length > 1 ) {\n\t\t\t\n\t\t\t\tlet kid_span = span.span( span.row , span.col , 0 )\n\n\t\t\t\tconst data = chunks.map( chunk => {\n\t\t\t\t\tkid_span = kid_span.after( chunk.length )\n\t\t\t\t\treturn new $mol_tree2( '' , chunk , [] , kid_span )\n\t\t\t\t} )\n\n\t\t\t\tkids = [ ... data , ... kids ]\n\n\t\t\t\tvalue = ''\n\n\t\t\t}\n\n\t\t\treturn new $mol_tree2( '' , value , kids , span )\n\n\t\t}\n\t\t\n\t\t/** Makes new derived data node. */\n\t\tdata(\n\t\t\tvalue : string ,\n\t\t\tkids = [] as readonly $mol_tree2[] ,\n\t\t) {\n\t\t\treturn $mol_tree2.data( value , kids , this.span )\n\t\t}\n\t\t\n\t\t/** Makes struct node. */\n\t\tstatic struct(\n\t\t\ttype : string ,\n\t\t\tkids = [] as readonly $mol_tree2[] ,\n\t\t\tspan = $mol_span.unknown ,\n\t\t) {\n\n\t\t\tif( /[ \\n\\t\\\\]/.test( type ) ) {\n\t\t\t\t$$.$mol_fail( span.error( `Wrong type ${ JSON.stringify( type ) }` ) )\n\t\t\t}\n\n\t\t\treturn new $mol_tree2( type , '' , kids , span )\n\n\t\t}\n\t\t\n\t\t/** Makes new derived structural node. */\n\t\tstruct(\n\t\t\ttype : string ,\n\t\t\tkids = [] as readonly $mol_tree2[] ,\n\t\t) {\n\t\t\treturn $mol_tree2.struct( type , kids , this.span )\n\t\t}\n\n\t\t/** Makes new derived node with different kids id defined. */\n\t\tclone( kids : readonly $mol_tree2[], span = this.span ) {\n\t\t\treturn new $mol_tree2( this.type , this.value , kids , span )\n\t\t}\n\n\t\t/** Returns multiline text content. */\n\t\ttext() {\n\n\t\t\tvar values : string[] = []\n\t\t\t\n\t\t\tfor( var kid of this.kids ) {\n\t\t\t\tif( kid.type ) continue\n\t\t\t\tvalues.push( kid.value )\n\t\t\t}\n\t\t\t\n\t\t\treturn this.value + values.join( '\\n' )\n\n\t\t}\n\t\t\n\t\t/** Parses tree format. */\n\t\t/** @deprecated Use $mol_tree2_from_string */\n\t\tstatic fromString( str : string , uri = 'unknown' ) {\n\t\t\treturn $$.$mol_tree2_from_string( str, uri )\n\t\t}\n\n\t\t/** Serializes to tree format. */\n\t\ttoString() : string {\n\t\t\treturn $$.$mol_tree2_to_string( this )\n\t\t}\n\t\t\n\t\t/** Makes new tree with node overrided by path. */\n\t\tinsert( value : $mol_tree2 | null , ...path : $mol_tree2_path ) : $mol_tree2 {\n\n\t\t\tif( path.length === 0 ) return value!\n\t\t\t\n\t\t\tconst type = path[0]\n\t\t\tif( typeof type === 'string' ) {\n\n\t\t\t\tlet replaced = false\n\t\t\t\tconst sub = this.kids.map( ( item , index )=> {\n\t\t\t\t\tif( item.type !== type ) return item\n\t\t\t\t\treplaced = true\n\t\t\t\t\treturn item.insert( value , ... path.slice( 1 ) )\n\t\t\t\t} ).filter( Boolean )\n\t\t\t\t\n\t\t\t\tif( !replaced && value ) {\n\t\t\t\t\tsub.push( this.struct( type , [] ).insert( value , ... path.slice( 1 ) ) )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn this.clone( sub )\n\n\t\t\t} else if( typeof type === 'number' ) {\n\t\t\t\t\n\t\t\t\tconst sub = this.kids.slice()\n\t\t\t\tsub[ type ] = ( sub[ type ] || this.list([]) )\n\t\t\t\t\t.insert( value , ... path.slice( 1 ) )\n\t\t\t\t\n\t\t\t\treturn this.clone( sub.filter( Boolean ) )\n\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tconst kids = ( ( this.kids.length === 0 ) ? [ this.list([]) ] : this.kids )\n\t\t\t\t.map( item => item.insert( value , ... path.slice( 1 ) ) )\n\t\t\t\t.filter( Boolean )\n\n\t\t\t\treturn this.clone( kids )\n\n\t\t\t}\n\n\t\t}\n\n\t\t/** Query nodes by path. */\n\t\tselect( ...path : $mol_tree2_path ) {\n\n\t\t\tlet next = [ this as $mol_tree2 ]\n\n\t\t\tfor( const type of path ) {\n\n\t\t\t\tif( !next.length ) break\n\t\t\t\t\n\t\t\t\tconst prev = next\n\t\t\t\tnext = []\n\n\t\t\t\tfor( var item of prev ) {\n\n\t\t\t\t\tswitch( typeof( type ) ) {\n\n\t\t\t\t\t\tcase 'string' :\n\n\t\t\t\t\t\t\tfor( var child of item.kids ) {\n\t\t\t\t\t\t\t\tif( child.type == type ) {\n\t\t\t\t\t\t\t\t\tnext.push( child )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\n\t\t\t\t\t\tcase 'number' :\n\n\t\t\t\t\t\t\tif( type < item.kids.length ) next.push( item.kids[ type ] )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\t\tdefault : next.push( ... item.kids )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.list( next )\n\t\t\t\n\t\t}\n\t\t\n\t\t/** Filter kids by path or value. */\n\t\tfilter( path : string[] , value? : string ) {\n\n\t\t\tconst sub = this.kids.filter( item => {\n\t\t\t\t\t\n\t\t\t\tvar found = item.select( ...path )\n\t\t\t\t\n\t\t\t\tif( value === undefined ) {\n\t\t\t\t\treturn Boolean( found.kids.length )\n\t\t\t\t} else {\n\t\t\t\t\treturn found.kids.some( child => child.value == value )\n\t\t\t\t}\n\t\t\t\n\t\t\t} )\n\t\t\t\n\t\t\treturn this.clone( sub )\n\n\t\t}\n\n\t\thack_self< Context extends { span?: $mol_span; [ key: string ]: unknown } = {} >(\n\t\t\tbelt: $mol_tree2_belt< Context >,\n\t\t\tcontext = {} as Context,\n\t\t) {\n\t\t\tlet handle = belt[ this.type ] || belt[ '' ]\n\t\t\t\t\n\t\t\tif( !handle || handle === Object.prototype[ this.type as keyof Object ] ) {\n\t\t\t\thandle = ( input, belt, context )=> [\n\t\t\t\t\tinput.clone( input.hack( belt, context ), context.span )\n\t\t\t\t]\n\t\t\t}\n\t\t\t\n\t\t\ttry {\n\t\t\t\treturn handle( this , belt , context! )\n\t\t\t} catch( error: any ) {\n\t\t\t\terror.message += `\\n${ this.clone([]) }${ this.span }`\n\t\t\t\t$mol_fail_hidden( error )\n\t\t\t}\n\t\t}\n\n\t\t/** Transform tree through context with transformers */\n\t\thack< Context extends { span?: $mol_span; [ key: string ]: unknown } = {} >(\n\t\t\tbelt: $mol_tree2_belt< Context >,\n\t\t\tcontext = {} as Context,\n\t\t) {\n\t\t\treturn ( [] as readonly $mol_tree2[] ).concat(\n\t\t\t\t... this.kids.map( child => child.hack_self(belt, context) )\n\t\t\t)\n\n\t\t}\n\n\t\t/** Makes Error with node coordinates. */\n\t\terror( message : string , Class = Error ) {\n\t\t\treturn this.span.error( `${ message }\\n${ this.clone([]) }` , Class )\n\t\t}\n\n\t}\n\n\texport class $mol_tree2_empty extends $mol_tree2 {\n\t\tconstructor() {\n\t\t\tsuper( '' , '' , [] , $mol_span.unknown )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\n\t/** Syntax error with cordinates and source line snippet. */\n\texport class $mol_error_syntax extends SyntaxError {\n\t\tconstructor (\n\t\t\tpublic reason: string,\n\t\t\tpublic line: string,\n\t\t\tpublic span: $mol_span,\n\t\t) {\n\t\t\tsuper(`${ reason }\\n${ span }\\n${ line.substring( 0 , span.col - 1 ).replace( /\\S/g, ' ' ) }${ ''.padEnd( span.length, '!' ) }\\n${ line }`)\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\t/** Parses tree format from string. */\n\texport function $mol_tree2_from_string(\n\t\tthis: $,\n\t\tstr: string,\n\t\turi = '?',\n\t) : $mol_tree2 {\n\n\t\tconst span = $mol_span.entire( uri, str )\n\n\t\tvar root = $mol_tree2.list( [], span )\n\t\tvar stack = [ root ]\n\n\t\tvar pos = 0, row = 0, min_indent = 0\n\t\t\n\t\twhile( str.length > pos ) {\n\n\t\t\tvar indent = 0\n\t\t\tvar line_start = pos\n\n\t\t\trow++\n\n\t\t\t// read indent\n\t\t\twhile( str.length > pos && str[ pos ] == '\\t' ) {\n\t\t\t\tindent++\n\t\t\t\tpos++\n\t\t\t}\n\n\t\t\tif( ! root.kids.length ) {\n\t\t\t\tmin_indent = indent\n\t\t\t}\n\n\t\t\tindent -= min_indent\n\n\t\t\t// invalid tab size\n\t\t\tif( indent < 0 || indent >= stack.length ) {\n\n\t\t\t\tconst sp = span.span( row, 1, pos - line_start )\n\n\t\t\t\t// skip error line\n\t\t\t\twhile( str.length > pos && str[ pos ] != '\\n' ) {\n\t\t\t\t\tpos++\n\t\t\t\t}\n\n\t\t\t\tif( indent < 0 ) {\n\t\t\t\t\tif( str.length > pos ) {\n\t\t\t\t\t\tthis.$mol_fail( new this.$mol_error_syntax(\n\t\t\t\t\t\t\t`Too few tabs`,\n\t\t\t\t\t\t\tstr.substring( line_start, pos ),\n\t\t\t\t\t\t\tsp,\n\t\t\t\t\t\t) )\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.$mol_fail( new this.$mol_error_syntax(\n\t\t\t\t\t\t`Too many tabs`,\n\t\t\t\t\t\tstr.substring( line_start, pos ),\n\t\t\t\t\t\tsp,\n\t\t\t\t\t) )\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstack.length = indent + 1\n\t\t\tvar parent = stack[ indent ]\n\n\t\t\t// parse types\n\t\t\twhile( str.length > pos && str[ pos ] != '\\\\' && str[ pos ] != '\\n' ) {\n\n\t\t\t\t// type can not contain space and tab\n\t\t\t\tvar error_start = pos\n\t\t\t\twhile( str.length > pos && ( str[ pos ] == ' ' || str[ pos ] == '\\t' ) ) {\n\t\t\t\t\tpos++\n\t\t\t\t}\n\n\t\t\t\tif( pos > error_start ) {\n\t\t\t\t\tlet line_end = str.indexOf( '\\n' , pos )\n\t\t\t\t\tif( line_end === -1 ) line_end = str.length\n\t\t\t\t\tconst sp = span.span( row, error_start - line_start + 1, pos - error_start )\n\t\t\t\t\tthis.$mol_fail( new this.$mol_error_syntax(\n\t\t\t\t\t\t`Wrong nodes separator`,\n\t\t\t\t\t\tstr.substring( line_start, line_end ),\n\t\t\t\t\t\tsp,\n\t\t\t\t\t) )\n\t\t\t\t}\n\n\t\t\t\t// read type\n\t\t\t\tvar type_start = pos\n\t\t\t\twhile( \n\t\t\t\t\tstr.length > pos && \n\t\t\t\t\tstr[ pos ] != '\\\\' && \n\t\t\t\t\tstr[ pos ] != ' ' && \n\t\t\t\t\tstr[ pos ] != '\\t' && \n\t\t\t\t\tstr[ pos ] != '\\n'\n\t\t\t\t) {\n\t\t\t\t\tpos++\n\t\t\t\t}\n\t\t\t\tif( pos > type_start ) {\n\t\t\t\t\tlet next = new $mol_tree2(\n\t\t\t\t\t\tstr.slice( type_start , pos ),\n\t\t\t\t\t\t'',\n\t\t\t\t\t\t[],\n\t\t\t\t\t\tspan.span( row, type_start - line_start + 1, pos - type_start ),\n\t\t\t\t\t)\n\t\t\t\t\tconst parent_kids = parent.kids as $mol_tree2[]\n\t\t\t\t\tparent_kids.push( next )\n\t\t\t\t\tparent = next\n\t\t\t\t}\n\n\t\t\t\t// read one space if exists\n\t\t\t\tif( str.length > pos && str[ pos ] == ' ' ) {\n\t\t\t\t\tpos++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// read data\n\t\t\tif( str.length > pos && str[ pos ] == '\\\\' ) {\n\t\t\t\tvar data_start = pos\n\t\t\t\twhile( str.length > pos && str[ pos ] != '\\n' ) {\n\t\t\t\t\tpos++\n\t\t\t\t}\n\t\t\t\tlet next = new $mol_tree2(\n\t\t\t\t\t'',\n\t\t\t\t\tstr.slice( data_start + 1 , pos ),\n\t\t\t\t\t[],\n\t\t\t\t\tspan.span( row, data_start - line_start + 2, pos - data_start - 1 ),\n\t\t\t\t)\n\t\t\t\tconst parent_kids = parent.kids as $mol_tree2[]\n\t\t\t\tparent_kids.push( next )\n\t\t\t\tparent = next\n\t\t\t}\n\n\t\t\t// now must be end of text\n\t\t\tif( str.length === pos && stack.length > 0 ) {\n\t\t\t\tconst sp = span.span( row, pos - line_start + 1, 1 )\n\t\t\t\tthis.$mol_fail( new this.$mol_error_syntax(\n\t\t\t\t\t`Unexpected EOF, LF required`,\n\t\t\t\t\tstr.substring( line_start, str.length ),\n\t\t\t\t\tsp,\n\t\t\t\t) )\n\t\t\t}\n\n\t\t\tstack.push( parent )\n\t\t\tpos++\n\t\t}\n\n\t\treturn root\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_tree2_from_json( json: any, span = $mol_span.unknown ): $mol_tree2 {\n\n\t\tif( typeof json === 'boolean' || typeof json === 'number' || json === null ) {\n\t\t\treturn new $mol_tree2( String( json ) , '' , [] , span )\n\t\t}\n\t\t\n\t\tif( typeof json === 'string' ) {\n\t\t\treturn $mol_tree2.data( json , [], span )\n\t\t}\n\n\t\tif( typeof json.toJSON === 'function' ) {\n\t\t\treturn $mol_tree2_from_json( json.toJSON() )\n\t\t}\n\n\t\tif( Array.isArray( json ) ) {\n\t\t\tconst sub = json.map( json => $mol_tree2_from_json( json , span ) )\n\t\t\treturn new $mol_tree2( '/' , '', sub, span )\n\t\t}\n\t\t\n\t\tif( ArrayBuffer.isView( json ) ) {\n\t\t\tconst buf = new Uint8Array( json.buffer, json.byteOffset, json.byteLength )\n\t\t\treturn $mol_tree2.data( String.fromCharCode( ... buf ) , [], span )\n\t\t}\n\t\t\t\n\t\tif( json instanceof Date ) {\n\t\t\treturn new $mol_tree2( '', json.toISOString() , [] , span )\n\t\t}\n\n\t\tif( json.toString !== Object.prototype.toString ) {\n\t\t\treturn $mol_tree2.data( json.toString() , [], span )\n\t\t}\n\n\t\tif( json instanceof Error ) {\n\t\t\tconst { name , message , stack } = json\n\t\t\tjson = { ... json, name, message, stack }\n\t\t}\n\n\t\tconst sub = [] as $mol_tree2[]\n\t\t\n\t\tfor( var key in json ) {\n\n\t\t\tconst val = json[ key ]\n\n\t\t\tif( val === undefined ) continue\n\n\t\t\tconst subsub = $mol_tree2_from_json( val, span )\n\t\t\t\n\t\t\tif( /^[^\\n\\t\\\\ ]+$/.test( key ) ) {\n\t\t\t\tsub.push( new $mol_tree2( key, '', [ subsub ], span ) )\n\t\t\t} else {\n\t\t\t\tsub.push( $mol_tree2.data( key, [ subsub ], span ) )\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\treturn new $mol_tree2( '*' , '', sub , span )\n\t\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\t/** Module for working with terminal. Text coloring when output in terminal */\n\texport class $mol_term_color {\n\t\t\n\t\tstatic reset = this.ansi( 0, 0 )\n\t\tstatic bold = this.ansi( 1, 22 )\n\t\tstatic italic = this.ansi( 3, 23 )\n\t\tstatic underline = this.ansi( 4, 24 )\n\t\tstatic inverse = this.ansi( 7, 27 )\n\t\tstatic hidden = this.ansi( 8, 28 )\n\t\tstatic strike = this.ansi( 9, 29 )\n\t\t\n\t\tstatic gray = this.ansi( 90, 39 )\n\t\tstatic red = this.ansi( 91, 39 )\n\t\tstatic green = this.ansi( 92, 39 )\n\t\tstatic yellow = this.ansi( 93, 39 )\n\t\tstatic blue = this.ansi( 94, 39 )\n\t\tstatic magenta = this.ansi( 95, 39 )\n\t\tstatic cyan = this.ansi( 96, 39 )\n\t\t\n\t\tstatic Gray = ( str: string )=> this.inverse( this.gray( str ) )\n\t\tstatic Red = ( str: string )=> this.inverse( this.red( str ) )\n\t\tstatic Green = ( str: string )=> this.inverse( this.green( str ) )\n\t\tstatic Yellow = ( str: string )=> this.inverse( this.yellow( str ) )\n\t\tstatic Blue = ( str: string )=> this.inverse( this.blue( str ) )\n\t\tstatic Magenta = ( str: string )=> this.inverse( this.magenta( str ) )\n\t\tstatic Cyan = ( str: string )=> this.inverse( this.cyan( str ) )\n\t\t\n\t\tstatic ansi( open: number, close: number ) {\n\t\n\t\t\tif( typeof process === 'undefined' ) return String\n\t\t\tif( !process.stdout.isTTY ) return String\n\t\t\n\t\t\tconst prefix = `\\x1b[${open}m`\n\t\t\tconst postfix = `\\x1b[${close}m`\n\t\t\t\n\t\t\tconst suffix_regexp = new RegExp( postfix.replace( '[', '\\\\[' ), 'g' )\n\t\t\n\t\t\treturn function colorer( str: string ) {\n\t\t\n\t\t\t\tstr = String( str )\n\t\t\t\tif( str === '' ) return str\n\t\t\n\t\t\t\tconst suffix = str.replace( suffix_regexp, prefix )\n\t\t\t\treturn prefix + suffix + postfix\n\t\t\n\t\t\t}\n\t\t\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\texport function $mol_log3_node_make(\n\t\tlevel : keyof Console ,\n\t\toutput : 'stdout' | 'stderr',\n\t\ttype : string ,\n\t\tcolor: ( str: string )=> string ,\n\t) {\n\n\t\treturn function $mol_log3_logger(\n\t\t\tthis : $ ,\n\t\t\tevent : $mol_log3_event<{}> ,\n\t\t) {\n\n\t\t\tif( !event.time ) event = { time : new Date().toISOString() , ... event }\n\n\t\t\tlet tree = this.$mol_tree2_from_json( event )\n\t\t\ttree = tree.struct( type, tree.kids )\n\t\t\t\n\t\t\tlet str = color( tree.toString() )\n\t\t\t;( this.console[ level ] as any )( str )\n\t\n\t\t\tconst self = this\n\t\t\treturn ()=> self.console.groupEnd()\n\n\t\t}\n\n\t}\n\n\t$.$mol_log3_come = $mol_log3_node_make( 'info' , 'stdout' , 'come' , $mol_term_color.blue )\n\t$.$mol_log3_done = $mol_log3_node_make( 'info' , 'stdout' , 'done' , $mol_term_color.green )\n\t$.$mol_log3_fail = $mol_log3_node_make( 'error' , 'stderr' , 'fail' , $mol_term_color.red )\n\t$.$mol_log3_warn = $mol_log3_node_make( 'warn' , 'stderr' , 'warn' , $mol_term_color.yellow )\n\t$.$mol_log3_rise = $mol_log3_node_make( 'log' , 'stdout' , 'rise' , $mol_term_color.magenta )\n\t$.$mol_log3_area = $mol_log3_node_make( 'log' , 'stdout' , 'area' , $mol_term_color.cyan )\n\n}\n","namespace $ {\n\t\n\t/** One-shot fiber */\n\texport class $mol_wire_task<\n\t\tHost,\n\t\tArgs extends readonly unknown[],\n\t\tResult,\n\t> extends $mol_wire_fiber< Host, Args, Result > {\n\t\t\n\t\tstatic getter<\n\t\t\tHost,\n\t\t\tArgs extends readonly unknown[],\n\t\t\tResult,\n\t\t>(\n\t\t\ttask: ( this : Host , ... args : Args )=> Result,\n\t\t): ( host: Host, args: Args )=> $mol_wire_task< Host, Args, Result > {\n\t\t\t\n\t\t\treturn function $mol_wire_task_get( host: Host, args: Args ) {\n\t\t\t\t\n\t\t\t\tconst sub = $mol_wire_auto()\n\t\t\t\tconst existen = sub?.track_next() as $mol_wire_task< Host, Args, Result > | undefined\n\t\t\t\t\n\t\t\t\treuse: if( existen ) {\n\t\t\t\t\t\n\t\t\t\t\tif( !existen.temp ) break reuse\n\t\t\t\t\t\n\t\t\t\t\tif( existen.host !== host ) break reuse\n\t\t\t\t\tif( existen.task !== task ) break reuse\n\t\t\t\t\tif( !$mol_compare_deep( existen.args, args ) ) break reuse\n\t\t\t\t\t\n\t\t\t\t\treturn existen\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst key = ( (host as any)?.[ Symbol.toStringTag ] ?? host ) + ( '.' + task.name + '<#>' )\n\t\t\t\tconst next = new $mol_wire_task( key, task, host, args )\n\t\t\t\t\n\t\t\t\t// Disabled because non-idempotency is required for try-catch\n\t\t\t\tif( existen?.temp ) {\n\t\t\t\t\t$$.$mol_log3_warn({\n\t\t\t\t\t\tplace: '$mol_wire_task',\n\t\t\t\t\t\tmessage: `Non idempotency`,\n\t\t\t\t\t\tsub,\n\t\t\t\t\t\tpubs: [ ... sub?.pub_list ?? [] , existen ],\n\t\t\t\t\t\tnext,\n\t\t\t\t\t\thint: 'Ignore it',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn next\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tget temp() {\n\t\t\treturn true\n\t\t}\n\t\t\n\t\tcomplete() {\n\t\t\tif( $mol_promise_like( this.cache ) ) return\n\t\t\tthis.destructor()\n\t\t}\n\t\t\n\t\tput( next: Result | Error | Promise< Result | Error > ) {\n\t\t\t\n\t\t\tconst prev = this.cache\n\t\t\tthis.cache = next\n\t\t\t\n\t\t\tif( $mol_promise_like( next ) ) {\n\t\t\t\t\n\t\t\t\tthis.cursor = $mol_wire_cursor.fresh\n\t\t\t\tif( next !== prev ) this.emit()\n\t\t\t\t\n\t\t\t\tif( $mol_owning_catch( this, next ) ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t(next as any)[ Symbol.toStringTag ] = (this as any)[ Symbol.toStringTag ]\n\t\t\t\t\t} catch { // Promises throw in strict mode\n\t\t\t\t\t\tObject.defineProperty( next, Symbol.toStringTag, { value: (this as any)[ Symbol.toStringTag ] } )\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn next\n\t\t\t}\n\t\t\t\n\t\t\tthis.cursor = $mol_wire_cursor.final\n\t\t\t\n\t\t\tif( this.sub_empty ) this.destructor()\n\t\t\telse if( next !== prev ) this.emit()\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\t/**\n\t * Decorates method to fiber to ensure it is executed only once inside other fiber.\n\t */\n\texport function $mol_wire_method<\n\t\tHost extends object,\n\t\tArgs extends readonly any[],\n\t>(\n\t\thost : Host,\n\t\tfield : PropertyKey,\n\t\tdescr? : TypedPropertyDescriptor< ( ... args: Args )=> any >,\n\t) {\n\t\t\n\t\tif( !descr ) descr = Reflect.getOwnPropertyDescriptor( host , field ) as any\n\t\tconst orig = descr?.value! ?? (host as any)[ field ]\n\t\t\n\t\tconst sup = Reflect.getPrototypeOf( host )!\t\n\t\tif( typeof (sup as any)[ field ] === 'function' ) {\n\t\t\tObject.defineProperty( orig , 'name' , { value : (sup as any)[ field ].name } )\n\t\t}\n\t\t\n\t\tconst temp = $mol_wire_task.getter( orig )\n\t\tconst value = function( this: Host, ... args: Args ) {\n\t\t\tconst fiber = temp( this ?? null as any, args )\n\t\t\treturn fiber.sync()\n\t\t}\n\t\t\n\t\tObject.defineProperty( value , 'name' , { value : orig.name + ' ' } )\n\t\t\n\t\tObject.assign( value, { orig } )\n\t\tconst descr2 = { ... descr, value }\n\t\tReflect.defineProperty( host, field, descr2 )\n\t\t\n\t\treturn descr2\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\tconst catched = new WeakMap< any , boolean >()\n\n\texport function $mol_fail_catch( error: unknown ) {\n\t\t\n\t\tif( typeof error !== 'object' ) return false\n\t\tif( $mol_promise_like( error ) ) $mol_fail_hidden( error )\n\t\tif( catched.get( error ) ) return false\n\t\t\n\t\tcatched.set( error , true )\n\t\treturn true\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_fail_log( error: unknown ) {\n\t\t\n\t\tif( $mol_promise_like( error ) ) return false\n\t\tif( !$mol_fail_catch( error ) ) return false\n\t\t\n\t\tconsole.error( error )\n\t\t\n\t\treturn true\n\t\t\n\t}\n\n}\n","namespace $ {\n\n\t/** Long-living fiber. */\n\texport class $mol_wire_atom<\n\t\tHost,\n\t\tArgs extends readonly unknown[],\n\t\tResult,\n\t> extends $mol_wire_fiber< Host, Args, Result > {\n\n\t\tstatic solo<\n\t\t\tHost,\n\t\t\tArgs extends readonly unknown[],\n\t\t\tResult,\n\t\t>(\n\t\t\thost: Host,\n\t\t\ttask: ( this: Host, ... args: Args )=> Result,\n\t\t): $mol_wire_atom< Host, Args, Result > {\n\t\t\t\n\t\t\tconst field = task.name + '<>'\n\t\t\t\n\t\t\tconst existen = Object.getOwnPropertyDescriptor( host ?? task, field )?.value\n\t\t\tif( existen ) return existen\n\t\t\t\n\t\t\tconst prefix = (host as any)?.[ Symbol.toStringTag ] ?? ( host instanceof Function ? $$.$mol_func_name( host ) : host )\n\t\t\tconst key = prefix + ( '.' + field )\n\t\t\t\n\t\t\tconst fiber = new $mol_wire_atom( key, task, host, [] as any as Args )\n\t\t\t;( host as any ?? task )[ field ] = fiber\n\t\t\t\n\t\t\treturn fiber\n\t\t}\n\t\t\n\t\tstatic plex<\n\t\t\tHost,\n\t\t\tArgs extends readonly unknown[],\n\t\t\tResult,\n\t\t>(\n\t\t\thost: Host,\n\t\t\ttask: ( this: Host , ... args: Args )=> Result,\n\t\t\tkey: Args[0],\n\t\t): $mol_wire_atom< Host, Args, Result > {\n\t\t\t\n\t\t\tconst field = task.name + '<>'\n\t\t\tlet dict = Object.getOwnPropertyDescriptor( host ?? task, field )?.value\n\t\t\tconst prefix = (host as any)?.[ Symbol.toStringTag ] ?? ( host instanceof Function ? $$.$mol_func_name( host ) : host )\n\t\t\tconst key_str = $mol_key( key )\n\t\t\t\n\t\t\tif( dict ) {\n\t\t\t\tconst existen = dict.get( key_str )\n\t\t\t\tif( existen ) return existen\n\t\t\t} else {\n\t\t\t\tdict = ( host as any ?? task )[ field ] = new Map()\n\t\t\t}\n\t\t\t\n\t\t\tconst id = prefix + ( '.' + task.name ) + ( '<' + key_str.replace( /^\"|\"$/g, \"'\" ) + '>' )\n\t\t\tconst fiber = new $mol_wire_atom( id, task, host, [ key ] as any as Args )\n\t\t\tdict.set( key_str, fiber )\n\t\t\t\n\t\t\treturn fiber\n\t\t}\n\t\t\n\t\tstatic watching = new Set< $mol_wire_atom< any, any, any > >()\n\t\tstatic watcher = null as $mol_after_frame | null\n\t\t\n\t\tstatic watch() {\n\t\t\n\t\t\t$mol_wire_atom.watcher = new $mol_after_frame( $mol_wire_atom.watch )\n\t\t\t\n\t\t\tfor( const atom of $mol_wire_atom.watching ) {\n\t\t\t\t\n\t\t\t\tif( atom.cursor === $mol_wire_cursor.final ) {\n\t\t\t\t\t$mol_wire_atom.watching.delete( atom )\n\t\t\t\t} else {\n\t\t\t\t\tatom.cursor = $mol_wire_cursor.stale\n\t\t\t\t\tatom.fresh()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twatch() {\n\t\t\t\n\t\t\tif( !$mol_wire_atom.watcher ) {\n\t\t\t\t$mol_wire_atom.watcher = new $mol_after_frame( $mol_wire_atom.watch )\n\t\t\t}\n\t\t\t\n\t\t\t$mol_wire_atom.watching.add( this )\n\t\t\t\n\t\t}\n\t\t\n\t\t/**\n\t\t * Update fiber value through another temp fiber.\n\t\t */\n\t\t@ $mol_wire_method\n\t\tresync( args: Args ) {\n\t\t\treturn this.put( this.task.call( this.host!, ... args ) )\n\t\t}\n\t\t\n\t\t@ $mol_wire_method\n\t\tonce() {\n\t\t\treturn this.sync()\n\t\t}\n\t\t\n\t\tchannel() {\n\t\t\treturn Object.assign( ( next?: $mol_type_foot< Args > )=> {\n\t\t\t\t\t\n\t\t\t\tif( next !== undefined ) return this.resync( [ ... this.args, next ] as any ) as never\n\t\t\t\tif( !$mol_wire_fiber.warm ) return this.result() as never\n\t\t\t\t\n\t\t\t\tif( $mol_wire_auto()?.temp ) {\n\t\t\t\t\treturn this.once()\n\t\t\t\t} else {\n\t\t\t\t\treturn this.sync()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}, { atom: this as $mol_wire_atom< Host, Args, Result > } )\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\t\n\t\t\tsuper.destructor()\n\t\t\t\n\t\t\tif( this.pub_from === 0 ) {\n\t\t\t\t;( this.host as any ?? this.task )[ this.field() ] = null\n\t\t\t} else {\n\t\t\t\t;( this.host as any ?? this.task )[ this.field() ].delete( $mol_key( this.args[0] ) )\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tput( next: Result | Error | Promise< Result | Error > ) {\n\t\t\t\n\t\t\tconst prev = this.cache\n\t\t\t\n\t\t\tupdate: if( next !== prev ) {\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tif( $mol_compare_deep( prev, next ) ) break update\n\t\t\t\t} catch( error: any ) {\n\t\t\t\t\t$mol_fail_log( error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( $mol_owning_check( this, prev ) ) {\n\t\t\t\t\tprev.destructor()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( $mol_owning_catch( this, next ) ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t(next as any)[ Symbol.toStringTag ] = (this as any)[ Symbol.toStringTag ]\n\t\t\t\t\t} catch { // Promises throw in strict mode\n\t\t\t\t\t\tObject.defineProperty( next, Symbol.toStringTag, { value: (this as any)[ Symbol.toStringTag ] } )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( !this.sub_empty ) this.emit()\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tthis.cache = next\n\t\t\tthis.cursor = $mol_wire_cursor.fresh\n\t\t\t\n\t\t\tif( $mol_promise_like( next ) ) return next\n\t\t\t\n\t\t\tthis.complete_pubs()\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t}\n}\n","namespace $ {\n\t\n\t/** Decorates solo object channel to [mol_wire_atom](../atom/atom.ts). */\n\texport function $mol_wire_solo< Args extends any[] >(\n\t\thost: object,\n\t\tfield: string,\n\t\tdescr?: TypedPropertyDescriptor< ( ... args: Args )=> any >\n\t) {\n\n\t\tif( !descr ) descr = Reflect.getOwnPropertyDescriptor( host , field )\n\t\tconst orig = descr?.value! ?? (host as any)[ field ]\n\t\t\n\t\tconst sup = Reflect.getPrototypeOf( host )!\n\t\tif( typeof (sup as any)[ field ] === 'function' ) {\n\t\t\tObject.defineProperty( orig , 'name' , { value : (sup as any)[ field ].name } )\n\t\t}\n\t\t\n\t\tconst descr2 = {\n\t\t\t... descr,\n\t\t\tvalue: function( this: typeof host, ... args: Args ){\n\t\t\t\n\t\t\t\tlet atom = $mol_wire_atom.solo( this, orig )\n\t\t\t\t\n\t\t\t\tif(( args.length === 0 )||( args[0] === undefined )) {\n\t\t\t\t\t\n\t\t\t\t\tif( !$mol_wire_fiber.warm ) return atom.result()\n\t\t\t\t\t\n\t\t\t\t\tif( $mol_wire_auto()?.temp ) {\n\t\t\t\t\t\treturn atom.once()\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn atom.sync()\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.resync( args )\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tReflect.defineProperty( descr2.value , 'name' , { value : orig.name + ' ' } )\n\t\tReflect.defineProperty( descr2.value , 'length' , { value : orig.length } )\n\t\tObject.assign( descr2.value, { orig } )\n\t\t\n\t\tReflect.defineProperty( host, field, descr2 )\n\t\t\n\t\treturn descr2 as any as TypedPropertyDescriptor< ( ... args: First_optional< Args > )=> any >\n\t}\n\n\ttype First_optional< Args extends any[] > = Args extends []\n\t\t? []\n\t\t: [ Args[0] | undefined, ... $mol_type_tail< Args > ]\n\n}\n","namespace $ {\n\t\n\t/** Reactive memoizing multiplexed property decorator. */\n\texport function $mol_wire_plex< Args extends [ any, ... any[] ] >(\n\t\thost: object,\n\t\tfield: string,\n\t\tdescr?: TypedPropertyDescriptor< ( ... args: Args )=> any >\n\t) {\n\n\t\tif( !descr ) descr = Reflect.getOwnPropertyDescriptor( host , field )\n\t\tconst orig = descr?.value! ?? (host as any)[ field ]\n\t\t\n\t\tconst sup = Reflect.getPrototypeOf( host )!\n\t\tif( typeof (sup as any)[ field ] === 'function' ) {\n\t\t\tObject.defineProperty( orig , 'name' , { value : (sup as any)[ field ].name } )\n\t\t}\n\t\t\n\t\tconst descr2 = {\n\t\t\t... descr,\n\t\t\tvalue: function( this: typeof host, ... args: Args ) {\n\t\t\t\n\t\t\t\tlet atom = $mol_wire_atom.plex( this, orig, args[0] )\n\t\t\t\t\n\t\t\t\tif(( args.length === 1 )||( args[1] === undefined )) {\n\t\t\t\t\t\n\t\t\t\t\tif( !$mol_wire_fiber.warm ) return atom.result()\n\t\t\t\t\t\n\t\t\t\t\tif( $mol_wire_auto()?.temp ) {\n\t\t\t\t\t\treturn atom.once()\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn atom.sync()\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.resync( args )\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tReflect.defineProperty( descr2.value , 'name' , { value : orig.name + ' ' } )\n\t\tReflect.defineProperty( descr2.value , 'length' , { value : orig.length } )\n\t\tObject.assign( descr2.value, { orig } )\n\t\t\n\t\tReflect.defineProperty( host, field, descr2 )\n\t\t\n\t\treturn descr2\n\t}\n\t\n}\n","namespace $ {\n\n\t/**\n\t * Reactive memoizing solo property decorator from [mol_wire](../wire/README.md)\n\t * @example\n\t * '@' $mol_mem\n\t * name(next?: string) {\n\t * \treturn next ?? 'default'\n\t * }\n\t * @see https://mol.hyoo.ru/#!section=docs/=qxmh6t_sinbmb\n\t */\n\texport let $mol_mem = $mol_wire_solo\n\n\t/**\n\t * Reactive memoizing multiplexed property decorator [mol_wire](../wire/README.md)\n\t * @example\n\t * '@' $mol_mem_key\n\t * name(id: number, next?: string) {\n\t * return next ?? 'default'\n\t * }\n\t * @see https://mol.hyoo.ru/#!section=docs/=qxmh6t_sinbmb\n\t */\n\texport let $mol_mem_key = $mol_wire_plex\n}\n","namespace $ {\n\t\n\texport var $mol_dom_context : typeof globalThis\n\t\n}\n","interface $node {\n\t[key:string]: any\n}\n\nvar $node = new Proxy( { require } as any , {\n\t\n\tget( target , name : string , wrapper ) {\n\n\t\tif( target[ name ] ) return target[ name ]\n\n\t\tconst mod = target.require/****/( 'module' ) as typeof import/****/( 'module' )\n\t\t\n\t\tif( mod.builtinModules.indexOf( name ) >= 0 ) return target.require ( name )\n\t\tif( name[0] === '.' ) return target.require( name )\n\n\t\ttry {\n\t\t\ttarget.require.resolve( name )\n\t\t} catch {\n\t\t\n\t\t\tconst $$ = ( $ as any )\n\t\t\t$$.$mol_exec( '.' , 'npm' , 'install' , '--omit=dev', name )\n\t\t\t\n\t\t\ttry {\n\t\t\t\t$$.$mol_exec( '.' , 'npm' , 'install' , '--omit=dev', '@types/' + name )\n\t\t\t} catch (e) {\n\t\t\t\tif ($$.$mol_fail_catch(e)) {\n\t\t\t\t\t$$.$mol_fail_log(e)\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\t\n\t\ttry {\n\t\t\treturn target.require( name )\n\t\t} catch( error ) {\n\n\t\t\tif($.$mol_fail_catch(error) && ( error as any ).code === 'ERR_REQUIRE_ESM' ) {\n\t\t\t\tconst module = cache.get( name )\n\t\t\t\tif( module ) return module\n\t\t\t\tthrow import( name ).then( module => cache.set( name, module ) )\n\t\t\t}\n\t\t\t\n\t\t\t$.$mol_fail_log( error )\n\n\t\t\treturn null\n\t\t}\n\n\t},\n\n\tset( target , name : string , value ) {\n\t\ttarget[ name ] = value\n\t\treturn true\n\t},\n\n} ) as $node\n\nconst cache = new Map< string, any >()\n\nrequire = ( req =>\n\tObject.assign( function require( name : string ) {\n\t\treturn $node[ name ]\n\t} , req )\n)( require )\n\n","namespace $ {\n\n\texport class $mol_error_mix< Cause extends {} = {} > extends AggregateError {\n\t\t\n\t\tname = $$.$mol_func_name( this.constructor ).replace( /^\\$/, '' ) + '_Error'\n\n\t\tconstructor(\n\t\t\tmessage: string,\n\t\t\treadonly cause = {} as Cause,\n\t\t\t... errors: Error[]\n\t\t) {\n\t\t\t\n\t\t\tsuper( errors, message, { cause } )\n\t\t\t\n\t\t\tconst stack_get = Object.getOwnPropertyDescriptor( this, 'stack' )?.get ?? ( ()=> super.stack )\n\t\t\t\n\t\t\tObject.defineProperty( this, 'stack', {\n\t\t\t\tget: ()=> ( stack_get.call( this ) ?? this.message ) + '\\n' + [ JSON.stringify( this.cause, null, ' ' ) ?? 'no cause', ... this.errors.map( e => e.stack ) ].map(\n\t\t\t\t\te => e.trim()\n\t\t\t\t\t\t.replace( /at /gm, ' at ' )\n\t\t\t\t\t\t.replace( /^(?! +at )(.*)/gm, ' at | $1 (#)' )\n\t\t\t\t).join('\\n')\n\t\t\t} )\n\t\t\t\n\t\t}\n\n\t\tstatic [ Symbol.toPrimitive ]() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\tstatic toString() {\n\t\t\treturn $$.$mol_func_name( this )\n\t\t}\n\n\t\tstatic make(\n\t\t\t...params: ConstructorParameters\n\t\t) {\n\t\t\treturn new this(...params)\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\texport function $mol_env() {\n\t\treturn {} as Record< string, string | undefined >\n\t}\n}\n","namespace $ {\n\t$.$mol_env = function $mol_env() {\n\t\treturn this.process.env\n\t}\n}\n","namespace $ {\n\tconst factories = new WeakMap()\n\n\tfunction factory(\n\t\tval: new (...args: Args) => Result\n\t) {\n\t\tlet make = factories.get(val) as null | ((...args: Args) => Result)\n\n\t\tif ( make ) return make\n\n\t\tmake = $mol_func_name_from((...args: Args) => new val(...args), val)\n\t\tfactories.set(val, make)\n\n\t\treturn make\n\t}\n\n\t/**\n\t * Convert asynchronous (promise-based) API to synchronous by wrapping function and method calls in a fiber.\n\t * @see https://mol.hyoo.ru/#!section=docs/=1fcpsq_1wh0h2\n\t */\n\texport function $mol_wire_sync< Host extends object >( obj: Host ) {\n\t\treturn new Proxy( obj, {\n\t\t\t\n\t\t\tget( obj, field ) {\n\t\t\t\t\n\t\t\t\tlet val = (obj as any)[ field ]\n\t\t\t\tif( typeof val !== 'function' ) return val\n\t\t\t\tconst temp = $mol_wire_task.getter(val)\n\n\t\t\t\treturn function $mol_wire_sync( this: Host, ... args: unknown[] ) {\n\t\t\t\t\tconst fiber = temp( obj, args )\n\t\t\t\t\treturn fiber.sync()\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tconstruct(obj, args) {\n\t\t\t\tconst temp = $mol_wire_task.getter(factory(obj as (new ( ... args: unknown[] )=> unknown)))\n\t\t\t\treturn temp( obj, args ).sync() as object\n\t\t\t},\n\n\t\t\tapply( obj, self, args ) {\n\t\t\t\tconst temp = $mol_wire_task.getter(obj as ( ... args: any[] )=> any)\n\t\t\t\treturn temp(self, args).sync()\n\t\t\t},\n\t\t\t\n\t\t} ) as unknown as ObjectOrFunctionResultAwaited\n\t}\n\n\ttype FunctionResultAwaited = Some extends (...args: infer Args) => infer Res\n\t\t? (...args: Args) => Awaited\n\t\t: Some\n\n\ttype ConstructorResultAwaited = Some extends new (...args: infer Args) => infer Res\n\t\t? new (...args: Args) => Res\n\t\t: {}\n\n\ttype MethodsResultAwaited = {\n\t\t[K in keyof Host]: FunctionResultAwaited\n\t}\n\n\ttype ObjectOrFunctionResultAwaited = (\n\t\tSome extends (...args: any) => unknown ? FunctionResultAwaited : {}\n\t) & ( Some extends Object ? MethodsResultAwaited & ConstructorResultAwaited : Some )\n\n}\n","namespace $ {\n\n\texport type $mol_run_error_context = {\n\t\tpid?: number\n\t\tstdout: Buffer | string\n\t\tstderr: Buffer | string\n\t}\n\n\texport class $mol_run_error extends $mol_error_mix<{\n\t\ttimeout_kill?: boolean\n\t\tpid?: number\n\t\tsignal?: NodeJS.Signals | null\n\t\tstatus?: number | null\n\t\tcommand: string\n\t\tdir: string\n\t}> {}\n\n\texport const $mol_run_spawn = (\n\t\t...args: Parameters\n\t) => $node['child_process'].spawn(...args)\n\n\texport const $mol_run_spawn_sync = (\n\t\t...args: Parameters\n\t) => $node['child_process'].spawnSync(...args)\n\n\texport type $mol_run_options = {\n\t\tcommand : readonly string[] | string\n\t\tdir : string\n\t\ttimeout?: number\n\t\tenv?: Record\n\t}\n\n\texport class $mol_run extends $mol_object {\n\n\t\tstatic async_enabled() {\n\t\t\treturn Boolean(this.$.$mol_env()['MOL_RUN_ASYNC'])\n\t\t}\n\n\t\tstatic spawn(options: $mol_run_options) {\n\t\t\tconst sync = ! this.async_enabled() || ! Boolean($mol_wire_auto())\n\t\t\tconst env = options.env ?? this.$.$mol_env()\n\n\t\t\treturn $mol_wire_sync(this).spawn_async( { ...options, sync, env } )\n\t\t}\n\n\t\tstatic spawn_async(\n\t\t\t{ dir, sync, timeout, command, env }: $mol_run_options & { sync?: boolean }\n\t\t) {\n\t\t\tconst args_raw = typeof command === 'string' ? command.split( ' ' ) : command\n\t\t\tconst [ app, ...args ] = args_raw\n\t\t\tconst opts = { shell: true, cwd: dir, env }\n\n\t\t\tconst log_object = {\n\t\t\t\tplace: `${this}.spawn()`,\n\t\t\t\tmessage: 'Run',\n\t\t\t\tcommand: args_raw.join(' ') ,\n\t\t\t\tdir: $node.path.relative( '' , dir ) ,\n\t\t\t}\n\n\t\t\tif (sync) {\n\n\t\t\t\tthis.$.$mol_log3_come({\n\t\t\t\t\thint: 'Run inside fiber',\n\t\t\t\t\t...log_object\n\t\t\t\t})\n\n\t\t\t\tlet error: Error | undefined\n\t\t\t\tlet res\n\n\t\t\t\ttry {\n\t\t\t\t\tres = this.$.$mol_run_spawn_sync(app, args, opts)\n\t\t\t\t\terror = res.error\n\t\t\t\t} catch (err) {\n\t\t\t\t\terror = err as Error\n\t\t\t\t}\n\n\t\t\t\tif (! res || error || res.status) {\n\t\t\t\t\tthrow new $mol_run_error(\n\t\t\t\t\t\tthis.error_message(res),\n\t\t\t\t\t\t{ ...log_object, status: res?.status, signal: res?.signal },\n\t\t\t\t\t\t...(error ? [error] : [])\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\treturn res\n\t\t\t}\n\n\t\t\tlet sub\n\n\t\t\ttry {\n\t\t\t\tsub = this.$.$mol_run_spawn(app, args, {\n\t\t\t\t\t...opts,\n\t\t\t\t\tstdio: [ 'pipe', 'inherit', 'inherit' ],\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tthrow new $mol_run_error(\n\t\t\t\t\tthis.error_message(undefined),\n\t\t\t\t\tlog_object,\n\t\t\t\t\terror as Error\n\t\t\t\t)\n\t\t\t}\n\t\n\t\t\tconst pid = sub.pid ?? 0\n\n\t\t\tthis.$.$mol_log3_come({\n\t\t\t\t...log_object,\n\t\t\t\tpid,\n\t\t\t})\n\t\n\t\t\tlet timeout_kill = false\n\t\t\tlet timer: undefined | ReturnType\n\t\n\t\t\tconst std_data = [] as Buffer[]\n\t\t\tconst error_data = [] as Buffer[]\n\t\n\t\t\tconst add = (std_chunk?: Buffer, error_chunk?: Buffer) => {\n\t\t\t\tif (std_chunk) std_data.push(std_chunk)\n\t\t\t\tif (error_chunk) error_data.push(error_chunk)\n\t\t\t\tif (! timeout) return\n\t\n\t\t\t\tclearTimeout(timer)\n\t\n\t\t\t\ttimer = setTimeout(() => {\n\t\t\t\t\tconst signal = timeout_kill ? 'SIGKILL' : 'SIGTERM'\n\t\t\t\t\ttimeout_kill = true\n\t\t\t\t\tadd()\n\t\t\t\t\tsub.kill(signal)\n\t\t\t\t}, timeout)\n\t\t\t}\n\t\n\t\t\tadd()\n\t\n\t\t\tsub.stdout?.on('data', data => add(data) )\n\t\t\tsub.stderr?.on('data', data => add(undefined, data) )\n\t\n\t\t\tconst result_promise = new Promise<$mol_run_error_context>((done, fail) => {\n\t\t\t\tconst close = (error: Error | null, status: number | null = null, signal: NodeJS.Signals | null = null) => {\n\t\t\t\t\tif (! timer && timeout) return\n\t\n\t\t\t\t\tclearTimeout(timer)\n\t\t\t\t\ttimer = undefined\n\t\n\t\t\t\t\tconst res = {\n\t\t\t\t\t\tpid,\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tget stdout() { return Buffer.concat(std_data) },\n\t\t\t\t\t\tget stderr() { return Buffer.concat(error_data) }\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tif (error || status || timeout_kill) return fail( new $mol_run_error(\n\t\t\t\t\t\tthis.error_message(res) + (timeout_kill ? ', timeout' : ''),\n\t\t\t\t\t\t{ ...log_object, pid, status, signal, timeout_kill },\n\t\t\t\t\t\t...error ? [ error ] : []\n\t\t\t\t\t) )\n\n\t\t\t\t\tthis.$.$mol_log3_done({\n\t\t\t\t\t\t...log_object,\n\t\t\t\t\t\tpid,\n\t\t\t\t\t})\n\t\t\t\n\t\t\t\t\tdone(res)\n\t\t\t\t}\n\t\n\t\t\t\tsub.on('disconnect', () => close(new Error('Disconnected')) )\n\t\t\t\tsub.on('error', err => close(err) )\n\t\t\t\tsub.on('exit', (status, signal) => close(null, status, signal) )\n\t\t\t})\n\t\n\t\t\treturn Object.assign(result_promise, { destructor: () => {\n\t\t\t\tclearTimeout(timer)\n\t\t\t\tsub.kill('SIGKILL')\n\t\t\t} })\n\t\t}\n\n\t\tstatic error_message(res?: $mol_run_error_context) {\n\t\t\treturn res?.stderr.toString() || res?.stdout.toString() || 'Run error'\n\t\t}\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_exec(\n\t\tthis : $ ,\n\t\tdir : string ,\n\t\tcommand : string ,\n\t\t...args : readonly string[]\n\t) {\n\t\treturn this.$mol_run.spawn( { command: [ command, ...args ], dir } )\n\t}\n}\n","namespace $ {\n\t\n\t$.$mol_dom_context = new $node.jsdom.JSDOM( '' , { url : 'https://localhost/' } ).window as any\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_selection extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic focused( next? : Element[], notify?: 'notify' ) : Element[] {\n\t\t\t\n\t\t\tconst parents : Element[] = []\n\t\t\tlet element = next?.[0] ?? $mol_dom_context.document.activeElement\n\t\t\t\n\t\t\twhile( element ) {\n\t\t\t\tparents.push( element )\n\t\t\t\telement = element.parentNode as HTMLElement\n\t\t\t}\n\t\t\t\n\t\t\tif( !next || notify ) return parents\n\t\t\t\n\t\t\tnew $mol_after_tick( ()=> {\n\t\t\t\t\n\t\t\t\tconst element = this.focused()![0] as HTMLElement\n\t\t\t\t\n\t\t\t\tif( element ) element.focus()\n\t\t\t\telse $mol_dom_context.blur()\n\t\t\t\t\n\t\t\t} )\n\n\t\t\treturn parents\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\texport class $mol_wrapper extends $mol_object2 {\n\n\t\tstatic wrap : ( task : ( ... ags : any[] )=> any )=> ( ... ags : any[] )=> any\n\t\t\n\t\tstatic run< Result >( task : ()=> Result ) : Result {\n\t\t\treturn this.func( task )()\n\t\t}\n\t\n\t\tstatic func< Args extends any[] , Result , Host = void >(\n\t\t\tfunc : ( this : Host , ... args : Args )=> Result\n\t\t) : ( this : Host , ... args : Args )=> Result {\n\t\t\treturn this.wrap( func )\n\t\t}\n\n\t\tstatic get class() {\n\n\t\t\treturn < Class extends new ( ... args : any[] )=> any >(\n\t\t\t\tClass : Class\n\t\t\t) => {\n\n\t\t\t\ttype Args = ConstructorParameters< Class >\n\t\t\t\ttype Result = InstanceType< Class >\n\n\t\t\t\tconst construct = ( target : Class , args : Args )=> new Class( ... args )\n\n\t\t\t\tconst handler: ProxyHandler = {\n\t\t\t\t\tconstruct : this.func( construct )\n\t\t\t\t} \n\n\t\t\t\t;(handler as any)[ Symbol.toStringTag ] = Class.name + '#'\n\n\t\t\t\treturn new Proxy( Class , handler )\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t\tstatic get method() {\n\t\t\t\n\t\t\treturn (\n\t\t\t\tobj : object,\n\t\t\t\tname : PropertyKey,\n\t\t\t\tdescr : PropertyDescriptor,\n\t\t\t) => {\n\t\t\t\tdescr.value = this.func( descr.value! )\n\t\t\t\treturn descr\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tstatic get field() {\n\t\t\t\n\t\t\treturn <\n\t\t\t\tHost ,\n\t\t\t\tField extends keyof Host ,\n\t\t\t\tArgs extends any[] ,\n\t\t\t\tResult ,\n\t\t\t>(\n\t\t\t\tobj : Host ,\n\t\t\t\tname : Field ,\n\t\t\t\tdescr : TypedPropertyDescriptor< Result >\n\t\t\t) => {\n\t\t\t\tdescr.get = descr.set = this.func( descr.get! )\n\t\t\t\treturn descr\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_memo extends $mol_wrapper {\n\t\t\n\t\tstatic wrap< This extends object , Value >( task : ( this : This , next? : Value )=> Value ) {\n\n\t\t\tconst store = new WeakMap< This , Value >()\n\n\t\t\tconst fun = function( this : This , next? : Value ) {\n\n\t\t\t\tif( next === undefined && store.has( this ) ) return store.get( this )\n\t\t\t\t\n\t\t\t\tconst val = task.call( this , next ) ?? next\n\t\t\t\t\n\t\t\t\tstore.set( this , val! )\n\t\t\t\t\n\t\t\t\treturn val\n\n\t\t\t}\n\n\t\t\tReflect.defineProperty( fun , 'name' , { value : task.name + ' ' } )\n\n\t\t\treturn fun\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport var $mol_dom = $mol_dom_context\n\t\n}\n","namespace $ {\n\n\texport function $mol_dom_qname( name : string ) {\n\t\treturn name.replace( /\\W/g , '' ).replace( /^(?=\\d+)/ , '_' )\n\t}\n\n}\n","namespace $ {\n\t\n\t/** Run code without state changes */\n\texport function $mol_wire_probe< Value >(\n\t\ttask : ()=> Value, def?: Value\n\t) : Value | undefined {\n\t\t\n\t\tconst warm = $mol_wire_fiber.warm\n\t\t\n\t\ttry {\n\t\t\t$mol_wire_fiber.warm = false\n\t\t\tconst res = task()\n\t\t\tif( res === undefined ) return def\n\t\t\treturn res\n\t\t} finally {\n\t\t\t$mol_wire_fiber.warm = warm\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/**\n\t * Real-time refresh current atom.\n\t * Don't use if possible. May reduce performance.\n\t */\n\texport function $mol_wire_watch() {\n\t\tconst atom = $mol_wire_auto()\n\t\tif( atom instanceof $mol_wire_atom ) {\n\t\t\tatom.watch()\n\t\t} else {\n\t\t\t$mol_fail( new Error( 'Atom is required for watching' ) )\n\t\t}\n\t}\n\t\n}\n","namespace $ { \n\t/**\n\t * Returns closure that returns constant value.\n\t * @example\n\t * const rnd = $mol_const( Math.random() )\n\t */\n\texport function $mol_const< Value >( value : Value ) {\n\t\tconst getter = <{ () : Value , '()' : Value }> ( () => value )\n\t\tgetter['()'] = value\n\t\t;(getter as any)[ Symbol.toStringTag ] = value\n\t\t;(getter as any )[ $mol_dev_format_head ] = ()=> $mol_dev_format_span( {} , '()=> ', $mol_dev_format_auto( value ) )\n\t\treturn getter\n\t}\n}\n","namespace $ {\n\t\n\t/**\n\t * Disable reaping of current subscriber\n\t */\n\texport function $mol_wire_solid() {\n\t\tlet current = $mol_wire_auto() as $mol_wire_fiber< any, any, any >\n\t\tif( current!.temp ) current = current!.host\n\t\tif( current!.reap !== nothing ) {\n\t\t\tcurrent?.sub_on( sub, sub.data.length )\n\t\t}\n\t\tcurrent!.reap = nothing\n\t}\n\t\n\tconst nothing = ()=> {}\n\tconst sub = new $mol_wire_pub_sub\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_attributes (\n\t\tel : Element ,\n\t\tattrs : { [ key : string ] : string|number|boolean|null }\n\t) {\n\n\t\tfor( let name in attrs ) {\n\n\t\t\tlet val = attrs[ name ] as any\n\n\t\t\tif( val === undefined ) {\n\t\t\t\t\n\t\t\t\tcontinue\n\t\t\t\t\n\t\t\t} else if( val === null || val === false ) {\n\n\t\t\t\tif( !el.hasAttribute( name ) ) continue\n\t\t\t\t\n\t\t\t\tel.removeAttribute( name )\n\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tconst str = String( val )\n\t\t\t\tif( el.getAttribute( name ) === str ) continue\n\t\t\t\t\n\t\t\t\tel.setAttribute( name , str )\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_events (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any },\n\t\tpassive = false\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , events[ name ] , { passive } )\n\t\t}\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_styles (\n\t\tel : Element ,\n\t\tstyles : { [ key : string ] : string|number }\n\t) {\n\t\tfor( let name in styles ) {\n\t\t\tlet val = styles[ name ]\n\t\t\t\n\t\t\tconst style = ( el as HTMLElement ).style as any\n\t\t\tconst kebab = ( name : string )=> name.replace( /[A-Z]/g , letter => '-' + letter.toLowerCase() )\n\t\t\t\n\t\t\tif( typeof val === 'number' ) {\n\t\t\t\tstyle.setProperty(kebab(name), `${ val }px`);\n\t\t\t} else {\n\t\t\t\tstyle.setProperty(kebab(name), val);\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_dom_render_children (\n\t\tel : Element | DocumentFragment ,\n\t\tchildNodes : NodeList | Array< Node | string | null >\n\t) {\n\t\tconst node_set = new Set< Node | string | null >( childNodes )\n\t\t\n\t\tlet nextNode : Node | null = el.firstChild\n\t\tfor( let view of childNodes ) {\n\n\t\t\tif( view == null ) continue\n\n\t\t\tif( view instanceof $mol_dom_context.Node ) {\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\tel.appendChild( view )\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif( nextNode == view ) {\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( node_set.has( nextNode ) ) {\n\t\t\t\t\t\t\tel.insertBefore( view , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst nn = nextNode.nextSibling\n\t\t\t\t\t\t\tel.removeChild( nextNode )\n\t\t\t\t\t\t\tnextNode = nn\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\tconst str = String( view )\n\t\t\t\t\tif( nextNode.nodeValue !== str ) nextNode.nodeValue = str\n\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t} else {\n\t\t\t\t\tconst textNode = $mol_dom_context.document.createTextNode( String( view ) )\n\t\t\t\t\tel.insertBefore( textNode , nextNode )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twhile( nextNode ) {\n\t\t\tconst currNode = nextNode\n\t\t\tnextNode = currNode.nextSibling\n\t\t\tel.removeChild( currNode )\n\t\t}\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_fields (\n\t\tel : Element ,\n\t\tfields : { [ key : string ] : any }\n\t) {\n\t\tfor( let key in fields ) {\n\t\t\t\n\t\t\tconst val : any = fields[ key ]\n\t\t\t\n\t\t\tif( val === undefined ) continue\n\t\t\tif( val === (el as any)[ key ] ) continue\n\t\t\t\n\t\t\t(el as any)[ key ] = val\n\t\t}\n\t}\n\n}\n","namespace $ {\n\t\n\t/** Convert a pseudo-synchronous (Suspense API) API to an explicit asynchronous one (for integrating with external systems). */\n\texport function $mol_wire_async< Host extends object >( obj: Host ) {\n\t\t\n\t\tlet fiber: $mol_wire_fiber< any, any, any >\n\t\tconst temp = $mol_wire_task.getter( obj as ( ... args: any[] )=> any )\n\t\t\n\t\treturn new Proxy( obj, {\n\t\t\t\n\t\t\tget( obj, field ) {\n\t\t\t\t\n\t\t\t\tconst val = (obj as any)[ field ]\n\t\t\t\tif( typeof val !== 'function' ) return val\n\t\t\t\t\n\t\t\t\tlet fiber: $mol_wire_fiber< any, any, any >\n\t\t\t\tconst temp = $mol_wire_task.getter( val ) \n\t\t\t\t\n\t\t\t\treturn function $mol_wire_async( this: Host, ... args: any[] ) {\n\t\t\t\t\tfiber?.destructor()\n\t\t\t\t\tfiber = temp( obj, args )\n\t\t\t\t\treturn fiber.async()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t},\n\t\t\t\n\t\t\tapply( obj, self, args ) {\n\t\t\t\tfiber?.destructor()\n\t\t\t\tfiber = temp( self, args )\n\t\t\t\treturn fiber.async()\n\t\t\t},\n\t\t\t\n\t\t} ) as unknown as ObjectOrFunctionResultPromisify\n\t\t\n\t}\n\n\ttype FunctionResultPromisify = Some extends (...args: infer Args) => infer Res\n\t\t? Res extends PromiseLike ? Some : (...args: Args) => Promise\n\t\t: Some\n\n\ttype MethodsResultPromisify = {\n\t\t[K in keyof Host]: FunctionResultPromisify\n\t}\n\n\ttype ObjectOrFunctionResultPromisify = (\n\t\tSome extends (...args: any) => unknown ? FunctionResultPromisify : {}\n\t) & ( Some extends Object ? MethodsResultPromisify : Some )\n\n}\n","namespace $ {\n\n\texport function $mol_style_attach(\n\t\tid : string ,\n\t\ttext : string ,\n\t) {\n\n\t\tconst doc = $mol_dom_context.document\n\t\tif( !doc ) return null\n\t\t\n\t\tconst elid = `$mol_style_attach:${id}`\n\t\t\n\t\tlet el = doc.getElementById( elid ) as HTMLStyleElement\n\t\tif( !el ) {\n\t\t\tel = doc.createElement('style')\n\t\t\tel.id = elid\n\t\t\tdoc.head.appendChild( el )\n\t\t}\n\t\tif( el.innerHTML != text ) el.innerHTML = text\n\t\t\n\t\treturn el\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_decor< Value > {\n\t\t\n\t\tconstructor(\n\t\t\treadonly value : Value\n\t\t) {}\n\n\t\tprefix() { return '' }\n\t\tvalueOf() { return this.value }\n\t\tpostfix() { return '' }\n\n\t\ttoString(){\n\t\t\treturn `${ this.prefix() }${ this.valueOf() }${ this.postfix() }`\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\t\n\texport type $mol_style_unit_length =\n\t| '%'\n\t| 'px' | 'cm' | 'mm' | 'Q' | 'in' | 'pc' | 'pt'\n\t| 'cap' | 'ch' | 'em' | 'rem' | 'ex' | 'ic' | 'lh' | 'rlh'\n\t| 'vh' | 'vw' | 'vi' | 'vb' | 'vmin' | 'vmax'\n\t\n\texport type $mol_style_unit_angle = 'deg' | 'rad' | 'grad' | 'turn'\n\t\n\texport type $mol_style_unit_time = 's' | 'ms'\n\n\texport type $mol_style_unit_any = $mol_style_unit_length | $mol_style_unit_angle | $mol_style_unit_time\n\n\texport type $mol_style_unit_str< Quanity extends $mol_style_unit_any = $mol_style_unit_any> = `${number}${Quanity}`\n\n\t/**\n\t * CSS Units\n\t * @see https://mol.hyoo.ru/#!section=docs/=xwq9q5_f966fg\n\t */\n\texport class $mol_style_unit<\n\t\tLiteral extends $mol_style_unit_any\n\t> extends $mol_decor< number > {\n\n\t\tconstructor(\n\t\t\tvalue : number,\n\t\t\treadonly literal : Literal,\n\t\t) {\n\t\t\tsuper( value )\n\t\t}\n\n\t\tpostfix() {\n\t\t\treturn this.literal\n\t\t}\n\n\t\tstatic per( value : number ) { return `${value}%` as const }\n\t\tstatic px( value : number ) { return `${ value }px` as const }\n\t\tstatic mm( value : number ) { return `${value}mm` as const }\n\t\tstatic cm( value : number ) { return `${value}cm` as const }\n\t\tstatic Q( value : number ) { return `${value}Q` as const }\n\t\tstatic in( value : number ) { return `${value}in` as const }\n\t\tstatic pc( value : number ) { return `${value}pc` as const }\n\t\tstatic pt( value : number ) { return `${value}pt` as const }\n\t\tstatic cap( value : number ) { return `${value}cap` as const }\n\t\tstatic ch( value : number ) { return `${value}ch` as const }\n\t\tstatic em( value : number ) { return `${value}em` as const }\n\t\tstatic rem( value : number ) { return `${value}rem` as const }\n\t\tstatic ex( value : number ) { return `${value}ex` as const }\n\t\tstatic ic( value : number ) { return `${value}ic` as const }\n\t\tstatic lh( value : number ) { return `${value}lh` as const }\n\t\tstatic rlh( value : number ) { return `${value}rlh` as const }\n\t\tstatic vh( value : number ) { return `${value}vh` as const }\n\t\tstatic vw( value : number ) { return `${value}vw` as const }\n\t\tstatic vi( value : number ) { return `${value}vi` as const }\n\t\tstatic vb( value : number ) { return `${value}vb` as const }\n\t\tstatic vmin( value : number ) { return `${value}vmin` as const }\n\t\tstatic vmax( value : number ) { return `${value}vmax` as const }\n\t\t\n\t\tstatic deg( value : number ) { return `${value}deg` as const }\n\t\tstatic rad( value : number ) { return `${value}rad` as const }\n\t\tstatic grad( value : number ) { return `${value}grad` as const }\n\t\tstatic turn( value : number ) { return `${value}turn` as const }\n\n\t\tstatic s( value : number ) { return `${value}s` as const }\n\t\tstatic ms( value : number ) { return `${value}ms` as const }\n\t\n\t}\n\n}\n","namespace $ {\n\n\texport type $mol_style_func_name =\n\t| 'calc'\n\t| 'hsla'\n\t| 'rgba'\n\t| 'var'\n\t| 'clamp'\n\t| 'scale'\n\t| 'cubic-bezier'\n\t| 'linear'\n\t| 'steps'\n\t| $mol_style_func_image\n\t| $mol_style_func_filter\n\t\n\texport type $mol_style_func_image =\n\t| 'url'\n\t| 'linear-gradient'\n\t| 'radial-gradient'\n\t| 'conic-gradient'\n\t\n\texport type $mol_style_func_filter =\n\t| 'blur'\n\t| 'brightness'\n\t| 'contrast'\n\t| 'drop-shadow'\n\t| 'grayscale'\n\t| 'hue-rotate'\n\t| 'invert'\n\t| 'opacity'\n\t| 'sepia'\n\t| 'saturate'\n\n\tconst { per } = $mol_style_unit\n\t\n\t/**\n\t * CSS Functions\n\t * @see https://mol.hyoo.ru/#!section=docs/=xwq9q5_f966fg\n\t */\n\texport class $mol_style_func<\n\t\tName extends $mol_style_func_name ,\n\t\tValue = unknown,\n\t> extends $mol_decor< Value > {\n\n\t\tconstructor(\n\t\t\treadonly name : Name,\n\t\t\tvalue : Value,\n\t\t) {\n\t\t\tsuper( value )\n\t\t}\n\n\t\tprefix() { return this.name + '(' }\n\t\tpostfix() { return ')' }\n\n\t\tstatic linear_gradient< Value >( value : Value ) {\n\t\t\treturn new $mol_style_func( 'linear-gradient' , value )\n\t\t}\n\n\t\tstatic calc< Value >( value : Value ) {\n\t\t\treturn new $mol_style_func( 'calc' , value )\n\t\t}\n\n\t\tstatic vary< Name extends string, Value extends string >( name : Name, defaultValue? : Value ) {\n\t\t\treturn new $mol_style_func( 'var' , defaultValue ? [name, defaultValue] : name )\n\t\t}\n\n\t\tstatic url< Href extends string >( href : Href ) {\n\t\t\treturn new $mol_style_func( 'url' , JSON.stringify( href ) )\n\t\t}\n\n\t\tstatic hsla(\n\t\t\thue: number,\n\t\t\tsaturation: number,\n\t\t\tlightness: number,\n\t\t\talpha: number,\n\t\t) {\n\t\t\treturn new $mol_style_func(\n\t\t\t\t'hsla',\n\t\t\t\t[ hue , per( saturation ) , per( lightness ) , alpha ],\n\t\t\t)\n\t\t}\n\t\n\t\tstatic clamp(\n\t\t\tmin: $mol_style_unit_str< any >,\n\t\t\tmid: $mol_style_unit_str< any >,\n\t\t\tmax: $mol_style_unit_str< any >,\n\t\t) {\n\t\t\treturn new $mol_style_func(\n\t\t\t\t'clamp',\n\t\t\t\t[ min, mid, max ],\n\t\t\t)\n\t\t}\n\t\n\t\tstatic rgba(\n\t\t\tred: number,\n\t\t\tgreen: number,\n\t\t\tblue: number,\n\t\t\talpha: number,\n\t\t) {\n\t\t\treturn new $mol_style_func(\n\t\t\t\t'rgba',\n\t\t\t\t[ red , green , blue , alpha ],\n\t\t\t)\n\t\t}\n\t\n\t\tstatic scale(\n\t\t\tzoom: number,\n\t\t) {\n\t\t\treturn new $mol_style_func( 'scale', [ zoom ] )\n\t\t}\n\t\t\n\t\tstatic linear(\n\t\t\t...breakpoints : Array]>\n\t\t){\n\t\t\treturn new $mol_style_func(\n\t\t\t\t\"linear\",\n\t\t\t\tbreakpoints.map((e) =>\n\t\t\t\t\tArray.isArray(e)\n\t\t\t\t\t\t? String(e[0]) +\n\t\t\t\t\t\t \" \" +\n\t\t\t\t\t\t (typeof e[1] === \"number\" ? e[1] + \"%\" : e[1].toString())\n\t\t\t\t\t\t: String(e)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\t\n\t\tstatic cubic_bezier(\n\t\t\tx1: number,\n\t\t\ty1: number,\n\t\t\tx2: number,\n\t\t\ty2: number\n\t\t){\n\t\t\treturn new $mol_style_func( 'cubic-bezier', [ x1, y1, x2, y2 ]);\n\t\t}\n\t\t\n\t\tstatic steps(value: number, step_position: 'jump-start' | 'jump-end' | 'jump-none' | 'jump-both' | 'start' | 'end'){\n\t\t\treturn new $mol_style_func( 'steps', [ value, step_position ] )\n\t\t}\n\t\t\n\t\tstatic blur(value?: $mol_style_unit_str<$mol_style_unit_length>){\n\t\t\treturn new $mol_style_func( 'blur', value ?? \"\" );\n\t\t}\n\t\t\n\t\tstatic brightness(value?: number | $mol_style_unit_str<'%'>){\n\t\t\treturn new $mol_style_func( 'brightness', value ?? \"\" );\n\t\t}\n\t\t\n\t\tstatic contrast(value?: number | $mol_style_unit_str<'%'>){\n\t\t\treturn new $mol_style_func( 'contrast', value ?? \"\" );\n\t\t}\n\t\t\n\t\tstatic drop_shadow(\n\t\t\tcolor: $mol_style_properties_color,\n\t\t\tx_offset: $mol_style_unit_str<$mol_style_unit_length>,\n\t\t\ty_offset: $mol_style_unit_str<$mol_style_unit_length>,\n\t\t\tblur_radius?: $mol_style_unit_str<$mol_style_unit_length>\n\t\t) {\n\t\t\treturn new $mol_style_func(\n\t\t\t\t\"drop-shadow\",\n\t\t\t\tblur_radius\n\t\t\t\t\t? [color, x_offset, y_offset, blur_radius]\n\t\t\t\t\t: [color, x_offset, y_offset]\n\t\t\t);\n\t\t}\n\t\t\n\t\tstatic grayscale(value?: number | $mol_style_unit_str<'%'>){\n\t\t\treturn new $mol_style_func( 'grayscale', value ?? \"\" );\n\t\t}\n\t\t\n\t\tstatic hue_rotate(value?: 0 | $mol_style_unit_str<$mol_style_unit_angle>){\n\t\t\treturn new $mol_style_func( 'hue-rotate', value ?? \"\")\n\t\t}\n\t\t\n\t\tstatic invert(value?: number | $mol_style_unit_str<'%'>){\n\t\t\treturn new $mol_style_func( 'invert', value ?? \"\" );\n\t\t}\n\t\t\n\t\tstatic opacity(value?: number | $mol_style_unit_str<'%'>){\n\t\t\treturn new $mol_style_func( 'opacity', value ?? \"\" );\n\t\t}\n\t\t\n\t\tstatic sepia(value?: number | $mol_style_unit_str<'%'>){\n\t\t\treturn new $mol_style_func( 'sepia', value ?? \"\" );\n\t\t}\n\t\t\n\t\tstatic saturate(value?: number | $mol_style_unit_str<'%'>){\n\t\t\treturn new $mol_style_func( 'saturate', value ?? \"\" );\n\t\t}\n\t\n\t}\n\n}\n","namespace $ {\n\t\n\t/** Create record of CSS variables. */\n\texport function $mol_style_prop< Keys extends string[] >(\n\t\tprefix: string ,\n\t\tkeys: Keys\n\t) {\n\t\t\n\t\tconst record = keys.reduce( ( rec , key: Keys[number] )=> {\n\t\t\t\n\t\t\trec[ key ] = $mol_style_func.vary( `--${ prefix }_${ key }` )\n\t\t\treturn rec\n\t\t\t\n\t\t}, {} as Record< Keys[number], $mol_style_func< 'var' > > )\n\t\t\n\t\treturn record\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\t/**\n\t * Theme css variables\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_textarea_demo\n\t */\t\n\texport const $mol_theme = $mol_style_prop(\n\t\t'mol_theme',\n\t\t[\n\t\t\t'back',\n\t\t\t'hover',\n\t\t\t'card',\n\t\t\t'current',\n\t\t\t'special',\n\t\t\t'text',\n\t\t\t'control',\n\t\t\t'shade',\n\t\t\t'line',\n\t\t\t'focus',\n\t\t\t'field',\n\t\t\t'image',\n\t\t] as const\n\t)\n\n}\n","namespace $ { $mol_style_attach( \"mol/theme/theme.css\",\n \":root {\\n\\t--mol_theme_hue: 210deg;\\n\\t--mol_theme_hue_spread: 90deg;\\n}\\n\\n:where([mol_theme]) {\\n\\tcolor: var(--mol_theme_text);\\n\\tfill: var(--mol_theme_text);\\n\\tbackground-color: var(--mol_theme_back);\\n}\\n\\t\\n:root, [mol_theme=\\\"$mol_theme_dark\\\"], :where([mol_theme=\\\"$mol_theme_dark\\\"]) [mol_theme] {\\n\\n\\t--mol_theme_luma: -1;\\n\\t--mol_theme_image: invert(1) hue-rotate( 180deg );\\n\\n\\t--mol_theme_back: hsl( var(--mol_theme_hue), 20%, 10% );\\n\\t--mol_theme_card: hsl( var(--mol_theme_hue), 50%, 20%, .25 );\\n\\t--mol_theme_field: hsl( var(--mol_theme_hue), 50%, 8%, .25 );\\n\\t--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );\\n\\t\\n\\t--mol_theme_text: hsl( var(--mol_theme_hue), 0%, 80% );\\n\\t--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 60%, 1 );\\n\\t--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .25 );\\n\\t--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, 65% );\\n\\t\\n\\t--mol_theme_control: hsl( var(--mol_theme_hue), 60%, 65% );\\n\\t--mol_theme_current: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 60%, 65% );\\n\\t--mol_theme_special: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 60%, 65% );\\n\\n\\t/* --mol_theme_back: oklch( 20% .03 var(--mol_theme_hue) );\\n\\t--mol_theme_card: oklch( 35% .05 var(--mol_theme_hue) / .25 );\\n\\t--mol_theme_field: oklch( 0% 0 var(--mol_theme_hue) / .25 );\\n\\t--mol_theme_hover: oklch( 70% 0 var(--mol_theme_hue) / .1 );\\n\\t\\n\\t--mol_theme_text: oklch( 80% 0 var(--mol_theme_hue) );\\n\\t--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );\\n\\t--mol_theme_line: oklch( 50% 0 var(--mol_theme_hue) / .2 );\\n\\t--mol_theme_focus: oklch( 80% .2 calc( var(--mol_theme_hue) + 120deg ) );\\n\\t\\n\\t--mol_theme_control: oklch( 70% .1 var(--mol_theme_hue) );\\n\\t--mol_theme_current: oklch( 80% .2 calc( var(--mol_theme_hue) - 60deg ) );\\n\\t--mol_theme_special: oklch( 80% .3 calc( var(--mol_theme_hue) + 60deg ) ); */\\n\\n}\\n\\n[mol_theme=\\\"$mol_theme_light\\\"], :where([mol_theme=\\\"$mol_theme_light\\\"]) [mol_theme] {\\n\\t\\n\\t--mol_theme_luma: 1;\\n\\t--mol_theme_image: none;\\n\\t\\n\\t--mol_theme_back: hsl( var(--mol_theme_hue), 20%, 92% );\\n\\t--mol_theme_card: hsl( var(--mol_theme_hue), 50%, 100%, .5 );\\n\\t--mol_theme_field: hsl( var(--mol_theme_hue), 50%, 100%, .75 );\\n\\t--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );\\n\\t\\n\\t--mol_theme_text: hsl( var(--mol_theme_hue), 0%, 0% );\\n\\t--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 40%, 1 );\\n\\t--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .25 );\\n\\t--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, 40% );\\n\\t\\n\\t--mol_theme_control: hsl( var(--mol_theme_hue), 80%, 30% );\\n\\t--mol_theme_current: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 80%, 30% );\\n\\t--mol_theme_special: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 80%, 30% );\\n\\t\\n\\t/* --mol_theme_back: oklch( 93% .01 var(--mol_theme_hue) );\\n\\t--mol_theme_card: oklch( 100% .02 var(--mol_theme_hue) / .25 );\\n\\t--mol_theme_field: oklch( 100% 0 var(--mol_theme_hue) / .5 );\\n\\t--mol_theme_hover: oklch( 70% 0 var(--mol_theme_hue) / .1 );\\n\\t\\n\\t--mol_theme_text: oklch( 20% 0 var(--mol_theme_hue) );\\n\\t--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );\\n\\t--mol_theme_line: oklch( 70% 0 var(--mol_theme_hue) / .2 );\\n\\t--mol_theme_focus: oklch( 20% .8 calc( var(--mol_theme_hue) + 120deg ) );\\n\\t\\n\\t--mol_theme_control: oklch( 45% .25 var(--mol_theme_hue) );\\n\\t--mol_theme_current: oklch( 45% .5 calc( var(--mol_theme_hue) - 60deg ) );\\n\\t--mol_theme_special: oklch( 45% .5 calc( var(--mol_theme_hue) + 60deg ) ); */\\n\\n}\\n\\n:where( :root, [mol_theme=\\\"$mol_theme_dark\\\"] ) [mol_theme=\\\"$mol_theme_base\\\"] {\\n\\t--mol_theme_back: hsl( var(--mol_theme_hue), 50%, 30% );\\n\\t--mol_theme_card: hsl( var(--mol_theme_hue), 40%, 20%, .25 );\\n\\t/* --mol_theme_back: oklch( 25% .05 var(--mol_theme_hue) );\\n\\t--mol_theme_card: oklch( 35% .1 var(--mol_theme_hue) / .25 ); */\\n}\\n:where( [mol_theme=\\\"$mol_theme_light\\\"] ) [mol_theme=\\\"$mol_theme_base\\\"] {\\n\\t--mol_theme_back: hsl( var(--mol_theme_hue), 50%, 80% );\\n\\t--mol_theme_card: hsl( var(--mol_theme_hue), 80%, 95%, .25 );\\n\\t/* --mol_theme_back: oklch( 95% .02 var(--mol_theme_hue) );\\n\\t--mol_theme_card: oklch( 80% .05 var(--mol_theme_hue) / .25 ); */\\n}\\n\\n:where( :root, [mol_theme=\\\"$mol_theme_dark\\\"] ) [mol_theme=\\\"$mol_theme_accent\\\"] {\\n\\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + 180deg ), 90%, 30% );\\n\\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + 180deg ), 80%, 20%, .25 );\\n\\t/* --mol_theme_back: oklch( 40% .2 calc( var(--mol_theme_hue) + 120deg ) );\\n\\t--mol_theme_card: oklch( 50% .3 calc( var(--mol_theme_hue) + 120deg ) / .25 ); */\\n}\\n:where( [mol_theme=\\\"$mol_theme_light\\\"] ) [mol_theme=\\\"$mol_theme_accent\\\"] {\\n\\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + 180deg ), 90%, 75% );\\n\\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + 180deg ), 80%, 90%, .25 );\\n\\t/* --mol_theme_back: oklch( 90% .03 calc( var(--mol_theme_hue) + 120deg ) );\\n\\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) + 120deg ) / .25 ); */\\n}\\n\\n:where( :root, [mol_theme=\\\"$mol_theme_dark\\\"] ) [mol_theme=\\\"$mol_theme_current\\\"] {\\n\\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 50%, 30% );\\n\\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 40%, 20%, .25 );\\n\\t/* --mol_theme_back: oklch( 25% .05 calc( var(--mol_theme_hue) - 60deg ) );\\n\\t--mol_theme_card: oklch( 35% .1 calc( var(--mol_theme_hue) - 60deg ) / .25 ); */\\n}\\n:where( [mol_theme=\\\"$mol_theme_light\\\"] ) [mol_theme=\\\"$mol_theme_current\\\"] {\\n\\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 50%, 92% );\\n\\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 80%, 100%, .5 );\\n\\t/* --mol_theme_back: oklch( 95% .02 calc( var(--mol_theme_hue) - 60deg ) );\\n\\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) - 60deg ) / .25 ); */\\n}\\n\\n:where( :root, [mol_theme=\\\"$mol_theme_dark\\\"] ) [mol_theme=\\\"$mol_theme_special\\\"] {\\n\\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 50%, 30% );\\n\\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 40%, 20%, .25 );\\n\\t/* --mol_theme_back: oklch( 25% .05 calc( var(--mol_theme_hue) + 60deg ) );\\n\\t--mol_theme_card: oklch( 35% .1 calc( var(--mol_theme_hue) + 60deg ) / .25 ); */\\n}\\n:where( [mol_theme=\\\"$mol_theme_light\\\"] ) [mol_theme=\\\"$mol_theme_special\\\"] {\\n\\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 50%, 92% );\\n\\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 80%, 100%, .5 );\\n\\t/* --mol_theme_back: oklch( 95% .02 calc( var(--mol_theme_hue) + 60deg ) );\\n\\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) + 60deg ) / .25 ); */\\n}\\n\"\n) }","namespace $ {\n\n\t/**\n\t * Gap in CSS\n\t * @see https://page.hyoo.ru/#!=msdb74_bm7nsq\n\t */\n\texport let $mol_gap = $mol_style_prop(\n\t\t'mol_gap',\n\t\t[\n\t\t\t'block',\n\t\t\t'text',\n\t\t\t'round',\n\t\t\t'space',\n\t\t\t'blur',\n\t\t] as const\n\t)\n\n}\n","namespace $ { $mol_style_attach( \"mol/gap/gap.css\",\n \":root {\\n\\t--mol_gap_block: .75rem;\\n\\t--mol_gap_text: .5rem .75rem;\\n\\t--mol_gap_round: .25rem;\\n\\t--mol_gap_space: .25rem;\\n\\t--mol_gap_blur: .5rem;\\n}\\n\"\n) }","namespace $ {\n\n\texport type $mol_view_content = $mol_view|Node|string|number|boolean|null\n\t\n\texport function $mol_view_visible_width() {\n\t\treturn $mol_window.size().width\n\t}\n\t\n\texport function $mol_view_visible_height() {\n\t\treturn $mol_window.size().height\n\t}\n\t\n\texport function $mol_view_state_key( suffix : string ) {\n\t\treturn suffix\n\t}\n\t\n\t/**\n\t * The base class for all visual components. It provides the infrastructure for reactive lazy rendering, handling exceptions.\n\t * @see https://mol.hyoo.ru/#!section=docs/=vv2nig_s5zr0f\n\t */\n\t/// Reactive statefull lazy ViewModel\n\texport class $mol_view extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic Root< This extends typeof $mol_view >( this : This , id: number ) {\n\t\t\treturn new this as InstanceType< This >\n\t\t}\n\n\t\t@ $mol_mem\n\t\tautorun() {\n\t\t\ttry {\n\t\t\t\tthis.dom_tree()\n\t\t\t\tdocument.title = this.title()\n\t\t\t} catch( error ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t}\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic autobind() {\n\t\t\t\n\t\t\tconst nodes = $mol_dom_context.document.querySelectorAll( '[mol_view_root]:not([mol_view_root=\"\"])' )\n\t\t\t\n\t\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\n\t\t\t\tconst name = nodes.item( i ).getAttribute( 'mol_view_root' )!\n\t\t\t\t\n\t\t\t\tconst View = ($ as any)[ name ] as typeof $mol_view\n\t\t\t\tif( !View ) {\n\t\t\t\t\tconsole.error( `Can not attach view. Class not found: ${ name }` )\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst view = View.Root( i )\n\t\t\t\tview.dom_node( nodes.item( i ) )\n\t\t\t\tview.autorun()\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\ttitle() {\n\t\t\treturn this.toString().match( /.*\\.(\\w+)/ )?.[1] ?? this.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tfocused( next?: boolean ) {\n\t\t\tlet node = this.dom_node()\n\t\t\tconst value = $mol_view_selection.focused( next === undefined ? undefined : ( next ? [ node ] : [] ) )\n\t\t\treturn value.indexOf( node ) !== -1\n\t\t}\n\t\t\n\t\tstate_key( suffix = '' ) {\n\t\t\treturn this.$.$mol_view_state_key( suffix )\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\t@ $mol_memo.method\n\t\tdom_name() {\n\t\t\treturn $mol_dom_qname( this.constructor.toString() ) || 'div'\n\t\t}\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tdom_name_space() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tsub() {\n\t\t\treturn [] as readonly $mol_view_content[]\n\t\t}\n\t\t\n\t\t/// Visible sub views with defined ambient context\n\t\t/// Render all by default\n\t\tsub_visible() {\n\t\t\treturn this.sub()\n\t\t}\n\t\t\n\t\t/// Minimal width that used for lazy rendering\n\t\t@ $mol_mem\n\t\tminimal_width() {\n\t\t\t\n\t\t\tlet min = 0\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tconst sub = this.sub()\n\t\t\t\tif( !sub ) return 0\n\t\t\t\t\n\t\t\t\tsub.forEach( view => {\n\t\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\t\tmin = Math.max( min , view.minimal_width() )\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t\n\t\t\t} catch( error: any ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\treturn 24\n\t\t\t}\n\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\tmaximal_width() {\n\t\t\treturn this.minimal_width()\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\t\t\t\n\t\t\tlet min = 0\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tfor( const view of this.sub() ?? [] ) {\n\n\t\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\t\tmin = Math.max( min , view.minimal_height() )\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t \n\t\t\t} catch( error: any ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\treturn 24\n\t\t\t}\n\n\t\t\treturn min\n\t\t}\n\n\t\tstatic watchers = new Set< $mol_view >()\n\n\t\t@ $mol_mem\n\t\tview_rect() {\n\t\t\tif( $mol_wire_probe( ()=> this.view_rect() ) === undefined ) {\n\t\t\t\t$mol_wire_watch()\n\t\t\t\treturn null // don't touch DOM to prevent instant reflow\n\t\t\t} else {\n\t\t\t\tconst { width, height, left, right, top, bottom } = this.dom_node().getBoundingClientRect()\n\t\t\t\treturn { width, height, left, right, top, bottom } // pick to optimize compare\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_memo.method\n\t\tdom_id() {\n\t\t\treturn this.toString().replace( //g, ')' ).replaceAll( /\"/g, \"'\" )\n\t\t}\n\t\n\t\tdom_node_external( next?: Element) {\n\t\t\tconst node = next ?? $mol_dom_context.document.createElementNS( this.dom_name_space() , this.dom_name() )\n\n\t\t\tconst id = this.dom_id()\n\t\t\tnode.setAttribute( 'id' , id )\n\t\t\tnode.toString = $mol_const( '<#' + id + '>' )\n\n\t\t\treturn node\n\t\t}\n\n\t\t@ $mol_mem\n\t\tdom_node( next? : Element ) {\n\t\t\t$mol_wire_solid()\n\t\t\tconst node = this.dom_node_external( next )\n\t\t\t$mol_dom_render_attributes( node , this.attr_static() )\n\t\t\t\n\t\t\tconst events = this.event_async()\n\t\t\t$mol_dom_render_events(node, events)\n\n\t\t\treturn node\n\t\t}\n\n\t\t@ $mol_mem\n\t\tdom_final() {\n\t\t\t\n\t\t\tthis.render()\n\t\t\t\n\t\t\tconst sub = this.sub_visible()\n\t\t\tif( !sub ) return\n\t\t\t\n\t\t\tfor( const el of sub ) {\n\t\t\t\tif( el && typeof el === 'object' && 'dom_final' in el ) {\n\t\t\t\t\tel['dom_final']()\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn this.dom_node()\n\t\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_tree( next? : Element ) : Element {\n\t\t\tconst node = this.dom_node( next )\n\t\t\t\n\t\t\trender: try {\n\n\t\t\t\t$mol_dom_render_attributes( node , { mol_view_error : null } )\n\n\t\t\t\ttry {\n\t\t\t\t\n\t\t\t\t\tthis.render()\n\t\t\t\t\t\n\t\t\t\t} finally {\n\t\t\t\t\t\n\t\t\t\t\tfor( let plugin of this.plugins() ) {\n\t\t\t\t\t\tif( plugin instanceof $mol_plugin ) {\n\t\t\t\t\t\t\tplugin.dom_tree()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} catch( error: any ) {\n\t\t\t\t\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\tconst mol_view_error = $mol_promise_like(error) ? 'Promise' : error.name || error.constructor.name\n\t\t\t\t$mol_dom_render_attributes( node , { mol_view_error } )\n\t\t\t\t\n\t\t\t\tif( $mol_promise_like( error ) ) break render\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tconst message = error.message || error\n\t\t\t\t\t;( node as HTMLElement ).innerText = message.replace( /^|$/mg, '\\xA0\\xA0' )\n\t\t\t\t} catch {}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\ttry {\n\t\t\t\tthis.auto()\n\t\t\t} catch( error ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t}\n\t\t\t\t\n\t\t\treturn node\n\t\t}\n\n\t\t@ $mol_mem\n\t\tdom_node_actual() {\n\t\t\tconst node = this.dom_node()\n\n\t\t\t$mol_dom_render_styles( node, this.style_size() )\n\n\t\t\tconst attr = this.attr()\n\t\t\tconst style = this.style()\n\n\t\t\t$mol_dom_render_attributes( node , attr )\n\t\t\t$mol_dom_render_styles( node , style )\n\n\t\t\treturn node\n\t\t}\n\t\t\n\t\tauto() {\n\t\t\treturn null as any\n\t\t}\n\n\t\t@ $mol_mem\n\t\trender() {\n\n\t\t\tconst node = this.dom_node_actual()\n\n\t\t\tconst sub = this.sub_visible()\n\t\t\tif( !sub ) return\n\t\t\t\n\t\t\tconst nodes = sub.map( child => {\n\t\t\t\tif( child == null ) return null\n\t\t\t\treturn ( child instanceof $mol_view )\n\t\t\t\t\t? child.dom_node()\n\t\t\t\t\t: child instanceof $mol_dom_context.Node\n\t\t\t\t\t? child\n\t\t\t\t\t: String( child )\n\t\t\t})\n\t\t\t\n\t\t\t$mol_dom_render_children( node , nodes )\n\n\t\t\tfor( const el of sub ) if( el && typeof el === 'object' && 'dom_tree' in el ) el['dom_tree']()\n\n\t\t\t$mol_dom_render_fields( node , this.field() )\n\t\t\t\n\t\t}\n\n\t\t@ $mol_memo.method\n\t\tstatic view_classes() {\n\t\t\tconst proto = this.prototype\n\t\t\t\n\t\t\tlet current = proto\n\t\t\tconst classes = [] as ( typeof $mol_view )[]\n\t\t\t\n\t\t\twhile( current ) {\n\t\t\t\tif( current.constructor.name !== classes.at(-1)?.name ) {\n\t\t\t\t\tclasses.push( current.constructor as typeof $mol_view )\n\t\t\t\t}\n\t\t\t\tif(!( current instanceof $mol_view )) break\n\t\t\t\tcurrent = Object.getPrototypeOf( current )\n\t\t\t}\n\t\t\t\n\t\t\treturn classes\n\t\t}\n\t\t\n\t\tstatic _view_names?: Map< string, string[] >\n\t\tstatic view_names( suffix: string ) {\n\t\t\t\n\t\t\tlet cache = Reflect.getOwnPropertyDescriptor( this, '_view_names' )?.value\n\t\t\tif( !cache ) cache = this._view_names = new Map\n\t\t\t\n\t\t\tconst cached = cache.get( suffix )\n\t\t\tif( cached ) return cached\n\t\t\t\n\t\t\tconst names = [] as string[]\n\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\n\t\t\tfor( const Class of this.view_classes() ) {\n\t\t\t\tif( suffix in Class.prototype ) names.push( this.$.$mol_func_name( Class ) + suffix2 )\n\t\t\t\telse break\n\t\t\t}\n\t\t\t\n\t\t\tcache.set( suffix, names )\n\t\t\treturn names\n\t\t}\n\t\t\n\t\t@ $mol_memo.method\n\t\tview_names_owned() {\n\t\t\tconst names = [] as string[]\n\t\t\tlet owner = $mol_owning_get( this ) as $mol_wire_fiber< any, any[], any >\n\n\t\t\tif(!( owner?.host instanceof $mol_view )) return names\n\n\t\t\tconst suffix = owner.task.name.trim()\n\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\n\t\t\tnames.push( ... ( owner.host.constructor as typeof $mol_view ).view_names( suffix ) )\n\t\t\t\n\t\t\tfor( let prefix of owner.host.view_names_owned() ) {\n\t\t\t\tnames.push( prefix + suffix2 )\n\t\t\t}\n\t\t\t\n\t\t\treturn names\n\t\t}\n\n\t\t@ $mol_memo.method\n\t\tview_names() {\n\t\t\tconst names = new Set< string >()\n\t\t\t\n\t\t\tfor( let name of this.view_names_owned() ) names.add( name )\n\n\t\t\tfor( let Class of ( this.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\tconst name = this.$.$mol_func_name( Class )\n\t\t\t\tif( name ) names.add( name )\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\ttheme( next = null as null | string ) {\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tattr_static() : { [ key : string ] : string|number|boolean|null } {\n\t\t\tlet attrs : any = {}\n\t\t\t\n\t\t\tfor( let name of this.view_names() ) attrs[ name.replace( /\\$/g , '' ).replace( /^(?=\\d)/ , '_' ).toLowerCase() ] = ''\n\t\t\t\n\t\t\treturn attrs\n\t\t}\n\t\t\n\t\tattr() {\n\t\t\treturn {\n\t\t\t\tmol_theme: this.theme() ?? undefined,\n\t\t\t} as {}\n\t\t}\n\t\t\n\t\tstyle_size() {\n\t\t\treturn {\n\t\t\t\tminHeight: this.minimal_height(),\n\t\t\t\tminWidth: this.minimal_width(),\n\t\t\t} as {\n\t\t\t\t[key: string]: string | number;\n\t\t\t}\n\t\t}\n\t\t\n\t\tstyle() : { [ key : string ] : string|number } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tfield() : { [ key : string ] : any } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tevent_async() {\n\t\t\treturn { ... $mol_wire_async(this.event()) }\n\t\t}\n\n\t\tplugins() {\n\t\t\treturn [] as readonly $mol_view[]\n\t\t}\n\t\t\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_span( {} ,\n\t\t\t\t$mol_dev_format_native( this ) ,\n\t\t\t\t// $mol_dev_format_shade( '/' ) ,\n\t\t\t\t// $mol_dev_format_auto( $mol_wire_cache( this ).sub().cache ) ,\n\t\t\t)\n\t\t}\n\n\t\t/** Deep search view by predicate. */\n\t\t*view_find(\n\t\t\tcheck: ( path : $mol_view, text?: string )=> boolean,\n\t\t\tpath = [] as $mol_view[],\n\t\t): Generator< $mol_view[] > {\n\n\t\t\tif( check( this ) ) return yield [ ... path, this ]\n\t\t\t\n\t\t\ttry {\n\t\t\t\tfor( const item of this.sub() ) {\n\t\t\t\t\tif( item instanceof $mol_view ) {\n\t\t\t\t\t\tyield* item.view_find( check, [ ... path, this ] )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch( error: unknown ) {\n\t\t\t\tif( $mol_promise_like( error ) ) $mol_fail_hidden( error )\n\t\t\t\t$mol_fail_log( error )\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\t/** Renders path of views to DOM. */\n\t\tforce_render(\n\t\t\tpath : Set< $mol_view >,\n\t\t) {\n\n\t\t\tconst kids = this.sub()\n\n\t\t\tconst index = kids.findIndex( item => {\n\t\t\t\tif( item instanceof $mol_view ) {\n\t\t\t\t\treturn path.has( item )\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tif( index >= 0 ) {\n\t\t\t\t( kids[ index ] as $mol_view ).force_render( path )\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\t/** Renders view to DOM and scroll to it. */\n\t\tensure_visible( view: $mol_view, align: ScrollLogicalPosition = \"start\" ) {\n\t\t\t\n\t\t\tconst path = this.view_find( v => v === view ).next().value\n\t\t\tthis.force_render( new Set( path ) )\n\t\t\t\n\t\t\ttry {\n\t\t\t\tthis.dom_final()\n\t\t\t} catch(err) {\n\t\t\t\t$mol_fail_log(err)\n\t\t\t}\n\n\t\t\tview.dom_node().scrollIntoView({ block: align })\n\n\t\t}\n\t\t\n\t\tbring() {\n\t\t\t\n\t\t\tconst win = this.$.$mol_dom_context\n\t\t\tif( win.parent !== win.self && !win.document.hasFocus() ) return\n\t\t\t\n\t\t\t// new this.$.$mol_after_frame( ()=> {\n\t\t\t// \tthis.dom_node().scrollIntoView({ block: 'start', inline: 'nearest' })\n\t\t\t// } )\n\t\t\t\n\t\t\tnew this.$.$mol_after_timeout( 0, ()=> {\n\t\t\t\tthis.focused( true )\n\t\t\t} )\n\t\t\t\n\t\t}\n\n\t\toverride destructor() {\n\t\t\tconst node = $mol_wire_probe(() => this.dom_node())\n\t\t\tif (! node) return\n\n\t\t\tconst events = $mol_wire_probe(() => this.event_async())\n\t\t\tif (! events) return\n\n\t\t\tfor( let event_name in events ) {\n\t\t\t\tnode.removeEventListener(\n\t\t\t\t\tevent_name ,\n\t\t\t\t\tevents[ event_name ]\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\texport type $mol_view_all = $mol_type_pick< $ , typeof $mol_view >\n\n}\n","namespace $ { $mol_style_attach( \"mol/view/view/view.css\",\n \"[mol_view] {\\n\\ttransition-property: height, width, min-height, min-width, max-width, max-height, transform;\\n\\ttransition-duration: .2s;\\n\\ttransition-timing-function: ease-out;\\n\\t-webkit-appearance: none;\\n\\tbox-sizing: border-box;\\n\\tdisplay: flex;\\n\\tflex-shrink: 0;\\n\\tcontain: style;\\n\\tscrollbar-color: var(--mol_theme_line) transparent;\\n\\tscrollbar-width: thin;\\n}\\t\\n\\n[mol_view]::selection {\\n\\tbackground: var(--mol_theme_line);\\n}\\t\\n\\n[mol_view]::-webkit-scrollbar {\\n\\twidth: .25rem;\\n\\theight: .25rem;\\n}\\n\\n[mol_view]::-webkit-scrollbar-corner {\\n\\tbackground-color: var(--mol_theme_line);\\n}\\n\\n[mol_view]::-webkit-scrollbar-track {\\n\\tbackground-color: transparent;\\n}\\n\\n[mol_view]::-webkit-scrollbar-thumb {\\n\\tbackground-color: var(--mol_theme_line);\\n\\tborder-radius: var(--mol_gap_round);\\n}\\n\\n[mol_view] > * {\\n\\tword-break: inherit;\\n}\\n\\n[mol_view_root] {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tbox-sizing: border-box;\\n\\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\\n\\tfont-size: 1rem;\\n\\tline-height: 1.5rem;\\n\\tbackground: var(--mol_theme_back);\\n\\tcolor: var(--mol_theme_text);\\n\\tcontain: unset; /** Fixes bg ignoring when applied to body on Chrome */\\n\\ttab-size: 4;\\n\\toverscroll-behavior: contain; /** Disable navigation gestures **/\\n}\\n\\n@media print {\\n\\t[mol_view_root] {\\n\\t\\theight: auto;\\n\\t}\\n}\\n\\n[mol_view][mol_view_error]:not([mol_view_error=\\\"Promise\\\"]) {\\n\\tbackground-image: repeating-linear-gradient(\\n\\t\\t-45deg,\\n\\t\\t#f92323,\\n\\t\\t#f92323 .5rem,\\n\\t\\t#ff3d3d .5rem,\\n\\t\\t#ff3d3d 1.5rem\\n\\t);\\n\\tcolor: black;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\\n@keyframes mol_view_wait {\\n\\tfrom {\\n\\t\\topacity: .25;\\n\\t}\\n\\t20% {\\n\\t\\topacity: .75;\\n\\t}\\n\\tto {\\n\\t\\topacity: .25;\\n\\t}\\n}\\n\\n:where([mol_view][mol_view_error=\\\"Promise\\\"]) {\\n\\tbackground: var(--mol_theme_hover);\\n}\\n\\n[mol_view][mol_view_error=\\\"Promise\\\"] {\\n\\tanimation: mol_view_wait 1s steps(20,end) infinite;\\n}\\n\"\n) }","namespace $ {\n\t/** Plugin is component without its own DOM element, but instead uses the owner DOM element */\n\texport class $mol_plugin extends $mol_view {\n\n\t\toverride dom_node_external( next? : Element ) {\n\t\t\treturn next ?? $mol_owning_get>( this )!.host!.dom_node()\n\t\t}\n\n\t\toverride render() {\n\t\t\tthis.dom_node_actual()\n\t\t}\n\n\t}\n\n}\n","$mol_ghost $mol_view\n\tSub $mol_view\n","namespace $.$$ {\n\n\t/**\n\t * Mixin view logic to DOM node of another component.\n\t */\n\texport class $mol_ghost extends $.$mol_ghost {\n\t\t\n\t\toverride dom_node_external( next?: Element ) {\n\t\t\treturn this.Sub().dom_node( next )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_node_actual() {\n\t\t\tthis.dom_node()\n\t\t\tconst node = this.Sub().dom_node_actual()\n\n\t\t\tconst attr = this.attr()\n\t\t\tconst style = this.style()\n\t\t\tconst fields = this.field()\n\n\t\t\t$mol_dom_render_attributes( node , attr )\n\t\t\t$mol_dom_render_styles( node , style )\n\t\t\t$mol_dom_render_fields( node , fields )\n\n\t\t\treturn node\n\t\t}\n\t\t\n\t\tdom_tree() {\n\t\t\t\n\t\t\tconst Sub = this.Sub()\n\t\t\tconst node = Sub.dom_tree()\n\t\t\t\n\t\t\ttry {\n\t\t\t\tthis.dom_node_actual()\n\t\t\t\tthis.auto()\n\t\t\t} catch( error: unknown ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t}\n\t\t\t\n\t\t\treturn node\n\t\t}\n\n\t\ttitle() {\n\t\t\treturn this.Sub().title()\n\t\t}\n\t\t\n\t\tminimal_width() {\n\t\t\treturn this.Sub().minimal_width()\n\t\t}\n\n\t\tminimal_height() {\n\t\t\treturn this.Sub().minimal_height()\n\t\t}\n\n\t}\n\n}\n","$mol_drop $mol_ghost\n\tenabled? true\n\tevent *\n\t\tdragenter?event <=> enter?event null\n\t\tdragover?event <=> move?event null\n\t\tdragleave?event <=> leave?event null\n\t\tdrop?event <=> drop?event null\n\tattr * mol_drop_status <= status? \\ready\n\tadopt?transfer *\n\treceive?transfer null\n\tallow /\n\t\t\\copy\n\t\t\\move\n\t\t\\link\n","namespace $.$$ {\n\texport class $mol_drop extends $.$mol_drop {\n\n\t\t@ $mol_mem\n\t\tstatus( next = 'ready' as 'ready' | 'drag' ) { return next }\n\n\t\tprotected _target = null as EventTarget | null\n\n\t\tenter( event : DragEvent ) {\n\n\t\t\tif( event.defaultPrevented ) return\n\t\t\tif( !this.enabled() ) return\n\t\t\t// if( !this.adopt( event.dataTransfer! ) ) return\n\n\t\t\tconst action = this.decide_action( event )\n\t\t\tevent.dataTransfer!.dropEffect = action\n\t\t\t\n\t\t\tif( action !== 'none' ) this.status( 'drag' )\n\t\t\tthis._target = event.target\n\t\t\t\n\t\t\tevent.preventDefault()\n\t\t\t\n\t\t}\n\n\t\tmove( event : DragEvent ) {\n\t\t\t\n\t\t\tif( event.defaultPrevented ) return\n\t\t\tif( !this.enabled() ) return\n\n\t\t\t// if( !this.adopt( event.dataTransfer! ) ) return\n\t\t\t\n\t\t\tevent.dataTransfer!.dropEffect = this.decide_action( event )\n\t\t\t\n\t\t\tevent.preventDefault()\n\n\t\t}\n\t\t\n\t\tdecide_action( event: DragEvent ) {\n\t\t\tconst allow = this.allow()\n\t\t\tif( allow.includes( 'move' ) && event.shiftKey ) return 'move'\n\t\t\telse if( allow.includes( 'copy' ) && event.ctrlKey ) return 'copy'\n\t\t\telse if( allow.includes( 'link' ) && event.altKey ) return 'link'\n\t\t\telse return allow[0]\n\t\t}\n\n\t\tleave( event : DragEvent ) {\n\t\t\tif( this._target === event.target ) {\n\t\t\t\tthis.status( 'ready' )\n\t\t\t}\n\t\t}\n\n\t\treceive( transfer : unknown ) {\n\t\t\treturn transfer as unknown\n\t\t}\n\n\t\tdrop( event : DragEvent ) {\n\n\t\t\tif( event.defaultPrevented ) return\n\n\t\t\tevent.preventDefault()\n\n\t\t\tsetTimeout( ()=> this.status( 'ready' ) )\n\t\t\t\n\t\t\tconst obj = this.adopt( event.dataTransfer! )\n\t\t\tif( !obj ) return\n\n\t\t\tthis.receive( obj )\n\n\t\t}\n\n\t}\n}\n","$mol_theme_auto $mol_plugin\n\tattr * mol_theme <= theme \\\n","namespace $ {\n\t/**\n\t * Decorates method to fiber to ensure it is executed only once inside other fiber from [mol_wire](../wire/README.md)\n\t * @see https://mol.hyoo.ru/#!section=docs/=1fcpsq_1wh0h2\n\t */\n\texport let $mol_action = $mol_wire_method\n}\n","namespace $ {\n\n\t/** State of arguments like `foo=bar xxx` */\n\texport class $mol_state_arg extends $mol_object {\n\t\t\n\t\tstatic prolog = ''\n\t\tstatic separator = ' '\n\t\t\n\t\t@ $mol_mem\n\t\tstatic href( next? : string ) {\n\t\t\treturn next || process.argv.slice( 2 ).join( ' ' )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic href_normal() {\n\t\t\treturn this.link({})\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic dict( next? : { [ key : string ] : string | null } ) {\n\t\t\tif( next !== void 0 ) this.href( this.make_link( next ) )\n\t\t\t\n\t\t\tvar href = this.href()\n\t\t\tvar chunks = href.split( ' ' )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift()! ] = vals.join('=')\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params as Readonly< typeof params >\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic value( key : string , next? : string | null ) {\n\t\t\tif( next === void 0 ) return this.dict()[ key ] ?? null\n\t\t\tthis.href( this.link( { [ key ] : next } ) )\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tstatic link( next : Record ) {\n\t\t\tconst params : Record = {}\n\t\t\t\n\t\t\tvar prev = this.dict()\n\t\t\tfor( var key in prev ) {\n\t\t\t\tparams[ key ] = prev[ key ]\n\t\t\t}\n\t\t\t\n\t\t\tfor( var key in next ) {\n\t\t\t\tparams[ key ] = next[ key ]\n\t\t\t}\n\t\t\t\n\t\t\treturn this.make_link( params )\n\t\t}\n\t\t\n\t\tstatic make_link( next : Record) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( const key in next ) {\n\t\t\t\tif( next[ key ] !== null ) {\n\t\t\t\t\tchunks.push([key, next[key]!].map(encodeURIComponent).join('='))\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn chunks.join( ' ' )\n\t\t}\n\t\t\n\t\t@ $mol_action\n\t\tstatic go( next : { [ key : string ] : string | null } ) {\n\t\t\tthis.href( this.link( next ) )\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn ( this.constructor as typeof $mol_state_arg ).value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new ( this.constructor as typeof $mol_state_arg )( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : Record ) {\n\t\t\tconst prefix = this.prefix\n\t\t\tconst dict : Record = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn ( this.constructor as typeof $mol_state_arg ).link( dict )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_media extends $mol_object2 {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic match( query: string, next?: boolean ) {\n\t\t\t\n\t\t\tif( next !== undefined ) return next\n\t\t\t\n\t\t\tconst res = this.$.$mol_dom_context.matchMedia?.( query ) ?? {}\n\t\t\tres.onchange = ()=> this.match( query, res.matches )\n\t\t\t\n\t\t\treturn res.matches\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\texport let $mol_mem_persist = $mol_wire_solid\n}\n","namespace $ {\n\texport let $mol_mem_cached = $mol_wire_probe\n}\n","namespace $ {\n\texport class $mol_storage extends $mol_object2 {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic native() {\n\t\t\treturn this.$.$mol_dom_context.navigator.storage ?? { // exists only in secure context\n\t\t\t\tpersisted: async ()=> false,\n\t\t\t\tpersist: async ()=> false,\n\t\t\t\testimate: async ()=> ({}),\n\t\t\t\tgetDirectory: async ()=> null! as FileSystemHandle,\n\t\t\t} as StorageManager\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic persisted( next?: boolean, cache?: 'cache' ): boolean {\n\t\t\t\n\t\t\t$mol_mem_persist()\n\t\t\t\n\t\t\tif( cache ) return Boolean( next )\n\t\t\t\n\t\t\tconst native = this.native()\n\t\t\tif( next && !$mol_mem_cached( ()=> this.persisted() ) ) {\n\t\t\t\tnative.persist().then( actual => {\n\t\t\t\t\t\n\t\t\t\t\tsetTimeout( ()=> this.persisted( actual, 'cache' ), 5000 )\n\t\t\t\t\t\n\t\t\t\t\tif( actual ) this.$.$mol_log3_done({ place: `$mol_storage`, message: `Persist: Yes` })\n\t\t\t\t\telse this.$.$mol_log3_fail({ place: `$mol_storage`, message: `Persist: No` })\n\t\t\t\t\t\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\treturn next ?? $mol_wire_sync( native ).persisted()\n\t\t}\n\t\t\n\t\tstatic estimate() {\n\t\t\treturn $mol_wire_sync( this.native() ?? {} ).estimate()\n\t\t}\n\t\t\n\t\tstatic dir() {\n\t\t\treturn $mol_wire_sync( this.native() ).getDirectory()\n\t\t}\n\t\t\n\t}\n}\n","namespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\tstatic 'native()' : Pick< Storage , 'getItem'|'setItem'|'removeItem' >\n\t\tstatic native() {\n\t\t\tif( this['native()'] ) return this['native()']\n\n\t\t\tcheck : try {\n\t\t\t\tconst native = $mol_dom_context.localStorage\n\t\t\t\tif( !native ) break check\n\t\t\t\t\n\t\t\t\tnative.setItem( '' , '' )\n\t\t\t\tnative.removeItem( '' )\n\t\t\t\treturn this['native()'] = native\n\t\t\t} catch( error: any ) {\n\t\t\t\tconsole.warn( error )\n\t\t\t}\n\n\t\t\treturn this['native()'] = {\n\t\t\t\tgetItem( key : string ) {\n\t\t\t\t\treturn (this as any)[ ':' + key ]\n\t\t\t\t} ,\n\t\t\t\tsetItem( key : string , value : string ) {\n\t\t\t\t\t(this as any)[ ':' + key ] = value\n\t\t\t\t} ,\n\t\t\t\tremoveItem( key : string ) {\n\t\t\t\t\t(this as any)[ ':' + key ] = void 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic changes( next?: StorageEvent ) { return next }\n\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >(\n\t\t\tkey : string ,\n\t\t\tnext? : Value | null ,\n\t\t) : Value | null {\n\t\t\t\n\t\t\tthis.changes()\n\t\t\t\n\t\t\tif( next === void 0 ) return JSON.parse( this.native().getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) {\n\t\t\t\tthis.native().removeItem( key )\n\t\t\t} else {\n\t\t\t\tthis.native().setItem( key , JSON.stringify( next ) )\n\t\t\t\tthis.$.$mol_storage.persisted( true )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\texport class $mol_lock extends $mol_object {\n\t\tprotected promise = null as null | Promise\n\n\t\tasync wait() {\n let next = () => {}\n\t\t\tlet destructed = false\n const task = $mol_wire_auto()\n\t\t\tif (! task) return next\n\n\t\t\tconst destructor = task.destructor.bind(task)\n task.destructor = ()=> {\n\t\t\t\tdestructor()\n\t\t\t\tdestructed = true\n next()\n }\n\n\t\t\tlet promise\n\n\t\t\tdo {\n\t\t\t\tpromise = this.promise\n\t\t\t\tawait promise\n\t\t\t\tif (destructed) return next\n\t\t\t} while (promise !== this.promise)\n\n\t\t\tthis.promise = new Promise(done => { next = done })\n\t\t\treturn next\n\t\t}\n\n\t\tgrab() { return $mol_wire_sync(this).wait() }\n\t}\n}\n","namespace $ {\n export function $mol_compare_array>(a: Value, b: Value): boolean {\n\t\tif (a === b) return true\n\t\tif (Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) return false\n\t\tif (a.length !== b.length) return false\n\n\t\tfor (let i = 0; i < a.length; i++)\n\t\t\tif (a[i] !== b[i]) return false\n\n\t\treturn true\n\t}\n}\n","namespace $ {\n\n\tconst decoders = {} as { [ key in $mol_charset_encoding ]?: TextDecoder }\n\n\texport function $mol_charset_decode(\n\t\tbuffer: BufferSource,\n\t\tencoding: $mol_charset_encoding = 'utf8',\n\t) {\n\t\t\n\t\tlet decoder = decoders[ encoding ]\n\t\tif( !decoder ) decoder = decoders[ encoding ] = new TextDecoder( encoding )\n\t\t\n\t\treturn decoder.decode( buffer )\n\t}\n\n}\n","namespace $ {\n\tconst TextEncoder = globalThis.TextEncoder ?? $node.util.TextEncoder\n\n\tconst encoder = new TextEncoder()\n\n\texport function $mol_charset_encode(value: string) {\n\t\treturn encoder.encode(value) as Uint8Array< ArrayBuffer >\n\t}\n\n}\n","namespace $ {\n\n\texport type $mol_file_transaction_mode = 'create' | 'exists_truncate' | 'exists_fail' | 'read_only'\n\t\t| 'write_only' | 'read_write' | 'append'\n\n\texport type $mol_file_transaction_buffer = ArrayBufferView\n\n\texport class $mol_file_transaction extends $mol_object {\n\t\tpath() { return '' }\n\n\t\tmodes() { return [] as readonly $mol_file_transaction_mode[] }\n\n\t\twrite(options: {\n\t\t\tbuffer: ArrayBufferView | string | readonly ArrayBufferView[],\n\t\t\toffset?: number | null,\n\t\t\tlength?: number | null,\n\t\t\tposition?: number | null,\n\t\t}) {\n\t\t\treturn 0\n\t\t}\n\n\t\tread() {\n\t\t\treturn new Uint8Array()\n\t\t}\n\n\t\ttruncate(size: number) {}\n\n\t\tclose() {}\n\n\t\toverride destructor() {\n\t\t\tthis.close()\n\t\t}\n\n\t}\n}\n","namespace $ {\n\tenum file_modes {\n\t\t/** create if it doesn't already exist */\n\t\tcreate = $node.fs.constants.O_CREAT,\n\t\t/** truncate to zero size if it already exists */\n\t\texists_truncate = $node.fs.constants.O_TRUNC,\n\t\t/** throw exception if it already exists */\n\t\texists_fail = $node.fs.constants.O_EXCL,\n\t\tread_only = $node.fs.constants.O_RDONLY,\n\t\twrite_only = $node.fs.constants.O_WRONLY,\n\t\tread_write = $node.fs.constants.O_RDWR,\n\t\t/** data will be appended to the end */\n\t\tappend = $node.fs.constants.O_APPEND,\n\t}\n\n\tfunction mode_mask(modes: readonly $mol_file_transaction_mode[]) {\n\t\treturn modes.reduce( ( res, mode )=> res | file_modes[ mode ], 0 )\n\t}\n\n\texport class $mol_file_transaction_node extends $mol_file_transaction {\n\t\t@ $mol_mem\n\t\tprotected descr() {\n\t\t\t$mol_wire_solid()\n\t\t\treturn $node.fs.openSync(this.path(), mode_mask(this.modes()) )\n\t\t}\n\n\t\toverride write({ buffer, offset = 0, length, position = null }: {\n\t\t\tbuffer: ArrayBufferView | string | readonly ArrayBufferView[],\n\t\t\toffset?: number | null,\n\t\t\tlength?: number | null,\n\t\t\tposition?: number | null,\n\t\t}) {\n\t\t\tif (Array.isArray(buffer)) {\n\t\t\t\treturn $node.fs.writevSync( this.descr(), buffer, position ?? undefined)\n\t\t\t}\n\n\t\t\tif (typeof buffer === 'string') {\n\t\t\t\treturn $node.fs.writeSync( this.descr(), buffer, position )\n\t\t\t}\n\n\t\t\tlength = length ?? (buffer as ArrayBufferView).byteLength\n\n\t\t\treturn $node.fs.writeSync( this.descr(), buffer as NodeJS.ArrayBufferView, offset, length, position )\n\t\t}\n\n\t\toverride truncate(size: number) {\n\t\t\t$node.fs.ftruncateSync(this.descr())\n\t\t}\n\n\t\toverride read() {\n\t\t\treturn $mol_file_node_buffer_normalize($node.fs.readFileSync(this.descr()) as Buffer< ArrayBuffer >)\n\t\t}\n\n\t\toverride close() {\n\t\t\t$node.fs.closeSync(this.descr())\n\t\t}\n\n\t}\n\n\t$.$mol_file_transaction = $mol_file_transaction_node\n}\n","namespace $ {\n\n\texport class $mol_file_base extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic absolute(this: This, path : string ) {\n\t\t\treturn this.make({\n\t\t\t\tpath : $mol_const( path )\n\t\t\t}) as InstanceType< This >\n\t\t}\n\n\t\tstatic relative(this: This, path : string ) : InstanceType {\n\t\t\tthrow new Error( 'Not implemented yet' )\n\t\t}\n\t\t\n\t\tstatic base = ''\n\t\t\n\t\tpath() {\n\t\t\treturn '.'\n\t\t}\n\t\t\n\t\tparent() {\n\t\t\treturn this.resolve( '..' )\n\t\t}\n\n\t\t@ $mol_action\n\t\texists_cut() { return this.exists() }\n\n\t\tprotected root() {\n\t\t\tconst path = this.path()\n\t\t\tconst base = (this.constructor as typeof $mol_file_base).base\n\n\t\t\t// Если путь выше или равен base или если parent такойже как и this - считаем это корнем\n\t\t\treturn base.startsWith(path) || this == this.parent()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tprotected stat(next? : $mol_file_stat | null, virt?: 'virt') {\n\n\t\t\tconst path = this.path()\n\t\t\tconst parent = this.parent()\n\n\t\t\t// Отслеживать проверку наличия родительской папки не стоит до корня диска\n\t\t\t// Лучше ограничить mam-ом\n\t\t\tif ( ! this.root() ) {\n\t\t\t\t/*\n\t\t\t\tЕсли parent папка удалилась, надо ресетнуть все объекты в ней на любой глубине.\n\t\t\t\tНапример, rm -rf с последующим git pull: parent папка может удалиться, потом создасться,\n\t\t\t\tа текущая папка успеет только удалиться до момента выполнения stat.\n\t\t\t\tПоэтому parent.exists() не запустит перевычисления, нужна именно parent.version()\n\n\t\t\t\tОднако, parent.version() меняется не только при удалении, будет ложное срабатывание\n\t\t\t\tС этим придется мириться, красивого решения пока нет.\n\t\t\t\t*/\n\n\t\t\t\tparent.version()\n\t\t\t}\n\t\t\tparent.watcher()\n\n\t\t\tif( virt ) return next ?? null\n\t\t\t\n\t\t\treturn next ?? this.info(path)\n\t\t}\n\n\t\tprotected static changed = new Set<$mol_file_base>\n\n\t\tprotected static frame = null as null | $mol_after_timeout\n\n\t\tprotected static changed_add(type: 'change' | 'rename', path: string) {\n\t\t\tif (/([\\/\\\\]\\.|___$)/.test( path )) return\n\n\t\t\tconst file = this.relative( path.at(-1) === '/' ? path.slice(0, -1) : path )\n\t\t\t// console.log(type, path)\n\n\t\t\t// add (change): добавился файл - у parent надо обновить список sub, если он был заюзан\n\t\t\t// change, unlink (rename): обновился или удалился файл - ресетим\n\t\t\t// addDir (change), добавилась папка, у parent обновляем список директорий в sub\n\t\t\t// дочерние ресетим\n\n\t\t\t// unlinkDir (rename), удалилась папка, ресетим ее\n\t\t\t// stat у всех дочерних обновится сам, т.к. связан с parent.version()\n\t\t\tthis.changed.add(file)\n\n\t\t\tif (! this.watching) return\n\n\t\t\t// throttle, пока события поступают не сбрасываем.\n\t\t\t// аналог awaitWriteFinish из chokidar\n\t\t\t// интервалы между change-сообщениями модифицируемого файла должны быть меньше watch_debounce\n\t\t\tthis.frame?.destructor()\n\t\t\tthis.frame = new this.$.$mol_after_timeout(this.watch_debounce(), () => {\n\t\t\t\tif (! this.watching) return\n\t\t\t\tthis.watching = false\n\t\t\t\t$mol_wire_async(this).flush()\n\t\t\t} )\n\t\t}\n\n\t\t/**\n\t\t * Должно быть больше, чем время между событиями от вотчера при записи внешним процессом.\n\t\t * Иначе запуск ресетов паралельно с изменением может привести к неконсистентности.\n\t\t */\n\t\tstatic watch_debounce() { return 500 }\n\n\t\t@ $mol_action\n\t\tstatic flush() {\n\t\t\t// Пока flush работает, вотчер сюда не заходит, но может добавлять новые изменения\n\t\t\t// на каждом перезапуске они применятся\n\t\t\t// Пока run выполняется, изменения накапливаются, в конце run вызывается flush\n\t\t\t// Пока применяются изменения, run должен ожидать конца flush\n\n\t\t\tfor (const file of this.changed) {\n\t\t\t\tconst parent = file.parent()\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( $mol_wire_probe(() => parent.sub()) ) parent.sub(null)\n\t\t\t\t\tfile.reset()\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif ($mol_fail_catch(error)) $mol_fail_log(error)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.changed.clear()\n\t\t\tthis.watching = true\n\n\t\t\t// this.watch_wd?.destructor()\n\t\t\t// this.watch_wd = null\n\t}\n\n\t\tprotected static watching = true\n\n\t\tprotected static lock = new $mol_lock\n\n\t\t@ $mol_action\n\t\tprotected static watch_off(path: string) {\n\t\t\tthis.watching = false\n\t\t\t// run должен ожидать конца flush\n\t\t\tthis.flush()\n\t\t\tthis.watching = false\n\n\t\t\t/*\n\t\t\twatch запаздывает и событие может прилететь через 3 сек после окончания сайд эффекта\n\t\t\tпоэтому добавляем папку, которую меняет side_effect\n\t\t\tКогда дойдет до выполнения flush, он ресетнет ее\n\t\t\t\n\t\t\tИначе будут лишние срабатывания\n\t\t\tНапример, удалили hyoo/board, watch ресетит и exists начинает отдавать false, срабатывает git clone\n\t\t\tСразу после него событие addDir еще не успело прийти,\n\t\t\tна следующем перезапуске вызывается git pull, т.к.\n\t\t\tс точки зрения реактивной системы hyoo/board еще не существует.\n\t\t\t*/\n\t\t\tthis.changed.add(this.absolute(path))\n\t\t}\n\t\n\t\t// protected static watch_wd = null as null | $mol_after_timeout\n\n\t\tstatic unwatched(side_effect: () => Result, affected_dir: string) {\n\t\t\t// ждем, пока выполнится предыдущий unwatched\n\t\t\tconst unlock = this.lock.grab()\n\t\t\tthis.watch_off(affected_dir)\n\n\t\t\ttry {\n\t\t\t\tconst result = side_effect()\n\t\t\t\tthis.flush()\n\t\t\t\tunlock()\n\t\t\t\treturn result\n\t\t\t} catch(e) {\n\t\t\t\tif (! $mol_promise_like(e)) {\n\t\t\t\t\tthis.flush()\n\t\t\t\t\tunlock()\n\t\t\t\t}\n\t\t\t\t$mol_fail_hidden(e)\n\t\t\t}\n\t\t}\n\n\t\treset() {\n\t\t\tthis.stat( null )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tmodified() { return this.stat()?.mtime ?? null }\n\n\t\t@ $mol_mem\n\t\tversion() {\n\t\t\tconst next = this.stat()?.mtime.getTime().toString( 36 ).toUpperCase() ?? ''\n\t\t\t// console.log('version', next, this.path())\n\t\t\treturn next\n\t\t}\n\n\t\tprotected info( path: string ) { return null as null | $mol_file_stat }\n\t\tprotected ensure() {}\n\t\tprotected drop() {}\n\t\tprotected copy(to: string) {}\n\t\tprotected read(): Uint8Array { return new Uint8Array }\n\t\tprotected write(buffer: Uint8Array) { }\n\t\tprotected kids() {\n\t\t\treturn [] as readonly this[]\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\treadable(opts: { start?: number, end?: number }) {\n\t\t\treturn new ReadableStream>\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\twritable(opts: { start?: number }) {\n\t\t\treturn new WritableStream>\n\t\t}\n\n\t\t// open( ... modes: readonly $mol_file_mode[] ) { return 0 }\n\n\t\t@ $mol_mem\n\t\tbuffer( next? : Uint8Array ): Uint8Array {\n\n\t\t\t// Если версия пустая - возвращаем пустой буфер\n\t\t\tlet readed: Uint8Array = new Uint8Array()\n\n\t\t\tif( next === undefined ) {\n\t\t\t\t// Если меняется версия файла, буфер надо перечитать\n\t\t\t\tif ( this.version() ) readed = this.read()\n\t\t\t}\n\n\t\t\tconst prev = $mol_mem_cached( ()=> this.buffer() )\n\t\t\tconst changed = prev === undefined || ! $mol_compare_array( prev, next ?? readed)\n\n\t\t\tif( prev !== undefined && changed ) {\n\t\t\t\t// Логируем, если повторно читаем/пишем и буфер поменялся\n\t\t\t\tthis.$.$mol_log3_rise({\n\t\t\t\t\tplace: `$mol_file_node.buffer()`,\n\t\t\t\t\tmessage: 'Changed' ,\n\t\t\t\t\tpath: this.relate() ,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (next === undefined) return changed ? readed : prev\n\n\t\t\t// Если буфер при записи не поменялся и файл не удаляли перед этим - не записываем новую версию.\n\t\t\t// Если записывать, это приведет к смене mtime и вотчер снова триггернется, даже если содержимое файла не поменялось.\n\n\t\t\t// В этом алгоритме есть изъян.\n\t\t\t// Если файл записали, потом отключили вотчер, кто-то из вне его поменял, потом включили вотчер, снова записали тот же буфер,\n\t\t\t// то буфер не запишется на диск, т.к. кэш не консистентен с диском.\n\t\t\t\n\t\t\tif (! changed && this.exists()) return prev\n\t\t\t\n\t\t\tthis.parent().exists( true )\n\t\t\tthis.stat( this.stat_make(next.length), 'virt' )\n\n\t\t\tthis.write(next)\n\n\t\t\treturn next\n\n\t\t}\n\n\t\t@ $mol_action\n\t\tstat_make(size: number) {\n\t\t\tconst now = new Date()\n\t\t\treturn {\n\t\t\t\ttype: 'file',\n\t\t\t\tsize,\n\t\t\t\tatime: now,\n\t\t\t\tmtime: now,\n\t\t\t\tctime: now,\n\t\t\t} as const\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tclone(to: string) {\n\t\t\tif (! this.exists() ) return null\n\n\t\t\tconst target = (this.constructor as typeof $mol_file_base).absolute(to) as this\n\n\t\t\ttry {\n\t\t\t\tthis.version()\n\t\t\t\ttarget.parent().exists(true)\n\t\t\t\tthis.copy(to)\n\t\t\t\ttarget.reset()\n\t\t\t\treturn target\n\t\t\t} catch (error) {\n\t\t\t\tif ( $mol_fail_catch(error)) {\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\t// static watch_root = ''\n\n\t\t// static watcher_warned = false\n\t\twatcher() {\n\t\t\t// const constructor = this.constructor as typeof $mol_file_base\n\t\t\t// if (! constructor.watcher_warned) {\n\t\t\t// \tconsole.warn(`${constructor}.watcher() not implemented`)\n\t\t\t// \tconstructor.watcher_warned = true\n\t\t\t// }\n\n\t\t\treturn {\n\t\t\t\tdestructor() {}\n\t\t\t}\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\texists( next? : boolean ) {\n\t\t\t\n\t\t\tconst exists = Boolean( this.stat() )\n\n\t\t\t// console.log('exists current', exists, 'next', next, this.path())\n\t\t\tif( next === undefined ) return exists\n\t\t\tif( next === exists ) return exists\n\n\t\t\tif( next ) {\n\t\t\t\tthis.parent().exists( true )\n\t\t\t\tthis.ensure()\n\t\t\t} else {\n\t\t\t\tthis.drop()\n\t\t\t}\n\n\t\t\tthis.reset()\n\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\ttype() {\n\t\t\treturn this.stat()?.type ?? ''\n\t\t}\n\t\t\n\t\tname() {\n\t\t\treturn this.path().replace( /^.*\\//, '' )\n\t\t}\n\t\t\n\t\text() {\n\t\t\tconst match = /((?:\\.\\w+)+)$/.exec( this.path() )\n\t\t\treturn match ? match[ 1 ].substring( 1 ) : ''\n\t\t}\n\n\t\ttext(next?: string, virt?: 'virt') {\n\t\t\t// Если записываем text, и вотчер ресетнул записанный файл,\n\t\t\t// то надо снова его обновить, вызвать логику, которая делала пуш в text.\n\t\t\t// Например файл удалили, потом снова создали, версия поменялась - перезаписываем\n\t\t\t// Если использовать version, то вновь созданный файл, через вотчер запустит свое пересоздание\n\t\t\tif (next !== undefined) this.exists()\n\t\t\treturn this.text_int(next, virt)\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttext_int(next?: string, virt?: 'virt') {\n\t\t\tif( virt ) {\n\t\t\t\tthis.stat( this.stat_make(0), 'virt' )\n\t\t\t\treturn next!\n\t\t\t}\n\n\t\t\tif( next === undefined ) {\n\t\t\t\treturn $mol_charset_decode( this.buffer( ) )\t\n\t\t\t} else {\n\t\t\t\tconst buffer = $mol_charset_encode( next )\n\t\t\t\tthis.buffer( buffer )\n\t\t\t\treturn next\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem\n\t\tsub(reset?: null) {\n\t\t\tif (! this.exists() ) return []\n\t\t\tif ( this.type() !== 'dir') return []\n\n\t\t\tthis.version()\n\n\t\t\t// Если дочерний file удалился, список надо обновить\n\t\t\treturn this.kids().filter(file => file.exists())\n\t\t}\n\n\t\tresolve(path: string): this {\n\t\t\tthrow new Error('implement')\n\t\t}\n\n\t\trelate( base = ( this.constructor as typeof $mol_file_base ).relative( '.' )): string {\n\t\t\tconst base_path = base.path()\n\t\t\tconst path = this.path()\n\t\t\treturn path.startsWith(base_path) ? path.slice(base_path.length) : path\n\t\t}\n\n\t\tfind(\n\t\t\tinclude? : RegExp ,\n\t\t\texclude? : RegExp\n\t\t) {\n\t\t\tconst found = [] as typeof this[]\n\t\t\tconst sub = this.sub()\n\n\t\t\tfor (const child of sub) {\n\t\t\t\tconst child_path = child.path()\n\n\t\t\t\tif( exclude && child_path.match( exclude ) ) continue\n\n\t\t\t\tif( !include || child_path.match( include ) ) found.push( child )\n\n\t\t\t\tif( child.type() === 'dir' ) {\n\t\t\t\t\tconst sub_child = child.find( include , exclude )\n\t\t\t\t\tfor (const child of sub_child) found.push(child)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn found\n\t\t}\n\n\t\t@ $mol_mem\n\t\tsize() {\n\t\t\tswitch( this.type() ) {\n\t\t\t\tcase 'file': return this.stat()?.size ?? 0\n\t\t\t\tdefault: return 0\n\t\t\t}\n\t\t}\n\t\t\n\t\ttoJSON() {\n\t\t\treturn this.path()\n\t\t}\n\t\t\n\t\t@ $mol_action\n\t\topen( ... modes: readonly $mol_file_transaction_mode[] ) {\n\t\t\treturn this.$.$mol_file_transaction.make({\n\t\t\t\tpath: () => this.path(),\n\t\t\t\tmodes: () => modes\n\t\t\t})\n\t\t}\n\t}\n\n}\n","namespace $ {\n\n\texport type $mol_file_type = 'file' | 'dir' | 'link'\n\n\texport interface $mol_file_stat {\n\t\ttype: $mol_file_type\n\t\tsize: number\n\t\tatime: Date\n\t\tmtime: Date\n\t\tctime: Date\n\t}\n\n\texport class $mol_file extends $mol_file_base {}\n\n}\n","namespace $ {\n\n\tfunction stat_convert(stat: ReturnType): null | $mol_file_stat {\n\t\t\n\t\tif( !stat ) return null\n\t\t\n\t\tlet type: $mol_file_type | undefined\n\t\tif (stat.isDirectory()) type = 'dir'\n\t\tif (stat.isFile()) type = 'file'\n\t\tif (stat.isSymbolicLink()) type = 'link'\n\n\t\tif (! type) return $mol_fail( new Error(`Unsupported file type`) )\n\n\t\treturn {\n\t\t\ttype, \n\t\t\tsize: Number(stat.size),\n\t\t\tatime: stat.atime,\n\t\t\tmtime: stat.mtime,\n\t\t\tctime: stat.ctime\n\t\t}\n\t}\n\n\texport function $mol_file_node_buffer_normalize(buf: Buffer< ArrayBuffer >): Uint8Array< ArrayBuffer > {\n\t\treturn new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n\t}\n\n\texport class $mol_file_node extends $mol_file {\n\n\t\tstatic relative(this: This, path : string ) {\n\t\t\treturn this.absolute( $node.path.resolve( this.base, path ).replace( /\\\\/g , '/' ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\toverride watcher(reset?: null) {\n\t\t\tconst path = this.path()\n\t\t\tconst root = this.root()\n\t\t\t// Если папки/файла нет, watch упадет с ошибкой\n\t\t\t// exists обратится к parent.version и parent.watcher\n\t\t\t// Поэтому у root-папки и выше не надо вызывать exists, иначе поднимется выше base до корня диска\n\t\t\t// exists вызывать надо, что б пересоздавать вотчер при появлении папки или файла\n\t\t\tif (! root && ! this.exists() ) return super.watcher()\n\n\t\t\tlet watcher\n\n\t\t\ttry {\n\t\t\t\t// Между exists и watch файл может удалиться, в любом случае надо обрабатывать ENOENT\n\t\t\t\twatcher = $node.fs.watch( path )\n\t\t\t} catch (error: any) {\n\t\t\t\tif ( ! (error instanceof Error) ) error = new Error('Unknown watch error', {cause: error})\n\t\t\t\terror.message += '\\n' + path\n\n\t\t\t\tif ( root || error.code !== 'ENOENT' ) {\n\t\t\t\t\tthis.$.$mol_fail_log(error)\n\t\t\t\t}\n\n\t\t\t\t// Если файла нет - вотчер не создается, создастся потом, когда exists поменяется на true.\n\t\t\t\t// Если создание упало с другой ошибкой - не ломаем работу mol_file, деградируем до не реактивной fs.\n\n\t\t\t\treturn super.watcher()\n\t\t\t}\n\n\t\t\twatcher.on('change', (type: 'change' | 'rename', name) => {\n\t\t\t\tif (! name) return\n\t\t\t\tconst path = $node.path.join( this.path(), name.toString() )\n\t\t\t\t;(this.constructor as typeof $mol_file_base).changed_add(type, path)\n\t\t\t})\n\n\t\t\twatcher.on('error', e => this.$.$mol_fail_log(e) )\n\n\t\t\tlet destructed = false\n\n\t\t\twatcher.on('close', () => {\n\t\t\t\t// Если в процессе работы вотчер сам закрылся, надо его переоткрыть\n\t\t\t\tif (! destructed) setTimeout(() => $mol_wire_async(this).watcher(null), 500)\n\t\t\t})\n\n\t\t\treturn {\n\t\t\t\tdestructor() {\n\t\t\t\t\tdestructed = true\n\t\t\t\t\twatcher.close()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_action\n\t\tprotected override info( path: string ) {\n\t\t\ttry {\n\t\t\t\treturn stat_convert($node.fs.statSync(path))\n\t\t\t} catch( error: any ) {\n\t\t\t\tif (this.$.$mol_fail_catch(error)) {\n\t\t\t\t\tif (error.code === 'ENOENT') return null\n\t\t\t\t\terror.message += '\\n' + path\n\t\t\t\t\tthis.$.$mol_fail_hidden(error)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\t@ $mol_action\n\t\tprotected override ensure() {\n\t\t\tconst path = this.path()\n\t\t\ttry {\n\t\t\t\t$node.fs.mkdirSync( path, { recursive: true } )\n\t\t\t\treturn null\n\t\t\t} catch( e: any ) {\n\t\t\t\tif (this.$.$mol_fail_catch(e)) {\n\t\t\t\t\tif (e.code === 'EEXIST') return null\n\t\t\t\t\te.message += '\\n' + path\n\t\t\t\t\tthis.$.$mol_fail_hidden(e)\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t@ $mol_action\n\t\tprotected override copy(to: string) {\n\t\t\t$node.fs.copyFileSync(this.path(), to)\n\t\t}\n\t\t\n\t\t@ $mol_action\n\t\tprotected override drop() {\n\t\t\t$node.fs.unlinkSync( this.path() )\n\t\t}\n\n\t\t@ $mol_action\n\t\tprotected override read() {\n\t\t\tconst path = this.path()\n\n\t\t\ttry {\n\t\t\t\treturn $mol_file_node_buffer_normalize($node.fs.readFileSync( path ) as Buffer< ArrayBuffer >)\n\t\t\t} catch( error: any ) {\n\t\t\t\tif (! $mol_promise_like(error)) {\n\t\t\t\t\terror.message += '\\n' + path\n\t\t\t\t}\n\n\t\t\t\t$mol_fail_hidden( error )\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_action\n\t\tprotected override write(buffer: Uint8Array) {\n\t\t\tconst path = this.path()\n\n\t\t\ttry {\n\n\t\t\t\t$node.fs.writeFileSync( path, buffer )\n\n\t\t\t} catch( error: any ) {\n\t\t\t\tif (this.$.$mol_fail_catch(error)) {\n\t\t\t\t\terror.message += '\\n' + path\n\t\t\t\t}\n\t\t\t\treturn this.$.$mol_fail_hidden( error )\n\t\t\t}\n\n\t\t}\n\n\t\tprotected override kids() {\n\t\t\tconst path = this.path()\n\n\t\t\ttry {\n\t\t\t\tconst kids = $node.fs.readdirSync( path )\n\t\t\t\t\t.filter( name => !/^\\.+$/.test( name ) )\n\t\t\t\t\t.map( name => this.resolve( name ) )\n\n\t\t\t\treturn kids\n\t\t\t} catch( e: any ) {\n\t\t\t\tif (this.$.$mol_fail_catch(e)) {\n\t\t\t\t\tif (e.code === 'ENOENT') return []\n\t\t\t\t\te.message += '\\n' + path\n\t\t\t\t}\n\t\t\t\t$mol_fail_hidden(e)\n\t\t\t}\n\t\t}\n\t\t\n\t\toverride resolve( path : string ) {\n\t\t\treturn ( this.constructor as typeof $mol_file )\n\t\t\t\t.relative( $node.path.join( this.path() , path ) ) as this\n\t\t}\n\t\t\n\t\toverride relate( base = ( this.constructor as typeof $mol_file ).relative( '.' )) {\n\t\t\treturn $node.path.relative( base.path() , this.path() ).replace( /\\\\/g , '/' )\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\toverride readable(opts: { start?: number, end?: number }) {\n\t\t\tconst { Readable } = $node['node:stream'] as typeof import('stream')\n\t\t\tconst stream = $node.fs.createReadStream(this.path(), {\n\t\t\t\tflags: 'r',\n\t\t\t\tautoClose: true,\n\t\t\t\tstart: opts?.start,\n\t\t\t\tend: opts?.end,\n\t\t\t\tencoding: 'binary',\n\t\t\t})\n\n\t\t\treturn Readable.toWeb(stream) as ReadableStream>\n\t\t}\n\n\t\t@ $mol_mem\n\t\toverride writable(opts?: { start?: number }) {\n\t\t\tconst { Writable } = $node['node:stream'] as typeof import('stream')\n\t\t\tconst stream = $node.fs.createWriteStream(this.path(), {\n\t\t\t\tflags: 'w+',\n\t\t\t\tautoClose: true,\n\t\t\t\tstart: opts?.start,\n\t\t\t\tencoding: 'binary',\n\t\t\t})\n\n\t\t\treturn Writable.toWeb(stream) as WritableStream>\n\t\t}\n\n\t}\n\n\n\t$.$mol_file = $mol_file_node\n}\n","namespace $ {\n\texport class $mol_state_local_node< Value > extends $mol_state_local< Value > {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic dir() {\n\t\t\tconst base = process.env.XDG_DATA_HOME || ( $node.os.homedir() + '/.local/share' )\n\t\t\treturn $mol_file.absolute( base ).resolve( './mol_state_local' )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >(\n\t\t\tkey : string ,\n\t\t\tnext? : Value | null ,\n\t\t) : Value | null {\n\t\t\t\n\t\t\tconst file = this.dir().resolve( encodeURIComponent( key ) + '.json' )\n\t\t\t\n\t\t\tif( next === null ) {\n\t\t\t\tfile.exists( false )\n\t\t\t\treturn null\n\t\t\t}\n\t\t\t\n\t\t\tconst arg = next === undefined ? undefined : JSON.stringify( next )\n\t\t\treturn JSON.parse( file.text( arg ) || 'null' )\n\t\t\t\n\t\t}\n\t\t\n\t}\n\t$.$mol_state_local = $mol_state_local_node\n}\n","namespace $ {\n\t\n\tfunction parse( theme: string | null ) {\n\t\tif( theme === 'true' ) return true\n\t\tif( theme === 'false' ) return false\n\t\treturn null\n\t}\n\t\n\t/**\n\t * Switcher between light/dark themes (usually for `mol_theme_auto` plugin).\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_lights_demo\n\t */\n\texport function $mol_lights( this : $ , next? : boolean ) {\n\t\t\n\t\tconst arg = parse( this.$mol_state_arg.value( 'mol_lights' ) )\n\t\t\n\t\tconst base = this.$mol_media.match( '(prefers-color-scheme: light)' )\n\t\t\n\t\tif( next === undefined ) {\n\t\t\treturn arg ?? this.$mol_state_local.value< boolean >( '$mol_lights' ) ?? base\n\t\t} else {\n\t\t\tif( arg === null ) {\n\t\t\t\tthis.$mol_state_local.value( '$mol_lights' , next === base ? null : next )\n\t\t\t} else {\n\t\t\t\tthis.$mol_state_arg.value( 'mol_lights' , String( next ) )\n\t\t\t}\n\t\t\treturn next\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $.$$ {\n\n\t/**\n\t * The [plugin](../../plugin/readme.md) which defines theme based on [mol_lights](../../lights/readme.md).\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_lights_demo\n\t */\n\texport class $mol_theme_auto extends $.$mol_theme_auto {\n\n\t\ttheme() {\n\t\t\treturn this.$.$mol_lights() ? '$mol_theme_light' : '$mol_theme_dark'\n\t\t}\n\n\t}\n}\n","$mol_scroll $mol_view\n\tscroll_top? 0\n\tscroll_left? 0\n\tfield *\n\t\t^\n\t\ttabIndex <= tabindex -1\n\tevent *\n\t\t^\n\t\tscroll?event <=> event_scroll?event null\n","namespace $ {\n\n\texport class $mol_dom_listener extends $mol_object {\n\n\t\tconstructor(\n\t\t\tpublic _node : any ,\n\t\t\tpublic _event : string ,\n\t\t\tpublic _handler : ( event : any )=> any ,\n\t\t\tpublic _config : boolean|{ passive : boolean } = { passive : true }\n\t\t) {\n\t\t\tsuper()\n\t\t\tthis._node.addEventListener( this._event , this._handler , this._config )\n\t\t}\n\n\t\tdestructor() {\n\t\t\tthis._node.removeEventListener( this._event , this._handler , this._config )\n\t\t\tsuper.destructor()\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_print extends $mol_object {\n\n\t\t@ $mol_mem\n\t\tstatic before() {\n\t\t\treturn new $mol_dom_listener( this.$.$mol_dom_context , 'beforeprint' , ()=> {\n\t\t\t\tthis.active( true )\n\t\t\t} )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic after() {\n\t\t\treturn new $mol_dom_listener( this.$.$mol_dom_context , 'afterprint' , ()=> {\n\t\t\t\tthis.active( false )\n\t\t\t} )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic active( next? : boolean ) {\n\t\t\tthis.before()\n\t\t\tthis.after()\n\t\t\treturn next || false\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_style_sheet<\n\t\tComponent extends $mol_view,\n\t\tConfig extends $mol_style_guard< Component , Config >,\n\t>(\n\t\tComponent : new()=> Component,\n\t\tconfig0 : Config ,\n\t) {\n\n\t\tlet rules = [] as string[]\n\n\t\tconst block = $mol_dom_qname( $mol_ambient({}).$mol_func_name( Component ) )\n\t\tconst kebab = ( name : string )=> name.replace( /[A-Z]/g , letter => '-' + letter.toLowerCase() )\n\n\t\tconst make_class = ( prefix : string , path : string[] , config : typeof config0 )=> {\n\n\t\t\tconst props = [] as string[]\n\n\t\t\tconst selector = ( prefix : string , path : string[] )=> {\n\t\t\t\tif( path.length === 0 ) return prefix || `[${ block }]`\n\t\t\t\tlet res = `[${ block }_${ path.join('_') }]`\n\t\t\t\tif( prefix ) res = prefix + ' :where(' + res + ')'\n\t\t\t\treturn res\n\t\t\t}\n\t\t\t\n\t\t\tfor( const key of Object.keys( config ).reverse() ) {\n\n\t\t\t\tif( /^(--)?[a-z]/.test(key) ) {\n\t\t\t\t\t\n\t\t\t\t\tconst addProp = ( keys : string[] , val : any )=> {\n\n\t\t\t\t\t\tif( Array.isArray( val ) ) {\n\n\t\t\t\t\t\t\tif( val[0] && [ Array , Object ].includes( val[0].constructor ) ) {\n\t\t\t\t\t\t\t\tval = val.map( v => {\n\t\t\t\t\t\t\t\t\treturn Object.entries( v ).map( ([ n , a ])=> {\n\t\t\t\t\t\t\t\t\t\tif( a === true ) return kebab( n )\n\t\t\t\t\t\t\t\t\t\tif( a === false ) return null\n\t\t\t\t\t\t\t\t\t\treturn String( a )\n\t\t\t\t\t\t\t\t\t} ).filter( Boolean ).join(' ')\n\t\t\t\t\t\t\t\t}).join( ',' )\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tval = val.join(' ')\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tprops.push(`\\t${ keys.join('-') }: ${ val };\\n`)\n\n\t\t\t\t\t\t} else if( val.constructor === Object ) {\n\n\t\t\t\t\t\t\tfor( let suffix in val ) {\n\t\t\t\t\t\t\t\taddProp( [ ... keys , kebab( suffix ) ] , val[ suffix ] )\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tprops.push(`\\t${ keys.join('-') }: ${ val };\\n`)\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\n\t\t\t\t\taddProp( [ kebab(key) ] , (config as any)[key] )\n\n\t\t\t\t} else if( /^[A-Z]/.test(key) ) {\n\n\t\t\t\t\tmake_class( prefix , [ ... path , key.toLowerCase() ] , (config as any)[key] )\n\n\t\t\t\t} else if( key[0] === '$' ) {\n\n\t\t\t\t\tmake_class( selector( prefix , path ) + ' :where([' + $mol_dom_qname( key ) + '])' , [] , (config as any)[key] )\n\n\t\t\t\t} else if( key === '>' ) {\n\n\t\t\t\t\tconst types = config[key] as any\n\n\t\t\t\t\tfor( let type in types ) {\n\t\t\t\t\t\tmake_class( selector( prefix , path ) + ' > :where([' + $mol_dom_qname( type ) + '])' , [] , types[type] )\n\t\t\t\t\t}\n\n\t\t\t\t} else if( key === '@' ) {\n\n\t\t\t\t\tconst attrs = config[key] as any\n\n\t\t\t\t\tfor( let name in attrs ) {\n\t\t\t\t\t\tfor( let val in attrs[name] ) {\n\t\t\t\t\t\t\tmake_class( selector( prefix , path ) + ':where([' + name + '=' + JSON.stringify( val ) + '])' , [] , attrs[name][val] )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t} else if( key === '@media' ) {\n\n\t\t\t\t\tconst media = (config as any)[key] as any\n\n\t\t\t\t\tfor( let query in media ) {\n\n\t\t\t\t\t\trules.push('}\\n')\n\t\t\t\t\t\t\n\t\t\t\t\t\tmake_class( prefix , path , media[query] )\n\t\t\t\t\t\t\n\t\t\t\t\t\trules.push( `${ key } ${ query } {\\n` )\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if( key[0] === '[' && key[key.length-1] === ']' ) {\n\n\t\t\t\t\tconst attr = key.slice( 1, -1 )\n\t\t\t\t\tconst vals = config[ key as any ] as any as Record< string, any >\n\t\t\t\t\t\n\t\t\t\t\tfor( let val in vals ) {\n\t\t\t\t\t\tmake_class( selector( prefix , path ) + ':where([' + attr + '=' + JSON.stringify( val ) + '])' , [] , vals[val] )\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t} else {\n\n\t\t\t\t\tmake_class( selector( prefix , path ) + key , [] , (config as any)[key] )\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t\n\t\t\tif( props.length ) {\n\t\t\t\trules.push( `${ selector( prefix , path ) } {\\n${ props.reverse().join('') }}\\n` )\n\t\t\t}\n\n\t\t}\n\n\t\tmake_class( '' , [] , config0 )\n\n\t\treturn rules.reverse().join('')\n\n\t}\n\n}\n","namespace $ {\n\n\t/**\n\t * CSS in TS.\n\t * Statically typed CSS style sheets. Following samples show which CSS code are generated from TS code.\n\t * @see https://mol.hyoo.ru/#!section=docs/=xwq9q5_f966fg\n\t */\n\texport function $mol_style_define<\n\t\tComponent extends $mol_view,\n\t\tConfig extends $mol_style_guard< Component , Config >,\n\t>(\n\t\tComponent : new()=> Component,\n\t\tconfig : Config ,\n\t) {\n\n\t\treturn $mol_style_attach(\n\t\t\tComponent.name,\n\t\t\t$mol_style_sheet( Component , config ),\n\t\t)\n\n\t}\n\n}\n","namespace $.$$ {\n\t\n\t/**\n\t * Scrolling pane.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_scroll_demo\n\t */\n\texport class $mol_scroll extends $.$mol_scroll {\n\n\t\t@ $mol_mem\n\t\tscroll_top( next? : number, cache?: 'cache' ): number {\n\t\t\t\n\t\t\tconst el = this.dom_node()\n\t\t\tif( next !== undefined && !cache ) el.scrollTop = next\n\t\t\t\n\t\t\treturn el.scrollTop\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tscroll_left( next? : number, cache?: 'cache' ): number {\n\t\t\t\n\t\t\tconst el = this.dom_node()\n\t\t\tif( next !== undefined && !cache ) el.scrollLeft = next\n\t\t\t\n\t\t\treturn el.scrollLeft\n\t\t}\n\t\t\n\t\tevent_scroll( next? : Event ) {\n\t\t\t\n\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\n\t\t\tthis.scroll_left( el.scrollLeft, 'cache' )\n\t\t\tthis.scroll_top( el.scrollTop, 'cache' )\n\t\t\t\n\t\t}\n\n\t\tminimal_height() {\n\t\t\treturn this.$.$mol_print.active() ? null! : 0\n\t\t}\n\t\t\n\t\tminimal_width() {\n\t\t\treturn this.$.$mol_print.active() ? null! : 0\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $.$$ {\n\n\tconst { per , rem , px } = $mol_style_unit\n\n\t$mol_style_define( $mol_scroll , {\n\n\t\tdisplay: 'grid',\n\t\toverflow: 'auto',\n\t\tflex: {\n\t\t\tdirection: 'column',\n\t\t\tgrow: 1,\n\t\t\tshrink: 1,\n\t\t\t// basis: 0,\n\t\t},\n\t\toutline: 'none',\n\t\talign: {\n\t\t\tself: 'stretch',\n\t\t\titems: 'flex-start',\n\t\t},\n\t\tboxSizing: 'border-box',\n\t\twillChange: 'scroll-position',\n\t\tscroll: {\n\t\t\tpadding: [ rem(.75), 0 ],\n\t\t},\n\t\tmaxHeight: per(100),\n\t\tmaxWidth: per(100),\n\t\twebkitOverflowScrolling: 'touch',\n\t\tcontain: 'content',\n\n\t\t'>': {\n\t\t\t$mol_view: {\n\t\t\t\t// transform: 'translateZ(0)', // enforce gpu scroll in all agents\n\t\t\t\tgridArea: '1/1',\n\t\t\t},\n\t\t},\n\n\t\t'::before': {\n\t\t\tdisplay: 'none',\n\t\t},\n\t\t'::after': {\n\t\t\tdisplay: 'none',\n\t\t},\n\t\t\n\t\t'::-webkit-scrollbar': {\n\t\t\twidth: rem(.25),\n\t\t\theight: rem(.25),\n\t\t},\n\t\t\n\t\t'@media' : {\n\t\t\t'print' : {\n\t\t\t\toverflow: 'hidden',\n\t\t\t\tcontain: 'none',\n\t\t\t\tmaxHeight: 'unset',\n\t\t\t},\n\t\t},\n\n\t})\n\n}\n","$mol_book2 $mol_scroll\n\tmenu_title \\\n\tsub <= pages /$mol_view\n\tminimal_width 0\n\tPlaceholder $mol_view\n\tGap* $mol_view title \\\n","namespace $ {\n\n\t/**\n\t * Z-index values for layers\n\t * https://page.hyoo.ru/#!=xthcpx_wqmiba\n\t */\n\texport let $mol_layer = $mol_style_prop(\n\t\t'mol_layer',\n\t\t[\n\t\t\t'hover',\n\t\t\t'focus',\n\t\t\t'speck',\n\t\t\t'float',\n\t\t\t'popup',\n\t\t] as const\n\t)\n\n}\n","namespace $ { $mol_style_attach( \"mol/layer/layer.css\",\n \":root {\\n\\t--mol_layer_hover: 1;\\n\\t--mol_layer_focus: 2;\\n\\t--mol_layer_speck: 3;\\n\\t--mol_layer_float: 4;\\n\\t--mol_layer_popup: 5;\\n}\\n\"\n) }","namespace $.$$ {\n\n\t/**\n\t * Root component for adaptivity to various screen sizes. Implements booklet UX.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_book2_demo\n\t */\n\texport class $mol_book2 extends $.$mol_book2 {\n\t\t\n\t\ttitle() {\n\t\t\treturn this.pages().map( page => {\n\t\t\t\ttry {\n\t\t\t\t\treturn page?.title()\n\t\t\t\t} catch( error ) {\n\t\t\t\t\t$mol_fail_log( error )\n\t\t\t\t}\n\t\t\t} ).reverse().filter( Boolean ).join( ' | ' )\n\t\t}\n\t\t\n\t\tmenu_title() {\n\t\t\treturn this.pages()[0]?.title() || this.title()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tsub() {\n\t\t\t\n\t\t\tconst placeholder = this.Placeholder()\n\t\t\tconst next = [ ... this.pages(), placeholder ]\n\t\t\t\n\t\t\tconst prev = $mol_mem_cached( ()=> this.sub() ) ?? []\n\t\t\t\n\t\t\tfor( let i = 1 ; i++ ; ) {\n\t\t\t\t\n\t\t\t\tconst p = prev[ prev.length - i ]\n\t\t\t\tconst n = next[ next.length - i ]\n\t\t\t\t\n\t\t\t\tif( !n ) break\n\n\t\t\t\tif( p === n ) continue\n\t\t\t\tif( n === placeholder ) continue\n\n\t\t\t\tnew this.$.$mol_after_tick( ()=> {\n\t\t\t\t\tconst b = this.dom_node() as HTMLElement\n\t\t\t\t\tconst p = n.dom_node() as HTMLElement\n\t\t\t\t\tb.scroll({\n\t\t\t\t\t\tleft: p.offsetLeft + p.offsetWidth - b.offsetWidth,\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t})\n\t\t\t\t\t// new this.$.$mol_after_timeout( 1000, ()=> n.bring() )\n\t\t\t\t} )\n\t\t\t\t\n\t\t\t\tbreak\n\n\t\t\t}\n\n\t\t\treturn next as readonly $mol_view[]\n\t\t}\n\t\t\n\t\tbring() {\n\t\t\t\n\t\t\tconst pages = this.pages()\n\t\t\t\n\t\t\tif( pages.length ) pages[ pages.length - 1 ].bring()\n\t\t\telse super.bring()\n\t\t\t\n\t\t}\n\n\t}\n\n}\n","namespace $ { $mol_style_attach( \"mol/book2/book2.view.css\",\n \"[mol_book2] {\\n\\tdisplay: flex;\\n\\tflex-flow: row nowrap;\\n\\talign-items: stretch;\\n\\tflex: 1 1 auto;\\n\\talign-self: stretch;\\n\\tmargin: 0;\\n\\t/* box-shadow: 0 0 0 1px var(--mol_theme_line); */\\n\\t/* transform: translateZ(0); */\\n\\ttransition: none;\\n\\tscroll-snap-type: x mandatory;\\n\\t/* padding: 0 1px;\\n\\tscroll-padding: 0 1px;\\n\\tgap: 1px; */\\n}\\n\\n[mol_book2] > * {\\n/* \\tflex: none; */\\n\\tscroll-snap-stop: always;\\n\\tscroll-snap-align: end;\\n\\tposition: relative;\\n\\tmin-height: 100%;\\n\\tmax-height: 100%;\\n\\tmax-width: 100%;\\n\\tflex-shrink: 0;\\n\\tbox-shadow: inset 0 0 0 1px var(--mol_theme_field);\\n}\\n\\n[mol_book2] > *:not(:first-of-type):before,\\n[mol_book2] > *:not(:last-of-type)::after {\\n\\tcontent: '';\\n\\tposition: absolute;\\n\\ttop: 1.5rem;\\n\\twidth: 3px;\\n\\theight: 1rem;\\n\\tbackground: linear-gradient(\\n\\t\\tto bottom,\\n\\t\\tvar(--mol_theme_focus) 0%,\\n\\t\\tvar(--mol_theme_focus) 14%,\\n\\t\\ttransparent 15%,\\n\\t\\ttransparent 42%,\\n\\t\\tvar(--mol_theme_focus) 43%,\\n\\t\\tvar(--mol_theme_focus) 57%,\\n\\t\\ttransparent 58%,\\n\\t\\ttransparent 85%,\\n\\t\\tvar(--mol_theme_focus) 86%,\\n\\t\\tvar(--mol_theme_focus) 100%\\n\\t);\\n\\topacity: .5;\\n\\tz-index: var(--mol_layer_speck);\\n}\\n[mol_book2] > *:not(:first-of-type):before {\\n\\tleft: -1px;\\n}\\n[mol_book2] > *:not(:last-of-type)::after {\\n\\tright: -1px;\\n}\\n\\n:where([mol_book2]) > * {\\n\\tbackground-color: var(--mol_theme_card);\\n\\t/* box-shadow: 0 0 0 1px var(--mol_theme_back); */\\n}\\n\\n[mol_book2] > [mol_book2] {\\n\\tdisplay: contents;\\n}\\n\\n[mol_book2] > *:first-child {\\n\\tscroll-snap-align: start;\\n}\\n\\n[mol_book2] > [mol_view] {\\n\\ttransform: none; /* prevent content clipping */\\n}\\n\\n[mol_book2_placeholder] {\\n\\tflex: 1 1 0;\\n\\tbackground: none;\\n}\\n\\n[mol_book2_gap] {\\n\\tbackground: none;\\n\\tflex-grow: 1;\\n\\tscroll-snap-align: none;\\n\\tmargin-right: -1px;\\n\\tbox-shadow: none;\\n}\\n\\n[mol_book2_gap]::before,\\n[mol_book2_gap]::after {\\n\\tdisplay: none;\\n}\\n\"\n) }","$mol_link $mol_view\n\turi \\\n\tdom_name \\a\n\turi_off \\\n\turi_native null\n\texternal false\n\tattr *\n\t\t^\n\t\thref <= uri_toggle \\\n\t\ttitle <= hint_safe <= hint \\\n\t\ttarget <= target \\_self\n\t\tdownload <= file_name \\\n\t\tmol_link_current <= current false\n\t\trel <= relation \\\n\tsub /$mol_view_content\n\t\t<= title\n\targ *\n\tevent *\n\t\t^\n\t\tclick?event <=> click?event <=> event_click?event null\n","namespace $.$$ {\n\t\n\t/**\n\t * Dynamic hyperlink. It can add, change or remove parameters. A link that leads to the current page has [mol_link_current] attribute set to true.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_link_demo\n\t */\n\texport class $mol_link extends $.$mol_link {\n\t\t\n\t\t@ $mol_mem\n\t\turi_toggle() {\n\t\t\treturn this.current() ? this.uri_off() : this.uri()\n\t\t}\n\n\t\t@ $mol_mem\n\t\turi() {\n\t\t\treturn new this.$.$mol_state_arg( this.state_key() ).link( this.arg() )\n\t\t}\n\n\t\t@ $mol_mem\n\t\turi_off() {\n\t\t\tconst arg2: Record = {}\n\t\t\tfor( let i in this.arg() ) arg2[i] = null\n\t\t\t\n\t\t\treturn new this.$.$mol_state_arg( this.state_key() ).link( arg2 )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\turi_native() {\n\t\t\tconst base = this.$.$mol_state_arg.href()\n\t\t\treturn new URL( this.uri() , base )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcurrent() {\n\n\t\t\tconst base = this.$.$mol_state_arg.href_normal()\n\t\t\tconst target = this.uri_native().toString()\n\n\t\t\tif( base === target ) return true\n\t\t\t\n\t\t\tconst args = this.arg() as Record\n\t\t\t\n\t\t\tconst keys = Object.keys( args ).filter( key => args[ key ] != null )\n\t\t\tif( keys.length === 0 ) return false\n\n\t\t\tfor( const key of keys ) {\n\t\t\t\tif( this.$.$mol_state_arg.value( key ) != args[ key ] ) return false\n\t\t\t}\n\n\t\t\treturn true\n\t\t}\n\n\t\tfile_name() {\n\t\t\treturn null as unknown as string\n\t\t}\n\n\t\tminimal_height() {\n\t\t\treturn Math.max( super.minimal_height(), 24 )\n\t\t}\n\t\t\n\t\texternal() {\n\t\t\treturn this.uri_native().origin !== $mol_dom_context.location.origin\n\t\t}\n\t\t\n\t\ttarget(): '_self' | '_blank' | '_top' | '_parent' | string {\n\t\t\treturn this.external() ? '_blank' : '_self'\n\t\t}\n\n\t\thint_safe() {\n\t\t\ttry {\n\t\t\t\treturn this.hint()\n\t\t\t} catch( error ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\treturn ''\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\tconst { rem } = $mol_style_unit\n\n\t$mol_style_define( $mol_link , {\n\t\t\n\t\ttextDecoration: 'none',\n\t\tcolor: $mol_theme.control,\n\t\tstroke: 'currentcolor',\n\t\tcursor: 'pointer',\n\t\tpadding: $mol_gap.text,\n\t\tboxSizing: 'border-box',\n\t\tposition: 'relative',\n\t\tminWidth: rem(2.5),\n\t\tgap: $mol_gap.space,\n\t\t\n\t\tborder: {\n\t\t\tradius: $mol_gap.round,\n\t\t},\n\n\t\t':hover': {\n\t\t\t\n\t\t\tbackground: {\n\t\t\t\tcolor: $mol_theme.hover,\n\t\t\t},\n\t\t\t\n\t\t},\n\n\t\t':focus-visible': {\n\t\t\t\n\t\t\toutline: 'none',\n\t\t\t\n\t\t\tbackground: {\n\t\t\t\tcolor: $mol_theme.hover,\n\t\t\t},\n\t\t\t\n\t\t},\n\n\t\t// ':has(:focus-visible)': {\n\t\t// \toutline: 'none',\n\t\t// \tbackground: {\n\t\t// \t\tcolor: $mol_theme.hover,\n\t\t// \t}\n\t\t// },\n\t\t\n\t\t':active': {\n\t\t\tcolor: $mol_theme.focus,\n\t\t},\n\n\t\t'@': {\n\t\t\tmol_link_current: {\n\t\t\t\t'true': {\n\t\t\t\t\tcolor: $mol_theme.current,\n\t\t\t\t\ttextShadow: '0 0',\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\n\t} )\n\n}\n","$mol_image $mol_view\n\tdom_name \\img\n\tfield *any\n\t\t^\n\t\tsrc <= uri \\\n\t\talt <= title\n\t\tloading <= loading \\eager\n\t\tdecoding <= decoding \\async\n\t\tcrossOrigin <= cors null\n\tattr *any\n\t\t^\n\t\twidth <= natural_width 0\n\t\theight <= natural_height 0\n\tevent *any\n\t\tload? <=> load? null\n\tminimal_width 16\n\tminimal_height 16\n","namespace $.$$ {\n\texport class $mol_image extends $.$mol_image {\n\t\t\n\t\t@ $mol_mem\n\t\tnatural_width( next?: null ) {\n\t\t\t\n\t\t\tconst dom = this.dom_node() as HTMLImageElement\n\t\t\tif( dom.naturalWidth ) return dom.naturalWidth\n\t\t\t\n\t\t\tconst found = this.uri().match( /\\bwidth=(\\d+)/ )\n\t\t\treturn found ? Number( found[1] ) : null!\n\t\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tnatural_height( next?: null ) {\n\t\t\t\n\t\t\tconst dom = this.dom_node() as HTMLImageElement\n\t\t\tif( dom.naturalHeight ) return dom.naturalHeight\n\t\t\t\n\t\t\tconst found = this.uri().match( /\\bheight=(\\d+)/ )\n\t\t\treturn found ? Number( found[1] ) : null!\n\t\t\t\n\t\t}\n\t\t\n\t\tload() {\n\t\t\tthis.natural_width( null )\n\t\t\tthis.natural_height( null )\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/image/image.view.css\",\n \"[mol_image] {\\n\\tborder-radius: var(--mol_gap_round);\\n\\toverflow: hidden;\\n\\tflex: 0 1 auto;\\n\\tmax-width: 100%;\\n\\tobject-fit: cover;\\n\\theight: fit-content;\\n}\\n\"\n) }","$mol_link_iconed $mol_link\n\tsub /\n\t\t<= Icon $mol_image\n\t\t\turi <= icon \\\n\t\t\ttitle \\\n\tcontent /\n\t\t<= title <= uri\n\thost \\\n","namespace $.$$ {\n\n\texport class $mol_link_iconed extends $.$mol_link_iconed {\n\n\t\t@ $mol_mem\n\t\ticon() {\n\t\t\treturn `https://favicon.yandex.net/favicon/${ this.host() }?color=0,0,0,0&size=32&stub=1`\n\t\t\t// return `https://api.faviconkit.com/${ this.host() }/16`\n\t\t}\n\n\t\t@ $mol_mem\n\t\thost() {\n\t\t\tconst base = this.$.$mol_state_arg.href()\n\t\t\tconst url = new URL( this.uri() , base )\n\t\t\treturn url.hostname\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\ttitle() {\n\t\t\tconst uri = this.uri()\n\t\t\tconst host = this.host()\n\t\t\tconst suffix = ( host ? uri.split( this.host() , 2 )[1] : uri )?.replace( /^[\\/\\?#!]+/, '' )\n\t\t\treturn decodeURIComponent( suffix || host ).replace( /^\\//, ' ' )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tsub() {\n\t\t\treturn [\n\t\t\t\t... this.host() ? [ this.Icon() ] : [],\n\t\t\t\t... this.content() ? [ ' ', ... this.content() ] : [],\n\t\t\t] as readonly any[]\n\t\t}\n\n\t}\n\n}\n","namespace $ { $mol_style_attach( \"mol/link/iconed/iconed.view.css\",\n \"[mol_link_iconed] {\\n\\talign-items: baseline;\\n\\tdisplay: inline-flex;\\n\\tpadding: var(--mol_gap_text);\\n}\\n\\n[mol_link_iconed_icon] {\\n\\tbox-shadow: none;\\n\\theight: 1.5em;\\n\\twidth: 1em;\\n\\tflex: 0 0 auto;\\n\\tdisplay: inline-block;\\n\\talign-self: normal;\\n\\tvertical-align: top;\\n\\tborder-radius: 0;\\n\\tobject-fit: scale-down;\\n\\topacity: .75;\\n}\\n\\n[mol_theme=\\\"$mol_theme_dark\\\"] [mol_link_iconed_icon] {\\n\\tfilter: var(--mol_theme_image);\\n}\\n\"\n) }","$mol_speck $mol_view\n\tattr *\n\t\t^\n\t\tmol_theme <= theme \\$mol_theme_accent\n\tstyle *\n\t\t^\n\t\tminHeight \\1em\n\tsub /\n\t\t<= value null\n","namespace $ { $mol_style_attach( \"mol/speck/speck.view.css\",\n \"[mol_speck] {\\n\\tfont-size: .625rem;\\n\\tborder-radius: 1rem;\\n\\tmargin: -0.5rem -0.25rem;\\n\\talign-self: flex-start;\\n\\tmin-height: 1em;\\n\\tmin-width: .5em;\\n\\tvertical-align: sub;\\n\\tpadding: .25em .5em;\\n\\tposition: absolute;\\n\\tz-index: var(--mol_layer_speck);\\n\\ttext-align: center;\\n\\tline-height: 1;\\n\\tdisplay: inline-block;\\n\\twhite-space: nowrap;\\n\\ttext-overflow: ellipsis;\\n\\tuser-select: none;\\n}\\n\"\n) }","$mol_button $mol_view\n\tenabled true\n\tclick?event null\n\tevent_click?event null\n\tevent *\n\t\t^\n\t\tclick?event <=> event_activate?event null\n\t\tdblclick?event <=> clicks?event null\n\t\tkeydown?event <=> event_key_press?event null \n\tattr *\n\t\t^\n\t\tdisabled <= disabled false\n\t\trole \\button\n\t\ttabindex <= tab_index 0\n\t\ttitle <= hint_safe <= hint \\\n\tsub /$mol_view_content\n\t\t<= title\n\tSpeck $mol_speck\n\t\tvalue <= error \\\n","namespace $ {\n\t/**\n\t* Key names code for hotkey\n\t* @see [mol_hotkey](../../hotkey/hotkey.view.ts)\n\t*/\n\texport enum $mol_keyboard_code {\n\t\tbackspace = 8,\n\t\ttab = 9,\n\t\tenter = 13,\n\t\tshift = 16,\n\t\tctrl = 17,\n\t\talt = 18,\n\t\tpause = 19,\n\t\tcapsLock = 20,\n\t\tescape = 27,\n\t\tspace = 32,\n\t\tpageUp = 33,\n\t\tpageDown = 34,\n\t\tend = 35,\n\t\thome = 36,\n\t\tleft = 37,\n\t\tup = 38,\n\t\tright = 39,\n\t\tdown = 40,\n\t\tinsert = 45,\n\t\tdelete = 46,\n\t\tkey0 = 48,\n\t\tkey1 = 49,\n\t\tkey2 = 50,\n\t\tkey3 = 51,\n\t\tkey4 = 52,\n\t\tkey5 = 53,\n\t\tkey6 = 54,\n\t\tkey7 = 55,\n\t\tkey8 = 56,\n\t\tkey9 = 57,\n\t\tA = 65,\n\t\tB = 66,\n\t\tC = 67,\n\t\tD = 68,\n\t\tE = 69,\n\t\tF = 70,\n\t\tG = 71,\n\t\tH = 72,\n\t\tI = 73,\n\t\tJ = 74,\n\t\tK = 75,\n\t\tL = 76,\n\t\tM = 77,\n\t\tN = 78,\n\t\tO = 79,\n\t\tP = 80,\n\t\tQ = 81,\n\t\tR = 82,\n\t\tS = 83,\n\t\tT = 84,\n\t\tU = 85,\n\t\tV = 86,\n\t\tW = 87,\n\t\tX = 88,\n\t\tY = 89,\n\t\tZ = 90,\n\t\tmetaLeft = 91,\n\t\tmetaRight = 92,\n\t\tselect = 93,\n\t\tnumpad0 = 96,\n\t\tnumpad1 = 97,\n\t\tnumpad2 = 98,\n\t\tnumpad3 = 99,\n\t\tnumpad4 = 100,\n\t\tnumpad5 = 101,\n\t\tnumpad6 = 102,\n\t\tnumpad7 = 103,\n\t\tnumpad8 = 104,\n\t\tnumpad9 = 105,\n\t\tmultiply = 106,\n\t\tadd = 107,\n\t\tsubtract = 109,\n\t\tdecimal = 110,\n\t\tdivide = 111,\n\t\tF1 = 112,\n\t\tF2 = 113,\n\t\tF3 = 114,\n\t\tF4 = 115,\n\t\tF5 = 116,\n\t\tF6 = 117,\n\t\tF7 = 118,\n\t\tF8 = 119,\n\t\tF9 = 120,\n\t\tF10 = 121,\n\t\tF11 = 122,\n\t\tF12 = 123,\n\t\tnumLock = 144,\n\t\tscrollLock = 145,\n\t\tsemicolon = 186,\n\t\tequals = 187,\n\t\tcomma = 188,\n\t\tdash = 189,\n\t\tperiod = 190,\n\t\tforwardSlash = 191,\n\t\tgraveAccent = 192,\n\t\tbracketOpen = 219,\n\t\tslashBack = 220,\n\t\tslashBackLeft = 226,\n\t\tbracketClose = 221,\n\t\tquoteSingle = 222\n\t}\n}\n","namespace $.$$ {\n\t\n\t/**\n\t * Simple button.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_button_demo\n\t */\n\texport class $mol_button extends $.$mol_button {\n\n\t\t@ $mol_mem\n\t\tstatus( next = [ null as any ] ) { return next }\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\tevent_activate( next : Event ) {\n\t\t\t\n\t\t\tif( !next ) return\n\t\t\tif( !this.enabled() ) return\n\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tthis.event_click( next )\n\t\t\t\tthis.click( next )\n\t\t\t\tthis.status([ null ])\n\t\t\t\t\n\t\t\t} catch( error: any ) {\n\t\t\t\t\n\t\t\t\tPromise.resolve().then( ()=> this.status([ error ]) )\n\t\t\t\t$mol_fail_hidden( error )\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\t\t\n\t\tevent_key_press ( event: KeyboardEvent ) { \n\t\t\tif( event.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\treturn this.event_activate( event )\n\t\t\t}\n\t\t} \n\t\t\n\t\ttab_index() {\n\t\t\treturn this.enabled() ? super.tab_index() : -1\n\t\t}\n\n\t\terror() {\n\n\t\t\tconst [ error ] = this.status()\n\t\t\tif( !error ) return ''\n\n\t\t\tif( error instanceof Promise ) {\n\t\t\t\treturn $mol_fail_hidden( error )\n\t\t\t}\n\t\t\t\n\t\t\treturn String( error.message ?? error )\n\n\t\t}\n\t\t\n\t\thint_safe() {\n\t\t\ttry {\n\t\t\t\treturn this.hint()\n\t\t\t} catch( error ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\treturn ''\n\t\t\t}\n\t\t}\n\n\t\tsub_visible() {\n\t\t\treturn [\n\t\t\t\t... this.error() ? [ this.Speck() ] : [] ,\n\t\t\t\t... this.sub() ,\n\t\t\t]\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/button/button.view.css\",\n \"[mol_button] {\\n\\tborder: none;\\n\\tfont: inherit;\\n\\tdisplay: inline-flex;\\n\\tflex-shrink: 0;\\n\\ttext-decoration: inherit;\\n\\tcursor: inherit;\\n\\tposition: relative;\\n\\tbox-sizing: border-box;\\n\\tword-break: normal;\\n\\tcursor: default;\\n\\tuser-select: none;\\n\\tborder-radius: var(--mol_gap_round);\\n\\tbackground: transparent;\\n\\tcolor: inherit;\\n}\\n\\n[mol_button]:where(:not(:disabled)):hover {\\n\\tz-index: var(--mol_layer_hover);\\n}\\n\\n[mol_button]:focus-visible {\\n\\toutline: none;\\n\\tz-index: var(--mol_layer_focus);\\n}\\n\"\n) }","$mol_button_typed $mol_button\n\tminimal_height 40\n\tminimal_width 40\n","namespace $ { $mol_style_attach( \"mol/button/typed/typed.view.css\",\n \"[mol_button_typed] {\\n\\talign-content: center;\\n\\talign-items: center;\\n\\tpadding: var(--mol_gap_text);\\n\\tborder-radius: var(--mol_gap_round);\\n\\tgap: var(--mol_gap_space);\\n\\tuser-select: none;\\n\\tcursor: pointer;\\n}\\n\\n[mol_button_typed][disabled] {\\n\\tpointer-events: none;\\n}\\n\\n[mol_button_typed]:hover ,\\n[mol_button_typed]:focus-visible {\\n\\tbox-shadow: inset 0 0 0 10rem var(--mol_theme_hover);\\n}\\n\\n[mol_button_typed]:active {\\n\\tcolor: var(--mol_theme_focus);\\n}\\n\\n\"\n) }","$mol_button_minor $mol_button_typed\n","namespace $ { $mol_style_attach( \"mol/button/minor/minor.view.css\",\n \"[mol_button_minor] {\\n\\tcolor: var(--mol_theme_control);\\n}\\n\\n[mol_button_minor][disabled] {\\n\\tcolor: var(--mol_theme_shade);\\n}\\n\"\n) }","$mol_check $mol_button_minor\n\tattr *\n\t\t^\n\t\tmol_check_checked <= checked? false\n\t\taria-checked <= aria_checked \\false\n\t\trole <= aria_role \\checkbox\n\tsub /$mol_view_content\n\t\t<= Icon null\n\t\t<= label /\n\t\t\t<= Title $mol_view\n\t\t\t\tsub /\n\t\t\t\t\t<= title \\\n","namespace $ {\n\t\n\texport function $mol_maybe< Value >( value : Value | null | undefined ) : Value[] {\n\t\treturn ( value == null ) ? [] : [ value ]\n\t}\n\t\n}\n","namespace $ { $mol_style_attach( \"mol/check/check.css\",\n \"[mol_check] {\\n\\tflex: 0 0 auto;\\n\\tjustify-content: flex-start;\\n\\talign-content: center;\\n\\t/* align-items: flex-start; */\\n\\tborder: none;\\n\\tfont-weight: inherit;\\n\\tbox-shadow: none;\\n\\ttext-align: left;\\n\\tdisplay: inline-flex;\\n\\tflex-wrap: nowrap;\\n}\\n\\n[mol_check_title] {\\n\\tflex-shrink: 1;\\n}\\n\"\n) }","namespace $.$$ {\n\n\t/**\n\t * Checkbox UI component. See Variants for more concrete implementations.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_check_box_demo\n\t */\n\texport class $mol_check extends $.$mol_check {\n\n\t\tclick( next? : Event ) {\n\t\t\tif( next?.defaultPrevented ) return\n\t\t\tthis.checked( !this.checked() )\n\t\t\tif( next ) next.preventDefault()\n\t\t}\n\n\t\tsub() {\n\t\t\treturn [\n\t\t\t\t... $mol_maybe( this.Icon() ) ,\n\t\t\t\t... this.label() ,\n\t\t\t] as readonly $mol_view_content[]\n\t\t}\n\n\t\tlabel() {\n\t\t\treturn this.title() ? super.label() : []\n\t\t}\n\t\t\n\t\taria_checked() {\n\t\t\treturn String( this.checked() )\n\t\t}\n\n\t}\n}\n","$mol_check_icon $mol_check\n","namespace $ { $mol_style_attach( \"mol/check/icon/icon.view.css\",\n \"[mol_check_icon]:where([mol_check_checked]) {\\n\\tcolor: var(--mol_theme_current);\\n}\\n\"\n) }","$mol_svg $mol_view\n\tdom_name \\svg\n\tdom_name_space \\http://www.w3.org/2000/svg\n\tfont_size 16\n\tfont_family \\\n\tstyle_size *\n","namespace $ {\n\t\n\t/** State of time moment */\n\texport class $mol_state_time extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic task( precision: number, reset?: null ): $mol_after_timeout | $mol_after_frame {\n\t\t\t\n\t\t\tif( precision ) {\n\t\t\t\treturn new $mol_after_timeout( precision, ()=> this.task( precision, null ) )\n\t\t\t} else {\n\t\t\t\treturn new $mol_after_frame( ()=> this.task( precision, null ) )\n\t\t\t}\n\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic now( precision: number ) {\n\t\t\tthis.task( precision )\n\t\t\treturn Date.now()\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $.$$ {\n\t/** Base SVG component to display SVG images or icons. */\n\texport class $mol_svg extends $.$mol_svg {\n\t\t@$mol_mem\n\t\tcomputed_style() {\n\t\t\tconst win = this.$.$mol_dom_context\n\t\t\tconst style = win.getComputedStyle(this.dom_node()) as Record\n\n\t\t\tif(!style['font-size']) $mol_state_time.now( 0 )\n\n\t\t\treturn style\n\t\t}\n\n\t\t@$mol_mem\n\t\tfont_size(): number {\n\t\t\treturn parseInt(this.computed_style()['font-size']) || 16\n\t\t}\n\n\t\t@$mol_mem\n\t\tfont_family() {\n\t\t\treturn this.computed_style()['font-family']\n\t\t}\n\n\t}\n}\n","$mol_svg_root $mol_svg\n\tdom_name \\svg\n\tattr *\n\t\t^\n\t\tviewBox <= view_box \\0 0 100 100\n\t\tpreserveAspectRatio <= aspect \\xMidYMid\n","namespace $ { $mol_style_attach( \"mol/svg/root/root.view.css\",\n \"[mol_svg_root] {\\n\\toverflow: hidden;\\n}\\n\"\n) }","$mol_svg_path $mol_svg\n\tdom_name \\path\n\tattr *\n\t\t^\n\t\td <= geometry \\\n\n","$mol_icon $mol_svg_root\n\tview_box \\0 0 24 24\n\tminimal_width 16\n\tminimal_height 16\n\tsub /\n\t\t<= Path $mol_svg_path\n\t\t\tgeometry <= path \\\n","namespace $ { $mol_style_attach( \"mol/icon/icon.view.css\",\n \"[mol_icon] {\\n\\tfill: currentColor;\\n\\tstroke: none;\\n\\twidth: 1em;\\n\\theight: 1.5em;\\n\\tflex: 0 0 auto;\\n\\tvertical-align: top;\\n\\tdisplay: inline-block;\\n\\tfilter: drop-shadow(0px 1px 1px var(--mol_theme_back));\\n\\ttransform-origin: center;\\n}\\n\\n[mol_icon_path] {\\n\\ttransform-origin: center;\\n}\\n\"\n) }","$mol_icon_brightness_4 $mol_icon path \\M12,18C11.11,18 10.26,17.8 9.5,17.45C11.56,16.5 13,14.42 13,12C13,9.58 11.56,7.5 9.5,6.55C10.26,6.2 11.11,6 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z\n","namespace $ {\n\t\n\texport interface $mol_locale_dict {\n\t\t[ key : string ] : string\n\t}\n\t\n\t/**\n\t * Localisation in $mol framework\n\t * @see https://mol.hyoo.ru/#!section=docs/=s5aqnb_odub8l\n\t */\n\texport class $mol_locale extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic lang_default() {\n\t\t\treturn 'en'\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic lang( next? : string ) {\n\t\t\treturn this.$.$mol_state_local.value( 'locale' , next ) || $mol_dom_context.navigator.language.replace( /-.*/ , '' ) || this.lang_default()\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic source( lang : string ) {\n\t\t\treturn JSON.parse( this.$.$mol_file.relative( `web.locale=${ lang }.json` ).text().toString() )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic texts( lang : string , next? : $mol_locale_dict ) : $mol_locale_dict {\n\t\t\tif( next ) return next\n\t\t\t\n\t\t\ttry {\n\t\t\t\treturn this.source( lang ).valueOf()\n\t\t\t} catch( error: any ) {\n\t\t\t\tif( $mol_fail_catch( error ) ) {\n\t\t\t\t\tconst def = this.lang_default()\n\t\t\t\t\tif( lang === def ) throw error\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic text( key : string ): string {\n\t\t\t\n\t\t\tconst lang = this.lang()\n\n\t\t\tconst target = this.texts( lang )[ key ]\n\t\t\tif( target ) return target\n\t\t\t\n\t\t\tthis.warn( key )\n\t\t\t\n\t\t\tconst en = this.texts( 'en' )[ key ]\n\t\t\tif( !en ) return key\n\t\t\t\n\t\t\t// try {\n\t\t\t// \treturn $mol_wire_sync( $hyoo_lingua_translate ).call( this.$, lang, en )\n\t\t\t// } catch( error ) {\n\t\t\t// \t$mol_fail_log( error )\n\t\t\t// }\n\t\t\t\n\t\t\treturn en\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic warn( key : string ) {\n\t\t\tconsole.warn( `Not translated to \"${ this.lang() }\": ${ key }` )\n\t\t\treturn null\n\t\t}\n\t\t\n\t}\n\t\n}\n","$mol_lights_toggle $mol_check_icon\n\tIcon <= Lights_icon $mol_icon_brightness_4\n\thint @ \\Toggle lights\n\tchecked? <=> lights? false\n","\n\t\t()\n\t\t\tthis\n\t\t\t[] \\$\n\t\t\t[] \\$mol_locale\n\t\t\t[] \\text\n\t\t\t(,) #key\n\t","namespace $.$$ {\n\t/**\n\t * Toggle for Switcher between light/dark themes (usually for `mol_theme_auto` plugin).\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_lights_demo\n\t */\n\texport class $mol_lights_toggle extends $.$mol_lights_toggle {\n\t\tlights( next? : boolean ) {\n\t\t\treturn this.$.$mol_lights( next )\n\t\t}\n\t}\n}\n","$mol_icon_upload $mol_icon path \\M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\n","$mol_button_open $mol_button_minor\n\tsub /\n\t\t<= Icon $mol_icon_upload\n\t\t<= Native $mol_button_open_native\n\t\t\tfiles?next <=> files?next /\n\t\t\taccept <= accept \\\n\t\t\tmultiple <= multiple true\n\n$mol_button_open_native $mol_view\n\tdom_name \\input\n\tfiles?next /\n\tattr *\n\t\ttype \\file\n\t\taccept <= accept \\\n\t\tmultiple <= multiple true\n\tevent *\n\t\tchange?next <=> picked?next null\n","namespace $.$$ {\n\n\t/**\n\t * File open button\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_button_demo\n\t */\n\texport class $mol_button_open_native extends $.$mol_button_open_native {\n\t\t\n\t\tdom_node() {\n\t\t\treturn super.dom_node() as HTMLInputElement\n\t\t}\n\t\t\n\t\tpicked() {\n\t\t\t\n\t\t\tconst files = this.dom_node().files\n\t\t\tif( !files || !files.length ) return\n\t\t\t\n\t\t\tthis.files([ ... files ])\n\t\t\t\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/button/open/open.view.css\",\n \"[mol_button_open_native] {\\n\\tposition: absolute;\\n\\tleft: 0;\\n\\ttop: -100%;\\n\\twidth: 100%;\\n\\theight: 200%;\\n\\tcursor: pointer;\\n\\topacity: 0;\\n}\\n\"\n) }","$mol_stack $mol_view\n","namespace $ { $mol_style_attach( \"mol/stack/stack.view.css\",\n \"[mol_stack] {\\n\\tdisplay: grid;\\n\\t/* width: max-content; */\\n\\t/* height: max-content; */\\n\\talign-items: flex-start;\\n\\tjustify-items: flex-start;\\n}\\n\\n[mol_stack] > * {\\n\\tgrid-area: 1/1;\\n}\\n\"\n) }","namespace $ {\n\n\t/** Creates lexer by dictionary of lexems. Lexem that started first wins. Then lexem that declared earlier wins. Use regexp capture to take parts of token. */\n\texport class $mol_syntax2< Lexems extends { [ name : string ] : RegExp } = {} > {\n\t\t\n\t\tconstructor(\n\t\t\tpublic lexems : Lexems\n\t\t) {\n\n\t\t\tfor( let name in lexems ) {\n\t\t\t\tthis.rules.push({\n\t\t\t\t\tname : name ,\n\t\t\t\t\tregExp : lexems[ name ] ,\n\t\t\t\t\tsize : RegExp( '^$|' + lexems[ name ].source ).exec( '' )!.length - 1 , \n\t\t\t\t})\n\t\t\t}\n\n\t\t\tconst parts = '(' + this.rules.map( rule => rule.regExp.source ).join( ')|(' ) + ')'\n\t\t\tthis.regexp = RegExp( `([\\\\s\\\\S]*?)(?:(${ parts })|$(?![^]))` , 'gmu' ) \n\t\t\t\n\t\t}\n\t\t\n\t\trules = [] as Array<{\n\t\t\tregExp : RegExp ,\n\t\t\tname : string ,\n\t\t\tsize : number\n\t\t}>\n\t\t\n\t\tregexp : RegExp\n\n\t\ttokenize(\n\t\t\ttext : string ,\n\t\t\thandle : ( name : string , found : string , chunks : string[] , offset : number )=> void ,\n\t\t) {\n\t\t\t\n\t\t\tlet end = 0\n\t\t\t\t\n\t\t\tlexing : while( end < text.length ) {\n\n\t\t\t\tconst start = end\n\n\t\t\t\tthis.regexp.lastIndex = start\n\t\t\t\tvar found = this.regexp.exec( text )!\n\t\t\t\t\n\t\t\t\tend = this.regexp.lastIndex\n\t\t\t\tif( start === end ) throw new Error( 'Empty token' )\n\t\t\t\t\n\t\t\t\tvar prefix = found[ 1 ]\n\t\t\t\tif( prefix ) handle( '' , prefix , [ prefix ] , start )\n\t\t\t\t\n\t\t\t\tvar suffix = found[ 2 ]\n\t\t\t\tif( !suffix ) continue\n\n\t\t\t\tlet offset = 4\n\t\t\t\tfor( let rule of this.rules ) {\n\n\t\t\t\t\tif( found[ offset - 1 ] ) {\n\t\t\t\t\t\thandle( rule.name , suffix , found.slice( offset, offset + rule.size ) , start + prefix.length )\n\t\t\t\t\t\tcontinue lexing\n\t\t\t\t\t}\n\n\t\t\t\t\toffset += rule.size + 1\n\t\t\t\t}\n\n\t\t\t\t$mol_fail( new Error( '$mol_syntax2 is broken' ) )\n\n\t\t\t}\n\n\t\t}\n\t\t\n\t\tparse(\n\t\t\ttext : string ,\n\t\t\thandlers : { [ key in keyof Lexems | '' ] : ( found : string , chunks : string[] , offset : number )=> void } ,\n\t\t) : void {\n\t\t\tthis.tokenize( text , ( name , ...args )=> handlers[ name ]( ... args ) )\n\t\t}\n\n\t}\n\t\n}\n","$mol_paragraph $mol_view\n\tline_height 24\n\tletter_width 7\n\twidth_limit +Infinity\n\trow_width 0\n\tsub / <= title\n","namespace $.$$ {\n\n\texport class $mol_paragraph extends $.$mol_paragraph {\n\n\t\t@ $mol_mem\n\t\tmaximal_width() {\n\n\t\t\tlet width = 0\n\t\t\tconst letter = this.letter_width()\n\t\t\t\n\t\t\tfor( const kid of this.sub() ) {\n\t\t\t\t\n\t\t\t\tif( !kid ) continue\n\t\t\t\t\n\t\t\t\tif( kid instanceof $mol_view ) {\n\t\t\t\t\twidth += kid.maximal_width()\n\t\t\t\t} else if( typeof kid !== 'object' ) {\n\t\t\t\t\twidth += String( kid ).length * letter\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t\n\t\t\treturn width\n\n\t\t}\n\n\t\twidth_limit() {\n\t\t\treturn this.$.$mol_window.size().width\n\t\t}\n\t\t\n\t\tminimal_width() {\n\t\t\treturn this.letter_width()\n\t\t}\n\n\t\t@ $mol_mem\n\t\trow_width() {\n\t\t\treturn Math.max( Math.min( this.width_limit() , this.maximal_width() ) , this.letter_width() )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\t\t\treturn Math.max( 1 , Math.ceil( this.maximal_width() / this.row_width() ) ) * this.line_height()\n\t\t}\n\n\t}\n\n}\n","namespace $ { $mol_style_attach( \"mol/paragraph/paragraph.view.css\",\n \":where([mol_paragraph]) {\\n\\tmargin: 0;\\n\\tmax-width: 100%;\\n}\\n\"\n) }","$mol_dimmer $mol_paragraph\n\thaystack \\\n\tneedle \\\n\tsub <= parts /$mol_view_content\n\tLow* $mol_paragraph\n\t\tsub /\n\t\t\t<= string* \\\n\tHigh* $mol_paragraph\n\t\tsub /\n\t\t\t<= string* \\\n","interface String {\n\t\n\tmatch< RE extends RegExp >( regexp: RE ): ReturnType<\n\t\tRE[ typeof Symbol.match ]\n\t>\n\t\n matchAll< RE extends RegExp >( regexp: RE ): ReturnType<\n\t\tRE[ typeof Symbol.matchAll ]\n\t>\n\t\n}\n\nnamespace $ {\n\t\n\ttype Groups_to_params = {\n\t\t[P in keyof T]?: T[P] | boolean | undefined;\n\t};\t\n\n\texport type $mol_regexp_source =\n\t| number\n\t| string\n\t| RegExp\n\t| { [ key in string ] : $mol_regexp_source }\n\t| readonly[ $mol_regexp_source , ... $mol_regexp_source[] ]\n\n\texport type $mol_regexp_groups< Source extends $mol_regexp_source >\n\t\n\t\t= Source extends number\n\t\t? {}\n\t\t\n\t\t: Source extends string\n\t\t? {}\n\t\t\n\t\t: Source extends $mol_regexp_source[]\n\t\t? $mol_type_merge< $mol_type_intersect< {\n\t\t\t[ key in Extract< keyof Source , number > ] : $mol_regexp_groups< Source[ key ] >\n\t\t}[ Extract< keyof Source , number > ] > >\n\t\t\n\t\t: Source extends RegExp\n\t\t? Record< string, string > extends NonNullable< NonNullable< ReturnType< Source['exec'] > >[ 'groups' ] >\n\t\t\t? {}\n\t\t\t: NonNullable< NonNullable< ReturnType< Source['exec'] > >[ 'groups' ] >\n\t\t\n\t\t: Source extends { readonly [ key in string ] : $mol_regexp_source }\n\t\t? $mol_type_merge< $mol_type_intersect< {\n\t\t\t[ key in keyof Source ] :\n\t\t\t\t$mol_type_merge<\n\t\t\t\t\t& $mol_type_override<\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treadonly [ k in Extract< keyof Source , string > ]: string\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treadonly [ k in key ]:\n\t\t\t\t\t\t\t\tSource[ key ] extends string\n\t\t\t\t\t\t\t\t\t? Source[ key ]\n\t\t\t\t\t\t\t\t\t: string\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t& $mol_regexp_groups< Source[ key ] >\n\t\t\t\t>\n\t\t}[ keyof Source ] > >\n\n\t\t: never\n\t\t\n\t/** Type safe reguar expression builder */\n\texport class $mol_regexp< Groups extends Record< string , string > > extends RegExp {\n\t\t\n\t\t/** Prefer to use $mol_regexp.from */\n\t\tconstructor( source : string , flags : string = 'gsu' , readonly groups : ( Extract< keyof Groups , string > )[] = [] ) {\n\t\t\tsuper( source , flags )\n\t\t}\n\t\t\n\t\t*[Symbol.matchAll] (str:string): RegExpStringIterator< RegExpMatchArray & $mol_type_override< RegExpMatchArray, { groups?: { [ key in keyof Groups ] : string } } > > {\n\t\t\tconst index = this.lastIndex\n\t\t\tthis.lastIndex = 0\n\t\t\ttry {\n\t\t\t\twhile ( this.lastIndex < str.length ) {\n\t\t\t\t\tconst found = this.exec(str)\n\t\t\t\t\tif( !found ) break\n\t\t\t\t\tyield found\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.lastIndex = index\n\t\t\t}\n\t\t}\n\t\t\n\t\t/** Parses input and returns found capture groups or null */\n\t\t[ Symbol.match ]( str : string ): null | RegExpMatchArray {\n\t\t\tconst res = [ ... this[Symbol.matchAll]( str ) ].filter( r => r.groups ).map( r => r[0] )\n\t\t\tif( !res.length ) return null\n\t\t\treturn res as RegExpMatchArray\n\t\t}\n\t\t\n\t\t/** Splits string by regexp edges */\n\t\t[ Symbol.split ]( str : string ): string[] {\n\t\t\t\n\t\t\tconst res = [] as string[]\n\t\t\tlet token_last = null\n\t\t\t\n\t\t\tfor( let token of this[Symbol.matchAll]( str ) ) {\n\t\t\t\tif( token.groups && ( token_last ? token_last.groups : true ) ) res.push( '' )\n\t\t\t\tres.push( token[0] )\n\t\t\t\ttoken_last = token\n\t\t\t}\n\t\t\t\n\t\t\tif( !res.length ) res.push( '' )\n\t\t\t\n\t\t\treturn res\n\t\t}\n\t\t\n\t\ttest( str : string ): boolean {\n\t\t\treturn Boolean( str.match( this) )\n\t\t}\n\t\t\n\t\texec( str : string ): RegExpExecArray & $mol_type_override< RegExpExecArray , { groups?: { [ key in keyof Groups ] : string } } > | null {\n\t\t\t\n\t\t\tconst from = this.lastIndex\n\t\t\tif( from >= str.length ) return null\n\t\t\t\n\t\t\tconst res = super.exec( str )\n\t\t\tif( res === null ) {\n\t\t\t\tthis.lastIndex = str.length\n\t\t\t\tif( !str ) return null\n\t\t\t\treturn Object.assign( [ str.slice( from ) ], {\n\t\t\t\t\tindex: from,\n\t\t\t\t\tinput: str,\n\t\t\t\t} ) as any\n\t\t\t}\n\n\t\t\tif( from === this.lastIndex ) {\n\t\t\t\t$mol_fail( new Error( 'Captured empty substring' ) )\n\t\t\t}\n\n\t\t\ttype Token = { [ key in keyof Groups ] : string } & { [ key : number ] : string }\n\t\t\tconst groups = {} as Token\n\t\t\t\n\t\t\tconst skipped = str.slice( from , this.lastIndex - res[0].length )\n\t\t\tif( skipped ) {\n\t\t\t\tthis.lastIndex = this.lastIndex - res[0].length\n\t\t\t\treturn Object.assign( [ skipped ], {\n\t\t\t\t\tindex: from,\n\t\t\t\t\tinput: res.input,\n\t\t\t\t} ) as any\n\t\t\t}\n\t\t\t\n\t\t\tfor( let i = 0 ; i < this.groups.length ; ++i ) {\n\t\t\t\tconst group = this.groups[ i ]\n\t\t\t\tgroups[ group ] = groups[ group ] || res[ i + 1 ] || '' as any\n\t\t\t}\n\n\t\t\treturn Object.assign( res, { groups } )\n\t\t}\n\t\t\n\t\tgenerate(\n\t\t\tparams: Groups_to_params< Groups >\n\t\t): string | null {\n\t\t\treturn null\n\t\t}\n\t\t\n\t\tget native() {\n\t\t\treturn new RegExp( this.source, this.flags )\n\t\t}\n\n\t\t/** Makes regexp that non-greedy repeats this pattern from min to max count */\n\t\tstatic repeat<\n\t\t\tSource extends $mol_regexp_source\n\t\t>(\n\t\t\tsource : Source ,\n\t\t\tmin = 0 ,\n\t\t\tmax = Number.POSITIVE_INFINITY ,\n\t\t) : $mol_regexp< $mol_regexp_groups< Source > > {\n\t\n\t\t\tconst regexp = $mol_regexp.from( source )\n\t\t\tconst upper = Number.isFinite( max ) ? max : ''\n\t\t\t\n\t\t\tconst str = `(?:${ regexp.source }){${ min },${ upper }}?`\n\t\t\tconst regexp2 = new $mol_regexp( str , regexp.flags , regexp.groups )\n\t\t\t\n\t\t\tregexp2.generate = params => {\n\t\t\t\tconst res = regexp.generate( params )\n\t\t\t\tif( res ) return res\n\t\t\t\tif( min > 0 ) return res\n\t\t\t\treturn ''\n\t\t\t}\n\t\n\t\t\treturn regexp2\n\t\n\t\t}\n\n\t\t/** Makes regexp that greedy repeats this pattern from min to max count */\n\t\tstatic repeat_greedy<\n\t\t\tSource extends $mol_regexp_source\n\t\t>(\n\t\t\tsource : Source ,\n\t\t\tmin = 0 ,\n\t\t\tmax = Number.POSITIVE_INFINITY ,\n\t\t) : $mol_regexp< $mol_regexp_groups< Source > > {\n\t\n\t\t\tconst regexp = $mol_regexp.from( source )\n\t\t\tconst upper = Number.isFinite( max ) ? max : ''\n\t\t\t\n\t\t\tconst str = `(?:${ regexp.source }){${ min },${ upper }}`\n\t\t\tconst regexp2 = new $mol_regexp( str , regexp.flags , regexp.groups )\n\t\t\t\n\t\t\tregexp2.generate = params => {\n\t\t\t\tconst res = regexp.generate( params )\n\t\t\t\tif( res ) return res\n\t\t\t\tif( min > 0 ) return res\n\t\t\t\treturn ''\n\t\t\t}\n\t\n\t\t\treturn regexp2\n\t\t}\n\n\t\t/** Makes regexp that match any of options */\n\t\tstatic vary<\n\t\t\tSources extends readonly $mol_regexp_source[]\n\t\t>(\n\t\t\tsources : Sources ,\n\t\t) {\n\t\t\t\n\t\t\tconst groups = [] as string[]\n\t\t\t\n\t\t\tconst chunks = sources.map( source => {\n\n\t\t\t\tconst regexp = $mol_regexp.from( source )\n\t\t\t\tgroups.push( ... regexp.groups )\n\t\t\t\t\n\t\t\t\treturn regexp.source\n\n\t\t\t} ) as any as readonly[ $mol_regexp_source , ... $mol_regexp_source[] ]\n\t\t\t\n\t\t\treturn new $mol_regexp< $mol_regexp_groups< Sources[number] > >(\n\t\t\t\t`(?:${ chunks.join('|') })` ,\n\t\t\t\t'' ,\n\t\t\t\tgroups as any[] ,\n\t\t\t)\n\t\t\t\n\t\t}\n\n\t\t/** Makes regexp that allow absent of this pattern */\n\t\tstatic optional<\n\t\t\tSource extends $mol_regexp_source\n\t\t>( source : Source ) {\n\t\t\treturn $mol_regexp.repeat_greedy( source , 0 , 1 )\n\t\t}\n\n\t\t/** Makes regexp that look ahead for pattern */\n\t\tstatic force_after( source : $mol_regexp_source ) {\n\n\t\t\tconst regexp = $mol_regexp.from( source )\n\t\t\t\n\t\t\treturn new $mol_regexp(\n\t\t\t\t`(?=${ regexp.source })` ,\n\t\t\t\tregexp.flags ,\n\t\t\t\tregexp.groups ,\n\t\t\t)\n\n\t\t}\n\n\t\t/** Makes regexp that look ahead for pattern */\n\t\tstatic forbid_after( source : $mol_regexp_source ) {\n\n\t\t\tconst regexp = $mol_regexp.from( source )\n\t\t\t\n\t\t\treturn new $mol_regexp(\n\t\t\t\t`(?!${ regexp.source })` ,\n\t\t\t\tregexp.flags ,\n\t\t\t\tregexp.groups ,\n\t\t\t)\n\n\t\t}\n\n\t\t/** Converts some js values to regexp */\n\t\tstatic from<\n\t\t\tSource extends $mol_regexp_source\n\t\t>(\n\t\t\tsource : Source ,\n\t\t\t{ ignoreCase , multiline } : Partial< Pick< RegExp , 'ignoreCase' | 'multiline' > > = {\n\t\t\t\tignoreCase : false ,\n\t\t\t\tmultiline : false ,\n\t\t\t} ,\n\t\t) : $mol_regexp< $mol_regexp_groups< Source > > {\n\n\t\t\tlet flags = 'gsu'\n\t\t\tif( multiline ) flags += 'm'\n\t\t\tif( ignoreCase ) flags += 'i'\n\n\t\t\tif( typeof source === 'number' ) {\n\n\t\t\t\tconst src = `\\\\u{${ source.toString(16) }}`\n\t\t\t\tconst regexp = new $mol_regexp< $mol_regexp_groups< Source > >( src , flags )\n\t\t\t\tregexp.generate = ()=> src\n\t\t\t\treturn regexp\n\n\t\t\t} if( typeof source === 'string' ) {\n\n\t\t\t\tconst src = source.replace( /[.*+?^${}()|[\\]\\\\]/g , '\\\\$&' ) \n\t\t\t\tconst regexp = new $mol_regexp< $mol_regexp_groups< Source > >( src , flags )\n\t\t\t\tregexp.generate = ()=> source\n\t\t\t\treturn regexp\n\n\t\t\t} else if( source instanceof $mol_regexp ) {\n\t\t\t\t\n\t\t\t\tconst regexp = new $mol_regexp( source.source, flags, source.groups )\n\t\t\t\tregexp.generate = params => source.generate( params )\n\t\t\t\treturn regexp\n\t\t\t\t\n\t\t\t} if( source instanceof RegExp ) {\n\n\n\t\t\t\tconst test = new RegExp( '|' + source.source )\n\t\t\t\tconst groups = Array.from(\n\t\t\t\t\t{ length : test.exec('')!.length - 1 } ,\n\t\t\t\t\t( _ , i )=> String( i + 1 ) ,\n\t\t\t\t)\n\n\t\t\t\tconst regexp = new $mol_regexp< $mol_regexp_groups< Source > >(\n\t\t\t\t\tsource.source ,\n\t\t\t\t\tsource.flags ,\n\t\t\t\t\tgroups as any ,\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tregexp.generate = ()=> ''\n\n\t\t\t\treturn regexp\n\n\t\t\t} if( Array.isArray( source ) ) {\n\n\t\t\t\tconst patterns = source.map( src => Array.isArray( src )\n\t\t\t\t\t? $mol_regexp.optional( src as any )\n\t\t\t\t\t: $mol_regexp.from( src )\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tconst chunks = patterns.map( pattern => pattern.source )\n\t\t\t\t\n\t\t\t\tconst groups = [] as ( Extract< keyof $mol_regexp_groups< Source > , string > )[]\n\n\t\t\t\tlet index = 0\n\t\t\n\t\t\t\tfor( const pattern of patterns ) {\n\t\t\t\t\t\n\t\t\t\t\tfor( let group of pattern.groups ) {\n\t\t\t\t\t\tif( Number( group ) >= 0 ) {\n\t\t\t\t\t\t\tgroups.push( String( index ++ ) as any )\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tgroups.push( group )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst regexp = new $mol_regexp( chunks.join( '' ) , flags , groups )\n\t\t\t\t\n\t\t\t\tregexp.generate = params => {\n\t\t\t\t\tlet res = ''\n\t\t\t\t\tfor( const pattern of patterns ) {\n\t\t\t\t\t\tlet sub = pattern.generate( params )\n\t\t\t\t\t\tif( sub === null ) return ''\n\t\t\t\t\t\tres += sub\n\t\t\t\t\t}\n\t\t\t\t\treturn res\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn regexp\n\t\t\n\t\t\t} else {\n\n\t\t\t\tconst groups = [] as string[]\n\n\t\t\t\tconst chunks = Object.keys( source ).map( name => {\n\n\t\t\t\t\tgroups.push( name )\n\n\t\t\t\t\tconst regexp = $mol_regexp.from( (source as any)[ name ] )\n\t\t\t\t\tgroups.push( ... regexp.groups )\n\t\t\t\t\t\n\t\t\t\t\treturn `(${regexp.source})`\n\n\t\t\t\t} ) as any as readonly[ $mol_regexp_source , ... $mol_regexp_source[] ]\n\n\t\t\t\tconst regexp = new $mol_regexp< $mol_regexp_groups< Source > >(\n\t\t\t\t\t`(?:${ chunks.join('|') })` ,\n\t\t\t\t\tflags ,\n\t\t\t\t\tgroups as any[] ,\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tconst validator = new RegExp( '^' + regexp.source + '$', flags )\n\t\t\t\tregexp.generate = (params: any) => {\n\t\t\t\t\t\n\t\t\t\t\tfor( let option in source ) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( option in params ) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( typeof params[ option ] === 'boolean' ) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif( !params[ option as any ] ) continue\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tconst str = String( params[ option ] )\n\t\t\t\t\t\t\t\tif( str.match( validator ) ) return str\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t$mol_fail( new Error( `Wrong param: ${option}=${str}` ) )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif( typeof (source as any)[ option ] !== 'object' ) continue\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst res = $mol_regexp.from( (source as any)[ option ] ).generate( params )\n\t\t\t\t\t\tif( res ) return res\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn regexp\n\n\t\t\t}\n\t\n\t\t}\n\n\t\t/** Makes regexp which includes only unicode category */\n\t\tstatic unicode_only( ... category: $mol_unicode_category ) {\n\t\t\treturn new $mol_regexp(\n\t\t\t\t`\\\\p{${ category.join( '=' ) }}`\n\t\t\t)\n\t\t}\n\n\t\t/** Makes regexp which excludes unicode category */\n\t\tstatic unicode_except( ... category: $mol_unicode_category ) {\n\t\t\treturn new $mol_regexp(\n\t\t\t\t`\\\\P{${ category.join( '=' ) }}`\n\t\t\t)\n\t\t}\n\n\t\tstatic char_range(\n\t\t\tfrom: number,\n\t\t\tto: number,\n\t\t): $mol_regexp<{}> {\n\t\t\treturn new $mol_regexp(\n\t\t\t\t`${ $mol_regexp.from( from ).source }-${ $mol_regexp.from( to ).source }`\n\t\t\t)\n\t\t}\n\n\t\tstatic char_only(\n\t\t\t... allowed: readonly [ $mol_regexp_source, ... $mol_regexp_source[] ]\n\t\t): $mol_regexp<{}> {\n\t\t\tconst regexp = allowed.map( f => $mol_regexp.from( f ).source ).join('')\n\t\t\treturn new $mol_regexp( `[${ regexp }]` )\n\t\t}\n\n\t\tstatic char_except(\n\t\t\t... forbidden: readonly [ $mol_regexp_source, ... $mol_regexp_source[] ]\n\t\t): $mol_regexp<{}> {\n\t\t\tconst regexp = forbidden.map( f => $mol_regexp.from( f ).source ).join('')\n\t\t\treturn new $mol_regexp( `[^${ regexp }]` )\n\t\t}\n\t\t\n\t\tstatic decimal_only = $mol_regexp.from( /\\d/gsu )\n\t\tstatic decimal_except = $mol_regexp.from( /\\D/gsu )\n\t\t\n\t\tstatic latin_only = $mol_regexp.from( /\\w/gsu )\n\t\tstatic latin_except = $mol_regexp.from( /\\W/gsu )\n\t\t\n\t\tstatic space_only = $mol_regexp.from( /\\s/gsu )\n\t\tstatic space_except = $mol_regexp.from( /\\S/gsu )\n\t\t\n\t\tstatic word_break_only = $mol_regexp.from( /\\b/gsu )\n\t\tstatic word_break_except = $mol_regexp.from( /\\B/gsu )\n\t\t\n\t\tstatic tab = $mol_regexp.from( /\\t/gsu )\n\t\tstatic slash_back = $mol_regexp.from( /\\\\/gsu )\n\t\tstatic nul = $mol_regexp.from( /\\0/gsu )\n\t\t\n\t\tstatic char_any = $mol_regexp.from( /./gsu )\n\t\tstatic begin = $mol_regexp.from( /^/gsu )\n\t\tstatic end = $mol_regexp.from( /$/gsu )\n\t\tstatic or = $mol_regexp.from( /|/gsu )\n\t\t\n\t\tstatic line_end = $mol_regexp.from({\n\t\t\twin_end: [ [ '\\r' ], '\\n' ],\n\t\t\tmac_end: '\\r',\n\t\t})\n\t\t\n\t}\n\t\n}\n","namespace $.$$ {\n\n\t/**\n\t * Output text with dimmed mismatched substrings.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_dimmer_demo\n\t */\n\texport class $mol_dimmer extends $.$mol_dimmer {\n\t\t\n\t\tparts() {\n\t\t\tconst needle = this.needle()\n\t\t\tif( needle.length < 2 ) return [ this.haystack() ]\n\t\t\t\n\t\t\tlet chunks : any[] = []\n\t\t\tlet strings = this.strings()\n\t\t\t\n\t\t\tfor( let index = 0 ; index < strings.length ; index++ ) {\n\t\t\t\tif( strings[ index ] === '' ) continue\n\t\t\t\t\n\t\t\t\tchunks.push( ( index % 2 ) ? this.High( index ) : this.Low( index ) )\n\t\t\t}\n\t\t\t\n\t\t\treturn chunks\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstrings() {\n\t\t\t\n\t\t\tconst options = this.needle().split( /\\s+/g ).filter( Boolean )\n\t\t\tif( !options.length ) return [ this.haystack() ]\n\t\t\t\n\t\t\tconst variants = { ... options } as Record< number, string >\n\t\t\tconst regexp = $mol_regexp.from( { needle: variants } , { ignoreCase: true } )\n\t\t\t\n\t\t\treturn this.haystack().split( regexp )\n\t\t}\n\t\t\n\t\tstring( index: number ) {\n\t\t\treturn this.strings()[ index ]\n\t\t}\n\t\t\n\t\t*view_find(\n\t\t\tcheck: ( path : $mol_view, text?: string )=> boolean,\n\t\t\tpath = [] as $mol_view[],\n\t\t): Generator< $mol_view[] > {\n\n\t\t\tif( check( this, this.haystack() ) ) {\n\t\t\t\tyield [ ... path, this ]\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/dimmer/dimmer.view.css\",\n \"[mol_dimmer] {\\n\\tdisplay: block;\\n\\tmax-width: 100%;\\n}\\n\\n[mol_dimmer_low] {\\n\\tdisplay: inline;\\n\\topacity: 0.8;\\n}\\n\\n[mol_dimmer_high] {\\n\\tdisplay: inline;\\n\\tcolor: var(--mol_theme_focus);\\n\\ttext-shadow: 0 0;\\n}\\n\"\n) }","$mol_text_code_token $mol_dimmer\n\tattr *\n\t\t^\n\t\tmol_text_code_token_type <= type \\\n\n$mol_text_code_token_link $mol_text_code_token\n\tdom_name \\a\n\ttype \\code-link\n\tattr *\n\t\t^\n\t\thref <= uri \\\n\t\ttarget \\_blank\n","namespace $.$$ {\n\n\tconst { hsla } = $mol_style_func\n\t\n\t$mol_style_define( $mol_text_code_token, {\n\n\t\tdisplay: 'inline',\n\t\ttextDecoration: 'none',\n\n\t\t'@': {\n\t\t\tmol_text_code_token_type: {\n\n\t\t\t\t'code-keyword': {\n\t\t\t\t\tcolor: hsla( 0, 70, 60, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-field': {\n\t\t\t\t\tcolor: hsla( 300, 70, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-tag': {\n\t\t\t\t\tcolor: hsla( 330, 70, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-global': {\n\t\t\t\t\tcolor: hsla( 30, 80, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-decorator': {\n\t\t\t\t\tcolor: hsla( 180, 40, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-punctuation': {\n\t\t\t\t\tcolor: hsla( 0, 0, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-string': {\n\t\t\t\t\tcolor: hsla( 90, 40, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-number': {\n\t\t\t\t\tcolor: hsla( 55, 65, 45, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-call': {\n\t\t\t\t\tcolor: hsla( 270, 60, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-link': {\n\t\t\t\t\tcolor: hsla( 210, 60, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-comment-inline': {\n\t\t\t\t\topacity: .5,\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-comment-block': {\n\t\t\t\t\topacity: .5,\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-docs': {\n\t\t\t\t\topacity: .75,\n\t\t\t\t},\n\t\t\t\t\n\t\t\t},\n\t\t}\n\n\t} )\n\n}\n","$mol_text_code_line $mol_paragraph\n\ttext \\\n\tminimal_height 24\n\tnumb_showed true\n\tsyntax null\n\turi_resolve* \\\n\tNumb $mol_view\n\t\tsub /\n\t\t\t<= numb 0\n\tToken* $mol_text_code_token\n\t\ttype <= token_type* \\\n\t\thaystack <= token_text* \\\n\t\tneedle <= highlight \\\n\tToken_link* $mol_text_code_token_link\n\t\thaystack <= token_text* \\\n\t\tneedle <= highlight \\\n\t\turi <= token_uri* \\\n\tfind_pos* null\n","namespace $ {\n\t\n\texport var $mol_syntax2_md_flow = new $mol_syntax2({\n\t\t'quote' : /^((?:(?:[>\"] )(?:[^]*?)$(\\r?\\n?))+)([\\n\\r]*)/ ,\n\t\t'spoiler' : /^((?:(?:[\\?] )(?:[^]*?)$(\\r?\\n?))+)([\\n\\r]*)/ ,\n\t\t'header' : /^([#=]+)(\\s+)(.*?)$([\\n\\r]*)/ ,\n\t\t'list' : /^((?:(?: ?([*+-])|(?:\\d+[\\.\\)])+) +(?:[^]*?)$(?:\\r?\\n?)(?: (?:[^]*?)$(?:\\r?\\n?))*)+)((?:\\r?\\n)*)/ ,\n\t\t'code' : /^(```\\s*)([\\w.-]*)[\\r\\n]+([^]*?)^(```)$([\\n\\r]*)/ ,\n\t\t'code-indent' : /^((?:(?: |\\t)(?:[^]*?)$\\r?\\n?)+)([\\n\\r]*)/ ,\n\t\t'table' : /((?:^\\|.+?$\\r?\\n?)+)([\\n\\r]*)/ ,\n\t\t'grid' : /((?:^ *! .*?$\\r?\\n?)+)([\\n\\r]*)/ ,\n\t\t'cut' : /^--+$((?:\\r?\\n)*)/ ,\n\t\t'block' : /^(.*?)$((?:\\r?\\n)*)/ ,\n\t})\n\t\n\texport var $mol_syntax2_md_line = new $mol_syntax2({\n\t\t'strong' : /\\*\\*(.+?)\\*\\*/ ,\n\t\t'emphasis' : /\\*(?!\\s)(.+?)\\*|\\/\\/(?!\\s)(.+?)\\/\\// ,\n\t\t'code' : /```(.+?)```|;;(.+?);;|`(.+?)`/ ,\n\t\t'insert' : /\\+\\+(.+?)\\+\\+/ ,\n\t\t'delete' : /~~(.+?)~~|--(.+?)--/ ,\n\t\t// 'remark' : /(\\()(.+?)(\\))/ ,\n\t\t// 'quote' : /(\")(.+?)(\")/ ,\n\t\t'embed' : /\"\"(?:(.*?)\\\\)?(.*?)\"\"/ ,\n\t\t'link' : /\\\\\\\\(?:(.*?)\\\\)?(.*?)\\\\\\\\/ ,\n\t\t'image-link' : /!\\[([^\\[\\]]*?)\\]\\((.*?)\\)/ ,\n\t\t'text-link' : /\\[(.*?(?:\\[[^\\[\\]]*?\\][^\\[\\]]*?)*)\\]\\((.*?)\\)/ ,\n\t\t'text-link-http' : /\\b(https?:\\/\\/[^\\s,.;:!?\")]+(?:[,.;:!?\")][^\\s,.;:!?\")]+)+)/ ,\n\t})\n\t\n\texport const $mol_syntax2_md_code = new $mol_syntax2({\n\t\t'code-indent' : /\\t+/ ,\n\t\t'code-docs' : /\\/\\/\\/.*?$/ ,\n\t\t'code-comment-block' : /(?:\\/\\*[^]*?\\*\\/|\\/\\+[^]*?\\+\\/|)/ ,\n\t\t'code-link' : /(?:\\w+:\\/\\/|#)\\S+?(?=\\s|\\\\\\\\|\"\"|$)/ ,\n\t\t'code-comment-inline' : /\\/\\/.*?(?:$|\\/\\/)|- \\\\(?!\\\\).*|#!? .*/ ,\n\t\t'code-string' : /(?:\".*?\"|'.*?'|`.*?`| ?\\\\\\\\.+?\\\\\\\\|\\/.+?\\/[dygimsu]*(?!\\p{Letter})|[ \\t]*\\\\[^\\n]*)/u ,\n\t\t'code-number' : /[+-]?(?:\\d*\\.)?\\d+\\w*/ ,\n\t\t'code-call' : /\\.?\\w+ *(?=\\()/ ,\n\t\t'code-sexpr' : /\\((\\w+ )/ ,\n\t\t'code-field' : /(?:(?:\\.|::|->)\\w+|[\\w-]+\\??\\s*:(?!\\/\\/|:))/ ,\n\t\t'code-keyword' : /\\b(throw|readonly|unknown|keyof|typeof|never|from|class|struct|interface|type|function|extends|implements|module|namespace|import|export|include|require|var|val|let|const|for|do|while|until|in|out|of|new|if|then|else|switch|case|this|return|async|await|yield|try|catch|break|continue|get|set|public|private|protected|string|boolean|number|null|undefined|true|false|void|int|float|ref)\\b/ ,\n\t\t'code-global' : /[$]+\\w*|\\b[A-Z][a-z0-9]+[A-Z]\\w*/ ,\n\t\t'code-word' : /\\w+/ ,\n\t\t'code-decorator' : /@.+/ ,\n\t\t'code-tag' : /<\\/?[\\w-]+\\/?>?|&\\w+;/ ,\n\t\t'code-punctuation' : /[\\-\\[\\]\\{\\}\\(\\)<=>~!\\?@#%&\\*_\\+\\\\\\/\\|;:\\.,\\^]+?/ ,\n\t})\n\t\n}\n","namespace $.$$ {\n\n\texport class $mol_text_code_line extends $.$mol_text_code_line {\n\t\t\n\t\tmaximal_width() {\n\t\t\treturn this.text().length * this.letter_width()\n\t\t}\n\t\t\n\t\tsyntax() {\n\t\t\treturn this.$.$mol_syntax2_md_code\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\ttokens( path: number[] ) {\n\n\t\t\tconst tokens = [] as { name : string , found : string , chunks: string[] }[]\n\t\t\t\n\t\t\tconst text = ( path.length > 0 )\n\t\t\t\t// @FIXME: this logic compatible only with `string`\n\t\t\t\t? this.tokens( path.slice( 0, path.length - 1 ) )[ path[ path.length - 1 ] ].found.slice( 1, -1 )\n\t\t\t\t: this.text()\n\t\t\t\n\t\t\tthis.syntax().tokenize(\n\t\t\t\ttext,\n\t\t\t\t( name , found , chunks )=> {\n\t\t\t\t\tif( name === 'code-sexpr' ) {\n\t\t\t\t\t\ttokens.push({ name: 'code-punctuation', found: '(', chunks: [] })\n\t\t\t\t\t\ttokens.push({ name: 'code-call', found: chunks[0], chunks: [] })\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttokens.push({ name , found , chunks })\t\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t)\n\t\t\t\n\t\t\treturn tokens as Readonly< typeof tokens >\n\t\t}\n\n\t\tsub() {\n\t\t\treturn [\n\t\t\t\t... this.numb_showed() ? [ this.Numb() ] : [],\n\t\t\t\t... this.row_content([])\n\t\t\t]\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\trow_content( path: number[] ) {\n\t\t\treturn this.tokens( path ).map( (t,i)=> this.Token([ ... path, i ]) )\n\t\t}\n\n\t\tToken( path: number[] ) {\n\t\t\treturn this.token_type( path ) === 'code-link' ? this.Token_link( path ) : super.Token( path )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttoken_type( path: number[] ) {\n\t\t\treturn this.tokens( [ ... path.slice( 0, path.length - 1 ) ] )[ path[ path.length - 1 ] ].name\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttoken_content( path: number[] ) {\n\n\t\t\tconst tokens = this.tokens( [ ... path.slice( 0, path.length - 1 ) ] ) \n\t\t\tconst token = tokens[ path[ path.length - 1 ] ]\n\n\t\t\tswitch( token.name ) {\n\t\t\t\t\n\t\t\t\tcase 'code-string': return [\n\t\t\t\t\ttoken.found[0],\n\t\t\t\t\t... this.row_content( path ),\n\t\t\t\t\ttoken.found[ token.found.length - 1 ],\n\t\t\t\t] \n\t\t\t\t\n\t\t\t\tdefault: return [ token.found ]\n\t\t\t}\n\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttoken_text( path: number[] ) {\n\n\t\t\tconst tokens = this.tokens( [ ... path.slice( 0, path.length - 1 ) ] ) \n\t\t\tconst token = tokens[ path[ path.length - 1 ] ]\n\n\t\t\treturn token.found\n\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttoken_uri( path: number[] ) {\n\t\t\tconst uri = this.token_text( path )\n\t\t\treturn this.uri_resolve( uri )\n\t\t}\n\t\t\n\t\t*view_find(\n\t\t\tcheck: ( path : $mol_view, text?: string )=> boolean,\n\t\t\tpath = [] as $mol_view[],\n\t\t): Generator< $mol_view[] > {\n\n\t\t\tif( check( this, this.text() ) ) {\n\t\t\t\tyield [ ... path, this ]\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tfind_pos( offset: number ) {\n\t\t\treturn this.find_token_pos([ offset ])\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tfind_token_pos( [ offset, ... path ]: number[] ) {\n\t\t\t\n\t\t\tfor( const [ index, token ] of this.tokens( path ).entries() ) {\n\t\t\t\tif( token.found.length >= offset ) {\n\t\t\t\t\tconst token = this.Token([ ... path, index ])\n\t\t\t\t\treturn { token, offset }\n\t\t\t\t} else {\n\t\t\t\t\toffset -= token.found.length\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn null\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $.$$ {\n\t\n\tconst { rem } = $mol_style_unit\n\n\t$mol_style_define( $mol_text_code_line, {\n\n\t\tdisplay: 'block',\n\t\tposition: 'relative',\n\t\t\n\t\tfont: {\n\t\t\tfamily: 'monospace',\n\t\t},\n\t\t\n\t\tNumb: {\n\t\t\ttextAlign: 'right',\n\t\t\tcolor: $mol_theme.shade,\n\t\t\twidth: rem(3),\n\t\t\tmargin: {\n\t\t\t\tleft: rem(-4),\n\t\t\t},\n\t\t\tdisplay: 'inline-block',\n\t\t\twhiteSpace: 'nowrap',\n\t\t\tuserSelect: 'none',\n\t\t\tposition: 'absolute',\n\t\t},\n\n\t} )\n\t\n}\n","$mol_list $mol_view\n\trender_visible_only true\n\trender_over 0\n\tsub <= rows /$mol_view\n\tEmpty $mol_view\n\tGap_before $mol_view style * paddingTop <= gap_before 0\n\tGap_after $mol_view style * paddingTop <= gap_after 0\n\tview_window /\n\t\t0\n\t\t0\n","namespace $ {\n\n\tlet cache = null as null | boolean\n\texport function $mol_support_css_overflow_anchor( this: $ ) {\n\t\treturn cache ?? (\n\t\t\tcache = this.$mol_dom_context.CSS?.supports( 'overflow-anchor:auto' ) ?? false\n\t\t)\n\t}\n\n}\n","namespace $.$$ {\n\n\t/**\n\t * The list of rows with lazy/virtual rendering support based on `minimal_height` of rows.\n\t * `mol_list` should contain only components that inherits `mol_view`. You should not place raw strings or numbers in list.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_list_demo\n\t */\n\texport class $mol_list extends $.$mol_list {\n\t\t\n\t\t@ $mol_mem\n\t\tsub() {\n\t\t\tconst rows = this.rows()\n\t\t\treturn ( rows.length === 0 ) ? [ this.Empty() ] : rows\n\t\t}\n\n\t\trender_visible_only() {\n\t\t\treturn this.$.$mol_support_css_overflow_anchor()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tview_window( next?: [ number , number ] ) : [ number , number ] {\n\t\t\t\n\t\t\tconst kids = this.sub()\n\t\t\t\n\t\t\tif( kids.length < 3 ) return [ 0 , kids.length ]\n\t\t\tif( this.$.$mol_print.active() ) return [ 0 , kids.length ]\n\t\t\t\n\t\t\tconst rect = this.view_rect()\n\t\t\tif( next ) return next\n\t\t\t\n\t\t\tlet [ min , max ] = $mol_mem_cached( ()=> this.view_window() ) ?? [ 0 , 0 ]\n\n\t\t\tlet max2 = max = Math.min( max , kids.length )\n\t\t\tlet min2 = min = Math.max( 0 , Math.min( min , max - 1 ) )\n\t\t\t\n\t\t\tconst anchoring = this.render_visible_only()\n\t\t\tconst window_height = this.$.$mol_window.size().height + 40\n\t\t\tconst over = Math.ceil( window_height * this.render_over() )\n\t\t\tconst limit_top = -over\n\t\t\tconst limit_bottom = window_height + over\n\n\t\t\tconst gap_before = $mol_mem_cached( ()=> this.gap_before() ) ?? 0\n\t\t\tconst gap_after = $mol_mem_cached( ()=> this.gap_after() ) ?? 0\n\n\t\t\tlet top = Math.ceil( rect?.top ?? 0 ) + gap_before\n\t\t\tlet bottom = Math.ceil( rect?.bottom ?? 0 ) - gap_after\n\n\t\t\t// change nothing when already covers all limits\n\t\t\tif( top <= limit_top && bottom >= limit_bottom ) {\n\t\t\t\treturn [ min2 , max2 ]\n\t\t\t}\n\n\t\t\t// jumps when fully over limits\n\t\t\tif( anchoring && (( bottom < limit_top )||( top > limit_bottom )) ) {\n\t\t\t\t\n\t\t\t\tmin = 0\n\t\t\t\ttop = Math.ceil( rect?.top ?? 0 )\n\t\t\t\t\n\t\t\t\twhile( min < ( kids.length - 1 ) ) {\n\t\t\t\t\t\n\t\t\t\t\tconst height = kids[ min ].minimal_height()\n\t\t\t\t\tif( top + height >= limit_top ) break\n\t\t\t\t\t\n\t\t\t\t\ttop += height\n\t\t\t\t\t++ min\n\n\t\t\t\t}\n\n\t\t\t\tmin2 = min\n\t\t\t\tmax2 = max = min\n\t\t\t\tbottom = top\n\n\t\t\t}\n\n\t\t\tlet top2 = top\n\t\t\tlet bottom2 = bottom\n\t\t\t\n\t\t\t// force recalc min when overlapse top limit\n\t\t\tif( anchoring && ( top < limit_top ) && ( bottom < limit_bottom ) && ( max < kids.length ) ) {\n\t\t\t\tmin2 = max\n\t\t\t\ttop2 = bottom\n\t\t\t}\n\n\t\t\t// force recalc max when overlapse bottom limit\n\t\t\tif( ( bottom > limit_bottom ) && ( top > limit_top ) && ( min > 0 ) ) {\n\t\t\t\tmax2 = min\n\t\t\t\tbottom2 = top\n\t\t\t}\n\n\t\t\t// extend min to cover top limit\n\t\t\twhile( anchoring && (( top2 > limit_top )&&( min2 > 0 )) ) {\n\t\t\t\t-- min2\n\t\t\t\ttop2 -= kids[ min2 ].minimal_height()\n\t\t\t}\n\t\t\t\n\t\t\t// extend max to cover bottom limit\n\t\t\twhile( bottom2 < limit_bottom && max2 < kids.length ) {\n\t\t\t\tbottom2 += kids[ max2 ].minimal_height()\n\t\t\t\t++ max2\n\t\t\t}\n\t\t\t\n\t\t\treturn [ min2 , max2 ]\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgap_before() {\n\t\t\tconst skipped = this.sub().slice( 0 , this.view_window()[0] )\n\t\t\treturn Math.max( 0 , skipped.reduce( ( sum , view )=> sum + view.minimal_height() , 0 ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgap_after() {\n\t\t\tconst skipped = this.sub().slice( this.view_window()[1] )\n\t\t\treturn Math.max( 0 , skipped.reduce( ( sum , view )=> sum + view.minimal_height() , 0 ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tsub_visible() {\n\t\t\treturn [\n\t\t\t\t... this.gap_before() ? [ this.Gap_before() ] : [],\n\t\t\t\t... this.sub().slice( ... this.view_window() ),\n\t\t\t\t... this.gap_after() ? [ this.Gap_after() ] : [],\n\t\t\t]\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\n\t\t\treturn this.sub().reduce( ( sum , view )=> {\n\n\t\t\t\ttry {\n\t\t\t\t\treturn sum + view.minimal_height() \n\t\t\t\t} catch( error: any ) {\n\t\t\t\t\t$mol_fail_log( error )\n\t\t\t\t\treturn sum\n\t\t\t\t}\n\n\t\t\t} , 0 )\n\n\t\t}\n\n\t\tforce_render(\n\t\t\tpath : Set< $mol_view >,\n\t\t) {\n\n\t\t\tconst kids = this.rows()\n\n\t\t\tconst index = kids.findIndex( item => path.has( item ) )\n\n\t\t\tif( index >= 0 ) {\n\t\t\t\tconst win = this.view_window()\n\t\t\t\tif( index < win[0] || index >= win[1] ) {\n\t\t\t\t\tthis.view_window([ this.render_visible_only() ? index : 0, index + 1 ])\n\t\t\t\t}\n\t\t\t\t( kids[ index ] as $mol_view ).force_render( path )\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/list/list.view.css\",\n \"[mol_list] {\\n\\twill-change: contents;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tflex-shrink: 0;\\n\\tmax-width: 100%;\\n\\t/* display: flex;\\n\\talign-items: stretch;\\n\\talign-content: stretch; */\\n\\ttransition: none;\\n\\tmin-height: 1.5rem;\\n}\\n\\n[mol_list_gap_before] ,\\n[mol_list_gap_after] {\\n\\tdisplay: block !important;\\n\\tflex: none;\\n\\ttransition: none;\\n\\toverflow-anchor: none;\\n}\\n\"\n) }","namespace $ {\n\n\texport type $mol_blob = Blob\n\n\texport let $mol_blob = ( $node.buffer?.Blob ?? $mol_dom_context.Blob ) as any as {\n\t\tprototype: Blob;\n\t\tnew(blobParts?: readonly BlobPart[], options?: BlobPropertyBag): Blob;\n\t}\n\n}\n","$mol_icon_clipboard $mol_icon path \\M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3\n","$mol_icon_clipboard_outline $mol_icon path \\M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7Z\n","$mol_button_copy $mol_button_minor\n\tblobs /$mol_blob\n\t\t<= text_blob? $mol_blob /\n\t\t\t/BlobPart <= text <= title\n\t\t\t* type \\text/plain\n\t\t<= html_blob? $mol_blob /\n\t\t\t/BlobPart <= html \\\n\t\t\t* type \\text/html\n\tdata *\n\tsub /\n\t\t<= Icon $mol_icon_clipboard_outline\n\t\t<= title \\\n\n","namespace $ {\n\t\n\tconst mapping = {\n\t\t'<' : '<' ,\n\t\t'>' : '>' ,\n\t\t'\"' : '"' ,\n\t\t'&' : '&' ,\n\t}\n\t\n\texport function $mol_html_encode( text : string ) {\n\t\treturn text.replace( /[&<\">]/gi , str => mapping[ str as keyof typeof mapping ] )\n\t}\n\t\n}\n","namespace $.$$ {\n\t\n\t/**\n\t * Button copy text() value to clipboard\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_button_demo\n\t */\n\texport class $mol_button_copy extends $.$mol_button_copy {\n\t\t\n\t\tdata() {\n\t\t\treturn Object.fromEntries(\n\t\t\t\tthis.blobs().map( blob => [ blob.type, blob ] )\n\t\t\t)\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\thtml() {\n\t\t\treturn $mol_html_encode( this.text() )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tattachments() {\n\t\t\treturn [ new ClipboardItem( this.data() ) ]\n\t\t}\n\t\t\n\t\tclick( event?: Event ) {\n\t\t\tconst cb = $mol_wire_sync( this.$.$mol_dom_context.navigator.clipboard )\n\t\t\t\n\t\t\tcb.writeText?.( this.text() )\n\t\t\tcb.write?.( this.attachments() )\n\n\t\t\tif( cb.writeText === undefined && cb.write === undefined ) {\n\t\t\t\tthrow new Error( \"doesn't support copy to clipoard\" )\n\t\t\t}\n\t\t}\n\n\t}\n\t\n}\n","$mol_text_code $mol_stack\n\tattr *\n\t\t^\n\t\tmol_text_code_sidebar_showed <= sidebar_showed false\n\ttext \\\n\ttext_lines /string\n\tfind_pos* null\n\turi_base \\\n\tsub /\n\t\t<= Rows $mol_list\n\t\t\trender_visible_only <= render_visible_only false\n\t\t\trows <= rows /\n\t\t\t\t<= Row*0 $mol_text_code_line\n\t\t\t\t\tnumb_showed <= sidebar_showed\n\t\t\t\t\tnumb <= row_numb* 0\n\t\t\t\t\ttext <= row_text* \\\n\t\t\t\t\tsyntax <= syntax null\n\t\t\t\t\turi_resolve* <= uri_resolve* \\\n\t\t\t\t\thighlight <= highlight \\\n\t\t<= Copy $mol_button_copy\n\t\t\thint @ \\Copy whole code\n\t\t\ttext <= text_export \\\n","namespace $.$$ {\n\n\t/**\n\t * Code visualizer.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_text_code_demo\n\t */\n\texport class $mol_text_code extends $.$mol_text_code {\n\t\t\n\t\trender_visible_only() {\n\t\t\treturn this.$.$mol_support_css_overflow_anchor()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\ttext_lines() {\n\t\t\treturn ( this.text() ?? '' ).split( '\\n' ) as readonly string[]\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trows() {\n\t\t\treturn this.text_lines().map( ( _ , index )=> this.Row( index + 1 ) )\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\trow_text( index: number ) {\n\t\t\treturn this.text_lines()[ index - 1 ]\n\t\t}\n\t\t\n\t\trow_numb( index: number ) {\n\t\t\treturn index\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tfind_pos( offset: number ) {\n\t\t\t\n\t\t\tfor( const [ index, line ] of this.text_lines().entries() ) {\n\t\t\t\tif( line.length >= offset ) {\n\t\t\t\t\treturn this.Row( index + 1 ).find_pos( offset )\n\t\t\t\t} else {\n\t\t\t\t\toffset -= line.length + 1\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn null\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tsub() {\n\t\t\treturn [\n\t\t\t\tthis.Rows(),\n\t\t\t\t... this.sidebar_showed() ? [ this.Copy() ] : []\n\t\t\t]\n\t\t}\n\t\t\n\t\tsyntax() {\n\t\t\treturn this.$.$mol_syntax2_md_code\n\t\t}\n\n\t\turi_base() {\n\t\t\treturn $mol_dom_context.document.location.href\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\turi_resolve( uri: string ) {\n\t\t\t\n\t\t\tif( /^(\\w+script+:)+/.test( uri ) ) return null as any as string\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tconst url = new URL( uri , this.uri_base() )\n\t\t\t\treturn url.toString()\n\t\t\t\t\n\t\t\t} catch( error ) {\n\t\t\t\t\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\treturn null as any as string\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\ttext_export() {\n\t\t\treturn this.text() + '\\n'\n\t\t}\n\t\t\n\t}\n}\n","namespace $.$$ {\n\t\n\tconst { rem, px } = $mol_style_unit\n\n\t$mol_style_define( $mol_text_code, {\n\n\t\twhiteSpace: 'pre-wrap',\n\t\tfont: {\n\t\t\tfamily: 'monospace',\n\t\t},\n\t\t\n\t\tRows: {\n\t\t\tpadding: $mol_gap.text,\n\t\t},\n\t\t\n\t\tRow: {\n\t\t\tfont: {\n\t\t\t\tfamily: 'inherit',\n\t\t\t},\n\t\t},\n\n\t\tCopy: {\n\t\t\talignSelf: 'flex-start',\n\t\t\tjustifySelf: 'flex-start',\n\t\t},\n\t\t\n\t\t'@': {\n\t\t\t'mol_text_code_sidebar_showed': {\n\t\t\t\ttrue: {\n\t\t\t\t\t$mol_text_code_line: {\n\t\t\t\t\t\tmargin: {\n\t\t\t\t\t\t\tleft: rem(1.75),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t} )\n\t\n}\n","$mol_hotkey $mol_plugin\n\tevent *\n\t\t^\n\t\tkeydown?event <=> keydown?event null\n\tkey *\n\tmod_ctrl false\n\tmod_alt false\n\tmod_shift false\n","namespace $.$$ {\n\t/**\n\t * Plugin which adds handlers for keyboard keys.\n\t * @see [mol_keyboard_code](../keyboard/code/code.ts)\n\t */\n\texport class $mol_hotkey extends $.$mol_hotkey {\n\n\t\tkey() {\n\t\t\treturn super.key() as {\n\t\t\t\t[ key in keyof typeof $mol_keyboard_code ]? : ( event : KeyboardEvent )=> void\n\t\t\t}\n\t\t}\n\t\t\n\t\tkeydown( event? : KeyboardEvent ) {\n\n\t\t\tif( !event ) return\n\t\t\tif( event.defaultPrevented ) return\n\n\t\t\tlet name = $mol_keyboard_code[ event.keyCode ] as keyof typeof $mol_keyboard_code\n\t\t\t\n\t\t\tif( this.mod_ctrl() !== ( event.ctrlKey || event.metaKey ) ) return\n\t\t\tif( this.mod_alt() !== event.altKey ) return\n\t\t\tif( this.mod_shift() !== event.shiftKey ) return\n\t\t\t\n\t\t\tconst handle = this.key()[ name ]\n\t\t\tif( handle ) handle( event )\n\n\t\t}\n\t\t\n\t}\n}\n","$mol_string $mol_view\n\tdom_name \\input\n\tenabled true\n\tminimal_height 40\n\tautocomplete false\n\tselection? /number\n\t\t0\n\t\t0\n\tauto /\n\t\t<= selection_watcher null\n\t\t<= error_report null\n\tfield *\n\t\t^\n\t\tdisabled <= disabled false\n\t\tvalue <= value_changed? <=> value? \\\n\t\tplaceholder <= hint_visible <= hint \\\n\t\tspellcheck <= spellcheck true\n\t\tautocomplete <= autocomplete_native \\\n\t\tselectionEnd <= selection_end 0\n\t\tselectionStart <= selection_start 0\n\t\tinputMode <= keyboard \\text\n\t\tenterkeyhint <= enter \\go\n\tattr *\n\t\t^\n\t\tmaxlength <= length_max +Infinity\n\t\ttype <= type? \\text\n\tevent *\n\t\t^\n\t\tinput?event <=> event_change?event null\n\tplugins /\n\t\t<= Submit $mol_hotkey\n\t\t\tmod_ctrl <= submit_with_ctrl false\n\t\t\tkey * enter?event <=> submit?event null\n","namespace $.$$ {\n\t/**\n\t * An input field for entering single line text.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_string_demo\n\t */\n\texport class $mol_string extends $.$mol_string {\n\t\t\n\t\t@ $mol_action\n\t\tevent_change( next? : Event ) {\n\t\t\tif( !next ) return\n\t\t\tconst el = next.target as HTMLInputElement\n\t\t\tconst from = el.selectionStart\n\t\t\tconst to = el.selectionEnd\n\t\t\ttry {\n\t\t\t\tel.value = this.value_changed( el.value )\n\t\t\t} catch( error ) {\n\t\t\t\tconst el = this.dom_node() as HTMLInputElement\n\t\t\t\tif( error instanceof Error ) {\n\t\t\t\t\tel.setCustomValidity( error.message )\n\t\t\t\t\tel.reportValidity()\n\t\t\t\t}\n\t\t\t\t$mol_fail_hidden( error )\n\t\t\t}\n\t\t\tif( to === null ) return \n\t\t\tel.selectionEnd = to\n\t\t\tel.selectionStart = from\n\t\t\tthis.selection_change( next )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\terror_report() {\n\t\t\ttry {\n\t\t\t\tif( this.focused() ) this.value()\n\t\t\t} catch( error ) {\n\t\t\t\tconst el = this.dom_node() as HTMLInputElement\n\t\t\t\tif( error instanceof Error ) {\n\t\t\t\t\tel.setCustomValidity( error.message )\n\t\t\t\t\tel.reportValidity()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\thint_visible() {\n\t\t\treturn ( this.enabled() ? this.hint() : '' ) || ' '\n\t\t}\n\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\n\t\tautocomplete_native() {\n\t\t\treturn this.autocomplete() ? 'on' : 'off'\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tselection_watcher() {\n\t\t\treturn new $mol_dom_listener(\n\t\t\t\tthis.$.$mol_dom_context.document,\n\t\t\t\t'selectionchange',\n\t\t\t\t$mol_wire_async( event => this.selection_change( event ) ),\n\t\t\t)\n\t\t}\n\t\t\n\t\tselection_change( event: Event ) {\n\t\t\t\n\t\t\tconst el = this.dom_node() as HTMLInputElement\n\t\t\tif( el !== this.$.$mol_dom_context.document.activeElement ) return\n\t\t\t\n\t\t\tconst [ from, to ] = this.selection([\n\t\t\t\tel.selectionStart!,\n\t\t\t\tel.selectionEnd!,\n\t\t\t])\n\t\t\t\n\t\t\tel.selectionEnd = to\n\t\t\tel.selectionStart = from\n\n\t\t\tif( to !== from && el.selectionEnd === el.selectionStart ) {\n\t\t\t\tel.selectionEnd = to\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tselection_start() {\n\t\t\tconst el = this.dom_node() as HTMLInputElement\n\t\t\tif( el.selectionStart === null ) return undefined as any as number\n\t\t\treturn this.selection()[0]\n\t\t}\n\n\t\tselection_end() {\n\t\t\tconst el = this.dom_node() as HTMLInputElement\n\t\t\tif( el.selectionEnd === null ) return undefined as any as number\n\t\t\treturn this.selection()[1]\n\t\t}\n\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/string/string.view.css\",\n \"[mol_string] {\\n\\tbox-sizing: border-box;\\n\\toutline-offset: 0;\\n\\tborder: none;\\n\\tborder-radius: var(--mol_gap_round);\\n\\twhite-space: pre-line;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n\\tpadding: var(--mol_gap_text);\\n\\ttext-align: left;\\n\\tposition: relative;\\n\\tfont: inherit;\\n\\tflex: 1 1 auto;\\n\\tbackground: transparent;\\n\\tmin-width: 0;\\n\\tcolor: inherit;\\n\\tbackground: var(--mol_theme_field);\\n}\\n\\n[mol_string]:disabled:not(:placeholder-shown) {\\n\\tbackground-color: transparent;\\n\\tcolor: var(--mol_theme_text);\\n}\\n\\n[mol_string]:where(:not(:disabled)) {\\n\\tbox-shadow: inset 0 0 0 1px var(--mol_theme_line);\\n}\\n\\n[mol_string]:where(:not(:disabled)):hover {\\n\\tbox-shadow: inset 0 0 0 2px var(--mol_theme_line);\\n\\tz-index: var(--mol_layer_hover);\\n}\\n\\n[mol_string]:focus {\\n\\toutline: none;\\n\\tz-index: var(--mol_layer_focus);\\n\\tcolor: var(--mol_theme_text);\\n\\tbox-shadow: inset 0 0 0 1px var(--mol_theme_focus);\\n}\\n\\n[mol_string]::placeholder {\\n\\tcolor: var(--mol_theme_shade);\\n}\\n\\n[mol_string]::-ms-clear {\\n\\tdisplay: none;\\n}\\n\"\n) }","$mol_textarea $mol_stack\n\tattr *\n\t\t^\n\t\tmol_textarea_clickable <= clickable? false\n\t\tmol_textarea_sidebar_showed <= sidebar_showed false\n\tevent *\n\t\tkeydown?event <=> press?event null\n\t\tpointermove?event <=> hover?event null\n\tsub /\n\t\t<= Edit $mol_textarea_edit\n\t\t\tvalue? <=> value? \\\n\t\t\thint <= hint \\ \n\t\t\tenabled <= enabled true\n\t\t\tspellcheck <= spellcheck true\n\t\t\tlength_max <= length_max +Infinity\n\t\t\tselection? <=> selection? /number\n\t\t\tbring => bring\n\t\t\tsubmit? <=> submit? null\n\t\t\tsubmit_with_ctrl <= submit_with_ctrl true\n\t\t<= View $mol_text_code\n\t\t\ttext <= value\n\t\t\trender_visible_only false\n\t\t\trow_numb* <= row_numb* 0\n\t\t\tsidebar_showed <= sidebar_showed\n\t\t\thighlight <= highlight \\\n\t\t\tsyntax <= syntax $mol_syntax2\n\tsymbols_alt *string\n\t\tcomma \\<\n\t\tperiod \\>\n\t\tdash \\−\n\t\tequals \\≈\n\t\tgraveAccent \\́\n\t\tforwardSlash \\÷\n\t\tE \\€\n\t\tV \\✔\n\t\tX \\×\n\t\tC \\©\n\t\tP \\§\n\t\tH \\₽\n\t\tkey0 \\°\n\t\tkey8 \\•\n\t\tkey2 \\@\n\t\tkey3 \\#\n\t\tkey4 \\$\n\t\tkey6 \\^\n\t\tkey7 \\&\n\t\tbracketOpen \\[\n\t\tbracketClose \\]\n\t\tslashBack \\|\n\tsymbols_alt_ctrl *string\n\t\tspace \\ \n\tsymbols_alt_shift *string\n\t\tV \\✅\n\t\tX \\❌\n\t\tO \\⭕\n\t\tkey1 \\❗\n\t\tkey4 \\💲\n\t\tkey7 \\❓\n\t\tcomma \\«\n\t\tperiod \\»\n\t\tsemicolon \\“\n\t\tquoteSingle \\”\n\t\tdash \\—\n\t\tequals \\≠\n\t\tgraveAccent \\̱\n\t\tbracketOpen \\{\n\t\tbracketClose \\}\n\n$mol_textarea_edit $mol_string\n\tdom_name \\textarea\n\tenter \\enter\n\tfield *\n\t\t^\n\t\tscrollTop 0\n","namespace $.$$ {\n\n\t/**\n\t * An input field for entering multiline text.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_textarea_demo\n\t */\n\texport class $mol_textarea extends $.$mol_textarea {\n\n\t\tindent_inc() {\n\n\t\t\tlet text = this.value()\n\t\t\tlet [ from, to ] = this.selection()\n\t\t\t\n\t\t\tconst rows = text.split( '\\n' )\n\t\t\tlet start = 0\n\t\t\t\n\t\t\tfor( let i = 0; i < rows.length; ++i ) {\n\t\t\t\tlet end = start + rows[i].length\n\t\t\t\t\n\t\t\t\tif( end >= from && start <= to ) {\n\t\t\t\t\tif( to === from || start !== to ) {\n\t\t\t\t\t\trows[i] = '\\t' + rows[i]\n\t\t\t\t\t\tto += 1\n\t\t\t\t\t\tend += 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstart = end + 1\n\t\t\t}\n\n\t\t\tthis.value( rows.join('\\n') )\n\t\t\tthis.selection([ from + 1, to ])\n\t\t\t\n\t\t}\n\n\t\tindent_dec() {\n\n\t\t\tlet text = this.value()\n\t\t\tlet [ from, to ] = this.selection()\n\t\t\t\n\t\t\tconst rows = text.split( '\\n' )\n\t\t\tlet start = 0\n\t\t\t\n\t\t\tfor( let i = 0; i < rows.length; ++i ) {\n\t\t\t\tconst end = start + rows[i].length\n\t\t\t\t\n\t\t\t\tif( end >= from && start <= to && rows[i].startsWith( '\\t' ) ) {\n\t\t\t\t\trows[i] = rows[i].slice( 1 )\n\t\t\t\t\tto -= 1\n\t\t\t\t\tif( start < from ) from -= 1\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstart = end + 1\n\t\t\t}\n\n\t\t\tthis.value( rows.join('\\n') )\n\t\t\tthis.selection([ from, to ])\n\t\t\t\n\t\t}\n\t\t\n\t\tsymbol_insert( event: KeyboardEvent ) {\n\t\t\t\n\t\t\tconst symbol = event.shiftKey\n\t\t\t\t? this.symbols_alt_shift()[ $mol_keyboard_code[ event.keyCode ] ]\n\t\t\t\t: event.ctrlKey\n\t\t\t\t\t? this.symbols_alt_ctrl()[ $mol_keyboard_code[ event.keyCode ] ]\n\t\t\t\t\t: this.symbols_alt()[ $mol_keyboard_code[ event.keyCode ] ]\n\t\t\t\t\n\t\t\tif( !symbol ) return\n\t\t\t\n\t\t\tevent.preventDefault()\n\t\t\tdocument.execCommand( 'insertText', false, symbol )\n\t\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tclickable( next?: boolean ) {\n\t\t\tif( !this.enabled() ) return true\n\t\t\treturn next ?? false\n\t\t}\n\t\t\n\t\thover( event : PointerEvent ) {\n\t\t\tthis.clickable( event.ctrlKey )\n\t\t}\n\t\t\n\t\tpress( event : KeyboardEvent ) {\n\t\t\t\n\t\t\tif( event.altKey ) {\n\t\t\t\t\n\t\t\t\tthis.symbol_insert( event )\n\t\t\t\t\n\t\t\t} else {\n\n\t\t\t\tswitch( event.keyCode ) {\n\t\t\t\t\tcase !event.shiftKey && $mol_keyboard_code.tab : this.indent_inc() ; break\n\t\t\t\t\tcase event.shiftKey && $mol_keyboard_code.tab : this.indent_dec() ; break\n\t\t\t\t\tdefault : return\n\t\t\t\t}\n\t\t\t\n\t\t\t\tevent.preventDefault()\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\t\t\n\t\trow_numb( index: number ) {\n\t\t\treturn index\n\t\t}\n\t\t\n\t\tsyntax() {\n\t\t\treturn this.$.$mol_syntax2_md_code\n\t\t}\n\t}\n\n}\n","namespace $ { $mol_style_attach( \"mol/textarea/textarea.view.css\",\n \"[mol_textarea] {\\n\\tflex: 1 0 auto;\\n\\tflex-direction: column;\\n\\tvertical-align: top;\\n\\tmin-height: max-content;\\n\\twhite-space: pre-wrap;\\n\\tword-break: break-word;\\n\\tborder-radius: var(--mol_gap_round);\\n\\tfont-family: monospace;\\n\\tposition: relative;\\n\\ttab-size: 4;\\n}\\n\\n[mol_textarea_view] {\\n\\tpointer-events: none;\\n\\twhite-space: inherit;\\n\\tfont-family: inherit;\\n\\ttab-size: inherit;\\n\\tuser-select: none;\\n}\\n\\n[mol_textarea_view_copy] {\\n\\tpointer-events: all;\\n}\\n\\n[mol_textarea_clickable] > [mol_textarea_view] {\\n\\tpointer-events: all;\\n\\tuser-select: auto;\\n}\\n\\n[mol_textarea_clickable] > [mol_textarea_edit] {\\n\\tuser-select: none;\\n}\\n\\n[mol_textarea_edit] {\\n\\tfont-family: inherit;\\n\\tpadding: var(--mol_gap_text);\\n\\tcolor: transparent !important;\\n\\tcaret-color: var(--mol_theme_text);\\n\\tresize: none;\\n\\ttext-align: inherit;\\n\\twhite-space: inherit;\\n\\tborder-radius: inherit;\\n\\toverflow-anchor: none;\\n\\tposition: absolute;\\n\\theight: 100%;\\n\\twidth: 100%;\\n\\ttab-size: inherit;\\n}\\n\\n[mol_textarea_sidebar_showed] [mol_textarea_edit] {\\n\\tleft: 1.75rem;\\n\\twidth: calc( 100% - 1.75rem );\\n}\\n\\n[mol_textarea_edit]:hover + [mol_textarea_view] {\\n\\tz-index: var(--mol_layer_hover);\\n}\\n\\n[mol_textarea_edit]:focus + [mol_textarea_view] {\\n\\tz-index: var(--mol_layer_focus);\\n}\\n\"\n) }","$mol_page $mol_view\n\tdom_name \\article\n\tattr *\n\t\t^\n\t\ttabIndex <= tabindex -1\n\tsub /\n\t\t<= Head $mol_view\n\t\t\tminimal_height 64\n\t\t\tdom_name \\header\n\t\t\tsub <= head /\n\t\t\t\t<= Title $mol_view\n\t\t\t\t\tdom_name \\h1\n\t\t\t\t\tsub <= title_content /\n\t\t\t\t\t\t<= Logo null\n\t\t\t\t\t\t<= title\n\t\t\t\t<= Tools $mol_view\n\t\t\t\t\tsub <= tools /$mol_view_content\n\t\t<= Body $mol_scroll\n\t\t\tscroll_top? => body_scroll_top?\n\t\t\tsub <= body_content /\n\t\t\t\t<= Body_content $mol_view\n\t\t\t\t\tsub <= body /$mol_view\n\t\t<= Foot $mol_view\n\t\t\tdom_name \\footer\n\t\t\tsub <= foot /$mol_view\n","namespace $.$$ {\n\n\tconst { per , rem } = $mol_style_unit\n\tconst { hsla, blur } = $mol_style_func\n\n\t$mol_style_define( $mol_page , {\n\n\t\tdisplay: 'flex' ,\n\t\tflex: {\n\t\t\tbasis: 'auto' ,\n\t\t\tdirection: 'column' ,\n\t\t},\n\t\tposition: 'relative' ,\n\t\talignSelf: 'stretch' ,\n\t\tmaxWidth: per(100) ,\n\t\tmaxHeight: per(100) ,\n\t\tboxSizing: 'border-box' ,\n\t\tcolor: $mol_theme.text ,\n\t\t// backdropFilter: blur( `3px` ), enforces layering\n\t\t// zIndex: 0 ,\n\t\t\n\t\t':focus': {\n\t\t\toutline: 'none',\n\t\t} ,\n\n\t\tHead: {\n\t\t\tdisplay: 'flex' ,\n\t\t\tflexWrap: 'wrap' ,\n\t\t\tjustifyContent: 'flex-end' ,\n\t\t\tflex: 'none',\n\t\t\tposition: 'relative' ,\n\t\t\tmargin: 0 ,\n\t\t\tminHeight: rem(4),\n\t\t\tpadding: $mol_gap.block ,\n\t\t\tbackground: {\n\t\t\t\tcolor: $mol_theme.card ,\n\t\t\t},\n\t\t\tborder: {\n\t\t\t\tradius: $mol_gap.round,\n\t\t\t},\n\t\t\tbox: {\n\t\t\t\tshadow: [[ 0, `0.5rem`, `0.5rem`, `-0.5rem`, hsla( 0, 0, 0, .25 ) ]],\n\t\t\t},\n\t\t\tzIndex: 2,\n\n\t\t\t'@media': {\n\t\t\t\t'print': {\n\t\t\t\t\tbox: {\n\t\t\t\t\t\tshadow: [[ 0, `1px`, 0, 0, hsla( 0, 0, 0, .25 ) ]],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t},\n\n\t\tTitle: {\n\n\t\t\tminHeight: rem(2),\n\t\t\tmargin: 0,\n\t\t\tpadding: $mol_gap.text,\n\t\t\tgap: $mol_gap.text,\n\t\t\twordBreak: 'normal',\n\t\t\ttextShadow: '0 0',\n\n\t\t\tfont: {\n\t\t\t\tsize: 'inherit',\n\t\t\t\tweight: 'normal',\n\t\t\t},\n\t\n\t\t\tflex: {\n\t\t\t\tgrow: 1,\n\t\t\t\tshrink: 1,\n\t\t\t\tbasis: 'auto',\n\t\t\t},\n\n\t\t},\n\n\t\tTools: {\n\t\t\t\n\t\t\tflex: {\n\t\t\t\tbasis: 'auto',\n\t\t\t\tgrow: 0,\n\t\t\t\tshrink: 1,\n\t\t\t},\n\t\t\tdisplay: 'flex',\n\t\t\tjustifyContent: 'flex-end',\n\t\t\talignItems: 'flex-start',\n\t\t\tflexWrap: 'wrap',\n\n\t\t\t'@media': {\n\t\t\t\t'print': {\n\t\t\t\t\tdisplay: 'none',\n\t\t\t\t},\n\t\t\t},\n\n\t\t},\n\n\t\tBody: {\n\t\t\tflex: {\n\t\t\t\tgrow: 1000,\n\t\t\t\tshrink: 1,\n\t\t\t\tbasis: per(100),\n\t\t\t},\n\t\t},\n\t\t\n\t\tBody_content: {\n\t\t\tpadding: $mol_gap.block ,\n\t\t\tflex: {\n\t\t\t\tdirection: 'column',\n\t\t\t\tshrink: 1,\n\t\t\t\tgrow: 1,\n\t\t\t},\n\t\t\tjustify: {\n\t\t\t\tself: 'stretch',\n\t\t\t},\n\t\t},\n\t\t\n\t\tFoot: {\n\t\t\tdisplay: 'flex',\n\t\t\tjustifyContent: 'space-between',\n\t\t\tflex: 'none',\n\t\t\tmargin: 0,\n\t\t\tbackground: {\n\t\t\t\tcolor: $mol_theme.card ,\n\t\t\t},\n\t\t\tborder: {\n\t\t\t\tradius: $mol_gap.round,\n\t\t\t},\n\t\t\tbox: {\n\t\t\t\tshadow: [[ 0, `-0.5rem`, `0.5rem`, `-0.5rem`, hsla( 0, 0, 0, .25 ) ]],\n\t\t\t},\n\t\t\tzIndex: 1,\n\t\t\tpadding: $mol_gap.block ,\n\t\t\t':empty': {\n\t\t\t\tdisplay: 'none',\n\t\t\t},\n\t\t},\t\n\n\t} )\n\t\n}\n","$optimade_cifplayer_lib_three_view $mol_view\n\tsub /\n\t\t<= canvas null\n\tscene null\n\tcamera null\n\tcontrols null\n\tcontrols_target null\n\ton_render null\n\tnew_object*? null\n\tobject*? null\n\tauto /\n\t\t<= controls_target_changed null\n\t\t<= resize null\n\t\t<= start_render_loop null\n","namespace $.$$ {\n\n\t$mol_style_define( $optimade_cifplayer_lib_three_view, {\n\n\t\tflex: {\n\t\t\tgrow: 1,\n\t\t\tbasis: '20rem',\n\t\t},\n\n\t} )\n\n}\n","$mol_icon_eye $mol_icon path \\M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\n","$mol_icon_eye_check $mol_icon path \\M23.5,17L18.5,22L15,18.5L16.5,17L18.5,19L22,15.5L23.5,17M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,17C12.5,17 12.97,16.93 13.42,16.79C13.15,17.5 13,18.22 13,19V19.45L12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5C17,4.5 21.27,7.61 23,12C22.75,12.64 22.44,13.26 22.08,13.85C21.18,13.31 20.12,13 19,13C18.22,13 17.5,13.15 16.79,13.42C16.93,12.97 17,12.5 17,12A5,5 0 0,0 12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17Z\n","$mol_icon_tick $mol_icon path \\M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\n","$mol_check_box $mol_check\n\tIcon $mol_icon_tick\n","namespace $ { $mol_style_attach( \"mol/check/box/box.view.css\",\n \"[mol_check_box_icon] {\\n\\tborder-radius: var(--mol_gap_round);\\n\\tbox-shadow: inset 0 0 0 1px var(--mol_theme_line);\\n\\tcolor: var(--mol_theme_shade);\\n\\theight: 1rem;\\n\\talign-self: center;\\n}\\n\\n[mol_check]:not([mol_check_checked]) > [mol_check_box_icon] {\\n\\tfill: transparent;\\n}\\n\\n[mol_check]:not([disabled]) > [mol_check_box_icon] {\\n\\tbackground: var(--mol_theme_field);\\n\\tcolor: var(--mol_theme_text);\\n}\\n\"\n) }","$mol_pop $mol_view\n\tshowed? false\n\talign_vert \\\n\talign_hor \\\n\tprefer \\vert\n\tsub /\n\t\t<= Anchor null\n\tsub_visible /\n\t\t<= Anchor\n\t\t<= Bubble $mol_pop_bubble\n\t\t\talign <= align \\bottom_center\n\t\t\tcontent <= bubble_content /$mol_view_content\n\t\t\theight_max <= height_max 9999\n\n$mol_pop_bubble $mol_view\n\tsub <= content /$mol_view_content\n\tstyle *\n\t\t^\n\t\tmaxHeight <= height_max 9999\n\tattr *\n\t\t^\n\t\tmol_pop_align <= align \\\n\t\ttabindex 0\n","namespace $.$$ {\n\n\t/**\n\t * `Bubble` that can be shown anchored to `Anchor` element.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_pop_demo\n\t */\n\texport class $mol_pop extends $.$mol_pop {\n\t\t\n\t\t@ $mol_mem\n\t\tshowed( next = false ) {\n\t\t\tthis.focused()\n\t\t\treturn next\n\t\t}\n\n\t\t@ $mol_mem\n\t\tsub_visible() {\n\t\t\treturn [\n\t\t\t\tthis.Anchor() ,\n\t\t\t\t... this.showed() ? [ this.Bubble() ] : [] ,\n\t\t\t]\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\theight_max() {\n\t\t\t\n\t\t\tconst viewport = this.$.$mol_window.size()\n\t\t\tconst rect_bubble = this.view_rect()!\n\t\t\tconst align = this.align_vert()\n\t\t\t\n\t\t\tif( align === 'bottom' ) return ( viewport.height - rect_bubble.bottom ) * .66\n\t\t\tif( align === 'top' ) return rect_bubble.top * .66\n\t\t\t\n\t\t\treturn 0\n\t\t}\n\n\t\t@ $mol_mem\n\t\talign() {\n\t\t\tswitch( this.prefer() ) {\n\t\t\t\tcase 'hor': return `${ this.align_hor() }_${ this.align_vert() }`\n\t\t\t\tcase 'vert': return `${ this.align_vert() }_${ this.align_hor() }`\n\t\t\t\tdefault: return this.prefer()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem\n\t\talign_vert() {\n\t\t\tconst viewport = this.view_port()\n\t\t\t\n\t\t\tconst rect_pop = this.view_rect()\n\t\t\tif( !rect_pop ) return 'suspense'\n\t\t\t\n\t\t\treturn rect_pop.top > ( viewport.top + viewport.height / 2 ) ? 'top' : 'bottom'\n\t\t}\n\n\t\t@ $mol_mem\n\t\talign_hor() {\n\t\t\tconst viewport = this.view_port()\n\t\t\t\n\t\t\tconst rect_pop = this.view_rect()\n\t\t\tif( !rect_pop ) return 'suspense'\n\t\t\t\n\t\t\treturn rect_pop.left > ( viewport.left + viewport.width / 2 ) ? 'left' : 'right'\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tView_port() {\n\t\t\tconst view = new $mol_view\n\t\t\tview.dom_node = ()=> {\n\t\t\t\tlet node = this.dom_node() as HTMLElement\n\t\t\t\twhile( node = node.offsetParent! as HTMLElement ) {\n\t\t\t\t\tif( this.$.$mol_dom_context.getComputedStyle( node ).overflow !== 'visible' ) return node\n\t\t\t\t}\n\t\t\t\treturn this.$.$mol_dom_context.document.documentElement\n\t\t\t}\n\t\t\treturn view\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tview_port() {\n\t\t\treturn this.View_port().view_rect() ?? { ... this.$.$mol_window.size(), left: 0, top: 0 }\n\t\t}\n\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/pop/pop.view.css\",\n \"[mol_pop] {\\n\\tposition: relative;\\n\\tdisplay: inline-flex;\\n}\\n\\n[mol_pop_bubble] {\\n\\tbox-shadow: 0 0 1rem hsla(0,0%,0%,.5);\\n\\tborder-radius: var(--mol_gap_round);\\n\\tposition: absolute;\\n\\tz-index: var(--mol_layer_popup);\\n\\tbackground: var(--mol_theme_back);\\n\\tmax-width: none;\\n\\tmax-height: none;\\n\\t/* overflow: hidden;\\n\\toverflow-y: scroll;\\n\\toverflow-y: overlay; */\\n\\tword-break: normal;\\n\\twidth: max-content;\\n\\theight: max-content;\\n\\tflex-direction: column;\\n\\tmax-width: 80vw;\\n\\tmax-height: 80vw;\\n\\tcontain: paint;\\n\\ttransition-property: opacity;\\n}\\n\\n:where( [mol_pop_bubble] > * ) {\\n\\tbackground: var(--mol_theme_card);\\n}\\n\\n[mol_pop_bubble][mol_scroll] {\\n\\tbackground: var(--mol_theme_back);\\n}\\n\\n[mol_pop_bubble]:focus {\\n\\toutline: none;\\n}\\n\\n[mol_pop_align=\\\"suspense_suspense\\\"] {\\n\\topacity: 0;\\n}\\n\\n[mol_pop_align=\\\"left_top\\\"] {\\n\\ttransform: translate(-100%);\\n\\tleft: 0;\\n\\tbottom: 0;\\n}\\n\\n[mol_pop_align=\\\"left_center\\\"] {\\n\\ttransform: translate(-100%, -50%);\\n\\tleft: 0;\\n\\ttop: 50%;\\n}\\n\\n[mol_pop_align=\\\"left_bottom\\\"] {\\n\\ttransform: translate(-100%);\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\\n[mol_pop_align=\\\"right_top\\\"] {\\n\\ttransform: translate(100%);\\n\\tright: 0;\\n\\tbottom: 0;\\n}\\n\\n[mol_pop_align=\\\"right_center\\\"] {\\n\\ttransform: translate(100%, -50%);\\n\\tright: 0;\\n\\ttop: 50%;\\n}\\n\\n[mol_pop_align=\\\"right_bottom\\\"] {\\n\\ttransform: translate(100%);\\n\\tright: 0;\\n\\ttop: 0;\\n}\\n\\n[mol_pop_align=\\\"center\\\"] {\\n\\tleft: 50%;\\n\\ttop: 50%;\\n\\ttransform: translate(-50%, -50%);\\n}\\n\\n[mol_pop_align=\\\"top_left\\\"] {\\n\\tright: 0;\\n\\tbottom: 100%;\\n}\\n\\n[mol_pop_align=\\\"top_center\\\"] {\\n\\ttransform: translate(-50%);\\n\\tleft: 50%;\\n\\tbottom: 100%;\\n}\\n\\n[mol_pop_align=\\\"top_right\\\"] {\\n\\tleft: 0;\\n\\tbottom: 100%;\\n}\\n\\n[mol_pop_align=\\\"bottom_left\\\"] {\\n\\tright: 0;\\n\\ttop: 100%;\\n}\\n\\n[mol_pop_align=\\\"bottom_center\\\"] {\\n\\ttransform: translate(-50%);\\n\\tleft: 50%;\\n\\ttop: 100%;\\n}\\n\\n[mol_pop_align=\\\"bottom_right\\\"] {\\n\\tleft: 0;\\n\\ttop: 100%;\\n}\\n\"\n) }","$mol_pick $mol_pop\n\tevent *\n\t\t^\n\t\tkeydown?event <=> keydown?event null\n\tAnchor <= Trigger $mol_check\n\t\tminimal_width 40\n\t\tminimal_height 40\n\t\tenabled <= trigger_enabled true\n\t\tchecked? <=> showed?\n\t\tclicks? <=> clicks? null\n\t\tsub <= trigger_content /$mol_view_content\n\t\t\t<= title\n\t\thint <= hint \\\n","namespace $.$$ {\n\n\t/**\n\t * Pop-up display and hide by mouse click, also hide by unfocus.\n\t * Based on [mol_pop](https://mol.hyoo.ru/#!section=demos/demo=mol_pop_demo) component.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_pick_demo\n\t */\n\texport class $mol_pick extends $.$mol_pick {\n\t\t\n\t\tkeydown( event : KeyboardEvent ) {\n\t\t\t\n\t\t\tif( !this.trigger_enabled() ) return\n\n\t\t\tif( event.defaultPrevented ) return \n\t\t\t\n\t\t\tif( event.keyCode === $mol_keyboard_code.escape ) {\n\t\t\t\tif( !this.showed() ) return\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.showed( false )\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/pick/pick.view.css\",\n \"[mol_pick_trigger] {\\n\\talign-items: center;\\n\\tflex-grow: 1;\\n}\\n\"\n) }","$mol_icon_minus $mol_icon path \\M19,13H5V11H19V13Z\n","$mol_icon_plus $mol_icon path \\M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\n","$mol_number $mol_view\n\tprecision_view <= precision 1\n\tprecision_change <= precision 1\n\tvalue_min -Infinity\n\tvalue_max +Infinity\n\tvalue? +NaN\n\tenabled true\n\tsub /\n\t\t<= String $mol_string\n\t\t\t- \\ we don't want native number controls in mobile devices\n\t\t\t- \\ https://stackoverflow.com/questions/3790935/can-i-hide-the-html5-number-input-s-spin-box\n\t\t\ttype <= type \\tel\n\t\t\tvalue? <=> value_string? \\\n\t\t\thint <= hint \\ \n\t\t\tenabled <= string_enabled <= enabled\n\t\t\tsubmit? <=> submit? null\n\t\t<= Dec $mol_button_minor\n\t\t\tevent_click? <=> event_dec? null\n\t\t\tenabled <= dec_enabled <= enabled\n\t\t\tsub / <= dec_icon $mol_icon_minus\n\t\t<= Inc $mol_button_minor\n\t\t\tevent_click? <=> event_inc? null\n\t\t\tenabled <= inc_enabled <= enabled\n\t\t\tsub / <= inc_icon $mol_icon_plus\n","namespace $ { $mol_style_attach( \"mol/number/number.css\",\n \"[mol_number] {\\n\\tdisplay: flex;\\n\\tflex: 0 1 auto;\\n\\tposition: relative;\\n\\talign-items: stretch;\\n\\tmax-width: 100%;\\n}\\n\\n[mol_number_string] {\\n\\tappearance: textfield;\\n\\tflex: 1 1 7rem;\\n\\twidth: 7rem;\\n}\\n\\n[mol_number_string]::-webkit-inner-spin-button {\\n\\tdisplay: none;\\n}\\n\"\n) }","namespace $.$$ {\n\n\t/**\n\t * Component for entering, incrementing and decrementing numeric values.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_number_demo\n\t */\n\texport class $mol_number extends $.$mol_number {\n\t\t\n\t\tvalue_limited( val? : number ) : number {\n\t\t\tif (Number.isNaN( val )) return this.value( val )\n\t\t\tif ( val === undefined ) return this.value()\n\n\t\t\tconst min = this.value_min()\n\t\t\tconst max = this.value_max()\n\n\t\t\tif( val < min ) return this.value( min )\n\t\t\tif( val > max ) return this.value( max )\n\t\t\t\n\t\t\treturn this.value( val )\n\t\t}\n\n\t \toverride event_dec( next? : Event ) {\n\t\t\tthis.value_limited( ( this.value_limited() || 0 ) - this.precision_change() )\n\t\t}\n\n\t\toverride event_inc( next? : Event ) {\n\t\t\tthis.value_limited( ( this.value_limited() || 0 ) + this.precision_change() )\n\t\t}\n\n\t\tround(val: number) {\n\t\t\tif (Number.isNaN(val)) return ''\n\t\t\tif( val === 0 ) return '0'\n\t\t\tif( !val ) return ''\n\n\t\t\tconst precision_view = this.precision_view()\n\n\t\t\tif (! precision_view) return val.toFixed()\n\n\t\t\tif( precision_view >= 1 ) {\n\t\t\t\treturn ( val / precision_view ).toFixed()\n\t\t\t} else {\n\t\t\t\tconst fixed_number = Math.log10( 1 / precision_view )\n\t\t\t\treturn val.toFixed( Math.ceil( fixed_number ) )\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem\n\t\toverride value_string( next? : string ): string {\n\t\t\t// Вытягиваем value\n\t\t\t// Если кто-то поменяет из вне value, value_string надо обновить\n\t\t\tconst current = this.round( this.value_limited() )\n\t\t\tif (next === undefined) return current\n\n\t\t\tconst precision = this.precision_view()\n\n\t\t\t// Точку в конце поставить нельзя, если precision_view целое число > 0\n\t\t\tif ( precision - Math.floor(precision) === 0 ) next = next.replace(/[.,]/g, '')\n\n\t\t\t// Запятые меняем на точки, удаляем не-цифры и не-точки и лишние ноли в начале целой части.\n\t\t\t// Минус получится ввести только в начале.\n\t\t\tnext = (this.value_min() < 0 && next.startsWith('-') ? '-' : '')\n\t\t\t\t+ next.replace(/,/g, '.').replace(/[^\\d\\.]/g, '').replace(/^0{2,}/, '0')\n\n\t\t\tlet dot_pos = next.indexOf('.')\n\n\t\t\tif (dot_pos !== -1) {\n\t\t\t\tconst prev = $mol_wire_probe(() => this.value_string()) ?? ''\n\t\t\t\tconst dot_pos_prev = prev.indexOf('.')\n\t\t\t\t// Определяем где относительно предыдущей точки юзер поставил новую\n\t\t\t\tif (dot_pos_prev === dot_pos) dot_pos = next.lastIndexOf('.')\n\t\t\t\t\n\t\t\t\t// Из частей до и после новой точки старую точку удаляем\n\t\t\t\tconst frac = next.slice(dot_pos + 1).replace(/\\./g, '')\n\n\t\t\t\t// Если точка идет первой, перед ней пишем 0, что бы форматирование выглядело нормально в mask\n\t\t\t\tnext = (next.slice(0, dot_pos) || '0').replace(/\\./g, '') + '.' + frac\n\t\t\t}\n\n\t\t\t// Оставляем старое значение в value есть сочетание, приводящие к NaN, например -.\n\t\t\tif ( Number.isNaN(Number(next)) ) return next\n\n\t\t\tif ( next.endsWith('.') ) return next\n\t\t\tif ( next.endsWith('-') ) return next\n\n\t\t\t// Если пустая строка - сетим NaN\n\t\t\t// Применяем округления.\n\t\t\tthis.value_limited(Number(next || Number.NaN))\n\n\t\t\t// Возвращаем все-равно не нормализованное значение\n\t\t\t// Иначе нельзя ввести будет 10, если min/max 5..10\n\t\t\treturn next\n\t\t}\n\n\t\t@ $mol_mem\n\t\toverride dec_enabled() : boolean {\n\t\t\treturn this.enabled() && (\n\t\t\t\t!( ( this.value() || 0 ) <= this.value_min() )\n\t\t\t)\n\t\t}\n\n\t\t@ $mol_mem\n\t\toverride inc_enabled() : boolean {\n\t\t\treturn this.enabled() && ( \n\t\t\t\t!( ( this.value() || 0 ) >= this.value_max() )\n\t\t\t)\n\t\t}\n\n\t}\n}\n","$mol_icon_image $mol_icon path \\M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z\n","$mol_icon_image_filter $mol_icon path \\M21,17H7V3H21M21,1H7C5.9,1 5,1.9 5,3V17C5,18.1 5.9,19 7,19H21C22.1,19 23,18.1 23,17V3C23,1.9 22.1,1 21,1M3,5H1V21C1,22.1 1.9,23 3,23H19V21H3M15.96,10.29L13.21,13.83L11.25,11.47L8.5,15H19.5L15.96,10.29Z\n","$mol_icon_image_filter_center_focus $mol_icon path \\M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z\n","$mol_icon_magnify $mol_icon path \\M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\n","$mol_icon_magnify_plus $mol_icon path \\M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M8,5V8H5V10H8V13H10V10H13V8H10V5H8Z\n","$mol_icon_magnify_plus_outline $mol_icon path \\M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14M12,10H10V12H9V10H7V9H9V7H10V9H12V10Z\n","$mol_icon_magnify_minus $mol_icon path \\M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M5,8V10H13V8H5Z\n","$mol_icon_magnify_minus_outline $mol_icon path \\M15.5,14H14.71L14.43,13.73C15.41,12.59 16,11.11 16,9.5A6.5,6.5 0 0,0 9.5,3A6.5,6.5 0 0,0 3,9.5A6.5,6.5 0 0,0 9.5,16C11.11,16 12.59,15.41 13.73,14.43L14,14.71V15.5L19,20.5L20.5,19L15.5,14M9.5,14C7,14 5,12 5,9.5C5,7 7,5 9.5,5C12,5 14,7 14,9.5C14,12 12,14 9.5,14M7,9H12V10H7V9Z\n","$mol_check_list $mol_view\n\tdictionary *\n\tOption* $mol_check\n\t\tchecked? <=> option_checked*? false\n\t\tlabel <= option_label* /\n\t\t\t<= option_title* \\\n\t\tenabled <= option_enabled* <= enabled true\n\t\thint <= option_hint* \\\n\t\tminimal_height 24\n\toptions *\n\tkeys /string\n\tsub <= items /$mol_check\n","namespace $.$$ {\n\t\n\t/**\n\t * List of checkboxes\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_check_list_demo\n\t */\n\texport class $mol_check_list extends $.$mol_check_list {\n\n\t\toptions() : { [ key : string ] : string } {\n\t\t\treturn {}\n\t\t}\n\n\t\toverride dictionary(next?: Record) {\n\t\t\treturn next ?? {}\n\t\t}\n\n\t\toverride option_checked(id: string, next?: boolean | null) {\n\t\t\tconst prev = this.dictionary()\n\t\t\tif (next === undefined) return prev[id] ?? null\n\n\t\t\tconst next_rec = { ... prev, [id]: next } as Record\n\t\t\tif (next === null) delete next_rec[id]\n\n\t\t\treturn this.dictionary(next_rec)[id] ?? null\n\t\t}\n\n\t\t@ $mol_mem\n\t\tkeys(): readonly string[] {\n\t\t\treturn Object.keys( this.options() )\n\t\t}\n\n\t\t@ $mol_mem\n\t\titems() {\n\t\t\treturn this.keys().map( key => this.Option( key ) )\n\t\t}\n\t\t\n\t\toption_title( key : string ) {\n\t\t\treturn this.options()[key] || key\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ { $mol_style_attach( \"mol/check/list/list.view.css\",\n \"[mol_check_list] {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tflex: 1 1 auto;\\n\\tborder-radius: var(--mol_gap_round);\\n\\tgap: 1px;\\n}\\n\\n[mol_check_list_option] {\\n\\tflex: 0 1 auto;\\n}\\n\\n[mol_check_list_option]:where([mol_check_checked=\\\"true\\\"]) {\\n\\ttext-shadow: 0 0;\\n\\tcolor: var(--mol_theme_current);\\n}\\n\\n[mol_check_list_option]:where([mol_check_checked=\\\"true\\\"][disabled]) {\\n\\tcolor: var(--mol_theme_text);\\n}\\n\"\n) }","$mol_switch $mol_check_list\n\tvalue? \\\n","namespace $ {\n\t\n\texport class $mol_state_session< Value > extends $mol_object {\n\t\t\n\t\tstatic 'native()' : Pick< Storage , 'getItem'|'setItem'|'removeItem' >\n\t\tstatic native() {\n\t\t\tif( this['native()'] ) return this['native()']\n\n\t\t\tcheck : try {\n\t\t\t\tconst native = $mol_dom_context.sessionStorage\n\t\t\t\tif( !native ) break check\n\n\t\t\t\tnative.setItem( '' , '' )\n\t\t\t\tnative.removeItem( '' )\n\t\t\t\treturn this['native()'] = native\n\t\t\t} catch( error: any ) {\n\t\t\t\tconsole.warn( error )\n\t\t\t}\n\n\t\t\treturn this['native()'] = {\n\t\t\t\tgetItem( key : string ) {\n\t\t\t\t\treturn (this as any)[ ':' + key ]\n\t\t\t\t} ,\n\t\t\t\tsetItem( key : string , value : string ) {\n\t\t\t\t\t(this as any)[ ':' + key ] = value\n\t\t\t\t} ,\n\t\t\t\tremoveItem( key : string ) {\n\t\t\t\t\t(this as any)[ ':' + key ] = void 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >( key : string , next? : Value ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( this.native().getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) this.native().removeItem( key )\n\t\t\telse this.native().setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_session.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $.$$ {\n\t\n\t/**\n\t * Buttons which switching the state\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_switch_demo\n\t */\n\texport class $mol_switch extends $.$mol_switch {\n\n\t\tvalue( next? : string ) {\n\t\t\treturn $mol_state_session.value( `${ this }.value()` , next ) ?? ''\n\t\t}\n\t\t\n\t\toption_checked( key : string , next? : boolean ) {\n\t\t\tif( next === undefined ) return this.value() == key\n\t\t\tthis.value( next ? key : '' )\n\t\t\treturn next\n\t\t}\n\n\t}\n\n}\n","$mol_card $mol_list\n\tattr *\n\t\t^\n\t\tmol_card_status_type <= status \\\n\trows /$mol_view\n\t\t<= Content $mol_view\n\t\t\tsub <= content /$mol_view_content\n\t\t\t\t<= title\n\t\t<= Status $mol_view\n\t\t\tminimal_height 30\n\t\t\tsub /\n\t\t\t\t<= status_text <= status \\\n","namespace $.$$ {\n\n\t/**\n\t * Represents a common card. It can has several statuses at bottom line.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_card_demo/readme\n\t */\n\texport class $mol_card extends $.$mol_card {\n\n\t\trows(): readonly $mol_view[] {\n\t\t\treturn [\n\t\t\t\tthis.Content() ,\n\t\t\t\t... this.status_text() ? [ this.Status() ] : [],\n\t\t\t]\n\t\t}\n\n\t}\n\n}\n","namespace $ { $mol_style_attach( \"mol/card/card.view.css\",\n \"[mol_card] {\\n\\tbackground: var(--mol_theme_card);\\n\\tcolor: var(--mol_theme_text);\\n\\tborder-radius: var(--mol_gap_round);\\n\\tdisplay: flex;\\n\\tflex: 0 1 auto;\\n\\tflex-direction: column;\\n\\tposition: relative;\\n\\tbox-shadow: 0 0 0.5rem 0rem hsla(0,0%,0%,.125);\\n\\t/* overflow: hidden; */\\n}\\n\\n[mol_card_content] {\\n\\tflex: 1 1 auto;\\n\\tborder-radius: var(--mol_gap_round);\\n\\tmargin: 0;\\n\\tpadding: var(--mol_gap_block);\\n}\\n\\n[mol_card_status] {\\n\\tbackground: var(--mol_theme_line);\\n\\ttext-transform: capitalize;\\n\\tpadding: var(--mol_gap_text);\\n\\tmargin: 0;\\n}\\n\\n[mol_card_status] {\\n\\tbackground: var(--mol_theme_line);\\n}\\n\"\n) }","$optimade_cifplayer_player $mol_view\n\tdata? null\n\texternals? null\n\tfullscreen? true\n\tskip_panel? false\n\tatom_radius_scale 0.6\n\tzoom_scale_step 0.3\n\t-\n\tvibrate? null\n\tunvibrate null\n\tphonon? null\n\t-\n\ttranslate_cells /\n\t\t<= translate_a? 1\n\t\t<= translate_b? 1\n\t\t<= translate_c? 1\n\ttranslate_cells_limit 50\n\t-\n\tplugins /\n\t\t<= Theme $mol_theme_auto\n\t-\n\tauto /\n\t\t<= external_theme_auto null\n\t\t<= dir_light null\n\t\t<= ambient_light null\n\t\t^ atom_boxes /\n\t\t^ overlay_boxes /\n\t\t<= cell_box null\n\t\t<= axes_box null\n\t\t<= overlay_changed null\n\t\t<= vibration_active? false\n\t\t<= vibration_restart null\n\tatom_box* null\n\toverlay_box* null\n\t-\n\tminimal_heigth 300\n\tsub /\n\t\t<= Three $optimade_cifplayer_lib_three_view\n\t\t\tscene => scene\n\t\t\tcontrols => controls\n\t\t\tcontrols_target <= controls_target null\n\t\t\tcamera => camera\n\t\t\ton_render <= on_render null\n\t\t<= Left_panel $mol_view\n\t\t\tsub <= left_panel /\n\t\t\t\t<= Info $mol_view\n\t\t\t\t\tsub <= info_sub /\n\t\t\t\t\t\t<= Descr_a $mol_paragraph\n\t\t\t\t\t\t\ttitle <= descr_a \\a=\n\t\t\t\t\t\t<= Descr_b $mol_paragraph\n\t\t\t\t\t\t\ttitle <= descr_b \\b=\n\t\t\t\t\t\t<= Descr_c $mol_paragraph\n\t\t\t\t\t\t\ttitle <= descr_c \\c=\n\t\t\t\t\t\t<= Descr_alpha $mol_paragraph\n\t\t\t\t\t\t\ttitle <= descr_alpha \\α=\n\t\t\t\t\t\t<= Descr_beta $mol_paragraph\n\t\t\t\t\t\t\ttitle <= descr_beta \\β=\n\t\t\t\t\t\t<= Descr_gamma $mol_paragraph\n\t\t\t\t\t\t\ttitle <= descr_gamma \\γ=\n\t\t\t\t^ symlabel_visible / <= Symlabel $mol_pick\n\t\t\t\t\ttrigger_content /\n\t\t\t\t\t\t<= Sym_icon $mol_icon_eye_check\n\t\t\t\t\t\t<= symlabel \\SG\n\t\t\t\t\tbubble_content /\n\t\t\t\t\t\t<= Toogle_all $mol_button_minor\n\t\t\t\t\t\t\ttitle <= Toogle_all_title \\Enable all\n\t\t\t\t\t\t\tclick? <=> toogle_all_symmetry? null\n\t\t\t\t\t\t<= Sym_list $mol_scroll\n\t\t\t\t\t\t\tsub /\n\t\t\t\t\t\t\t\t<= Sym_checks $mol_list\n\t\t\t\t\t\t\t\t\tsub <= sym_checks /\n\t\t\t\t\t\t\t\t\t\t<= Sym_check*0 $mol_check_box\n\t\t\t\t\t\t\t\t\t\t\ttitle <= sym_name* \\\n\t\t\t\t\t\t\t\t\t\t\tchecked? <=> symmetry_visible*? false\n\t\t\t\t<= Translate_cells $mol_pick\n\t\t\t\t\ttrigger_content /\n\t\t\t\t\t\t<= translate_cell_label \\1×1×1\n\t\t\t\t\tbubble_content /\n\t\t\t\t\t\t<= Translate_label_a $mol_paragraph\n\t\t\t\t\t\t\ttitle \\a\n\t\t\t\t\t\t<= Translate_a $mol_number\n\t\t\t\t\t\t\tvalue? <=> translate_a?\n\t\t\t\t\t\t\thint \\1\n\t\t\t\t\t\t\tvalue_min 1\n\t\t\t\t\t\t\tvalue_max <= translate_limit_a 1\n\t\t\t\t\t\t<= Translate_label_b $mol_paragraph\n\t\t\t\t\t\t\ttitle \\b\n\t\t\t\t\t\t<= Translate_b $mol_number\n\t\t\t\t\t\t\tvalue? <=> translate_b?\n\t\t\t\t\t\t\thint \\1\n\t\t\t\t\t\t\tvalue_min 1\n\t\t\t\t\t\t\tvalue_max <= translate_limit_b 1\n\t\t\t\t\t\t<= Translate_label_c $mol_paragraph\n\t\t\t\t\t\t\ttitle \\c\n\t\t\t\t\t\t<= Translate_c $mol_number\n\t\t\t\t\t\t\tvalue? <=> translate_c?\n\t\t\t\t\t\t\thint \\1\n\t\t\t\t\t\t\tvalue_min 1\n\t\t\t\t\t\t\tvalue_max <= translate_limit_c 1\n\t\t\t\t<= Center $mol_check_icon\n\t\t\t\t\tchecked? <=> centered? true\n\t\t\t\t\tIcon <= Center_icon $mol_icon_image_filter_center_focus\n\t\t<= Tools $mol_view\n\t\t\tsub /\n\t\t\t\t<= Zoom_section $mol_list\n\t\t\t\t\tsub /\n\t\t\t\t\t\t<= Zoom_up $mol_button_minor\n\t\t\t\t\t\t\tclick? <=> zoom_up? null\n\t\t\t\t\t\t\tsub / <= Zoom_up_icon $mol_icon_magnify_plus_outline\n\t\t\t\t\t\t<= Zoom_down $mol_button_minor\n\t\t\t\t\t\t\tclick? <=> zoom_down? null\n\t\t\t\t\t\t\tsub / <= Zoom_down_icon $mol_icon_magnify_minus_outline\n\t\t<= Overlays $mol_view\n\t\t\tsub <= overlays_sub /\n\t\t\t\t<= Switch_overlay $mol_switch\n\t\t\t\t\tvalue? <=> overlay? \\S\n\t\t\t\t\toptions <= available_overlays *string\n\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\\display none\n\t\t\t\t\t\tS \\elements\n\t\t^ message_visible / <= Message $mol_view\n\t\t\tsub /\n\t\t\t\t<= Message_card $mol_card\n\t\t\t\t\ttheme \\$mol_theme_special\n\t\t\t\t\ttitle <= message \\\n\tcolors_light *\n\t\ta \\#990000\n\t\tb \\#009900\n\t\tc \\#0099FF\n\tcolors_dark *\n\t\ta \\#EE4B2B\n\t\tb \\#009900\n\t\tc \\#0099FF\n\tcell_lines_color \\#DDDDDD\n\taxcolor /\n\t\t<= color_a \\\n\t\t<= color_b \\\n\t\t<= color_c \\\n\tstyle *\n\t\t^\n\t\t--color_a <= color_a\n\t\t--color_b <= color_b\n\t\t--color_c <= color_c\n\tattr *\n\t\t^\n\t\tfullscreen <= fullscreen?\n","namespace $ { $mol_style_attach( \"optimade/cifplayer/player/player.view.css\",\n \"*{font-family:Exo2,Arial;}\\n\\n[mol_theme=\\\"$mol_theme_light\\\"] {\\n\\t--mol_theme_back: white;\\n}\\n\\n@font-face {\\nfont-family:Exo2;src:local('Exo 2 Regular'),local('Exo2-Regular'),url('data:font/woff;charset=utf-8;base64,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') format('woff');\\n}\\n\"\n) }","namespace $.$$ {\n\n\t$mol_style_define( $optimade_cifplayer_player, {\n\n\t\tbackground: {\n\t\t\tcolor: $mol_theme.back,\n\t\t},\n\n\t\tposition: 'relative',\n\t\theight: '100%',\n\n\t\t'@': {\n\t\t\tfullscreen: {\n\t\t\t\t'true': {\n\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\tzIndex: 9999,\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: 0,\n\t\t\t\t\tbottom: 0,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tDescr_a: {\n\t\t\tcolor: $mol_style_func.vary('--color_a')\n\t\t},\n\n\t\tDescr_b: {\n\t\t\tcolor: $mol_style_func.vary('--color_b')\n\t\t},\n\n\t\tDescr_c: {\n\t\t\tcolor: $mol_style_func.vary('--color_c')\n\t\t},\n\n\t\tTranslate_label_a: {\n\t\t\tcolor: $mol_style_func.vary('--color_a'),\n\t\t\tpadding: $mol_gap.text,\n\t\t},\n\n\t\tTranslate_label_b: {\n\t\t\tcolor: $mol_style_func.vary('--color_b'),\n\t\t\tpadding: $mol_gap.text,\n\t\t},\n\n\t\tTranslate_label_c: {\n\t\t\tcolor: $mol_style_func.vary('--color_c'),\n\t\t\tpadding: $mol_gap.text,\n\t\t},\n\n\t\tTranslate_cells: {\n\t\t\tpointerEvents: 'auto',\n\t\t\tBubble: {\n\t\t\t\tdisplay: 'grid',\n\t\t\t\tgridTemplateColumns: 'auto auto',\n\t\t\t},\n\t\t},\n\n\t\tLeft_panel: {\n\t\t\tuserSelect: 'none',\n\t\t\tpointerEvents: 'none',\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: 1,\n\t\t\tfontSize: '13px',\n\t\t\tflex: {\n\t\t\t\tdirection: 'column',\n\t\t\t},\n\t\t\talign: {\n\t\t\t\titems: 'flex-start',\n\t\t\t},\n\t\t},\n\n\t\tInfo: {\n\t\t\tpadding: $mol_gap.block,\n\t\t\tgap: $mol_gap.space,\n\t\t\tflex: {\n\t\t\t\tdirection: 'column',\n\t\t\t},\n\t\t},\n\n\t\tSymlabel: {\n\t\t\tpointerEvents: 'auto',\n\t\t},\n\n\t\tCenter: {\n\t\t\tpointerEvents: 'auto',\n\t\t},\n\n\t\tToogle_all: {\n\t\t\tboxShadow: `0 0.5rem 0.5rem -0.5rem hsla(0,0%,0%,.5)`,\n\t\t},\n\n\t\tOverlays: {\n\t\t\tposition: 'absolute',\n\t\t\tbottom: 0,\n\t\t\twidth: '100%',\n\t\t\talign: {\n\t\t\t\titems: 'center',\n\t\t\t},\n\t\t\tzIndex: 1,\n\t\t},\n\n\t\tSwitch_overlay: {\n\t\t\tjustify: {\n\t\t\t\tcontent: 'center'\n\t\t\t},\n\t\t},\n\n\t\tTools: {\n\t\t\tposition: 'absolute',\n\t\t\tright: 0,\n\t\t\tzIndex: 1,\n\t\t\tflex: {\n\t\t\t\tdirection: 'column',\n\t\t\t},\n\t\t\talign: {\n\t\t\t\titems: 'flex-end',\n\t\t\t},\n\t\t},\n\n\t\tZoom_section: {\n\t\t\tpadding: {\n\t\t\t\ttop: '2rem',\n\t\t\t\tbottom: '1rem',\n\t\t\t},\n\t\t},\n\n\t\tZoom_up_icon: {\n\t\t\twidth: '2rem',\n\t\t\theight: '2rem',\n\t\t},\n\n\t\tZoom_down_icon: {\n\t\t\twidth: '2rem',\n\t\t\theight: '2rem',\n\t\t},\n\n\t\tMessage: {\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: 1,\n\t\t\ttop: '6rem',\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t},\n\n\t\tMessage_card: {\n\t\t\tbackground: {\n\t\t\t\tcolor: $mol_theme.back,\n\t\t\t},\n\t\t\tmargin: 'auto',\n\t\t},\n\n\t\tThree: {\n\t\t\tcursor: 'move',\n\t\t},\n\n\t} )\n\n}\n","$mol_float $mol_view\n\tstyle *\n\t\t^\n\t\tminHeight \\auto\n","namespace $ { $mol_style_attach( \"mol/float/float.view.css\",\n \"[mol_float] {\\n\\tposition: sticky;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tz-index: var(--mol_layer_float);\\n\\topacity: 1;\\n\\ttransition: opacity .25s ease-in;\\n\\tdisplay: block;\\n\\tbackground: linear-gradient( var(--mol_theme_card), var(--mol_theme_card) ), var(--mol_theme_back);\\n\\tbox-shadow: 0 0 .5rem hsla(0,0%,0%,.25);\\n}\\n\\n\"\n) }","$mol_icon_chevron $mol_icon path \\M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\n","$mol_check_expand $mol_check\n\tIcon $mol_icon_chevron\n\tlevel 0\n\tstyle *\n\t\t^\n\t\tpaddingLeft <= level_style \\0px\n\tchecked? <=> expanded? false\n\tenabled <= expandable false\n","namespace $.$$ {\n\t\n\t/**\n\t * Expander for trees, lists, etc\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_check_expand_demo\n\t */\n\texport class $mol_check_expand extends $.$mol_check_expand {\n\t\t\n\t\tlevel_style() {\n\t\t\treturn `${ this.level() * 1 - 1 }rem`\n\t\t}\n\t\t\n\t\texpandable() {\n\t\t\treturn this.expanded() !== null\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { $mol_style_attach( \"mol/check/expand/expand.view.css\",\n \"[mol_check_expand] {\\n\\tmin-width: 20px;\\n}\\n\\n:where([mol_check_expand][disabled]) [mol_check_expand_icon] {\\n\\tvisibility: hidden;\\n}\\n\\n[mol_check_expand_icon] {\\n\\tbox-shadow: none;\\n\\tmargin-left: -0.375rem;\\n}\\n[mol_check_expand_icon] {\\n\\ttransform: rotateZ(0deg);\\n}\\n\\n:where([mol_check_checked]) [mol_check_expand_icon] {\\n\\ttransform: rotateZ(90deg);\\n}\\n\\n[mol_check_expand_icon] {\\n\\tvertical-align: text-top;\\n}\\n\\n[mol_check_expand_label] {\\n\\tmargin-left: 0;\\n}\\n\"\n) }","$mol_grid $mol_view\n\trow_height 32\n\trow_ids /string[]\n\trow_id* null\n\tcol_ids /\n\trecords *\n\trecord* null\n\thierarchy null\n\thierarchy_col \\\n\tminimal_width 0\n\t-\n\tsub /\n\t\t<= Head\n\t\t<= Table $mol_grid_table\n\t\t\tsub <= rows /$mol_view\n\tHead $mol_grid_row\n\t\tcells <= head_cells /$mol_view\n\tRow* $mol_grid_row\n\t\tminimal_height <= row_height\n\t\tminimal_width <= minimal_width\n\t\tcells <= cells* /$mol_view\n\t-\n\tCell* $mol_view\n\tcell* null\n\tCell_text* $mol_grid_cell\n\t\tsub <= cell_content_text* <= cell_content* /$mol_view_content\n\tCell_number* $mol_grid_number\n\t\tsub <= cell_content_number* <= cell_content* /$mol_view_content\n\tCol_head* $mol_float\n\t\tdom_name \\th\n\t\tsub <= col_head_content* /$mol_view_content\n\tCell_branch* $mol_check_expand\n\t\tlevel <= cell_level* 0\n\t\tlabel <= cell_content* /$mol_view_content\n\t\texpanded? <=> cell_expanded*? false\n\tCell_content* /\n\t\t<= Cell_dimmer* $mol_dimmer\n\t\t\tneedle <= needle \\\n\t\t\thaystack <= cell_value* \\\n\n$mol_grid_table $mol_list\n\t- dom_name \\table\n\n$mol_grid_row $mol_view\n\t- dom_name \\tr\n\tsub <= cells /$mol_view\n\n$mol_grid_cell $mol_view\n\t- dom_name \\td\n\tminimal_height 40\n\n$mol_grid_number $mol_grid_cell\n","namespace $.$$ {\n\t\n\texport interface $mol_grid_node {\n\t\tid : string\n\t\tparent : $mol_grid_node\n\t\tsub : $mol_grid_node[]\n\t}\n\t\n\texport class $mol_grid extends $.$mol_grid {\n\t\t\n\t\t@ $mol_mem\n\t\thead_cells() {\n\t\t\treturn this.col_ids().map( colId => this.Col_head( colId ) ) as readonly $mol_view[]\n\t\t}\n\t\t\n\t\tcol_head_content( colId : string ) {\n\t\t\treturn [ colId ] as readonly string[]\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trows() {\n\t\t\treturn this.row_ids().map( id => this.Row( id ) ) as readonly $mol_view[]\n\t\t}\n\t\t\n\t\tcells( row_id : string[] ) {\n\t\t\treturn this.col_ids().map( col_id => this.Cell({ row : row_id , col : col_id }) ) as readonly $mol_view[]\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tcol_type( col_id : string ) {\n\t\t\tif( col_id === this.hierarchy_col() ) return 'branch'\n\t\t\t\n\t\t\tconst rowFirst = this.row_id( 0 )\n\t\t\tconst val = this.record( rowFirst[ rowFirst.length -1 ] )[ col_id ]\n\t\t\tif( typeof val === 'number' ) return 'number'\n\t\t\t\n\t\t\treturn 'text'\n\t\t}\n\t\t\n\t\tCell( id : { row : string[] , col : string } ) : $mol_view {\n\t\t\tswitch( this.col_type( id.col ).valueOf() ) {\n\t\t\t\tcase 'branch' : return this.Cell_branch( id )\n\t\t\t\tcase 'number' : return this.Cell_number( id )\n\t\t\t}\n\t\t\t\n\t\t\treturn this.Cell_text( id )\n\t\t}\n\t\t\n\t\tcell_content( id : { row : string[] , col : string } ) {\n\t\t\treturn [ this.record( id.row[ id.row.length - 1 ] )[ id.col ] ]\n\t\t}\n\t\t\n\t\tcell_content_text( id : { row : string[] , col : string } ) {\n\t\t\treturn this.cell_content( id ).map( val => typeof val === 'object' ? JSON.stringify( val ) : val )\n\t\t}\n\t\t\n\t\trecords() : any {\n\t\t\treturn []\n\t\t}\n\t\t\n\t\trecord( id : string ) {\n\t\t\treturn this.records()[ id ]\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trecord_ids() {\n\t\t\treturn Object.keys( this.records() )\n\t\t}\n\t\t\n\t\trow_id( index : number ) {\n\t\t\treturn ( this.row_ids().slice( index , index + 1 ).valueOf() as string[] )[0]\n\t\t}\n\n\t\tcol_ids() {\n\t\t\tconst rowFirst = this.row_id(0)\n\t\t\tif( rowFirst === void 0 ) return []\n\t\t\t\n\t\t\tconst record = this.record( rowFirst[ rowFirst.length - 1 ] )\n\t\t\tif( !record ) return []\n\t\t\t\n\t\t\treturn Object.keys( record ) as readonly string[]\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\thierarchy() {\n\t\t\tconst hierarchy : { [ id : string ] : $mol_grid_node } = {}\n\t\t\tconst root = hierarchy[ '' ] = {\n\t\t\t\tid : '' ,\n\t\t\t\tparent : null as any as $mol_grid_node ,\n\t\t\t\tsub : [] as $mol_grid_node[] ,\n\t\t\t}\n\t\t\tthis.record_ids().map( id => {\n\t\t\t\troot.sub.push( hierarchy[ id ] = {\n\t\t\t\t\tid ,\n\t\t\t\t\tparent : root ,\n\t\t\t\t\tsub : [] ,\n\t\t\t\t} )\n\t\t\t} )\n\t\t\treturn hierarchy\n\t\t}\n\t\t\n\t\trow_sub_ids( row : string[] ) : string[][] {\n\t\t\treturn this.hierarchy()[ row[ row.length - 1 ] ].sub.map( child => row.concat( child.id ) )\n\t\t}\n\t\t\n\t\trow_root_id() : string[] {\n\t\t\treturn [ '' ]\n\t\t}\n\t\t\n\t\tcell_level( id : { row : string[] } ) {\n\t\t\treturn id.row.length - 1\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trow_ids() {\n\t\t\tconst next : string[][] = []\n\t\t\t\n\t\t\tconst add = ( row : string[] )=> {\n\t\t\t\tnext.push( row )\n\t\t\t\tif( this.row_expanded( row ) ) {\n\t\t\t\t\tthis.row_sub_ids( row ).forEach( child => add( child ) )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis.row_sub_ids( this.row_root_id() ).forEach( child => add( child ) )\n\t\t\t\n\t\t\treturn next as readonly string[][]\n\t\t}\n\t\t\n\t\trow_expanded( row_id : string[] , next? : boolean ) {\n\t\t\tif( !this.row_sub_ids( row_id ).length ) return null\n\t\t\t\n\t\t\tconst key = `row_expanded(${ JSON.stringify( row_id ) })`\n\t\t\tconst next2 = $mol_state_session.value( key , next )\n\t\t\t\n\t\t\treturn ( next2 == null ) ? this.row_expanded_default( row_id ) : next2\n\t\t}\n\t\t\n\t\trow_expanded_default( row_id : string[] ) {\n\t\t\treturn true\n\t\t}\n\t\t\n\t\tcell_expanded( id : { row : string[] } , next? : boolean ) {\n\t\t\treturn this.row_expanded( id.row , next )!\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { $mol_style_attach( \"mol/grid/grid.view.css\",\n \"[mol_grid] {\\n\\tdisplay: block;\\n\\tflex: 0 1 auto;\\n\\tposition: relative;\\n\\toverflow-x: auto;\\n}\\n\\n[mol_grid_gap] {\\n\\tposition: absolute;\\n\\tpadding: .1px;\\n\\ttop: 0;\\n\\ttransform: translateZ(0);\\n}\\n\\n[mol_grid_table] {\\n\\tborder-spacing: 0;\\n\\tdisplay: table-row-group;\\n\\tposition: relative;\\n}\\n\\n[mol_grid_table] > * {\\n\\tdisplay: table-row;\\n\\ttransition: none;\\n}\\n\\n[mol_grid_head] > *,\\n[mol_grid_table] > * > * {\\n\\tdisplay: table-cell;\\n\\tpadding: var(--mol_gap_text);\\n\\twhite-space: nowrap;\\n\\tvertical-align: middle;\\n\\tbox-shadow: inset 2px 2px 0 -1px var(--mol_theme_line);\\n}\\n\\n[mol_grid_row]:where(:first-child) > * {\\n\\tbox-shadow: inset 2px 0 0 -1px var(--mol_theme_line);\\n}\\n\\n[mol_grid_table] > * > *:where(:first-child) {\\n\\tbox-shadow: inset 0px 2px 0 -1px var(--mol_theme_line);\\n}\\n\\n[mol_grid_head] > * {\\n\\tbox-shadow: inset 2px -2px 0 -1px var(--mol_theme_line);\\n}\\n\\n[mol_grid_head] > *:where(:first-child) {\\n\\tbox-shadow: inset 0px -2px 0 -1px var(--mol_theme_line);\\n}\\n\\n[mol_grid_table] > [mol_grid_row]:where(:first-child) > *:where(:first-child) {\\n\\tbox-shadow: none;\\n}\\t\\n\\n[mol_grid_head] {\\n\\tdisplay: table-row;\\n\\ttransform: none !important;\\n}\\n\\n/* [mol_grid_cell_number] {\\n\\ttext-align: right;\\n} */\\n\\n[mol_grid_col_head] {\\n\\tfont-weight: inherit;\\n\\ttext-align: inherit;\\n\\tdisplay: table-cell;\\n\\tcolor: var(--mol_theme_shade);\\n}\\n\\n[mol_grid_cell_dimmer] {\\n\\tdisplay: inline-block;\\n\\tvertical-align: inherit;\\n}\\n\"\n) }","$mol_embed_native $mol_scroll\n\turi? \\\n\tdom_name \\object\n\twindow null\n\tattr *\n\t\t^\n\t\tdata <= uri\n\t\ttype <= mime \\\n\tsub /\n\t\t<= Fallback $mol_link\n\t\t\turi <= uri\n\t\t\tsub /\n\t\t\t\t<= title \\\n\tmessage *\n\t\thashchange? <=> uri_change? null\n","namespace $ {\n\n\texport function $mol_promise< Result = void >() {\n\t\t\n\t\tlet done!: ( res: Result | PromiseLike< Result > )=> void\n\t\tlet fail!: ( error?: any ) => void\n\t\t\n\t\tconst promise = new Promise< Result >( ( d, f ) => {\n\t\t\tdone = d\n\t\t\tfail = f\n\t\t} )\n\t\t\n\t\treturn Object.assign( promise, {\n\t\t\tdone,\n\t\t\tfail,\n\t\t} )\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_wait_timeout_async( this: $, timeout: number ): Promise< void > {\n\t\tconst promise = $mol_promise()\n\t\tconst task = new this.$mol_after_timeout( timeout , ()=> promise.done() )\n\t\treturn Object.assign( promise, {\n\t\t\tdestructor: ()=> task.destructor()\n\t\t} )\n\t}\n\t\n\texport function $mol_wait_timeout( this: $, timeout: number ) {\n\t\treturn this.$mol_wire_sync( this ).$mol_wait_timeout_async( timeout )\n\t}\n\t\n}\n","namespace $.$$ {\n\texport class $mol_embed_native extends $.$mol_embed_native {\n\n\t\t@ $mol_mem\n\t\twindow() {\n\t\t\t$mol_wire_solid()\n\t\t\treturn $mol_wire_sync( this as $mol_embed_native ).load( this.dom_node_actual() as HTMLIFrameElement )\n\t\t}\n\t\t\n\t\tload( frame: HTMLIFrameElement ) {\n\t\t\treturn new Promise< Window >( ( done, fail )=> {\n\t\t\t\t\n\t\t\t\tframe.onload = () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif( frame.contentWindow!.location.href === 'about:blank' ) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch { }\n\t\t\t\t\tdone( frame.contentWindow! )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tframe.onerror = ( event : Event | string ) => {\n\t\t\t\t\tfail( typeof event === 'string' ? new Error( event ) : ( event as ErrorEvent ).error || event )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\turi_resource() {\n\t\t\treturn this.uri().replace( /#.*/, '' )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tmessage_listener() {\n\t\t\treturn new $mol_dom_listener(\n\t\t\t\t$mol_dom_context,\n\t\t\t\t'message',\n\t\t\t\t$mol_wire_async( this ).message_receive\n\t\t\t)\n\t\t}\n\t\t\n\t\tmessage_receive( event?: MessageEvent<[ string, string ]> ) {\n\t\t\t\n\t\t\tif( !event ) return\n\t\t\tif( event.source !== this.window() ) return\n\t\t\tif( !Array.isArray( event.data ) ) return\n\t\t\t\n\t\t\t(this.message() as any)[ event.data[0] ]?.( event )\n\t\t}\n\n\t\turi_change( event: MessageEvent<[ string, string ]> ) {\n\t\t\tthis.$.$mol_wait_timeout( 1000 )\n\t\t\tthis.uri( event.data[1] )\n\t\t}\n\n\t\tauto() {\n\t\t\treturn [\n\t\t\t\tthis.message_listener(),\n\t\t\t\tthis.window(),\n\t\t\t]\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/embed/native/native.view.css\",\n \"[mol_embed_native] {\\n\\tmax-width: 100%;\\n\\tmax-height: 100vh;\\n\\tobject-fit: cover;\\n\\tdisplay: flex;\\n\\tflex: 1 1 auto;\\n\\tobject-position: top left;\\n\\tborder-radius: var(--mol_gap_round);\\n\\taspect-ratio: 4/3;\\n}\\n\"\n) }","$mol_icon_youtube $mol_icon path \\M10,15L15.19,12L10,9V15M21.56,7.17C21.69,7.64 21.78,8.27 21.84,9.07C21.91,9.87 21.94,10.56 21.94,11.16L22,12C22,14.19 21.84,15.8 21.56,16.83C21.31,17.73 20.73,18.31 19.83,18.56C19.36,18.69 18.5,18.78 17.18,18.84C15.88,18.91 14.69,18.94 13.59,18.94L12,19C7.81,19 5.2,18.84 4.17,18.56C3.27,18.31 2.69,17.73 2.44,16.83C2.31,16.36 2.22,15.73 2.16,14.93C2.09,14.13 2.06,13.44 2.06,12.84L2,12C2,9.81 2.16,8.2 2.44,7.17C2.69,6.27 3.27,5.69 4.17,5.44C4.64,5.31 5.5,5.22 6.82,5.16C8.12,5.09 9.31,5.06 10.41,5.06L12,5C16.19,5 18.8,5.16 19.83,5.44C20.73,5.69 21.31,6.27 21.56,7.17Z\n","$mol_frame $mol_embed_native\n\tdom_name \\iframe\n\tattr *\n\t\t^\n\t\tdata null\n\t\ttype null\n\t\tallow <= allow \\\n\t\tsrc <= uri? \\about:config\n\t\tsrcdoc <= html null\n\tfullscreen true\n\taccelerometer true\n\tautoplay true\n\tencription true\n\tgyroscope true\n\tpip true\n\tclipboard_read true\n\tclipboard_write true\n","namespace $.$$ {\n\n\t/**\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_frame_demo\n\t */\n\texport class $mol_frame extends $.$mol_frame {\n\t\t\n\t\twindow() {\n\t\t\t// if( this.html() ) return ( this.dom_node() as HTMLIFrameElement ).contentWindow!\n\t\t\treturn super.window()\n\t\t}\n\n\t\tallow() {\n\t\t\treturn [\n\t\t\t\t... this.fullscreen() ? [ 'fullscreen' ] : [] ,\n\t\t\t\t... this.accelerometer() ? [ 'accelerometer' ] : [] ,\n\t\t\t\t... this.autoplay() ? [ 'autoplay' ] : [] ,\n\t\t\t\t... this.encription() ? [ 'encrypted-media' ] : [] ,\n\t\t\t\t... this.gyroscope() ? [ 'gyroscope' ] : [] ,\n\t\t\t\t... this.pip() ? [ 'picture-in-picture' ] : [] ,\n\t\t\t\t... this.clipboard_read() ? [ `clipboard-read ${ this.uri() }` ] : [],\n\t\t\t\t... this.clipboard_write() ? [ `clipboard-write ${ this.uri() }` ] : [],\n\t\t\t].join('; ')\n\t\t}\n\t\t\n\t}\n}\n","namespace $ {\n\t$mol_style_define( $mol_frame , {\n\t\tborder: {\n\t\t\tstyle: 'none',\n\t\t},\n\t\tmaxHeight: $mol_style_unit.vh(100),\n\t} )\n}\n","$mol_embed_service $mol_check\n\turi \\\n\tvideo_preview \\\n\tvideo_id \\\n\tchecked? <=> active? false\n\tsub /\n\t\t<= Image $mol_image\n\t\t\ttitle <= title \\\n\t\t\turi <= video_preview \\\n\t\t<= Hint $mol_icon_youtube\n\t\t<= Frame $mol_frame\n\t\t\ttitle <= title \\\n\t\t\turi <= video_embed \\\n\n","namespace $.$$ {\n\texport class $mol_embed_service extends $.$mol_embed_service {\n\t\t\n\t\t@ $mol_mem\n\t\tsub() {\n\t\t\treturn this.active()\n\t\t\t\t? [ this.Frame() ]\n\t\t\t\t: [ this.Image(), this.Hint() ]\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/embed/service/service.view.css\",\n \"[mol_embed_service] {\\n\\tpadding: 0;\\n\\tmax-width: 100%;\\n}\\n\\n[mol_embed_service_image] {\\n\\tflex: auto 1 1;\\n\\twidth: 100vw;\\n}\\n\\n[mol_embed_service_frame] {\\n\\twidth: 100vw;\\n}\\n\\n[mol_embed_service_hint] {\\n\\tposition: absolute;\\n left: 50%;\\n top: 50%;\\n width: 50%;\\n height: 50%;\\n opacity: 0.3;\\n transform: translate(-50%, -50%);\\n}\\n\\n[mol_embed_service]:hover [mol_embed_service_hint] {\\n\\topacity: .6;\\n}\\n\"\n) }","$mol_embed_youtube $mol_embed_service\n","namespace $.$$ {\n\texport class $mol_embed_youtube extends $.$mol_embed_youtube {\n\t\t\n\t\t@ $mol_mem\n\t\tvideo_embed() {\n\t\t\treturn `https://www.youtube.com/embed/${ encodeURIComponent( this.video_id() ) }?autoplay=1&loop=1`\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tvideo_id() {\n\t\t\treturn this.uri().match( /^https\\:\\/\\/www\\.youtube\\.com\\/(?:embed\\/|shorts\\/|watch\\?v=)([^\\/&?#]+)/ )?.[1]\n\t\t\t\t?? this.uri().match( /^https\\:\\/\\/youtu\\.be\\/([^\\/&?#]+)/ )?.[1]\n\t\t\t\t?? 'about:blank'\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tvideo_preview() {\n\t\t\treturn `https://i.ytimg.com/vi/${ this.video_id() }/sddefault.jpg`\n\t\t}\n\t\t\n\t}\n}\n","$mol_embed_rutube $mol_embed_service\n","namespace $.$$ {\n\texport class $mol_embed_rutube extends $.$mol_embed_rutube {\n\t\t\n\t\t@ $mol_mem\n\t\tvideo_embed() {\n\t\t\treturn `https://rutube.ru/play/embed/${ encodeURIComponent( this.video_id() ) }`\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tvideo_id() {\n\t\t\treturn this.uri().match( /^https:\\/\\/rutube.ru\\/video\\/([^\\/&?#]+)/ )?.[1] ?? 'about:blank'\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tvideo_preview() {\n\t\t\treturn `https://rutube.ru/api/video/${ this.video_id() }/thumbnail/?redirect=1`\n\t\t}\n\t\t\n\t}\n}\n","$mol_embed_any $mol_view\n\tImage $mol_image\n\t\ttitle <= title \\\n\t\turi <= uri \\\n\tObject $mol_embed_native\n\t\ttitle <= title \\\n\t\turi <= uri \\\n\tYoutube $mol_embed_youtube\n\t\ttitle <= title \\\n\t\turi <= uri \\\n\tRutube $mol_embed_rutube\n\t\ttitle <= title \\\n\t\turi <= uri \\\n","namespace $.$$ {\n\t\n\texport class $mol_embed_any extends $.$mol_embed_any {\n\t\t\n\t\t@ $mol_mem\n\t\ttype() {\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tconst uri = this.uri()\n\t\t\t\t\n\t\t\t\tif( /\\b(png|gif|jpg|jpeg|jfif|webp|svg)\\b/.test( uri ) ) return 'image'\n\t\t\t\tif( /^https:\\/\\/www\\.youtube\\.com\\//.test( uri ) ) return 'youtube'\n\t\t\t\tif( /^https:\\/\\/youtu\\.be\\//.test( uri ) ) return 'youtube'\n\t\t\t\tif( /^https:\\/\\/rutube\\.ru\\//.test( uri ) ) return 'rutube'\n\t\t\t\t\n\t\t\t} catch( error ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\treturn 'image'\n\t\t\t}\n\t\t\t\n\t\t\treturn 'object'\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tsub() {\n\t\t\tswitch( this.type() ) {\n\t\t\t\tcase 'image': return [ this.Image() ]\n\t\t\t\tcase 'youtube': return [ this.Youtube() ]\n\t\t\t\tcase 'rutube': return [ this.Rutube() ]\n\t\t\t\tdefault: return [ this.Object() ]\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n}\n","$mol_expander $mol_list\n\trows /\n\t\t<= Label $mol_view\n\t\t\tsub /\n\t\t\t\t<= Trigger $mol_check_expand\n\t\t\t\t\tchecked? <=> expanded? false\n\t\t\t\t\texpandable <= expandable true\n\t\t\t\t\tlabel <= label /\n\t\t\t\t\t\t<= title\n\t\t\t\t<= Tools null\n\t\t<= Content $mol_list\n\t\t\trows <= content /\n","namespace $.$$ {\n\t/**\n\t * Component which expands any content on title click.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_expander_demo\n\t */\n\texport class $mol_expander extends $.$mol_expander {\n\t\t\n\t\t@ $mol_mem\n\t\trows() {\n\t\t\treturn [\n\t\t\t\tthis.Label(),\n\t\t\t\t... this.expanded() ? [ this.Content() ] : []\n\t\t\t]\n\t\t}\n\t\t\n\t\texpandable() {\n\t\t\treturn this.content().length > 0\n\t\t}\n\t\t\n\t}\n}\n\n","namespace $ { $mol_style_attach( \"mol/expander/expander.view.css\",\n \"[mol_expander] {\\n\\tflex-direction: column;\\n}\\n\\n[mol_expander_label] {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tborder-radius: var(--mol_gap_round);\\n}\\n\\n[mol_expander_trigger] {\\n\\tflex: auto;\\n\\tposition: relative;\\n}\\n\"\n) }","$mol_text $mol_list\n\turi_base \\\n\ttext \\\n\tparam \\\n\tflow_tokens /\n\tblock_text* \\\n\tauto /\n\t\t<= auto_scroll null\n\t- \\Blocks\n\tParagraph* $mol_paragraph\n\t\tsub <= block_content* /\n\tQuote* $mol_text\n\t\turi_resolve* <= uri_resolve* \\\n\t\ttext <= quote_text* \\\n\t\thighlight <= highlight \\\n\t\tauto_scroll null\n\tList* $mol_text_list\n\t\turi_resolve* <= uri_resolve* \\\n\t\ttype <= list_type* \\-\n\t\ttext <= list_text* \\\n\t\thighlight <= highlight \\\n\titem_index* 0\n\tHeader* $mol_text_header\n\t\tminimal_height 40\n\t\tlevel <= header_level* 1\n\t\tcontent <= block_content* /\n\t\targ <= header_arg* *\n\tPre* $mol_text_code\n\t\ttext <= pre_text* \\\n\t\thighlight <= highlight \\\n\t\turi_resolve* <= uri_resolve* \\\n\t\tsidebar_showed <= pre_sidebar_showed <= code_sidebar_showed true\n\tCut* $mol_view dom_name \\hr\n\t- \\Table\n\tTable* $mol_grid\n\t\thead_cells <= table_head_cells* /\n\t\trows <= table_rows* /\n\tTable_row* $mol_grid_row\n\t\tcells <= table_cells* /\n\tTable_cell* $mol_text\n\t\tauto_scroll null\n\t\thighlight <= highlight \\\n\t\turi_resolve* <= uri_resolve* \\\n\t\ttext <= table_cell_text* \\\n\t- \\Grid\n\tGrid* $mol_grid\n\t\trows <= grid_rows* /\n\tGrid_row* $mol_grid_row\n\t\tcells <= grid_cells* /\n\tGrid_cell* $mol_text\n\t\tauto_scroll null\n\t\thighlight <= highlight \\\n\t\turi_resolve* <= uri_resolve* \\\n\t\ttext <= grid_cell_text* \\\n\t- \\Lines\n\tString* $mol_dimmer\n\t\tdom_name \\span\n\t\tneedle <= highlight \\\n\t\thaystack <= line_text* \\\n\tSpan* $mol_text_span\n\t\tdom_name \\span\n\t\ttype <= line_type* \\\n\t\tsub <= line_content* /\n\tCode_line* $mol_text_code_line\n\t\tnumb_showed false\n\t\thighlight <= highlight \\\n\t\ttext <= line_text* \\\n\t\turi_resolve* <= uri_resolve* \\\n\t\tsyntax <= code_syntax null\n\tLink* $mol_link_iconed\n\t\turi <= link_uri* \\\n\t\tcontent <= line_content* /\n\tLink_http* $mol_link_iconed\n\t\turi <= link_uri* \\\n\t\tcontent / <= link_host* \\\n\tEmbed* $mol_embed_any\n\t\turi <= link_uri* \\\n\t\ttitle <= line_text* \\\n\t- \\Spoilers\n\tSpoiler* $mol_expander\n\t\tlabel /\n\t\t\t<= Spoiler_label* $mol_text\n\t\t\t\ttext <= spoiler_label* \\\n\t\tcontent /\n\t\t\t<= Spoiler_content* $mol_text\n\t\t\t\ttext <= spoiler_content* \\\n\n$mol_text_header $mol_paragraph\n\tlevel 1\n\tsub /\n\t\t<= Link $mol_link\n\t\t\targ <= arg *\n\t\t\thint @ \\Permalink to this section\n\t\t\tsub <= content /\n\n$mol_text_span $mol_paragraph\n\tdom_name \\span\n\tattr *\n\t\t^\n\t\tmol_text_type <= type \\\n","namespace $.$$ {\n\t/**\n\t * Markdown visualizer.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_text_demo\n\t */\n\texport class $mol_text extends $.$mol_text {\n\t\t\n\t\t@ $mol_mem\n\t\tflow_tokens() {\n\t\t\tconst tokens = [] as { name : string , found : string , chunks: string[] }[]\n\t\t\tthis.$.$mol_syntax2_md_flow.tokenize(\n\t\t\t\tthis.text(),\n\t\t\t\t( name , found , chunks )=> tokens.push({ name , found , chunks }),\n\t\t\t)\n\t\t\treturn tokens as Readonly< typeof tokens >\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tblock_type( index: number ) {\n\t\t\treturn this.flow_tokens()[ index ].name\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trows() {\n\t\t\treturn this.flow_tokens().map( ( { name }, index )=> {\n\t\t\t\t\n\t\t\t\tswitch( name ) {\n\t\t\t\t\tcase 'quote': return this.Quote( index )\n\t\t\t\t\tcase 'spoiler': return this.Spoiler( index )\n\t\t\t\t\tcase 'header': return this.Header( index )\n\t\t\t\t\tcase 'list': return this.List( index )\n\t\t\t\t\tcase 'code': return this.Pre( index )\n\t\t\t\t\tcase 'code-indent': return this.Pre( index )\n\t\t\t\t\tcase 'table': return this.Table( index )\n\t\t\t\t\tcase 'grid': return this.Grid( index )\n\t\t\t\t\tcase 'cut': return this.Cut( index )\n\t\t\t\t\tdefault: return this.Paragraph( index )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tparam() {\n\t\t\treturn this.toString().replace( /^.*?[\\)>]\\./, '' ).replace( /[(<>)]/g, '' )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\theader_level( index: number ) {\n\t\t\treturn this.flow_tokens()[ index ].chunks[0].length\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\theader_arg( index: number ) {\n\t\t\treturn {\n\t\t\t\t[ this.param() ]: this.block_text( index )\n\t\t\t}\n\t\t}\n\t\t\n\t\tlist_type( index: number ) {\n\t\t\treturn this.flow_tokens()[ index ].chunks[1] ?? ''\n\t\t}\n\t\t\n\t\titem_index( index: number ) {\n\t\t\treturn this.flow_tokens().slice( 0, index ).filter( token => token.name === 'block' ).length + 1\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tpre_text( index : number ) {\n\t\t\tconst token = this.flow_tokens()[ index ]\n\t\t\treturn ( token.chunks[2] ?? token.chunks[0].replace( /^(\\t| (?:\\+\\+|--|\\*\\*| ) )/gm , '' ) ).replace( /[\\n\\r]*$/ , '' )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tquote_text( index : number ) {\n\t\t\treturn this.flow_tokens()[ index ].chunks[0].replace( /^[>\"] /mg , '' )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tlist_text( index : number ) {\n\t\t\treturn this.flow_tokens()[ index ].chunks[0].replace( /^([-*+]|(?:\\d+[\\.\\)])+) ?/mg , '' ).replace( /^ ?/mg, '' )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tcell_content( indexBlock : number ) {\n\t\t\treturn this.flow_tokens()[ indexBlock ].chunks[ 0 ]\n\t\t\t.split( /\\r?\\n/g )\n\t\t\t.filter( row => row && !/\\|--/.test( row ) )\n\t\t\t.map( ( row , rowId ) => {\n\t\t\t\treturn row.split( /\\|/g )\n\t\t\t\t.filter( cell => cell )\n\t\t\t\t.map( ( cell , cellId )=> cell.trim() )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttable_rows( blockId : number ) {\n\t\t\treturn this.cell_content( blockId )\n\t\t\t.slice( 1 )\n\t\t\t.map( ( row , rowId )=> this.Table_row({ block : blockId , row : rowId + 1 }) )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttable_head_cells( blockId : number ) {\n\t\t\treturn this.cell_content( blockId )[ 0 ]\n\t\t\t.map( ( cell , cellId )=> this.Table_cell({ block : blockId , row : 0 , cell : cellId }) )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttable_cells( id : { block : number , row : number } ) {\n\t\t\treturn this.cell_content( id.block )[ id.row ]\n\t\t\t.map( ( cell , cellId )=> this.Table_cell({ block : id.block , row : id.row , cell : cellId }) )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttable_cell_text( id : { block : number , row : number , cell : number } ) {\n\t\t\treturn this.cell_content( id.block )[ id.row ][ id.cell ]\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tgrid_content( indexBlock: number ) {\n\t\t\treturn [ ... this.flow_tokens()[ indexBlock ].chunks[ 0 ].match( /(?:^! .*?$\\r?\\n?)+(?:^ +! .*?$\\r?\\n?)*/gm )! ]\n\t\t\t.map( ( row , rowId ) => {\n\t\t\t\tconst cells = [] as string[]\n\t\t\t\tfor( const line of row.trim().split( /\\r?\\n/ ) ) {\n\t\t\t\t\tconst [ _, indent, content ] = /^( *)! (.*)/.exec( line )!\n\t\t\t\t\tconst col = Math.ceil( indent.length / 2 )\n\t\t\t\t\tcells[ col ] = ( cells[ col ] ? cells[ col ] + '\\n' : '' ) + content\n\t\t\t\t}\n\t\t\t\treturn cells\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tgrid_rows( blockId: number ) {\n\t\t\treturn this.grid_content( blockId )\n\t\t\t.map( ( row, rowId )=> this.Grid_row({ block: blockId , row: rowId }) )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tgrid_cells( id: { block: number, row: number } ) {\n\t\t\treturn this.grid_content( id.block )[ id.row ]\n\t\t\t.map( ( cell , cellId )=> this.Grid_cell({ block: id.block, row: id.row, cell: cellId }) )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tgrid_cell_text( id: { block: number, row: number, cell: number } ) {\n\t\t\treturn this.grid_content( id.block )[ id.row ][ id.cell ]\n\t\t}\n\t\t\n\t\turi_base() {\n\t\t\treturn $mol_dom_context.document.location.href\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\turi_base_abs() {\n\t\t\treturn new URL( this.uri_base() , $mol_dom_context.document.location.href )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\turi_resolve( uri: string ) {\n\t\t\t\n\t\t\tif( /^(\\w+script+:)+/.test( uri ) ) return null as any as string\n\t\t\t\n\t\t\tif( /^#\\!/.test( uri ) ) {\n\t\t\t\t\n\t\t\t\tconst params: Record< string, string > = {}\n\t\t\t\n\t\t\t\tfor( const chunk of uri.slice(2).split( this.$.$mol_state_arg.separator ) ) {\n\t\t\t\t\tif( !chunk ) continue\n\t\t\t\t\tconst vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift()! ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn this.$.$mol_state_arg.link( params )\n\t\n\t\t\t}\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tconst url = new URL( uri , this.uri_base_abs() )\n\t\t\t\treturn url.toString()\n\t\t\t\t\n\t\t\t} catch( error ) {\n\t\t\t\t\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\treturn null as any as string\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tcode_syntax() {\n\t\t\treturn this.$.$mol_syntax2_md_code\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tblock_text( index: number ) {\n\t\t\t\n\t\t\tconst token = this.flow_tokens()[ index ]\n\t\t\t\n\t\t\tswitch( token.name ) {\n\t\t\t\tcase 'header' : return token.chunks[2]\n\t\t\t\tdefault: return token.chunks[0]\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tblock_content( index: number ) {\n\t\t\treturn this.line_content([ index ])\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tline_tokens( path: readonly number[] ) {\n\t\t\t\n\t\t\tconst tokens = [] as { name : string , found : string , chunks: string[] }[]\n\t\t\t\n\t\t\tthis.$.$mol_syntax2_md_line.tokenize(\n\t\t\t\tthis.line_text( path ),\n\t\t\t\t( name , found , chunks )=> tokens.push({ name , found , chunks }),\n\t\t\t)\n\t\t\t\n\t\t\treturn tokens as Readonly< typeof tokens >\n\t\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tline_token( path: readonly number[] ) {\n\t\t\tconst tokens = this.line_tokens( path.slice( 0, path.length - 1 ) )\n\t\t\treturn tokens[ path[ path.length - 1 ] ]\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tline_type( path: readonly number[] ) {\n\t\t\treturn this.line_token( path ).name\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tline_text( path: readonly number[] ) {\n\t\t\t\n\t\t\tif( path.length === 1 ) return this.block_text( path[0] )\n\t\t\t\n\t\t\tconst { name, found, chunks } = this.line_token( path )\n\t\t\t\n\t\t\tswitch( name ) {\n\t\t\t\tcase 'link': return chunks[0] || chunks[1].replace( /^.*?\\/\\/|\\/.*$/g, '' )\n\t\t\t\tcase 'text-link': return chunks[0] || chunks[1].replace( /^.*?\\/\\/|\\/.*$/g, '' )\n\t\t\t\tdefault: return ( chunks[0] || chunks[1] || chunks[2] ) ?? found\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tline_content( path: readonly number[] ) {\n\t\t\treturn this.line_tokens( path ).map( ( { name, chunks }, index )=> {\n\t\t\t\t\n\t\t\t\tconst path2 = [ ... path, index ]\n\t\t\t\t\n\t\t\t\tswitch( name ) {\n\t\t\t\t\tcase 'embed': return this.Embed( path2 )\n\t\t\t\t\tcase 'link' : return this.Link( path2 )\n\t\t\t\t\tcase 'text-link-http': return this.Link_http( path2 )\n\t\t\t\t\tcase 'text-link' : return this.Link( path2 )\n\t\t\t\t\tcase 'image-link': return this.Embed( path2 )\n\t\t\t\t\tcase 'code': return this.Code_line( path2 )\n\t\t\t\t\tcase '': return this.String( path2 )\n\t\t\t\t\tdefault: return this.Span( path2 )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tlink_uri( path: readonly number[] ) {\n\t\t\t\n\t\t\tconst token = this.line_token( path )\n\t\t\tconst uri = this.uri_resolve( token.chunks[1] ?? token.found )\n\t\t\t\n\t\t\tif( !uri ) throw new Error( 'Bad link' )\n\t\t\treturn uri\n\t\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tlink_host( path: readonly number[] ) {\n\t\t\treturn this.link_uri( path ).replace( /^.*?\\/\\/|\\/.*$/g, '' )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tauto_scroll() {\n\t\t\tfor( const [ index, token ] of this.flow_tokens().entries() ) {\n\t\t\t\t\n\t\t\t\tif( token.name !== 'header' ) continue\n\t\t\t\t\n\t\t\t\tconst header = this.Header( index )\n\t\t\t\tif( !header.Link().current() ) continue\n\t\t\t\t\n\t\t\t\tnew $mol_after_tick(\n\t\t\t\t\t()=> this.ensure_visible( header )\n\t\t\t\t)\n\t\t\t\t\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tspoiler_rows( index: number ): string[] {\n\t\t\treturn this.flow_tokens()[ index ].chunks[0].replace( /^[\\?] /mg , '' ).split('\\n');\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tspoiler_label( index: number ): string {\n\t\t\treturn this.spoiler_rows(index)[0];\n\t\t}\n\t\n\t\t@ $mol_mem_key\n\t\tspoiler_content( index: number): string {\n\t\t\treturn this.spoiler_rows(index).slice(1).join('\\n');\n\t\t}\n\t}\n\t\n\texport class $mol_text_header extends $.$mol_text_header {\n\t\t\n\t\tdom_name() {\n\t\t\treturn 'h' + this.level()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ { $mol_style_attach( \"mol/text/text/text.view.css\",\n \"[mol_text] {\\n\\tline-height: 1.5em;\\n\\tbox-sizing: border-box;\\n\\tborder-radius: var(--mol_gap_round);\\n\\twhite-space: pre-line;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tflex: 0 0 auto;\\n\\ttab-size: 4;\\n}\\n\\n[mol_text_paragraph] {\\n\\tpadding: var(--mol_gap_text);\\n\\toverflow: auto;\\n\\toverflow-x: overlay;\\n\\tmax-width: 100%;\\n\\tdisplay: block;\\n\\tmax-width: 60rem;\\n\\tbreak-inside: avoid;\\n}\\n\\n[mol_text_spoiler_label_paragraph] {\\n\\tpadding: 0;\\n}\\n\\n[mol_text_span] {\\n\\tdisplay: inline;\\n}\\n\\n[mol_text_string] {\\n\\tdisplay: inline;\\n\\tflex: 0 1 auto;\\n\\twhite-space: normal;\\n}\\n\\n[mol_text_quote] {\\n\\tmargin: var(--mol_gap_block);\\n\\tpadding: var(--mol_gap_block);\\n\\tbackground: var(--mol_theme_card);\\n\\tbox-shadow: 0 0 0 1px var(--mol_theme_back);\\n\\tbreak-inside: avoid;\\n}\\n\\n[mol_text_header] {\\n\\tdisplay: block;\\n\\ttext-shadow: 0 0;\\n\\tfont-weight: normal;\\n\\tbreak-after: avoid;\\n}\\n\\n* + [mol_text_header] {\\n\\tmargin-top: 0.75rem;\\n}\\n\\nh1[mol_text_header] {\\n\\tfont-size: 1.5rem;\\n}\\n\\nh2[mol_text_header] {\\n\\tfont-size: 1.5rem;\\n\\tfont-style: italic;\\n}\\n\\nh3[mol_text_header] {\\n\\tfont-size: 1.25rem;\\n}\\n\\nh4[mol_text_header] {\\n\\tfont-size: 1.25em;\\n\\tfont-style: italic;\\n}\\n\\nh5[mol_text_header] {\\n\\tfont-size: 1rem;\\n}\\n\\nh6[mol_text_header] {\\n\\tfont-size: 1rem;\\n\\tfont-style: italic;\\n}\\n\\n[mol_text_header_link] {\\n\\tcolor: inherit;\\n}\\n\\n[mol_text_table] {\\n\\tbreak-inside: avoid;\\n}\\n\\n[mol_text_table_cell] {\\n\\twidth: auto;\\n\\tdisplay: table-cell;\\n\\tvertical-align: baseline;\\n\\tpadding: 0;\\n\\tborder-radius: 0;\\n}\\n\\n[mol_text_grid] {\\n\\tbreak-inside: avoid;\\n}\\n\\n[mol_text_grid_cell] {\\n\\twidth: auto;\\n\\tdisplay: table-cell;\\n\\tvertical-align: top;\\n\\tpadding: 0;\\n\\tborder-radius: 0;\\n}\\n\\n[mol_text_cut] {\\n\\tborder: none;\\n\\twidth: 100%;\\n\\tbox-shadow: 0 0 0 1px var(--mol_theme_line);\\n}\\n\\n[mol_text_link_http],\\n[mol_text_link] {\\n\\tpadding: 0;\\n\\tdisplay: inline;\\n\\twhite-space: nowrap;\\n}\\n\\n[mol_text_link_icon] + [mol_text_embed] {\\n\\tmargin-left: -1.5rem;\\n}\\n\\n[mol_text_embed_youtube] {\\n\\tdisplay: inline;\\n}\\n\\n[mol_text_embed_youtube_image],\\n[mol_text_embed_youtube_frame],\\n[mol_text_embed_object] {\\n\\tobject-fit: contain;\\n\\tobject-position: center;\\n\\tdisplay: inline;\\n\\twidth: 100vw;\\n\\tmax-height: calc( 100vh - 6rem );\\n\\tvertical-align: top;\\n}\\n[mol_text_embed_object_fallback] {\\n\\tpadding: 0;\\n}\\n[mol_text_embed_image] {\\n\\tobject-fit: contain;\\n\\tobject-position: center;\\n\\tdisplay: inline;\\n\\t/* max-height: calc( 100vh - 6rem ); */\\n\\tvertical-align: top;\\n}\\n\\n[mol_text_pre] {\\n\\twhite-space: pre;\\n\\toverflow-x: auto;\\n\\toverflow-x: overlay;\\n\\ttab-size: 2;\\n\\tbreak-inside: avoid;\\n}\\n\\n[mol_text_code_line] {\\n\\tdisplay: inline-block;\\n}\\n\\n[mol_text_type=\\\"strong\\\"] {\\n\\ttext-shadow: 0 0;\\n\\tfilter: contrast(1.5);\\n}\\n\\n[mol_text_type=\\\"emphasis\\\"] {\\n\\tfont-style: italic;\\n}\\n\\n[mol_text_type=\\\"insert\\\"] {\\n\\tcolor: var(--mol_theme_special);\\n}\\n\\n[mol_text_type=\\\"delete\\\"] {\\n\\tcolor: var(--mol_theme_shade);\\n}\\n\\n[mol_text_type=\\\"remark\\\"] {\\n\\tcolor: var(--mol_theme_shade);\\n}\\n\\n[mol_text_type=\\\"quote\\\"] {\\n\\tfont-style: italic;\\n}\\n\"\n) }","$optimade_cifplayer_app $mol_drop\n\treceive? <=> drop_file? null\n\tSub <= Book $mol_book2\n\t\tplugins /\n\t\t\t<= Theme $mol_theme_auto\n\t\tpages <= pages\n\t\tPlaceholder null\n\tpages /\n\t\t<= Menu $mol_page\n\t\t\ttitle \\Crystal structure web-viewer\n\t\t\ttools /\n\t\t\t\t<= Source $mol_link_iconed\n\t\t\t\t\turi \\https://github.com/tilde-lab/cifplayer\n\t\t\t\t\ttitle \\\n\t\t\t\t<= Lights $mol_lights_toggle\n\t\t\tbody / <= Body $mol_view sub /\n\t\t\t\t<= Upload $mol_button_open\n\t\t\t\t\tIcon => Upload_icon\n\t\t\t\t\tNative => Upload_native\n\t\t\t\t\tfiles? <=> files_read? null\n\t\t\t\t\tsub /\n\t\t\t\t\t\t<= Upload_icon\n\t\t\t\t\t\t<= Upload_native\n\t\t\t\t\t\t\\Choose file\n\t\t\t\t<= Data_text $mol_textarea\n\t\t\t\t\tvalue? <=> data_str?\n\t\t\t\t\thint \\or paste here...\n\t\t<= Player $optimade_cifplayer_player\n\t\t\tdata <= data_str? \\\n\t\t\tvibrate? => vibrate?\n\t\t\tunvibrate => unvibrate\n\tStart $mol_view\n\t\tsub /\n\t\t\t<= Start_message $mol_text\n\t\t\t\ttext \\Choose or paste a CIF, POSCAR, or Optimade file. No remote server is used.\n\t\t\t<= Paste_example $mol_button_minor\n\t\t\t\ttitle \\Show example\n\t\t\t\tclick? <=> paste_example? null\n","$mol_text_list $mol_text\n\tauto_scroll null\n\tattr *\n\t\t^\n\t\tmol_text_list_type <= type \\\n\tParagraph* $mol_text_list_item\n\t\tindex <= item_index*\n\t\tsub <= block_content*\n\n$mol_text_list_item $mol_paragraph\n\tattr *\n\t\t^\n\t\tmol_text_list_item_index <= index 0\n","namespace $ { $mol_style_attach( \"mol/text/list/list.view.css\",\n \"[mol_text_list] {\\r\\n\\tpadding-left: 1.75rem;\\r\\n}\\r\\n\\r\\n[mol_text_list_item] {\\r\\n\\tcontain: none;\\r\\n\\tdisplay: list-item;\\r\\n}\\r\\n\\r\\n[mol_text_list_item]::before {\\r\\n\\tcontent: attr( mol_text_list_item_index ) \\\".\\\";\\r\\n\\twidth: 1.25rem;\\r\\n\\tdisplay: inline-block;\\r\\n\\tposition: absolute;\\r\\n\\tmargin-left: -1.75rem;\\r\\n\\ttext-align: end;\\r\\n}\\r\\n\\r\\n[mol_text_list_type=\\\"-\\\"] > [mol_text_list_item]::before,\\r\\n[mol_text_list_type=\\\"*\\\"] > [mol_text_list_item]::before {\\r\\n\\tcontent: \\\"•\\\";\\r\\n}\\r\\n\"\n) }","namespace $.$$ {\n\n\t$mol_style_define( $optimade_cifplayer_app, {\n\n\t\tcontain: 'none', // otherwise in fullscreen 'fixed' positions plot relative to parent is not in the viewport\n\n\t\t'[mol_drop_status]': {\n\t\t\tdrag: {\n\t\t\t\tMenu: {\n\t\t\t\t\tbackground: {\n\t\t\t\t\t\tcolor: $mol_theme.hover,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tStart: {\n\t\t\tbackground: {\n\t\t\t\tcolor: $mol_theme.back,\n\t\t\t},\n\t\t\tpadding: {\n\t\t\t\ttop: '6rem',\n\t\t\t},\n\t\t\tflex: {\n\t\t\t\tgrow: 1,\n\t\t\t\tdirection: 'column',\n\t\t\t},\n\t\t\talign: {\n\t\t\t\titems: 'center',\n\t\t\t},\n\t\t},\n\n\t\tMenu: {\n\t\t\tBody_content: {\n\t\t\t\tgap: $mol_gap.block,\n\t\t\t\tmaxWidth: '25rem',\n\t\t\t\tflex: {\n\t\t\t\t\tdirection: 'row',\n\t\t\t\t},\n\t\t\t},\n\t\t\tHead: {\n\t\t\t\tjustify: {\n\t\t\t\t\tcontent: 'flex-start'\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tBody: {\n\t\t\tflex: { \n\t\t\t\tdirection: 'column',\n\t\t\t\tgrow: 1,\n\t\t\t},\n\t\t},\n\n\t\tPlayer: {\n\t\t\tflex: {\n\t\t\t\tgrow: 1,\n\t\t\t\tbasis: '30rem',\n\t\t\t},\n\t\t},\n\n\t} )\n\n}\n"]} \ No newline at end of file +{"version":3,"sources":["-","../../../../mam.ts"],"names":[],"mappings":";;;AAAA;AACA;AACA;AACA;;ACHA,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC;AAK3B,IAAU,CAAC,CAMV;AAND,WAAU,CAAC;AAMX,CAAC,EANS,CAAC,KAAD,CAAC,QAMV;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;;;ADblB;AACA;AACA;;;;;;;;;;;;;","sourcesContent":[null,"Error.stackTraceLimit = 50;\n\ndeclare let _$_: { new(): {} } & typeof globalThis\ndeclare class $ extends _$_ {}\n\nnamespace $ {\n\texport type $ = typeof $$\n\texport declare class $$ extends $ {}\n\tnamespace $$ {\n\t\texport type $$ = $\n\t}\n}\n\nmodule.exports = $\n"]} \ No newline at end of file diff --git a/node.locale=en.json b/node.locale=en.json deleted file mode 100644 index 96cd971..0000000 --- a/node.locale=en.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$mol_lights_toggle_hint": "Toggle lights", - "$mol_text_code_Copy_hint": "Copy whole code", - "$mol_text_header_Link_hint": "Permalink to this section" -} \ No newline at end of file diff --git a/node.locale=ru.json b/node.locale=ru.json deleted file mode 100644 index cff43bd..0000000 --- a/node.locale=ru.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$mol_lights_toggle_hint": "Переключить освещение", - "$mol_text_code_Copy_hint": "Скопировать весь код", - "$mol_text_header_Link_hint": "Ссылка на эту секцию" -} \ No newline at end of file diff --git a/node.locale=uk.json b/node.locale=uk.json deleted file mode 100644 index fa1537f..0000000 --- a/node.locale=uk.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$mol_lights_toggle_hint": "Переключити освітлення", - "$mol_text_code_Copy_hint": "Скопіювати весь код", - "$mol_text_header_Link_hint": "Посилання на цю секцію" -} \ No newline at end of file diff --git a/node.meta.tree b/node.meta.tree index e77ca29..8fc8e57 100644 --- a/node.meta.tree +++ b/node.meta.tree @@ -11,15 +11,8 @@ pack optimade git \https://github.com/mpds-io/mam_optimade.git pack piterjs git \https://github.com/piterjs/piterjs.git pack psb git \https://github.com/MolDevHack/psb.git + pack rise git \https://github.com/stan-donarise/mam_rise.git pack yuf git \https://github.com/zerkalica/yuf.git \/optimade pack cifplayer git \https://github.com/tilde-lab/cifplayer pack tmdne git \https://github.com/mpds-io/this-material-does-not-exist -\/mol - pack icon git \https://github.com/nin-jin/mol_icon.git -\/mol/view - include \/mol/view/tree/test -\/optimade/cifplayer/lib/three - require \/optimade/cifplayer/lib/three/_three.js -\/optimade/cifplayer/player - deploy \/optimade/cifplayer/player/spacegroup.tree diff --git a/node.mjs b/node.mjs index c5b2595..cd4cf7f 100644 --- a/node.mjs +++ b/node.mjs @@ -28,11743 +28,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, var $ = ( typeof module === 'object' ) ? ( module['export'+'s'] = globalThis ) : globalThis $.$$ = $ -; -"use strict"; -var $; -(function ($) { - $.$mol_ambient_ref = Symbol('$mol_ambient_ref'); - function $mol_ambient(overrides) { - return Object.setPrototypeOf(overrides, this || $); - } - $.$mol_ambient = $mol_ambient; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const instances = new WeakSet(); - function $mol_delegate(proto, target) { - const proxy = new Proxy(proto, { - get: (_, field) => { - const obj = target(); - let val = Reflect.get(obj, field); - if (typeof val === 'function') { - val = val.bind(obj); - } - return val; - }, - has: (_, field) => Reflect.has(target(), field), - set: (_, field, value) => Reflect.set(target(), field, value), - getOwnPropertyDescriptor: (_, field) => Reflect.getOwnPropertyDescriptor(target(), field), - ownKeys: () => Reflect.ownKeys(target()), - getPrototypeOf: () => Reflect.getPrototypeOf(target()), - setPrototypeOf: (_, donor) => Reflect.setPrototypeOf(target(), donor), - isExtensible: () => Reflect.isExtensible(target()), - preventExtensions: () => Reflect.preventExtensions(target()), - apply: (_, self, args) => Reflect.apply(target(), self, args), - construct: (_, args, retarget) => Reflect.construct(target(), args, retarget), - defineProperty: (_, field, descr) => Reflect.defineProperty(target(), field, descr), - deleteProperty: (_, field) => Reflect.deleteProperty(target(), field), - }); - instances.add(proxy); - return proxy; - } - $.$mol_delegate = $mol_delegate; - Reflect.defineProperty($mol_delegate, Symbol.hasInstance, { - value: (obj) => instances.has(obj), - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_owning_map = new WeakMap(); - function $mol_owning_allow(having) { - try { - if (!having) - return false; - if (typeof having !== 'object' && typeof having !== 'function') - return false; - if (having instanceof $mol_delegate) - return false; - if (typeof having['destructor'] !== 'function') - return false; - return true; - } - catch { - return false; - } - } - $.$mol_owning_allow = $mol_owning_allow; - function $mol_owning_get(having, Owner) { - if (!$mol_owning_allow(having)) - return null; - while (true) { - const owner = $.$mol_owning_map.get(having); - if (!owner) - return owner; - if (!Owner) - return owner; - if (owner instanceof Owner) - return owner; - having = owner; - } - } - $.$mol_owning_get = $mol_owning_get; - function $mol_owning_check(owner, having) { - if (!$mol_owning_allow(having)) - return false; - if ($.$mol_owning_map.get(having) !== owner) - return false; - return true; - } - $.$mol_owning_check = $mol_owning_check; - function $mol_owning_catch(owner, having) { - if (!$mol_owning_allow(having)) - return false; - if ($.$mol_owning_map.get(having)) - return false; - $.$mol_owning_map.set(having, owner); - return true; - } - $.$mol_owning_catch = $mol_owning_catch; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_fail(error) { - throw error; - } - $.$mol_fail = $mol_fail; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_fail_hidden(error) { - throw error; - } - $.$mol_fail_hidden = $mol_fail_hidden; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - const named = new WeakSet(); - function $mol_func_name(func) { - let name = func.name; - if (name?.length > 1) - return name; - if (named.has(func)) - return name; - for (let key in this) { - try { - if (this[key] !== func) - continue; - name = key; - Object.defineProperty(func, 'name', { value: name }); - break; - } - catch { } - } - named.add(func); - return name; - } - $.$mol_func_name = $mol_func_name; - function $mol_func_name_from(target, source) { - Object.defineProperty(target, 'name', { value: source.name }); - return target; - } - $.$mol_func_name_from = $mol_func_name_from; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_object2 { - static $ = $; - [Symbol.toStringTag]; - [$mol_ambient_ref] = null; - get $() { - if (this[$mol_ambient_ref]) - return this[$mol_ambient_ref]; - const owner = $mol_owning_get(this); - return this[$mol_ambient_ref] = owner?.$ || $mol_object2.$; - } - set $(next) { - if (this[$mol_ambient_ref]) - $mol_fail_hidden(new Error('Context already defined')); - this[$mol_ambient_ref] = next; - } - static create(init) { - const obj = new this; - if (init) - init(obj); - return obj; - } - static [Symbol.toPrimitive]() { - return this.toString(); - } - static toString() { - return this[Symbol.toStringTag] || this.$.$mol_func_name(this); - } - static toJSON() { - return this.toString(); - } - destructor() { } - static destructor() { } - toString() { - return this[Symbol.toStringTag] || this.constructor.name + '<>'; - } - } - $.$mol_object2 = $mol_object2; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - let $$; - (function ($$) { - let $; - })($$ = $_1.$$ || ($_1.$$ = {})); - $_1.$mol_object_field = Symbol('$mol_object_field'); - class $mol_object extends $mol_object2 { - static make(config) { - return super.create(obj => { - for (let key in config) - obj[key] = config[key]; - }); - } - } - $_1.$mol_object = $mol_object; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_window extends $mol_object { - static size() { - return { - width: 1024, - height: 768, - }; - } - } - $.$mol_window = $mol_window; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - let $mol_wire_cursor; - (function ($mol_wire_cursor) { - $mol_wire_cursor[$mol_wire_cursor["stale"] = -1] = "stale"; - $mol_wire_cursor[$mol_wire_cursor["doubt"] = -2] = "doubt"; - $mol_wire_cursor[$mol_wire_cursor["fresh"] = -3] = "fresh"; - $mol_wire_cursor[$mol_wire_cursor["final"] = -4] = "final"; - })($mol_wire_cursor = $.$mol_wire_cursor || ($.$mol_wire_cursor = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wire_pub extends Object { - data = []; - static get [Symbol.species]() { - return Array; - } - sub_from = 0; - get sub_list() { - const res = []; - for (let i = this.sub_from; i < this.data.length; i += 2) { - res.push(this.data[i]); - } - return res; - } - get sub_empty() { - return this.sub_from === this.data.length; - } - sub_on(sub, pub_pos) { - const pos = this.data.length; - this.data.push(sub, pub_pos); - return pos; - } - sub_off(sub_pos) { - if (!(sub_pos < this.data.length)) { - $mol_fail(new Error(`Wrong pos ${sub_pos}`)); - } - const end = this.data.length - 2; - if (sub_pos !== end) { - this.peer_move(end, sub_pos); - } - this.data.pop(); - this.data.pop(); - if (this.data.length === this.sub_from) - this.reap(); - } - reap() { } - promote() { - $mol_wire_auto()?.track_next(this); - } - fresh() { } - complete() { } - get incompleted() { - return false; - } - emit(quant = $mol_wire_cursor.stale) { - for (let i = this.sub_from; i < this.data.length; i += 2) { - ; - this.data[i].absorb(quant); - } - } - peer_move(from_pos, to_pos) { - const peer = this.data[from_pos]; - const self_pos = this.data[from_pos + 1]; - this.data[to_pos] = peer; - this.data[to_pos + 1] = self_pos; - peer.peer_repos(self_pos, to_pos); - } - peer_repos(peer_pos, self_pos) { - this.data[peer_pos + 1] = self_pos; - } - } - $.$mol_wire_pub = $mol_wire_pub; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - $.$mol_wire_auto_sub = null; - function $mol_wire_auto(next = $.$mol_wire_auto_sub) { - return $.$mol_wire_auto_sub = next; - } - $.$mol_wire_auto = $mol_wire_auto; - $.$mol_wire_affected = []; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $['devtoolsFormatters'] ||= []; - function $mol_dev_format_register(config) { - $['devtoolsFormatters'].push(config); - } - $.$mol_dev_format_register = $mol_dev_format_register; - $.$mol_dev_format_head = Symbol('$mol_dev_format_head'); - $.$mol_dev_format_body = Symbol('$mol_dev_format_body'); - $mol_dev_format_register({ - header: (val, config = false) => { - if (config) - return null; - if (!val) - return null; - if ($.$mol_dev_format_head in val) { - try { - return val[$.$mol_dev_format_head](); - } - catch (error) { - return $.$mol_dev_format_accent($mol_dev_format_native(val), '💨', $mol_dev_format_native(error), ''); - } - } - if (typeof val === 'function') { - return $mol_dev_format_native(val); - } - if (Symbol.toStringTag in val) { - return $mol_dev_format_native(val); - } - return null; - }, - hasBody: val => val[$.$mol_dev_format_body], - body: val => val[$.$mol_dev_format_body](), - }); - function $mol_dev_format_native(obj) { - if (typeof obj === 'undefined') - return $.$mol_dev_format_shade('undefined'); - return [ - 'object', - { - object: obj, - config: true, - }, - ]; - } - $.$mol_dev_format_native = $mol_dev_format_native; - function $mol_dev_format_auto(obj) { - if (obj == null) - return $.$mol_dev_format_shade(String(obj)); - return [ - 'object', - { - object: obj, - config: false, - }, - ]; - } - $.$mol_dev_format_auto = $mol_dev_format_auto; - function $mol_dev_format_element(element, style, ...content) { - const styles = []; - for (let key in style) - styles.push(`${key} : ${style[key]}`); - return [ - element, - { - style: styles.join(' ; '), - }, - ...content, - ]; - } - $.$mol_dev_format_element = $mol_dev_format_element; - function $mol_dev_format_span(style, ...content) { - return $mol_dev_format_element('span', { - ...style, - }, ...content); - } - $.$mol_dev_format_span = $mol_dev_format_span; - $.$mol_dev_format_div = $mol_dev_format_element.bind(null, 'div'); - $.$mol_dev_format_ol = $mol_dev_format_element.bind(null, 'ol'); - $.$mol_dev_format_li = $mol_dev_format_element.bind(null, 'li'); - $.$mol_dev_format_table = $mol_dev_format_element.bind(null, 'table'); - $.$mol_dev_format_tr = $mol_dev_format_element.bind(null, 'tr'); - $.$mol_dev_format_td = $mol_dev_format_element.bind(null, 'td'); - $.$mol_dev_format_accent = $mol_dev_format_span.bind(null, { - 'color': 'magenta', - }); - $.$mol_dev_format_strong = $mol_dev_format_span.bind(null, { - 'font-weight': 'bold', - }); - $.$mol_dev_format_string = $mol_dev_format_span.bind(null, { - 'color': 'green', - }); - $.$mol_dev_format_shade = $mol_dev_format_span.bind(null, { - 'color': 'gray', - }); - $.$mol_dev_format_indent = $.$mol_dev_format_div.bind(null, { - 'margin-left': '13px' - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wire_pub_sub extends $mol_wire_pub { - pub_from = 0; - cursor = $mol_wire_cursor.stale; - get temp() { - return false; - } - get pub_list() { - const res = []; - const max = this.cursor >= 0 ? this.cursor : this.sub_from; - for (let i = this.pub_from; i < max; i += 2) { - if (this.data[i]) - res.push(this.data[i]); - } - return res; - } - track_on() { - this.cursor = this.pub_from; - const sub = $mol_wire_auto(); - $mol_wire_auto(this); - return sub; - } - promote() { - if (this.cursor >= this.pub_from) { - $mol_fail(new Error('Circular subscription')); - } - super.promote(); - } - track_next(pub) { - if (this.cursor < 0) - $mol_fail(new Error('Promo to non begun sub')); - if (this.cursor < this.sub_from) { - const next = this.data[this.cursor]; - if (pub === undefined) - return next ?? null; - if (next === pub) { - this.cursor += 2; - return next; - } - if (next) { - if (this.sub_from < this.data.length) { - this.peer_move(this.sub_from, this.data.length); - } - this.peer_move(this.cursor, this.sub_from); - this.sub_from += 2; - } - } - else { - if (pub === undefined) - return null; - if (this.sub_from < this.data.length) { - this.peer_move(this.sub_from, this.data.length); - } - this.sub_from += 2; - } - this.data[this.cursor] = pub; - this.data[this.cursor + 1] = pub.sub_on(this, this.cursor); - this.cursor += 2; - return pub; - } - track_off(sub) { - $mol_wire_auto(sub); - if (this.cursor < 0) { - $mol_fail(new Error('End of non begun sub')); - } - for (let cursor = this.pub_from; cursor < this.cursor; cursor += 2) { - const pub = this.data[cursor]; - pub.fresh(); - } - this.cursor = $mol_wire_cursor.fresh; - } - pub_off(sub_pos) { - this.data[sub_pos] = undefined; - this.data[sub_pos + 1] = undefined; - } - destructor() { - for (let cursor = this.data.length - 2; cursor >= this.sub_from; cursor -= 2) { - const sub = this.data[cursor]; - const pos = this.data[cursor + 1]; - sub.pub_off(pos); - this.data.pop(); - this.data.pop(); - } - this.cursor = this.pub_from; - this.track_cut(); - this.cursor = $mol_wire_cursor.final; - } - track_cut() { - if (this.cursor < this.pub_from) { - $mol_fail(new Error('Cut of non begun sub')); - } - let tail = 0; - for (let cursor = this.cursor; cursor < this.sub_from; cursor += 2) { - const pub = this.data[cursor]; - pub?.sub_off(this.data[cursor + 1]); - if (this.sub_from < this.data.length) { - this.peer_move(this.data.length - 2, cursor); - this.data.pop(); - this.data.pop(); - } - else { - ++tail; - } - } - for (; tail; --tail) { - this.data.pop(); - this.data.pop(); - } - this.sub_from = this.cursor; - } - complete() { } - complete_pubs() { - const limit = this.cursor < 0 ? this.sub_from : this.cursor; - for (let cursor = this.pub_from; cursor < limit; cursor += 2) { - const pub = this.data[cursor]; - if (pub?.incompleted) - return; - } - for (let cursor = this.pub_from; cursor < limit; cursor += 2) { - const pub = this.data[cursor]; - pub?.complete(); - } - } - absorb(quant = $mol_wire_cursor.stale) { - if (this.cursor === $mol_wire_cursor.final) - return; - if (this.cursor >= quant) - return; - this.cursor = quant; - this.emit($mol_wire_cursor.doubt); - } - [$mol_dev_format_head]() { - return $mol_dev_format_native(this); - } - get pub_empty() { - return this.sub_from === this.pub_from; - } - } - $.$mol_wire_pub_sub = $mol_wire_pub_sub; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_after_tick extends $mol_object2 { - task; - static promise = null; - cancelled = false; - constructor(task) { - super(); - this.task = task; - if (!$mol_after_tick.promise) - $mol_after_tick.promise = Promise.resolve().then(() => { - $mol_after_tick.promise = null; - }); - $mol_after_tick.promise.then(() => { - if (this.cancelled) - return; - task(); - }); - } - destructor() { - this.cancelled = true; - } - } - $.$mol_after_tick = $mol_after_tick; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_promise_like(val) { - try { - return val && typeof val === 'object' && 'then' in val && typeof val.then === 'function'; - } - catch { - return false; - } - } - $.$mol_promise_like = $mol_promise_like; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const wrappers = new WeakMap(); - class $mol_wire_fiber extends $mol_wire_pub_sub { - task; - host; - static warm = true; - static planning = new Set(); - static reaping = new Set(); - static plan_task = null; - static plan() { - if (this.plan_task) - return; - this.plan_task = new $mol_after_tick(() => { - try { - this.sync(); - } - finally { - $mol_wire_fiber.plan_task = null; - } - }); - } - static sync() { - while (this.planning.size) { - for (const fiber of this.planning) { - this.planning.delete(fiber); - if (fiber.cursor >= 0) - continue; - if (fiber.cursor === $mol_wire_cursor.final) - continue; - fiber.fresh(); - } - } - while (this.reaping.size) { - const fibers = this.reaping; - this.reaping = new Set; - for (const fiber of fibers) { - if (!fiber.sub_empty) - continue; - fiber.destructor(); - } - } - } - [Symbol.toStringTag]; - cache = undefined; - get args() { - return this.data.slice(0, this.pub_from); - } - result() { - if ($mol_promise_like(this.cache)) - return; - if (this.cache instanceof Error) - return; - return this.cache; - } - get incompleted() { - return $mol_promise_like(this.cache); - } - field() { - return this.task.name + '<>'; - } - constructor(id, task, host, args) { - super(); - this.task = task; - this.host = host; - if (args) - this.data.push(...args); - this.pub_from = this.sub_from = args?.length ?? 0; - this[Symbol.toStringTag] = id; - } - plan() { - $mol_wire_fiber.planning.add(this); - $mol_wire_fiber.plan(); - return this; - } - reap() { - $mol_wire_fiber.reaping.add(this); - $mol_wire_fiber.plan(); - } - toString() { - return this[Symbol.toStringTag]; - } - toJSON() { - return this[Symbol.toStringTag]; - } - [$mol_dev_format_head]() { - const cursor = { - [$mol_wire_cursor.stale]: '🔴', - [$mol_wire_cursor.doubt]: '🟡', - [$mol_wire_cursor.fresh]: '🟢', - [$mol_wire_cursor.final]: '🔵', - }[this.cursor] ?? this.cursor.toString(); - return $mol_dev_format_div({}, $mol_owning_check(this, this.cache) - ? $mol_dev_format_auto({ - [$mol_dev_format_head]: () => $mol_dev_format_shade(cursor), - [$mol_dev_format_body]: () => $mol_dev_format_native(this), - }) - : $mol_dev_format_shade($mol_dev_format_native(this), cursor), $mol_dev_format_auto(this.cache)); - } - get $() { - return (this.host ?? this.task)['$']; - } - emit(quant = $mol_wire_cursor.stale) { - if (this.sub_empty) - this.plan(); - else - super.emit(quant); - } - fresh() { - if (this.cursor === $mol_wire_cursor.fresh) - return; - if (this.cursor === $mol_wire_cursor.final) - return; - check: if (this.cursor === $mol_wire_cursor.doubt) { - for (let i = this.pub_from; i < this.sub_from; i += 2) { - ; - this.data[i]?.fresh(); - if (this.cursor !== $mol_wire_cursor.doubt) - break check; - } - this.cursor = $mol_wire_cursor.fresh; - return; - } - const bu = this.track_on(); - let result; - try { - switch (this.pub_from) { - case 0: - result = this.task.call(this.host); - break; - case 1: - result = this.task.call(this.host, this.data[0]); - break; - default: - result = this.task.call(this.host, ...this.args); - break; - } - if ($mol_promise_like(result)) { - if (wrappers.has(result)) { - result = wrappers.get(result).then(a => a); - } - else { - const put = (res) => { - if (this.cache === result) - this.put(res); - return res; - }; - wrappers.set(result, result = Object.assign(result.then(put, put), { destructor: result.destructor || (() => { }) })); - wrappers.set(result, result); - const error = new Error(`Promise in ${this}`); - Object.defineProperty(result, 'stack', { get: () => error.stack }); - } - } - } - catch (error) { - if (error instanceof Error || $mol_promise_like(error)) { - result = error; - } - else { - result = new Error(String(error), { cause: error }); - } - if ($mol_promise_like(result)) { - if (wrappers.has(result)) { - result = wrappers.get(result); - } - else { - wrappers.set(result, result = Object.assign(result.finally(() => { - if (this.cache === result) - this.absorb(); - }), { destructor: result.destructor || (() => { }) })); - const error = new Error(`Promise in ${this}`); - Object.defineProperty(result, 'stack', { get: () => error.stack }); - } - } - } - if (!$mol_promise_like(result)) { - this.track_cut(); - } - this.track_off(bu); - this.put(result); - return this; - } - refresh() { - this.cursor = $mol_wire_cursor.stale; - this.fresh(); - } - sync() { - if (!$mol_wire_fiber.warm) { - return this.result(); - } - this.promote(); - this.fresh(); - if (this.cache instanceof Error) { - return $mol_fail_hidden(this.cache); - } - if ($mol_promise_like(this.cache)) { - return $mol_fail_hidden(this.cache); - } - return this.cache; - } - async async_raw() { - while (true) { - this.fresh(); - if (this.cache instanceof Error) { - $mol_fail_hidden(this.cache); - } - if (!$mol_promise_like(this.cache)) - return this.cache; - await Promise.race([this.cache, this.step()]); - if (!$mol_promise_like(this.cache)) - return this.cache; - if (this.cursor === $mol_wire_cursor.final) { - await new Promise(() => { }); - } - } - } - async() { - const promise = this.async_raw(); - if (!promise.destructor) - promise.destructor = () => this.destructor(); - return promise; - } - step() { - return new Promise(done => { - const sub = new $mol_wire_pub_sub; - const prev = sub.track_on(); - sub.track_next(this); - sub.track_off(prev); - sub.absorb = () => { - done(null); - setTimeout(() => sub.destructor()); - }; - }); - } - destructor() { - super.destructor(); - if ($mol_owning_check(this, this.cache)) { - this.cache.destructor(); - } - } - } - $.$mol_wire_fiber = $mol_wire_fiber; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_guid(length = 8, exists = () => false) { - for (;;) { - let id = Math.random().toString(36).substring(2, length + 2).toUpperCase(); - if (exists(id)) - continue; - return id; - } - } - $.$mol_guid = $mol_guid; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_key_store = new WeakMap(); - const TypedArray = Object.getPrototypeOf(Uint8Array); - function $mol_key(value) { - if (typeof value === 'bigint') - return value.toString() + 'n'; - if (typeof value === 'symbol') - return value.description; - if (!value) - return JSON.stringify(value); - if (typeof value !== 'object' && typeof value !== 'function') - return JSON.stringify(value); - return JSON.stringify(value, (field, value) => { - if (typeof value === 'bigint') - return value.toString() + 'n'; - if (typeof value === 'symbol') - return value.description; - if (!value) - return value; - if (typeof value !== 'object' && typeof value !== 'function') - return value; - if (Array.isArray(value)) - return value; - const proto = Reflect.getPrototypeOf(value); - if (!proto) - return value; - if (Reflect.getPrototypeOf(proto) === null) - return value; - if ('toJSON' in value) - return value; - if (value instanceof RegExp) - return value.toString(); - if (value instanceof TypedArray) - return [...value]; - let key = $.$mol_key_store.get(value); - if (key) - return key; - key = $mol_guid(); - $.$mol_key_store.set(value, key); - return key; - }); - } - $.$mol_key = $mol_key; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_after_timeout extends $mol_object2 { - delay; - task; - id; - constructor(delay, task) { - super(); - this.delay = delay; - this.task = task; - this.id = setTimeout(task, delay); - } - destructor() { - clearTimeout(this.id); - } - } - $.$mol_after_timeout = $mol_after_timeout; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_after_frame extends $mol_after_timeout { - task; - constructor(task) { - super(16, task); - this.task = task; - } - } - $.$mol_after_frame = $mol_after_frame; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_compare_deep_cache = new WeakMap(); - function $mol_compare_deep(left, right) { - if (Object.is(left, right)) - return true; - if (left === null) - return false; - if (right === null) - return false; - if (typeof left !== 'object') - return false; - if (typeof right !== 'object') - return false; - const left_proto = Reflect.getPrototypeOf(left); - const right_proto = Reflect.getPrototypeOf(right); - if (left_proto !== right_proto) - return false; - if (left instanceof Boolean) - return Object.is(left.valueOf(), right['valueOf']()); - if (left instanceof Number) - return Object.is(left.valueOf(), right['valueOf']()); - if (left instanceof String) - return Object.is(left.valueOf(), right['valueOf']()); - if (left instanceof Date) - return Object.is(left.valueOf(), right['valueOf']()); - if (left instanceof RegExp) - return left.source === right.source && left.flags === right.flags; - if (left instanceof Error) - return left.message === right.message && left.stack === right.stack; - let left_cache = $.$mol_compare_deep_cache.get(left); - if (left_cache) { - const right_cache = left_cache.get(right); - if (typeof right_cache === 'boolean') - return right_cache; - } - else { - left_cache = new WeakMap(); - $.$mol_compare_deep_cache.set(left, left_cache); - } - left_cache.set(right, true); - let result; - try { - if (!left_proto) - result = compare_pojo(left, right); - else if (!Reflect.getPrototypeOf(left_proto)) - result = compare_pojo(left, right); - else if (Symbol.toPrimitive in left) - result = compare_primitive(left, right); - else if (Array.isArray(left)) - result = compare_array(left, right); - else if (left instanceof Set) - result = compare_set(left, right); - else if (left instanceof Map) - result = compare_map(left, right); - else if (ArrayBuffer.isView(left)) - result = compare_buffer(left, right); - else if (Symbol.iterator in left) - result = compare_iterator(left[Symbol.iterator](), right[Symbol.iterator]()); - else - result = false; - } - finally { - left_cache.set(right, result); - } - return result; - } - $.$mol_compare_deep = $mol_compare_deep; - function compare_array(left, right) { - const len = left.length; - if (len !== right.length) - return false; - for (let i = 0; i < len; ++i) { - if (!$mol_compare_deep(left[i], right[i])) - return false; - } - return true; - } - function compare_buffer(left, right) { - const len = left.byteLength; - if (len !== right.byteLength) - return false; - if (left instanceof DataView) - return compare_buffer(new Uint8Array(left.buffer, left.byteOffset, left.byteLength), new Uint8Array(right.buffer, left.byteOffset, left.byteLength)); - for (let i = 0; i < len; ++i) { - if (left[i] !== right[i]) - return false; - } - return true; - } - function compare_iterator(left, right) { - while (true) { - const left_next = left.next(); - const right_next = right.next(); - if (left_next.done !== right_next.done) - return false; - if (left_next.done) - break; - if (!$mol_compare_deep(left_next.value, right_next.value)) - return false; - } - return true; - } - function compare_set(left, right) { - if (left.size !== right.size) - return false; - return compare_iterator(left.values(), right.values()); - } - function compare_map(left, right) { - if (left.size !== right.size) - return false; - return compare_iterator(left.keys(), right.keys()) - && compare_iterator(left.values(), right.values()); - } - function compare_pojo(left, right) { - const left_keys = Object.getOwnPropertyNames(left); - const right_keys = Object.getOwnPropertyNames(right); - if (!compare_array(left_keys, right_keys)) - return false; - for (let key of left_keys) { - if (!$mol_compare_deep(left[key], right[key])) - return false; - } - const left_syms = Object.getOwnPropertySymbols(left); - const right_syms = Object.getOwnPropertySymbols(right); - if (!compare_array(left_syms, right_syms)) - return false; - for (let key of left_syms) { - if (!$mol_compare_deep(left[key], right[key])) - return false; - } - return true; - } - function compare_primitive(left, right) { - return Object.is(left[Symbol.toPrimitive]('default'), right[Symbol.toPrimitive]('default')); - } -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_log3_area_lazy(event) { - const self = this; - const stack = self.$mol_log3_stack; - const deep = stack.length; - let logged = false; - stack.push(() => { - logged = true; - self.$mol_log3_area.call(self, event); - }); - return () => { - if (logged) - self.console.groupEnd(); - if (stack.length > deep) - stack.length = deep; - }; - } - $.$mol_log3_area_lazy = $mol_log3_area_lazy; - $.$mol_log3_stack = []; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_span extends $mol_object2 { - uri; - source; - row; - col; - length; - constructor(uri, source, row, col, length) { - super(); - this.uri = uri; - this.source = source; - this.row = row; - this.col = col; - this.length = length; - this[Symbol.toStringTag] = this.uri + ('#' + this.row + ':' + this.col + '/' + this.length); - } - static unknown = $mol_span.begin('?'); - static begin(uri, source = '') { - return new $mol_span(uri, source, 1, 1, 0); - } - static end(uri, source) { - return new $mol_span(uri, source, 1, source.length + 1, 0); - } - static entire(uri, source) { - return new $mol_span(uri, source, 1, 1, source.length); - } - toString() { - return this[Symbol.toStringTag]; - } - toJSON() { - return { - uri: this.uri, - row: this.row, - col: this.col, - length: this.length - }; - } - error(message, Class = Error) { - return new Class(`${message} (${this})`); - } - span(row, col, length) { - return new $mol_span(this.uri, this.source, row, col, length); - } - after(length = 0) { - return new $mol_span(this.uri, this.source, this.row, this.col + this.length, length); - } - slice(begin, end = -1) { - let len = this.length; - if (begin < 0) - begin += len; - if (end < 0) - end += len; - if (begin < 0 || begin > len) - this.$.$mol_fail(this.error(`Begin value '${begin}' out of range`, RangeError)); - if (end < 0 || end > len) - this.$.$mol_fail(this.error(`End value '${end}' out of range`, RangeError)); - if (end < begin) - this.$.$mol_fail(this.error(`End value '${end}' can't be less than begin value`, RangeError)); - return this.span(this.row, this.col + begin, end - begin); - } - } - $.$mol_span = $mol_span; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_tree2_to_string(tree) { - let output = []; - function dump(tree, prefix = '') { - if (tree.type.length) { - if (!prefix.length) { - prefix = "\t"; - } - output.push(tree.type); - if (tree.kids.length == 1) { - output.push(' '); - dump(tree.kids[0], prefix); - return; - } - output.push("\n"); - } - else if (tree.value.length || prefix.length) { - output.push("\\" + tree.value + "\n"); - } - for (const kid of tree.kids) { - output.push(prefix); - dump(kid, prefix + "\t"); - } - } - dump(tree); - return output.join(''); - } - $.$mol_tree2_to_string = $mol_tree2_to_string; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_tree2 extends Object { - type; - value; - kids; - span; - constructor(type, value, kids, span) { - super(); - this.type = type; - this.value = value; - this.kids = kids; - this.span = span; - this[Symbol.toStringTag] = type || '\\' + value; - } - static list(kids, span = $mol_span.unknown) { - return new $mol_tree2('', '', kids, span); - } - list(kids) { - return $mol_tree2.list(kids, this.span); - } - static data(value, kids = [], span = $mol_span.unknown) { - const chunks = value.split('\n'); - if (chunks.length > 1) { - let kid_span = span.span(span.row, span.col, 0); - const data = chunks.map(chunk => { - kid_span = kid_span.after(chunk.length); - return new $mol_tree2('', chunk, [], kid_span); - }); - kids = [...data, ...kids]; - value = ''; - } - return new $mol_tree2('', value, kids, span); - } - data(value, kids = []) { - return $mol_tree2.data(value, kids, this.span); - } - static struct(type, kids = [], span = $mol_span.unknown) { - if (/[ \n\t\\]/.test(type)) { - $$.$mol_fail(span.error(`Wrong type ${JSON.stringify(type)}`)); - } - return new $mol_tree2(type, '', kids, span); - } - struct(type, kids = []) { - return $mol_tree2.struct(type, kids, this.span); - } - clone(kids, span = this.span) { - return new $mol_tree2(this.type, this.value, kids, span); - } - text() { - var values = []; - for (var kid of this.kids) { - if (kid.type) - continue; - values.push(kid.value); - } - return this.value + values.join('\n'); - } - static fromString(str, uri = 'unknown') { - return $$.$mol_tree2_from_string(str, uri); - } - toString() { - return $$.$mol_tree2_to_string(this); - } - insert(value, ...path) { - if (path.length === 0) - return value; - const type = path[0]; - if (typeof type === 'string') { - let replaced = false; - const sub = this.kids.map((item, index) => { - if (item.type !== type) - return item; - replaced = true; - return item.insert(value, ...path.slice(1)); - }).filter(Boolean); - if (!replaced && value) { - sub.push(this.struct(type, []).insert(value, ...path.slice(1))); - } - return this.clone(sub); - } - else if (typeof type === 'number') { - const sub = this.kids.slice(); - sub[type] = (sub[type] || this.list([])) - .insert(value, ...path.slice(1)); - return this.clone(sub.filter(Boolean)); - } - else { - const kids = ((this.kids.length === 0) ? [this.list([])] : this.kids) - .map(item => item.insert(value, ...path.slice(1))) - .filter(Boolean); - return this.clone(kids); - } - } - select(...path) { - let next = [this]; - for (const type of path) { - if (!next.length) - break; - const prev = next; - next = []; - for (var item of prev) { - switch (typeof (type)) { - case 'string': - for (var child of item.kids) { - if (child.type == type) { - next.push(child); - } - } - break; - case 'number': - if (type < item.kids.length) - next.push(item.kids[type]); - break; - default: next.push(...item.kids); - } - } - } - return this.list(next); - } - filter(path, value) { - const sub = this.kids.filter(item => { - var found = item.select(...path); - if (value === undefined) { - return Boolean(found.kids.length); - } - else { - return found.kids.some(child => child.value == value); - } - }); - return this.clone(sub); - } - hack_self(belt, context = {}) { - let handle = belt[this.type] || belt['']; - if (!handle || handle === Object.prototype[this.type]) { - handle = (input, belt, context) => [ - input.clone(input.hack(belt, context), context.span) - ]; - } - try { - return handle(this, belt, context); - } - catch (error) { - error.message += `\n${this.clone([])}${this.span}`; - $mol_fail_hidden(error); - } - } - hack(belt, context = {}) { - return [].concat(...this.kids.map(child => child.hack_self(belt, context))); - } - error(message, Class = Error) { - return this.span.error(`${message}\n${this.clone([])}`, Class); - } - } - $.$mol_tree2 = $mol_tree2; - class $mol_tree2_empty extends $mol_tree2 { - constructor() { - super('', '', [], $mol_span.unknown); - } - } - $.$mol_tree2_empty = $mol_tree2_empty; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_error_syntax extends SyntaxError { - reason; - line; - span; - constructor(reason, line, span) { - super(`${reason}\n${span}\n${line.substring(0, span.col - 1).replace(/\S/g, ' ')}${''.padEnd(span.length, '!')}\n${line}`); - this.reason = reason; - this.line = line; - this.span = span; - } - } - $.$mol_error_syntax = $mol_error_syntax; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_tree2_from_string(str, uri = '?') { - const span = $mol_span.entire(uri, str); - var root = $mol_tree2.list([], span); - var stack = [root]; - var pos = 0, row = 0, min_indent = 0; - while (str.length > pos) { - var indent = 0; - var line_start = pos; - row++; - while (str.length > pos && str[pos] == '\t') { - indent++; - pos++; - } - if (!root.kids.length) { - min_indent = indent; - } - indent -= min_indent; - if (indent < 0 || indent >= stack.length) { - const sp = span.span(row, 1, pos - line_start); - while (str.length > pos && str[pos] != '\n') { - pos++; - } - if (indent < 0) { - if (str.length > pos) { - this.$mol_fail(new this.$mol_error_syntax(`Too few tabs`, str.substring(line_start, pos), sp)); - } - } - else { - this.$mol_fail(new this.$mol_error_syntax(`Too many tabs`, str.substring(line_start, pos), sp)); - } - } - stack.length = indent + 1; - var parent = stack[indent]; - while (str.length > pos && str[pos] != '\\' && str[pos] != '\n') { - var error_start = pos; - while (str.length > pos && (str[pos] == ' ' || str[pos] == '\t')) { - pos++; - } - if (pos > error_start) { - let line_end = str.indexOf('\n', pos); - if (line_end === -1) - line_end = str.length; - const sp = span.span(row, error_start - line_start + 1, pos - error_start); - this.$mol_fail(new this.$mol_error_syntax(`Wrong nodes separator`, str.substring(line_start, line_end), sp)); - } - var type_start = pos; - while (str.length > pos && - str[pos] != '\\' && - str[pos] != ' ' && - str[pos] != '\t' && - str[pos] != '\n') { - pos++; - } - if (pos > type_start) { - let next = new $mol_tree2(str.slice(type_start, pos), '', [], span.span(row, type_start - line_start + 1, pos - type_start)); - const parent_kids = parent.kids; - parent_kids.push(next); - parent = next; - } - if (str.length > pos && str[pos] == ' ') { - pos++; - } - } - if (str.length > pos && str[pos] == '\\') { - var data_start = pos; - while (str.length > pos && str[pos] != '\n') { - pos++; - } - let next = new $mol_tree2('', str.slice(data_start + 1, pos), [], span.span(row, data_start - line_start + 2, pos - data_start - 1)); - const parent_kids = parent.kids; - parent_kids.push(next); - parent = next; - } - if (str.length === pos && stack.length > 0) { - const sp = span.span(row, pos - line_start + 1, 1); - this.$mol_fail(new this.$mol_error_syntax(`Unexpected EOF, LF required`, str.substring(line_start, str.length), sp)); - } - stack.push(parent); - pos++; - } - return root; - } - $.$mol_tree2_from_string = $mol_tree2_from_string; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_tree2_from_json(json, span = $mol_span.unknown) { - if (typeof json === 'boolean' || typeof json === 'number' || json === null) { - return new $mol_tree2(String(json), '', [], span); - } - if (typeof json === 'string') { - return $mol_tree2.data(json, [], span); - } - if (typeof json.toJSON === 'function') { - return $mol_tree2_from_json(json.toJSON()); - } - if (Array.isArray(json)) { - const sub = json.map(json => $mol_tree2_from_json(json, span)); - return new $mol_tree2('/', '', sub, span); - } - if (ArrayBuffer.isView(json)) { - const buf = new Uint8Array(json.buffer, json.byteOffset, json.byteLength); - return $mol_tree2.data(String.fromCharCode(...buf), [], span); - } - if (json instanceof Date) { - return new $mol_tree2('', json.toISOString(), [], span); - } - if (json.toString !== Object.prototype.toString) { - return $mol_tree2.data(json.toString(), [], span); - } - if (json instanceof Error) { - const { name, message, stack } = json; - json = { ...json, name, message, stack }; - } - const sub = []; - for (var key in json) { - const val = json[key]; - if (val === undefined) - continue; - const subsub = $mol_tree2_from_json(val, span); - if (/^[^\n\t\\ ]+$/.test(key)) { - sub.push(new $mol_tree2(key, '', [subsub], span)); - } - else { - sub.push($mol_tree2.data(key, [subsub], span)); - } - } - return new $mol_tree2('*', '', sub, span); - } - $.$mol_tree2_from_json = $mol_tree2_from_json; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_term_color { - static reset = this.ansi(0, 0); - static bold = this.ansi(1, 22); - static italic = this.ansi(3, 23); - static underline = this.ansi(4, 24); - static inverse = this.ansi(7, 27); - static hidden = this.ansi(8, 28); - static strike = this.ansi(9, 29); - static gray = this.ansi(90, 39); - static red = this.ansi(91, 39); - static green = this.ansi(92, 39); - static yellow = this.ansi(93, 39); - static blue = this.ansi(94, 39); - static magenta = this.ansi(95, 39); - static cyan = this.ansi(96, 39); - static Gray = (str) => this.inverse(this.gray(str)); - static Red = (str) => this.inverse(this.red(str)); - static Green = (str) => this.inverse(this.green(str)); - static Yellow = (str) => this.inverse(this.yellow(str)); - static Blue = (str) => this.inverse(this.blue(str)); - static Magenta = (str) => this.inverse(this.magenta(str)); - static Cyan = (str) => this.inverse(this.cyan(str)); - static ansi(open, close) { - if (typeof process === 'undefined') - return String; - if (!process.stdout.isTTY) - return String; - const prefix = `\x1b[${open}m`; - const postfix = `\x1b[${close}m`; - const suffix_regexp = new RegExp(postfix.replace('[', '\\['), 'g'); - return function colorer(str) { - str = String(str); - if (str === '') - return str; - const suffix = str.replace(suffix_regexp, prefix); - return prefix + suffix + postfix; - }; - } - } - $.$mol_term_color = $mol_term_color; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_log3_node_make(level, output, type, color) { - return function $mol_log3_logger(event) { - if (!event.time) - event = { time: new Date().toISOString(), ...event }; - let tree = this.$mol_tree2_from_json(event); - tree = tree.struct(type, tree.kids); - let str = color(tree.toString()); - this.console[level](str); - const self = this; - return () => self.console.groupEnd(); - }; - } - $.$mol_log3_node_make = $mol_log3_node_make; - $.$mol_log3_come = $mol_log3_node_make('info', 'stdout', 'come', $mol_term_color.blue); - $.$mol_log3_done = $mol_log3_node_make('info', 'stdout', 'done', $mol_term_color.green); - $.$mol_log3_fail = $mol_log3_node_make('error', 'stderr', 'fail', $mol_term_color.red); - $.$mol_log3_warn = $mol_log3_node_make('warn', 'stderr', 'warn', $mol_term_color.yellow); - $.$mol_log3_rise = $mol_log3_node_make('log', 'stdout', 'rise', $mol_term_color.magenta); - $.$mol_log3_area = $mol_log3_node_make('log', 'stdout', 'area', $mol_term_color.cyan); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wire_task extends $mol_wire_fiber { - static getter(task) { - return function $mol_wire_task_get(host, args) { - const sub = $mol_wire_auto(); - const existen = sub?.track_next(); - reuse: if (existen) { - if (!existen.temp) - break reuse; - if (existen.host !== host) - break reuse; - if (existen.task !== task) - break reuse; - if (!$mol_compare_deep(existen.args, args)) - break reuse; - return existen; - } - const key = (host?.[Symbol.toStringTag] ?? host) + ('.' + task.name + '<#>'); - const next = new $mol_wire_task(key, task, host, args); - if (existen?.temp) { - $$.$mol_log3_warn({ - place: '$mol_wire_task', - message: `Non idempotency`, - sub, - pubs: [...sub?.pub_list ?? [], existen], - next, - hint: 'Ignore it', - }); - } - return next; - }; - } - get temp() { - return true; - } - complete() { - if ($mol_promise_like(this.cache)) - return; - this.destructor(); - } - put(next) { - const prev = this.cache; - this.cache = next; - if ($mol_promise_like(next)) { - this.cursor = $mol_wire_cursor.fresh; - if (next !== prev) - this.emit(); - if ($mol_owning_catch(this, next)) { - try { - next[Symbol.toStringTag] = this[Symbol.toStringTag]; - } - catch { - Object.defineProperty(next, Symbol.toStringTag, { value: this[Symbol.toStringTag] }); - } - } - return next; - } - this.cursor = $mol_wire_cursor.final; - if (this.sub_empty) - this.destructor(); - else if (next !== prev) - this.emit(); - return next; - } - } - $.$mol_wire_task = $mol_wire_task; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_method(host, field, descr) { - if (!descr) - descr = Reflect.getOwnPropertyDescriptor(host, field); - const orig = descr?.value ?? host[field]; - const sup = Reflect.getPrototypeOf(host); - if (typeof sup[field] === 'function') { - Object.defineProperty(orig, 'name', { value: sup[field].name }); - } - const temp = $mol_wire_task.getter(orig); - const value = function (...args) { - const fiber = temp(this ?? null, args); - return fiber.sync(); - }; - Object.defineProperty(value, 'name', { value: orig.name + ' ' }); - Object.assign(value, { orig }); - const descr2 = { ...descr, value }; - Reflect.defineProperty(host, field, descr2); - return descr2; - } - $.$mol_wire_method = $mol_wire_method; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - const catched = new WeakMap(); - function $mol_fail_catch(error) { - if (typeof error !== 'object') - return false; - if ($mol_promise_like(error)) - $mol_fail_hidden(error); - if (catched.get(error)) - return false; - catched.set(error, true); - return true; - } - $.$mol_fail_catch = $mol_fail_catch; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_fail_log(error) { - if ($mol_promise_like(error)) - return false; - if (!$mol_fail_catch(error)) - return false; - console.error(error); - return true; - } - $.$mol_fail_log = $mol_fail_log; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wire_atom extends $mol_wire_fiber { - static solo(host, task) { - const field = task.name + '<>'; - const existen = Object.getOwnPropertyDescriptor(host ?? task, field)?.value; - if (existen) - return existen; - const prefix = host?.[Symbol.toStringTag] ?? (host instanceof Function ? $$.$mol_func_name(host) : host); - const key = prefix + ('.' + field); - const fiber = new $mol_wire_atom(key, task, host, []); - (host ?? task)[field] = fiber; - return fiber; - } - static plex(host, task, key) { - const field = task.name + '<>'; - let dict = Object.getOwnPropertyDescriptor(host ?? task, field)?.value; - const prefix = host?.[Symbol.toStringTag] ?? (host instanceof Function ? $$.$mol_func_name(host) : host); - const key_str = $mol_key(key); - if (dict) { - const existen = dict.get(key_str); - if (existen) - return existen; - } - else { - dict = (host ?? task)[field] = new Map(); - } - const id = prefix + ('.' + task.name) + ('<' + key_str.replace(/^"|"$/g, "'") + '>'); - const fiber = new $mol_wire_atom(id, task, host, [key]); - dict.set(key_str, fiber); - return fiber; - } - static watching = new Set(); - static watcher = null; - static watch() { - $mol_wire_atom.watcher = new $mol_after_frame($mol_wire_atom.watch); - for (const atom of $mol_wire_atom.watching) { - if (atom.cursor === $mol_wire_cursor.final) { - $mol_wire_atom.watching.delete(atom); - } - else { - atom.cursor = $mol_wire_cursor.stale; - atom.fresh(); - } - } - } - watch() { - if (!$mol_wire_atom.watcher) { - $mol_wire_atom.watcher = new $mol_after_frame($mol_wire_atom.watch); - } - $mol_wire_atom.watching.add(this); - } - resync(args) { - return this.put(this.task.call(this.host, ...args)); - } - once() { - return this.sync(); - } - channel() { - return Object.assign((next) => { - if (next !== undefined) - return this.resync([...this.args, next]); - if (!$mol_wire_fiber.warm) - return this.result(); - if ($mol_wire_auto()?.temp) { - return this.once(); - } - else { - return this.sync(); - } - }, { atom: this }); - } - destructor() { - super.destructor(); - if (this.pub_from === 0) { - ; - (this.host ?? this.task)[this.field()] = null; - } - else { - ; - (this.host ?? this.task)[this.field()].delete($mol_key(this.args[0])); - } - } - put(next) { - const prev = this.cache; - update: if (next !== prev) { - try { - if ($mol_compare_deep(prev, next)) - break update; - } - catch (error) { - $mol_fail_log(error); - } - if ($mol_owning_check(this, prev)) { - prev.destructor(); - } - if ($mol_owning_catch(this, next)) { - try { - next[Symbol.toStringTag] = this[Symbol.toStringTag]; - } - catch { - Object.defineProperty(next, Symbol.toStringTag, { value: this[Symbol.toStringTag] }); - } - } - if (!this.sub_empty) - this.emit(); - } - this.cache = next; - this.cursor = $mol_wire_cursor.fresh; - if ($mol_promise_like(next)) - return next; - this.complete_pubs(); - return next; - } - } - __decorate([ - $mol_wire_method - ], $mol_wire_atom.prototype, "resync", null); - __decorate([ - $mol_wire_method - ], $mol_wire_atom.prototype, "once", null); - $.$mol_wire_atom = $mol_wire_atom; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_solo(host, field, descr) { - if (!descr) - descr = Reflect.getOwnPropertyDescriptor(host, field); - const orig = descr?.value ?? host[field]; - const sup = Reflect.getPrototypeOf(host); - if (typeof sup[field] === 'function') { - Object.defineProperty(orig, 'name', { value: sup[field].name }); - } - const descr2 = { - ...descr, - value: function (...args) { - let atom = $mol_wire_atom.solo(this, orig); - if ((args.length === 0) || (args[0] === undefined)) { - if (!$mol_wire_fiber.warm) - return atom.result(); - if ($mol_wire_auto()?.temp) { - return atom.once(); - } - else { - return atom.sync(); - } - } - return atom.resync(args); - } - }; - Reflect.defineProperty(descr2.value, 'name', { value: orig.name + ' ' }); - Reflect.defineProperty(descr2.value, 'length', { value: orig.length }); - Object.assign(descr2.value, { orig }); - Reflect.defineProperty(host, field, descr2); - return descr2; - } - $.$mol_wire_solo = $mol_wire_solo; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_plex(host, field, descr) { - if (!descr) - descr = Reflect.getOwnPropertyDescriptor(host, field); - const orig = descr?.value ?? host[field]; - const sup = Reflect.getPrototypeOf(host); - if (typeof sup[field] === 'function') { - Object.defineProperty(orig, 'name', { value: sup[field].name }); - } - const descr2 = { - ...descr, - value: function (...args) { - let atom = $mol_wire_atom.plex(this, orig, args[0]); - if ((args.length === 1) || (args[1] === undefined)) { - if (!$mol_wire_fiber.warm) - return atom.result(); - if ($mol_wire_auto()?.temp) { - return atom.once(); - } - else { - return atom.sync(); - } - } - return atom.resync(args); - } - }; - Reflect.defineProperty(descr2.value, 'name', { value: orig.name + ' ' }); - Reflect.defineProperty(descr2.value, 'length', { value: orig.length }); - Object.assign(descr2.value, { orig }); - Reflect.defineProperty(host, field, descr2); - return descr2; - } - $.$mol_wire_plex = $mol_wire_plex; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_mem = $mol_wire_solo; - $.$mol_mem_key = $mol_wire_plex; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $node = new Proxy({ require }, { - get(target, name, wrapper) { - if (target[name]) - return target[name]; - const mod = target.require('module'); - if (mod.builtinModules.indexOf(name) >= 0) - return target.require(name); - if (name[0] === '.') - return target.require(name); - try { - target.require.resolve(name); - } - catch { - const $$ = $; - $$.$mol_exec('.', 'npm', 'install', '--omit=dev', name); - try { - $$.$mol_exec('.', 'npm', 'install', '--omit=dev', '@types/' + name); - } - catch (e) { - if ($$.$mol_fail_catch(e)) { - $$.$mol_fail_log(e); - } - } - } - try { - return target.require(name); - } - catch (error) { - if ($.$mol_fail_catch(error) && error.code === 'ERR_REQUIRE_ESM') { - const module = cache.get(name); - if (module) - return module; - throw import(name).then(module => cache.set(name, module)); - } - $.$mol_fail_log(error); - return null; - } - }, - set(target, name, value) { - target[name] = value; - return true; - }, -}); -const cache = new Map(); -require = (req => Object.assign(function require(name) { - return $node[name]; -}, req))(require); - -; -"use strict"; -var $; -(function ($) { - class $mol_error_mix extends AggregateError { - cause; - name = $$.$mol_func_name(this.constructor).replace(/^\$/, '') + '_Error'; - constructor(message, cause = {}, ...errors) { - super(errors, message, { cause }); - this.cause = cause; - const stack_get = Object.getOwnPropertyDescriptor(this, 'stack')?.get ?? (() => super.stack); - Object.defineProperty(this, 'stack', { - get: () => (stack_get.call(this) ?? this.message) + '\n' + [JSON.stringify(this.cause, null, ' ') ?? 'no cause', ...this.errors.map(e => e.stack)].map(e => e.trim() - .replace(/at /gm, ' at ') - .replace(/^(?! +at )(.*)/gm, ' at | $1 (#)')).join('\n') - }); - } - static [Symbol.toPrimitive]() { - return this.toString(); - } - static toString() { - return $$.$mol_func_name(this); - } - static make(...params) { - return new this(...params); - } - } - $.$mol_error_mix = $mol_error_mix; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_env() { - return {}; - } - $.$mol_env = $mol_env; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_env = function $mol_env() { - return this.process.env; - }; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const factories = new WeakMap(); - function factory(val) { - let make = factories.get(val); - if (make) - return make; - make = $mol_func_name_from((...args) => new val(...args), val); - factories.set(val, make); - return make; - } - function $mol_wire_sync(obj) { - return new Proxy(obj, { - get(obj, field) { - let val = obj[field]; - if (typeof val !== 'function') - return val; - const temp = $mol_wire_task.getter(val); - return function $mol_wire_sync(...args) { - const fiber = temp(obj, args); - return fiber.sync(); - }; - }, - construct(obj, args) { - const temp = $mol_wire_task.getter(factory(obj)); - return temp(obj, args).sync(); - }, - apply(obj, self, args) { - const temp = $mol_wire_task.getter(obj); - return temp(self, args).sync(); - }, - }); - } - $.$mol_wire_sync = $mol_wire_sync; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_run_error extends $mol_error_mix { - } - $.$mol_run_error = $mol_run_error; - $.$mol_run_spawn = (...args) => $node['child_process'].spawn(...args); - $.$mol_run_spawn_sync = (...args) => $node['child_process'].spawnSync(...args); - class $mol_run extends $mol_object { - static async_enabled() { - return Boolean(this.$.$mol_env()['MOL_RUN_ASYNC']); - } - static spawn(options) { - const sync = !this.async_enabled() || !Boolean($mol_wire_auto()); - const env = options.env ?? this.$.$mol_env(); - return $mol_wire_sync(this).spawn_async({ ...options, sync, env }); - } - static spawn_async({ dir, sync, timeout, command, env }) { - const args_raw = typeof command === 'string' ? command.split(' ') : command; - const [app, ...args] = args_raw; - const opts = { shell: true, cwd: dir, env }; - const log_object = { - place: `${this}.spawn()`, - message: 'Run', - command: args_raw.join(' '), - dir: $node.path.relative('', dir), - }; - if (sync) { - this.$.$mol_log3_come({ - hint: 'Run inside fiber', - ...log_object - }); - let error; - let res; - try { - res = this.$.$mol_run_spawn_sync(app, args, opts); - error = res.error; - } - catch (err) { - error = err; - } - if (!res || error || res.status) { - throw new $mol_run_error(this.error_message(res), { ...log_object, status: res?.status, signal: res?.signal }, ...(error ? [error] : [])); - } - return res; - } - let sub; - try { - sub = this.$.$mol_run_spawn(app, args, { - ...opts, - stdio: ['pipe', 'inherit', 'inherit'], - }); - } - catch (error) { - throw new $mol_run_error(this.error_message(undefined), log_object, error); - } - const pid = sub.pid ?? 0; - this.$.$mol_log3_come({ - ...log_object, - pid, - }); - let timeout_kill = false; - let timer; - const std_data = []; - const error_data = []; - const add = (std_chunk, error_chunk) => { - if (std_chunk) - std_data.push(std_chunk); - if (error_chunk) - error_data.push(error_chunk); - if (!timeout) - return; - clearTimeout(timer); - timer = setTimeout(() => { - const signal = timeout_kill ? 'SIGKILL' : 'SIGTERM'; - timeout_kill = true; - add(); - sub.kill(signal); - }, timeout); - }; - add(); - sub.stdout?.on('data', data => add(data)); - sub.stderr?.on('data', data => add(undefined, data)); - const result_promise = new Promise((done, fail) => { - const close = (error, status = null, signal = null) => { - if (!timer && timeout) - return; - clearTimeout(timer); - timer = undefined; - const res = { - pid, - signal, - get stdout() { return Buffer.concat(std_data); }, - get stderr() { return Buffer.concat(error_data); } - }; - if (error || status || timeout_kill) - return fail(new $mol_run_error(this.error_message(res) + (timeout_kill ? ', timeout' : ''), { ...log_object, pid, status, signal, timeout_kill }, ...error ? [error] : [])); - this.$.$mol_log3_done({ - ...log_object, - pid, - }); - done(res); - }; - sub.on('disconnect', () => close(new Error('Disconnected'))); - sub.on('error', err => close(err)); - sub.on('exit', (status, signal) => close(null, status, signal)); - }); - return Object.assign(result_promise, { destructor: () => { - clearTimeout(timer); - sub.kill('SIGKILL'); - } }); - } - static error_message(res) { - return res?.stderr.toString() || res?.stdout.toString() || 'Run error'; - } - } - $.$mol_run = $mol_run; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_exec(dir, command, ...args) { - return this.$mol_run.spawn({ command: [command, ...args], dir }); - } - $.$mol_exec = $mol_exec; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_dom_context = new $node.jsdom.JSDOM('', { url: 'https://localhost/' }).window; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_view_selection extends $mol_object { - static focused(next, notify) { - const parents = []; - let element = next?.[0] ?? $mol_dom_context.document.activeElement; - while (element) { - parents.push(element); - element = element.parentNode; - } - if (!next || notify) - return parents; - new $mol_after_tick(() => { - const element = this.focused()[0]; - if (element) - element.focus(); - else - $mol_dom_context.blur(); - }); - return parents; - } - } - __decorate([ - $mol_mem - ], $mol_view_selection, "focused", null); - $.$mol_view_selection = $mol_view_selection; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wrapper extends $mol_object2 { - static wrap; - static run(task) { - return this.func(task)(); - } - static func(func) { - return this.wrap(func); - } - static get class() { - return (Class) => { - const construct = (target, args) => new Class(...args); - const handler = { - construct: this.func(construct) - }; - handler[Symbol.toStringTag] = Class.name + '#'; - return new Proxy(Class, handler); - }; - } - static get method() { - return (obj, name, descr) => { - descr.value = this.func(descr.value); - return descr; - }; - } - static get field() { - return (obj, name, descr) => { - descr.get = descr.set = this.func(descr.get); - return descr; - }; - } - } - $.$mol_wrapper = $mol_wrapper; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_memo extends $mol_wrapper { - static wrap(task) { - const store = new WeakMap(); - const fun = function (next) { - if (next === undefined && store.has(this)) - return store.get(this); - const val = task.call(this, next) ?? next; - store.set(this, val); - return val; - }; - Reflect.defineProperty(fun, 'name', { value: task.name + ' ' }); - return fun; - } - } - $.$mol_memo = $mol_memo; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_dom = $mol_dom_context; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_qname(name) { - return name.replace(/\W/g, '').replace(/^(?=\d+)/, '_'); - } - $.$mol_dom_qname = $mol_dom_qname; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_probe(task, def) { - const warm = $mol_wire_fiber.warm; - try { - $mol_wire_fiber.warm = false; - const res = task(); - if (res === undefined) - return def; - return res; - } - finally { - $mol_wire_fiber.warm = warm; - } - } - $.$mol_wire_probe = $mol_wire_probe; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_watch() { - const atom = $mol_wire_auto(); - if (atom instanceof $mol_wire_atom) { - atom.watch(); - } - else { - $mol_fail(new Error('Atom is required for watching')); - } - } - $.$mol_wire_watch = $mol_wire_watch; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_const(value) { - const getter = (() => value); - getter['()'] = value; - getter[Symbol.toStringTag] = value; - getter[$mol_dev_format_head] = () => $mol_dev_format_span({}, '()=> ', $mol_dev_format_auto(value)); - return getter; - } - $.$mol_const = $mol_const; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_solid() { - let current = $mol_wire_auto(); - if (current.temp) - current = current.host; - if (current.reap !== nothing) { - current?.sub_on(sub, sub.data.length); - } - current.reap = nothing; - } - $.$mol_wire_solid = $mol_wire_solid; - const nothing = () => { }; - const sub = new $mol_wire_pub_sub; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_attributes(el, attrs) { - for (let name in attrs) { - let val = attrs[name]; - if (val === undefined) { - continue; - } - else if (val === null || val === false) { - if (!el.hasAttribute(name)) - continue; - el.removeAttribute(name); - } - else { - const str = String(val); - if (el.getAttribute(name) === str) - continue; - el.setAttribute(name, str); - } - } - } - $.$mol_dom_render_attributes = $mol_dom_render_attributes; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_events(el, events, passive = false) { - for (let name in events) { - el.addEventListener(name, events[name], { passive }); - } - } - $.$mol_dom_render_events = $mol_dom_render_events; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_styles(el, styles) { - for (let name in styles) { - let val = styles[name]; - const style = el.style; - const kebab = (name) => name.replace(/[A-Z]/g, letter => '-' + letter.toLowerCase()); - if (typeof val === 'number') { - style.setProperty(kebab(name), `${val}px`); - } - else { - style.setProperty(kebab(name), val); - } - } - } - $.$mol_dom_render_styles = $mol_dom_render_styles; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_children(el, childNodes) { - const node_set = new Set(childNodes); - let nextNode = el.firstChild; - for (let view of childNodes) { - if (view == null) - continue; - if (view instanceof $mol_dom_context.Node) { - while (true) { - if (!nextNode) { - el.appendChild(view); - break; - } - if (nextNode == view) { - nextNode = nextNode.nextSibling; - break; - } - else { - if (node_set.has(nextNode)) { - el.insertBefore(view, nextNode); - break; - } - else { - const nn = nextNode.nextSibling; - el.removeChild(nextNode); - nextNode = nn; - } - } - } - } - else { - if (nextNode && nextNode.nodeName === '#text') { - const str = String(view); - if (nextNode.nodeValue !== str) - nextNode.nodeValue = str; - nextNode = nextNode.nextSibling; - } - else { - const textNode = $mol_dom_context.document.createTextNode(String(view)); - el.insertBefore(textNode, nextNode); - } - } - } - while (nextNode) { - const currNode = nextNode; - nextNode = currNode.nextSibling; - el.removeChild(currNode); - } - } - $.$mol_dom_render_children = $mol_dom_render_children; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_fields(el, fields) { - for (let key in fields) { - const val = fields[key]; - if (val === undefined) - continue; - if (val === el[key]) - continue; - el[key] = val; - } - } - $.$mol_dom_render_fields = $mol_dom_render_fields; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_async(obj) { - let fiber; - const temp = $mol_wire_task.getter(obj); - return new Proxy(obj, { - get(obj, field) { - const val = obj[field]; - if (typeof val !== 'function') - return val; - let fiber; - const temp = $mol_wire_task.getter(val); - return function $mol_wire_async(...args) { - fiber?.destructor(); - fiber = temp(obj, args); - return fiber.async(); - }; - }, - apply(obj, self, args) { - fiber?.destructor(); - fiber = temp(self, args); - return fiber.async(); - }, - }); - } - $.$mol_wire_async = $mol_wire_async; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - function $mol_style_attach(id, text) { - const doc = $mol_dom_context.document; - if (!doc) - return null; - const elid = `$mol_style_attach:${id}`; - let el = doc.getElementById(elid); - if (!el) { - el = doc.createElement('style'); - el.id = elid; - doc.head.appendChild(el); - } - if (el.innerHTML != text) - el.innerHTML = text; - return el; - } - $.$mol_style_attach = $mol_style_attach; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_decor { - value; - constructor(value) { - this.value = value; - } - prefix() { return ''; } - valueOf() { return this.value; } - postfix() { return ''; } - toString() { - return `${this.prefix()}${this.valueOf()}${this.postfix()}`; - } - } - $.$mol_decor = $mol_decor; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_style_unit extends $mol_decor { - literal; - constructor(value, literal) { - super(value); - this.literal = literal; - } - postfix() { - return this.literal; - } - static per(value) { return `${value}%`; } - static px(value) { return `${value}px`; } - static mm(value) { return `${value}mm`; } - static cm(value) { return `${value}cm`; } - static Q(value) { return `${value}Q`; } - static in(value) { return `${value}in`; } - static pc(value) { return `${value}pc`; } - static pt(value) { return `${value}pt`; } - static cap(value) { return `${value}cap`; } - static ch(value) { return `${value}ch`; } - static em(value) { return `${value}em`; } - static rem(value) { return `${value}rem`; } - static ex(value) { return `${value}ex`; } - static ic(value) { return `${value}ic`; } - static lh(value) { return `${value}lh`; } - static rlh(value) { return `${value}rlh`; } - static vh(value) { return `${value}vh`; } - static vw(value) { return `${value}vw`; } - static vi(value) { return `${value}vi`; } - static vb(value) { return `${value}vb`; } - static vmin(value) { return `${value}vmin`; } - static vmax(value) { return `${value}vmax`; } - static deg(value) { return `${value}deg`; } - static rad(value) { return `${value}rad`; } - static grad(value) { return `${value}grad`; } - static turn(value) { return `${value}turn`; } - static s(value) { return `${value}s`; } - static ms(value) { return `${value}ms`; } - } - $.$mol_style_unit = $mol_style_unit; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const { per } = $mol_style_unit; - class $mol_style_func extends $mol_decor { - name; - constructor(name, value) { - super(value); - this.name = name; - } - prefix() { return this.name + '('; } - postfix() { return ')'; } - static linear_gradient(value) { - return new $mol_style_func('linear-gradient', value); - } - static calc(value) { - return new $mol_style_func('calc', value); - } - static vary(name, defaultValue) { - return new $mol_style_func('var', defaultValue ? [name, defaultValue] : name); - } - static url(href) { - return new $mol_style_func('url', JSON.stringify(href)); - } - static hsla(hue, saturation, lightness, alpha) { - return new $mol_style_func('hsla', [hue, per(saturation), per(lightness), alpha]); - } - static clamp(min, mid, max) { - return new $mol_style_func('clamp', [min, mid, max]); - } - static rgba(red, green, blue, alpha) { - return new $mol_style_func('rgba', [red, green, blue, alpha]); - } - static scale(zoom) { - return new $mol_style_func('scale', [zoom]); - } - static linear(...breakpoints) { - return new $mol_style_func("linear", breakpoints.map((e) => Array.isArray(e) - ? String(e[0]) + - " " + - (typeof e[1] === "number" ? e[1] + "%" : e[1].toString()) - : String(e))); - } - static cubic_bezier(x1, y1, x2, y2) { - return new $mol_style_func('cubic-bezier', [x1, y1, x2, y2]); - } - static steps(value, step_position) { - return new $mol_style_func('steps', [value, step_position]); - } - static blur(value) { - return new $mol_style_func('blur', value ?? ""); - } - static brightness(value) { - return new $mol_style_func('brightness', value ?? ""); - } - static contrast(value) { - return new $mol_style_func('contrast', value ?? ""); - } - static drop_shadow(color, x_offset, y_offset, blur_radius) { - return new $mol_style_func("drop-shadow", blur_radius - ? [color, x_offset, y_offset, blur_radius] - : [color, x_offset, y_offset]); - } - static grayscale(value) { - return new $mol_style_func('grayscale', value ?? ""); - } - static hue_rotate(value) { - return new $mol_style_func('hue-rotate', value ?? ""); - } - static invert(value) { - return new $mol_style_func('invert', value ?? ""); - } - static opacity(value) { - return new $mol_style_func('opacity', value ?? ""); - } - static sepia(value) { - return new $mol_style_func('sepia', value ?? ""); - } - static saturate(value) { - return new $mol_style_func('saturate', value ?? ""); - } - } - $.$mol_style_func = $mol_style_func; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - function $mol_style_prop(prefix, keys) { - const record = keys.reduce((rec, key) => { - rec[key] = $mol_style_func.vary(`--${prefix}_${key}`); - return rec; - }, {}); - return record; - } - $.$mol_style_prop = $mol_style_prop; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_theme = $mol_style_prop('mol_theme', [ - 'back', - 'hover', - 'card', - 'current', - 'special', - 'text', - 'control', - 'shade', - 'line', - 'focus', - 'field', - 'image', - ]); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/theme/theme.css", ":root {\n\t--mol_theme_hue: 210deg;\n\t--mol_theme_hue_spread: 90deg;\n}\n\n:where([mol_theme]) {\n\tcolor: var(--mol_theme_text);\n\tfill: var(--mol_theme_text);\n\tbackground-color: var(--mol_theme_back);\n}\n\t\n:root, [mol_theme=\"$mol_theme_dark\"], :where([mol_theme=\"$mol_theme_dark\"]) [mol_theme] {\n\n\t--mol_theme_luma: -1;\n\t--mol_theme_image: invert(1) hue-rotate( 180deg );\n\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 20%, 10% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 50%, 20%, .25 );\n\t--mol_theme_field: hsl( var(--mol_theme_hue), 50%, 8%, .25 );\n\t--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );\n\t\n\t--mol_theme_text: hsl( var(--mol_theme_hue), 0%, 80% );\n\t--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 60%, 1 );\n\t--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .25 );\n\t--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, 65% );\n\t\n\t--mol_theme_control: hsl( var(--mol_theme_hue), 60%, 65% );\n\t--mol_theme_current: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 60%, 65% );\n\t--mol_theme_special: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 60%, 65% );\n\n\t/* --mol_theme_back: oklch( 20% .03 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 35% .05 var(--mol_theme_hue) / .25 );\n\t--mol_theme_field: oklch( 0% 0 var(--mol_theme_hue) / .25 );\n\t--mol_theme_hover: oklch( 70% 0 var(--mol_theme_hue) / .1 );\n\t\n\t--mol_theme_text: oklch( 80% 0 var(--mol_theme_hue) );\n\t--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );\n\t--mol_theme_line: oklch( 50% 0 var(--mol_theme_hue) / .2 );\n\t--mol_theme_focus: oklch( 80% .2 calc( var(--mol_theme_hue) + 120deg ) );\n\t\n\t--mol_theme_control: oklch( 70% .1 var(--mol_theme_hue) );\n\t--mol_theme_current: oklch( 80% .2 calc( var(--mol_theme_hue) - 60deg ) );\n\t--mol_theme_special: oklch( 80% .3 calc( var(--mol_theme_hue) + 60deg ) ); */\n\n}\n\n[mol_theme=\"$mol_theme_light\"], :where([mol_theme=\"$mol_theme_light\"]) [mol_theme] {\n\t\n\t--mol_theme_luma: 1;\n\t--mol_theme_image: none;\n\t\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 20%, 92% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 50%, 100%, .5 );\n\t--mol_theme_field: hsl( var(--mol_theme_hue), 50%, 100%, .75 );\n\t--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );\n\t\n\t--mol_theme_text: hsl( var(--mol_theme_hue), 0%, 0% );\n\t--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 40%, 1 );\n\t--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .25 );\n\t--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, 40% );\n\t\n\t--mol_theme_control: hsl( var(--mol_theme_hue), 80%, 30% );\n\t--mol_theme_current: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 80%, 30% );\n\t--mol_theme_special: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 80%, 30% );\n\t\n\t/* --mol_theme_back: oklch( 93% .01 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 100% .02 var(--mol_theme_hue) / .25 );\n\t--mol_theme_field: oklch( 100% 0 var(--mol_theme_hue) / .5 );\n\t--mol_theme_hover: oklch( 70% 0 var(--mol_theme_hue) / .1 );\n\t\n\t--mol_theme_text: oklch( 20% 0 var(--mol_theme_hue) );\n\t--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );\n\t--mol_theme_line: oklch( 70% 0 var(--mol_theme_hue) / .2 );\n\t--mol_theme_focus: oklch( 20% .8 calc( var(--mol_theme_hue) + 120deg ) );\n\t\n\t--mol_theme_control: oklch( 45% .25 var(--mol_theme_hue) );\n\t--mol_theme_current: oklch( 45% .5 calc( var(--mol_theme_hue) - 60deg ) );\n\t--mol_theme_special: oklch( 45% .5 calc( var(--mol_theme_hue) + 60deg ) ); */\n\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_base\"] {\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 50%, 30% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 40%, 20%, .25 );\n\t/* --mol_theme_back: oklch( 25% .05 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 35% .1 var(--mol_theme_hue) / .25 ); */\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_base\"] {\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 50%, 80% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 80%, 95%, .25 );\n\t/* --mol_theme_back: oklch( 95% .02 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 80% .05 var(--mol_theme_hue) / .25 ); */\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_accent\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + 180deg ), 90%, 30% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + 180deg ), 80%, 20%, .25 );\n\t/* --mol_theme_back: oklch( 40% .2 calc( var(--mol_theme_hue) + 120deg ) );\n\t--mol_theme_card: oklch( 50% .3 calc( var(--mol_theme_hue) + 120deg ) / .25 ); */\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_accent\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + 180deg ), 90%, 75% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + 180deg ), 80%, 90%, .25 );\n\t/* --mol_theme_back: oklch( 90% .03 calc( var(--mol_theme_hue) + 120deg ) );\n\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) + 120deg ) / .25 ); */\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_current\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 50%, 30% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 40%, 20%, .25 );\n\t/* --mol_theme_back: oklch( 25% .05 calc( var(--mol_theme_hue) - 60deg ) );\n\t--mol_theme_card: oklch( 35% .1 calc( var(--mol_theme_hue) - 60deg ) / .25 ); */\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_current\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 50%, 92% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 80%, 100%, .5 );\n\t/* --mol_theme_back: oklch( 95% .02 calc( var(--mol_theme_hue) - 60deg ) );\n\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) - 60deg ) / .25 ); */\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_special\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 50%, 30% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 40%, 20%, .25 );\n\t/* --mol_theme_back: oklch( 25% .05 calc( var(--mol_theme_hue) + 60deg ) );\n\t--mol_theme_card: oklch( 35% .1 calc( var(--mol_theme_hue) + 60deg ) / .25 ); */\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_special\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 50%, 92% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 80%, 100%, .5 );\n\t/* --mol_theme_back: oklch( 95% .02 calc( var(--mol_theme_hue) + 60deg ) );\n\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) + 60deg ) / .25 ); */\n}\n"); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_gap = $mol_style_prop('mol_gap', [ - 'block', - 'text', - 'round', - 'space', - 'blur', - ]); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/gap/gap.css", ":root {\n\t--mol_gap_block: .75rem;\n\t--mol_gap_text: .5rem .75rem;\n\t--mol_gap_round: .25rem;\n\t--mol_gap_space: .25rem;\n\t--mol_gap_blur: .5rem;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_view_visible_width() { - return $mol_window.size().width; - } - $.$mol_view_visible_width = $mol_view_visible_width; - function $mol_view_visible_height() { - return $mol_window.size().height; - } - $.$mol_view_visible_height = $mol_view_visible_height; - function $mol_view_state_key(suffix) { - return suffix; - } - $.$mol_view_state_key = $mol_view_state_key; - class $mol_view extends $mol_object { - static Root(id) { - return new this; - } - autorun() { - try { - this.dom_tree(); - document.title = this.title(); - } - catch (error) { - $mol_fail_log(error); - } - } - static autobind() { - const nodes = $mol_dom_context.document.querySelectorAll('[mol_view_root]:not([mol_view_root=""])'); - for (let i = nodes.length - 1; i >= 0; --i) { - const name = nodes.item(i).getAttribute('mol_view_root'); - const View = $[name]; - if (!View) { - console.error(`Can not attach view. Class not found: ${name}`); - continue; - } - const view = View.Root(i); - view.dom_node(nodes.item(i)); - view.autorun(); - } - } - title() { - return this.toString().match(/.*\.(\w+)/)?.[1] ?? this.toString(); - } - focused(next) { - let node = this.dom_node(); - const value = $mol_view_selection.focused(next === undefined ? undefined : (next ? [node] : [])); - return value.indexOf(node) !== -1; - } - state_key(suffix = '') { - return this.$.$mol_view_state_key(suffix); - } - dom_name() { - return $mol_dom_qname(this.constructor.toString()) || 'div'; - } - dom_name_space() { return 'http://www.w3.org/1999/xhtml'; } - sub() { - return []; - } - sub_visible() { - return this.sub(); - } - minimal_width() { - let min = 0; - try { - const sub = this.sub(); - if (!sub) - return 0; - sub.forEach(view => { - if (view instanceof $mol_view) { - min = Math.max(min, view.minimal_width()); - } - }); - } - catch (error) { - $mol_fail_log(error); - return 24; - } - return min; - } - maximal_width() { - return this.minimal_width(); - } - minimal_height() { - let min = 0; - try { - for (const view of this.sub() ?? []) { - if (view instanceof $mol_view) { - min = Math.max(min, view.minimal_height()); - } - } - } - catch (error) { - $mol_fail_log(error); - return 24; - } - return min; - } - static watchers = new Set(); - view_rect() { - if ($mol_wire_probe(() => this.view_rect()) === undefined) { - $mol_wire_watch(); - return null; - } - else { - const { width, height, left, right, top, bottom } = this.dom_node().getBoundingClientRect(); - return { width, height, left, right, top, bottom }; - } - } - dom_id() { - return this.toString().replace(//g, ')').replaceAll(/"/g, "'"); - } - dom_node_external(next) { - const node = next ?? $mol_dom_context.document.createElementNS(this.dom_name_space(), this.dom_name()); - const id = this.dom_id(); - node.setAttribute('id', id); - node.toString = $mol_const('<#' + id + '>'); - return node; - } - dom_node(next) { - $mol_wire_solid(); - const node = this.dom_node_external(next); - $mol_dom_render_attributes(node, this.attr_static()); - const events = this.event_async(); - $mol_dom_render_events(node, events); - return node; - } - dom_final() { - this.render(); - const sub = this.sub_visible(); - if (!sub) - return; - for (const el of sub) { - if (el && typeof el === 'object' && 'dom_final' in el) { - el['dom_final'](); - } - } - return this.dom_node(); - } - dom_tree(next) { - const node = this.dom_node(next); - render: try { - $mol_dom_render_attributes(node, { mol_view_error: null }); - try { - this.render(); - } - finally { - for (let plugin of this.plugins()) { - if (plugin instanceof $mol_plugin) { - plugin.dom_tree(); - } - } - } - } - catch (error) { - $mol_fail_log(error); - const mol_view_error = $mol_promise_like(error) ? 'Promise' : error.name || error.constructor.name; - $mol_dom_render_attributes(node, { mol_view_error }); - if ($mol_promise_like(error)) - break render; - try { - const message = error.message || error; - node.innerText = message.replace(/^|$/mg, '\xA0\xA0'); - } - catch { } - } - try { - this.auto(); - } - catch (error) { - $mol_fail_log(error); - } - return node; - } - dom_node_actual() { - const node = this.dom_node(); - $mol_dom_render_styles(node, this.style_size()); - const attr = this.attr(); - const style = this.style(); - $mol_dom_render_attributes(node, attr); - $mol_dom_render_styles(node, style); - return node; - } - auto() { - return null; - } - render() { - const node = this.dom_node_actual(); - const sub = this.sub_visible(); - if (!sub) - return; - const nodes = sub.map(child => { - if (child == null) - return null; - return (child instanceof $mol_view) - ? child.dom_node() - : child instanceof $mol_dom_context.Node - ? child - : String(child); - }); - $mol_dom_render_children(node, nodes); - for (const el of sub) - if (el && typeof el === 'object' && 'dom_tree' in el) - el['dom_tree'](); - $mol_dom_render_fields(node, this.field()); - } - static view_classes() { - const proto = this.prototype; - let current = proto; - const classes = []; - while (current) { - if (current.constructor.name !== classes.at(-1)?.name) { - classes.push(current.constructor); - } - if (!(current instanceof $mol_view)) - break; - current = Object.getPrototypeOf(current); - } - return classes; - } - static _view_names; - static view_names(suffix) { - let cache = Reflect.getOwnPropertyDescriptor(this, '_view_names')?.value; - if (!cache) - cache = this._view_names = new Map; - const cached = cache.get(suffix); - if (cached) - return cached; - const names = []; - const suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1); - for (const Class of this.view_classes()) { - if (suffix in Class.prototype) - names.push(this.$.$mol_func_name(Class) + suffix2); - else - break; - } - cache.set(suffix, names); - return names; - } - view_names_owned() { - const names = []; - let owner = $mol_owning_get(this); - if (!(owner?.host instanceof $mol_view)) - return names; - const suffix = owner.task.name.trim(); - const suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1); - names.push(...owner.host.constructor.view_names(suffix)); - for (let prefix of owner.host.view_names_owned()) { - names.push(prefix + suffix2); - } - return names; - } - view_names() { - const names = new Set(); - for (let name of this.view_names_owned()) - names.add(name); - for (let Class of this.constructor.view_classes()) { - const name = this.$.$mol_func_name(Class); - if (name) - names.add(name); - } - return names; - } - theme(next = null) { - return next; - } - attr_static() { - let attrs = {}; - for (let name of this.view_names()) - attrs[name.replace(/\$/g, '').replace(/^(?=\d)/, '_').toLowerCase()] = ''; - return attrs; - } - attr() { - return { - mol_theme: this.theme() ?? undefined, - }; - } - style_size() { - return { - minHeight: this.minimal_height(), - minWidth: this.minimal_width(), - }; - } - style() { - return {}; - } - field() { - return {}; - } - event() { - return {}; - } - event_async() { - return { ...$mol_wire_async(this.event()) }; - } - plugins() { - return []; - } - [$mol_dev_format_head]() { - return $mol_dev_format_span({}, $mol_dev_format_native(this)); - } - *view_find(check, path = []) { - if (check(this)) - return yield [...path, this]; - try { - for (const item of this.sub()) { - if (item instanceof $mol_view) { - yield* item.view_find(check, [...path, this]); - } - } - } - catch (error) { - if ($mol_promise_like(error)) - $mol_fail_hidden(error); - $mol_fail_log(error); - } - } - force_render(path) { - const kids = this.sub(); - const index = kids.findIndex(item => { - if (item instanceof $mol_view) { - return path.has(item); - } - else { - return false; - } - }); - if (index >= 0) { - kids[index].force_render(path); - } - } - ensure_visible(view, align = "start") { - const path = this.view_find(v => v === view).next().value; - this.force_render(new Set(path)); - try { - this.dom_final(); - } - catch (err) { - $mol_fail_log(err); - } - view.dom_node().scrollIntoView({ block: align }); - } - bring() { - const win = this.$.$mol_dom_context; - if (win.parent !== win.self && !win.document.hasFocus()) - return; - new this.$.$mol_after_timeout(0, () => { - this.focused(true); - }); - } - destructor() { - const node = $mol_wire_probe(() => this.dom_node()); - if (!node) - return; - const events = $mol_wire_probe(() => this.event_async()); - if (!events) - return; - for (let event_name in events) { - node.removeEventListener(event_name, events[event_name]); - } - } - } - __decorate([ - $mol_mem - ], $mol_view.prototype, "autorun", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "title", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "focused", null); - __decorate([ - $mol_memo.method - ], $mol_view.prototype, "dom_name", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "minimal_width", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "minimal_height", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "view_rect", null); - __decorate([ - $mol_memo.method - ], $mol_view.prototype, "dom_id", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "dom_node", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "dom_final", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "dom_tree", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "dom_node_actual", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "render", null); - __decorate([ - $mol_memo.method - ], $mol_view.prototype, "view_names_owned", null); - __decorate([ - $mol_memo.method - ], $mol_view.prototype, "view_names", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "theme", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "event_async", null); - __decorate([ - $mol_mem_key - ], $mol_view, "Root", null); - __decorate([ - $mol_mem - ], $mol_view, "autobind", null); - __decorate([ - $mol_memo.method - ], $mol_view, "view_classes", null); - $.$mol_view = $mol_view; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/view/view/view.css", "[mol_view] {\n\ttransition-property: height, width, min-height, min-width, max-width, max-height, transform;\n\ttransition-duration: .2s;\n\ttransition-timing-function: ease-out;\n\t-webkit-appearance: none;\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\tflex-shrink: 0;\n\tcontain: style;\n\tscrollbar-color: var(--mol_theme_line) transparent;\n\tscrollbar-width: thin;\n}\t\n\n[mol_view]::selection {\n\tbackground: var(--mol_theme_line);\n}\t\n\n[mol_view]::-webkit-scrollbar {\n\twidth: .25rem;\n\theight: .25rem;\n}\n\n[mol_view]::-webkit-scrollbar-corner {\n\tbackground-color: var(--mol_theme_line);\n}\n\n[mol_view]::-webkit-scrollbar-track {\n\tbackground-color: transparent;\n}\n\n[mol_view]::-webkit-scrollbar-thumb {\n\tbackground-color: var(--mol_theme_line);\n\tborder-radius: var(--mol_gap_round);\n}\n\n[mol_view] > * {\n\tword-break: inherit;\n}\n\n[mol_view_root] {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbox-sizing: border-box;\n\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\tfont-size: 1rem;\n\tline-height: 1.5rem;\n\tbackground: var(--mol_theme_back);\n\tcolor: var(--mol_theme_text);\n\tcontain: unset; /** Fixes bg ignoring when applied to body on Chrome */\n\ttab-size: 4;\n\toverscroll-behavior: contain; /** Disable navigation gestures **/\n}\n\n@media print {\n\t[mol_view_root] {\n\t\theight: auto;\n\t}\n}\n\n[mol_view][mol_view_error]:not([mol_view_error=\"Promise\"]) {\n\tbackground-image: repeating-linear-gradient(\n\t\t-45deg,\n\t\t#f92323,\n\t\t#f92323 .5rem,\n\t\t#ff3d3d .5rem,\n\t\t#ff3d3d 1.5rem\n\t);\n\tcolor: black;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n@keyframes mol_view_wait {\n\tfrom {\n\t\topacity: .25;\n\t}\n\t20% {\n\t\topacity: .75;\n\t}\n\tto {\n\t\topacity: .25;\n\t}\n}\n\n:where([mol_view][mol_view_error=\"Promise\"]) {\n\tbackground: var(--mol_theme_hover);\n}\n\n[mol_view][mol_view_error=\"Promise\"] {\n\tanimation: mol_view_wait 1s steps(20,end) infinite;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_plugin extends $mol_view { - dom_node_external(next) { - return next ?? $mol_owning_get(this).host.dom_node(); - } - render() { - this.dom_node_actual(); - } - } - $.$mol_plugin = $mol_plugin; -})($ || ($ = {})); - -; - ($.$mol_ghost) = class $mol_ghost extends ($.$mol_view) { - Sub(){ - const obj = new this.$.$mol_view(); - return obj; - } - }; - ($mol_mem(($.$mol_ghost.prototype), "Sub")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_ghost extends $.$mol_ghost { - dom_node_external(next) { - return this.Sub().dom_node(next); - } - dom_node_actual() { - this.dom_node(); - const node = this.Sub().dom_node_actual(); - const attr = this.attr(); - const style = this.style(); - const fields = this.field(); - $mol_dom_render_attributes(node, attr); - $mol_dom_render_styles(node, style); - $mol_dom_render_fields(node, fields); - return node; - } - dom_tree() { - const Sub = this.Sub(); - const node = Sub.dom_tree(); - try { - this.dom_node_actual(); - this.auto(); - } - catch (error) { - $mol_fail_log(error); - } - return node; - } - title() { - return this.Sub().title(); - } - minimal_width() { - return this.Sub().minimal_width(); - } - minimal_height() { - return this.Sub().minimal_height(); - } - } - __decorate([ - $mol_mem - ], $mol_ghost.prototype, "dom_node_actual", null); - $$.$mol_ghost = $mol_ghost; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_drop) = class $mol_drop extends ($.$mol_ghost) { - enter(next){ - if(next !== undefined) return next; - return null; - } - move(next){ - if(next !== undefined) return next; - return null; - } - leave(next){ - if(next !== undefined) return next; - return null; - } - drop(next){ - if(next !== undefined) return next; - return null; - } - status(next){ - if(next !== undefined) return next; - return "ready"; - } - enabled(next){ - if(next !== undefined) return next; - return true; - } - event(){ - return { - "dragenter": (next) => (this.enter(next)), - "dragover": (next) => (this.move(next)), - "dragleave": (next) => (this.leave(next)), - "drop": (next) => (this.drop(next)) - }; - } - attr(){ - return {"mol_drop_status": (this.status())}; - } - adopt(next){ - if(next !== undefined) return next; - return {}; - } - receive(next){ - if(next !== undefined) return next; - return null; - } - allow(){ - return [ - "copy", - "move", - "link" - ]; - } - }; - ($mol_mem(($.$mol_drop.prototype), "enter")); - ($mol_mem(($.$mol_drop.prototype), "move")); - ($mol_mem(($.$mol_drop.prototype), "leave")); - ($mol_mem(($.$mol_drop.prototype), "drop")); - ($mol_mem(($.$mol_drop.prototype), "status")); - ($mol_mem(($.$mol_drop.prototype), "enabled")); - ($mol_mem(($.$mol_drop.prototype), "adopt")); - ($mol_mem(($.$mol_drop.prototype), "receive")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_drop extends $.$mol_drop { - status(next = 'ready') { return next; } - _target = null; - enter(event) { - if (event.defaultPrevented) - return; - if (!this.enabled()) - return; - const action = this.decide_action(event); - event.dataTransfer.dropEffect = action; - if (action !== 'none') - this.status('drag'); - this._target = event.target; - event.preventDefault(); - } - move(event) { - if (event.defaultPrevented) - return; - if (!this.enabled()) - return; - event.dataTransfer.dropEffect = this.decide_action(event); - event.preventDefault(); - } - decide_action(event) { - const allow = this.allow(); - if (allow.includes('move') && event.shiftKey) - return 'move'; - else if (allow.includes('copy') && event.ctrlKey) - return 'copy'; - else if (allow.includes('link') && event.altKey) - return 'link'; - else - return allow[0]; - } - leave(event) { - if (this._target === event.target) { - this.status('ready'); - } - } - receive(transfer) { - return transfer; - } - drop(event) { - if (event.defaultPrevented) - return; - event.preventDefault(); - setTimeout(() => this.status('ready')); - const obj = this.adopt(event.dataTransfer); - if (!obj) - return; - this.receive(obj); - } - } - __decorate([ - $mol_mem - ], $mol_drop.prototype, "status", null); - $$.$mol_drop = $mol_drop; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_theme_auto) = class $mol_theme_auto extends ($.$mol_plugin) { - theme(){ - return ""; - } - attr(){ - return {"mol_theme": (this.theme())}; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - $.$mol_action = $mol_wire_method; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_state_arg extends $mol_object { - prefix; - static prolog = ''; - static separator = ' '; - static href(next) { - return next || process.argv.slice(2).join(' '); - } - static href_normal() { - return this.link({}); - } - static dict(next) { - if (next !== void 0) - this.href(this.make_link(next)); - var href = this.href(); - var chunks = href.split(' '); - var params = {}; - chunks.forEach(chunk => { - if (!chunk) - return; - var vals = chunk.split('=').map(decodeURIComponent); - params[vals.shift()] = vals.join('='); - }); - return params; - } - static value(key, next) { - if (next === void 0) - return this.dict()[key] ?? null; - this.href(this.link({ [key]: next })); - return next; - } - static link(next) { - const params = {}; - var prev = this.dict(); - for (var key in prev) { - params[key] = prev[key]; - } - for (var key in next) { - params[key] = next[key]; - } - return this.make_link(params); - } - static make_link(next) { - const chunks = []; - for (const key in next) { - if (next[key] !== null) { - chunks.push([key, next[key]].map(encodeURIComponent).join('=')); - } - } - return chunks.join(' '); - } - static go(next) { - this.href(this.link(next)); - } - constructor(prefix = '') { - super(); - this.prefix = prefix; - } - value(key, next) { - return this.constructor.value(this.prefix + key, next); - } - sub(postfix) { - return new this.constructor(this.prefix + postfix + '.'); - } - link(next) { - const prefix = this.prefix; - const dict = {}; - for (var key in next) { - dict[prefix + key] = next[key]; - } - return this.constructor.link(dict); - } - } - __decorate([ - $mol_mem - ], $mol_state_arg, "href", null); - __decorate([ - $mol_mem - ], $mol_state_arg, "href_normal", null); - __decorate([ - $mol_mem - ], $mol_state_arg, "dict", null); - __decorate([ - $mol_mem_key - ], $mol_state_arg, "value", null); - __decorate([ - $mol_action - ], $mol_state_arg, "go", null); - $.$mol_state_arg = $mol_state_arg; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_media extends $mol_object2 { - static match(query, next) { - if (next !== undefined) - return next; - const res = this.$.$mol_dom_context.matchMedia?.(query) ?? {}; - res.onchange = () => this.match(query, res.matches); - return res.matches; - } - } - __decorate([ - $mol_mem_key - ], $mol_media, "match", null); - $.$mol_media = $mol_media; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_mem_persist = $mol_wire_solid; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_mem_cached = $mol_wire_probe; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_storage extends $mol_object2 { - static native() { - return this.$.$mol_dom_context.navigator.storage ?? { - persisted: async () => false, - persist: async () => false, - estimate: async () => ({}), - getDirectory: async () => null, - }; - } - static persisted(next, cache) { - $mol_mem_persist(); - if (cache) - return Boolean(next); - const native = this.native(); - if (next && !$mol_mem_cached(() => this.persisted())) { - native.persist().then(actual => { - setTimeout(() => this.persisted(actual, 'cache'), 5000); - if (actual) - this.$.$mol_log3_done({ place: `$mol_storage`, message: `Persist: Yes` }); - else - this.$.$mol_log3_fail({ place: `$mol_storage`, message: `Persist: No` }); - }); - } - return next ?? $mol_wire_sync(native).persisted(); - } - static estimate() { - return $mol_wire_sync(this.native() ?? {}).estimate(); - } - static dir() { - return $mol_wire_sync(this.native()).getDirectory(); - } - } - __decorate([ - $mol_mem - ], $mol_storage, "native", null); - __decorate([ - $mol_mem - ], $mol_storage, "persisted", null); - $.$mol_storage = $mol_storage; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_state_local extends $mol_object { - static 'native()'; - static native() { - if (this['native()']) - return this['native()']; - check: try { - const native = $mol_dom_context.localStorage; - if (!native) - break check; - native.setItem('', ''); - native.removeItem(''); - return this['native()'] = native; - } - catch (error) { - console.warn(error); - } - return this['native()'] = { - getItem(key) { - return this[':' + key]; - }, - setItem(key, value) { - this[':' + key] = value; - }, - removeItem(key) { - this[':' + key] = void 0; - } - }; - } - static changes(next) { return next; } - static value(key, next) { - this.changes(); - if (next === void 0) - return JSON.parse(this.native().getItem(key) || 'null'); - if (next === null) { - this.native().removeItem(key); - } - else { - this.native().setItem(key, JSON.stringify(next)); - this.$.$mol_storage.persisted(true); - } - return next; - } - prefix() { return ''; } - value(key, next) { - return $mol_state_local.value(this.prefix() + '.' + key, next); - } - } - __decorate([ - $mol_mem - ], $mol_state_local, "changes", null); - __decorate([ - $mol_mem_key - ], $mol_state_local, "value", null); - $.$mol_state_local = $mol_state_local; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_lock extends $mol_object { - promise = null; - async wait() { - let next = () => { }; - let destructed = false; - const task = $mol_wire_auto(); - if (!task) - return next; - const destructor = task.destructor.bind(task); - task.destructor = () => { - destructor(); - destructed = true; - next(); - }; - let promise; - do { - promise = this.promise; - await promise; - if (destructed) - return next; - } while (promise !== this.promise); - this.promise = new Promise(done => { next = done; }); - return next; - } - grab() { return $mol_wire_sync(this).wait(); } - } - $.$mol_lock = $mol_lock; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_compare_array(a, b) { - if (a === b) - return true; - if (Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) - return false; - if (a.length !== b.length) - return false; - for (let i = 0; i < a.length; i++) - if (a[i] !== b[i]) - return false; - return true; - } - $.$mol_compare_array = $mol_compare_array; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - const decoders = {}; - function $mol_charset_decode(buffer, encoding = 'utf8') { - let decoder = decoders[encoding]; - if (!decoder) - decoder = decoders[encoding] = new TextDecoder(encoding); - return decoder.decode(buffer); - } - $.$mol_charset_decode = $mol_charset_decode; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const TextEncoder = globalThis.TextEncoder ?? $node.util.TextEncoder; - const encoder = new TextEncoder(); - function $mol_charset_encode(value) { - return encoder.encode(value); - } - $.$mol_charset_encode = $mol_charset_encode; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_file_transaction extends $mol_object { - path() { return ''; } - modes() { return []; } - write(options) { - return 0; - } - read() { - return new Uint8Array(); - } - truncate(size) { } - close() { } - destructor() { - this.close(); - } - } - $.$mol_file_transaction = $mol_file_transaction; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - let file_modes; - (function (file_modes) { - file_modes[file_modes["create"] = $node.fs.constants.O_CREAT] = "create"; - file_modes[file_modes["exists_truncate"] = $node.fs.constants.O_TRUNC] = "exists_truncate"; - file_modes[file_modes["exists_fail"] = $node.fs.constants.O_EXCL] = "exists_fail"; - file_modes[file_modes["read_only"] = $node.fs.constants.O_RDONLY] = "read_only"; - file_modes[file_modes["write_only"] = $node.fs.constants.O_WRONLY] = "write_only"; - file_modes[file_modes["read_write"] = $node.fs.constants.O_RDWR] = "read_write"; - file_modes[file_modes["append"] = $node.fs.constants.O_APPEND] = "append"; - })(file_modes || (file_modes = {})); - function mode_mask(modes) { - return modes.reduce((res, mode) => res | file_modes[mode], 0); - } - class $mol_file_transaction_node extends $mol_file_transaction { - descr() { - $mol_wire_solid(); - return $node.fs.openSync(this.path(), mode_mask(this.modes())); - } - write({ buffer, offset = 0, length, position = null }) { - if (Array.isArray(buffer)) { - return $node.fs.writevSync(this.descr(), buffer, position ?? undefined); - } - if (typeof buffer === 'string') { - return $node.fs.writeSync(this.descr(), buffer, position); - } - length = length ?? buffer.byteLength; - return $node.fs.writeSync(this.descr(), buffer, offset, length, position); - } - truncate(size) { - $node.fs.ftruncateSync(this.descr()); - } - read() { - return $mol_file_node_buffer_normalize($node.fs.readFileSync(this.descr())); - } - close() { - $node.fs.closeSync(this.descr()); - } - } - __decorate([ - $mol_mem - ], $mol_file_transaction_node.prototype, "descr", null); - $.$mol_file_transaction_node = $mol_file_transaction_node; - $.$mol_file_transaction = $mol_file_transaction_node; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_file_base extends $mol_object { - static absolute(path) { - return this.make({ - path: $mol_const(path) - }); - } - static relative(path) { - throw new Error('Not implemented yet'); - } - static base = ''; - path() { - return '.'; - } - parent() { - return this.resolve('..'); - } - exists_cut() { return this.exists(); } - root() { - const path = this.path(); - const base = this.constructor.base; - return base.startsWith(path) || this == this.parent(); - } - stat(next, virt) { - const path = this.path(); - const parent = this.parent(); - if (!this.root()) { - parent.version(); - } - parent.watcher(); - if (virt) - return next ?? null; - return next ?? this.info(path); - } - static changed = new Set; - static frame = null; - static changed_add(type, path) { - if (/([\/\\]\.|___$)/.test(path)) - return; - const file = this.relative(path.at(-1) === '/' ? path.slice(0, -1) : path); - this.changed.add(file); - if (!this.watching) - return; - this.frame?.destructor(); - this.frame = new this.$.$mol_after_timeout(this.watch_debounce(), () => { - if (!this.watching) - return; - this.watching = false; - $mol_wire_async(this).flush(); - }); - } - static watch_debounce() { return 500; } - static flush() { - for (const file of this.changed) { - const parent = file.parent(); - try { - if ($mol_wire_probe(() => parent.sub())) - parent.sub(null); - file.reset(); - } - catch (error) { - if ($mol_fail_catch(error)) - $mol_fail_log(error); - } - } - this.changed.clear(); - this.watching = true; - } - static watching = true; - static lock = new $mol_lock; - static watch_off(path) { - this.watching = false; - this.flush(); - this.watching = false; - this.changed.add(this.absolute(path)); - } - static unwatched(side_effect, affected_dir) { - const unlock = this.lock.grab(); - this.watch_off(affected_dir); - try { - const result = side_effect(); - this.flush(); - unlock(); - return result; - } - catch (e) { - if (!$mol_promise_like(e)) { - this.flush(); - unlock(); - } - $mol_fail_hidden(e); - } - } - reset() { - this.stat(null); - } - modified() { return this.stat()?.mtime ?? null; } - version() { - const next = this.stat()?.mtime.getTime().toString(36).toUpperCase() ?? ''; - return next; - } - info(path) { return null; } - ensure() { } - drop() { } - copy(to) { } - read() { return new Uint8Array; } - write(buffer) { } - kids() { - return []; - } - readable(opts) { - return new ReadableStream; - } - writable(opts) { - return new WritableStream; - } - buffer(next) { - let readed = new Uint8Array(); - if (next === undefined) { - if (this.version()) - readed = this.read(); - } - const prev = $mol_mem_cached(() => this.buffer()); - const changed = prev === undefined || !$mol_compare_array(prev, next ?? readed); - if (prev !== undefined && changed) { - this.$.$mol_log3_rise({ - place: `$mol_file_node.buffer()`, - message: 'Changed', - path: this.relate(), - }); - } - if (next === undefined) - return changed ? readed : prev; - if (!changed && this.exists()) - return prev; - this.parent().exists(true); - this.stat(this.stat_make(next.length), 'virt'); - this.write(next); - return next; - } - stat_make(size) { - const now = new Date(); - return { - type: 'file', - size, - atime: now, - mtime: now, - ctime: now, - }; - } - clone(to) { - if (!this.exists()) - return null; - const target = this.constructor.absolute(to); - try { - this.version(); - target.parent().exists(true); - this.copy(to); - target.reset(); - return target; - } - catch (error) { - if ($mol_fail_catch(error)) { - console.error(error); - } - } - return null; - } - watcher() { - return { - destructor() { } - }; - } - exists(next) { - const exists = Boolean(this.stat()); - if (next === undefined) - return exists; - if (next === exists) - return exists; - if (next) { - this.parent().exists(true); - this.ensure(); - } - else { - this.drop(); - } - this.reset(); - return next; - } - type() { - return this.stat()?.type ?? ''; - } - name() { - return this.path().replace(/^.*\//, ''); - } - ext() { - const match = /((?:\.\w+)+)$/.exec(this.path()); - return match ? match[1].substring(1) : ''; - } - text(next, virt) { - if (next !== undefined) - this.exists(); - return this.text_int(next, virt); - } - text_int(next, virt) { - if (virt) { - this.stat(this.stat_make(0), 'virt'); - return next; - } - if (next === undefined) { - return $mol_charset_decode(this.buffer()); - } - else { - const buffer = $mol_charset_encode(next); - this.buffer(buffer); - return next; - } - } - sub(reset) { - if (!this.exists()) - return []; - if (this.type() !== 'dir') - return []; - this.version(); - return this.kids().filter(file => file.exists()); - } - resolve(path) { - throw new Error('implement'); - } - relate(base = this.constructor.relative('.')) { - const base_path = base.path(); - const path = this.path(); - return path.startsWith(base_path) ? path.slice(base_path.length) : path; - } - find(include, exclude) { - const found = []; - const sub = this.sub(); - for (const child of sub) { - const child_path = child.path(); - if (exclude && child_path.match(exclude)) - continue; - if (!include || child_path.match(include)) - found.push(child); - if (child.type() === 'dir') { - const sub_child = child.find(include, exclude); - for (const child of sub_child) - found.push(child); - } - } - return found; - } - size() { - switch (this.type()) { - case 'file': return this.stat()?.size ?? 0; - default: return 0; - } - } - toJSON() { - return this.path(); - } - open(...modes) { - return this.$.$mol_file_transaction.make({ - path: () => this.path(), - modes: () => modes - }); - } - } - __decorate([ - $mol_action - ], $mol_file_base.prototype, "exists_cut", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "stat", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "modified", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "version", null); - __decorate([ - $mol_mem_key - ], $mol_file_base.prototype, "readable", null); - __decorate([ - $mol_mem_key - ], $mol_file_base.prototype, "writable", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "buffer", null); - __decorate([ - $mol_action - ], $mol_file_base.prototype, "stat_make", null); - __decorate([ - $mol_mem_key - ], $mol_file_base.prototype, "clone", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "exists", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "type", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "text_int", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "sub", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "size", null); - __decorate([ - $mol_action - ], $mol_file_base.prototype, "open", null); - __decorate([ - $mol_mem_key - ], $mol_file_base, "absolute", null); - __decorate([ - $mol_action - ], $mol_file_base, "flush", null); - __decorate([ - $mol_action - ], $mol_file_base, "watch_off", null); - $.$mol_file_base = $mol_file_base; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_file extends $mol_file_base { - } - $.$mol_file = $mol_file; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function stat_convert(stat) { - if (!stat) - return null; - let type; - if (stat.isDirectory()) - type = 'dir'; - if (stat.isFile()) - type = 'file'; - if (stat.isSymbolicLink()) - type = 'link'; - if (!type) - return $mol_fail(new Error(`Unsupported file type`)); - return { - type, - size: Number(stat.size), - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime - }; - } - function $mol_file_node_buffer_normalize(buf) { - return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength); - } - $.$mol_file_node_buffer_normalize = $mol_file_node_buffer_normalize; - class $mol_file_node extends $mol_file { - static relative(path) { - return this.absolute($node.path.resolve(this.base, path).replace(/\\/g, '/')); - } - watcher(reset) { - const path = this.path(); - const root = this.root(); - if (!root && !this.exists()) - return super.watcher(); - let watcher; - try { - watcher = $node.fs.watch(path); - } - catch (error) { - if (!(error instanceof Error)) - error = new Error('Unknown watch error', { cause: error }); - error.message += '\n' + path; - if (root || error.code !== 'ENOENT') { - this.$.$mol_fail_log(error); - } - return super.watcher(); - } - watcher.on('change', (type, name) => { - if (!name) - return; - const path = $node.path.join(this.path(), name.toString()); - this.constructor.changed_add(type, path); - }); - watcher.on('error', e => this.$.$mol_fail_log(e)); - let destructed = false; - watcher.on('close', () => { - if (!destructed) - setTimeout(() => $mol_wire_async(this).watcher(null), 500); - }); - return { - destructor() { - destructed = true; - watcher.close(); - } - }; - } - info(path) { - try { - return stat_convert($node.fs.statSync(path)); - } - catch (error) { - if (this.$.$mol_fail_catch(error)) { - if (error.code === 'ENOENT') - return null; - error.message += '\n' + path; - this.$.$mol_fail_hidden(error); - } - } - return null; - } - ensure() { - const path = this.path(); - try { - $node.fs.mkdirSync(path, { recursive: true }); - return null; - } - catch (e) { - if (this.$.$mol_fail_catch(e)) { - if (e.code === 'EEXIST') - return null; - e.message += '\n' + path; - this.$.$mol_fail_hidden(e); - } - } - } - copy(to) { - $node.fs.copyFileSync(this.path(), to); - } - drop() { - $node.fs.unlinkSync(this.path()); - } - read() { - const path = this.path(); - try { - return $mol_file_node_buffer_normalize($node.fs.readFileSync(path)); - } - catch (error) { - if (!$mol_promise_like(error)) { - error.message += '\n' + path; - } - $mol_fail_hidden(error); - } - } - write(buffer) { - const path = this.path(); - try { - $node.fs.writeFileSync(path, buffer); - } - catch (error) { - if (this.$.$mol_fail_catch(error)) { - error.message += '\n' + path; - } - return this.$.$mol_fail_hidden(error); - } - } - kids() { - const path = this.path(); - try { - const kids = $node.fs.readdirSync(path) - .filter(name => !/^\.+$/.test(name)) - .map(name => this.resolve(name)); - return kids; - } - catch (e) { - if (this.$.$mol_fail_catch(e)) { - if (e.code === 'ENOENT') - return []; - e.message += '\n' + path; - } - $mol_fail_hidden(e); - } - } - resolve(path) { - return this.constructor - .relative($node.path.join(this.path(), path)); - } - relate(base = this.constructor.relative('.')) { - return $node.path.relative(base.path(), this.path()).replace(/\\/g, '/'); - } - readable(opts) { - const { Readable } = $node['node:stream']; - const stream = $node.fs.createReadStream(this.path(), { - flags: 'r', - autoClose: true, - start: opts?.start, - end: opts?.end, - encoding: 'binary', - }); - return Readable.toWeb(stream); - } - writable(opts) { - const { Writable } = $node['node:stream']; - const stream = $node.fs.createWriteStream(this.path(), { - flags: 'w+', - autoClose: true, - start: opts?.start, - encoding: 'binary', - }); - return Writable.toWeb(stream); - } - } - __decorate([ - $mol_mem - ], $mol_file_node.prototype, "watcher", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "info", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "ensure", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "copy", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "drop", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "read", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "write", null); - __decorate([ - $mol_mem_key - ], $mol_file_node.prototype, "readable", null); - __decorate([ - $mol_mem - ], $mol_file_node.prototype, "writable", null); - $.$mol_file_node = $mol_file_node; - $.$mol_file = $mol_file_node; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_state_local_node extends $mol_state_local { - static dir() { - const base = process.env.XDG_DATA_HOME || ($node.os.homedir() + '/.local/share'); - return $mol_file.absolute(base).resolve('./mol_state_local'); - } - static value(key, next) { - const file = this.dir().resolve(encodeURIComponent(key) + '.json'); - if (next === null) { - file.exists(false); - return null; - } - const arg = next === undefined ? undefined : JSON.stringify(next); - return JSON.parse(file.text(arg) || 'null'); - } - } - __decorate([ - $mol_mem - ], $mol_state_local_node, "dir", null); - __decorate([ - $mol_mem_key - ], $mol_state_local_node, "value", null); - $.$mol_state_local_node = $mol_state_local_node; - $.$mol_state_local = $mol_state_local_node; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function parse(theme) { - if (theme === 'true') - return true; - if (theme === 'false') - return false; - return null; - } - function $mol_lights(next) { - const arg = parse(this.$mol_state_arg.value('mol_lights')); - const base = this.$mol_media.match('(prefers-color-scheme: light)'); - if (next === undefined) { - return arg ?? this.$mol_state_local.value('$mol_lights') ?? base; - } - else { - if (arg === null) { - this.$mol_state_local.value('$mol_lights', next === base ? null : next); - } - else { - this.$mol_state_arg.value('mol_lights', String(next)); - } - return next; - } - } - $.$mol_lights = $mol_lights; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_theme_auto extends $.$mol_theme_auto { - theme() { - return this.$.$mol_lights() ? '$mol_theme_light' : '$mol_theme_dark'; - } - } - $$.$mol_theme_auto = $mol_theme_auto; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_scroll) = class $mol_scroll extends ($.$mol_view) { - tabindex(){ - return -1; - } - event_scroll(next){ - if(next !== undefined) return next; - return null; - } - scroll_top(next){ - if(next !== undefined) return next; - return 0; - } - scroll_left(next){ - if(next !== undefined) return next; - return 0; - } - field(){ - return {...(super.field()), "tabIndex": (this.tabindex())}; - } - event(){ - return {...(super.event()), "scroll": (next) => (this.event_scroll(next))}; - } - }; - ($mol_mem(($.$mol_scroll.prototype), "event_scroll")); - ($mol_mem(($.$mol_scroll.prototype), "scroll_top")); - ($mol_mem(($.$mol_scroll.prototype), "scroll_left")); - - -; -"use strict"; -var $; -(function ($) { - class $mol_dom_listener extends $mol_object { - _node; - _event; - _handler; - _config; - constructor(_node, _event, _handler, _config = { passive: true }) { - super(); - this._node = _node; - this._event = _event; - this._handler = _handler; - this._config = _config; - this._node.addEventListener(this._event, this._handler, this._config); - } - destructor() { - this._node.removeEventListener(this._event, this._handler, this._config); - super.destructor(); - } - } - $.$mol_dom_listener = $mol_dom_listener; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_print extends $mol_object { - static before() { - return new $mol_dom_listener(this.$.$mol_dom_context, 'beforeprint', () => { - this.active(true); - }); - } - static after() { - return new $mol_dom_listener(this.$.$mol_dom_context, 'afterprint', () => { - this.active(false); - }); - } - static active(next) { - this.before(); - this.after(); - return next || false; - } - } - __decorate([ - $mol_mem - ], $mol_print, "before", null); - __decorate([ - $mol_mem - ], $mol_print, "after", null); - __decorate([ - $mol_mem - ], $mol_print, "active", null); - $.$mol_print = $mol_print; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - function $mol_style_sheet(Component, config0) { - let rules = []; - const block = $mol_dom_qname($mol_ambient({}).$mol_func_name(Component)); - const kebab = (name) => name.replace(/[A-Z]/g, letter => '-' + letter.toLowerCase()); - const make_class = (prefix, path, config) => { - const props = []; - const selector = (prefix, path) => { - if (path.length === 0) - return prefix || `[${block}]`; - let res = `[${block}_${path.join('_')}]`; - if (prefix) - res = prefix + ' :where(' + res + ')'; - return res; - }; - for (const key of Object.keys(config).reverse()) { - if (/^(--)?[a-z]/.test(key)) { - const addProp = (keys, val) => { - if (Array.isArray(val)) { - if (val[0] && [Array, Object].includes(val[0].constructor)) { - val = val.map(v => { - return Object.entries(v).map(([n, a]) => { - if (a === true) - return kebab(n); - if (a === false) - return null; - return String(a); - }).filter(Boolean).join(' '); - }).join(','); - } - else { - val = val.join(' '); - } - props.push(`\t${keys.join('-')}: ${val};\n`); - } - else if (val.constructor === Object) { - for (let suffix in val) { - addProp([...keys, kebab(suffix)], val[suffix]); - } - } - else { - props.push(`\t${keys.join('-')}: ${val};\n`); - } - }; - addProp([kebab(key)], config[key]); - } - else if (/^[A-Z]/.test(key)) { - make_class(prefix, [...path, key.toLowerCase()], config[key]); - } - else if (key[0] === '$') { - make_class(selector(prefix, path) + ' :where([' + $mol_dom_qname(key) + '])', [], config[key]); - } - else if (key === '>') { - const types = config[key]; - for (let type in types) { - make_class(selector(prefix, path) + ' > :where([' + $mol_dom_qname(type) + '])', [], types[type]); - } - } - else if (key === '@') { - const attrs = config[key]; - for (let name in attrs) { - for (let val in attrs[name]) { - make_class(selector(prefix, path) + ':where([' + name + '=' + JSON.stringify(val) + '])', [], attrs[name][val]); - } - } - } - else if (key === '@media') { - const media = config[key]; - for (let query in media) { - rules.push('}\n'); - make_class(prefix, path, media[query]); - rules.push(`${key} ${query} {\n`); - } - } - else if (key[0] === '[' && key[key.length - 1] === ']') { - const attr = key.slice(1, -1); - const vals = config[key]; - for (let val in vals) { - make_class(selector(prefix, path) + ':where([' + attr + '=' + JSON.stringify(val) + '])', [], vals[val]); - } - } - else { - make_class(selector(prefix, path) + key, [], config[key]); - } - } - if (props.length) { - rules.push(`${selector(prefix, path)} {\n${props.reverse().join('')}}\n`); - } - }; - make_class('', [], config0); - return rules.reverse().join(''); - } - $.$mol_style_sheet = $mol_style_sheet; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_style_define(Component, config) { - return $mol_style_attach(Component.name, $mol_style_sheet(Component, config)); - } - $.$mol_style_define = $mol_style_define; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_scroll extends $.$mol_scroll { - scroll_top(next, cache) { - const el = this.dom_node(); - if (next !== undefined && !cache) - el.scrollTop = next; - return el.scrollTop; - } - scroll_left(next, cache) { - const el = this.dom_node(); - if (next !== undefined && !cache) - el.scrollLeft = next; - return el.scrollLeft; - } - event_scroll(next) { - const el = this.dom_node(); - this.scroll_left(el.scrollLeft, 'cache'); - this.scroll_top(el.scrollTop, 'cache'); - } - minimal_height() { - return this.$.$mol_print.active() ? null : 0; - } - minimal_width() { - return this.$.$mol_print.active() ? null : 0; - } - } - __decorate([ - $mol_mem - ], $mol_scroll.prototype, "scroll_top", null); - __decorate([ - $mol_mem - ], $mol_scroll.prototype, "scroll_left", null); - $$.$mol_scroll = $mol_scroll; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { per, rem, px } = $mol_style_unit; - $mol_style_define($mol_scroll, { - display: 'grid', - overflow: 'auto', - flex: { - direction: 'column', - grow: 1, - shrink: 1, - }, - outline: 'none', - align: { - self: 'stretch', - items: 'flex-start', - }, - boxSizing: 'border-box', - willChange: 'scroll-position', - scroll: { - padding: [rem(.75), 0], - }, - maxHeight: per(100), - maxWidth: per(100), - webkitOverflowScrolling: 'touch', - contain: 'content', - '>': { - $mol_view: { - gridArea: '1/1', - }, - }, - '::before': { - display: 'none', - }, - '::after': { - display: 'none', - }, - '::-webkit-scrollbar': { - width: rem(.25), - height: rem(.25), - }, - '@media': { - 'print': { - overflow: 'hidden', - contain: 'none', - maxHeight: 'unset', - }, - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_book2) = class $mol_book2 extends ($.$mol_scroll) { - pages(){ - return []; - } - menu_title(){ - return ""; - } - sub(){ - return (this.pages()); - } - minimal_width(){ - return 0; - } - Placeholder(){ - const obj = new this.$.$mol_view(); - return obj; - } - Gap(id){ - const obj = new this.$.$mol_view(); - (obj.title) = () => (""); - return obj; - } - }; - ($mol_mem(($.$mol_book2.prototype), "Placeholder")); - ($mol_mem_key(($.$mol_book2.prototype), "Gap")); - - -; -"use strict"; -var $; -(function ($) { - $.$mol_layer = $mol_style_prop('mol_layer', [ - 'hover', - 'focus', - 'speck', - 'float', - 'popup', - ]); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/layer/layer.css", ":root {\n\t--mol_layer_hover: 1;\n\t--mol_layer_focus: 2;\n\t--mol_layer_speck: 3;\n\t--mol_layer_float: 4;\n\t--mol_layer_popup: 5;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_book2 extends $.$mol_book2 { - title() { - return this.pages().map(page => { - try { - return page?.title(); - } - catch (error) { - $mol_fail_log(error); - } - }).reverse().filter(Boolean).join(' | '); - } - menu_title() { - return this.pages()[0]?.title() || this.title(); - } - sub() { - const placeholder = this.Placeholder(); - const next = [...this.pages(), placeholder]; - const prev = $mol_mem_cached(() => this.sub()) ?? []; - for (let i = 1; i++;) { - const p = prev[prev.length - i]; - const n = next[next.length - i]; - if (!n) - break; - if (p === n) - continue; - if (n === placeholder) - continue; - new this.$.$mol_after_tick(() => { - const b = this.dom_node(); - const p = n.dom_node(); - b.scroll({ - left: p.offsetLeft + p.offsetWidth - b.offsetWidth, - behavior: 'smooth', - }); - }); - break; - } - return next; - } - bring() { - const pages = this.pages(); - if (pages.length) - pages[pages.length - 1].bring(); - else - super.bring(); - } - } - __decorate([ - $mol_mem - ], $mol_book2.prototype, "sub", null); - $$.$mol_book2 = $mol_book2; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/book2/book2.view.css", "[mol_book2] {\n\tdisplay: flex;\n\tflex-flow: row nowrap;\n\talign-items: stretch;\n\tflex: 1 1 auto;\n\talign-self: stretch;\n\tmargin: 0;\n\t/* box-shadow: 0 0 0 1px var(--mol_theme_line); */\n\t/* transform: translateZ(0); */\n\ttransition: none;\n\tscroll-snap-type: x mandatory;\n\t/* padding: 0 1px;\n\tscroll-padding: 0 1px;\n\tgap: 1px; */\n}\n\n[mol_book2] > * {\n/* \tflex: none; */\n\tscroll-snap-stop: always;\n\tscroll-snap-align: end;\n\tposition: relative;\n\tmin-height: 100%;\n\tmax-height: 100%;\n\tmax-width: 100%;\n\tflex-shrink: 0;\n\tbox-shadow: inset 0 0 0 1px var(--mol_theme_field);\n}\n\n[mol_book2] > *:not(:first-of-type):before,\n[mol_book2] > *:not(:last-of-type)::after {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 1.5rem;\n\twidth: 3px;\n\theight: 1rem;\n\tbackground: linear-gradient(\n\t\tto bottom,\n\t\tvar(--mol_theme_focus) 0%,\n\t\tvar(--mol_theme_focus) 14%,\n\t\ttransparent 15%,\n\t\ttransparent 42%,\n\t\tvar(--mol_theme_focus) 43%,\n\t\tvar(--mol_theme_focus) 57%,\n\t\ttransparent 58%,\n\t\ttransparent 85%,\n\t\tvar(--mol_theme_focus) 86%,\n\t\tvar(--mol_theme_focus) 100%\n\t);\n\topacity: .5;\n\tz-index: var(--mol_layer_speck);\n}\n[mol_book2] > *:not(:first-of-type):before {\n\tleft: -1px;\n}\n[mol_book2] > *:not(:last-of-type)::after {\n\tright: -1px;\n}\n\n:where([mol_book2]) > * {\n\tbackground-color: var(--mol_theme_card);\n\t/* box-shadow: 0 0 0 1px var(--mol_theme_back); */\n}\n\n[mol_book2] > [mol_book2] {\n\tdisplay: contents;\n}\n\n[mol_book2] > *:first-child {\n\tscroll-snap-align: start;\n}\n\n[mol_book2] > [mol_view] {\n\ttransform: none; /* prevent content clipping */\n}\n\n[mol_book2_placeholder] {\n\tflex: 1 1 0;\n\tbackground: none;\n}\n\n[mol_book2_gap] {\n\tbackground: none;\n\tflex-grow: 1;\n\tscroll-snap-align: none;\n\tmargin-right: -1px;\n\tbox-shadow: none;\n}\n\n[mol_book2_gap]::before,\n[mol_book2_gap]::after {\n\tdisplay: none;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_link) = class $mol_link extends ($.$mol_view) { - uri_toggle(){ - return ""; - } - hint(){ - return ""; - } - hint_safe(){ - return (this.hint()); - } - target(){ - return "_self"; - } - file_name(){ - return ""; - } - current(){ - return false; - } - relation(){ - return ""; - } - event_click(next){ - if(next !== undefined) return next; - return null; - } - click(next){ - return (this.event_click(next)); - } - uri(){ - return ""; - } - dom_name(){ - return "a"; - } - uri_off(){ - return ""; - } - uri_native(){ - return null; - } - external(){ - return false; - } - attr(){ - return { - ...(super.attr()), - "href": (this.uri_toggle()), - "title": (this.hint_safe()), - "target": (this.target()), - "download": (this.file_name()), - "mol_link_current": (this.current()), - "rel": (this.relation()) - }; - } - sub(){ - return [(this.title())]; - } - arg(){ - return {}; - } - event(){ - return {...(super.event()), "click": (next) => (this.click(next))}; - } - }; - ($mol_mem(($.$mol_link.prototype), "event_click")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_link extends $.$mol_link { - uri_toggle() { - return this.current() ? this.uri_off() : this.uri(); - } - uri() { - return new this.$.$mol_state_arg(this.state_key()).link(this.arg()); - } - uri_off() { - const arg2 = {}; - for (let i in this.arg()) - arg2[i] = null; - return new this.$.$mol_state_arg(this.state_key()).link(arg2); - } - uri_native() { - const base = this.$.$mol_state_arg.href(); - return new URL(this.uri(), base); - } - current() { - const base = this.$.$mol_state_arg.href_normal(); - const target = this.uri_native().toString(); - if (base === target) - return true; - const args = this.arg(); - const keys = Object.keys(args).filter(key => args[key] != null); - if (keys.length === 0) - return false; - for (const key of keys) { - if (this.$.$mol_state_arg.value(key) != args[key]) - return false; - } - return true; - } - file_name() { - return null; - } - minimal_height() { - return Math.max(super.minimal_height(), 24); - } - external() { - return this.uri_native().origin !== $mol_dom_context.location.origin; - } - target() { - return this.external() ? '_blank' : '_self'; - } - hint_safe() { - try { - return this.hint(); - } - catch (error) { - $mol_fail_log(error); - return ''; - } - } - } - __decorate([ - $mol_mem - ], $mol_link.prototype, "uri_toggle", null); - __decorate([ - $mol_mem - ], $mol_link.prototype, "uri", null); - __decorate([ - $mol_mem - ], $mol_link.prototype, "uri_off", null); - __decorate([ - $mol_mem - ], $mol_link.prototype, "uri_native", null); - __decorate([ - $mol_mem - ], $mol_link.prototype, "current", null); - $$.$mol_link = $mol_link; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const { rem } = $mol_style_unit; - $mol_style_define($mol_link, { - textDecoration: 'none', - color: $mol_theme.control, - stroke: 'currentcolor', - cursor: 'pointer', - padding: $mol_gap.text, - boxSizing: 'border-box', - position: 'relative', - minWidth: rem(2.5), - gap: $mol_gap.space, - border: { - radius: $mol_gap.round, - }, - ':hover': { - background: { - color: $mol_theme.hover, - }, - }, - ':focus-visible': { - outline: 'none', - background: { - color: $mol_theme.hover, - }, - }, - ':active': { - color: $mol_theme.focus, - }, - '@': { - mol_link_current: { - 'true': { - color: $mol_theme.current, - textShadow: '0 0', - } - } - }, - }); -})($ || ($ = {})); - -; - ($.$mol_image) = class $mol_image extends ($.$mol_view) { - uri(){ - return ""; - } - loading(){ - return "eager"; - } - decoding(){ - return "async"; - } - cors(){ - return null; - } - natural_width(){ - return 0; - } - natural_height(){ - return 0; - } - load(next){ - if(next !== undefined) return next; - return null; - } - dom_name(){ - return "img"; - } - field(){ - return { - ...(super.field()), - "src": (this.uri()), - "alt": (this.title()), - "loading": (this.loading()), - "decoding": (this.decoding()), - "crossOrigin": (this.cors()) - }; - } - attr(){ - return { - ...(super.attr()), - "width": (this.natural_width()), - "height": (this.natural_height()) - }; - } - event(){ - return {"load": (next) => (this.load(next))}; - } - minimal_width(){ - return 16; - } - minimal_height(){ - return 16; - } - }; - ($mol_mem(($.$mol_image.prototype), "load")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_image extends $.$mol_image { - natural_width(next) { - const dom = this.dom_node(); - if (dom.naturalWidth) - return dom.naturalWidth; - const found = this.uri().match(/\bwidth=(\d+)/); - return found ? Number(found[1]) : null; - } - natural_height(next) { - const dom = this.dom_node(); - if (dom.naturalHeight) - return dom.naturalHeight; - const found = this.uri().match(/\bheight=(\d+)/); - return found ? Number(found[1]) : null; - } - load() { - this.natural_width(null); - this.natural_height(null); - } - } - __decorate([ - $mol_mem - ], $mol_image.prototype, "natural_width", null); - __decorate([ - $mol_mem - ], $mol_image.prototype, "natural_height", null); - $$.$mol_image = $mol_image; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/image/image.view.css", "[mol_image] {\n\tborder-radius: var(--mol_gap_round);\n\toverflow: hidden;\n\tflex: 0 1 auto;\n\tmax-width: 100%;\n\tobject-fit: cover;\n\theight: fit-content;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_link_iconed) = class $mol_link_iconed extends ($.$mol_link) { - icon(){ - return ""; - } - Icon(){ - const obj = new this.$.$mol_image(); - (obj.uri) = () => ((this.icon())); - (obj.title) = () => (""); - return obj; - } - title(){ - return (this.uri()); - } - sub(){ - return [(this.Icon())]; - } - content(){ - return [(this.title())]; - } - host(){ - return ""; - } - }; - ($mol_mem(($.$mol_link_iconed.prototype), "Icon")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_link_iconed extends $.$mol_link_iconed { - icon() { - return `https://favicon.yandex.net/favicon/${this.host()}?color=0,0,0,0&size=32&stub=1`; - } - host() { - const base = this.$.$mol_state_arg.href(); - const url = new URL(this.uri(), base); - return url.hostname; - } - title() { - const uri = this.uri(); - const host = this.host(); - const suffix = (host ? uri.split(this.host(), 2)[1] : uri)?.replace(/^[\/\?#!]+/, ''); - return decodeURIComponent(suffix || host).replace(/^\//, ' '); - } - sub() { - return [ - ...this.host() ? [this.Icon()] : [], - ...this.content() ? [' ', ...this.content()] : [], - ]; - } - } - __decorate([ - $mol_mem - ], $mol_link_iconed.prototype, "icon", null); - __decorate([ - $mol_mem - ], $mol_link_iconed.prototype, "host", null); - __decorate([ - $mol_mem - ], $mol_link_iconed.prototype, "title", null); - __decorate([ - $mol_mem - ], $mol_link_iconed.prototype, "sub", null); - $$.$mol_link_iconed = $mol_link_iconed; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/link/iconed/iconed.view.css", "[mol_link_iconed] {\n\talign-items: baseline;\n\tdisplay: inline-flex;\n\tpadding: var(--mol_gap_text);\n}\n\n[mol_link_iconed_icon] {\n\tbox-shadow: none;\n\theight: 1.5em;\n\twidth: 1em;\n\tflex: 0 0 auto;\n\tdisplay: inline-block;\n\talign-self: normal;\n\tvertical-align: top;\n\tborder-radius: 0;\n\tobject-fit: scale-down;\n\topacity: .75;\n}\n\n[mol_theme=\"$mol_theme_dark\"] [mol_link_iconed_icon] {\n\tfilter: var(--mol_theme_image);\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_speck) = class $mol_speck extends ($.$mol_view) { - theme(){ - return "$mol_theme_accent"; - } - value(){ - return null; - } - attr(){ - return {...(super.attr()), "mol_theme": (this.theme())}; - } - style(){ - return {...(super.style()), "minHeight": "1em"}; - } - sub(){ - return [(this.value())]; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/speck/speck.view.css", "[mol_speck] {\n\tfont-size: .625rem;\n\tborder-radius: 1rem;\n\tmargin: -0.5rem -0.25rem;\n\talign-self: flex-start;\n\tmin-height: 1em;\n\tmin-width: .5em;\n\tvertical-align: sub;\n\tpadding: .25em .5em;\n\tposition: absolute;\n\tz-index: var(--mol_layer_speck);\n\ttext-align: center;\n\tline-height: 1;\n\tdisplay: inline-block;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\tuser-select: none;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_button) = class $mol_button extends ($.$mol_view) { - event_activate(next){ - if(next !== undefined) return next; - return null; - } - clicks(next){ - if(next !== undefined) return next; - return null; - } - event_key_press(next){ - if(next !== undefined) return next; - return null; - } - disabled(){ - return false; - } - tab_index(){ - return 0; - } - hint(){ - return ""; - } - hint_safe(){ - return (this.hint()); - } - error(){ - return ""; - } - enabled(){ - return true; - } - click(next){ - if(next !== undefined) return next; - return null; - } - event_click(next){ - if(next !== undefined) return next; - return null; - } - event(){ - return { - ...(super.event()), - "click": (next) => (this.event_activate(next)), - "dblclick": (next) => (this.clicks(next)), - "keydown": (next) => (this.event_key_press(next)) - }; - } - attr(){ - return { - ...(super.attr()), - "disabled": (this.disabled()), - "role": "button", - "tabindex": (this.tab_index()), - "title": (this.hint_safe()) - }; - } - sub(){ - return [(this.title())]; - } - Speck(){ - const obj = new this.$.$mol_speck(); - (obj.value) = () => ((this.error())); - return obj; - } - }; - ($mol_mem(($.$mol_button.prototype), "event_activate")); - ($mol_mem(($.$mol_button.prototype), "clicks")); - ($mol_mem(($.$mol_button.prototype), "event_key_press")); - ($mol_mem(($.$mol_button.prototype), "click")); - ($mol_mem(($.$mol_button.prototype), "event_click")); - ($mol_mem(($.$mol_button.prototype), "Speck")); - - -; -"use strict"; -var $; -(function ($) { - let $mol_keyboard_code; - (function ($mol_keyboard_code) { - $mol_keyboard_code[$mol_keyboard_code["backspace"] = 8] = "backspace"; - $mol_keyboard_code[$mol_keyboard_code["tab"] = 9] = "tab"; - $mol_keyboard_code[$mol_keyboard_code["enter"] = 13] = "enter"; - $mol_keyboard_code[$mol_keyboard_code["shift"] = 16] = "shift"; - $mol_keyboard_code[$mol_keyboard_code["ctrl"] = 17] = "ctrl"; - $mol_keyboard_code[$mol_keyboard_code["alt"] = 18] = "alt"; - $mol_keyboard_code[$mol_keyboard_code["pause"] = 19] = "pause"; - $mol_keyboard_code[$mol_keyboard_code["capsLock"] = 20] = "capsLock"; - $mol_keyboard_code[$mol_keyboard_code["escape"] = 27] = "escape"; - $mol_keyboard_code[$mol_keyboard_code["space"] = 32] = "space"; - $mol_keyboard_code[$mol_keyboard_code["pageUp"] = 33] = "pageUp"; - $mol_keyboard_code[$mol_keyboard_code["pageDown"] = 34] = "pageDown"; - $mol_keyboard_code[$mol_keyboard_code["end"] = 35] = "end"; - $mol_keyboard_code[$mol_keyboard_code["home"] = 36] = "home"; - $mol_keyboard_code[$mol_keyboard_code["left"] = 37] = "left"; - $mol_keyboard_code[$mol_keyboard_code["up"] = 38] = "up"; - $mol_keyboard_code[$mol_keyboard_code["right"] = 39] = "right"; - $mol_keyboard_code[$mol_keyboard_code["down"] = 40] = "down"; - $mol_keyboard_code[$mol_keyboard_code["insert"] = 45] = "insert"; - $mol_keyboard_code[$mol_keyboard_code["delete"] = 46] = "delete"; - $mol_keyboard_code[$mol_keyboard_code["key0"] = 48] = "key0"; - $mol_keyboard_code[$mol_keyboard_code["key1"] = 49] = "key1"; - $mol_keyboard_code[$mol_keyboard_code["key2"] = 50] = "key2"; - $mol_keyboard_code[$mol_keyboard_code["key3"] = 51] = "key3"; - $mol_keyboard_code[$mol_keyboard_code["key4"] = 52] = "key4"; - $mol_keyboard_code[$mol_keyboard_code["key5"] = 53] = "key5"; - $mol_keyboard_code[$mol_keyboard_code["key6"] = 54] = "key6"; - $mol_keyboard_code[$mol_keyboard_code["key7"] = 55] = "key7"; - $mol_keyboard_code[$mol_keyboard_code["key8"] = 56] = "key8"; - $mol_keyboard_code[$mol_keyboard_code["key9"] = 57] = "key9"; - $mol_keyboard_code[$mol_keyboard_code["A"] = 65] = "A"; - $mol_keyboard_code[$mol_keyboard_code["B"] = 66] = "B"; - $mol_keyboard_code[$mol_keyboard_code["C"] = 67] = "C"; - $mol_keyboard_code[$mol_keyboard_code["D"] = 68] = "D"; - $mol_keyboard_code[$mol_keyboard_code["E"] = 69] = "E"; - $mol_keyboard_code[$mol_keyboard_code["F"] = 70] = "F"; - $mol_keyboard_code[$mol_keyboard_code["G"] = 71] = "G"; - $mol_keyboard_code[$mol_keyboard_code["H"] = 72] = "H"; - $mol_keyboard_code[$mol_keyboard_code["I"] = 73] = "I"; - $mol_keyboard_code[$mol_keyboard_code["J"] = 74] = "J"; - $mol_keyboard_code[$mol_keyboard_code["K"] = 75] = "K"; - $mol_keyboard_code[$mol_keyboard_code["L"] = 76] = "L"; - $mol_keyboard_code[$mol_keyboard_code["M"] = 77] = "M"; - $mol_keyboard_code[$mol_keyboard_code["N"] = 78] = "N"; - $mol_keyboard_code[$mol_keyboard_code["O"] = 79] = "O"; - $mol_keyboard_code[$mol_keyboard_code["P"] = 80] = "P"; - $mol_keyboard_code[$mol_keyboard_code["Q"] = 81] = "Q"; - $mol_keyboard_code[$mol_keyboard_code["R"] = 82] = "R"; - $mol_keyboard_code[$mol_keyboard_code["S"] = 83] = "S"; - $mol_keyboard_code[$mol_keyboard_code["T"] = 84] = "T"; - $mol_keyboard_code[$mol_keyboard_code["U"] = 85] = "U"; - $mol_keyboard_code[$mol_keyboard_code["V"] = 86] = "V"; - $mol_keyboard_code[$mol_keyboard_code["W"] = 87] = "W"; - $mol_keyboard_code[$mol_keyboard_code["X"] = 88] = "X"; - $mol_keyboard_code[$mol_keyboard_code["Y"] = 89] = "Y"; - $mol_keyboard_code[$mol_keyboard_code["Z"] = 90] = "Z"; - $mol_keyboard_code[$mol_keyboard_code["metaLeft"] = 91] = "metaLeft"; - $mol_keyboard_code[$mol_keyboard_code["metaRight"] = 92] = "metaRight"; - $mol_keyboard_code[$mol_keyboard_code["select"] = 93] = "select"; - $mol_keyboard_code[$mol_keyboard_code["numpad0"] = 96] = "numpad0"; - $mol_keyboard_code[$mol_keyboard_code["numpad1"] = 97] = "numpad1"; - $mol_keyboard_code[$mol_keyboard_code["numpad2"] = 98] = "numpad2"; - $mol_keyboard_code[$mol_keyboard_code["numpad3"] = 99] = "numpad3"; - $mol_keyboard_code[$mol_keyboard_code["numpad4"] = 100] = "numpad4"; - $mol_keyboard_code[$mol_keyboard_code["numpad5"] = 101] = "numpad5"; - $mol_keyboard_code[$mol_keyboard_code["numpad6"] = 102] = "numpad6"; - $mol_keyboard_code[$mol_keyboard_code["numpad7"] = 103] = "numpad7"; - $mol_keyboard_code[$mol_keyboard_code["numpad8"] = 104] = "numpad8"; - $mol_keyboard_code[$mol_keyboard_code["numpad9"] = 105] = "numpad9"; - $mol_keyboard_code[$mol_keyboard_code["multiply"] = 106] = "multiply"; - $mol_keyboard_code[$mol_keyboard_code["add"] = 107] = "add"; - $mol_keyboard_code[$mol_keyboard_code["subtract"] = 109] = "subtract"; - $mol_keyboard_code[$mol_keyboard_code["decimal"] = 110] = "decimal"; - $mol_keyboard_code[$mol_keyboard_code["divide"] = 111] = "divide"; - $mol_keyboard_code[$mol_keyboard_code["F1"] = 112] = "F1"; - $mol_keyboard_code[$mol_keyboard_code["F2"] = 113] = "F2"; - $mol_keyboard_code[$mol_keyboard_code["F3"] = 114] = "F3"; - $mol_keyboard_code[$mol_keyboard_code["F4"] = 115] = "F4"; - $mol_keyboard_code[$mol_keyboard_code["F5"] = 116] = "F5"; - $mol_keyboard_code[$mol_keyboard_code["F6"] = 117] = "F6"; - $mol_keyboard_code[$mol_keyboard_code["F7"] = 118] = "F7"; - $mol_keyboard_code[$mol_keyboard_code["F8"] = 119] = "F8"; - $mol_keyboard_code[$mol_keyboard_code["F9"] = 120] = "F9"; - $mol_keyboard_code[$mol_keyboard_code["F10"] = 121] = "F10"; - $mol_keyboard_code[$mol_keyboard_code["F11"] = 122] = "F11"; - $mol_keyboard_code[$mol_keyboard_code["F12"] = 123] = "F12"; - $mol_keyboard_code[$mol_keyboard_code["numLock"] = 144] = "numLock"; - $mol_keyboard_code[$mol_keyboard_code["scrollLock"] = 145] = "scrollLock"; - $mol_keyboard_code[$mol_keyboard_code["semicolon"] = 186] = "semicolon"; - $mol_keyboard_code[$mol_keyboard_code["equals"] = 187] = "equals"; - $mol_keyboard_code[$mol_keyboard_code["comma"] = 188] = "comma"; - $mol_keyboard_code[$mol_keyboard_code["dash"] = 189] = "dash"; - $mol_keyboard_code[$mol_keyboard_code["period"] = 190] = "period"; - $mol_keyboard_code[$mol_keyboard_code["forwardSlash"] = 191] = "forwardSlash"; - $mol_keyboard_code[$mol_keyboard_code["graveAccent"] = 192] = "graveAccent"; - $mol_keyboard_code[$mol_keyboard_code["bracketOpen"] = 219] = "bracketOpen"; - $mol_keyboard_code[$mol_keyboard_code["slashBack"] = 220] = "slashBack"; - $mol_keyboard_code[$mol_keyboard_code["slashBackLeft"] = 226] = "slashBackLeft"; - $mol_keyboard_code[$mol_keyboard_code["bracketClose"] = 221] = "bracketClose"; - $mol_keyboard_code[$mol_keyboard_code["quoteSingle"] = 222] = "quoteSingle"; - })($mol_keyboard_code = $.$mol_keyboard_code || ($.$mol_keyboard_code = {})); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_button extends $.$mol_button { - status(next = [null]) { return next; } - disabled() { - return !this.enabled(); - } - event_activate(next) { - if (!next) - return; - if (!this.enabled()) - return; - try { - this.event_click(next); - this.click(next); - this.status([null]); - } - catch (error) { - Promise.resolve().then(() => this.status([error])); - $mol_fail_hidden(error); - } - } - event_key_press(event) { - if (event.keyCode === $mol_keyboard_code.enter) { - return this.event_activate(event); - } - } - tab_index() { - return this.enabled() ? super.tab_index() : -1; - } - error() { - const [error] = this.status(); - if (!error) - return ''; - if (error instanceof Promise) { - return $mol_fail_hidden(error); - } - return String(error.message ?? error); - } - hint_safe() { - try { - return this.hint(); - } - catch (error) { - $mol_fail_log(error); - return ''; - } - } - sub_visible() { - return [ - ...this.error() ? [this.Speck()] : [], - ...this.sub(), - ]; - } - } - __decorate([ - $mol_mem - ], $mol_button.prototype, "status", null); - $$.$mol_button = $mol_button; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/button/button.view.css", "[mol_button] {\n\tborder: none;\n\tfont: inherit;\n\tdisplay: inline-flex;\n\tflex-shrink: 0;\n\ttext-decoration: inherit;\n\tcursor: inherit;\n\tposition: relative;\n\tbox-sizing: border-box;\n\tword-break: normal;\n\tcursor: default;\n\tuser-select: none;\n\tborder-radius: var(--mol_gap_round);\n\tbackground: transparent;\n\tcolor: inherit;\n}\n\n[mol_button]:where(:not(:disabled)):hover {\n\tz-index: var(--mol_layer_hover);\n}\n\n[mol_button]:focus-visible {\n\toutline: none;\n\tz-index: var(--mol_layer_focus);\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_button_typed) = class $mol_button_typed extends ($.$mol_button) { - minimal_height(){ - return 40; - } - minimal_width(){ - return 40; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/button/typed/typed.view.css", "[mol_button_typed] {\n\talign-content: center;\n\talign-items: center;\n\tpadding: var(--mol_gap_text);\n\tborder-radius: var(--mol_gap_round);\n\tgap: var(--mol_gap_space);\n\tuser-select: none;\n\tcursor: pointer;\n}\n\n[mol_button_typed][disabled] {\n\tpointer-events: none;\n}\n\n[mol_button_typed]:hover ,\n[mol_button_typed]:focus-visible {\n\tbox-shadow: inset 0 0 0 10rem var(--mol_theme_hover);\n}\n\n[mol_button_typed]:active {\n\tcolor: var(--mol_theme_focus);\n}\n\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_button_minor) = class $mol_button_minor extends ($.$mol_button_typed) {}; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/button/minor/minor.view.css", "[mol_button_minor] {\n\tcolor: var(--mol_theme_control);\n}\n\n[mol_button_minor][disabled] {\n\tcolor: var(--mol_theme_shade);\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_check) = class $mol_check extends ($.$mol_button_minor) { - checked(next){ - if(next !== undefined) return next; - return false; - } - aria_checked(){ - return "false"; - } - aria_role(){ - return "checkbox"; - } - Icon(){ - return null; - } - title(){ - return ""; - } - Title(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.title())]); - return obj; - } - label(){ - return [(this.Title())]; - } - attr(){ - return { - ...(super.attr()), - "mol_check_checked": (this.checked()), - "aria-checked": (this.aria_checked()), - "role": (this.aria_role()) - }; - } - sub(){ - return [(this.Icon()), (this.label())]; - } - }; - ($mol_mem(($.$mol_check.prototype), "checked")); - ($mol_mem(($.$mol_check.prototype), "Title")); - - -; -"use strict"; -var $; -(function ($) { - function $mol_maybe(value) { - return (value == null) ? [] : [value]; - } - $.$mol_maybe = $mol_maybe; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/check.css", "[mol_check] {\n\tflex: 0 0 auto;\n\tjustify-content: flex-start;\n\talign-content: center;\n\t/* align-items: flex-start; */\n\tborder: none;\n\tfont-weight: inherit;\n\tbox-shadow: none;\n\ttext-align: left;\n\tdisplay: inline-flex;\n\tflex-wrap: nowrap;\n}\n\n[mol_check_title] {\n\tflex-shrink: 1;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_check extends $.$mol_check { - click(next) { - if (next?.defaultPrevented) - return; - this.checked(!this.checked()); - if (next) - next.preventDefault(); - } - sub() { - return [ - ...$mol_maybe(this.Icon()), - ...this.label(), - ]; - } - label() { - return this.title() ? super.label() : []; - } - aria_checked() { - return String(this.checked()); - } - } - $$.$mol_check = $mol_check; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_check_icon) = class $mol_check_icon extends ($.$mol_check) {}; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/icon/icon.view.css", "[mol_check_icon]:where([mol_check_checked]) {\n\tcolor: var(--mol_theme_current);\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_svg) = class $mol_svg extends ($.$mol_view) { - dom_name(){ - return "svg"; - } - dom_name_space(){ - return "http://www.w3.org/2000/svg"; - } - font_size(){ - return 16; - } - font_family(){ - return ""; - } - style_size(){ - return {}; - } - }; - - -; -"use strict"; -var $; -(function ($) { - class $mol_state_time extends $mol_object { - static task(precision, reset) { - if (precision) { - return new $mol_after_timeout(precision, () => this.task(precision, null)); - } - else { - return new $mol_after_frame(() => this.task(precision, null)); - } - } - static now(precision) { - this.task(precision); - return Date.now(); - } - } - __decorate([ - $mol_mem_key - ], $mol_state_time, "task", null); - __decorate([ - $mol_mem_key - ], $mol_state_time, "now", null); - $.$mol_state_time = $mol_state_time; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_svg extends $.$mol_svg { - computed_style() { - const win = this.$.$mol_dom_context; - const style = win.getComputedStyle(this.dom_node()); - if (!style['font-size']) - $mol_state_time.now(0); - return style; - } - font_size() { - return parseInt(this.computed_style()['font-size']) || 16; - } - font_family() { - return this.computed_style()['font-family']; - } - } - __decorate([ - $mol_mem - ], $mol_svg.prototype, "computed_style", null); - __decorate([ - $mol_mem - ], $mol_svg.prototype, "font_size", null); - __decorate([ - $mol_mem - ], $mol_svg.prototype, "font_family", null); - $$.$mol_svg = $mol_svg; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_svg_root) = class $mol_svg_root extends ($.$mol_svg) { - view_box(){ - return "0 0 100 100"; - } - aspect(){ - return "xMidYMid"; - } - dom_name(){ - return "svg"; - } - attr(){ - return { - ...(super.attr()), - "viewBox": (this.view_box()), - "preserveAspectRatio": (this.aspect()) - }; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/svg/root/root.view.css", "[mol_svg_root] {\n\toverflow: hidden;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_svg_path) = class $mol_svg_path extends ($.$mol_svg) { - geometry(){ - return ""; - } - dom_name(){ - return "path"; - } - attr(){ - return {...(super.attr()), "d": (this.geometry())}; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon) = class $mol_icon extends ($.$mol_svg_root) { - path(){ - return ""; - } - Path(){ - const obj = new this.$.$mol_svg_path(); - (obj.geometry) = () => ((this.path())); - return obj; - } - view_box(){ - return "0 0 24 24"; - } - minimal_width(){ - return 16; - } - minimal_height(){ - return 16; - } - sub(){ - return [(this.Path())]; - } - }; - ($mol_mem(($.$mol_icon.prototype), "Path")); - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/icon/icon.view.css", "[mol_icon] {\n\tfill: currentColor;\n\tstroke: none;\n\twidth: 1em;\n\theight: 1.5em;\n\tflex: 0 0 auto;\n\tvertical-align: top;\n\tdisplay: inline-block;\n\tfilter: drop-shadow(0px 1px 1px var(--mol_theme_back));\n\ttransform-origin: center;\n}\n\n[mol_icon_path] {\n\ttransform-origin: center;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_icon_brightness_4) = class $mol_icon_brightness_4 extends ($.$mol_icon) { - path(){ - return "M12,18C11.11,18 10.26,17.8 9.5,17.45C11.56,16.5 13,14.42 13,12C13,9.58 11.56,7.5 9.5,6.55C10.26,6.2 11.11,6 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z"; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - class $mol_locale extends $mol_object { - static lang_default() { - return 'en'; - } - static lang(next) { - return this.$.$mol_state_local.value('locale', next) || $mol_dom_context.navigator.language.replace(/-.*/, '') || this.lang_default(); - } - static source(lang) { - return JSON.parse(this.$.$mol_file.relative(`web.locale=${lang}.json`).text().toString()); - } - static texts(lang, next) { - if (next) - return next; - try { - return this.source(lang).valueOf(); - } - catch (error) { - if ($mol_fail_catch(error)) { - const def = this.lang_default(); - if (lang === def) - throw error; - } - } - return {}; - } - static text(key) { - const lang = this.lang(); - const target = this.texts(lang)[key]; - if (target) - return target; - this.warn(key); - const en = this.texts('en')[key]; - if (!en) - return key; - return en; - } - static warn(key) { - console.warn(`Not translated to "${this.lang()}": ${key}`); - return null; - } - } - __decorate([ - $mol_mem - ], $mol_locale, "lang_default", null); - __decorate([ - $mol_mem - ], $mol_locale, "lang", null); - __decorate([ - $mol_mem_key - ], $mol_locale, "source", null); - __decorate([ - $mol_mem_key - ], $mol_locale, "texts", null); - __decorate([ - $mol_mem_key - ], $mol_locale, "text", null); - __decorate([ - $mol_mem_key - ], $mol_locale, "warn", null); - $.$mol_locale = $mol_locale; -})($ || ($ = {})); - -; - ($.$mol_lights_toggle) = class $mol_lights_toggle extends ($.$mol_check_icon) { - Lights_icon(){ - const obj = new this.$.$mol_icon_brightness_4(); - return obj; - } - lights(next){ - if(next !== undefined) return next; - return false; - } - Icon(){ - return (this.Lights_icon()); - } - hint(){ - return (this.$.$mol_locale.text("$mol_lights_toggle_hint")); - } - checked(next){ - return (this.lights(next)); - } - }; - ($mol_mem(($.$mol_lights_toggle.prototype), "Lights_icon")); - ($mol_mem(($.$mol_lights_toggle.prototype), "lights")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_lights_toggle extends $.$mol_lights_toggle { - lights(next) { - return this.$.$mol_lights(next); - } - } - $$.$mol_lights_toggle = $mol_lights_toggle; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_icon_upload) = class $mol_icon_upload extends ($.$mol_icon) { - path(){ - return "M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_button_open) = class $mol_button_open extends ($.$mol_button_minor) { - Icon(){ - const obj = new this.$.$mol_icon_upload(); - return obj; - } - files(next){ - if(next !== undefined) return next; - return []; - } - accept(){ - return ""; - } - multiple(){ - return true; - } - Native(){ - const obj = new this.$.$mol_button_open_native(); - (obj.files) = (next) => ((this.files(next))); - (obj.accept) = () => ((this.accept())); - (obj.multiple) = () => ((this.multiple())); - return obj; - } - sub(){ - return [(this.Icon()), (this.Native())]; - } - }; - ($mol_mem(($.$mol_button_open.prototype), "Icon")); - ($mol_mem(($.$mol_button_open.prototype), "files")); - ($mol_mem(($.$mol_button_open.prototype), "Native")); - ($.$mol_button_open_native) = class $mol_button_open_native extends ($.$mol_view) { - accept(){ - return ""; - } - multiple(){ - return true; - } - picked(next){ - if(next !== undefined) return next; - return null; - } - dom_name(){ - return "input"; - } - files(next){ - if(next !== undefined) return next; - return []; - } - attr(){ - return { - "type": "file", - "accept": (this.accept()), - "multiple": (this.multiple()) - }; - } - event(){ - return {"change": (next) => (this.picked(next))}; - } - }; - ($mol_mem(($.$mol_button_open_native.prototype), "picked")); - ($mol_mem(($.$mol_button_open_native.prototype), "files")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_button_open_native extends $.$mol_button_open_native { - dom_node() { - return super.dom_node(); - } - picked() { - const files = this.dom_node().files; - if (!files || !files.length) - return; - this.files([...files]); - } - } - $$.$mol_button_open_native = $mol_button_open_native; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/button/open/open.view.css", "[mol_button_open_native] {\n\tposition: absolute;\n\tleft: 0;\n\ttop: -100%;\n\twidth: 100%;\n\theight: 200%;\n\tcursor: pointer;\n\topacity: 0;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_stack) = class $mol_stack extends ($.$mol_view) {}; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/stack/stack.view.css", "[mol_stack] {\n\tdisplay: grid;\n\t/* width: max-content; */\n\t/* height: max-content; */\n\talign-items: flex-start;\n\tjustify-items: flex-start;\n}\n\n[mol_stack] > * {\n\tgrid-area: 1/1;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - class $mol_syntax2 { - lexems; - constructor(lexems) { - this.lexems = lexems; - for (let name in lexems) { - this.rules.push({ - name: name, - regExp: lexems[name], - size: RegExp('^$|' + lexems[name].source).exec('').length - 1, - }); - } - const parts = '(' + this.rules.map(rule => rule.regExp.source).join(')|(') + ')'; - this.regexp = RegExp(`([\\s\\S]*?)(?:(${parts})|$(?![^]))`, 'gmu'); - } - rules = []; - regexp; - tokenize(text, handle) { - let end = 0; - lexing: while (end < text.length) { - const start = end; - this.regexp.lastIndex = start; - var found = this.regexp.exec(text); - end = this.regexp.lastIndex; - if (start === end) - throw new Error('Empty token'); - var prefix = found[1]; - if (prefix) - handle('', prefix, [prefix], start); - var suffix = found[2]; - if (!suffix) - continue; - let offset = 4; - for (let rule of this.rules) { - if (found[offset - 1]) { - handle(rule.name, suffix, found.slice(offset, offset + rule.size), start + prefix.length); - continue lexing; - } - offset += rule.size + 1; - } - $mol_fail(new Error('$mol_syntax2 is broken')); - } - } - parse(text, handlers) { - this.tokenize(text, (name, ...args) => handlers[name](...args)); - } - } - $.$mol_syntax2 = $mol_syntax2; -})($ || ($ = {})); - -; - ($.$mol_paragraph) = class $mol_paragraph extends ($.$mol_view) { - line_height(){ - return 24; - } - letter_width(){ - return 7; - } - width_limit(){ - return +Infinity; - } - row_width(){ - return 0; - } - sub(){ - return [(this.title())]; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_paragraph extends $.$mol_paragraph { - maximal_width() { - let width = 0; - const letter = this.letter_width(); - for (const kid of this.sub()) { - if (!kid) - continue; - if (kid instanceof $mol_view) { - width += kid.maximal_width(); - } - else if (typeof kid !== 'object') { - width += String(kid).length * letter; - } - } - return width; - } - width_limit() { - return this.$.$mol_window.size().width; - } - minimal_width() { - return this.letter_width(); - } - row_width() { - return Math.max(Math.min(this.width_limit(), this.maximal_width()), this.letter_width()); - } - minimal_height() { - return Math.max(1, Math.ceil(this.maximal_width() / this.row_width())) * this.line_height(); - } - } - __decorate([ - $mol_mem - ], $mol_paragraph.prototype, "maximal_width", null); - __decorate([ - $mol_mem - ], $mol_paragraph.prototype, "row_width", null); - __decorate([ - $mol_mem - ], $mol_paragraph.prototype, "minimal_height", null); - $$.$mol_paragraph = $mol_paragraph; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/paragraph/paragraph.view.css", ":where([mol_paragraph]) {\n\tmargin: 0;\n\tmax-width: 100%;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_dimmer) = class $mol_dimmer extends ($.$mol_paragraph) { - parts(){ - return []; - } - string(id){ - return ""; - } - haystack(){ - return ""; - } - needle(){ - return ""; - } - sub(){ - return (this.parts()); - } - Low(id){ - const obj = new this.$.$mol_paragraph(); - (obj.sub) = () => ([(this.string(id))]); - return obj; - } - High(id){ - const obj = new this.$.$mol_paragraph(); - (obj.sub) = () => ([(this.string(id))]); - return obj; - } - }; - ($mol_mem_key(($.$mol_dimmer.prototype), "Low")); - ($mol_mem_key(($.$mol_dimmer.prototype), "High")); - - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - class $mol_regexp extends RegExp { - groups; - constructor(source, flags = 'gsu', groups = []) { - super(source, flags); - this.groups = groups; - } - *[Symbol.matchAll](str) { - const index = this.lastIndex; - this.lastIndex = 0; - try { - while (this.lastIndex < str.length) { - const found = this.exec(str); - if (!found) - break; - yield found; - } - } - finally { - this.lastIndex = index; - } - } - [Symbol.match](str) { - const res = [...this[Symbol.matchAll](str)].filter(r => r.groups).map(r => r[0]); - if (!res.length) - return null; - return res; - } - [Symbol.split](str) { - const res = []; - let token_last = null; - for (let token of this[Symbol.matchAll](str)) { - if (token.groups && (token_last ? token_last.groups : true)) - res.push(''); - res.push(token[0]); - token_last = token; - } - if (!res.length) - res.push(''); - return res; - } - test(str) { - return Boolean(str.match(this)); - } - exec(str) { - const from = this.lastIndex; - if (from >= str.length) - return null; - const res = super.exec(str); - if (res === null) { - this.lastIndex = str.length; - if (!str) - return null; - return Object.assign([str.slice(from)], { - index: from, - input: str, - }); - } - if (from === this.lastIndex) { - $mol_fail(new Error('Captured empty substring')); - } - const groups = {}; - const skipped = str.slice(from, this.lastIndex - res[0].length); - if (skipped) { - this.lastIndex = this.lastIndex - res[0].length; - return Object.assign([skipped], { - index: from, - input: res.input, - }); - } - for (let i = 0; i < this.groups.length; ++i) { - const group = this.groups[i]; - groups[group] = groups[group] || res[i + 1] || ''; - } - return Object.assign(res, { groups }); - } - generate(params) { - return null; - } - get native() { - return new RegExp(this.source, this.flags); - } - static repeat(source, min = 0, max = Number.POSITIVE_INFINITY) { - const regexp = $mol_regexp.from(source); - const upper = Number.isFinite(max) ? max : ''; - const str = `(?:${regexp.source}){${min},${upper}}?`; - const regexp2 = new $mol_regexp(str, regexp.flags, regexp.groups); - regexp2.generate = params => { - const res = regexp.generate(params); - if (res) - return res; - if (min > 0) - return res; - return ''; - }; - return regexp2; - } - static repeat_greedy(source, min = 0, max = Number.POSITIVE_INFINITY) { - const regexp = $mol_regexp.from(source); - const upper = Number.isFinite(max) ? max : ''; - const str = `(?:${regexp.source}){${min},${upper}}`; - const regexp2 = new $mol_regexp(str, regexp.flags, regexp.groups); - regexp2.generate = params => { - const res = regexp.generate(params); - if (res) - return res; - if (min > 0) - return res; - return ''; - }; - return regexp2; - } - static vary(sources) { - const groups = []; - const chunks = sources.map(source => { - const regexp = $mol_regexp.from(source); - groups.push(...regexp.groups); - return regexp.source; - }); - return new $mol_regexp(`(?:${chunks.join('|')})`, '', groups); - } - static optional(source) { - return $mol_regexp.repeat_greedy(source, 0, 1); - } - static force_after(source) { - const regexp = $mol_regexp.from(source); - return new $mol_regexp(`(?=${regexp.source})`, regexp.flags, regexp.groups); - } - static forbid_after(source) { - const regexp = $mol_regexp.from(source); - return new $mol_regexp(`(?!${regexp.source})`, regexp.flags, regexp.groups); - } - static from(source, { ignoreCase, multiline } = { - ignoreCase: false, - multiline: false, - }) { - let flags = 'gsu'; - if (multiline) - flags += 'm'; - if (ignoreCase) - flags += 'i'; - if (typeof source === 'number') { - const src = `\\u{${source.toString(16)}}`; - const regexp = new $mol_regexp(src, flags); - regexp.generate = () => src; - return regexp; - } - if (typeof source === 'string') { - const src = source.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - const regexp = new $mol_regexp(src, flags); - regexp.generate = () => source; - return regexp; - } - else if (source instanceof $mol_regexp) { - const regexp = new $mol_regexp(source.source, flags, source.groups); - regexp.generate = params => source.generate(params); - return regexp; - } - if (source instanceof RegExp) { - const test = new RegExp('|' + source.source); - const groups = Array.from({ length: test.exec('').length - 1 }, (_, i) => String(i + 1)); - const regexp = new $mol_regexp(source.source, source.flags, groups); - regexp.generate = () => ''; - return regexp; - } - if (Array.isArray(source)) { - const patterns = source.map(src => Array.isArray(src) - ? $mol_regexp.optional(src) - : $mol_regexp.from(src)); - const chunks = patterns.map(pattern => pattern.source); - const groups = []; - let index = 0; - for (const pattern of patterns) { - for (let group of pattern.groups) { - if (Number(group) >= 0) { - groups.push(String(index++)); - } - else { - groups.push(group); - } - } - } - const regexp = new $mol_regexp(chunks.join(''), flags, groups); - regexp.generate = params => { - let res = ''; - for (const pattern of patterns) { - let sub = pattern.generate(params); - if (sub === null) - return ''; - res += sub; - } - return res; - }; - return regexp; - } - else { - const groups = []; - const chunks = Object.keys(source).map(name => { - groups.push(name); - const regexp = $mol_regexp.from(source[name]); - groups.push(...regexp.groups); - return `(${regexp.source})`; - }); - const regexp = new $mol_regexp(`(?:${chunks.join('|')})`, flags, groups); - const validator = new RegExp('^' + regexp.source + '$', flags); - regexp.generate = (params) => { - for (let option in source) { - if (option in params) { - if (typeof params[option] === 'boolean') { - if (!params[option]) - continue; - } - else { - const str = String(params[option]); - if (str.match(validator)) - return str; - $mol_fail(new Error(`Wrong param: ${option}=${str}`)); - } - } - else { - if (typeof source[option] !== 'object') - continue; - } - const res = $mol_regexp.from(source[option]).generate(params); - if (res) - return res; - } - return null; - }; - return regexp; - } - } - static unicode_only(...category) { - return new $mol_regexp(`\\p{${category.join('=')}}`); - } - static unicode_except(...category) { - return new $mol_regexp(`\\P{${category.join('=')}}`); - } - static char_range(from, to) { - return new $mol_regexp(`${$mol_regexp.from(from).source}-${$mol_regexp.from(to).source}`); - } - static char_only(...allowed) { - const regexp = allowed.map(f => $mol_regexp.from(f).source).join(''); - return new $mol_regexp(`[${regexp}]`); - } - static char_except(...forbidden) { - const regexp = forbidden.map(f => $mol_regexp.from(f).source).join(''); - return new $mol_regexp(`[^${regexp}]`); - } - static decimal_only = $mol_regexp.from(/\d/gsu); - static decimal_except = $mol_regexp.from(/\D/gsu); - static latin_only = $mol_regexp.from(/\w/gsu); - static latin_except = $mol_regexp.from(/\W/gsu); - static space_only = $mol_regexp.from(/\s/gsu); - static space_except = $mol_regexp.from(/\S/gsu); - static word_break_only = $mol_regexp.from(/\b/gsu); - static word_break_except = $mol_regexp.from(/\B/gsu); - static tab = $mol_regexp.from(/\t/gsu); - static slash_back = $mol_regexp.from(/\\/gsu); - static nul = $mol_regexp.from(/\0/gsu); - static char_any = $mol_regexp.from(/./gsu); - static begin = $mol_regexp.from(/^/gsu); - static end = $mol_regexp.from(/$/gsu); - static or = $mol_regexp.from(/|/gsu); - static line_end = $mol_regexp.from({ - win_end: [['\r'], '\n'], - mac_end: '\r', - }); - } - $.$mol_regexp = $mol_regexp; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_dimmer extends $.$mol_dimmer { - parts() { - const needle = this.needle(); - if (needle.length < 2) - return [this.haystack()]; - let chunks = []; - let strings = this.strings(); - for (let index = 0; index < strings.length; index++) { - if (strings[index] === '') - continue; - chunks.push((index % 2) ? this.High(index) : this.Low(index)); - } - return chunks; - } - strings() { - const options = this.needle().split(/\s+/g).filter(Boolean); - if (!options.length) - return [this.haystack()]; - const variants = { ...options }; - const regexp = $mol_regexp.from({ needle: variants }, { ignoreCase: true }); - return this.haystack().split(regexp); - } - string(index) { - return this.strings()[index]; - } - *view_find(check, path = []) { - if (check(this, this.haystack())) { - yield [...path, this]; - } - } - } - __decorate([ - $mol_mem - ], $mol_dimmer.prototype, "strings", null); - $$.$mol_dimmer = $mol_dimmer; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/dimmer/dimmer.view.css", "[mol_dimmer] {\n\tdisplay: block;\n\tmax-width: 100%;\n}\n\n[mol_dimmer_low] {\n\tdisplay: inline;\n\topacity: 0.8;\n}\n\n[mol_dimmer_high] {\n\tdisplay: inline;\n\tcolor: var(--mol_theme_focus);\n\ttext-shadow: 0 0;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_text_code_token) = class $mol_text_code_token extends ($.$mol_dimmer) { - type(){ - return ""; - } - attr(){ - return {...(super.attr()), "mol_text_code_token_type": (this.type())}; - } - }; - ($.$mol_text_code_token_link) = class $mol_text_code_token_link extends ($.$mol_text_code_token) { - uri(){ - return ""; - } - dom_name(){ - return "a"; - } - type(){ - return "code-link"; - } - attr(){ - return { - ...(super.attr()), - "href": (this.uri()), - "target": "_blank" - }; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { hsla } = $mol_style_func; - $mol_style_define($mol_text_code_token, { - display: 'inline', - textDecoration: 'none', - '@': { - mol_text_code_token_type: { - 'code-keyword': { - color: hsla(0, 70, 60, 1), - }, - 'code-field': { - color: hsla(300, 70, 50, 1), - }, - 'code-tag': { - color: hsla(330, 70, 50, 1), - }, - 'code-global': { - color: hsla(30, 80, 50, 1), - }, - 'code-decorator': { - color: hsla(180, 40, 50, 1), - }, - 'code-punctuation': { - color: hsla(0, 0, 50, 1), - }, - 'code-string': { - color: hsla(90, 40, 50, 1), - }, - 'code-number': { - color: hsla(55, 65, 45, 1), - }, - 'code-call': { - color: hsla(270, 60, 50, 1), - }, - 'code-link': { - color: hsla(210, 60, 50, 1), - }, - 'code-comment-inline': { - opacity: .5, - }, - 'code-comment-block': { - opacity: .5, - }, - 'code-docs': { - opacity: .75, - }, - }, - } - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_text_code_line) = class $mol_text_code_line extends ($.$mol_paragraph) { - numb(){ - return 0; - } - token_type(id){ - return ""; - } - token_text(id){ - return ""; - } - highlight(){ - return ""; - } - token_uri(id){ - return ""; - } - text(){ - return ""; - } - minimal_height(){ - return 24; - } - numb_showed(){ - return true; - } - syntax(){ - return null; - } - uri_resolve(id){ - return ""; - } - Numb(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.numb())]); - return obj; - } - Token(id){ - const obj = new this.$.$mol_text_code_token(); - (obj.type) = () => ((this.token_type(id))); - (obj.haystack) = () => ((this.token_text(id))); - (obj.needle) = () => ((this.highlight())); - return obj; - } - Token_link(id){ - const obj = new this.$.$mol_text_code_token_link(); - (obj.haystack) = () => ((this.token_text(id))); - (obj.needle) = () => ((this.highlight())); - (obj.uri) = () => ((this.token_uri(id))); - return obj; - } - find_pos(id){ - return null; - } - }; - ($mol_mem(($.$mol_text_code_line.prototype), "Numb")); - ($mol_mem_key(($.$mol_text_code_line.prototype), "Token")); - ($mol_mem_key(($.$mol_text_code_line.prototype), "Token_link")); - - -; -"use strict"; -var $; -(function ($) { - $.$mol_syntax2_md_flow = new $mol_syntax2({ - 'quote': /^((?:(?:[>"] )(?:[^]*?)$(\r?\n?))+)([\n\r]*)/, - 'spoiler': /^((?:(?:[\?] )(?:[^]*?)$(\r?\n?))+)([\n\r]*)/, - 'header': /^([#=]+)(\s+)(.*?)$([\n\r]*)/, - 'list': /^((?:(?: ?([*+-])|(?:\d+[\.\)])+) +(?:[^]*?)$(?:\r?\n?)(?: (?:[^]*?)$(?:\r?\n?))*)+)((?:\r?\n)*)/, - 'code': /^(```\s*)([\w.-]*)[\r\n]+([^]*?)^(```)$([\n\r]*)/, - 'code-indent': /^((?:(?: |\t)(?:[^]*?)$\r?\n?)+)([\n\r]*)/, - 'table': /((?:^\|.+?$\r?\n?)+)([\n\r]*)/, - 'grid': /((?:^ *! .*?$\r?\n?)+)([\n\r]*)/, - 'cut': /^--+$((?:\r?\n)*)/, - 'block': /^(.*?)$((?:\r?\n)*)/, - }); - $.$mol_syntax2_md_line = new $mol_syntax2({ - 'strong': /\*\*(.+?)\*\*/, - 'emphasis': /\*(?!\s)(.+?)\*|\/\/(?!\s)(.+?)\/\//, - 'code': /```(.+?)```|;;(.+?);;|`(.+?)`/, - 'insert': /\+\+(.+?)\+\+/, - 'delete': /~~(.+?)~~|--(.+?)--/, - 'embed': /""(?:(.*?)\\)?(.*?)""/, - 'link': /\\\\(?:(.*?)\\)?(.*?)\\\\/, - 'image-link': /!\[([^\[\]]*?)\]\((.*?)\)/, - 'text-link': /\[(.*?(?:\[[^\[\]]*?\][^\[\]]*?)*)\]\((.*?)\)/, - 'text-link-http': /\b(https?:\/\/[^\s,.;:!?")]+(?:[,.;:!?")][^\s,.;:!?")]+)+)/, - }); - $.$mol_syntax2_md_code = new $mol_syntax2({ - 'code-indent': /\t+/, - 'code-docs': /\/\/\/.*?$/, - 'code-comment-block': /(?:\/\*[^]*?\*\/|\/\+[^]*?\+\/|)/, - 'code-link': /(?:\w+:\/\/|#)\S+?(?=\s|\\\\|""|$)/, - 'code-comment-inline': /\/\/.*?(?:$|\/\/)|- \\(?!\\).*|#!? .*/, - 'code-string': /(?:".*?"|'.*?'|`.*?`| ?\\\\.+?\\\\|\/.+?\/[dygimsu]*(?!\p{Letter})|[ \t]*\\[^\n]*)/u, - 'code-number': /[+-]?(?:\d*\.)?\d+\w*/, - 'code-call': /\.?\w+ *(?=\()/, - 'code-sexpr': /\((\w+ )/, - 'code-field': /(?:(?:\.|::|->)\w+|[\w-]+\??\s*:(?!\/\/|:))/, - 'code-keyword': /\b(throw|readonly|unknown|keyof|typeof|never|from|class|struct|interface|type|function|extends|implements|module|namespace|import|export|include|require|var|val|let|const|for|do|while|until|in|out|of|new|if|then|else|switch|case|this|return|async|await|yield|try|catch|break|continue|get|set|public|private|protected|string|boolean|number|null|undefined|true|false|void|int|float|ref)\b/, - 'code-global': /[$]+\w*|\b[A-Z][a-z0-9]+[A-Z]\w*/, - 'code-word': /\w+/, - 'code-decorator': /@.+/, - 'code-tag': /<\/?[\w-]+\/?>?|&\w+;/, - 'code-punctuation': /[\-\[\]\{\}\(\)<=>~!\?@#%&\*_\+\\\/\|;:\.,\^]+?/, - }); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_text_code_line extends $.$mol_text_code_line { - maximal_width() { - return this.text().length * this.letter_width(); - } - syntax() { - return this.$.$mol_syntax2_md_code; - } - tokens(path) { - const tokens = []; - const text = (path.length > 0) - ? this.tokens(path.slice(0, path.length - 1))[path[path.length - 1]].found.slice(1, -1) - : this.text(); - this.syntax().tokenize(text, (name, found, chunks) => { - if (name === 'code-sexpr') { - tokens.push({ name: 'code-punctuation', found: '(', chunks: [] }); - tokens.push({ name: 'code-call', found: chunks[0], chunks: [] }); - } - else { - tokens.push({ name, found, chunks }); - } - }); - return tokens; - } - sub() { - return [ - ...this.numb_showed() ? [this.Numb()] : [], - ...this.row_content([]) - ]; - } - row_content(path) { - return this.tokens(path).map((t, i) => this.Token([...path, i])); - } - Token(path) { - return this.token_type(path) === 'code-link' ? this.Token_link(path) : super.Token(path); - } - token_type(path) { - return this.tokens([...path.slice(0, path.length - 1)])[path[path.length - 1]].name; - } - token_content(path) { - const tokens = this.tokens([...path.slice(0, path.length - 1)]); - const token = tokens[path[path.length - 1]]; - switch (token.name) { - case 'code-string': return [ - token.found[0], - ...this.row_content(path), - token.found[token.found.length - 1], - ]; - default: return [token.found]; - } - } - token_text(path) { - const tokens = this.tokens([...path.slice(0, path.length - 1)]); - const token = tokens[path[path.length - 1]]; - return token.found; - } - token_uri(path) { - const uri = this.token_text(path); - return this.uri_resolve(uri); - } - *view_find(check, path = []) { - if (check(this, this.text())) { - yield [...path, this]; - } - } - find_pos(offset) { - return this.find_token_pos([offset]); - } - find_token_pos([offset, ...path]) { - for (const [index, token] of this.tokens(path).entries()) { - if (token.found.length >= offset) { - const token = this.Token([...path, index]); - return { token, offset }; - } - else { - offset -= token.found.length; - } - } - return null; - } - } - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "tokens", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "row_content", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "token_type", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "token_content", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "token_text", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "token_uri", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "find_pos", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "find_token_pos", null); - $$.$mol_text_code_line = $mol_text_code_line; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { rem } = $mol_style_unit; - $mol_style_define($mol_text_code_line, { - display: 'block', - position: 'relative', - font: { - family: 'monospace', - }, - Numb: { - textAlign: 'right', - color: $mol_theme.shade, - width: rem(3), - margin: { - left: rem(-4), - }, - display: 'inline-block', - whiteSpace: 'nowrap', - userSelect: 'none', - position: 'absolute', - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_list) = class $mol_list extends ($.$mol_view) { - rows(){ - return []; - } - gap_before(){ - return 0; - } - gap_after(){ - return 0; - } - render_visible_only(){ - return true; - } - render_over(){ - return 0; - } - sub(){ - return (this.rows()); - } - Empty(){ - const obj = new this.$.$mol_view(); - return obj; - } - Gap_before(){ - const obj = new this.$.$mol_view(); - (obj.style) = () => ({"paddingTop": (this.gap_before())}); - return obj; - } - Gap_after(){ - const obj = new this.$.$mol_view(); - (obj.style) = () => ({"paddingTop": (this.gap_after())}); - return obj; - } - view_window(){ - return [0, 0]; - } - }; - ($mol_mem(($.$mol_list.prototype), "Empty")); - ($mol_mem(($.$mol_list.prototype), "Gap_before")); - ($mol_mem(($.$mol_list.prototype), "Gap_after")); - - -; -"use strict"; -var $; -(function ($) { - let cache = null; - function $mol_support_css_overflow_anchor() { - return cache ?? (cache = this.$mol_dom_context.CSS?.supports('overflow-anchor:auto') ?? false); - } - $.$mol_support_css_overflow_anchor = $mol_support_css_overflow_anchor; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_list extends $.$mol_list { - sub() { - const rows = this.rows(); - return (rows.length === 0) ? [this.Empty()] : rows; - } - render_visible_only() { - return this.$.$mol_support_css_overflow_anchor(); - } - view_window(next) { - const kids = this.sub(); - if (kids.length < 3) - return [0, kids.length]; - if (this.$.$mol_print.active()) - return [0, kids.length]; - const rect = this.view_rect(); - if (next) - return next; - let [min, max] = $mol_mem_cached(() => this.view_window()) ?? [0, 0]; - let max2 = max = Math.min(max, kids.length); - let min2 = min = Math.max(0, Math.min(min, max - 1)); - const anchoring = this.render_visible_only(); - const window_height = this.$.$mol_window.size().height + 40; - const over = Math.ceil(window_height * this.render_over()); - const limit_top = -over; - const limit_bottom = window_height + over; - const gap_before = $mol_mem_cached(() => this.gap_before()) ?? 0; - const gap_after = $mol_mem_cached(() => this.gap_after()) ?? 0; - let top = Math.ceil(rect?.top ?? 0) + gap_before; - let bottom = Math.ceil(rect?.bottom ?? 0) - gap_after; - if (top <= limit_top && bottom >= limit_bottom) { - return [min2, max2]; - } - if (anchoring && ((bottom < limit_top) || (top > limit_bottom))) { - min = 0; - top = Math.ceil(rect?.top ?? 0); - while (min < (kids.length - 1)) { - const height = kids[min].minimal_height(); - if (top + height >= limit_top) - break; - top += height; - ++min; - } - min2 = min; - max2 = max = min; - bottom = top; - } - let top2 = top; - let bottom2 = bottom; - if (anchoring && (top < limit_top) && (bottom < limit_bottom) && (max < kids.length)) { - min2 = max; - top2 = bottom; - } - if ((bottom > limit_bottom) && (top > limit_top) && (min > 0)) { - max2 = min; - bottom2 = top; - } - while (anchoring && ((top2 > limit_top) && (min2 > 0))) { - --min2; - top2 -= kids[min2].minimal_height(); - } - while (bottom2 < limit_bottom && max2 < kids.length) { - bottom2 += kids[max2].minimal_height(); - ++max2; - } - return [min2, max2]; - } - gap_before() { - const skipped = this.sub().slice(0, this.view_window()[0]); - return Math.max(0, skipped.reduce((sum, view) => sum + view.minimal_height(), 0)); - } - gap_after() { - const skipped = this.sub().slice(this.view_window()[1]); - return Math.max(0, skipped.reduce((sum, view) => sum + view.minimal_height(), 0)); - } - sub_visible() { - return [ - ...this.gap_before() ? [this.Gap_before()] : [], - ...this.sub().slice(...this.view_window()), - ...this.gap_after() ? [this.Gap_after()] : [], - ]; - } - minimal_height() { - return this.sub().reduce((sum, view) => { - try { - return sum + view.minimal_height(); - } - catch (error) { - $mol_fail_log(error); - return sum; - } - }, 0); - } - force_render(path) { - const kids = this.rows(); - const index = kids.findIndex(item => path.has(item)); - if (index >= 0) { - const win = this.view_window(); - if (index < win[0] || index >= win[1]) { - this.view_window([this.render_visible_only() ? index : 0, index + 1]); - } - kids[index].force_render(path); - } - } - } - __decorate([ - $mol_mem - ], $mol_list.prototype, "sub", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "view_window", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "gap_before", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "gap_after", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "sub_visible", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "minimal_height", null); - $$.$mol_list = $mol_list; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/list/list.view.css", "[mol_list] {\n\twill-change: contents;\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-shrink: 0;\n\tmax-width: 100%;\n\t/* display: flex;\n\talign-items: stretch;\n\talign-content: stretch; */\n\ttransition: none;\n\tmin-height: 1.5rem;\n}\n\n[mol_list_gap_before] ,\n[mol_list_gap_after] {\n\tdisplay: block !important;\n\tflex: none;\n\ttransition: none;\n\toverflow-anchor: none;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_blob = ($node.buffer?.Blob ?? $mol_dom_context.Blob); -})($ || ($ = {})); - -; - ($.$mol_icon_clipboard) = class $mol_icon_clipboard extends ($.$mol_icon) { - path(){ - return "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_clipboard_outline) = class $mol_icon_clipboard_outline extends ($.$mol_icon) { - path(){ - return "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_button_copy) = class $mol_button_copy extends ($.$mol_button_minor) { - text(){ - return (this.title()); - } - text_blob(next){ - if(next !== undefined) return next; - const obj = new this.$.$mol_blob([(this.text())], {"type": "text/plain"}); - return obj; - } - html(){ - return ""; - } - html_blob(next){ - if(next !== undefined) return next; - const obj = new this.$.$mol_blob([(this.html())], {"type": "text/html"}); - return obj; - } - Icon(){ - const obj = new this.$.$mol_icon_clipboard_outline(); - return obj; - } - title(){ - return ""; - } - blobs(){ - return [(this.text_blob()), (this.html_blob())]; - } - data(){ - return {}; - } - sub(){ - return [(this.Icon()), (this.title())]; - } - }; - ($mol_mem(($.$mol_button_copy.prototype), "text_blob")); - ($mol_mem(($.$mol_button_copy.prototype), "html_blob")); - ($mol_mem(($.$mol_button_copy.prototype), "Icon")); - - -; -"use strict"; -var $; -(function ($) { - const mapping = { - '<': '<', - '>': '>', - '"': '"', - '&': '&', - }; - function $mol_html_encode(text) { - return text.replace(/[&<">]/gi, str => mapping[str]); - } - $.$mol_html_encode = $mol_html_encode; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_button_copy extends $.$mol_button_copy { - data() { - return Object.fromEntries(this.blobs().map(blob => [blob.type, blob])); - } - html() { - return $mol_html_encode(this.text()); - } - attachments() { - return [new ClipboardItem(this.data())]; - } - click(event) { - const cb = $mol_wire_sync(this.$.$mol_dom_context.navigator.clipboard); - cb.writeText?.(this.text()); - cb.write?.(this.attachments()); - if (cb.writeText === undefined && cb.write === undefined) { - throw new Error("doesn't support copy to clipoard"); - } - } - } - __decorate([ - $mol_mem - ], $mol_button_copy.prototype, "html", null); - __decorate([ - $mol_mem - ], $mol_button_copy.prototype, "attachments", null); - $$.$mol_button_copy = $mol_button_copy; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_text_code) = class $mol_text_code extends ($.$mol_stack) { - sidebar_showed(){ - return false; - } - render_visible_only(){ - return false; - } - row_numb(id){ - return 0; - } - row_text(id){ - return ""; - } - syntax(){ - return null; - } - uri_resolve(id){ - return ""; - } - highlight(){ - return ""; - } - Row(id){ - const obj = new this.$.$mol_text_code_line(); - (obj.numb_showed) = () => ((this.sidebar_showed())); - (obj.numb) = () => ((this.row_numb(id))); - (obj.text) = () => ((this.row_text(id))); - (obj.syntax) = () => ((this.syntax())); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.highlight) = () => ((this.highlight())); - return obj; - } - rows(){ - return [(this.Row("0"))]; - } - Rows(){ - const obj = new this.$.$mol_list(); - (obj.render_visible_only) = () => ((this.render_visible_only())); - (obj.rows) = () => ((this.rows())); - return obj; - } - text_export(){ - return ""; - } - Copy(){ - const obj = new this.$.$mol_button_copy(); - (obj.hint) = () => ((this.$.$mol_locale.text("$mol_text_code_Copy_hint"))); - (obj.text) = () => ((this.text_export())); - return obj; - } - attr(){ - return {...(super.attr()), "mol_text_code_sidebar_showed": (this.sidebar_showed())}; - } - text(){ - return ""; - } - text_lines(){ - return []; - } - find_pos(id){ - return null; - } - uri_base(){ - return ""; - } - sub(){ - return [(this.Rows()), (this.Copy())]; - } - }; - ($mol_mem_key(($.$mol_text_code.prototype), "Row")); - ($mol_mem(($.$mol_text_code.prototype), "Rows")); - ($mol_mem(($.$mol_text_code.prototype), "Copy")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_text_code extends $.$mol_text_code { - render_visible_only() { - return this.$.$mol_support_css_overflow_anchor(); - } - text_lines() { - return (this.text() ?? '').split('\n'); - } - rows() { - return this.text_lines().map((_, index) => this.Row(index + 1)); - } - row_text(index) { - return this.text_lines()[index - 1]; - } - row_numb(index) { - return index; - } - find_pos(offset) { - for (const [index, line] of this.text_lines().entries()) { - if (line.length >= offset) { - return this.Row(index + 1).find_pos(offset); - } - else { - offset -= line.length + 1; - } - } - return null; - } - sub() { - return [ - this.Rows(), - ...this.sidebar_showed() ? [this.Copy()] : [] - ]; - } - syntax() { - return this.$.$mol_syntax2_md_code; - } - uri_base() { - return $mol_dom_context.document.location.href; - } - uri_resolve(uri) { - if (/^(\w+script+:)+/.test(uri)) - return null; - try { - const url = new URL(uri, this.uri_base()); - return url.toString(); - } - catch (error) { - $mol_fail_log(error); - return null; - } - } - text_export() { - return this.text() + '\n'; - } - } - __decorate([ - $mol_mem - ], $mol_text_code.prototype, "text_lines", null); - __decorate([ - $mol_mem - ], $mol_text_code.prototype, "rows", null); - __decorate([ - $mol_mem_key - ], $mol_text_code.prototype, "row_text", null); - __decorate([ - $mol_mem_key - ], $mol_text_code.prototype, "find_pos", null); - __decorate([ - $mol_mem - ], $mol_text_code.prototype, "sub", null); - __decorate([ - $mol_mem_key - ], $mol_text_code.prototype, "uri_resolve", null); - $$.$mol_text_code = $mol_text_code; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { rem, px } = $mol_style_unit; - $mol_style_define($mol_text_code, { - whiteSpace: 'pre-wrap', - font: { - family: 'monospace', - }, - Rows: { - padding: $mol_gap.text, - }, - Row: { - font: { - family: 'inherit', - }, - }, - Copy: { - alignSelf: 'flex-start', - justifySelf: 'flex-start', - }, - '@': { - 'mol_text_code_sidebar_showed': { - true: { - $mol_text_code_line: { - margin: { - left: rem(1.75), - }, - }, - }, - }, - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_hotkey) = class $mol_hotkey extends ($.$mol_plugin) { - keydown(next){ - if(next !== undefined) return next; - return null; - } - event(){ - return {...(super.event()), "keydown": (next) => (this.keydown(next))}; - } - key(){ - return {}; - } - mod_ctrl(){ - return false; - } - mod_alt(){ - return false; - } - mod_shift(){ - return false; - } - }; - ($mol_mem(($.$mol_hotkey.prototype), "keydown")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_hotkey extends $.$mol_hotkey { - key() { - return super.key(); - } - keydown(event) { - if (!event) - return; - if (event.defaultPrevented) - return; - let name = $mol_keyboard_code[event.keyCode]; - if (this.mod_ctrl() !== (event.ctrlKey || event.metaKey)) - return; - if (this.mod_alt() !== event.altKey) - return; - if (this.mod_shift() !== event.shiftKey) - return; - const handle = this.key()[name]; - if (handle) - handle(event); - } - } - $$.$mol_hotkey = $mol_hotkey; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_string) = class $mol_string extends ($.$mol_view) { - selection_watcher(){ - return null; - } - error_report(){ - return null; - } - disabled(){ - return false; - } - value(next){ - if(next !== undefined) return next; - return ""; - } - value_changed(next){ - return (this.value(next)); - } - hint(){ - return ""; - } - hint_visible(){ - return (this.hint()); - } - spellcheck(){ - return true; - } - autocomplete_native(){ - return ""; - } - selection_end(){ - return 0; - } - selection_start(){ - return 0; - } - keyboard(){ - return "text"; - } - enter(){ - return "go"; - } - length_max(){ - return +Infinity; - } - type(next){ - if(next !== undefined) return next; - return "text"; - } - event_change(next){ - if(next !== undefined) return next; - return null; - } - submit_with_ctrl(){ - return false; - } - submit(next){ - if(next !== undefined) return next; - return null; - } - Submit(){ - const obj = new this.$.$mol_hotkey(); - (obj.mod_ctrl) = () => ((this.submit_with_ctrl())); - (obj.key) = () => ({"enter": (next) => (this.submit(next))}); - return obj; - } - dom_name(){ - return "input"; - } - enabled(){ - return true; - } - minimal_height(){ - return 40; - } - autocomplete(){ - return false; - } - selection(next){ - if(next !== undefined) return next; - return [0, 0]; - } - auto(){ - return [(this.selection_watcher()), (this.error_report())]; - } - field(){ - return { - ...(super.field()), - "disabled": (this.disabled()), - "value": (this.value_changed()), - "placeholder": (this.hint_visible()), - "spellcheck": (this.spellcheck()), - "autocomplete": (this.autocomplete_native()), - "selectionEnd": (this.selection_end()), - "selectionStart": (this.selection_start()), - "inputMode": (this.keyboard()), - "enterkeyhint": (this.enter()) - }; - } - attr(){ - return { - ...(super.attr()), - "maxlength": (this.length_max()), - "type": (this.type()) - }; - } - event(){ - return {...(super.event()), "input": (next) => (this.event_change(next))}; - } - plugins(){ - return [(this.Submit())]; - } - }; - ($mol_mem(($.$mol_string.prototype), "value")); - ($mol_mem(($.$mol_string.prototype), "type")); - ($mol_mem(($.$mol_string.prototype), "event_change")); - ($mol_mem(($.$mol_string.prototype), "submit")); - ($mol_mem(($.$mol_string.prototype), "Submit")); - ($mol_mem(($.$mol_string.prototype), "selection")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_string extends $.$mol_string { - event_change(next) { - if (!next) - return; - const el = next.target; - const from = el.selectionStart; - const to = el.selectionEnd; - try { - el.value = this.value_changed(el.value); - } - catch (error) { - const el = this.dom_node(); - if (error instanceof Error) { - el.setCustomValidity(error.message); - el.reportValidity(); - } - $mol_fail_hidden(error); - } - if (to === null) - return; - el.selectionEnd = to; - el.selectionStart = from; - this.selection_change(next); - } - error_report() { - try { - if (this.focused()) - this.value(); - } - catch (error) { - const el = this.dom_node(); - if (error instanceof Error) { - el.setCustomValidity(error.message); - el.reportValidity(); - } - } - } - hint_visible() { - return (this.enabled() ? this.hint() : '') || ' '; - } - disabled() { - return !this.enabled(); - } - autocomplete_native() { - return this.autocomplete() ? 'on' : 'off'; - } - selection_watcher() { - return new $mol_dom_listener(this.$.$mol_dom_context.document, 'selectionchange', $mol_wire_async(event => this.selection_change(event))); - } - selection_change(event) { - const el = this.dom_node(); - if (el !== this.$.$mol_dom_context.document.activeElement) - return; - const [from, to] = this.selection([ - el.selectionStart, - el.selectionEnd, - ]); - el.selectionEnd = to; - el.selectionStart = from; - if (to !== from && el.selectionEnd === el.selectionStart) { - el.selectionEnd = to; - } - } - selection_start() { - const el = this.dom_node(); - if (el.selectionStart === null) - return undefined; - return this.selection()[0]; - } - selection_end() { - const el = this.dom_node(); - if (el.selectionEnd === null) - return undefined; - return this.selection()[1]; - } - } - __decorate([ - $mol_action - ], $mol_string.prototype, "event_change", null); - __decorate([ - $mol_mem - ], $mol_string.prototype, "error_report", null); - __decorate([ - $mol_mem - ], $mol_string.prototype, "selection_watcher", null); - $$.$mol_string = $mol_string; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/string/string.view.css", "[mol_string] {\n\tbox-sizing: border-box;\n\toutline-offset: 0;\n\tborder: none;\n\tborder-radius: var(--mol_gap_round);\n\twhite-space: pre-line;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tpadding: var(--mol_gap_text);\n\ttext-align: left;\n\tposition: relative;\n\tfont: inherit;\n\tflex: 1 1 auto;\n\tbackground: transparent;\n\tmin-width: 0;\n\tcolor: inherit;\n\tbackground: var(--mol_theme_field);\n}\n\n[mol_string]:disabled:not(:placeholder-shown) {\n\tbackground-color: transparent;\n\tcolor: var(--mol_theme_text);\n}\n\n[mol_string]:where(:not(:disabled)) {\n\tbox-shadow: inset 0 0 0 1px var(--mol_theme_line);\n}\n\n[mol_string]:where(:not(:disabled)):hover {\n\tbox-shadow: inset 0 0 0 2px var(--mol_theme_line);\n\tz-index: var(--mol_layer_hover);\n}\n\n[mol_string]:focus {\n\toutline: none;\n\tz-index: var(--mol_layer_focus);\n\tcolor: var(--mol_theme_text);\n\tbox-shadow: inset 0 0 0 1px var(--mol_theme_focus);\n}\n\n[mol_string]::placeholder {\n\tcolor: var(--mol_theme_shade);\n}\n\n[mol_string]::-ms-clear {\n\tdisplay: none;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_textarea) = class $mol_textarea extends ($.$mol_stack) { - clickable(next){ - if(next !== undefined) return next; - return false; - } - sidebar_showed(){ - return false; - } - press(next){ - if(next !== undefined) return next; - return null; - } - hover(next){ - if(next !== undefined) return next; - return null; - } - value(next){ - if(next !== undefined) return next; - return ""; - } - hint(){ - return " "; - } - enabled(){ - return true; - } - spellcheck(){ - return true; - } - length_max(){ - return +Infinity; - } - selection(next){ - if(next !== undefined) return next; - return []; - } - bring(){ - return (this.Edit().bring()); - } - submit(next){ - if(next !== undefined) return next; - return null; - } - submit_with_ctrl(){ - return true; - } - Edit(){ - const obj = new this.$.$mol_textarea_edit(); - (obj.value) = (next) => ((this.value(next))); - (obj.hint) = () => ((this.hint())); - (obj.enabled) = () => ((this.enabled())); - (obj.spellcheck) = () => ((this.spellcheck())); - (obj.length_max) = () => ((this.length_max())); - (obj.selection) = (next) => ((this.selection(next))); - (obj.submit) = (next) => ((this.submit(next))); - (obj.submit_with_ctrl) = () => ((this.submit_with_ctrl())); - return obj; - } - row_numb(id){ - return 0; - } - highlight(){ - return ""; - } - syntax(){ - const obj = new this.$.$mol_syntax2(); - return obj; - } - View(){ - const obj = new this.$.$mol_text_code(); - (obj.text) = () => ((this.value())); - (obj.render_visible_only) = () => (false); - (obj.row_numb) = (id) => ((this.row_numb(id))); - (obj.sidebar_showed) = () => ((this.sidebar_showed())); - (obj.highlight) = () => ((this.highlight())); - (obj.syntax) = () => ((this.syntax())); - return obj; - } - attr(){ - return { - ...(super.attr()), - "mol_textarea_clickable": (this.clickable()), - "mol_textarea_sidebar_showed": (this.sidebar_showed()) - }; - } - event(){ - return {"keydown": (next) => (this.press(next)), "pointermove": (next) => (this.hover(next))}; - } - sub(){ - return [(this.Edit()), (this.View())]; - } - symbols_alt(){ - return { - "comma": "<", - "period": ">", - "dash": "−", - "equals": "≈", - "graveAccent": "́", - "forwardSlash": "÷", - "E": "€", - "V": "✔", - "X": "×", - "C": "©", - "P": "§", - "H": "₽", - "key0": "°", - "key8": "•", - "key2": "@", - "key3": "#", - "key4": "$", - "key6": "^", - "key7": "&", - "bracketOpen": "[", - "bracketClose": "]", - "slashBack": "|" - }; - } - symbols_alt_ctrl(){ - return {"space": " "}; - } - symbols_alt_shift(){ - return { - "V": "✅", - "X": "❌", - "O": "⭕", - "key1": "❗", - "key4": "💲", - "key7": "❓", - "comma": "«", - "period": "»", - "semicolon": "“", - "quoteSingle": "”", - "dash": "—", - "equals": "≠", - "graveAccent": "̱", - "bracketOpen": "{", - "bracketClose": "}" - }; - } - }; - ($mol_mem(($.$mol_textarea.prototype), "clickable")); - ($mol_mem(($.$mol_textarea.prototype), "press")); - ($mol_mem(($.$mol_textarea.prototype), "hover")); - ($mol_mem(($.$mol_textarea.prototype), "value")); - ($mol_mem(($.$mol_textarea.prototype), "selection")); - ($mol_mem(($.$mol_textarea.prototype), "submit")); - ($mol_mem(($.$mol_textarea.prototype), "Edit")); - ($mol_mem(($.$mol_textarea.prototype), "syntax")); - ($mol_mem(($.$mol_textarea.prototype), "View")); - ($.$mol_textarea_edit) = class $mol_textarea_edit extends ($.$mol_string) { - dom_name(){ - return "textarea"; - } - enter(){ - return "enter"; - } - field(){ - return {...(super.field()), "scrollTop": 0}; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_textarea extends $.$mol_textarea { - indent_inc() { - let text = this.value(); - let [from, to] = this.selection(); - const rows = text.split('\n'); - let start = 0; - for (let i = 0; i < rows.length; ++i) { - let end = start + rows[i].length; - if (end >= from && start <= to) { - if (to === from || start !== to) { - rows[i] = '\t' + rows[i]; - to += 1; - end += 1; - } - } - start = end + 1; - } - this.value(rows.join('\n')); - this.selection([from + 1, to]); - } - indent_dec() { - let text = this.value(); - let [from, to] = this.selection(); - const rows = text.split('\n'); - let start = 0; - for (let i = 0; i < rows.length; ++i) { - const end = start + rows[i].length; - if (end >= from && start <= to && rows[i].startsWith('\t')) { - rows[i] = rows[i].slice(1); - to -= 1; - if (start < from) - from -= 1; - } - start = end + 1; - } - this.value(rows.join('\n')); - this.selection([from, to]); - } - symbol_insert(event) { - const symbol = event.shiftKey - ? this.symbols_alt_shift()[$mol_keyboard_code[event.keyCode]] - : event.ctrlKey - ? this.symbols_alt_ctrl()[$mol_keyboard_code[event.keyCode]] - : this.symbols_alt()[$mol_keyboard_code[event.keyCode]]; - if (!symbol) - return; - event.preventDefault(); - document.execCommand('insertText', false, symbol); - } - clickable(next) { - if (!this.enabled()) - return true; - return next ?? false; - } - hover(event) { - this.clickable(event.ctrlKey); - } - press(event) { - if (event.altKey) { - this.symbol_insert(event); - } - else { - switch (event.keyCode) { - case !event.shiftKey && $mol_keyboard_code.tab: - this.indent_inc(); - break; - case event.shiftKey && $mol_keyboard_code.tab: - this.indent_dec(); - break; - default: return; - } - event.preventDefault(); - } - } - row_numb(index) { - return index; - } - syntax() { - return this.$.$mol_syntax2_md_code; - } - } - __decorate([ - $mol_mem - ], $mol_textarea.prototype, "clickable", null); - $$.$mol_textarea = $mol_textarea; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/textarea/textarea.view.css", "[mol_textarea] {\n\tflex: 1 0 auto;\n\tflex-direction: column;\n\tvertical-align: top;\n\tmin-height: max-content;\n\twhite-space: pre-wrap;\n\tword-break: break-word;\n\tborder-radius: var(--mol_gap_round);\n\tfont-family: monospace;\n\tposition: relative;\n\ttab-size: 4;\n}\n\n[mol_textarea_view] {\n\tpointer-events: none;\n\twhite-space: inherit;\n\tfont-family: inherit;\n\ttab-size: inherit;\n\tuser-select: none;\n}\n\n[mol_textarea_view_copy] {\n\tpointer-events: all;\n}\n\n[mol_textarea_clickable] > [mol_textarea_view] {\n\tpointer-events: all;\n\tuser-select: auto;\n}\n\n[mol_textarea_clickable] > [mol_textarea_edit] {\n\tuser-select: none;\n}\n\n[mol_textarea_edit] {\n\tfont-family: inherit;\n\tpadding: var(--mol_gap_text);\n\tcolor: transparent !important;\n\tcaret-color: var(--mol_theme_text);\n\tresize: none;\n\ttext-align: inherit;\n\twhite-space: inherit;\n\tborder-radius: inherit;\n\toverflow-anchor: none;\n\tposition: absolute;\n\theight: 100%;\n\twidth: 100%;\n\ttab-size: inherit;\n}\n\n[mol_textarea_sidebar_showed] [mol_textarea_edit] {\n\tleft: 1.75rem;\n\twidth: calc( 100% - 1.75rem );\n}\n\n[mol_textarea_edit]:hover + [mol_textarea_view] {\n\tz-index: var(--mol_layer_hover);\n}\n\n[mol_textarea_edit]:focus + [mol_textarea_view] {\n\tz-index: var(--mol_layer_focus);\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_page) = class $mol_page extends ($.$mol_view) { - tabindex(){ - return -1; - } - Logo(){ - return null; - } - title_content(){ - return [(this.Logo()), (this.title())]; - } - Title(){ - const obj = new this.$.$mol_view(); - (obj.dom_name) = () => ("h1"); - (obj.sub) = () => ((this.title_content())); - return obj; - } - tools(){ - return []; - } - Tools(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.tools())); - return obj; - } - head(){ - return [(this.Title()), (this.Tools())]; - } - Head(){ - const obj = new this.$.$mol_view(); - (obj.minimal_height) = () => (64); - (obj.dom_name) = () => ("header"); - (obj.sub) = () => ((this.head())); - return obj; - } - body_scroll_top(next){ - return (this.Body().scroll_top(next)); - } - body(){ - return []; - } - Body_content(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.body())); - return obj; - } - body_content(){ - return [(this.Body_content())]; - } - Body(){ - const obj = new this.$.$mol_scroll(); - (obj.sub) = () => ((this.body_content())); - return obj; - } - foot(){ - return []; - } - Foot(){ - const obj = new this.$.$mol_view(); - (obj.dom_name) = () => ("footer"); - (obj.sub) = () => ((this.foot())); - return obj; - } - dom_name(){ - return "article"; - } - attr(){ - return {...(super.attr()), "tabIndex": (this.tabindex())}; - } - sub(){ - return [ - (this.Head()), - (this.Body()), - (this.Foot()) - ]; - } - }; - ($mol_mem(($.$mol_page.prototype), "Title")); - ($mol_mem(($.$mol_page.prototype), "Tools")); - ($mol_mem(($.$mol_page.prototype), "Head")); - ($mol_mem(($.$mol_page.prototype), "Body_content")); - ($mol_mem(($.$mol_page.prototype), "Body")); - ($mol_mem(($.$mol_page.prototype), "Foot")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { per, rem } = $mol_style_unit; - const { hsla, blur } = $mol_style_func; - $mol_style_define($mol_page, { - display: 'flex', - flex: { - basis: 'auto', - direction: 'column', - }, - position: 'relative', - alignSelf: 'stretch', - maxWidth: per(100), - maxHeight: per(100), - boxSizing: 'border-box', - color: $mol_theme.text, - ':focus': { - outline: 'none', - }, - Head: { - display: 'flex', - flexWrap: 'wrap', - justifyContent: 'flex-end', - flex: 'none', - position: 'relative', - margin: 0, - minHeight: rem(4), - padding: $mol_gap.block, - background: { - color: $mol_theme.card, - }, - border: { - radius: $mol_gap.round, - }, - box: { - shadow: [[0, `0.5rem`, `0.5rem`, `-0.5rem`, hsla(0, 0, 0, .25)]], - }, - zIndex: 2, - '@media': { - 'print': { - box: { - shadow: [[0, `1px`, 0, 0, hsla(0, 0, 0, .25)]], - }, - }, - }, - }, - Title: { - minHeight: rem(2), - margin: 0, - padding: $mol_gap.text, - gap: $mol_gap.text, - wordBreak: 'normal', - textShadow: '0 0', - font: { - size: 'inherit', - weight: 'normal', - }, - flex: { - grow: 1, - shrink: 1, - basis: 'auto', - }, - }, - Tools: { - flex: { - basis: 'auto', - grow: 0, - shrink: 1, - }, - display: 'flex', - justifyContent: 'flex-end', - alignItems: 'flex-start', - flexWrap: 'wrap', - '@media': { - 'print': { - display: 'none', - }, - }, - }, - Body: { - flex: { - grow: 1000, - shrink: 1, - basis: per(100), - }, - }, - Body_content: { - padding: $mol_gap.block, - flex: { - direction: 'column', - shrink: 1, - grow: 1, - }, - justify: { - self: 'stretch', - }, - }, - Foot: { - display: 'flex', - justifyContent: 'space-between', - flex: 'none', - margin: 0, - background: { - color: $mol_theme.card, - }, - border: { - radius: $mol_gap.round, - }, - box: { - shadow: [[0, `-0.5rem`, `0.5rem`, `-0.5rem`, hsla(0, 0, 0, .25)]], - }, - zIndex: 1, - padding: $mol_gap.block, - ':empty': { - display: 'none', - }, - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - -var $node = $node || {} -void function( module ) { var exports = module.exports = this; function require( id ) { return $node[ id.replace( /^.\// , "../optimade/cifplayer/lib/three/" ) ] }; -; -"use strict"; -/** - * @license - * Copyright 2010-2023 Three.js Authors - * SPDX-License-Identifier: MIT - */const t="158",e=0,n=1,i=2,r=1,a=2,s=3,o=0,l=1,c=100,h=0,u=1,d=2,p=0,f=1,m=2,g=3,_=4,v=5,x=301,M=302,y=306,S=1e3,E=1001,T=1002,b=1003,w=1005,A=1006,R=1008,C=1009,L=1012,P=1013,U=1014,D=1015,I=1016,N=1020,O=1023,F=1026,z=1027,B=33776,H=33777,G=33778,V=33779,k=36492,W=3001,X="",j="srgb",Y="srgb-linear",q="display-p3",Z="display-p3-linear",K="linear",J="srgb",Q="rec709",tt="p3",et=7680,nt=35044,it="300 es",rt=1035,at=2e3,st=2001;class ot{addEventListener(t,e){void 0===this._listeners&&(this._listeners={});const n=this._listeners;void 0===n[t]&&(n[t]=[]),-1===n[t].indexOf(e)&&n[t].push(e)}hasEventListener(t,e){if(void 0===this._listeners)return!1;const n=this._listeners;return void 0!==n[t]&&-1!==n[t].indexOf(e)}removeEventListener(t,e){if(void 0===this._listeners)return;const n=this._listeners[t];if(void 0!==n){const t=n.indexOf(e);-1!==t&&n.splice(t,1)}}dispatchEvent(t){if(void 0===this._listeners)return;const e=this._listeners[t.type];if(void 0!==e){t.target=this;const n=e.slice(0);for(let e=0,i=n.length;e>8&255]+lt[t>>16&255]+lt[t>>24&255]+"-"+lt[255&e]+lt[e>>8&255]+"-"+lt[e>>16&15|64]+lt[e>>24&255]+"-"+lt[63&n|128]+lt[n>>8&255]+"-"+lt[n>>16&255]+lt[n>>24&255]+lt[255&i]+lt[i>>8&255]+lt[i>>16&255]+lt[i>>24&255]).toLowerCase()}function pt(t,e,n){return Math.max(e,Math.min(n,t))}function ft(t,e){return(t%e+e)%e}function mt(t,e,n){return(1-n)*t+n*e}function gt(t){return 0==(t&t-1)&&0!==t}function _t(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function vt(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return t/4294967295;case Uint16Array:return t/65535;case Uint8Array:return t/255;case Int32Array:return Math.max(t/2147483647,-1);case Int16Array:return Math.max(t/32767,-1);case Int8Array:return Math.max(t/127,-1);default:throw new Error("Invalid component type.")}}function xt(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return Math.round(4294967295*t);case Uint16Array:return Math.round(65535*t);case Uint8Array:return Math.round(255*t);case Int32Array:return Math.round(2147483647*t);case Int16Array:return Math.round(32767*t);case Int8Array:return Math.round(127*t);default:throw new Error("Invalid component type.")}}const Mt={DEG2RAD:ht,RAD2DEG:ut,generateUUID:dt,clamp:pt,euclideanModulo:ft,mapLinear:function(t,e,n,i,r){return i+(t-e)*(r-i)/(n-e)},inverseLerp:function(t,e,n){return t!==e?(n-t)/(e-t):0},lerp:mt,damp:function(t,e,n,i){return mt(t,e,1-Math.exp(-n*i))},pingpong:function(t,e=1){return e-Math.abs(ft(t,2*e)-e)},smoothstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*(3-2*t)},smootherstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*t*(t*(6*t-15)+10)},randInt:function(t,e){return t+Math.floor(Math.random()*(e-t+1))},randFloat:function(t,e){return t+Math.random()*(e-t)},randFloatSpread:function(t){return t*(.5-Math.random())},seededRandom:function(t){void 0!==t&&(ct=t);let e=ct+=1831565813;return e=Math.imul(e^e>>>15,1|e),e^=e+Math.imul(e^e>>>7,61|e),((e^e>>>14)>>>0)/4294967296},degToRad:function(t){return t*ht},radToDeg:function(t){return t*ut},isPowerOfTwo:gt,ceilPowerOfTwo:function(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},floorPowerOfTwo:_t,setQuaternionFromProperEuler:function(t,e,n,i,r){const a=Math.cos,s=Math.sin,o=a(n/2),l=s(n/2),c=a((e+i)/2),h=s((e+i)/2),u=a((e-i)/2),d=s((e-i)/2),p=a((i-e)/2),f=s((i-e)/2);switch(r){case"XYX":t.set(o*h,l*u,l*d,o*c);break;case"YZY":t.set(l*d,o*h,l*u,o*c);break;case"ZXZ":t.set(l*u,l*d,o*h,o*c);break;case"XZX":t.set(o*h,l*f,l*p,o*c);break;case"YXY":t.set(l*p,o*h,l*f,o*c);break;case"ZYZ":t.set(l*f,l*p,o*h,o*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}},normalize:xt,denormalize:vt};class yt{constructor(t=0,e=0){yt.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(pt(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const n=Math.cos(e),i=Math.sin(e),r=this.x-t.x,a=this.y-t.y;return this.x=r*n-a*i+t.x,this.y=r*i+a*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class St{constructor(t,e,n,i,r,a,s,o,l){St.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==t&&this.set(t,e,n,i,r,a,s,o,l)}set(t,e,n,i,r,a,s,o,l){const c=this.elements;return c[0]=t,c[1]=i,c[2]=s,c[3]=e,c[4]=r,c[5]=o,c[6]=n,c[7]=a,c[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,i=e.elements,r=this.elements,a=n[0],s=n[3],o=n[6],l=n[1],c=n[4],h=n[7],u=n[2],d=n[5],p=n[8],f=i[0],m=i[3],g=i[6],_=i[1],v=i[4],x=i[7],M=i[2],y=i[5],S=i[8];return r[0]=a*f+s*_+o*M,r[3]=a*m+s*v+o*y,r[6]=a*g+s*x+o*S,r[1]=l*f+c*_+h*M,r[4]=l*m+c*v+h*y,r[7]=l*g+c*x+h*S,r[2]=u*f+d*_+p*M,r[5]=u*m+d*v+p*y,r[8]=u*g+d*x+p*S,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],s=t[5],o=t[6],l=t[7],c=t[8];return e*a*c-e*s*l-n*r*c+n*s*o+i*r*l-i*a*o}invert(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],h=c*a-s*l,u=s*o-c*r,d=l*r-a*o,p=e*h+n*u+i*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);const f=1/p;return t[0]=h*f,t[1]=(i*l-c*n)*f,t[2]=(s*n-i*a)*f,t[3]=u*f,t[4]=(c*e-i*o)*f,t[5]=(i*r-s*e)*f,t[6]=d*f,t[7]=(n*o-l*e)*f,t[8]=(a*e-n*r)*f,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,i,r,a,s){const o=Math.cos(r),l=Math.sin(r);return this.set(n*o,n*l,-n*(o*a+l*s)+a+t,-i*l,i*o,-i*(-l*a+o*s)+s+e,0,0,1),this}scale(t,e){return this.premultiply(Et.makeScale(t,e)),this}rotate(t){return this.premultiply(Et.makeRotation(-t)),this}translate(t,e){return this.premultiply(Et.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,n=t.elements;for(let t=0;t<9;t++)if(e[t]!==n[t])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return(new this.constructor).fromArray(this.elements)}}const Et=new St;function Tt(t){for(let e=t.length-1;e>=0;--e)if(t[e]>=65535)return!0;return!1}function bt(t){return document.createElementNS("http://www.w3.org/1999/xhtml",t)}function wt(){const t=bt("canvas");return t.style.display="block",t}const At={};function Rt(t){t in At||(At[t]=!0,console.warn(t))}const Ct=(new St).set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Lt=(new St).set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),Pt={[Y]:{transfer:K,primaries:Q,toReference:t=>t,fromReference:t=>t},[j]:{transfer:J,primaries:Q,toReference:t=>t.convertSRGBToLinear(),fromReference:t=>t.convertLinearToSRGB()},[Z]:{transfer:K,primaries:tt,toReference:t=>t.applyMatrix3(Lt),fromReference:t=>t.applyMatrix3(Ct)},[q]:{transfer:J,primaries:tt,toReference:t=>t.convertSRGBToLinear().applyMatrix3(Lt),fromReference:t=>t.applyMatrix3(Ct).convertLinearToSRGB()}},Ut=new Set([Y,Z]),Dt={enabled:!0,_workingColorSpace:Y,get legacyMode(){return console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),!this.enabled},set legacyMode(t){console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),this.enabled=!t},get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(t){if(!Ut.has(t))throw new Error(`Unsupported working color space, "${t}".`);this._workingColorSpace=t},convert:function(t,e,n){if(!1===this.enabled||e===n||!e||!n)return t;const i=Pt[e].toReference;return(0,Pt[n].fromReference)(i(t))},fromWorkingColorSpace:function(t,e){return this.convert(t,this._workingColorSpace,e)},toWorkingColorSpace:function(t,e){return this.convert(t,e,this._workingColorSpace)},getPrimaries:function(t){return Pt[t].primaries},getTransfer:function(t){return t===X?K:Pt[t].transfer}};function It(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function Nt(t){return t<.0031308?12.92*t:1.055*Math.pow(t,.41666)-.055}let Ot;class Ft{static getDataURL(t){if(/^data:/i.test(t.src))return t.src;if("undefined"==typeof HTMLCanvasElement)return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{void 0===Ot&&(Ot=bt("canvas")),Ot.width=t.width,Ot.height=t.height;const n=Ot.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),e=Ot}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(t){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){const e=bt("canvas");e.width=t.width,e.height=t.height;const n=e.getContext("2d");n.drawImage(t,0,0,t.width,t.height);const i=n.getImageData(0,0,t.width,t.height),r=i.data;for(let t=0;t0&&(n.userData=this.userData),e||(t.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(300!==this.mapping)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case S:t.x=t.x-Math.floor(t.x);break;case E:t.x=t.x<0?0:1;break;case T:1===Math.abs(Math.floor(t.x)%2)?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x)}if(t.y<0||t.y>1)switch(this.wrapT){case S:t.y=t.y-Math.floor(t.y);break;case E:t.y=t.y<0?0:1;break;case T:1===Math.abs(Math.floor(t.y)%2)?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y)}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){!0===t&&(this.version++,this.source.needsUpdate=!0)}get encoding(){return Rt("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace===j?W:3e3}set encoding(t){Rt("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace=t===W?j:X}}Vt.DEFAULT_IMAGE=null,Vt.DEFAULT_MAPPING=300,Vt.DEFAULT_ANISOTROPY=1;class kt{constructor(t=0,e=0,n=0,i=1){kt.prototype.isVector4=!0,this.x=t,this.y=e,this.z=n,this.w=i}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=void 0!==t.w?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,n=this.y,i=this.z,r=this.w,a=t.elements;return this.x=a[0]*e+a[4]*n+a[8]*i+a[12]*r,this.y=a[1]*e+a[5]*n+a[9]*i+a[13]*r,this.z=a[2]*e+a[6]*n+a[10]*i+a[14]*r,this.w=a[3]*e+a[7]*n+a[11]*i+a[15]*r,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,i,r;const a=.01,s=.1,o=t.elements,l=o[0],c=o[4],h=o[8],u=o[1],d=o[5],p=o[9],f=o[2],m=o[6],g=o[10];if(Math.abs(c-u)o&&t>_?t_?o=0?1:-1,i=1-e*e;if(i>Number.EPSILON){const r=Math.sqrt(i),a=Math.atan2(r,e*n);t=Math.sin(t*a)/r,s=Math.sin(s*a)/r}const r=s*n;if(o=o*t+u*r,l=l*t+d*r,c=c*t+p*r,h=h*t+f*r,t===1-s){const t=1/Math.sqrt(o*o+l*l+c*c+h*h);o*=t,l*=t,c*=t,h*=t}}t[e]=o,t[e+1]=l,t[e+2]=c,t[e+3]=h}static multiplyQuaternionsFlat(t,e,n,i,r,a){const s=n[i],o=n[i+1],l=n[i+2],c=n[i+3],h=r[a],u=r[a+1],d=r[a+2],p=r[a+3];return t[e]=s*p+c*h+o*d-l*u,t[e+1]=o*p+c*u+l*h-s*d,t[e+2]=l*p+c*d+s*u-o*h,t[e+3]=c*p-s*h-o*u-l*d,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e){const n=t._x,i=t._y,r=t._z,a=t._order,s=Math.cos,o=Math.sin,l=s(n/2),c=s(i/2),h=s(r/2),u=o(n/2),d=o(i/2),p=o(r/2);switch(a){case"XYZ":this._x=u*c*h+l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h-u*d*p;break;case"YXZ":this._x=u*c*h+l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h+u*d*p;break;case"ZXY":this._x=u*c*h-l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h-u*d*p;break;case"ZYX":this._x=u*c*h-l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h+u*d*p;break;case"YZX":this._x=u*c*h+l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h-u*d*p;break;case"XZY":this._x=u*c*h-l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h+u*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return!1!==e&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,n=e[0],i=e[4],r=e[8],a=e[1],s=e[5],o=e[9],l=e[2],c=e[6],h=e[10],u=n+s+h;if(u>0){const t=.5/Math.sqrt(u+1);this._w=.25/t,this._x=(c-o)*t,this._y=(r-l)*t,this._z=(a-i)*t}else if(n>s&&n>h){const t=2*Math.sqrt(1+n-s-h);this._w=(c-o)/t,this._x=.25*t,this._y=(i+a)/t,this._z=(r+l)/t}else if(s>h){const t=2*Math.sqrt(1+s-n-h);this._w=(r-l)/t,this._x=(i+a)/t,this._y=.25*t,this._z=(o+c)/t}else{const t=2*Math.sqrt(1+h-n-s);this._w=(a-i)/t,this._x=(r+l)/t,this._y=(o+c)/t,this._z=.25*t}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return nMath.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(pt(this.dot(t),-1,1)))}rotateTowards(t,e){const n=this.angleTo(t);if(0===n)return this;const i=Math.min(1,e/n);return this.slerp(t,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return 0===t?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const n=t._x,i=t._y,r=t._z,a=t._w,s=e._x,o=e._y,l=e._z,c=e._w;return this._x=n*c+a*s+i*l-r*o,this._y=i*c+a*o+r*s-n*l,this._z=r*c+a*l+n*o-i*s,this._w=a*c-n*s-i*o-r*l,this._onChangeCallback(),this}slerp(t,e){if(0===e)return this;if(1===e)return this.copy(t);const n=this._x,i=this._y,r=this._z,a=this._w;let s=a*t._w+n*t._x+i*t._y+r*t._z;if(s<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,s=-s):this.copy(t),s>=1)return this._w=a,this._x=n,this._y=i,this._z=r,this;const o=1-s*s;if(o<=Number.EPSILON){const t=1-e;return this._w=t*a+e*this._w,this._x=t*n+e*this._x,this._y=t*i+e*this._y,this._z=t*r+e*this._z,this.normalize(),this._onChangeCallback(),this}const l=Math.sqrt(o),c=Math.atan2(l,s),h=Math.sin((1-e)*c)/l,u=Math.sin(e*c)/l;return this._w=a*h+this._w*u,this._x=n*h+this._x*u,this._y=i*h+this._y*u,this._z=r*h+this._z*u,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){const t=Math.random(),e=Math.sqrt(1-t),n=Math.sqrt(t),i=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(e*Math.cos(i),n*Math.sin(r),n*Math.cos(r),e*Math.sin(i))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class Zt{constructor(t=0,e=0,n=0){Zt.prototype.isVector3=!0,this.x=t,this.y=e,this.z=n}set(t,e,n){return void 0===n&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(Jt.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(Jt.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6]*i,this.y=r[1]*e+r[4]*n+r[7]*i,this.z=r[2]*e+r[5]*n+r[8]*i,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,n=this.y,i=this.z,r=t.elements,a=1/(r[3]*e+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*e+r[4]*n+r[8]*i+r[12])*a,this.y=(r[1]*e+r[5]*n+r[9]*i+r[13])*a,this.z=(r[2]*e+r[6]*n+r[10]*i+r[14])*a,this}applyQuaternion(t){const e=this.x,n=this.y,i=this.z,r=t.x,a=t.y,s=t.z,o=t.w,l=2*(a*i-s*n),c=2*(s*e-r*i),h=2*(r*n-a*e);return this.x=e+o*l+a*h-s*c,this.y=n+o*c+s*l-r*h,this.z=i+o*h+r*c-a*l,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[4]*n+r[8]*i,this.y=r[1]*e+r[5]*n+r[9]*i,this.z=r[2]*e+r[6]*n+r[10]*i,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const n=t.x,i=t.y,r=t.z,a=e.x,s=e.y,o=e.z;return this.x=i*o-r*s,this.y=r*a-n*o,this.z=n*s-i*a,this}projectOnVector(t){const e=t.lengthSq();if(0===e)return this.set(0,0,0);const n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return Kt.copy(this).projectOnVector(t),this.sub(Kt)}reflect(t){return this.sub(Kt.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(pt(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){const i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,4*e)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,3*e)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=2*(Math.random()-.5),e=Math.random()*Math.PI*2,n=Math.sqrt(1-t**2);return this.x=n*Math.cos(e),this.y=n*Math.sin(e),this.z=t,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Kt=new Zt,Jt=new qt;class Qt{constructor(t=new Zt(1/0,1/0,1/0),e=new Zt(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,n=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)}intersectsSphere(t){return this.clampPoint(t.center,te),te.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(le),ce.subVectors(this.max,le),ne.subVectors(t.a,le),ie.subVectors(t.b,le),re.subVectors(t.c,le),ae.subVectors(ie,ne),se.subVectors(re,ie),oe.subVectors(ne,re);let e=[0,-ae.z,ae.y,0,-se.z,se.y,0,-oe.z,oe.y,ae.z,0,-ae.x,se.z,0,-se.x,oe.z,0,-oe.x,-ae.y,ae.x,0,-se.y,se.x,0,-oe.y,oe.x,0];return!!de(e,ne,ie,re,ce)&&(e=[1,0,0,0,1,0,0,0,1],!!de(e,ne,ie,re,ce)&&(he.crossVectors(ae,se),e=[he.x,he.y,he.z],de(e,ne,ie,re,ce)))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,te).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=.5*this.getSize(te).length()),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()||($t[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),$t[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),$t[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),$t[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),$t[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),$t[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),$t[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),$t[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints($t)),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}const $t=[new Zt,new Zt,new Zt,new Zt,new Zt,new Zt,new Zt,new Zt],te=new Zt,ee=new Qt,ne=new Zt,ie=new Zt,re=new Zt,ae=new Zt,se=new Zt,oe=new Zt,le=new Zt,ce=new Zt,he=new Zt,ue=new Zt;function de(t,e,n,i,r){for(let a=0,s=t.length-3;a<=s;a+=3){ue.fromArray(t,a);const s=r.x*Math.abs(ue.x)+r.y*Math.abs(ue.y)+r.z*Math.abs(ue.z),o=e.dot(ue),l=n.dot(ue),c=i.dot(ue);if(Math.max(-Math.max(o,l,c),Math.min(o,l,c))>s)return!1}return!0}const pe=new Qt,fe=new Zt,me=new Zt;class ge{constructor(t=new Zt,e=-1){this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const n=this.center;void 0!==e?n.copy(e):pe.setFromPoints(t).getCenter(n);let i=0;for(let e=0,r=t.length;ethis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;fe.subVectors(t,this.center);const e=fe.lengthSq();if(e>this.radius*this.radius){const t=Math.sqrt(e),n=.5*(t-this.radius);this.center.addScaledVector(fe,n/t),this.radius+=n}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(!0===this.center.equals(t.center)?this.radius=Math.max(this.radius,t.radius):(me.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(fe.copy(t.center).add(me)),this.expandByPoint(fe.copy(t.center).sub(me))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return(new this.constructor).copy(this)}}const _e=new Zt,ve=new Zt,xe=new Zt,Me=new Zt,ye=new Zt,Se=new Zt,Ee=new Zt;class Te{constructor(t=new Zt,e=new Zt(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,_e)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=_e.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(_e.copy(this.origin).addScaledVector(this.direction,e),_e.distanceToSquared(t))}distanceSqToSegment(t,e,n,i){ve.copy(t).add(e).multiplyScalar(.5),xe.copy(e).sub(t).normalize(),Me.copy(this.origin).sub(ve);const r=.5*t.distanceTo(e),a=-this.direction.dot(xe),s=Me.dot(this.direction),o=-Me.dot(xe),l=Me.lengthSq(),c=Math.abs(1-a*a);let h,u,d,p;if(c>0)if(h=a*o-s,u=a*s-o,p=r*c,h>=0)if(u>=-p)if(u<=p){const t=1/c;h*=t,u*=t,d=h*(h+a*u+2*s)+u*(a*h+u+2*o)+l}else u=r,h=Math.max(0,-(a*u+s)),d=-h*h+u*(u+2*o)+l;else u=-r,h=Math.max(0,-(a*u+s)),d=-h*h+u*(u+2*o)+l;else u<=-p?(h=Math.max(0,-(-a*r+s)),u=h>0?-r:Math.min(Math.max(-r,-o),r),d=-h*h+u*(u+2*o)+l):u<=p?(h=0,u=Math.min(Math.max(-r,-o),r),d=u*(u+2*o)+l):(h=Math.max(0,-(a*r+s)),u=h>0?r:Math.min(Math.max(-r,-o),r),d=-h*h+u*(u+2*o)+l);else u=a>0?-r:r,h=Math.max(0,-(a*u+s)),d=-h*h+u*(u+2*o)+l;return n&&n.copy(this.origin).addScaledVector(this.direction,h),i&&i.copy(ve).addScaledVector(xe,u),d}intersectSphere(t,e){_e.subVectors(t.center,this.origin);const n=_e.dot(this.direction),i=_e.dot(_e)-n*n,r=t.radius*t.radius;if(i>r)return null;const a=Math.sqrt(r-i),s=n-a,o=n+a;return o<0?null:s<0?this.at(o,e):this.at(s,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(0===e)return 0===t.distanceToPoint(this.origin)?0:null;const n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){const n=this.distanceToPlane(t);return null===n?null:this.at(n,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);if(0===e)return!0;return t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,i,r,a,s,o;const l=1/this.direction.x,c=1/this.direction.y,h=1/this.direction.z,u=this.origin;return l>=0?(n=(t.min.x-u.x)*l,i=(t.max.x-u.x)*l):(n=(t.max.x-u.x)*l,i=(t.min.x-u.x)*l),c>=0?(r=(t.min.y-u.y)*c,a=(t.max.y-u.y)*c):(r=(t.max.y-u.y)*c,a=(t.min.y-u.y)*c),n>a||r>i?null:((r>n||isNaN(n))&&(n=r),(a=0?(s=(t.min.z-u.z)*h,o=(t.max.z-u.z)*h):(s=(t.max.z-u.z)*h,o=(t.min.z-u.z)*h),n>o||s>i?null:((s>n||n!=n)&&(n=s),(o=0?n:i,e)))}intersectsBox(t){return null!==this.intersectBox(t,_e)}intersectTriangle(t,e,n,i,r){ye.subVectors(e,t),Se.subVectors(n,t),Ee.crossVectors(ye,Se);let a,s=this.direction.dot(Ee);if(s>0){if(i)return null;a=1}else{if(!(s<0))return null;a=-1,s=-s}Me.subVectors(this.origin,t);const o=a*this.direction.dot(Se.crossVectors(Me,Se));if(o<0)return null;const l=a*this.direction.dot(ye.cross(Me));if(l<0)return null;if(o+l>s)return null;const c=-a*Me.dot(Ee);return c<0?null:this.at(c/s,r)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}}class be{constructor(t,e,n,i,r,a,s,o,l,c,h,u,d,p,f,m){be.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==t&&this.set(t,e,n,i,r,a,s,o,l,c,h,u,d,p,f,m)}set(t,e,n,i,r,a,s,o,l,c,h,u,d,p,f,m){const g=this.elements;return g[0]=t,g[4]=e,g[8]=n,g[12]=i,g[1]=r,g[5]=a,g[9]=s,g[13]=o,g[2]=l,g[6]=c,g[10]=h,g[14]=u,g[3]=d,g[7]=p,g[11]=f,g[15]=m,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return(new be).fromArray(this.elements)}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){const e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,n=t.elements,i=1/we.setFromMatrixColumn(t,0).length(),r=1/we.setFromMatrixColumn(t,1).length(),a=1/we.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*r,e[5]=n[5]*r,e[6]=n[6]*r,e[7]=0,e[8]=n[8]*a,e[9]=n[9]*a,e[10]=n[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){const e=this.elements,n=t.x,i=t.y,r=t.z,a=Math.cos(n),s=Math.sin(n),o=Math.cos(i),l=Math.sin(i),c=Math.cos(r),h=Math.sin(r);if("XYZ"===t.order){const t=a*c,n=a*h,i=s*c,r=s*h;e[0]=o*c,e[4]=-o*h,e[8]=l,e[1]=n+i*l,e[5]=t-r*l,e[9]=-s*o,e[2]=r-t*l,e[6]=i+n*l,e[10]=a*o}else if("YXZ"===t.order){const t=o*c,n=o*h,i=l*c,r=l*h;e[0]=t+r*s,e[4]=i*s-n,e[8]=a*l,e[1]=a*h,e[5]=a*c,e[9]=-s,e[2]=n*s-i,e[6]=r+t*s,e[10]=a*o}else if("ZXY"===t.order){const t=o*c,n=o*h,i=l*c,r=l*h;e[0]=t-r*s,e[4]=-a*h,e[8]=i+n*s,e[1]=n+i*s,e[5]=a*c,e[9]=r-t*s,e[2]=-a*l,e[6]=s,e[10]=a*o}else if("ZYX"===t.order){const t=a*c,n=a*h,i=s*c,r=s*h;e[0]=o*c,e[4]=i*l-n,e[8]=t*l+r,e[1]=o*h,e[5]=r*l+t,e[9]=n*l-i,e[2]=-l,e[6]=s*o,e[10]=a*o}else if("YZX"===t.order){const t=a*o,n=a*l,i=s*o,r=s*l;e[0]=o*c,e[4]=r-t*h,e[8]=i*h+n,e[1]=h,e[5]=a*c,e[9]=-s*c,e[2]=-l*c,e[6]=n*h+i,e[10]=t-r*h}else if("XZY"===t.order){const t=a*o,n=a*l,i=s*o,r=s*l;e[0]=o*c,e[4]=-h,e[8]=l*c,e[1]=t*h+r,e[5]=a*c,e[9]=n*h-i,e[2]=i*h-n,e[6]=s*c,e[10]=r*h+t}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Re,t,Ce)}lookAt(t,e,n){const i=this.elements;return Ue.subVectors(t,e),0===Ue.lengthSq()&&(Ue.z=1),Ue.normalize(),Le.crossVectors(n,Ue),0===Le.lengthSq()&&(1===Math.abs(n.z)?Ue.x+=1e-4:Ue.z+=1e-4,Ue.normalize(),Le.crossVectors(n,Ue)),Le.normalize(),Pe.crossVectors(Ue,Le),i[0]=Le.x,i[4]=Pe.x,i[8]=Ue.x,i[1]=Le.y,i[5]=Pe.y,i[9]=Ue.y,i[2]=Le.z,i[6]=Pe.z,i[10]=Ue.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,i=e.elements,r=this.elements,a=n[0],s=n[4],o=n[8],l=n[12],c=n[1],h=n[5],u=n[9],d=n[13],p=n[2],f=n[6],m=n[10],g=n[14],_=n[3],v=n[7],x=n[11],M=n[15],y=i[0],S=i[4],E=i[8],T=i[12],b=i[1],w=i[5],A=i[9],R=i[13],C=i[2],L=i[6],P=i[10],U=i[14],D=i[3],I=i[7],N=i[11],O=i[15];return r[0]=a*y+s*b+o*C+l*D,r[4]=a*S+s*w+o*L+l*I,r[8]=a*E+s*A+o*P+l*N,r[12]=a*T+s*R+o*U+l*O,r[1]=c*y+h*b+u*C+d*D,r[5]=c*S+h*w+u*L+d*I,r[9]=c*E+h*A+u*P+d*N,r[13]=c*T+h*R+u*U+d*O,r[2]=p*y+f*b+m*C+g*D,r[6]=p*S+f*w+m*L+g*I,r[10]=p*E+f*A+m*P+g*N,r[14]=p*T+f*R+m*U+g*O,r[3]=_*y+v*b+x*C+M*D,r[7]=_*S+v*w+x*L+M*I,r[11]=_*E+v*A+x*P+M*N,r[15]=_*T+v*R+x*U+M*O,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[4],i=t[8],r=t[12],a=t[1],s=t[5],o=t[9],l=t[13],c=t[2],h=t[6],u=t[10],d=t[14];return t[3]*(+r*o*h-i*l*h-r*s*u+n*l*u+i*s*d-n*o*d)+t[7]*(+e*o*d-e*l*u+r*a*u-i*a*d+i*l*c-r*o*c)+t[11]*(+e*l*h-e*s*d-r*a*h+n*a*d+r*s*c-n*l*c)+t[15]*(-i*s*c-e*o*h+e*s*u+i*a*h-n*a*u+n*o*c)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,n){const i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this}invert(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],h=t[9],u=t[10],d=t[11],p=t[12],f=t[13],m=t[14],g=t[15],_=h*m*l-f*u*l+f*o*d-s*m*d-h*o*g+s*u*g,v=p*u*l-c*m*l-p*o*d+a*m*d+c*o*g-a*u*g,x=c*f*l-p*h*l+p*s*d-a*f*d-c*s*g+a*h*g,M=p*h*o-c*f*o-p*s*u+a*f*u+c*s*m-a*h*m,y=e*_+n*v+i*x+r*M;if(0===y)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const S=1/y;return t[0]=_*S,t[1]=(f*u*r-h*m*r-f*i*d+n*m*d+h*i*g-n*u*g)*S,t[2]=(s*m*r-f*o*r+f*i*l-n*m*l-s*i*g+n*o*g)*S,t[3]=(h*o*r-s*u*r-h*i*l+n*u*l+s*i*d-n*o*d)*S,t[4]=v*S,t[5]=(c*m*r-p*u*r+p*i*d-e*m*d-c*i*g+e*u*g)*S,t[6]=(p*o*r-a*m*r-p*i*l+e*m*l+a*i*g-e*o*g)*S,t[7]=(a*u*r-c*o*r+c*i*l-e*u*l-a*i*d+e*o*d)*S,t[8]=x*S,t[9]=(p*h*r-c*f*r-p*n*d+e*f*d+c*n*g-e*h*g)*S,t[10]=(a*f*r-p*s*r+p*n*l-e*f*l-a*n*g+e*s*g)*S,t[11]=(c*s*r-a*h*r-c*n*l+e*h*l+a*n*d-e*s*d)*S,t[12]=M*S,t[13]=(c*f*i-p*h*i+p*n*u-e*f*u-c*n*m+e*h*m)*S,t[14]=(p*s*i-a*f*i-p*n*o+e*f*o+a*n*m-e*s*m)*S,t[15]=(a*h*i-c*s*i+c*n*o-e*h*o-a*n*u+e*s*u)*S,this}scale(t){const e=this.elements,n=t.x,i=t.y,r=t.z;return e[0]*=n,e[4]*=i,e[8]*=r,e[1]*=n,e[5]*=i,e[9]*=r,e[2]*=n,e[6]*=i,e[10]*=r,e[3]*=n,e[7]*=i,e[11]*=r,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))}makeTranslation(t,e,n){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const n=Math.cos(e),i=Math.sin(e),r=1-n,a=t.x,s=t.y,o=t.z,l=r*a,c=r*s;return this.set(l*a+n,l*s-i*o,l*o+i*s,0,l*s+i*o,c*s+n,c*o-i*a,0,l*o-i*s,c*o+i*a,r*o*o+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,i,r,a){return this.set(1,n,r,0,t,1,a,0,e,i,1,0,0,0,0,1),this}compose(t,e,n){const i=this.elements,r=e._x,a=e._y,s=e._z,o=e._w,l=r+r,c=a+a,h=s+s,u=r*l,d=r*c,p=r*h,f=a*c,m=a*h,g=s*h,_=o*l,v=o*c,x=o*h,M=n.x,y=n.y,S=n.z;return i[0]=(1-(f+g))*M,i[1]=(d+x)*M,i[2]=(p-v)*M,i[3]=0,i[4]=(d-x)*y,i[5]=(1-(u+g))*y,i[6]=(m+_)*y,i[7]=0,i[8]=(p+v)*S,i[9]=(m-_)*S,i[10]=(1-(u+f))*S,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,n){const i=this.elements;let r=we.set(i[0],i[1],i[2]).length();const a=we.set(i[4],i[5],i[6]).length(),s=we.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),t.x=i[12],t.y=i[13],t.z=i[14],Ae.copy(this);const o=1/r,l=1/a,c=1/s;return Ae.elements[0]*=o,Ae.elements[1]*=o,Ae.elements[2]*=o,Ae.elements[4]*=l,Ae.elements[5]*=l,Ae.elements[6]*=l,Ae.elements[8]*=c,Ae.elements[9]*=c,Ae.elements[10]*=c,e.setFromRotationMatrix(Ae),n.x=r,n.y=a,n.z=s,this}makePerspective(t,e,n,i,r,a,s=2e3){const o=this.elements,l=2*r/(e-t),c=2*r/(n-i),h=(e+t)/(e-t),u=(n+i)/(n-i);let d,p;if(s===at)d=-(a+r)/(a-r),p=-2*a*r/(a-r);else{if(s!==st)throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+s);d=-a/(a-r),p=-a*r/(a-r)}return o[0]=l,o[4]=0,o[8]=h,o[12]=0,o[1]=0,o[5]=c,o[9]=u,o[13]=0,o[2]=0,o[6]=0,o[10]=d,o[14]=p,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(t,e,n,i,r,a,s=2e3){const o=this.elements,l=1/(e-t),c=1/(n-i),h=1/(a-r),u=(e+t)*l,d=(n+i)*c;let p,f;if(s===at)p=(a+r)*h,f=-2*h;else{if(s!==st)throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+s);p=r*h,f=-1*h}return o[0]=2*l,o[4]=0,o[8]=0,o[12]=-u,o[1]=0,o[5]=2*c,o[9]=0,o[13]=-d,o[2]=0,o[6]=0,o[10]=f,o[14]=-p,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(t){const e=this.elements,n=t.elements;for(let t=0;t<16;t++)if(e[t]!==n[t])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}}const we=new Zt,Ae=new be,Re=new Zt(0,0,0),Ce=new Zt(1,1,1),Le=new Zt,Pe=new Zt,Ue=new Zt,De=new be,Ie=new qt;class Ne{constructor(t=0,e=0,n=0,i=Ne.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=n,this._order=i}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,i=this._order){return this._x=t,this._y=e,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){const i=t.elements,r=i[0],a=i[4],s=i[8],o=i[1],l=i[5],c=i[9],h=i[2],u=i[6],d=i[10];switch(e){case"XYZ":this._y=Math.asin(pt(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(-c,d),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(u,l),this._z=0);break;case"YXZ":this._x=Math.asin(-pt(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(s,d),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-h,r),this._z=0);break;case"ZXY":this._x=Math.asin(pt(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-h,d),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-pt(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(u,d),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(pt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-c,l),this._y=Math.atan2(-h,r)):(this._x=0,this._y=Math.atan2(s,d));break;case"XZY":this._z=Math.asin(-pt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(u,l),this._y=Math.atan2(s,r)):(this._x=Math.atan2(-c,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,!0===n&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return De.makeRotationFromQuaternion(t),this.setFromRotationMatrix(De,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return Ie.setFromEuler(this),this.setFromQuaternion(Ie,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],void 0!==t[3]&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Ne.DEFAULT_ORDER="XYZ";class Oe{constructor(){this.mask=1}set(t){this.mask=(1<>>0}enable(t){this.mask|=1<1){for(let t=0;t1){for(let t=0;t0&&(n=n.concat(r))}return n}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Ve,t,ke),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Ve,We,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);const e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);const e=this.children;for(let n=0,i=e.length;n0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(i.instanceColor=this.instanceColor.toJSON())),this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(i.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(t.geometries,this.geometry);const e=this.geometry.parameters;if(void 0!==e&&void 0!==e.shapes){const n=e.shapes;if(Array.isArray(n))for(let e=0,i=n.length;e0){i.children=[];for(let e=0;e0){i.animations=[];for(let e=0;e0&&(n.geometries=e),i.length>0&&(n.materials=i),r.length>0&&(n.textures=r),s.length>0&&(n.images=s),o.length>0&&(n.shapes=o),l.length>0&&(n.skeletons=l),c.length>0&&(n.animations=c),h.length>0&&(n.nodes=h)}return n.object=i,n;function a(t){const e=[];for(const n in t){const i=t[n];delete i.metadata,e.push(i)}return e}}clone(t){return(new this.constructor).copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),!0===e)for(let e=0;e0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(t,e,n,i,r){Je.subVectors(i,e),Qe.subVectors(n,e),$e.subVectors(t,e);const a=Je.dot(Je),s=Je.dot(Qe),o=Je.dot($e),l=Qe.dot(Qe),c=Qe.dot($e),h=a*l-s*s;if(0===h)return r.set(-2,-1,-1);const u=1/h,d=(l*o-s*c)*u,p=(a*c-s*o)*u;return r.set(1-d-p,p,d)}static containsPoint(t,e,n,i){return this.getBarycoord(t,e,n,i,tn),tn.x>=0&&tn.y>=0&&tn.x+tn.y<=1}static getUV(t,e,n,i,r,a,s,o){return!1===ln&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),ln=!0),this.getInterpolation(t,e,n,i,r,a,s,o)}static getInterpolation(t,e,n,i,r,a,s,o){return this.getBarycoord(t,e,n,i,tn),o.setScalar(0),o.addScaledVector(r,tn.x),o.addScaledVector(a,tn.y),o.addScaledVector(s,tn.z),o}static isFrontFacing(t,e,n,i){return Je.subVectors(n,e),Qe.subVectors(t,e),Je.cross(Qe).dot(i)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this}setFromAttributeAndIndices(t,e,n,i){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,i),this}clone(){return(new this.constructor).copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return Je.subVectors(this.c,this.b),Qe.subVectors(this.a,this.b),.5*Je.cross(Qe).length()}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return cn.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return cn.getBarycoord(t,this.a,this.b,this.c,e)}getUV(t,e,n,i,r){return!1===ln&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),ln=!0),cn.getInterpolation(t,this.a,this.b,this.c,e,n,i,r)}getInterpolation(t,e,n,i,r){return cn.getInterpolation(t,this.a,this.b,this.c,e,n,i,r)}containsPoint(t){return cn.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return cn.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const n=this.a,i=this.b,r=this.c;let a,s;en.subVectors(i,n),nn.subVectors(r,n),an.subVectors(t,n);const o=en.dot(an),l=nn.dot(an);if(o<=0&&l<=0)return e.copy(n);sn.subVectors(t,i);const c=en.dot(sn),h=nn.dot(sn);if(c>=0&&h<=c)return e.copy(i);const u=o*h-c*l;if(u<=0&&o>=0&&c<=0)return a=o/(o-c),e.copy(n).addScaledVector(en,a);on.subVectors(t,r);const d=en.dot(on),p=nn.dot(on);if(p>=0&&d<=p)return e.copy(r);const f=d*l-o*p;if(f<=0&&l>=0&&p<=0)return s=l/(l-p),e.copy(n).addScaledVector(nn,s);const m=c*p-d*h;if(m<=0&&h-c>=0&&d-p>=0)return rn.subVectors(r,i),s=(h-c)/(h-c+(d-p)),e.copy(i).addScaledVector(rn,s);const g=1/(m+f+u);return a=f*g,s=u*g,e.copy(n).addScaledVector(en,a).addScaledVector(nn,s)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}const hn={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},un={h:0,s:0,l:0},dn={h:0,s:0,l:0};function pn(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+6*(e-t)*(2/3-n):t}class fn{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,n)}set(t,e,n){if(void 0===e&&void 0===n){const e=t;e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e)}else this.setRGB(t,e,n);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=j){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,Dt.toWorkingColorSpace(this,e),this}setRGB(t,e,n,i=Dt.workingColorSpace){return this.r=t,this.g=e,this.b=n,Dt.toWorkingColorSpace(this,i),this}setHSL(t,e,n,i=Dt.workingColorSpace){if(t=ft(t,1),e=pt(e,0,1),n=pt(n,0,1),0===e)this.r=this.g=this.b=n;else{const i=n<=.5?n*(1+e):n+e-n*e,r=2*n-i;this.r=pn(r,i,t+1/3),this.g=pn(r,i,t),this.b=pn(r,i,t-1/3)}return Dt.toWorkingColorSpace(this,i),this}setStyle(t,e=j){function n(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(t)){let r;const a=i[1],s=i[2];switch(a){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,e);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,e);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,e);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(t)){const n=i[1],r=n.length;if(3===r)return this.setRGB(parseInt(n.charAt(0),16)/15,parseInt(n.charAt(1),16)/15,parseInt(n.charAt(2),16)/15,e);if(6===r)return this.setHex(parseInt(n,16),e);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,e);return this}setColorName(t,e=j){const n=hn[t.toLowerCase()];return void 0!==n?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=It(t.r),this.g=It(t.g),this.b=It(t.b),this}copyLinearToSRGB(t){return this.r=Nt(t.r),this.g=Nt(t.g),this.b=Nt(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=j){return Dt.fromWorkingColorSpace(mn.copy(this),t),65536*Math.round(pt(255*mn.r,0,255))+256*Math.round(pt(255*mn.g,0,255))+Math.round(pt(255*mn.b,0,255))}getHexString(t=j){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=Dt.workingColorSpace){Dt.fromWorkingColorSpace(mn.copy(this),e);const n=mn.r,i=mn.g,r=mn.b,a=Math.max(n,i,r),s=Math.min(n,i,r);let o,l;const c=(s+a)/2;if(s===a)o=0,l=0;else{const t=a-s;switch(l=c<=.5?t/(a+s):t/(2-a-s),a){case n:o=(i-r)/t+(i0!=t>0&&this.version++,this._alphaTest=t}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(void 0!==t)for(const e in t){const n=t[e];if(void 0===n){console.warn(`THREE.Material: parameter '${e}' has value of undefined.`);continue}const i=this[e];void 0!==i?i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[e]=n:console.warn(`THREE.Material: '${e}' is not a property of THREE.${this.type}.`)}}toJSON(t){const e=void 0===t||"string"==typeof t;e&&(t={textures:{},images:{}});const n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};function i(t){const e=[];for(const n in t){const i=t[n];delete i.metadata,e.push(i)}return e}if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),void 0!==this.roughness&&(n.roughness=this.roughness),void 0!==this.metalness&&(n.metalness=this.metalness),void 0!==this.sheen&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(n.shininess=this.shininess),void 0!==this.clearcoat&&(n.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.iridescence&&(n.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(n.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),void 0!==this.anisotropy&&(n.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,void 0!==this.combine&&(n.combine=this.combine)),void 0!==this.envMapIntensity&&(n.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(n.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(t).uuid),void 0!==this.transmission&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),void 0!==this.thickness&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(n.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(n.size=this.size),null!==this.shadowSide&&(n.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(n.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(n.blending=this.blending),this.side!==o&&(n.side=this.side),!0===this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),!0===this.transparent&&(n.transparent=!0),204!==this.blendSrc&&(n.blendSrc=this.blendSrc),205!==this.blendDst&&(n.blendDst=this.blendDst),this.blendEquation!==c&&(n.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(n.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(n.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(n.blendAlpha=this.blendAlpha),3!==this.depthFunc&&(n.depthFunc=this.depthFunc),!1===this.depthTest&&(n.depthTest=this.depthTest),!1===this.depthWrite&&(n.depthWrite=this.depthWrite),!1===this.colorWrite&&(n.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(n.stencilWriteMask=this.stencilWriteMask),519!==this.stencilFunc&&(n.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(n.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==et&&(n.stencilFail=this.stencilFail),this.stencilZFail!==et&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==et&&(n.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(n.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(n.rotation=this.rotation),!0===this.polygonOffset&&(n.polygonOffset=!0),0!==this.polygonOffsetFactor&&(n.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(n.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(n.linewidth=this.linewidth),void 0!==this.dashSize&&(n.dashSize=this.dashSize),void 0!==this.gapSize&&(n.gapSize=this.gapSize),void 0!==this.scale&&(n.scale=this.scale),!0===this.dithering&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),!0===this.alphaHash&&(n.alphaHash=!0),!0===this.alphaToCoverage&&(n.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=!0),!0===this.forceSinglePass&&(n.forceSinglePass=!0),!0===this.wireframe&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(n.flatShading=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),!1===this.fog&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData),e){const e=i(t.textures),r=i(t.images);e.length>0&&(n.textures=e),r.length>0&&(n.images=r)}return n}clone(){return(new this.constructor).copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let n=null;if(null!==e){const t=e.length;n=new Array(t);for(let i=0;i!==t;++i)n[i]=e[i].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){!0===t&&this.version++}}class vn extends _n{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new fn(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=h,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}}const xn=new Zt,Mn=new yt;class yn{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=void 0!==t?t.length/e:0,this.normalized=n,this.usage=nt,this.updateRange={offset:0,count:-1},this.gpuType=D,this.version=0}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let i=0,r=this.itemSize;i0&&(t.userData=this.userData),void 0!==this.parameters){const e=this.parameters;for(const n in e)void 0!==e[n]&&(t[n]=e[n]);return t}t.data={attributes:{}};const e=this.index;null!==e&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const n=this.attributes;for(const e in n){const i=n[e];t.data.attributes[e]=i.toJSON(t.data)}const i={};let r=!1;for(const e in this.morphAttributes){const n=this.morphAttributes[e],a=[];for(let e=0,i=n.length;e0&&(i[e]=a,r=!0)}r&&(t.data.morphAttributes=i,t.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(t.data.groups=JSON.parse(JSON.stringify(a)));const s=this.boundingSphere;return null!==s&&(t.data.boundingSphere={center:s.center.toArray(),radius:s.radius}),t}clone(){return(new this.constructor).copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const n=t.index;null!==n&&this.setIndex(n.clone(e));const i=t.attributes;for(const t in i){const n=i[t];this.setAttribute(t,n.clone(e))}const r=t.morphAttributes;for(const t in r){const n=[],i=r[t];for(let t=0,r=i.length;t0){const n=t[e[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=n.length;t(t.far-t.near)**2)return}Dn.copy(r).invert(),In.copy(t.ray).applyMatrix4(Dn),null!==n.boundingBox&&!1===In.intersectsBox(n.boundingBox)||this._computeIntersections(t,e,In)}}_computeIntersections(t,e,n){let i;const r=this.geometry,a=this.material,s=r.index,o=r.attributes.position,l=r.attributes.uv,c=r.attributes.uv1,h=r.attributes.normal,u=r.groups,d=r.drawRange;if(null!==s)if(Array.isArray(a))for(let r=0,o=u.length;rn.far?null:{distance:u,point:Zn.clone(),object:t}}(t,e,n,i,Fn,zn,Bn,qn);if(d){r&&(Vn.fromBufferAttribute(r,c),kn.fromBufferAttribute(r,h),Wn.fromBufferAttribute(r,u),d.uv=cn.getInterpolation(qn,Fn,zn,Bn,Vn,kn,Wn,new yt)),a&&(Vn.fromBufferAttribute(a,c),kn.fromBufferAttribute(a,h),Wn.fromBufferAttribute(a,u),d.uv1=cn.getInterpolation(qn,Fn,zn,Bn,Vn,kn,Wn,new yt),d.uv2=d.uv1),s&&(Xn.fromBufferAttribute(s,c),jn.fromBufferAttribute(s,h),Yn.fromBufferAttribute(s,u),d.normal=cn.getInterpolation(qn,Fn,zn,Bn,Xn,jn,Yn,new Zt),d.normal.dot(i.direction)>0&&d.normal.multiplyScalar(-1));const t={a:c,b:h,c:u,normal:new Zt,materialIndex:0};cn.getNormal(Fn,zn,Bn,t.normal),d.face=t}return d}class Qn extends Un{constructor(t=1,e=1,n=1,i=1,r=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:i,heightSegments:r,depthSegments:a};const s=this;i=Math.floor(i),r=Math.floor(r),a=Math.floor(a);const o=[],l=[],c=[],h=[];let u=0,d=0;function p(t,e,n,i,r,a,p,f,m,g,_){const v=a/m,x=p/g,M=a/2,y=p/2,S=f/2,E=m+1,T=g+1;let b=0,w=0;const A=new Zt;for(let a=0;a0?1:-1,c.push(A.x,A.y,A.z),h.push(o/m),h.push(1-a/g),b+=1}}for(let t=0;t0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;const n={};for(const t in this.extensions)!0===this.extensions[t]&&(n[t]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}}class ri extends Ke{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new be,this.projectionMatrix=new be,this.projectionMatrixInverse=new be,this.coordinateSystem=at}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this.coordinateSystem=t.coordinateSystem,this}getWorldDirection(t){return super.getWorldDirection(t).negate()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}}class ai extends ri{constructor(t=50,e=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=null===t.view?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){const e=.5*this.getFilmHeight()/t;this.fov=2*ut*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){const t=Math.tan(.5*ht*this.fov);return.5*this.getFilmHeight()/t}getEffectiveFOV(){return 2*ut*Math.atan(Math.tan(.5*ht*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(t,e,n,i,r,a){this.aspect=t/e,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=this.near;let e=t*Math.tan(.5*ht*this.fov)/this.zoom,n=2*e,i=this.aspect*n,r=-.5*i;const a=this.view;if(null!==this.view&&this.view.enabled){const t=a.fullWidth,s=a.fullHeight;r+=a.offsetX*i/t,e-=a.offsetY*n/s,i*=a.width/t,n*=a.height/s}const s=this.filmOffset;0!==s&&(r+=t*s/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,e,e-n,t,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,null!==this.view&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}}const si=-90;class oi extends Ke{constructor(t,e,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new ai(si,1,t,e);i.layers=this.layers,this.add(i);const r=new ai(si,1,t,e);r.layers=this.layers,this.add(r);const a=new ai(si,1,t,e);a.layers=this.layers,this.add(a);const s=new ai(si,1,t,e);s.layers=this.layers,this.add(s);const o=new ai(si,1,t,e);o.layers=this.layers,this.add(o);const l=new ai(si,1,t,e);l.layers=this.layers,this.add(l)}updateCoordinateSystem(){const t=this.coordinateSystem,e=this.children.concat(),[n,i,r,a,s,o]=e;for(const t of e)this.remove(t);if(t===at)n.up.set(0,1,0),n.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),s.up.set(0,1,0),s.lookAt(0,0,1),o.up.set(0,1,0),o.lookAt(0,0,-1);else{if(t!==st)throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+t);n.up.set(0,-1,0),n.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),s.up.set(0,-1,0),s.lookAt(0,0,1),o.up.set(0,-1,0),o.lookAt(0,0,-1)}for(const t of e)this.add(t),t.updateMatrixWorld()}update(t,e){null===this.parent&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:i}=this;this.coordinateSystem!==t.coordinateSystem&&(this.coordinateSystem=t.coordinateSystem,this.updateCoordinateSystem());const[r,a,s,o,l,c]=this.children,h=t.getRenderTarget(),u=t.getActiveCubeFace(),d=t.getActiveMipmapLevel(),p=t.xr.enabled;t.xr.enabled=!1;const f=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0,i),t.render(e,r),t.setRenderTarget(n,1,i),t.render(e,a),t.setRenderTarget(n,2,i),t.render(e,s),t.setRenderTarget(n,3,i),t.render(e,o),t.setRenderTarget(n,4,i),t.render(e,l),n.texture.generateMipmaps=f,t.setRenderTarget(n,5,i),t.render(e,c),t.setRenderTarget(h,u,d),t.xr.enabled=p,n.texture.needsPMREMUpdate=!0}}class li extends Vt{constructor(t,e,n,i,r,a,s,o,l,c){super(t=void 0!==t?t:[],e=void 0!==e?e:x,n,i,r,a,s,o,l,c),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}}class ci extends Xt{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;const n={width:t,height:t,depth:1},i=[n,n,n,n,n,n];void 0!==e.encoding&&(Rt("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."),e.colorSpace=e.encoding===W?j:X),this.texture=new li(i,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==e.generateMipmaps&&e.generateMipmaps,this.texture.minFilter=void 0!==e.minFilter?e.minFilter:A}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.colorSpace=e.colorSpace,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:"\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t",fragmentShader:"\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t"},i=new Qn(5,5,5),r=new ii({name:"CubemapFromEquirect",uniforms:$n(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:l,blending:0});r.uniforms.tEquirect.value=e;const a=new Kn(i,r),s=e.minFilter;e.minFilter===R&&(e.minFilter=A);return new oi(1,10,this).update(t,a),e.minFilter=s,a.geometry.dispose(),a.material.dispose(),this}clear(t,e,n,i){const r=t.getRenderTarget();for(let r=0;r<6;r++)t.setRenderTarget(this,r),t.clear(e,n,i);t.setRenderTarget(r)}}const hi=new Zt,ui=new Zt,di=new St;class pi{constructor(t=new Zt(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,n,i){return this.normal.set(t,e,n),this.constant=i,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,n){const i=hi.subVectors(n,e).cross(ui.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectLine(t,e){const n=t.delta(hi),i=this.normal.dot(n);if(0===i)return 0===this.distanceToPoint(t.start)?e.copy(t.start):null;const r=-(t.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:e.copy(t.start).addScaledVector(n,r)}intersectsLine(t){const e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const n=e||di.getNormalMatrix(t),i=this.coplanarPoint(hi).applyMatrix4(t),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return(new this.constructor).copy(this)}}const fi=new ge,mi=new Zt;class gi{constructor(t=new pi,e=new pi,n=new pi,i=new pi,r=new pi,a=new pi){this.planes=[t,e,n,i,r,a]}set(t,e,n,i,r,a){const s=this.planes;return s[0].copy(t),s[1].copy(e),s[2].copy(n),s[3].copy(i),s[4].copy(r),s[5].copy(a),this}copy(t){const e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t,e=2e3){const n=this.planes,i=t.elements,r=i[0],a=i[1],s=i[2],o=i[3],l=i[4],c=i[5],h=i[6],u=i[7],d=i[8],p=i[9],f=i[10],m=i[11],g=i[12],_=i[13],v=i[14],x=i[15];if(n[0].setComponents(o-r,u-l,m-d,x-g).normalize(),n[1].setComponents(o+r,u+l,m+d,x+g).normalize(),n[2].setComponents(o+a,u+c,m+p,x+_).normalize(),n[3].setComponents(o-a,u-c,m-p,x-_).normalize(),n[4].setComponents(o-s,u-h,m-f,x-v).normalize(),e===at)n[5].setComponents(o+s,u+h,m+f,x+v).normalize();else{if(e!==st)throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+e);n[5].setComponents(s,h,f,v).normalize()}return this}intersectsObject(t){if(void 0!==t.boundingSphere)null===t.boundingSphere&&t.computeBoundingSphere(),fi.copy(t.boundingSphere).applyMatrix4(t.matrixWorld);else{const e=t.geometry;null===e.boundingSphere&&e.computeBoundingSphere(),fi.copy(e.boundingSphere).applyMatrix4(t.matrixWorld)}return this.intersectsSphere(fi)}intersectsSprite(t){return fi.center.set(0,0,0),fi.radius=.7071067811865476,fi.applyMatrix4(t.matrixWorld),this.intersectsSphere(fi)}intersectsSphere(t){const e=this.planes,n=t.center,i=-t.radius;for(let t=0;t<6;t++){if(e[t].distanceToPoint(n)0?t.max.x:t.min.x,mi.y=i.normal.y>0?t.max.y:t.min.y,mi.z=i.normal.z>0?t.max.z:t.min.z,i.distanceToPoint(mi)<0)return!1}return!0}containsPoint(t){const e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}}function _i(){let t=null,e=!1,n=null,i=null;function r(e,a){n(e,a),i=t.requestAnimationFrame(r)}return{start:function(){!0!==e&&null!==n&&(i=t.requestAnimationFrame(r),e=!0)},stop:function(){t.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(t){n=t},setContext:function(e){t=e}}}function vi(t,e){const n=e.isWebGL2,i=new WeakMap;return{get:function(t){return t.isInterleavedBufferAttribute&&(t=t.data),i.get(t)},remove:function(e){e.isInterleavedBufferAttribute&&(e=e.data);const n=i.get(e);n&&(t.deleteBuffer(n.buffer),i.delete(e))},update:function(e,r){if(e.isGLBufferAttribute){const t=i.get(e);return void((!t||t.version 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\n#ifdef USE_ALPHAHASH\n\tvarying vec3 vPosition;\n#endif\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat luminance( const in vec3 rgb ) {\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\n\treturn dot( weights, rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define cubeUV_r0 1.0\n\t#define cubeUV_v0 0.339\n\t#define cubeUV_m0 - 2.0\n\t#define cubeUV_r1 0.8\n\t#define cubeUV_v1 0.276\n\t#define cubeUV_m1 - 1.0\n\t#define cubeUV_r4 0.4\n\t#define cubeUV_v4 0.046\n\t#define cubeUV_m4 2.0\n\t#define cubeUV_r5 0.305\n\t#define cubeUV_v5 0.016\n\t#define cubeUV_m5 3.0\n\t#define cubeUV_r6 0.21\n\t#define cubeUV_v6 0.0038\n\t#define cubeUV_m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= cubeUV_r1 ) {\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n\t\t} else if ( roughness >= cubeUV_r4 ) {\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n\t\t} else if ( roughness >= cubeUV_r5 ) {\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n\t\t} else if ( roughness >= cubeUV_r6 ) {\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",colorspace_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",colorspace_pars_fragment:"\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\n\tvec3( 0.8224621, 0.177538, 0.0 ),\n\tvec3( 0.0331941, 0.9668058, 0.0 ),\n\tvec3( 0.0170827, 0.0723974, 0.9105199 )\n);\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\n\tvec3( 1.2249401, - 0.2249404, 0.0 ),\n\tvec3( - 0.0420569, 1.0420571, 0.0 ),\n\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\n);\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\n\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\n}\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\n\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\n}\nvec4 LinearTransferOETF( in vec4 value ) {\n\treturn value;\n}\nvec4 sRGBTransferOETF( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn sRGBTransferOETF( value );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#ifdef USE_ENVMAP\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\t#ifdef USE_ANISOTROPY\n\t\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n\t\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\t\tvec3 bentNormal = cross( bitangent, viewDir );\n\t\t\t\tbentNormal = normalize( cross( bentNormal, bitangent ) );\n\t\t\t\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n\t\t\t\treturn getIBLRadiance( viewDir, bentNormal, roughness );\n\t\t\t#else\n\t\t\t\treturn vec3( 0.0 );\n\t\t\t#endif\n\t\t}\n\t#endif\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\n\t#else\n\t\tvec2 fw = fwidth( coord ) * 0.5;\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_fragment:"LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;",lights_lambert_pars_fragment:"varying vec3 vViewPosition;\nstruct LambertMaterial {\n\tvec3 diffuseColor;\n\tfloat specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\n#if defined( USE_LIGHT_PROBES )\n\tuniform vec3 lightProbe[ 9 ];\n#endif\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( LEGACY_LIGHTS )\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#else\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometryPosition;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometryPosition;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\tmaterial.ior = ior;\n\t#ifdef USE_SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULAR_COLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n\t\t#endif\n\t\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\t#ifdef USE_ANISOTROPYMAP\n\t\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n\t\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n\t\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n\t#else\n\t\tvec2 anisotropyV = anisotropyVector;\n\t#endif\n\tmaterial.anisotropy = length( anisotropyV );\n\tanisotropyV /= material.anisotropy;\n\tmaterial.anisotropy = saturate( material.anisotropy );\n\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x - tbn[ 1 ] * anisotropyV.y;\n\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x + tbn[ 0 ] * anisotropyV.y;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat anisotropy;\n\t\tfloat alphaT;\n\t\tvec3 anisotropyT;\n\t\tvec3 anisotropyB;\n\t#endif\n};\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\nvec3 sheenSpecularDirect = vec3( 0.0 );\nvec3 sheenSpecularIndirect = vec3(0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_ANISOTROPY\n\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\n\t\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\n\t\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n\t\tfloat v = 0.5 / ( gv + gl );\n\t\treturn saturate(v);\n\t}\n\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n\t\tfloat a2 = alphaT * alphaB;\n\t\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n\t\thighp float v2 = dot( v, v );\n\t\tfloat w2 = a2 / v2;\n\t\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\n\t}\n#endif\n#ifdef USE_CLEARCOAT\n\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n\t\tvec3 f0 = material.clearcoatF0;\n\t\tfloat f90 = material.clearcoatF90;\n\t\tfloat roughness = material.clearcoatRoughness;\n\t\tfloat alpha = pow2( roughness );\n\t\tvec3 halfDir = normalize( lightDir + viewDir );\n\t\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\t\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\t\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\t\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\t\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t\treturn F * ( V * D );\n\t}\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n\tvec3 f0 = material.specularColor;\n\tfloat f90 = material.specularF90;\n\tfloat roughness = material.roughness;\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t#ifdef USE_IRIDESCENCE\n\t\tF = mix( F, material.iridescenceFresnel, material.iridescence );\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat dotTL = dot( material.anisotropyT, lightDir );\n\t\tfloat dotTV = dot( material.anisotropyT, viewDir );\n\t\tfloat dotTH = dot( material.anisotropyT, halfDir );\n\t\tfloat dotBL = dot( material.anisotropyB, lightDir );\n\t\tfloat dotBV = dot( material.anisotropyB, viewDir );\n\t\tfloat dotBH = dot( material.anisotropyB, halfDir );\n\t\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n\t\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n\t#else\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t#endif\n\treturn F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometryNormal;\n\t\tvec3 viewDir = geometryViewDir;\n\t\tvec3 position = geometryPosition;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nvec3 geometryPosition = - vViewPosition;\nvec3 geometryNormal = normal;\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\nvec3 geometryClearcoatNormal = vec3( 0.0 );\n#ifdef USE_CLEARCOAT\n\tgeometryClearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\n\tif ( material.iridescenceThickness == 0.0 ) {\n\t\tmaterial.iridescence = 0.0;\n\t} else {\n\t\tmaterial.iridescence = saturate( material.iridescence );\n\t}\n\tif ( material.iridescence > 0.0 ) {\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n\t}\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometryPosition, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tvec4 spotColor;\n\tvec3 spotLightCoord;\n\tbool inSpotLightMap;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n\t\t#else\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#endif\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n\t\t#endif\n\t\t#undef SPOT_LIGHT_MAP_INDEX\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if defined( USE_LIGHT_PROBES )\n\t\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n\t#endif\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometryNormal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\t#ifdef USE_ANISOTROPY\n\t\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\n\t#else\n\t\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n\t\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\t#if defined( USE_POINTS_UV )\n\t\tvec2 uv = vUv;\n\t#else\n\t\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\t#endif\n#endif\n#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_POINTS_UV )\n\tvarying vec2 vUv;\n#else\n\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\t\tuniform mat3 uvTransform;\n\t#endif\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphcolor_vertex:"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\n\tvColor *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t#if defined( USE_COLOR_ALPHA )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n\t\t#elif defined( USE_COLOR )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n\t\t#endif\n\t}\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n\t#endif\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t\tuniform sampler2DArray morphTargetsTexture;\n\t\tuniform ivec2 morphTargetsTextureSize;\n\t\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n\t\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n\t\t\tint y = texelIndex / morphTargetsTextureSize.x;\n\t\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\n\t\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\n\t\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\n\t\t}\n\t#else\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\tuniform float morphTargetInfluences[ 8 ];\n\t\t#else\n\t\t\tuniform float morphTargetInfluences[ 4 ];\n\t\t#endif\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t\t#endif\n\t#endif\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal *= faceDirection;\n\t#endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\n\t\t#if defined( USE_NORMALMAP )\n\t\t\tvNormalMapUv\n\t\t#elif defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tvClearcoatNormalMapUv\n\t\t#else\n\t\t\tvUv\n\t\t#endif\n\t\t);\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn[0] *= faceDirection;\n\t\ttbn[1] *= faceDirection;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn2[0] *= faceDirection;\n\t\ttbn2[1] *= faceDirection;\n\t#endif\n#endif\nvec3 nonPerturbedNormal = normal;",normal_fragment_maps:"#ifdef USE_NORMALMAP_OBJECTSPACE\n\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\n\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\tnormal = normalize( tbn * mapN );\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( uv.st );\n\t\tvec2 st1 = dFdy( uv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n\t\treturn mat3( T * scale, B * scale, N );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = nonPerturbedNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif",iridescence_pars_fragment:"#ifdef USE_IRIDESCENCEMAP\n\tuniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform sampler2D iridescenceThicknessMap;\n#endif",opaque_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec2 packDepthToRG( in highp float v ) {\n\treturn packDepthToRGBA( v ).yx;\n}\nfloat unpackRGToDepth( const in highp vec2 v ) {\n\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\n\treturn depth * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * depth - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#if NUM_SPOT_LIGHT_COORDS > 0\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#if NUM_SPOT_LIGHT_COORDS > 0\n\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\tvec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition;\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n\t\t#endif\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\tuniform highp sampler2D boneTexture;\n\tuniform int boneTextureSize;\n\tmat4 getBoneMatrix( const in float i ) {\n\t\tfloat j = i * 4.0;\n\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\ty = dy * ( y + 0.5 );\n\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\treturn bone;\n\t}\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n\tmaterial.transmission = transmission;\n\tmaterial.transmissionAlpha = 1.0;\n\tmaterial.thickness = thickness;\n\tmaterial.attenuationDistance = attenuationDistance;\n\tmaterial.attenuationColor = attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmitted = getIBLVolumeRefraction(\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\n\t\tmaterial.attenuationColor, material.attenuationDistance );\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tfloat w0( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n\t}\n\tfloat w1( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n\t}\n\tfloat w2( float a ){\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n\t}\n\tfloat w3( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * a );\n\t}\n\tfloat g0( float a ) {\n\t\treturn w0( a ) + w1( a );\n\t}\n\tfloat g1( float a ) {\n\t\treturn w2( a ) + w3( a );\n\t}\n\tfloat h0( float a ) {\n\t\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n\t}\n\tfloat h1( float a ) {\n\t\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n\t}\n\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n\t\tuv = uv * texelSize.zw + 0.5;\n\t\tvec2 iuv = floor( uv );\n\t\tvec2 fuv = fract( uv );\n\t\tfloat g0x = g0( fuv.x );\n\t\tfloat g1x = g1( fuv.x );\n\t\tfloat h0x = h0( fuv.x );\n\t\tfloat h1x = h1( fuv.x );\n\t\tfloat h0y = h0( fuv.y );\n\t\tfloat h1y = h1( fuv.y );\n\t\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n\t\t\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n\t}\n\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n\t\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n\t\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n\t\tvec2 fLodSizeInv = 1.0 / fLodSize;\n\t\tvec2 cLodSizeInv = 1.0 / cLodSize;\n\t\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n\t\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n\t\treturn mix( fSample, cSample, fract( lod ) );\n\t}\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n\t}\n\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( isinf( attenuationDistance ) ) {\n\t\t\treturn vec3( 1.0 );\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n\t}\n#endif",uv_pars_fragment:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif",uv_pars_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tuniform mat3 mapTransform;\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform mat3 alphaMapTransform;\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tuniform mat3 lightMapTransform;\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tuniform mat3 aoMapTransform;\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tuniform mat3 bumpMapTransform;\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tuniform mat3 normalMapTransform;\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tuniform mat3 displacementMapTransform;\n\tvarying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tuniform mat3 emissiveMapTransform;\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tuniform mat3 metalnessMapTransform;\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tuniform mat3 roughnessMapTransform;\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tuniform mat3 anisotropyMapTransform;\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tuniform mat3 clearcoatMapTransform;\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform mat3 clearcoatNormalMapTransform;\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform mat3 clearcoatRoughnessMapTransform;\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tuniform mat3 sheenColorMapTransform;\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tuniform mat3 sheenRoughnessMapTransform;\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tuniform mat3 iridescenceMapTransform;\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform mat3 iridescenceThicknessMapTransform;\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tuniform mat3 specularMapTransform;\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tuniform mat3 specularColorMapTransform;\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tuniform mat3 specularIntensityMapTransform;\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif",uv_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",background_frag:"uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}",backgroundCube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",backgroundCube_frag:"#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include \n\t#include \n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_frag:"#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\tuniform vec2 anisotropyVector;\n\t#ifdef USE_ANISOTROPYMAP\n\t\tuniform sampler2D anisotropyMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \n#ifdef USE_POINTS_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\nvoid main() {\n\t#ifdef USE_POINTS_UV\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_vert:"#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}"},yi={common:{diffuse:{value:new fn(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new St},alphaMap:{value:null},alphaMapTransform:{value:new St},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new St}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new St}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new St}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new St},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new St},normalScale:{value:new yt(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new St},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new St}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new St}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new St}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new fn(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new fn(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new St},alphaTest:{value:0},uvTransform:{value:new St}},sprite:{diffuse:{value:new fn(16777215)},opacity:{value:1},center:{value:new yt(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new St},alphaMap:{value:null},alphaMapTransform:{value:new St},alphaTest:{value:0}}},Si={basic:{uniforms:ti([yi.common,yi.specularmap,yi.envmap,yi.aomap,yi.lightmap,yi.fog]),vertexShader:Mi.meshbasic_vert,fragmentShader:Mi.meshbasic_frag},lambert:{uniforms:ti([yi.common,yi.specularmap,yi.envmap,yi.aomap,yi.lightmap,yi.emissivemap,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.fog,yi.lights,{emissive:{value:new fn(0)}}]),vertexShader:Mi.meshlambert_vert,fragmentShader:Mi.meshlambert_frag},phong:{uniforms:ti([yi.common,yi.specularmap,yi.envmap,yi.aomap,yi.lightmap,yi.emissivemap,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.fog,yi.lights,{emissive:{value:new fn(0)},specular:{value:new fn(1118481)},shininess:{value:30}}]),vertexShader:Mi.meshphong_vert,fragmentShader:Mi.meshphong_frag},standard:{uniforms:ti([yi.common,yi.envmap,yi.aomap,yi.lightmap,yi.emissivemap,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.roughnessmap,yi.metalnessmap,yi.fog,yi.lights,{emissive:{value:new fn(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Mi.meshphysical_vert,fragmentShader:Mi.meshphysical_frag},toon:{uniforms:ti([yi.common,yi.aomap,yi.lightmap,yi.emissivemap,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.gradientmap,yi.fog,yi.lights,{emissive:{value:new fn(0)}}]),vertexShader:Mi.meshtoon_vert,fragmentShader:Mi.meshtoon_frag},matcap:{uniforms:ti([yi.common,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.fog,{matcap:{value:null}}]),vertexShader:Mi.meshmatcap_vert,fragmentShader:Mi.meshmatcap_frag},points:{uniforms:ti([yi.points,yi.fog]),vertexShader:Mi.points_vert,fragmentShader:Mi.points_frag},dashed:{uniforms:ti([yi.common,yi.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Mi.linedashed_vert,fragmentShader:Mi.linedashed_frag},depth:{uniforms:ti([yi.common,yi.displacementmap]),vertexShader:Mi.depth_vert,fragmentShader:Mi.depth_frag},normal:{uniforms:ti([yi.common,yi.bumpmap,yi.normalmap,yi.displacementmap,{opacity:{value:1}}]),vertexShader:Mi.meshnormal_vert,fragmentShader:Mi.meshnormal_frag},sprite:{uniforms:ti([yi.sprite,yi.fog]),vertexShader:Mi.sprite_vert,fragmentShader:Mi.sprite_frag},background:{uniforms:{uvTransform:{value:new St},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Mi.background_vert,fragmentShader:Mi.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:Mi.backgroundCube_vert,fragmentShader:Mi.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Mi.cube_vert,fragmentShader:Mi.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Mi.equirect_vert,fragmentShader:Mi.equirect_frag},distanceRGBA:{uniforms:ti([yi.common,yi.displacementmap,{referencePosition:{value:new Zt},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Mi.distanceRGBA_vert,fragmentShader:Mi.distanceRGBA_frag},shadow:{uniforms:ti([yi.lights,yi.fog,{color:{value:new fn(0)},opacity:{value:1}}]),vertexShader:Mi.shadow_vert,fragmentShader:Mi.shadow_frag}};Si.physical={uniforms:ti([Si.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new St},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new St},clearcoatNormalScale:{value:new yt(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new St},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new St},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new St},sheen:{value:0},sheenColor:{value:new fn(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new St},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new St},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new St},transmissionSamplerSize:{value:new yt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new St},attenuationDistance:{value:0},attenuationColor:{value:new fn(0)},specularColor:{value:new fn(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new St},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new St},anisotropyVector:{value:new yt},anisotropyMap:{value:null},anisotropyMapTransform:{value:new St}}]),vertexShader:Mi.meshphysical_vert,fragmentShader:Mi.meshphysical_frag};const Ei={r:0,b:0,g:0};function Ti(t,e,n,i,r,a,s){const c=new fn(0);let h,u,d=!0===a?0:1,p=null,f=0,m=null;function g(e,n){e.getRGB(Ei,ei(t)),i.buffers.color.setClear(Ei.r,Ei.g,Ei.b,n,s)}return{getClearColor:function(){return c},setClearColor:function(t,e=1){c.set(t),d=e,g(c,d)},getClearAlpha:function(){return d},setClearAlpha:function(t){d=t,g(c,d)},render:function(a,_){let v=!1,x=!0===_.isScene?_.background:null;if(x&&x.isTexture){x=(_.backgroundBlurriness>0?n:e).get(x)}null===x?g(c,d):x&&x.isColor&&(g(x,1),v=!0);const M=t.xr.getEnvironmentBlendMode();"additive"===M?i.buffers.color.setClear(0,0,0,1,s):"alpha-blend"===M&&i.buffers.color.setClear(0,0,0,0,s),(t.autoClear||v)&&t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil),x&&(x.isCubeTexture||x.mapping===y)?(void 0===u&&(u=new Kn(new Qn(1,1,1),new ii({name:"BackgroundCubeMaterial",uniforms:$n(Si.backgroundCube.uniforms),vertexShader:Si.backgroundCube.vertexShader,fragmentShader:Si.backgroundCube.fragmentShader,side:l,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(t,e,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(u)),u.material.uniforms.envMap.value=x,u.material.uniforms.flipEnvMap.value=x.isCubeTexture&&!1===x.isRenderTargetTexture?-1:1,u.material.uniforms.backgroundBlurriness.value=_.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=_.backgroundIntensity,u.material.toneMapped=Dt.getTransfer(x.colorSpace)!==J,p===x&&f===x.version&&m===t.toneMapping||(u.material.needsUpdate=!0,p=x,f=x.version,m=t.toneMapping),u.layers.enableAll(),a.unshift(u,u.geometry,u.material,0,0,null)):x&&x.isTexture&&(void 0===h&&(h=new Kn(new xi(2,2),new ii({name:"BackgroundMaterial",uniforms:$n(Si.background.uniforms),vertexShader:Si.background.vertexShader,fragmentShader:Si.background.fragmentShader,side:o,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),Object.defineProperty(h.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(h)),h.material.uniforms.t2D.value=x,h.material.uniforms.backgroundIntensity.value=_.backgroundIntensity,h.material.toneMapped=Dt.getTransfer(x.colorSpace)!==J,!0===x.matrixAutoUpdate&&x.updateMatrix(),h.material.uniforms.uvTransform.value.copy(x.matrix),p===x&&f===x.version&&m===t.toneMapping||(h.material.needsUpdate=!0,p=x,f=x.version,m=t.toneMapping),h.layers.enableAll(),a.unshift(h,h.geometry,h.material,0,0,null))}}}function bi(t,e,n,i){const r=t.getParameter(t.MAX_VERTEX_ATTRIBS),a=i.isWebGL2?null:e.get("OES_vertex_array_object"),s=i.isWebGL2||null!==a,o={},l=p(null);let c=l,h=!1;function u(e){return i.isWebGL2?t.bindVertexArray(e):a.bindVertexArrayOES(e)}function d(e){return i.isWebGL2?t.deleteVertexArray(e):a.deleteVertexArrayOES(e)}function p(t){const e=[],n=[],i=[];for(let t=0;t=0){const n=r[e];let i=a[e];if(void 0===i&&("instanceMatrix"===e&&t.instanceMatrix&&(i=t.instanceMatrix),"instanceColor"===e&&t.instanceColor&&(i=t.instanceColor)),void 0===n)return!0;if(n.attribute!==i)return!0;if(i&&n.data!==i.data)return!0;s++}}return c.attributesNum!==s||c.index!==i}(r,x,d,M),y&&function(t,e,n,i){const r={},a=e.attributes;let s=0;const o=n.getAttributes();for(const e in o){if(o[e].location>=0){let n=a[e];void 0===n&&("instanceMatrix"===e&&t.instanceMatrix&&(n=t.instanceMatrix),"instanceColor"===e&&t.instanceColor&&(n=t.instanceColor));const i={};i.attribute=n,n&&n.data&&(i.data=n.data),r[e]=i,s++}}c.attributes=r,c.attributesNum=s,c.index=i}(r,x,d,M)}else{const t=!0===l.wireframe;c.geometry===x.id&&c.program===d.id&&c.wireframe===t||(c.geometry=x.id,c.program=d.id,c.wireframe=t,y=!0)}null!==M&&n.update(M,t.ELEMENT_ARRAY_BUFFER),(y||h)&&(h=!1,function(r,a,s,o){if(!1===i.isWebGL2&&(r.isInstancedMesh||o.isInstancedBufferGeometry)&&null===e.get("ANGLE_instanced_arrays"))return;f();const l=o.attributes,c=s.getAttributes(),h=a.defaultAttributeValues;for(const e in c){const a=c[e];if(a.location>=0){let s=l[e];if(void 0===s&&("instanceMatrix"===e&&r.instanceMatrix&&(s=r.instanceMatrix),"instanceColor"===e&&r.instanceColor&&(s=r.instanceColor)),void 0!==s){const e=s.normalized,l=s.itemSize,c=n.get(s);if(void 0===c)continue;const h=c.buffer,u=c.type,d=c.bytesPerElement,p=!0===i.isWebGL2&&(u===t.INT||u===t.UNSIGNED_INT||s.gpuType===P);if(s.isInterleavedBufferAttribute){const n=s.data,i=n.stride,c=s.offset;if(n.isInstancedInterleavedBuffer){for(let t=0;t0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0)return"highp";e="mediump"}return"mediump"===e&&t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}const a="undefined"!=typeof WebGL2RenderingContext&&"WebGL2RenderingContext"===t.constructor.name;let s=void 0!==n.precision?n.precision:"highp";const o=r(s);o!==s&&(console.warn("THREE.WebGLRenderer:",s,"not supported, using",o,"instead."),s=o);const l=a||e.has("WEBGL_draw_buffers"),c=!0===n.logarithmicDepthBuffer,h=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),u=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),d=t.getParameter(t.MAX_TEXTURE_SIZE),p=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),f=t.getParameter(t.MAX_VERTEX_ATTRIBS),m=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),g=t.getParameter(t.MAX_VARYING_VECTORS),_=t.getParameter(t.MAX_FRAGMENT_UNIFORM_VECTORS),v=u>0,x=a||e.has("OES_texture_float");return{isWebGL2:a,drawBuffers:l,getMaxAnisotropy:function(){if(void 0!==i)return i;if(!0===e.has("EXT_texture_filter_anisotropic")){const n=e.get("EXT_texture_filter_anisotropic");i=t.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else i=0;return i},getMaxPrecision:r,precision:s,logarithmicDepthBuffer:c,maxTextures:h,maxVertexTextures:u,maxTextureSize:d,maxCubemapSize:p,maxAttributes:f,maxVertexUniforms:m,maxVaryings:g,maxFragmentUniforms:_,vertexTextures:v,floatFragmentTextures:x,floatVertexTextures:v&&x,maxSamples:a?t.getParameter(t.MAX_SAMPLES):0}}function Ri(t){const e=this;let n=null,i=0,r=!1,a=!1;const s=new pi,o=new St,l={value:null,needsUpdate:!1};function c(t,n,i,r){const a=null!==t?t.length:0;let c=null;if(0!==a){if(c=l.value,!0!==r||null===c){const e=i+4*a,r=n.matrixWorldInverse;o.getNormalMatrix(r),(null===c||c.length0);e.numPlanes=i,e.numIntersection=0}();else{const t=a?0:i,e=4*t;let r=f.clippingState||null;l.value=r,r=c(u,o,e,h);for(let t=0;t!==e;++t)r[t]=n[t];f.clippingState=r,this.numIntersection=d?this.numPlanes:0,this.numPlanes+=t}}}function Ci(t){let e=new WeakMap;function n(t,e){return 303===e?t.mapping=x:304===e&&(t.mapping=M),t}function i(t){const n=t.target;n.removeEventListener("dispose",i);const r=e.get(n);void 0!==r&&(e.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture&&!1===r.isRenderTargetTexture){const a=r.mapping;if(303===a||304===a){if(e.has(r)){return n(e.get(r).texture,r.mapping)}{const a=r.image;if(a&&a.height>0){const s=new ci(a.height/2);return s.fromEquirectangularTexture(t,r),e.set(r,s),r.addEventListener("dispose",i),n(s.texture,r.mapping)}return null}}}return r},dispose:function(){e=new WeakMap}}}class Li extends ri{constructor(t=-1,e=1,n=1,i=-1,r=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=n,this.bottom=i,this.near=r,this.far=a,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=null===t.view?null:Object.assign({},t.view),this}setViewOffset(t,e,n,i,r,a){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let r=n-t,a=n+t,s=i+e,o=i-e;if(null!==this.view&&this.view.enabled){const t=(this.right-this.left)/this.view.fullWidth/this.zoom,e=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=t*this.view.offsetX,a=r+t*this.view.width,s-=e*this.view.offsetY,o=s-e*this.view.height}this.projectionMatrix.makeOrthographic(r,a,s,o,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,null!==this.view&&(e.object.view=Object.assign({},this.view)),e}}const Pi=[.125,.215,.35,.446,.526,.582],Ui=20,Di=new Li,Ii=new fn;let Ni=null,Oi=0,Fi=0;const zi=(1+Math.sqrt(5))/2,Bi=1/zi,Hi=[new Zt(1,1,1),new Zt(-1,1,1),new Zt(1,1,-1),new Zt(-1,1,-1),new Zt(0,zi,Bi),new Zt(0,zi,-Bi),new Zt(Bi,0,zi),new Zt(-Bi,0,zi),new Zt(zi,Bi,0),new Zt(-zi,Bi,0)];class Gi{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,n=.1,i=100){Ni=this._renderer.getRenderTarget(),Oi=this._renderer.getActiveCubeFace(),Fi=this._renderer.getActiveMipmapLevel(),this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(t,n,i,r),e>0&&this._blur(r,0,0,e),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=Xi(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=Wi(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let t=0;tt-4?o=Pi[s-t+4-1]:0===s&&(o=0),i.push(o);const l=1/(a-2),c=-l,h=1+l,u=[c,c,h,c,h,h,c,c,h,h,c,h],d=6,p=6,f=3,m=2,g=1,_=new Float32Array(f*p*d),v=new Float32Array(m*p*d),x=new Float32Array(g*p*d);for(let t=0;t2?0:-1,i=[e,n,0,e+2/3,n,0,e+2/3,n+1,0,e,n,0,e+2/3,n+1,0,e,n+1,0];_.set(i,f*p*t),v.set(u,m*p*t);const r=[t,t,t,t,t,t];x.set(r,g*p*t)}const M=new Un;M.setAttribute("position",new yn(_,f)),M.setAttribute("uv",new yn(v,m)),M.setAttribute("faceIndex",new yn(x,g)),e.push(M),r>4&&r--}return{lodPlanes:e,sizeLods:n,sigmas:i}}(i)),this._blurMaterial=function(t,e,n){const i=new Float32Array(Ui),r=new Zt(0,1,0),a=new ii({name:"SphericalGaussianBlur",defines:{n:Ui,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/n,CUBEUV_MAX_MIP:`${t}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:ji(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1});return a}(i,t,e)}return i}_compileMaterial(t){const e=new Kn(this._lodPlanes[0],t);this._renderer.compile(e,Di)}_sceneToCubeUV(t,e,n,i){const r=new ai(90,1,e,n),a=[1,-1,1,1,1,1],s=[1,1,1,-1,-1,-1],o=this._renderer,c=o.autoClear,h=o.toneMapping;o.getClearColor(Ii),o.toneMapping=p,o.autoClear=!1;const u=new vn({name:"PMREM.Background",side:l,depthWrite:!1,depthTest:!1}),d=new Kn(new Qn,u);let f=!1;const m=t.background;m?m.isColor&&(u.color.copy(m),t.background=null,f=!0):(u.color.copy(Ii),f=!0);for(let e=0;e<6;e++){const n=e%3;0===n?(r.up.set(0,a[e],0),r.lookAt(s[e],0,0)):1===n?(r.up.set(0,0,a[e]),r.lookAt(0,s[e],0)):(r.up.set(0,a[e],0),r.lookAt(0,0,s[e]));const l=this._cubeSize;ki(i,n*l,e>2?l:0,l,l),o.setRenderTarget(i),f&&o.render(d,r),o.render(t,r)}d.geometry.dispose(),d.material.dispose(),o.toneMapping=h,o.autoClear=c,t.background=m}_textureToCubeUV(t,e){const n=this._renderer,i=t.mapping===x||t.mapping===M;i?(null===this._cubemapMaterial&&(this._cubemapMaterial=Xi()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===t.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=Wi());const r=i?this._cubemapMaterial:this._equirectMaterial,a=new Kn(this._lodPlanes[0],r);r.uniforms.envMap.value=t;const s=this._cubeSize;ki(e,0,0,3*s,2*s),n.setRenderTarget(e),n.render(a,Di)}_applyPMREM(t){const e=this._renderer,n=e.autoClear;e.autoClear=!1;for(let e=1;eUi&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${f} samples when the maximum is set to 20`);const m=[];let g=0;for(let t=0;t_-4?i-_+4:0),4*(this._cubeSize-v),3*v,2*v),o.setRenderTarget(e),o.render(c,Di)}}function Vi(t,e,n){const i=new Xt(t,e,n);return i.texture.mapping=y,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function ki(t,e,n,i,r){t.viewport.set(e,n,i,r),t.scissor.set(e,n,i,r)}function Wi(){return new ii({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:ji(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function Xi(){return new ii({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:ji(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function ji(){return"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t"}function Yi(t){let e=new WeakMap,n=null;function i(t){const n=t.target;n.removeEventListener("dispose",i);const r=e.get(n);void 0!==r&&(e.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){const a=r.mapping,s=303===a||304===a,o=a===x||a===M;if(s||o){if(r.isRenderTargetTexture&&!0===r.needsPMREMUpdate){r.needsPMREMUpdate=!1;let i=e.get(r);return null===n&&(n=new Gi(t)),i=s?n.fromEquirectangular(r,i):n.fromCubemap(r,i),e.set(r,i),i.texture}if(e.has(r))return e.get(r).texture;{const a=r.image;if(s&&a&&a.height>0||o&&a&&function(t){let e=0;const n=6;for(let i=0;ie.maxTextureSize&&(b=Math.ceil(T/e.maxTextureSize),T=e.maxTextureSize);const w=new Float32Array(T*b*4*p),A=new jt(w,T,b,p);A.type=D,A.needsUpdate=!0;const R=4*E;for(let L=0;L0)return t;const r=e*n;let a=sr[r];if(void 0===a&&(a=new Float32Array(r),sr[r]=a),0!==e){i.toArray(a,0);for(let i=1,r=0;i!==e;++i)r+=n,t[i].toArray(a,r)}return a}function dr(t,e){if(t.length!==e.length)return!1;for(let n=0,i=t.length;n":" "} ${r}: ${n[t]}`)}return i.join("\n")}(t.getShaderSource(e),i)}return r}function ha(t,e){const n=function(t){const e=Dt.getPrimaries(Dt.workingColorSpace),n=Dt.getPrimaries(t);let i;switch(e===n?i="":e===tt&&n===Q?i="LinearDisplayP3ToLinearSRGB":e===Q&&n===tt&&(i="LinearSRGBToLinearDisplayP3"),t){case Y:case Z:return[i,"LinearTransferOETF"];case j:case q:return[i,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",t),[i,"LinearTransferOETF"]}}(e);return`vec4 ${t}( vec4 value ) { return ${n[0]}( ${n[1]}( value ) ); }`}function ua(t,e){let n;switch(e){case f:n="Linear";break;case m:n="Reinhard";break;case g:n="OptimizedCineon";break;case _:n="ACESFilmic";break;case v:n="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),n="Linear"}return"vec3 "+t+"( vec3 color ) { return "+n+"ToneMapping( color ); }"}function da(t){return""!==t}function pa(t,e){const n=e.numSpotLightShadows+e.numSpotLightMaps-e.numSpotLightShadowsWithMaps;return t.replace(/NUM_DIR_LIGHTS/g,e.numDirLights).replace(/NUM_SPOT_LIGHTS/g,e.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,e.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,n).replace(/NUM_RECT_AREA_LIGHTS/g,e.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,e.numPointLights).replace(/NUM_HEMI_LIGHTS/g,e.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,e.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,e.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,e.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,e.numPointLightShadows)}function fa(t,e){return t.replace(/NUM_CLIPPING_PLANES/g,e.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,e.numClippingPlanes-e.numClipIntersection)}const ma=/^[ \t]*#include +<([\w\d./]+)>/gm;function ga(t){return t.replace(ma,va)}const _a=new Map([["encodings_fragment","colorspace_fragment"],["encodings_pars_fragment","colorspace_pars_fragment"],["output_fragment","opaque_fragment"]]);function va(t,e){let n=Mi[e];if(void 0===n){const t=_a.get(e);if(void 0===t)throw new Error("Can not resolve #include <"+e+">");n=Mi[t],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,t)}return ga(n)}const xa=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Ma(t){return t.replace(xa,ya)}function ya(t,e,n,i){let r="";for(let t=parseInt(e);t0&&(w+="\n"),A=[E,"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,T].filter(da).join("\n"),A.length>0&&(A+="\n")):(w=[Sa(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,T,n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+_:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.displacementMap?"#define USE_DISPLACEMENTMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.mapUv?"#define MAP_UV "+n.mapUv:"",n.alphaMapUv?"#define ALPHAMAP_UV "+n.alphaMapUv:"",n.lightMapUv?"#define LIGHTMAP_UV "+n.lightMapUv:"",n.aoMapUv?"#define AOMAP_UV "+n.aoMapUv:"",n.emissiveMapUv?"#define EMISSIVEMAP_UV "+n.emissiveMapUv:"",n.bumpMapUv?"#define BUMPMAP_UV "+n.bumpMapUv:"",n.normalMapUv?"#define NORMALMAP_UV "+n.normalMapUv:"",n.displacementMapUv?"#define DISPLACEMENTMAP_UV "+n.displacementMapUv:"",n.metalnessMapUv?"#define METALNESSMAP_UV "+n.metalnessMapUv:"",n.roughnessMapUv?"#define ROUGHNESSMAP_UV "+n.roughnessMapUv:"",n.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+n.anisotropyMapUv:"",n.clearcoatMapUv?"#define CLEARCOATMAP_UV "+n.clearcoatMapUv:"",n.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+n.clearcoatNormalMapUv:"",n.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+n.clearcoatRoughnessMapUv:"",n.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+n.iridescenceMapUv:"",n.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+n.iridescenceThicknessMapUv:"",n.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+n.sheenColorMapUv:"",n.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+n.sheenRoughnessMapUv:"",n.specularMapUv?"#define SPECULARMAP_UV "+n.specularMapUv:"",n.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+n.specularColorMapUv:"",n.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+n.specularIntensityMapUv:"",n.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+n.transmissionMapUv:"",n.thicknessMapUv?"#define THICKNESSMAP_UV "+n.thicknessMapUv:"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&!1===n.flatShading?"#define USE_MORPHNORMALS":"",n.morphColors&&n.isWebGL2?"#define USE_MORPHCOLORS":"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+n.morphTextureStride:"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_COUNT "+n.morphTargetsCount:"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+m:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.useLegacyLights?"#define LEGACY_LIGHTS":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1","\tattribute vec2 uv1;","#endif","#ifdef USE_UV2","\tattribute vec2 uv2;","#endif","#ifdef USE_UV3","\tattribute vec2 uv3;","#endif","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(da).join("\n"),A=[E,Sa(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,T,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+g:"",n.envMap?"#define "+_:"",n.envMap?"#define "+v:"",S?"#define CUBEUV_TEXEL_WIDTH "+S.texelWidth:"",S?"#define CUBEUV_TEXEL_HEIGHT "+S.texelHeight:"",S?"#define CUBEUV_MAX_MIP "+S.maxMip+".0":"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoat?"#define USE_CLEARCOAT":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescence?"#define USE_IRIDESCENCE":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaTest?"#define USE_ALPHATEST":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.sheen?"#define USE_SHEEN":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+m:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.useLegacyLights?"#define LEGACY_LIGHTS":"",n.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",n.toneMapping!==p?"#define TONE_MAPPING":"",n.toneMapping!==p?Mi.tonemapping_pars_fragment:"",n.toneMapping!==p?ua("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",n.opaque?"#define OPAQUE":"",Mi.colorspace_pars_fragment,ha("linearToOutputTexel",n.outputColorSpace),n.useDepthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(da).join("\n")),c=ga(c),c=pa(c,n),c=fa(c,n),f=ga(f),f=pa(f,n),f=fa(f,n),c=Ma(c),f=Ma(f),n.isWebGL2&&!0!==n.isRawShaderMaterial&&(R="#version 300 es\n",w=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+w,A=["precision mediump sampler2DArray;","#define varying in",n.glslVersion===it?"":"layout(location = 0) out highp vec4 pc_fragColor;",n.glslVersion===it?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+A);const C=R+w+c,L=R+A+f,P=sa(o,o.VERTEX_SHADER,C),U=sa(o,o.FRAGMENT_SHADER,L);function D(e){if(t.debug.checkShaderErrors){const n=o.getProgramInfoLog(b).trim(),i=o.getShaderInfoLog(P).trim(),r=o.getShaderInfoLog(U).trim();let a=!0,s=!0;if(!1===o.getProgramParameter(b,o.LINK_STATUS))if(a=!1,"function"==typeof t.debug.onShaderError)t.debug.onShaderError(o,b,P,U);else{const t=ca(o,P,"vertex"),e=ca(o,U,"fragment");console.error("THREE.WebGLProgram: Shader Error "+o.getError()+" - VALIDATE_STATUS "+o.getProgramParameter(b,o.VALIDATE_STATUS)+"\n\nProgram Info Log: "+n+"\n"+t+"\n"+e)}else""!==n?console.warn("THREE.WebGLProgram: Program Info Log:",n):""!==i&&""!==r||(s=!1);s&&(e.diagnostics={runnable:a,programLog:n,vertexShader:{log:i,prefix:w},fragmentShader:{log:r,prefix:A}})}o.deleteShader(P),o.deleteShader(U),I=new aa(o,b),N=function(t,e){const n={},i=t.getProgramParameter(e,t.ACTIVE_ATTRIBUTES);for(let r=0;r0,Z=a.clearcoat>0,K=a.iridescence>0,Q=a.sheen>0,tt=a.transmission>0,et=q&&!!a.anisotropyMap,nt=Z&&!!a.clearcoatMap,it=Z&&!!a.clearcoatNormalMap,rt=Z&&!!a.clearcoatRoughnessMap,at=K&&!!a.iridescenceMap,st=K&&!!a.iridescenceThicknessMap,ot=Q&&!!a.sheenColorMap,lt=Q&&!!a.sheenRoughnessMap,ct=!!a.specularMap,ht=!!a.specularColorMap,ut=!!a.specularIntensityMap,dt=tt&&!!a.transmissionMap,pt=tt&&!!a.thicknessMap,ft=!!a.gradientMap,mt=!!a.alphaMap,gt=a.alphaTest>0,_t=!!a.alphaHash,vt=!!a.extensions,xt=!!S.attributes.uv1,Mt=!!S.attributes.uv2,yt=!!S.attributes.uv3;let St=p;return a.toneMapped&&(null!==I&&!0!==I.isXRRenderTarget||(St=t.toneMapping)),{isWebGL2:u,shaderID:w,shaderType:a.type,shaderName:a.name,vertexShader:C,fragmentShader:L,defines:a.defines,customVertexShaderID:P,customFragmentShaderID:U,isRawShaderMaterial:!0===a.isRawShaderMaterial,glslVersion:a.glslVersion,precision:m,instancing:N,instancingColor:N&&null!==x.instanceColor,supportsVertexTextures:f,outputColorSpace:null===I?t.outputColorSpace:!0===I.isXRRenderTarget?I.texture.colorSpace:Y,map:O,matcap:F,envMap:z,envMapMode:z&&T.mapping,envMapCubeUVHeight:b,aoMap:B,lightMap:H,bumpMap:G,normalMap:V,displacementMap:f&&k,emissiveMap:W,normalMapObjectSpace:V&&1===a.normalMapType,normalMapTangentSpace:V&&0===a.normalMapType,metalnessMap:X,roughnessMap:j,anisotropy:q,anisotropyMap:et,clearcoat:Z,clearcoatMap:nt,clearcoatNormalMap:it,clearcoatRoughnessMap:rt,iridescence:K,iridescenceMap:at,iridescenceThicknessMap:st,sheen:Q,sheenColorMap:ot,sheenRoughnessMap:lt,specularMap:ct,specularColorMap:ht,specularIntensityMap:ut,transmission:tt,transmissionMap:dt,thicknessMap:pt,gradientMap:ft,opaque:!1===a.transparent&&1===a.blending,alphaMap:mt,alphaTest:gt,alphaHash:_t,combine:a.combine,mapUv:O&&_(a.map.channel),aoMapUv:B&&_(a.aoMap.channel),lightMapUv:H&&_(a.lightMap.channel),bumpMapUv:G&&_(a.bumpMap.channel),normalMapUv:V&&_(a.normalMap.channel),displacementMapUv:k&&_(a.displacementMap.channel),emissiveMapUv:W&&_(a.emissiveMap.channel),metalnessMapUv:X&&_(a.metalnessMap.channel),roughnessMapUv:j&&_(a.roughnessMap.channel),anisotropyMapUv:et&&_(a.anisotropyMap.channel),clearcoatMapUv:nt&&_(a.clearcoatMap.channel),clearcoatNormalMapUv:it&&_(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:rt&&_(a.clearcoatRoughnessMap.channel),iridescenceMapUv:at&&_(a.iridescenceMap.channel),iridescenceThicknessMapUv:st&&_(a.iridescenceThicknessMap.channel),sheenColorMapUv:ot&&_(a.sheenColorMap.channel),sheenRoughnessMapUv:lt&&_(a.sheenRoughnessMap.channel),specularMapUv:ct&&_(a.specularMap.channel),specularColorMapUv:ht&&_(a.specularColorMap.channel),specularIntensityMapUv:ut&&_(a.specularIntensityMap.channel),transmissionMapUv:dt&&_(a.transmissionMap.channel),thicknessMapUv:pt&&_(a.thicknessMap.channel),alphaMapUv:mt&&_(a.alphaMap.channel),vertexTangents:!!S.attributes.tangent&&(V||q),vertexColors:a.vertexColors,vertexAlphas:!0===a.vertexColors&&!!S.attributes.color&&4===S.attributes.color.itemSize,vertexUv1s:xt,vertexUv2s:Mt,vertexUv3s:yt,pointsUvs:!0===x.isPoints&&!!S.attributes.uv&&(O||mt),fog:!!M,useFog:!0===a.fog,fogExp2:M&&M.isFogExp2,flatShading:!0===a.flatShading,sizeAttenuation:!0===a.sizeAttenuation,logarithmicDepthBuffer:d,skinning:!0===x.isSkinnedMesh,morphTargets:void 0!==S.morphAttributes.position,morphNormals:void 0!==S.morphAttributes.normal,morphColors:void 0!==S.morphAttributes.color,morphTargetsCount:R,morphTextureStride:D,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numSpotLightMaps:o.spotLightMap.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numSpotLightShadowsWithMaps:o.numSpotLightShadowsWithMaps,numLightProbes:o.numLightProbes,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:a.dithering,shadowMapEnabled:t.shadowMap.enabled&&h.length>0,shadowMapType:t.shadowMap.type,toneMapping:St,useLegacyLights:t._useLegacyLights,decodeVideoTexture:O&&!0===a.map.isVideoTexture&&Dt.getTransfer(a.map.colorSpace)===J,premultipliedAlpha:a.premultipliedAlpha,doubleSided:2===a.side,flipSided:a.side===l,useDepthPacking:a.depthPacking>=0,depthPacking:a.depthPacking||0,index0AttributeName:a.index0AttributeName,extensionDerivatives:vt&&!0===a.extensions.derivatives,extensionFragDepth:vt&&!0===a.extensions.fragDepth,extensionDrawBuffers:vt&&!0===a.extensions.drawBuffers,extensionShaderTextureLOD:vt&&!0===a.extensions.shaderTextureLOD,rendererExtensionFragDepth:u||i.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||i.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||i.has("EXT_shader_texture_lod"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:a.customProgramCacheKey()}},getProgramCacheKey:function(e){const n=[];if(e.shaderID?n.push(e.shaderID):(n.push(e.customVertexShaderID),n.push(e.customFragmentShaderID)),void 0!==e.defines)for(const t in e.defines)n.push(t),n.push(e.defines[t]);return!1===e.isRawShaderMaterial&&(!function(t,e){t.push(e.precision),t.push(e.outputColorSpace),t.push(e.envMapMode),t.push(e.envMapCubeUVHeight),t.push(e.mapUv),t.push(e.alphaMapUv),t.push(e.lightMapUv),t.push(e.aoMapUv),t.push(e.bumpMapUv),t.push(e.normalMapUv),t.push(e.displacementMapUv),t.push(e.emissiveMapUv),t.push(e.metalnessMapUv),t.push(e.roughnessMapUv),t.push(e.anisotropyMapUv),t.push(e.clearcoatMapUv),t.push(e.clearcoatNormalMapUv),t.push(e.clearcoatRoughnessMapUv),t.push(e.iridescenceMapUv),t.push(e.iridescenceThicknessMapUv),t.push(e.sheenColorMapUv),t.push(e.sheenRoughnessMapUv),t.push(e.specularMapUv),t.push(e.specularColorMapUv),t.push(e.specularIntensityMapUv),t.push(e.transmissionMapUv),t.push(e.thicknessMapUv),t.push(e.combine),t.push(e.fogExp2),t.push(e.sizeAttenuation),t.push(e.morphTargetsCount),t.push(e.morphAttributeCount),t.push(e.numDirLights),t.push(e.numPointLights),t.push(e.numSpotLights),t.push(e.numSpotLightMaps),t.push(e.numHemiLights),t.push(e.numRectAreaLights),t.push(e.numDirLightShadows),t.push(e.numPointLightShadows),t.push(e.numSpotLightShadows),t.push(e.numSpotLightShadowsWithMaps),t.push(e.numLightProbes),t.push(e.shadowMapType),t.push(e.toneMapping),t.push(e.numClippingPlanes),t.push(e.numClipIntersection),t.push(e.depthPacking)}(n,e),function(t,e){o.disableAll(),e.isWebGL2&&o.enable(0);e.supportsVertexTextures&&o.enable(1);e.instancing&&o.enable(2);e.instancingColor&&o.enable(3);e.matcap&&o.enable(4);e.envMap&&o.enable(5);e.normalMapObjectSpace&&o.enable(6);e.normalMapTangentSpace&&o.enable(7);e.clearcoat&&o.enable(8);e.iridescence&&o.enable(9);e.alphaTest&&o.enable(10);e.vertexColors&&o.enable(11);e.vertexAlphas&&o.enable(12);e.vertexUv1s&&o.enable(13);e.vertexUv2s&&o.enable(14);e.vertexUv3s&&o.enable(15);e.vertexTangents&&o.enable(16);e.anisotropy&&o.enable(17);e.alphaHash&&o.enable(18);t.push(o.mask),o.disableAll(),e.fog&&o.enable(0);e.useFog&&o.enable(1);e.flatShading&&o.enable(2);e.logarithmicDepthBuffer&&o.enable(3);e.skinning&&o.enable(4);e.morphTargets&&o.enable(5);e.morphNormals&&o.enable(6);e.morphColors&&o.enable(7);e.premultipliedAlpha&&o.enable(8);e.shadowMapEnabled&&o.enable(9);e.useLegacyLights&&o.enable(10);e.doubleSided&&o.enable(11);e.flipSided&&o.enable(12);e.useDepthPacking&&o.enable(13);e.dithering&&o.enable(14);e.transmission&&o.enable(15);e.sheen&&o.enable(16);e.opaque&&o.enable(17);e.pointsUvs&&o.enable(18);e.decodeVideoTexture&&o.enable(19);t.push(o.mask)}(n,e),n.push(t.outputColorSpace)),n.push(e.customProgramCacheKey),n.join()},getUniforms:function(t){const e=g[t.type];let n;if(e){const t=Si[e];n=ni.clone(t.uniforms)}else n=t.uniforms;return n},acquireProgram:function(e,n){let i;for(let t=0,e=h.length;t0?i.push(h):!0===s.transparent?r.push(h):n.push(h)},unshift:function(t,e,s,o,l,c){const h=a(t,e,s,o,l,c);s.transmission>0?i.unshift(h):!0===s.transparent?r.unshift(h):n.unshift(h)},finish:function(){for(let n=e,i=t.length;n1&&n.sort(t||Ca),i.length>1&&i.sort(e||La),r.length>1&&r.sort(e||La)}}}function Ua(){let t=new WeakMap;return{get:function(e,n){const i=t.get(e);let r;return void 0===i?(r=new Pa,t.set(e,[r])):n>=i.length?(r=new Pa,i.push(r)):r=i[n],r},dispose:function(){t=new WeakMap}}}function Da(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let n;switch(e.type){case"DirectionalLight":n={direction:new Zt,color:new fn};break;case"SpotLight":n={position:new Zt,direction:new Zt,color:new fn,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new Zt,color:new fn,distance:0,decay:0};break;case"HemisphereLight":n={direction:new Zt,skyColor:new fn,groundColor:new fn};break;case"RectAreaLight":n={color:new fn,position:new Zt,halfWidth:new Zt,halfHeight:new Zt}}return t[e.id]=n,n}}}let Ia=0;function Na(t,e){return(e.castShadow?2:0)-(t.castShadow?2:0)+(e.map?1:0)-(t.map?1:0)}function Oa(t,e){const n=new Da,i=function(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let n;switch(e.type){case"DirectionalLight":case"SpotLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new yt};break;case"PointLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new yt,shadowCameraNear:1,shadowCameraFar:1e3}}return t[e.id]=n,n}}}(),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let t=0;t<9;t++)r.probe.push(new Zt);const a=new Zt,s=new be,o=new be;return{setup:function(a,s){let o=0,l=0,c=0;for(let t=0;t<9;t++)r.probe[t].set(0,0,0);let h=0,u=0,d=0,p=0,f=0,m=0,g=0,_=0,v=0,x=0,M=0;a.sort(Na);const y=!0===s?Math.PI:1;for(let t=0,e=a.length;t0&&(e.isWebGL2||!0===t.has("OES_texture_float_linear")?(r.rectAreaLTC1=yi.LTC_FLOAT_1,r.rectAreaLTC2=yi.LTC_FLOAT_2):!0===t.has("OES_texture_half_float_linear")?(r.rectAreaLTC1=yi.LTC_HALF_1,r.rectAreaLTC2=yi.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),r.ambient[0]=o,r.ambient[1]=l,r.ambient[2]=c;const S=r.hash;S.directionalLength===h&&S.pointLength===u&&S.spotLength===d&&S.rectAreaLength===p&&S.hemiLength===f&&S.numDirectionalShadows===m&&S.numPointShadows===g&&S.numSpotShadows===_&&S.numSpotMaps===v&&S.numLightProbes===M||(r.directional.length=h,r.spot.length=d,r.rectArea.length=p,r.point.length=u,r.hemi.length=f,r.directionalShadow.length=m,r.directionalShadowMap.length=m,r.pointShadow.length=g,r.pointShadowMap.length=g,r.spotShadow.length=_,r.spotShadowMap.length=_,r.directionalShadowMatrix.length=m,r.pointShadowMatrix.length=g,r.spotLightMatrix.length=_+v-x,r.spotLightMap.length=v,r.numSpotLightShadowsWithMaps=x,r.numLightProbes=M,S.directionalLength=h,S.pointLength=u,S.spotLength=d,S.rectAreaLength=p,S.hemiLength=f,S.numDirectionalShadows=m,S.numPointShadows=g,S.numSpotShadows=_,S.numSpotMaps=v,S.numLightProbes=M,r.version=Ia++)},setupView:function(t,e){let n=0,i=0,l=0,c=0,h=0;const u=e.matrixWorldInverse;for(let e=0,d=t.length;e=a.length?(s=new Fa(t,e),a.push(s)):s=a[r],s},dispose:function(){n=new WeakMap}}}class Ba extends _n{constructor(t){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=3200,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}}class Ha extends _n{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}}function Ga(t,e,n){let i=new gi;const a=new yt,c=new yt,h=new kt,u=new Ba({depthPacking:3201}),d=new Ha,p={},f=n.maxTextureSize,m={[o]:l,[l]:o,2:2},g=new ii({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new yt},radius:{value:4}},vertexShader:"void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),_=g.clone();_.defines.HORIZONTAL_PASS=1;const v=new Un;v.setAttribute("position",new yn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const x=new Kn(v,g),M=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=r;let y=this.type;function S(n,i){const r=e.update(x);g.defines.VSM_SAMPLES!==n.blurSamples&&(g.defines.VSM_SAMPLES=n.blurSamples,_.defines.VSM_SAMPLES=n.blurSamples,g.needsUpdate=!0,_.needsUpdate=!0),null===n.mapPass&&(n.mapPass=new Xt(a.x,a.y)),g.uniforms.shadow_pass.value=n.map.texture,g.uniforms.resolution.value=n.mapSize,g.uniforms.radius.value=n.radius,t.setRenderTarget(n.mapPass),t.clear(),t.renderBufferDirect(i,null,r,g,x,null),_.uniforms.shadow_pass.value=n.mapPass.texture,_.uniforms.resolution.value=n.mapSize,_.uniforms.radius.value=n.radius,t.setRenderTarget(n.map),t.clear(),t.renderBufferDirect(i,null,r,_,x,null)}function E(e,n,i,r){let a=null;const o=!0===i.isPointLight?e.customDistanceMaterial:e.customDepthMaterial;if(void 0!==o)a=o;else if(a=!0===i.isPointLight?d:u,t.localClippingEnabled&&!0===n.clipShadows&&Array.isArray(n.clippingPlanes)&&0!==n.clippingPlanes.length||n.displacementMap&&0!==n.displacementScale||n.alphaMap&&n.alphaTest>0||n.map&&n.alphaTest>0){const t=a.uuid,e=n.uuid;let i=p[t];void 0===i&&(i={},p[t]=i);let r=i[e];void 0===r&&(r=a.clone(),i[e]=r),a=r}if(a.visible=n.visible,a.wireframe=n.wireframe,a.side=r===s?null!==n.shadowSide?n.shadowSide:n.side:null!==n.shadowSide?n.shadowSide:m[n.side],a.alphaMap=n.alphaMap,a.alphaTest=n.alphaTest,a.map=n.map,a.clipShadows=n.clipShadows,a.clippingPlanes=n.clippingPlanes,a.clipIntersection=n.clipIntersection,a.displacementMap=n.displacementMap,a.displacementScale=n.displacementScale,a.displacementBias=n.displacementBias,a.wireframeLinewidth=n.wireframeLinewidth,a.linewidth=n.linewidth,!0===i.isPointLight&&!0===a.isMeshDistanceMaterial){t.properties.get(a).light=i}return a}function T(n,r,a,o,l){if(!1===n.visible)return;if(n.layers.test(r.layers)&&(n.isMesh||n.isLine||n.isPoints)&&(n.castShadow||n.receiveShadow&&l===s)&&(!n.frustumCulled||i.intersectsObject(n))){n.modelViewMatrix.multiplyMatrices(a.matrixWorldInverse,n.matrixWorld);const i=e.update(n),r=n.material;if(Array.isArray(r)){const e=i.groups;for(let s=0,c=e.length;sf||a.y>f)&&(a.x>f&&(c.x=Math.floor(f/g.x),a.x=c.x*g.x,u.mapSize.x=c.x),a.y>f&&(c.y=Math.floor(f/g.y),a.y=c.y*g.y,u.mapSize.y=c.y)),null===u.map||!0===p||!0===m){const t=this.type!==s?{minFilter:b,magFilter:b}:{};null!==u.map&&u.map.dispose(),u.map=new Xt(a.x,a.y,t),u.map.texture.name=l.name+".shadowMap",u.camera.updateProjectionMatrix()}t.setRenderTarget(u.map),t.clear();const _=u.getViewportCount();for(let t=0;t<_;t++){const e=u.getViewport(t);h.set(c.x*e.x,c.y*e.y,c.x*e.z,c.y*e.w),d.viewport(h),u.updateMatrices(l,t),i=u.getFrustum(),T(n,r,u.camera,l,this.type)}!0!==u.isPointLightShadow&&this.type===s&&S(u,r),u.needsUpdate=!1}y=this.type,M.needsUpdate=!1,t.setRenderTarget(o,l,u)}}function Va(t,e,n){const i=n.isWebGL2;const r=new function(){let e=!1;const n=new kt;let i=null;const r=new kt(0,0,0,0);return{setMask:function(n){i===n||e||(t.colorMask(n,n,n,n),i=n)},setLocked:function(t){e=t},setClear:function(e,i,a,s,o){!0===o&&(e*=s,i*=s,a*=s),n.set(e,i,a,s),!1===r.equals(n)&&(t.clearColor(e,i,a,s),r.copy(n))},reset:function(){e=!1,i=null,r.set(-1,0,0,0)}}},a=new function(){let e=!1,n=null,i=null,r=null;return{setTest:function(e){e?W(t.DEPTH_TEST):X(t.DEPTH_TEST)},setMask:function(i){n===i||e||(t.depthMask(i),n=i)},setFunc:function(e){if(i!==e){switch(e){case 0:t.depthFunc(t.NEVER);break;case 1:t.depthFunc(t.ALWAYS);break;case 2:t.depthFunc(t.LESS);break;case 3:default:t.depthFunc(t.LEQUAL);break;case 4:t.depthFunc(t.EQUAL);break;case 5:t.depthFunc(t.GEQUAL);break;case 6:t.depthFunc(t.GREATER);break;case 7:t.depthFunc(t.NOTEQUAL)}i=e}},setLocked:function(t){e=t},setClear:function(e){r!==e&&(t.clearDepth(e),r=e)},reset:function(){e=!1,n=null,i=null,r=null}}},s=new function(){let e=!1,n=null,i=null,r=null,a=null,s=null,o=null,l=null,c=null;return{setTest:function(n){e||(n?W(t.STENCIL_TEST):X(t.STENCIL_TEST))},setMask:function(i){n===i||e||(t.stencilMask(i),n=i)},setFunc:function(e,n,s){i===e&&r===n&&a===s||(t.stencilFunc(e,n,s),i=e,r=n,a=s)},setOp:function(e,n,i){s===e&&o===n&&l===i||(t.stencilOp(e,n,i),s=e,o=n,l=i)},setLocked:function(t){e=t},setClear:function(e){c!==e&&(t.clearStencil(e),c=e)},reset:function(){e=!1,n=null,i=null,r=null,a=null,s=null,o=null,l=null,c=null}}},o=new WeakMap,h=new WeakMap;let u={},d={},p=new WeakMap,f=[],m=null,g=!1,_=null,v=null,x=null,M=null,y=null,S=null,E=null,T=new fn(0,0,0),b=0,w=!1,A=null,R=null,C=null,L=null,P=null;const U=t.getParameter(t.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let D=!1,I=0;const N=t.getParameter(t.VERSION);-1!==N.indexOf("WebGL")?(I=parseFloat(/^WebGL (\d)/.exec(N)[1]),D=I>=1):-1!==N.indexOf("OpenGL ES")&&(I=parseFloat(/^OpenGL ES (\d)/.exec(N)[1]),D=I>=2);let O=null,F={};const z=t.getParameter(t.SCISSOR_BOX),B=t.getParameter(t.VIEWPORT),H=(new kt).fromArray(z),G=(new kt).fromArray(B);function V(e,n,r,a){const s=new Uint8Array(4),o=t.createTexture();t.bindTexture(e,o),t.texParameteri(e,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(e,t.TEXTURE_MAG_FILTER,t.NEAREST);for(let o=0;oi||t.height>i)&&(r=i/Math.max(t.width,t.height)),r<1||!0===e){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){const i=e?_t:Math.floor,a=i(r*t.width),s=i(r*t.height);void 0===m&&(m=v(a,s));const o=n?v(a,s):m;o.width=a,o.height=s;return o.getContext("2d").drawImage(t,0,0,a,s),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+t.width+"x"+t.height+") to ("+a+"x"+s+")."),o}return"data"in t&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+t.width+"x"+t.height+")."),t}return t}function M(t){return gt(t.width)&>(t.height)}function y(t,e){return t.generateMipmaps&&e&&t.minFilter!==b&&t.minFilter!==A}function P(e){t.generateMipmap(e)}function B(n,i,r,a,s=!1){if(!1===o)return i;if(null!==n){if(void 0!==t[n])return t[n];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+n+"'")}let l=i;if(i===t.RED&&(r===t.FLOAT&&(l=t.R32F),r===t.HALF_FLOAT&&(l=t.R16F),r===t.UNSIGNED_BYTE&&(l=t.R8)),i===t.RED_INTEGER&&(r===t.UNSIGNED_BYTE&&(l=t.R8UI),r===t.UNSIGNED_SHORT&&(l=t.R16UI),r===t.UNSIGNED_INT&&(l=t.R32UI),r===t.BYTE&&(l=t.R8I),r===t.SHORT&&(l=t.R16I),r===t.INT&&(l=t.R32I)),i===t.RG&&(r===t.FLOAT&&(l=t.RG32F),r===t.HALF_FLOAT&&(l=t.RG16F),r===t.UNSIGNED_BYTE&&(l=t.RG8)),i===t.RGBA){const e=s?K:Dt.getTransfer(a);r===t.FLOAT&&(l=t.RGBA32F),r===t.HALF_FLOAT&&(l=t.RGBA16F),r===t.UNSIGNED_BYTE&&(l=e===J?t.SRGB8_ALPHA8:t.RGBA8),r===t.UNSIGNED_SHORT_4_4_4_4&&(l=t.RGBA4),r===t.UNSIGNED_SHORT_5_5_5_1&&(l=t.RGB5_A1)}return l!==t.R16F&&l!==t.R32F&&l!==t.RG16F&&l!==t.RG32F&&l!==t.RGBA16F&&l!==t.RGBA32F||e.get("EXT_color_buffer_float"),l}function H(t,e,n){return!0===y(t,n)||t.isFramebufferTexture&&t.minFilter!==b&&t.minFilter!==A?Math.log2(Math.max(e.width,e.height))+1:void 0!==t.mipmaps&&t.mipmaps.length>0?t.mipmaps.length:t.isCompressedTexture&&Array.isArray(t.image)?e.mipmaps.length:1}function G(e){return e===b||1004===e||e===w?t.NEAREST:t.LINEAR}function V(t){const e=t.target;e.removeEventListener("dispose",V),function(t){const e=i.get(t);if(void 0===e.__webglInit)return;const n=t.source,r=g.get(n);if(r){const i=r[e.__cacheKey];i.usedTimes--,0===i.usedTimes&&W(t),0===Object.keys(r).length&&g.delete(n)}i.remove(t)}(e),e.isVideoTexture&&f.delete(e)}function k(e){const n=e.target;n.removeEventListener("dispose",k),function(e){const n=e.texture,r=i.get(e),a=i.get(n);void 0!==a.__webglTexture&&(t.deleteTexture(a.__webglTexture),s.memory.textures--);e.depthTexture&&e.depthTexture.dispose();if(e.isWebGLCubeRenderTarget)for(let e=0;e<6;e++){if(Array.isArray(r.__webglFramebuffer[e]))for(let n=0;n0&&a.__version!==e.version){const t=e.image;if(null===t)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==t.complete)return void it(a,e,r);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}n.bindTexture(t.TEXTURE_2D,a.__webglTexture,t.TEXTURE0+r)}const Z={[S]:t.REPEAT,[E]:t.CLAMP_TO_EDGE,[T]:t.MIRRORED_REPEAT},Q={[b]:t.NEAREST,1004:t.NEAREST_MIPMAP_NEAREST,[w]:t.NEAREST_MIPMAP_LINEAR,[A]:t.LINEAR,1007:t.LINEAR_MIPMAP_NEAREST,[R]:t.LINEAR_MIPMAP_LINEAR},tt={512:t.NEVER,519:t.ALWAYS,513:t.LESS,515:t.LEQUAL,514:t.EQUAL,518:t.GEQUAL,516:t.GREATER,517:t.NOTEQUAL};function et(n,a,s){if(s?(t.texParameteri(n,t.TEXTURE_WRAP_S,Z[a.wrapS]),t.texParameteri(n,t.TEXTURE_WRAP_T,Z[a.wrapT]),n!==t.TEXTURE_3D&&n!==t.TEXTURE_2D_ARRAY||t.texParameteri(n,t.TEXTURE_WRAP_R,Z[a.wrapR]),t.texParameteri(n,t.TEXTURE_MAG_FILTER,Q[a.magFilter]),t.texParameteri(n,t.TEXTURE_MIN_FILTER,Q[a.minFilter])):(t.texParameteri(n,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(n,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),n!==t.TEXTURE_3D&&n!==t.TEXTURE_2D_ARRAY||t.texParameteri(n,t.TEXTURE_WRAP_R,t.CLAMP_TO_EDGE),a.wrapS===E&&a.wrapT===E||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),t.texParameteri(n,t.TEXTURE_MAG_FILTER,G(a.magFilter)),t.texParameteri(n,t.TEXTURE_MIN_FILTER,G(a.minFilter)),a.minFilter!==b&&a.minFilter!==A&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),a.compareFunction&&(t.texParameteri(n,t.TEXTURE_COMPARE_MODE,t.COMPARE_REF_TO_TEXTURE),t.texParameteri(n,t.TEXTURE_COMPARE_FUNC,tt[a.compareFunction])),!0===e.has("EXT_texture_filter_anisotropic")){const s=e.get("EXT_texture_filter_anisotropic");if(a.magFilter===b)return;if(a.minFilter!==w&&a.minFilter!==R)return;if(a.type===D&&!1===e.has("OES_texture_float_linear"))return;if(!1===o&&a.type===I&&!1===e.has("OES_texture_half_float_linear"))return;(a.anisotropy>1||i.get(a).__currentAnisotropy)&&(t.texParameterf(n,s.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(a.anisotropy,r.getMaxAnisotropy())),i.get(a).__currentAnisotropy=a.anisotropy)}}function nt(e,n){let i=!1;void 0===e.__webglInit&&(e.__webglInit=!0,n.addEventListener("dispose",V));const r=n.source;let a=g.get(r);void 0===a&&(a={},g.set(r,a));const o=function(t){const e=[];return e.push(t.wrapS),e.push(t.wrapT),e.push(t.wrapR||0),e.push(t.magFilter),e.push(t.minFilter),e.push(t.anisotropy),e.push(t.internalFormat),e.push(t.format),e.push(t.type),e.push(t.generateMipmaps),e.push(t.premultiplyAlpha),e.push(t.flipY),e.push(t.unpackAlignment),e.push(t.colorSpace),e.join()}(n);if(o!==e.__cacheKey){void 0===a[o]&&(a[o]={texture:t.createTexture(),usedTimes:0},s.memory.textures++,i=!0),a[o].usedTimes++;const r=a[e.__cacheKey];void 0!==r&&(a[e.__cacheKey].usedTimes--,0===r.usedTimes&&W(n)),e.__cacheKey=o,e.__webglTexture=a[o].texture}return i}function it(e,r,s){let l=t.TEXTURE_2D;(r.isDataArrayTexture||r.isCompressedArrayTexture)&&(l=t.TEXTURE_2D_ARRAY),r.isData3DTexture&&(l=t.TEXTURE_3D);const c=nt(e,r),u=r.source;n.bindTexture(l,e.__webglTexture,t.TEXTURE0+s);const d=i.get(u);if(u.version!==d.__version||!0===c){n.activeTexture(t.TEXTURE0+s);const e=Dt.getPrimaries(Dt.workingColorSpace),i=r.colorSpace===X?null:Dt.getPrimaries(r.colorSpace),p=r.colorSpace===X||e===i?t.NONE:t.BROWSER_DEFAULT_WEBGL;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,r.flipY),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r.premultiplyAlpha),t.pixelStorei(t.UNPACK_ALIGNMENT,r.unpackAlignment),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,p);const f=function(t){return!o&&(t.wrapS!==E||t.wrapT!==E||t.minFilter!==b&&t.minFilter!==A)}(r)&&!1===M(r.image);let m=x(r.image,f,!1,h);m=ht(r,m);const g=M(m)||o,_=a.convert(r.format,r.colorSpace);let v,S=a.convert(r.type),T=B(r.internalFormat,_,S,r.colorSpace,r.isVideoTexture);et(l,r,g);const w=r.mipmaps,R=o&&!0!==r.isVideoTexture,C=void 0===d.__version||!0===c,I=H(r,m,g);if(r.isDepthTexture)T=t.DEPTH_COMPONENT,o?T=r.type===D?t.DEPTH_COMPONENT32F:r.type===U?t.DEPTH_COMPONENT24:r.type===N?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT16:r.type===D&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),r.format===F&&T===t.DEPTH_COMPONENT&&r.type!==L&&r.type!==U&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),r.type=U,S=a.convert(r.type)),r.format===z&&T===t.DEPTH_COMPONENT&&(T=t.DEPTH_STENCIL,r.type!==N&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),r.type=N,S=a.convert(r.type))),C&&(R?n.texStorage2D(t.TEXTURE_2D,1,T,m.width,m.height):n.texImage2D(t.TEXTURE_2D,0,T,m.width,m.height,0,_,S,null));else if(r.isDataTexture)if(w.length>0&&g){R&&C&&n.texStorage2D(t.TEXTURE_2D,I,T,w[0].width,w[0].height);for(let e=0,i=w.length;e>=1,i>>=1}}else if(w.length>0&&g){R&&C&&n.texStorage2D(t.TEXTURE_2D,I,T,w[0].width,w[0].height);for(let e=0,i=w.length;e>c),i=Math.max(1,r.height>>c);l===t.TEXTURE_3D||l===t.TEXTURE_2D_ARRAY?n.texImage3D(l,c,p,e,i,r.depth,0,h,u,null):n.texImage2D(l,c,p,e,i,0,h,u,null)}n.bindFramebuffer(t.FRAMEBUFFER,e),ct(r)?d.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,o,l,i.get(s).__webglTexture,0,lt(r)):(l===t.TEXTURE_2D||l>=t.TEXTURE_CUBE_MAP_POSITIVE_X&&l<=t.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&t.framebufferTexture2D(t.FRAMEBUFFER,o,l,i.get(s).__webglTexture,c),n.bindFramebuffer(t.FRAMEBUFFER,null)}function st(e,n,i){if(t.bindRenderbuffer(t.RENDERBUFFER,e),n.depthBuffer&&!n.stencilBuffer){let r=!0===o?t.DEPTH_COMPONENT24:t.DEPTH_COMPONENT16;if(i||ct(n)){const e=n.depthTexture;e&&e.isDepthTexture&&(e.type===D?r=t.DEPTH_COMPONENT32F:e.type===U&&(r=t.DEPTH_COMPONENT24));const i=lt(n);ct(n)?d.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,i,r,n.width,n.height):t.renderbufferStorageMultisample(t.RENDERBUFFER,i,r,n.width,n.height)}else t.renderbufferStorage(t.RENDERBUFFER,r,n.width,n.height);t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,e)}else if(n.depthBuffer&&n.stencilBuffer){const r=lt(n);i&&!1===ct(n)?t.renderbufferStorageMultisample(t.RENDERBUFFER,r,t.DEPTH24_STENCIL8,n.width,n.height):ct(n)?d.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,r,t.DEPTH24_STENCIL8,n.width,n.height):t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_STENCIL,n.width,n.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,e)}else{const e=!0===n.isWebGLMultipleRenderTargets?n.texture:[n.texture];for(let r=0;r0&&!0===e.has("WEBGL_multisampled_render_to_texture")&&!1!==n.__useRenderToTexture}function ht(t,n){const i=t.colorSpace,r=t.format,a=t.type;return!0===t.isCompressedTexture||!0===t.isVideoTexture||t.format===rt||i!==Y&&i!==X&&(Dt.getTransfer(i)===J?!1===o?!0===e.has("EXT_sRGB")&&r===O?(t.format=rt,t.minFilter=A,t.generateMipmaps=!1):n=Ft.sRGBToLinear(n):r===O&&a===C||console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",i)),n}this.allocateTextureUnit=function(){const t=j;return t>=l&&console.warn("THREE.WebGLTextures: Trying to use "+t+" texture units while this GPU supports only "+l),j+=1,t},this.resetTextureUnits=function(){j=0},this.setTexture2D=q,this.setTexture2DArray=function(e,r){const a=i.get(e);e.version>0&&a.__version!==e.version?it(a,e,r):n.bindTexture(t.TEXTURE_2D_ARRAY,a.__webglTexture,t.TEXTURE0+r)},this.setTexture3D=function(e,r){const a=i.get(e);e.version>0&&a.__version!==e.version?it(a,e,r):n.bindTexture(t.TEXTURE_3D,a.__webglTexture,t.TEXTURE0+r)},this.setTextureCube=function(e,r){const s=i.get(e);e.version>0&&s.__version!==e.version?function(e,r,s){if(6!==r.image.length)return;const l=nt(e,r),h=r.source;n.bindTexture(t.TEXTURE_CUBE_MAP,e.__webglTexture,t.TEXTURE0+s);const u=i.get(h);if(h.version!==u.__version||!0===l){n.activeTexture(t.TEXTURE0+s);const e=Dt.getPrimaries(Dt.workingColorSpace),i=r.colorSpace===X?null:Dt.getPrimaries(r.colorSpace),d=r.colorSpace===X||e===i?t.NONE:t.BROWSER_DEFAULT_WEBGL;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,r.flipY),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r.premultiplyAlpha),t.pixelStorei(t.UNPACK_ALIGNMENT,r.unpackAlignment),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,d);const p=r.isCompressedTexture||r.image[0].isCompressedTexture,f=r.image[0]&&r.image[0].isDataTexture,m=[];for(let t=0;t<6;t++)m[t]=p||f?f?r.image[t].image:r.image[t]:x(r.image[t],!1,!0,c),m[t]=ht(r,m[t]);const g=m[0],_=M(g)||o,v=a.convert(r.format,r.colorSpace),S=a.convert(r.type),E=B(r.internalFormat,v,S,r.colorSpace),T=o&&!0!==r.isVideoTexture,b=void 0===u.__version||!0===l;let w,A=H(r,g,_);if(et(t.TEXTURE_CUBE_MAP,r,_),p){T&&b&&n.texStorage2D(t.TEXTURE_CUBE_MAP,A,E,g.width,g.height);for(let e=0;e<6;e++){w=m[e].mipmaps;for(let i=0;i0&&A++,n.texStorage2D(t.TEXTURE_CUBE_MAP,A,E,m[0].width,m[0].height));for(let e=0;e<6;e++)if(f){T?n.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,0,0,m[e].width,m[e].height,v,S,m[e].data):n.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,E,m[e].width,m[e].height,0,v,S,m[e].data);for(let i=0;i0){c.__webglFramebuffer[e]=[];for(let n=0;n0){c.__webglFramebuffer=[];for(let e=0;e0&&!1===ct(e)){const i=d?l:[l];c.__webglMultisampledFramebuffer=t.createFramebuffer(),c.__webglColorRenderbuffer=[],n.bindFramebuffer(t.FRAMEBUFFER,c.__webglMultisampledFramebuffer);for(let n=0;n0)for(let i=0;i0)for(let n=0;n0&&!1===ct(e)){const r=e.isWebGLMultipleRenderTargets?e.texture:[e.texture],a=e.width,s=e.height;let o=t.COLOR_BUFFER_BIT;const l=[],c=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,h=i.get(e),u=!0===e.isWebGLMultipleRenderTargets;if(u)for(let e=0;eo+c?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!l.inputState.pinching&&s<=o-c&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else null!==o&&t.gripSpace&&(r=e.getPose(t.gripSpace,n),null!==r&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1));null!==s&&(i=e.getPose(t.targetRaySpace,n),null===i&&null!==r&&(i=r),null!==i&&(s.matrix.fromArray(i.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale),s.matrixWorldNeedsUpdate=!0,i.linearVelocity?(s.hasLinearVelocity=!0,s.linearVelocity.copy(i.linearVelocity)):s.hasLinearVelocity=!1,i.angularVelocity?(s.hasAngularVelocity=!0,s.angularVelocity.copy(i.angularVelocity)):s.hasAngularVelocity=!1,this.dispatchEvent(Ya)))}return null!==s&&(s.visible=null!==i),null!==o&&(o.visible=null!==r),null!==l&&(l.visible=null!==a),this}_getHandJoint(t,e){if(void 0===t.joints[e.jointName]){const n=new ja;n.matrixAutoUpdate=!1,n.visible=!1,t.joints[e.jointName]=n,t.add(n)}return t.joints[e.jointName]}}class Za extends Vt{constructor(t,e,n,i,r,a,s,o,l,c){if((c=void 0!==c?c:F)!==F&&c!==z)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===n&&c===F&&(n=U),void 0===n&&c===z&&(n=N),super(null,i,r,a,s,o,c,n,l),this.isDepthTexture=!0,this.image={width:t,height:e},this.magFilter=void 0!==s?s:b,this.minFilter=void 0!==o?o:b,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(t){return super.copy(t),this.compareFunction=t.compareFunction,this}toJSON(t){const e=super.toJSON(t);return null!==this.compareFunction&&(e.compareFunction=this.compareFunction),e}}class Ka extends ot{constructor(t,e){super();const n=this;let i=null,r=1,a=null,s="local-floor",o=1,l=null,c=null,h=null,u=null,d=null,p=null;const f=e.getContextAttributes();let m=null,g=null;const _=[],v=[],x=new ai;x.layers.enable(1),x.viewport=new kt;const M=new ai;M.layers.enable(2),M.viewport=new kt;const y=[x,M],S=new Xa;S.layers.enable(1),S.layers.enable(2);let E=null,T=null;function b(t){const e=v.indexOf(t.inputSource);if(-1===e)return;const n=_[e];void 0!==n&&(n.update(t.inputSource,t.frame,l||a),n.dispatchEvent({type:t.type,data:t.inputSource}))}function w(){i.removeEventListener("select",b),i.removeEventListener("selectstart",b),i.removeEventListener("selectend",b),i.removeEventListener("squeeze",b),i.removeEventListener("squeezestart",b),i.removeEventListener("squeezeend",b),i.removeEventListener("end",w),i.removeEventListener("inputsourceschange",A);for(let t=0;t<_.length;t++){const e=v[t];null!==e&&(v[t]=null,_[t].disconnect(e))}E=null,T=null,t.setRenderTarget(m),d=null,u=null,h=null,i=null,g=null,I.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}function A(t){for(let e=0;e=0&&(v[i]=null,_[i].disconnect(n))}for(let e=0;e=v.length){v.push(n),i=t;break}if(null===v[t]){v[t]=n,i=t;break}}if(-1===i)break}const r=_[i];r&&r.connect(n)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(t){let e=_[t];return void 0===e&&(e=new qa,_[t]=e),e.getTargetRaySpace()},this.getControllerGrip=function(t){let e=_[t];return void 0===e&&(e=new qa,_[t]=e),e.getGripSpace()},this.getHand=function(t){let e=_[t];return void 0===e&&(e=new qa,_[t]=e),e.getHandSpace()},this.setFramebufferScaleFactor=function(t){r=t,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(t){s=t,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||a},this.setReferenceSpace=function(t){l=t},this.getBaseLayer=function(){return null!==u?u:d},this.getBinding=function(){return h},this.getFrame=function(){return p},this.getSession=function(){return i},this.setSession=async function(c){if(i=c,null!==i){if(m=t.getRenderTarget(),i.addEventListener("select",b),i.addEventListener("selectstart",b),i.addEventListener("selectend",b),i.addEventListener("squeeze",b),i.addEventListener("squeezestart",b),i.addEventListener("squeezeend",b),i.addEventListener("end",w),i.addEventListener("inputsourceschange",A),!0!==f.xrCompatible&&await e.makeXRCompatible(),void 0===i.renderState.layers||!1===t.capabilities.isWebGL2){const n={antialias:void 0!==i.renderState.layers||f.antialias,alpha:!0,depth:f.depth,stencil:f.stencil,framebufferScaleFactor:r};d=new XRWebGLLayer(i,e,n),i.updateRenderState({baseLayer:d}),g=new Xt(d.framebufferWidth,d.framebufferHeight,{format:O,type:C,colorSpace:t.outputColorSpace,stencilBuffer:f.stencil})}else{let n=null,a=null,s=null;f.depth&&(s=f.stencil?e.DEPTH24_STENCIL8:e.DEPTH_COMPONENT24,n=f.stencil?z:F,a=f.stencil?N:U);const o={colorFormat:e.RGBA8,depthFormat:s,scaleFactor:r};h=new XRWebGLBinding(i,e),u=h.createProjectionLayer(o),i.updateRenderState({layers:[u]}),g=new Xt(u.textureWidth,u.textureHeight,{format:O,type:C,depthTexture:new Za(u.textureWidth,u.textureHeight,a,void 0,void 0,void 0,void 0,void 0,void 0,n),stencilBuffer:f.stencil,colorSpace:t.outputColorSpace,samples:f.antialias?4:0});t.properties.get(g).__ignoreDepthValues=u.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(o),l=null,a=await i.requestReferenceSpace(s),I.setContext(i),I.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(null!==i)return i.environmentBlendMode};const R=new Zt,L=new Zt;function P(t,e){null===e?t.matrixWorld.copy(t.matrix):t.matrixWorld.multiplyMatrices(e.matrixWorld,t.matrix),t.matrixWorldInverse.copy(t.matrixWorld).invert()}this.updateCamera=function(t){if(null===i)return;S.near=M.near=x.near=t.near,S.far=M.far=x.far=t.far,E===S.near&&T===S.far||(i.updateRenderState({depthNear:S.near,depthFar:S.far}),E=S.near,T=S.far);const e=t.parent,n=S.cameras;P(S,e);for(let t=0;t0&&(i.alphaTest.value=r.alphaTest);const a=e.get(r).envMap;if(a&&(i.envMap.value=a,i.flipEnvMap.value=a.isCubeTexture&&!1===a.isRenderTargetTexture?-1:1,i.reflectivity.value=r.reflectivity,i.ior.value=r.ior,i.refractionRatio.value=r.refractionRatio),r.lightMap){i.lightMap.value=r.lightMap;const e=!0===t._useLegacyLights?Math.PI:1;i.lightMapIntensity.value=r.lightMapIntensity*e,n(r.lightMap,i.lightMapTransform)}r.aoMap&&(i.aoMap.value=r.aoMap,i.aoMapIntensity.value=r.aoMapIntensity,n(r.aoMap,i.aoMapTransform))}return{refreshFogUniforms:function(e,n){n.color.getRGB(e.fogColor.value,ei(t)),n.isFog?(e.fogNear.value=n.near,e.fogFar.value=n.far):n.isFogExp2&&(e.fogDensity.value=n.density)},refreshMaterialUniforms:function(t,r,a,s,o){r.isMeshBasicMaterial||r.isMeshLambertMaterial?i(t,r):r.isMeshToonMaterial?(i(t,r),function(t,e){e.gradientMap&&(t.gradientMap.value=e.gradientMap)}(t,r)):r.isMeshPhongMaterial?(i(t,r),function(t,e){t.specular.value.copy(e.specular),t.shininess.value=Math.max(e.shininess,1e-4)}(t,r)):r.isMeshStandardMaterial?(i(t,r),function(t,i){t.metalness.value=i.metalness,i.metalnessMap&&(t.metalnessMap.value=i.metalnessMap,n(i.metalnessMap,t.metalnessMapTransform));t.roughness.value=i.roughness,i.roughnessMap&&(t.roughnessMap.value=i.roughnessMap,n(i.roughnessMap,t.roughnessMapTransform));const r=e.get(i).envMap;r&&(t.envMapIntensity.value=i.envMapIntensity)}(t,r),r.isMeshPhysicalMaterial&&function(t,e,i){t.ior.value=e.ior,e.sheen>0&&(t.sheenColor.value.copy(e.sheenColor).multiplyScalar(e.sheen),t.sheenRoughness.value=e.sheenRoughness,e.sheenColorMap&&(t.sheenColorMap.value=e.sheenColorMap,n(e.sheenColorMap,t.sheenColorMapTransform)),e.sheenRoughnessMap&&(t.sheenRoughnessMap.value=e.sheenRoughnessMap,n(e.sheenRoughnessMap,t.sheenRoughnessMapTransform)));e.clearcoat>0&&(t.clearcoat.value=e.clearcoat,t.clearcoatRoughness.value=e.clearcoatRoughness,e.clearcoatMap&&(t.clearcoatMap.value=e.clearcoatMap,n(e.clearcoatMap,t.clearcoatMapTransform)),e.clearcoatRoughnessMap&&(t.clearcoatRoughnessMap.value=e.clearcoatRoughnessMap,n(e.clearcoatRoughnessMap,t.clearcoatRoughnessMapTransform)),e.clearcoatNormalMap&&(t.clearcoatNormalMap.value=e.clearcoatNormalMap,n(e.clearcoatNormalMap,t.clearcoatNormalMapTransform),t.clearcoatNormalScale.value.copy(e.clearcoatNormalScale),e.side===l&&t.clearcoatNormalScale.value.negate()));e.iridescence>0&&(t.iridescence.value=e.iridescence,t.iridescenceIOR.value=e.iridescenceIOR,t.iridescenceThicknessMinimum.value=e.iridescenceThicknessRange[0],t.iridescenceThicknessMaximum.value=e.iridescenceThicknessRange[1],e.iridescenceMap&&(t.iridescenceMap.value=e.iridescenceMap,n(e.iridescenceMap,t.iridescenceMapTransform)),e.iridescenceThicknessMap&&(t.iridescenceThicknessMap.value=e.iridescenceThicknessMap,n(e.iridescenceThicknessMap,t.iridescenceThicknessMapTransform)));e.transmission>0&&(t.transmission.value=e.transmission,t.transmissionSamplerMap.value=i.texture,t.transmissionSamplerSize.value.set(i.width,i.height),e.transmissionMap&&(t.transmissionMap.value=e.transmissionMap,n(e.transmissionMap,t.transmissionMapTransform)),t.thickness.value=e.thickness,e.thicknessMap&&(t.thicknessMap.value=e.thicknessMap,n(e.thicknessMap,t.thicknessMapTransform)),t.attenuationDistance.value=e.attenuationDistance,t.attenuationColor.value.copy(e.attenuationColor));e.anisotropy>0&&(t.anisotropyVector.value.set(e.anisotropy*Math.cos(e.anisotropyRotation),e.anisotropy*Math.sin(e.anisotropyRotation)),e.anisotropyMap&&(t.anisotropyMap.value=e.anisotropyMap,n(e.anisotropyMap,t.anisotropyMapTransform)));t.specularIntensity.value=e.specularIntensity,t.specularColor.value.copy(e.specularColor),e.specularColorMap&&(t.specularColorMap.value=e.specularColorMap,n(e.specularColorMap,t.specularColorMapTransform));e.specularIntensityMap&&(t.specularIntensityMap.value=e.specularIntensityMap,n(e.specularIntensityMap,t.specularIntensityMapTransform))}(t,r,o)):r.isMeshMatcapMaterial?(i(t,r),function(t,e){e.matcap&&(t.matcap.value=e.matcap)}(t,r)):r.isMeshDepthMaterial?i(t,r):r.isMeshDistanceMaterial?(i(t,r),function(t,n){const i=e.get(n).light;t.referencePosition.value.setFromMatrixPosition(i.matrixWorld),t.nearDistance.value=i.shadow.camera.near,t.farDistance.value=i.shadow.camera.far}(t,r)):r.isMeshNormalMaterial?i(t,r):r.isLineBasicMaterial?(function(t,e){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,e.map&&(t.map.value=e.map,n(e.map,t.mapTransform))}(t,r),r.isLineDashedMaterial&&function(t,e){t.dashSize.value=e.dashSize,t.totalSize.value=e.dashSize+e.gapSize,t.scale.value=e.scale}(t,r)):r.isPointsMaterial?function(t,e,i,r){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.size.value=e.size*i,t.scale.value=.5*r,e.map&&(t.map.value=e.map,n(e.map,t.uvTransform));e.alphaMap&&(t.alphaMap.value=e.alphaMap,n(e.alphaMap,t.alphaMapTransform));e.alphaTest>0&&(t.alphaTest.value=e.alphaTest)}(t,r,a,s):r.isSpriteMaterial?function(t,e){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.rotation.value=e.rotation,e.map&&(t.map.value=e.map,n(e.map,t.mapTransform));e.alphaMap&&(t.alphaMap.value=e.alphaMap,n(e.alphaMap,t.alphaMapTransform));e.alphaTest>0&&(t.alphaTest.value=e.alphaTest)}(t,r):r.isShadowMaterial?(t.color.value.copy(r.color),t.opacity.value=r.opacity):r.isShaderMaterial&&(r.uniformsNeedUpdate=!1)}}}function Qa(t,e,n,i){let r={},a={},s=[];const o=n.isWebGL2?t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS):0;function l(t,e,n){const i=t.value;if(void 0===n[e]){if("number"==typeof i)n[e]=i;else{const t=Array.isArray(i)?i:[i],r=[];for(let e=0;e0){r=n%i;0!==r&&i-r-s.boundary<0&&(n+=i-r,a.__offset=n)}n+=s.storage}r=n%i,r>0&&(n+=i-r);t.__size=n,t.__cache={}}(n),d=function(e){const n=function(){for(let t=0;t0),u=!!n.morphAttributes.position,d=!!n.morphAttributes.normal,f=!!n.morphAttributes.color;let m=p;i.toneMapped&&(null!==w&&!0!==w.isXRRenderTarget||(m=S.toneMapping));const g=n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color,_=void 0!==g?g.length:0,v=dt.get(i),M=x.state.lights;if(!0===tt&&(!0===et||t!==P)){const e=t===P&&i.id===A;bt.setState(i,t,e)}let y=!1;i.version===v.__version?v.needsLights&&v.lightsStateVersion!==M.state.version||v.outputColorSpace!==o||r.isInstancedMesh&&!1===v.instancing?y=!0:r.isInstancedMesh||!0!==v.instancing?r.isSkinnedMesh&&!1===v.skinning?y=!0:r.isSkinnedMesh||!0!==v.skinning?r.isInstancedMesh&&!0===v.instancingColor&&null===r.instanceColor||r.isInstancedMesh&&!1===v.instancingColor&&null!==r.instanceColor||v.envMap!==l||!0===i.fog&&v.fog!==a?y=!0:void 0===v.numClippingPlanes||v.numClippingPlanes===bt.numPlanes&&v.numIntersection===bt.numIntersection?(v.vertexAlphas!==c||v.vertexTangents!==h||v.morphTargets!==u||v.morphNormals!==d||v.morphColors!==f||v.toneMapping!==m||!0===ct.isWebGL2&&v.morphTargetsCount!==_)&&(y=!0):y=!0:y=!0:y=!0:(y=!0,v.__version=i.version);let E=v.currentProgram;!0===y&&(E=ee(i,e,r));let T=!1,b=!1,R=!1;const C=E.getUniforms(),L=v.uniforms;ht.useProgram(E.program)&&(T=!0,b=!0,R=!0);i.id!==A&&(A=i.id,b=!0);if(T||P!==t){C.setValue(Nt,"projectionMatrix",t.projectionMatrix),C.setValue(Nt,"viewMatrix",t.matrixWorldInverse);const e=C.map.cameraPosition;void 0!==e&&e.setValue(Nt,at.setFromMatrixPosition(t.matrixWorld)),ct.logarithmicDepthBuffer&&C.setValue(Nt,"logDepthBufFC",2/(Math.log(t.far+1)/Math.LN2)),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&C.setValue(Nt,"isOrthographic",!0===t.isOrthographicCamera),P!==t&&(P=t,b=!0,R=!0)}if(r.isSkinnedMesh){C.setOptional(Nt,r,"bindMatrix"),C.setOptional(Nt,r,"bindMatrixInverse");const t=r.skeleton;t&&(ct.floatVertexTextures?(null===t.boneTexture&&t.computeBoneTexture(),C.setValue(Nt,"boneTexture",t.boneTexture,pt),C.setValue(Nt,"boneTextureSize",t.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}const U=n.morphAttributes;(void 0!==U.position||void 0!==U.normal||void 0!==U.color&&!0===ct.isWebGL2)&&Ct.update(r,n,E);(b||v.receiveShadow!==r.receiveShadow)&&(v.receiveShadow=r.receiveShadow,C.setValue(Nt,"receiveShadow",r.receiveShadow));i.isMeshGouraudMaterial&&null!==i.envMap&&(L.envMap.value=l,L.flipEnvMap.value=l.isCubeTexture&&!1===l.isRenderTargetTexture?-1:1);b&&(C.setValue(Nt,"toneMappingExposure",S.toneMappingExposure),v.needsLights&&(I=R,(D=L).ambientLightColor.needsUpdate=I,D.lightProbe.needsUpdate=I,D.directionalLights.needsUpdate=I,D.directionalLightShadows.needsUpdate=I,D.pointLights.needsUpdate=I,D.pointLightShadows.needsUpdate=I,D.spotLights.needsUpdate=I,D.spotLightShadows.needsUpdate=I,D.rectAreaLights.needsUpdate=I,D.hemisphereLights.needsUpdate=I),a&&!0===i.fog&&St.refreshFogUniforms(L,a),St.refreshMaterialUniforms(L,i,W,k,nt),aa.upload(Nt,ne(v),L,pt));var D,I;i.isShaderMaterial&&!0===i.uniformsNeedUpdate&&(aa.upload(Nt,ne(v),L,pt),i.uniformsNeedUpdate=!1);i.isSpriteMaterial&&C.setValue(Nt,"center",r.center);if(C.setValue(Nt,"modelViewMatrix",r.modelViewMatrix),C.setValue(Nt,"normalMatrix",r.normalMatrix),C.setValue(Nt,"modelMatrix",r.matrixWorld),i.isShaderMaterial||i.isRawShaderMaterial){const t=i.uniformsGroups;for(let e=0,n=t.length;e{function n(){i.forEach((function(t){dt.get(t).currentProgram.isReady()&&i.delete(t)})),0!==i.size?setTimeout(n,10):e(t)}null!==lt.get("KHR_parallel_shader_compile")?n():setTimeout(n,10)}))};let jt=null;function Yt(){Kt.stop()}function qt(){Kt.start()}const Kt=new _i;function Jt(t,e,n,i){if(!1===t.visible)return;if(t.layers.test(e.layers))if(t.isGroup)n=t.renderOrder;else if(t.isLOD)!0===t.autoUpdate&&t.update(e);else if(t.isLight)x.pushLight(t),t.castShadow&&x.pushShadow(t);else if(t.isSprite){if(!t.frustumCulled||Q.intersectsSprite(t)){i&&at.setFromMatrixPosition(t.matrixWorld).applyMatrix4(it);const e=xt.update(t),r=t.material;r.visible&&v.push(t,e,r,n,at.z,null)}}else if((t.isMesh||t.isLine||t.isPoints)&&(!t.frustumCulled||Q.intersectsObject(t))){const e=xt.update(t),r=t.material;if(i&&(void 0!==t.boundingSphere?(null===t.boundingSphere&&t.computeBoundingSphere(),at.copy(t.boundingSphere.center)):(null===e.boundingSphere&&e.computeBoundingSphere(),at.copy(e.boundingSphere.center)),at.applyMatrix4(t.matrixWorld).applyMatrix4(it)),Array.isArray(r)){const i=e.groups;for(let a=0,s=i.length;a0&&function(t,e,n,i){const r=!0===n.isScene?n.overrideMaterial:null;if(null!==r)return;const a=ct.isWebGL2;null===nt&&(nt=new Xt(1,1,{generateMipmaps:!0,type:lt.has("EXT_color_buffer_half_float")?I:C,minFilter:R,samples:a?4:0}));S.getDrawingBufferSize(rt),a?nt.setSize(rt.x,rt.y):nt.setSize(_t(rt.x),_t(rt.y));const s=S.getRenderTarget();S.setRenderTarget(nt),S.getClearColor(H),G=S.getClearAlpha(),G<1&&S.setClearColor(16777215,.5);S.clear();const o=S.toneMapping;S.toneMapping=p,$t(t,n,i),pt.updateMultisampleRenderTarget(nt),pt.updateRenderTargetMipmap(nt);let c=!1;for(let t=0,r=e.length;t0&&$t(r,e,n),a.length>0&&$t(a,e,n),s.length>0&&$t(s,e,n),ht.buffers.depth.setTest(!0),ht.buffers.depth.setMask(!0),ht.buffers.color.setMask(!0),ht.setPolygonOffset(!1)}function $t(t,e,n){const i=!0===e.isScene?e.overrideMaterial:null;for(let r=0,a=t.length;r0?y[y.length-1]:null,M.pop(),v=M.length>0?M[M.length-1]:null},this.getActiveCubeFace=function(){return T},this.getActiveMipmapLevel=function(){return b},this.getRenderTarget=function(){return w},this.setRenderTargetTextures=function(t,e,n){dt.get(t.texture).__webglTexture=e,dt.get(t.depthTexture).__webglTexture=n;const i=dt.get(t);i.__hasExternalTextures=!0,i.__hasExternalTextures&&(i.__autoAllocateDepthBuffer=void 0===n,i.__autoAllocateDepthBuffer||!0===lt.has("WEBGL_multisampled_render_to_texture")&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),i.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(t,e){const n=dt.get(t);n.__webglFramebuffer=e,n.__useDefaultFramebuffer=void 0===e},this.setRenderTarget=function(t,e=0,n=0){w=t,T=e,b=n;let i=!0,r=null,a=!1,s=!1;if(t){const o=dt.get(t);void 0!==o.__useDefaultFramebuffer?(ht.bindFramebuffer(Nt.FRAMEBUFFER,null),i=!1):void 0===o.__webglFramebuffer?pt.setupRenderTarget(t):o.__hasExternalTextures&&pt.rebindTextures(t,dt.get(t.texture).__webglTexture,dt.get(t.depthTexture).__webglTexture);const l=t.texture;(l.isData3DTexture||l.isDataArrayTexture||l.isCompressedArrayTexture)&&(s=!0);const c=dt.get(t).__webglFramebuffer;t.isWebGLCubeRenderTarget?(r=Array.isArray(c[e])?c[e][n]:c[e],a=!0):r=ct.isWebGL2&&t.samples>0&&!1===pt.useMultisampledRTT(t)?dt.get(t).__webglMultisampledFramebuffer:Array.isArray(c)?c[n]:c,F.copy(t.viewport),z.copy(t.scissor),B=t.scissorTest}else F.copy(Z).multiplyScalar(W).floor(),z.copy(K).multiplyScalar(W).floor(),B=J;if(ht.bindFramebuffer(Nt.FRAMEBUFFER,r)&&ct.drawBuffers&&i&&ht.drawBuffers(t,r),ht.viewport(F),ht.scissor(z),ht.setScissorTest(B),a){const i=dt.get(t.texture);Nt.framebufferTexture2D(Nt.FRAMEBUFFER,Nt.COLOR_ATTACHMENT0,Nt.TEXTURE_CUBE_MAP_POSITIVE_X+e,i.__webglTexture,n)}else if(s){const i=dt.get(t.texture),r=e||0;Nt.framebufferTextureLayer(Nt.FRAMEBUFFER,Nt.COLOR_ATTACHMENT0,i.__webglTexture,n||0,r)}A=-1},this.readRenderTargetPixels=function(t,e,n,i,r,a,s){if(!t||!t.isWebGLRenderTarget)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let o=dt.get(t).__webglFramebuffer;if(t.isWebGLCubeRenderTarget&&void 0!==s&&(o=o[s]),o){ht.bindFramebuffer(Nt.FRAMEBUFFER,o);try{const s=t.texture,o=s.format,l=s.type;if(o!==O&&Ut.convert(o)!==Nt.getParameter(Nt.IMPLEMENTATION_COLOR_READ_FORMAT))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");const c=l===I&&(lt.has("EXT_color_buffer_half_float")||ct.isWebGL2&<.has("EXT_color_buffer_float"));if(!(l===C||Ut.convert(l)===Nt.getParameter(Nt.IMPLEMENTATION_COLOR_READ_TYPE)||l===D&&(ct.isWebGL2||lt.has("OES_texture_float")||lt.has("WEBGL_color_buffer_float"))||c))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");e>=0&&e<=t.width-i&&n>=0&&n<=t.height-r&&Nt.readPixels(e,n,i,r,Ut.convert(o),Ut.convert(l),a)}finally{const t=null!==w?dt.get(w).__webglFramebuffer:null;ht.bindFramebuffer(Nt.FRAMEBUFFER,t)}}},this.copyFramebufferToTexture=function(t,e,n=0){const i=Math.pow(2,-n),r=Math.floor(e.image.width*i),a=Math.floor(e.image.height*i);pt.setTexture2D(e,0),Nt.copyTexSubImage2D(Nt.TEXTURE_2D,n,0,0,t.x,t.y,r,a),ht.unbindTexture()},this.copyTextureToTexture=function(t,e,n,i=0){const r=e.image.width,a=e.image.height,s=Ut.convert(n.format),o=Ut.convert(n.type);pt.setTexture2D(n,0),Nt.pixelStorei(Nt.UNPACK_FLIP_Y_WEBGL,n.flipY),Nt.pixelStorei(Nt.UNPACK_PREMULTIPLY_ALPHA_WEBGL,n.premultiplyAlpha),Nt.pixelStorei(Nt.UNPACK_ALIGNMENT,n.unpackAlignment),e.isDataTexture?Nt.texSubImage2D(Nt.TEXTURE_2D,i,t.x,t.y,r,a,s,o,e.image.data):e.isCompressedTexture?Nt.compressedTexSubImage2D(Nt.TEXTURE_2D,i,t.x,t.y,e.mipmaps[0].width,e.mipmaps[0].height,s,e.mipmaps[0].data):Nt.texSubImage2D(Nt.TEXTURE_2D,i,t.x,t.y,s,o,e.image),0===i&&n.generateMipmaps&&Nt.generateMipmap(Nt.TEXTURE_2D),ht.unbindTexture()},this.copyTextureToTexture3D=function(t,e,n,i,r=0){if(S.isWebGL1Renderer)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");const a=t.max.x-t.min.x+1,s=t.max.y-t.min.y+1,o=t.max.z-t.min.z+1,l=Ut.convert(i.format),c=Ut.convert(i.type);let h;if(i.isData3DTexture)pt.setTexture3D(i,0),h=Nt.TEXTURE_3D;else{if(!i.isDataArrayTexture)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");pt.setTexture2DArray(i,0),h=Nt.TEXTURE_2D_ARRAY}Nt.pixelStorei(Nt.UNPACK_FLIP_Y_WEBGL,i.flipY),Nt.pixelStorei(Nt.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i.premultiplyAlpha),Nt.pixelStorei(Nt.UNPACK_ALIGNMENT,i.unpackAlignment);const u=Nt.getParameter(Nt.UNPACK_ROW_LENGTH),d=Nt.getParameter(Nt.UNPACK_IMAGE_HEIGHT),p=Nt.getParameter(Nt.UNPACK_SKIP_PIXELS),f=Nt.getParameter(Nt.UNPACK_SKIP_ROWS),m=Nt.getParameter(Nt.UNPACK_SKIP_IMAGES),g=n.isCompressedTexture?n.mipmaps[0]:n.image;Nt.pixelStorei(Nt.UNPACK_ROW_LENGTH,g.width),Nt.pixelStorei(Nt.UNPACK_IMAGE_HEIGHT,g.height),Nt.pixelStorei(Nt.UNPACK_SKIP_PIXELS,t.min.x),Nt.pixelStorei(Nt.UNPACK_SKIP_ROWS,t.min.y),Nt.pixelStorei(Nt.UNPACK_SKIP_IMAGES,t.min.z),n.isDataTexture||n.isData3DTexture?Nt.texSubImage3D(h,r,e.x,e.y,e.z,a,s,o,l,c,g.data):n.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),Nt.compressedTexSubImage3D(h,r,e.x,e.y,e.z,a,s,o,l,g.data)):Nt.texSubImage3D(h,r,e.x,e.y,e.z,a,s,o,l,c,g),Nt.pixelStorei(Nt.UNPACK_ROW_LENGTH,u),Nt.pixelStorei(Nt.UNPACK_IMAGE_HEIGHT,d),Nt.pixelStorei(Nt.UNPACK_SKIP_PIXELS,p),Nt.pixelStorei(Nt.UNPACK_SKIP_ROWS,f),Nt.pixelStorei(Nt.UNPACK_SKIP_IMAGES,m),0===r&&i.generateMipmaps&&Nt.generateMipmap(h),ht.unbindTexture()},this.initTexture=function(t){t.isCubeTexture?pt.setTextureCube(t,0):t.isData3DTexture?pt.setTexture3D(t,0):t.isDataArrayTexture||t.isCompressedArrayTexture?pt.setTexture2DArray(t,0):pt.setTexture2D(t,0),ht.unbindTexture()},this.resetState=function(){T=0,b=0,w=null,ht.reset(),Dt.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return at}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(t){this._outputColorSpace=t;const e=this.getContext();e.drawingBufferColorSpace=t===q?"display-p3":"srgb",e.unpackColorSpace=Dt.workingColorSpace===Z?"display-p3":"srgb"}get physicallyCorrectLights(){return console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),!this.useLegacyLights}set physicallyCorrectLights(t){console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),this.useLegacyLights=!t}get outputEncoding(){return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace===j?W:3e3}set outputEncoding(t){console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace=t===W?j:Y}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(t){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=t}}(class extends $a{}).prototype.isWebGL1Renderer=!0;class ts{constructor(t,e){this.isInterleavedBuffer=!0,this.array=t,this.stride=e,this.count=void 0!==t?t.length/e:0,this.usage=nt,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=dt()}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.array=new t.array.constructor(t.array),this.count=t.count,this.stride=t.stride,this.usage=t.usage,this}copyAt(t,e,n){t*=this.stride,n*=e.stride;for(let i=0,r=this.stride;io)continue;u.applyMatrix4(this.matrixWorld);const a=t.ray.origin.distanceTo(u);at.far||e.push({distance:a,point:h.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this})}}else{for(let n=Math.max(0,a.start),i=Math.min(f.count,a.start+a.count)-1;no)continue;u.applyMatrix4(this.matrixWorld);const i=t.ray.origin.distanceTo(u);it.far||e.push({distance:i,point:h.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){const t=this.geometry.morphAttributes,e=Object.keys(t);if(e.length>0){const n=t[e[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=n.length;t0&&_(!0),e>0&&_(!1)),this.setIndex(c),this.setAttribute("position",new Tn(h,3)),this.setAttribute("normal",new Tn(u,3)),this.setAttribute("uv",new Tn(d,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new Rs(t.radiusTop,t.radiusBottom,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}}const Cs=new Zt,Ls=new Zt,Ps=new Zt,Us=new cn;class Ds extends Un{constructor(t=1,e=32,n=16,i=0,r=2*Math.PI,a=0,s=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:t,widthSegments:e,heightSegments:n,phiStart:i,phiLength:r,thetaStart:a,thetaLength:s},e=Math.max(3,Math.floor(e)),n=Math.max(2,Math.floor(n));const o=Math.min(a+s,Math.PI);let l=0;const c=[],h=new Zt,u=new Zt,d=[],p=[],f=[],m=[];for(let d=0;d<=n;d++){const g=[],_=d/n;let v=0;0===d&&0===a?v=.5/e:d===n&&o===Math.PI&&(v=-.5/e);for(let n=0;n<=e;n++){const o=n/e;h.x=-t*Math.cos(i+o*r)*Math.sin(a+_*s),h.y=t*Math.cos(a+_*s),h.z=t*Math.sin(i+o*r)*Math.sin(a+_*s),p.push(h.x,h.y,h.z),u.copy(h).normalize(),f.push(u.x,u.y,u.z),m.push(o+v,1-_),g.push(l++)}c.push(g)}for(let t=0;t0)&&d.push(e,r,l),(t!==n-1||o.99999)this.quaternion.set(0,0,0,1);else if(t.y<-.99999)this.quaternion.set(1,0,0,0);else{Ys.set(t.z,0,-t.x).normalize();const e=Math.acos(t.y);this.quaternion.setFromAxisAngle(Ys,e)}}setLength(t,e=.2*t,n=.2*e){this.line.scale.set(1,Math.max(1e-4,t-e),1),this.line.updateMatrix(),this.cone.scale.set(n,e,n),this.cone.position.y=t,this.cone.updateMatrix()}setColor(t){this.line.material.color.set(t),this.cone.material.color.set(t)}copy(t){return super.copy(t,!1),this.line.copy(t.line),this.cone.copy(t.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}},exports.AxesHelper=class extends As{constructor(t=1){const e=[0,0,0,t,0,0,0,0,0,0,t,0,0,0,0,0,0,t],n=new Un;n.setAttribute("position",new Tn(e,3)),n.setAttribute("color",new Tn([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3));super(n,new vs({vertexColors:!0,toneMapped:!1})),this.type="AxesHelper"}setColors(t,e,n){const i=new fn,r=this.geometry.attributes.color.array;return i.set(t),i.toArray(r,0),i.toArray(r,3),i.set(e),i.toArray(r,6),i.toArray(r,9),i.set(n),i.toArray(r,12),i.toArray(r,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},exports.BoxGeometry=Qn,exports.BufferAttribute=yn,exports.BufferGeometry=Un,exports.CameraHelper=class extends As{constructor(t){const e=new Un,n=new vs({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],r=[],a={};function s(t,e){o(t),o(e)}function o(t){i.push(0,0,0),r.push(0,0,0),void 0===a[t]&&(a[t]=[]),a[t].push(i.length/3-1)}s("n1","n2"),s("n2","n4"),s("n4","n3"),s("n3","n1"),s("f1","f2"),s("f2","f4"),s("f4","f3"),s("f3","f1"),s("n1","f1"),s("n2","f2"),s("n3","f3"),s("n4","f4"),s("p","n1"),s("p","n2"),s("p","n3"),s("p","n4"),s("u1","u2"),s("u2","u3"),s("u3","u1"),s("c","t"),s("p","c"),s("cn1","cn2"),s("cn3","cn4"),s("cf1","cf2"),s("cf3","cf4"),e.setAttribute("position",new Tn(i,3)),e.setAttribute("color",new Tn(r,3)),super(e,n),this.type="CameraHelper",this.camera=t,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update();const l=new fn(16755200),c=new fn(16711680),h=new fn(43775),u=new fn(16777215),d=new fn(3355443);this.setColors(l,c,h,u,d)}setColors(t,e,n,i,r){const a=this.geometry.getAttribute("color");a.setXYZ(0,t.r,t.g,t.b),a.setXYZ(1,t.r,t.g,t.b),a.setXYZ(2,t.r,t.g,t.b),a.setXYZ(3,t.r,t.g,t.b),a.setXYZ(4,t.r,t.g,t.b),a.setXYZ(5,t.r,t.g,t.b),a.setXYZ(6,t.r,t.g,t.b),a.setXYZ(7,t.r,t.g,t.b),a.setXYZ(8,t.r,t.g,t.b),a.setXYZ(9,t.r,t.g,t.b),a.setXYZ(10,t.r,t.g,t.b),a.setXYZ(11,t.r,t.g,t.b),a.setXYZ(12,t.r,t.g,t.b),a.setXYZ(13,t.r,t.g,t.b),a.setXYZ(14,t.r,t.g,t.b),a.setXYZ(15,t.r,t.g,t.b),a.setXYZ(16,t.r,t.g,t.b),a.setXYZ(17,t.r,t.g,t.b),a.setXYZ(18,t.r,t.g,t.b),a.setXYZ(19,t.r,t.g,t.b),a.setXYZ(20,t.r,t.g,t.b),a.setXYZ(21,t.r,t.g,t.b),a.setXYZ(22,t.r,t.g,t.b),a.setXYZ(23,t.r,t.g,t.b),a.setXYZ(24,e.r,e.g,e.b),a.setXYZ(25,e.r,e.g,e.b),a.setXYZ(26,e.r,e.g,e.b),a.setXYZ(27,e.r,e.g,e.b),a.setXYZ(28,e.r,e.g,e.b),a.setXYZ(29,e.r,e.g,e.b),a.setXYZ(30,e.r,e.g,e.b),a.setXYZ(31,e.r,e.g,e.b),a.setXYZ(32,n.r,n.g,n.b),a.setXYZ(33,n.r,n.g,n.b),a.setXYZ(34,n.r,n.g,n.b),a.setXYZ(35,n.r,n.g,n.b),a.setXYZ(36,n.r,n.g,n.b),a.setXYZ(37,n.r,n.g,n.b),a.setXYZ(38,i.r,i.g,i.b),a.setXYZ(39,i.r,i.g,i.b),a.setXYZ(40,r.r,r.g,r.b),a.setXYZ(41,r.r,r.g,r.b),a.setXYZ(42,r.r,r.g,r.b),a.setXYZ(43,r.r,r.g,r.b),a.setXYZ(44,r.r,r.g,r.b),a.setXYZ(45,r.r,r.g,r.b),a.setXYZ(46,r.r,r.g,r.b),a.setXYZ(47,r.r,r.g,r.b),a.setXYZ(48,r.r,r.g,r.b),a.setXYZ(49,r.r,r.g,r.b),a.needsUpdate=!0}update(){const t=this.geometry,e=this.pointMap;Xs.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),js("c",e,t,Xs,0,0,-1),js("t",e,t,Xs,0,0,1),js("n1",e,t,Xs,-1,-1,-1),js("n2",e,t,Xs,1,-1,-1),js("n3",e,t,Xs,-1,1,-1),js("n4",e,t,Xs,1,1,-1),js("f1",e,t,Xs,-1,-1,1),js("f2",e,t,Xs,1,-1,1),js("f3",e,t,Xs,-1,1,1),js("f4",e,t,Xs,1,1,1),js("u1",e,t,Xs,.7,1.1,-1),js("u2",e,t,Xs,-.7,1.1,-1),js("u3",e,t,Xs,0,2,-1),js("cf1",e,t,Xs,-1,0,1),js("cf2",e,t,Xs,1,0,1),js("cf3",e,t,Xs,0,-1,1),js("cf4",e,t,Xs,0,1,1),js("cn1",e,t,Xs,-1,0,-1),js("cn2",e,t,Xs,1,0,-1),js("cn3",e,t,Xs,0,-1,-1),js("cn4",e,t,Xs,0,1,-1),t.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}},exports.DirectionalLight=class extends Is{constructor(t,e){super(t,e),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(Ke.DEFAULT_UP),this.updateMatrix(),this.target=new Ke,this.shadow=new ks}dispose(){this.shadow.dispose()}copy(t){return super.copy(t),this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}},exports.EdgesGeometry=class extends Un{constructor(t=null,e=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:t,thresholdAngle:e},null!==t){const n=4,i=Math.pow(10,n),r=Math.cos(ht*e),a=t.getIndex(),s=t.getAttribute("position"),o=a?a.count:s.count,l=[0,0,0],c=["a","b","c"],h=new Array(3),u={},d=[];for(let t=0;t0&&(e.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(e.object.backgroundIntensity=this.backgroundIntensity),e}},exports.SphereGeometry=Ds,exports.Sprite=class extends Ke{constructor(t=new is){if(super(),this.isSprite=!0,this.type="Sprite",void 0===rs){rs=new Un;const t=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),e=new ts(t,5);rs.setIndex([0,1,2,0,2,3]),rs.setAttribute("position",new ns(e,3,0,!1)),rs.setAttribute("uv",new ns(e,2,3,!1))}this.geometry=rs,this.material=t,this.center=new yt(.5,.5)}raycast(t,e){null===t.camera&&console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),ss.setFromMatrixScale(this.matrixWorld),hs.copy(t.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(t.camera.matrixWorldInverse,this.matrixWorld),os.setFromMatrixPosition(this.modelViewMatrix),t.camera.isPerspectiveCamera&&!1===this.material.sizeAttenuation&&ss.multiplyScalar(-os.z);const n=this.material.rotation;let i,r;0!==n&&(r=Math.cos(n),i=Math.sin(n));const a=this.center;_s(us.set(-.5,-.5,0),os,a,ss,i,r),_s(ds.set(.5,-.5,0),os,a,ss,i,r),_s(ps.set(.5,.5,0),os,a,ss,i,r),fs.set(0,0),ms.set(1,0),gs.set(1,1);let s=t.ray.intersectTriangle(us,ds,ps,!1,as);if(null===s&&(_s(ds.set(-.5,.5,0),os,a,ss,i,r),ms.set(0,1),s=t.ray.intersectTriangle(us,ps,ds,!1,as),null===s))return;const o=t.ray.origin.distanceTo(as);ot.far||e.push({distance:o,point:as.clone(),uv:cn.getInterpolation(as,us,ds,ps,fs,ms,gs,new yt),face:null,object:this})}copy(t,e){return super.copy(t,e),void 0!==t.center&&this.center.copy(t.center),this.material=t.material,this}},exports.SpriteMaterial=is,exports.Texture=Vt,exports.TrackballControls=class extends ot{constructor(t,r){super();const a=this,s=-1,o=0,l=1,c=2,h=3,u=4;this.object=t,this.domElement=r,this.domElement.style.touchAction="none",this.enabled=!0,this.screen={left:0,top:0,width:0,height:0},this.rotateSpeed=1,this.zoomSpeed=1.2,this.panSpeed=.3,this.noRotate=!1,this.noZoom=!1,this.noPan=!1,this.staticMoving=!1,this.dynamicDampingFactor=.2,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.keys=["KeyA","KeyS","KeyD"],this.mouseButtons={LEFT:e,MIDDLE:n,RIGHT:i},this.target=new Zt;const d=1e-6,p=new Zt;let f=1,m=s,g=s,_=0,v=0,x=0;const M=new Zt,y=new yt,S=new yt,E=new Zt,T=new yt,b=new yt,w=new yt,A=new yt,R=[],C={};this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.up0=this.object.up.clone(),this.zoom0=this.object.zoom,this.handleResize=function(){const t=a.domElement.getBoundingClientRect(),e=a.domElement.ownerDocument.documentElement;a.screen.left=t.left+window.pageXOffset-e.clientLeft,a.screen.top=t.top+window.pageYOffset-e.clientTop,a.screen.width=t.width,a.screen.height=t.height};const L=function(){const t=new yt;return function(e,n){return t.set((e-a.screen.left)/a.screen.width,(n-a.screen.top)/a.screen.height),t}}(),P=function(){const t=new yt;return function(e,n){return t.set((e-.5*a.screen.width-a.screen.left)/(.5*a.screen.width),(a.screen.height+2*(a.screen.top-n))/a.screen.width),t}}();function U(t){!1!==a.enabled&&(0===R.length&&(a.domElement.setPointerCapture(t.pointerId),a.domElement.addEventListener("pointermove",D),a.domElement.addEventListener("pointerup",I)),function(t){R.push(t)}(t),"touch"===t.pointerType?function(t){if(1===(G(t),R.length))m=h,S.copy(P(R[0].pageX,R[0].pageY)),y.copy(S);else{m=u;const t=R[0].pageX-R[1].pageX,e=R[0].pageY-R[1].pageY;v=_=Math.sqrt(t*t+e*e);const n=(R[0].pageX+R[1].pageX)/2,i=(R[0].pageY+R[1].pageY)/2;w.copy(L(n,i)),A.copy(w)}a.dispatchEvent(Js)}(t):function(t){if(m===s)switch(t.button){case a.mouseButtons.LEFT:m=o;break;case a.mouseButtons.MIDDLE:m=l;break;case a.mouseButtons.RIGHT:m=c}const e=g!==s?g:m;e!==o||a.noRotate?e!==l||a.noZoom?e!==c||a.noPan||(w.copy(L(t.pageX,t.pageY)),A.copy(w)):(T.copy(L(t.pageX,t.pageY)),b.copy(T)):(S.copy(P(t.pageX,t.pageY)),y.copy(S));a.dispatchEvent(Js)}(t))}function D(t){!1!==a.enabled&&("touch"===t.pointerType?function(t){if(1===(G(t),R.length))y.copy(S),S.copy(P(t.pageX,t.pageY));else{const e=function(t){const e=t.pointerId===R[0].pointerId?R[1]:R[0];return C[e.pointerId]}(t),n=t.pageX-e.x,i=t.pageY-e.y;v=Math.sqrt(n*n+i*i);const r=(t.pageX+e.x)/2,a=(t.pageY+e.y)/2;A.copy(L(r,a))}}(t):function(t){const e=g!==s?g:m;e!==o||a.noRotate?e!==l||a.noZoom?e!==c||a.noPan||A.copy(L(t.pageX,t.pageY)):b.copy(L(t.pageX,t.pageY)):(y.copy(S),S.copy(P(t.pageX,t.pageY)))}(t))}function I(t){!1!==a.enabled&&("touch"===t.pointerType?function(t){switch(R.length){case 0:m=s;break;case 1:m=h,S.copy(P(t.pageX,t.pageY)),y.copy(S);break;case 2:m=u;for(let e=0;e0&&(a.object.isPerspectiveCamera?M.multiplyScalar(t):a.object.isOrthographicCamera?(a.object.zoom=Mt.clamp(a.object.zoom/t,a.minZoom,a.maxZoom),f!==a.object.zoom&&a.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")),a.staticMoving?T.copy(b):T.y+=(b.y-T.y)*this.dynamicDampingFactor)},this.panCamera=function(){const t=new yt,e=new Zt,n=new Zt;return function(){if(t.copy(A).sub(w),t.lengthSq()){if(a.object.isOrthographicCamera){const e=(a.object.right-a.object.left)/a.object.zoom/a.domElement.clientWidth,n=(a.object.top-a.object.bottom)/a.object.zoom/a.domElement.clientWidth;t.x*=e,t.y*=n}t.multiplyScalar(M.length()*a.panSpeed),n.copy(M).cross(a.object.up).setLength(t.x),n.add(e.copy(a.object.up).setLength(t.y)),a.object.position.add(n),a.target.add(n),a.staticMoving?w.copy(A):w.add(t.subVectors(A,w).multiplyScalar(a.dynamicDampingFactor))}}}(),this.checkDistances=function(){a.noZoom&&a.noPan||(M.lengthSq()>a.maxDistance*a.maxDistance&&(a.object.position.addVectors(a.target,M.setLength(a.maxDistance)),T.copy(b)),M.lengthSq()d&&(a.dispatchEvent(Ks),p.copy(a.object.position))):a.object.isOrthographicCamera?(a.object.lookAt(a.target),(p.distanceToSquared(a.object.position)>d||f!==a.object.zoom)&&(a.dispatchEvent(Ks),p.copy(a.object.position),f=a.object.zoom)):console.warn("THREE.TrackballControls: Unsupported camera type")},this.reset=function(){m=s,g=s,a.target.copy(a.target0),a.object.position.copy(a.position0),a.object.up.copy(a.up0),a.object.zoom=a.zoom0,a.object.updateProjectionMatrix(),M.subVectors(a.object.position,a.target),a.object.lookAt(a.target),a.dispatchEvent(Ks),p.copy(a.object.position),f=a.object.zoom},this.dispose=function(){a.domElement.removeEventListener("contextmenu",B),a.domElement.removeEventListener("pointerdown",U),a.domElement.removeEventListener("pointercancel",N),a.domElement.removeEventListener("wheel",z),a.domElement.removeEventListener("pointermove",D),a.domElement.removeEventListener("pointerup",I),window.removeEventListener("keydown",O),window.removeEventListener("keyup",F)},this.domElement.addEventListener("contextmenu",B),this.domElement.addEventListener("pointerdown",U),this.domElement.addEventListener("pointercancel",N),this.domElement.addEventListener("wheel",z,{passive:!1}),window.addEventListener("keydown",O),window.addEventListener("keyup",F),this.handleResize(),this.update()}},exports.Vector3=Zt,exports.WebGLRenderer=$a; - -; - -$node[ "../optimade/cifplayer/lib/three/_three" ] = $node[ "../optimade/cifplayer/lib/three/_three.js" ] = module.exports }.call( {} , {} ) -; - ($.$optimade_cifplayer_lib_three_view) = class $optimade_cifplayer_lib_three_view extends ($.$mol_view) { - canvas(){ - return null; - } - controls_target_changed(){ - return null; - } - resize(){ - return null; - } - start_render_loop(){ - return null; - } - sub(){ - return [(this.canvas())]; - } - scene(){ - return null; - } - camera(){ - return null; - } - controls(){ - return null; - } - controls_target(){ - return null; - } - on_render(){ - return null; - } - new_object(id, next){ - if(next !== undefined) return next; - return null; - } - object(id, next){ - if(next !== undefined) return next; - return null; - } - auto(){ - return [ - (this.controls_target_changed()), - (this.resize()), - (this.start_render_loop()) - ]; - } - }; - ($mol_mem_key(($.$optimade_cifplayer_lib_three_view.prototype), "new_object")); - ($mol_mem_key(($.$optimade_cifplayer_lib_three_view.prototype), "object")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - $mol_style_define($optimade_cifplayer_lib_three_view, { - flex: { - grow: 1, - basis: '20rem', - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_icon_eye) = class $mol_icon_eye extends ($.$mol_icon) { - path(){ - return "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_eye_check) = class $mol_icon_eye_check extends ($.$mol_icon) { - path(){ - return "M23.5,17L18.5,22L15,18.5L16.5,17L18.5,19L22,15.5L23.5,17M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,17C12.5,17 12.97,16.93 13.42,16.79C13.15,17.5 13,18.22 13,19V19.45L12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5C17,4.5 21.27,7.61 23,12C22.75,12.64 22.44,13.26 22.08,13.85C21.18,13.31 20.12,13 19,13C18.22,13 17.5,13.15 16.79,13.42C16.93,12.97 17,12.5 17,12A5,5 0 0,0 12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_tick) = class $mol_icon_tick extends ($.$mol_icon) { - path(){ - return "M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_check_box) = class $mol_check_box extends ($.$mol_check) { - Icon(){ - const obj = new this.$.$mol_icon_tick(); - return obj; - } - }; - ($mol_mem(($.$mol_check_box.prototype), "Icon")); - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/box/box.view.css", "[mol_check_box_icon] {\n\tborder-radius: var(--mol_gap_round);\n\tbox-shadow: inset 0 0 0 1px var(--mol_theme_line);\n\tcolor: var(--mol_theme_shade);\n\theight: 1rem;\n\talign-self: center;\n}\n\n[mol_check]:not([mol_check_checked]) > [mol_check_box_icon] {\n\tfill: transparent;\n}\n\n[mol_check]:not([disabled]) > [mol_check_box_icon] {\n\tbackground: var(--mol_theme_field);\n\tcolor: var(--mol_theme_text);\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_pop) = class $mol_pop extends ($.$mol_view) { - Anchor(){ - return null; - } - align(){ - return "bottom_center"; - } - bubble_content(){ - return []; - } - height_max(){ - return 9999; - } - Bubble(){ - const obj = new this.$.$mol_pop_bubble(); - (obj.align) = () => ((this.align())); - (obj.content) = () => ((this.bubble_content())); - (obj.height_max) = () => ((this.height_max())); - return obj; - } - showed(next){ - if(next !== undefined) return next; - return false; - } - align_vert(){ - return ""; - } - align_hor(){ - return ""; - } - prefer(){ - return "vert"; - } - sub(){ - return [(this.Anchor())]; - } - sub_visible(){ - return [(this.Anchor()), (this.Bubble())]; - } - }; - ($mol_mem(($.$mol_pop.prototype), "Bubble")); - ($mol_mem(($.$mol_pop.prototype), "showed")); - ($.$mol_pop_bubble) = class $mol_pop_bubble extends ($.$mol_view) { - content(){ - return []; - } - height_max(){ - return 9999; - } - align(){ - return ""; - } - sub(){ - return (this.content()); - } - style(){ - return {...(super.style()), "maxHeight": (this.height_max())}; - } - attr(){ - return { - ...(super.attr()), - "mol_pop_align": (this.align()), - "tabindex": 0 - }; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_pop extends $.$mol_pop { - showed(next = false) { - this.focused(); - return next; - } - sub_visible() { - return [ - this.Anchor(), - ...this.showed() ? [this.Bubble()] : [], - ]; - } - height_max() { - const viewport = this.$.$mol_window.size(); - const rect_bubble = this.view_rect(); - const align = this.align_vert(); - if (align === 'bottom') - return (viewport.height - rect_bubble.bottom) * .66; - if (align === 'top') - return rect_bubble.top * .66; - return 0; - } - align() { - switch (this.prefer()) { - case 'hor': return `${this.align_hor()}_${this.align_vert()}`; - case 'vert': return `${this.align_vert()}_${this.align_hor()}`; - default: return this.prefer(); - } - } - align_vert() { - const viewport = this.view_port(); - const rect_pop = this.view_rect(); - if (!rect_pop) - return 'suspense'; - return rect_pop.top > (viewport.top + viewport.height / 2) ? 'top' : 'bottom'; - } - align_hor() { - const viewport = this.view_port(); - const rect_pop = this.view_rect(); - if (!rect_pop) - return 'suspense'; - return rect_pop.left > (viewport.left + viewport.width / 2) ? 'left' : 'right'; - } - View_port() { - const view = new $mol_view; - view.dom_node = () => { - let node = this.dom_node(); - while (node = node.offsetParent) { - if (this.$.$mol_dom_context.getComputedStyle(node).overflow !== 'visible') - return node; - } - return this.$.$mol_dom_context.document.documentElement; - }; - return view; - } - view_port() { - return this.View_port().view_rect() ?? { ...this.$.$mol_window.size(), left: 0, top: 0 }; - } - } - __decorate([ - $mol_mem - ], $mol_pop.prototype, "showed", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "sub_visible", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "height_max", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "align", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "align_vert", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "align_hor", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "View_port", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "view_port", null); - $$.$mol_pop = $mol_pop; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/pop/pop.view.css", "[mol_pop] {\n\tposition: relative;\n\tdisplay: inline-flex;\n}\n\n[mol_pop_bubble] {\n\tbox-shadow: 0 0 1rem hsla(0,0%,0%,.5);\n\tborder-radius: var(--mol_gap_round);\n\tposition: absolute;\n\tz-index: var(--mol_layer_popup);\n\tbackground: var(--mol_theme_back);\n\tmax-width: none;\n\tmax-height: none;\n\t/* overflow: hidden;\n\toverflow-y: scroll;\n\toverflow-y: overlay; */\n\tword-break: normal;\n\twidth: max-content;\n\theight: max-content;\n\tflex-direction: column;\n\tmax-width: 80vw;\n\tmax-height: 80vw;\n\tcontain: paint;\n\ttransition-property: opacity;\n}\n\n:where( [mol_pop_bubble] > * ) {\n\tbackground: var(--mol_theme_card);\n}\n\n[mol_pop_bubble][mol_scroll] {\n\tbackground: var(--mol_theme_back);\n}\n\n[mol_pop_bubble]:focus {\n\toutline: none;\n}\n\n[mol_pop_align=\"suspense_suspense\"] {\n\topacity: 0;\n}\n\n[mol_pop_align=\"left_top\"] {\n\ttransform: translate(-100%);\n\tleft: 0;\n\tbottom: 0;\n}\n\n[mol_pop_align=\"left_center\"] {\n\ttransform: translate(-100%, -50%);\n\tleft: 0;\n\ttop: 50%;\n}\n\n[mol_pop_align=\"left_bottom\"] {\n\ttransform: translate(-100%);\n\tleft: 0;\n\ttop: 0;\n}\n\n[mol_pop_align=\"right_top\"] {\n\ttransform: translate(100%);\n\tright: 0;\n\tbottom: 0;\n}\n\n[mol_pop_align=\"right_center\"] {\n\ttransform: translate(100%, -50%);\n\tright: 0;\n\ttop: 50%;\n}\n\n[mol_pop_align=\"right_bottom\"] {\n\ttransform: translate(100%);\n\tright: 0;\n\ttop: 0;\n}\n\n[mol_pop_align=\"center\"] {\n\tleft: 50%;\n\ttop: 50%;\n\ttransform: translate(-50%, -50%);\n}\n\n[mol_pop_align=\"top_left\"] {\n\tright: 0;\n\tbottom: 100%;\n}\n\n[mol_pop_align=\"top_center\"] {\n\ttransform: translate(-50%);\n\tleft: 50%;\n\tbottom: 100%;\n}\n\n[mol_pop_align=\"top_right\"] {\n\tleft: 0;\n\tbottom: 100%;\n}\n\n[mol_pop_align=\"bottom_left\"] {\n\tright: 0;\n\ttop: 100%;\n}\n\n[mol_pop_align=\"bottom_center\"] {\n\ttransform: translate(-50%);\n\tleft: 50%;\n\ttop: 100%;\n}\n\n[mol_pop_align=\"bottom_right\"] {\n\tleft: 0;\n\ttop: 100%;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_pick) = class $mol_pick extends ($.$mol_pop) { - keydown(next){ - if(next !== undefined) return next; - return null; - } - trigger_enabled(){ - return true; - } - clicks(next){ - if(next !== undefined) return next; - return null; - } - trigger_content(){ - return [(this.title())]; - } - hint(){ - return ""; - } - Trigger(){ - const obj = new this.$.$mol_check(); - (obj.minimal_width) = () => (40); - (obj.minimal_height) = () => (40); - (obj.enabled) = () => ((this.trigger_enabled())); - (obj.checked) = (next) => ((this.showed(next))); - (obj.clicks) = (next) => ((this.clicks(next))); - (obj.sub) = () => ((this.trigger_content())); - (obj.hint) = () => ((this.hint())); - return obj; - } - event(){ - return {...(super.event()), "keydown": (next) => (this.keydown(next))}; - } - Anchor(){ - return (this.Trigger()); - } - }; - ($mol_mem(($.$mol_pick.prototype), "keydown")); - ($mol_mem(($.$mol_pick.prototype), "clicks")); - ($mol_mem(($.$mol_pick.prototype), "Trigger")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_pick extends $.$mol_pick { - keydown(event) { - if (!this.trigger_enabled()) - return; - if (event.defaultPrevented) - return; - if (event.keyCode === $mol_keyboard_code.escape) { - if (!this.showed()) - return; - event.preventDefault(); - this.showed(false); - } - } - } - $$.$mol_pick = $mol_pick; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/pick/pick.view.css", "[mol_pick_trigger] {\n\talign-items: center;\n\tflex-grow: 1;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_icon_minus) = class $mol_icon_minus extends ($.$mol_icon) { - path(){ - return "M19,13H5V11H19V13Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_plus) = class $mol_icon_plus extends ($.$mol_icon) { - path(){ - return "M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_number) = class $mol_number extends ($.$mol_view) { - precision(){ - return 1; - } - type(){ - return "tel"; - } - value_string(next){ - if(next !== undefined) return next; - return ""; - } - hint(){ - return " "; - } - string_enabled(){ - return (this.enabled()); - } - submit(next){ - if(next !== undefined) return next; - return null; - } - String(){ - const obj = new this.$.$mol_string(); - (obj.type) = () => ((this.type())); - (obj.value) = (next) => ((this.value_string(next))); - (obj.hint) = () => ((this.hint())); - (obj.enabled) = () => ((this.string_enabled())); - (obj.submit) = (next) => ((this.submit(next))); - return obj; - } - event_dec(next){ - if(next !== undefined) return next; - return null; - } - dec_enabled(){ - return (this.enabled()); - } - dec_icon(){ - const obj = new this.$.$mol_icon_minus(); - return obj; - } - Dec(){ - const obj = new this.$.$mol_button_minor(); - (obj.event_click) = (next) => ((this.event_dec(next))); - (obj.enabled) = () => ((this.dec_enabled())); - (obj.sub) = () => ([(this.dec_icon())]); - return obj; - } - event_inc(next){ - if(next !== undefined) return next; - return null; - } - inc_enabled(){ - return (this.enabled()); - } - inc_icon(){ - const obj = new this.$.$mol_icon_plus(); - return obj; - } - Inc(){ - const obj = new this.$.$mol_button_minor(); - (obj.event_click) = (next) => ((this.event_inc(next))); - (obj.enabled) = () => ((this.inc_enabled())); - (obj.sub) = () => ([(this.inc_icon())]); - return obj; - } - precision_view(){ - return (this.precision()); - } - precision_change(){ - return (this.precision()); - } - value_min(){ - return -Infinity; - } - value_max(){ - return +Infinity; - } - value(next){ - if(next !== undefined) return next; - return +NaN; - } - enabled(){ - return true; - } - sub(){ - return [ - (this.String()), - (this.Dec()), - (this.Inc()) - ]; - } - }; - ($mol_mem(($.$mol_number.prototype), "value_string")); - ($mol_mem(($.$mol_number.prototype), "submit")); - ($mol_mem(($.$mol_number.prototype), "String")); - ($mol_mem(($.$mol_number.prototype), "event_dec")); - ($mol_mem(($.$mol_number.prototype), "dec_icon")); - ($mol_mem(($.$mol_number.prototype), "Dec")); - ($mol_mem(($.$mol_number.prototype), "event_inc")); - ($mol_mem(($.$mol_number.prototype), "inc_icon")); - ($mol_mem(($.$mol_number.prototype), "Inc")); - ($mol_mem(($.$mol_number.prototype), "value")); - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/number/number.css", "[mol_number] {\n\tdisplay: flex;\n\tflex: 0 1 auto;\n\tposition: relative;\n\talign-items: stretch;\n\tmax-width: 100%;\n}\n\n[mol_number_string] {\n\tappearance: textfield;\n\tflex: 1 1 7rem;\n\twidth: 7rem;\n}\n\n[mol_number_string]::-webkit-inner-spin-button {\n\tdisplay: none;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_number extends $.$mol_number { - value_limited(val) { - if (Number.isNaN(val)) - return this.value(val); - if (val === undefined) - return this.value(); - const min = this.value_min(); - const max = this.value_max(); - if (val < min) - return this.value(min); - if (val > max) - return this.value(max); - return this.value(val); - } - event_dec(next) { - this.value_limited((this.value_limited() || 0) - this.precision_change()); - } - event_inc(next) { - this.value_limited((this.value_limited() || 0) + this.precision_change()); - } - round(val) { - if (Number.isNaN(val)) - return ''; - if (val === 0) - return '0'; - if (!val) - return ''; - const precision_view = this.precision_view(); - if (!precision_view) - return val.toFixed(); - if (precision_view >= 1) { - return (val / precision_view).toFixed(); - } - else { - const fixed_number = Math.log10(1 / precision_view); - return val.toFixed(Math.ceil(fixed_number)); - } - } - value_string(next) { - const current = this.round(this.value_limited()); - if (next === undefined) - return current; - const precision = this.precision_view(); - if (precision - Math.floor(precision) === 0) - next = next.replace(/[.,]/g, ''); - next = (this.value_min() < 0 && next.startsWith('-') ? '-' : '') - + next.replace(/,/g, '.').replace(/[^\d\.]/g, '').replace(/^0{2,}/, '0'); - let dot_pos = next.indexOf('.'); - if (dot_pos !== -1) { - const prev = $mol_wire_probe(() => this.value_string()) ?? ''; - const dot_pos_prev = prev.indexOf('.'); - if (dot_pos_prev === dot_pos) - dot_pos = next.lastIndexOf('.'); - const frac = next.slice(dot_pos + 1).replace(/\./g, ''); - next = (next.slice(0, dot_pos) || '0').replace(/\./g, '') + '.' + frac; - } - if (Number.isNaN(Number(next))) - return next; - if (next.endsWith('.')) - return next; - if (next.endsWith('-')) - return next; - this.value_limited(Number(next || Number.NaN)); - return next; - } - dec_enabled() { - return this.enabled() && (!((this.value() || 0) <= this.value_min())); - } - inc_enabled() { - return this.enabled() && (!((this.value() || 0) >= this.value_max())); - } - } - __decorate([ - $mol_mem - ], $mol_number.prototype, "value_string", null); - __decorate([ - $mol_mem - ], $mol_number.prototype, "dec_enabled", null); - __decorate([ - $mol_mem - ], $mol_number.prototype, "inc_enabled", null); - $$.$mol_number = $mol_number; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_icon_image) = class $mol_icon_image extends ($.$mol_icon) { - path(){ - return "M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_image_filter) = class $mol_icon_image_filter extends ($.$mol_icon) { - path(){ - return "M21,17H7V3H21M21,1H7C5.9,1 5,1.9 5,3V17C5,18.1 5.9,19 7,19H21C22.1,19 23,18.1 23,17V3C23,1.9 22.1,1 21,1M3,5H1V21C1,22.1 1.9,23 3,23H19V21H3M15.96,10.29L13.21,13.83L11.25,11.47L8.5,15H19.5L15.96,10.29Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_image_filter_center_focus) = class $mol_icon_image_filter_center_focus extends ($.$mol_icon) { - path(){ - return "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify) = class $mol_icon_magnify extends ($.$mol_icon) { - path(){ - return "M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify_plus) = class $mol_icon_magnify_plus extends ($.$mol_icon) { - path(){ - return "M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M8,5V8H5V10H8V13H10V10H13V8H10V5H8Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify_plus_outline) = class $mol_icon_magnify_plus_outline extends ($.$mol_icon) { - path(){ - return "M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14M12,10H10V12H9V10H7V9H9V7H10V9H12V10Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify_minus) = class $mol_icon_magnify_minus extends ($.$mol_icon) { - path(){ - return "M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M5,8V10H13V8H5Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify_minus_outline) = class $mol_icon_magnify_minus_outline extends ($.$mol_icon) { - path(){ - return "M15.5,14H14.71L14.43,13.73C15.41,12.59 16,11.11 16,9.5A6.5,6.5 0 0,0 9.5,3A6.5,6.5 0 0,0 3,9.5A6.5,6.5 0 0,0 9.5,16C11.11,16 12.59,15.41 13.73,14.43L14,14.71V15.5L19,20.5L20.5,19L15.5,14M9.5,14C7,14 5,12 5,9.5C5,7 7,5 9.5,5C12,5 14,7 14,9.5C14,12 12,14 9.5,14M7,9H12V10H7V9Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_check_list) = class $mol_check_list extends ($.$mol_view) { - option_checked(id, next){ - if(next !== undefined) return next; - return false; - } - option_title(id){ - return ""; - } - option_label(id){ - return [(this.option_title(id))]; - } - enabled(){ - return true; - } - option_enabled(id){ - return (this.enabled()); - } - option_hint(id){ - return ""; - } - items(){ - return []; - } - dictionary(){ - return {}; - } - Option(id){ - const obj = new this.$.$mol_check(); - (obj.checked) = (next) => ((this.option_checked(id, next))); - (obj.label) = () => ((this.option_label(id))); - (obj.enabled) = () => ((this.option_enabled(id))); - (obj.hint) = () => ((this.option_hint(id))); - (obj.minimal_height) = () => (24); - return obj; - } - options(){ - return {}; - } - keys(){ - return []; - } - sub(){ - return (this.items()); - } - }; - ($mol_mem_key(($.$mol_check_list.prototype), "option_checked")); - ($mol_mem_key(($.$mol_check_list.prototype), "Option")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_check_list extends $.$mol_check_list { - options() { - return {}; - } - dictionary(next) { - return next ?? {}; - } - option_checked(id, next) { - const prev = this.dictionary(); - if (next === undefined) - return prev[id] ?? null; - const next_rec = { ...prev, [id]: next }; - if (next === null) - delete next_rec[id]; - return this.dictionary(next_rec)[id] ?? null; - } - keys() { - return Object.keys(this.options()); - } - items() { - return this.keys().map(key => this.Option(key)); - } - option_title(key) { - return this.options()[key] || key; - } - } - __decorate([ - $mol_mem - ], $mol_check_list.prototype, "keys", null); - __decorate([ - $mol_mem - ], $mol_check_list.prototype, "items", null); - $$.$mol_check_list = $mol_check_list; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/list/list.view.css", "[mol_check_list] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex: 1 1 auto;\n\tborder-radius: var(--mol_gap_round);\n\tgap: 1px;\n}\n\n[mol_check_list_option] {\n\tflex: 0 1 auto;\n}\n\n[mol_check_list_option]:where([mol_check_checked=\"true\"]) {\n\ttext-shadow: 0 0;\n\tcolor: var(--mol_theme_current);\n}\n\n[mol_check_list_option]:where([mol_check_checked=\"true\"][disabled]) {\n\tcolor: var(--mol_theme_text);\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_switch) = class $mol_switch extends ($.$mol_check_list) { - value(next){ - if(next !== undefined) return next; - return ""; - } - }; - ($mol_mem(($.$mol_switch.prototype), "value")); - - -; -"use strict"; -var $; -(function ($) { - class $mol_state_session extends $mol_object { - static 'native()'; - static native() { - if (this['native()']) - return this['native()']; - check: try { - const native = $mol_dom_context.sessionStorage; - if (!native) - break check; - native.setItem('', ''); - native.removeItem(''); - return this['native()'] = native; - } - catch (error) { - console.warn(error); - } - return this['native()'] = { - getItem(key) { - return this[':' + key]; - }, - setItem(key, value) { - this[':' + key] = value; - }, - removeItem(key) { - this[':' + key] = void 0; - } - }; - } - static value(key, next) { - if (next === void 0) - return JSON.parse(this.native().getItem(key) || 'null'); - if (next === null) - this.native().removeItem(key); - else - this.native().setItem(key, JSON.stringify(next)); - return next; - } - prefix() { return ''; } - value(key, next) { - return $mol_state_session.value(this.prefix() + '.' + key, next); - } - } - __decorate([ - $mol_mem_key - ], $mol_state_session, "value", null); - $.$mol_state_session = $mol_state_session; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_switch extends $.$mol_switch { - value(next) { - return $mol_state_session.value(`${this}.value()`, next) ?? ''; - } - option_checked(key, next) { - if (next === undefined) - return this.value() == key; - this.value(next ? key : ''); - return next; - } - } - $$.$mol_switch = $mol_switch; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_card) = class $mol_card extends ($.$mol_list) { - status(){ - return ""; - } - content(){ - return [(this.title())]; - } - Content(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.content())); - return obj; - } - status_text(){ - return (this.status()); - } - Status(){ - const obj = new this.$.$mol_view(); - (obj.minimal_height) = () => (30); - (obj.sub) = () => ([(this.status_text())]); - return obj; - } - attr(){ - return {...(super.attr()), "mol_card_status_type": (this.status())}; - } - rows(){ - return [(this.Content()), (this.Status())]; - } - }; - ($mol_mem(($.$mol_card.prototype), "Content")); - ($mol_mem(($.$mol_card.prototype), "Status")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_card extends $.$mol_card { - rows() { - return [ - this.Content(), - ...this.status_text() ? [this.Status()] : [], - ]; - } - } - $$.$mol_card = $mol_card; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/card/card.view.css", "[mol_card] {\n\tbackground: var(--mol_theme_card);\n\tcolor: var(--mol_theme_text);\n\tborder-radius: var(--mol_gap_round);\n\tdisplay: flex;\n\tflex: 0 1 auto;\n\tflex-direction: column;\n\tposition: relative;\n\tbox-shadow: 0 0 0.5rem 0rem hsla(0,0%,0%,.125);\n\t/* overflow: hidden; */\n}\n\n[mol_card_content] {\n\tflex: 1 1 auto;\n\tborder-radius: var(--mol_gap_round);\n\tmargin: 0;\n\tpadding: var(--mol_gap_block);\n}\n\n[mol_card_status] {\n\tbackground: var(--mol_theme_line);\n\ttext-transform: capitalize;\n\tpadding: var(--mol_gap_text);\n\tmargin: 0;\n}\n\n[mol_card_status] {\n\tbackground: var(--mol_theme_line);\n}\n"); -})($ || ($ = {})); - -; - ($.$optimade_cifplayer_player) = class $optimade_cifplayer_player extends ($.$mol_view) { - translate_a(next){ - if(next !== undefined) return next; - return 1; - } - translate_b(next){ - if(next !== undefined) return next; - return 1; - } - translate_c(next){ - if(next !== undefined) return next; - return 1; - } - Theme(){ - const obj = new this.$.$mol_theme_auto(); - return obj; - } - external_theme_auto(){ - return null; - } - dir_light(){ - return null; - } - ambient_light(){ - return null; - } - atom_boxes(){ - return []; - } - overlay_boxes(){ - return []; - } - cell_box(){ - return null; - } - axes_box(){ - return null; - } - overlay_changed(){ - return null; - } - vibration_active(next){ - if(next !== undefined) return next; - return false; - } - vibration_restart(){ - return null; - } - scene(){ - return (this.Three().scene()); - } - controls(){ - return (this.Three().controls()); - } - controls_target(){ - return null; - } - camera(){ - return (this.Three().camera()); - } - on_render(){ - return null; - } - Three(){ - const obj = new this.$.$optimade_cifplayer_lib_three_view(); - (obj.controls_target) = () => ((this.controls_target())); - (obj.on_render) = () => ((this.on_render())); - return obj; - } - descr_a(){ - return "a="; - } - Descr_a(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_a())); - return obj; - } - descr_b(){ - return "b="; - } - Descr_b(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_b())); - return obj; - } - descr_c(){ - return "c="; - } - Descr_c(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_c())); - return obj; - } - descr_alpha(){ - return "α="; - } - Descr_alpha(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_alpha())); - return obj; - } - descr_beta(){ - return "β="; - } - Descr_beta(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_beta())); - return obj; - } - descr_gamma(){ - return "γ="; - } - Descr_gamma(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_gamma())); - return obj; - } - info_sub(){ - return [ - (this.Descr_a()), - (this.Descr_b()), - (this.Descr_c()), - (this.Descr_alpha()), - (this.Descr_beta()), - (this.Descr_gamma()) - ]; - } - Info(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.info_sub())); - return obj; - } - Sym_icon(){ - const obj = new this.$.$mol_icon_eye_check(); - return obj; - } - symlabel(){ - return "SG"; - } - Toogle_all_title(){ - return "Enable all"; - } - toogle_all_symmetry(next){ - if(next !== undefined) return next; - return null; - } - Toogle_all(){ - const obj = new this.$.$mol_button_minor(); - (obj.title) = () => ((this.Toogle_all_title())); - (obj.click) = (next) => ((this.toogle_all_symmetry(next))); - return obj; - } - sym_name(id){ - return ""; - } - symmetry_visible(id, next){ - if(next !== undefined) return next; - return false; - } - Sym_check(id){ - const obj = new this.$.$mol_check_box(); - (obj.title) = () => ((this.sym_name(id))); - (obj.checked) = (next) => ((this.symmetry_visible(id, next))); - return obj; - } - sym_checks(){ - return [(this.Sym_check("0"))]; - } - Sym_checks(){ - const obj = new this.$.$mol_list(); - (obj.sub) = () => ((this.sym_checks())); - return obj; - } - Sym_list(){ - const obj = new this.$.$mol_scroll(); - (obj.sub) = () => ([(this.Sym_checks())]); - return obj; - } - Symlabel(){ - const obj = new this.$.$mol_pick(); - (obj.trigger_content) = () => ([(this.Sym_icon()), (this.symlabel())]); - (obj.bubble_content) = () => ([(this.Toogle_all()), (this.Sym_list())]); - return obj; - } - symlabel_visible(){ - return [(this.Symlabel())]; - } - translate_cell_label(){ - return "1×1×1"; - } - Translate_label_a(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ("a"); - return obj; - } - translate_limit_a(){ - return 1; - } - Translate_a(){ - const obj = new this.$.$mol_number(); - (obj.value) = (next) => ((this.translate_a(next))); - (obj.hint) = () => ("1"); - (obj.value_min) = () => (1); - (obj.value_max) = () => ((this.translate_limit_a())); - return obj; - } - Translate_label_b(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ("b"); - return obj; - } - translate_limit_b(){ - return 1; - } - Translate_b(){ - const obj = new this.$.$mol_number(); - (obj.value) = (next) => ((this.translate_b(next))); - (obj.hint) = () => ("1"); - (obj.value_min) = () => (1); - (obj.value_max) = () => ((this.translate_limit_b())); - return obj; - } - Translate_label_c(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ("c"); - return obj; - } - translate_limit_c(){ - return 1; - } - Translate_c(){ - const obj = new this.$.$mol_number(); - (obj.value) = (next) => ((this.translate_c(next))); - (obj.hint) = () => ("1"); - (obj.value_min) = () => (1); - (obj.value_max) = () => ((this.translate_limit_c())); - return obj; - } - Translate_cells(){ - const obj = new this.$.$mol_pick(); - (obj.trigger_content) = () => ([(this.translate_cell_label())]); - (obj.bubble_content) = () => ([ - (this.Translate_label_a()), - (this.Translate_a()), - (this.Translate_label_b()), - (this.Translate_b()), - (this.Translate_label_c()), - (this.Translate_c()) - ]); - return obj; - } - centered(next){ - if(next !== undefined) return next; - return true; - } - Center_icon(){ - const obj = new this.$.$mol_icon_image_filter_center_focus(); - return obj; - } - Center(){ - const obj = new this.$.$mol_check_icon(); - (obj.checked) = (next) => ((this.centered(next))); - (obj.Icon) = () => ((this.Center_icon())); - return obj; - } - left_panel(){ - return [ - (this.Info()), - ...(this.symlabel_visible()), - (this.Translate_cells()), - (this.Center()) - ]; - } - Left_panel(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.left_panel())); - return obj; - } - zoom_up(next){ - if(next !== undefined) return next; - return null; - } - Zoom_up_icon(){ - const obj = new this.$.$mol_icon_magnify_plus_outline(); - return obj; - } - Zoom_up(){ - const obj = new this.$.$mol_button_minor(); - (obj.click) = (next) => ((this.zoom_up(next))); - (obj.sub) = () => ([(this.Zoom_up_icon())]); - return obj; - } - zoom_down(next){ - if(next !== undefined) return next; - return null; - } - Zoom_down_icon(){ - const obj = new this.$.$mol_icon_magnify_minus_outline(); - return obj; - } - Zoom_down(){ - const obj = new this.$.$mol_button_minor(); - (obj.click) = (next) => ((this.zoom_down(next))); - (obj.sub) = () => ([(this.Zoom_down_icon())]); - return obj; - } - Zoom_section(){ - const obj = new this.$.$mol_list(); - (obj.sub) = () => ([(this.Zoom_up()), (this.Zoom_down())]); - return obj; - } - Tools(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Zoom_section())]); - return obj; - } - overlay(next){ - if(next !== undefined) return next; - return "S"; - } - available_overlays(){ - return {"": "display none", "S": "elements"}; - } - Switch_overlay(){ - const obj = new this.$.$mol_switch(); - (obj.value) = (next) => ((this.overlay(next))); - (obj.options) = () => ((this.available_overlays())); - return obj; - } - overlays_sub(){ - return [(this.Switch_overlay())]; - } - Overlays(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.overlays_sub())); - return obj; - } - message(){ - return ""; - } - Message_card(){ - const obj = new this.$.$mol_card(); - (obj.theme) = () => ("$mol_theme_special"); - (obj.title) = () => ((this.message())); - return obj; - } - Message(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Message_card())]); - return obj; - } - message_visible(){ - return [(this.Message())]; - } - color_a(){ - return ""; - } - color_b(){ - return ""; - } - color_c(){ - return ""; - } - data(next){ - if(next !== undefined) return next; - return null; - } - externals(next){ - if(next !== undefined) return next; - return null; - } - fullscreen(next){ - if(next !== undefined) return next; - return true; - } - skip_panel(next){ - if(next !== undefined) return next; - return false; - } - atom_radius_scale(){ - return 0.6; - } - zoom_scale_step(){ - return 0.3; - } - vibrate(next){ - if(next !== undefined) return next; - return null; - } - unvibrate(){ - return null; - } - phonon(next){ - if(next !== undefined) return next; - return null; - } - translate_cells(){ - return [ - (this.translate_a()), - (this.translate_b()), - (this.translate_c()) - ]; - } - translate_cells_limit(){ - return 50; - } - plugins(){ - return [(this.Theme())]; - } - auto(){ - return [ - (this.external_theme_auto()), - (this.dir_light()), - (this.ambient_light()), - ...(this.atom_boxes()), - ...(this.overlay_boxes()), - (this.cell_box()), - (this.axes_box()), - (this.overlay_changed()), - (this.vibration_active()), - (this.vibration_restart()) - ]; - } - atom_box(id){ - return null; - } - overlay_box(id){ - return null; - } - minimal_heigth(){ - return 300; - } - sub(){ - return [ - (this.Three()), - (this.Left_panel()), - (this.Tools()), - (this.Overlays()), - ...(this.message_visible()) - ]; - } - colors_light(){ - return { - "a": "#990000", - "b": "#009900", - "c": "#0099FF" - }; - } - colors_dark(){ - return { - "a": "#EE4B2B", - "b": "#009900", - "c": "#0099FF" - }; - } - cell_lines_color(){ - return "#DDDDDD"; - } - axcolor(){ - return [ - (this.color_a()), - (this.color_b()), - (this.color_c()) - ]; - } - style(){ - return { - ...(super.style()), - "--color_a": (this.color_a()), - "--color_b": (this.color_b()), - "--color_c": (this.color_c()) - }; - } - attr(){ - return {...(super.attr()), "fullscreen": (this.fullscreen())}; - } - }; - ($mol_mem(($.$optimade_cifplayer_player.prototype), "translate_a")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "translate_b")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "translate_c")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Theme")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "vibration_active")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Three")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_a")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_b")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_c")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_alpha")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_beta")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_gamma")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Info")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Sym_icon")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "toogle_all_symmetry")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Toogle_all")); - ($mol_mem_key(($.$optimade_cifplayer_player.prototype), "symmetry_visible")); - ($mol_mem_key(($.$optimade_cifplayer_player.prototype), "Sym_check")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Sym_checks")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Sym_list")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Symlabel")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_label_a")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_a")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_label_b")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_b")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_label_c")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_c")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_cells")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "centered")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Center_icon")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Center")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Left_panel")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "zoom_up")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_up_icon")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_up")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "zoom_down")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_down_icon")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_down")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_section")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Tools")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "overlay")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Switch_overlay")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Overlays")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Message_card")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Message")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "data")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "externals")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "fullscreen")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "skip_panel")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "vibrate")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "phonon")); - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("optimade/cifplayer/player/player.view.css", "*{font-family:Exo2,Arial;}\n\n[mol_theme=\"$mol_theme_light\"] {\n\t--mol_theme_back: white;\n}\n\n@font-face {\nfont-family:Exo2;src:local('Exo 2 Regular'),local('Exo2-Regular'),url('data:font/woff;charset=utf-8;base64,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') format('woff');\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - $mol_style_define($optimade_cifplayer_player, { - background: { - color: $mol_theme.back, - }, - position: 'relative', - height: '100%', - '@': { - fullscreen: { - 'true': { - position: 'fixed', - zIndex: 9999, - top: 0, - left: 0, - right: 0, - bottom: 0, - }, - }, - }, - Descr_a: { - color: $mol_style_func.vary('--color_a') - }, - Descr_b: { - color: $mol_style_func.vary('--color_b') - }, - Descr_c: { - color: $mol_style_func.vary('--color_c') - }, - Translate_label_a: { - color: $mol_style_func.vary('--color_a'), - padding: $mol_gap.text, - }, - Translate_label_b: { - color: $mol_style_func.vary('--color_b'), - padding: $mol_gap.text, - }, - Translate_label_c: { - color: $mol_style_func.vary('--color_c'), - padding: $mol_gap.text, - }, - Translate_cells: { - pointerEvents: 'auto', - Bubble: { - display: 'grid', - gridTemplateColumns: 'auto auto', - }, - }, - Left_panel: { - userSelect: 'none', - pointerEvents: 'none', - position: 'absolute', - zIndex: 1, - fontSize: '13px', - flex: { - direction: 'column', - }, - align: { - items: 'flex-start', - }, - }, - Info: { - padding: $mol_gap.block, - gap: $mol_gap.space, - flex: { - direction: 'column', - }, - }, - Symlabel: { - pointerEvents: 'auto', - }, - Center: { - pointerEvents: 'auto', - }, - Toogle_all: { - boxShadow: `0 0.5rem 0.5rem -0.5rem hsla(0,0%,0%,.5)`, - }, - Overlays: { - position: 'absolute', - bottom: 0, - width: '100%', - align: { - items: 'center', - }, - zIndex: 1, - }, - Switch_overlay: { - justify: { - content: 'center' - }, - }, - Tools: { - position: 'absolute', - right: 0, - zIndex: 1, - flex: { - direction: 'column', - }, - align: { - items: 'flex-end', - }, - }, - Zoom_section: { - padding: { - top: '2rem', - bottom: '1rem', - }, - }, - Zoom_up_icon: { - width: '2rem', - height: '2rem', - }, - Zoom_down_icon: { - width: '2rem', - height: '2rem', - }, - Message: { - position: 'absolute', - zIndex: 1, - top: '6rem', - left: 0, - right: 0, - }, - Message_card: { - background: { - color: $mol_theme.back, - }, - margin: 'auto', - }, - Three: { - cursor: 'move', - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_float) = class $mol_float extends ($.$mol_view) { - style(){ - return {...(super.style()), "minHeight": "auto"}; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/float/float.view.css", "[mol_float] {\n\tposition: sticky;\n\ttop: 0;\n\tleft: 0;\n\tz-index: var(--mol_layer_float);\n\topacity: 1;\n\ttransition: opacity .25s ease-in;\n\tdisplay: block;\n\tbackground: linear-gradient( var(--mol_theme_card), var(--mol_theme_card) ), var(--mol_theme_back);\n\tbox-shadow: 0 0 .5rem hsla(0,0%,0%,.25);\n}\n\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_icon_chevron) = class $mol_icon_chevron extends ($.$mol_icon) { - path(){ - return "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_check_expand) = class $mol_check_expand extends ($.$mol_check) { - level_style(){ - return "0px"; - } - expanded(next){ - if(next !== undefined) return next; - return false; - } - expandable(){ - return false; - } - Icon(){ - const obj = new this.$.$mol_icon_chevron(); - return obj; - } - level(){ - return 0; - } - style(){ - return {...(super.style()), "paddingLeft": (this.level_style())}; - } - checked(next){ - return (this.expanded(next)); - } - enabled(){ - return (this.expandable()); - } - }; - ($mol_mem(($.$mol_check_expand.prototype), "expanded")); - ($mol_mem(($.$mol_check_expand.prototype), "Icon")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_check_expand extends $.$mol_check_expand { - level_style() { - return `${this.level() * 1 - 1}rem`; - } - expandable() { - return this.expanded() !== null; - } - } - $$.$mol_check_expand = $mol_check_expand; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/expand/expand.view.css", "[mol_check_expand] {\n\tmin-width: 20px;\n}\n\n:where([mol_check_expand][disabled]) [mol_check_expand_icon] {\n\tvisibility: hidden;\n}\n\n[mol_check_expand_icon] {\n\tbox-shadow: none;\n\tmargin-left: -0.375rem;\n}\n[mol_check_expand_icon] {\n\ttransform: rotateZ(0deg);\n}\n\n:where([mol_check_checked]) [mol_check_expand_icon] {\n\ttransform: rotateZ(90deg);\n}\n\n[mol_check_expand_icon] {\n\tvertical-align: text-top;\n}\n\n[mol_check_expand_label] {\n\tmargin-left: 0;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_grid) = class $mol_grid extends ($.$mol_view) { - rows(){ - return []; - } - Table(){ - const obj = new this.$.$mol_grid_table(); - (obj.sub) = () => ((this.rows())); - return obj; - } - head_cells(){ - return []; - } - cells(id){ - return []; - } - cell_content(id){ - return []; - } - cell_content_text(id){ - return (this.cell_content(id)); - } - cell_content_number(id){ - return (this.cell_content(id)); - } - col_head_content(id){ - return []; - } - cell_level(id){ - return 0; - } - cell_expanded(id, next){ - if(next !== undefined) return next; - return false; - } - needle(){ - return ""; - } - cell_value(id){ - return ""; - } - Cell_dimmer(id){ - const obj = new this.$.$mol_dimmer(); - (obj.needle) = () => ((this.needle())); - (obj.haystack) = () => ((this.cell_value(id))); - return obj; - } - row_height(){ - return 32; - } - row_ids(){ - return []; - } - row_id(id){ - return null; - } - col_ids(){ - return []; - } - records(){ - return {}; - } - record(id){ - return null; - } - hierarchy(){ - return null; - } - hierarchy_col(){ - return ""; - } - minimal_width(){ - return 0; - } - sub(){ - return [(this.Head()), (this.Table())]; - } - Head(){ - const obj = new this.$.$mol_grid_row(); - (obj.cells) = () => ((this.head_cells())); - return obj; - } - Row(id){ - const obj = new this.$.$mol_grid_row(); - (obj.minimal_height) = () => ((this.row_height())); - (obj.minimal_width) = () => ((this.minimal_width())); - (obj.cells) = () => ((this.cells(id))); - return obj; - } - Cell(id){ - const obj = new this.$.$mol_view(); - return obj; - } - cell(id){ - return null; - } - Cell_text(id){ - const obj = new this.$.$mol_grid_cell(); - (obj.sub) = () => ((this.cell_content_text(id))); - return obj; - } - Cell_number(id){ - const obj = new this.$.$mol_grid_number(); - (obj.sub) = () => ((this.cell_content_number(id))); - return obj; - } - Col_head(id){ - const obj = new this.$.$mol_float(); - (obj.dom_name) = () => ("th"); - (obj.sub) = () => ((this.col_head_content(id))); - return obj; - } - Cell_branch(id){ - const obj = new this.$.$mol_check_expand(); - (obj.level) = () => ((this.cell_level(id))); - (obj.label) = () => ((this.cell_content(id))); - (obj.expanded) = (next) => ((this.cell_expanded(id, next))); - return obj; - } - Cell_content(id){ - return [(this.Cell_dimmer(id))]; - } - }; - ($mol_mem(($.$mol_grid.prototype), "Table")); - ($mol_mem_key(($.$mol_grid.prototype), "cell_expanded")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell_dimmer")); - ($mol_mem(($.$mol_grid.prototype), "Head")); - ($mol_mem_key(($.$mol_grid.prototype), "Row")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell_text")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell_number")); - ($mol_mem_key(($.$mol_grid.prototype), "Col_head")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell_branch")); - ($.$mol_grid_table) = class $mol_grid_table extends ($.$mol_list) {}; - ($.$mol_grid_row) = class $mol_grid_row extends ($.$mol_view) { - cells(){ - return []; - } - sub(){ - return (this.cells()); - } - }; - ($.$mol_grid_cell) = class $mol_grid_cell extends ($.$mol_view) { - minimal_height(){ - return 40; - } - }; - ($.$mol_grid_number) = class $mol_grid_number extends ($.$mol_grid_cell) {}; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_grid extends $.$mol_grid { - head_cells() { - return this.col_ids().map(colId => this.Col_head(colId)); - } - col_head_content(colId) { - return [colId]; - } - rows() { - return this.row_ids().map(id => this.Row(id)); - } - cells(row_id) { - return this.col_ids().map(col_id => this.Cell({ row: row_id, col: col_id })); - } - col_type(col_id) { - if (col_id === this.hierarchy_col()) - return 'branch'; - const rowFirst = this.row_id(0); - const val = this.record(rowFirst[rowFirst.length - 1])[col_id]; - if (typeof val === 'number') - return 'number'; - return 'text'; - } - Cell(id) { - switch (this.col_type(id.col).valueOf()) { - case 'branch': return this.Cell_branch(id); - case 'number': return this.Cell_number(id); - } - return this.Cell_text(id); - } - cell_content(id) { - return [this.record(id.row[id.row.length - 1])[id.col]]; - } - cell_content_text(id) { - return this.cell_content(id).map(val => typeof val === 'object' ? JSON.stringify(val) : val); - } - records() { - return []; - } - record(id) { - return this.records()[id]; - } - record_ids() { - return Object.keys(this.records()); - } - row_id(index) { - return this.row_ids().slice(index, index + 1).valueOf()[0]; - } - col_ids() { - const rowFirst = this.row_id(0); - if (rowFirst === void 0) - return []; - const record = this.record(rowFirst[rowFirst.length - 1]); - if (!record) - return []; - return Object.keys(record); - } - hierarchy() { - const hierarchy = {}; - const root = hierarchy[''] = { - id: '', - parent: null, - sub: [], - }; - this.record_ids().map(id => { - root.sub.push(hierarchy[id] = { - id, - parent: root, - sub: [], - }); - }); - return hierarchy; - } - row_sub_ids(row) { - return this.hierarchy()[row[row.length - 1]].sub.map(child => row.concat(child.id)); - } - row_root_id() { - return ['']; - } - cell_level(id) { - return id.row.length - 1; - } - row_ids() { - const next = []; - const add = (row) => { - next.push(row); - if (this.row_expanded(row)) { - this.row_sub_ids(row).forEach(child => add(child)); - } - }; - this.row_sub_ids(this.row_root_id()).forEach(child => add(child)); - return next; - } - row_expanded(row_id, next) { - if (!this.row_sub_ids(row_id).length) - return null; - const key = `row_expanded(${JSON.stringify(row_id)})`; - const next2 = $mol_state_session.value(key, next); - return (next2 == null) ? this.row_expanded_default(row_id) : next2; - } - row_expanded_default(row_id) { - return true; - } - cell_expanded(id, next) { - return this.row_expanded(id.row, next); - } - } - __decorate([ - $mol_mem - ], $mol_grid.prototype, "head_cells", null); - __decorate([ - $mol_mem - ], $mol_grid.prototype, "rows", null); - __decorate([ - $mol_mem_key - ], $mol_grid.prototype, "col_type", null); - __decorate([ - $mol_mem - ], $mol_grid.prototype, "record_ids", null); - __decorate([ - $mol_mem - ], $mol_grid.prototype, "hierarchy", null); - __decorate([ - $mol_mem - ], $mol_grid.prototype, "row_ids", null); - $$.$mol_grid = $mol_grid; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/grid/grid.view.css", "[mol_grid] {\n\tdisplay: block;\n\tflex: 0 1 auto;\n\tposition: relative;\n\toverflow-x: auto;\n}\n\n[mol_grid_gap] {\n\tposition: absolute;\n\tpadding: .1px;\n\ttop: 0;\n\ttransform: translateZ(0);\n}\n\n[mol_grid_table] {\n\tborder-spacing: 0;\n\tdisplay: table-row-group;\n\tposition: relative;\n}\n\n[mol_grid_table] > * {\n\tdisplay: table-row;\n\ttransition: none;\n}\n\n[mol_grid_head] > *,\n[mol_grid_table] > * > * {\n\tdisplay: table-cell;\n\tpadding: var(--mol_gap_text);\n\twhite-space: nowrap;\n\tvertical-align: middle;\n\tbox-shadow: inset 2px 2px 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_row]:where(:first-child) > * {\n\tbox-shadow: inset 2px 0 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_table] > * > *:where(:first-child) {\n\tbox-shadow: inset 0px 2px 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_head] > * {\n\tbox-shadow: inset 2px -2px 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_head] > *:where(:first-child) {\n\tbox-shadow: inset 0px -2px 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_table] > [mol_grid_row]:where(:first-child) > *:where(:first-child) {\n\tbox-shadow: none;\n}\t\n\n[mol_grid_head] {\n\tdisplay: table-row;\n\ttransform: none !important;\n}\n\n/* [mol_grid_cell_number] {\n\ttext-align: right;\n} */\n\n[mol_grid_col_head] {\n\tfont-weight: inherit;\n\ttext-align: inherit;\n\tdisplay: table-cell;\n\tcolor: var(--mol_theme_shade);\n}\n\n[mol_grid_cell_dimmer] {\n\tdisplay: inline-block;\n\tvertical-align: inherit;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_embed_native) = class $mol_embed_native extends ($.$mol_scroll) { - mime(){ - return ""; - } - title(){ - return ""; - } - Fallback(){ - const obj = new this.$.$mol_link(); - (obj.uri) = () => ((this.uri())); - (obj.sub) = () => ([(this.title())]); - return obj; - } - uri_change(next){ - if(next !== undefined) return next; - return null; - } - uri(next){ - if(next !== undefined) return next; - return ""; - } - dom_name(){ - return "object"; - } - window(){ - return null; - } - attr(){ - return { - ...(super.attr()), - "data": (this.uri()), - "type": (this.mime()) - }; - } - sub(){ - return [(this.Fallback())]; - } - message(){ - return {"hashchange": (next) => (this.uri_change(next))}; - } - }; - ($mol_mem(($.$mol_embed_native.prototype), "Fallback")); - ($mol_mem(($.$mol_embed_native.prototype), "uri_change")); - ($mol_mem(($.$mol_embed_native.prototype), "uri")); - - -; -"use strict"; -var $; -(function ($) { - function $mol_promise() { - let done; - let fail; - const promise = new Promise((d, f) => { - done = d; - fail = f; - }); - return Object.assign(promise, { - done, - fail, - }); - } - $.$mol_promise = $mol_promise; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wait_timeout_async(timeout) { - const promise = $mol_promise(); - const task = new this.$mol_after_timeout(timeout, () => promise.done()); - return Object.assign(promise, { - destructor: () => task.destructor() - }); - } - $.$mol_wait_timeout_async = $mol_wait_timeout_async; - function $mol_wait_timeout(timeout) { - return this.$mol_wire_sync(this).$mol_wait_timeout_async(timeout); - } - $.$mol_wait_timeout = $mol_wait_timeout; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_native extends $.$mol_embed_native { - window() { - $mol_wire_solid(); - return $mol_wire_sync(this).load(this.dom_node_actual()); - } - load(frame) { - return new Promise((done, fail) => { - frame.onload = () => { - try { - if (frame.contentWindow.location.href === 'about:blank') { - return; - } - } - catch { } - done(frame.contentWindow); - }; - frame.onerror = (event) => { - fail(typeof event === 'string' ? new Error(event) : event.error || event); - }; - }); - } - uri_resource() { - return this.uri().replace(/#.*/, ''); - } - message_listener() { - return new $mol_dom_listener($mol_dom_context, 'message', $mol_wire_async(this).message_receive); - } - message_receive(event) { - if (!event) - return; - if (event.source !== this.window()) - return; - if (!Array.isArray(event.data)) - return; - this.message()[event.data[0]]?.(event); - } - uri_change(event) { - this.$.$mol_wait_timeout(1000); - this.uri(event.data[1]); - } - auto() { - return [ - this.message_listener(), - this.window(), - ]; - } - } - __decorate([ - $mol_mem - ], $mol_embed_native.prototype, "window", null); - __decorate([ - $mol_mem - ], $mol_embed_native.prototype, "uri_resource", null); - __decorate([ - $mol_mem - ], $mol_embed_native.prototype, "message_listener", null); - $$.$mol_embed_native = $mol_embed_native; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/embed/native/native.view.css", "[mol_embed_native] {\n\tmax-width: 100%;\n\tmax-height: 100vh;\n\tobject-fit: cover;\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\tobject-position: top left;\n\tborder-radius: var(--mol_gap_round);\n\taspect-ratio: 4/3;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_icon_youtube) = class $mol_icon_youtube extends ($.$mol_icon) { - path(){ - return "M10,15L15.19,12L10,9V15M21.56,7.17C21.69,7.64 21.78,8.27 21.84,9.07C21.91,9.87 21.94,10.56 21.94,11.16L22,12C22,14.19 21.84,15.8 21.56,16.83C21.31,17.73 20.73,18.31 19.83,18.56C19.36,18.69 18.5,18.78 17.18,18.84C15.88,18.91 14.69,18.94 13.59,18.94L12,19C7.81,19 5.2,18.84 4.17,18.56C3.27,18.31 2.69,17.73 2.44,16.83C2.31,16.36 2.22,15.73 2.16,14.93C2.09,14.13 2.06,13.44 2.06,12.84L2,12C2,9.81 2.16,8.2 2.44,7.17C2.69,6.27 3.27,5.69 4.17,5.44C4.64,5.31 5.5,5.22 6.82,5.16C8.12,5.09 9.31,5.06 10.41,5.06L12,5C16.19,5 18.8,5.16 19.83,5.44C20.73,5.69 21.31,6.27 21.56,7.17Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_frame) = class $mol_frame extends ($.$mol_embed_native) { - allow(){ - return ""; - } - uri(next){ - if(next !== undefined) return next; - return "about:config"; - } - html(){ - return null; - } - dom_name(){ - return "iframe"; - } - attr(){ - return { - ...(super.attr()), - "data": null, - "type": null, - "allow": (this.allow()), - "src": (this.uri()), - "srcdoc": (this.html()) - }; - } - fullscreen(){ - return true; - } - accelerometer(){ - return true; - } - autoplay(){ - return true; - } - encription(){ - return true; - } - gyroscope(){ - return true; - } - pip(){ - return true; - } - clipboard_read(){ - return true; - } - clipboard_write(){ - return true; - } - }; - ($mol_mem(($.$mol_frame.prototype), "uri")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_frame extends $.$mol_frame { - window() { - return super.window(); - } - allow() { - return [ - ...this.fullscreen() ? ['fullscreen'] : [], - ...this.accelerometer() ? ['accelerometer'] : [], - ...this.autoplay() ? ['autoplay'] : [], - ...this.encription() ? ['encrypted-media'] : [], - ...this.gyroscope() ? ['gyroscope'] : [], - ...this.pip() ? ['picture-in-picture'] : [], - ...this.clipboard_read() ? [`clipboard-read ${this.uri()}`] : [], - ...this.clipboard_write() ? [`clipboard-write ${this.uri()}`] : [], - ].join('; '); - } - } - $$.$mol_frame = $mol_frame; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_define($mol_frame, { - border: { - style: 'none', - }, - maxHeight: $mol_style_unit.vh(100), - }); -})($ || ($ = {})); - -; - ($.$mol_embed_service) = class $mol_embed_service extends ($.$mol_check) { - active(next){ - if(next !== undefined) return next; - return false; - } - title(){ - return ""; - } - video_preview(){ - return ""; - } - Image(){ - const obj = new this.$.$mol_image(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.video_preview())); - return obj; - } - Hint(){ - const obj = new this.$.$mol_icon_youtube(); - return obj; - } - video_embed(){ - return ""; - } - Frame(){ - const obj = new this.$.$mol_frame(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.video_embed())); - return obj; - } - uri(){ - return ""; - } - video_id(){ - return ""; - } - checked(next){ - return (this.active(next)); - } - sub(){ - return [ - (this.Image()), - (this.Hint()), - (this.Frame()) - ]; - } - }; - ($mol_mem(($.$mol_embed_service.prototype), "active")); - ($mol_mem(($.$mol_embed_service.prototype), "Image")); - ($mol_mem(($.$mol_embed_service.prototype), "Hint")); - ($mol_mem(($.$mol_embed_service.prototype), "Frame")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_service extends $.$mol_embed_service { - sub() { - return this.active() - ? [this.Frame()] - : [this.Image(), this.Hint()]; - } - } - __decorate([ - $mol_mem - ], $mol_embed_service.prototype, "sub", null); - $$.$mol_embed_service = $mol_embed_service; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/embed/service/service.view.css", "[mol_embed_service] {\n\tpadding: 0;\n\tmax-width: 100%;\n}\n\n[mol_embed_service_image] {\n\tflex: auto 1 1;\n\twidth: 100vw;\n}\n\n[mol_embed_service_frame] {\n\twidth: 100vw;\n}\n\n[mol_embed_service_hint] {\n\tposition: absolute;\n left: 50%;\n top: 50%;\n width: 50%;\n height: 50%;\n opacity: 0.3;\n transform: translate(-50%, -50%);\n}\n\n[mol_embed_service]:hover [mol_embed_service_hint] {\n\topacity: .6;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_embed_youtube) = class $mol_embed_youtube extends ($.$mol_embed_service) {}; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_youtube extends $.$mol_embed_youtube { - video_embed() { - return `https://www.youtube.com/embed/${encodeURIComponent(this.video_id())}?autoplay=1&loop=1`; - } - video_id() { - return this.uri().match(/^https\:\/\/www\.youtube\.com\/(?:embed\/|shorts\/|watch\?v=)([^\/&?#]+)/)?.[1] - ?? this.uri().match(/^https\:\/\/youtu\.be\/([^\/&?#]+)/)?.[1] - ?? 'about:blank'; - } - video_preview() { - return `https://i.ytimg.com/vi/${this.video_id()}/sddefault.jpg`; - } - } - __decorate([ - $mol_mem - ], $mol_embed_youtube.prototype, "video_embed", null); - __decorate([ - $mol_mem - ], $mol_embed_youtube.prototype, "video_id", null); - __decorate([ - $mol_mem - ], $mol_embed_youtube.prototype, "video_preview", null); - $$.$mol_embed_youtube = $mol_embed_youtube; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_embed_rutube) = class $mol_embed_rutube extends ($.$mol_embed_service) {}; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_rutube extends $.$mol_embed_rutube { - video_embed() { - return `https://rutube.ru/play/embed/${encodeURIComponent(this.video_id())}`; - } - video_id() { - return this.uri().match(/^https:\/\/rutube.ru\/video\/([^\/&?#]+)/)?.[1] ?? 'about:blank'; - } - video_preview() { - return `https://rutube.ru/api/video/${this.video_id()}/thumbnail/?redirect=1`; - } - } - __decorate([ - $mol_mem - ], $mol_embed_rutube.prototype, "video_embed", null); - __decorate([ - $mol_mem - ], $mol_embed_rutube.prototype, "video_id", null); - __decorate([ - $mol_mem - ], $mol_embed_rutube.prototype, "video_preview", null); - $$.$mol_embed_rutube = $mol_embed_rutube; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_embed_any) = class $mol_embed_any extends ($.$mol_view) { - title(){ - return ""; - } - uri(){ - return ""; - } - Image(){ - const obj = new this.$.$mol_image(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.uri())); - return obj; - } - Object(){ - const obj = new this.$.$mol_embed_native(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.uri())); - return obj; - } - Youtube(){ - const obj = new this.$.$mol_embed_youtube(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.uri())); - return obj; - } - Rutube(){ - const obj = new this.$.$mol_embed_rutube(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.uri())); - return obj; - } - }; - ($mol_mem(($.$mol_embed_any.prototype), "Image")); - ($mol_mem(($.$mol_embed_any.prototype), "Object")); - ($mol_mem(($.$mol_embed_any.prototype), "Youtube")); - ($mol_mem(($.$mol_embed_any.prototype), "Rutube")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_any extends $.$mol_embed_any { - type() { - try { - const uri = this.uri(); - if (/\b(png|gif|jpg|jpeg|jfif|webp|svg)\b/.test(uri)) - return 'image'; - if (/^https:\/\/www\.youtube\.com\//.test(uri)) - return 'youtube'; - if (/^https:\/\/youtu\.be\//.test(uri)) - return 'youtube'; - if (/^https:\/\/rutube\.ru\//.test(uri)) - return 'rutube'; - } - catch (error) { - $mol_fail_log(error); - return 'image'; - } - return 'object'; - } - sub() { - switch (this.type()) { - case 'image': return [this.Image()]; - case 'youtube': return [this.Youtube()]; - case 'rutube': return [this.Rutube()]; - default: return [this.Object()]; - } - } - } - __decorate([ - $mol_mem - ], $mol_embed_any.prototype, "type", null); - __decorate([ - $mol_mem - ], $mol_embed_any.prototype, "sub", null); - $$.$mol_embed_any = $mol_embed_any; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_expander) = class $mol_expander extends ($.$mol_list) { - expanded(next){ - if(next !== undefined) return next; - return false; - } - expandable(){ - return true; - } - label(){ - return [(this.title())]; - } - Trigger(){ - const obj = new this.$.$mol_check_expand(); - (obj.checked) = (next) => ((this.expanded(next))); - (obj.expandable) = () => ((this.expandable())); - (obj.label) = () => ((this.label())); - return obj; - } - Tools(){ - return null; - } - Label(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Trigger()), (this.Tools())]); - return obj; - } - content(){ - return []; - } - Content(){ - const obj = new this.$.$mol_list(); - (obj.rows) = () => ((this.content())); - return obj; - } - rows(){ - return [(this.Label()), (this.Content())]; - } - }; - ($mol_mem(($.$mol_expander.prototype), "expanded")); - ($mol_mem(($.$mol_expander.prototype), "Trigger")); - ($mol_mem(($.$mol_expander.prototype), "Label")); - ($mol_mem(($.$mol_expander.prototype), "Content")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_expander extends $.$mol_expander { - rows() { - return [ - this.Label(), - ...this.expanded() ? [this.Content()] : [] - ]; - } - expandable() { - return this.content().length > 0; - } - } - __decorate([ - $mol_mem - ], $mol_expander.prototype, "rows", null); - $$.$mol_expander = $mol_expander; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/expander/expander.view.css", "[mol_expander] {\n\tflex-direction: column;\n}\n\n[mol_expander_label] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tborder-radius: var(--mol_gap_round);\n}\n\n[mol_expander_trigger] {\n\tflex: auto;\n\tposition: relative;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_text) = class $mol_text extends ($.$mol_list) { - auto_scroll(){ - return null; - } - block_content(id){ - return []; - } - uri_resolve(id){ - return ""; - } - quote_text(id){ - return ""; - } - highlight(){ - return ""; - } - list_type(id){ - return "-"; - } - list_text(id){ - return ""; - } - header_level(id){ - return 1; - } - header_arg(id){ - return {}; - } - pre_text(id){ - return ""; - } - code_sidebar_showed(){ - return true; - } - pre_sidebar_showed(){ - return (this.code_sidebar_showed()); - } - table_head_cells(id){ - return []; - } - table_rows(id){ - return []; - } - table_cells(id){ - return []; - } - table_cell_text(id){ - return ""; - } - grid_rows(id){ - return []; - } - grid_cells(id){ - return []; - } - grid_cell_text(id){ - return ""; - } - line_text(id){ - return ""; - } - line_type(id){ - return ""; - } - line_content(id){ - return []; - } - code_syntax(){ - return null; - } - link_uri(id){ - return ""; - } - link_host(id){ - return ""; - } - spoiler_label(id){ - return ""; - } - Spoiler_label(id){ - const obj = new this.$.$mol_text(); - (obj.text) = () => ((this.spoiler_label(id))); - return obj; - } - spoiler_content(id){ - return ""; - } - Spoiler_content(id){ - const obj = new this.$.$mol_text(); - (obj.text) = () => ((this.spoiler_content(id))); - return obj; - } - uri_base(){ - return ""; - } - text(){ - return ""; - } - param(){ - return ""; - } - flow_tokens(){ - return []; - } - block_text(id){ - return ""; - } - auto(){ - return [(this.auto_scroll())]; - } - Paragraph(id){ - const obj = new this.$.$mol_paragraph(); - (obj.sub) = () => ((this.block_content(id))); - return obj; - } - Quote(id){ - const obj = new this.$.$mol_text(); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.text) = () => ((this.quote_text(id))); - (obj.highlight) = () => ((this.highlight())); - (obj.auto_scroll) = () => (null); - return obj; - } - List(id){ - const obj = new this.$.$mol_text_list(); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.type) = () => ((this.list_type(id))); - (obj.text) = () => ((this.list_text(id))); - (obj.highlight) = () => ((this.highlight())); - return obj; - } - item_index(id){ - return 0; - } - Header(id){ - const obj = new this.$.$mol_text_header(); - (obj.minimal_height) = () => (40); - (obj.level) = () => ((this.header_level(id))); - (obj.content) = () => ((this.block_content(id))); - (obj.arg) = () => ((this.header_arg(id))); - return obj; - } - Pre(id){ - const obj = new this.$.$mol_text_code(); - (obj.text) = () => ((this.pre_text(id))); - (obj.highlight) = () => ((this.highlight())); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.sidebar_showed) = () => ((this.pre_sidebar_showed())); - return obj; - } - Cut(id){ - const obj = new this.$.$mol_view(); - (obj.dom_name) = () => ("hr"); - return obj; - } - Table(id){ - const obj = new this.$.$mol_grid(); - (obj.head_cells) = () => ((this.table_head_cells(id))); - (obj.rows) = () => ((this.table_rows(id))); - return obj; - } - Table_row(id){ - const obj = new this.$.$mol_grid_row(); - (obj.cells) = () => ((this.table_cells(id))); - return obj; - } - Table_cell(id){ - const obj = new this.$.$mol_text(); - (obj.auto_scroll) = () => (null); - (obj.highlight) = () => ((this.highlight())); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.text) = () => ((this.table_cell_text(id))); - return obj; - } - Grid(id){ - const obj = new this.$.$mol_grid(); - (obj.rows) = () => ((this.grid_rows(id))); - return obj; - } - Grid_row(id){ - const obj = new this.$.$mol_grid_row(); - (obj.cells) = () => ((this.grid_cells(id))); - return obj; - } - Grid_cell(id){ - const obj = new this.$.$mol_text(); - (obj.auto_scroll) = () => (null); - (obj.highlight) = () => ((this.highlight())); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.text) = () => ((this.grid_cell_text(id))); - return obj; - } - String(id){ - const obj = new this.$.$mol_dimmer(); - (obj.dom_name) = () => ("span"); - (obj.needle) = () => ((this.highlight())); - (obj.haystack) = () => ((this.line_text(id))); - return obj; - } - Span(id){ - const obj = new this.$.$mol_text_span(); - (obj.dom_name) = () => ("span"); - (obj.type) = () => ((this.line_type(id))); - (obj.sub) = () => ((this.line_content(id))); - return obj; - } - Code_line(id){ - const obj = new this.$.$mol_text_code_line(); - (obj.numb_showed) = () => (false); - (obj.highlight) = () => ((this.highlight())); - (obj.text) = () => ((this.line_text(id))); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.syntax) = () => ((this.code_syntax())); - return obj; - } - Link(id){ - const obj = new this.$.$mol_link_iconed(); - (obj.uri) = () => ((this.link_uri(id))); - (obj.content) = () => ((this.line_content(id))); - return obj; - } - Link_http(id){ - const obj = new this.$.$mol_link_iconed(); - (obj.uri) = () => ((this.link_uri(id))); - (obj.content) = () => ([(this.link_host(id))]); - return obj; - } - Embed(id){ - const obj = new this.$.$mol_embed_any(); - (obj.uri) = () => ((this.link_uri(id))); - (obj.title) = () => ((this.line_text(id))); - return obj; - } - Spoiler(id){ - const obj = new this.$.$mol_expander(); - (obj.label) = () => ([(this.Spoiler_label(id))]); - (obj.content) = () => ([(this.Spoiler_content(id))]); - return obj; - } - }; - ($mol_mem_key(($.$mol_text.prototype), "Spoiler_label")); - ($mol_mem_key(($.$mol_text.prototype), "Spoiler_content")); - ($mol_mem_key(($.$mol_text.prototype), "Paragraph")); - ($mol_mem_key(($.$mol_text.prototype), "Quote")); - ($mol_mem_key(($.$mol_text.prototype), "List")); - ($mol_mem_key(($.$mol_text.prototype), "Header")); - ($mol_mem_key(($.$mol_text.prototype), "Pre")); - ($mol_mem_key(($.$mol_text.prototype), "Cut")); - ($mol_mem_key(($.$mol_text.prototype), "Table")); - ($mol_mem_key(($.$mol_text.prototype), "Table_row")); - ($mol_mem_key(($.$mol_text.prototype), "Table_cell")); - ($mol_mem_key(($.$mol_text.prototype), "Grid")); - ($mol_mem_key(($.$mol_text.prototype), "Grid_row")); - ($mol_mem_key(($.$mol_text.prototype), "Grid_cell")); - ($mol_mem_key(($.$mol_text.prototype), "String")); - ($mol_mem_key(($.$mol_text.prototype), "Span")); - ($mol_mem_key(($.$mol_text.prototype), "Code_line")); - ($mol_mem_key(($.$mol_text.prototype), "Link")); - ($mol_mem_key(($.$mol_text.prototype), "Link_http")); - ($mol_mem_key(($.$mol_text.prototype), "Embed")); - ($mol_mem_key(($.$mol_text.prototype), "Spoiler")); - ($.$mol_text_header) = class $mol_text_header extends ($.$mol_paragraph) { - arg(){ - return {}; - } - content(){ - return []; - } - Link(){ - const obj = new this.$.$mol_link(); - (obj.arg) = () => ((this.arg())); - (obj.hint) = () => ((this.$.$mol_locale.text("$mol_text_header_Link_hint"))); - (obj.sub) = () => ((this.content())); - return obj; - } - level(){ - return 1; - } - sub(){ - return [(this.Link())]; - } - }; - ($mol_mem(($.$mol_text_header.prototype), "Link")); - ($.$mol_text_span) = class $mol_text_span extends ($.$mol_paragraph) { - type(){ - return ""; - } - dom_name(){ - return "span"; - } - attr(){ - return {...(super.attr()), "mol_text_type": (this.type())}; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_text extends $.$mol_text { - flow_tokens() { - const tokens = []; - this.$.$mol_syntax2_md_flow.tokenize(this.text(), (name, found, chunks) => tokens.push({ name, found, chunks })); - return tokens; - } - block_type(index) { - return this.flow_tokens()[index].name; - } - rows() { - return this.flow_tokens().map(({ name }, index) => { - switch (name) { - case 'quote': return this.Quote(index); - case 'spoiler': return this.Spoiler(index); - case 'header': return this.Header(index); - case 'list': return this.List(index); - case 'code': return this.Pre(index); - case 'code-indent': return this.Pre(index); - case 'table': return this.Table(index); - case 'grid': return this.Grid(index); - case 'cut': return this.Cut(index); - default: return this.Paragraph(index); - } - }); - } - param() { - return this.toString().replace(/^.*?[\)>]\./, '').replace(/[(<>)]/g, ''); - } - header_level(index) { - return this.flow_tokens()[index].chunks[0].length; - } - header_arg(index) { - return { - [this.param()]: this.block_text(index) - }; - } - list_type(index) { - return this.flow_tokens()[index].chunks[1] ?? ''; - } - item_index(index) { - return this.flow_tokens().slice(0, index).filter(token => token.name === 'block').length + 1; - } - pre_text(index) { - const token = this.flow_tokens()[index]; - return (token.chunks[2] ?? token.chunks[0].replace(/^(\t| (?:\+\+|--|\*\*| ) )/gm, '')).replace(/[\n\r]*$/, ''); - } - quote_text(index) { - return this.flow_tokens()[index].chunks[0].replace(/^[>"] /mg, ''); - } - list_text(index) { - return this.flow_tokens()[index].chunks[0].replace(/^([-*+]|(?:\d+[\.\)])+) ?/mg, '').replace(/^ ?/mg, ''); - } - cell_content(indexBlock) { - return this.flow_tokens()[indexBlock].chunks[0] - .split(/\r?\n/g) - .filter(row => row && !/\|--/.test(row)) - .map((row, rowId) => { - return row.split(/\|/g) - .filter(cell => cell) - .map((cell, cellId) => cell.trim()); - }); - } - table_rows(blockId) { - return this.cell_content(blockId) - .slice(1) - .map((row, rowId) => this.Table_row({ block: blockId, row: rowId + 1 })); - } - table_head_cells(blockId) { - return this.cell_content(blockId)[0] - .map((cell, cellId) => this.Table_cell({ block: blockId, row: 0, cell: cellId })); - } - table_cells(id) { - return this.cell_content(id.block)[id.row] - .map((cell, cellId) => this.Table_cell({ block: id.block, row: id.row, cell: cellId })); - } - table_cell_text(id) { - return this.cell_content(id.block)[id.row][id.cell]; - } - grid_content(indexBlock) { - return [...this.flow_tokens()[indexBlock].chunks[0].match(/(?:^! .*?$\r?\n?)+(?:^ +! .*?$\r?\n?)*/gm)] - .map((row, rowId) => { - const cells = []; - for (const line of row.trim().split(/\r?\n/)) { - const [_, indent, content] = /^( *)! (.*)/.exec(line); - const col = Math.ceil(indent.length / 2); - cells[col] = (cells[col] ? cells[col] + '\n' : '') + content; - } - return cells; - }); - } - grid_rows(blockId) { - return this.grid_content(blockId) - .map((row, rowId) => this.Grid_row({ block: blockId, row: rowId })); - } - grid_cells(id) { - return this.grid_content(id.block)[id.row] - .map((cell, cellId) => this.Grid_cell({ block: id.block, row: id.row, cell: cellId })); - } - grid_cell_text(id) { - return this.grid_content(id.block)[id.row][id.cell]; - } - uri_base() { - return $mol_dom_context.document.location.href; - } - uri_base_abs() { - return new URL(this.uri_base(), $mol_dom_context.document.location.href); - } - uri_resolve(uri) { - if (/^(\w+script+:)+/.test(uri)) - return null; - if (/^#\!/.test(uri)) { - const params = {}; - for (const chunk of uri.slice(2).split(this.$.$mol_state_arg.separator)) { - if (!chunk) - continue; - const vals = chunk.split('=').map(decodeURIComponent); - params[vals.shift()] = vals.join('='); - } - return this.$.$mol_state_arg.link(params); - } - try { - const url = new URL(uri, this.uri_base_abs()); - return url.toString(); - } - catch (error) { - $mol_fail_log(error); - return null; - } - } - code_syntax() { - return this.$.$mol_syntax2_md_code; - } - block_text(index) { - const token = this.flow_tokens()[index]; - switch (token.name) { - case 'header': return token.chunks[2]; - default: return token.chunks[0]; - } - } - block_content(index) { - return this.line_content([index]); - } - line_tokens(path) { - const tokens = []; - this.$.$mol_syntax2_md_line.tokenize(this.line_text(path), (name, found, chunks) => tokens.push({ name, found, chunks })); - return tokens; - } - line_token(path) { - const tokens = this.line_tokens(path.slice(0, path.length - 1)); - return tokens[path[path.length - 1]]; - } - line_type(path) { - return this.line_token(path).name; - } - line_text(path) { - if (path.length === 1) - return this.block_text(path[0]); - const { name, found, chunks } = this.line_token(path); - switch (name) { - case 'link': return chunks[0] || chunks[1].replace(/^.*?\/\/|\/.*$/g, ''); - case 'text-link': return chunks[0] || chunks[1].replace(/^.*?\/\/|\/.*$/g, ''); - default: return (chunks[0] || chunks[1] || chunks[2]) ?? found; - } - } - line_content(path) { - return this.line_tokens(path).map(({ name, chunks }, index) => { - const path2 = [...path, index]; - switch (name) { - case 'embed': return this.Embed(path2); - case 'link': return this.Link(path2); - case 'text-link-http': return this.Link_http(path2); - case 'text-link': return this.Link(path2); - case 'image-link': return this.Embed(path2); - case 'code': return this.Code_line(path2); - case '': return this.String(path2); - default: return this.Span(path2); - } - }); - } - link_uri(path) { - const token = this.line_token(path); - const uri = this.uri_resolve(token.chunks[1] ?? token.found); - if (!uri) - throw new Error('Bad link'); - return uri; - } - link_host(path) { - return this.link_uri(path).replace(/^.*?\/\/|\/.*$/g, ''); - } - auto_scroll() { - for (const [index, token] of this.flow_tokens().entries()) { - if (token.name !== 'header') - continue; - const header = this.Header(index); - if (!header.Link().current()) - continue; - new $mol_after_tick(() => this.ensure_visible(header)); - } - } - spoiler_rows(index) { - return this.flow_tokens()[index].chunks[0].replace(/^[\?] /mg, '').split('\n'); - } - spoiler_label(index) { - return this.spoiler_rows(index)[0]; - } - spoiler_content(index) { - return this.spoiler_rows(index).slice(1).join('\n'); - } - } - __decorate([ - $mol_mem - ], $mol_text.prototype, "flow_tokens", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "block_type", null); - __decorate([ - $mol_mem - ], $mol_text.prototype, "rows", null); - __decorate([ - $mol_mem - ], $mol_text.prototype, "param", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "header_level", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "header_arg", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "pre_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "quote_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "list_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "cell_content", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "table_rows", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "table_head_cells", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "table_cells", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "table_cell_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "grid_content", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "grid_rows", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "grid_cells", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "grid_cell_text", null); - __decorate([ - $mol_mem - ], $mol_text.prototype, "uri_base_abs", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "uri_resolve", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "block_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_tokens", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_token", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_type", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_content", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "link_uri", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "link_host", null); - __decorate([ - $mol_mem - ], $mol_text.prototype, "auto_scroll", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "spoiler_rows", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "spoiler_label", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "spoiler_content", null); - $$.$mol_text = $mol_text; - class $mol_text_header extends $.$mol_text_header { - dom_name() { - return 'h' + this.level(); - } - } - $$.$mol_text_header = $mol_text_header; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/text/text/text.view.css", "[mol_text] {\n\tline-height: 1.5em;\n\tbox-sizing: border-box;\n\tborder-radius: var(--mol_gap_round);\n\twhite-space: pre-line;\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 0 0 auto;\n\ttab-size: 4;\n}\n\n[mol_text_paragraph] {\n\tpadding: var(--mol_gap_text);\n\toverflow: auto;\n\toverflow-x: overlay;\n\tmax-width: 100%;\n\tdisplay: block;\n\tmax-width: 60rem;\n\tbreak-inside: avoid;\n}\n\n[mol_text_spoiler_label_paragraph] {\n\tpadding: 0;\n}\n\n[mol_text_span] {\n\tdisplay: inline;\n}\n\n[mol_text_string] {\n\tdisplay: inline;\n\tflex: 0 1 auto;\n\twhite-space: normal;\n}\n\n[mol_text_quote] {\n\tmargin: var(--mol_gap_block);\n\tpadding: var(--mol_gap_block);\n\tbackground: var(--mol_theme_card);\n\tbox-shadow: 0 0 0 1px var(--mol_theme_back);\n\tbreak-inside: avoid;\n}\n\n[mol_text_header] {\n\tdisplay: block;\n\ttext-shadow: 0 0;\n\tfont-weight: normal;\n\tbreak-after: avoid;\n}\n\n* + [mol_text_header] {\n\tmargin-top: 0.75rem;\n}\n\nh1[mol_text_header] {\n\tfont-size: 1.5rem;\n}\n\nh2[mol_text_header] {\n\tfont-size: 1.5rem;\n\tfont-style: italic;\n}\n\nh3[mol_text_header] {\n\tfont-size: 1.25rem;\n}\n\nh4[mol_text_header] {\n\tfont-size: 1.25em;\n\tfont-style: italic;\n}\n\nh5[mol_text_header] {\n\tfont-size: 1rem;\n}\n\nh6[mol_text_header] {\n\tfont-size: 1rem;\n\tfont-style: italic;\n}\n\n[mol_text_header_link] {\n\tcolor: inherit;\n}\n\n[mol_text_table] {\n\tbreak-inside: avoid;\n}\n\n[mol_text_table_cell] {\n\twidth: auto;\n\tdisplay: table-cell;\n\tvertical-align: baseline;\n\tpadding: 0;\n\tborder-radius: 0;\n}\n\n[mol_text_grid] {\n\tbreak-inside: avoid;\n}\n\n[mol_text_grid_cell] {\n\twidth: auto;\n\tdisplay: table-cell;\n\tvertical-align: top;\n\tpadding: 0;\n\tborder-radius: 0;\n}\n\n[mol_text_cut] {\n\tborder: none;\n\twidth: 100%;\n\tbox-shadow: 0 0 0 1px var(--mol_theme_line);\n}\n\n[mol_text_link_http],\n[mol_text_link] {\n\tpadding: 0;\n\tdisplay: inline;\n\twhite-space: nowrap;\n}\n\n[mol_text_link_icon] + [mol_text_embed] {\n\tmargin-left: -1.5rem;\n}\n\n[mol_text_embed_youtube] {\n\tdisplay: inline;\n}\n\n[mol_text_embed_youtube_image],\n[mol_text_embed_youtube_frame],\n[mol_text_embed_object] {\n\tobject-fit: contain;\n\tobject-position: center;\n\tdisplay: inline;\n\twidth: 100vw;\n\tmax-height: calc( 100vh - 6rem );\n\tvertical-align: top;\n}\n[mol_text_embed_object_fallback] {\n\tpadding: 0;\n}\n[mol_text_embed_image] {\n\tobject-fit: contain;\n\tobject-position: center;\n\tdisplay: inline;\n\t/* max-height: calc( 100vh - 6rem ); */\n\tvertical-align: top;\n}\n\n[mol_text_pre] {\n\twhite-space: pre;\n\toverflow-x: auto;\n\toverflow-x: overlay;\n\ttab-size: 2;\n\tbreak-inside: avoid;\n}\n\n[mol_text_code_line] {\n\tdisplay: inline-block;\n}\n\n[mol_text_type=\"strong\"] {\n\ttext-shadow: 0 0;\n\tfilter: contrast(1.5);\n}\n\n[mol_text_type=\"emphasis\"] {\n\tfont-style: italic;\n}\n\n[mol_text_type=\"insert\"] {\n\tcolor: var(--mol_theme_special);\n}\n\n[mol_text_type=\"delete\"] {\n\tcolor: var(--mol_theme_shade);\n}\n\n[mol_text_type=\"remark\"] {\n\tcolor: var(--mol_theme_shade);\n}\n\n[mol_text_type=\"quote\"] {\n\tfont-style: italic;\n}\n"); -})($ || ($ = {})); - -; - ($.$optimade_cifplayer_app) = class $optimade_cifplayer_app extends ($.$mol_drop) { - drop_file(next){ - if(next !== undefined) return next; - return null; - } - Theme(){ - const obj = new this.$.$mol_theme_auto(); - return obj; - } - Book(){ - const obj = new this.$.$mol_book2(); - (obj.plugins) = () => ([(this.Theme())]); - (obj.pages) = () => ((this.pages())); - (obj.Placeholder) = () => (null); - return obj; - } - Source(){ - const obj = new this.$.$mol_link_iconed(); - (obj.uri) = () => ("https://github.com/tilde-lab/cifplayer"); - (obj.title) = () => (""); - return obj; - } - Lights(){ - const obj = new this.$.$mol_lights_toggle(); - return obj; - } - Upload_icon(){ - return (this.Upload().Icon()); - } - Upload_native(){ - return (this.Upload().Native()); - } - files_read(next){ - if(next !== undefined) return next; - return null; - } - Upload(){ - const obj = new this.$.$mol_button_open(); - (obj.files) = (next) => ((this.files_read(next))); - (obj.sub) = () => ([ - (this.Upload_icon()), - (this.Upload_native()), - "Choose file" - ]); - return obj; - } - Data_text(){ - const obj = new this.$.$mol_textarea(); - (obj.value) = (next) => ((this.data_str(next))); - (obj.hint) = () => ("or paste here..."); - return obj; - } - Body(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Upload()), (this.Data_text())]); - return obj; - } - Menu(){ - const obj = new this.$.$mol_page(); - (obj.title) = () => ("Crystal structure web-viewer"); - (obj.tools) = () => ([(this.Source()), (this.Lights())]); - (obj.body) = () => ([(this.Body())]); - return obj; - } - data_str(next){ - if(next !== undefined) return next; - return ""; - } - vibrate(next){ - return (this.Player().vibrate(next)); - } - unvibrate(){ - return (this.Player().unvibrate()); - } - Player(){ - const obj = new this.$.$optimade_cifplayer_player(); - (obj.data) = () => ((this.data_str())); - return obj; - } - Start_message(){ - const obj = new this.$.$mol_text(); - (obj.text) = () => ("Choose or paste a CIF, POSCAR, or Optimade file. No remote server is used."); - return obj; - } - paste_example(next){ - if(next !== undefined) return next; - return null; - } - Paste_example(){ - const obj = new this.$.$mol_button_minor(); - (obj.title) = () => ("Show example"); - (obj.click) = (next) => ((this.paste_example(next))); - return obj; - } - receive(next){ - return (this.drop_file(next)); - } - Sub(){ - return (this.Book()); - } - pages(){ - return [(this.Menu()), (this.Player())]; - } - Start(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Start_message()), (this.Paste_example())]); - return obj; - } - }; - ($mol_mem(($.$optimade_cifplayer_app.prototype), "drop_file")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Theme")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Book")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Source")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Lights")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "files_read")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Upload")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Data_text")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Body")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Menu")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "data_str")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Player")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Start_message")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "paste_example")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Paste_example")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Start")); - - -; - ($.$mol_text_list) = class $mol_text_list extends ($.$mol_text) { - type(){ - return ""; - } - auto_scroll(){ - return null; - } - attr(){ - return {...(super.attr()), "mol_text_list_type": (this.type())}; - } - Paragraph(id){ - const obj = new this.$.$mol_text_list_item(); - (obj.index) = () => ((this.item_index(id))); - (obj.sub) = () => ((this.block_content(id))); - return obj; - } - }; - ($mol_mem_key(($.$mol_text_list.prototype), "Paragraph")); - ($.$mol_text_list_item) = class $mol_text_list_item extends ($.$mol_paragraph) { - index(){ - return 0; - } - attr(){ - return {...(super.attr()), "mol_text_list_item_index": (this.index())}; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/text/list/list.view.css", "[mol_text_list] {\r\n\tpadding-left: 1.75rem;\r\n}\r\n\r\n[mol_text_list_item] {\r\n\tcontain: none;\r\n\tdisplay: list-item;\r\n}\r\n\r\n[mol_text_list_item]::before {\r\n\tcontent: attr( mol_text_list_item_index ) \".\";\r\n\twidth: 1.25rem;\r\n\tdisplay: inline-block;\r\n\tposition: absolute;\r\n\tmargin-left: -1.75rem;\r\n\ttext-align: end;\r\n}\r\n\r\n[mol_text_list_type=\"-\"] > [mol_text_list_item]::before,\r\n[mol_text_list_type=\"*\"] > [mol_text_list_item]::before {\r\n\tcontent: \"•\";\r\n}\r\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - $mol_style_define($optimade_cifplayer_app, { - contain: 'none', - '[mol_drop_status]': { - drag: { - Menu: { - background: { - color: $mol_theme.hover, - }, - }, - }, - }, - Start: { - background: { - color: $mol_theme.back, - }, - padding: { - top: '6rem', - }, - flex: { - grow: 1, - direction: 'column', - }, - align: { - items: 'center', - }, - }, - Menu: { - Body_content: { - gap: $mol_gap.block, - maxWidth: '25rem', - flex: { - direction: 'row', - }, - }, - Head: { - justify: { - content: 'flex-start' - }, - }, - }, - Body: { - flex: { - direction: 'column', - grow: 1, - }, - }, - Player: { - flex: { - grow: 1, - basis: '30rem', - }, - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - export default $ //# sourceMappingURL=node.js.map diff --git a/node.test.js b/node.test.js index 73fbb3f..2844cc7 100644 --- a/node.test.js +++ b/node.test.js @@ -19,15240 +19,5 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, var $ = ( typeof module === 'object' ) ? ( module['export'+'s'] = globalThis ) : globalThis $.$$ = $ -; -"use strict"; -var $; -(function ($) { - $.$mol_ambient_ref = Symbol('$mol_ambient_ref'); - function $mol_ambient(overrides) { - return Object.setPrototypeOf(overrides, this || $); - } - $.$mol_ambient = $mol_ambient; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const instances = new WeakSet(); - function $mol_delegate(proto, target) { - const proxy = new Proxy(proto, { - get: (_, field) => { - const obj = target(); - let val = Reflect.get(obj, field); - if (typeof val === 'function') { - val = val.bind(obj); - } - return val; - }, - has: (_, field) => Reflect.has(target(), field), - set: (_, field, value) => Reflect.set(target(), field, value), - getOwnPropertyDescriptor: (_, field) => Reflect.getOwnPropertyDescriptor(target(), field), - ownKeys: () => Reflect.ownKeys(target()), - getPrototypeOf: () => Reflect.getPrototypeOf(target()), - setPrototypeOf: (_, donor) => Reflect.setPrototypeOf(target(), donor), - isExtensible: () => Reflect.isExtensible(target()), - preventExtensions: () => Reflect.preventExtensions(target()), - apply: (_, self, args) => Reflect.apply(target(), self, args), - construct: (_, args, retarget) => Reflect.construct(target(), args, retarget), - defineProperty: (_, field, descr) => Reflect.defineProperty(target(), field, descr), - deleteProperty: (_, field) => Reflect.deleteProperty(target(), field), - }); - instances.add(proxy); - return proxy; - } - $.$mol_delegate = $mol_delegate; - Reflect.defineProperty($mol_delegate, Symbol.hasInstance, { - value: (obj) => instances.has(obj), - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_owning_map = new WeakMap(); - function $mol_owning_allow(having) { - try { - if (!having) - return false; - if (typeof having !== 'object' && typeof having !== 'function') - return false; - if (having instanceof $mol_delegate) - return false; - if (typeof having['destructor'] !== 'function') - return false; - return true; - } - catch { - return false; - } - } - $.$mol_owning_allow = $mol_owning_allow; - function $mol_owning_get(having, Owner) { - if (!$mol_owning_allow(having)) - return null; - while (true) { - const owner = $.$mol_owning_map.get(having); - if (!owner) - return owner; - if (!Owner) - return owner; - if (owner instanceof Owner) - return owner; - having = owner; - } - } - $.$mol_owning_get = $mol_owning_get; - function $mol_owning_check(owner, having) { - if (!$mol_owning_allow(having)) - return false; - if ($.$mol_owning_map.get(having) !== owner) - return false; - return true; - } - $.$mol_owning_check = $mol_owning_check; - function $mol_owning_catch(owner, having) { - if (!$mol_owning_allow(having)) - return false; - if ($.$mol_owning_map.get(having)) - return false; - $.$mol_owning_map.set(having, owner); - return true; - } - $.$mol_owning_catch = $mol_owning_catch; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_fail(error) { - throw error; - } - $.$mol_fail = $mol_fail; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_fail_hidden(error) { - throw error; - } - $.$mol_fail_hidden = $mol_fail_hidden; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - const named = new WeakSet(); - function $mol_func_name(func) { - let name = func.name; - if (name?.length > 1) - return name; - if (named.has(func)) - return name; - for (let key in this) { - try { - if (this[key] !== func) - continue; - name = key; - Object.defineProperty(func, 'name', { value: name }); - break; - } - catch { } - } - named.add(func); - return name; - } - $.$mol_func_name = $mol_func_name; - function $mol_func_name_from(target, source) { - Object.defineProperty(target, 'name', { value: source.name }); - return target; - } - $.$mol_func_name_from = $mol_func_name_from; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_object2 { - static $ = $; - [Symbol.toStringTag]; - [$mol_ambient_ref] = null; - get $() { - if (this[$mol_ambient_ref]) - return this[$mol_ambient_ref]; - const owner = $mol_owning_get(this); - return this[$mol_ambient_ref] = owner?.$ || $mol_object2.$; - } - set $(next) { - if (this[$mol_ambient_ref]) - $mol_fail_hidden(new Error('Context already defined')); - this[$mol_ambient_ref] = next; - } - static create(init) { - const obj = new this; - if (init) - init(obj); - return obj; - } - static [Symbol.toPrimitive]() { - return this.toString(); - } - static toString() { - return this[Symbol.toStringTag] || this.$.$mol_func_name(this); - } - static toJSON() { - return this.toString(); - } - destructor() { } - static destructor() { } - toString() { - return this[Symbol.toStringTag] || this.constructor.name + '<>'; - } - } - $.$mol_object2 = $mol_object2; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - let $$; - (function ($$) { - let $; - })($$ = $_1.$$ || ($_1.$$ = {})); - $_1.$mol_object_field = Symbol('$mol_object_field'); - class $mol_object extends $mol_object2 { - static make(config) { - return super.create(obj => { - for (let key in config) - obj[key] = config[key]; - }); - } - } - $_1.$mol_object = $mol_object; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_window extends $mol_object { - static size() { - return { - width: 1024, - height: 768, - }; - } - } - $.$mol_window = $mol_window; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - let $mol_wire_cursor; - (function ($mol_wire_cursor) { - $mol_wire_cursor[$mol_wire_cursor["stale"] = -1] = "stale"; - $mol_wire_cursor[$mol_wire_cursor["doubt"] = -2] = "doubt"; - $mol_wire_cursor[$mol_wire_cursor["fresh"] = -3] = "fresh"; - $mol_wire_cursor[$mol_wire_cursor["final"] = -4] = "final"; - })($mol_wire_cursor = $.$mol_wire_cursor || ($.$mol_wire_cursor = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wire_pub extends Object { - data = []; - static get [Symbol.species]() { - return Array; - } - sub_from = 0; - get sub_list() { - const res = []; - for (let i = this.sub_from; i < this.data.length; i += 2) { - res.push(this.data[i]); - } - return res; - } - get sub_empty() { - return this.sub_from === this.data.length; - } - sub_on(sub, pub_pos) { - const pos = this.data.length; - this.data.push(sub, pub_pos); - return pos; - } - sub_off(sub_pos) { - if (!(sub_pos < this.data.length)) { - $mol_fail(new Error(`Wrong pos ${sub_pos}`)); - } - const end = this.data.length - 2; - if (sub_pos !== end) { - this.peer_move(end, sub_pos); - } - this.data.pop(); - this.data.pop(); - if (this.data.length === this.sub_from) - this.reap(); - } - reap() { } - promote() { - $mol_wire_auto()?.track_next(this); - } - fresh() { } - complete() { } - get incompleted() { - return false; - } - emit(quant = $mol_wire_cursor.stale) { - for (let i = this.sub_from; i < this.data.length; i += 2) { - ; - this.data[i].absorb(quant); - } - } - peer_move(from_pos, to_pos) { - const peer = this.data[from_pos]; - const self_pos = this.data[from_pos + 1]; - this.data[to_pos] = peer; - this.data[to_pos + 1] = self_pos; - peer.peer_repos(self_pos, to_pos); - } - peer_repos(peer_pos, self_pos) { - this.data[peer_pos + 1] = self_pos; - } - } - $.$mol_wire_pub = $mol_wire_pub; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - $.$mol_wire_auto_sub = null; - function $mol_wire_auto(next = $.$mol_wire_auto_sub) { - return $.$mol_wire_auto_sub = next; - } - $.$mol_wire_auto = $mol_wire_auto; - $.$mol_wire_affected = []; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $['devtoolsFormatters'] ||= []; - function $mol_dev_format_register(config) { - $['devtoolsFormatters'].push(config); - } - $.$mol_dev_format_register = $mol_dev_format_register; - $.$mol_dev_format_head = Symbol('$mol_dev_format_head'); - $.$mol_dev_format_body = Symbol('$mol_dev_format_body'); - $mol_dev_format_register({ - header: (val, config = false) => { - if (config) - return null; - if (!val) - return null; - if ($.$mol_dev_format_head in val) { - try { - return val[$.$mol_dev_format_head](); - } - catch (error) { - return $.$mol_dev_format_accent($mol_dev_format_native(val), '💨', $mol_dev_format_native(error), ''); - } - } - if (typeof val === 'function') { - return $mol_dev_format_native(val); - } - if (Symbol.toStringTag in val) { - return $mol_dev_format_native(val); - } - return null; - }, - hasBody: val => val[$.$mol_dev_format_body], - body: val => val[$.$mol_dev_format_body](), - }); - function $mol_dev_format_native(obj) { - if (typeof obj === 'undefined') - return $.$mol_dev_format_shade('undefined'); - return [ - 'object', - { - object: obj, - config: true, - }, - ]; - } - $.$mol_dev_format_native = $mol_dev_format_native; - function $mol_dev_format_auto(obj) { - if (obj == null) - return $.$mol_dev_format_shade(String(obj)); - return [ - 'object', - { - object: obj, - config: false, - }, - ]; - } - $.$mol_dev_format_auto = $mol_dev_format_auto; - function $mol_dev_format_element(element, style, ...content) { - const styles = []; - for (let key in style) - styles.push(`${key} : ${style[key]}`); - return [ - element, - { - style: styles.join(' ; '), - }, - ...content, - ]; - } - $.$mol_dev_format_element = $mol_dev_format_element; - function $mol_dev_format_span(style, ...content) { - return $mol_dev_format_element('span', { - ...style, - }, ...content); - } - $.$mol_dev_format_span = $mol_dev_format_span; - $.$mol_dev_format_div = $mol_dev_format_element.bind(null, 'div'); - $.$mol_dev_format_ol = $mol_dev_format_element.bind(null, 'ol'); - $.$mol_dev_format_li = $mol_dev_format_element.bind(null, 'li'); - $.$mol_dev_format_table = $mol_dev_format_element.bind(null, 'table'); - $.$mol_dev_format_tr = $mol_dev_format_element.bind(null, 'tr'); - $.$mol_dev_format_td = $mol_dev_format_element.bind(null, 'td'); - $.$mol_dev_format_accent = $mol_dev_format_span.bind(null, { - 'color': 'magenta', - }); - $.$mol_dev_format_strong = $mol_dev_format_span.bind(null, { - 'font-weight': 'bold', - }); - $.$mol_dev_format_string = $mol_dev_format_span.bind(null, { - 'color': 'green', - }); - $.$mol_dev_format_shade = $mol_dev_format_span.bind(null, { - 'color': 'gray', - }); - $.$mol_dev_format_indent = $.$mol_dev_format_div.bind(null, { - 'margin-left': '13px' - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wire_pub_sub extends $mol_wire_pub { - pub_from = 0; - cursor = $mol_wire_cursor.stale; - get temp() { - return false; - } - get pub_list() { - const res = []; - const max = this.cursor >= 0 ? this.cursor : this.sub_from; - for (let i = this.pub_from; i < max; i += 2) { - if (this.data[i]) - res.push(this.data[i]); - } - return res; - } - track_on() { - this.cursor = this.pub_from; - const sub = $mol_wire_auto(); - $mol_wire_auto(this); - return sub; - } - promote() { - if (this.cursor >= this.pub_from) { - $mol_fail(new Error('Circular subscription')); - } - super.promote(); - } - track_next(pub) { - if (this.cursor < 0) - $mol_fail(new Error('Promo to non begun sub')); - if (this.cursor < this.sub_from) { - const next = this.data[this.cursor]; - if (pub === undefined) - return next ?? null; - if (next === pub) { - this.cursor += 2; - return next; - } - if (next) { - if (this.sub_from < this.data.length) { - this.peer_move(this.sub_from, this.data.length); - } - this.peer_move(this.cursor, this.sub_from); - this.sub_from += 2; - } - } - else { - if (pub === undefined) - return null; - if (this.sub_from < this.data.length) { - this.peer_move(this.sub_from, this.data.length); - } - this.sub_from += 2; - } - this.data[this.cursor] = pub; - this.data[this.cursor + 1] = pub.sub_on(this, this.cursor); - this.cursor += 2; - return pub; - } - track_off(sub) { - $mol_wire_auto(sub); - if (this.cursor < 0) { - $mol_fail(new Error('End of non begun sub')); - } - for (let cursor = this.pub_from; cursor < this.cursor; cursor += 2) { - const pub = this.data[cursor]; - pub.fresh(); - } - this.cursor = $mol_wire_cursor.fresh; - } - pub_off(sub_pos) { - this.data[sub_pos] = undefined; - this.data[sub_pos + 1] = undefined; - } - destructor() { - for (let cursor = this.data.length - 2; cursor >= this.sub_from; cursor -= 2) { - const sub = this.data[cursor]; - const pos = this.data[cursor + 1]; - sub.pub_off(pos); - this.data.pop(); - this.data.pop(); - } - this.cursor = this.pub_from; - this.track_cut(); - this.cursor = $mol_wire_cursor.final; - } - track_cut() { - if (this.cursor < this.pub_from) { - $mol_fail(new Error('Cut of non begun sub')); - } - let tail = 0; - for (let cursor = this.cursor; cursor < this.sub_from; cursor += 2) { - const pub = this.data[cursor]; - pub?.sub_off(this.data[cursor + 1]); - if (this.sub_from < this.data.length) { - this.peer_move(this.data.length - 2, cursor); - this.data.pop(); - this.data.pop(); - } - else { - ++tail; - } - } - for (; tail; --tail) { - this.data.pop(); - this.data.pop(); - } - this.sub_from = this.cursor; - } - complete() { } - complete_pubs() { - const limit = this.cursor < 0 ? this.sub_from : this.cursor; - for (let cursor = this.pub_from; cursor < limit; cursor += 2) { - const pub = this.data[cursor]; - if (pub?.incompleted) - return; - } - for (let cursor = this.pub_from; cursor < limit; cursor += 2) { - const pub = this.data[cursor]; - pub?.complete(); - } - } - absorb(quant = $mol_wire_cursor.stale) { - if (this.cursor === $mol_wire_cursor.final) - return; - if (this.cursor >= quant) - return; - this.cursor = quant; - this.emit($mol_wire_cursor.doubt); - } - [$mol_dev_format_head]() { - return $mol_dev_format_native(this); - } - get pub_empty() { - return this.sub_from === this.pub_from; - } - } - $.$mol_wire_pub_sub = $mol_wire_pub_sub; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_after_tick extends $mol_object2 { - task; - static promise = null; - cancelled = false; - constructor(task) { - super(); - this.task = task; - if (!$mol_after_tick.promise) - $mol_after_tick.promise = Promise.resolve().then(() => { - $mol_after_tick.promise = null; - }); - $mol_after_tick.promise.then(() => { - if (this.cancelled) - return; - task(); - }); - } - destructor() { - this.cancelled = true; - } - } - $.$mol_after_tick = $mol_after_tick; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_promise_like(val) { - try { - return val && typeof val === 'object' && 'then' in val && typeof val.then === 'function'; - } - catch { - return false; - } - } - $.$mol_promise_like = $mol_promise_like; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const wrappers = new WeakMap(); - class $mol_wire_fiber extends $mol_wire_pub_sub { - task; - host; - static warm = true; - static planning = new Set(); - static reaping = new Set(); - static plan_task = null; - static plan() { - if (this.plan_task) - return; - this.plan_task = new $mol_after_tick(() => { - try { - this.sync(); - } - finally { - $mol_wire_fiber.plan_task = null; - } - }); - } - static sync() { - while (this.planning.size) { - for (const fiber of this.planning) { - this.planning.delete(fiber); - if (fiber.cursor >= 0) - continue; - if (fiber.cursor === $mol_wire_cursor.final) - continue; - fiber.fresh(); - } - } - while (this.reaping.size) { - const fibers = this.reaping; - this.reaping = new Set; - for (const fiber of fibers) { - if (!fiber.sub_empty) - continue; - fiber.destructor(); - } - } - } - [Symbol.toStringTag]; - cache = undefined; - get args() { - return this.data.slice(0, this.pub_from); - } - result() { - if ($mol_promise_like(this.cache)) - return; - if (this.cache instanceof Error) - return; - return this.cache; - } - get incompleted() { - return $mol_promise_like(this.cache); - } - field() { - return this.task.name + '<>'; - } - constructor(id, task, host, args) { - super(); - this.task = task; - this.host = host; - if (args) - this.data.push(...args); - this.pub_from = this.sub_from = args?.length ?? 0; - this[Symbol.toStringTag] = id; - } - plan() { - $mol_wire_fiber.planning.add(this); - $mol_wire_fiber.plan(); - return this; - } - reap() { - $mol_wire_fiber.reaping.add(this); - $mol_wire_fiber.plan(); - } - toString() { - return this[Symbol.toStringTag]; - } - toJSON() { - return this[Symbol.toStringTag]; - } - [$mol_dev_format_head]() { - const cursor = { - [$mol_wire_cursor.stale]: '🔴', - [$mol_wire_cursor.doubt]: '🟡', - [$mol_wire_cursor.fresh]: '🟢', - [$mol_wire_cursor.final]: '🔵', - }[this.cursor] ?? this.cursor.toString(); - return $mol_dev_format_div({}, $mol_owning_check(this, this.cache) - ? $mol_dev_format_auto({ - [$mol_dev_format_head]: () => $mol_dev_format_shade(cursor), - [$mol_dev_format_body]: () => $mol_dev_format_native(this), - }) - : $mol_dev_format_shade($mol_dev_format_native(this), cursor), $mol_dev_format_auto(this.cache)); - } - get $() { - return (this.host ?? this.task)['$']; - } - emit(quant = $mol_wire_cursor.stale) { - if (this.sub_empty) - this.plan(); - else - super.emit(quant); - } - fresh() { - if (this.cursor === $mol_wire_cursor.fresh) - return; - if (this.cursor === $mol_wire_cursor.final) - return; - check: if (this.cursor === $mol_wire_cursor.doubt) { - for (let i = this.pub_from; i < this.sub_from; i += 2) { - ; - this.data[i]?.fresh(); - if (this.cursor !== $mol_wire_cursor.doubt) - break check; - } - this.cursor = $mol_wire_cursor.fresh; - return; - } - const bu = this.track_on(); - let result; - try { - switch (this.pub_from) { - case 0: - result = this.task.call(this.host); - break; - case 1: - result = this.task.call(this.host, this.data[0]); - break; - default: - result = this.task.call(this.host, ...this.args); - break; - } - if ($mol_promise_like(result)) { - if (wrappers.has(result)) { - result = wrappers.get(result).then(a => a); - } - else { - const put = (res) => { - if (this.cache === result) - this.put(res); - return res; - }; - wrappers.set(result, result = Object.assign(result.then(put, put), { destructor: result.destructor || (() => { }) })); - wrappers.set(result, result); - const error = new Error(`Promise in ${this}`); - Object.defineProperty(result, 'stack', { get: () => error.stack }); - } - } - } - catch (error) { - if (error instanceof Error || $mol_promise_like(error)) { - result = error; - } - else { - result = new Error(String(error), { cause: error }); - } - if ($mol_promise_like(result)) { - if (wrappers.has(result)) { - result = wrappers.get(result); - } - else { - wrappers.set(result, result = Object.assign(result.finally(() => { - if (this.cache === result) - this.absorb(); - }), { destructor: result.destructor || (() => { }) })); - const error = new Error(`Promise in ${this}`); - Object.defineProperty(result, 'stack', { get: () => error.stack }); - } - } - } - if (!$mol_promise_like(result)) { - this.track_cut(); - } - this.track_off(bu); - this.put(result); - return this; - } - refresh() { - this.cursor = $mol_wire_cursor.stale; - this.fresh(); - } - sync() { - if (!$mol_wire_fiber.warm) { - return this.result(); - } - this.promote(); - this.fresh(); - if (this.cache instanceof Error) { - return $mol_fail_hidden(this.cache); - } - if ($mol_promise_like(this.cache)) { - return $mol_fail_hidden(this.cache); - } - return this.cache; - } - async async_raw() { - while (true) { - this.fresh(); - if (this.cache instanceof Error) { - $mol_fail_hidden(this.cache); - } - if (!$mol_promise_like(this.cache)) - return this.cache; - await Promise.race([this.cache, this.step()]); - if (!$mol_promise_like(this.cache)) - return this.cache; - if (this.cursor === $mol_wire_cursor.final) { - await new Promise(() => { }); - } - } - } - async() { - const promise = this.async_raw(); - if (!promise.destructor) - promise.destructor = () => this.destructor(); - return promise; - } - step() { - return new Promise(done => { - const sub = new $mol_wire_pub_sub; - const prev = sub.track_on(); - sub.track_next(this); - sub.track_off(prev); - sub.absorb = () => { - done(null); - setTimeout(() => sub.destructor()); - }; - }); - } - destructor() { - super.destructor(); - if ($mol_owning_check(this, this.cache)) { - this.cache.destructor(); - } - } - } - $.$mol_wire_fiber = $mol_wire_fiber; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_guid(length = 8, exists = () => false) { - for (;;) { - let id = Math.random().toString(36).substring(2, length + 2).toUpperCase(); - if (exists(id)) - continue; - return id; - } - } - $.$mol_guid = $mol_guid; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_key_store = new WeakMap(); - const TypedArray = Object.getPrototypeOf(Uint8Array); - function $mol_key(value) { - if (typeof value === 'bigint') - return value.toString() + 'n'; - if (typeof value === 'symbol') - return value.description; - if (!value) - return JSON.stringify(value); - if (typeof value !== 'object' && typeof value !== 'function') - return JSON.stringify(value); - return JSON.stringify(value, (field, value) => { - if (typeof value === 'bigint') - return value.toString() + 'n'; - if (typeof value === 'symbol') - return value.description; - if (!value) - return value; - if (typeof value !== 'object' && typeof value !== 'function') - return value; - if (Array.isArray(value)) - return value; - const proto = Reflect.getPrototypeOf(value); - if (!proto) - return value; - if (Reflect.getPrototypeOf(proto) === null) - return value; - if ('toJSON' in value) - return value; - if (value instanceof RegExp) - return value.toString(); - if (value instanceof TypedArray) - return [...value]; - let key = $.$mol_key_store.get(value); - if (key) - return key; - key = $mol_guid(); - $.$mol_key_store.set(value, key); - return key; - }); - } - $.$mol_key = $mol_key; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_after_timeout extends $mol_object2 { - delay; - task; - id; - constructor(delay, task) { - super(); - this.delay = delay; - this.task = task; - this.id = setTimeout(task, delay); - } - destructor() { - clearTimeout(this.id); - } - } - $.$mol_after_timeout = $mol_after_timeout; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_after_frame extends $mol_after_timeout { - task; - constructor(task) { - super(16, task); - this.task = task; - } - } - $.$mol_after_frame = $mol_after_frame; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_compare_deep_cache = new WeakMap(); - function $mol_compare_deep(left, right) { - if (Object.is(left, right)) - return true; - if (left === null) - return false; - if (right === null) - return false; - if (typeof left !== 'object') - return false; - if (typeof right !== 'object') - return false; - const left_proto = Reflect.getPrototypeOf(left); - const right_proto = Reflect.getPrototypeOf(right); - if (left_proto !== right_proto) - return false; - if (left instanceof Boolean) - return Object.is(left.valueOf(), right['valueOf']()); - if (left instanceof Number) - return Object.is(left.valueOf(), right['valueOf']()); - if (left instanceof String) - return Object.is(left.valueOf(), right['valueOf']()); - if (left instanceof Date) - return Object.is(left.valueOf(), right['valueOf']()); - if (left instanceof RegExp) - return left.source === right.source && left.flags === right.flags; - if (left instanceof Error) - return left.message === right.message && left.stack === right.stack; - let left_cache = $.$mol_compare_deep_cache.get(left); - if (left_cache) { - const right_cache = left_cache.get(right); - if (typeof right_cache === 'boolean') - return right_cache; - } - else { - left_cache = new WeakMap(); - $.$mol_compare_deep_cache.set(left, left_cache); - } - left_cache.set(right, true); - let result; - try { - if (!left_proto) - result = compare_pojo(left, right); - else if (!Reflect.getPrototypeOf(left_proto)) - result = compare_pojo(left, right); - else if (Symbol.toPrimitive in left) - result = compare_primitive(left, right); - else if (Array.isArray(left)) - result = compare_array(left, right); - else if (left instanceof Set) - result = compare_set(left, right); - else if (left instanceof Map) - result = compare_map(left, right); - else if (ArrayBuffer.isView(left)) - result = compare_buffer(left, right); - else if (Symbol.iterator in left) - result = compare_iterator(left[Symbol.iterator](), right[Symbol.iterator]()); - else - result = false; - } - finally { - left_cache.set(right, result); - } - return result; - } - $.$mol_compare_deep = $mol_compare_deep; - function compare_array(left, right) { - const len = left.length; - if (len !== right.length) - return false; - for (let i = 0; i < len; ++i) { - if (!$mol_compare_deep(left[i], right[i])) - return false; - } - return true; - } - function compare_buffer(left, right) { - const len = left.byteLength; - if (len !== right.byteLength) - return false; - if (left instanceof DataView) - return compare_buffer(new Uint8Array(left.buffer, left.byteOffset, left.byteLength), new Uint8Array(right.buffer, left.byteOffset, left.byteLength)); - for (let i = 0; i < len; ++i) { - if (left[i] !== right[i]) - return false; - } - return true; - } - function compare_iterator(left, right) { - while (true) { - const left_next = left.next(); - const right_next = right.next(); - if (left_next.done !== right_next.done) - return false; - if (left_next.done) - break; - if (!$mol_compare_deep(left_next.value, right_next.value)) - return false; - } - return true; - } - function compare_set(left, right) { - if (left.size !== right.size) - return false; - return compare_iterator(left.values(), right.values()); - } - function compare_map(left, right) { - if (left.size !== right.size) - return false; - return compare_iterator(left.keys(), right.keys()) - && compare_iterator(left.values(), right.values()); - } - function compare_pojo(left, right) { - const left_keys = Object.getOwnPropertyNames(left); - const right_keys = Object.getOwnPropertyNames(right); - if (!compare_array(left_keys, right_keys)) - return false; - for (let key of left_keys) { - if (!$mol_compare_deep(left[key], right[key])) - return false; - } - const left_syms = Object.getOwnPropertySymbols(left); - const right_syms = Object.getOwnPropertySymbols(right); - if (!compare_array(left_syms, right_syms)) - return false; - for (let key of left_syms) { - if (!$mol_compare_deep(left[key], right[key])) - return false; - } - return true; - } - function compare_primitive(left, right) { - return Object.is(left[Symbol.toPrimitive]('default'), right[Symbol.toPrimitive]('default')); - } -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_log3_area_lazy(event) { - const self = this; - const stack = self.$mol_log3_stack; - const deep = stack.length; - let logged = false; - stack.push(() => { - logged = true; - self.$mol_log3_area.call(self, event); - }); - return () => { - if (logged) - self.console.groupEnd(); - if (stack.length > deep) - stack.length = deep; - }; - } - $.$mol_log3_area_lazy = $mol_log3_area_lazy; - $.$mol_log3_stack = []; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_span extends $mol_object2 { - uri; - source; - row; - col; - length; - constructor(uri, source, row, col, length) { - super(); - this.uri = uri; - this.source = source; - this.row = row; - this.col = col; - this.length = length; - this[Symbol.toStringTag] = this.uri + ('#' + this.row + ':' + this.col + '/' + this.length); - } - static unknown = $mol_span.begin('?'); - static begin(uri, source = '') { - return new $mol_span(uri, source, 1, 1, 0); - } - static end(uri, source) { - return new $mol_span(uri, source, 1, source.length + 1, 0); - } - static entire(uri, source) { - return new $mol_span(uri, source, 1, 1, source.length); - } - toString() { - return this[Symbol.toStringTag]; - } - toJSON() { - return { - uri: this.uri, - row: this.row, - col: this.col, - length: this.length - }; - } - error(message, Class = Error) { - return new Class(`${message} (${this})`); - } - span(row, col, length) { - return new $mol_span(this.uri, this.source, row, col, length); - } - after(length = 0) { - return new $mol_span(this.uri, this.source, this.row, this.col + this.length, length); - } - slice(begin, end = -1) { - let len = this.length; - if (begin < 0) - begin += len; - if (end < 0) - end += len; - if (begin < 0 || begin > len) - this.$.$mol_fail(this.error(`Begin value '${begin}' out of range`, RangeError)); - if (end < 0 || end > len) - this.$.$mol_fail(this.error(`End value '${end}' out of range`, RangeError)); - if (end < begin) - this.$.$mol_fail(this.error(`End value '${end}' can't be less than begin value`, RangeError)); - return this.span(this.row, this.col + begin, end - begin); - } - } - $.$mol_span = $mol_span; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_tree2_to_string(tree) { - let output = []; - function dump(tree, prefix = '') { - if (tree.type.length) { - if (!prefix.length) { - prefix = "\t"; - } - output.push(tree.type); - if (tree.kids.length == 1) { - output.push(' '); - dump(tree.kids[0], prefix); - return; - } - output.push("\n"); - } - else if (tree.value.length || prefix.length) { - output.push("\\" + tree.value + "\n"); - } - for (const kid of tree.kids) { - output.push(prefix); - dump(kid, prefix + "\t"); - } - } - dump(tree); - return output.join(''); - } - $.$mol_tree2_to_string = $mol_tree2_to_string; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_tree2 extends Object { - type; - value; - kids; - span; - constructor(type, value, kids, span) { - super(); - this.type = type; - this.value = value; - this.kids = kids; - this.span = span; - this[Symbol.toStringTag] = type || '\\' + value; - } - static list(kids, span = $mol_span.unknown) { - return new $mol_tree2('', '', kids, span); - } - list(kids) { - return $mol_tree2.list(kids, this.span); - } - static data(value, kids = [], span = $mol_span.unknown) { - const chunks = value.split('\n'); - if (chunks.length > 1) { - let kid_span = span.span(span.row, span.col, 0); - const data = chunks.map(chunk => { - kid_span = kid_span.after(chunk.length); - return new $mol_tree2('', chunk, [], kid_span); - }); - kids = [...data, ...kids]; - value = ''; - } - return new $mol_tree2('', value, kids, span); - } - data(value, kids = []) { - return $mol_tree2.data(value, kids, this.span); - } - static struct(type, kids = [], span = $mol_span.unknown) { - if (/[ \n\t\\]/.test(type)) { - $$.$mol_fail(span.error(`Wrong type ${JSON.stringify(type)}`)); - } - return new $mol_tree2(type, '', kids, span); - } - struct(type, kids = []) { - return $mol_tree2.struct(type, kids, this.span); - } - clone(kids, span = this.span) { - return new $mol_tree2(this.type, this.value, kids, span); - } - text() { - var values = []; - for (var kid of this.kids) { - if (kid.type) - continue; - values.push(kid.value); - } - return this.value + values.join('\n'); - } - static fromString(str, uri = 'unknown') { - return $$.$mol_tree2_from_string(str, uri); - } - toString() { - return $$.$mol_tree2_to_string(this); - } - insert(value, ...path) { - if (path.length === 0) - return value; - const type = path[0]; - if (typeof type === 'string') { - let replaced = false; - const sub = this.kids.map((item, index) => { - if (item.type !== type) - return item; - replaced = true; - return item.insert(value, ...path.slice(1)); - }).filter(Boolean); - if (!replaced && value) { - sub.push(this.struct(type, []).insert(value, ...path.slice(1))); - } - return this.clone(sub); - } - else if (typeof type === 'number') { - const sub = this.kids.slice(); - sub[type] = (sub[type] || this.list([])) - .insert(value, ...path.slice(1)); - return this.clone(sub.filter(Boolean)); - } - else { - const kids = ((this.kids.length === 0) ? [this.list([])] : this.kids) - .map(item => item.insert(value, ...path.slice(1))) - .filter(Boolean); - return this.clone(kids); - } - } - select(...path) { - let next = [this]; - for (const type of path) { - if (!next.length) - break; - const prev = next; - next = []; - for (var item of prev) { - switch (typeof (type)) { - case 'string': - for (var child of item.kids) { - if (child.type == type) { - next.push(child); - } - } - break; - case 'number': - if (type < item.kids.length) - next.push(item.kids[type]); - break; - default: next.push(...item.kids); - } - } - } - return this.list(next); - } - filter(path, value) { - const sub = this.kids.filter(item => { - var found = item.select(...path); - if (value === undefined) { - return Boolean(found.kids.length); - } - else { - return found.kids.some(child => child.value == value); - } - }); - return this.clone(sub); - } - hack_self(belt, context = {}) { - let handle = belt[this.type] || belt['']; - if (!handle || handle === Object.prototype[this.type]) { - handle = (input, belt, context) => [ - input.clone(input.hack(belt, context), context.span) - ]; - } - try { - return handle(this, belt, context); - } - catch (error) { - error.message += `\n${this.clone([])}${this.span}`; - $mol_fail_hidden(error); - } - } - hack(belt, context = {}) { - return [].concat(...this.kids.map(child => child.hack_self(belt, context))); - } - error(message, Class = Error) { - return this.span.error(`${message}\n${this.clone([])}`, Class); - } - } - $.$mol_tree2 = $mol_tree2; - class $mol_tree2_empty extends $mol_tree2 { - constructor() { - super('', '', [], $mol_span.unknown); - } - } - $.$mol_tree2_empty = $mol_tree2_empty; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_error_syntax extends SyntaxError { - reason; - line; - span; - constructor(reason, line, span) { - super(`${reason}\n${span}\n${line.substring(0, span.col - 1).replace(/\S/g, ' ')}${''.padEnd(span.length, '!')}\n${line}`); - this.reason = reason; - this.line = line; - this.span = span; - } - } - $.$mol_error_syntax = $mol_error_syntax; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_tree2_from_string(str, uri = '?') { - const span = $mol_span.entire(uri, str); - var root = $mol_tree2.list([], span); - var stack = [root]; - var pos = 0, row = 0, min_indent = 0; - while (str.length > pos) { - var indent = 0; - var line_start = pos; - row++; - while (str.length > pos && str[pos] == '\t') { - indent++; - pos++; - } - if (!root.kids.length) { - min_indent = indent; - } - indent -= min_indent; - if (indent < 0 || indent >= stack.length) { - const sp = span.span(row, 1, pos - line_start); - while (str.length > pos && str[pos] != '\n') { - pos++; - } - if (indent < 0) { - if (str.length > pos) { - this.$mol_fail(new this.$mol_error_syntax(`Too few tabs`, str.substring(line_start, pos), sp)); - } - } - else { - this.$mol_fail(new this.$mol_error_syntax(`Too many tabs`, str.substring(line_start, pos), sp)); - } - } - stack.length = indent + 1; - var parent = stack[indent]; - while (str.length > pos && str[pos] != '\\' && str[pos] != '\n') { - var error_start = pos; - while (str.length > pos && (str[pos] == ' ' || str[pos] == '\t')) { - pos++; - } - if (pos > error_start) { - let line_end = str.indexOf('\n', pos); - if (line_end === -1) - line_end = str.length; - const sp = span.span(row, error_start - line_start + 1, pos - error_start); - this.$mol_fail(new this.$mol_error_syntax(`Wrong nodes separator`, str.substring(line_start, line_end), sp)); - } - var type_start = pos; - while (str.length > pos && - str[pos] != '\\' && - str[pos] != ' ' && - str[pos] != '\t' && - str[pos] != '\n') { - pos++; - } - if (pos > type_start) { - let next = new $mol_tree2(str.slice(type_start, pos), '', [], span.span(row, type_start - line_start + 1, pos - type_start)); - const parent_kids = parent.kids; - parent_kids.push(next); - parent = next; - } - if (str.length > pos && str[pos] == ' ') { - pos++; - } - } - if (str.length > pos && str[pos] == '\\') { - var data_start = pos; - while (str.length > pos && str[pos] != '\n') { - pos++; - } - let next = new $mol_tree2('', str.slice(data_start + 1, pos), [], span.span(row, data_start - line_start + 2, pos - data_start - 1)); - const parent_kids = parent.kids; - parent_kids.push(next); - parent = next; - } - if (str.length === pos && stack.length > 0) { - const sp = span.span(row, pos - line_start + 1, 1); - this.$mol_fail(new this.$mol_error_syntax(`Unexpected EOF, LF required`, str.substring(line_start, str.length), sp)); - } - stack.push(parent); - pos++; - } - return root; - } - $.$mol_tree2_from_string = $mol_tree2_from_string; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_tree2_from_json(json, span = $mol_span.unknown) { - if (typeof json === 'boolean' || typeof json === 'number' || json === null) { - return new $mol_tree2(String(json), '', [], span); - } - if (typeof json === 'string') { - return $mol_tree2.data(json, [], span); - } - if (typeof json.toJSON === 'function') { - return $mol_tree2_from_json(json.toJSON()); - } - if (Array.isArray(json)) { - const sub = json.map(json => $mol_tree2_from_json(json, span)); - return new $mol_tree2('/', '', sub, span); - } - if (ArrayBuffer.isView(json)) { - const buf = new Uint8Array(json.buffer, json.byteOffset, json.byteLength); - return $mol_tree2.data(String.fromCharCode(...buf), [], span); - } - if (json instanceof Date) { - return new $mol_tree2('', json.toISOString(), [], span); - } - if (json.toString !== Object.prototype.toString) { - return $mol_tree2.data(json.toString(), [], span); - } - if (json instanceof Error) { - const { name, message, stack } = json; - json = { ...json, name, message, stack }; - } - const sub = []; - for (var key in json) { - const val = json[key]; - if (val === undefined) - continue; - const subsub = $mol_tree2_from_json(val, span); - if (/^[^\n\t\\ ]+$/.test(key)) { - sub.push(new $mol_tree2(key, '', [subsub], span)); - } - else { - sub.push($mol_tree2.data(key, [subsub], span)); - } - } - return new $mol_tree2('*', '', sub, span); - } - $.$mol_tree2_from_json = $mol_tree2_from_json; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_term_color { - static reset = this.ansi(0, 0); - static bold = this.ansi(1, 22); - static italic = this.ansi(3, 23); - static underline = this.ansi(4, 24); - static inverse = this.ansi(7, 27); - static hidden = this.ansi(8, 28); - static strike = this.ansi(9, 29); - static gray = this.ansi(90, 39); - static red = this.ansi(91, 39); - static green = this.ansi(92, 39); - static yellow = this.ansi(93, 39); - static blue = this.ansi(94, 39); - static magenta = this.ansi(95, 39); - static cyan = this.ansi(96, 39); - static Gray = (str) => this.inverse(this.gray(str)); - static Red = (str) => this.inverse(this.red(str)); - static Green = (str) => this.inverse(this.green(str)); - static Yellow = (str) => this.inverse(this.yellow(str)); - static Blue = (str) => this.inverse(this.blue(str)); - static Magenta = (str) => this.inverse(this.magenta(str)); - static Cyan = (str) => this.inverse(this.cyan(str)); - static ansi(open, close) { - if (typeof process === 'undefined') - return String; - if (!process.stdout.isTTY) - return String; - const prefix = `\x1b[${open}m`; - const postfix = `\x1b[${close}m`; - const suffix_regexp = new RegExp(postfix.replace('[', '\\['), 'g'); - return function colorer(str) { - str = String(str); - if (str === '') - return str; - const suffix = str.replace(suffix_regexp, prefix); - return prefix + suffix + postfix; - }; - } - } - $.$mol_term_color = $mol_term_color; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_log3_node_make(level, output, type, color) { - return function $mol_log3_logger(event) { - if (!event.time) - event = { time: new Date().toISOString(), ...event }; - let tree = this.$mol_tree2_from_json(event); - tree = tree.struct(type, tree.kids); - let str = color(tree.toString()); - this.console[level](str); - const self = this; - return () => self.console.groupEnd(); - }; - } - $.$mol_log3_node_make = $mol_log3_node_make; - $.$mol_log3_come = $mol_log3_node_make('info', 'stdout', 'come', $mol_term_color.blue); - $.$mol_log3_done = $mol_log3_node_make('info', 'stdout', 'done', $mol_term_color.green); - $.$mol_log3_fail = $mol_log3_node_make('error', 'stderr', 'fail', $mol_term_color.red); - $.$mol_log3_warn = $mol_log3_node_make('warn', 'stderr', 'warn', $mol_term_color.yellow); - $.$mol_log3_rise = $mol_log3_node_make('log', 'stdout', 'rise', $mol_term_color.magenta); - $.$mol_log3_area = $mol_log3_node_make('log', 'stdout', 'area', $mol_term_color.cyan); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wire_task extends $mol_wire_fiber { - static getter(task) { - return function $mol_wire_task_get(host, args) { - const sub = $mol_wire_auto(); - const existen = sub?.track_next(); - reuse: if (existen) { - if (!existen.temp) - break reuse; - if (existen.host !== host) - break reuse; - if (existen.task !== task) - break reuse; - if (!$mol_compare_deep(existen.args, args)) - break reuse; - return existen; - } - const key = (host?.[Symbol.toStringTag] ?? host) + ('.' + task.name + '<#>'); - const next = new $mol_wire_task(key, task, host, args); - if (existen?.temp) { - $$.$mol_log3_warn({ - place: '$mol_wire_task', - message: `Non idempotency`, - sub, - pubs: [...sub?.pub_list ?? [], existen], - next, - hint: 'Ignore it', - }); - } - return next; - }; - } - get temp() { - return true; - } - complete() { - if ($mol_promise_like(this.cache)) - return; - this.destructor(); - } - put(next) { - const prev = this.cache; - this.cache = next; - if ($mol_promise_like(next)) { - this.cursor = $mol_wire_cursor.fresh; - if (next !== prev) - this.emit(); - if ($mol_owning_catch(this, next)) { - try { - next[Symbol.toStringTag] = this[Symbol.toStringTag]; - } - catch { - Object.defineProperty(next, Symbol.toStringTag, { value: this[Symbol.toStringTag] }); - } - } - return next; - } - this.cursor = $mol_wire_cursor.final; - if (this.sub_empty) - this.destructor(); - else if (next !== prev) - this.emit(); - return next; - } - } - $.$mol_wire_task = $mol_wire_task; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_method(host, field, descr) { - if (!descr) - descr = Reflect.getOwnPropertyDescriptor(host, field); - const orig = descr?.value ?? host[field]; - const sup = Reflect.getPrototypeOf(host); - if (typeof sup[field] === 'function') { - Object.defineProperty(orig, 'name', { value: sup[field].name }); - } - const temp = $mol_wire_task.getter(orig); - const value = function (...args) { - const fiber = temp(this ?? null, args); - return fiber.sync(); - }; - Object.defineProperty(value, 'name', { value: orig.name + ' ' }); - Object.assign(value, { orig }); - const descr2 = { ...descr, value }; - Reflect.defineProperty(host, field, descr2); - return descr2; - } - $.$mol_wire_method = $mol_wire_method; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - const catched = new WeakMap(); - function $mol_fail_catch(error) { - if (typeof error !== 'object') - return false; - if ($mol_promise_like(error)) - $mol_fail_hidden(error); - if (catched.get(error)) - return false; - catched.set(error, true); - return true; - } - $.$mol_fail_catch = $mol_fail_catch; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_fail_log(error) { - if ($mol_promise_like(error)) - return false; - if (!$mol_fail_catch(error)) - return false; - console.error(error); - return true; - } - $.$mol_fail_log = $mol_fail_log; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wire_atom extends $mol_wire_fiber { - static solo(host, task) { - const field = task.name + '<>'; - const existen = Object.getOwnPropertyDescriptor(host ?? task, field)?.value; - if (existen) - return existen; - const prefix = host?.[Symbol.toStringTag] ?? (host instanceof Function ? $$.$mol_func_name(host) : host); - const key = prefix + ('.' + field); - const fiber = new $mol_wire_atom(key, task, host, []); - (host ?? task)[field] = fiber; - return fiber; - } - static plex(host, task, key) { - const field = task.name + '<>'; - let dict = Object.getOwnPropertyDescriptor(host ?? task, field)?.value; - const prefix = host?.[Symbol.toStringTag] ?? (host instanceof Function ? $$.$mol_func_name(host) : host); - const key_str = $mol_key(key); - if (dict) { - const existen = dict.get(key_str); - if (existen) - return existen; - } - else { - dict = (host ?? task)[field] = new Map(); - } - const id = prefix + ('.' + task.name) + ('<' + key_str.replace(/^"|"$/g, "'") + '>'); - const fiber = new $mol_wire_atom(id, task, host, [key]); - dict.set(key_str, fiber); - return fiber; - } - static watching = new Set(); - static watcher = null; - static watch() { - $mol_wire_atom.watcher = new $mol_after_frame($mol_wire_atom.watch); - for (const atom of $mol_wire_atom.watching) { - if (atom.cursor === $mol_wire_cursor.final) { - $mol_wire_atom.watching.delete(atom); - } - else { - atom.cursor = $mol_wire_cursor.stale; - atom.fresh(); - } - } - } - watch() { - if (!$mol_wire_atom.watcher) { - $mol_wire_atom.watcher = new $mol_after_frame($mol_wire_atom.watch); - } - $mol_wire_atom.watching.add(this); - } - resync(args) { - return this.put(this.task.call(this.host, ...args)); - } - once() { - return this.sync(); - } - channel() { - return Object.assign((next) => { - if (next !== undefined) - return this.resync([...this.args, next]); - if (!$mol_wire_fiber.warm) - return this.result(); - if ($mol_wire_auto()?.temp) { - return this.once(); - } - else { - return this.sync(); - } - }, { atom: this }); - } - destructor() { - super.destructor(); - if (this.pub_from === 0) { - ; - (this.host ?? this.task)[this.field()] = null; - } - else { - ; - (this.host ?? this.task)[this.field()].delete($mol_key(this.args[0])); - } - } - put(next) { - const prev = this.cache; - update: if (next !== prev) { - try { - if ($mol_compare_deep(prev, next)) - break update; - } - catch (error) { - $mol_fail_log(error); - } - if ($mol_owning_check(this, prev)) { - prev.destructor(); - } - if ($mol_owning_catch(this, next)) { - try { - next[Symbol.toStringTag] = this[Symbol.toStringTag]; - } - catch { - Object.defineProperty(next, Symbol.toStringTag, { value: this[Symbol.toStringTag] }); - } - } - if (!this.sub_empty) - this.emit(); - } - this.cache = next; - this.cursor = $mol_wire_cursor.fresh; - if ($mol_promise_like(next)) - return next; - this.complete_pubs(); - return next; - } - } - __decorate([ - $mol_wire_method - ], $mol_wire_atom.prototype, "resync", null); - __decorate([ - $mol_wire_method - ], $mol_wire_atom.prototype, "once", null); - $.$mol_wire_atom = $mol_wire_atom; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_solo(host, field, descr) { - if (!descr) - descr = Reflect.getOwnPropertyDescriptor(host, field); - const orig = descr?.value ?? host[field]; - const sup = Reflect.getPrototypeOf(host); - if (typeof sup[field] === 'function') { - Object.defineProperty(orig, 'name', { value: sup[field].name }); - } - const descr2 = { - ...descr, - value: function (...args) { - let atom = $mol_wire_atom.solo(this, orig); - if ((args.length === 0) || (args[0] === undefined)) { - if (!$mol_wire_fiber.warm) - return atom.result(); - if ($mol_wire_auto()?.temp) { - return atom.once(); - } - else { - return atom.sync(); - } - } - return atom.resync(args); - } - }; - Reflect.defineProperty(descr2.value, 'name', { value: orig.name + ' ' }); - Reflect.defineProperty(descr2.value, 'length', { value: orig.length }); - Object.assign(descr2.value, { orig }); - Reflect.defineProperty(host, field, descr2); - return descr2; - } - $.$mol_wire_solo = $mol_wire_solo; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_plex(host, field, descr) { - if (!descr) - descr = Reflect.getOwnPropertyDescriptor(host, field); - const orig = descr?.value ?? host[field]; - const sup = Reflect.getPrototypeOf(host); - if (typeof sup[field] === 'function') { - Object.defineProperty(orig, 'name', { value: sup[field].name }); - } - const descr2 = { - ...descr, - value: function (...args) { - let atom = $mol_wire_atom.plex(this, orig, args[0]); - if ((args.length === 1) || (args[1] === undefined)) { - if (!$mol_wire_fiber.warm) - return atom.result(); - if ($mol_wire_auto()?.temp) { - return atom.once(); - } - else { - return atom.sync(); - } - } - return atom.resync(args); - } - }; - Reflect.defineProperty(descr2.value, 'name', { value: orig.name + ' ' }); - Reflect.defineProperty(descr2.value, 'length', { value: orig.length }); - Object.assign(descr2.value, { orig }); - Reflect.defineProperty(host, field, descr2); - return descr2; - } - $.$mol_wire_plex = $mol_wire_plex; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_mem = $mol_wire_solo; - $.$mol_mem_key = $mol_wire_plex; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $node = new Proxy({ require }, { - get(target, name, wrapper) { - if (target[name]) - return target[name]; - const mod = target.require('module'); - if (mod.builtinModules.indexOf(name) >= 0) - return target.require(name); - if (name[0] === '.') - return target.require(name); - try { - target.require.resolve(name); - } - catch { - const $$ = $; - $$.$mol_exec('.', 'npm', 'install', '--omit=dev', name); - try { - $$.$mol_exec('.', 'npm', 'install', '--omit=dev', '@types/' + name); - } - catch (e) { - if ($$.$mol_fail_catch(e)) { - $$.$mol_fail_log(e); - } - } - } - try { - return target.require(name); - } - catch (error) { - if ($.$mol_fail_catch(error) && error.code === 'ERR_REQUIRE_ESM') { - const module = cache.get(name); - if (module) - return module; - throw import(name).then(module => cache.set(name, module)); - } - $.$mol_fail_log(error); - return null; - } - }, - set(target, name, value) { - target[name] = value; - return true; - }, -}); -const cache = new Map(); -require = (req => Object.assign(function require(name) { - return $node[name]; -}, req))(require); - -; -"use strict"; -var $; -(function ($) { - class $mol_error_mix extends AggregateError { - cause; - name = $$.$mol_func_name(this.constructor).replace(/^\$/, '') + '_Error'; - constructor(message, cause = {}, ...errors) { - super(errors, message, { cause }); - this.cause = cause; - const stack_get = Object.getOwnPropertyDescriptor(this, 'stack')?.get ?? (() => super.stack); - Object.defineProperty(this, 'stack', { - get: () => (stack_get.call(this) ?? this.message) + '\n' + [JSON.stringify(this.cause, null, ' ') ?? 'no cause', ...this.errors.map(e => e.stack)].map(e => e.trim() - .replace(/at /gm, ' at ') - .replace(/^(?! +at )(.*)/gm, ' at | $1 (#)')).join('\n') - }); - } - static [Symbol.toPrimitive]() { - return this.toString(); - } - static toString() { - return $$.$mol_func_name(this); - } - static make(...params) { - return new this(...params); - } - } - $.$mol_error_mix = $mol_error_mix; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_env() { - return {}; - } - $.$mol_env = $mol_env; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_env = function $mol_env() { - return this.process.env; - }; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const factories = new WeakMap(); - function factory(val) { - let make = factories.get(val); - if (make) - return make; - make = $mol_func_name_from((...args) => new val(...args), val); - factories.set(val, make); - return make; - } - function $mol_wire_sync(obj) { - return new Proxy(obj, { - get(obj, field) { - let val = obj[field]; - if (typeof val !== 'function') - return val; - const temp = $mol_wire_task.getter(val); - return function $mol_wire_sync(...args) { - const fiber = temp(obj, args); - return fiber.sync(); - }; - }, - construct(obj, args) { - const temp = $mol_wire_task.getter(factory(obj)); - return temp(obj, args).sync(); - }, - apply(obj, self, args) { - const temp = $mol_wire_task.getter(obj); - return temp(self, args).sync(); - }, - }); - } - $.$mol_wire_sync = $mol_wire_sync; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_run_error extends $mol_error_mix { - } - $.$mol_run_error = $mol_run_error; - $.$mol_run_spawn = (...args) => $node['child_process'].spawn(...args); - $.$mol_run_spawn_sync = (...args) => $node['child_process'].spawnSync(...args); - class $mol_run extends $mol_object { - static async_enabled() { - return Boolean(this.$.$mol_env()['MOL_RUN_ASYNC']); - } - static spawn(options) { - const sync = !this.async_enabled() || !Boolean($mol_wire_auto()); - const env = options.env ?? this.$.$mol_env(); - return $mol_wire_sync(this).spawn_async({ ...options, sync, env }); - } - static spawn_async({ dir, sync, timeout, command, env }) { - const args_raw = typeof command === 'string' ? command.split(' ') : command; - const [app, ...args] = args_raw; - const opts = { shell: true, cwd: dir, env }; - const log_object = { - place: `${this}.spawn()`, - message: 'Run', - command: args_raw.join(' '), - dir: $node.path.relative('', dir), - }; - if (sync) { - this.$.$mol_log3_come({ - hint: 'Run inside fiber', - ...log_object - }); - let error; - let res; - try { - res = this.$.$mol_run_spawn_sync(app, args, opts); - error = res.error; - } - catch (err) { - error = err; - } - if (!res || error || res.status) { - throw new $mol_run_error(this.error_message(res), { ...log_object, status: res?.status, signal: res?.signal }, ...(error ? [error] : [])); - } - return res; - } - let sub; - try { - sub = this.$.$mol_run_spawn(app, args, { - ...opts, - stdio: ['pipe', 'inherit', 'inherit'], - }); - } - catch (error) { - throw new $mol_run_error(this.error_message(undefined), log_object, error); - } - const pid = sub.pid ?? 0; - this.$.$mol_log3_come({ - ...log_object, - pid, - }); - let timeout_kill = false; - let timer; - const std_data = []; - const error_data = []; - const add = (std_chunk, error_chunk) => { - if (std_chunk) - std_data.push(std_chunk); - if (error_chunk) - error_data.push(error_chunk); - if (!timeout) - return; - clearTimeout(timer); - timer = setTimeout(() => { - const signal = timeout_kill ? 'SIGKILL' : 'SIGTERM'; - timeout_kill = true; - add(); - sub.kill(signal); - }, timeout); - }; - add(); - sub.stdout?.on('data', data => add(data)); - sub.stderr?.on('data', data => add(undefined, data)); - const result_promise = new Promise((done, fail) => { - const close = (error, status = null, signal = null) => { - if (!timer && timeout) - return; - clearTimeout(timer); - timer = undefined; - const res = { - pid, - signal, - get stdout() { return Buffer.concat(std_data); }, - get stderr() { return Buffer.concat(error_data); } - }; - if (error || status || timeout_kill) - return fail(new $mol_run_error(this.error_message(res) + (timeout_kill ? ', timeout' : ''), { ...log_object, pid, status, signal, timeout_kill }, ...error ? [error] : [])); - this.$.$mol_log3_done({ - ...log_object, - pid, - }); - done(res); - }; - sub.on('disconnect', () => close(new Error('Disconnected'))); - sub.on('error', err => close(err)); - sub.on('exit', (status, signal) => close(null, status, signal)); - }); - return Object.assign(result_promise, { destructor: () => { - clearTimeout(timer); - sub.kill('SIGKILL'); - } }); - } - static error_message(res) { - return res?.stderr.toString() || res?.stdout.toString() || 'Run error'; - } - } - $.$mol_run = $mol_run; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_exec(dir, command, ...args) { - return this.$mol_run.spawn({ command: [command, ...args], dir }); - } - $.$mol_exec = $mol_exec; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_dom_context = new $node.jsdom.JSDOM('', { url: 'https://localhost/' }).window; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_view_selection extends $mol_object { - static focused(next, notify) { - const parents = []; - let element = next?.[0] ?? $mol_dom_context.document.activeElement; - while (element) { - parents.push(element); - element = element.parentNode; - } - if (!next || notify) - return parents; - new $mol_after_tick(() => { - const element = this.focused()[0]; - if (element) - element.focus(); - else - $mol_dom_context.blur(); - }); - return parents; - } - } - __decorate([ - $mol_mem - ], $mol_view_selection, "focused", null); - $.$mol_view_selection = $mol_view_selection; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_wrapper extends $mol_object2 { - static wrap; - static run(task) { - return this.func(task)(); - } - static func(func) { - return this.wrap(func); - } - static get class() { - return (Class) => { - const construct = (target, args) => new Class(...args); - const handler = { - construct: this.func(construct) - }; - handler[Symbol.toStringTag] = Class.name + '#'; - return new Proxy(Class, handler); - }; - } - static get method() { - return (obj, name, descr) => { - descr.value = this.func(descr.value); - return descr; - }; - } - static get field() { - return (obj, name, descr) => { - descr.get = descr.set = this.func(descr.get); - return descr; - }; - } - } - $.$mol_wrapper = $mol_wrapper; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_memo extends $mol_wrapper { - static wrap(task) { - const store = new WeakMap(); - const fun = function (next) { - if (next === undefined && store.has(this)) - return store.get(this); - const val = task.call(this, next) ?? next; - store.set(this, val); - return val; - }; - Reflect.defineProperty(fun, 'name', { value: task.name + ' ' }); - return fun; - } - } - $.$mol_memo = $mol_memo; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_dom = $mol_dom_context; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_qname(name) { - return name.replace(/\W/g, '').replace(/^(?=\d+)/, '_'); - } - $.$mol_dom_qname = $mol_dom_qname; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_probe(task, def) { - const warm = $mol_wire_fiber.warm; - try { - $mol_wire_fiber.warm = false; - const res = task(); - if (res === undefined) - return def; - return res; - } - finally { - $mol_wire_fiber.warm = warm; - } - } - $.$mol_wire_probe = $mol_wire_probe; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_watch() { - const atom = $mol_wire_auto(); - if (atom instanceof $mol_wire_atom) { - atom.watch(); - } - else { - $mol_fail(new Error('Atom is required for watching')); - } - } - $.$mol_wire_watch = $mol_wire_watch; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_const(value) { - const getter = (() => value); - getter['()'] = value; - getter[Symbol.toStringTag] = value; - getter[$mol_dev_format_head] = () => $mol_dev_format_span({}, '()=> ', $mol_dev_format_auto(value)); - return getter; - } - $.$mol_const = $mol_const; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_solid() { - let current = $mol_wire_auto(); - if (current.temp) - current = current.host; - if (current.reap !== nothing) { - current?.sub_on(sub, sub.data.length); - } - current.reap = nothing; - } - $.$mol_wire_solid = $mol_wire_solid; - const nothing = () => { }; - const sub = new $mol_wire_pub_sub; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_attributes(el, attrs) { - for (let name in attrs) { - let val = attrs[name]; - if (val === undefined) { - continue; - } - else if (val === null || val === false) { - if (!el.hasAttribute(name)) - continue; - el.removeAttribute(name); - } - else { - const str = String(val); - if (el.getAttribute(name) === str) - continue; - el.setAttribute(name, str); - } - } - } - $.$mol_dom_render_attributes = $mol_dom_render_attributes; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_events(el, events, passive = false) { - for (let name in events) { - el.addEventListener(name, events[name], { passive }); - } - } - $.$mol_dom_render_events = $mol_dom_render_events; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_styles(el, styles) { - for (let name in styles) { - let val = styles[name]; - const style = el.style; - const kebab = (name) => name.replace(/[A-Z]/g, letter => '-' + letter.toLowerCase()); - if (typeof val === 'number') { - style.setProperty(kebab(name), `${val}px`); - } - else { - style.setProperty(kebab(name), val); - } - } - } - $.$mol_dom_render_styles = $mol_dom_render_styles; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_children(el, childNodes) { - const node_set = new Set(childNodes); - let nextNode = el.firstChild; - for (let view of childNodes) { - if (view == null) - continue; - if (view instanceof $mol_dom_context.Node) { - while (true) { - if (!nextNode) { - el.appendChild(view); - break; - } - if (nextNode == view) { - nextNode = nextNode.nextSibling; - break; - } - else { - if (node_set.has(nextNode)) { - el.insertBefore(view, nextNode); - break; - } - else { - const nn = nextNode.nextSibling; - el.removeChild(nextNode); - nextNode = nn; - } - } - } - } - else { - if (nextNode && nextNode.nodeName === '#text') { - const str = String(view); - if (nextNode.nodeValue !== str) - nextNode.nodeValue = str; - nextNode = nextNode.nextSibling; - } - else { - const textNode = $mol_dom_context.document.createTextNode(String(view)); - el.insertBefore(textNode, nextNode); - } - } - } - while (nextNode) { - const currNode = nextNode; - nextNode = currNode.nextSibling; - el.removeChild(currNode); - } - } - $.$mol_dom_render_children = $mol_dom_render_children; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_fields(el, fields) { - for (let key in fields) { - const val = fields[key]; - if (val === undefined) - continue; - if (val === el[key]) - continue; - el[key] = val; - } - } - $.$mol_dom_render_fields = $mol_dom_render_fields; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wire_async(obj) { - let fiber; - const temp = $mol_wire_task.getter(obj); - return new Proxy(obj, { - get(obj, field) { - const val = obj[field]; - if (typeof val !== 'function') - return val; - let fiber; - const temp = $mol_wire_task.getter(val); - return function $mol_wire_async(...args) { - fiber?.destructor(); - fiber = temp(obj, args); - return fiber.async(); - }; - }, - apply(obj, self, args) { - fiber?.destructor(); - fiber = temp(self, args); - return fiber.async(); - }, - }); - } - $.$mol_wire_async = $mol_wire_async; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - function $mol_style_attach(id, text) { - const doc = $mol_dom_context.document; - if (!doc) - return null; - const elid = `$mol_style_attach:${id}`; - let el = doc.getElementById(elid); - if (!el) { - el = doc.createElement('style'); - el.id = elid; - doc.head.appendChild(el); - } - if (el.innerHTML != text) - el.innerHTML = text; - return el; - } - $.$mol_style_attach = $mol_style_attach; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_decor { - value; - constructor(value) { - this.value = value; - } - prefix() { return ''; } - valueOf() { return this.value; } - postfix() { return ''; } - toString() { - return `${this.prefix()}${this.valueOf()}${this.postfix()}`; - } - } - $.$mol_decor = $mol_decor; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_style_unit extends $mol_decor { - literal; - constructor(value, literal) { - super(value); - this.literal = literal; - } - postfix() { - return this.literal; - } - static per(value) { return `${value}%`; } - static px(value) { return `${value}px`; } - static mm(value) { return `${value}mm`; } - static cm(value) { return `${value}cm`; } - static Q(value) { return `${value}Q`; } - static in(value) { return `${value}in`; } - static pc(value) { return `${value}pc`; } - static pt(value) { return `${value}pt`; } - static cap(value) { return `${value}cap`; } - static ch(value) { return `${value}ch`; } - static em(value) { return `${value}em`; } - static rem(value) { return `${value}rem`; } - static ex(value) { return `${value}ex`; } - static ic(value) { return `${value}ic`; } - static lh(value) { return `${value}lh`; } - static rlh(value) { return `${value}rlh`; } - static vh(value) { return `${value}vh`; } - static vw(value) { return `${value}vw`; } - static vi(value) { return `${value}vi`; } - static vb(value) { return `${value}vb`; } - static vmin(value) { return `${value}vmin`; } - static vmax(value) { return `${value}vmax`; } - static deg(value) { return `${value}deg`; } - static rad(value) { return `${value}rad`; } - static grad(value) { return `${value}grad`; } - static turn(value) { return `${value}turn`; } - static s(value) { return `${value}s`; } - static ms(value) { return `${value}ms`; } - } - $.$mol_style_unit = $mol_style_unit; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const { per } = $mol_style_unit; - class $mol_style_func extends $mol_decor { - name; - constructor(name, value) { - super(value); - this.name = name; - } - prefix() { return this.name + '('; } - postfix() { return ')'; } - static linear_gradient(value) { - return new $mol_style_func('linear-gradient', value); - } - static calc(value) { - return new $mol_style_func('calc', value); - } - static vary(name, defaultValue) { - return new $mol_style_func('var', defaultValue ? [name, defaultValue] : name); - } - static url(href) { - return new $mol_style_func('url', JSON.stringify(href)); - } - static hsla(hue, saturation, lightness, alpha) { - return new $mol_style_func('hsla', [hue, per(saturation), per(lightness), alpha]); - } - static clamp(min, mid, max) { - return new $mol_style_func('clamp', [min, mid, max]); - } - static rgba(red, green, blue, alpha) { - return new $mol_style_func('rgba', [red, green, blue, alpha]); - } - static scale(zoom) { - return new $mol_style_func('scale', [zoom]); - } - static linear(...breakpoints) { - return new $mol_style_func("linear", breakpoints.map((e) => Array.isArray(e) - ? String(e[0]) + - " " + - (typeof e[1] === "number" ? e[1] + "%" : e[1].toString()) - : String(e))); - } - static cubic_bezier(x1, y1, x2, y2) { - return new $mol_style_func('cubic-bezier', [x1, y1, x2, y2]); - } - static steps(value, step_position) { - return new $mol_style_func('steps', [value, step_position]); - } - static blur(value) { - return new $mol_style_func('blur', value ?? ""); - } - static brightness(value) { - return new $mol_style_func('brightness', value ?? ""); - } - static contrast(value) { - return new $mol_style_func('contrast', value ?? ""); - } - static drop_shadow(color, x_offset, y_offset, blur_radius) { - return new $mol_style_func("drop-shadow", blur_radius - ? [color, x_offset, y_offset, blur_radius] - : [color, x_offset, y_offset]); - } - static grayscale(value) { - return new $mol_style_func('grayscale', value ?? ""); - } - static hue_rotate(value) { - return new $mol_style_func('hue-rotate', value ?? ""); - } - static invert(value) { - return new $mol_style_func('invert', value ?? ""); - } - static opacity(value) { - return new $mol_style_func('opacity', value ?? ""); - } - static sepia(value) { - return new $mol_style_func('sepia', value ?? ""); - } - static saturate(value) { - return new $mol_style_func('saturate', value ?? ""); - } - } - $.$mol_style_func = $mol_style_func; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - function $mol_style_prop(prefix, keys) { - const record = keys.reduce((rec, key) => { - rec[key] = $mol_style_func.vary(`--${prefix}_${key}`); - return rec; - }, {}); - return record; - } - $.$mol_style_prop = $mol_style_prop; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_theme = $mol_style_prop('mol_theme', [ - 'back', - 'hover', - 'card', - 'current', - 'special', - 'text', - 'control', - 'shade', - 'line', - 'focus', - 'field', - 'image', - ]); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/theme/theme.css", ":root {\n\t--mol_theme_hue: 210deg;\n\t--mol_theme_hue_spread: 90deg;\n}\n\n:where([mol_theme]) {\n\tcolor: var(--mol_theme_text);\n\tfill: var(--mol_theme_text);\n\tbackground-color: var(--mol_theme_back);\n}\n\t\n:root, [mol_theme=\"$mol_theme_dark\"], :where([mol_theme=\"$mol_theme_dark\"]) [mol_theme] {\n\n\t--mol_theme_luma: -1;\n\t--mol_theme_image: invert(1) hue-rotate( 180deg );\n\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 20%, 10% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 50%, 20%, .25 );\n\t--mol_theme_field: hsl( var(--mol_theme_hue), 50%, 8%, .25 );\n\t--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );\n\t\n\t--mol_theme_text: hsl( var(--mol_theme_hue), 0%, 80% );\n\t--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 60%, 1 );\n\t--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .25 );\n\t--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, 65% );\n\t\n\t--mol_theme_control: hsl( var(--mol_theme_hue), 60%, 65% );\n\t--mol_theme_current: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 60%, 65% );\n\t--mol_theme_special: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 60%, 65% );\n\n\t/* --mol_theme_back: oklch( 20% .03 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 35% .05 var(--mol_theme_hue) / .25 );\n\t--mol_theme_field: oklch( 0% 0 var(--mol_theme_hue) / .25 );\n\t--mol_theme_hover: oklch( 70% 0 var(--mol_theme_hue) / .1 );\n\t\n\t--mol_theme_text: oklch( 80% 0 var(--mol_theme_hue) );\n\t--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );\n\t--mol_theme_line: oklch( 50% 0 var(--mol_theme_hue) / .2 );\n\t--mol_theme_focus: oklch( 80% .2 calc( var(--mol_theme_hue) + 120deg ) );\n\t\n\t--mol_theme_control: oklch( 70% .1 var(--mol_theme_hue) );\n\t--mol_theme_current: oklch( 80% .2 calc( var(--mol_theme_hue) - 60deg ) );\n\t--mol_theme_special: oklch( 80% .3 calc( var(--mol_theme_hue) + 60deg ) ); */\n\n}\n\n[mol_theme=\"$mol_theme_light\"], :where([mol_theme=\"$mol_theme_light\"]) [mol_theme] {\n\t\n\t--mol_theme_luma: 1;\n\t--mol_theme_image: none;\n\t\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 20%, 92% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 50%, 100%, .5 );\n\t--mol_theme_field: hsl( var(--mol_theme_hue), 50%, 100%, .75 );\n\t--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );\n\t\n\t--mol_theme_text: hsl( var(--mol_theme_hue), 0%, 0% );\n\t--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 40%, 1 );\n\t--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .25 );\n\t--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, 40% );\n\t\n\t--mol_theme_control: hsl( var(--mol_theme_hue), 80%, 30% );\n\t--mol_theme_current: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 80%, 30% );\n\t--mol_theme_special: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 80%, 30% );\n\t\n\t/* --mol_theme_back: oklch( 93% .01 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 100% .02 var(--mol_theme_hue) / .25 );\n\t--mol_theme_field: oklch( 100% 0 var(--mol_theme_hue) / .5 );\n\t--mol_theme_hover: oklch( 70% 0 var(--mol_theme_hue) / .1 );\n\t\n\t--mol_theme_text: oklch( 20% 0 var(--mol_theme_hue) );\n\t--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );\n\t--mol_theme_line: oklch( 70% 0 var(--mol_theme_hue) / .2 );\n\t--mol_theme_focus: oklch( 20% .8 calc( var(--mol_theme_hue) + 120deg ) );\n\t\n\t--mol_theme_control: oklch( 45% .25 var(--mol_theme_hue) );\n\t--mol_theme_current: oklch( 45% .5 calc( var(--mol_theme_hue) - 60deg ) );\n\t--mol_theme_special: oklch( 45% .5 calc( var(--mol_theme_hue) + 60deg ) ); */\n\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_base\"] {\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 50%, 30% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 40%, 20%, .25 );\n\t/* --mol_theme_back: oklch( 25% .05 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 35% .1 var(--mol_theme_hue) / .25 ); */\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_base\"] {\n\t--mol_theme_back: hsl( var(--mol_theme_hue), 50%, 80% );\n\t--mol_theme_card: hsl( var(--mol_theme_hue), 80%, 95%, .25 );\n\t/* --mol_theme_back: oklch( 95% .02 var(--mol_theme_hue) );\n\t--mol_theme_card: oklch( 80% .05 var(--mol_theme_hue) / .25 ); */\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_accent\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + 180deg ), 90%, 30% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + 180deg ), 80%, 20%, .25 );\n\t/* --mol_theme_back: oklch( 40% .2 calc( var(--mol_theme_hue) + 120deg ) );\n\t--mol_theme_card: oklch( 50% .3 calc( var(--mol_theme_hue) + 120deg ) / .25 ); */\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_accent\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + 180deg ), 90%, 75% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + 180deg ), 80%, 90%, .25 );\n\t/* --mol_theme_back: oklch( 90% .03 calc( var(--mol_theme_hue) + 120deg ) );\n\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) + 120deg ) / .25 ); */\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_current\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 50%, 30% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 40%, 20%, .25 );\n\t/* --mol_theme_back: oklch( 25% .05 calc( var(--mol_theme_hue) - 60deg ) );\n\t--mol_theme_card: oklch( 35% .1 calc( var(--mol_theme_hue) - 60deg ) / .25 ); */\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_current\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 50%, 92% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 80%, 100%, .5 );\n\t/* --mol_theme_back: oklch( 95% .02 calc( var(--mol_theme_hue) - 60deg ) );\n\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) - 60deg ) / .25 ); */\n}\n\n:where( :root, [mol_theme=\"$mol_theme_dark\"] ) [mol_theme=\"$mol_theme_special\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 50%, 30% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 40%, 20%, .25 );\n\t/* --mol_theme_back: oklch( 25% .05 calc( var(--mol_theme_hue) + 60deg ) );\n\t--mol_theme_card: oklch( 35% .1 calc( var(--mol_theme_hue) + 60deg ) / .25 ); */\n}\n:where( [mol_theme=\"$mol_theme_light\"] ) [mol_theme=\"$mol_theme_special\"] {\n\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 50%, 92% );\n\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 80%, 100%, .5 );\n\t/* --mol_theme_back: oklch( 95% .02 calc( var(--mol_theme_hue) + 60deg ) );\n\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) + 60deg ) / .25 ); */\n}\n"); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_gap = $mol_style_prop('mol_gap', [ - 'block', - 'text', - 'round', - 'space', - 'blur', - ]); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/gap/gap.css", ":root {\n\t--mol_gap_block: .75rem;\n\t--mol_gap_text: .5rem .75rem;\n\t--mol_gap_round: .25rem;\n\t--mol_gap_space: .25rem;\n\t--mol_gap_blur: .5rem;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_view_visible_width() { - return $mol_window.size().width; - } - $.$mol_view_visible_width = $mol_view_visible_width; - function $mol_view_visible_height() { - return $mol_window.size().height; - } - $.$mol_view_visible_height = $mol_view_visible_height; - function $mol_view_state_key(suffix) { - return suffix; - } - $.$mol_view_state_key = $mol_view_state_key; - class $mol_view extends $mol_object { - static Root(id) { - return new this; - } - autorun() { - try { - this.dom_tree(); - document.title = this.title(); - } - catch (error) { - $mol_fail_log(error); - } - } - static autobind() { - const nodes = $mol_dom_context.document.querySelectorAll('[mol_view_root]:not([mol_view_root=""])'); - for (let i = nodes.length - 1; i >= 0; --i) { - const name = nodes.item(i).getAttribute('mol_view_root'); - const View = $[name]; - if (!View) { - console.error(`Can not attach view. Class not found: ${name}`); - continue; - } - const view = View.Root(i); - view.dom_node(nodes.item(i)); - view.autorun(); - } - } - title() { - return this.toString().match(/.*\.(\w+)/)?.[1] ?? this.toString(); - } - focused(next) { - let node = this.dom_node(); - const value = $mol_view_selection.focused(next === undefined ? undefined : (next ? [node] : [])); - return value.indexOf(node) !== -1; - } - state_key(suffix = '') { - return this.$.$mol_view_state_key(suffix); - } - dom_name() { - return $mol_dom_qname(this.constructor.toString()) || 'div'; - } - dom_name_space() { return 'http://www.w3.org/1999/xhtml'; } - sub() { - return []; - } - sub_visible() { - return this.sub(); - } - minimal_width() { - let min = 0; - try { - const sub = this.sub(); - if (!sub) - return 0; - sub.forEach(view => { - if (view instanceof $mol_view) { - min = Math.max(min, view.minimal_width()); - } - }); - } - catch (error) { - $mol_fail_log(error); - return 24; - } - return min; - } - maximal_width() { - return this.minimal_width(); - } - minimal_height() { - let min = 0; - try { - for (const view of this.sub() ?? []) { - if (view instanceof $mol_view) { - min = Math.max(min, view.minimal_height()); - } - } - } - catch (error) { - $mol_fail_log(error); - return 24; - } - return min; - } - static watchers = new Set(); - view_rect() { - if ($mol_wire_probe(() => this.view_rect()) === undefined) { - $mol_wire_watch(); - return null; - } - else { - const { width, height, left, right, top, bottom } = this.dom_node().getBoundingClientRect(); - return { width, height, left, right, top, bottom }; - } - } - dom_id() { - return this.toString().replace(//g, ')').replaceAll(/"/g, "'"); - } - dom_node_external(next) { - const node = next ?? $mol_dom_context.document.createElementNS(this.dom_name_space(), this.dom_name()); - const id = this.dom_id(); - node.setAttribute('id', id); - node.toString = $mol_const('<#' + id + '>'); - return node; - } - dom_node(next) { - $mol_wire_solid(); - const node = this.dom_node_external(next); - $mol_dom_render_attributes(node, this.attr_static()); - const events = this.event_async(); - $mol_dom_render_events(node, events); - return node; - } - dom_final() { - this.render(); - const sub = this.sub_visible(); - if (!sub) - return; - for (const el of sub) { - if (el && typeof el === 'object' && 'dom_final' in el) { - el['dom_final'](); - } - } - return this.dom_node(); - } - dom_tree(next) { - const node = this.dom_node(next); - render: try { - $mol_dom_render_attributes(node, { mol_view_error: null }); - try { - this.render(); - } - finally { - for (let plugin of this.plugins()) { - if (plugin instanceof $mol_plugin) { - plugin.dom_tree(); - } - } - } - } - catch (error) { - $mol_fail_log(error); - const mol_view_error = $mol_promise_like(error) ? 'Promise' : error.name || error.constructor.name; - $mol_dom_render_attributes(node, { mol_view_error }); - if ($mol_promise_like(error)) - break render; - try { - const message = error.message || error; - node.innerText = message.replace(/^|$/mg, '\xA0\xA0'); - } - catch { } - } - try { - this.auto(); - } - catch (error) { - $mol_fail_log(error); - } - return node; - } - dom_node_actual() { - const node = this.dom_node(); - $mol_dom_render_styles(node, this.style_size()); - const attr = this.attr(); - const style = this.style(); - $mol_dom_render_attributes(node, attr); - $mol_dom_render_styles(node, style); - return node; - } - auto() { - return null; - } - render() { - const node = this.dom_node_actual(); - const sub = this.sub_visible(); - if (!sub) - return; - const nodes = sub.map(child => { - if (child == null) - return null; - return (child instanceof $mol_view) - ? child.dom_node() - : child instanceof $mol_dom_context.Node - ? child - : String(child); - }); - $mol_dom_render_children(node, nodes); - for (const el of sub) - if (el && typeof el === 'object' && 'dom_tree' in el) - el['dom_tree'](); - $mol_dom_render_fields(node, this.field()); - } - static view_classes() { - const proto = this.prototype; - let current = proto; - const classes = []; - while (current) { - if (current.constructor.name !== classes.at(-1)?.name) { - classes.push(current.constructor); - } - if (!(current instanceof $mol_view)) - break; - current = Object.getPrototypeOf(current); - } - return classes; - } - static _view_names; - static view_names(suffix) { - let cache = Reflect.getOwnPropertyDescriptor(this, '_view_names')?.value; - if (!cache) - cache = this._view_names = new Map; - const cached = cache.get(suffix); - if (cached) - return cached; - const names = []; - const suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1); - for (const Class of this.view_classes()) { - if (suffix in Class.prototype) - names.push(this.$.$mol_func_name(Class) + suffix2); - else - break; - } - cache.set(suffix, names); - return names; - } - view_names_owned() { - const names = []; - let owner = $mol_owning_get(this); - if (!(owner?.host instanceof $mol_view)) - return names; - const suffix = owner.task.name.trim(); - const suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1); - names.push(...owner.host.constructor.view_names(suffix)); - for (let prefix of owner.host.view_names_owned()) { - names.push(prefix + suffix2); - } - return names; - } - view_names() { - const names = new Set(); - for (let name of this.view_names_owned()) - names.add(name); - for (let Class of this.constructor.view_classes()) { - const name = this.$.$mol_func_name(Class); - if (name) - names.add(name); - } - return names; - } - theme(next = null) { - return next; - } - attr_static() { - let attrs = {}; - for (let name of this.view_names()) - attrs[name.replace(/\$/g, '').replace(/^(?=\d)/, '_').toLowerCase()] = ''; - return attrs; - } - attr() { - return { - mol_theme: this.theme() ?? undefined, - }; - } - style_size() { - return { - minHeight: this.minimal_height(), - minWidth: this.minimal_width(), - }; - } - style() { - return {}; - } - field() { - return {}; - } - event() { - return {}; - } - event_async() { - return { ...$mol_wire_async(this.event()) }; - } - plugins() { - return []; - } - [$mol_dev_format_head]() { - return $mol_dev_format_span({}, $mol_dev_format_native(this)); - } - *view_find(check, path = []) { - if (check(this)) - return yield [...path, this]; - try { - for (const item of this.sub()) { - if (item instanceof $mol_view) { - yield* item.view_find(check, [...path, this]); - } - } - } - catch (error) { - if ($mol_promise_like(error)) - $mol_fail_hidden(error); - $mol_fail_log(error); - } - } - force_render(path) { - const kids = this.sub(); - const index = kids.findIndex(item => { - if (item instanceof $mol_view) { - return path.has(item); - } - else { - return false; - } - }); - if (index >= 0) { - kids[index].force_render(path); - } - } - ensure_visible(view, align = "start") { - const path = this.view_find(v => v === view).next().value; - this.force_render(new Set(path)); - try { - this.dom_final(); - } - catch (err) { - $mol_fail_log(err); - } - view.dom_node().scrollIntoView({ block: align }); - } - bring() { - const win = this.$.$mol_dom_context; - if (win.parent !== win.self && !win.document.hasFocus()) - return; - new this.$.$mol_after_timeout(0, () => { - this.focused(true); - }); - } - destructor() { - const node = $mol_wire_probe(() => this.dom_node()); - if (!node) - return; - const events = $mol_wire_probe(() => this.event_async()); - if (!events) - return; - for (let event_name in events) { - node.removeEventListener(event_name, events[event_name]); - } - } - } - __decorate([ - $mol_mem - ], $mol_view.prototype, "autorun", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "title", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "focused", null); - __decorate([ - $mol_memo.method - ], $mol_view.prototype, "dom_name", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "minimal_width", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "minimal_height", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "view_rect", null); - __decorate([ - $mol_memo.method - ], $mol_view.prototype, "dom_id", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "dom_node", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "dom_final", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "dom_tree", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "dom_node_actual", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "render", null); - __decorate([ - $mol_memo.method - ], $mol_view.prototype, "view_names_owned", null); - __decorate([ - $mol_memo.method - ], $mol_view.prototype, "view_names", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "theme", null); - __decorate([ - $mol_mem - ], $mol_view.prototype, "event_async", null); - __decorate([ - $mol_mem_key - ], $mol_view, "Root", null); - __decorate([ - $mol_mem - ], $mol_view, "autobind", null); - __decorate([ - $mol_memo.method - ], $mol_view, "view_classes", null); - $.$mol_view = $mol_view; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/view/view/view.css", "[mol_view] {\n\ttransition-property: height, width, min-height, min-width, max-width, max-height, transform;\n\ttransition-duration: .2s;\n\ttransition-timing-function: ease-out;\n\t-webkit-appearance: none;\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\tflex-shrink: 0;\n\tcontain: style;\n\tscrollbar-color: var(--mol_theme_line) transparent;\n\tscrollbar-width: thin;\n}\t\n\n[mol_view]::selection {\n\tbackground: var(--mol_theme_line);\n}\t\n\n[mol_view]::-webkit-scrollbar {\n\twidth: .25rem;\n\theight: .25rem;\n}\n\n[mol_view]::-webkit-scrollbar-corner {\n\tbackground-color: var(--mol_theme_line);\n}\n\n[mol_view]::-webkit-scrollbar-track {\n\tbackground-color: transparent;\n}\n\n[mol_view]::-webkit-scrollbar-thumb {\n\tbackground-color: var(--mol_theme_line);\n\tborder-radius: var(--mol_gap_round);\n}\n\n[mol_view] > * {\n\tword-break: inherit;\n}\n\n[mol_view_root] {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbox-sizing: border-box;\n\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\tfont-size: 1rem;\n\tline-height: 1.5rem;\n\tbackground: var(--mol_theme_back);\n\tcolor: var(--mol_theme_text);\n\tcontain: unset; /** Fixes bg ignoring when applied to body on Chrome */\n\ttab-size: 4;\n\toverscroll-behavior: contain; /** Disable navigation gestures **/\n}\n\n@media print {\n\t[mol_view_root] {\n\t\theight: auto;\n\t}\n}\n\n[mol_view][mol_view_error]:not([mol_view_error=\"Promise\"]) {\n\tbackground-image: repeating-linear-gradient(\n\t\t-45deg,\n\t\t#f92323,\n\t\t#f92323 .5rem,\n\t\t#ff3d3d .5rem,\n\t\t#ff3d3d 1.5rem\n\t);\n\tcolor: black;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n@keyframes mol_view_wait {\n\tfrom {\n\t\topacity: .25;\n\t}\n\t20% {\n\t\topacity: .75;\n\t}\n\tto {\n\t\topacity: .25;\n\t}\n}\n\n:where([mol_view][mol_view_error=\"Promise\"]) {\n\tbackground: var(--mol_theme_hover);\n}\n\n[mol_view][mol_view_error=\"Promise\"] {\n\tanimation: mol_view_wait 1s steps(20,end) infinite;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_plugin extends $mol_view { - dom_node_external(next) { - return next ?? $mol_owning_get(this).host.dom_node(); - } - render() { - this.dom_node_actual(); - } - } - $.$mol_plugin = $mol_plugin; -})($ || ($ = {})); - -; - ($.$mol_ghost) = class $mol_ghost extends ($.$mol_view) { - Sub(){ - const obj = new this.$.$mol_view(); - return obj; - } - }; - ($mol_mem(($.$mol_ghost.prototype), "Sub")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_ghost extends $.$mol_ghost { - dom_node_external(next) { - return this.Sub().dom_node(next); - } - dom_node_actual() { - this.dom_node(); - const node = this.Sub().dom_node_actual(); - const attr = this.attr(); - const style = this.style(); - const fields = this.field(); - $mol_dom_render_attributes(node, attr); - $mol_dom_render_styles(node, style); - $mol_dom_render_fields(node, fields); - return node; - } - dom_tree() { - const Sub = this.Sub(); - const node = Sub.dom_tree(); - try { - this.dom_node_actual(); - this.auto(); - } - catch (error) { - $mol_fail_log(error); - } - return node; - } - title() { - return this.Sub().title(); - } - minimal_width() { - return this.Sub().minimal_width(); - } - minimal_height() { - return this.Sub().minimal_height(); - } - } - __decorate([ - $mol_mem - ], $mol_ghost.prototype, "dom_node_actual", null); - $$.$mol_ghost = $mol_ghost; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_drop) = class $mol_drop extends ($.$mol_ghost) { - enter(next){ - if(next !== undefined) return next; - return null; - } - move(next){ - if(next !== undefined) return next; - return null; - } - leave(next){ - if(next !== undefined) return next; - return null; - } - drop(next){ - if(next !== undefined) return next; - return null; - } - status(next){ - if(next !== undefined) return next; - return "ready"; - } - enabled(next){ - if(next !== undefined) return next; - return true; - } - event(){ - return { - "dragenter": (next) => (this.enter(next)), - "dragover": (next) => (this.move(next)), - "dragleave": (next) => (this.leave(next)), - "drop": (next) => (this.drop(next)) - }; - } - attr(){ - return {"mol_drop_status": (this.status())}; - } - adopt(next){ - if(next !== undefined) return next; - return {}; - } - receive(next){ - if(next !== undefined) return next; - return null; - } - allow(){ - return [ - "copy", - "move", - "link" - ]; - } - }; - ($mol_mem(($.$mol_drop.prototype), "enter")); - ($mol_mem(($.$mol_drop.prototype), "move")); - ($mol_mem(($.$mol_drop.prototype), "leave")); - ($mol_mem(($.$mol_drop.prototype), "drop")); - ($mol_mem(($.$mol_drop.prototype), "status")); - ($mol_mem(($.$mol_drop.prototype), "enabled")); - ($mol_mem(($.$mol_drop.prototype), "adopt")); - ($mol_mem(($.$mol_drop.prototype), "receive")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_drop extends $.$mol_drop { - status(next = 'ready') { return next; } - _target = null; - enter(event) { - if (event.defaultPrevented) - return; - if (!this.enabled()) - return; - const action = this.decide_action(event); - event.dataTransfer.dropEffect = action; - if (action !== 'none') - this.status('drag'); - this._target = event.target; - event.preventDefault(); - } - move(event) { - if (event.defaultPrevented) - return; - if (!this.enabled()) - return; - event.dataTransfer.dropEffect = this.decide_action(event); - event.preventDefault(); - } - decide_action(event) { - const allow = this.allow(); - if (allow.includes('move') && event.shiftKey) - return 'move'; - else if (allow.includes('copy') && event.ctrlKey) - return 'copy'; - else if (allow.includes('link') && event.altKey) - return 'link'; - else - return allow[0]; - } - leave(event) { - if (this._target === event.target) { - this.status('ready'); - } - } - receive(transfer) { - return transfer; - } - drop(event) { - if (event.defaultPrevented) - return; - event.preventDefault(); - setTimeout(() => this.status('ready')); - const obj = this.adopt(event.dataTransfer); - if (!obj) - return; - this.receive(obj); - } - } - __decorate([ - $mol_mem - ], $mol_drop.prototype, "status", null); - $$.$mol_drop = $mol_drop; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_theme_auto) = class $mol_theme_auto extends ($.$mol_plugin) { - theme(){ - return ""; - } - attr(){ - return {"mol_theme": (this.theme())}; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - $.$mol_action = $mol_wire_method; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_state_arg extends $mol_object { - prefix; - static prolog = ''; - static separator = ' '; - static href(next) { - return next || process.argv.slice(2).join(' '); - } - static href_normal() { - return this.link({}); - } - static dict(next) { - if (next !== void 0) - this.href(this.make_link(next)); - var href = this.href(); - var chunks = href.split(' '); - var params = {}; - chunks.forEach(chunk => { - if (!chunk) - return; - var vals = chunk.split('=').map(decodeURIComponent); - params[vals.shift()] = vals.join('='); - }); - return params; - } - static value(key, next) { - if (next === void 0) - return this.dict()[key] ?? null; - this.href(this.link({ [key]: next })); - return next; - } - static link(next) { - const params = {}; - var prev = this.dict(); - for (var key in prev) { - params[key] = prev[key]; - } - for (var key in next) { - params[key] = next[key]; - } - return this.make_link(params); - } - static make_link(next) { - const chunks = []; - for (const key in next) { - if (next[key] !== null) { - chunks.push([key, next[key]].map(encodeURIComponent).join('=')); - } - } - return chunks.join(' '); - } - static go(next) { - this.href(this.link(next)); - } - constructor(prefix = '') { - super(); - this.prefix = prefix; - } - value(key, next) { - return this.constructor.value(this.prefix + key, next); - } - sub(postfix) { - return new this.constructor(this.prefix + postfix + '.'); - } - link(next) { - const prefix = this.prefix; - const dict = {}; - for (var key in next) { - dict[prefix + key] = next[key]; - } - return this.constructor.link(dict); - } - } - __decorate([ - $mol_mem - ], $mol_state_arg, "href", null); - __decorate([ - $mol_mem - ], $mol_state_arg, "href_normal", null); - __decorate([ - $mol_mem - ], $mol_state_arg, "dict", null); - __decorate([ - $mol_mem_key - ], $mol_state_arg, "value", null); - __decorate([ - $mol_action - ], $mol_state_arg, "go", null); - $.$mol_state_arg = $mol_state_arg; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_media extends $mol_object2 { - static match(query, next) { - if (next !== undefined) - return next; - const res = this.$.$mol_dom_context.matchMedia?.(query) ?? {}; - res.onchange = () => this.match(query, res.matches); - return res.matches; - } - } - __decorate([ - $mol_mem_key - ], $mol_media, "match", null); - $.$mol_media = $mol_media; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_mem_persist = $mol_wire_solid; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_mem_cached = $mol_wire_probe; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_storage extends $mol_object2 { - static native() { - return this.$.$mol_dom_context.navigator.storage ?? { - persisted: async () => false, - persist: async () => false, - estimate: async () => ({}), - getDirectory: async () => null, - }; - } - static persisted(next, cache) { - $mol_mem_persist(); - if (cache) - return Boolean(next); - const native = this.native(); - if (next && !$mol_mem_cached(() => this.persisted())) { - native.persist().then(actual => { - setTimeout(() => this.persisted(actual, 'cache'), 5000); - if (actual) - this.$.$mol_log3_done({ place: `$mol_storage`, message: `Persist: Yes` }); - else - this.$.$mol_log3_fail({ place: `$mol_storage`, message: `Persist: No` }); - }); - } - return next ?? $mol_wire_sync(native).persisted(); - } - static estimate() { - return $mol_wire_sync(this.native() ?? {}).estimate(); - } - static dir() { - return $mol_wire_sync(this.native()).getDirectory(); - } - } - __decorate([ - $mol_mem - ], $mol_storage, "native", null); - __decorate([ - $mol_mem - ], $mol_storage, "persisted", null); - $.$mol_storage = $mol_storage; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_state_local extends $mol_object { - static 'native()'; - static native() { - if (this['native()']) - return this['native()']; - check: try { - const native = $mol_dom_context.localStorage; - if (!native) - break check; - native.setItem('', ''); - native.removeItem(''); - return this['native()'] = native; - } - catch (error) { - console.warn(error); - } - return this['native()'] = { - getItem(key) { - return this[':' + key]; - }, - setItem(key, value) { - this[':' + key] = value; - }, - removeItem(key) { - this[':' + key] = void 0; - } - }; - } - static changes(next) { return next; } - static value(key, next) { - this.changes(); - if (next === void 0) - return JSON.parse(this.native().getItem(key) || 'null'); - if (next === null) { - this.native().removeItem(key); - } - else { - this.native().setItem(key, JSON.stringify(next)); - this.$.$mol_storage.persisted(true); - } - return next; - } - prefix() { return ''; } - value(key, next) { - return $mol_state_local.value(this.prefix() + '.' + key, next); - } - } - __decorate([ - $mol_mem - ], $mol_state_local, "changes", null); - __decorate([ - $mol_mem_key - ], $mol_state_local, "value", null); - $.$mol_state_local = $mol_state_local; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_lock extends $mol_object { - promise = null; - async wait() { - let next = () => { }; - let destructed = false; - const task = $mol_wire_auto(); - if (!task) - return next; - const destructor = task.destructor.bind(task); - task.destructor = () => { - destructor(); - destructed = true; - next(); - }; - let promise; - do { - promise = this.promise; - await promise; - if (destructed) - return next; - } while (promise !== this.promise); - this.promise = new Promise(done => { next = done; }); - return next; - } - grab() { return $mol_wire_sync(this).wait(); } - } - $.$mol_lock = $mol_lock; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_compare_array(a, b) { - if (a === b) - return true; - if (Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) - return false; - if (a.length !== b.length) - return false; - for (let i = 0; i < a.length; i++) - if (a[i] !== b[i]) - return false; - return true; - } - $.$mol_compare_array = $mol_compare_array; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - const decoders = {}; - function $mol_charset_decode(buffer, encoding = 'utf8') { - let decoder = decoders[encoding]; - if (!decoder) - decoder = decoders[encoding] = new TextDecoder(encoding); - return decoder.decode(buffer); - } - $.$mol_charset_decode = $mol_charset_decode; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const TextEncoder = globalThis.TextEncoder ?? $node.util.TextEncoder; - const encoder = new TextEncoder(); - function $mol_charset_encode(value) { - return encoder.encode(value); - } - $.$mol_charset_encode = $mol_charset_encode; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_file_transaction extends $mol_object { - path() { return ''; } - modes() { return []; } - write(options) { - return 0; - } - read() { - return new Uint8Array(); - } - truncate(size) { } - close() { } - destructor() { - this.close(); - } - } - $.$mol_file_transaction = $mol_file_transaction; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - let file_modes; - (function (file_modes) { - file_modes[file_modes["create"] = $node.fs.constants.O_CREAT] = "create"; - file_modes[file_modes["exists_truncate"] = $node.fs.constants.O_TRUNC] = "exists_truncate"; - file_modes[file_modes["exists_fail"] = $node.fs.constants.O_EXCL] = "exists_fail"; - file_modes[file_modes["read_only"] = $node.fs.constants.O_RDONLY] = "read_only"; - file_modes[file_modes["write_only"] = $node.fs.constants.O_WRONLY] = "write_only"; - file_modes[file_modes["read_write"] = $node.fs.constants.O_RDWR] = "read_write"; - file_modes[file_modes["append"] = $node.fs.constants.O_APPEND] = "append"; - })(file_modes || (file_modes = {})); - function mode_mask(modes) { - return modes.reduce((res, mode) => res | file_modes[mode], 0); - } - class $mol_file_transaction_node extends $mol_file_transaction { - descr() { - $mol_wire_solid(); - return $node.fs.openSync(this.path(), mode_mask(this.modes())); - } - write({ buffer, offset = 0, length, position = null }) { - if (Array.isArray(buffer)) { - return $node.fs.writevSync(this.descr(), buffer, position ?? undefined); - } - if (typeof buffer === 'string') { - return $node.fs.writeSync(this.descr(), buffer, position); - } - length = length ?? buffer.byteLength; - return $node.fs.writeSync(this.descr(), buffer, offset, length, position); - } - truncate(size) { - $node.fs.ftruncateSync(this.descr()); - } - read() { - return $mol_file_node_buffer_normalize($node.fs.readFileSync(this.descr())); - } - close() { - $node.fs.closeSync(this.descr()); - } - } - __decorate([ - $mol_mem - ], $mol_file_transaction_node.prototype, "descr", null); - $.$mol_file_transaction_node = $mol_file_transaction_node; - $.$mol_file_transaction = $mol_file_transaction_node; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_file_base extends $mol_object { - static absolute(path) { - return this.make({ - path: $mol_const(path) - }); - } - static relative(path) { - throw new Error('Not implemented yet'); - } - static base = ''; - path() { - return '.'; - } - parent() { - return this.resolve('..'); - } - exists_cut() { return this.exists(); } - root() { - const path = this.path(); - const base = this.constructor.base; - return base.startsWith(path) || this == this.parent(); - } - stat(next, virt) { - const path = this.path(); - const parent = this.parent(); - if (!this.root()) { - parent.version(); - } - parent.watcher(); - if (virt) - return next ?? null; - return next ?? this.info(path); - } - static changed = new Set; - static frame = null; - static changed_add(type, path) { - if (/([\/\\]\.|___$)/.test(path)) - return; - const file = this.relative(path.at(-1) === '/' ? path.slice(0, -1) : path); - this.changed.add(file); - if (!this.watching) - return; - this.frame?.destructor(); - this.frame = new this.$.$mol_after_timeout(this.watch_debounce(), () => { - if (!this.watching) - return; - this.watching = false; - $mol_wire_async(this).flush(); - }); - } - static watch_debounce() { return 500; } - static flush() { - for (const file of this.changed) { - const parent = file.parent(); - try { - if ($mol_wire_probe(() => parent.sub())) - parent.sub(null); - file.reset(); - } - catch (error) { - if ($mol_fail_catch(error)) - $mol_fail_log(error); - } - } - this.changed.clear(); - this.watching = true; - } - static watching = true; - static lock = new $mol_lock; - static watch_off(path) { - this.watching = false; - this.flush(); - this.watching = false; - this.changed.add(this.absolute(path)); - } - static unwatched(side_effect, affected_dir) { - const unlock = this.lock.grab(); - this.watch_off(affected_dir); - try { - const result = side_effect(); - this.flush(); - unlock(); - return result; - } - catch (e) { - if (!$mol_promise_like(e)) { - this.flush(); - unlock(); - } - $mol_fail_hidden(e); - } - } - reset() { - this.stat(null); - } - modified() { return this.stat()?.mtime ?? null; } - version() { - const next = this.stat()?.mtime.getTime().toString(36).toUpperCase() ?? ''; - return next; - } - info(path) { return null; } - ensure() { } - drop() { } - copy(to) { } - read() { return new Uint8Array; } - write(buffer) { } - kids() { - return []; - } - readable(opts) { - return new ReadableStream; - } - writable(opts) { - return new WritableStream; - } - buffer(next) { - let readed = new Uint8Array(); - if (next === undefined) { - if (this.version()) - readed = this.read(); - } - const prev = $mol_mem_cached(() => this.buffer()); - const changed = prev === undefined || !$mol_compare_array(prev, next ?? readed); - if (prev !== undefined && changed) { - this.$.$mol_log3_rise({ - place: `$mol_file_node.buffer()`, - message: 'Changed', - path: this.relate(), - }); - } - if (next === undefined) - return changed ? readed : prev; - if (!changed && this.exists()) - return prev; - this.parent().exists(true); - this.stat(this.stat_make(next.length), 'virt'); - this.write(next); - return next; - } - stat_make(size) { - const now = new Date(); - return { - type: 'file', - size, - atime: now, - mtime: now, - ctime: now, - }; - } - clone(to) { - if (!this.exists()) - return null; - const target = this.constructor.absolute(to); - try { - this.version(); - target.parent().exists(true); - this.copy(to); - target.reset(); - return target; - } - catch (error) { - if ($mol_fail_catch(error)) { - console.error(error); - } - } - return null; - } - watcher() { - return { - destructor() { } - }; - } - exists(next) { - const exists = Boolean(this.stat()); - if (next === undefined) - return exists; - if (next === exists) - return exists; - if (next) { - this.parent().exists(true); - this.ensure(); - } - else { - this.drop(); - } - this.reset(); - return next; - } - type() { - return this.stat()?.type ?? ''; - } - name() { - return this.path().replace(/^.*\//, ''); - } - ext() { - const match = /((?:\.\w+)+)$/.exec(this.path()); - return match ? match[1].substring(1) : ''; - } - text(next, virt) { - if (next !== undefined) - this.exists(); - return this.text_int(next, virt); - } - text_int(next, virt) { - if (virt) { - this.stat(this.stat_make(0), 'virt'); - return next; - } - if (next === undefined) { - return $mol_charset_decode(this.buffer()); - } - else { - const buffer = $mol_charset_encode(next); - this.buffer(buffer); - return next; - } - } - sub(reset) { - if (!this.exists()) - return []; - if (this.type() !== 'dir') - return []; - this.version(); - return this.kids().filter(file => file.exists()); - } - resolve(path) { - throw new Error('implement'); - } - relate(base = this.constructor.relative('.')) { - const base_path = base.path(); - const path = this.path(); - return path.startsWith(base_path) ? path.slice(base_path.length) : path; - } - find(include, exclude) { - const found = []; - const sub = this.sub(); - for (const child of sub) { - const child_path = child.path(); - if (exclude && child_path.match(exclude)) - continue; - if (!include || child_path.match(include)) - found.push(child); - if (child.type() === 'dir') { - const sub_child = child.find(include, exclude); - for (const child of sub_child) - found.push(child); - } - } - return found; - } - size() { - switch (this.type()) { - case 'file': return this.stat()?.size ?? 0; - default: return 0; - } - } - toJSON() { - return this.path(); - } - open(...modes) { - return this.$.$mol_file_transaction.make({ - path: () => this.path(), - modes: () => modes - }); - } - } - __decorate([ - $mol_action - ], $mol_file_base.prototype, "exists_cut", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "stat", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "modified", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "version", null); - __decorate([ - $mol_mem_key - ], $mol_file_base.prototype, "readable", null); - __decorate([ - $mol_mem_key - ], $mol_file_base.prototype, "writable", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "buffer", null); - __decorate([ - $mol_action - ], $mol_file_base.prototype, "stat_make", null); - __decorate([ - $mol_mem_key - ], $mol_file_base.prototype, "clone", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "exists", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "type", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "text_int", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "sub", null); - __decorate([ - $mol_mem - ], $mol_file_base.prototype, "size", null); - __decorate([ - $mol_action - ], $mol_file_base.prototype, "open", null); - __decorate([ - $mol_mem_key - ], $mol_file_base, "absolute", null); - __decorate([ - $mol_action - ], $mol_file_base, "flush", null); - __decorate([ - $mol_action - ], $mol_file_base, "watch_off", null); - $.$mol_file_base = $mol_file_base; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_file extends $mol_file_base { - } - $.$mol_file = $mol_file; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function stat_convert(stat) { - if (!stat) - return null; - let type; - if (stat.isDirectory()) - type = 'dir'; - if (stat.isFile()) - type = 'file'; - if (stat.isSymbolicLink()) - type = 'link'; - if (!type) - return $mol_fail(new Error(`Unsupported file type`)); - return { - type, - size: Number(stat.size), - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime - }; - } - function $mol_file_node_buffer_normalize(buf) { - return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength); - } - $.$mol_file_node_buffer_normalize = $mol_file_node_buffer_normalize; - class $mol_file_node extends $mol_file { - static relative(path) { - return this.absolute($node.path.resolve(this.base, path).replace(/\\/g, '/')); - } - watcher(reset) { - const path = this.path(); - const root = this.root(); - if (!root && !this.exists()) - return super.watcher(); - let watcher; - try { - watcher = $node.fs.watch(path); - } - catch (error) { - if (!(error instanceof Error)) - error = new Error('Unknown watch error', { cause: error }); - error.message += '\n' + path; - if (root || error.code !== 'ENOENT') { - this.$.$mol_fail_log(error); - } - return super.watcher(); - } - watcher.on('change', (type, name) => { - if (!name) - return; - const path = $node.path.join(this.path(), name.toString()); - this.constructor.changed_add(type, path); - }); - watcher.on('error', e => this.$.$mol_fail_log(e)); - let destructed = false; - watcher.on('close', () => { - if (!destructed) - setTimeout(() => $mol_wire_async(this).watcher(null), 500); - }); - return { - destructor() { - destructed = true; - watcher.close(); - } - }; - } - info(path) { - try { - return stat_convert($node.fs.statSync(path)); - } - catch (error) { - if (this.$.$mol_fail_catch(error)) { - if (error.code === 'ENOENT') - return null; - error.message += '\n' + path; - this.$.$mol_fail_hidden(error); - } - } - return null; - } - ensure() { - const path = this.path(); - try { - $node.fs.mkdirSync(path, { recursive: true }); - return null; - } - catch (e) { - if (this.$.$mol_fail_catch(e)) { - if (e.code === 'EEXIST') - return null; - e.message += '\n' + path; - this.$.$mol_fail_hidden(e); - } - } - } - copy(to) { - $node.fs.copyFileSync(this.path(), to); - } - drop() { - $node.fs.unlinkSync(this.path()); - } - read() { - const path = this.path(); - try { - return $mol_file_node_buffer_normalize($node.fs.readFileSync(path)); - } - catch (error) { - if (!$mol_promise_like(error)) { - error.message += '\n' + path; - } - $mol_fail_hidden(error); - } - } - write(buffer) { - const path = this.path(); - try { - $node.fs.writeFileSync(path, buffer); - } - catch (error) { - if (this.$.$mol_fail_catch(error)) { - error.message += '\n' + path; - } - return this.$.$mol_fail_hidden(error); - } - } - kids() { - const path = this.path(); - try { - const kids = $node.fs.readdirSync(path) - .filter(name => !/^\.+$/.test(name)) - .map(name => this.resolve(name)); - return kids; - } - catch (e) { - if (this.$.$mol_fail_catch(e)) { - if (e.code === 'ENOENT') - return []; - e.message += '\n' + path; - } - $mol_fail_hidden(e); - } - } - resolve(path) { - return this.constructor - .relative($node.path.join(this.path(), path)); - } - relate(base = this.constructor.relative('.')) { - return $node.path.relative(base.path(), this.path()).replace(/\\/g, '/'); - } - readable(opts) { - const { Readable } = $node['node:stream']; - const stream = $node.fs.createReadStream(this.path(), { - flags: 'r', - autoClose: true, - start: opts?.start, - end: opts?.end, - encoding: 'binary', - }); - return Readable.toWeb(stream); - } - writable(opts) { - const { Writable } = $node['node:stream']; - const stream = $node.fs.createWriteStream(this.path(), { - flags: 'w+', - autoClose: true, - start: opts?.start, - encoding: 'binary', - }); - return Writable.toWeb(stream); - } - } - __decorate([ - $mol_mem - ], $mol_file_node.prototype, "watcher", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "info", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "ensure", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "copy", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "drop", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "read", null); - __decorate([ - $mol_action - ], $mol_file_node.prototype, "write", null); - __decorate([ - $mol_mem_key - ], $mol_file_node.prototype, "readable", null); - __decorate([ - $mol_mem - ], $mol_file_node.prototype, "writable", null); - $.$mol_file_node = $mol_file_node; - $.$mol_file = $mol_file_node; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_state_local_node extends $mol_state_local { - static dir() { - const base = process.env.XDG_DATA_HOME || ($node.os.homedir() + '/.local/share'); - return $mol_file.absolute(base).resolve('./mol_state_local'); - } - static value(key, next) { - const file = this.dir().resolve(encodeURIComponent(key) + '.json'); - if (next === null) { - file.exists(false); - return null; - } - const arg = next === undefined ? undefined : JSON.stringify(next); - return JSON.parse(file.text(arg) || 'null'); - } - } - __decorate([ - $mol_mem - ], $mol_state_local_node, "dir", null); - __decorate([ - $mol_mem_key - ], $mol_state_local_node, "value", null); - $.$mol_state_local_node = $mol_state_local_node; - $.$mol_state_local = $mol_state_local_node; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function parse(theme) { - if (theme === 'true') - return true; - if (theme === 'false') - return false; - return null; - } - function $mol_lights(next) { - const arg = parse(this.$mol_state_arg.value('mol_lights')); - const base = this.$mol_media.match('(prefers-color-scheme: light)'); - if (next === undefined) { - return arg ?? this.$mol_state_local.value('$mol_lights') ?? base; - } - else { - if (arg === null) { - this.$mol_state_local.value('$mol_lights', next === base ? null : next); - } - else { - this.$mol_state_arg.value('mol_lights', String(next)); - } - return next; - } - } - $.$mol_lights = $mol_lights; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_theme_auto extends $.$mol_theme_auto { - theme() { - return this.$.$mol_lights() ? '$mol_theme_light' : '$mol_theme_dark'; - } - } - $$.$mol_theme_auto = $mol_theme_auto; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_scroll) = class $mol_scroll extends ($.$mol_view) { - tabindex(){ - return -1; - } - event_scroll(next){ - if(next !== undefined) return next; - return null; - } - scroll_top(next){ - if(next !== undefined) return next; - return 0; - } - scroll_left(next){ - if(next !== undefined) return next; - return 0; - } - field(){ - return {...(super.field()), "tabIndex": (this.tabindex())}; - } - event(){ - return {...(super.event()), "scroll": (next) => (this.event_scroll(next))}; - } - }; - ($mol_mem(($.$mol_scroll.prototype), "event_scroll")); - ($mol_mem(($.$mol_scroll.prototype), "scroll_top")); - ($mol_mem(($.$mol_scroll.prototype), "scroll_left")); - - -; -"use strict"; -var $; -(function ($) { - class $mol_dom_listener extends $mol_object { - _node; - _event; - _handler; - _config; - constructor(_node, _event, _handler, _config = { passive: true }) { - super(); - this._node = _node; - this._event = _event; - this._handler = _handler; - this._config = _config; - this._node.addEventListener(this._event, this._handler, this._config); - } - destructor() { - this._node.removeEventListener(this._event, this._handler, this._config); - super.destructor(); - } - } - $.$mol_dom_listener = $mol_dom_listener; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_print extends $mol_object { - static before() { - return new $mol_dom_listener(this.$.$mol_dom_context, 'beforeprint', () => { - this.active(true); - }); - } - static after() { - return new $mol_dom_listener(this.$.$mol_dom_context, 'afterprint', () => { - this.active(false); - }); - } - static active(next) { - this.before(); - this.after(); - return next || false; - } - } - __decorate([ - $mol_mem - ], $mol_print, "before", null); - __decorate([ - $mol_mem - ], $mol_print, "after", null); - __decorate([ - $mol_mem - ], $mol_print, "active", null); - $.$mol_print = $mol_print; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - function $mol_style_sheet(Component, config0) { - let rules = []; - const block = $mol_dom_qname($mol_ambient({}).$mol_func_name(Component)); - const kebab = (name) => name.replace(/[A-Z]/g, letter => '-' + letter.toLowerCase()); - const make_class = (prefix, path, config) => { - const props = []; - const selector = (prefix, path) => { - if (path.length === 0) - return prefix || `[${block}]`; - let res = `[${block}_${path.join('_')}]`; - if (prefix) - res = prefix + ' :where(' + res + ')'; - return res; - }; - for (const key of Object.keys(config).reverse()) { - if (/^(--)?[a-z]/.test(key)) { - const addProp = (keys, val) => { - if (Array.isArray(val)) { - if (val[0] && [Array, Object].includes(val[0].constructor)) { - val = val.map(v => { - return Object.entries(v).map(([n, a]) => { - if (a === true) - return kebab(n); - if (a === false) - return null; - return String(a); - }).filter(Boolean).join(' '); - }).join(','); - } - else { - val = val.join(' '); - } - props.push(`\t${keys.join('-')}: ${val};\n`); - } - else if (val.constructor === Object) { - for (let suffix in val) { - addProp([...keys, kebab(suffix)], val[suffix]); - } - } - else { - props.push(`\t${keys.join('-')}: ${val};\n`); - } - }; - addProp([kebab(key)], config[key]); - } - else if (/^[A-Z]/.test(key)) { - make_class(prefix, [...path, key.toLowerCase()], config[key]); - } - else if (key[0] === '$') { - make_class(selector(prefix, path) + ' :where([' + $mol_dom_qname(key) + '])', [], config[key]); - } - else if (key === '>') { - const types = config[key]; - for (let type in types) { - make_class(selector(prefix, path) + ' > :where([' + $mol_dom_qname(type) + '])', [], types[type]); - } - } - else if (key === '@') { - const attrs = config[key]; - for (let name in attrs) { - for (let val in attrs[name]) { - make_class(selector(prefix, path) + ':where([' + name + '=' + JSON.stringify(val) + '])', [], attrs[name][val]); - } - } - } - else if (key === '@media') { - const media = config[key]; - for (let query in media) { - rules.push('}\n'); - make_class(prefix, path, media[query]); - rules.push(`${key} ${query} {\n`); - } - } - else if (key[0] === '[' && key[key.length - 1] === ']') { - const attr = key.slice(1, -1); - const vals = config[key]; - for (let val in vals) { - make_class(selector(prefix, path) + ':where([' + attr + '=' + JSON.stringify(val) + '])', [], vals[val]); - } - } - else { - make_class(selector(prefix, path) + key, [], config[key]); - } - } - if (props.length) { - rules.push(`${selector(prefix, path)} {\n${props.reverse().join('')}}\n`); - } - }; - make_class('', [], config0); - return rules.reverse().join(''); - } - $.$mol_style_sheet = $mol_style_sheet; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_style_define(Component, config) { - return $mol_style_attach(Component.name, $mol_style_sheet(Component, config)); - } - $.$mol_style_define = $mol_style_define; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_scroll extends $.$mol_scroll { - scroll_top(next, cache) { - const el = this.dom_node(); - if (next !== undefined && !cache) - el.scrollTop = next; - return el.scrollTop; - } - scroll_left(next, cache) { - const el = this.dom_node(); - if (next !== undefined && !cache) - el.scrollLeft = next; - return el.scrollLeft; - } - event_scroll(next) { - const el = this.dom_node(); - this.scroll_left(el.scrollLeft, 'cache'); - this.scroll_top(el.scrollTop, 'cache'); - } - minimal_height() { - return this.$.$mol_print.active() ? null : 0; - } - minimal_width() { - return this.$.$mol_print.active() ? null : 0; - } - } - __decorate([ - $mol_mem - ], $mol_scroll.prototype, "scroll_top", null); - __decorate([ - $mol_mem - ], $mol_scroll.prototype, "scroll_left", null); - $$.$mol_scroll = $mol_scroll; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { per, rem, px } = $mol_style_unit; - $mol_style_define($mol_scroll, { - display: 'grid', - overflow: 'auto', - flex: { - direction: 'column', - grow: 1, - shrink: 1, - }, - outline: 'none', - align: { - self: 'stretch', - items: 'flex-start', - }, - boxSizing: 'border-box', - willChange: 'scroll-position', - scroll: { - padding: [rem(.75), 0], - }, - maxHeight: per(100), - maxWidth: per(100), - webkitOverflowScrolling: 'touch', - contain: 'content', - '>': { - $mol_view: { - gridArea: '1/1', - }, - }, - '::before': { - display: 'none', - }, - '::after': { - display: 'none', - }, - '::-webkit-scrollbar': { - width: rem(.25), - height: rem(.25), - }, - '@media': { - 'print': { - overflow: 'hidden', - contain: 'none', - maxHeight: 'unset', - }, - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_book2) = class $mol_book2 extends ($.$mol_scroll) { - pages(){ - return []; - } - menu_title(){ - return ""; - } - sub(){ - return (this.pages()); - } - minimal_width(){ - return 0; - } - Placeholder(){ - const obj = new this.$.$mol_view(); - return obj; - } - Gap(id){ - const obj = new this.$.$mol_view(); - (obj.title) = () => (""); - return obj; - } - }; - ($mol_mem(($.$mol_book2.prototype), "Placeholder")); - ($mol_mem_key(($.$mol_book2.prototype), "Gap")); - - -; -"use strict"; -var $; -(function ($) { - $.$mol_layer = $mol_style_prop('mol_layer', [ - 'hover', - 'focus', - 'speck', - 'float', - 'popup', - ]); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/layer/layer.css", ":root {\n\t--mol_layer_hover: 1;\n\t--mol_layer_focus: 2;\n\t--mol_layer_speck: 3;\n\t--mol_layer_float: 4;\n\t--mol_layer_popup: 5;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_book2 extends $.$mol_book2 { - title() { - return this.pages().map(page => { - try { - return page?.title(); - } - catch (error) { - $mol_fail_log(error); - } - }).reverse().filter(Boolean).join(' | '); - } - menu_title() { - return this.pages()[0]?.title() || this.title(); - } - sub() { - const placeholder = this.Placeholder(); - const next = [...this.pages(), placeholder]; - const prev = $mol_mem_cached(() => this.sub()) ?? []; - for (let i = 1; i++;) { - const p = prev[prev.length - i]; - const n = next[next.length - i]; - if (!n) - break; - if (p === n) - continue; - if (n === placeholder) - continue; - new this.$.$mol_after_tick(() => { - const b = this.dom_node(); - const p = n.dom_node(); - b.scroll({ - left: p.offsetLeft + p.offsetWidth - b.offsetWidth, - behavior: 'smooth', - }); - }); - break; - } - return next; - } - bring() { - const pages = this.pages(); - if (pages.length) - pages[pages.length - 1].bring(); - else - super.bring(); - } - } - __decorate([ - $mol_mem - ], $mol_book2.prototype, "sub", null); - $$.$mol_book2 = $mol_book2; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/book2/book2.view.css", "[mol_book2] {\n\tdisplay: flex;\n\tflex-flow: row nowrap;\n\talign-items: stretch;\n\tflex: 1 1 auto;\n\talign-self: stretch;\n\tmargin: 0;\n\t/* box-shadow: 0 0 0 1px var(--mol_theme_line); */\n\t/* transform: translateZ(0); */\n\ttransition: none;\n\tscroll-snap-type: x mandatory;\n\t/* padding: 0 1px;\n\tscroll-padding: 0 1px;\n\tgap: 1px; */\n}\n\n[mol_book2] > * {\n/* \tflex: none; */\n\tscroll-snap-stop: always;\n\tscroll-snap-align: end;\n\tposition: relative;\n\tmin-height: 100%;\n\tmax-height: 100%;\n\tmax-width: 100%;\n\tflex-shrink: 0;\n\tbox-shadow: inset 0 0 0 1px var(--mol_theme_field);\n}\n\n[mol_book2] > *:not(:first-of-type):before,\n[mol_book2] > *:not(:last-of-type)::after {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 1.5rem;\n\twidth: 3px;\n\theight: 1rem;\n\tbackground: linear-gradient(\n\t\tto bottom,\n\t\tvar(--mol_theme_focus) 0%,\n\t\tvar(--mol_theme_focus) 14%,\n\t\ttransparent 15%,\n\t\ttransparent 42%,\n\t\tvar(--mol_theme_focus) 43%,\n\t\tvar(--mol_theme_focus) 57%,\n\t\ttransparent 58%,\n\t\ttransparent 85%,\n\t\tvar(--mol_theme_focus) 86%,\n\t\tvar(--mol_theme_focus) 100%\n\t);\n\topacity: .5;\n\tz-index: var(--mol_layer_speck);\n}\n[mol_book2] > *:not(:first-of-type):before {\n\tleft: -1px;\n}\n[mol_book2] > *:not(:last-of-type)::after {\n\tright: -1px;\n}\n\n:where([mol_book2]) > * {\n\tbackground-color: var(--mol_theme_card);\n\t/* box-shadow: 0 0 0 1px var(--mol_theme_back); */\n}\n\n[mol_book2] > [mol_book2] {\n\tdisplay: contents;\n}\n\n[mol_book2] > *:first-child {\n\tscroll-snap-align: start;\n}\n\n[mol_book2] > [mol_view] {\n\ttransform: none; /* prevent content clipping */\n}\n\n[mol_book2_placeholder] {\n\tflex: 1 1 0;\n\tbackground: none;\n}\n\n[mol_book2_gap] {\n\tbackground: none;\n\tflex-grow: 1;\n\tscroll-snap-align: none;\n\tmargin-right: -1px;\n\tbox-shadow: none;\n}\n\n[mol_book2_gap]::before,\n[mol_book2_gap]::after {\n\tdisplay: none;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_link) = class $mol_link extends ($.$mol_view) { - uri_toggle(){ - return ""; - } - hint(){ - return ""; - } - hint_safe(){ - return (this.hint()); - } - target(){ - return "_self"; - } - file_name(){ - return ""; - } - current(){ - return false; - } - relation(){ - return ""; - } - event_click(next){ - if(next !== undefined) return next; - return null; - } - click(next){ - return (this.event_click(next)); - } - uri(){ - return ""; - } - dom_name(){ - return "a"; - } - uri_off(){ - return ""; - } - uri_native(){ - return null; - } - external(){ - return false; - } - attr(){ - return { - ...(super.attr()), - "href": (this.uri_toggle()), - "title": (this.hint_safe()), - "target": (this.target()), - "download": (this.file_name()), - "mol_link_current": (this.current()), - "rel": (this.relation()) - }; - } - sub(){ - return [(this.title())]; - } - arg(){ - return {}; - } - event(){ - return {...(super.event()), "click": (next) => (this.click(next))}; - } - }; - ($mol_mem(($.$mol_link.prototype), "event_click")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_link extends $.$mol_link { - uri_toggle() { - return this.current() ? this.uri_off() : this.uri(); - } - uri() { - return new this.$.$mol_state_arg(this.state_key()).link(this.arg()); - } - uri_off() { - const arg2 = {}; - for (let i in this.arg()) - arg2[i] = null; - return new this.$.$mol_state_arg(this.state_key()).link(arg2); - } - uri_native() { - const base = this.$.$mol_state_arg.href(); - return new URL(this.uri(), base); - } - current() { - const base = this.$.$mol_state_arg.href_normal(); - const target = this.uri_native().toString(); - if (base === target) - return true; - const args = this.arg(); - const keys = Object.keys(args).filter(key => args[key] != null); - if (keys.length === 0) - return false; - for (const key of keys) { - if (this.$.$mol_state_arg.value(key) != args[key]) - return false; - } - return true; - } - file_name() { - return null; - } - minimal_height() { - return Math.max(super.minimal_height(), 24); - } - external() { - return this.uri_native().origin !== $mol_dom_context.location.origin; - } - target() { - return this.external() ? '_blank' : '_self'; - } - hint_safe() { - try { - return this.hint(); - } - catch (error) { - $mol_fail_log(error); - return ''; - } - } - } - __decorate([ - $mol_mem - ], $mol_link.prototype, "uri_toggle", null); - __decorate([ - $mol_mem - ], $mol_link.prototype, "uri", null); - __decorate([ - $mol_mem - ], $mol_link.prototype, "uri_off", null); - __decorate([ - $mol_mem - ], $mol_link.prototype, "uri_native", null); - __decorate([ - $mol_mem - ], $mol_link.prototype, "current", null); - $$.$mol_link = $mol_link; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - const { rem } = $mol_style_unit; - $mol_style_define($mol_link, { - textDecoration: 'none', - color: $mol_theme.control, - stroke: 'currentcolor', - cursor: 'pointer', - padding: $mol_gap.text, - boxSizing: 'border-box', - position: 'relative', - minWidth: rem(2.5), - gap: $mol_gap.space, - border: { - radius: $mol_gap.round, - }, - ':hover': { - background: { - color: $mol_theme.hover, - }, - }, - ':focus-visible': { - outline: 'none', - background: { - color: $mol_theme.hover, - }, - }, - ':active': { - color: $mol_theme.focus, - }, - '@': { - mol_link_current: { - 'true': { - color: $mol_theme.current, - textShadow: '0 0', - } - } - }, - }); -})($ || ($ = {})); - -; - ($.$mol_image) = class $mol_image extends ($.$mol_view) { - uri(){ - return ""; - } - loading(){ - return "eager"; - } - decoding(){ - return "async"; - } - cors(){ - return null; - } - natural_width(){ - return 0; - } - natural_height(){ - return 0; - } - load(next){ - if(next !== undefined) return next; - return null; - } - dom_name(){ - return "img"; - } - field(){ - return { - ...(super.field()), - "src": (this.uri()), - "alt": (this.title()), - "loading": (this.loading()), - "decoding": (this.decoding()), - "crossOrigin": (this.cors()) - }; - } - attr(){ - return { - ...(super.attr()), - "width": (this.natural_width()), - "height": (this.natural_height()) - }; - } - event(){ - return {"load": (next) => (this.load(next))}; - } - minimal_width(){ - return 16; - } - minimal_height(){ - return 16; - } - }; - ($mol_mem(($.$mol_image.prototype), "load")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_image extends $.$mol_image { - natural_width(next) { - const dom = this.dom_node(); - if (dom.naturalWidth) - return dom.naturalWidth; - const found = this.uri().match(/\bwidth=(\d+)/); - return found ? Number(found[1]) : null; - } - natural_height(next) { - const dom = this.dom_node(); - if (dom.naturalHeight) - return dom.naturalHeight; - const found = this.uri().match(/\bheight=(\d+)/); - return found ? Number(found[1]) : null; - } - load() { - this.natural_width(null); - this.natural_height(null); - } - } - __decorate([ - $mol_mem - ], $mol_image.prototype, "natural_width", null); - __decorate([ - $mol_mem - ], $mol_image.prototype, "natural_height", null); - $$.$mol_image = $mol_image; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/image/image.view.css", "[mol_image] {\n\tborder-radius: var(--mol_gap_round);\n\toverflow: hidden;\n\tflex: 0 1 auto;\n\tmax-width: 100%;\n\tobject-fit: cover;\n\theight: fit-content;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_link_iconed) = class $mol_link_iconed extends ($.$mol_link) { - icon(){ - return ""; - } - Icon(){ - const obj = new this.$.$mol_image(); - (obj.uri) = () => ((this.icon())); - (obj.title) = () => (""); - return obj; - } - title(){ - return (this.uri()); - } - sub(){ - return [(this.Icon())]; - } - content(){ - return [(this.title())]; - } - host(){ - return ""; - } - }; - ($mol_mem(($.$mol_link_iconed.prototype), "Icon")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_link_iconed extends $.$mol_link_iconed { - icon() { - return `https://favicon.yandex.net/favicon/${this.host()}?color=0,0,0,0&size=32&stub=1`; - } - host() { - const base = this.$.$mol_state_arg.href(); - const url = new URL(this.uri(), base); - return url.hostname; - } - title() { - const uri = this.uri(); - const host = this.host(); - const suffix = (host ? uri.split(this.host(), 2)[1] : uri)?.replace(/^[\/\?#!]+/, ''); - return decodeURIComponent(suffix || host).replace(/^\//, ' '); - } - sub() { - return [ - ...this.host() ? [this.Icon()] : [], - ...this.content() ? [' ', ...this.content()] : [], - ]; - } - } - __decorate([ - $mol_mem - ], $mol_link_iconed.prototype, "icon", null); - __decorate([ - $mol_mem - ], $mol_link_iconed.prototype, "host", null); - __decorate([ - $mol_mem - ], $mol_link_iconed.prototype, "title", null); - __decorate([ - $mol_mem - ], $mol_link_iconed.prototype, "sub", null); - $$.$mol_link_iconed = $mol_link_iconed; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/link/iconed/iconed.view.css", "[mol_link_iconed] {\n\talign-items: baseline;\n\tdisplay: inline-flex;\n\tpadding: var(--mol_gap_text);\n}\n\n[mol_link_iconed_icon] {\n\tbox-shadow: none;\n\theight: 1.5em;\n\twidth: 1em;\n\tflex: 0 0 auto;\n\tdisplay: inline-block;\n\talign-self: normal;\n\tvertical-align: top;\n\tborder-radius: 0;\n\tobject-fit: scale-down;\n\topacity: .75;\n}\n\n[mol_theme=\"$mol_theme_dark\"] [mol_link_iconed_icon] {\n\tfilter: var(--mol_theme_image);\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_speck) = class $mol_speck extends ($.$mol_view) { - theme(){ - return "$mol_theme_accent"; - } - value(){ - return null; - } - attr(){ - return {...(super.attr()), "mol_theme": (this.theme())}; - } - style(){ - return {...(super.style()), "minHeight": "1em"}; - } - sub(){ - return [(this.value())]; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/speck/speck.view.css", "[mol_speck] {\n\tfont-size: .625rem;\n\tborder-radius: 1rem;\n\tmargin: -0.5rem -0.25rem;\n\talign-self: flex-start;\n\tmin-height: 1em;\n\tmin-width: .5em;\n\tvertical-align: sub;\n\tpadding: .25em .5em;\n\tposition: absolute;\n\tz-index: var(--mol_layer_speck);\n\ttext-align: center;\n\tline-height: 1;\n\tdisplay: inline-block;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\tuser-select: none;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_button) = class $mol_button extends ($.$mol_view) { - event_activate(next){ - if(next !== undefined) return next; - return null; - } - clicks(next){ - if(next !== undefined) return next; - return null; - } - event_key_press(next){ - if(next !== undefined) return next; - return null; - } - disabled(){ - return false; - } - tab_index(){ - return 0; - } - hint(){ - return ""; - } - hint_safe(){ - return (this.hint()); - } - error(){ - return ""; - } - enabled(){ - return true; - } - click(next){ - if(next !== undefined) return next; - return null; - } - event_click(next){ - if(next !== undefined) return next; - return null; - } - event(){ - return { - ...(super.event()), - "click": (next) => (this.event_activate(next)), - "dblclick": (next) => (this.clicks(next)), - "keydown": (next) => (this.event_key_press(next)) - }; - } - attr(){ - return { - ...(super.attr()), - "disabled": (this.disabled()), - "role": "button", - "tabindex": (this.tab_index()), - "title": (this.hint_safe()) - }; - } - sub(){ - return [(this.title())]; - } - Speck(){ - const obj = new this.$.$mol_speck(); - (obj.value) = () => ((this.error())); - return obj; - } - }; - ($mol_mem(($.$mol_button.prototype), "event_activate")); - ($mol_mem(($.$mol_button.prototype), "clicks")); - ($mol_mem(($.$mol_button.prototype), "event_key_press")); - ($mol_mem(($.$mol_button.prototype), "click")); - ($mol_mem(($.$mol_button.prototype), "event_click")); - ($mol_mem(($.$mol_button.prototype), "Speck")); - - -; -"use strict"; -var $; -(function ($) { - let $mol_keyboard_code; - (function ($mol_keyboard_code) { - $mol_keyboard_code[$mol_keyboard_code["backspace"] = 8] = "backspace"; - $mol_keyboard_code[$mol_keyboard_code["tab"] = 9] = "tab"; - $mol_keyboard_code[$mol_keyboard_code["enter"] = 13] = "enter"; - $mol_keyboard_code[$mol_keyboard_code["shift"] = 16] = "shift"; - $mol_keyboard_code[$mol_keyboard_code["ctrl"] = 17] = "ctrl"; - $mol_keyboard_code[$mol_keyboard_code["alt"] = 18] = "alt"; - $mol_keyboard_code[$mol_keyboard_code["pause"] = 19] = "pause"; - $mol_keyboard_code[$mol_keyboard_code["capsLock"] = 20] = "capsLock"; - $mol_keyboard_code[$mol_keyboard_code["escape"] = 27] = "escape"; - $mol_keyboard_code[$mol_keyboard_code["space"] = 32] = "space"; - $mol_keyboard_code[$mol_keyboard_code["pageUp"] = 33] = "pageUp"; - $mol_keyboard_code[$mol_keyboard_code["pageDown"] = 34] = "pageDown"; - $mol_keyboard_code[$mol_keyboard_code["end"] = 35] = "end"; - $mol_keyboard_code[$mol_keyboard_code["home"] = 36] = "home"; - $mol_keyboard_code[$mol_keyboard_code["left"] = 37] = "left"; - $mol_keyboard_code[$mol_keyboard_code["up"] = 38] = "up"; - $mol_keyboard_code[$mol_keyboard_code["right"] = 39] = "right"; - $mol_keyboard_code[$mol_keyboard_code["down"] = 40] = "down"; - $mol_keyboard_code[$mol_keyboard_code["insert"] = 45] = "insert"; - $mol_keyboard_code[$mol_keyboard_code["delete"] = 46] = "delete"; - $mol_keyboard_code[$mol_keyboard_code["key0"] = 48] = "key0"; - $mol_keyboard_code[$mol_keyboard_code["key1"] = 49] = "key1"; - $mol_keyboard_code[$mol_keyboard_code["key2"] = 50] = "key2"; - $mol_keyboard_code[$mol_keyboard_code["key3"] = 51] = "key3"; - $mol_keyboard_code[$mol_keyboard_code["key4"] = 52] = "key4"; - $mol_keyboard_code[$mol_keyboard_code["key5"] = 53] = "key5"; - $mol_keyboard_code[$mol_keyboard_code["key6"] = 54] = "key6"; - $mol_keyboard_code[$mol_keyboard_code["key7"] = 55] = "key7"; - $mol_keyboard_code[$mol_keyboard_code["key8"] = 56] = "key8"; - $mol_keyboard_code[$mol_keyboard_code["key9"] = 57] = "key9"; - $mol_keyboard_code[$mol_keyboard_code["A"] = 65] = "A"; - $mol_keyboard_code[$mol_keyboard_code["B"] = 66] = "B"; - $mol_keyboard_code[$mol_keyboard_code["C"] = 67] = "C"; - $mol_keyboard_code[$mol_keyboard_code["D"] = 68] = "D"; - $mol_keyboard_code[$mol_keyboard_code["E"] = 69] = "E"; - $mol_keyboard_code[$mol_keyboard_code["F"] = 70] = "F"; - $mol_keyboard_code[$mol_keyboard_code["G"] = 71] = "G"; - $mol_keyboard_code[$mol_keyboard_code["H"] = 72] = "H"; - $mol_keyboard_code[$mol_keyboard_code["I"] = 73] = "I"; - $mol_keyboard_code[$mol_keyboard_code["J"] = 74] = "J"; - $mol_keyboard_code[$mol_keyboard_code["K"] = 75] = "K"; - $mol_keyboard_code[$mol_keyboard_code["L"] = 76] = "L"; - $mol_keyboard_code[$mol_keyboard_code["M"] = 77] = "M"; - $mol_keyboard_code[$mol_keyboard_code["N"] = 78] = "N"; - $mol_keyboard_code[$mol_keyboard_code["O"] = 79] = "O"; - $mol_keyboard_code[$mol_keyboard_code["P"] = 80] = "P"; - $mol_keyboard_code[$mol_keyboard_code["Q"] = 81] = "Q"; - $mol_keyboard_code[$mol_keyboard_code["R"] = 82] = "R"; - $mol_keyboard_code[$mol_keyboard_code["S"] = 83] = "S"; - $mol_keyboard_code[$mol_keyboard_code["T"] = 84] = "T"; - $mol_keyboard_code[$mol_keyboard_code["U"] = 85] = "U"; - $mol_keyboard_code[$mol_keyboard_code["V"] = 86] = "V"; - $mol_keyboard_code[$mol_keyboard_code["W"] = 87] = "W"; - $mol_keyboard_code[$mol_keyboard_code["X"] = 88] = "X"; - $mol_keyboard_code[$mol_keyboard_code["Y"] = 89] = "Y"; - $mol_keyboard_code[$mol_keyboard_code["Z"] = 90] = "Z"; - $mol_keyboard_code[$mol_keyboard_code["metaLeft"] = 91] = "metaLeft"; - $mol_keyboard_code[$mol_keyboard_code["metaRight"] = 92] = "metaRight"; - $mol_keyboard_code[$mol_keyboard_code["select"] = 93] = "select"; - $mol_keyboard_code[$mol_keyboard_code["numpad0"] = 96] = "numpad0"; - $mol_keyboard_code[$mol_keyboard_code["numpad1"] = 97] = "numpad1"; - $mol_keyboard_code[$mol_keyboard_code["numpad2"] = 98] = "numpad2"; - $mol_keyboard_code[$mol_keyboard_code["numpad3"] = 99] = "numpad3"; - $mol_keyboard_code[$mol_keyboard_code["numpad4"] = 100] = "numpad4"; - $mol_keyboard_code[$mol_keyboard_code["numpad5"] = 101] = "numpad5"; - $mol_keyboard_code[$mol_keyboard_code["numpad6"] = 102] = "numpad6"; - $mol_keyboard_code[$mol_keyboard_code["numpad7"] = 103] = "numpad7"; - $mol_keyboard_code[$mol_keyboard_code["numpad8"] = 104] = "numpad8"; - $mol_keyboard_code[$mol_keyboard_code["numpad9"] = 105] = "numpad9"; - $mol_keyboard_code[$mol_keyboard_code["multiply"] = 106] = "multiply"; - $mol_keyboard_code[$mol_keyboard_code["add"] = 107] = "add"; - $mol_keyboard_code[$mol_keyboard_code["subtract"] = 109] = "subtract"; - $mol_keyboard_code[$mol_keyboard_code["decimal"] = 110] = "decimal"; - $mol_keyboard_code[$mol_keyboard_code["divide"] = 111] = "divide"; - $mol_keyboard_code[$mol_keyboard_code["F1"] = 112] = "F1"; - $mol_keyboard_code[$mol_keyboard_code["F2"] = 113] = "F2"; - $mol_keyboard_code[$mol_keyboard_code["F3"] = 114] = "F3"; - $mol_keyboard_code[$mol_keyboard_code["F4"] = 115] = "F4"; - $mol_keyboard_code[$mol_keyboard_code["F5"] = 116] = "F5"; - $mol_keyboard_code[$mol_keyboard_code["F6"] = 117] = "F6"; - $mol_keyboard_code[$mol_keyboard_code["F7"] = 118] = "F7"; - $mol_keyboard_code[$mol_keyboard_code["F8"] = 119] = "F8"; - $mol_keyboard_code[$mol_keyboard_code["F9"] = 120] = "F9"; - $mol_keyboard_code[$mol_keyboard_code["F10"] = 121] = "F10"; - $mol_keyboard_code[$mol_keyboard_code["F11"] = 122] = "F11"; - $mol_keyboard_code[$mol_keyboard_code["F12"] = 123] = "F12"; - $mol_keyboard_code[$mol_keyboard_code["numLock"] = 144] = "numLock"; - $mol_keyboard_code[$mol_keyboard_code["scrollLock"] = 145] = "scrollLock"; - $mol_keyboard_code[$mol_keyboard_code["semicolon"] = 186] = "semicolon"; - $mol_keyboard_code[$mol_keyboard_code["equals"] = 187] = "equals"; - $mol_keyboard_code[$mol_keyboard_code["comma"] = 188] = "comma"; - $mol_keyboard_code[$mol_keyboard_code["dash"] = 189] = "dash"; - $mol_keyboard_code[$mol_keyboard_code["period"] = 190] = "period"; - $mol_keyboard_code[$mol_keyboard_code["forwardSlash"] = 191] = "forwardSlash"; - $mol_keyboard_code[$mol_keyboard_code["graveAccent"] = 192] = "graveAccent"; - $mol_keyboard_code[$mol_keyboard_code["bracketOpen"] = 219] = "bracketOpen"; - $mol_keyboard_code[$mol_keyboard_code["slashBack"] = 220] = "slashBack"; - $mol_keyboard_code[$mol_keyboard_code["slashBackLeft"] = 226] = "slashBackLeft"; - $mol_keyboard_code[$mol_keyboard_code["bracketClose"] = 221] = "bracketClose"; - $mol_keyboard_code[$mol_keyboard_code["quoteSingle"] = 222] = "quoteSingle"; - })($mol_keyboard_code = $.$mol_keyboard_code || ($.$mol_keyboard_code = {})); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_button extends $.$mol_button { - status(next = [null]) { return next; } - disabled() { - return !this.enabled(); - } - event_activate(next) { - if (!next) - return; - if (!this.enabled()) - return; - try { - this.event_click(next); - this.click(next); - this.status([null]); - } - catch (error) { - Promise.resolve().then(() => this.status([error])); - $mol_fail_hidden(error); - } - } - event_key_press(event) { - if (event.keyCode === $mol_keyboard_code.enter) { - return this.event_activate(event); - } - } - tab_index() { - return this.enabled() ? super.tab_index() : -1; - } - error() { - const [error] = this.status(); - if (!error) - return ''; - if (error instanceof Promise) { - return $mol_fail_hidden(error); - } - return String(error.message ?? error); - } - hint_safe() { - try { - return this.hint(); - } - catch (error) { - $mol_fail_log(error); - return ''; - } - } - sub_visible() { - return [ - ...this.error() ? [this.Speck()] : [], - ...this.sub(), - ]; - } - } - __decorate([ - $mol_mem - ], $mol_button.prototype, "status", null); - $$.$mol_button = $mol_button; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/button/button.view.css", "[mol_button] {\n\tborder: none;\n\tfont: inherit;\n\tdisplay: inline-flex;\n\tflex-shrink: 0;\n\ttext-decoration: inherit;\n\tcursor: inherit;\n\tposition: relative;\n\tbox-sizing: border-box;\n\tword-break: normal;\n\tcursor: default;\n\tuser-select: none;\n\tborder-radius: var(--mol_gap_round);\n\tbackground: transparent;\n\tcolor: inherit;\n}\n\n[mol_button]:where(:not(:disabled)):hover {\n\tz-index: var(--mol_layer_hover);\n}\n\n[mol_button]:focus-visible {\n\toutline: none;\n\tz-index: var(--mol_layer_focus);\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_button_typed) = class $mol_button_typed extends ($.$mol_button) { - minimal_height(){ - return 40; - } - minimal_width(){ - return 40; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/button/typed/typed.view.css", "[mol_button_typed] {\n\talign-content: center;\n\talign-items: center;\n\tpadding: var(--mol_gap_text);\n\tborder-radius: var(--mol_gap_round);\n\tgap: var(--mol_gap_space);\n\tuser-select: none;\n\tcursor: pointer;\n}\n\n[mol_button_typed][disabled] {\n\tpointer-events: none;\n}\n\n[mol_button_typed]:hover ,\n[mol_button_typed]:focus-visible {\n\tbox-shadow: inset 0 0 0 10rem var(--mol_theme_hover);\n}\n\n[mol_button_typed]:active {\n\tcolor: var(--mol_theme_focus);\n}\n\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_button_minor) = class $mol_button_minor extends ($.$mol_button_typed) {}; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/button/minor/minor.view.css", "[mol_button_minor] {\n\tcolor: var(--mol_theme_control);\n}\n\n[mol_button_minor][disabled] {\n\tcolor: var(--mol_theme_shade);\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_check) = class $mol_check extends ($.$mol_button_minor) { - checked(next){ - if(next !== undefined) return next; - return false; - } - aria_checked(){ - return "false"; - } - aria_role(){ - return "checkbox"; - } - Icon(){ - return null; - } - title(){ - return ""; - } - Title(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.title())]); - return obj; - } - label(){ - return [(this.Title())]; - } - attr(){ - return { - ...(super.attr()), - "mol_check_checked": (this.checked()), - "aria-checked": (this.aria_checked()), - "role": (this.aria_role()) - }; - } - sub(){ - return [(this.Icon()), (this.label())]; - } - }; - ($mol_mem(($.$mol_check.prototype), "checked")); - ($mol_mem(($.$mol_check.prototype), "Title")); - - -; -"use strict"; -var $; -(function ($) { - function $mol_maybe(value) { - return (value == null) ? [] : [value]; - } - $.$mol_maybe = $mol_maybe; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/check.css", "[mol_check] {\n\tflex: 0 0 auto;\n\tjustify-content: flex-start;\n\talign-content: center;\n\t/* align-items: flex-start; */\n\tborder: none;\n\tfont-weight: inherit;\n\tbox-shadow: none;\n\ttext-align: left;\n\tdisplay: inline-flex;\n\tflex-wrap: nowrap;\n}\n\n[mol_check_title] {\n\tflex-shrink: 1;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_check extends $.$mol_check { - click(next) { - if (next?.defaultPrevented) - return; - this.checked(!this.checked()); - if (next) - next.preventDefault(); - } - sub() { - return [ - ...$mol_maybe(this.Icon()), - ...this.label(), - ]; - } - label() { - return this.title() ? super.label() : []; - } - aria_checked() { - return String(this.checked()); - } - } - $$.$mol_check = $mol_check; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_check_icon) = class $mol_check_icon extends ($.$mol_check) {}; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/icon/icon.view.css", "[mol_check_icon]:where([mol_check_checked]) {\n\tcolor: var(--mol_theme_current);\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_svg) = class $mol_svg extends ($.$mol_view) { - dom_name(){ - return "svg"; - } - dom_name_space(){ - return "http://www.w3.org/2000/svg"; - } - font_size(){ - return 16; - } - font_family(){ - return ""; - } - style_size(){ - return {}; - } - }; - - -; -"use strict"; -var $; -(function ($) { - class $mol_state_time extends $mol_object { - static task(precision, reset) { - if (precision) { - return new $mol_after_timeout(precision, () => this.task(precision, null)); - } - else { - return new $mol_after_frame(() => this.task(precision, null)); - } - } - static now(precision) { - this.task(precision); - return Date.now(); - } - } - __decorate([ - $mol_mem_key - ], $mol_state_time, "task", null); - __decorate([ - $mol_mem_key - ], $mol_state_time, "now", null); - $.$mol_state_time = $mol_state_time; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_svg extends $.$mol_svg { - computed_style() { - const win = this.$.$mol_dom_context; - const style = win.getComputedStyle(this.dom_node()); - if (!style['font-size']) - $mol_state_time.now(0); - return style; - } - font_size() { - return parseInt(this.computed_style()['font-size']) || 16; - } - font_family() { - return this.computed_style()['font-family']; - } - } - __decorate([ - $mol_mem - ], $mol_svg.prototype, "computed_style", null); - __decorate([ - $mol_mem - ], $mol_svg.prototype, "font_size", null); - __decorate([ - $mol_mem - ], $mol_svg.prototype, "font_family", null); - $$.$mol_svg = $mol_svg; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_svg_root) = class $mol_svg_root extends ($.$mol_svg) { - view_box(){ - return "0 0 100 100"; - } - aspect(){ - return "xMidYMid"; - } - dom_name(){ - return "svg"; - } - attr(){ - return { - ...(super.attr()), - "viewBox": (this.view_box()), - "preserveAspectRatio": (this.aspect()) - }; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/svg/root/root.view.css", "[mol_svg_root] {\n\toverflow: hidden;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_svg_path) = class $mol_svg_path extends ($.$mol_svg) { - geometry(){ - return ""; - } - dom_name(){ - return "path"; - } - attr(){ - return {...(super.attr()), "d": (this.geometry())}; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon) = class $mol_icon extends ($.$mol_svg_root) { - path(){ - return ""; - } - Path(){ - const obj = new this.$.$mol_svg_path(); - (obj.geometry) = () => ((this.path())); - return obj; - } - view_box(){ - return "0 0 24 24"; - } - minimal_width(){ - return 16; - } - minimal_height(){ - return 16; - } - sub(){ - return [(this.Path())]; - } - }; - ($mol_mem(($.$mol_icon.prototype), "Path")); - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/icon/icon.view.css", "[mol_icon] {\n\tfill: currentColor;\n\tstroke: none;\n\twidth: 1em;\n\theight: 1.5em;\n\tflex: 0 0 auto;\n\tvertical-align: top;\n\tdisplay: inline-block;\n\tfilter: drop-shadow(0px 1px 1px var(--mol_theme_back));\n\ttransform-origin: center;\n}\n\n[mol_icon_path] {\n\ttransform-origin: center;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_icon_brightness_4) = class $mol_icon_brightness_4 extends ($.$mol_icon) { - path(){ - return "M12,18C11.11,18 10.26,17.8 9.5,17.45C11.56,16.5 13,14.42 13,12C13,9.58 11.56,7.5 9.5,6.55C10.26,6.2 11.11,6 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z"; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - class $mol_locale extends $mol_object { - static lang_default() { - return 'en'; - } - static lang(next) { - return this.$.$mol_state_local.value('locale', next) || $mol_dom_context.navigator.language.replace(/-.*/, '') || this.lang_default(); - } - static source(lang) { - return JSON.parse(this.$.$mol_file.relative(`web.locale=${lang}.json`).text().toString()); - } - static texts(lang, next) { - if (next) - return next; - try { - return this.source(lang).valueOf(); - } - catch (error) { - if ($mol_fail_catch(error)) { - const def = this.lang_default(); - if (lang === def) - throw error; - } - } - return {}; - } - static text(key) { - const lang = this.lang(); - const target = this.texts(lang)[key]; - if (target) - return target; - this.warn(key); - const en = this.texts('en')[key]; - if (!en) - return key; - return en; - } - static warn(key) { - console.warn(`Not translated to "${this.lang()}": ${key}`); - return null; - } - } - __decorate([ - $mol_mem - ], $mol_locale, "lang_default", null); - __decorate([ - $mol_mem - ], $mol_locale, "lang", null); - __decorate([ - $mol_mem_key - ], $mol_locale, "source", null); - __decorate([ - $mol_mem_key - ], $mol_locale, "texts", null); - __decorate([ - $mol_mem_key - ], $mol_locale, "text", null); - __decorate([ - $mol_mem_key - ], $mol_locale, "warn", null); - $.$mol_locale = $mol_locale; -})($ || ($ = {})); - -; - ($.$mol_lights_toggle) = class $mol_lights_toggle extends ($.$mol_check_icon) { - Lights_icon(){ - const obj = new this.$.$mol_icon_brightness_4(); - return obj; - } - lights(next){ - if(next !== undefined) return next; - return false; - } - Icon(){ - return (this.Lights_icon()); - } - hint(){ - return (this.$.$mol_locale.text("$mol_lights_toggle_hint")); - } - checked(next){ - return (this.lights(next)); - } - }; - ($mol_mem(($.$mol_lights_toggle.prototype), "Lights_icon")); - ($mol_mem(($.$mol_lights_toggle.prototype), "lights")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_lights_toggle extends $.$mol_lights_toggle { - lights(next) { - return this.$.$mol_lights(next); - } - } - $$.$mol_lights_toggle = $mol_lights_toggle; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_icon_upload) = class $mol_icon_upload extends ($.$mol_icon) { - path(){ - return "M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_button_open) = class $mol_button_open extends ($.$mol_button_minor) { - Icon(){ - const obj = new this.$.$mol_icon_upload(); - return obj; - } - files(next){ - if(next !== undefined) return next; - return []; - } - accept(){ - return ""; - } - multiple(){ - return true; - } - Native(){ - const obj = new this.$.$mol_button_open_native(); - (obj.files) = (next) => ((this.files(next))); - (obj.accept) = () => ((this.accept())); - (obj.multiple) = () => ((this.multiple())); - return obj; - } - sub(){ - return [(this.Icon()), (this.Native())]; - } - }; - ($mol_mem(($.$mol_button_open.prototype), "Icon")); - ($mol_mem(($.$mol_button_open.prototype), "files")); - ($mol_mem(($.$mol_button_open.prototype), "Native")); - ($.$mol_button_open_native) = class $mol_button_open_native extends ($.$mol_view) { - accept(){ - return ""; - } - multiple(){ - return true; - } - picked(next){ - if(next !== undefined) return next; - return null; - } - dom_name(){ - return "input"; - } - files(next){ - if(next !== undefined) return next; - return []; - } - attr(){ - return { - "type": "file", - "accept": (this.accept()), - "multiple": (this.multiple()) - }; - } - event(){ - return {"change": (next) => (this.picked(next))}; - } - }; - ($mol_mem(($.$mol_button_open_native.prototype), "picked")); - ($mol_mem(($.$mol_button_open_native.prototype), "files")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_button_open_native extends $.$mol_button_open_native { - dom_node() { - return super.dom_node(); - } - picked() { - const files = this.dom_node().files; - if (!files || !files.length) - return; - this.files([...files]); - } - } - $$.$mol_button_open_native = $mol_button_open_native; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/button/open/open.view.css", "[mol_button_open_native] {\n\tposition: absolute;\n\tleft: 0;\n\ttop: -100%;\n\twidth: 100%;\n\theight: 200%;\n\tcursor: pointer;\n\topacity: 0;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_stack) = class $mol_stack extends ($.$mol_view) {}; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/stack/stack.view.css", "[mol_stack] {\n\tdisplay: grid;\n\t/* width: max-content; */\n\t/* height: max-content; */\n\talign-items: flex-start;\n\tjustify-items: flex-start;\n}\n\n[mol_stack] > * {\n\tgrid-area: 1/1;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - class $mol_syntax2 { - lexems; - constructor(lexems) { - this.lexems = lexems; - for (let name in lexems) { - this.rules.push({ - name: name, - regExp: lexems[name], - size: RegExp('^$|' + lexems[name].source).exec('').length - 1, - }); - } - const parts = '(' + this.rules.map(rule => rule.regExp.source).join(')|(') + ')'; - this.regexp = RegExp(`([\\s\\S]*?)(?:(${parts})|$(?![^]))`, 'gmu'); - } - rules = []; - regexp; - tokenize(text, handle) { - let end = 0; - lexing: while (end < text.length) { - const start = end; - this.regexp.lastIndex = start; - var found = this.regexp.exec(text); - end = this.regexp.lastIndex; - if (start === end) - throw new Error('Empty token'); - var prefix = found[1]; - if (prefix) - handle('', prefix, [prefix], start); - var suffix = found[2]; - if (!suffix) - continue; - let offset = 4; - for (let rule of this.rules) { - if (found[offset - 1]) { - handle(rule.name, suffix, found.slice(offset, offset + rule.size), start + prefix.length); - continue lexing; - } - offset += rule.size + 1; - } - $mol_fail(new Error('$mol_syntax2 is broken')); - } - } - parse(text, handlers) { - this.tokenize(text, (name, ...args) => handlers[name](...args)); - } - } - $.$mol_syntax2 = $mol_syntax2; -})($ || ($ = {})); - -; - ($.$mol_paragraph) = class $mol_paragraph extends ($.$mol_view) { - line_height(){ - return 24; - } - letter_width(){ - return 7; - } - width_limit(){ - return +Infinity; - } - row_width(){ - return 0; - } - sub(){ - return [(this.title())]; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_paragraph extends $.$mol_paragraph { - maximal_width() { - let width = 0; - const letter = this.letter_width(); - for (const kid of this.sub()) { - if (!kid) - continue; - if (kid instanceof $mol_view) { - width += kid.maximal_width(); - } - else if (typeof kid !== 'object') { - width += String(kid).length * letter; - } - } - return width; - } - width_limit() { - return this.$.$mol_window.size().width; - } - minimal_width() { - return this.letter_width(); - } - row_width() { - return Math.max(Math.min(this.width_limit(), this.maximal_width()), this.letter_width()); - } - minimal_height() { - return Math.max(1, Math.ceil(this.maximal_width() / this.row_width())) * this.line_height(); - } - } - __decorate([ - $mol_mem - ], $mol_paragraph.prototype, "maximal_width", null); - __decorate([ - $mol_mem - ], $mol_paragraph.prototype, "row_width", null); - __decorate([ - $mol_mem - ], $mol_paragraph.prototype, "minimal_height", null); - $$.$mol_paragraph = $mol_paragraph; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/paragraph/paragraph.view.css", ":where([mol_paragraph]) {\n\tmargin: 0;\n\tmax-width: 100%;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_dimmer) = class $mol_dimmer extends ($.$mol_paragraph) { - parts(){ - return []; - } - string(id){ - return ""; - } - haystack(){ - return ""; - } - needle(){ - return ""; - } - sub(){ - return (this.parts()); - } - Low(id){ - const obj = new this.$.$mol_paragraph(); - (obj.sub) = () => ([(this.string(id))]); - return obj; - } - High(id){ - const obj = new this.$.$mol_paragraph(); - (obj.sub) = () => ([(this.string(id))]); - return obj; - } - }; - ($mol_mem_key(($.$mol_dimmer.prototype), "Low")); - ($mol_mem_key(($.$mol_dimmer.prototype), "High")); - - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - class $mol_regexp extends RegExp { - groups; - constructor(source, flags = 'gsu', groups = []) { - super(source, flags); - this.groups = groups; - } - *[Symbol.matchAll](str) { - const index = this.lastIndex; - this.lastIndex = 0; - try { - while (this.lastIndex < str.length) { - const found = this.exec(str); - if (!found) - break; - yield found; - } - } - finally { - this.lastIndex = index; - } - } - [Symbol.match](str) { - const res = [...this[Symbol.matchAll](str)].filter(r => r.groups).map(r => r[0]); - if (!res.length) - return null; - return res; - } - [Symbol.split](str) { - const res = []; - let token_last = null; - for (let token of this[Symbol.matchAll](str)) { - if (token.groups && (token_last ? token_last.groups : true)) - res.push(''); - res.push(token[0]); - token_last = token; - } - if (!res.length) - res.push(''); - return res; - } - test(str) { - return Boolean(str.match(this)); - } - exec(str) { - const from = this.lastIndex; - if (from >= str.length) - return null; - const res = super.exec(str); - if (res === null) { - this.lastIndex = str.length; - if (!str) - return null; - return Object.assign([str.slice(from)], { - index: from, - input: str, - }); - } - if (from === this.lastIndex) { - $mol_fail(new Error('Captured empty substring')); - } - const groups = {}; - const skipped = str.slice(from, this.lastIndex - res[0].length); - if (skipped) { - this.lastIndex = this.lastIndex - res[0].length; - return Object.assign([skipped], { - index: from, - input: res.input, - }); - } - for (let i = 0; i < this.groups.length; ++i) { - const group = this.groups[i]; - groups[group] = groups[group] || res[i + 1] || ''; - } - return Object.assign(res, { groups }); - } - generate(params) { - return null; - } - get native() { - return new RegExp(this.source, this.flags); - } - static repeat(source, min = 0, max = Number.POSITIVE_INFINITY) { - const regexp = $mol_regexp.from(source); - const upper = Number.isFinite(max) ? max : ''; - const str = `(?:${regexp.source}){${min},${upper}}?`; - const regexp2 = new $mol_regexp(str, regexp.flags, regexp.groups); - regexp2.generate = params => { - const res = regexp.generate(params); - if (res) - return res; - if (min > 0) - return res; - return ''; - }; - return regexp2; - } - static repeat_greedy(source, min = 0, max = Number.POSITIVE_INFINITY) { - const regexp = $mol_regexp.from(source); - const upper = Number.isFinite(max) ? max : ''; - const str = `(?:${regexp.source}){${min},${upper}}`; - const regexp2 = new $mol_regexp(str, regexp.flags, regexp.groups); - regexp2.generate = params => { - const res = regexp.generate(params); - if (res) - return res; - if (min > 0) - return res; - return ''; - }; - return regexp2; - } - static vary(sources) { - const groups = []; - const chunks = sources.map(source => { - const regexp = $mol_regexp.from(source); - groups.push(...regexp.groups); - return regexp.source; - }); - return new $mol_regexp(`(?:${chunks.join('|')})`, '', groups); - } - static optional(source) { - return $mol_regexp.repeat_greedy(source, 0, 1); - } - static force_after(source) { - const regexp = $mol_regexp.from(source); - return new $mol_regexp(`(?=${regexp.source})`, regexp.flags, regexp.groups); - } - static forbid_after(source) { - const regexp = $mol_regexp.from(source); - return new $mol_regexp(`(?!${regexp.source})`, regexp.flags, regexp.groups); - } - static from(source, { ignoreCase, multiline } = { - ignoreCase: false, - multiline: false, - }) { - let flags = 'gsu'; - if (multiline) - flags += 'm'; - if (ignoreCase) - flags += 'i'; - if (typeof source === 'number') { - const src = `\\u{${source.toString(16)}}`; - const regexp = new $mol_regexp(src, flags); - regexp.generate = () => src; - return regexp; - } - if (typeof source === 'string') { - const src = source.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - const regexp = new $mol_regexp(src, flags); - regexp.generate = () => source; - return regexp; - } - else if (source instanceof $mol_regexp) { - const regexp = new $mol_regexp(source.source, flags, source.groups); - regexp.generate = params => source.generate(params); - return regexp; - } - if (source instanceof RegExp) { - const test = new RegExp('|' + source.source); - const groups = Array.from({ length: test.exec('').length - 1 }, (_, i) => String(i + 1)); - const regexp = new $mol_regexp(source.source, source.flags, groups); - regexp.generate = () => ''; - return regexp; - } - if (Array.isArray(source)) { - const patterns = source.map(src => Array.isArray(src) - ? $mol_regexp.optional(src) - : $mol_regexp.from(src)); - const chunks = patterns.map(pattern => pattern.source); - const groups = []; - let index = 0; - for (const pattern of patterns) { - for (let group of pattern.groups) { - if (Number(group) >= 0) { - groups.push(String(index++)); - } - else { - groups.push(group); - } - } - } - const regexp = new $mol_regexp(chunks.join(''), flags, groups); - regexp.generate = params => { - let res = ''; - for (const pattern of patterns) { - let sub = pattern.generate(params); - if (sub === null) - return ''; - res += sub; - } - return res; - }; - return regexp; - } - else { - const groups = []; - const chunks = Object.keys(source).map(name => { - groups.push(name); - const regexp = $mol_regexp.from(source[name]); - groups.push(...regexp.groups); - return `(${regexp.source})`; - }); - const regexp = new $mol_regexp(`(?:${chunks.join('|')})`, flags, groups); - const validator = new RegExp('^' + regexp.source + '$', flags); - regexp.generate = (params) => { - for (let option in source) { - if (option in params) { - if (typeof params[option] === 'boolean') { - if (!params[option]) - continue; - } - else { - const str = String(params[option]); - if (str.match(validator)) - return str; - $mol_fail(new Error(`Wrong param: ${option}=${str}`)); - } - } - else { - if (typeof source[option] !== 'object') - continue; - } - const res = $mol_regexp.from(source[option]).generate(params); - if (res) - return res; - } - return null; - }; - return regexp; - } - } - static unicode_only(...category) { - return new $mol_regexp(`\\p{${category.join('=')}}`); - } - static unicode_except(...category) { - return new $mol_regexp(`\\P{${category.join('=')}}`); - } - static char_range(from, to) { - return new $mol_regexp(`${$mol_regexp.from(from).source}-${$mol_regexp.from(to).source}`); - } - static char_only(...allowed) { - const regexp = allowed.map(f => $mol_regexp.from(f).source).join(''); - return new $mol_regexp(`[${regexp}]`); - } - static char_except(...forbidden) { - const regexp = forbidden.map(f => $mol_regexp.from(f).source).join(''); - return new $mol_regexp(`[^${regexp}]`); - } - static decimal_only = $mol_regexp.from(/\d/gsu); - static decimal_except = $mol_regexp.from(/\D/gsu); - static latin_only = $mol_regexp.from(/\w/gsu); - static latin_except = $mol_regexp.from(/\W/gsu); - static space_only = $mol_regexp.from(/\s/gsu); - static space_except = $mol_regexp.from(/\S/gsu); - static word_break_only = $mol_regexp.from(/\b/gsu); - static word_break_except = $mol_regexp.from(/\B/gsu); - static tab = $mol_regexp.from(/\t/gsu); - static slash_back = $mol_regexp.from(/\\/gsu); - static nul = $mol_regexp.from(/\0/gsu); - static char_any = $mol_regexp.from(/./gsu); - static begin = $mol_regexp.from(/^/gsu); - static end = $mol_regexp.from(/$/gsu); - static or = $mol_regexp.from(/|/gsu); - static line_end = $mol_regexp.from({ - win_end: [['\r'], '\n'], - mac_end: '\r', - }); - } - $.$mol_regexp = $mol_regexp; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_dimmer extends $.$mol_dimmer { - parts() { - const needle = this.needle(); - if (needle.length < 2) - return [this.haystack()]; - let chunks = []; - let strings = this.strings(); - for (let index = 0; index < strings.length; index++) { - if (strings[index] === '') - continue; - chunks.push((index % 2) ? this.High(index) : this.Low(index)); - } - return chunks; - } - strings() { - const options = this.needle().split(/\s+/g).filter(Boolean); - if (!options.length) - return [this.haystack()]; - const variants = { ...options }; - const regexp = $mol_regexp.from({ needle: variants }, { ignoreCase: true }); - return this.haystack().split(regexp); - } - string(index) { - return this.strings()[index]; - } - *view_find(check, path = []) { - if (check(this, this.haystack())) { - yield [...path, this]; - } - } - } - __decorate([ - $mol_mem - ], $mol_dimmer.prototype, "strings", null); - $$.$mol_dimmer = $mol_dimmer; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/dimmer/dimmer.view.css", "[mol_dimmer] {\n\tdisplay: block;\n\tmax-width: 100%;\n}\n\n[mol_dimmer_low] {\n\tdisplay: inline;\n\topacity: 0.8;\n}\n\n[mol_dimmer_high] {\n\tdisplay: inline;\n\tcolor: var(--mol_theme_focus);\n\ttext-shadow: 0 0;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_text_code_token) = class $mol_text_code_token extends ($.$mol_dimmer) { - type(){ - return ""; - } - attr(){ - return {...(super.attr()), "mol_text_code_token_type": (this.type())}; - } - }; - ($.$mol_text_code_token_link) = class $mol_text_code_token_link extends ($.$mol_text_code_token) { - uri(){ - return ""; - } - dom_name(){ - return "a"; - } - type(){ - return "code-link"; - } - attr(){ - return { - ...(super.attr()), - "href": (this.uri()), - "target": "_blank" - }; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { hsla } = $mol_style_func; - $mol_style_define($mol_text_code_token, { - display: 'inline', - textDecoration: 'none', - '@': { - mol_text_code_token_type: { - 'code-keyword': { - color: hsla(0, 70, 60, 1), - }, - 'code-field': { - color: hsla(300, 70, 50, 1), - }, - 'code-tag': { - color: hsla(330, 70, 50, 1), - }, - 'code-global': { - color: hsla(30, 80, 50, 1), - }, - 'code-decorator': { - color: hsla(180, 40, 50, 1), - }, - 'code-punctuation': { - color: hsla(0, 0, 50, 1), - }, - 'code-string': { - color: hsla(90, 40, 50, 1), - }, - 'code-number': { - color: hsla(55, 65, 45, 1), - }, - 'code-call': { - color: hsla(270, 60, 50, 1), - }, - 'code-link': { - color: hsla(210, 60, 50, 1), - }, - 'code-comment-inline': { - opacity: .5, - }, - 'code-comment-block': { - opacity: .5, - }, - 'code-docs': { - opacity: .75, - }, - }, - } - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_text_code_line) = class $mol_text_code_line extends ($.$mol_paragraph) { - numb(){ - return 0; - } - token_type(id){ - return ""; - } - token_text(id){ - return ""; - } - highlight(){ - return ""; - } - token_uri(id){ - return ""; - } - text(){ - return ""; - } - minimal_height(){ - return 24; - } - numb_showed(){ - return true; - } - syntax(){ - return null; - } - uri_resolve(id){ - return ""; - } - Numb(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.numb())]); - return obj; - } - Token(id){ - const obj = new this.$.$mol_text_code_token(); - (obj.type) = () => ((this.token_type(id))); - (obj.haystack) = () => ((this.token_text(id))); - (obj.needle) = () => ((this.highlight())); - return obj; - } - Token_link(id){ - const obj = new this.$.$mol_text_code_token_link(); - (obj.haystack) = () => ((this.token_text(id))); - (obj.needle) = () => ((this.highlight())); - (obj.uri) = () => ((this.token_uri(id))); - return obj; - } - find_pos(id){ - return null; - } - }; - ($mol_mem(($.$mol_text_code_line.prototype), "Numb")); - ($mol_mem_key(($.$mol_text_code_line.prototype), "Token")); - ($mol_mem_key(($.$mol_text_code_line.prototype), "Token_link")); - - -; -"use strict"; -var $; -(function ($) { - $.$mol_syntax2_md_flow = new $mol_syntax2({ - 'quote': /^((?:(?:[>"] )(?:[^]*?)$(\r?\n?))+)([\n\r]*)/, - 'spoiler': /^((?:(?:[\?] )(?:[^]*?)$(\r?\n?))+)([\n\r]*)/, - 'header': /^([#=]+)(\s+)(.*?)$([\n\r]*)/, - 'list': /^((?:(?: ?([*+-])|(?:\d+[\.\)])+) +(?:[^]*?)$(?:\r?\n?)(?: (?:[^]*?)$(?:\r?\n?))*)+)((?:\r?\n)*)/, - 'code': /^(```\s*)([\w.-]*)[\r\n]+([^]*?)^(```)$([\n\r]*)/, - 'code-indent': /^((?:(?: |\t)(?:[^]*?)$\r?\n?)+)([\n\r]*)/, - 'table': /((?:^\|.+?$\r?\n?)+)([\n\r]*)/, - 'grid': /((?:^ *! .*?$\r?\n?)+)([\n\r]*)/, - 'cut': /^--+$((?:\r?\n)*)/, - 'block': /^(.*?)$((?:\r?\n)*)/, - }); - $.$mol_syntax2_md_line = new $mol_syntax2({ - 'strong': /\*\*(.+?)\*\*/, - 'emphasis': /\*(?!\s)(.+?)\*|\/\/(?!\s)(.+?)\/\//, - 'code': /```(.+?)```|;;(.+?);;|`(.+?)`/, - 'insert': /\+\+(.+?)\+\+/, - 'delete': /~~(.+?)~~|--(.+?)--/, - 'embed': /""(?:(.*?)\\)?(.*?)""/, - 'link': /\\\\(?:(.*?)\\)?(.*?)\\\\/, - 'image-link': /!\[([^\[\]]*?)\]\((.*?)\)/, - 'text-link': /\[(.*?(?:\[[^\[\]]*?\][^\[\]]*?)*)\]\((.*?)\)/, - 'text-link-http': /\b(https?:\/\/[^\s,.;:!?")]+(?:[,.;:!?")][^\s,.;:!?")]+)+)/, - }); - $.$mol_syntax2_md_code = new $mol_syntax2({ - 'code-indent': /\t+/, - 'code-docs': /\/\/\/.*?$/, - 'code-comment-block': /(?:\/\*[^]*?\*\/|\/\+[^]*?\+\/|)/, - 'code-link': /(?:\w+:\/\/|#)\S+?(?=\s|\\\\|""|$)/, - 'code-comment-inline': /\/\/.*?(?:$|\/\/)|- \\(?!\\).*|#!? .*/, - 'code-string': /(?:".*?"|'.*?'|`.*?`| ?\\\\.+?\\\\|\/.+?\/[dygimsu]*(?!\p{Letter})|[ \t]*\\[^\n]*)/u, - 'code-number': /[+-]?(?:\d*\.)?\d+\w*/, - 'code-call': /\.?\w+ *(?=\()/, - 'code-sexpr': /\((\w+ )/, - 'code-field': /(?:(?:\.|::|->)\w+|[\w-]+\??\s*:(?!\/\/|:))/, - 'code-keyword': /\b(throw|readonly|unknown|keyof|typeof|never|from|class|struct|interface|type|function|extends|implements|module|namespace|import|export|include|require|var|val|let|const|for|do|while|until|in|out|of|new|if|then|else|switch|case|this|return|async|await|yield|try|catch|break|continue|get|set|public|private|protected|string|boolean|number|null|undefined|true|false|void|int|float|ref)\b/, - 'code-global': /[$]+\w*|\b[A-Z][a-z0-9]+[A-Z]\w*/, - 'code-word': /\w+/, - 'code-decorator': /@.+/, - 'code-tag': /<\/?[\w-]+\/?>?|&\w+;/, - 'code-punctuation': /[\-\[\]\{\}\(\)<=>~!\?@#%&\*_\+\\\/\|;:\.,\^]+?/, - }); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_text_code_line extends $.$mol_text_code_line { - maximal_width() { - return this.text().length * this.letter_width(); - } - syntax() { - return this.$.$mol_syntax2_md_code; - } - tokens(path) { - const tokens = []; - const text = (path.length > 0) - ? this.tokens(path.slice(0, path.length - 1))[path[path.length - 1]].found.slice(1, -1) - : this.text(); - this.syntax().tokenize(text, (name, found, chunks) => { - if (name === 'code-sexpr') { - tokens.push({ name: 'code-punctuation', found: '(', chunks: [] }); - tokens.push({ name: 'code-call', found: chunks[0], chunks: [] }); - } - else { - tokens.push({ name, found, chunks }); - } - }); - return tokens; - } - sub() { - return [ - ...this.numb_showed() ? [this.Numb()] : [], - ...this.row_content([]) - ]; - } - row_content(path) { - return this.tokens(path).map((t, i) => this.Token([...path, i])); - } - Token(path) { - return this.token_type(path) === 'code-link' ? this.Token_link(path) : super.Token(path); - } - token_type(path) { - return this.tokens([...path.slice(0, path.length - 1)])[path[path.length - 1]].name; - } - token_content(path) { - const tokens = this.tokens([...path.slice(0, path.length - 1)]); - const token = tokens[path[path.length - 1]]; - switch (token.name) { - case 'code-string': return [ - token.found[0], - ...this.row_content(path), - token.found[token.found.length - 1], - ]; - default: return [token.found]; - } - } - token_text(path) { - const tokens = this.tokens([...path.slice(0, path.length - 1)]); - const token = tokens[path[path.length - 1]]; - return token.found; - } - token_uri(path) { - const uri = this.token_text(path); - return this.uri_resolve(uri); - } - *view_find(check, path = []) { - if (check(this, this.text())) { - yield [...path, this]; - } - } - find_pos(offset) { - return this.find_token_pos([offset]); - } - find_token_pos([offset, ...path]) { - for (const [index, token] of this.tokens(path).entries()) { - if (token.found.length >= offset) { - const token = this.Token([...path, index]); - return { token, offset }; - } - else { - offset -= token.found.length; - } - } - return null; - } - } - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "tokens", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "row_content", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "token_type", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "token_content", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "token_text", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "token_uri", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "find_pos", null); - __decorate([ - $mol_mem_key - ], $mol_text_code_line.prototype, "find_token_pos", null); - $$.$mol_text_code_line = $mol_text_code_line; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { rem } = $mol_style_unit; - $mol_style_define($mol_text_code_line, { - display: 'block', - position: 'relative', - font: { - family: 'monospace', - }, - Numb: { - textAlign: 'right', - color: $mol_theme.shade, - width: rem(3), - margin: { - left: rem(-4), - }, - display: 'inline-block', - whiteSpace: 'nowrap', - userSelect: 'none', - position: 'absolute', - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_list) = class $mol_list extends ($.$mol_view) { - rows(){ - return []; - } - gap_before(){ - return 0; - } - gap_after(){ - return 0; - } - render_visible_only(){ - return true; - } - render_over(){ - return 0; - } - sub(){ - return (this.rows()); - } - Empty(){ - const obj = new this.$.$mol_view(); - return obj; - } - Gap_before(){ - const obj = new this.$.$mol_view(); - (obj.style) = () => ({"paddingTop": (this.gap_before())}); - return obj; - } - Gap_after(){ - const obj = new this.$.$mol_view(); - (obj.style) = () => ({"paddingTop": (this.gap_after())}); - return obj; - } - view_window(){ - return [0, 0]; - } - }; - ($mol_mem(($.$mol_list.prototype), "Empty")); - ($mol_mem(($.$mol_list.prototype), "Gap_before")); - ($mol_mem(($.$mol_list.prototype), "Gap_after")); - - -; -"use strict"; -var $; -(function ($) { - let cache = null; - function $mol_support_css_overflow_anchor() { - return cache ?? (cache = this.$mol_dom_context.CSS?.supports('overflow-anchor:auto') ?? false); - } - $.$mol_support_css_overflow_anchor = $mol_support_css_overflow_anchor; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_list extends $.$mol_list { - sub() { - const rows = this.rows(); - return (rows.length === 0) ? [this.Empty()] : rows; - } - render_visible_only() { - return this.$.$mol_support_css_overflow_anchor(); - } - view_window(next) { - const kids = this.sub(); - if (kids.length < 3) - return [0, kids.length]; - if (this.$.$mol_print.active()) - return [0, kids.length]; - const rect = this.view_rect(); - if (next) - return next; - let [min, max] = $mol_mem_cached(() => this.view_window()) ?? [0, 0]; - let max2 = max = Math.min(max, kids.length); - let min2 = min = Math.max(0, Math.min(min, max - 1)); - const anchoring = this.render_visible_only(); - const window_height = this.$.$mol_window.size().height + 40; - const over = Math.ceil(window_height * this.render_over()); - const limit_top = -over; - const limit_bottom = window_height + over; - const gap_before = $mol_mem_cached(() => this.gap_before()) ?? 0; - const gap_after = $mol_mem_cached(() => this.gap_after()) ?? 0; - let top = Math.ceil(rect?.top ?? 0) + gap_before; - let bottom = Math.ceil(rect?.bottom ?? 0) - gap_after; - if (top <= limit_top && bottom >= limit_bottom) { - return [min2, max2]; - } - if (anchoring && ((bottom < limit_top) || (top > limit_bottom))) { - min = 0; - top = Math.ceil(rect?.top ?? 0); - while (min < (kids.length - 1)) { - const height = kids[min].minimal_height(); - if (top + height >= limit_top) - break; - top += height; - ++min; - } - min2 = min; - max2 = max = min; - bottom = top; - } - let top2 = top; - let bottom2 = bottom; - if (anchoring && (top < limit_top) && (bottom < limit_bottom) && (max < kids.length)) { - min2 = max; - top2 = bottom; - } - if ((bottom > limit_bottom) && (top > limit_top) && (min > 0)) { - max2 = min; - bottom2 = top; - } - while (anchoring && ((top2 > limit_top) && (min2 > 0))) { - --min2; - top2 -= kids[min2].minimal_height(); - } - while (bottom2 < limit_bottom && max2 < kids.length) { - bottom2 += kids[max2].minimal_height(); - ++max2; - } - return [min2, max2]; - } - gap_before() { - const skipped = this.sub().slice(0, this.view_window()[0]); - return Math.max(0, skipped.reduce((sum, view) => sum + view.minimal_height(), 0)); - } - gap_after() { - const skipped = this.sub().slice(this.view_window()[1]); - return Math.max(0, skipped.reduce((sum, view) => sum + view.minimal_height(), 0)); - } - sub_visible() { - return [ - ...this.gap_before() ? [this.Gap_before()] : [], - ...this.sub().slice(...this.view_window()), - ...this.gap_after() ? [this.Gap_after()] : [], - ]; - } - minimal_height() { - return this.sub().reduce((sum, view) => { - try { - return sum + view.minimal_height(); - } - catch (error) { - $mol_fail_log(error); - return sum; - } - }, 0); - } - force_render(path) { - const kids = this.rows(); - const index = kids.findIndex(item => path.has(item)); - if (index >= 0) { - const win = this.view_window(); - if (index < win[0] || index >= win[1]) { - this.view_window([this.render_visible_only() ? index : 0, index + 1]); - } - kids[index].force_render(path); - } - } - } - __decorate([ - $mol_mem - ], $mol_list.prototype, "sub", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "view_window", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "gap_before", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "gap_after", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "sub_visible", null); - __decorate([ - $mol_mem - ], $mol_list.prototype, "minimal_height", null); - $$.$mol_list = $mol_list; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/list/list.view.css", "[mol_list] {\n\twill-change: contents;\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-shrink: 0;\n\tmax-width: 100%;\n\t/* display: flex;\n\talign-items: stretch;\n\talign-content: stretch; */\n\ttransition: none;\n\tmin-height: 1.5rem;\n}\n\n[mol_list_gap_before] ,\n[mol_list_gap_after] {\n\tdisplay: block !important;\n\tflex: none;\n\ttransition: none;\n\toverflow-anchor: none;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_blob = ($node.buffer?.Blob ?? $mol_dom_context.Blob); -})($ || ($ = {})); - -; - ($.$mol_icon_clipboard) = class $mol_icon_clipboard extends ($.$mol_icon) { - path(){ - return "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_clipboard_outline) = class $mol_icon_clipboard_outline extends ($.$mol_icon) { - path(){ - return "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_button_copy) = class $mol_button_copy extends ($.$mol_button_minor) { - text(){ - return (this.title()); - } - text_blob(next){ - if(next !== undefined) return next; - const obj = new this.$.$mol_blob([(this.text())], {"type": "text/plain"}); - return obj; - } - html(){ - return ""; - } - html_blob(next){ - if(next !== undefined) return next; - const obj = new this.$.$mol_blob([(this.html())], {"type": "text/html"}); - return obj; - } - Icon(){ - const obj = new this.$.$mol_icon_clipboard_outline(); - return obj; - } - title(){ - return ""; - } - blobs(){ - return [(this.text_blob()), (this.html_blob())]; - } - data(){ - return {}; - } - sub(){ - return [(this.Icon()), (this.title())]; - } - }; - ($mol_mem(($.$mol_button_copy.prototype), "text_blob")); - ($mol_mem(($.$mol_button_copy.prototype), "html_blob")); - ($mol_mem(($.$mol_button_copy.prototype), "Icon")); - - -; -"use strict"; -var $; -(function ($) { - const mapping = { - '<': '<', - '>': '>', - '"': '"', - '&': '&', - }; - function $mol_html_encode(text) { - return text.replace(/[&<">]/gi, str => mapping[str]); - } - $.$mol_html_encode = $mol_html_encode; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_button_copy extends $.$mol_button_copy { - data() { - return Object.fromEntries(this.blobs().map(blob => [blob.type, blob])); - } - html() { - return $mol_html_encode(this.text()); - } - attachments() { - return [new ClipboardItem(this.data())]; - } - click(event) { - const cb = $mol_wire_sync(this.$.$mol_dom_context.navigator.clipboard); - cb.writeText?.(this.text()); - cb.write?.(this.attachments()); - if (cb.writeText === undefined && cb.write === undefined) { - throw new Error("doesn't support copy to clipoard"); - } - } - } - __decorate([ - $mol_mem - ], $mol_button_copy.prototype, "html", null); - __decorate([ - $mol_mem - ], $mol_button_copy.prototype, "attachments", null); - $$.$mol_button_copy = $mol_button_copy; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_text_code) = class $mol_text_code extends ($.$mol_stack) { - sidebar_showed(){ - return false; - } - render_visible_only(){ - return false; - } - row_numb(id){ - return 0; - } - row_text(id){ - return ""; - } - syntax(){ - return null; - } - uri_resolve(id){ - return ""; - } - highlight(){ - return ""; - } - Row(id){ - const obj = new this.$.$mol_text_code_line(); - (obj.numb_showed) = () => ((this.sidebar_showed())); - (obj.numb) = () => ((this.row_numb(id))); - (obj.text) = () => ((this.row_text(id))); - (obj.syntax) = () => ((this.syntax())); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.highlight) = () => ((this.highlight())); - return obj; - } - rows(){ - return [(this.Row("0"))]; - } - Rows(){ - const obj = new this.$.$mol_list(); - (obj.render_visible_only) = () => ((this.render_visible_only())); - (obj.rows) = () => ((this.rows())); - return obj; - } - text_export(){ - return ""; - } - Copy(){ - const obj = new this.$.$mol_button_copy(); - (obj.hint) = () => ((this.$.$mol_locale.text("$mol_text_code_Copy_hint"))); - (obj.text) = () => ((this.text_export())); - return obj; - } - attr(){ - return {...(super.attr()), "mol_text_code_sidebar_showed": (this.sidebar_showed())}; - } - text(){ - return ""; - } - text_lines(){ - return []; - } - find_pos(id){ - return null; - } - uri_base(){ - return ""; - } - sub(){ - return [(this.Rows()), (this.Copy())]; - } - }; - ($mol_mem_key(($.$mol_text_code.prototype), "Row")); - ($mol_mem(($.$mol_text_code.prototype), "Rows")); - ($mol_mem(($.$mol_text_code.prototype), "Copy")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_text_code extends $.$mol_text_code { - render_visible_only() { - return this.$.$mol_support_css_overflow_anchor(); - } - text_lines() { - return (this.text() ?? '').split('\n'); - } - rows() { - return this.text_lines().map((_, index) => this.Row(index + 1)); - } - row_text(index) { - return this.text_lines()[index - 1]; - } - row_numb(index) { - return index; - } - find_pos(offset) { - for (const [index, line] of this.text_lines().entries()) { - if (line.length >= offset) { - return this.Row(index + 1).find_pos(offset); - } - else { - offset -= line.length + 1; - } - } - return null; - } - sub() { - return [ - this.Rows(), - ...this.sidebar_showed() ? [this.Copy()] : [] - ]; - } - syntax() { - return this.$.$mol_syntax2_md_code; - } - uri_base() { - return $mol_dom_context.document.location.href; - } - uri_resolve(uri) { - if (/^(\w+script+:)+/.test(uri)) - return null; - try { - const url = new URL(uri, this.uri_base()); - return url.toString(); - } - catch (error) { - $mol_fail_log(error); - return null; - } - } - text_export() { - return this.text() + '\n'; - } - } - __decorate([ - $mol_mem - ], $mol_text_code.prototype, "text_lines", null); - __decorate([ - $mol_mem - ], $mol_text_code.prototype, "rows", null); - __decorate([ - $mol_mem_key - ], $mol_text_code.prototype, "row_text", null); - __decorate([ - $mol_mem_key - ], $mol_text_code.prototype, "find_pos", null); - __decorate([ - $mol_mem - ], $mol_text_code.prototype, "sub", null); - __decorate([ - $mol_mem_key - ], $mol_text_code.prototype, "uri_resolve", null); - $$.$mol_text_code = $mol_text_code; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { rem, px } = $mol_style_unit; - $mol_style_define($mol_text_code, { - whiteSpace: 'pre-wrap', - font: { - family: 'monospace', - }, - Rows: { - padding: $mol_gap.text, - }, - Row: { - font: { - family: 'inherit', - }, - }, - Copy: { - alignSelf: 'flex-start', - justifySelf: 'flex-start', - }, - '@': { - 'mol_text_code_sidebar_showed': { - true: { - $mol_text_code_line: { - margin: { - left: rem(1.75), - }, - }, - }, - }, - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_hotkey) = class $mol_hotkey extends ($.$mol_plugin) { - keydown(next){ - if(next !== undefined) return next; - return null; - } - event(){ - return {...(super.event()), "keydown": (next) => (this.keydown(next))}; - } - key(){ - return {}; - } - mod_ctrl(){ - return false; - } - mod_alt(){ - return false; - } - mod_shift(){ - return false; - } - }; - ($mol_mem(($.$mol_hotkey.prototype), "keydown")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_hotkey extends $.$mol_hotkey { - key() { - return super.key(); - } - keydown(event) { - if (!event) - return; - if (event.defaultPrevented) - return; - let name = $mol_keyboard_code[event.keyCode]; - if (this.mod_ctrl() !== (event.ctrlKey || event.metaKey)) - return; - if (this.mod_alt() !== event.altKey) - return; - if (this.mod_shift() !== event.shiftKey) - return; - const handle = this.key()[name]; - if (handle) - handle(event); - } - } - $$.$mol_hotkey = $mol_hotkey; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_string) = class $mol_string extends ($.$mol_view) { - selection_watcher(){ - return null; - } - error_report(){ - return null; - } - disabled(){ - return false; - } - value(next){ - if(next !== undefined) return next; - return ""; - } - value_changed(next){ - return (this.value(next)); - } - hint(){ - return ""; - } - hint_visible(){ - return (this.hint()); - } - spellcheck(){ - return true; - } - autocomplete_native(){ - return ""; - } - selection_end(){ - return 0; - } - selection_start(){ - return 0; - } - keyboard(){ - return "text"; - } - enter(){ - return "go"; - } - length_max(){ - return +Infinity; - } - type(next){ - if(next !== undefined) return next; - return "text"; - } - event_change(next){ - if(next !== undefined) return next; - return null; - } - submit_with_ctrl(){ - return false; - } - submit(next){ - if(next !== undefined) return next; - return null; - } - Submit(){ - const obj = new this.$.$mol_hotkey(); - (obj.mod_ctrl) = () => ((this.submit_with_ctrl())); - (obj.key) = () => ({"enter": (next) => (this.submit(next))}); - return obj; - } - dom_name(){ - return "input"; - } - enabled(){ - return true; - } - minimal_height(){ - return 40; - } - autocomplete(){ - return false; - } - selection(next){ - if(next !== undefined) return next; - return [0, 0]; - } - auto(){ - return [(this.selection_watcher()), (this.error_report())]; - } - field(){ - return { - ...(super.field()), - "disabled": (this.disabled()), - "value": (this.value_changed()), - "placeholder": (this.hint_visible()), - "spellcheck": (this.spellcheck()), - "autocomplete": (this.autocomplete_native()), - "selectionEnd": (this.selection_end()), - "selectionStart": (this.selection_start()), - "inputMode": (this.keyboard()), - "enterkeyhint": (this.enter()) - }; - } - attr(){ - return { - ...(super.attr()), - "maxlength": (this.length_max()), - "type": (this.type()) - }; - } - event(){ - return {...(super.event()), "input": (next) => (this.event_change(next))}; - } - plugins(){ - return [(this.Submit())]; - } - }; - ($mol_mem(($.$mol_string.prototype), "value")); - ($mol_mem(($.$mol_string.prototype), "type")); - ($mol_mem(($.$mol_string.prototype), "event_change")); - ($mol_mem(($.$mol_string.prototype), "submit")); - ($mol_mem(($.$mol_string.prototype), "Submit")); - ($mol_mem(($.$mol_string.prototype), "selection")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_string extends $.$mol_string { - event_change(next) { - if (!next) - return; - const el = next.target; - const from = el.selectionStart; - const to = el.selectionEnd; - try { - el.value = this.value_changed(el.value); - } - catch (error) { - const el = this.dom_node(); - if (error instanceof Error) { - el.setCustomValidity(error.message); - el.reportValidity(); - } - $mol_fail_hidden(error); - } - if (to === null) - return; - el.selectionEnd = to; - el.selectionStart = from; - this.selection_change(next); - } - error_report() { - try { - if (this.focused()) - this.value(); - } - catch (error) { - const el = this.dom_node(); - if (error instanceof Error) { - el.setCustomValidity(error.message); - el.reportValidity(); - } - } - } - hint_visible() { - return (this.enabled() ? this.hint() : '') || ' '; - } - disabled() { - return !this.enabled(); - } - autocomplete_native() { - return this.autocomplete() ? 'on' : 'off'; - } - selection_watcher() { - return new $mol_dom_listener(this.$.$mol_dom_context.document, 'selectionchange', $mol_wire_async(event => this.selection_change(event))); - } - selection_change(event) { - const el = this.dom_node(); - if (el !== this.$.$mol_dom_context.document.activeElement) - return; - const [from, to] = this.selection([ - el.selectionStart, - el.selectionEnd, - ]); - el.selectionEnd = to; - el.selectionStart = from; - if (to !== from && el.selectionEnd === el.selectionStart) { - el.selectionEnd = to; - } - } - selection_start() { - const el = this.dom_node(); - if (el.selectionStart === null) - return undefined; - return this.selection()[0]; - } - selection_end() { - const el = this.dom_node(); - if (el.selectionEnd === null) - return undefined; - return this.selection()[1]; - } - } - __decorate([ - $mol_action - ], $mol_string.prototype, "event_change", null); - __decorate([ - $mol_mem - ], $mol_string.prototype, "error_report", null); - __decorate([ - $mol_mem - ], $mol_string.prototype, "selection_watcher", null); - $$.$mol_string = $mol_string; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/string/string.view.css", "[mol_string] {\n\tbox-sizing: border-box;\n\toutline-offset: 0;\n\tborder: none;\n\tborder-radius: var(--mol_gap_round);\n\twhite-space: pre-line;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tpadding: var(--mol_gap_text);\n\ttext-align: left;\n\tposition: relative;\n\tfont: inherit;\n\tflex: 1 1 auto;\n\tbackground: transparent;\n\tmin-width: 0;\n\tcolor: inherit;\n\tbackground: var(--mol_theme_field);\n}\n\n[mol_string]:disabled:not(:placeholder-shown) {\n\tbackground-color: transparent;\n\tcolor: var(--mol_theme_text);\n}\n\n[mol_string]:where(:not(:disabled)) {\n\tbox-shadow: inset 0 0 0 1px var(--mol_theme_line);\n}\n\n[mol_string]:where(:not(:disabled)):hover {\n\tbox-shadow: inset 0 0 0 2px var(--mol_theme_line);\n\tz-index: var(--mol_layer_hover);\n}\n\n[mol_string]:focus {\n\toutline: none;\n\tz-index: var(--mol_layer_focus);\n\tcolor: var(--mol_theme_text);\n\tbox-shadow: inset 0 0 0 1px var(--mol_theme_focus);\n}\n\n[mol_string]::placeholder {\n\tcolor: var(--mol_theme_shade);\n}\n\n[mol_string]::-ms-clear {\n\tdisplay: none;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_textarea) = class $mol_textarea extends ($.$mol_stack) { - clickable(next){ - if(next !== undefined) return next; - return false; - } - sidebar_showed(){ - return false; - } - press(next){ - if(next !== undefined) return next; - return null; - } - hover(next){ - if(next !== undefined) return next; - return null; - } - value(next){ - if(next !== undefined) return next; - return ""; - } - hint(){ - return " "; - } - enabled(){ - return true; - } - spellcheck(){ - return true; - } - length_max(){ - return +Infinity; - } - selection(next){ - if(next !== undefined) return next; - return []; - } - bring(){ - return (this.Edit().bring()); - } - submit(next){ - if(next !== undefined) return next; - return null; - } - submit_with_ctrl(){ - return true; - } - Edit(){ - const obj = new this.$.$mol_textarea_edit(); - (obj.value) = (next) => ((this.value(next))); - (obj.hint) = () => ((this.hint())); - (obj.enabled) = () => ((this.enabled())); - (obj.spellcheck) = () => ((this.spellcheck())); - (obj.length_max) = () => ((this.length_max())); - (obj.selection) = (next) => ((this.selection(next))); - (obj.submit) = (next) => ((this.submit(next))); - (obj.submit_with_ctrl) = () => ((this.submit_with_ctrl())); - return obj; - } - row_numb(id){ - return 0; - } - highlight(){ - return ""; - } - syntax(){ - const obj = new this.$.$mol_syntax2(); - return obj; - } - View(){ - const obj = new this.$.$mol_text_code(); - (obj.text) = () => ((this.value())); - (obj.render_visible_only) = () => (false); - (obj.row_numb) = (id) => ((this.row_numb(id))); - (obj.sidebar_showed) = () => ((this.sidebar_showed())); - (obj.highlight) = () => ((this.highlight())); - (obj.syntax) = () => ((this.syntax())); - return obj; - } - attr(){ - return { - ...(super.attr()), - "mol_textarea_clickable": (this.clickable()), - "mol_textarea_sidebar_showed": (this.sidebar_showed()) - }; - } - event(){ - return {"keydown": (next) => (this.press(next)), "pointermove": (next) => (this.hover(next))}; - } - sub(){ - return [(this.Edit()), (this.View())]; - } - symbols_alt(){ - return { - "comma": "<", - "period": ">", - "dash": "−", - "equals": "≈", - "graveAccent": "́", - "forwardSlash": "÷", - "E": "€", - "V": "✔", - "X": "×", - "C": "©", - "P": "§", - "H": "₽", - "key0": "°", - "key8": "•", - "key2": "@", - "key3": "#", - "key4": "$", - "key6": "^", - "key7": "&", - "bracketOpen": "[", - "bracketClose": "]", - "slashBack": "|" - }; - } - symbols_alt_ctrl(){ - return {"space": " "}; - } - symbols_alt_shift(){ - return { - "V": "✅", - "X": "❌", - "O": "⭕", - "key1": "❗", - "key4": "💲", - "key7": "❓", - "comma": "«", - "period": "»", - "semicolon": "“", - "quoteSingle": "”", - "dash": "—", - "equals": "≠", - "graveAccent": "̱", - "bracketOpen": "{", - "bracketClose": "}" - }; - } - }; - ($mol_mem(($.$mol_textarea.prototype), "clickable")); - ($mol_mem(($.$mol_textarea.prototype), "press")); - ($mol_mem(($.$mol_textarea.prototype), "hover")); - ($mol_mem(($.$mol_textarea.prototype), "value")); - ($mol_mem(($.$mol_textarea.prototype), "selection")); - ($mol_mem(($.$mol_textarea.prototype), "submit")); - ($mol_mem(($.$mol_textarea.prototype), "Edit")); - ($mol_mem(($.$mol_textarea.prototype), "syntax")); - ($mol_mem(($.$mol_textarea.prototype), "View")); - ($.$mol_textarea_edit) = class $mol_textarea_edit extends ($.$mol_string) { - dom_name(){ - return "textarea"; - } - enter(){ - return "enter"; - } - field(){ - return {...(super.field()), "scrollTop": 0}; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_textarea extends $.$mol_textarea { - indent_inc() { - let text = this.value(); - let [from, to] = this.selection(); - const rows = text.split('\n'); - let start = 0; - for (let i = 0; i < rows.length; ++i) { - let end = start + rows[i].length; - if (end >= from && start <= to) { - if (to === from || start !== to) { - rows[i] = '\t' + rows[i]; - to += 1; - end += 1; - } - } - start = end + 1; - } - this.value(rows.join('\n')); - this.selection([from + 1, to]); - } - indent_dec() { - let text = this.value(); - let [from, to] = this.selection(); - const rows = text.split('\n'); - let start = 0; - for (let i = 0; i < rows.length; ++i) { - const end = start + rows[i].length; - if (end >= from && start <= to && rows[i].startsWith('\t')) { - rows[i] = rows[i].slice(1); - to -= 1; - if (start < from) - from -= 1; - } - start = end + 1; - } - this.value(rows.join('\n')); - this.selection([from, to]); - } - symbol_insert(event) { - const symbol = event.shiftKey - ? this.symbols_alt_shift()[$mol_keyboard_code[event.keyCode]] - : event.ctrlKey - ? this.symbols_alt_ctrl()[$mol_keyboard_code[event.keyCode]] - : this.symbols_alt()[$mol_keyboard_code[event.keyCode]]; - if (!symbol) - return; - event.preventDefault(); - document.execCommand('insertText', false, symbol); - } - clickable(next) { - if (!this.enabled()) - return true; - return next ?? false; - } - hover(event) { - this.clickable(event.ctrlKey); - } - press(event) { - if (event.altKey) { - this.symbol_insert(event); - } - else { - switch (event.keyCode) { - case !event.shiftKey && $mol_keyboard_code.tab: - this.indent_inc(); - break; - case event.shiftKey && $mol_keyboard_code.tab: - this.indent_dec(); - break; - default: return; - } - event.preventDefault(); - } - } - row_numb(index) { - return index; - } - syntax() { - return this.$.$mol_syntax2_md_code; - } - } - __decorate([ - $mol_mem - ], $mol_textarea.prototype, "clickable", null); - $$.$mol_textarea = $mol_textarea; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/textarea/textarea.view.css", "[mol_textarea] {\n\tflex: 1 0 auto;\n\tflex-direction: column;\n\tvertical-align: top;\n\tmin-height: max-content;\n\twhite-space: pre-wrap;\n\tword-break: break-word;\n\tborder-radius: var(--mol_gap_round);\n\tfont-family: monospace;\n\tposition: relative;\n\ttab-size: 4;\n}\n\n[mol_textarea_view] {\n\tpointer-events: none;\n\twhite-space: inherit;\n\tfont-family: inherit;\n\ttab-size: inherit;\n\tuser-select: none;\n}\n\n[mol_textarea_view_copy] {\n\tpointer-events: all;\n}\n\n[mol_textarea_clickable] > [mol_textarea_view] {\n\tpointer-events: all;\n\tuser-select: auto;\n}\n\n[mol_textarea_clickable] > [mol_textarea_edit] {\n\tuser-select: none;\n}\n\n[mol_textarea_edit] {\n\tfont-family: inherit;\n\tpadding: var(--mol_gap_text);\n\tcolor: transparent !important;\n\tcaret-color: var(--mol_theme_text);\n\tresize: none;\n\ttext-align: inherit;\n\twhite-space: inherit;\n\tborder-radius: inherit;\n\toverflow-anchor: none;\n\tposition: absolute;\n\theight: 100%;\n\twidth: 100%;\n\ttab-size: inherit;\n}\n\n[mol_textarea_sidebar_showed] [mol_textarea_edit] {\n\tleft: 1.75rem;\n\twidth: calc( 100% - 1.75rem );\n}\n\n[mol_textarea_edit]:hover + [mol_textarea_view] {\n\tz-index: var(--mol_layer_hover);\n}\n\n[mol_textarea_edit]:focus + [mol_textarea_view] {\n\tz-index: var(--mol_layer_focus);\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_page) = class $mol_page extends ($.$mol_view) { - tabindex(){ - return -1; - } - Logo(){ - return null; - } - title_content(){ - return [(this.Logo()), (this.title())]; - } - Title(){ - const obj = new this.$.$mol_view(); - (obj.dom_name) = () => ("h1"); - (obj.sub) = () => ((this.title_content())); - return obj; - } - tools(){ - return []; - } - Tools(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.tools())); - return obj; - } - head(){ - return [(this.Title()), (this.Tools())]; - } - Head(){ - const obj = new this.$.$mol_view(); - (obj.minimal_height) = () => (64); - (obj.dom_name) = () => ("header"); - (obj.sub) = () => ((this.head())); - return obj; - } - body_scroll_top(next){ - return (this.Body().scroll_top(next)); - } - body(){ - return []; - } - Body_content(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.body())); - return obj; - } - body_content(){ - return [(this.Body_content())]; - } - Body(){ - const obj = new this.$.$mol_scroll(); - (obj.sub) = () => ((this.body_content())); - return obj; - } - foot(){ - return []; - } - Foot(){ - const obj = new this.$.$mol_view(); - (obj.dom_name) = () => ("footer"); - (obj.sub) = () => ((this.foot())); - return obj; - } - dom_name(){ - return "article"; - } - attr(){ - return {...(super.attr()), "tabIndex": (this.tabindex())}; - } - sub(){ - return [ - (this.Head()), - (this.Body()), - (this.Foot()) - ]; - } - }; - ($mol_mem(($.$mol_page.prototype), "Title")); - ($mol_mem(($.$mol_page.prototype), "Tools")); - ($mol_mem(($.$mol_page.prototype), "Head")); - ($mol_mem(($.$mol_page.prototype), "Body_content")); - ($mol_mem(($.$mol_page.prototype), "Body")); - ($mol_mem(($.$mol_page.prototype), "Foot")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - const { per, rem } = $mol_style_unit; - const { hsla, blur } = $mol_style_func; - $mol_style_define($mol_page, { - display: 'flex', - flex: { - basis: 'auto', - direction: 'column', - }, - position: 'relative', - alignSelf: 'stretch', - maxWidth: per(100), - maxHeight: per(100), - boxSizing: 'border-box', - color: $mol_theme.text, - ':focus': { - outline: 'none', - }, - Head: { - display: 'flex', - flexWrap: 'wrap', - justifyContent: 'flex-end', - flex: 'none', - position: 'relative', - margin: 0, - minHeight: rem(4), - padding: $mol_gap.block, - background: { - color: $mol_theme.card, - }, - border: { - radius: $mol_gap.round, - }, - box: { - shadow: [[0, `0.5rem`, `0.5rem`, `-0.5rem`, hsla(0, 0, 0, .25)]], - }, - zIndex: 2, - '@media': { - 'print': { - box: { - shadow: [[0, `1px`, 0, 0, hsla(0, 0, 0, .25)]], - }, - }, - }, - }, - Title: { - minHeight: rem(2), - margin: 0, - padding: $mol_gap.text, - gap: $mol_gap.text, - wordBreak: 'normal', - textShadow: '0 0', - font: { - size: 'inherit', - weight: 'normal', - }, - flex: { - grow: 1, - shrink: 1, - basis: 'auto', - }, - }, - Tools: { - flex: { - basis: 'auto', - grow: 0, - shrink: 1, - }, - display: 'flex', - justifyContent: 'flex-end', - alignItems: 'flex-start', - flexWrap: 'wrap', - '@media': { - 'print': { - display: 'none', - }, - }, - }, - Body: { - flex: { - grow: 1000, - shrink: 1, - basis: per(100), - }, - }, - Body_content: { - padding: $mol_gap.block, - flex: { - direction: 'column', - shrink: 1, - grow: 1, - }, - justify: { - self: 'stretch', - }, - }, - Foot: { - display: 'flex', - justifyContent: 'space-between', - flex: 'none', - margin: 0, - background: { - color: $mol_theme.card, - }, - border: { - radius: $mol_gap.round, - }, - box: { - shadow: [[0, `-0.5rem`, `0.5rem`, `-0.5rem`, hsla(0, 0, 0, .25)]], - }, - zIndex: 1, - padding: $mol_gap.block, - ':empty': { - display: 'none', - }, - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -/** - * @license - * Copyright 2010-2023 Three.js Authors - * SPDX-License-Identifier: MIT - */const t="158",e=0,n=1,i=2,r=1,a=2,s=3,o=0,l=1,c=100,h=0,u=1,d=2,p=0,f=1,m=2,g=3,_=4,v=5,x=301,M=302,y=306,S=1e3,E=1001,T=1002,b=1003,w=1005,A=1006,R=1008,C=1009,L=1012,P=1013,U=1014,D=1015,I=1016,N=1020,O=1023,F=1026,z=1027,B=33776,H=33777,G=33778,V=33779,k=36492,W=3001,X="",j="srgb",Y="srgb-linear",q="display-p3",Z="display-p3-linear",K="linear",J="srgb",Q="rec709",tt="p3",et=7680,nt=35044,it="300 es",rt=1035,at=2e3,st=2001;class ot{addEventListener(t,e){void 0===this._listeners&&(this._listeners={});const n=this._listeners;void 0===n[t]&&(n[t]=[]),-1===n[t].indexOf(e)&&n[t].push(e)}hasEventListener(t,e){if(void 0===this._listeners)return!1;const n=this._listeners;return void 0!==n[t]&&-1!==n[t].indexOf(e)}removeEventListener(t,e){if(void 0===this._listeners)return;const n=this._listeners[t];if(void 0!==n){const t=n.indexOf(e);-1!==t&&n.splice(t,1)}}dispatchEvent(t){if(void 0===this._listeners)return;const e=this._listeners[t.type];if(void 0!==e){t.target=this;const n=e.slice(0);for(let e=0,i=n.length;e>8&255]+lt[t>>16&255]+lt[t>>24&255]+"-"+lt[255&e]+lt[e>>8&255]+"-"+lt[e>>16&15|64]+lt[e>>24&255]+"-"+lt[63&n|128]+lt[n>>8&255]+"-"+lt[n>>16&255]+lt[n>>24&255]+lt[255&i]+lt[i>>8&255]+lt[i>>16&255]+lt[i>>24&255]).toLowerCase()}function pt(t,e,n){return Math.max(e,Math.min(n,t))}function ft(t,e){return(t%e+e)%e}function mt(t,e,n){return(1-n)*t+n*e}function gt(t){return 0==(t&t-1)&&0!==t}function _t(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function vt(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return t/4294967295;case Uint16Array:return t/65535;case Uint8Array:return t/255;case Int32Array:return Math.max(t/2147483647,-1);case Int16Array:return Math.max(t/32767,-1);case Int8Array:return Math.max(t/127,-1);default:throw new Error("Invalid component type.")}}function xt(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return Math.round(4294967295*t);case Uint16Array:return Math.round(65535*t);case Uint8Array:return Math.round(255*t);case Int32Array:return Math.round(2147483647*t);case Int16Array:return Math.round(32767*t);case Int8Array:return Math.round(127*t);default:throw new Error("Invalid component type.")}}const Mt={DEG2RAD:ht,RAD2DEG:ut,generateUUID:dt,clamp:pt,euclideanModulo:ft,mapLinear:function(t,e,n,i,r){return i+(t-e)*(r-i)/(n-e)},inverseLerp:function(t,e,n){return t!==e?(n-t)/(e-t):0},lerp:mt,damp:function(t,e,n,i){return mt(t,e,1-Math.exp(-n*i))},pingpong:function(t,e=1){return e-Math.abs(ft(t,2*e)-e)},smoothstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*(3-2*t)},smootherstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*t*(t*(6*t-15)+10)},randInt:function(t,e){return t+Math.floor(Math.random()*(e-t+1))},randFloat:function(t,e){return t+Math.random()*(e-t)},randFloatSpread:function(t){return t*(.5-Math.random())},seededRandom:function(t){void 0!==t&&(ct=t);let e=ct+=1831565813;return e=Math.imul(e^e>>>15,1|e),e^=e+Math.imul(e^e>>>7,61|e),((e^e>>>14)>>>0)/4294967296},degToRad:function(t){return t*ht},radToDeg:function(t){return t*ut},isPowerOfTwo:gt,ceilPowerOfTwo:function(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},floorPowerOfTwo:_t,setQuaternionFromProperEuler:function(t,e,n,i,r){const a=Math.cos,s=Math.sin,o=a(n/2),l=s(n/2),c=a((e+i)/2),h=s((e+i)/2),u=a((e-i)/2),d=s((e-i)/2),p=a((i-e)/2),f=s((i-e)/2);switch(r){case"XYX":t.set(o*h,l*u,l*d,o*c);break;case"YZY":t.set(l*d,o*h,l*u,o*c);break;case"ZXZ":t.set(l*u,l*d,o*h,o*c);break;case"XZX":t.set(o*h,l*f,l*p,o*c);break;case"YXY":t.set(l*p,o*h,l*f,o*c);break;case"ZYZ":t.set(l*f,l*p,o*h,o*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}},normalize:xt,denormalize:vt};class yt{constructor(t=0,e=0){yt.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(pt(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const n=Math.cos(e),i=Math.sin(e),r=this.x-t.x,a=this.y-t.y;return this.x=r*n-a*i+t.x,this.y=r*i+a*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class St{constructor(t,e,n,i,r,a,s,o,l){St.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==t&&this.set(t,e,n,i,r,a,s,o,l)}set(t,e,n,i,r,a,s,o,l){const c=this.elements;return c[0]=t,c[1]=i,c[2]=s,c[3]=e,c[4]=r,c[5]=o,c[6]=n,c[7]=a,c[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,i=e.elements,r=this.elements,a=n[0],s=n[3],o=n[6],l=n[1],c=n[4],h=n[7],u=n[2],d=n[5],p=n[8],f=i[0],m=i[3],g=i[6],_=i[1],v=i[4],x=i[7],M=i[2],y=i[5],S=i[8];return r[0]=a*f+s*_+o*M,r[3]=a*m+s*v+o*y,r[6]=a*g+s*x+o*S,r[1]=l*f+c*_+h*M,r[4]=l*m+c*v+h*y,r[7]=l*g+c*x+h*S,r[2]=u*f+d*_+p*M,r[5]=u*m+d*v+p*y,r[8]=u*g+d*x+p*S,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],s=t[5],o=t[6],l=t[7],c=t[8];return e*a*c-e*s*l-n*r*c+n*s*o+i*r*l-i*a*o}invert(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],h=c*a-s*l,u=s*o-c*r,d=l*r-a*o,p=e*h+n*u+i*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);const f=1/p;return t[0]=h*f,t[1]=(i*l-c*n)*f,t[2]=(s*n-i*a)*f,t[3]=u*f,t[4]=(c*e-i*o)*f,t[5]=(i*r-s*e)*f,t[6]=d*f,t[7]=(n*o-l*e)*f,t[8]=(a*e-n*r)*f,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,i,r,a,s){const o=Math.cos(r),l=Math.sin(r);return this.set(n*o,n*l,-n*(o*a+l*s)+a+t,-i*l,i*o,-i*(-l*a+o*s)+s+e,0,0,1),this}scale(t,e){return this.premultiply(Et.makeScale(t,e)),this}rotate(t){return this.premultiply(Et.makeRotation(-t)),this}translate(t,e){return this.premultiply(Et.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,n=t.elements;for(let t=0;t<9;t++)if(e[t]!==n[t])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return(new this.constructor).fromArray(this.elements)}}const Et=new St;function Tt(t){for(let e=t.length-1;e>=0;--e)if(t[e]>=65535)return!0;return!1}function bt(t){return document.createElementNS("http://www.w3.org/1999/xhtml",t)}function wt(){const t=bt("canvas");return t.style.display="block",t}const At={};function Rt(t){t in At||(At[t]=!0,console.warn(t))}const Ct=(new St).set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Lt=(new St).set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),Pt={[Y]:{transfer:K,primaries:Q,toReference:t=>t,fromReference:t=>t},[j]:{transfer:J,primaries:Q,toReference:t=>t.convertSRGBToLinear(),fromReference:t=>t.convertLinearToSRGB()},[Z]:{transfer:K,primaries:tt,toReference:t=>t.applyMatrix3(Lt),fromReference:t=>t.applyMatrix3(Ct)},[q]:{transfer:J,primaries:tt,toReference:t=>t.convertSRGBToLinear().applyMatrix3(Lt),fromReference:t=>t.applyMatrix3(Ct).convertLinearToSRGB()}},Ut=new Set([Y,Z]),Dt={enabled:!0,_workingColorSpace:Y,get legacyMode(){return console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),!this.enabled},set legacyMode(t){console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),this.enabled=!t},get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(t){if(!Ut.has(t))throw new Error(`Unsupported working color space, "${t}".`);this._workingColorSpace=t},convert:function(t,e,n){if(!1===this.enabled||e===n||!e||!n)return t;const i=Pt[e].toReference;return(0,Pt[n].fromReference)(i(t))},fromWorkingColorSpace:function(t,e){return this.convert(t,this._workingColorSpace,e)},toWorkingColorSpace:function(t,e){return this.convert(t,e,this._workingColorSpace)},getPrimaries:function(t){return Pt[t].primaries},getTransfer:function(t){return t===X?K:Pt[t].transfer}};function It(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function Nt(t){return t<.0031308?12.92*t:1.055*Math.pow(t,.41666)-.055}let Ot;class Ft{static getDataURL(t){if(/^data:/i.test(t.src))return t.src;if("undefined"==typeof HTMLCanvasElement)return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{void 0===Ot&&(Ot=bt("canvas")),Ot.width=t.width,Ot.height=t.height;const n=Ot.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),e=Ot}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(t){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){const e=bt("canvas");e.width=t.width,e.height=t.height;const n=e.getContext("2d");n.drawImage(t,0,0,t.width,t.height);const i=n.getImageData(0,0,t.width,t.height),r=i.data;for(let t=0;t0&&(n.userData=this.userData),e||(t.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(300!==this.mapping)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case S:t.x=t.x-Math.floor(t.x);break;case E:t.x=t.x<0?0:1;break;case T:1===Math.abs(Math.floor(t.x)%2)?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x)}if(t.y<0||t.y>1)switch(this.wrapT){case S:t.y=t.y-Math.floor(t.y);break;case E:t.y=t.y<0?0:1;break;case T:1===Math.abs(Math.floor(t.y)%2)?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y)}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){!0===t&&(this.version++,this.source.needsUpdate=!0)}get encoding(){return Rt("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace===j?W:3e3}set encoding(t){Rt("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace=t===W?j:X}}Vt.DEFAULT_IMAGE=null,Vt.DEFAULT_MAPPING=300,Vt.DEFAULT_ANISOTROPY=1;class kt{constructor(t=0,e=0,n=0,i=1){kt.prototype.isVector4=!0,this.x=t,this.y=e,this.z=n,this.w=i}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=void 0!==t.w?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,n=this.y,i=this.z,r=this.w,a=t.elements;return this.x=a[0]*e+a[4]*n+a[8]*i+a[12]*r,this.y=a[1]*e+a[5]*n+a[9]*i+a[13]*r,this.z=a[2]*e+a[6]*n+a[10]*i+a[14]*r,this.w=a[3]*e+a[7]*n+a[11]*i+a[15]*r,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,i,r;const a=.01,s=.1,o=t.elements,l=o[0],c=o[4],h=o[8],u=o[1],d=o[5],p=o[9],f=o[2],m=o[6],g=o[10];if(Math.abs(c-u)o&&t>_?t_?o=0?1:-1,i=1-e*e;if(i>Number.EPSILON){const r=Math.sqrt(i),a=Math.atan2(r,e*n);t=Math.sin(t*a)/r,s=Math.sin(s*a)/r}const r=s*n;if(o=o*t+u*r,l=l*t+d*r,c=c*t+p*r,h=h*t+f*r,t===1-s){const t=1/Math.sqrt(o*o+l*l+c*c+h*h);o*=t,l*=t,c*=t,h*=t}}t[e]=o,t[e+1]=l,t[e+2]=c,t[e+3]=h}static multiplyQuaternionsFlat(t,e,n,i,r,a){const s=n[i],o=n[i+1],l=n[i+2],c=n[i+3],h=r[a],u=r[a+1],d=r[a+2],p=r[a+3];return t[e]=s*p+c*h+o*d-l*u,t[e+1]=o*p+c*u+l*h-s*d,t[e+2]=l*p+c*d+s*u-o*h,t[e+3]=c*p-s*h-o*u-l*d,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e){const n=t._x,i=t._y,r=t._z,a=t._order,s=Math.cos,o=Math.sin,l=s(n/2),c=s(i/2),h=s(r/2),u=o(n/2),d=o(i/2),p=o(r/2);switch(a){case"XYZ":this._x=u*c*h+l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h-u*d*p;break;case"YXZ":this._x=u*c*h+l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h+u*d*p;break;case"ZXY":this._x=u*c*h-l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h-u*d*p;break;case"ZYX":this._x=u*c*h-l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h+u*d*p;break;case"YZX":this._x=u*c*h+l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h-u*d*p;break;case"XZY":this._x=u*c*h-l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h+u*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return!1!==e&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,n=e[0],i=e[4],r=e[8],a=e[1],s=e[5],o=e[9],l=e[2],c=e[6],h=e[10],u=n+s+h;if(u>0){const t=.5/Math.sqrt(u+1);this._w=.25/t,this._x=(c-o)*t,this._y=(r-l)*t,this._z=(a-i)*t}else if(n>s&&n>h){const t=2*Math.sqrt(1+n-s-h);this._w=(c-o)/t,this._x=.25*t,this._y=(i+a)/t,this._z=(r+l)/t}else if(s>h){const t=2*Math.sqrt(1+s-n-h);this._w=(r-l)/t,this._x=(i+a)/t,this._y=.25*t,this._z=(o+c)/t}else{const t=2*Math.sqrt(1+h-n-s);this._w=(a-i)/t,this._x=(r+l)/t,this._y=(o+c)/t,this._z=.25*t}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return nMath.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(pt(this.dot(t),-1,1)))}rotateTowards(t,e){const n=this.angleTo(t);if(0===n)return this;const i=Math.min(1,e/n);return this.slerp(t,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return 0===t?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const n=t._x,i=t._y,r=t._z,a=t._w,s=e._x,o=e._y,l=e._z,c=e._w;return this._x=n*c+a*s+i*l-r*o,this._y=i*c+a*o+r*s-n*l,this._z=r*c+a*l+n*o-i*s,this._w=a*c-n*s-i*o-r*l,this._onChangeCallback(),this}slerp(t,e){if(0===e)return this;if(1===e)return this.copy(t);const n=this._x,i=this._y,r=this._z,a=this._w;let s=a*t._w+n*t._x+i*t._y+r*t._z;if(s<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,s=-s):this.copy(t),s>=1)return this._w=a,this._x=n,this._y=i,this._z=r,this;const o=1-s*s;if(o<=Number.EPSILON){const t=1-e;return this._w=t*a+e*this._w,this._x=t*n+e*this._x,this._y=t*i+e*this._y,this._z=t*r+e*this._z,this.normalize(),this._onChangeCallback(),this}const l=Math.sqrt(o),c=Math.atan2(l,s),h=Math.sin((1-e)*c)/l,u=Math.sin(e*c)/l;return this._w=a*h+this._w*u,this._x=n*h+this._x*u,this._y=i*h+this._y*u,this._z=r*h+this._z*u,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){const t=Math.random(),e=Math.sqrt(1-t),n=Math.sqrt(t),i=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(e*Math.cos(i),n*Math.sin(r),n*Math.cos(r),e*Math.sin(i))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class Zt{constructor(t=0,e=0,n=0){Zt.prototype.isVector3=!0,this.x=t,this.y=e,this.z=n}set(t,e,n){return void 0===n&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(Jt.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(Jt.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6]*i,this.y=r[1]*e+r[4]*n+r[7]*i,this.z=r[2]*e+r[5]*n+r[8]*i,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,n=this.y,i=this.z,r=t.elements,a=1/(r[3]*e+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*e+r[4]*n+r[8]*i+r[12])*a,this.y=(r[1]*e+r[5]*n+r[9]*i+r[13])*a,this.z=(r[2]*e+r[6]*n+r[10]*i+r[14])*a,this}applyQuaternion(t){const e=this.x,n=this.y,i=this.z,r=t.x,a=t.y,s=t.z,o=t.w,l=2*(a*i-s*n),c=2*(s*e-r*i),h=2*(r*n-a*e);return this.x=e+o*l+a*h-s*c,this.y=n+o*c+s*l-r*h,this.z=i+o*h+r*c-a*l,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[4]*n+r[8]*i,this.y=r[1]*e+r[5]*n+r[9]*i,this.z=r[2]*e+r[6]*n+r[10]*i,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const n=t.x,i=t.y,r=t.z,a=e.x,s=e.y,o=e.z;return this.x=i*o-r*s,this.y=r*a-n*o,this.z=n*s-i*a,this}projectOnVector(t){const e=t.lengthSq();if(0===e)return this.set(0,0,0);const n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return Kt.copy(this).projectOnVector(t),this.sub(Kt)}reflect(t){return this.sub(Kt.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(pt(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){const i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,4*e)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,3*e)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=2*(Math.random()-.5),e=Math.random()*Math.PI*2,n=Math.sqrt(1-t**2);return this.x=n*Math.cos(e),this.y=n*Math.sin(e),this.z=t,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Kt=new Zt,Jt=new qt;class Qt{constructor(t=new Zt(1/0,1/0,1/0),e=new Zt(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,n=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)}intersectsSphere(t){return this.clampPoint(t.center,te),te.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(le),ce.subVectors(this.max,le),ne.subVectors(t.a,le),ie.subVectors(t.b,le),re.subVectors(t.c,le),ae.subVectors(ie,ne),se.subVectors(re,ie),oe.subVectors(ne,re);let e=[0,-ae.z,ae.y,0,-se.z,se.y,0,-oe.z,oe.y,ae.z,0,-ae.x,se.z,0,-se.x,oe.z,0,-oe.x,-ae.y,ae.x,0,-se.y,se.x,0,-oe.y,oe.x,0];return!!de(e,ne,ie,re,ce)&&(e=[1,0,0,0,1,0,0,0,1],!!de(e,ne,ie,re,ce)&&(he.crossVectors(ae,se),e=[he.x,he.y,he.z],de(e,ne,ie,re,ce)))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,te).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=.5*this.getSize(te).length()),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()||($t[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),$t[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),$t[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),$t[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),$t[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),$t[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),$t[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),$t[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints($t)),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}const $t=[new Zt,new Zt,new Zt,new Zt,new Zt,new Zt,new Zt,new Zt],te=new Zt,ee=new Qt,ne=new Zt,ie=new Zt,re=new Zt,ae=new Zt,se=new Zt,oe=new Zt,le=new Zt,ce=new Zt,he=new Zt,ue=new Zt;function de(t,e,n,i,r){for(let a=0,s=t.length-3;a<=s;a+=3){ue.fromArray(t,a);const s=r.x*Math.abs(ue.x)+r.y*Math.abs(ue.y)+r.z*Math.abs(ue.z),o=e.dot(ue),l=n.dot(ue),c=i.dot(ue);if(Math.max(-Math.max(o,l,c),Math.min(o,l,c))>s)return!1}return!0}const pe=new Qt,fe=new Zt,me=new Zt;class ge{constructor(t=new Zt,e=-1){this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const n=this.center;void 0!==e?n.copy(e):pe.setFromPoints(t).getCenter(n);let i=0;for(let e=0,r=t.length;ethis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;fe.subVectors(t,this.center);const e=fe.lengthSq();if(e>this.radius*this.radius){const t=Math.sqrt(e),n=.5*(t-this.radius);this.center.addScaledVector(fe,n/t),this.radius+=n}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(!0===this.center.equals(t.center)?this.radius=Math.max(this.radius,t.radius):(me.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(fe.copy(t.center).add(me)),this.expandByPoint(fe.copy(t.center).sub(me))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return(new this.constructor).copy(this)}}const _e=new Zt,ve=new Zt,xe=new Zt,Me=new Zt,ye=new Zt,Se=new Zt,Ee=new Zt;class Te{constructor(t=new Zt,e=new Zt(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,_e)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=_e.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(_e.copy(this.origin).addScaledVector(this.direction,e),_e.distanceToSquared(t))}distanceSqToSegment(t,e,n,i){ve.copy(t).add(e).multiplyScalar(.5),xe.copy(e).sub(t).normalize(),Me.copy(this.origin).sub(ve);const r=.5*t.distanceTo(e),a=-this.direction.dot(xe),s=Me.dot(this.direction),o=-Me.dot(xe),l=Me.lengthSq(),c=Math.abs(1-a*a);let h,u,d,p;if(c>0)if(h=a*o-s,u=a*s-o,p=r*c,h>=0)if(u>=-p)if(u<=p){const t=1/c;h*=t,u*=t,d=h*(h+a*u+2*s)+u*(a*h+u+2*o)+l}else u=r,h=Math.max(0,-(a*u+s)),d=-h*h+u*(u+2*o)+l;else u=-r,h=Math.max(0,-(a*u+s)),d=-h*h+u*(u+2*o)+l;else u<=-p?(h=Math.max(0,-(-a*r+s)),u=h>0?-r:Math.min(Math.max(-r,-o),r),d=-h*h+u*(u+2*o)+l):u<=p?(h=0,u=Math.min(Math.max(-r,-o),r),d=u*(u+2*o)+l):(h=Math.max(0,-(a*r+s)),u=h>0?r:Math.min(Math.max(-r,-o),r),d=-h*h+u*(u+2*o)+l);else u=a>0?-r:r,h=Math.max(0,-(a*u+s)),d=-h*h+u*(u+2*o)+l;return n&&n.copy(this.origin).addScaledVector(this.direction,h),i&&i.copy(ve).addScaledVector(xe,u),d}intersectSphere(t,e){_e.subVectors(t.center,this.origin);const n=_e.dot(this.direction),i=_e.dot(_e)-n*n,r=t.radius*t.radius;if(i>r)return null;const a=Math.sqrt(r-i),s=n-a,o=n+a;return o<0?null:s<0?this.at(o,e):this.at(s,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(0===e)return 0===t.distanceToPoint(this.origin)?0:null;const n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){const n=this.distanceToPlane(t);return null===n?null:this.at(n,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);if(0===e)return!0;return t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,i,r,a,s,o;const l=1/this.direction.x,c=1/this.direction.y,h=1/this.direction.z,u=this.origin;return l>=0?(n=(t.min.x-u.x)*l,i=(t.max.x-u.x)*l):(n=(t.max.x-u.x)*l,i=(t.min.x-u.x)*l),c>=0?(r=(t.min.y-u.y)*c,a=(t.max.y-u.y)*c):(r=(t.max.y-u.y)*c,a=(t.min.y-u.y)*c),n>a||r>i?null:((r>n||isNaN(n))&&(n=r),(a=0?(s=(t.min.z-u.z)*h,o=(t.max.z-u.z)*h):(s=(t.max.z-u.z)*h,o=(t.min.z-u.z)*h),n>o||s>i?null:((s>n||n!=n)&&(n=s),(o=0?n:i,e)))}intersectsBox(t){return null!==this.intersectBox(t,_e)}intersectTriangle(t,e,n,i,r){ye.subVectors(e,t),Se.subVectors(n,t),Ee.crossVectors(ye,Se);let a,s=this.direction.dot(Ee);if(s>0){if(i)return null;a=1}else{if(!(s<0))return null;a=-1,s=-s}Me.subVectors(this.origin,t);const o=a*this.direction.dot(Se.crossVectors(Me,Se));if(o<0)return null;const l=a*this.direction.dot(ye.cross(Me));if(l<0)return null;if(o+l>s)return null;const c=-a*Me.dot(Ee);return c<0?null:this.at(c/s,r)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}}class be{constructor(t,e,n,i,r,a,s,o,l,c,h,u,d,p,f,m){be.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==t&&this.set(t,e,n,i,r,a,s,o,l,c,h,u,d,p,f,m)}set(t,e,n,i,r,a,s,o,l,c,h,u,d,p,f,m){const g=this.elements;return g[0]=t,g[4]=e,g[8]=n,g[12]=i,g[1]=r,g[5]=a,g[9]=s,g[13]=o,g[2]=l,g[6]=c,g[10]=h,g[14]=u,g[3]=d,g[7]=p,g[11]=f,g[15]=m,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return(new be).fromArray(this.elements)}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){const e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,n=t.elements,i=1/we.setFromMatrixColumn(t,0).length(),r=1/we.setFromMatrixColumn(t,1).length(),a=1/we.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*r,e[5]=n[5]*r,e[6]=n[6]*r,e[7]=0,e[8]=n[8]*a,e[9]=n[9]*a,e[10]=n[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){const e=this.elements,n=t.x,i=t.y,r=t.z,a=Math.cos(n),s=Math.sin(n),o=Math.cos(i),l=Math.sin(i),c=Math.cos(r),h=Math.sin(r);if("XYZ"===t.order){const t=a*c,n=a*h,i=s*c,r=s*h;e[0]=o*c,e[4]=-o*h,e[8]=l,e[1]=n+i*l,e[5]=t-r*l,e[9]=-s*o,e[2]=r-t*l,e[6]=i+n*l,e[10]=a*o}else if("YXZ"===t.order){const t=o*c,n=o*h,i=l*c,r=l*h;e[0]=t+r*s,e[4]=i*s-n,e[8]=a*l,e[1]=a*h,e[5]=a*c,e[9]=-s,e[2]=n*s-i,e[6]=r+t*s,e[10]=a*o}else if("ZXY"===t.order){const t=o*c,n=o*h,i=l*c,r=l*h;e[0]=t-r*s,e[4]=-a*h,e[8]=i+n*s,e[1]=n+i*s,e[5]=a*c,e[9]=r-t*s,e[2]=-a*l,e[6]=s,e[10]=a*o}else if("ZYX"===t.order){const t=a*c,n=a*h,i=s*c,r=s*h;e[0]=o*c,e[4]=i*l-n,e[8]=t*l+r,e[1]=o*h,e[5]=r*l+t,e[9]=n*l-i,e[2]=-l,e[6]=s*o,e[10]=a*o}else if("YZX"===t.order){const t=a*o,n=a*l,i=s*o,r=s*l;e[0]=o*c,e[4]=r-t*h,e[8]=i*h+n,e[1]=h,e[5]=a*c,e[9]=-s*c,e[2]=-l*c,e[6]=n*h+i,e[10]=t-r*h}else if("XZY"===t.order){const t=a*o,n=a*l,i=s*o,r=s*l;e[0]=o*c,e[4]=-h,e[8]=l*c,e[1]=t*h+r,e[5]=a*c,e[9]=n*h-i,e[2]=i*h-n,e[6]=s*c,e[10]=r*h+t}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Re,t,Ce)}lookAt(t,e,n){const i=this.elements;return Ue.subVectors(t,e),0===Ue.lengthSq()&&(Ue.z=1),Ue.normalize(),Le.crossVectors(n,Ue),0===Le.lengthSq()&&(1===Math.abs(n.z)?Ue.x+=1e-4:Ue.z+=1e-4,Ue.normalize(),Le.crossVectors(n,Ue)),Le.normalize(),Pe.crossVectors(Ue,Le),i[0]=Le.x,i[4]=Pe.x,i[8]=Ue.x,i[1]=Le.y,i[5]=Pe.y,i[9]=Ue.y,i[2]=Le.z,i[6]=Pe.z,i[10]=Ue.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,i=e.elements,r=this.elements,a=n[0],s=n[4],o=n[8],l=n[12],c=n[1],h=n[5],u=n[9],d=n[13],p=n[2],f=n[6],m=n[10],g=n[14],_=n[3],v=n[7],x=n[11],M=n[15],y=i[0],S=i[4],E=i[8],T=i[12],b=i[1],w=i[5],A=i[9],R=i[13],C=i[2],L=i[6],P=i[10],U=i[14],D=i[3],I=i[7],N=i[11],O=i[15];return r[0]=a*y+s*b+o*C+l*D,r[4]=a*S+s*w+o*L+l*I,r[8]=a*E+s*A+o*P+l*N,r[12]=a*T+s*R+o*U+l*O,r[1]=c*y+h*b+u*C+d*D,r[5]=c*S+h*w+u*L+d*I,r[9]=c*E+h*A+u*P+d*N,r[13]=c*T+h*R+u*U+d*O,r[2]=p*y+f*b+m*C+g*D,r[6]=p*S+f*w+m*L+g*I,r[10]=p*E+f*A+m*P+g*N,r[14]=p*T+f*R+m*U+g*O,r[3]=_*y+v*b+x*C+M*D,r[7]=_*S+v*w+x*L+M*I,r[11]=_*E+v*A+x*P+M*N,r[15]=_*T+v*R+x*U+M*O,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[4],i=t[8],r=t[12],a=t[1],s=t[5],o=t[9],l=t[13],c=t[2],h=t[6],u=t[10],d=t[14];return t[3]*(+r*o*h-i*l*h-r*s*u+n*l*u+i*s*d-n*o*d)+t[7]*(+e*o*d-e*l*u+r*a*u-i*a*d+i*l*c-r*o*c)+t[11]*(+e*l*h-e*s*d-r*a*h+n*a*d+r*s*c-n*l*c)+t[15]*(-i*s*c-e*o*h+e*s*u+i*a*h-n*a*u+n*o*c)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,n){const i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this}invert(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],h=t[9],u=t[10],d=t[11],p=t[12],f=t[13],m=t[14],g=t[15],_=h*m*l-f*u*l+f*o*d-s*m*d-h*o*g+s*u*g,v=p*u*l-c*m*l-p*o*d+a*m*d+c*o*g-a*u*g,x=c*f*l-p*h*l+p*s*d-a*f*d-c*s*g+a*h*g,M=p*h*o-c*f*o-p*s*u+a*f*u+c*s*m-a*h*m,y=e*_+n*v+i*x+r*M;if(0===y)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const S=1/y;return t[0]=_*S,t[1]=(f*u*r-h*m*r-f*i*d+n*m*d+h*i*g-n*u*g)*S,t[2]=(s*m*r-f*o*r+f*i*l-n*m*l-s*i*g+n*o*g)*S,t[3]=(h*o*r-s*u*r-h*i*l+n*u*l+s*i*d-n*o*d)*S,t[4]=v*S,t[5]=(c*m*r-p*u*r+p*i*d-e*m*d-c*i*g+e*u*g)*S,t[6]=(p*o*r-a*m*r-p*i*l+e*m*l+a*i*g-e*o*g)*S,t[7]=(a*u*r-c*o*r+c*i*l-e*u*l-a*i*d+e*o*d)*S,t[8]=x*S,t[9]=(p*h*r-c*f*r-p*n*d+e*f*d+c*n*g-e*h*g)*S,t[10]=(a*f*r-p*s*r+p*n*l-e*f*l-a*n*g+e*s*g)*S,t[11]=(c*s*r-a*h*r-c*n*l+e*h*l+a*n*d-e*s*d)*S,t[12]=M*S,t[13]=(c*f*i-p*h*i+p*n*u-e*f*u-c*n*m+e*h*m)*S,t[14]=(p*s*i-a*f*i-p*n*o+e*f*o+a*n*m-e*s*m)*S,t[15]=(a*h*i-c*s*i+c*n*o-e*h*o-a*n*u+e*s*u)*S,this}scale(t){const e=this.elements,n=t.x,i=t.y,r=t.z;return e[0]*=n,e[4]*=i,e[8]*=r,e[1]*=n,e[5]*=i,e[9]*=r,e[2]*=n,e[6]*=i,e[10]*=r,e[3]*=n,e[7]*=i,e[11]*=r,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))}makeTranslation(t,e,n){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const n=Math.cos(e),i=Math.sin(e),r=1-n,a=t.x,s=t.y,o=t.z,l=r*a,c=r*s;return this.set(l*a+n,l*s-i*o,l*o+i*s,0,l*s+i*o,c*s+n,c*o-i*a,0,l*o-i*s,c*o+i*a,r*o*o+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,i,r,a){return this.set(1,n,r,0,t,1,a,0,e,i,1,0,0,0,0,1),this}compose(t,e,n){const i=this.elements,r=e._x,a=e._y,s=e._z,o=e._w,l=r+r,c=a+a,h=s+s,u=r*l,d=r*c,p=r*h,f=a*c,m=a*h,g=s*h,_=o*l,v=o*c,x=o*h,M=n.x,y=n.y,S=n.z;return i[0]=(1-(f+g))*M,i[1]=(d+x)*M,i[2]=(p-v)*M,i[3]=0,i[4]=(d-x)*y,i[5]=(1-(u+g))*y,i[6]=(m+_)*y,i[7]=0,i[8]=(p+v)*S,i[9]=(m-_)*S,i[10]=(1-(u+f))*S,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,n){const i=this.elements;let r=we.set(i[0],i[1],i[2]).length();const a=we.set(i[4],i[5],i[6]).length(),s=we.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),t.x=i[12],t.y=i[13],t.z=i[14],Ae.copy(this);const o=1/r,l=1/a,c=1/s;return Ae.elements[0]*=o,Ae.elements[1]*=o,Ae.elements[2]*=o,Ae.elements[4]*=l,Ae.elements[5]*=l,Ae.elements[6]*=l,Ae.elements[8]*=c,Ae.elements[9]*=c,Ae.elements[10]*=c,e.setFromRotationMatrix(Ae),n.x=r,n.y=a,n.z=s,this}makePerspective(t,e,n,i,r,a,s=2e3){const o=this.elements,l=2*r/(e-t),c=2*r/(n-i),h=(e+t)/(e-t),u=(n+i)/(n-i);let d,p;if(s===at)d=-(a+r)/(a-r),p=-2*a*r/(a-r);else{if(s!==st)throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+s);d=-a/(a-r),p=-a*r/(a-r)}return o[0]=l,o[4]=0,o[8]=h,o[12]=0,o[1]=0,o[5]=c,o[9]=u,o[13]=0,o[2]=0,o[6]=0,o[10]=d,o[14]=p,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(t,e,n,i,r,a,s=2e3){const o=this.elements,l=1/(e-t),c=1/(n-i),h=1/(a-r),u=(e+t)*l,d=(n+i)*c;let p,f;if(s===at)p=(a+r)*h,f=-2*h;else{if(s!==st)throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+s);p=r*h,f=-1*h}return o[0]=2*l,o[4]=0,o[8]=0,o[12]=-u,o[1]=0,o[5]=2*c,o[9]=0,o[13]=-d,o[2]=0,o[6]=0,o[10]=f,o[14]=-p,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(t){const e=this.elements,n=t.elements;for(let t=0;t<16;t++)if(e[t]!==n[t])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}}const we=new Zt,Ae=new be,Re=new Zt(0,0,0),Ce=new Zt(1,1,1),Le=new Zt,Pe=new Zt,Ue=new Zt,De=new be,Ie=new qt;class Ne{constructor(t=0,e=0,n=0,i=Ne.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=n,this._order=i}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,i=this._order){return this._x=t,this._y=e,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){const i=t.elements,r=i[0],a=i[4],s=i[8],o=i[1],l=i[5],c=i[9],h=i[2],u=i[6],d=i[10];switch(e){case"XYZ":this._y=Math.asin(pt(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(-c,d),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(u,l),this._z=0);break;case"YXZ":this._x=Math.asin(-pt(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(s,d),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-h,r),this._z=0);break;case"ZXY":this._x=Math.asin(pt(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-h,d),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-pt(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(u,d),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(pt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-c,l),this._y=Math.atan2(-h,r)):(this._x=0,this._y=Math.atan2(s,d));break;case"XZY":this._z=Math.asin(-pt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(u,l),this._y=Math.atan2(s,r)):(this._x=Math.atan2(-c,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,!0===n&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return De.makeRotationFromQuaternion(t),this.setFromRotationMatrix(De,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return Ie.setFromEuler(this),this.setFromQuaternion(Ie,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],void 0!==t[3]&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Ne.DEFAULT_ORDER="XYZ";class Oe{constructor(){this.mask=1}set(t){this.mask=(1<>>0}enable(t){this.mask|=1<1){for(let t=0;t1){for(let t=0;t0&&(n=n.concat(r))}return n}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Ve,t,ke),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Ve,We,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);const e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);const e=this.children;for(let n=0,i=e.length;n0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(i.instanceColor=this.instanceColor.toJSON())),this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(i.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(t.geometries,this.geometry);const e=this.geometry.parameters;if(void 0!==e&&void 0!==e.shapes){const n=e.shapes;if(Array.isArray(n))for(let e=0,i=n.length;e0){i.children=[];for(let e=0;e0){i.animations=[];for(let e=0;e0&&(n.geometries=e),i.length>0&&(n.materials=i),r.length>0&&(n.textures=r),s.length>0&&(n.images=s),o.length>0&&(n.shapes=o),l.length>0&&(n.skeletons=l),c.length>0&&(n.animations=c),h.length>0&&(n.nodes=h)}return n.object=i,n;function a(t){const e=[];for(const n in t){const i=t[n];delete i.metadata,e.push(i)}return e}}clone(t){return(new this.constructor).copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),!0===e)for(let e=0;e0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(t,e,n,i,r){Je.subVectors(i,e),Qe.subVectors(n,e),$e.subVectors(t,e);const a=Je.dot(Je),s=Je.dot(Qe),o=Je.dot($e),l=Qe.dot(Qe),c=Qe.dot($e),h=a*l-s*s;if(0===h)return r.set(-2,-1,-1);const u=1/h,d=(l*o-s*c)*u,p=(a*c-s*o)*u;return r.set(1-d-p,p,d)}static containsPoint(t,e,n,i){return this.getBarycoord(t,e,n,i,tn),tn.x>=0&&tn.y>=0&&tn.x+tn.y<=1}static getUV(t,e,n,i,r,a,s,o){return!1===ln&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),ln=!0),this.getInterpolation(t,e,n,i,r,a,s,o)}static getInterpolation(t,e,n,i,r,a,s,o){return this.getBarycoord(t,e,n,i,tn),o.setScalar(0),o.addScaledVector(r,tn.x),o.addScaledVector(a,tn.y),o.addScaledVector(s,tn.z),o}static isFrontFacing(t,e,n,i){return Je.subVectors(n,e),Qe.subVectors(t,e),Je.cross(Qe).dot(i)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this}setFromAttributeAndIndices(t,e,n,i){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,i),this}clone(){return(new this.constructor).copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return Je.subVectors(this.c,this.b),Qe.subVectors(this.a,this.b),.5*Je.cross(Qe).length()}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return cn.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return cn.getBarycoord(t,this.a,this.b,this.c,e)}getUV(t,e,n,i,r){return!1===ln&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),ln=!0),cn.getInterpolation(t,this.a,this.b,this.c,e,n,i,r)}getInterpolation(t,e,n,i,r){return cn.getInterpolation(t,this.a,this.b,this.c,e,n,i,r)}containsPoint(t){return cn.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return cn.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const n=this.a,i=this.b,r=this.c;let a,s;en.subVectors(i,n),nn.subVectors(r,n),an.subVectors(t,n);const o=en.dot(an),l=nn.dot(an);if(o<=0&&l<=0)return e.copy(n);sn.subVectors(t,i);const c=en.dot(sn),h=nn.dot(sn);if(c>=0&&h<=c)return e.copy(i);const u=o*h-c*l;if(u<=0&&o>=0&&c<=0)return a=o/(o-c),e.copy(n).addScaledVector(en,a);on.subVectors(t,r);const d=en.dot(on),p=nn.dot(on);if(p>=0&&d<=p)return e.copy(r);const f=d*l-o*p;if(f<=0&&l>=0&&p<=0)return s=l/(l-p),e.copy(n).addScaledVector(nn,s);const m=c*p-d*h;if(m<=0&&h-c>=0&&d-p>=0)return rn.subVectors(r,i),s=(h-c)/(h-c+(d-p)),e.copy(i).addScaledVector(rn,s);const g=1/(m+f+u);return a=f*g,s=u*g,e.copy(n).addScaledVector(en,a).addScaledVector(nn,s)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}const hn={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},un={h:0,s:0,l:0},dn={h:0,s:0,l:0};function pn(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+6*(e-t)*(2/3-n):t}class fn{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,n)}set(t,e,n){if(void 0===e&&void 0===n){const e=t;e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e)}else this.setRGB(t,e,n);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=j){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,Dt.toWorkingColorSpace(this,e),this}setRGB(t,e,n,i=Dt.workingColorSpace){return this.r=t,this.g=e,this.b=n,Dt.toWorkingColorSpace(this,i),this}setHSL(t,e,n,i=Dt.workingColorSpace){if(t=ft(t,1),e=pt(e,0,1),n=pt(n,0,1),0===e)this.r=this.g=this.b=n;else{const i=n<=.5?n*(1+e):n+e-n*e,r=2*n-i;this.r=pn(r,i,t+1/3),this.g=pn(r,i,t),this.b=pn(r,i,t-1/3)}return Dt.toWorkingColorSpace(this,i),this}setStyle(t,e=j){function n(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(t)){let r;const a=i[1],s=i[2];switch(a){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,e);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,e);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,e);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(t)){const n=i[1],r=n.length;if(3===r)return this.setRGB(parseInt(n.charAt(0),16)/15,parseInt(n.charAt(1),16)/15,parseInt(n.charAt(2),16)/15,e);if(6===r)return this.setHex(parseInt(n,16),e);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,e);return this}setColorName(t,e=j){const n=hn[t.toLowerCase()];return void 0!==n?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=It(t.r),this.g=It(t.g),this.b=It(t.b),this}copyLinearToSRGB(t){return this.r=Nt(t.r),this.g=Nt(t.g),this.b=Nt(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=j){return Dt.fromWorkingColorSpace(mn.copy(this),t),65536*Math.round(pt(255*mn.r,0,255))+256*Math.round(pt(255*mn.g,0,255))+Math.round(pt(255*mn.b,0,255))}getHexString(t=j){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=Dt.workingColorSpace){Dt.fromWorkingColorSpace(mn.copy(this),e);const n=mn.r,i=mn.g,r=mn.b,a=Math.max(n,i,r),s=Math.min(n,i,r);let o,l;const c=(s+a)/2;if(s===a)o=0,l=0;else{const t=a-s;switch(l=c<=.5?t/(a+s):t/(2-a-s),a){case n:o=(i-r)/t+(i0!=t>0&&this.version++,this._alphaTest=t}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(void 0!==t)for(const e in t){const n=t[e];if(void 0===n){console.warn(`THREE.Material: parameter '${e}' has value of undefined.`);continue}const i=this[e];void 0!==i?i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[e]=n:console.warn(`THREE.Material: '${e}' is not a property of THREE.${this.type}.`)}}toJSON(t){const e=void 0===t||"string"==typeof t;e&&(t={textures:{},images:{}});const n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};function i(t){const e=[];for(const n in t){const i=t[n];delete i.metadata,e.push(i)}return e}if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),void 0!==this.roughness&&(n.roughness=this.roughness),void 0!==this.metalness&&(n.metalness=this.metalness),void 0!==this.sheen&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(n.shininess=this.shininess),void 0!==this.clearcoat&&(n.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.iridescence&&(n.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(n.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),void 0!==this.anisotropy&&(n.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,void 0!==this.combine&&(n.combine=this.combine)),void 0!==this.envMapIntensity&&(n.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(n.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(t).uuid),void 0!==this.transmission&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),void 0!==this.thickness&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(n.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(n.size=this.size),null!==this.shadowSide&&(n.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(n.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(n.blending=this.blending),this.side!==o&&(n.side=this.side),!0===this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),!0===this.transparent&&(n.transparent=!0),204!==this.blendSrc&&(n.blendSrc=this.blendSrc),205!==this.blendDst&&(n.blendDst=this.blendDst),this.blendEquation!==c&&(n.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(n.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(n.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(n.blendAlpha=this.blendAlpha),3!==this.depthFunc&&(n.depthFunc=this.depthFunc),!1===this.depthTest&&(n.depthTest=this.depthTest),!1===this.depthWrite&&(n.depthWrite=this.depthWrite),!1===this.colorWrite&&(n.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(n.stencilWriteMask=this.stencilWriteMask),519!==this.stencilFunc&&(n.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(n.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==et&&(n.stencilFail=this.stencilFail),this.stencilZFail!==et&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==et&&(n.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(n.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(n.rotation=this.rotation),!0===this.polygonOffset&&(n.polygonOffset=!0),0!==this.polygonOffsetFactor&&(n.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(n.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(n.linewidth=this.linewidth),void 0!==this.dashSize&&(n.dashSize=this.dashSize),void 0!==this.gapSize&&(n.gapSize=this.gapSize),void 0!==this.scale&&(n.scale=this.scale),!0===this.dithering&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),!0===this.alphaHash&&(n.alphaHash=!0),!0===this.alphaToCoverage&&(n.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=!0),!0===this.forceSinglePass&&(n.forceSinglePass=!0),!0===this.wireframe&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(n.flatShading=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),!1===this.fog&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData),e){const e=i(t.textures),r=i(t.images);e.length>0&&(n.textures=e),r.length>0&&(n.images=r)}return n}clone(){return(new this.constructor).copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let n=null;if(null!==e){const t=e.length;n=new Array(t);for(let i=0;i!==t;++i)n[i]=e[i].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){!0===t&&this.version++}}class vn extends _n{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new fn(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=h,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}}const xn=new Zt,Mn=new yt;class yn{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=void 0!==t?t.length/e:0,this.normalized=n,this.usage=nt,this.updateRange={offset:0,count:-1},this.gpuType=D,this.version=0}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let i=0,r=this.itemSize;i0&&(t.userData=this.userData),void 0!==this.parameters){const e=this.parameters;for(const n in e)void 0!==e[n]&&(t[n]=e[n]);return t}t.data={attributes:{}};const e=this.index;null!==e&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const n=this.attributes;for(const e in n){const i=n[e];t.data.attributes[e]=i.toJSON(t.data)}const i={};let r=!1;for(const e in this.morphAttributes){const n=this.morphAttributes[e],a=[];for(let e=0,i=n.length;e0&&(i[e]=a,r=!0)}r&&(t.data.morphAttributes=i,t.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(t.data.groups=JSON.parse(JSON.stringify(a)));const s=this.boundingSphere;return null!==s&&(t.data.boundingSphere={center:s.center.toArray(),radius:s.radius}),t}clone(){return(new this.constructor).copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const n=t.index;null!==n&&this.setIndex(n.clone(e));const i=t.attributes;for(const t in i){const n=i[t];this.setAttribute(t,n.clone(e))}const r=t.morphAttributes;for(const t in r){const n=[],i=r[t];for(let t=0,r=i.length;t0){const n=t[e[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=n.length;t(t.far-t.near)**2)return}Dn.copy(r).invert(),In.copy(t.ray).applyMatrix4(Dn),null!==n.boundingBox&&!1===In.intersectsBox(n.boundingBox)||this._computeIntersections(t,e,In)}}_computeIntersections(t,e,n){let i;const r=this.geometry,a=this.material,s=r.index,o=r.attributes.position,l=r.attributes.uv,c=r.attributes.uv1,h=r.attributes.normal,u=r.groups,d=r.drawRange;if(null!==s)if(Array.isArray(a))for(let r=0,o=u.length;rn.far?null:{distance:u,point:Zn.clone(),object:t}}(t,e,n,i,Fn,zn,Bn,qn);if(d){r&&(Vn.fromBufferAttribute(r,c),kn.fromBufferAttribute(r,h),Wn.fromBufferAttribute(r,u),d.uv=cn.getInterpolation(qn,Fn,zn,Bn,Vn,kn,Wn,new yt)),a&&(Vn.fromBufferAttribute(a,c),kn.fromBufferAttribute(a,h),Wn.fromBufferAttribute(a,u),d.uv1=cn.getInterpolation(qn,Fn,zn,Bn,Vn,kn,Wn,new yt),d.uv2=d.uv1),s&&(Xn.fromBufferAttribute(s,c),jn.fromBufferAttribute(s,h),Yn.fromBufferAttribute(s,u),d.normal=cn.getInterpolation(qn,Fn,zn,Bn,Xn,jn,Yn,new Zt),d.normal.dot(i.direction)>0&&d.normal.multiplyScalar(-1));const t={a:c,b:h,c:u,normal:new Zt,materialIndex:0};cn.getNormal(Fn,zn,Bn,t.normal),d.face=t}return d}class Qn extends Un{constructor(t=1,e=1,n=1,i=1,r=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:i,heightSegments:r,depthSegments:a};const s=this;i=Math.floor(i),r=Math.floor(r),a=Math.floor(a);const o=[],l=[],c=[],h=[];let u=0,d=0;function p(t,e,n,i,r,a,p,f,m,g,_){const v=a/m,x=p/g,M=a/2,y=p/2,S=f/2,E=m+1,T=g+1;let b=0,w=0;const A=new Zt;for(let a=0;a0?1:-1,c.push(A.x,A.y,A.z),h.push(o/m),h.push(1-a/g),b+=1}}for(let t=0;t0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;const n={};for(const t in this.extensions)!0===this.extensions[t]&&(n[t]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}}class ri extends Ke{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new be,this.projectionMatrix=new be,this.projectionMatrixInverse=new be,this.coordinateSystem=at}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this.coordinateSystem=t.coordinateSystem,this}getWorldDirection(t){return super.getWorldDirection(t).negate()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}}class ai extends ri{constructor(t=50,e=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=null===t.view?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){const e=.5*this.getFilmHeight()/t;this.fov=2*ut*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){const t=Math.tan(.5*ht*this.fov);return.5*this.getFilmHeight()/t}getEffectiveFOV(){return 2*ut*Math.atan(Math.tan(.5*ht*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(t,e,n,i,r,a){this.aspect=t/e,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=this.near;let e=t*Math.tan(.5*ht*this.fov)/this.zoom,n=2*e,i=this.aspect*n,r=-.5*i;const a=this.view;if(null!==this.view&&this.view.enabled){const t=a.fullWidth,s=a.fullHeight;r+=a.offsetX*i/t,e-=a.offsetY*n/s,i*=a.width/t,n*=a.height/s}const s=this.filmOffset;0!==s&&(r+=t*s/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,e,e-n,t,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,null!==this.view&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}}const si=-90;class oi extends Ke{constructor(t,e,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new ai(si,1,t,e);i.layers=this.layers,this.add(i);const r=new ai(si,1,t,e);r.layers=this.layers,this.add(r);const a=new ai(si,1,t,e);a.layers=this.layers,this.add(a);const s=new ai(si,1,t,e);s.layers=this.layers,this.add(s);const o=new ai(si,1,t,e);o.layers=this.layers,this.add(o);const l=new ai(si,1,t,e);l.layers=this.layers,this.add(l)}updateCoordinateSystem(){const t=this.coordinateSystem,e=this.children.concat(),[n,i,r,a,s,o]=e;for(const t of e)this.remove(t);if(t===at)n.up.set(0,1,0),n.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),s.up.set(0,1,0),s.lookAt(0,0,1),o.up.set(0,1,0),o.lookAt(0,0,-1);else{if(t!==st)throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+t);n.up.set(0,-1,0),n.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),s.up.set(0,-1,0),s.lookAt(0,0,1),o.up.set(0,-1,0),o.lookAt(0,0,-1)}for(const t of e)this.add(t),t.updateMatrixWorld()}update(t,e){null===this.parent&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:i}=this;this.coordinateSystem!==t.coordinateSystem&&(this.coordinateSystem=t.coordinateSystem,this.updateCoordinateSystem());const[r,a,s,o,l,c]=this.children,h=t.getRenderTarget(),u=t.getActiveCubeFace(),d=t.getActiveMipmapLevel(),p=t.xr.enabled;t.xr.enabled=!1;const f=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0,i),t.render(e,r),t.setRenderTarget(n,1,i),t.render(e,a),t.setRenderTarget(n,2,i),t.render(e,s),t.setRenderTarget(n,3,i),t.render(e,o),t.setRenderTarget(n,4,i),t.render(e,l),n.texture.generateMipmaps=f,t.setRenderTarget(n,5,i),t.render(e,c),t.setRenderTarget(h,u,d),t.xr.enabled=p,n.texture.needsPMREMUpdate=!0}}class li extends Vt{constructor(t,e,n,i,r,a,s,o,l,c){super(t=void 0!==t?t:[],e=void 0!==e?e:x,n,i,r,a,s,o,l,c),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}}class ci extends Xt{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;const n={width:t,height:t,depth:1},i=[n,n,n,n,n,n];void 0!==e.encoding&&(Rt("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."),e.colorSpace=e.encoding===W?j:X),this.texture=new li(i,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==e.generateMipmaps&&e.generateMipmaps,this.texture.minFilter=void 0!==e.minFilter?e.minFilter:A}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.colorSpace=e.colorSpace,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:"\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t",fragmentShader:"\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t"},i=new Qn(5,5,5),r=new ii({name:"CubemapFromEquirect",uniforms:$n(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:l,blending:0});r.uniforms.tEquirect.value=e;const a=new Kn(i,r),s=e.minFilter;e.minFilter===R&&(e.minFilter=A);return new oi(1,10,this).update(t,a),e.minFilter=s,a.geometry.dispose(),a.material.dispose(),this}clear(t,e,n,i){const r=t.getRenderTarget();for(let r=0;r<6;r++)t.setRenderTarget(this,r),t.clear(e,n,i);t.setRenderTarget(r)}}const hi=new Zt,ui=new Zt,di=new St;class pi{constructor(t=new Zt(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,n,i){return this.normal.set(t,e,n),this.constant=i,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,n){const i=hi.subVectors(n,e).cross(ui.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectLine(t,e){const n=t.delta(hi),i=this.normal.dot(n);if(0===i)return 0===this.distanceToPoint(t.start)?e.copy(t.start):null;const r=-(t.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:e.copy(t.start).addScaledVector(n,r)}intersectsLine(t){const e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const n=e||di.getNormalMatrix(t),i=this.coplanarPoint(hi).applyMatrix4(t),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return(new this.constructor).copy(this)}}const fi=new ge,mi=new Zt;class gi{constructor(t=new pi,e=new pi,n=new pi,i=new pi,r=new pi,a=new pi){this.planes=[t,e,n,i,r,a]}set(t,e,n,i,r,a){const s=this.planes;return s[0].copy(t),s[1].copy(e),s[2].copy(n),s[3].copy(i),s[4].copy(r),s[5].copy(a),this}copy(t){const e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t,e=2e3){const n=this.planes,i=t.elements,r=i[0],a=i[1],s=i[2],o=i[3],l=i[4],c=i[5],h=i[6],u=i[7],d=i[8],p=i[9],f=i[10],m=i[11],g=i[12],_=i[13],v=i[14],x=i[15];if(n[0].setComponents(o-r,u-l,m-d,x-g).normalize(),n[1].setComponents(o+r,u+l,m+d,x+g).normalize(),n[2].setComponents(o+a,u+c,m+p,x+_).normalize(),n[3].setComponents(o-a,u-c,m-p,x-_).normalize(),n[4].setComponents(o-s,u-h,m-f,x-v).normalize(),e===at)n[5].setComponents(o+s,u+h,m+f,x+v).normalize();else{if(e!==st)throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+e);n[5].setComponents(s,h,f,v).normalize()}return this}intersectsObject(t){if(void 0!==t.boundingSphere)null===t.boundingSphere&&t.computeBoundingSphere(),fi.copy(t.boundingSphere).applyMatrix4(t.matrixWorld);else{const e=t.geometry;null===e.boundingSphere&&e.computeBoundingSphere(),fi.copy(e.boundingSphere).applyMatrix4(t.matrixWorld)}return this.intersectsSphere(fi)}intersectsSprite(t){return fi.center.set(0,0,0),fi.radius=.7071067811865476,fi.applyMatrix4(t.matrixWorld),this.intersectsSphere(fi)}intersectsSphere(t){const e=this.planes,n=t.center,i=-t.radius;for(let t=0;t<6;t++){if(e[t].distanceToPoint(n)0?t.max.x:t.min.x,mi.y=i.normal.y>0?t.max.y:t.min.y,mi.z=i.normal.z>0?t.max.z:t.min.z,i.distanceToPoint(mi)<0)return!1}return!0}containsPoint(t){const e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}}function _i(){let t=null,e=!1,n=null,i=null;function r(e,a){n(e,a),i=t.requestAnimationFrame(r)}return{start:function(){!0!==e&&null!==n&&(i=t.requestAnimationFrame(r),e=!0)},stop:function(){t.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(t){n=t},setContext:function(e){t=e}}}function vi(t,e){const n=e.isWebGL2,i=new WeakMap;return{get:function(t){return t.isInterleavedBufferAttribute&&(t=t.data),i.get(t)},remove:function(e){e.isInterleavedBufferAttribute&&(e=e.data);const n=i.get(e);n&&(t.deleteBuffer(n.buffer),i.delete(e))},update:function(e,r){if(e.isGLBufferAttribute){const t=i.get(e);return void((!t||t.version 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\n#ifdef USE_ALPHAHASH\n\tvarying vec3 vPosition;\n#endif\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat luminance( const in vec3 rgb ) {\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\n\treturn dot( weights, rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define cubeUV_r0 1.0\n\t#define cubeUV_v0 0.339\n\t#define cubeUV_m0 - 2.0\n\t#define cubeUV_r1 0.8\n\t#define cubeUV_v1 0.276\n\t#define cubeUV_m1 - 1.0\n\t#define cubeUV_r4 0.4\n\t#define cubeUV_v4 0.046\n\t#define cubeUV_m4 2.0\n\t#define cubeUV_r5 0.305\n\t#define cubeUV_v5 0.016\n\t#define cubeUV_m5 3.0\n\t#define cubeUV_r6 0.21\n\t#define cubeUV_v6 0.0038\n\t#define cubeUV_m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= cubeUV_r1 ) {\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n\t\t} else if ( roughness >= cubeUV_r4 ) {\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n\t\t} else if ( roughness >= cubeUV_r5 ) {\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n\t\t} else if ( roughness >= cubeUV_r6 ) {\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",colorspace_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",colorspace_pars_fragment:"\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\n\tvec3( 0.8224621, 0.177538, 0.0 ),\n\tvec3( 0.0331941, 0.9668058, 0.0 ),\n\tvec3( 0.0170827, 0.0723974, 0.9105199 )\n);\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\n\tvec3( 1.2249401, - 0.2249404, 0.0 ),\n\tvec3( - 0.0420569, 1.0420571, 0.0 ),\n\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\n);\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\n\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\n}\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\n\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\n}\nvec4 LinearTransferOETF( in vec4 value ) {\n\treturn value;\n}\nvec4 sRGBTransferOETF( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn sRGBTransferOETF( value );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#ifdef USE_ENVMAP\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\t#ifdef USE_ANISOTROPY\n\t\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n\t\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\t\tvec3 bentNormal = cross( bitangent, viewDir );\n\t\t\t\tbentNormal = normalize( cross( bentNormal, bitangent ) );\n\t\t\t\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n\t\t\t\treturn getIBLRadiance( viewDir, bentNormal, roughness );\n\t\t\t#else\n\t\t\t\treturn vec3( 0.0 );\n\t\t\t#endif\n\t\t}\n\t#endif\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\n\t#else\n\t\tvec2 fw = fwidth( coord ) * 0.5;\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_fragment:"LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;",lights_lambert_pars_fragment:"varying vec3 vViewPosition;\nstruct LambertMaterial {\n\tvec3 diffuseColor;\n\tfloat specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\n#if defined( USE_LIGHT_PROBES )\n\tuniform vec3 lightProbe[ 9 ];\n#endif\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( LEGACY_LIGHTS )\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#else\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometryPosition;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometryPosition;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\tmaterial.ior = ior;\n\t#ifdef USE_SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULAR_COLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n\t\t#endif\n\t\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\t#ifdef USE_ANISOTROPYMAP\n\t\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n\t\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n\t\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n\t#else\n\t\tvec2 anisotropyV = anisotropyVector;\n\t#endif\n\tmaterial.anisotropy = length( anisotropyV );\n\tanisotropyV /= material.anisotropy;\n\tmaterial.anisotropy = saturate( material.anisotropy );\n\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x - tbn[ 1 ] * anisotropyV.y;\n\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x + tbn[ 0 ] * anisotropyV.y;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat anisotropy;\n\t\tfloat alphaT;\n\t\tvec3 anisotropyT;\n\t\tvec3 anisotropyB;\n\t#endif\n};\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\nvec3 sheenSpecularDirect = vec3( 0.0 );\nvec3 sheenSpecularIndirect = vec3(0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_ANISOTROPY\n\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\n\t\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\n\t\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n\t\tfloat v = 0.5 / ( gv + gl );\n\t\treturn saturate(v);\n\t}\n\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n\t\tfloat a2 = alphaT * alphaB;\n\t\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n\t\thighp float v2 = dot( v, v );\n\t\tfloat w2 = a2 / v2;\n\t\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\n\t}\n#endif\n#ifdef USE_CLEARCOAT\n\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n\t\tvec3 f0 = material.clearcoatF0;\n\t\tfloat f90 = material.clearcoatF90;\n\t\tfloat roughness = material.clearcoatRoughness;\n\t\tfloat alpha = pow2( roughness );\n\t\tvec3 halfDir = normalize( lightDir + viewDir );\n\t\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\t\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\t\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\t\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\t\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t\treturn F * ( V * D );\n\t}\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n\tvec3 f0 = material.specularColor;\n\tfloat f90 = material.specularF90;\n\tfloat roughness = material.roughness;\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t#ifdef USE_IRIDESCENCE\n\t\tF = mix( F, material.iridescenceFresnel, material.iridescence );\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat dotTL = dot( material.anisotropyT, lightDir );\n\t\tfloat dotTV = dot( material.anisotropyT, viewDir );\n\t\tfloat dotTH = dot( material.anisotropyT, halfDir );\n\t\tfloat dotBL = dot( material.anisotropyB, lightDir );\n\t\tfloat dotBV = dot( material.anisotropyB, viewDir );\n\t\tfloat dotBH = dot( material.anisotropyB, halfDir );\n\t\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n\t\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n\t#else\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t#endif\n\treturn F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometryNormal;\n\t\tvec3 viewDir = geometryViewDir;\n\t\tvec3 position = geometryPosition;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nvec3 geometryPosition = - vViewPosition;\nvec3 geometryNormal = normal;\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\nvec3 geometryClearcoatNormal = vec3( 0.0 );\n#ifdef USE_CLEARCOAT\n\tgeometryClearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\n\tif ( material.iridescenceThickness == 0.0 ) {\n\t\tmaterial.iridescence = 0.0;\n\t} else {\n\t\tmaterial.iridescence = saturate( material.iridescence );\n\t}\n\tif ( material.iridescence > 0.0 ) {\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n\t}\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometryPosition, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tvec4 spotColor;\n\tvec3 spotLightCoord;\n\tbool inSpotLightMap;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n\t\t#else\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#endif\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n\t\t#endif\n\t\t#undef SPOT_LIGHT_MAP_INDEX\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if defined( USE_LIGHT_PROBES )\n\t\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n\t#endif\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometryNormal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\t#ifdef USE_ANISOTROPY\n\t\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\n\t#else\n\t\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n\t\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\t#if defined( USE_POINTS_UV )\n\t\tvec2 uv = vUv;\n\t#else\n\t\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\t#endif\n#endif\n#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_POINTS_UV )\n\tvarying vec2 vUv;\n#else\n\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\t\tuniform mat3 uvTransform;\n\t#endif\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphcolor_vertex:"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\n\tvColor *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t#if defined( USE_COLOR_ALPHA )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n\t\t#elif defined( USE_COLOR )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n\t\t#endif\n\t}\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n\t#endif\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t\tuniform sampler2DArray morphTargetsTexture;\n\t\tuniform ivec2 morphTargetsTextureSize;\n\t\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n\t\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n\t\t\tint y = texelIndex / morphTargetsTextureSize.x;\n\t\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\n\t\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\n\t\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\n\t\t}\n\t#else\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\tuniform float morphTargetInfluences[ 8 ];\n\t\t#else\n\t\t\tuniform float morphTargetInfluences[ 4 ];\n\t\t#endif\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t\t#endif\n\t#endif\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal *= faceDirection;\n\t#endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\n\t\t#if defined( USE_NORMALMAP )\n\t\t\tvNormalMapUv\n\t\t#elif defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tvClearcoatNormalMapUv\n\t\t#else\n\t\t\tvUv\n\t\t#endif\n\t\t);\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn[0] *= faceDirection;\n\t\ttbn[1] *= faceDirection;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn2[0] *= faceDirection;\n\t\ttbn2[1] *= faceDirection;\n\t#endif\n#endif\nvec3 nonPerturbedNormal = normal;",normal_fragment_maps:"#ifdef USE_NORMALMAP_OBJECTSPACE\n\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\n\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\tnormal = normalize( tbn * mapN );\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( uv.st );\n\t\tvec2 st1 = dFdy( uv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n\t\treturn mat3( T * scale, B * scale, N );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = nonPerturbedNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif",iridescence_pars_fragment:"#ifdef USE_IRIDESCENCEMAP\n\tuniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform sampler2D iridescenceThicknessMap;\n#endif",opaque_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec2 packDepthToRG( in highp float v ) {\n\treturn packDepthToRGBA( v ).yx;\n}\nfloat unpackRGToDepth( const in highp vec2 v ) {\n\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\n\treturn depth * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * depth - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#if NUM_SPOT_LIGHT_COORDS > 0\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#if NUM_SPOT_LIGHT_COORDS > 0\n\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\tvec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition;\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n\t\t#endif\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\tuniform highp sampler2D boneTexture;\n\tuniform int boneTextureSize;\n\tmat4 getBoneMatrix( const in float i ) {\n\t\tfloat j = i * 4.0;\n\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\ty = dy * ( y + 0.5 );\n\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\treturn bone;\n\t}\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n\tmaterial.transmission = transmission;\n\tmaterial.transmissionAlpha = 1.0;\n\tmaterial.thickness = thickness;\n\tmaterial.attenuationDistance = attenuationDistance;\n\tmaterial.attenuationColor = attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmitted = getIBLVolumeRefraction(\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\n\t\tmaterial.attenuationColor, material.attenuationDistance );\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tfloat w0( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n\t}\n\tfloat w1( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n\t}\n\tfloat w2( float a ){\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n\t}\n\tfloat w3( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * a );\n\t}\n\tfloat g0( float a ) {\n\t\treturn w0( a ) + w1( a );\n\t}\n\tfloat g1( float a ) {\n\t\treturn w2( a ) + w3( a );\n\t}\n\tfloat h0( float a ) {\n\t\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n\t}\n\tfloat h1( float a ) {\n\t\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n\t}\n\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n\t\tuv = uv * texelSize.zw + 0.5;\n\t\tvec2 iuv = floor( uv );\n\t\tvec2 fuv = fract( uv );\n\t\tfloat g0x = g0( fuv.x );\n\t\tfloat g1x = g1( fuv.x );\n\t\tfloat h0x = h0( fuv.x );\n\t\tfloat h1x = h1( fuv.x );\n\t\tfloat h0y = h0( fuv.y );\n\t\tfloat h1y = h1( fuv.y );\n\t\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n\t\t\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n\t}\n\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n\t\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n\t\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n\t\tvec2 fLodSizeInv = 1.0 / fLodSize;\n\t\tvec2 cLodSizeInv = 1.0 / cLodSize;\n\t\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n\t\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n\t\treturn mix( fSample, cSample, fract( lod ) );\n\t}\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n\t}\n\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( isinf( attenuationDistance ) ) {\n\t\t\treturn vec3( 1.0 );\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n\t}\n#endif",uv_pars_fragment:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif",uv_pars_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tuniform mat3 mapTransform;\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform mat3 alphaMapTransform;\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tuniform mat3 lightMapTransform;\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tuniform mat3 aoMapTransform;\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tuniform mat3 bumpMapTransform;\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tuniform mat3 normalMapTransform;\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tuniform mat3 displacementMapTransform;\n\tvarying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tuniform mat3 emissiveMapTransform;\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tuniform mat3 metalnessMapTransform;\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tuniform mat3 roughnessMapTransform;\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tuniform mat3 anisotropyMapTransform;\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tuniform mat3 clearcoatMapTransform;\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform mat3 clearcoatNormalMapTransform;\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform mat3 clearcoatRoughnessMapTransform;\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tuniform mat3 sheenColorMapTransform;\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tuniform mat3 sheenRoughnessMapTransform;\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tuniform mat3 iridescenceMapTransform;\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform mat3 iridescenceThicknessMapTransform;\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tuniform mat3 specularMapTransform;\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tuniform mat3 specularColorMapTransform;\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tuniform mat3 specularIntensityMapTransform;\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif",uv_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",background_frag:"uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}",backgroundCube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",backgroundCube_frag:"#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include \n\t#include \n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_frag:"#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\tuniform vec2 anisotropyVector;\n\t#ifdef USE_ANISOTROPYMAP\n\t\tuniform sampler2D anisotropyMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \n#ifdef USE_POINTS_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\nvoid main() {\n\t#ifdef USE_POINTS_UV\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_vert:"#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}"},yi={common:{diffuse:{value:new fn(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new St},alphaMap:{value:null},alphaMapTransform:{value:new St},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new St}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new St}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new St}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new St},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new St},normalScale:{value:new yt(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new St},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new St}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new St}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new St}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new fn(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new fn(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new St},alphaTest:{value:0},uvTransform:{value:new St}},sprite:{diffuse:{value:new fn(16777215)},opacity:{value:1},center:{value:new yt(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new St},alphaMap:{value:null},alphaMapTransform:{value:new St},alphaTest:{value:0}}},Si={basic:{uniforms:ti([yi.common,yi.specularmap,yi.envmap,yi.aomap,yi.lightmap,yi.fog]),vertexShader:Mi.meshbasic_vert,fragmentShader:Mi.meshbasic_frag},lambert:{uniforms:ti([yi.common,yi.specularmap,yi.envmap,yi.aomap,yi.lightmap,yi.emissivemap,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.fog,yi.lights,{emissive:{value:new fn(0)}}]),vertexShader:Mi.meshlambert_vert,fragmentShader:Mi.meshlambert_frag},phong:{uniforms:ti([yi.common,yi.specularmap,yi.envmap,yi.aomap,yi.lightmap,yi.emissivemap,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.fog,yi.lights,{emissive:{value:new fn(0)},specular:{value:new fn(1118481)},shininess:{value:30}}]),vertexShader:Mi.meshphong_vert,fragmentShader:Mi.meshphong_frag},standard:{uniforms:ti([yi.common,yi.envmap,yi.aomap,yi.lightmap,yi.emissivemap,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.roughnessmap,yi.metalnessmap,yi.fog,yi.lights,{emissive:{value:new fn(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Mi.meshphysical_vert,fragmentShader:Mi.meshphysical_frag},toon:{uniforms:ti([yi.common,yi.aomap,yi.lightmap,yi.emissivemap,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.gradientmap,yi.fog,yi.lights,{emissive:{value:new fn(0)}}]),vertexShader:Mi.meshtoon_vert,fragmentShader:Mi.meshtoon_frag},matcap:{uniforms:ti([yi.common,yi.bumpmap,yi.normalmap,yi.displacementmap,yi.fog,{matcap:{value:null}}]),vertexShader:Mi.meshmatcap_vert,fragmentShader:Mi.meshmatcap_frag},points:{uniforms:ti([yi.points,yi.fog]),vertexShader:Mi.points_vert,fragmentShader:Mi.points_frag},dashed:{uniforms:ti([yi.common,yi.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Mi.linedashed_vert,fragmentShader:Mi.linedashed_frag},depth:{uniforms:ti([yi.common,yi.displacementmap]),vertexShader:Mi.depth_vert,fragmentShader:Mi.depth_frag},normal:{uniforms:ti([yi.common,yi.bumpmap,yi.normalmap,yi.displacementmap,{opacity:{value:1}}]),vertexShader:Mi.meshnormal_vert,fragmentShader:Mi.meshnormal_frag},sprite:{uniforms:ti([yi.sprite,yi.fog]),vertexShader:Mi.sprite_vert,fragmentShader:Mi.sprite_frag},background:{uniforms:{uvTransform:{value:new St},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Mi.background_vert,fragmentShader:Mi.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:Mi.backgroundCube_vert,fragmentShader:Mi.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Mi.cube_vert,fragmentShader:Mi.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Mi.equirect_vert,fragmentShader:Mi.equirect_frag},distanceRGBA:{uniforms:ti([yi.common,yi.displacementmap,{referencePosition:{value:new Zt},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Mi.distanceRGBA_vert,fragmentShader:Mi.distanceRGBA_frag},shadow:{uniforms:ti([yi.lights,yi.fog,{color:{value:new fn(0)},opacity:{value:1}}]),vertexShader:Mi.shadow_vert,fragmentShader:Mi.shadow_frag}};Si.physical={uniforms:ti([Si.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new St},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new St},clearcoatNormalScale:{value:new yt(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new St},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new St},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new St},sheen:{value:0},sheenColor:{value:new fn(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new St},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new St},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new St},transmissionSamplerSize:{value:new yt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new St},attenuationDistance:{value:0},attenuationColor:{value:new fn(0)},specularColor:{value:new fn(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new St},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new St},anisotropyVector:{value:new yt},anisotropyMap:{value:null},anisotropyMapTransform:{value:new St}}]),vertexShader:Mi.meshphysical_vert,fragmentShader:Mi.meshphysical_frag};const Ei={r:0,b:0,g:0};function Ti(t,e,n,i,r,a,s){const c=new fn(0);let h,u,d=!0===a?0:1,p=null,f=0,m=null;function g(e,n){e.getRGB(Ei,ei(t)),i.buffers.color.setClear(Ei.r,Ei.g,Ei.b,n,s)}return{getClearColor:function(){return c},setClearColor:function(t,e=1){c.set(t),d=e,g(c,d)},getClearAlpha:function(){return d},setClearAlpha:function(t){d=t,g(c,d)},render:function(a,_){let v=!1,x=!0===_.isScene?_.background:null;if(x&&x.isTexture){x=(_.backgroundBlurriness>0?n:e).get(x)}null===x?g(c,d):x&&x.isColor&&(g(x,1),v=!0);const M=t.xr.getEnvironmentBlendMode();"additive"===M?i.buffers.color.setClear(0,0,0,1,s):"alpha-blend"===M&&i.buffers.color.setClear(0,0,0,0,s),(t.autoClear||v)&&t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil),x&&(x.isCubeTexture||x.mapping===y)?(void 0===u&&(u=new Kn(new Qn(1,1,1),new ii({name:"BackgroundCubeMaterial",uniforms:$n(Si.backgroundCube.uniforms),vertexShader:Si.backgroundCube.vertexShader,fragmentShader:Si.backgroundCube.fragmentShader,side:l,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(t,e,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(u)),u.material.uniforms.envMap.value=x,u.material.uniforms.flipEnvMap.value=x.isCubeTexture&&!1===x.isRenderTargetTexture?-1:1,u.material.uniforms.backgroundBlurriness.value=_.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=_.backgroundIntensity,u.material.toneMapped=Dt.getTransfer(x.colorSpace)!==J,p===x&&f===x.version&&m===t.toneMapping||(u.material.needsUpdate=!0,p=x,f=x.version,m=t.toneMapping),u.layers.enableAll(),a.unshift(u,u.geometry,u.material,0,0,null)):x&&x.isTexture&&(void 0===h&&(h=new Kn(new xi(2,2),new ii({name:"BackgroundMaterial",uniforms:$n(Si.background.uniforms),vertexShader:Si.background.vertexShader,fragmentShader:Si.background.fragmentShader,side:o,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),Object.defineProperty(h.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(h)),h.material.uniforms.t2D.value=x,h.material.uniforms.backgroundIntensity.value=_.backgroundIntensity,h.material.toneMapped=Dt.getTransfer(x.colorSpace)!==J,!0===x.matrixAutoUpdate&&x.updateMatrix(),h.material.uniforms.uvTransform.value.copy(x.matrix),p===x&&f===x.version&&m===t.toneMapping||(h.material.needsUpdate=!0,p=x,f=x.version,m=t.toneMapping),h.layers.enableAll(),a.unshift(h,h.geometry,h.material,0,0,null))}}}function bi(t,e,n,i){const r=t.getParameter(t.MAX_VERTEX_ATTRIBS),a=i.isWebGL2?null:e.get("OES_vertex_array_object"),s=i.isWebGL2||null!==a,o={},l=p(null);let c=l,h=!1;function u(e){return i.isWebGL2?t.bindVertexArray(e):a.bindVertexArrayOES(e)}function d(e){return i.isWebGL2?t.deleteVertexArray(e):a.deleteVertexArrayOES(e)}function p(t){const e=[],n=[],i=[];for(let t=0;t=0){const n=r[e];let i=a[e];if(void 0===i&&("instanceMatrix"===e&&t.instanceMatrix&&(i=t.instanceMatrix),"instanceColor"===e&&t.instanceColor&&(i=t.instanceColor)),void 0===n)return!0;if(n.attribute!==i)return!0;if(i&&n.data!==i.data)return!0;s++}}return c.attributesNum!==s||c.index!==i}(r,x,d,M),y&&function(t,e,n,i){const r={},a=e.attributes;let s=0;const o=n.getAttributes();for(const e in o){if(o[e].location>=0){let n=a[e];void 0===n&&("instanceMatrix"===e&&t.instanceMatrix&&(n=t.instanceMatrix),"instanceColor"===e&&t.instanceColor&&(n=t.instanceColor));const i={};i.attribute=n,n&&n.data&&(i.data=n.data),r[e]=i,s++}}c.attributes=r,c.attributesNum=s,c.index=i}(r,x,d,M)}else{const t=!0===l.wireframe;c.geometry===x.id&&c.program===d.id&&c.wireframe===t||(c.geometry=x.id,c.program=d.id,c.wireframe=t,y=!0)}null!==M&&n.update(M,t.ELEMENT_ARRAY_BUFFER),(y||h)&&(h=!1,function(r,a,s,o){if(!1===i.isWebGL2&&(r.isInstancedMesh||o.isInstancedBufferGeometry)&&null===e.get("ANGLE_instanced_arrays"))return;f();const l=o.attributes,c=s.getAttributes(),h=a.defaultAttributeValues;for(const e in c){const a=c[e];if(a.location>=0){let s=l[e];if(void 0===s&&("instanceMatrix"===e&&r.instanceMatrix&&(s=r.instanceMatrix),"instanceColor"===e&&r.instanceColor&&(s=r.instanceColor)),void 0!==s){const e=s.normalized,l=s.itemSize,c=n.get(s);if(void 0===c)continue;const h=c.buffer,u=c.type,d=c.bytesPerElement,p=!0===i.isWebGL2&&(u===t.INT||u===t.UNSIGNED_INT||s.gpuType===P);if(s.isInterleavedBufferAttribute){const n=s.data,i=n.stride,c=s.offset;if(n.isInstancedInterleavedBuffer){for(let t=0;t0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0)return"highp";e="mediump"}return"mediump"===e&&t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}const a="undefined"!=typeof WebGL2RenderingContext&&"WebGL2RenderingContext"===t.constructor.name;let s=void 0!==n.precision?n.precision:"highp";const o=r(s);o!==s&&(console.warn("THREE.WebGLRenderer:",s,"not supported, using",o,"instead."),s=o);const l=a||e.has("WEBGL_draw_buffers"),c=!0===n.logarithmicDepthBuffer,h=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),u=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),d=t.getParameter(t.MAX_TEXTURE_SIZE),p=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),f=t.getParameter(t.MAX_VERTEX_ATTRIBS),m=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),g=t.getParameter(t.MAX_VARYING_VECTORS),_=t.getParameter(t.MAX_FRAGMENT_UNIFORM_VECTORS),v=u>0,x=a||e.has("OES_texture_float");return{isWebGL2:a,drawBuffers:l,getMaxAnisotropy:function(){if(void 0!==i)return i;if(!0===e.has("EXT_texture_filter_anisotropic")){const n=e.get("EXT_texture_filter_anisotropic");i=t.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else i=0;return i},getMaxPrecision:r,precision:s,logarithmicDepthBuffer:c,maxTextures:h,maxVertexTextures:u,maxTextureSize:d,maxCubemapSize:p,maxAttributes:f,maxVertexUniforms:m,maxVaryings:g,maxFragmentUniforms:_,vertexTextures:v,floatFragmentTextures:x,floatVertexTextures:v&&x,maxSamples:a?t.getParameter(t.MAX_SAMPLES):0}}function Ri(t){const e=this;let n=null,i=0,r=!1,a=!1;const s=new pi,o=new St,l={value:null,needsUpdate:!1};function c(t,n,i,r){const a=null!==t?t.length:0;let c=null;if(0!==a){if(c=l.value,!0!==r||null===c){const e=i+4*a,r=n.matrixWorldInverse;o.getNormalMatrix(r),(null===c||c.length0);e.numPlanes=i,e.numIntersection=0}();else{const t=a?0:i,e=4*t;let r=f.clippingState||null;l.value=r,r=c(u,o,e,h);for(let t=0;t!==e;++t)r[t]=n[t];f.clippingState=r,this.numIntersection=d?this.numPlanes:0,this.numPlanes+=t}}}function Ci(t){let e=new WeakMap;function n(t,e){return 303===e?t.mapping=x:304===e&&(t.mapping=M),t}function i(t){const n=t.target;n.removeEventListener("dispose",i);const r=e.get(n);void 0!==r&&(e.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture&&!1===r.isRenderTargetTexture){const a=r.mapping;if(303===a||304===a){if(e.has(r)){return n(e.get(r).texture,r.mapping)}{const a=r.image;if(a&&a.height>0){const s=new ci(a.height/2);return s.fromEquirectangularTexture(t,r),e.set(r,s),r.addEventListener("dispose",i),n(s.texture,r.mapping)}return null}}}return r},dispose:function(){e=new WeakMap}}}class Li extends ri{constructor(t=-1,e=1,n=1,i=-1,r=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=n,this.bottom=i,this.near=r,this.far=a,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=null===t.view?null:Object.assign({},t.view),this}setViewOffset(t,e,n,i,r,a){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let r=n-t,a=n+t,s=i+e,o=i-e;if(null!==this.view&&this.view.enabled){const t=(this.right-this.left)/this.view.fullWidth/this.zoom,e=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=t*this.view.offsetX,a=r+t*this.view.width,s-=e*this.view.offsetY,o=s-e*this.view.height}this.projectionMatrix.makeOrthographic(r,a,s,o,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,null!==this.view&&(e.object.view=Object.assign({},this.view)),e}}const Pi=[.125,.215,.35,.446,.526,.582],Ui=20,Di=new Li,Ii=new fn;let Ni=null,Oi=0,Fi=0;const zi=(1+Math.sqrt(5))/2,Bi=1/zi,Hi=[new Zt(1,1,1),new Zt(-1,1,1),new Zt(1,1,-1),new Zt(-1,1,-1),new Zt(0,zi,Bi),new Zt(0,zi,-Bi),new Zt(Bi,0,zi),new Zt(-Bi,0,zi),new Zt(zi,Bi,0),new Zt(-zi,Bi,0)];class Gi{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,n=.1,i=100){Ni=this._renderer.getRenderTarget(),Oi=this._renderer.getActiveCubeFace(),Fi=this._renderer.getActiveMipmapLevel(),this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(t,n,i,r),e>0&&this._blur(r,0,0,e),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=Xi(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=Wi(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let t=0;tt-4?o=Pi[s-t+4-1]:0===s&&(o=0),i.push(o);const l=1/(a-2),c=-l,h=1+l,u=[c,c,h,c,h,h,c,c,h,h,c,h],d=6,p=6,f=3,m=2,g=1,_=new Float32Array(f*p*d),v=new Float32Array(m*p*d),x=new Float32Array(g*p*d);for(let t=0;t2?0:-1,i=[e,n,0,e+2/3,n,0,e+2/3,n+1,0,e,n,0,e+2/3,n+1,0,e,n+1,0];_.set(i,f*p*t),v.set(u,m*p*t);const r=[t,t,t,t,t,t];x.set(r,g*p*t)}const M=new Un;M.setAttribute("position",new yn(_,f)),M.setAttribute("uv",new yn(v,m)),M.setAttribute("faceIndex",new yn(x,g)),e.push(M),r>4&&r--}return{lodPlanes:e,sizeLods:n,sigmas:i}}(i)),this._blurMaterial=function(t,e,n){const i=new Float32Array(Ui),r=new Zt(0,1,0),a=new ii({name:"SphericalGaussianBlur",defines:{n:Ui,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/n,CUBEUV_MAX_MIP:`${t}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:ji(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1});return a}(i,t,e)}return i}_compileMaterial(t){const e=new Kn(this._lodPlanes[0],t);this._renderer.compile(e,Di)}_sceneToCubeUV(t,e,n,i){const r=new ai(90,1,e,n),a=[1,-1,1,1,1,1],s=[1,1,1,-1,-1,-1],o=this._renderer,c=o.autoClear,h=o.toneMapping;o.getClearColor(Ii),o.toneMapping=p,o.autoClear=!1;const u=new vn({name:"PMREM.Background",side:l,depthWrite:!1,depthTest:!1}),d=new Kn(new Qn,u);let f=!1;const m=t.background;m?m.isColor&&(u.color.copy(m),t.background=null,f=!0):(u.color.copy(Ii),f=!0);for(let e=0;e<6;e++){const n=e%3;0===n?(r.up.set(0,a[e],0),r.lookAt(s[e],0,0)):1===n?(r.up.set(0,0,a[e]),r.lookAt(0,s[e],0)):(r.up.set(0,a[e],0),r.lookAt(0,0,s[e]));const l=this._cubeSize;ki(i,n*l,e>2?l:0,l,l),o.setRenderTarget(i),f&&o.render(d,r),o.render(t,r)}d.geometry.dispose(),d.material.dispose(),o.toneMapping=h,o.autoClear=c,t.background=m}_textureToCubeUV(t,e){const n=this._renderer,i=t.mapping===x||t.mapping===M;i?(null===this._cubemapMaterial&&(this._cubemapMaterial=Xi()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===t.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=Wi());const r=i?this._cubemapMaterial:this._equirectMaterial,a=new Kn(this._lodPlanes[0],r);r.uniforms.envMap.value=t;const s=this._cubeSize;ki(e,0,0,3*s,2*s),n.setRenderTarget(e),n.render(a,Di)}_applyPMREM(t){const e=this._renderer,n=e.autoClear;e.autoClear=!1;for(let e=1;eUi&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${f} samples when the maximum is set to 20`);const m=[];let g=0;for(let t=0;t_-4?i-_+4:0),4*(this._cubeSize-v),3*v,2*v),o.setRenderTarget(e),o.render(c,Di)}}function Vi(t,e,n){const i=new Xt(t,e,n);return i.texture.mapping=y,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function ki(t,e,n,i,r){t.viewport.set(e,n,i,r),t.scissor.set(e,n,i,r)}function Wi(){return new ii({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:ji(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function Xi(){return new ii({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:ji(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function ji(){return"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t"}function Yi(t){let e=new WeakMap,n=null;function i(t){const n=t.target;n.removeEventListener("dispose",i);const r=e.get(n);void 0!==r&&(e.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){const a=r.mapping,s=303===a||304===a,o=a===x||a===M;if(s||o){if(r.isRenderTargetTexture&&!0===r.needsPMREMUpdate){r.needsPMREMUpdate=!1;let i=e.get(r);return null===n&&(n=new Gi(t)),i=s?n.fromEquirectangular(r,i):n.fromCubemap(r,i),e.set(r,i),i.texture}if(e.has(r))return e.get(r).texture;{const a=r.image;if(s&&a&&a.height>0||o&&a&&function(t){let e=0;const n=6;for(let i=0;ie.maxTextureSize&&(b=Math.ceil(T/e.maxTextureSize),T=e.maxTextureSize);const w=new Float32Array(T*b*4*p),A=new jt(w,T,b,p);A.type=D,A.needsUpdate=!0;const R=4*E;for(let L=0;L0)return t;const r=e*n;let a=sr[r];if(void 0===a&&(a=new Float32Array(r),sr[r]=a),0!==e){i.toArray(a,0);for(let i=1,r=0;i!==e;++i)r+=n,t[i].toArray(a,r)}return a}function dr(t,e){if(t.length!==e.length)return!1;for(let n=0,i=t.length;n":" "} ${r}: ${n[t]}`)}return i.join("\n")}(t.getShaderSource(e),i)}return r}function ha(t,e){const n=function(t){const e=Dt.getPrimaries(Dt.workingColorSpace),n=Dt.getPrimaries(t);let i;switch(e===n?i="":e===tt&&n===Q?i="LinearDisplayP3ToLinearSRGB":e===Q&&n===tt&&(i="LinearSRGBToLinearDisplayP3"),t){case Y:case Z:return[i,"LinearTransferOETF"];case j:case q:return[i,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",t),[i,"LinearTransferOETF"]}}(e);return`vec4 ${t}( vec4 value ) { return ${n[0]}( ${n[1]}( value ) ); }`}function ua(t,e){let n;switch(e){case f:n="Linear";break;case m:n="Reinhard";break;case g:n="OptimizedCineon";break;case _:n="ACESFilmic";break;case v:n="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),n="Linear"}return"vec3 "+t+"( vec3 color ) { return "+n+"ToneMapping( color ); }"}function da(t){return""!==t}function pa(t,e){const n=e.numSpotLightShadows+e.numSpotLightMaps-e.numSpotLightShadowsWithMaps;return t.replace(/NUM_DIR_LIGHTS/g,e.numDirLights).replace(/NUM_SPOT_LIGHTS/g,e.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,e.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,n).replace(/NUM_RECT_AREA_LIGHTS/g,e.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,e.numPointLights).replace(/NUM_HEMI_LIGHTS/g,e.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,e.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,e.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,e.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,e.numPointLightShadows)}function fa(t,e){return t.replace(/NUM_CLIPPING_PLANES/g,e.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,e.numClippingPlanes-e.numClipIntersection)}const ma=/^[ \t]*#include +<([\w\d./]+)>/gm;function ga(t){return t.replace(ma,va)}const _a=new Map([["encodings_fragment","colorspace_fragment"],["encodings_pars_fragment","colorspace_pars_fragment"],["output_fragment","opaque_fragment"]]);function va(t,e){let n=Mi[e];if(void 0===n){const t=_a.get(e);if(void 0===t)throw new Error("Can not resolve #include <"+e+">");n=Mi[t],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,t)}return ga(n)}const xa=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Ma(t){return t.replace(xa,ya)}function ya(t,e,n,i){let r="";for(let t=parseInt(e);t0&&(w+="\n"),A=[E,"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,T].filter(da).join("\n"),A.length>0&&(A+="\n")):(w=[Sa(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,T,n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+_:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.displacementMap?"#define USE_DISPLACEMENTMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.mapUv?"#define MAP_UV "+n.mapUv:"",n.alphaMapUv?"#define ALPHAMAP_UV "+n.alphaMapUv:"",n.lightMapUv?"#define LIGHTMAP_UV "+n.lightMapUv:"",n.aoMapUv?"#define AOMAP_UV "+n.aoMapUv:"",n.emissiveMapUv?"#define EMISSIVEMAP_UV "+n.emissiveMapUv:"",n.bumpMapUv?"#define BUMPMAP_UV "+n.bumpMapUv:"",n.normalMapUv?"#define NORMALMAP_UV "+n.normalMapUv:"",n.displacementMapUv?"#define DISPLACEMENTMAP_UV "+n.displacementMapUv:"",n.metalnessMapUv?"#define METALNESSMAP_UV "+n.metalnessMapUv:"",n.roughnessMapUv?"#define ROUGHNESSMAP_UV "+n.roughnessMapUv:"",n.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+n.anisotropyMapUv:"",n.clearcoatMapUv?"#define CLEARCOATMAP_UV "+n.clearcoatMapUv:"",n.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+n.clearcoatNormalMapUv:"",n.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+n.clearcoatRoughnessMapUv:"",n.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+n.iridescenceMapUv:"",n.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+n.iridescenceThicknessMapUv:"",n.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+n.sheenColorMapUv:"",n.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+n.sheenRoughnessMapUv:"",n.specularMapUv?"#define SPECULARMAP_UV "+n.specularMapUv:"",n.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+n.specularColorMapUv:"",n.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+n.specularIntensityMapUv:"",n.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+n.transmissionMapUv:"",n.thicknessMapUv?"#define THICKNESSMAP_UV "+n.thicknessMapUv:"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&!1===n.flatShading?"#define USE_MORPHNORMALS":"",n.morphColors&&n.isWebGL2?"#define USE_MORPHCOLORS":"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+n.morphTextureStride:"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_COUNT "+n.morphTargetsCount:"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+m:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.useLegacyLights?"#define LEGACY_LIGHTS":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1","\tattribute vec2 uv1;","#endif","#ifdef USE_UV2","\tattribute vec2 uv2;","#endif","#ifdef USE_UV3","\tattribute vec2 uv3;","#endif","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(da).join("\n"),A=[E,Sa(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,T,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+g:"",n.envMap?"#define "+_:"",n.envMap?"#define "+v:"",S?"#define CUBEUV_TEXEL_WIDTH "+S.texelWidth:"",S?"#define CUBEUV_TEXEL_HEIGHT "+S.texelHeight:"",S?"#define CUBEUV_MAX_MIP "+S.maxMip+".0":"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoat?"#define USE_CLEARCOAT":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescence?"#define USE_IRIDESCENCE":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaTest?"#define USE_ALPHATEST":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.sheen?"#define USE_SHEEN":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+m:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.useLegacyLights?"#define LEGACY_LIGHTS":"",n.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",n.toneMapping!==p?"#define TONE_MAPPING":"",n.toneMapping!==p?Mi.tonemapping_pars_fragment:"",n.toneMapping!==p?ua("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",n.opaque?"#define OPAQUE":"",Mi.colorspace_pars_fragment,ha("linearToOutputTexel",n.outputColorSpace),n.useDepthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(da).join("\n")),c=ga(c),c=pa(c,n),c=fa(c,n),f=ga(f),f=pa(f,n),f=fa(f,n),c=Ma(c),f=Ma(f),n.isWebGL2&&!0!==n.isRawShaderMaterial&&(R="#version 300 es\n",w=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+w,A=["precision mediump sampler2DArray;","#define varying in",n.glslVersion===it?"":"layout(location = 0) out highp vec4 pc_fragColor;",n.glslVersion===it?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+A);const C=R+w+c,L=R+A+f,P=sa(o,o.VERTEX_SHADER,C),U=sa(o,o.FRAGMENT_SHADER,L);function D(e){if(t.debug.checkShaderErrors){const n=o.getProgramInfoLog(b).trim(),i=o.getShaderInfoLog(P).trim(),r=o.getShaderInfoLog(U).trim();let a=!0,s=!0;if(!1===o.getProgramParameter(b,o.LINK_STATUS))if(a=!1,"function"==typeof t.debug.onShaderError)t.debug.onShaderError(o,b,P,U);else{const t=ca(o,P,"vertex"),e=ca(o,U,"fragment");console.error("THREE.WebGLProgram: Shader Error "+o.getError()+" - VALIDATE_STATUS "+o.getProgramParameter(b,o.VALIDATE_STATUS)+"\n\nProgram Info Log: "+n+"\n"+t+"\n"+e)}else""!==n?console.warn("THREE.WebGLProgram: Program Info Log:",n):""!==i&&""!==r||(s=!1);s&&(e.diagnostics={runnable:a,programLog:n,vertexShader:{log:i,prefix:w},fragmentShader:{log:r,prefix:A}})}o.deleteShader(P),o.deleteShader(U),I=new aa(o,b),N=function(t,e){const n={},i=t.getProgramParameter(e,t.ACTIVE_ATTRIBUTES);for(let r=0;r0,Z=a.clearcoat>0,K=a.iridescence>0,Q=a.sheen>0,tt=a.transmission>0,et=q&&!!a.anisotropyMap,nt=Z&&!!a.clearcoatMap,it=Z&&!!a.clearcoatNormalMap,rt=Z&&!!a.clearcoatRoughnessMap,at=K&&!!a.iridescenceMap,st=K&&!!a.iridescenceThicknessMap,ot=Q&&!!a.sheenColorMap,lt=Q&&!!a.sheenRoughnessMap,ct=!!a.specularMap,ht=!!a.specularColorMap,ut=!!a.specularIntensityMap,dt=tt&&!!a.transmissionMap,pt=tt&&!!a.thicknessMap,ft=!!a.gradientMap,mt=!!a.alphaMap,gt=a.alphaTest>0,_t=!!a.alphaHash,vt=!!a.extensions,xt=!!S.attributes.uv1,Mt=!!S.attributes.uv2,yt=!!S.attributes.uv3;let St=p;return a.toneMapped&&(null!==I&&!0!==I.isXRRenderTarget||(St=t.toneMapping)),{isWebGL2:u,shaderID:w,shaderType:a.type,shaderName:a.name,vertexShader:C,fragmentShader:L,defines:a.defines,customVertexShaderID:P,customFragmentShaderID:U,isRawShaderMaterial:!0===a.isRawShaderMaterial,glslVersion:a.glslVersion,precision:m,instancing:N,instancingColor:N&&null!==x.instanceColor,supportsVertexTextures:f,outputColorSpace:null===I?t.outputColorSpace:!0===I.isXRRenderTarget?I.texture.colorSpace:Y,map:O,matcap:F,envMap:z,envMapMode:z&&T.mapping,envMapCubeUVHeight:b,aoMap:B,lightMap:H,bumpMap:G,normalMap:V,displacementMap:f&&k,emissiveMap:W,normalMapObjectSpace:V&&1===a.normalMapType,normalMapTangentSpace:V&&0===a.normalMapType,metalnessMap:X,roughnessMap:j,anisotropy:q,anisotropyMap:et,clearcoat:Z,clearcoatMap:nt,clearcoatNormalMap:it,clearcoatRoughnessMap:rt,iridescence:K,iridescenceMap:at,iridescenceThicknessMap:st,sheen:Q,sheenColorMap:ot,sheenRoughnessMap:lt,specularMap:ct,specularColorMap:ht,specularIntensityMap:ut,transmission:tt,transmissionMap:dt,thicknessMap:pt,gradientMap:ft,opaque:!1===a.transparent&&1===a.blending,alphaMap:mt,alphaTest:gt,alphaHash:_t,combine:a.combine,mapUv:O&&_(a.map.channel),aoMapUv:B&&_(a.aoMap.channel),lightMapUv:H&&_(a.lightMap.channel),bumpMapUv:G&&_(a.bumpMap.channel),normalMapUv:V&&_(a.normalMap.channel),displacementMapUv:k&&_(a.displacementMap.channel),emissiveMapUv:W&&_(a.emissiveMap.channel),metalnessMapUv:X&&_(a.metalnessMap.channel),roughnessMapUv:j&&_(a.roughnessMap.channel),anisotropyMapUv:et&&_(a.anisotropyMap.channel),clearcoatMapUv:nt&&_(a.clearcoatMap.channel),clearcoatNormalMapUv:it&&_(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:rt&&_(a.clearcoatRoughnessMap.channel),iridescenceMapUv:at&&_(a.iridescenceMap.channel),iridescenceThicknessMapUv:st&&_(a.iridescenceThicknessMap.channel),sheenColorMapUv:ot&&_(a.sheenColorMap.channel),sheenRoughnessMapUv:lt&&_(a.sheenRoughnessMap.channel),specularMapUv:ct&&_(a.specularMap.channel),specularColorMapUv:ht&&_(a.specularColorMap.channel),specularIntensityMapUv:ut&&_(a.specularIntensityMap.channel),transmissionMapUv:dt&&_(a.transmissionMap.channel),thicknessMapUv:pt&&_(a.thicknessMap.channel),alphaMapUv:mt&&_(a.alphaMap.channel),vertexTangents:!!S.attributes.tangent&&(V||q),vertexColors:a.vertexColors,vertexAlphas:!0===a.vertexColors&&!!S.attributes.color&&4===S.attributes.color.itemSize,vertexUv1s:xt,vertexUv2s:Mt,vertexUv3s:yt,pointsUvs:!0===x.isPoints&&!!S.attributes.uv&&(O||mt),fog:!!M,useFog:!0===a.fog,fogExp2:M&&M.isFogExp2,flatShading:!0===a.flatShading,sizeAttenuation:!0===a.sizeAttenuation,logarithmicDepthBuffer:d,skinning:!0===x.isSkinnedMesh,morphTargets:void 0!==S.morphAttributes.position,morphNormals:void 0!==S.morphAttributes.normal,morphColors:void 0!==S.morphAttributes.color,morphTargetsCount:R,morphTextureStride:D,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numSpotLightMaps:o.spotLightMap.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numSpotLightShadowsWithMaps:o.numSpotLightShadowsWithMaps,numLightProbes:o.numLightProbes,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:a.dithering,shadowMapEnabled:t.shadowMap.enabled&&h.length>0,shadowMapType:t.shadowMap.type,toneMapping:St,useLegacyLights:t._useLegacyLights,decodeVideoTexture:O&&!0===a.map.isVideoTexture&&Dt.getTransfer(a.map.colorSpace)===J,premultipliedAlpha:a.premultipliedAlpha,doubleSided:2===a.side,flipSided:a.side===l,useDepthPacking:a.depthPacking>=0,depthPacking:a.depthPacking||0,index0AttributeName:a.index0AttributeName,extensionDerivatives:vt&&!0===a.extensions.derivatives,extensionFragDepth:vt&&!0===a.extensions.fragDepth,extensionDrawBuffers:vt&&!0===a.extensions.drawBuffers,extensionShaderTextureLOD:vt&&!0===a.extensions.shaderTextureLOD,rendererExtensionFragDepth:u||i.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||i.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||i.has("EXT_shader_texture_lod"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:a.customProgramCacheKey()}},getProgramCacheKey:function(e){const n=[];if(e.shaderID?n.push(e.shaderID):(n.push(e.customVertexShaderID),n.push(e.customFragmentShaderID)),void 0!==e.defines)for(const t in e.defines)n.push(t),n.push(e.defines[t]);return!1===e.isRawShaderMaterial&&(!function(t,e){t.push(e.precision),t.push(e.outputColorSpace),t.push(e.envMapMode),t.push(e.envMapCubeUVHeight),t.push(e.mapUv),t.push(e.alphaMapUv),t.push(e.lightMapUv),t.push(e.aoMapUv),t.push(e.bumpMapUv),t.push(e.normalMapUv),t.push(e.displacementMapUv),t.push(e.emissiveMapUv),t.push(e.metalnessMapUv),t.push(e.roughnessMapUv),t.push(e.anisotropyMapUv),t.push(e.clearcoatMapUv),t.push(e.clearcoatNormalMapUv),t.push(e.clearcoatRoughnessMapUv),t.push(e.iridescenceMapUv),t.push(e.iridescenceThicknessMapUv),t.push(e.sheenColorMapUv),t.push(e.sheenRoughnessMapUv),t.push(e.specularMapUv),t.push(e.specularColorMapUv),t.push(e.specularIntensityMapUv),t.push(e.transmissionMapUv),t.push(e.thicknessMapUv),t.push(e.combine),t.push(e.fogExp2),t.push(e.sizeAttenuation),t.push(e.morphTargetsCount),t.push(e.morphAttributeCount),t.push(e.numDirLights),t.push(e.numPointLights),t.push(e.numSpotLights),t.push(e.numSpotLightMaps),t.push(e.numHemiLights),t.push(e.numRectAreaLights),t.push(e.numDirLightShadows),t.push(e.numPointLightShadows),t.push(e.numSpotLightShadows),t.push(e.numSpotLightShadowsWithMaps),t.push(e.numLightProbes),t.push(e.shadowMapType),t.push(e.toneMapping),t.push(e.numClippingPlanes),t.push(e.numClipIntersection),t.push(e.depthPacking)}(n,e),function(t,e){o.disableAll(),e.isWebGL2&&o.enable(0);e.supportsVertexTextures&&o.enable(1);e.instancing&&o.enable(2);e.instancingColor&&o.enable(3);e.matcap&&o.enable(4);e.envMap&&o.enable(5);e.normalMapObjectSpace&&o.enable(6);e.normalMapTangentSpace&&o.enable(7);e.clearcoat&&o.enable(8);e.iridescence&&o.enable(9);e.alphaTest&&o.enable(10);e.vertexColors&&o.enable(11);e.vertexAlphas&&o.enable(12);e.vertexUv1s&&o.enable(13);e.vertexUv2s&&o.enable(14);e.vertexUv3s&&o.enable(15);e.vertexTangents&&o.enable(16);e.anisotropy&&o.enable(17);e.alphaHash&&o.enable(18);t.push(o.mask),o.disableAll(),e.fog&&o.enable(0);e.useFog&&o.enable(1);e.flatShading&&o.enable(2);e.logarithmicDepthBuffer&&o.enable(3);e.skinning&&o.enable(4);e.morphTargets&&o.enable(5);e.morphNormals&&o.enable(6);e.morphColors&&o.enable(7);e.premultipliedAlpha&&o.enable(8);e.shadowMapEnabled&&o.enable(9);e.useLegacyLights&&o.enable(10);e.doubleSided&&o.enable(11);e.flipSided&&o.enable(12);e.useDepthPacking&&o.enable(13);e.dithering&&o.enable(14);e.transmission&&o.enable(15);e.sheen&&o.enable(16);e.opaque&&o.enable(17);e.pointsUvs&&o.enable(18);e.decodeVideoTexture&&o.enable(19);t.push(o.mask)}(n,e),n.push(t.outputColorSpace)),n.push(e.customProgramCacheKey),n.join()},getUniforms:function(t){const e=g[t.type];let n;if(e){const t=Si[e];n=ni.clone(t.uniforms)}else n=t.uniforms;return n},acquireProgram:function(e,n){let i;for(let t=0,e=h.length;t0?i.push(h):!0===s.transparent?r.push(h):n.push(h)},unshift:function(t,e,s,o,l,c){const h=a(t,e,s,o,l,c);s.transmission>0?i.unshift(h):!0===s.transparent?r.unshift(h):n.unshift(h)},finish:function(){for(let n=e,i=t.length;n1&&n.sort(t||Ca),i.length>1&&i.sort(e||La),r.length>1&&r.sort(e||La)}}}function Ua(){let t=new WeakMap;return{get:function(e,n){const i=t.get(e);let r;return void 0===i?(r=new Pa,t.set(e,[r])):n>=i.length?(r=new Pa,i.push(r)):r=i[n],r},dispose:function(){t=new WeakMap}}}function Da(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let n;switch(e.type){case"DirectionalLight":n={direction:new Zt,color:new fn};break;case"SpotLight":n={position:new Zt,direction:new Zt,color:new fn,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new Zt,color:new fn,distance:0,decay:0};break;case"HemisphereLight":n={direction:new Zt,skyColor:new fn,groundColor:new fn};break;case"RectAreaLight":n={color:new fn,position:new Zt,halfWidth:new Zt,halfHeight:new Zt}}return t[e.id]=n,n}}}let Ia=0;function Na(t,e){return(e.castShadow?2:0)-(t.castShadow?2:0)+(e.map?1:0)-(t.map?1:0)}function Oa(t,e){const n=new Da,i=function(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let n;switch(e.type){case"DirectionalLight":case"SpotLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new yt};break;case"PointLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new yt,shadowCameraNear:1,shadowCameraFar:1e3}}return t[e.id]=n,n}}}(),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let t=0;t<9;t++)r.probe.push(new Zt);const a=new Zt,s=new be,o=new be;return{setup:function(a,s){let o=0,l=0,c=0;for(let t=0;t<9;t++)r.probe[t].set(0,0,0);let h=0,u=0,d=0,p=0,f=0,m=0,g=0,_=0,v=0,x=0,M=0;a.sort(Na);const y=!0===s?Math.PI:1;for(let t=0,e=a.length;t0&&(e.isWebGL2||!0===t.has("OES_texture_float_linear")?(r.rectAreaLTC1=yi.LTC_FLOAT_1,r.rectAreaLTC2=yi.LTC_FLOAT_2):!0===t.has("OES_texture_half_float_linear")?(r.rectAreaLTC1=yi.LTC_HALF_1,r.rectAreaLTC2=yi.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),r.ambient[0]=o,r.ambient[1]=l,r.ambient[2]=c;const S=r.hash;S.directionalLength===h&&S.pointLength===u&&S.spotLength===d&&S.rectAreaLength===p&&S.hemiLength===f&&S.numDirectionalShadows===m&&S.numPointShadows===g&&S.numSpotShadows===_&&S.numSpotMaps===v&&S.numLightProbes===M||(r.directional.length=h,r.spot.length=d,r.rectArea.length=p,r.point.length=u,r.hemi.length=f,r.directionalShadow.length=m,r.directionalShadowMap.length=m,r.pointShadow.length=g,r.pointShadowMap.length=g,r.spotShadow.length=_,r.spotShadowMap.length=_,r.directionalShadowMatrix.length=m,r.pointShadowMatrix.length=g,r.spotLightMatrix.length=_+v-x,r.spotLightMap.length=v,r.numSpotLightShadowsWithMaps=x,r.numLightProbes=M,S.directionalLength=h,S.pointLength=u,S.spotLength=d,S.rectAreaLength=p,S.hemiLength=f,S.numDirectionalShadows=m,S.numPointShadows=g,S.numSpotShadows=_,S.numSpotMaps=v,S.numLightProbes=M,r.version=Ia++)},setupView:function(t,e){let n=0,i=0,l=0,c=0,h=0;const u=e.matrixWorldInverse;for(let e=0,d=t.length;e=a.length?(s=new Fa(t,e),a.push(s)):s=a[r],s},dispose:function(){n=new WeakMap}}}class Ba extends _n{constructor(t){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=3200,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}}class Ha extends _n{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}}function Ga(t,e,n){let i=new gi;const a=new yt,c=new yt,h=new kt,u=new Ba({depthPacking:3201}),d=new Ha,p={},f=n.maxTextureSize,m={[o]:l,[l]:o,2:2},g=new ii({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new yt},radius:{value:4}},vertexShader:"void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),_=g.clone();_.defines.HORIZONTAL_PASS=1;const v=new Un;v.setAttribute("position",new yn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const x=new Kn(v,g),M=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=r;let y=this.type;function S(n,i){const r=e.update(x);g.defines.VSM_SAMPLES!==n.blurSamples&&(g.defines.VSM_SAMPLES=n.blurSamples,_.defines.VSM_SAMPLES=n.blurSamples,g.needsUpdate=!0,_.needsUpdate=!0),null===n.mapPass&&(n.mapPass=new Xt(a.x,a.y)),g.uniforms.shadow_pass.value=n.map.texture,g.uniforms.resolution.value=n.mapSize,g.uniforms.radius.value=n.radius,t.setRenderTarget(n.mapPass),t.clear(),t.renderBufferDirect(i,null,r,g,x,null),_.uniforms.shadow_pass.value=n.mapPass.texture,_.uniforms.resolution.value=n.mapSize,_.uniforms.radius.value=n.radius,t.setRenderTarget(n.map),t.clear(),t.renderBufferDirect(i,null,r,_,x,null)}function E(e,n,i,r){let a=null;const o=!0===i.isPointLight?e.customDistanceMaterial:e.customDepthMaterial;if(void 0!==o)a=o;else if(a=!0===i.isPointLight?d:u,t.localClippingEnabled&&!0===n.clipShadows&&Array.isArray(n.clippingPlanes)&&0!==n.clippingPlanes.length||n.displacementMap&&0!==n.displacementScale||n.alphaMap&&n.alphaTest>0||n.map&&n.alphaTest>0){const t=a.uuid,e=n.uuid;let i=p[t];void 0===i&&(i={},p[t]=i);let r=i[e];void 0===r&&(r=a.clone(),i[e]=r),a=r}if(a.visible=n.visible,a.wireframe=n.wireframe,a.side=r===s?null!==n.shadowSide?n.shadowSide:n.side:null!==n.shadowSide?n.shadowSide:m[n.side],a.alphaMap=n.alphaMap,a.alphaTest=n.alphaTest,a.map=n.map,a.clipShadows=n.clipShadows,a.clippingPlanes=n.clippingPlanes,a.clipIntersection=n.clipIntersection,a.displacementMap=n.displacementMap,a.displacementScale=n.displacementScale,a.displacementBias=n.displacementBias,a.wireframeLinewidth=n.wireframeLinewidth,a.linewidth=n.linewidth,!0===i.isPointLight&&!0===a.isMeshDistanceMaterial){t.properties.get(a).light=i}return a}function T(n,r,a,o,l){if(!1===n.visible)return;if(n.layers.test(r.layers)&&(n.isMesh||n.isLine||n.isPoints)&&(n.castShadow||n.receiveShadow&&l===s)&&(!n.frustumCulled||i.intersectsObject(n))){n.modelViewMatrix.multiplyMatrices(a.matrixWorldInverse,n.matrixWorld);const i=e.update(n),r=n.material;if(Array.isArray(r)){const e=i.groups;for(let s=0,c=e.length;sf||a.y>f)&&(a.x>f&&(c.x=Math.floor(f/g.x),a.x=c.x*g.x,u.mapSize.x=c.x),a.y>f&&(c.y=Math.floor(f/g.y),a.y=c.y*g.y,u.mapSize.y=c.y)),null===u.map||!0===p||!0===m){const t=this.type!==s?{minFilter:b,magFilter:b}:{};null!==u.map&&u.map.dispose(),u.map=new Xt(a.x,a.y,t),u.map.texture.name=l.name+".shadowMap",u.camera.updateProjectionMatrix()}t.setRenderTarget(u.map),t.clear();const _=u.getViewportCount();for(let t=0;t<_;t++){const e=u.getViewport(t);h.set(c.x*e.x,c.y*e.y,c.x*e.z,c.y*e.w),d.viewport(h),u.updateMatrices(l,t),i=u.getFrustum(),T(n,r,u.camera,l,this.type)}!0!==u.isPointLightShadow&&this.type===s&&S(u,r),u.needsUpdate=!1}y=this.type,M.needsUpdate=!1,t.setRenderTarget(o,l,u)}}function Va(t,e,n){const i=n.isWebGL2;const r=new function(){let e=!1;const n=new kt;let i=null;const r=new kt(0,0,0,0);return{setMask:function(n){i===n||e||(t.colorMask(n,n,n,n),i=n)},setLocked:function(t){e=t},setClear:function(e,i,a,s,o){!0===o&&(e*=s,i*=s,a*=s),n.set(e,i,a,s),!1===r.equals(n)&&(t.clearColor(e,i,a,s),r.copy(n))},reset:function(){e=!1,i=null,r.set(-1,0,0,0)}}},a=new function(){let e=!1,n=null,i=null,r=null;return{setTest:function(e){e?W(t.DEPTH_TEST):X(t.DEPTH_TEST)},setMask:function(i){n===i||e||(t.depthMask(i),n=i)},setFunc:function(e){if(i!==e){switch(e){case 0:t.depthFunc(t.NEVER);break;case 1:t.depthFunc(t.ALWAYS);break;case 2:t.depthFunc(t.LESS);break;case 3:default:t.depthFunc(t.LEQUAL);break;case 4:t.depthFunc(t.EQUAL);break;case 5:t.depthFunc(t.GEQUAL);break;case 6:t.depthFunc(t.GREATER);break;case 7:t.depthFunc(t.NOTEQUAL)}i=e}},setLocked:function(t){e=t},setClear:function(e){r!==e&&(t.clearDepth(e),r=e)},reset:function(){e=!1,n=null,i=null,r=null}}},s=new function(){let e=!1,n=null,i=null,r=null,a=null,s=null,o=null,l=null,c=null;return{setTest:function(n){e||(n?W(t.STENCIL_TEST):X(t.STENCIL_TEST))},setMask:function(i){n===i||e||(t.stencilMask(i),n=i)},setFunc:function(e,n,s){i===e&&r===n&&a===s||(t.stencilFunc(e,n,s),i=e,r=n,a=s)},setOp:function(e,n,i){s===e&&o===n&&l===i||(t.stencilOp(e,n,i),s=e,o=n,l=i)},setLocked:function(t){e=t},setClear:function(e){c!==e&&(t.clearStencil(e),c=e)},reset:function(){e=!1,n=null,i=null,r=null,a=null,s=null,o=null,l=null,c=null}}},o=new WeakMap,h=new WeakMap;let u={},d={},p=new WeakMap,f=[],m=null,g=!1,_=null,v=null,x=null,M=null,y=null,S=null,E=null,T=new fn(0,0,0),b=0,w=!1,A=null,R=null,C=null,L=null,P=null;const U=t.getParameter(t.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let D=!1,I=0;const N=t.getParameter(t.VERSION);-1!==N.indexOf("WebGL")?(I=parseFloat(/^WebGL (\d)/.exec(N)[1]),D=I>=1):-1!==N.indexOf("OpenGL ES")&&(I=parseFloat(/^OpenGL ES (\d)/.exec(N)[1]),D=I>=2);let O=null,F={};const z=t.getParameter(t.SCISSOR_BOX),B=t.getParameter(t.VIEWPORT),H=(new kt).fromArray(z),G=(new kt).fromArray(B);function V(e,n,r,a){const s=new Uint8Array(4),o=t.createTexture();t.bindTexture(e,o),t.texParameteri(e,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(e,t.TEXTURE_MAG_FILTER,t.NEAREST);for(let o=0;oi||t.height>i)&&(r=i/Math.max(t.width,t.height)),r<1||!0===e){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){const i=e?_t:Math.floor,a=i(r*t.width),s=i(r*t.height);void 0===m&&(m=v(a,s));const o=n?v(a,s):m;o.width=a,o.height=s;return o.getContext("2d").drawImage(t,0,0,a,s),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+t.width+"x"+t.height+") to ("+a+"x"+s+")."),o}return"data"in t&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+t.width+"x"+t.height+")."),t}return t}function M(t){return gt(t.width)&>(t.height)}function y(t,e){return t.generateMipmaps&&e&&t.minFilter!==b&&t.minFilter!==A}function P(e){t.generateMipmap(e)}function B(n,i,r,a,s=!1){if(!1===o)return i;if(null!==n){if(void 0!==t[n])return t[n];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+n+"'")}let l=i;if(i===t.RED&&(r===t.FLOAT&&(l=t.R32F),r===t.HALF_FLOAT&&(l=t.R16F),r===t.UNSIGNED_BYTE&&(l=t.R8)),i===t.RED_INTEGER&&(r===t.UNSIGNED_BYTE&&(l=t.R8UI),r===t.UNSIGNED_SHORT&&(l=t.R16UI),r===t.UNSIGNED_INT&&(l=t.R32UI),r===t.BYTE&&(l=t.R8I),r===t.SHORT&&(l=t.R16I),r===t.INT&&(l=t.R32I)),i===t.RG&&(r===t.FLOAT&&(l=t.RG32F),r===t.HALF_FLOAT&&(l=t.RG16F),r===t.UNSIGNED_BYTE&&(l=t.RG8)),i===t.RGBA){const e=s?K:Dt.getTransfer(a);r===t.FLOAT&&(l=t.RGBA32F),r===t.HALF_FLOAT&&(l=t.RGBA16F),r===t.UNSIGNED_BYTE&&(l=e===J?t.SRGB8_ALPHA8:t.RGBA8),r===t.UNSIGNED_SHORT_4_4_4_4&&(l=t.RGBA4),r===t.UNSIGNED_SHORT_5_5_5_1&&(l=t.RGB5_A1)}return l!==t.R16F&&l!==t.R32F&&l!==t.RG16F&&l!==t.RG32F&&l!==t.RGBA16F&&l!==t.RGBA32F||e.get("EXT_color_buffer_float"),l}function H(t,e,n){return!0===y(t,n)||t.isFramebufferTexture&&t.minFilter!==b&&t.minFilter!==A?Math.log2(Math.max(e.width,e.height))+1:void 0!==t.mipmaps&&t.mipmaps.length>0?t.mipmaps.length:t.isCompressedTexture&&Array.isArray(t.image)?e.mipmaps.length:1}function G(e){return e===b||1004===e||e===w?t.NEAREST:t.LINEAR}function V(t){const e=t.target;e.removeEventListener("dispose",V),function(t){const e=i.get(t);if(void 0===e.__webglInit)return;const n=t.source,r=g.get(n);if(r){const i=r[e.__cacheKey];i.usedTimes--,0===i.usedTimes&&W(t),0===Object.keys(r).length&&g.delete(n)}i.remove(t)}(e),e.isVideoTexture&&f.delete(e)}function k(e){const n=e.target;n.removeEventListener("dispose",k),function(e){const n=e.texture,r=i.get(e),a=i.get(n);void 0!==a.__webglTexture&&(t.deleteTexture(a.__webglTexture),s.memory.textures--);e.depthTexture&&e.depthTexture.dispose();if(e.isWebGLCubeRenderTarget)for(let e=0;e<6;e++){if(Array.isArray(r.__webglFramebuffer[e]))for(let n=0;n0&&a.__version!==e.version){const t=e.image;if(null===t)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==t.complete)return void it(a,e,r);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}n.bindTexture(t.TEXTURE_2D,a.__webglTexture,t.TEXTURE0+r)}const Z={[S]:t.REPEAT,[E]:t.CLAMP_TO_EDGE,[T]:t.MIRRORED_REPEAT},Q={[b]:t.NEAREST,1004:t.NEAREST_MIPMAP_NEAREST,[w]:t.NEAREST_MIPMAP_LINEAR,[A]:t.LINEAR,1007:t.LINEAR_MIPMAP_NEAREST,[R]:t.LINEAR_MIPMAP_LINEAR},tt={512:t.NEVER,519:t.ALWAYS,513:t.LESS,515:t.LEQUAL,514:t.EQUAL,518:t.GEQUAL,516:t.GREATER,517:t.NOTEQUAL};function et(n,a,s){if(s?(t.texParameteri(n,t.TEXTURE_WRAP_S,Z[a.wrapS]),t.texParameteri(n,t.TEXTURE_WRAP_T,Z[a.wrapT]),n!==t.TEXTURE_3D&&n!==t.TEXTURE_2D_ARRAY||t.texParameteri(n,t.TEXTURE_WRAP_R,Z[a.wrapR]),t.texParameteri(n,t.TEXTURE_MAG_FILTER,Q[a.magFilter]),t.texParameteri(n,t.TEXTURE_MIN_FILTER,Q[a.minFilter])):(t.texParameteri(n,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(n,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),n!==t.TEXTURE_3D&&n!==t.TEXTURE_2D_ARRAY||t.texParameteri(n,t.TEXTURE_WRAP_R,t.CLAMP_TO_EDGE),a.wrapS===E&&a.wrapT===E||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),t.texParameteri(n,t.TEXTURE_MAG_FILTER,G(a.magFilter)),t.texParameteri(n,t.TEXTURE_MIN_FILTER,G(a.minFilter)),a.minFilter!==b&&a.minFilter!==A&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),a.compareFunction&&(t.texParameteri(n,t.TEXTURE_COMPARE_MODE,t.COMPARE_REF_TO_TEXTURE),t.texParameteri(n,t.TEXTURE_COMPARE_FUNC,tt[a.compareFunction])),!0===e.has("EXT_texture_filter_anisotropic")){const s=e.get("EXT_texture_filter_anisotropic");if(a.magFilter===b)return;if(a.minFilter!==w&&a.minFilter!==R)return;if(a.type===D&&!1===e.has("OES_texture_float_linear"))return;if(!1===o&&a.type===I&&!1===e.has("OES_texture_half_float_linear"))return;(a.anisotropy>1||i.get(a).__currentAnisotropy)&&(t.texParameterf(n,s.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(a.anisotropy,r.getMaxAnisotropy())),i.get(a).__currentAnisotropy=a.anisotropy)}}function nt(e,n){let i=!1;void 0===e.__webglInit&&(e.__webglInit=!0,n.addEventListener("dispose",V));const r=n.source;let a=g.get(r);void 0===a&&(a={},g.set(r,a));const o=function(t){const e=[];return e.push(t.wrapS),e.push(t.wrapT),e.push(t.wrapR||0),e.push(t.magFilter),e.push(t.minFilter),e.push(t.anisotropy),e.push(t.internalFormat),e.push(t.format),e.push(t.type),e.push(t.generateMipmaps),e.push(t.premultiplyAlpha),e.push(t.flipY),e.push(t.unpackAlignment),e.push(t.colorSpace),e.join()}(n);if(o!==e.__cacheKey){void 0===a[o]&&(a[o]={texture:t.createTexture(),usedTimes:0},s.memory.textures++,i=!0),a[o].usedTimes++;const r=a[e.__cacheKey];void 0!==r&&(a[e.__cacheKey].usedTimes--,0===r.usedTimes&&W(n)),e.__cacheKey=o,e.__webglTexture=a[o].texture}return i}function it(e,r,s){let l=t.TEXTURE_2D;(r.isDataArrayTexture||r.isCompressedArrayTexture)&&(l=t.TEXTURE_2D_ARRAY),r.isData3DTexture&&(l=t.TEXTURE_3D);const c=nt(e,r),u=r.source;n.bindTexture(l,e.__webglTexture,t.TEXTURE0+s);const d=i.get(u);if(u.version!==d.__version||!0===c){n.activeTexture(t.TEXTURE0+s);const e=Dt.getPrimaries(Dt.workingColorSpace),i=r.colorSpace===X?null:Dt.getPrimaries(r.colorSpace),p=r.colorSpace===X||e===i?t.NONE:t.BROWSER_DEFAULT_WEBGL;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,r.flipY),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r.premultiplyAlpha),t.pixelStorei(t.UNPACK_ALIGNMENT,r.unpackAlignment),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,p);const f=function(t){return!o&&(t.wrapS!==E||t.wrapT!==E||t.minFilter!==b&&t.minFilter!==A)}(r)&&!1===M(r.image);let m=x(r.image,f,!1,h);m=ht(r,m);const g=M(m)||o,_=a.convert(r.format,r.colorSpace);let v,S=a.convert(r.type),T=B(r.internalFormat,_,S,r.colorSpace,r.isVideoTexture);et(l,r,g);const w=r.mipmaps,R=o&&!0!==r.isVideoTexture,C=void 0===d.__version||!0===c,I=H(r,m,g);if(r.isDepthTexture)T=t.DEPTH_COMPONENT,o?T=r.type===D?t.DEPTH_COMPONENT32F:r.type===U?t.DEPTH_COMPONENT24:r.type===N?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT16:r.type===D&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),r.format===F&&T===t.DEPTH_COMPONENT&&r.type!==L&&r.type!==U&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),r.type=U,S=a.convert(r.type)),r.format===z&&T===t.DEPTH_COMPONENT&&(T=t.DEPTH_STENCIL,r.type!==N&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),r.type=N,S=a.convert(r.type))),C&&(R?n.texStorage2D(t.TEXTURE_2D,1,T,m.width,m.height):n.texImage2D(t.TEXTURE_2D,0,T,m.width,m.height,0,_,S,null));else if(r.isDataTexture)if(w.length>0&&g){R&&C&&n.texStorage2D(t.TEXTURE_2D,I,T,w[0].width,w[0].height);for(let e=0,i=w.length;e>=1,i>>=1}}else if(w.length>0&&g){R&&C&&n.texStorage2D(t.TEXTURE_2D,I,T,w[0].width,w[0].height);for(let e=0,i=w.length;e>c),i=Math.max(1,r.height>>c);l===t.TEXTURE_3D||l===t.TEXTURE_2D_ARRAY?n.texImage3D(l,c,p,e,i,r.depth,0,h,u,null):n.texImage2D(l,c,p,e,i,0,h,u,null)}n.bindFramebuffer(t.FRAMEBUFFER,e),ct(r)?d.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,o,l,i.get(s).__webglTexture,0,lt(r)):(l===t.TEXTURE_2D||l>=t.TEXTURE_CUBE_MAP_POSITIVE_X&&l<=t.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&t.framebufferTexture2D(t.FRAMEBUFFER,o,l,i.get(s).__webglTexture,c),n.bindFramebuffer(t.FRAMEBUFFER,null)}function st(e,n,i){if(t.bindRenderbuffer(t.RENDERBUFFER,e),n.depthBuffer&&!n.stencilBuffer){let r=!0===o?t.DEPTH_COMPONENT24:t.DEPTH_COMPONENT16;if(i||ct(n)){const e=n.depthTexture;e&&e.isDepthTexture&&(e.type===D?r=t.DEPTH_COMPONENT32F:e.type===U&&(r=t.DEPTH_COMPONENT24));const i=lt(n);ct(n)?d.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,i,r,n.width,n.height):t.renderbufferStorageMultisample(t.RENDERBUFFER,i,r,n.width,n.height)}else t.renderbufferStorage(t.RENDERBUFFER,r,n.width,n.height);t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,e)}else if(n.depthBuffer&&n.stencilBuffer){const r=lt(n);i&&!1===ct(n)?t.renderbufferStorageMultisample(t.RENDERBUFFER,r,t.DEPTH24_STENCIL8,n.width,n.height):ct(n)?d.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,r,t.DEPTH24_STENCIL8,n.width,n.height):t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_STENCIL,n.width,n.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,e)}else{const e=!0===n.isWebGLMultipleRenderTargets?n.texture:[n.texture];for(let r=0;r0&&!0===e.has("WEBGL_multisampled_render_to_texture")&&!1!==n.__useRenderToTexture}function ht(t,n){const i=t.colorSpace,r=t.format,a=t.type;return!0===t.isCompressedTexture||!0===t.isVideoTexture||t.format===rt||i!==Y&&i!==X&&(Dt.getTransfer(i)===J?!1===o?!0===e.has("EXT_sRGB")&&r===O?(t.format=rt,t.minFilter=A,t.generateMipmaps=!1):n=Ft.sRGBToLinear(n):r===O&&a===C||console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",i)),n}this.allocateTextureUnit=function(){const t=j;return t>=l&&console.warn("THREE.WebGLTextures: Trying to use "+t+" texture units while this GPU supports only "+l),j+=1,t},this.resetTextureUnits=function(){j=0},this.setTexture2D=q,this.setTexture2DArray=function(e,r){const a=i.get(e);e.version>0&&a.__version!==e.version?it(a,e,r):n.bindTexture(t.TEXTURE_2D_ARRAY,a.__webglTexture,t.TEXTURE0+r)},this.setTexture3D=function(e,r){const a=i.get(e);e.version>0&&a.__version!==e.version?it(a,e,r):n.bindTexture(t.TEXTURE_3D,a.__webglTexture,t.TEXTURE0+r)},this.setTextureCube=function(e,r){const s=i.get(e);e.version>0&&s.__version!==e.version?function(e,r,s){if(6!==r.image.length)return;const l=nt(e,r),h=r.source;n.bindTexture(t.TEXTURE_CUBE_MAP,e.__webglTexture,t.TEXTURE0+s);const u=i.get(h);if(h.version!==u.__version||!0===l){n.activeTexture(t.TEXTURE0+s);const e=Dt.getPrimaries(Dt.workingColorSpace),i=r.colorSpace===X?null:Dt.getPrimaries(r.colorSpace),d=r.colorSpace===X||e===i?t.NONE:t.BROWSER_DEFAULT_WEBGL;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,r.flipY),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r.premultiplyAlpha),t.pixelStorei(t.UNPACK_ALIGNMENT,r.unpackAlignment),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,d);const p=r.isCompressedTexture||r.image[0].isCompressedTexture,f=r.image[0]&&r.image[0].isDataTexture,m=[];for(let t=0;t<6;t++)m[t]=p||f?f?r.image[t].image:r.image[t]:x(r.image[t],!1,!0,c),m[t]=ht(r,m[t]);const g=m[0],_=M(g)||o,v=a.convert(r.format,r.colorSpace),S=a.convert(r.type),E=B(r.internalFormat,v,S,r.colorSpace),T=o&&!0!==r.isVideoTexture,b=void 0===u.__version||!0===l;let w,A=H(r,g,_);if(et(t.TEXTURE_CUBE_MAP,r,_),p){T&&b&&n.texStorage2D(t.TEXTURE_CUBE_MAP,A,E,g.width,g.height);for(let e=0;e<6;e++){w=m[e].mipmaps;for(let i=0;i0&&A++,n.texStorage2D(t.TEXTURE_CUBE_MAP,A,E,m[0].width,m[0].height));for(let e=0;e<6;e++)if(f){T?n.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,0,0,m[e].width,m[e].height,v,S,m[e].data):n.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,E,m[e].width,m[e].height,0,v,S,m[e].data);for(let i=0;i0){c.__webglFramebuffer[e]=[];for(let n=0;n0){c.__webglFramebuffer=[];for(let e=0;e0&&!1===ct(e)){const i=d?l:[l];c.__webglMultisampledFramebuffer=t.createFramebuffer(),c.__webglColorRenderbuffer=[],n.bindFramebuffer(t.FRAMEBUFFER,c.__webglMultisampledFramebuffer);for(let n=0;n0)for(let i=0;i0)for(let n=0;n0&&!1===ct(e)){const r=e.isWebGLMultipleRenderTargets?e.texture:[e.texture],a=e.width,s=e.height;let o=t.COLOR_BUFFER_BIT;const l=[],c=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,h=i.get(e),u=!0===e.isWebGLMultipleRenderTargets;if(u)for(let e=0;eo+c?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!l.inputState.pinching&&s<=o-c&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else null!==o&&t.gripSpace&&(r=e.getPose(t.gripSpace,n),null!==r&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1));null!==s&&(i=e.getPose(t.targetRaySpace,n),null===i&&null!==r&&(i=r),null!==i&&(s.matrix.fromArray(i.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale),s.matrixWorldNeedsUpdate=!0,i.linearVelocity?(s.hasLinearVelocity=!0,s.linearVelocity.copy(i.linearVelocity)):s.hasLinearVelocity=!1,i.angularVelocity?(s.hasAngularVelocity=!0,s.angularVelocity.copy(i.angularVelocity)):s.hasAngularVelocity=!1,this.dispatchEvent(Ya)))}return null!==s&&(s.visible=null!==i),null!==o&&(o.visible=null!==r),null!==l&&(l.visible=null!==a),this}_getHandJoint(t,e){if(void 0===t.joints[e.jointName]){const n=new ja;n.matrixAutoUpdate=!1,n.visible=!1,t.joints[e.jointName]=n,t.add(n)}return t.joints[e.jointName]}}class Za extends Vt{constructor(t,e,n,i,r,a,s,o,l,c){if((c=void 0!==c?c:F)!==F&&c!==z)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===n&&c===F&&(n=U),void 0===n&&c===z&&(n=N),super(null,i,r,a,s,o,c,n,l),this.isDepthTexture=!0,this.image={width:t,height:e},this.magFilter=void 0!==s?s:b,this.minFilter=void 0!==o?o:b,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(t){return super.copy(t),this.compareFunction=t.compareFunction,this}toJSON(t){const e=super.toJSON(t);return null!==this.compareFunction&&(e.compareFunction=this.compareFunction),e}}class Ka extends ot{constructor(t,e){super();const n=this;let i=null,r=1,a=null,s="local-floor",o=1,l=null,c=null,h=null,u=null,d=null,p=null;const f=e.getContextAttributes();let m=null,g=null;const _=[],v=[],x=new ai;x.layers.enable(1),x.viewport=new kt;const M=new ai;M.layers.enable(2),M.viewport=new kt;const y=[x,M],S=new Xa;S.layers.enable(1),S.layers.enable(2);let E=null,T=null;function b(t){const e=v.indexOf(t.inputSource);if(-1===e)return;const n=_[e];void 0!==n&&(n.update(t.inputSource,t.frame,l||a),n.dispatchEvent({type:t.type,data:t.inputSource}))}function w(){i.removeEventListener("select",b),i.removeEventListener("selectstart",b),i.removeEventListener("selectend",b),i.removeEventListener("squeeze",b),i.removeEventListener("squeezestart",b),i.removeEventListener("squeezeend",b),i.removeEventListener("end",w),i.removeEventListener("inputsourceschange",A);for(let t=0;t<_.length;t++){const e=v[t];null!==e&&(v[t]=null,_[t].disconnect(e))}E=null,T=null,t.setRenderTarget(m),d=null,u=null,h=null,i=null,g=null,I.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}function A(t){for(let e=0;e=0&&(v[i]=null,_[i].disconnect(n))}for(let e=0;e=v.length){v.push(n),i=t;break}if(null===v[t]){v[t]=n,i=t;break}}if(-1===i)break}const r=_[i];r&&r.connect(n)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(t){let e=_[t];return void 0===e&&(e=new qa,_[t]=e),e.getTargetRaySpace()},this.getControllerGrip=function(t){let e=_[t];return void 0===e&&(e=new qa,_[t]=e),e.getGripSpace()},this.getHand=function(t){let e=_[t];return void 0===e&&(e=new qa,_[t]=e),e.getHandSpace()},this.setFramebufferScaleFactor=function(t){r=t,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(t){s=t,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||a},this.setReferenceSpace=function(t){l=t},this.getBaseLayer=function(){return null!==u?u:d},this.getBinding=function(){return h},this.getFrame=function(){return p},this.getSession=function(){return i},this.setSession=async function(c){if(i=c,null!==i){if(m=t.getRenderTarget(),i.addEventListener("select",b),i.addEventListener("selectstart",b),i.addEventListener("selectend",b),i.addEventListener("squeeze",b),i.addEventListener("squeezestart",b),i.addEventListener("squeezeend",b),i.addEventListener("end",w),i.addEventListener("inputsourceschange",A),!0!==f.xrCompatible&&await e.makeXRCompatible(),void 0===i.renderState.layers||!1===t.capabilities.isWebGL2){const n={antialias:void 0!==i.renderState.layers||f.antialias,alpha:!0,depth:f.depth,stencil:f.stencil,framebufferScaleFactor:r};d=new XRWebGLLayer(i,e,n),i.updateRenderState({baseLayer:d}),g=new Xt(d.framebufferWidth,d.framebufferHeight,{format:O,type:C,colorSpace:t.outputColorSpace,stencilBuffer:f.stencil})}else{let n=null,a=null,s=null;f.depth&&(s=f.stencil?e.DEPTH24_STENCIL8:e.DEPTH_COMPONENT24,n=f.stencil?z:F,a=f.stencil?N:U);const o={colorFormat:e.RGBA8,depthFormat:s,scaleFactor:r};h=new XRWebGLBinding(i,e),u=h.createProjectionLayer(o),i.updateRenderState({layers:[u]}),g=new Xt(u.textureWidth,u.textureHeight,{format:O,type:C,depthTexture:new Za(u.textureWidth,u.textureHeight,a,void 0,void 0,void 0,void 0,void 0,void 0,n),stencilBuffer:f.stencil,colorSpace:t.outputColorSpace,samples:f.antialias?4:0});t.properties.get(g).__ignoreDepthValues=u.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(o),l=null,a=await i.requestReferenceSpace(s),I.setContext(i),I.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(null!==i)return i.environmentBlendMode};const R=new Zt,L=new Zt;function P(t,e){null===e?t.matrixWorld.copy(t.matrix):t.matrixWorld.multiplyMatrices(e.matrixWorld,t.matrix),t.matrixWorldInverse.copy(t.matrixWorld).invert()}this.updateCamera=function(t){if(null===i)return;S.near=M.near=x.near=t.near,S.far=M.far=x.far=t.far,E===S.near&&T===S.far||(i.updateRenderState({depthNear:S.near,depthFar:S.far}),E=S.near,T=S.far);const e=t.parent,n=S.cameras;P(S,e);for(let t=0;t0&&(i.alphaTest.value=r.alphaTest);const a=e.get(r).envMap;if(a&&(i.envMap.value=a,i.flipEnvMap.value=a.isCubeTexture&&!1===a.isRenderTargetTexture?-1:1,i.reflectivity.value=r.reflectivity,i.ior.value=r.ior,i.refractionRatio.value=r.refractionRatio),r.lightMap){i.lightMap.value=r.lightMap;const e=!0===t._useLegacyLights?Math.PI:1;i.lightMapIntensity.value=r.lightMapIntensity*e,n(r.lightMap,i.lightMapTransform)}r.aoMap&&(i.aoMap.value=r.aoMap,i.aoMapIntensity.value=r.aoMapIntensity,n(r.aoMap,i.aoMapTransform))}return{refreshFogUniforms:function(e,n){n.color.getRGB(e.fogColor.value,ei(t)),n.isFog?(e.fogNear.value=n.near,e.fogFar.value=n.far):n.isFogExp2&&(e.fogDensity.value=n.density)},refreshMaterialUniforms:function(t,r,a,s,o){r.isMeshBasicMaterial||r.isMeshLambertMaterial?i(t,r):r.isMeshToonMaterial?(i(t,r),function(t,e){e.gradientMap&&(t.gradientMap.value=e.gradientMap)}(t,r)):r.isMeshPhongMaterial?(i(t,r),function(t,e){t.specular.value.copy(e.specular),t.shininess.value=Math.max(e.shininess,1e-4)}(t,r)):r.isMeshStandardMaterial?(i(t,r),function(t,i){t.metalness.value=i.metalness,i.metalnessMap&&(t.metalnessMap.value=i.metalnessMap,n(i.metalnessMap,t.metalnessMapTransform));t.roughness.value=i.roughness,i.roughnessMap&&(t.roughnessMap.value=i.roughnessMap,n(i.roughnessMap,t.roughnessMapTransform));const r=e.get(i).envMap;r&&(t.envMapIntensity.value=i.envMapIntensity)}(t,r),r.isMeshPhysicalMaterial&&function(t,e,i){t.ior.value=e.ior,e.sheen>0&&(t.sheenColor.value.copy(e.sheenColor).multiplyScalar(e.sheen),t.sheenRoughness.value=e.sheenRoughness,e.sheenColorMap&&(t.sheenColorMap.value=e.sheenColorMap,n(e.sheenColorMap,t.sheenColorMapTransform)),e.sheenRoughnessMap&&(t.sheenRoughnessMap.value=e.sheenRoughnessMap,n(e.sheenRoughnessMap,t.sheenRoughnessMapTransform)));e.clearcoat>0&&(t.clearcoat.value=e.clearcoat,t.clearcoatRoughness.value=e.clearcoatRoughness,e.clearcoatMap&&(t.clearcoatMap.value=e.clearcoatMap,n(e.clearcoatMap,t.clearcoatMapTransform)),e.clearcoatRoughnessMap&&(t.clearcoatRoughnessMap.value=e.clearcoatRoughnessMap,n(e.clearcoatRoughnessMap,t.clearcoatRoughnessMapTransform)),e.clearcoatNormalMap&&(t.clearcoatNormalMap.value=e.clearcoatNormalMap,n(e.clearcoatNormalMap,t.clearcoatNormalMapTransform),t.clearcoatNormalScale.value.copy(e.clearcoatNormalScale),e.side===l&&t.clearcoatNormalScale.value.negate()));e.iridescence>0&&(t.iridescence.value=e.iridescence,t.iridescenceIOR.value=e.iridescenceIOR,t.iridescenceThicknessMinimum.value=e.iridescenceThicknessRange[0],t.iridescenceThicknessMaximum.value=e.iridescenceThicknessRange[1],e.iridescenceMap&&(t.iridescenceMap.value=e.iridescenceMap,n(e.iridescenceMap,t.iridescenceMapTransform)),e.iridescenceThicknessMap&&(t.iridescenceThicknessMap.value=e.iridescenceThicknessMap,n(e.iridescenceThicknessMap,t.iridescenceThicknessMapTransform)));e.transmission>0&&(t.transmission.value=e.transmission,t.transmissionSamplerMap.value=i.texture,t.transmissionSamplerSize.value.set(i.width,i.height),e.transmissionMap&&(t.transmissionMap.value=e.transmissionMap,n(e.transmissionMap,t.transmissionMapTransform)),t.thickness.value=e.thickness,e.thicknessMap&&(t.thicknessMap.value=e.thicknessMap,n(e.thicknessMap,t.thicknessMapTransform)),t.attenuationDistance.value=e.attenuationDistance,t.attenuationColor.value.copy(e.attenuationColor));e.anisotropy>0&&(t.anisotropyVector.value.set(e.anisotropy*Math.cos(e.anisotropyRotation),e.anisotropy*Math.sin(e.anisotropyRotation)),e.anisotropyMap&&(t.anisotropyMap.value=e.anisotropyMap,n(e.anisotropyMap,t.anisotropyMapTransform)));t.specularIntensity.value=e.specularIntensity,t.specularColor.value.copy(e.specularColor),e.specularColorMap&&(t.specularColorMap.value=e.specularColorMap,n(e.specularColorMap,t.specularColorMapTransform));e.specularIntensityMap&&(t.specularIntensityMap.value=e.specularIntensityMap,n(e.specularIntensityMap,t.specularIntensityMapTransform))}(t,r,o)):r.isMeshMatcapMaterial?(i(t,r),function(t,e){e.matcap&&(t.matcap.value=e.matcap)}(t,r)):r.isMeshDepthMaterial?i(t,r):r.isMeshDistanceMaterial?(i(t,r),function(t,n){const i=e.get(n).light;t.referencePosition.value.setFromMatrixPosition(i.matrixWorld),t.nearDistance.value=i.shadow.camera.near,t.farDistance.value=i.shadow.camera.far}(t,r)):r.isMeshNormalMaterial?i(t,r):r.isLineBasicMaterial?(function(t,e){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,e.map&&(t.map.value=e.map,n(e.map,t.mapTransform))}(t,r),r.isLineDashedMaterial&&function(t,e){t.dashSize.value=e.dashSize,t.totalSize.value=e.dashSize+e.gapSize,t.scale.value=e.scale}(t,r)):r.isPointsMaterial?function(t,e,i,r){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.size.value=e.size*i,t.scale.value=.5*r,e.map&&(t.map.value=e.map,n(e.map,t.uvTransform));e.alphaMap&&(t.alphaMap.value=e.alphaMap,n(e.alphaMap,t.alphaMapTransform));e.alphaTest>0&&(t.alphaTest.value=e.alphaTest)}(t,r,a,s):r.isSpriteMaterial?function(t,e){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.rotation.value=e.rotation,e.map&&(t.map.value=e.map,n(e.map,t.mapTransform));e.alphaMap&&(t.alphaMap.value=e.alphaMap,n(e.alphaMap,t.alphaMapTransform));e.alphaTest>0&&(t.alphaTest.value=e.alphaTest)}(t,r):r.isShadowMaterial?(t.color.value.copy(r.color),t.opacity.value=r.opacity):r.isShaderMaterial&&(r.uniformsNeedUpdate=!1)}}}function Qa(t,e,n,i){let r={},a={},s=[];const o=n.isWebGL2?t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS):0;function l(t,e,n){const i=t.value;if(void 0===n[e]){if("number"==typeof i)n[e]=i;else{const t=Array.isArray(i)?i:[i],r=[];for(let e=0;e0){r=n%i;0!==r&&i-r-s.boundary<0&&(n+=i-r,a.__offset=n)}n+=s.storage}r=n%i,r>0&&(n+=i-r);t.__size=n,t.__cache={}}(n),d=function(e){const n=function(){for(let t=0;t0),u=!!n.morphAttributes.position,d=!!n.morphAttributes.normal,f=!!n.morphAttributes.color;let m=p;i.toneMapped&&(null!==w&&!0!==w.isXRRenderTarget||(m=S.toneMapping));const g=n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color,_=void 0!==g?g.length:0,v=dt.get(i),M=x.state.lights;if(!0===tt&&(!0===et||t!==P)){const e=t===P&&i.id===A;bt.setState(i,t,e)}let y=!1;i.version===v.__version?v.needsLights&&v.lightsStateVersion!==M.state.version||v.outputColorSpace!==o||r.isInstancedMesh&&!1===v.instancing?y=!0:r.isInstancedMesh||!0!==v.instancing?r.isSkinnedMesh&&!1===v.skinning?y=!0:r.isSkinnedMesh||!0!==v.skinning?r.isInstancedMesh&&!0===v.instancingColor&&null===r.instanceColor||r.isInstancedMesh&&!1===v.instancingColor&&null!==r.instanceColor||v.envMap!==l||!0===i.fog&&v.fog!==a?y=!0:void 0===v.numClippingPlanes||v.numClippingPlanes===bt.numPlanes&&v.numIntersection===bt.numIntersection?(v.vertexAlphas!==c||v.vertexTangents!==h||v.morphTargets!==u||v.morphNormals!==d||v.morphColors!==f||v.toneMapping!==m||!0===ct.isWebGL2&&v.morphTargetsCount!==_)&&(y=!0):y=!0:y=!0:y=!0:(y=!0,v.__version=i.version);let E=v.currentProgram;!0===y&&(E=ee(i,e,r));let T=!1,b=!1,R=!1;const C=E.getUniforms(),L=v.uniforms;ht.useProgram(E.program)&&(T=!0,b=!0,R=!0);i.id!==A&&(A=i.id,b=!0);if(T||P!==t){C.setValue(Nt,"projectionMatrix",t.projectionMatrix),C.setValue(Nt,"viewMatrix",t.matrixWorldInverse);const e=C.map.cameraPosition;void 0!==e&&e.setValue(Nt,at.setFromMatrixPosition(t.matrixWorld)),ct.logarithmicDepthBuffer&&C.setValue(Nt,"logDepthBufFC",2/(Math.log(t.far+1)/Math.LN2)),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&C.setValue(Nt,"isOrthographic",!0===t.isOrthographicCamera),P!==t&&(P=t,b=!0,R=!0)}if(r.isSkinnedMesh){C.setOptional(Nt,r,"bindMatrix"),C.setOptional(Nt,r,"bindMatrixInverse");const t=r.skeleton;t&&(ct.floatVertexTextures?(null===t.boneTexture&&t.computeBoneTexture(),C.setValue(Nt,"boneTexture",t.boneTexture,pt),C.setValue(Nt,"boneTextureSize",t.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}const U=n.morphAttributes;(void 0!==U.position||void 0!==U.normal||void 0!==U.color&&!0===ct.isWebGL2)&&Ct.update(r,n,E);(b||v.receiveShadow!==r.receiveShadow)&&(v.receiveShadow=r.receiveShadow,C.setValue(Nt,"receiveShadow",r.receiveShadow));i.isMeshGouraudMaterial&&null!==i.envMap&&(L.envMap.value=l,L.flipEnvMap.value=l.isCubeTexture&&!1===l.isRenderTargetTexture?-1:1);b&&(C.setValue(Nt,"toneMappingExposure",S.toneMappingExposure),v.needsLights&&(I=R,(D=L).ambientLightColor.needsUpdate=I,D.lightProbe.needsUpdate=I,D.directionalLights.needsUpdate=I,D.directionalLightShadows.needsUpdate=I,D.pointLights.needsUpdate=I,D.pointLightShadows.needsUpdate=I,D.spotLights.needsUpdate=I,D.spotLightShadows.needsUpdate=I,D.rectAreaLights.needsUpdate=I,D.hemisphereLights.needsUpdate=I),a&&!0===i.fog&&St.refreshFogUniforms(L,a),St.refreshMaterialUniforms(L,i,W,k,nt),aa.upload(Nt,ne(v),L,pt));var D,I;i.isShaderMaterial&&!0===i.uniformsNeedUpdate&&(aa.upload(Nt,ne(v),L,pt),i.uniformsNeedUpdate=!1);i.isSpriteMaterial&&C.setValue(Nt,"center",r.center);if(C.setValue(Nt,"modelViewMatrix",r.modelViewMatrix),C.setValue(Nt,"normalMatrix",r.normalMatrix),C.setValue(Nt,"modelMatrix",r.matrixWorld),i.isShaderMaterial||i.isRawShaderMaterial){const t=i.uniformsGroups;for(let e=0,n=t.length;e{function n(){i.forEach((function(t){dt.get(t).currentProgram.isReady()&&i.delete(t)})),0!==i.size?setTimeout(n,10):e(t)}null!==lt.get("KHR_parallel_shader_compile")?n():setTimeout(n,10)}))};let jt=null;function Yt(){Kt.stop()}function qt(){Kt.start()}const Kt=new _i;function Jt(t,e,n,i){if(!1===t.visible)return;if(t.layers.test(e.layers))if(t.isGroup)n=t.renderOrder;else if(t.isLOD)!0===t.autoUpdate&&t.update(e);else if(t.isLight)x.pushLight(t),t.castShadow&&x.pushShadow(t);else if(t.isSprite){if(!t.frustumCulled||Q.intersectsSprite(t)){i&&at.setFromMatrixPosition(t.matrixWorld).applyMatrix4(it);const e=xt.update(t),r=t.material;r.visible&&v.push(t,e,r,n,at.z,null)}}else if((t.isMesh||t.isLine||t.isPoints)&&(!t.frustumCulled||Q.intersectsObject(t))){const e=xt.update(t),r=t.material;if(i&&(void 0!==t.boundingSphere?(null===t.boundingSphere&&t.computeBoundingSphere(),at.copy(t.boundingSphere.center)):(null===e.boundingSphere&&e.computeBoundingSphere(),at.copy(e.boundingSphere.center)),at.applyMatrix4(t.matrixWorld).applyMatrix4(it)),Array.isArray(r)){const i=e.groups;for(let a=0,s=i.length;a0&&function(t,e,n,i){const r=!0===n.isScene?n.overrideMaterial:null;if(null!==r)return;const a=ct.isWebGL2;null===nt&&(nt=new Xt(1,1,{generateMipmaps:!0,type:lt.has("EXT_color_buffer_half_float")?I:C,minFilter:R,samples:a?4:0}));S.getDrawingBufferSize(rt),a?nt.setSize(rt.x,rt.y):nt.setSize(_t(rt.x),_t(rt.y));const s=S.getRenderTarget();S.setRenderTarget(nt),S.getClearColor(H),G=S.getClearAlpha(),G<1&&S.setClearColor(16777215,.5);S.clear();const o=S.toneMapping;S.toneMapping=p,$t(t,n,i),pt.updateMultisampleRenderTarget(nt),pt.updateRenderTargetMipmap(nt);let c=!1;for(let t=0,r=e.length;t0&&$t(r,e,n),a.length>0&&$t(a,e,n),s.length>0&&$t(s,e,n),ht.buffers.depth.setTest(!0),ht.buffers.depth.setMask(!0),ht.buffers.color.setMask(!0),ht.setPolygonOffset(!1)}function $t(t,e,n){const i=!0===e.isScene?e.overrideMaterial:null;for(let r=0,a=t.length;r0?y[y.length-1]:null,M.pop(),v=M.length>0?M[M.length-1]:null},this.getActiveCubeFace=function(){return T},this.getActiveMipmapLevel=function(){return b},this.getRenderTarget=function(){return w},this.setRenderTargetTextures=function(t,e,n){dt.get(t.texture).__webglTexture=e,dt.get(t.depthTexture).__webglTexture=n;const i=dt.get(t);i.__hasExternalTextures=!0,i.__hasExternalTextures&&(i.__autoAllocateDepthBuffer=void 0===n,i.__autoAllocateDepthBuffer||!0===lt.has("WEBGL_multisampled_render_to_texture")&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),i.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(t,e){const n=dt.get(t);n.__webglFramebuffer=e,n.__useDefaultFramebuffer=void 0===e},this.setRenderTarget=function(t,e=0,n=0){w=t,T=e,b=n;let i=!0,r=null,a=!1,s=!1;if(t){const o=dt.get(t);void 0!==o.__useDefaultFramebuffer?(ht.bindFramebuffer(Nt.FRAMEBUFFER,null),i=!1):void 0===o.__webglFramebuffer?pt.setupRenderTarget(t):o.__hasExternalTextures&&pt.rebindTextures(t,dt.get(t.texture).__webglTexture,dt.get(t.depthTexture).__webglTexture);const l=t.texture;(l.isData3DTexture||l.isDataArrayTexture||l.isCompressedArrayTexture)&&(s=!0);const c=dt.get(t).__webglFramebuffer;t.isWebGLCubeRenderTarget?(r=Array.isArray(c[e])?c[e][n]:c[e],a=!0):r=ct.isWebGL2&&t.samples>0&&!1===pt.useMultisampledRTT(t)?dt.get(t).__webglMultisampledFramebuffer:Array.isArray(c)?c[n]:c,F.copy(t.viewport),z.copy(t.scissor),B=t.scissorTest}else F.copy(Z).multiplyScalar(W).floor(),z.copy(K).multiplyScalar(W).floor(),B=J;if(ht.bindFramebuffer(Nt.FRAMEBUFFER,r)&&ct.drawBuffers&&i&&ht.drawBuffers(t,r),ht.viewport(F),ht.scissor(z),ht.setScissorTest(B),a){const i=dt.get(t.texture);Nt.framebufferTexture2D(Nt.FRAMEBUFFER,Nt.COLOR_ATTACHMENT0,Nt.TEXTURE_CUBE_MAP_POSITIVE_X+e,i.__webglTexture,n)}else if(s){const i=dt.get(t.texture),r=e||0;Nt.framebufferTextureLayer(Nt.FRAMEBUFFER,Nt.COLOR_ATTACHMENT0,i.__webglTexture,n||0,r)}A=-1},this.readRenderTargetPixels=function(t,e,n,i,r,a,s){if(!t||!t.isWebGLRenderTarget)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let o=dt.get(t).__webglFramebuffer;if(t.isWebGLCubeRenderTarget&&void 0!==s&&(o=o[s]),o){ht.bindFramebuffer(Nt.FRAMEBUFFER,o);try{const s=t.texture,o=s.format,l=s.type;if(o!==O&&Ut.convert(o)!==Nt.getParameter(Nt.IMPLEMENTATION_COLOR_READ_FORMAT))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");const c=l===I&&(lt.has("EXT_color_buffer_half_float")||ct.isWebGL2&<.has("EXT_color_buffer_float"));if(!(l===C||Ut.convert(l)===Nt.getParameter(Nt.IMPLEMENTATION_COLOR_READ_TYPE)||l===D&&(ct.isWebGL2||lt.has("OES_texture_float")||lt.has("WEBGL_color_buffer_float"))||c))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");e>=0&&e<=t.width-i&&n>=0&&n<=t.height-r&&Nt.readPixels(e,n,i,r,Ut.convert(o),Ut.convert(l),a)}finally{const t=null!==w?dt.get(w).__webglFramebuffer:null;ht.bindFramebuffer(Nt.FRAMEBUFFER,t)}}},this.copyFramebufferToTexture=function(t,e,n=0){const i=Math.pow(2,-n),r=Math.floor(e.image.width*i),a=Math.floor(e.image.height*i);pt.setTexture2D(e,0),Nt.copyTexSubImage2D(Nt.TEXTURE_2D,n,0,0,t.x,t.y,r,a),ht.unbindTexture()},this.copyTextureToTexture=function(t,e,n,i=0){const r=e.image.width,a=e.image.height,s=Ut.convert(n.format),o=Ut.convert(n.type);pt.setTexture2D(n,0),Nt.pixelStorei(Nt.UNPACK_FLIP_Y_WEBGL,n.flipY),Nt.pixelStorei(Nt.UNPACK_PREMULTIPLY_ALPHA_WEBGL,n.premultiplyAlpha),Nt.pixelStorei(Nt.UNPACK_ALIGNMENT,n.unpackAlignment),e.isDataTexture?Nt.texSubImage2D(Nt.TEXTURE_2D,i,t.x,t.y,r,a,s,o,e.image.data):e.isCompressedTexture?Nt.compressedTexSubImage2D(Nt.TEXTURE_2D,i,t.x,t.y,e.mipmaps[0].width,e.mipmaps[0].height,s,e.mipmaps[0].data):Nt.texSubImage2D(Nt.TEXTURE_2D,i,t.x,t.y,s,o,e.image),0===i&&n.generateMipmaps&&Nt.generateMipmap(Nt.TEXTURE_2D),ht.unbindTexture()},this.copyTextureToTexture3D=function(t,e,n,i,r=0){if(S.isWebGL1Renderer)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");const a=t.max.x-t.min.x+1,s=t.max.y-t.min.y+1,o=t.max.z-t.min.z+1,l=Ut.convert(i.format),c=Ut.convert(i.type);let h;if(i.isData3DTexture)pt.setTexture3D(i,0),h=Nt.TEXTURE_3D;else{if(!i.isDataArrayTexture)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");pt.setTexture2DArray(i,0),h=Nt.TEXTURE_2D_ARRAY}Nt.pixelStorei(Nt.UNPACK_FLIP_Y_WEBGL,i.flipY),Nt.pixelStorei(Nt.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i.premultiplyAlpha),Nt.pixelStorei(Nt.UNPACK_ALIGNMENT,i.unpackAlignment);const u=Nt.getParameter(Nt.UNPACK_ROW_LENGTH),d=Nt.getParameter(Nt.UNPACK_IMAGE_HEIGHT),p=Nt.getParameter(Nt.UNPACK_SKIP_PIXELS),f=Nt.getParameter(Nt.UNPACK_SKIP_ROWS),m=Nt.getParameter(Nt.UNPACK_SKIP_IMAGES),g=n.isCompressedTexture?n.mipmaps[0]:n.image;Nt.pixelStorei(Nt.UNPACK_ROW_LENGTH,g.width),Nt.pixelStorei(Nt.UNPACK_IMAGE_HEIGHT,g.height),Nt.pixelStorei(Nt.UNPACK_SKIP_PIXELS,t.min.x),Nt.pixelStorei(Nt.UNPACK_SKIP_ROWS,t.min.y),Nt.pixelStorei(Nt.UNPACK_SKIP_IMAGES,t.min.z),n.isDataTexture||n.isData3DTexture?Nt.texSubImage3D(h,r,e.x,e.y,e.z,a,s,o,l,c,g.data):n.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),Nt.compressedTexSubImage3D(h,r,e.x,e.y,e.z,a,s,o,l,g.data)):Nt.texSubImage3D(h,r,e.x,e.y,e.z,a,s,o,l,c,g),Nt.pixelStorei(Nt.UNPACK_ROW_LENGTH,u),Nt.pixelStorei(Nt.UNPACK_IMAGE_HEIGHT,d),Nt.pixelStorei(Nt.UNPACK_SKIP_PIXELS,p),Nt.pixelStorei(Nt.UNPACK_SKIP_ROWS,f),Nt.pixelStorei(Nt.UNPACK_SKIP_IMAGES,m),0===r&&i.generateMipmaps&&Nt.generateMipmap(h),ht.unbindTexture()},this.initTexture=function(t){t.isCubeTexture?pt.setTextureCube(t,0):t.isData3DTexture?pt.setTexture3D(t,0):t.isDataArrayTexture||t.isCompressedArrayTexture?pt.setTexture2DArray(t,0):pt.setTexture2D(t,0),ht.unbindTexture()},this.resetState=function(){T=0,b=0,w=null,ht.reset(),Dt.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return at}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(t){this._outputColorSpace=t;const e=this.getContext();e.drawingBufferColorSpace=t===q?"display-p3":"srgb",e.unpackColorSpace=Dt.workingColorSpace===Z?"display-p3":"srgb"}get physicallyCorrectLights(){return console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),!this.useLegacyLights}set physicallyCorrectLights(t){console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),this.useLegacyLights=!t}get outputEncoding(){return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace===j?W:3e3}set outputEncoding(t){console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace=t===W?j:Y}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(t){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=t}}(class extends $a{}).prototype.isWebGL1Renderer=!0;class ts{constructor(t,e){this.isInterleavedBuffer=!0,this.array=t,this.stride=e,this.count=void 0!==t?t.length/e:0,this.usage=nt,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=dt()}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.array=new t.array.constructor(t.array),this.count=t.count,this.stride=t.stride,this.usage=t.usage,this}copyAt(t,e,n){t*=this.stride,n*=e.stride;for(let i=0,r=this.stride;io)continue;u.applyMatrix4(this.matrixWorld);const a=t.ray.origin.distanceTo(u);at.far||e.push({distance:a,point:h.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this})}}else{for(let n=Math.max(0,a.start),i=Math.min(f.count,a.start+a.count)-1;no)continue;u.applyMatrix4(this.matrixWorld);const i=t.ray.origin.distanceTo(u);it.far||e.push({distance:i,point:h.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){const t=this.geometry.morphAttributes,e=Object.keys(t);if(e.length>0){const n=t[e[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=n.length;t0&&_(!0),e>0&&_(!1)),this.setIndex(c),this.setAttribute("position",new Tn(h,3)),this.setAttribute("normal",new Tn(u,3)),this.setAttribute("uv",new Tn(d,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new Rs(t.radiusTop,t.radiusBottom,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}}const Cs=new Zt,Ls=new Zt,Ps=new Zt,Us=new cn;class Ds extends Un{constructor(t=1,e=32,n=16,i=0,r=2*Math.PI,a=0,s=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:t,widthSegments:e,heightSegments:n,phiStart:i,phiLength:r,thetaStart:a,thetaLength:s},e=Math.max(3,Math.floor(e)),n=Math.max(2,Math.floor(n));const o=Math.min(a+s,Math.PI);let l=0;const c=[],h=new Zt,u=new Zt,d=[],p=[],f=[],m=[];for(let d=0;d<=n;d++){const g=[],_=d/n;let v=0;0===d&&0===a?v=.5/e:d===n&&o===Math.PI&&(v=-.5/e);for(let n=0;n<=e;n++){const o=n/e;h.x=-t*Math.cos(i+o*r)*Math.sin(a+_*s),h.y=t*Math.cos(a+_*s),h.z=t*Math.sin(i+o*r)*Math.sin(a+_*s),p.push(h.x,h.y,h.z),u.copy(h).normalize(),f.push(u.x,u.y,u.z),m.push(o+v,1-_),g.push(l++)}c.push(g)}for(let t=0;t0)&&d.push(e,r,l),(t!==n-1||o.99999)this.quaternion.set(0,0,0,1);else if(t.y<-.99999)this.quaternion.set(1,0,0,0);else{Ys.set(t.z,0,-t.x).normalize();const e=Math.acos(t.y);this.quaternion.setFromAxisAngle(Ys,e)}}setLength(t,e=.2*t,n=.2*e){this.line.scale.set(1,Math.max(1e-4,t-e),1),this.line.updateMatrix(),this.cone.scale.set(n,e,n),this.cone.position.y=t,this.cone.updateMatrix()}setColor(t){this.line.material.color.set(t),this.cone.material.color.set(t)}copy(t){return super.copy(t,!1),this.line.copy(t.line),this.cone.copy(t.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}},exports.AxesHelper=class extends As{constructor(t=1){const e=[0,0,0,t,0,0,0,0,0,0,t,0,0,0,0,0,0,t],n=new Un;n.setAttribute("position",new Tn(e,3)),n.setAttribute("color",new Tn([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3));super(n,new vs({vertexColors:!0,toneMapped:!1})),this.type="AxesHelper"}setColors(t,e,n){const i=new fn,r=this.geometry.attributes.color.array;return i.set(t),i.toArray(r,0),i.toArray(r,3),i.set(e),i.toArray(r,6),i.toArray(r,9),i.set(n),i.toArray(r,12),i.toArray(r,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},exports.BoxGeometry=Qn,exports.BufferAttribute=yn,exports.BufferGeometry=Un,exports.CameraHelper=class extends As{constructor(t){const e=new Un,n=new vs({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],r=[],a={};function s(t,e){o(t),o(e)}function o(t){i.push(0,0,0),r.push(0,0,0),void 0===a[t]&&(a[t]=[]),a[t].push(i.length/3-1)}s("n1","n2"),s("n2","n4"),s("n4","n3"),s("n3","n1"),s("f1","f2"),s("f2","f4"),s("f4","f3"),s("f3","f1"),s("n1","f1"),s("n2","f2"),s("n3","f3"),s("n4","f4"),s("p","n1"),s("p","n2"),s("p","n3"),s("p","n4"),s("u1","u2"),s("u2","u3"),s("u3","u1"),s("c","t"),s("p","c"),s("cn1","cn2"),s("cn3","cn4"),s("cf1","cf2"),s("cf3","cf4"),e.setAttribute("position",new Tn(i,3)),e.setAttribute("color",new Tn(r,3)),super(e,n),this.type="CameraHelper",this.camera=t,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update();const l=new fn(16755200),c=new fn(16711680),h=new fn(43775),u=new fn(16777215),d=new fn(3355443);this.setColors(l,c,h,u,d)}setColors(t,e,n,i,r){const a=this.geometry.getAttribute("color");a.setXYZ(0,t.r,t.g,t.b),a.setXYZ(1,t.r,t.g,t.b),a.setXYZ(2,t.r,t.g,t.b),a.setXYZ(3,t.r,t.g,t.b),a.setXYZ(4,t.r,t.g,t.b),a.setXYZ(5,t.r,t.g,t.b),a.setXYZ(6,t.r,t.g,t.b),a.setXYZ(7,t.r,t.g,t.b),a.setXYZ(8,t.r,t.g,t.b),a.setXYZ(9,t.r,t.g,t.b),a.setXYZ(10,t.r,t.g,t.b),a.setXYZ(11,t.r,t.g,t.b),a.setXYZ(12,t.r,t.g,t.b),a.setXYZ(13,t.r,t.g,t.b),a.setXYZ(14,t.r,t.g,t.b),a.setXYZ(15,t.r,t.g,t.b),a.setXYZ(16,t.r,t.g,t.b),a.setXYZ(17,t.r,t.g,t.b),a.setXYZ(18,t.r,t.g,t.b),a.setXYZ(19,t.r,t.g,t.b),a.setXYZ(20,t.r,t.g,t.b),a.setXYZ(21,t.r,t.g,t.b),a.setXYZ(22,t.r,t.g,t.b),a.setXYZ(23,t.r,t.g,t.b),a.setXYZ(24,e.r,e.g,e.b),a.setXYZ(25,e.r,e.g,e.b),a.setXYZ(26,e.r,e.g,e.b),a.setXYZ(27,e.r,e.g,e.b),a.setXYZ(28,e.r,e.g,e.b),a.setXYZ(29,e.r,e.g,e.b),a.setXYZ(30,e.r,e.g,e.b),a.setXYZ(31,e.r,e.g,e.b),a.setXYZ(32,n.r,n.g,n.b),a.setXYZ(33,n.r,n.g,n.b),a.setXYZ(34,n.r,n.g,n.b),a.setXYZ(35,n.r,n.g,n.b),a.setXYZ(36,n.r,n.g,n.b),a.setXYZ(37,n.r,n.g,n.b),a.setXYZ(38,i.r,i.g,i.b),a.setXYZ(39,i.r,i.g,i.b),a.setXYZ(40,r.r,r.g,r.b),a.setXYZ(41,r.r,r.g,r.b),a.setXYZ(42,r.r,r.g,r.b),a.setXYZ(43,r.r,r.g,r.b),a.setXYZ(44,r.r,r.g,r.b),a.setXYZ(45,r.r,r.g,r.b),a.setXYZ(46,r.r,r.g,r.b),a.setXYZ(47,r.r,r.g,r.b),a.setXYZ(48,r.r,r.g,r.b),a.setXYZ(49,r.r,r.g,r.b),a.needsUpdate=!0}update(){const t=this.geometry,e=this.pointMap;Xs.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),js("c",e,t,Xs,0,0,-1),js("t",e,t,Xs,0,0,1),js("n1",e,t,Xs,-1,-1,-1),js("n2",e,t,Xs,1,-1,-1),js("n3",e,t,Xs,-1,1,-1),js("n4",e,t,Xs,1,1,-1),js("f1",e,t,Xs,-1,-1,1),js("f2",e,t,Xs,1,-1,1),js("f3",e,t,Xs,-1,1,1),js("f4",e,t,Xs,1,1,1),js("u1",e,t,Xs,.7,1.1,-1),js("u2",e,t,Xs,-.7,1.1,-1),js("u3",e,t,Xs,0,2,-1),js("cf1",e,t,Xs,-1,0,1),js("cf2",e,t,Xs,1,0,1),js("cf3",e,t,Xs,0,-1,1),js("cf4",e,t,Xs,0,1,1),js("cn1",e,t,Xs,-1,0,-1),js("cn2",e,t,Xs,1,0,-1),js("cn3",e,t,Xs,0,-1,-1),js("cn4",e,t,Xs,0,1,-1),t.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}},exports.DirectionalLight=class extends Is{constructor(t,e){super(t,e),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(Ke.DEFAULT_UP),this.updateMatrix(),this.target=new Ke,this.shadow=new ks}dispose(){this.shadow.dispose()}copy(t){return super.copy(t),this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}},exports.EdgesGeometry=class extends Un{constructor(t=null,e=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:t,thresholdAngle:e},null!==t){const n=4,i=Math.pow(10,n),r=Math.cos(ht*e),a=t.getIndex(),s=t.getAttribute("position"),o=a?a.count:s.count,l=[0,0,0],c=["a","b","c"],h=new Array(3),u={},d=[];for(let t=0;t0&&(e.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(e.object.backgroundIntensity=this.backgroundIntensity),e}},exports.SphereGeometry=Ds,exports.Sprite=class extends Ke{constructor(t=new is){if(super(),this.isSprite=!0,this.type="Sprite",void 0===rs){rs=new Un;const t=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),e=new ts(t,5);rs.setIndex([0,1,2,0,2,3]),rs.setAttribute("position",new ns(e,3,0,!1)),rs.setAttribute("uv",new ns(e,2,3,!1))}this.geometry=rs,this.material=t,this.center=new yt(.5,.5)}raycast(t,e){null===t.camera&&console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),ss.setFromMatrixScale(this.matrixWorld),hs.copy(t.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(t.camera.matrixWorldInverse,this.matrixWorld),os.setFromMatrixPosition(this.modelViewMatrix),t.camera.isPerspectiveCamera&&!1===this.material.sizeAttenuation&&ss.multiplyScalar(-os.z);const n=this.material.rotation;let i,r;0!==n&&(r=Math.cos(n),i=Math.sin(n));const a=this.center;_s(us.set(-.5,-.5,0),os,a,ss,i,r),_s(ds.set(.5,-.5,0),os,a,ss,i,r),_s(ps.set(.5,.5,0),os,a,ss,i,r),fs.set(0,0),ms.set(1,0),gs.set(1,1);let s=t.ray.intersectTriangle(us,ds,ps,!1,as);if(null===s&&(_s(ds.set(-.5,.5,0),os,a,ss,i,r),ms.set(0,1),s=t.ray.intersectTriangle(us,ps,ds,!1,as),null===s))return;const o=t.ray.origin.distanceTo(as);ot.far||e.push({distance:o,point:as.clone(),uv:cn.getInterpolation(as,us,ds,ps,fs,ms,gs,new yt),face:null,object:this})}copy(t,e){return super.copy(t,e),void 0!==t.center&&this.center.copy(t.center),this.material=t.material,this}},exports.SpriteMaterial=is,exports.Texture=Vt,exports.TrackballControls=class extends ot{constructor(t,r){super();const a=this,s=-1,o=0,l=1,c=2,h=3,u=4;this.object=t,this.domElement=r,this.domElement.style.touchAction="none",this.enabled=!0,this.screen={left:0,top:0,width:0,height:0},this.rotateSpeed=1,this.zoomSpeed=1.2,this.panSpeed=.3,this.noRotate=!1,this.noZoom=!1,this.noPan=!1,this.staticMoving=!1,this.dynamicDampingFactor=.2,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.keys=["KeyA","KeyS","KeyD"],this.mouseButtons={LEFT:e,MIDDLE:n,RIGHT:i},this.target=new Zt;const d=1e-6,p=new Zt;let f=1,m=s,g=s,_=0,v=0,x=0;const M=new Zt,y=new yt,S=new yt,E=new Zt,T=new yt,b=new yt,w=new yt,A=new yt,R=[],C={};this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.up0=this.object.up.clone(),this.zoom0=this.object.zoom,this.handleResize=function(){const t=a.domElement.getBoundingClientRect(),e=a.domElement.ownerDocument.documentElement;a.screen.left=t.left+window.pageXOffset-e.clientLeft,a.screen.top=t.top+window.pageYOffset-e.clientTop,a.screen.width=t.width,a.screen.height=t.height};const L=function(){const t=new yt;return function(e,n){return t.set((e-a.screen.left)/a.screen.width,(n-a.screen.top)/a.screen.height),t}}(),P=function(){const t=new yt;return function(e,n){return t.set((e-.5*a.screen.width-a.screen.left)/(.5*a.screen.width),(a.screen.height+2*(a.screen.top-n))/a.screen.width),t}}();function U(t){!1!==a.enabled&&(0===R.length&&(a.domElement.setPointerCapture(t.pointerId),a.domElement.addEventListener("pointermove",D),a.domElement.addEventListener("pointerup",I)),function(t){R.push(t)}(t),"touch"===t.pointerType?function(t){if(1===(G(t),R.length))m=h,S.copy(P(R[0].pageX,R[0].pageY)),y.copy(S);else{m=u;const t=R[0].pageX-R[1].pageX,e=R[0].pageY-R[1].pageY;v=_=Math.sqrt(t*t+e*e);const n=(R[0].pageX+R[1].pageX)/2,i=(R[0].pageY+R[1].pageY)/2;w.copy(L(n,i)),A.copy(w)}a.dispatchEvent(Js)}(t):function(t){if(m===s)switch(t.button){case a.mouseButtons.LEFT:m=o;break;case a.mouseButtons.MIDDLE:m=l;break;case a.mouseButtons.RIGHT:m=c}const e=g!==s?g:m;e!==o||a.noRotate?e!==l||a.noZoom?e!==c||a.noPan||(w.copy(L(t.pageX,t.pageY)),A.copy(w)):(T.copy(L(t.pageX,t.pageY)),b.copy(T)):(S.copy(P(t.pageX,t.pageY)),y.copy(S));a.dispatchEvent(Js)}(t))}function D(t){!1!==a.enabled&&("touch"===t.pointerType?function(t){if(1===(G(t),R.length))y.copy(S),S.copy(P(t.pageX,t.pageY));else{const e=function(t){const e=t.pointerId===R[0].pointerId?R[1]:R[0];return C[e.pointerId]}(t),n=t.pageX-e.x,i=t.pageY-e.y;v=Math.sqrt(n*n+i*i);const r=(t.pageX+e.x)/2,a=(t.pageY+e.y)/2;A.copy(L(r,a))}}(t):function(t){const e=g!==s?g:m;e!==o||a.noRotate?e!==l||a.noZoom?e!==c||a.noPan||A.copy(L(t.pageX,t.pageY)):b.copy(L(t.pageX,t.pageY)):(y.copy(S),S.copy(P(t.pageX,t.pageY)))}(t))}function I(t){!1!==a.enabled&&("touch"===t.pointerType?function(t){switch(R.length){case 0:m=s;break;case 1:m=h,S.copy(P(t.pageX,t.pageY)),y.copy(S);break;case 2:m=u;for(let e=0;e0&&(a.object.isPerspectiveCamera?M.multiplyScalar(t):a.object.isOrthographicCamera?(a.object.zoom=Mt.clamp(a.object.zoom/t,a.minZoom,a.maxZoom),f!==a.object.zoom&&a.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")),a.staticMoving?T.copy(b):T.y+=(b.y-T.y)*this.dynamicDampingFactor)},this.panCamera=function(){const t=new yt,e=new Zt,n=new Zt;return function(){if(t.copy(A).sub(w),t.lengthSq()){if(a.object.isOrthographicCamera){const e=(a.object.right-a.object.left)/a.object.zoom/a.domElement.clientWidth,n=(a.object.top-a.object.bottom)/a.object.zoom/a.domElement.clientWidth;t.x*=e,t.y*=n}t.multiplyScalar(M.length()*a.panSpeed),n.copy(M).cross(a.object.up).setLength(t.x),n.add(e.copy(a.object.up).setLength(t.y)),a.object.position.add(n),a.target.add(n),a.staticMoving?w.copy(A):w.add(t.subVectors(A,w).multiplyScalar(a.dynamicDampingFactor))}}}(),this.checkDistances=function(){a.noZoom&&a.noPan||(M.lengthSq()>a.maxDistance*a.maxDistance&&(a.object.position.addVectors(a.target,M.setLength(a.maxDistance)),T.copy(b)),M.lengthSq()d&&(a.dispatchEvent(Ks),p.copy(a.object.position))):a.object.isOrthographicCamera?(a.object.lookAt(a.target),(p.distanceToSquared(a.object.position)>d||f!==a.object.zoom)&&(a.dispatchEvent(Ks),p.copy(a.object.position),f=a.object.zoom)):console.warn("THREE.TrackballControls: Unsupported camera type")},this.reset=function(){m=s,g=s,a.target.copy(a.target0),a.object.position.copy(a.position0),a.object.up.copy(a.up0),a.object.zoom=a.zoom0,a.object.updateProjectionMatrix(),M.subVectors(a.object.position,a.target),a.object.lookAt(a.target),a.dispatchEvent(Ks),p.copy(a.object.position),f=a.object.zoom},this.dispose=function(){a.domElement.removeEventListener("contextmenu",B),a.domElement.removeEventListener("pointerdown",U),a.domElement.removeEventListener("pointercancel",N),a.domElement.removeEventListener("wheel",z),a.domElement.removeEventListener("pointermove",D),a.domElement.removeEventListener("pointerup",I),window.removeEventListener("keydown",O),window.removeEventListener("keyup",F)},this.domElement.addEventListener("contextmenu",B),this.domElement.addEventListener("pointerdown",U),this.domElement.addEventListener("pointercancel",N),this.domElement.addEventListener("wheel",z,{passive:!1}),window.addEventListener("keydown",O),window.addEventListener("keyup",F),this.handleResize(),this.update()}},exports.Vector3=Zt,exports.WebGLRenderer=$a; - -; - ($.$optimade_cifplayer_lib_three_view) = class $optimade_cifplayer_lib_three_view extends ($.$mol_view) { - canvas(){ - return null; - } - controls_target_changed(){ - return null; - } - resize(){ - return null; - } - start_render_loop(){ - return null; - } - sub(){ - return [(this.canvas())]; - } - scene(){ - return null; - } - camera(){ - return null; - } - controls(){ - return null; - } - controls_target(){ - return null; - } - on_render(){ - return null; - } - new_object(id, next){ - if(next !== undefined) return next; - return null; - } - object(id, next){ - if(next !== undefined) return next; - return null; - } - auto(){ - return [ - (this.controls_target_changed()), - (this.resize()), - (this.start_render_loop()) - ]; - } - }; - ($mol_mem_key(($.$optimade_cifplayer_lib_three_view.prototype), "new_object")); - ($mol_mem_key(($.$optimade_cifplayer_lib_three_view.prototype), "object")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - $mol_style_define($optimade_cifplayer_lib_three_view, { - flex: { - grow: 1, - basis: '20rem', - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_icon_eye) = class $mol_icon_eye extends ($.$mol_icon) { - path(){ - return "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_eye_check) = class $mol_icon_eye_check extends ($.$mol_icon) { - path(){ - return "M23.5,17L18.5,22L15,18.5L16.5,17L18.5,19L22,15.5L23.5,17M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,17C12.5,17 12.97,16.93 13.42,16.79C13.15,17.5 13,18.22 13,19V19.45L12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5C17,4.5 21.27,7.61 23,12C22.75,12.64 22.44,13.26 22.08,13.85C21.18,13.31 20.12,13 19,13C18.22,13 17.5,13.15 16.79,13.42C16.93,12.97 17,12.5 17,12A5,5 0 0,0 12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_tick) = class $mol_icon_tick extends ($.$mol_icon) { - path(){ - return "M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_check_box) = class $mol_check_box extends ($.$mol_check) { - Icon(){ - const obj = new this.$.$mol_icon_tick(); - return obj; - } - }; - ($mol_mem(($.$mol_check_box.prototype), "Icon")); - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/box/box.view.css", "[mol_check_box_icon] {\n\tborder-radius: var(--mol_gap_round);\n\tbox-shadow: inset 0 0 0 1px var(--mol_theme_line);\n\tcolor: var(--mol_theme_shade);\n\theight: 1rem;\n\talign-self: center;\n}\n\n[mol_check]:not([mol_check_checked]) > [mol_check_box_icon] {\n\tfill: transparent;\n}\n\n[mol_check]:not([disabled]) > [mol_check_box_icon] {\n\tbackground: var(--mol_theme_field);\n\tcolor: var(--mol_theme_text);\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_pop) = class $mol_pop extends ($.$mol_view) { - Anchor(){ - return null; - } - align(){ - return "bottom_center"; - } - bubble_content(){ - return []; - } - height_max(){ - return 9999; - } - Bubble(){ - const obj = new this.$.$mol_pop_bubble(); - (obj.align) = () => ((this.align())); - (obj.content) = () => ((this.bubble_content())); - (obj.height_max) = () => ((this.height_max())); - return obj; - } - showed(next){ - if(next !== undefined) return next; - return false; - } - align_vert(){ - return ""; - } - align_hor(){ - return ""; - } - prefer(){ - return "vert"; - } - sub(){ - return [(this.Anchor())]; - } - sub_visible(){ - return [(this.Anchor()), (this.Bubble())]; - } - }; - ($mol_mem(($.$mol_pop.prototype), "Bubble")); - ($mol_mem(($.$mol_pop.prototype), "showed")); - ($.$mol_pop_bubble) = class $mol_pop_bubble extends ($.$mol_view) { - content(){ - return []; - } - height_max(){ - return 9999; - } - align(){ - return ""; - } - sub(){ - return (this.content()); - } - style(){ - return {...(super.style()), "maxHeight": (this.height_max())}; - } - attr(){ - return { - ...(super.attr()), - "mol_pop_align": (this.align()), - "tabindex": 0 - }; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_pop extends $.$mol_pop { - showed(next = false) { - this.focused(); - return next; - } - sub_visible() { - return [ - this.Anchor(), - ...this.showed() ? [this.Bubble()] : [], - ]; - } - height_max() { - const viewport = this.$.$mol_window.size(); - const rect_bubble = this.view_rect(); - const align = this.align_vert(); - if (align === 'bottom') - return (viewport.height - rect_bubble.bottom) * .66; - if (align === 'top') - return rect_bubble.top * .66; - return 0; - } - align() { - switch (this.prefer()) { - case 'hor': return `${this.align_hor()}_${this.align_vert()}`; - case 'vert': return `${this.align_vert()}_${this.align_hor()}`; - default: return this.prefer(); - } - } - align_vert() { - const viewport = this.view_port(); - const rect_pop = this.view_rect(); - if (!rect_pop) - return 'suspense'; - return rect_pop.top > (viewport.top + viewport.height / 2) ? 'top' : 'bottom'; - } - align_hor() { - const viewport = this.view_port(); - const rect_pop = this.view_rect(); - if (!rect_pop) - return 'suspense'; - return rect_pop.left > (viewport.left + viewport.width / 2) ? 'left' : 'right'; - } - View_port() { - const view = new $mol_view; - view.dom_node = () => { - let node = this.dom_node(); - while (node = node.offsetParent) { - if (this.$.$mol_dom_context.getComputedStyle(node).overflow !== 'visible') - return node; - } - return this.$.$mol_dom_context.document.documentElement; - }; - return view; - } - view_port() { - return this.View_port().view_rect() ?? { ...this.$.$mol_window.size(), left: 0, top: 0 }; - } - } - __decorate([ - $mol_mem - ], $mol_pop.prototype, "showed", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "sub_visible", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "height_max", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "align", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "align_vert", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "align_hor", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "View_port", null); - __decorate([ - $mol_mem - ], $mol_pop.prototype, "view_port", null); - $$.$mol_pop = $mol_pop; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/pop/pop.view.css", "[mol_pop] {\n\tposition: relative;\n\tdisplay: inline-flex;\n}\n\n[mol_pop_bubble] {\n\tbox-shadow: 0 0 1rem hsla(0,0%,0%,.5);\n\tborder-radius: var(--mol_gap_round);\n\tposition: absolute;\n\tz-index: var(--mol_layer_popup);\n\tbackground: var(--mol_theme_back);\n\tmax-width: none;\n\tmax-height: none;\n\t/* overflow: hidden;\n\toverflow-y: scroll;\n\toverflow-y: overlay; */\n\tword-break: normal;\n\twidth: max-content;\n\theight: max-content;\n\tflex-direction: column;\n\tmax-width: 80vw;\n\tmax-height: 80vw;\n\tcontain: paint;\n\ttransition-property: opacity;\n}\n\n:where( [mol_pop_bubble] > * ) {\n\tbackground: var(--mol_theme_card);\n}\n\n[mol_pop_bubble][mol_scroll] {\n\tbackground: var(--mol_theme_back);\n}\n\n[mol_pop_bubble]:focus {\n\toutline: none;\n}\n\n[mol_pop_align=\"suspense_suspense\"] {\n\topacity: 0;\n}\n\n[mol_pop_align=\"left_top\"] {\n\ttransform: translate(-100%);\n\tleft: 0;\n\tbottom: 0;\n}\n\n[mol_pop_align=\"left_center\"] {\n\ttransform: translate(-100%, -50%);\n\tleft: 0;\n\ttop: 50%;\n}\n\n[mol_pop_align=\"left_bottom\"] {\n\ttransform: translate(-100%);\n\tleft: 0;\n\ttop: 0;\n}\n\n[mol_pop_align=\"right_top\"] {\n\ttransform: translate(100%);\n\tright: 0;\n\tbottom: 0;\n}\n\n[mol_pop_align=\"right_center\"] {\n\ttransform: translate(100%, -50%);\n\tright: 0;\n\ttop: 50%;\n}\n\n[mol_pop_align=\"right_bottom\"] {\n\ttransform: translate(100%);\n\tright: 0;\n\ttop: 0;\n}\n\n[mol_pop_align=\"center\"] {\n\tleft: 50%;\n\ttop: 50%;\n\ttransform: translate(-50%, -50%);\n}\n\n[mol_pop_align=\"top_left\"] {\n\tright: 0;\n\tbottom: 100%;\n}\n\n[mol_pop_align=\"top_center\"] {\n\ttransform: translate(-50%);\n\tleft: 50%;\n\tbottom: 100%;\n}\n\n[mol_pop_align=\"top_right\"] {\n\tleft: 0;\n\tbottom: 100%;\n}\n\n[mol_pop_align=\"bottom_left\"] {\n\tright: 0;\n\ttop: 100%;\n}\n\n[mol_pop_align=\"bottom_center\"] {\n\ttransform: translate(-50%);\n\tleft: 50%;\n\ttop: 100%;\n}\n\n[mol_pop_align=\"bottom_right\"] {\n\tleft: 0;\n\ttop: 100%;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_pick) = class $mol_pick extends ($.$mol_pop) { - keydown(next){ - if(next !== undefined) return next; - return null; - } - trigger_enabled(){ - return true; - } - clicks(next){ - if(next !== undefined) return next; - return null; - } - trigger_content(){ - return [(this.title())]; - } - hint(){ - return ""; - } - Trigger(){ - const obj = new this.$.$mol_check(); - (obj.minimal_width) = () => (40); - (obj.minimal_height) = () => (40); - (obj.enabled) = () => ((this.trigger_enabled())); - (obj.checked) = (next) => ((this.showed(next))); - (obj.clicks) = (next) => ((this.clicks(next))); - (obj.sub) = () => ((this.trigger_content())); - (obj.hint) = () => ((this.hint())); - return obj; - } - event(){ - return {...(super.event()), "keydown": (next) => (this.keydown(next))}; - } - Anchor(){ - return (this.Trigger()); - } - }; - ($mol_mem(($.$mol_pick.prototype), "keydown")); - ($mol_mem(($.$mol_pick.prototype), "clicks")); - ($mol_mem(($.$mol_pick.prototype), "Trigger")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_pick extends $.$mol_pick { - keydown(event) { - if (!this.trigger_enabled()) - return; - if (event.defaultPrevented) - return; - if (event.keyCode === $mol_keyboard_code.escape) { - if (!this.showed()) - return; - event.preventDefault(); - this.showed(false); - } - } - } - $$.$mol_pick = $mol_pick; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/pick/pick.view.css", "[mol_pick_trigger] {\n\talign-items: center;\n\tflex-grow: 1;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_icon_minus) = class $mol_icon_minus extends ($.$mol_icon) { - path(){ - return "M19,13H5V11H19V13Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_plus) = class $mol_icon_plus extends ($.$mol_icon) { - path(){ - return "M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_number) = class $mol_number extends ($.$mol_view) { - precision(){ - return 1; - } - type(){ - return "tel"; - } - value_string(next){ - if(next !== undefined) return next; - return ""; - } - hint(){ - return " "; - } - string_enabled(){ - return (this.enabled()); - } - submit(next){ - if(next !== undefined) return next; - return null; - } - String(){ - const obj = new this.$.$mol_string(); - (obj.type) = () => ((this.type())); - (obj.value) = (next) => ((this.value_string(next))); - (obj.hint) = () => ((this.hint())); - (obj.enabled) = () => ((this.string_enabled())); - (obj.submit) = (next) => ((this.submit(next))); - return obj; - } - event_dec(next){ - if(next !== undefined) return next; - return null; - } - dec_enabled(){ - return (this.enabled()); - } - dec_icon(){ - const obj = new this.$.$mol_icon_minus(); - return obj; - } - Dec(){ - const obj = new this.$.$mol_button_minor(); - (obj.event_click) = (next) => ((this.event_dec(next))); - (obj.enabled) = () => ((this.dec_enabled())); - (obj.sub) = () => ([(this.dec_icon())]); - return obj; - } - event_inc(next){ - if(next !== undefined) return next; - return null; - } - inc_enabled(){ - return (this.enabled()); - } - inc_icon(){ - const obj = new this.$.$mol_icon_plus(); - return obj; - } - Inc(){ - const obj = new this.$.$mol_button_minor(); - (obj.event_click) = (next) => ((this.event_inc(next))); - (obj.enabled) = () => ((this.inc_enabled())); - (obj.sub) = () => ([(this.inc_icon())]); - return obj; - } - precision_view(){ - return (this.precision()); - } - precision_change(){ - return (this.precision()); - } - value_min(){ - return -Infinity; - } - value_max(){ - return +Infinity; - } - value(next){ - if(next !== undefined) return next; - return +NaN; - } - enabled(){ - return true; - } - sub(){ - return [ - (this.String()), - (this.Dec()), - (this.Inc()) - ]; - } - }; - ($mol_mem(($.$mol_number.prototype), "value_string")); - ($mol_mem(($.$mol_number.prototype), "submit")); - ($mol_mem(($.$mol_number.prototype), "String")); - ($mol_mem(($.$mol_number.prototype), "event_dec")); - ($mol_mem(($.$mol_number.prototype), "dec_icon")); - ($mol_mem(($.$mol_number.prototype), "Dec")); - ($mol_mem(($.$mol_number.prototype), "event_inc")); - ($mol_mem(($.$mol_number.prototype), "inc_icon")); - ($mol_mem(($.$mol_number.prototype), "Inc")); - ($mol_mem(($.$mol_number.prototype), "value")); - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/number/number.css", "[mol_number] {\n\tdisplay: flex;\n\tflex: 0 1 auto;\n\tposition: relative;\n\talign-items: stretch;\n\tmax-width: 100%;\n}\n\n[mol_number_string] {\n\tappearance: textfield;\n\tflex: 1 1 7rem;\n\twidth: 7rem;\n}\n\n[mol_number_string]::-webkit-inner-spin-button {\n\tdisplay: none;\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_number extends $.$mol_number { - value_limited(val) { - if (Number.isNaN(val)) - return this.value(val); - if (val === undefined) - return this.value(); - const min = this.value_min(); - const max = this.value_max(); - if (val < min) - return this.value(min); - if (val > max) - return this.value(max); - return this.value(val); - } - event_dec(next) { - this.value_limited((this.value_limited() || 0) - this.precision_change()); - } - event_inc(next) { - this.value_limited((this.value_limited() || 0) + this.precision_change()); - } - round(val) { - if (Number.isNaN(val)) - return ''; - if (val === 0) - return '0'; - if (!val) - return ''; - const precision_view = this.precision_view(); - if (!precision_view) - return val.toFixed(); - if (precision_view >= 1) { - return (val / precision_view).toFixed(); - } - else { - const fixed_number = Math.log10(1 / precision_view); - return val.toFixed(Math.ceil(fixed_number)); - } - } - value_string(next) { - const current = this.round(this.value_limited()); - if (next === undefined) - return current; - const precision = this.precision_view(); - if (precision - Math.floor(precision) === 0) - next = next.replace(/[.,]/g, ''); - next = (this.value_min() < 0 && next.startsWith('-') ? '-' : '') - + next.replace(/,/g, '.').replace(/[^\d\.]/g, '').replace(/^0{2,}/, '0'); - let dot_pos = next.indexOf('.'); - if (dot_pos !== -1) { - const prev = $mol_wire_probe(() => this.value_string()) ?? ''; - const dot_pos_prev = prev.indexOf('.'); - if (dot_pos_prev === dot_pos) - dot_pos = next.lastIndexOf('.'); - const frac = next.slice(dot_pos + 1).replace(/\./g, ''); - next = (next.slice(0, dot_pos) || '0').replace(/\./g, '') + '.' + frac; - } - if (Number.isNaN(Number(next))) - return next; - if (next.endsWith('.')) - return next; - if (next.endsWith('-')) - return next; - this.value_limited(Number(next || Number.NaN)); - return next; - } - dec_enabled() { - return this.enabled() && (!((this.value() || 0) <= this.value_min())); - } - inc_enabled() { - return this.enabled() && (!((this.value() || 0) >= this.value_max())); - } - } - __decorate([ - $mol_mem - ], $mol_number.prototype, "value_string", null); - __decorate([ - $mol_mem - ], $mol_number.prototype, "dec_enabled", null); - __decorate([ - $mol_mem - ], $mol_number.prototype, "inc_enabled", null); - $$.$mol_number = $mol_number; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_icon_image) = class $mol_icon_image extends ($.$mol_icon) { - path(){ - return "M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_image_filter) = class $mol_icon_image_filter extends ($.$mol_icon) { - path(){ - return "M21,17H7V3H21M21,1H7C5.9,1 5,1.9 5,3V17C5,18.1 5.9,19 7,19H21C22.1,19 23,18.1 23,17V3C23,1.9 22.1,1 21,1M3,5H1V21C1,22.1 1.9,23 3,23H19V21H3M15.96,10.29L13.21,13.83L11.25,11.47L8.5,15H19.5L15.96,10.29Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_image_filter_center_focus) = class $mol_icon_image_filter_center_focus extends ($.$mol_icon) { - path(){ - return "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify) = class $mol_icon_magnify extends ($.$mol_icon) { - path(){ - return "M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify_plus) = class $mol_icon_magnify_plus extends ($.$mol_icon) { - path(){ - return "M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M8,5V8H5V10H8V13H10V10H13V8H10V5H8Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify_plus_outline) = class $mol_icon_magnify_plus_outline extends ($.$mol_icon) { - path(){ - return "M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14M12,10H10V12H9V10H7V9H9V7H10V9H12V10Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify_minus) = class $mol_icon_magnify_minus extends ($.$mol_icon) { - path(){ - return "M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M5,8V10H13V8H5Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_icon_magnify_minus_outline) = class $mol_icon_magnify_minus_outline extends ($.$mol_icon) { - path(){ - return "M15.5,14H14.71L14.43,13.73C15.41,12.59 16,11.11 16,9.5A6.5,6.5 0 0,0 9.5,3A6.5,6.5 0 0,0 3,9.5A6.5,6.5 0 0,0 9.5,16C11.11,16 12.59,15.41 13.73,14.43L14,14.71V15.5L19,20.5L20.5,19L15.5,14M9.5,14C7,14 5,12 5,9.5C5,7 7,5 9.5,5C12,5 14,7 14,9.5C14,12 12,14 9.5,14M7,9H12V10H7V9Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_check_list) = class $mol_check_list extends ($.$mol_view) { - option_checked(id, next){ - if(next !== undefined) return next; - return false; - } - option_title(id){ - return ""; - } - option_label(id){ - return [(this.option_title(id))]; - } - enabled(){ - return true; - } - option_enabled(id){ - return (this.enabled()); - } - option_hint(id){ - return ""; - } - items(){ - return []; - } - dictionary(){ - return {}; - } - Option(id){ - const obj = new this.$.$mol_check(); - (obj.checked) = (next) => ((this.option_checked(id, next))); - (obj.label) = () => ((this.option_label(id))); - (obj.enabled) = () => ((this.option_enabled(id))); - (obj.hint) = () => ((this.option_hint(id))); - (obj.minimal_height) = () => (24); - return obj; - } - options(){ - return {}; - } - keys(){ - return []; - } - sub(){ - return (this.items()); - } - }; - ($mol_mem_key(($.$mol_check_list.prototype), "option_checked")); - ($mol_mem_key(($.$mol_check_list.prototype), "Option")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_check_list extends $.$mol_check_list { - options() { - return {}; - } - dictionary(next) { - return next ?? {}; - } - option_checked(id, next) { - const prev = this.dictionary(); - if (next === undefined) - return prev[id] ?? null; - const next_rec = { ...prev, [id]: next }; - if (next === null) - delete next_rec[id]; - return this.dictionary(next_rec)[id] ?? null; - } - keys() { - return Object.keys(this.options()); - } - items() { - return this.keys().map(key => this.Option(key)); - } - option_title(key) { - return this.options()[key] || key; - } - } - __decorate([ - $mol_mem - ], $mol_check_list.prototype, "keys", null); - __decorate([ - $mol_mem - ], $mol_check_list.prototype, "items", null); - $$.$mol_check_list = $mol_check_list; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/list/list.view.css", "[mol_check_list] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex: 1 1 auto;\n\tborder-radius: var(--mol_gap_round);\n\tgap: 1px;\n}\n\n[mol_check_list_option] {\n\tflex: 0 1 auto;\n}\n\n[mol_check_list_option]:where([mol_check_checked=\"true\"]) {\n\ttext-shadow: 0 0;\n\tcolor: var(--mol_theme_current);\n}\n\n[mol_check_list_option]:where([mol_check_checked=\"true\"][disabled]) {\n\tcolor: var(--mol_theme_text);\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_switch) = class $mol_switch extends ($.$mol_check_list) { - value(next){ - if(next !== undefined) return next; - return ""; - } - }; - ($mol_mem(($.$mol_switch.prototype), "value")); - - -; -"use strict"; -var $; -(function ($) { - class $mol_state_session extends $mol_object { - static 'native()'; - static native() { - if (this['native()']) - return this['native()']; - check: try { - const native = $mol_dom_context.sessionStorage; - if (!native) - break check; - native.setItem('', ''); - native.removeItem(''); - return this['native()'] = native; - } - catch (error) { - console.warn(error); - } - return this['native()'] = { - getItem(key) { - return this[':' + key]; - }, - setItem(key, value) { - this[':' + key] = value; - }, - removeItem(key) { - this[':' + key] = void 0; - } - }; - } - static value(key, next) { - if (next === void 0) - return JSON.parse(this.native().getItem(key) || 'null'); - if (next === null) - this.native().removeItem(key); - else - this.native().setItem(key, JSON.stringify(next)); - return next; - } - prefix() { return ''; } - value(key, next) { - return $mol_state_session.value(this.prefix() + '.' + key, next); - } - } - __decorate([ - $mol_mem_key - ], $mol_state_session, "value", null); - $.$mol_state_session = $mol_state_session; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_switch extends $.$mol_switch { - value(next) { - return $mol_state_session.value(`${this}.value()`, next) ?? ''; - } - option_checked(key, next) { - if (next === undefined) - return this.value() == key; - this.value(next ? key : ''); - return next; - } - } - $$.$mol_switch = $mol_switch; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_card) = class $mol_card extends ($.$mol_list) { - status(){ - return ""; - } - content(){ - return [(this.title())]; - } - Content(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.content())); - return obj; - } - status_text(){ - return (this.status()); - } - Status(){ - const obj = new this.$.$mol_view(); - (obj.minimal_height) = () => (30); - (obj.sub) = () => ([(this.status_text())]); - return obj; - } - attr(){ - return {...(super.attr()), "mol_card_status_type": (this.status())}; - } - rows(){ - return [(this.Content()), (this.Status())]; - } - }; - ($mol_mem(($.$mol_card.prototype), "Content")); - ($mol_mem(($.$mol_card.prototype), "Status")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_card extends $.$mol_card { - rows() { - return [ - this.Content(), - ...this.status_text() ? [this.Status()] : [], - ]; - } - } - $$.$mol_card = $mol_card; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/card/card.view.css", "[mol_card] {\n\tbackground: var(--mol_theme_card);\n\tcolor: var(--mol_theme_text);\n\tborder-radius: var(--mol_gap_round);\n\tdisplay: flex;\n\tflex: 0 1 auto;\n\tflex-direction: column;\n\tposition: relative;\n\tbox-shadow: 0 0 0.5rem 0rem hsla(0,0%,0%,.125);\n\t/* overflow: hidden; */\n}\n\n[mol_card_content] {\n\tflex: 1 1 auto;\n\tborder-radius: var(--mol_gap_round);\n\tmargin: 0;\n\tpadding: var(--mol_gap_block);\n}\n\n[mol_card_status] {\n\tbackground: var(--mol_theme_line);\n\ttext-transform: capitalize;\n\tpadding: var(--mol_gap_text);\n\tmargin: 0;\n}\n\n[mol_card_status] {\n\tbackground: var(--mol_theme_line);\n}\n"); -})($ || ($ = {})); - -; - ($.$optimade_cifplayer_player) = class $optimade_cifplayer_player extends ($.$mol_view) { - translate_a(next){ - if(next !== undefined) return next; - return 1; - } - translate_b(next){ - if(next !== undefined) return next; - return 1; - } - translate_c(next){ - if(next !== undefined) return next; - return 1; - } - Theme(){ - const obj = new this.$.$mol_theme_auto(); - return obj; - } - external_theme_auto(){ - return null; - } - dir_light(){ - return null; - } - ambient_light(){ - return null; - } - atom_boxes(){ - return []; - } - overlay_boxes(){ - return []; - } - cell_box(){ - return null; - } - axes_box(){ - return null; - } - overlay_changed(){ - return null; - } - vibration_active(next){ - if(next !== undefined) return next; - return false; - } - vibration_restart(){ - return null; - } - scene(){ - return (this.Three().scene()); - } - controls(){ - return (this.Three().controls()); - } - controls_target(){ - return null; - } - camera(){ - return (this.Three().camera()); - } - on_render(){ - return null; - } - Three(){ - const obj = new this.$.$optimade_cifplayer_lib_three_view(); - (obj.controls_target) = () => ((this.controls_target())); - (obj.on_render) = () => ((this.on_render())); - return obj; - } - descr_a(){ - return "a="; - } - Descr_a(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_a())); - return obj; - } - descr_b(){ - return "b="; - } - Descr_b(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_b())); - return obj; - } - descr_c(){ - return "c="; - } - Descr_c(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_c())); - return obj; - } - descr_alpha(){ - return "α="; - } - Descr_alpha(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_alpha())); - return obj; - } - descr_beta(){ - return "β="; - } - Descr_beta(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_beta())); - return obj; - } - descr_gamma(){ - return "γ="; - } - Descr_gamma(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ((this.descr_gamma())); - return obj; - } - info_sub(){ - return [ - (this.Descr_a()), - (this.Descr_b()), - (this.Descr_c()), - (this.Descr_alpha()), - (this.Descr_beta()), - (this.Descr_gamma()) - ]; - } - Info(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.info_sub())); - return obj; - } - Sym_icon(){ - const obj = new this.$.$mol_icon_eye_check(); - return obj; - } - symlabel(){ - return "SG"; - } - Toogle_all_title(){ - return "Enable all"; - } - toogle_all_symmetry(next){ - if(next !== undefined) return next; - return null; - } - Toogle_all(){ - const obj = new this.$.$mol_button_minor(); - (obj.title) = () => ((this.Toogle_all_title())); - (obj.click) = (next) => ((this.toogle_all_symmetry(next))); - return obj; - } - sym_name(id){ - return ""; - } - symmetry_visible(id, next){ - if(next !== undefined) return next; - return false; - } - Sym_check(id){ - const obj = new this.$.$mol_check_box(); - (obj.title) = () => ((this.sym_name(id))); - (obj.checked) = (next) => ((this.symmetry_visible(id, next))); - return obj; - } - sym_checks(){ - return [(this.Sym_check("0"))]; - } - Sym_checks(){ - const obj = new this.$.$mol_list(); - (obj.sub) = () => ((this.sym_checks())); - return obj; - } - Sym_list(){ - const obj = new this.$.$mol_scroll(); - (obj.sub) = () => ([(this.Sym_checks())]); - return obj; - } - Symlabel(){ - const obj = new this.$.$mol_pick(); - (obj.trigger_content) = () => ([(this.Sym_icon()), (this.symlabel())]); - (obj.bubble_content) = () => ([(this.Toogle_all()), (this.Sym_list())]); - return obj; - } - symlabel_visible(){ - return [(this.Symlabel())]; - } - translate_cell_label(){ - return "1×1×1"; - } - Translate_label_a(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ("a"); - return obj; - } - translate_limit_a(){ - return 1; - } - Translate_a(){ - const obj = new this.$.$mol_number(); - (obj.value) = (next) => ((this.translate_a(next))); - (obj.hint) = () => ("1"); - (obj.value_min) = () => (1); - (obj.value_max) = () => ((this.translate_limit_a())); - return obj; - } - Translate_label_b(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ("b"); - return obj; - } - translate_limit_b(){ - return 1; - } - Translate_b(){ - const obj = new this.$.$mol_number(); - (obj.value) = (next) => ((this.translate_b(next))); - (obj.hint) = () => ("1"); - (obj.value_min) = () => (1); - (obj.value_max) = () => ((this.translate_limit_b())); - return obj; - } - Translate_label_c(){ - const obj = new this.$.$mol_paragraph(); - (obj.title) = () => ("c"); - return obj; - } - translate_limit_c(){ - return 1; - } - Translate_c(){ - const obj = new this.$.$mol_number(); - (obj.value) = (next) => ((this.translate_c(next))); - (obj.hint) = () => ("1"); - (obj.value_min) = () => (1); - (obj.value_max) = () => ((this.translate_limit_c())); - return obj; - } - Translate_cells(){ - const obj = new this.$.$mol_pick(); - (obj.trigger_content) = () => ([(this.translate_cell_label())]); - (obj.bubble_content) = () => ([ - (this.Translate_label_a()), - (this.Translate_a()), - (this.Translate_label_b()), - (this.Translate_b()), - (this.Translate_label_c()), - (this.Translate_c()) - ]); - return obj; - } - centered(next){ - if(next !== undefined) return next; - return true; - } - Center_icon(){ - const obj = new this.$.$mol_icon_image_filter_center_focus(); - return obj; - } - Center(){ - const obj = new this.$.$mol_check_icon(); - (obj.checked) = (next) => ((this.centered(next))); - (obj.Icon) = () => ((this.Center_icon())); - return obj; - } - left_panel(){ - return [ - (this.Info()), - ...(this.symlabel_visible()), - (this.Translate_cells()), - (this.Center()) - ]; - } - Left_panel(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.left_panel())); - return obj; - } - zoom_up(next){ - if(next !== undefined) return next; - return null; - } - Zoom_up_icon(){ - const obj = new this.$.$mol_icon_magnify_plus_outline(); - return obj; - } - Zoom_up(){ - const obj = new this.$.$mol_button_minor(); - (obj.click) = (next) => ((this.zoom_up(next))); - (obj.sub) = () => ([(this.Zoom_up_icon())]); - return obj; - } - zoom_down(next){ - if(next !== undefined) return next; - return null; - } - Zoom_down_icon(){ - const obj = new this.$.$mol_icon_magnify_minus_outline(); - return obj; - } - Zoom_down(){ - const obj = new this.$.$mol_button_minor(); - (obj.click) = (next) => ((this.zoom_down(next))); - (obj.sub) = () => ([(this.Zoom_down_icon())]); - return obj; - } - Zoom_section(){ - const obj = new this.$.$mol_list(); - (obj.sub) = () => ([(this.Zoom_up()), (this.Zoom_down())]); - return obj; - } - Tools(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Zoom_section())]); - return obj; - } - overlay(next){ - if(next !== undefined) return next; - return "S"; - } - available_overlays(){ - return {"": "display none", "S": "elements"}; - } - Switch_overlay(){ - const obj = new this.$.$mol_switch(); - (obj.value) = (next) => ((this.overlay(next))); - (obj.options) = () => ((this.available_overlays())); - return obj; - } - overlays_sub(){ - return [(this.Switch_overlay())]; - } - Overlays(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ((this.overlays_sub())); - return obj; - } - message(){ - return ""; - } - Message_card(){ - const obj = new this.$.$mol_card(); - (obj.theme) = () => ("$mol_theme_special"); - (obj.title) = () => ((this.message())); - return obj; - } - Message(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Message_card())]); - return obj; - } - message_visible(){ - return [(this.Message())]; - } - color_a(){ - return ""; - } - color_b(){ - return ""; - } - color_c(){ - return ""; - } - data(next){ - if(next !== undefined) return next; - return null; - } - externals(next){ - if(next !== undefined) return next; - return null; - } - fullscreen(next){ - if(next !== undefined) return next; - return true; - } - skip_panel(next){ - if(next !== undefined) return next; - return false; - } - atom_radius_scale(){ - return 0.6; - } - zoom_scale_step(){ - return 0.3; - } - vibrate(next){ - if(next !== undefined) return next; - return null; - } - unvibrate(){ - return null; - } - phonon(next){ - if(next !== undefined) return next; - return null; - } - translate_cells(){ - return [ - (this.translate_a()), - (this.translate_b()), - (this.translate_c()) - ]; - } - translate_cells_limit(){ - return 50; - } - plugins(){ - return [(this.Theme())]; - } - auto(){ - return [ - (this.external_theme_auto()), - (this.dir_light()), - (this.ambient_light()), - ...(this.atom_boxes()), - ...(this.overlay_boxes()), - (this.cell_box()), - (this.axes_box()), - (this.overlay_changed()), - (this.vibration_active()), - (this.vibration_restart()) - ]; - } - atom_box(id){ - return null; - } - overlay_box(id){ - return null; - } - minimal_heigth(){ - return 300; - } - sub(){ - return [ - (this.Three()), - (this.Left_panel()), - (this.Tools()), - (this.Overlays()), - ...(this.message_visible()) - ]; - } - colors_light(){ - return { - "a": "#990000", - "b": "#009900", - "c": "#0099FF" - }; - } - colors_dark(){ - return { - "a": "#EE4B2B", - "b": "#009900", - "c": "#0099FF" - }; - } - cell_lines_color(){ - return "#DDDDDD"; - } - axcolor(){ - return [ - (this.color_a()), - (this.color_b()), - (this.color_c()) - ]; - } - style(){ - return { - ...(super.style()), - "--color_a": (this.color_a()), - "--color_b": (this.color_b()), - "--color_c": (this.color_c()) - }; - } - attr(){ - return {...(super.attr()), "fullscreen": (this.fullscreen())}; - } - }; - ($mol_mem(($.$optimade_cifplayer_player.prototype), "translate_a")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "translate_b")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "translate_c")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Theme")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "vibration_active")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Three")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_a")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_b")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_c")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_alpha")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_beta")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Descr_gamma")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Info")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Sym_icon")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "toogle_all_symmetry")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Toogle_all")); - ($mol_mem_key(($.$optimade_cifplayer_player.prototype), "symmetry_visible")); - ($mol_mem_key(($.$optimade_cifplayer_player.prototype), "Sym_check")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Sym_checks")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Sym_list")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Symlabel")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_label_a")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_a")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_label_b")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_b")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_label_c")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_c")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Translate_cells")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "centered")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Center_icon")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Center")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Left_panel")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "zoom_up")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_up_icon")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_up")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "zoom_down")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_down_icon")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_down")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Zoom_section")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Tools")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "overlay")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Switch_overlay")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Overlays")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Message_card")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "Message")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "data")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "externals")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "fullscreen")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "skip_panel")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "vibrate")); - ($mol_mem(($.$optimade_cifplayer_player.prototype), "phonon")); - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("optimade/cifplayer/player/player.view.css", "*{font-family:Exo2,Arial;}\n\n[mol_theme=\"$mol_theme_light\"] {\n\t--mol_theme_back: white;\n}\n\n@font-face {\nfont-family:Exo2;src:local('Exo 2 Regular'),local('Exo2-Regular'),url('data:font/woff;charset=utf-8;base64,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') format('woff');\n}\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - $mol_style_define($optimade_cifplayer_player, { - background: { - color: $mol_theme.back, - }, - position: 'relative', - height: '100%', - '@': { - fullscreen: { - 'true': { - position: 'fixed', - zIndex: 9999, - top: 0, - left: 0, - right: 0, - bottom: 0, - }, - }, - }, - Descr_a: { - color: $mol_style_func.vary('--color_a') - }, - Descr_b: { - color: $mol_style_func.vary('--color_b') - }, - Descr_c: { - color: $mol_style_func.vary('--color_c') - }, - Translate_label_a: { - color: $mol_style_func.vary('--color_a'), - padding: $mol_gap.text, - }, - Translate_label_b: { - color: $mol_style_func.vary('--color_b'), - padding: $mol_gap.text, - }, - Translate_label_c: { - color: $mol_style_func.vary('--color_c'), - padding: $mol_gap.text, - }, - Translate_cells: { - pointerEvents: 'auto', - Bubble: { - display: 'grid', - gridTemplateColumns: 'auto auto', - }, - }, - Left_panel: { - userSelect: 'none', - pointerEvents: 'none', - position: 'absolute', - zIndex: 1, - fontSize: '13px', - flex: { - direction: 'column', - }, - align: { - items: 'flex-start', - }, - }, - Info: { - padding: $mol_gap.block, - gap: $mol_gap.space, - flex: { - direction: 'column', - }, - }, - Symlabel: { - pointerEvents: 'auto', - }, - Center: { - pointerEvents: 'auto', - }, - Toogle_all: { - boxShadow: `0 0.5rem 0.5rem -0.5rem hsla(0,0%,0%,.5)`, - }, - Overlays: { - position: 'absolute', - bottom: 0, - width: '100%', - align: { - items: 'center', - }, - zIndex: 1, - }, - Switch_overlay: { - justify: { - content: 'center' - }, - }, - Tools: { - position: 'absolute', - right: 0, - zIndex: 1, - flex: { - direction: 'column', - }, - align: { - items: 'flex-end', - }, - }, - Zoom_section: { - padding: { - top: '2rem', - bottom: '1rem', - }, - }, - Zoom_up_icon: { - width: '2rem', - height: '2rem', - }, - Zoom_down_icon: { - width: '2rem', - height: '2rem', - }, - Message: { - position: 'absolute', - zIndex: 1, - top: '6rem', - left: 0, - right: 0, - }, - Message_card: { - background: { - color: $mol_theme.back, - }, - margin: 'auto', - }, - Three: { - cursor: 'move', - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_float) = class $mol_float extends ($.$mol_view) { - style(){ - return {...(super.style()), "minHeight": "auto"}; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/float/float.view.css", "[mol_float] {\n\tposition: sticky;\n\ttop: 0;\n\tleft: 0;\n\tz-index: var(--mol_layer_float);\n\topacity: 1;\n\ttransition: opacity .25s ease-in;\n\tdisplay: block;\n\tbackground: linear-gradient( var(--mol_theme_card), var(--mol_theme_card) ), var(--mol_theme_back);\n\tbox-shadow: 0 0 .5rem hsla(0,0%,0%,.25);\n}\n\n"); -})($ || ($ = {})); - -; -"use strict"; - -; - ($.$mol_icon_chevron) = class $mol_icon_chevron extends ($.$mol_icon) { - path(){ - return "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_check_expand) = class $mol_check_expand extends ($.$mol_check) { - level_style(){ - return "0px"; - } - expanded(next){ - if(next !== undefined) return next; - return false; - } - expandable(){ - return false; - } - Icon(){ - const obj = new this.$.$mol_icon_chevron(); - return obj; - } - level(){ - return 0; - } - style(){ - return {...(super.style()), "paddingLeft": (this.level_style())}; - } - checked(next){ - return (this.expanded(next)); - } - enabled(){ - return (this.expandable()); - } - }; - ($mol_mem(($.$mol_check_expand.prototype), "expanded")); - ($mol_mem(($.$mol_check_expand.prototype), "Icon")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_check_expand extends $.$mol_check_expand { - level_style() { - return `${this.level() * 1 - 1}rem`; - } - expandable() { - return this.expanded() !== null; - } - } - $$.$mol_check_expand = $mol_check_expand; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/check/expand/expand.view.css", "[mol_check_expand] {\n\tmin-width: 20px;\n}\n\n:where([mol_check_expand][disabled]) [mol_check_expand_icon] {\n\tvisibility: hidden;\n}\n\n[mol_check_expand_icon] {\n\tbox-shadow: none;\n\tmargin-left: -0.375rem;\n}\n[mol_check_expand_icon] {\n\ttransform: rotateZ(0deg);\n}\n\n:where([mol_check_checked]) [mol_check_expand_icon] {\n\ttransform: rotateZ(90deg);\n}\n\n[mol_check_expand_icon] {\n\tvertical-align: text-top;\n}\n\n[mol_check_expand_label] {\n\tmargin-left: 0;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_grid) = class $mol_grid extends ($.$mol_view) { - rows(){ - return []; - } - Table(){ - const obj = new this.$.$mol_grid_table(); - (obj.sub) = () => ((this.rows())); - return obj; - } - head_cells(){ - return []; - } - cells(id){ - return []; - } - cell_content(id){ - return []; - } - cell_content_text(id){ - return (this.cell_content(id)); - } - cell_content_number(id){ - return (this.cell_content(id)); - } - col_head_content(id){ - return []; - } - cell_level(id){ - return 0; - } - cell_expanded(id, next){ - if(next !== undefined) return next; - return false; - } - needle(){ - return ""; - } - cell_value(id){ - return ""; - } - Cell_dimmer(id){ - const obj = new this.$.$mol_dimmer(); - (obj.needle) = () => ((this.needle())); - (obj.haystack) = () => ((this.cell_value(id))); - return obj; - } - row_height(){ - return 32; - } - row_ids(){ - return []; - } - row_id(id){ - return null; - } - col_ids(){ - return []; - } - records(){ - return {}; - } - record(id){ - return null; - } - hierarchy(){ - return null; - } - hierarchy_col(){ - return ""; - } - minimal_width(){ - return 0; - } - sub(){ - return [(this.Head()), (this.Table())]; - } - Head(){ - const obj = new this.$.$mol_grid_row(); - (obj.cells) = () => ((this.head_cells())); - return obj; - } - Row(id){ - const obj = new this.$.$mol_grid_row(); - (obj.minimal_height) = () => ((this.row_height())); - (obj.minimal_width) = () => ((this.minimal_width())); - (obj.cells) = () => ((this.cells(id))); - return obj; - } - Cell(id){ - const obj = new this.$.$mol_view(); - return obj; - } - cell(id){ - return null; - } - Cell_text(id){ - const obj = new this.$.$mol_grid_cell(); - (obj.sub) = () => ((this.cell_content_text(id))); - return obj; - } - Cell_number(id){ - const obj = new this.$.$mol_grid_number(); - (obj.sub) = () => ((this.cell_content_number(id))); - return obj; - } - Col_head(id){ - const obj = new this.$.$mol_float(); - (obj.dom_name) = () => ("th"); - (obj.sub) = () => ((this.col_head_content(id))); - return obj; - } - Cell_branch(id){ - const obj = new this.$.$mol_check_expand(); - (obj.level) = () => ((this.cell_level(id))); - (obj.label) = () => ((this.cell_content(id))); - (obj.expanded) = (next) => ((this.cell_expanded(id, next))); - return obj; - } - Cell_content(id){ - return [(this.Cell_dimmer(id))]; - } - }; - ($mol_mem(($.$mol_grid.prototype), "Table")); - ($mol_mem_key(($.$mol_grid.prototype), "cell_expanded")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell_dimmer")); - ($mol_mem(($.$mol_grid.prototype), "Head")); - ($mol_mem_key(($.$mol_grid.prototype), "Row")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell_text")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell_number")); - ($mol_mem_key(($.$mol_grid.prototype), "Col_head")); - ($mol_mem_key(($.$mol_grid.prototype), "Cell_branch")); - ($.$mol_grid_table) = class $mol_grid_table extends ($.$mol_list) {}; - ($.$mol_grid_row) = class $mol_grid_row extends ($.$mol_view) { - cells(){ - return []; - } - sub(){ - return (this.cells()); - } - }; - ($.$mol_grid_cell) = class $mol_grid_cell extends ($.$mol_view) { - minimal_height(){ - return 40; - } - }; - ($.$mol_grid_number) = class $mol_grid_number extends ($.$mol_grid_cell) {}; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_grid extends $.$mol_grid { - head_cells() { - return this.col_ids().map(colId => this.Col_head(colId)); - } - col_head_content(colId) { - return [colId]; - } - rows() { - return this.row_ids().map(id => this.Row(id)); - } - cells(row_id) { - return this.col_ids().map(col_id => this.Cell({ row: row_id, col: col_id })); - } - col_type(col_id) { - if (col_id === this.hierarchy_col()) - return 'branch'; - const rowFirst = this.row_id(0); - const val = this.record(rowFirst[rowFirst.length - 1])[col_id]; - if (typeof val === 'number') - return 'number'; - return 'text'; - } - Cell(id) { - switch (this.col_type(id.col).valueOf()) { - case 'branch': return this.Cell_branch(id); - case 'number': return this.Cell_number(id); - } - return this.Cell_text(id); - } - cell_content(id) { - return [this.record(id.row[id.row.length - 1])[id.col]]; - } - cell_content_text(id) { - return this.cell_content(id).map(val => typeof val === 'object' ? JSON.stringify(val) : val); - } - records() { - return []; - } - record(id) { - return this.records()[id]; - } - record_ids() { - return Object.keys(this.records()); - } - row_id(index) { - return this.row_ids().slice(index, index + 1).valueOf()[0]; - } - col_ids() { - const rowFirst = this.row_id(0); - if (rowFirst === void 0) - return []; - const record = this.record(rowFirst[rowFirst.length - 1]); - if (!record) - return []; - return Object.keys(record); - } - hierarchy() { - const hierarchy = {}; - const root = hierarchy[''] = { - id: '', - parent: null, - sub: [], - }; - this.record_ids().map(id => { - root.sub.push(hierarchy[id] = { - id, - parent: root, - sub: [], - }); - }); - return hierarchy; - } - row_sub_ids(row) { - return this.hierarchy()[row[row.length - 1]].sub.map(child => row.concat(child.id)); - } - row_root_id() { - return ['']; - } - cell_level(id) { - return id.row.length - 1; - } - row_ids() { - const next = []; - const add = (row) => { - next.push(row); - if (this.row_expanded(row)) { - this.row_sub_ids(row).forEach(child => add(child)); - } - }; - this.row_sub_ids(this.row_root_id()).forEach(child => add(child)); - return next; - } - row_expanded(row_id, next) { - if (!this.row_sub_ids(row_id).length) - return null; - const key = `row_expanded(${JSON.stringify(row_id)})`; - const next2 = $mol_state_session.value(key, next); - return (next2 == null) ? this.row_expanded_default(row_id) : next2; - } - row_expanded_default(row_id) { - return true; - } - cell_expanded(id, next) { - return this.row_expanded(id.row, next); - } - } - __decorate([ - $mol_mem - ], $mol_grid.prototype, "head_cells", null); - __decorate([ - $mol_mem - ], $mol_grid.prototype, "rows", null); - __decorate([ - $mol_mem_key - ], $mol_grid.prototype, "col_type", null); - __decorate([ - $mol_mem - ], $mol_grid.prototype, "record_ids", null); - __decorate([ - $mol_mem - ], $mol_grid.prototype, "hierarchy", null); - __decorate([ - $mol_mem - ], $mol_grid.prototype, "row_ids", null); - $$.$mol_grid = $mol_grid; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/grid/grid.view.css", "[mol_grid] {\n\tdisplay: block;\n\tflex: 0 1 auto;\n\tposition: relative;\n\toverflow-x: auto;\n}\n\n[mol_grid_gap] {\n\tposition: absolute;\n\tpadding: .1px;\n\ttop: 0;\n\ttransform: translateZ(0);\n}\n\n[mol_grid_table] {\n\tborder-spacing: 0;\n\tdisplay: table-row-group;\n\tposition: relative;\n}\n\n[mol_grid_table] > * {\n\tdisplay: table-row;\n\ttransition: none;\n}\n\n[mol_grid_head] > *,\n[mol_grid_table] > * > * {\n\tdisplay: table-cell;\n\tpadding: var(--mol_gap_text);\n\twhite-space: nowrap;\n\tvertical-align: middle;\n\tbox-shadow: inset 2px 2px 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_row]:where(:first-child) > * {\n\tbox-shadow: inset 2px 0 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_table] > * > *:where(:first-child) {\n\tbox-shadow: inset 0px 2px 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_head] > * {\n\tbox-shadow: inset 2px -2px 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_head] > *:where(:first-child) {\n\tbox-shadow: inset 0px -2px 0 -1px var(--mol_theme_line);\n}\n\n[mol_grid_table] > [mol_grid_row]:where(:first-child) > *:where(:first-child) {\n\tbox-shadow: none;\n}\t\n\n[mol_grid_head] {\n\tdisplay: table-row;\n\ttransform: none !important;\n}\n\n/* [mol_grid_cell_number] {\n\ttext-align: right;\n} */\n\n[mol_grid_col_head] {\n\tfont-weight: inherit;\n\ttext-align: inherit;\n\tdisplay: table-cell;\n\tcolor: var(--mol_theme_shade);\n}\n\n[mol_grid_cell_dimmer] {\n\tdisplay: inline-block;\n\tvertical-align: inherit;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_embed_native) = class $mol_embed_native extends ($.$mol_scroll) { - mime(){ - return ""; - } - title(){ - return ""; - } - Fallback(){ - const obj = new this.$.$mol_link(); - (obj.uri) = () => ((this.uri())); - (obj.sub) = () => ([(this.title())]); - return obj; - } - uri_change(next){ - if(next !== undefined) return next; - return null; - } - uri(next){ - if(next !== undefined) return next; - return ""; - } - dom_name(){ - return "object"; - } - window(){ - return null; - } - attr(){ - return { - ...(super.attr()), - "data": (this.uri()), - "type": (this.mime()) - }; - } - sub(){ - return [(this.Fallback())]; - } - message(){ - return {"hashchange": (next) => (this.uri_change(next))}; - } - }; - ($mol_mem(($.$mol_embed_native.prototype), "Fallback")); - ($mol_mem(($.$mol_embed_native.prototype), "uri_change")); - ($mol_mem(($.$mol_embed_native.prototype), "uri")); - - -; -"use strict"; -var $; -(function ($) { - function $mol_promise() { - let done; - let fail; - const promise = new Promise((d, f) => { - done = d; - fail = f; - }); - return Object.assign(promise, { - done, - fail, - }); - } - $.$mol_promise = $mol_promise; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wait_timeout_async(timeout) { - const promise = $mol_promise(); - const task = new this.$mol_after_timeout(timeout, () => promise.done()); - return Object.assign(promise, { - destructor: () => task.destructor() - }); - } - $.$mol_wait_timeout_async = $mol_wait_timeout_async; - function $mol_wait_timeout(timeout) { - return this.$mol_wire_sync(this).$mol_wait_timeout_async(timeout); - } - $.$mol_wait_timeout = $mol_wait_timeout; -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_native extends $.$mol_embed_native { - window() { - $mol_wire_solid(); - return $mol_wire_sync(this).load(this.dom_node_actual()); - } - load(frame) { - return new Promise((done, fail) => { - frame.onload = () => { - try { - if (frame.contentWindow.location.href === 'about:blank') { - return; - } - } - catch { } - done(frame.contentWindow); - }; - frame.onerror = (event) => { - fail(typeof event === 'string' ? new Error(event) : event.error || event); - }; - }); - } - uri_resource() { - return this.uri().replace(/#.*/, ''); - } - message_listener() { - return new $mol_dom_listener($mol_dom_context, 'message', $mol_wire_async(this).message_receive); - } - message_receive(event) { - if (!event) - return; - if (event.source !== this.window()) - return; - if (!Array.isArray(event.data)) - return; - this.message()[event.data[0]]?.(event); - } - uri_change(event) { - this.$.$mol_wait_timeout(1000); - this.uri(event.data[1]); - } - auto() { - return [ - this.message_listener(), - this.window(), - ]; - } - } - __decorate([ - $mol_mem - ], $mol_embed_native.prototype, "window", null); - __decorate([ - $mol_mem - ], $mol_embed_native.prototype, "uri_resource", null); - __decorate([ - $mol_mem - ], $mol_embed_native.prototype, "message_listener", null); - $$.$mol_embed_native = $mol_embed_native; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/embed/native/native.view.css", "[mol_embed_native] {\n\tmax-width: 100%;\n\tmax-height: 100vh;\n\tobject-fit: cover;\n\tdisplay: flex;\n\tflex: 1 1 auto;\n\tobject-position: top left;\n\tborder-radius: var(--mol_gap_round);\n\taspect-ratio: 4/3;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_icon_youtube) = class $mol_icon_youtube extends ($.$mol_icon) { - path(){ - return "M10,15L15.19,12L10,9V15M21.56,7.17C21.69,7.64 21.78,8.27 21.84,9.07C21.91,9.87 21.94,10.56 21.94,11.16L22,12C22,14.19 21.84,15.8 21.56,16.83C21.31,17.73 20.73,18.31 19.83,18.56C19.36,18.69 18.5,18.78 17.18,18.84C15.88,18.91 14.69,18.94 13.59,18.94L12,19C7.81,19 5.2,18.84 4.17,18.56C3.27,18.31 2.69,17.73 2.44,16.83C2.31,16.36 2.22,15.73 2.16,14.93C2.09,14.13 2.06,13.44 2.06,12.84L2,12C2,9.81 2.16,8.2 2.44,7.17C2.69,6.27 3.27,5.69 4.17,5.44C4.64,5.31 5.5,5.22 6.82,5.16C8.12,5.09 9.31,5.06 10.41,5.06L12,5C16.19,5 18.8,5.16 19.83,5.44C20.73,5.69 21.31,6.27 21.56,7.17Z"; - } - }; - - -; -"use strict"; - -; - ($.$mol_frame) = class $mol_frame extends ($.$mol_embed_native) { - allow(){ - return ""; - } - uri(next){ - if(next !== undefined) return next; - return "about:config"; - } - html(){ - return null; - } - dom_name(){ - return "iframe"; - } - attr(){ - return { - ...(super.attr()), - "data": null, - "type": null, - "allow": (this.allow()), - "src": (this.uri()), - "srcdoc": (this.html()) - }; - } - fullscreen(){ - return true; - } - accelerometer(){ - return true; - } - autoplay(){ - return true; - } - encription(){ - return true; - } - gyroscope(){ - return true; - } - pip(){ - return true; - } - clipboard_read(){ - return true; - } - clipboard_write(){ - return true; - } - }; - ($mol_mem(($.$mol_frame.prototype), "uri")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_frame extends $.$mol_frame { - window() { - return super.window(); - } - allow() { - return [ - ...this.fullscreen() ? ['fullscreen'] : [], - ...this.accelerometer() ? ['accelerometer'] : [], - ...this.autoplay() ? ['autoplay'] : [], - ...this.encription() ? ['encrypted-media'] : [], - ...this.gyroscope() ? ['gyroscope'] : [], - ...this.pip() ? ['picture-in-picture'] : [], - ...this.clipboard_read() ? [`clipboard-read ${this.uri()}`] : [], - ...this.clipboard_write() ? [`clipboard-write ${this.uri()}`] : [], - ].join('; '); - } - } - $$.$mol_frame = $mol_frame; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_define($mol_frame, { - border: { - style: 'none', - }, - maxHeight: $mol_style_unit.vh(100), - }); -})($ || ($ = {})); - -; - ($.$mol_embed_service) = class $mol_embed_service extends ($.$mol_check) { - active(next){ - if(next !== undefined) return next; - return false; - } - title(){ - return ""; - } - video_preview(){ - return ""; - } - Image(){ - const obj = new this.$.$mol_image(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.video_preview())); - return obj; - } - Hint(){ - const obj = new this.$.$mol_icon_youtube(); - return obj; - } - video_embed(){ - return ""; - } - Frame(){ - const obj = new this.$.$mol_frame(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.video_embed())); - return obj; - } - uri(){ - return ""; - } - video_id(){ - return ""; - } - checked(next){ - return (this.active(next)); - } - sub(){ - return [ - (this.Image()), - (this.Hint()), - (this.Frame()) - ]; - } - }; - ($mol_mem(($.$mol_embed_service.prototype), "active")); - ($mol_mem(($.$mol_embed_service.prototype), "Image")); - ($mol_mem(($.$mol_embed_service.prototype), "Hint")); - ($mol_mem(($.$mol_embed_service.prototype), "Frame")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_service extends $.$mol_embed_service { - sub() { - return this.active() - ? [this.Frame()] - : [this.Image(), this.Hint()]; - } - } - __decorate([ - $mol_mem - ], $mol_embed_service.prototype, "sub", null); - $$.$mol_embed_service = $mol_embed_service; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/embed/service/service.view.css", "[mol_embed_service] {\n\tpadding: 0;\n\tmax-width: 100%;\n}\n\n[mol_embed_service_image] {\n\tflex: auto 1 1;\n\twidth: 100vw;\n}\n\n[mol_embed_service_frame] {\n\twidth: 100vw;\n}\n\n[mol_embed_service_hint] {\n\tposition: absolute;\n left: 50%;\n top: 50%;\n width: 50%;\n height: 50%;\n opacity: 0.3;\n transform: translate(-50%, -50%);\n}\n\n[mol_embed_service]:hover [mol_embed_service_hint] {\n\topacity: .6;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_embed_youtube) = class $mol_embed_youtube extends ($.$mol_embed_service) {}; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_youtube extends $.$mol_embed_youtube { - video_embed() { - return `https://www.youtube.com/embed/${encodeURIComponent(this.video_id())}?autoplay=1&loop=1`; - } - video_id() { - return this.uri().match(/^https\:\/\/www\.youtube\.com\/(?:embed\/|shorts\/|watch\?v=)([^\/&?#]+)/)?.[1] - ?? this.uri().match(/^https\:\/\/youtu\.be\/([^\/&?#]+)/)?.[1] - ?? 'about:blank'; - } - video_preview() { - return `https://i.ytimg.com/vi/${this.video_id()}/sddefault.jpg`; - } - } - __decorate([ - $mol_mem - ], $mol_embed_youtube.prototype, "video_embed", null); - __decorate([ - $mol_mem - ], $mol_embed_youtube.prototype, "video_id", null); - __decorate([ - $mol_mem - ], $mol_embed_youtube.prototype, "video_preview", null); - $$.$mol_embed_youtube = $mol_embed_youtube; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_embed_rutube) = class $mol_embed_rutube extends ($.$mol_embed_service) {}; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_rutube extends $.$mol_embed_rutube { - video_embed() { - return `https://rutube.ru/play/embed/${encodeURIComponent(this.video_id())}`; - } - video_id() { - return this.uri().match(/^https:\/\/rutube.ru\/video\/([^\/&?#]+)/)?.[1] ?? 'about:blank'; - } - video_preview() { - return `https://rutube.ru/api/video/${this.video_id()}/thumbnail/?redirect=1`; - } - } - __decorate([ - $mol_mem - ], $mol_embed_rutube.prototype, "video_embed", null); - __decorate([ - $mol_mem - ], $mol_embed_rutube.prototype, "video_id", null); - __decorate([ - $mol_mem - ], $mol_embed_rutube.prototype, "video_preview", null); - $$.$mol_embed_rutube = $mol_embed_rutube; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_embed_any) = class $mol_embed_any extends ($.$mol_view) { - title(){ - return ""; - } - uri(){ - return ""; - } - Image(){ - const obj = new this.$.$mol_image(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.uri())); - return obj; - } - Object(){ - const obj = new this.$.$mol_embed_native(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.uri())); - return obj; - } - Youtube(){ - const obj = new this.$.$mol_embed_youtube(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.uri())); - return obj; - } - Rutube(){ - const obj = new this.$.$mol_embed_rutube(); - (obj.title) = () => ((this.title())); - (obj.uri) = () => ((this.uri())); - return obj; - } - }; - ($mol_mem(($.$mol_embed_any.prototype), "Image")); - ($mol_mem(($.$mol_embed_any.prototype), "Object")); - ($mol_mem(($.$mol_embed_any.prototype), "Youtube")); - ($mol_mem(($.$mol_embed_any.prototype), "Rutube")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_embed_any extends $.$mol_embed_any { - type() { - try { - const uri = this.uri(); - if (/\b(png|gif|jpg|jpeg|jfif|webp|svg)\b/.test(uri)) - return 'image'; - if (/^https:\/\/www\.youtube\.com\//.test(uri)) - return 'youtube'; - if (/^https:\/\/youtu\.be\//.test(uri)) - return 'youtube'; - if (/^https:\/\/rutube\.ru\//.test(uri)) - return 'rutube'; - } - catch (error) { - $mol_fail_log(error); - return 'image'; - } - return 'object'; - } - sub() { - switch (this.type()) { - case 'image': return [this.Image()]; - case 'youtube': return [this.Youtube()]; - case 'rutube': return [this.Rutube()]; - default: return [this.Object()]; - } - } - } - __decorate([ - $mol_mem - ], $mol_embed_any.prototype, "type", null); - __decorate([ - $mol_mem - ], $mol_embed_any.prototype, "sub", null); - $$.$mol_embed_any = $mol_embed_any; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; - ($.$mol_expander) = class $mol_expander extends ($.$mol_list) { - expanded(next){ - if(next !== undefined) return next; - return false; - } - expandable(){ - return true; - } - label(){ - return [(this.title())]; - } - Trigger(){ - const obj = new this.$.$mol_check_expand(); - (obj.checked) = (next) => ((this.expanded(next))); - (obj.expandable) = () => ((this.expandable())); - (obj.label) = () => ((this.label())); - return obj; - } - Tools(){ - return null; - } - Label(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Trigger()), (this.Tools())]); - return obj; - } - content(){ - return []; - } - Content(){ - const obj = new this.$.$mol_list(); - (obj.rows) = () => ((this.content())); - return obj; - } - rows(){ - return [(this.Label()), (this.Content())]; - } - }; - ($mol_mem(($.$mol_expander.prototype), "expanded")); - ($mol_mem(($.$mol_expander.prototype), "Trigger")); - ($mol_mem(($.$mol_expander.prototype), "Label")); - ($mol_mem(($.$mol_expander.prototype), "Content")); - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_expander extends $.$mol_expander { - rows() { - return [ - this.Label(), - ...this.expanded() ? [this.Content()] : [] - ]; - } - expandable() { - return this.content().length > 0; - } - } - __decorate([ - $mol_mem - ], $mol_expander.prototype, "rows", null); - $$.$mol_expander = $mol_expander; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/expander/expander.view.css", "[mol_expander] {\n\tflex-direction: column;\n}\n\n[mol_expander_label] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tborder-radius: var(--mol_gap_round);\n}\n\n[mol_expander_trigger] {\n\tflex: auto;\n\tposition: relative;\n}\n"); -})($ || ($ = {})); - -; - ($.$mol_text) = class $mol_text extends ($.$mol_list) { - auto_scroll(){ - return null; - } - block_content(id){ - return []; - } - uri_resolve(id){ - return ""; - } - quote_text(id){ - return ""; - } - highlight(){ - return ""; - } - list_type(id){ - return "-"; - } - list_text(id){ - return ""; - } - header_level(id){ - return 1; - } - header_arg(id){ - return {}; - } - pre_text(id){ - return ""; - } - code_sidebar_showed(){ - return true; - } - pre_sidebar_showed(){ - return (this.code_sidebar_showed()); - } - table_head_cells(id){ - return []; - } - table_rows(id){ - return []; - } - table_cells(id){ - return []; - } - table_cell_text(id){ - return ""; - } - grid_rows(id){ - return []; - } - grid_cells(id){ - return []; - } - grid_cell_text(id){ - return ""; - } - line_text(id){ - return ""; - } - line_type(id){ - return ""; - } - line_content(id){ - return []; - } - code_syntax(){ - return null; - } - link_uri(id){ - return ""; - } - link_host(id){ - return ""; - } - spoiler_label(id){ - return ""; - } - Spoiler_label(id){ - const obj = new this.$.$mol_text(); - (obj.text) = () => ((this.spoiler_label(id))); - return obj; - } - spoiler_content(id){ - return ""; - } - Spoiler_content(id){ - const obj = new this.$.$mol_text(); - (obj.text) = () => ((this.spoiler_content(id))); - return obj; - } - uri_base(){ - return ""; - } - text(){ - return ""; - } - param(){ - return ""; - } - flow_tokens(){ - return []; - } - block_text(id){ - return ""; - } - auto(){ - return [(this.auto_scroll())]; - } - Paragraph(id){ - const obj = new this.$.$mol_paragraph(); - (obj.sub) = () => ((this.block_content(id))); - return obj; - } - Quote(id){ - const obj = new this.$.$mol_text(); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.text) = () => ((this.quote_text(id))); - (obj.highlight) = () => ((this.highlight())); - (obj.auto_scroll) = () => (null); - return obj; - } - List(id){ - const obj = new this.$.$mol_text_list(); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.type) = () => ((this.list_type(id))); - (obj.text) = () => ((this.list_text(id))); - (obj.highlight) = () => ((this.highlight())); - return obj; - } - item_index(id){ - return 0; - } - Header(id){ - const obj = new this.$.$mol_text_header(); - (obj.minimal_height) = () => (40); - (obj.level) = () => ((this.header_level(id))); - (obj.content) = () => ((this.block_content(id))); - (obj.arg) = () => ((this.header_arg(id))); - return obj; - } - Pre(id){ - const obj = new this.$.$mol_text_code(); - (obj.text) = () => ((this.pre_text(id))); - (obj.highlight) = () => ((this.highlight())); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.sidebar_showed) = () => ((this.pre_sidebar_showed())); - return obj; - } - Cut(id){ - const obj = new this.$.$mol_view(); - (obj.dom_name) = () => ("hr"); - return obj; - } - Table(id){ - const obj = new this.$.$mol_grid(); - (obj.head_cells) = () => ((this.table_head_cells(id))); - (obj.rows) = () => ((this.table_rows(id))); - return obj; - } - Table_row(id){ - const obj = new this.$.$mol_grid_row(); - (obj.cells) = () => ((this.table_cells(id))); - return obj; - } - Table_cell(id){ - const obj = new this.$.$mol_text(); - (obj.auto_scroll) = () => (null); - (obj.highlight) = () => ((this.highlight())); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.text) = () => ((this.table_cell_text(id))); - return obj; - } - Grid(id){ - const obj = new this.$.$mol_grid(); - (obj.rows) = () => ((this.grid_rows(id))); - return obj; - } - Grid_row(id){ - const obj = new this.$.$mol_grid_row(); - (obj.cells) = () => ((this.grid_cells(id))); - return obj; - } - Grid_cell(id){ - const obj = new this.$.$mol_text(); - (obj.auto_scroll) = () => (null); - (obj.highlight) = () => ((this.highlight())); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.text) = () => ((this.grid_cell_text(id))); - return obj; - } - String(id){ - const obj = new this.$.$mol_dimmer(); - (obj.dom_name) = () => ("span"); - (obj.needle) = () => ((this.highlight())); - (obj.haystack) = () => ((this.line_text(id))); - return obj; - } - Span(id){ - const obj = new this.$.$mol_text_span(); - (obj.dom_name) = () => ("span"); - (obj.type) = () => ((this.line_type(id))); - (obj.sub) = () => ((this.line_content(id))); - return obj; - } - Code_line(id){ - const obj = new this.$.$mol_text_code_line(); - (obj.numb_showed) = () => (false); - (obj.highlight) = () => ((this.highlight())); - (obj.text) = () => ((this.line_text(id))); - (obj.uri_resolve) = (id) => ((this.uri_resolve(id))); - (obj.syntax) = () => ((this.code_syntax())); - return obj; - } - Link(id){ - const obj = new this.$.$mol_link_iconed(); - (obj.uri) = () => ((this.link_uri(id))); - (obj.content) = () => ((this.line_content(id))); - return obj; - } - Link_http(id){ - const obj = new this.$.$mol_link_iconed(); - (obj.uri) = () => ((this.link_uri(id))); - (obj.content) = () => ([(this.link_host(id))]); - return obj; - } - Embed(id){ - const obj = new this.$.$mol_embed_any(); - (obj.uri) = () => ((this.link_uri(id))); - (obj.title) = () => ((this.line_text(id))); - return obj; - } - Spoiler(id){ - const obj = new this.$.$mol_expander(); - (obj.label) = () => ([(this.Spoiler_label(id))]); - (obj.content) = () => ([(this.Spoiler_content(id))]); - return obj; - } - }; - ($mol_mem_key(($.$mol_text.prototype), "Spoiler_label")); - ($mol_mem_key(($.$mol_text.prototype), "Spoiler_content")); - ($mol_mem_key(($.$mol_text.prototype), "Paragraph")); - ($mol_mem_key(($.$mol_text.prototype), "Quote")); - ($mol_mem_key(($.$mol_text.prototype), "List")); - ($mol_mem_key(($.$mol_text.prototype), "Header")); - ($mol_mem_key(($.$mol_text.prototype), "Pre")); - ($mol_mem_key(($.$mol_text.prototype), "Cut")); - ($mol_mem_key(($.$mol_text.prototype), "Table")); - ($mol_mem_key(($.$mol_text.prototype), "Table_row")); - ($mol_mem_key(($.$mol_text.prototype), "Table_cell")); - ($mol_mem_key(($.$mol_text.prototype), "Grid")); - ($mol_mem_key(($.$mol_text.prototype), "Grid_row")); - ($mol_mem_key(($.$mol_text.prototype), "Grid_cell")); - ($mol_mem_key(($.$mol_text.prototype), "String")); - ($mol_mem_key(($.$mol_text.prototype), "Span")); - ($mol_mem_key(($.$mol_text.prototype), "Code_line")); - ($mol_mem_key(($.$mol_text.prototype), "Link")); - ($mol_mem_key(($.$mol_text.prototype), "Link_http")); - ($mol_mem_key(($.$mol_text.prototype), "Embed")); - ($mol_mem_key(($.$mol_text.prototype), "Spoiler")); - ($.$mol_text_header) = class $mol_text_header extends ($.$mol_paragraph) { - arg(){ - return {}; - } - content(){ - return []; - } - Link(){ - const obj = new this.$.$mol_link(); - (obj.arg) = () => ((this.arg())); - (obj.hint) = () => ((this.$.$mol_locale.text("$mol_text_header_Link_hint"))); - (obj.sub) = () => ((this.content())); - return obj; - } - level(){ - return 1; - } - sub(){ - return [(this.Link())]; - } - }; - ($mol_mem(($.$mol_text_header.prototype), "Link")); - ($.$mol_text_span) = class $mol_text_span extends ($.$mol_paragraph) { - type(){ - return ""; - } - dom_name(){ - return "span"; - } - attr(){ - return {...(super.attr()), "mol_text_type": (this.type())}; - } - }; - - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_text extends $.$mol_text { - flow_tokens() { - const tokens = []; - this.$.$mol_syntax2_md_flow.tokenize(this.text(), (name, found, chunks) => tokens.push({ name, found, chunks })); - return tokens; - } - block_type(index) { - return this.flow_tokens()[index].name; - } - rows() { - return this.flow_tokens().map(({ name }, index) => { - switch (name) { - case 'quote': return this.Quote(index); - case 'spoiler': return this.Spoiler(index); - case 'header': return this.Header(index); - case 'list': return this.List(index); - case 'code': return this.Pre(index); - case 'code-indent': return this.Pre(index); - case 'table': return this.Table(index); - case 'grid': return this.Grid(index); - case 'cut': return this.Cut(index); - default: return this.Paragraph(index); - } - }); - } - param() { - return this.toString().replace(/^.*?[\)>]\./, '').replace(/[(<>)]/g, ''); - } - header_level(index) { - return this.flow_tokens()[index].chunks[0].length; - } - header_arg(index) { - return { - [this.param()]: this.block_text(index) - }; - } - list_type(index) { - return this.flow_tokens()[index].chunks[1] ?? ''; - } - item_index(index) { - return this.flow_tokens().slice(0, index).filter(token => token.name === 'block').length + 1; - } - pre_text(index) { - const token = this.flow_tokens()[index]; - return (token.chunks[2] ?? token.chunks[0].replace(/^(\t| (?:\+\+|--|\*\*| ) )/gm, '')).replace(/[\n\r]*$/, ''); - } - quote_text(index) { - return this.flow_tokens()[index].chunks[0].replace(/^[>"] /mg, ''); - } - list_text(index) { - return this.flow_tokens()[index].chunks[0].replace(/^([-*+]|(?:\d+[\.\)])+) ?/mg, '').replace(/^ ?/mg, ''); - } - cell_content(indexBlock) { - return this.flow_tokens()[indexBlock].chunks[0] - .split(/\r?\n/g) - .filter(row => row && !/\|--/.test(row)) - .map((row, rowId) => { - return row.split(/\|/g) - .filter(cell => cell) - .map((cell, cellId) => cell.trim()); - }); - } - table_rows(blockId) { - return this.cell_content(blockId) - .slice(1) - .map((row, rowId) => this.Table_row({ block: blockId, row: rowId + 1 })); - } - table_head_cells(blockId) { - return this.cell_content(blockId)[0] - .map((cell, cellId) => this.Table_cell({ block: blockId, row: 0, cell: cellId })); - } - table_cells(id) { - return this.cell_content(id.block)[id.row] - .map((cell, cellId) => this.Table_cell({ block: id.block, row: id.row, cell: cellId })); - } - table_cell_text(id) { - return this.cell_content(id.block)[id.row][id.cell]; - } - grid_content(indexBlock) { - return [...this.flow_tokens()[indexBlock].chunks[0].match(/(?:^! .*?$\r?\n?)+(?:^ +! .*?$\r?\n?)*/gm)] - .map((row, rowId) => { - const cells = []; - for (const line of row.trim().split(/\r?\n/)) { - const [_, indent, content] = /^( *)! (.*)/.exec(line); - const col = Math.ceil(indent.length / 2); - cells[col] = (cells[col] ? cells[col] + '\n' : '') + content; - } - return cells; - }); - } - grid_rows(blockId) { - return this.grid_content(blockId) - .map((row, rowId) => this.Grid_row({ block: blockId, row: rowId })); - } - grid_cells(id) { - return this.grid_content(id.block)[id.row] - .map((cell, cellId) => this.Grid_cell({ block: id.block, row: id.row, cell: cellId })); - } - grid_cell_text(id) { - return this.grid_content(id.block)[id.row][id.cell]; - } - uri_base() { - return $mol_dom_context.document.location.href; - } - uri_base_abs() { - return new URL(this.uri_base(), $mol_dom_context.document.location.href); - } - uri_resolve(uri) { - if (/^(\w+script+:)+/.test(uri)) - return null; - if (/^#\!/.test(uri)) { - const params = {}; - for (const chunk of uri.slice(2).split(this.$.$mol_state_arg.separator)) { - if (!chunk) - continue; - const vals = chunk.split('=').map(decodeURIComponent); - params[vals.shift()] = vals.join('='); - } - return this.$.$mol_state_arg.link(params); - } - try { - const url = new URL(uri, this.uri_base_abs()); - return url.toString(); - } - catch (error) { - $mol_fail_log(error); - return null; - } - } - code_syntax() { - return this.$.$mol_syntax2_md_code; - } - block_text(index) { - const token = this.flow_tokens()[index]; - switch (token.name) { - case 'header': return token.chunks[2]; - default: return token.chunks[0]; - } - } - block_content(index) { - return this.line_content([index]); - } - line_tokens(path) { - const tokens = []; - this.$.$mol_syntax2_md_line.tokenize(this.line_text(path), (name, found, chunks) => tokens.push({ name, found, chunks })); - return tokens; - } - line_token(path) { - const tokens = this.line_tokens(path.slice(0, path.length - 1)); - return tokens[path[path.length - 1]]; - } - line_type(path) { - return this.line_token(path).name; - } - line_text(path) { - if (path.length === 1) - return this.block_text(path[0]); - const { name, found, chunks } = this.line_token(path); - switch (name) { - case 'link': return chunks[0] || chunks[1].replace(/^.*?\/\/|\/.*$/g, ''); - case 'text-link': return chunks[0] || chunks[1].replace(/^.*?\/\/|\/.*$/g, ''); - default: return (chunks[0] || chunks[1] || chunks[2]) ?? found; - } - } - line_content(path) { - return this.line_tokens(path).map(({ name, chunks }, index) => { - const path2 = [...path, index]; - switch (name) { - case 'embed': return this.Embed(path2); - case 'link': return this.Link(path2); - case 'text-link-http': return this.Link_http(path2); - case 'text-link': return this.Link(path2); - case 'image-link': return this.Embed(path2); - case 'code': return this.Code_line(path2); - case '': return this.String(path2); - default: return this.Span(path2); - } - }); - } - link_uri(path) { - const token = this.line_token(path); - const uri = this.uri_resolve(token.chunks[1] ?? token.found); - if (!uri) - throw new Error('Bad link'); - return uri; - } - link_host(path) { - return this.link_uri(path).replace(/^.*?\/\/|\/.*$/g, ''); - } - auto_scroll() { - for (const [index, token] of this.flow_tokens().entries()) { - if (token.name !== 'header') - continue; - const header = this.Header(index); - if (!header.Link().current()) - continue; - new $mol_after_tick(() => this.ensure_visible(header)); - } - } - spoiler_rows(index) { - return this.flow_tokens()[index].chunks[0].replace(/^[\?] /mg, '').split('\n'); - } - spoiler_label(index) { - return this.spoiler_rows(index)[0]; - } - spoiler_content(index) { - return this.spoiler_rows(index).slice(1).join('\n'); - } - } - __decorate([ - $mol_mem - ], $mol_text.prototype, "flow_tokens", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "block_type", null); - __decorate([ - $mol_mem - ], $mol_text.prototype, "rows", null); - __decorate([ - $mol_mem - ], $mol_text.prototype, "param", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "header_level", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "header_arg", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "pre_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "quote_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "list_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "cell_content", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "table_rows", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "table_head_cells", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "table_cells", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "table_cell_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "grid_content", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "grid_rows", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "grid_cells", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "grid_cell_text", null); - __decorate([ - $mol_mem - ], $mol_text.prototype, "uri_base_abs", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "uri_resolve", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "block_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_tokens", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_token", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_type", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_text", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "line_content", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "link_uri", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "link_host", null); - __decorate([ - $mol_mem - ], $mol_text.prototype, "auto_scroll", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "spoiler_rows", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "spoiler_label", null); - __decorate([ - $mol_mem_key - ], $mol_text.prototype, "spoiler_content", null); - $$.$mol_text = $mol_text; - class $mol_text_header extends $.$mol_text_header { - dom_name() { - return 'h' + this.level(); - } - } - $$.$mol_text_header = $mol_text_header; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/text/text/text.view.css", "[mol_text] {\n\tline-height: 1.5em;\n\tbox-sizing: border-box;\n\tborder-radius: var(--mol_gap_round);\n\twhite-space: pre-line;\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 0 0 auto;\n\ttab-size: 4;\n}\n\n[mol_text_paragraph] {\n\tpadding: var(--mol_gap_text);\n\toverflow: auto;\n\toverflow-x: overlay;\n\tmax-width: 100%;\n\tdisplay: block;\n\tmax-width: 60rem;\n\tbreak-inside: avoid;\n}\n\n[mol_text_spoiler_label_paragraph] {\n\tpadding: 0;\n}\n\n[mol_text_span] {\n\tdisplay: inline;\n}\n\n[mol_text_string] {\n\tdisplay: inline;\n\tflex: 0 1 auto;\n\twhite-space: normal;\n}\n\n[mol_text_quote] {\n\tmargin: var(--mol_gap_block);\n\tpadding: var(--mol_gap_block);\n\tbackground: var(--mol_theme_card);\n\tbox-shadow: 0 0 0 1px var(--mol_theme_back);\n\tbreak-inside: avoid;\n}\n\n[mol_text_header] {\n\tdisplay: block;\n\ttext-shadow: 0 0;\n\tfont-weight: normal;\n\tbreak-after: avoid;\n}\n\n* + [mol_text_header] {\n\tmargin-top: 0.75rem;\n}\n\nh1[mol_text_header] {\n\tfont-size: 1.5rem;\n}\n\nh2[mol_text_header] {\n\tfont-size: 1.5rem;\n\tfont-style: italic;\n}\n\nh3[mol_text_header] {\n\tfont-size: 1.25rem;\n}\n\nh4[mol_text_header] {\n\tfont-size: 1.25em;\n\tfont-style: italic;\n}\n\nh5[mol_text_header] {\n\tfont-size: 1rem;\n}\n\nh6[mol_text_header] {\n\tfont-size: 1rem;\n\tfont-style: italic;\n}\n\n[mol_text_header_link] {\n\tcolor: inherit;\n}\n\n[mol_text_table] {\n\tbreak-inside: avoid;\n}\n\n[mol_text_table_cell] {\n\twidth: auto;\n\tdisplay: table-cell;\n\tvertical-align: baseline;\n\tpadding: 0;\n\tborder-radius: 0;\n}\n\n[mol_text_grid] {\n\tbreak-inside: avoid;\n}\n\n[mol_text_grid_cell] {\n\twidth: auto;\n\tdisplay: table-cell;\n\tvertical-align: top;\n\tpadding: 0;\n\tborder-radius: 0;\n}\n\n[mol_text_cut] {\n\tborder: none;\n\twidth: 100%;\n\tbox-shadow: 0 0 0 1px var(--mol_theme_line);\n}\n\n[mol_text_link_http],\n[mol_text_link] {\n\tpadding: 0;\n\tdisplay: inline;\n\twhite-space: nowrap;\n}\n\n[mol_text_link_icon] + [mol_text_embed] {\n\tmargin-left: -1.5rem;\n}\n\n[mol_text_embed_youtube] {\n\tdisplay: inline;\n}\n\n[mol_text_embed_youtube_image],\n[mol_text_embed_youtube_frame],\n[mol_text_embed_object] {\n\tobject-fit: contain;\n\tobject-position: center;\n\tdisplay: inline;\n\twidth: 100vw;\n\tmax-height: calc( 100vh - 6rem );\n\tvertical-align: top;\n}\n[mol_text_embed_object_fallback] {\n\tpadding: 0;\n}\n[mol_text_embed_image] {\n\tobject-fit: contain;\n\tobject-position: center;\n\tdisplay: inline;\n\t/* max-height: calc( 100vh - 6rem ); */\n\tvertical-align: top;\n}\n\n[mol_text_pre] {\n\twhite-space: pre;\n\toverflow-x: auto;\n\toverflow-x: overlay;\n\ttab-size: 2;\n\tbreak-inside: avoid;\n}\n\n[mol_text_code_line] {\n\tdisplay: inline-block;\n}\n\n[mol_text_type=\"strong\"] {\n\ttext-shadow: 0 0;\n\tfilter: contrast(1.5);\n}\n\n[mol_text_type=\"emphasis\"] {\n\tfont-style: italic;\n}\n\n[mol_text_type=\"insert\"] {\n\tcolor: var(--mol_theme_special);\n}\n\n[mol_text_type=\"delete\"] {\n\tcolor: var(--mol_theme_shade);\n}\n\n[mol_text_type=\"remark\"] {\n\tcolor: var(--mol_theme_shade);\n}\n\n[mol_text_type=\"quote\"] {\n\tfont-style: italic;\n}\n"); -})($ || ($ = {})); - -; - ($.$optimade_cifplayer_app) = class $optimade_cifplayer_app extends ($.$mol_drop) { - drop_file(next){ - if(next !== undefined) return next; - return null; - } - Theme(){ - const obj = new this.$.$mol_theme_auto(); - return obj; - } - Book(){ - const obj = new this.$.$mol_book2(); - (obj.plugins) = () => ([(this.Theme())]); - (obj.pages) = () => ((this.pages())); - (obj.Placeholder) = () => (null); - return obj; - } - Source(){ - const obj = new this.$.$mol_link_iconed(); - (obj.uri) = () => ("https://github.com/tilde-lab/cifplayer"); - (obj.title) = () => (""); - return obj; - } - Lights(){ - const obj = new this.$.$mol_lights_toggle(); - return obj; - } - Upload_icon(){ - return (this.Upload().Icon()); - } - Upload_native(){ - return (this.Upload().Native()); - } - files_read(next){ - if(next !== undefined) return next; - return null; - } - Upload(){ - const obj = new this.$.$mol_button_open(); - (obj.files) = (next) => ((this.files_read(next))); - (obj.sub) = () => ([ - (this.Upload_icon()), - (this.Upload_native()), - "Choose file" - ]); - return obj; - } - Data_text(){ - const obj = new this.$.$mol_textarea(); - (obj.value) = (next) => ((this.data_str(next))); - (obj.hint) = () => ("or paste here..."); - return obj; - } - Body(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Upload()), (this.Data_text())]); - return obj; - } - Menu(){ - const obj = new this.$.$mol_page(); - (obj.title) = () => ("Crystal structure web-viewer"); - (obj.tools) = () => ([(this.Source()), (this.Lights())]); - (obj.body) = () => ([(this.Body())]); - return obj; - } - data_str(next){ - if(next !== undefined) return next; - return ""; - } - vibrate(next){ - return (this.Player().vibrate(next)); - } - unvibrate(){ - return (this.Player().unvibrate()); - } - Player(){ - const obj = new this.$.$optimade_cifplayer_player(); - (obj.data) = () => ((this.data_str())); - return obj; - } - Start_message(){ - const obj = new this.$.$mol_text(); - (obj.text) = () => ("Choose or paste a CIF, POSCAR, or Optimade file. No remote server is used."); - return obj; - } - paste_example(next){ - if(next !== undefined) return next; - return null; - } - Paste_example(){ - const obj = new this.$.$mol_button_minor(); - (obj.title) = () => ("Show example"); - (obj.click) = (next) => ((this.paste_example(next))); - return obj; - } - receive(next){ - return (this.drop_file(next)); - } - Sub(){ - return (this.Book()); - } - pages(){ - return [(this.Menu()), (this.Player())]; - } - Start(){ - const obj = new this.$.$mol_view(); - (obj.sub) = () => ([(this.Start_message()), (this.Paste_example())]); - return obj; - } - }; - ($mol_mem(($.$optimade_cifplayer_app.prototype), "drop_file")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Theme")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Book")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Source")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Lights")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "files_read")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Upload")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Data_text")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Body")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Menu")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "data_str")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Player")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Start_message")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "paste_example")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Paste_example")); - ($mol_mem(($.$optimade_cifplayer_app.prototype), "Start")); - - -; - ($.$mol_text_list) = class $mol_text_list extends ($.$mol_text) { - type(){ - return ""; - } - auto_scroll(){ - return null; - } - attr(){ - return {...(super.attr()), "mol_text_list_type": (this.type())}; - } - Paragraph(id){ - const obj = new this.$.$mol_text_list_item(); - (obj.index) = () => ((this.item_index(id))); - (obj.sub) = () => ((this.block_content(id))); - return obj; - } - }; - ($mol_mem_key(($.$mol_text_list.prototype), "Paragraph")); - ($.$mol_text_list_item) = class $mol_text_list_item extends ($.$mol_paragraph) { - index(){ - return 0; - } - attr(){ - return {...(super.attr()), "mol_text_list_item_index": (this.index())}; - } - }; - - -; -"use strict"; -var $; -(function ($) { - $mol_style_attach("mol/text/list/list.view.css", "[mol_text_list] {\r\n\tpadding-left: 1.75rem;\r\n}\r\n\r\n[mol_text_list_item] {\r\n\tcontain: none;\r\n\tdisplay: list-item;\r\n}\r\n\r\n[mol_text_list_item]::before {\r\n\tcontent: attr( mol_text_list_item_index ) \".\";\r\n\twidth: 1.25rem;\r\n\tdisplay: inline-block;\r\n\tposition: absolute;\r\n\tmargin-left: -1.75rem;\r\n\ttext-align: end;\r\n}\r\n\r\n[mol_text_list_type=\"-\"] > [mol_text_list_item]::before,\r\n[mol_text_list_type=\"*\"] > [mol_text_list_item]::before {\r\n\tcontent: \"•\";\r\n}\r\n"); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - $mol_style_define($optimade_cifplayer_app, { - contain: 'none', - '[mol_drop_status]': { - drag: { - Menu: { - background: { - color: $mol_theme.hover, - }, - }, - }, - }, - Start: { - background: { - color: $mol_theme.back, - }, - padding: { - top: '6rem', - }, - flex: { - grow: 1, - direction: 'column', - }, - align: { - items: 'center', - }, - }, - Menu: { - Body_content: { - gap: $mol_gap.block, - maxWidth: '25rem', - flex: { - direction: 'row', - }, - }, - Head: { - justify: { - content: 'flex-start' - }, - }, - }, - Body: { - flex: { - direction: 'column', - grow: 1, - }, - }, - Player: { - flex: { - grow: 1, - basis: '30rem', - }, - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - function $mol_test(set) { - for (let name in set) { - const code = set[name]; - const test = (typeof code === 'string') ? new Function('', code) : code; - $_1.$mol_test_all.push(test); - } - $mol_test_schedule(); - } - $_1.$mol_test = $mol_test; - $_1.$mol_test_mocks = []; - $_1.$mol_test_all = []; - async function $mol_test_run() { - for (var test of $_1.$mol_test_all) { - let context = Object.create($$); - for (let mock of $_1.$mol_test_mocks) - await mock(context); - const res = test(context); - if ($mol_promise_like(res)) { - await new Promise((done, fail) => { - res.then(done, fail); - setTimeout(() => fail(new Error('Test timeout: ' + test.name)), 1000); - }); - } - } - $$.$mol_log3_done({ - place: '$mol_test', - message: 'All tests passed', - count: $_1.$mol_test_all.length, - }); - } - $_1.$mol_test_run = $mol_test_run; - let scheduled = false; - function $mol_test_schedule() { - if (scheduled) - return; - scheduled = true; - setTimeout(async () => { - scheduled = false; - await $mol_test_run(); - $$.$mol_test_complete(); - }, 1000); - } - $_1.$mol_test_schedule = $mol_test_schedule; - $_1.$mol_test_mocks.push(context => { - let seed = 0; - context.Math = Object.create(Math); - context.Math.random = () => Math.sin(seed++); - const forbidden = ['XMLHttpRequest', 'fetch']; - for (let api of forbidden) { - context[api] = new Proxy(function () { }, { - get() { - $mol_fail_hidden(new Error(`${api} is forbidden in tests`)); - }, - apply() { - $mol_fail_hidden(new Error(`${api} is forbidden in tests`)); - }, - }); - } - }); - $mol_test({ - 'mocked Math.random'($) { - console.assert($.Math.random() === 0); - console.assert($.Math.random() === Math.sin(1)); - }, - 'forbidden XMLHttpRequest'($) { - try { - console.assert(void new $.XMLHttpRequest); - } - catch (error) { - console.assert(error.message === 'XMLHttpRequest is forbidden in tests'); - } - }, - 'forbidden fetch'($) { - try { - console.assert(void $.fetch('')); - } - catch (error) { - console.assert(error.message === 'fetch is forbidden in tests'); - } - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_test_complete() { - process.exit(0); - } - $.$mol_test_complete = $mol_test_complete; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test_mocks.push($ => $.$mol_fail_log = () => false); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test({ - 'FQN of anon function'($) { - const $$ = Object.assign($, { $mol_func_name_test: (() => () => { })() }); - $mol_assert_equal($$.$mol_func_name_test.name, ''); - $mol_assert_equal($$.$mol_func_name($$.$mol_func_name_test), '$mol_func_name_test'); - $mol_assert_equal($$.$mol_func_name_test.name, '$mol_func_name_test'); - }, - }); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - function $mol_dom_serialize(node) { - const serializer = new $mol_dom_context.XMLSerializer; - return serializer.serializeToString(node); - } - $.$mol_dom_serialize = $mol_dom_serialize; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_jsx_prefix = ''; - $.$mol_jsx_crumbs = ''; - $.$mol_jsx_booked = null; - $.$mol_jsx_document = { - getElementById: () => null, - createElementNS: (space, name) => $mol_dom_context.document.createElementNS(space, name), - createDocumentFragment: () => $mol_dom_context.document.createDocumentFragment(), - }; - $.$mol_jsx_frag = ''; - function $mol_jsx(Elem, props, ...childNodes) { - const id = props && props.id || ''; - const guid = id ? $.$mol_jsx_prefix ? $.$mol_jsx_prefix + '/' + id : id : $.$mol_jsx_prefix; - const crumbs_self = id ? $.$mol_jsx_crumbs.replace(/(\S+)/g, `$1_${id.replace(/\/.*/i, '')}`) : $.$mol_jsx_crumbs; - if (Elem && $.$mol_jsx_booked) { - if ($.$mol_jsx_booked.has(id)) { - $mol_fail(new Error(`JSX already has tag with id ${JSON.stringify(guid)}`)); - } - else { - $.$mol_jsx_booked.add(id); - } - } - let node = guid ? $.$mol_jsx_document.getElementById(guid) : null; - if ($.$mol_jsx_prefix) { - const prefix_ext = $.$mol_jsx_prefix; - const booked_ext = $.$mol_jsx_booked; - const crumbs_ext = $.$mol_jsx_crumbs; - for (const field in props) { - const func = props[field]; - if (typeof func !== 'function') - continue; - const wrapper = function (...args) { - const prefix = $.$mol_jsx_prefix; - const booked = $.$mol_jsx_booked; - const crumbs = $.$mol_jsx_crumbs; - try { - $.$mol_jsx_prefix = prefix_ext; - $.$mol_jsx_booked = booked_ext; - $.$mol_jsx_crumbs = crumbs_ext; - return func.call(this, ...args); - } - finally { - $.$mol_jsx_prefix = prefix; - $.$mol_jsx_booked = booked; - $.$mol_jsx_crumbs = crumbs; - } - }; - $mol_func_name_from(wrapper, func); - props[field] = wrapper; - } - } - if (typeof Elem !== 'string') { - if ('prototype' in Elem) { - const view = node && node[String(Elem)] || new Elem; - Object.assign(view, props); - view[Symbol.toStringTag] = guid; - view.childNodes = childNodes; - if (!view.ownerDocument) - view.ownerDocument = $.$mol_jsx_document; - view.className = (crumbs_self ? crumbs_self + ' ' : '') + (Elem['name'] || Elem); - node = view.valueOf(); - node[String(Elem)] = view; - return node; - } - else { - const prefix = $.$mol_jsx_prefix; - const booked = $.$mol_jsx_booked; - const crumbs = $.$mol_jsx_crumbs; - try { - $.$mol_jsx_prefix = guid; - $.$mol_jsx_booked = new Set; - $.$mol_jsx_crumbs = (crumbs_self ? crumbs_self + ' ' : '') + (Elem['name'] || Elem); - return Elem(props, ...childNodes); - } - finally { - $.$mol_jsx_prefix = prefix; - $.$mol_jsx_booked = booked; - $.$mol_jsx_crumbs = crumbs; - } - } - } - if (!node) { - node = Elem - ? $.$mol_jsx_document.createElementNS(props?.xmlns ?? 'http://www.w3.org/1999/xhtml', Elem) - : $.$mol_jsx_document.createDocumentFragment(); - } - $mol_dom_render_children(node, [].concat(...childNodes)); - if (!Elem) - return node; - if (guid) - node.id = guid; - for (const key in props) { - if (key === 'id') - continue; - if (typeof props[key] === 'string') { - if (typeof node[key] === 'string') - node[key] = props[key]; - node.setAttribute(key, props[key]); - } - else if (props[key] && - typeof props[key] === 'object' && - Reflect.getPrototypeOf(props[key]) === Reflect.getPrototypeOf({})) { - if (typeof node[key] === 'object') { - Object.assign(node[key], props[key]); - continue; - } - } - else { - node[key] = props[key]; - } - } - if ($.$mol_jsx_crumbs) - node.className = (props?.['class'] ? props['class'] + ' ' : '') + crumbs_self; - return node; - } - $.$mol_jsx = $mol_jsx; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'Make empty div'() { - $mol_assert_equal(($mol_jsx("div", null)).outerHTML, '
'); - }, - 'Define native field'() { - const dom = $mol_jsx("input", { value: '123' }); - $mol_assert_equal(dom.outerHTML, ''); - $mol_assert_equal(dom.value, '123'); - }, - 'Define classes'() { - const dom = $mol_jsx("div", { class: 'foo bar' }); - $mol_assert_equal(dom.outerHTML, '
'); - }, - 'Define styles'() { - const dom = $mol_jsx("div", { style: { color: 'red' } }); - $mol_assert_equal(dom.outerHTML, '
'); - }, - 'Define dataset'() { - const dom = $mol_jsx("div", { dataset: { foo: 'bar' } }); - $mol_assert_equal(dom.outerHTML, '
'); - }, - 'Define attributes'() { - const dom = $mol_jsx("div", { lang: "ru", hidden: true }); - $mol_assert_equal(dom.outerHTML, ''); - }, - 'Define child nodes'() { - const dom = $mol_jsx("div", null, - "hello", - $mol_jsx("strong", null, "world"), - "!"); - $mol_assert_equal(dom.outerHTML, '
helloworld!
'); - }, - 'Make fragment'() { - const dom = $mol_jsx($mol_jsx_frag, null, - $mol_jsx("br", null), - $mol_jsx("hr", null)); - $mol_assert_equal($mol_dom_serialize(dom), '

'); - }, - 'Spread fragment'() { - const dom = $mol_jsx("div", null, - $mol_jsx($mol_jsx_frag, null, - $mol_jsx("br", null), - $mol_jsx("hr", null))); - $mol_assert_equal(dom.outerHTML, '


'); - }, - 'Function as component'() { - const Button = (props, target) => { - return $mol_jsx("button", { title: props.hint }, target()); - }; - const dom = $mol_jsx(Button, { id: "foo", hint: "click me" }, () => 'hey!'); - $mol_assert_equal(dom.outerHTML, ''); - }, - 'Nested guid generation'() { - const Foo = () => { - return $mol_jsx("div", null, - $mol_jsx(Bar, { id: "bar" }, - $mol_jsx("img", { id: "icon" }))); - }; - const Bar = (props, icon) => { - return $mol_jsx("span", null, - icon, - $mol_jsx("i", { id: "label" })); - }; - const dom = $mol_jsx(Foo, { id: "foo" }); - $mol_assert_equal(dom.outerHTML, '
'); - }, - 'Fail on non unique ids'() { - const App = () => { - return $mol_jsx("div", null, - $mol_jsx("span", { id: "bar" }), - $mol_jsx("span", { id: "bar" })); - }; - $mol_assert_fail(() => $mol_jsx(App, { id: "foo" }), 'JSX already has tag with id "foo/bar"'); - }, - 'Owner based guid generationn'() { - const Foo = () => { - return $mol_jsx("div", null, - $mol_jsx(Bar, { id: "middle", icon: () => $mol_jsx("img", { id: "icon" }) })); - }; - const Bar = (props) => { - return $mol_jsx("span", null, props.icon()); - }; - const dom = $mol_jsx(Foo, { id: "app" }); - $mol_assert_equal(dom.outerHTML, '
'); - }, - 'Fail on same ids from different caller'() { - const Foo = () => { - return $mol_jsx("div", null, - $mol_jsx("img", { id: "icon" }), - $mol_jsx(Bar, { id: "bar", icon: () => $mol_jsx("img", { id: "icon" }) })); - }; - const Bar = (props) => { - return $mol_jsx("span", null, props.icon()); - }; - $mol_assert_fail(() => $mol_jsx(Foo, { id: "foo" }), 'JSX already has tag with id "foo/icon"'); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_range2(item = index => index, size = () => Number.POSITIVE_INFINITY) { - const source = typeof item === 'function' ? new $mol_range2_array() : item; - if (typeof item !== 'function') { - item = index => source[index]; - size = () => source.length; - } - return new Proxy(source, { - get(target, field) { - if (typeof field === 'string') { - if (field === 'length') - return size(); - const index = Number(field); - if (index < 0) - return undefined; - if (index >= size()) - return undefined; - if (index === Math.trunc(index)) - return item(index); - } - return $mol_range2_array.prototype[field]; - }, - set(target, field) { - return $mol_fail(new TypeError(`Lazy range is read only (trying to set field ${JSON.stringify(field)})`)); - }, - ownKeys(target) { - return [...Array(size())].map((v, i) => String(i)).concat('length'); - }, - getOwnPropertyDescriptor(target, field) { - if (field === "length") - return { - value: size(), - writable: true, - enumerable: false, - configurable: false, - }; - const index = Number(field); - if (index === Math.trunc(index)) - return { - get: () => this.get(target, field, this), - enumerable: true, - configurable: true, - }; - return Object.getOwnPropertyDescriptor(target, field); - } - }); - } - $.$mol_range2 = $mol_range2; - class $mol_range2_array extends Array { - concat(...tail) { - if (tail.length === 0) - return this; - if (tail.length > 1) { - let list = this; - for (let item of tail) - list = list.concat(item); - return list; - } - return $mol_range2(index => index < this.length ? this[index] : tail[0][index - this.length], () => this.length + tail[0].length); - } - filter(check, context) { - const filtered = []; - let cursor = -1; - return $mol_range2(index => { - while (cursor < this.length && index >= filtered.length - 1) { - const val = this[++cursor]; - if (check(val, cursor, this)) - filtered.push(val); - } - return filtered[index]; - }, () => cursor < this.length ? Number.POSITIVE_INFINITY : filtered.length); - } - forEach(proceed, context) { - for (let [key, value] of this.entries()) - proceed.call(context, value, key, this); - } - map(proceed, context) { - return $mol_range2(index => proceed.call(context, this[index], index, this), () => this.length); - } - reduce(merge, result) { - let index = 0; - if (arguments.length === 1) { - result = this[index++]; - } - for (; index < this.length; ++index) { - result = merge(result, this[index], index, this); - } - return result; - } - toReversed() { - return $mol_range2(index => this[this.length - 1 - index], () => this.length); - } - slice(from = 0, to = this.length) { - return $mol_range2(index => this[from + index], () => Math.min(to, this.length) - from); - } - some(check, context) { - for (let index = 0; index < this.length; ++index) { - if (check.call(context, this[index], index, this)) - return true; - } - return false; - } - every(check, context) { - for (let index = 0; index < this.length; ++index) { - if (!check.call(context, this[index], index, this)) - return false; - } - return true; - } - reverse() { - return $mol_fail(new TypeError(`Mutable reverse is forbidden. Use toReversed instead.`)); - } - sort() { - return $mol_fail(new TypeError(`Mutable sort is forbidden. Use toSorted instead.`)); - } - [Symbol.toPrimitive]() { - return $mol_guid(); - } - } - $.$mol_range2_array = $mol_range2_array; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'lazy calls'() { - let calls = 0; - const list = $mol_range2(index => (++calls, index), () => 10); - $mol_assert_equal(true, list instanceof Array); - $mol_assert_equal(list.length, 10); - $mol_assert_equal(list[-1], undefined); - $mol_assert_equal(list[0], 0); - $mol_assert_equal(list[9], 9); - $mol_assert_equal(list[9.5], undefined); - $mol_assert_equal(list[10], undefined); - $mol_assert_equal(calls, 2); - }, - 'infinity list'() { - let calls = 0; - const list = $mol_range2(index => (++calls, index)); - $mol_assert_equal(list.length, Number.POSITIVE_INFINITY); - $mol_assert_equal(list[0], 0); - $mol_assert_equal(list[4], 4); - $mol_assert_equal(list[Number.MAX_SAFE_INTEGER], Number.MAX_SAFE_INTEGER); - $mol_assert_equal(list[Number.POSITIVE_INFINITY], undefined); - $mol_assert_equal(calls, 3); - }, - 'stringify'() { - const list = $mol_range2(i => i, () => 5); - $mol_assert_equal(list.toString(), '0,1,2,3,4'); - $mol_assert_equal(list.join(';'), '0;1;2;3;4'); - }, - 'for-of'() { - let log = ''; - for (let i of $mol_range2(i => i + 1, () => 5)) { - log += i; - } - $mol_assert_equal(log, '12345'); - }, - 'for-in'() { - let log = ''; - for (let i in $mol_range2(i => i, () => 5)) { - log += i; - } - $mol_assert_equal(log, '01234'); - }, - 'forEach'() { - let log = ''; - $mol_range2(i => i, () => 5).forEach(i => log += i); - $mol_assert_equal(log, '01234'); - }, - 'reduce'() { - let calls = 0; - const list = $mol_range2().slice(1, 6); - $mol_assert_equal(list.reduce((s, v) => s + v), 15); - $mol_assert_equal(list.reduce((s, v) => s + v, 5), 20); - }, - 'lazy concat'() { - let calls1 = 0; - let calls2 = 0; - const list = $mol_range2(index => (++calls1, index), () => 5).concat([0, 1, 2, 3, 4], $mol_range2(index => (++calls2, index), () => 5)); - $mol_assert_equal(true, list instanceof Array); - $mol_assert_equal(list.length, 15); - $mol_assert_equal(list[0], 0); - $mol_assert_equal(list[4], 4); - $mol_assert_equal(list[5], 0); - $mol_assert_equal(list[9], 4); - $mol_assert_equal(list[10], 0); - $mol_assert_equal(list[14], 4); - $mol_assert_equal(list[15], undefined); - $mol_assert_equal(calls1, 2); - $mol_assert_equal(calls2, 2); - }, - 'lazy filter'() { - let calls = 0; - const list = $mol_range2(index => (++calls, index), () => 15).filter(v => v % 2).slice(0, 3); - $mol_assert_equal(true, list instanceof Array); - $mol_assert_equal(list.length, 3); - $mol_assert_equal(list[0], 1); - $mol_assert_equal(list[2], 5); - $mol_assert_equal(list[3], undefined); - $mol_assert_equal(calls, 8); - }, - 'lazy reverse'() { - let calls = 0; - const list = $mol_range2(index => (++calls, index), () => 10).toReversed().slice(0, 3); - $mol_assert_equal(true, list instanceof Array); - $mol_assert_equal(list.length, 3); - $mol_assert_equal(list[0], 9); - $mol_assert_equal(list[2], 7); - $mol_assert_equal(list[3], undefined); - $mol_assert_equal(calls, 2); - }, - 'lazy map'() { - let calls1 = 0; - let calls2 = 0; - const source = $mol_range2(index => (++calls1, index), () => 5); - const target = source.map((item, index, self) => { - ++calls2; - $mol_assert_equal(source, self); - return index + 10; - }, () => 5); - $mol_assert_equal(true, target instanceof Array); - $mol_assert_equal(target.length, 5); - $mol_assert_equal(target[0], 10); - $mol_assert_equal(target[4], 14); - $mol_assert_equal(target[5], undefined); - $mol_assert_equal(calls1, 2); - $mol_assert_equal(calls2, 2); - }, - 'lazy slice'() { - let calls = 0; - const list = $mol_range2(index => (++calls, index), () => 10).slice(3, 7); - $mol_assert_equal(true, list instanceof Array); - $mol_assert_equal(list.length, 4); - $mol_assert_equal(list[0], 3); - $mol_assert_equal(list[3], 6); - $mol_assert_equal(list[4], undefined); - $mol_assert_equal(calls, 2); - }, - 'lazy some'() { - let calls = 0; - $mol_assert_equal(true, $mol_range2(index => (++calls, index), () => 5).some(v => v >= 2)); - $mol_assert_equal(calls, 3); - $mol_assert_equal(false, $mol_range2(i => i, () => 0).some(v => true)); - $mol_assert_equal(true, $mol_range2(i => i).some(v => v > 5)); - }, - 'lazy every'() { - let calls = 0; - $mol_assert_equal(false, $mol_range2(index => (++calls, index), () => 5).every(v => v < 2)); - $mol_assert_equal(calls, 3); - $mol_assert_equal(true, $mol_range2(i => i, () => 0).every(v => false)); - $mol_assert_equal(false, $mol_range2(i => i).every(v => v < 5)); - }, - 'lazyfy'() { - let calls = 0; - const list = $mol_range2([0, 1, 2, 3, 4, 5]).map(i => (++calls, i + 10)).slice(2); - $mol_assert_equal(true, list instanceof Array); - $mol_assert_equal(list.length, 4); - $mol_assert_equal(calls, 0); - $mol_assert_equal(list[0], 12); - $mol_assert_equal(list[3], 15); - $mol_assert_equal(list[4], undefined); - $mol_assert_equal(calls, 2); - }, - 'prevent modification'() { - const list = $mol_range2(i => i, () => 5); - $mol_assert_fail(() => list.push(4), TypeError); - $mol_assert_fail(() => list.pop(), TypeError); - $mol_assert_fail(() => list.unshift(4), TypeError); - $mol_assert_fail(() => list.shift(), TypeError); - $mol_assert_fail(() => list.splice(1, 2), TypeError); - $mol_assert_fail(() => list[1] = 2, TypeError); - $mol_assert_fail(() => list.reverse(), TypeError); - $mol_assert_fail(() => list.sort(), TypeError); - $mol_assert_equal(list.toString(), '0,1,2,3,4'); - } - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'nulls & undefineds'() { - $mol_assert_ok($mol_compare_deep(null, null)); - $mol_assert_ok($mol_compare_deep(undefined, undefined)); - $mol_assert_not($mol_compare_deep(undefined, null)); - $mol_assert_not($mol_compare_deep({}, null)); - }, - 'number'() { - $mol_assert_ok($mol_compare_deep(1, 1)); - $mol_assert_ok($mol_compare_deep(Number.NaN, Number.NaN)); - $mol_assert_not($mol_compare_deep(1, 2)); - $mol_assert_ok($mol_compare_deep(Object(1), Object(1))); - $mol_assert_not($mol_compare_deep(Object(1), Object(2))); - }, - 'POJO'() { - $mol_assert_ok($mol_compare_deep({}, {})); - $mol_assert_not($mol_compare_deep({ a: 1 }, { b: 2 })); - $mol_assert_not($mol_compare_deep({ a: 1 }, { a: 2 })); - $mol_assert_not($mol_compare_deep({}, { a: undefined })); - $mol_assert_not($mol_compare_deep({ a: 1, b: 2 }, { b: 2, a: 1 })); - $mol_assert_ok($mol_compare_deep({ a: { b: 1 } }, { a: { b: 1 } })); - $mol_assert_ok($mol_compare_deep(Object.create(null), Object.create(null))); - }, - 'Array'() { - $mol_assert_ok($mol_compare_deep([], [])); - $mol_assert_ok($mol_compare_deep([1, [2]], [1, [2]])); - $mol_assert_not($mol_compare_deep([1, 2], [1, 3])); - $mol_assert_not($mol_compare_deep([1, 2,], [1, 3, undefined])); - $mol_assert_not($mol_compare_deep($mol_range2().slice(0, 0), new Array())); - $mol_assert_not($mol_compare_deep($mol_range2(), $mol_range2())); - }, - 'Non POJO are different'() { - class Thing extends Object { - } - $mol_assert_not($mol_compare_deep(new Thing, new Thing)); - $mol_assert_not($mol_compare_deep(() => 1, () => 1)); - $mol_assert_not($mol_compare_deep(new RangeError('Test error'), new RangeError('Test error'))); - }, - 'POJO with symbols'() { - const sym = Symbol(); - $mol_assert_ok($mol_compare_deep({ [sym]: true }, { [sym]: true })); - $mol_assert_not($mol_compare_deep({ [Symbol()]: true }, { [Symbol()]: true })); - }, - 'same POJOs with cyclic reference'() { - const a = { foo: {} }; - a['self'] = a; - const b = { foo: {} }; - b['self'] = b; - $mol_assert_ok($mol_compare_deep(a, b)); - }, - 'same POJOs with cyclic reference with cache warmup'() { - const obj1 = { test: 1, obj3: null }; - const obj1_copy = { test: 1, obj3: null }; - const obj2 = { test: 2, obj1 }; - const obj2_copy = { test: 2, obj1: obj1_copy }; - const obj3 = { test: 3, obj2 }; - const obj3_copy = { test: 3, obj2: obj2_copy }; - obj1.obj3 = obj3; - obj1_copy.obj3 = obj3_copy; - $mol_assert_not($mol_compare_deep(obj1, {})); - $mol_assert_not($mol_compare_deep(obj2, {})); - $mol_assert_not($mol_compare_deep(obj3, {})); - $mol_assert_ok($mol_compare_deep(obj3, obj3_copy)); - }, - 'Date'() { - $mol_assert_ok($mol_compare_deep(new Date(12345), new Date(12345))); - $mol_assert_not($mol_compare_deep(new Date(12345), new Date(12346))); - }, - 'RegExp'() { - $mol_assert_ok($mol_compare_deep(/\x22/mig, /\x22/mig)); - $mol_assert_not($mol_compare_deep(/\x22/mig, /\x21/mig)); - $mol_assert_not($mol_compare_deep(/\x22/mig, /\x22/mg)); - }, - 'Error'() { - $mol_assert_not($mol_compare_deep(new Error('xxx'), new Error('xxx'))); - const fail = (message) => new Error(message); - $mol_assert_ok($mol_compare_deep(...['xxx', 'xxx'].map(msg => new Error(msg)))); - $mol_assert_not($mol_compare_deep(...['xxx', 'yyy'].map(msg => new Error(msg)))); - }, - 'Map'() { - $mol_assert_ok($mol_compare_deep(new Map, new Map)); - $mol_assert_ok($mol_compare_deep(new Map([[1, [2]]]), new Map([[1, [2]]]))); - $mol_assert_ok($mol_compare_deep(new Map([[[1], 2]]), new Map([[[1], 2]]))); - $mol_assert_not($mol_compare_deep(new Map([[1, 2]]), new Map([[1, 3]]))); - $mol_assert_not($mol_compare_deep(new Map([[[1], 2]]), new Map([[[3], 2]]))); - }, - 'Set'() { - $mol_assert_ok($mol_compare_deep(new Set, new Set)); - $mol_assert_ok($mol_compare_deep(new Set([1, [2]]), new Set([1, [2]]))); - $mol_assert_not($mol_compare_deep(new Set([1]), new Set([2]))); - }, - 'Uint8Array'() { - $mol_assert_ok($mol_compare_deep(new Uint8Array, new Uint8Array)); - $mol_assert_ok($mol_compare_deep(new Uint8Array([0]), new Uint8Array([0]))); - $mol_assert_not($mol_compare_deep(new Uint8Array([0]), new Uint8Array([1]))); - }, - 'DataView'() { - $mol_assert_ok($mol_compare_deep(new DataView(new Uint8Array().buffer), new DataView(new Uint8Array().buffer))); - $mol_assert_ok($mol_compare_deep(new DataView(new Uint8Array([0]).buffer), new DataView(new Uint8Array([0]).buffer))); - $mol_assert_not($mol_compare_deep(new DataView(new Uint8Array([0]).buffer), new DataView(new Uint8Array([1]).buffer))); - }, - 'Serializale'() { - class User { - name; - rand; - constructor(name, rand = Math.random()) { - this.name = name; - this.rand = rand; - } - [Symbol.toPrimitive](mode) { - return this.name; - } - } - $mol_assert_ok($mol_compare_deep(new User('Jin'), new User('Jin'))); - $mol_assert_not($mol_compare_deep(new User('Jin'), new User('John'))); - }, - 'Iterable'() { - $mol_assert_ok($mol_compare_deep(new URLSearchParams({ foo: 'bar' }), new URLSearchParams({ foo: 'bar' }))); - $mol_assert_not($mol_compare_deep(new URLSearchParams({ foo: 'xxx' }), new URLSearchParams({ foo: 'yyy' }))); - $mol_assert_not($mol_compare_deep(new URLSearchParams({ foo: 'xxx', bar: 'yyy' }), new URLSearchParams({ bar: 'yyy', foo: 'xxx' }))); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_assert_ok(value) { - if (value) - return; - $mol_fail(new Error(`${value} ≠ true`)); - } - $.$mol_assert_ok = $mol_assert_ok; - function $mol_assert_not(value) { - if (!value) - return; - $mol_fail(new Error(`${value} ≠ false`)); - } - $.$mol_assert_not = $mol_assert_not; - function $mol_assert_fail(handler, ErrorRight) { - const fail = $.$mol_fail; - try { - $.$mol_fail = $.$mol_fail_hidden; - handler(); - } - catch (error) { - $.$mol_fail = fail; - if (typeof ErrorRight === 'string') { - $mol_assert_equal(error.message, ErrorRight); - } - else { - $mol_assert_equal(error instanceof ErrorRight, true); - } - return error; - } - finally { - $.$mol_fail = fail; - } - $mol_fail(new Error('Not failed')); - } - $.$mol_assert_fail = $mol_assert_fail; - function $mol_assert_like(...args) { - $mol_assert_equal(...args); - } - $.$mol_assert_like = $mol_assert_like; - function $mol_assert_unique(...args) { - for (let i = 0; i < args.length; ++i) { - for (let j = 0; j < args.length; ++j) { - if (i === j) - continue; - if (!$mol_compare_deep(args[i], args[j])) - continue; - $mol_fail(new Error(`args[${i}] = args[${j}] = ${print(args[i])}`)); - } - } - } - $.$mol_assert_unique = $mol_assert_unique; - function $mol_assert_equal(...args) { - for (let i = 1; i < args.length; ++i) { - if ($mol_compare_deep(args[0], args[i])) - continue; - if (args[0] instanceof $mol_dom_context.Element && args[i] instanceof $mol_dom_context.Element && args[0].outerHTML === args[i].outerHTML) - continue; - return $mol_fail(new Error(`args[0] ≠ args[${i}]\n${print(args[0])}\n---\n${print(args[i])}`)); - } - } - $.$mol_assert_equal = $mol_assert_equal; - const print = (val) => { - if (!val) - return val; - if (typeof val === 'bigint') - return String(val) + 'n'; - if (typeof val === 'symbol') - return `Symbol(${val.description})`; - if (typeof val !== 'object') - return val; - if ('outerHTML' in val) - return val.outerHTML; - try { - return JSON.stringify(val, (k, v) => typeof v === 'bigint' ? String(v) : v, '\t'); - } - catch (error) { - console.error(error); - return val; - } - }; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'must be false'() { - $mol_assert_not(0); - }, - 'must be true'() { - $mol_assert_ok(1); - }, - 'two must be equal'() { - $mol_assert_equal(2, 2); - }, - 'three must be equal'() { - $mol_assert_equal(2, 2, 2); - }, - 'two must be unique'() { - $mol_assert_unique([2], [3]); - }, - 'three must be unique'() { - $mol_assert_unique([1], [2], [3]); - }, - 'two must be alike'() { - $mol_assert_like([3], [3]); - }, - 'three must be alike'() { - $mol_assert_like([3], [3], [3]); - }, - 'two object must be alike'() { - $mol_assert_like({ a: 1 }, { a: 1 }); - }, - 'three object must be alike'() { - $mol_assert_like({ a: 1 }, { a: 1 }, { a: 1 }); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test_mocks.push($ => { - $.$mol_log3_come = () => { }; - $.$mol_log3_done = () => { }; - $.$mol_log3_fail = () => { }; - $.$mol_log3_warn = () => { }; - $.$mol_log3_rise = () => { }; - $.$mol_log3_area = () => () => { }; - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'get'() { - const proxy = $mol_delegate({}, () => ({ foo: 777 })); - $mol_assert_equal(proxy.foo, 777); - }, - 'has'() { - const proxy = $mol_delegate({}, () => ({ foo: 777 })); - $mol_assert_equal('foo' in proxy, true); - }, - 'set'() { - const target = { foo: 777 }; - const proxy = $mol_delegate({}, () => target); - proxy.foo = 123; - $mol_assert_equal(target.foo, 123); - }, - 'getOwnPropertyDescriptor'() { - const proxy = $mol_delegate({}, () => ({ foo: 777 })); - $mol_assert_like(Object.getOwnPropertyDescriptor(proxy, 'foo'), { - value: 777, - writable: true, - enumerable: true, - configurable: true, - }); - }, - 'ownKeys'() { - const proxy = $mol_delegate({}, () => ({ foo: 777, [Symbol.toStringTag]: 'bar' })); - $mol_assert_like(Reflect.ownKeys(proxy), ['foo', Symbol.toStringTag]); - }, - 'getPrototypeOf'() { - class Foo { - } - const proxy = $mol_delegate({}, () => new Foo); - $mol_assert_equal(Object.getPrototypeOf(proxy), Foo.prototype); - }, - 'setPrototypeOf'() { - class Foo { - } - const target = {}; - const proxy = $mol_delegate({}, () => target); - Object.setPrototypeOf(proxy, Foo.prototype); - $mol_assert_equal(Object.getPrototypeOf(target), Foo.prototype); - }, - 'instanceof'() { - class Foo { - } - const proxy = $mol_delegate({}, () => new Foo); - $mol_assert_ok(proxy instanceof Foo); - $mol_assert_ok(proxy instanceof $mol_delegate); - }, - 'autobind'() { - class Foo { - } - const proxy = $mol_delegate({}, () => new Foo); - $mol_assert_ok(proxy instanceof Foo); - $mol_assert_ok(proxy instanceof $mol_delegate); - }, - }); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($_1) { - $mol_test({ - 'span for same uri'($) { - const span = new $mol_span('test.ts', '', 1, 3, 4); - const child = span.span(4, 5, 8); - $mol_assert_equal(child.uri, 'test.ts'); - $mol_assert_equal(child.row, 4); - $mol_assert_equal(child.col, 5); - $mol_assert_equal(child.length, 8); - }, - 'span after of given position'($) { - const span = new $mol_span('test.ts', '', 1, 3, 4); - const child = span.after(11); - $mol_assert_equal(child.uri, 'test.ts'); - $mol_assert_equal(child.row, 1); - $mol_assert_equal(child.col, 7); - $mol_assert_equal(child.length, 11); - }, - 'slice span - regular'($) { - const span = new $mol_span('test.ts', '', 1, 3, 5); - const child = span.slice(1, 4); - $mol_assert_equal(child.row, 1); - $mol_assert_equal(child.col, 4); - $mol_assert_equal(child.length, 3); - const child2 = span.slice(2, 2); - $mol_assert_equal(child2.col, 5); - $mol_assert_equal(child2.length, 0); - }, - 'slice span - negative'($) { - const span = new $mol_span('test.ts', '', 1, 3, 5); - const child = span.slice(-3, -1); - $mol_assert_equal(child.row, 1); - $mol_assert_equal(child.col, 5); - $mol_assert_equal(child.length, 2); - }, - 'slice span - out of range'($) { - const span = new $mol_span('test.ts', '', 1, 3, 5); - $mol_assert_fail(() => span.slice(-1, 3), `End value '3' can't be less than begin value (test.ts#1:3/5)`); - $mol_assert_fail(() => span.slice(1, 6), `End value '6' out of range (test.ts#1:3/5)`); - $mol_assert_fail(() => span.slice(1, 10), `End value '10' out of range (test.ts#1:3/5)`); - }, - 'error handling'($) { - const span = new $mol_span('test.ts', '', 1, 3, 4); - const error = span.error('Some error'); - $mol_assert_equal(error.message, 'Some error (test.ts#1:3/4)'); - } - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test({ - 'inserting'($) { - $mol_assert_equal($.$mol_tree2_from_string('a b c d\n') - .insert($mol_tree2.struct('x'), 'a', 'b', 'c') - .toString(), 'a b x\n'); - $mol_assert_equal($.$mol_tree2_from_string('a b\n') - .insert($mol_tree2.struct('x'), 'a', 'b', 'c', 'd') - .toString(), 'a b c x\n'); - $mol_assert_equal($.$mol_tree2_from_string('a b c d\n') - .insert($mol_tree2.struct('x'), 0, 0, 0) - .toString(), 'a b x\n'); - $mol_assert_equal($.$mol_tree2_from_string('a b\n') - .insert($mol_tree2.struct('x'), 0, 0, 0, 0) - .toString(), 'a b \\\n\tx\n'); - $mol_assert_equal($.$mol_tree2_from_string('a b c d\n') - .insert($mol_tree2.struct('x'), null, null, null) - .toString(), 'a b x\n'); - $mol_assert_equal($.$mol_tree2_from_string('a b\n') - .insert($mol_tree2.struct('x'), null, null, null, null) - .toString(), 'a b \\\n\tx\n'); - }, - 'deleting'($) { - $mol_assert_equal($.$mol_tree2_from_string('a b c d\n') - .insert(null, 'a', 'b', 'c') - .toString(), 'a b\n'); - $mol_assert_equal($.$mol_tree2_from_string('a b c d\n') - .insert(null, 0, 0, 0) - .toString(), 'a b\n'); - }, - 'hack'($) { - const res = $.$mol_tree2_from_string(`foo bar xxx\n`) - .hack({ - 'bar': (input, belt) => [input.struct('777', input.hack(belt))], - }); - $mol_assert_equal(res.map(String), ['foo 777 xxx\n']); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test({ - 'tree parsing'($) { - $mol_assert_equal($.$mol_tree2_from_string("foo\nbar\n").kids.length, 2); - $mol_assert_equal($.$mol_tree2_from_string("foo\nbar\n").kids[1].type, "bar"); - $mol_assert_equal($.$mol_tree2_from_string("foo\n\n\n").kids.length, 1); - $mol_assert_equal($.$mol_tree2_from_string("=foo\n\\bar\n").kids.length, 2); - $mol_assert_equal($.$mol_tree2_from_string("=foo\n\\bar\n").kids[1].value, "bar"); - $mol_assert_equal($.$mol_tree2_from_string("foo bar \\pol\n").kids[0].kids[0].kids[0].value, "pol"); - $mol_assert_equal($.$mol_tree2_from_string("foo bar\n\t\\pol\n\t\\men\n").kids[0].kids[0].kids[1].value, "men"); - $mol_assert_equal($.$mol_tree2_from_string('foo bar \\text\n').toString(), 'foo bar \\text\n'); - }, - 'Too many tabs'($) { - const tree = ` - foo - bar - `; - $mol_assert_fail(() => { - $.$mol_tree2_from_string(tree, 'test'); - }, 'Too many tabs\ntest#3:1/6\n!!!!!!\n\t\t\t\t\t\tbar'); - }, - 'Too few tabs'($) { - const tree = ` - foo - bar - `; - $mol_assert_fail(() => { - $.$mol_tree2_from_string(tree, 'test'); - }, 'Too few tabs\ntest#3:1/4\n!!!!\n\t\t\t\tbar'); - }, - 'Wrong nodes separator at start'($) { - const tree = `foo\n \tbar\n`; - $mol_assert_fail(() => { - $.$mol_tree2_from_string(tree, 'test'); - }, 'Wrong nodes separator\ntest#2:1/2\n!!\n \tbar'); - }, - 'Wrong nodes separator in the middle'($) { - const tree = `foo bar\n`; - $mol_assert_fail(() => { - $.$mol_tree2_from_string(tree, 'test'); - }, 'Wrong nodes separator\ntest#1:5/1\n !\nfoo bar'); - }, - 'Unexpected EOF, LF required'($) { - const tree = ` foo`; - $mol_assert_fail(() => { - $.$mol_tree2_from_string(tree, 'test'); - }, 'Unexpected EOF, LF required\ntest#1:5/1\n !\n foo'); - }, - 'Errors skip and collect'($) { - const tree = `foo bar`; - const errors = []; - const $$ = $.$mol_ambient({ - $mol_fail: (error) => { - errors.push(error.message); - return null; - } - }); - const res = $$.$mol_tree2_from_string(tree, 'test'); - $mol_assert_like(errors, [ - 'Wrong nodes separator\ntest#1:5/1\n !\nfoo bar', - 'Unexpected EOF, LF required\ntest#1:9/1\n !\nfoo bar', - ]); - $mol_assert_equal(res.toString(), 'foo bar\n'); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'fromJSON'() { - $mol_assert_equal($mol_tree2_from_json([]).toString(), '/\n'); - $mol_assert_equal($mol_tree2_from_json([false, true]).toString(), '/\n\tfalse\n\ttrue\n'); - $mol_assert_equal($mol_tree2_from_json([0, 1, 2.3]).toString(), '/\n\t0\n\t1\n\t2.3\n'); - $mol_assert_equal($mol_tree2_from_json(new Uint16Array([1, 10, 256])).toString(), '\\\x01\x00\n\\\x00\x00\x01\n'); - $mol_assert_equal($mol_tree2_from_json(['', 'foo', 'bar\nbaz']).toString(), '/\n\t\\\n\t\\foo\n\t\\\n\t\t\\bar\n\t\t\\baz\n'); - $mol_assert_equal($mol_tree2_from_json({ 'foo': false, 'bar\nbaz': 'lol' }).toString(), '*\n\tfoo false\n\t\\\n\t\t\\bar\n\t\t\\baz\n\t\t\\lol\n'); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'init with overload'() { - class X extends $mol_object { - foo() { - return 1; - } - } - var x = X.make({ - foo: () => 2, - }); - $mol_assert_equal(x.foo(), 2); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'auto name'() { - class Invalid extends $mol_error_mix { - } - const mix = new Invalid('foo'); - $mol_assert_equal(mix.name, 'Invalid_Error'); - }, - 'simpe mix'() { - const mix = new $mol_error_mix('foo', {}, new Error('bar'), new Error('lol')); - $mol_assert_equal(mix.message, 'foo'); - $mol_assert_equal(mix.errors.map(e => e.message), ['bar', 'lol']); - }, - 'provide additional info'() { - class Invalid extends $mol_error_mix { - } - const mix = new $mol_error_mix('Wrong password', {}, new Invalid('Too short', { value: 'p@ssw0rd', hint: '> 8 letters' }), new Invalid('Too simple', { value: 'p@ssw0rd', hint: 'need capital letter' })); - const hints = []; - if (mix instanceof $mol_error_mix) { - for (const er of mix.errors) { - if (er instanceof Invalid) { - hints.push(er.cause?.hint ?? ''); - } - } - } - $mol_assert_equal(hints, ['> 8 letters', 'need capital letter']); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test({ - 'Collect deps'() { - const pub1 = new $mol_wire_pub; - const pub2 = new $mol_wire_pub; - const sub = new $mol_wire_pub_sub; - const bu1 = sub.track_on(); - try { - pub1.promote(); - pub2.promote(); - pub2.promote(); - } - finally { - sub.track_cut(); - sub.track_off(bu1); - } - pub1.emit(); - pub2.emit(); - $mol_assert_like(sub.pub_list, [pub1, pub2, pub2]); - const bu2 = sub.track_on(); - try { - pub1.promote(); - pub1.promote(); - pub2.promote(); - } - finally { - sub.track_cut(); - sub.track_off(bu2); - } - pub1.emit(); - pub2.emit(); - $mol_assert_like(sub.pub_list, [pub1, pub1, pub2]); - }, - 'cyclic detection'($) { - const sub1 = new $mol_wire_pub_sub; - const sub2 = new $mol_wire_pub_sub; - const bu1 = sub1.track_on(); - try { - const bu2 = sub2.track_on(); - try { - $mol_assert_fail(() => sub1.promote(), 'Circular subscription'); - } - finally { - sub2.track_cut(); - sub2.track_off(bu2); - } - } - finally { - sub1.track_cut(); - sub1.track_off(bu1); - } - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $.$mol_after_mock_queue = []; - function $mol_after_mock_warp() { - const queue = $.$mol_after_mock_queue.splice(0); - for (const task of queue) - task(); - } - $.$mol_after_mock_warp = $mol_after_mock_warp; - class $mol_after_mock_commmon extends $mol_object2 { - task; - promise = Promise.resolve(); - cancelled = false; - id; - constructor(task) { - super(); - this.task = task; - $.$mol_after_mock_queue.push(task); - } - destructor() { - const index = $.$mol_after_mock_queue.indexOf(this.task); - if (index >= 0) - $.$mol_after_mock_queue.splice(index, 1); - } - } - $.$mol_after_mock_commmon = $mol_after_mock_commmon; - class $mol_after_mock_timeout extends $mol_after_mock_commmon { - delay; - constructor(delay, task) { - super(task); - this.delay = delay; - } - } - $.$mol_after_mock_timeout = $mol_after_mock_timeout; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test_mocks.push($ => { - $.$mol_after_tick = $mol_after_mock_commmon; - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'Sync execution'() { - class Sync extends $mol_object2 { - static calc(a, b) { - return a + b; - } - } - __decorate([ - $mol_wire_method - ], Sync, "calc", null); - $mol_assert_equal(Sync.calc(1, 2), 3); - }, - async 'async <=> sync'() { - class SyncAsync extends $mol_object2 { - static async val(a) { - return a; - } - static sum(a, b) { - const syn = $mol_wire_sync(this); - return syn.val(a) + syn.val(b); - } - static async calc(a, b) { - return 5 + await $mol_wire_async(this).sum(a, b); - } - } - $mol_assert_equal(await SyncAsync.calc(1, 2), 8); - }, - async 'Idempotence control'() { - class Idempotence extends $mol_object2 { - static logs_idemp = 0; - static logs_unidemp = 0; - static log_idemp() { - this.logs_idemp += 1; - } - static log_unidemp() { - this.logs_unidemp += 1; - } - static async val(a) { - return a; - } - static sum(a, b) { - this.log_idemp(); - this.log_unidemp(); - const syn = $mol_wire_sync(this); - return syn.val(a) + syn.val(b); - } - static async calc(a, b) { - return 5 + await $mol_wire_async(this).sum(a, b); - } - } - __decorate([ - $mol_wire_method - ], Idempotence, "log_idemp", null); - $mol_assert_equal(await Idempotence.calc(1, 2), 8); - $mol_assert_equal(Idempotence.logs_idemp, 1); - $mol_assert_equal(Idempotence.logs_unidemp, 3); - }, - async 'Error handling'() { - class Handle extends $mol_object2 { - static async sum(a, b) { - $mol_fail(new Error('test error ' + (a + b))); - } - static check() { - try { - return $mol_wire_sync(Handle).sum(1, 2); - } - catch (error) { - if ($mol_promise_like(error)) - $mol_fail_hidden(error); - $mol_assert_equal(error.message, 'test error 3'); - } - } - } - await $mol_wire_async(Handle).check(); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test({ - 'test types'($) { - class A { - static a() { - return ''; - } - static b() { - return $mol_wire_async(this).a(); - } - } - }, - async 'Latest method calls wins'($) { - class NameLogger extends $mol_object2 { - static $ = $; - static first = []; - static last = []; - static send(next) { - $mol_wire_sync(this.first).push(next); - $$.$mol_wait_timeout(0); - this.last.push(next); - } - } - const name = $mol_wire_async(NameLogger).send; - name('john'); - const promise = name('jin'); - $.$mol_after_mock_warp(); - await promise; - $mol_assert_equal(NameLogger.first, ['john', 'jin']); - $mol_assert_equal(NameLogger.last, ['jin']); - }, - async 'Latest function calls wins'($) { - const first = []; - const last = []; - function send_name(next) { - $mol_wire_sync(first).push(next); - $$.$mol_wait_timeout(0); - last.push(next); - } - const name = $mol_wire_async(send_name); - name('john'); - const promise = name('jin'); - $.$mol_after_mock_warp(); - await promise; - $mol_assert_equal(first, ['john', 'jin']); - $mol_assert_equal(last, ['jin']); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test({ - 'test types'($) { - class A { - static a() { - return Promise.resolve(''); - } - static b() { - return $mol_wire_sync(this).a(); - } - } - }, - async 'test method from host'($) { - let count = 0; - class A { - static a() { - return $mol_wire_sync(this).b(); - } - static b() { return Promise.resolve(++count); } - } - $mol_assert_equal(await $mol_wire_async(A).a(), 1, count); - }, - async 'test function'($) { - let count = 0; - class A { - static a() { - return $mol_wire_sync(this.b)(); - } - static b() { return Promise.resolve(++count); } - } - $mol_assert_equal(await $mol_wire_async(A).a(), 1, count); - }, - async 'test construct itself'($) { - class A { - static instances = []; - static a() { - const a = new ($mol_wire_sync(A))(); - this.instances.push(a); - $mol_wire_sync(this).b(); - } - static b() { return Promise.resolve(); } - } - await $mol_wire_async(A).a(); - $mol_assert_equal(A.instances.length, 2); - $mol_assert_equal(A.instances[0] instanceof A); - $mol_assert_equal(A.instances[0], A.instances[1]); - } - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test_mocks.push($ => { - $.$mol_after_timeout = $mol_after_mock_timeout; - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_after_work extends $mol_object2 { - delay; - task; - id; - constructor(delay, task) { - super(); - this.delay = delay; - this.task = task; - this.id = requestIdleCallback(task, { timeout: delay }); - } - destructor() { - cancelIdleCallback(this.id); - } - } - $.$mol_after_work = $mol_after_work; - if (typeof requestIdleCallback !== 'function') { - $.$mol_after_work = $mol_after_timeout; - } -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test_mocks.push($ => { - $.$mol_after_work = $mol_after_mock_timeout; - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - function $mol_wait_rest_async() { - return new Promise(done => { - new this.$mol_after_work(16, () => done(null)); - }); - } - $.$mol_wait_rest_async = $mol_wait_rest_async; - function $mol_wait_rest() { - return this.$mol_wire_sync(this).$mol_wait_rest_async(); - } - $.$mol_wait_rest = $mol_wait_rest; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - var $$; - (function ($$) { - $mol_test_mocks.push($ => { - $.$mol_wait_timeout = function $mol_wait_timeout_mock(timeout) { }; - $.$mol_wait_timeout_async = async function $mol_wait_timeout_async_mock(timeout) { }; - }); - })($$ = $_1.$$ || ($_1.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - var $$; - (function ($$) { - $mol_test_mocks.push($ => { - $.$mol_wait_rest = function $mol_wait_rest_mock() { }; - $.$mol_wait_rest_async = async function $mol_wait_rest_async_mock() { }; - }); - })($$ = $_1.$$ || ($_1.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test({ - async 'exec timeout auto kill child process'($) { - let close_mock = () => { }; - const error_message = 'Run error, timeout'; - function mol_run_spawn_sync_mock() { - return { - output: [], - stdout: error_message, - stderr: '', - status: 0, - signal: null, - pid: 123, - }; - } - function mol_run_spawn_mock() { - return { - on(name, cb) { - if (name === 'exit') - close_mock = cb; - }, - kill() { close_mock(); } - }; - } - const context_mock = $.$mol_ambient({ - $mol_run_spawn_sync: mol_run_spawn_sync_mock, - $mol_run_spawn: mol_run_spawn_mock - }); - class $mol_run_mock extends $mol_run { - static get $() { return context_mock; } - static async_enabled() { - return true; - } - } - let message = ''; - try { - const res = await $mol_wire_async($mol_run_mock).spawn({ - command: 'sleep 10', - dir: '.', - timeout: 10, - env: { 'MOL_RUN_ASYNC': '1' } - }); - } - catch (e) { - message = e.message; - } - $mol_assert_equal(message, error_message); - } - }); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($_1) { - $mol_test({ - 'Cached channel'($) { - class App extends $mol_object2 { - static $ = $; - static value(next = 1) { - return next + 1; - } - } - __decorate([ - $mol_wire_solo - ], App, "value", null); - $mol_assert_equal(App.value(), 2); - App.value(2); - $mol_assert_equal(App.value(), 3); - }, - 'Read Pushed'($) { - class App extends $mol_object2 { - static $ = $; - static value(next = 0) { - return next; - } - } - __decorate([ - $mol_wire_solo - ], App, "value", null); - $mol_assert_equal(App.value(1), 1); - $mol_assert_equal(App.value(), 1); - }, - 'Mem overrides mem'($) { - class Base extends $mol_object2 { - static $ = $; - static value(next = 1) { - return next + 1; - } - } - __decorate([ - $mol_wire_solo - ], Base, "value", null); - class Middle extends Base { - static value(next) { - return super.value(next) + 1; - } - } - __decorate([ - $mol_wire_solo - ], Middle, "value", null); - class App extends Middle { - static value(next) { - return super.value(next) * 3; - } - } - __decorate([ - $mol_wire_solo - ], App, "value", null); - $mol_assert_equal(App.value(), 9); - $mol_assert_equal(App.value(5), 21); - $mol_assert_equal(App.value(), 21); - }, - 'Auto recalculation of cached values'($) { - class App extends $mol_object2 { - static $ = $; - static xxx(next) { - return next || 1; - } - static yyy() { - return this.xxx() + 1; - } - static zzz() { - return this.yyy() + 1; - } - } - __decorate([ - $mol_wire_solo - ], App, "xxx", null); - __decorate([ - $mol_wire_solo - ], App, "yyy", null); - __decorate([ - $mol_wire_solo - ], App, "zzz", null); - $mol_assert_equal(App.yyy(), 2); - $mol_assert_equal(App.zzz(), 3); - App.xxx(5); - $mol_assert_equal(App.zzz(), 7); - }, - 'Skip recalculation when actually no dependency changes'($) { - const log = []; - class App extends $mol_object2 { - static $ = $; - static xxx(next) { - log.push('xxx'); - return next || 1; - } - static yyy() { - log.push('yyy'); - return [Math.sign(this.xxx())]; - } - static zzz() { - log.push('zzz'); - return this.yyy()[0] + 1; - } - } - __decorate([ - $mol_wire_solo - ], App, "xxx", null); - __decorate([ - $mol_wire_solo - ], App, "yyy", null); - __decorate([ - $mol_wire_solo - ], App, "zzz", null); - App.zzz(); - $mol_assert_like(log, ['zzz', 'yyy', 'xxx']); - App.xxx(5); - $mol_assert_like(log, ['zzz', 'yyy', 'xxx', 'xxx']); - App.zzz(); - $mol_assert_like(log, ['zzz', 'yyy', 'xxx', 'xxx', 'yyy']); - }, - 'Flow: Auto'($) { - class App extends $mol_object2 { - static get $() { return $; } - static source(next = 1) { return next; } - static condition(next = true) { return next; } - static counter = 0; - static result() { - const res = this.condition() ? this.source() : 0; - return res + this.counter++; - } - } - __decorate([ - $mol_wire_solo - ], App, "source", null); - __decorate([ - $mol_wire_solo - ], App, "condition", null); - __decorate([ - $mol_wire_solo - ], App, "result", null); - $mol_assert_equal(App.result(), 1); - $mol_assert_equal(App.counter, 1); - App.source(10); - $mol_assert_equal(App.result(), 11); - $mol_assert_equal(App.counter, 2); - App.condition(false); - $mol_assert_equal(App.result(), 2); - $mol_assert_equal(App.counter, 3); - $mol_wire_fiber.sync(); - $mol_assert_equal(App.source(), 1); - App.source(20); - $mol_assert_equal(App.result(), 2); - $mol_assert_equal(App.counter, 3); - App.condition(true); - $mol_assert_equal(App.result(), 23); - $mol_assert_equal(App.counter, 4); - }, - 'Dupes: Equality'($) { - let counter = 0; - class App extends $mol_object2 { - static $ = $; - static foo(next) { - return next ?? { numbs: [1] }; - } - static bar() { - return { ...this.foo(), count: ++counter }; - } - } - __decorate([ - $mol_wire_solo - ], App, "foo", null); - __decorate([ - $mol_wire_solo - ], App, "bar", null); - $mol_assert_like(App.bar(), { numbs: [1], count: 1 }); - App.foo({ numbs: [1] }); - $mol_assert_like(App.bar(), { numbs: [1], count: 1 }); - App.foo({ numbs: [2] }); - $mol_assert_like(App.bar(), { numbs: [2], count: 2 }); - }, - 'Cycle: Fail'($) { - class App extends $mol_object2 { - static $ = $; - static foo() { - return this.bar() + 1; - } - static bar() { - return this.foo() + 1; - } - static test() { - $mol_assert_fail(() => App.foo(), 'Circular subscription'); - } - } - __decorate([ - $mol_wire_solo - ], App, "foo", null); - __decorate([ - $mol_wire_solo - ], App, "bar", null); - __decorate([ - $mol_wire_method - ], App, "test", null); - App.test(); - }, - 'Different order of pull and push'($) { - class App extends $mol_object2 { - static $ = $; - static store(next = 0) { - return next; - } - static fast(next) { - return this.store(next); - } - static slow(next) { - if (next !== undefined) - this.slow(); - return this.store(next); - } - } - __decorate([ - $mol_wire_solo - ], App, "store", null); - __decorate([ - $mol_wire_solo - ], App, "fast", null); - __decorate([ - $mol_wire_solo - ], App, "slow", null); - App.fast(); - $mol_assert_equal(App.slow(666), 666); - $mol_assert_equal(App.fast(), App.slow(), 666); - App.store(777); - $mol_assert_equal(App.fast(), App.slow(), 777); - }, - 'Actions inside invariant'($) { - class App extends $mol_object2 { - static $ = $; - static count(next = 0) { - return next; - } - static count2() { - return this.count(); - } - static res() { - const count = this.count2(); - if (!count) - this.count(count + 1); - return count + 1; - } - } - __decorate([ - $mol_wire_solo - ], App, "count", null); - __decorate([ - $mol_wire_solo - ], App, "count2", null); - __decorate([ - $mol_wire_solo - ], App, "res", null); - $mol_assert_like(App.res(), 1); - App.count(5); - $mol_assert_like(App.res(), 6); - }, - async 'Toggle with async'($) { - class App extends $mol_object2 { - static $ = $; - static checked(next = false) { - $$.$mol_wait_timeout(0); - return next; - } - static toggle() { - const prev = this.checked(); - $mol_assert_unique(this.checked(!prev), prev); - } - static res() { - return this.checked(); - } - static test() { - $mol_assert_equal(App.res(), false); - App.toggle(); - $mol_assert_equal(App.res(), true); - } - } - __decorate([ - $mol_wire_solo - ], App, "checked", null); - __decorate([ - $mol_wire_method - ], App, "toggle", null); - __decorate([ - $mol_wire_solo - ], App, "res", null); - __decorate([ - $mol_wire_method - ], App, "test", null); - await $mol_wire_async(App).test(); - }, - 'Restore after error'($) { - class App extends $mol_object2 { - static get $() { return $; } - static condition(next = false) { return next; } - static broken() { - if (this.condition()) { - $mol_fail(new Error('test error')); - } - return 1; - } - static result() { - return this.broken(); - } - } - __decorate([ - $mol_wire_solo - ], App, "condition", null); - __decorate([ - $mol_wire_solo - ], App, "broken", null); - __decorate([ - $mol_wire_solo - ], App, "result", null); - $mol_assert_equal(App.result(), 1); - App.condition(true); - $mol_assert_fail(() => App.result(), 'test error'); - App.condition(false); - $mol_assert_equal(App.result(), 1); - }, - async 'Wait for data'($) { - class App extends $mol_object2 { - static $ = $; - static async source() { - return 'Jin'; - } - static middle() { - return $mol_wire_sync(this).source(); - } - static target() { - return this.middle(); - } - static test() { - $mol_assert_equal(App.target(), 'Jin'); - } - } - __decorate([ - $mol_wire_solo - ], App, "middle", null); - __decorate([ - $mol_wire_solo - ], App, "target", null); - __decorate([ - $mol_wire_method - ], App, "test", null); - await $mol_wire_async(App).test(); - }, - 'Auto destroy on long alone'($) { - let destroyed = false; - class App extends $mol_object2 { - static $ = $; - static showing(next = true) { - return next; - } - static details() { - return { - destructor() { - destroyed = true; - } - }; - } - static render() { - return this.showing() ? this.details() : null; - } - } - __decorate([ - $mol_wire_solo - ], App, "showing", null); - __decorate([ - $mol_wire_solo - ], App, "details", null); - __decorate([ - $mol_wire_solo - ], App, "render", null); - const details = App.render(); - $mol_assert_ok(details); - App.showing(false); - $mol_assert_not(App.render()); - App.showing(true); - $mol_assert_equal(App.render(), details); - $mol_wire_fiber.sync(); - $mol_assert_not(destroyed); - App.showing(false); - $mol_wire_fiber.sync(); - $mol_assert_ok(destroyed); - App.showing(true); - $mol_assert_unique(App.render(), details); - }, - async 'Hold pubs while wait async task'($) { - class App extends $mol_object2 { - static $ = $; - static counter = 0; - static resets(next) { - return ($mol_wire_probe(() => this.resets()) ?? -1) + 1; - } - static async wait() { } - static value() { - return ++this.counter; - } - static result() { - if (this.resets()) - $mol_wire_sync(this).wait(); - return this.value(); - } - static test() { - } - } - __decorate([ - $mol_wire_solo - ], App, "resets", null); - __decorate([ - $mol_wire_solo - ], App, "value", null); - __decorate([ - $mol_wire_solo - ], App, "result", null); - __decorate([ - $mol_wire_method - ], App, "test", null); - $mol_assert_equal(App.result(), 1); - App.resets(null); - $mol_wire_fiber.sync(); - $mol_assert_equal(await $mol_wire_async(App).result(), 1); - }, - 'Owned value has js-path name'() { - class App extends $mol_object2 { - static title() { - return new $mol_object2; - } - } - __decorate([ - $mol_wire_solo - ], App, "title", null); - $mol_assert_equal(`${App.title()}`, 'App.title<>'); - }, - 'Unsubscribe from temp pubs on complete'($) { - class Random extends $mol_object2 { - static $ = $; - static seed() { - return Math.random(); - } - static resets(next) { - return Math.random(); - } - static value() { - this.resets(); - return this.seed(); - } - } - __decorate([ - $mol_wire_method - ], Random, "seed", null); - __decorate([ - $mol_wire_solo - ], Random, "resets", null); - __decorate([ - $mol_wire_solo - ], Random, "value", null); - const first = Random.value(); - Random.resets(null); - $mol_assert_unique(Random.value(), first); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test({ - async 'Error caching'($) { - const next_cached = 123; - class Some extends $mol_object2 { - static $ = $; - static data(id, next) { - if (next) - return next; - setTimeout(() => { - $mol_wire_async(this).data(id, next_cached); - }, 10); - $mol_fail_hidden(new Promise(() => { })); - } - static run() { - return this.data('1'); - } - } - __decorate([ - $mol_wire_plex - ], Some, "data", null); - __decorate([ - $mol_wire_method - ], Some, "run", null); - const val = await $mol_wire_async(Some).run(); - $mol_assert_equal(val, next_cached); - }, - 'Memoize by single simple key'($) { - class Team extends $mol_object2 { - static $ = $; - static user_name(user, next) { - return next ?? user; - } - static user_names() { - return [ - this.user_name('jin'), - this.user_name('john'), - ]; - } - } - __decorate([ - $mol_wire_plex - ], Team, "user_name", null); - __decorate([ - $mol_wire_solo - ], Team, "user_names", null); - $mol_assert_like(Team.user_names(), ['jin', 'john']); - Team.user_name('jin', 'JIN'); - $mol_assert_like(Team.user_names(), ['JIN', 'john']); - }, - 'Memoize by single complex key'($) { - class Map extends $mol_object2 { - static $ = $; - static tile(pos) { - return new String(`/tile=${pos}`); - } - static test() { - $mol_assert_like(this.tile([0, 1]), new String('/tile=0,1')); - $mol_assert_equal(this.tile([0, 1]), this.tile([0, 1])); - } - } - __decorate([ - $mol_wire_plex - ], Map, "tile", null); - __decorate([ - $mol_wire_method - ], Map, "test", null); - Map.test(); - }, - 'Owned value has js-path name'() { - class App extends $mol_object2 { - static like(friend) { - return new $mol_object2; - } - static relation([friend, props]) { - return new $mol_object2; - } - } - __decorate([ - $mol_wire_plex - ], App, "like", null); - __decorate([ - $mol_wire_plex - ], App, "relation", null); - $mol_assert_equal(`${App.like(123)}`, 'App.like<123>'); - $mol_assert_equal(`${App.relation([123, [456]])}`, 'App.relation<[123,[456]]>'); - }, - 'Deep deps'($) { - class Fib extends $mol_object2 { - static $ = $; - static sums = 0; - static value(index, next) { - if (next) - return next; - if (index < 2) - return 1; - ++this.sums; - return this.value(index - 1) + this.value(index - 2); - } - } - __decorate([ - $mol_wire_plex - ], Fib, "value", null); - $mol_assert_equal(Fib.value(4), 5); - $mol_assert_equal(Fib.sums, 3); - Fib.value(1, 2); - $mol_assert_equal(Fib.value(4), 8); - $mol_assert_equal(Fib.sums, 6); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'Previous value'() { - class Cache extends $mol_object2 { - static store(next) { - if (!next) - return {}; - return { - ...$mol_wire_probe(() => this.store()) ?? {}, - ...next, - }; - } - } - __decorate([ - $mol_wire_solo - ], Cache, "store", null); - $mol_assert_like(Cache.store(), {}); - $mol_assert_like(Cache.store({ foo: 666 }), { foo: 666 }); - $mol_assert_like(Cache.store({ bar: 777 }), { foo: 666, bar: 777 }); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'run callback'() { - class Plus1 extends $mol_wrapper { - static wrap(task) { - return function (...args) { - return task.call(this, ...args) + 1; - }; - } - } - $mol_assert_equal(Plus1.run(() => 2), 3); - }, - 'wrap function'() { - class Plus1 extends $mol_wrapper { - static wrap(task) { - return function (...args) { - return task.call(this, ...args) + 1; - }; - } - } - const obj = { - level: 2, - pow: Plus1.func(function (a) { - return a ** this.level; - }) - }; - $mol_assert_equal(obj.pow(2), 5); - }, - 'decorate field getter'() { - class Plus1 extends $mol_wrapper { - static last = 0; - static wrap(task) { - return function (...args) { - return Plus1.last = (task.call(this, ...args) || 0) + 1; - }; - } - } - class Foo { - static get two() { - return 1; - } - static set two(next) { } - } - __decorate([ - Plus1.field - ], Foo, "two", null); - $mol_assert_equal(Foo.two, 2); - Foo.two = 3; - $mol_assert_equal(Plus1.last, 2); - $mol_assert_equal(Foo.two, 2); - }, - 'decorate instance method'() { - class Plus1 extends $mol_wrapper { - static wrap(task) { - return function (...args) { - return task.call(this, ...args) + 1; - }; - } - } - class Foo1 { - level = 2; - pow(a) { - return a ** this.level; - } - } - __decorate([ - Plus1.method - ], Foo1.prototype, "pow", null); - const Foo2 = Foo1; - const foo = new Foo2; - $mol_assert_equal(foo.pow(2), 5); - }, - 'decorate static method'() { - class Plus1 extends $mol_wrapper { - static wrap(task) { - return function (...args) { - return task.call(this, ...args) + 1; - }; - } - } - class Foo { - static level = 2; - static pow(a) { - return a ** this.level; - } - } - __decorate([ - Plus1.method - ], Foo, "pow", null); - $mol_assert_equal(Foo.pow(2), 5); - }, - 'decorate class'() { - class BarInc extends $mol_wrapper { - static wrap(task) { - return function (...args) { - const foo = task.call(this, ...args); - foo.bar++; - return foo; - }; - } - } - let Foo = class Foo { - bar; - constructor(bar) { - this.bar = bar; - } - }; - Foo = __decorate([ - BarInc.class - ], Foo); - $mol_assert_equal(new Foo(2).bar, 3); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'memoize field'() { - class Foo { - static one = 1; - static get two() { - return ++this.one; - } - static set two(next) { } - } - __decorate([ - $mol_memo.field - ], Foo, "two", null); - $mol_assert_equal(Foo.two, 2); - $mol_assert_equal(Foo.two, 2); - Foo.two = 3; - $mol_assert_equal(Foo.two, 3); - $mol_assert_equal(Foo.two, 3); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'Primitives'() { - $mol_assert_equal($mol_key(null), 'null'); - $mol_assert_equal($mol_key(false), 'false'); - $mol_assert_equal($mol_key(true), 'true'); - $mol_assert_equal($mol_key(0), '0'); - $mol_assert_equal($mol_key(1n << 64n), '18446744073709551616n'); - $mol_assert_equal($mol_key(''), '""'); - }, - 'Array & POJO'() { - $mol_assert_equal($mol_key([null]), '[null]'); - $mol_assert_equal($mol_key({ foo: 0 }), '{"foo":0}'); - $mol_assert_equal($mol_key({ foo: [false] }), '{"foo":[false]}'); - }, - 'Uint8Array'() { - $mol_assert_equal($mol_key(new Uint8Array([1, 2])), '[1,2]'); - $mol_assert_equal($mol_key([new Uint8Array([1, 2])]), '[[1,2]]'); - $mol_assert_equal($mol_key({ foo: new Uint8Array([1, 2]) }), '{"foo":[1,2]}'); - }, - 'Function'() { - const func = () => { }; - $mol_assert_equal($mol_key(func), $mol_key(func)); - $mol_assert_unique($mol_key(func), $mol_key(() => { })); - }, - 'Objects'() { - class User { - } - const jin = new User(); - $mol_assert_equal($mol_key(jin), $mol_key(jin)); - $mol_assert_unique($mol_key(jin), $mol_key(new User())); - }, - 'Elements'() { - const foo = $mol_jsx("div", null, "bar"); - $mol_assert_equal($mol_key(foo), $mol_key(foo)); - $mol_assert_unique($mol_key(foo), $mol_key($mol_jsx("div", null, "bar"))); - }, - 'Custom JSON representation'() { - class User { - name; - age; - constructor(name, age) { - this.name = name; - this.age = age; - } - toJSON() { return { name: this.name }; } - } - $mol_assert_equal($mol_key(new User('jin', 18)), '{"name":"jin"}'); - }, - 'Special native classes'() { - $mol_assert_equal($mol_key(new Date('xyz')), 'null'); - $mol_assert_equal($mol_key(new Date('2001-01-02T03:04:05.678Z')), '"2001-01-02T03:04:05.678Z"'); - $mol_assert_equal($mol_key(/./), '"/./"'); - $mol_assert_equal($mol_key(/\./gimsu), '"/\\\\./gimsu"'); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test_mocks.push($ => { - $.$mol_after_frame = $mol_after_mock_commmon; - }); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - class $mol_wire_log extends $mol_object2 { - static watch(task) { - return task; - } - static track(fiber) { - const prev = $mol_wire_probe(() => this.track(fiber)); - let next; - try { - next = fiber.sync(); - } - finally { - for (const pub of fiber.pub_list) { - if (pub instanceof $mol_wire_fiber) { - this.track(pub); - } - } - } - if (fiber.host === this) - return next; - if ($mol_compare_deep(prev, next)) { - this.$.$mol_log3_rise({ - message: '💧 Same', - place: fiber, - }); - } - else if (prev !== undefined) { - this.$.$mol_log3_rise({ - message: '🔥 Next', - place: fiber, - prev, - }); - } - return next; - } - static active() { - try { - this.watch()?.(); - } - catch (error) { - $mol_fail_log(error); - } - finally { - for (const pub of $mol_wire_auto().pub_list) { - if (pub instanceof $mol_wire_fiber) { - this.track(pub); - } - } - } - } - } - __decorate([ - $mol_mem - ], $mol_wire_log, "watch", null); - __decorate([ - $mol_mem_key - ], $mol_wire_log, "track", null); - __decorate([ - $mol_mem - ], $mol_wire_log, "active", null); - $.$mol_wire_log = $mol_wire_log; -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_wire_log.active(); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'const returns stored value'() { - const foo = { bar: $mol_const(Math.random()) }; - $mol_assert_equal(foo.bar(), foo.bar()); - $mol_assert_equal(foo.bar(), foo.bar['()']); - }, - }); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($_1) { - $mol_test({ - 'id auto generation'($) { - class $mol_view_test_item extends $mol_view { - } - class $mol_view_test_block extends $mol_view { - static $ = $; - element(id) { - return new $mol_view_test_item(); - } - } - __decorate([ - $mol_mem_key - ], $mol_view_test_block.prototype, "element", null); - var x = $mol_view_test_block.Root(0); - $mol_assert_equal(x.dom_node().id, '$mol_view_test_block.Root(0)'); - $mol_assert_equal(x.element(0).dom_node().id, '$mol_view_test_block.Root(0).element(0)'); - }, - 'caching ref to dom node'($) { - var x = new class extends $mol_view { - }; - x.$ = $; - $mol_assert_equal(x.dom_node(), x.dom_node()); - }, - 'content render'($) { - class $mol_view_test extends $mol_view { - sub() { - return ['lol', 5]; - } - } - var x = new $mol_view_test(); - x.$ = $; - var node = x.dom_tree(); - $mol_assert_equal(node.innerHTML, 'lol5'); - }, - 'bem attributes generation'($) { - class $mol_view_test_item extends $mol_view { - } - class $mol_view_test_block extends $mol_view { - Element(id) { - return new $mol_view_test_item(); - } - } - __decorate([ - $mol_mem_key - ], $mol_view_test_block.prototype, "Element", null); - var x = new $mol_view_test_block(); - x.$ = $; - $mol_assert_equal(x.dom_node().getAttribute('mol_view_test_block'), ''); - $mol_assert_equal(x.dom_node().getAttribute('mol_view'), ''); - $mol_assert_equal(x.Element(0).dom_node().getAttribute('mol_view_test_block_element'), ''); - $mol_assert_equal(x.Element(0).dom_node().getAttribute('mol_view_test_item'), ''); - $mol_assert_equal(x.Element(0).dom_node().getAttribute('mol_view'), ''); - }, - 'render custom attributes'($) { - class $mol_view_test extends $mol_view { - attr() { - return { - 'href': '#haha', - 'required': true, - 'hidden': false, - }; - } - } - var x = new $mol_view_test(); - x.$ = $; - var node = x.dom_tree(); - $mol_assert_equal(node.getAttribute('href'), '#haha'); - $mol_assert_equal(node.getAttribute('required'), 'true'); - $mol_assert_equal(node.getAttribute('hidden'), null); - }, - 'render custom fields'($) { - class $mol_view_test extends $mol_view { - field() { - return { - 'hidden': true - }; - } - } - var x = new $mol_view_test(); - x.$ = $; - var node = x.dom_tree(); - $mol_assert_equal(node.hidden, true); - }, - 'attach event handlers'($) { - var clicked = false; - class $mol_view_test extends $mol_view { - event() { - return { - 'click': (next) => this.event_click(next) - }; - } - event_click(next) { - clicked = true; - } - } - var x = new $mol_view_test(); - x.$ = $; - var node = x.dom_node(); - node.click(); - $mol_assert_ok(clicked); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test_mocks.push(context => { - class $mol_state_arg_mock extends $mol_state_arg { - static $ = context; - static href(next) { return next || ''; } - static go(next) { - this.href(this.link(next)); - } - } - __decorate([ - $mol_mem - ], $mol_state_arg_mock, "href", null); - __decorate([ - $mol_action - ], $mol_state_arg_mock, "go", null); - context.$mol_state_arg = $mol_state_arg_mock; - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class TestClass extends Uint8Array { - } - $mol_test({ - 'Uint8Array vs itself'() { - $mol_assert_ok($mol_compare_array(new Uint8Array, new Uint8Array)); - $mol_assert_ok($mol_compare_array(new Uint8Array([0]), new Uint8Array([0]))); - $mol_assert_not($mol_compare_array(new Uint8Array([0]), new Uint8Array([1]))); - }, - 'Uint8Array vs subclassed array'() { - $mol_assert_not($mol_compare_array(new Uint8Array, new TestClass)); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'decode utf8 string'() { - const str = 'Hello, ΧΨΩЫ'; - const encoded = new Uint8Array([72, 101, 108, 108, 111, 44, 32, 206, 167, 206, 168, 206, 169, 208, 171]); - $mol_assert_equal($mol_charset_decode(encoded), str); - $mol_assert_equal($mol_charset_decode(encoded, 'utf8'), str); - }, - 'decode empty string'() { - const encoded = new Uint8Array([]); - $mol_assert_equal($mol_charset_decode(encoded), ''); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'encode utf8 string'() { - const str = 'Hello, ΧΨΩЫ'; - const encoded = new Uint8Array([72, 101, 108, 108, 111, 44, 32, 206, 167, 206, 168, 206, 169, 208, 171]); - $mol_assert_like($mol_charset_encode(str), encoded); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'local get set delete'() { - var key = '$mol_state_local_test:' + Math.random(); - $mol_assert_equal($mol_state_local.value(key), null); - $mol_state_local.value(key, 123); - $mol_assert_equal($mol_state_local.value(key), 123); - $mol_state_local.value(key, null); - $mol_assert_equal($mol_state_local.value(key), null); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test_mocks.push(context => { - class $mol_state_local_mock extends $mol_state_local { - static state = {}; - static value(key, next = this.state[key]) { - return this.state[key] = (next || null); - } - } - __decorate([ - $mol_mem_key - ], $mol_state_local_mock, "value", null); - context.$mol_state_local = $mol_state_local_mock; - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - class $mol_style_sheet_test1 extends $mol_view { - Item() { return new $mol_view; } - } - $.$mol_style_sheet_test1 = $mol_style_sheet_test1; - class $mol_style_sheet_test2 extends $mol_view { - List() { return new $mol_style_sheet_test1; } - } - $.$mol_style_sheet_test2 = $mol_style_sheet_test2; - $mol_test({ - 'component block styles'() { - class $mol_style_sheet_test extends $mol_view { - } - const sheet = $mol_style_sheet($mol_style_sheet_test, { - display: 'block', - zIndex: 1, - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test] {\n\tdisplay: block;\n\tz-index: 1;\n}\n'); - }, - 'various units'() { - class $mol_style_sheet_test extends $mol_view { - } - const { px, per } = $mol_style_unit; - const sheet = $mol_style_sheet($mol_style_sheet_test, { - width: per(50), - height: px(50), - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test] {\n\twidth: 50%;\n\theight: 50px;\n}\n'); - }, - 'various functions'() { - class $mol_style_sheet_test extends $mol_view { - } - const { calc } = $mol_style_func; - const { px, per } = $mol_style_unit; - const sheet = $mol_style_sheet($mol_style_sheet_test, { - width: calc(`${per(100)} - ${px(1)}`), - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test] {\n\twidth: calc(100% - 1px);\n}\n'); - }, - 'property groups'() { - class $mol_style_sheet_test extends $mol_view { - } - const { px } = $mol_style_unit; - const sheet = $mol_style_sheet($mol_style_sheet_test, { - flex: { - grow: 5 - } - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test] {\n\tflex-grow: 5;\n}\n'); - }, - 'custom properties'() { - class $mol_style_sheet_test extends $mol_view { - } - const sheet = $mol_style_sheet($mol_style_sheet_test, { - '--isVariable': 'yes', - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test] {\n\t--is-variable: yes;\n}\n'); - }, - 'custom property groups'() { - class $mol_style_sheet_test extends $mol_view { - } - const { px } = $mol_style_unit; - const sheet = $mol_style_sheet($mol_style_sheet_test, { - '--variable': { - test: px(5) - } - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test] {\n\t--variable-test: 5px;\n}\n'); - }, - 'property shorthand'() { - class $mol_style_sheet_test extends $mol_view { - } - const { px } = $mol_style_unit; - const sheet = $mol_style_sheet($mol_style_sheet_test, { - padding: [px(5), 'auto'] - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test] {\n\tpadding: 5px auto;\n}\n'); - }, - 'sequenced values'() { - class $mol_style_sheet_test extends $mol_view { - } - const { url } = $mol_style_func; - const sheet = $mol_style_sheet($mol_style_sheet_test, { - background: { - image: [[url('foo')], [url('bar')]], - }, - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test] {\n\tbackground-image: url("foo"),url("bar");\n}\n'); - }, - 'sequenced structs'() { - class $mol_style_sheet_test extends $mol_view { - } - const { rem } = $mol_style_unit; - const { hsla } = $mol_style_func; - const sheet = $mol_style_sheet($mol_style_sheet_test, { - box: { - shadow: [ - { - inset: true, - x: 0, - y: 0, - blur: rem(.5), - spread: 0, - color: 'red', - }, - { - inset: false, - x: 0, - y: 0, - blur: rem(.5), - spread: 0, - color: 'blue', - }, - ], - }, - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test] {\n\tbox-shadow: inset 0 0 0.5rem 0 red,0 0 0.5rem 0 blue;\n}\n'); - }, - 'component block styles with pseudo class'() { - class $mol_style_sheet_test extends $mol_view { - } - const sheet = $mol_style_sheet($mol_style_sheet_test, { - ':focus': { - color: 'red', - display: 'block', - }, - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test]:focus {\n\tcolor: red;\n\tdisplay: block;\n}\n'); - }, - 'component block styles with pseudo element'() { - class $mol_style_sheet_test extends $mol_view { - } - const sheet = $mol_style_sheet($mol_style_sheet_test, { - '::first-line': { - color: 'red', - display: 'block', - }, - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test]::first-line {\n\tcolor: red;\n\tdisplay: block;\n}\n'); - }, - 'component block styles with media query'() { - class $mol_style_sheet_test extends $mol_view { - } - const sheet = $mol_style_sheet($mol_style_sheet_test, { - '@media': { - 'print': { - color: 'red', - display: 'block', - }, - }, - }); - $mol_assert_equal(sheet, '@media print {\n[mol_style_sheet_test] {\n\tcolor: red;\n\tdisplay: block;\n}\n}\n'); - }, - 'component block styles with attribute value'() { - class $mol_style_sheet_test extends $mol_view { - attr() { - return { - mol_theme: '$mol_theme_dark' - }; - } - } - const sheet = $mol_style_sheet($mol_style_sheet_test, { - '@': { - mol_theme: { - '$mol_theme_dark': { - color: 'red', - display: 'block', - }, - }, - }, - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test]:where([mol_theme="$mol_theme_dark"]) {\n\tcolor: red;\n\tdisplay: block;\n}\n'); - }, - 'component element styles'() { - class $mol_style_sheet_test extends $mol_view { - Item() { return new $mol_view; } - } - const sheet = $mol_style_sheet($mol_style_sheet_test, { - Item: { - color: 'red', - display: 'block', - }, - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test_item] {\n\tcolor: red;\n\tdisplay: block;\n}\n'); - }, - 'component element of element styles'() { - const sheet = $mol_style_sheet($mol_style_sheet_test2, { - List: { - Item: { - color: 'red', - display: 'block', - }, - }, - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test2_list_item] {\n\tcolor: red;\n\tdisplay: block;\n}\n'); - }, - 'component element styles with block attribute value'() { - class $mol_style_sheet_test extends $mol_view { - Item() { return new $mol_view; } - attr() { - return { - mol_theme: '$mol_theme_dark' - }; - } - } - const sheet = $mol_style_sheet($mol_style_sheet_test, { - '@': { - mol_theme: { - '$mol_theme_dark': { - Item: { - color: 'red', - }, - }, - }, - }, - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test]:where([mol_theme="$mol_theme_dark"]) :where([mol_style_sheet_test_item]) {\n\tcolor: red;\n}\n'); - }, - 'inner component styles by class'() { - const sheet = $mol_style_sheet($mol_style_sheet_test2, { - $mol_style_sheet_test1: { - color: 'red', - display: 'block', - }, - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test2] :where([mol_style_sheet_test1]) {\n\tcolor: red;\n\tdisplay: block;\n}\n'); - }, - 'child component styles by class'() { - const sheet = $mol_style_sheet($mol_style_sheet_test2, { - '>': { - $mol_style_sheet_test1: { - color: 'red', - display: 'block', - }, - }, - }); - $mol_assert_equal(sheet, '[mol_style_sheet_test2] > :where([mol_style_sheet_test1]) {\n\tcolor: red;\n\tdisplay: block;\n}\n'); - }, - }); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; -var $; -(function ($_1) { - var $$; - (function ($$) { - $mol_test({ - 'handle clicks by default'($) { - let clicked = false; - const clicker = $mol_button.make({ - $, - click: (event) => { clicked = true; }, - }); - const element = clicker.dom_tree(); - const event = $mol_dom_context.document.createEvent('mouseevent'); - event.initEvent('click', true, true); - element.dispatchEvent(event); - $mol_assert_ok(clicked); - }, - 'no handle clicks if disabled'($) { - let clicked = false; - const clicker = $mol_button.make({ - $, - click: (event) => { clicked = true; }, - enabled: () => false, - }); - const element = clicker.dom_tree(); - const event = $mol_dom_context.document.createEvent('mouseevent'); - event.initEvent('click', true, true); - element.dispatchEvent(event); - $mol_assert_not(clicked); - }, - async 'Store error'($) { - const clicker = $mol_button.make({ - $, - click: (event) => $.$mol_fail(new Error('Test error')), - }); - const event = $mol_dom_context.document.createEvent('mouseevent'); - $mol_assert_fail(() => clicker.event_activate(event), 'Test error'); - await Promise.resolve(); - $mol_assert_equal(clicker.status()[0].message, 'Test error'); - }, - }); - })($$ = $_1.$$ || ($_1.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'all cases of using maybe'() { - $mol_assert_equal($mol_maybe(0)[0], 0); - $mol_assert_equal($mol_maybe(false)[0], false); - $mol_assert_equal($mol_maybe(null)[0], void 0); - $mol_assert_equal($mol_maybe(void 0)[0], void 0); - $mol_assert_equal($mol_maybe(void 0).map(v => v.toString())[0], void 0); - $mol_assert_equal($mol_maybe(0).map(v => v.toString())[0], '0'); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($_1) { - $mol_test_mocks.push($ => { - class $mol_locale_mock extends $mol_locale { - lang(next = 'en') { return next; } - static source(lang) { - return {}; - } - } - __decorate([ - $mol_mem - ], $mol_locale_mock.prototype, "lang", null); - __decorate([ - $mol_mem_key - ], $mol_locale_mock, "source", null); - $.$mol_locale = $mol_locale_mock; - }); -})($ || ($ = {})); - -; -"use strict"; - -; -"use strict"; - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'escape'() { - const specials = $mol_regexp.from('.*+?^${}()|[]\\'); - $mol_assert_equal(specials.source, '\\.\\*\\+\\?\\^\\$\\{\\}\\(\\)\\|\\[\\]\\\\'); - }, - 'char code'() { - const space = $mol_regexp.from(32); - $mol_assert_like(' '.match(space), [' ']); - }, - 'repeat fixed'() { - const { repeat, decimal_only: digit } = $mol_regexp; - const year = repeat(digit, 4, 4); - $mol_assert_like('#2020#'.match(year), ['2020']); - }, - 'greedy repeat'() { - const { repeat, repeat_greedy, latin_only: letter } = $mol_regexp; - $mol_assert_like('abc'.match(repeat(letter, 1, 2)), ['a', 'b', 'c']); - $mol_assert_like('abc'.match(repeat_greedy(letter, 1, 2)), ['ab', 'c']); - }, - 'repeat range'() { - const { repeat_greedy, decimal_only: digit } = $mol_regexp; - const year = repeat_greedy(digit, 2, 4); - $mol_assert_like('#2#'.match(year), null); - $mol_assert_like('#20#'.match(year), ['20']); - $mol_assert_like('#2020#'.match(year), ['2020']); - $mol_assert_like('#20201#'.match(year), ['2020']); - }, - 'repeat from'() { - const { repeat_greedy, latin_only: letter } = $mol_regexp; - const name = repeat_greedy(letter, 2); - $mol_assert_like('##'.match(name), null); - $mol_assert_like('#a#'.match(name), null); - $mol_assert_like('#ab#'.match(name), ['ab']); - $mol_assert_like('#abc#'.match(name), ['abc']); - }, - 'from string'() { - const regexp = $mol_regexp.from('[\\d]'); - $mol_assert_equal(regexp.source, '\\[\\\\d\\]'); - $mol_assert_equal(regexp.flags, 'gsu'); - }, - 'from regexp'() { - const regexp = $mol_regexp.from(/[\d]/i); - $mol_assert_equal(regexp.source, '[\\d]'); - $mol_assert_equal(regexp.flags, 'i'); - }, - 'split'() { - const regexp = $mol_regexp.from(';'); - $mol_assert_like('aaa;bbb;ccc'.split(regexp), ['aaa', ';', 'bbb', ';', 'ccc']); - $mol_assert_like('aaa;;ccc'.split(regexp), ['aaa', ';', '', ';', 'ccc']); - $mol_assert_like('aaa'.split(regexp), ['aaa']); - $mol_assert_like(''.split(regexp), ['']); - }, - 'test for matching'() { - const regexp = $mol_regexp.from('foo'); - $mol_assert_like(regexp.test(''), false); - $mol_assert_like(regexp.test('fo'), false); - $mol_assert_like(regexp.test('foo'), true); - $mol_assert_like(regexp.test('foobar'), true); - $mol_assert_like(regexp.test('barfoo'), true); - }, - 'case ignoring'() { - const xxx = $mol_regexp.from('x', { ignoreCase: true }); - $mol_assert_like(xxx.flags, 'gisu'); - $mol_assert_like(xxx.exec('xx')[0], 'x'); - $mol_assert_like(xxx.exec('XX')[0], 'X'); - }, - 'multiline mode'() { - const { end, from } = $mol_regexp; - const xxx = from(['x', end], { multiline: true }); - $mol_assert_like(xxx.exec('x\ny')[0], 'x'); - $mol_assert_like(xxx.flags, 'gmsu'); - }, - 'flags override'() { - const triplet = $mol_regexp.from($mol_regexp.from(/.../, { ignoreCase: true }), { multiline: true }); - $mol_assert_like(triplet.toString(), '/.../gmsu'); - }, - 'sequence'() { - const { begin, end, decimal_only: digit, repeat, from } = $mol_regexp; - const year = repeat(digit, 4, 4); - const dash = '-'; - const month = repeat(digit, 2, 2); - const day = repeat(digit, 2, 2); - const date = from([begin, year, dash, month, dash, day, end]); - $mol_assert_like(date.exec('2020-01-02')[0], '2020-01-02'); - }, - 'optional'() { - const name = $mol_regexp.from(['A', ['4']]); - $mol_assert_equal('AB'.match(name)[0], 'A'); - $mol_assert_equal('A4'.match(name)[0], 'A4'); - }, - 'anon variants'() { - const name = $mol_regexp.from(['A', $mol_regexp.vary(['4', '5'])]); - $mol_assert_equal('AB'.match(name), null); - $mol_assert_equal('A4'.match(name)[0], 'A4'); - $mol_assert_equal('A5'.match(name)[0], 'A5'); - }, - 'only groups'() { - const regexp = $mol_regexp.from({ dog: '@' }); - $mol_assert_like([...'#'.matchAll(regexp)][0].groups, undefined); - $mol_assert_like([...'@'.matchAll(regexp)][0].groups, { dog: '@' }); - }, - 'catch skipped'() { - const regexp = $mol_regexp.from(/(@)(\d?)/g); - $mol_assert_like([...'[[@]]'.matchAll(regexp)].map(f => [...f]), [ - ['[['], - ['@', '@', ''], - [']]'], - ]); - }, - 'enum variants'() { - let Sex; - (function (Sex) { - Sex["male"] = "male"; - Sex["female"] = "female"; - })(Sex || (Sex = {})); - const sexism = $mol_regexp.from(Sex); - $mol_assert_like([...''.matchAll(sexism)].length, 0); - $mol_assert_like([...'trans'.matchAll(sexism)][0].groups, undefined); - $mol_assert_like([...'male'.matchAll(sexism)][0].groups, { male: 'male', female: '' }); - $mol_assert_like([...'female'.matchAll(sexism)][0].groups, { male: '', female: 'female' }); - }, - 'recursive only groups'() { - let Sex; - (function (Sex) { - Sex["male"] = "male"; - Sex["female"] = "female"; - })(Sex || (Sex = {})); - const sexism = $mol_regexp.from({ Sex }); - $mol_assert_like([...''.matchAll(sexism)].length, 0); - $mol_assert_like([...'male'.matchAll(sexism)][0].groups, { Sex: 'male', male: 'male', female: '' }); - $mol_assert_like([...'female'.matchAll(sexism)][0].groups, { Sex: 'female', male: '', female: 'female' }); - }, - 'sequence with groups'() { - const { begin, end, decimal_only: digit, repeat, from } = $mol_regexp; - const year = repeat(digit, 4, 4); - const dash = '-'; - const month = repeat(digit, 2, 2); - const day = repeat(digit, 2, 2); - const regexp = from([begin, { year }, dash, { month }, dash, { day }, end]); - const found = [...'2020-01-02'.matchAll(regexp)]; - $mol_assert_like(found[0].groups, { - year: '2020', - month: '01', - day: '02', - }); - }, - 'sequence with groups of mixed type'() { - const prefix = '/'; - const postfix = '/'; - const regexp = $mol_regexp.from([{ prefix }, /(\w+)/, { postfix }, /([gumi]*)/]); - $mol_assert_like([...'/foo/mi'.matchAll(regexp)], [ - Object.assign(["/foo/mi", "/", "foo", "/", "mi"], { - groups: { - prefix: '/', - postfix: '/', - }, - index: 0, - input: "/", - }), - ]); - }, - 'recursive sequence with groups'() { - const { begin, end, decimal_only: digit, repeat, from } = $mol_regexp; - const year = repeat(digit, 4, 4); - const dash = '-'; - const month = repeat(digit, 2, 2); - const day = repeat(digit, 2, 2); - const regexp = from([ - begin, { date: [{ year }, dash, { month }] }, dash, { day }, end - ]); - const found = [...'2020-01-02'.matchAll(regexp)]; - $mol_assert_like(found[0].groups, { - date: '2020-01', - year: '2020', - month: '01', - day: '02', - }); - }, - 'parse multiple'() { - const { decimal_only: digit, from } = $mol_regexp; - const regexp = from({ digit }); - $mol_assert_like([...'123'.matchAll(regexp)].map(f => f.groups), [ - { digit: '1' }, - { digit: '2' }, - { digit: '3' }, - ]); - }, - 'named variants'() { - const { begin, or, end, from } = $mol_regexp; - const sexism = from([ - begin, 'sex = ', { sex: ['male', or, 'female'] }, end - ]); - $mol_assert_like([...'sex = male'.matchAll(sexism)][0].groups, { sex: 'male' }); - $mol_assert_like([...'sex = female'.matchAll(sexism)][0].groups, { sex: 'female' }); - $mol_assert_like([...'sex = malefemale'.matchAll(sexism)][0].groups, undefined); - }, - 'force after'() { - const { latin_only: letter, force_after, from } = $mol_regexp; - const regexp = from([letter, force_after('.')]); - $mol_assert_like('x.'.match(regexp), ['x']); - $mol_assert_like('x,'.match(regexp), null); - }, - 'forbid after'() { - const { latin_only: letter, forbid_after, from } = $mol_regexp; - const regexp = from([letter, forbid_after('.')]); - $mol_assert_like('x.'.match(regexp), null); - $mol_assert_like('x,'.match(regexp), ['x']); - }, - 'char except'() { - const { char_except, latin_only, tab } = $mol_regexp; - const name = char_except(latin_only, tab); - $mol_assert_like('a'.match(name), null); - $mol_assert_like('\t'.match(name), null); - $mol_assert_like('('.match(name), ['(']); - }, - 'unicode only'() { - const { unicode_only, from } = $mol_regexp; - const name = from([ - unicode_only('Script', 'Cyrillic'), - unicode_only('Hex_Digit'), - ]); - $mol_assert_like('FF'.match(name), null); - $mol_assert_like('ФG'.match(name), null); - $mol_assert_like('ФF'.match(name), ['ФF']); - }, - 'generate by optional with inner group'() { - const { begin, end, from } = $mol_regexp; - const animals = from([begin, '#', ['^', { dog: '@' }], end]); - $mol_assert_equal(animals.generate({}), '#'); - $mol_assert_equal(animals.generate({ dog: false }), '#'); - $mol_assert_equal(animals.generate({ dog: true }), '#^@'); - $mol_assert_fail(() => animals.generate({ dog: '$' }), 'Wrong param: dog=$'); - }, - 'generate by optional with inner group with variants'() { - const { begin, end, from } = $mol_regexp; - const animals = from([begin, '#', ['^', { animal: { dog: '@', fox: '&' } }], end]); - $mol_assert_equal(animals.generate({}), '#'); - $mol_assert_equal(animals.generate({ dog: true }), '#^@'); - $mol_assert_equal(animals.generate({ fox: true }), '#^&'); - $mol_assert_fail(() => animals.generate({ dog: '$' }), 'Wrong param: dog=$'); - }, - 'complex example'() { - const { begin, end, char_only, char_range, latin_only, slash_back, repeat_greedy, from, } = $mol_regexp; - const atom_char = char_only(latin_only, "!#$%&'*+/=?^`{|}~-"); - const atom = repeat_greedy(atom_char, 1); - const dot_atom = from([atom, repeat_greedy(['.', atom])]); - const name_letter = char_only(char_range(0x01, 0x08), 0x0b, 0x0c, char_range(0x0e, 0x1f), 0x21, char_range(0x23, 0x5b), char_range(0x5d, 0x7f)); - const quoted_pair = from([ - slash_back, - char_only(char_range(0x01, 0x09), 0x0b, 0x0c, char_range(0x0e, 0x7f)) - ]); - const name = repeat_greedy({ name_letter, quoted_pair }); - const quoted_name = from(['"', { name }, '"']); - const local_part = from({ dot_atom, quoted_name }); - const domain = dot_atom; - const mail = from([begin, local_part, '@', { domain }, end]); - $mol_assert_equal('foo..bar@example.org'.match(mail), null); - $mol_assert_equal('foo..bar"@example.org'.match(mail), null); - $mol_assert_like([...'foo.bar@example.org'.matchAll(mail)][0].groups, { - dot_atom: "foo.bar", - quoted_name: "", - name: "", - name_letter: "", - quoted_pair: "", - domain: "example.org", - }); - $mol_assert_like([...'"foo..bar"@example.org'.matchAll(mail)][0].groups, { - dot_atom: "", - quoted_name: '"foo..bar"', - name: "foo..bar", - name_letter: "r", - quoted_pair: "", - domain: "example.org", - }); - $mol_assert_equal(mail.generate({ dot_atom: 'foo.bar', domain: 'example.org' }), 'foo.bar@example.org'); - $mol_assert_equal(mail.generate({ name: 'foo..bar', domain: 'example.org' }), '"foo..bar"@example.org'); - $mol_assert_fail(() => mail.generate({ dot_atom: 'foo..bar', domain: 'example.org' }), 'Wrong param: dot_atom=foo..bar'); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - $mol_test({ - 'Empty needle'() { - const app = new $mol_dimmer; - app.needle = () => ' '; - app.haystack = () => 'foo bar'; - $mol_assert_like(app.strings(), ['foo bar']); - }, - 'Empty haystack'() { - const app = new $mol_dimmer; - app.needle = () => 'foo bar'; - app.haystack = () => ''; - $mol_assert_like(app.strings(), ['']); - }, - 'Not found'() { - const app = new $mol_dimmer; - app.needle = () => 'foo'; - app.haystack = () => ' bar '; - $mol_assert_like(app.strings(), [' bar ']); - }, - 'One found'() { - const app = new $mol_dimmer; - app.needle = () => 'foo'; - app.haystack = () => ' barfoo '; - $mol_assert_like(app.strings(), [' bar', 'foo', ' ']); - }, - 'Multiple found'() { - const app = new $mol_dimmer; - app.needle = () => 'foo'; - app.haystack = () => ' foobarfoo foo'; - $mol_assert_like(app.strings(), [' ', 'foo', 'bar', 'foo', ' ', 'foo']); - }, - 'Fuzzy search'() { - const app = new $mol_dimmer; - app.needle = () => 'foo bar'; - app.haystack = () => ' barfoo '; - $mol_assert_like(app.strings(), [' ', 'bar', '', 'foo', ' ']); - }, - }); - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - '$mol_syntax2_md_flow'() { - const check = (input, right) => { - const tokens = []; - $mol_syntax2_md_flow.tokenize(input, (...token) => tokens.push(token)); - $mol_assert_equal(tokens, right); - }; - check('Hello,\nWorld..\r\n\r\n\nof Love!', [ - ['block', 'Hello,\n', ['Hello,', '\n'], 0], - ['block', 'World..\r\n\r\n\n', ['World..', '\r\n\r\n\n'], 7], - ['block', 'of Love!', ['of Love!', ''], 19], - ]); - check('# Header1\n\nHello!\n\n## Header2', [ - ['header', '# Header1\n\n', ['#', ' ', 'Header1', '\n\n'], 0], - ['block', 'Hello!\n\n', ['Hello!', '\n\n'], 11], - ['header', '## Header2', ['##', ' ', 'Header2', ''], 19], - ]); - check('```\nstart()\n```\n\n```jam.js\nrestart()\n```\n\nHello!\n\n```\nstop()\n```', [ - ['code', '```\nstart()\n```\n\n', ['```', '', 'start()\n', '```', '\n\n'], 0], - ['code', '```jam.js\nrestart()\n```\n\n', ['```', 'jam.js', 'restart()\n', '```', '\n\n'], 17], - ['block', 'Hello!\n\n', ['Hello!', '\n\n'], 42], - ['code', '```\nstop()\n```', ['```', '', 'stop()\n', '```', ''], 50], - ]); - check('| header1 | header2\n|----|----\n| Cell11 | Cell12\n| Cell21 | Cell22\n\n| Cell11 | Cell12\n| Cell21 | Cell22\n', [ - ['table', '| header1 | header2\n|----|----\n| Cell11 | Cell12\n| Cell21 | Cell22\n\n', ['| header1 | header2\n|----|----\n| Cell11 | Cell12\n| Cell21 | Cell22\n', '\n'], 0], - ['table', '| Cell11 | Cell12\n| Cell21 | Cell22\n', ['| Cell11 | Cell12\n| Cell21 | Cell22\n', ''], 68], - ]); - }, - }); -})($ || ($ = {})); - -; -"use strict"; -var $; -(function ($) { - $mol_test({ - 'null by default'() { - const key = String(Math.random()); - $mol_assert_equal($mol_state_session.value(key), null); - }, - 'storing'() { - const key = String(Math.random()); - $mol_state_session.value(key, '$mol_state_session_test'); - $mol_assert_equal($mol_state_session.value(key), '$mol_state_session_test'); - $mol_state_session.value(key, null); - $mol_assert_equal($mol_state_session.value(key), null); - }, - }); -})($ || ($ = {})); - //# sourceMappingURL=node.test.js.map diff --git a/node.test.js.map b/node.test.js.map index fe178bc..e564857 100644 --- a/node.test.js.map +++ b/node.test.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../mam.ts","../../../../mol/ambient/ambient.ts","../../../../mol/delegate/delegate.ts","../../../../mol/owning/owning.ts","../../../../mol/fail/fail.ts","../../../../mol/fail/hidden/hidden.ts","../../../../mol/func/name/name.ts","../../../../mol/object2/object2.ts","../../../../mol/object/object.ts","../../../../mol/window/window.node.ts","../../../../mol/wire/cursor/cursor.ts","../../../../mol/wire/pub/pub.ts","../../../../mol/wire/wire.ts","../../../../mol/dev/format/format.ts","../../../../mol/wire/pub/sub/sub.ts","../../../../mol/after/tick/tick.ts","../../../../mol/promise/like/like.ts","../../../../mol/wire/fiber/fiber.ts","../../../../mol/guid/guid.ts","../../../../mol/key/key.ts","../../../../mol/after/timeout/timeout.ts","../../../../mol/after/frame/frame.node.ts","../../../../mol/compare/deep/deep.ts","../../../../mol/log3/log3.ts","../../../../mol/span/span.ts","../../../../mol/tree2/to/string/string.ts","../../../../mol/tree2/tree2.ts","../../../../mol/error/syntax/syntax.ts","../../../../mol/tree2/from/string/string.ts","../../../../mol/tree2/from/json/json.ts","../../../../mol/term/color/color.ts","../../../../mol/log3/log3.node.ts","../../../../mol/wire/task/task.ts","../../../../mol/wire/method/method.ts","../../../../mol/fail/catch/catch.ts","../../../../mol/fail/log/log.ts","../../../../mol/wire/atom/atom.ts","../../../../mol/wire/solo/solo.ts","../../../../mol/wire/plex/plex.ts","../../../../mol/mem/mem.ts","../../../../mol/dom/context/context.ts","../../../../node/node.node.ts","../../../../mol/error/mix/mix.ts","../../../../mol/env/env.ts","../../../../mol/env/env.node.ts","../../../../mol/wire/sync/sync.ts","../../../../mol/run/run.node.ts","../../../../mol/exec/exec.node.ts","../../../../mol/dom/context/context.node.ts","../../../../mol/view/selection/selection.ts","../../../../mol/wrapper/wrapper.ts","../../../../mol/memo/memo.ts","../../../../mol/dom/dom.ts","../../../../mol/dom/qname/qname.ts","../../../../mol/wire/probe/probe.ts","../../../../mol/wire/watch/watch.ts","../../../../mol/const/const.ts","../../../../mol/wire/solid/solid.ts","../../../../mol/dom/render/attributes/attributes.ts","../../../../mol/dom/render/events/events.ts","../../../../mol/dom/render/styles/styles.ts","../../../../mol/dom/render/children/children.ts","../../../../mol/dom/render/fields/fields.ts","../../../../mol/wire/async/async.ts","../../../../mol/style/attach/attach.ts","../../../../mol/decor/decor.ts","../../../../mol/style/unit/unit.ts","../../../../mol/style/func/func.ts","../../../../mol/style/prop/prop.ts","../../../../mol/theme/theme.ts","../../../../mol/theme/-css/theme.css.ts","../../../../mol/gap/gap.ts","../../../../mol/gap/-css/gap.css.ts","../../../../mol/view/view/view.ts","../../../../mol/view/view/-css/view.css.ts","../../../../mol/plugin/plugin.ts","../../../../mol/ghost/ghost.view.tree","../../../../mol/ghost/ghost.view.ts","../../../../mol/drop/drop.view.tree","../../../../mol/drop/drop.view.ts","../../../../mol/theme/auto/auto.view.tree","../../../../mol/action/action.ts","../../../../mol/state/arg/arg.node.ts","../../../../mol/media/media.ts","../../../../mol/mem/persist/persist.ts","../../../../mol/mem/cached/cached.ts","../../../../mol/storage/storage.ts","../../../../mol/state/local/local.ts","../../../../mol/lock/lock.ts","../../../../mol/compare/array/array.ts","../../../../mol/charset/decode/decode.ts","../../../../mol/charset/encode/encode.ts","../../../../mol/file/transaction/transaction.ts","../../../../mol/file/transaction/transaction.node.ts","../../../../mol/file/base/base.ts","../../../../mol/file/file.ts","../../../../mol/file/file.node.ts","../../../../mol/state/local/local.node.ts","../../../../mol/lights/lights.ts","../../../../mol/theme/auto/auto.view.ts","../../../../mol/scroll/scroll.view.tree","../../../../mol/dom/listener/listener.ts","../../../../mol/print/print.ts","../../../../mol/style/sheet/sheet.ts","../../../../mol/style/define/define.ts","../../../../mol/scroll/scroll.view.ts","../../../../mol/scroll/scroll.view.css.ts","../../../../mol/book2/book2.view.tree","../../../../mol/layer/layer.ts","../../../../mol/layer/-css/layer.css.ts","../../../../mol/book2/book2.view.ts","../../../../mol/book2/-css/book2.view.css.ts","../../../../mol/link/link.view.tree","../../../../mol/link/link.view.ts","../../../../mol/link/link.view.css.ts","../../../../mol/image/image.view.tree","../../../../mol/image/image.view.ts","../../../../mol/image/-css/image.view.css.ts","../../../../mol/link/iconed/iconed.view.tree","../../../../mol/link/iconed/iconed.view.ts","../../../../mol/link/iconed/-css/iconed.view.css.ts","../../../../mol/speck/speck.view.tree","../../../../mol/speck/-css/speck.view.css.ts","../../../../mol/button/button.view.tree","../../../../mol/keyboard/code/code.ts","../../../../mol/button/button.view.ts","../../../../mol/button/-css/button.view.css.ts","../../../../mol/button/typed/typed.view.tree","../../../../mol/button/typed/-css/typed.view.css.ts","../../../../mol/button/minor/minor.view.tree","../../../../mol/button/minor/-css/minor.view.css.ts","../../../../mol/check/check.view.tree","../../../../mol/maybe/maybe.ts","../../../../mol/check/-css/check.css.ts","../../../../mol/check/check.view.ts","../../../../mol/check/icon/icon.view.tree","../../../../mol/check/icon/-css/icon.view.css.ts","../../../../mol/svg/svg.view.tree","../../../../mol/state/time/time.ts","../../../../mol/svg/svg.view.ts","../../../../mol/svg/root/root.view.tree","../../../../mol/svg/root/-css/root.view.css.ts","../../../../mol/svg/path/path.view.tree","../../../../mol/icon/icon.view.tree","../../../../mol/icon/-css/icon.view.css.ts","../../../../mol/icon/brightness/4/4.view.tree","../../../../mol/locale/locale.ts","../../../../mol/lights/toggle/toggle.view.tree","../../../../localized_string","../../../../mol/lights/toggle/toggle.view.ts","../../../../mol/icon/upload/upload.view.tree","../../../../mol/button/open/open.view.tree","../../../../mol/button/open/open.view.ts","../../../../mol/button/open/-css/open.view.css.ts","../../../../mol/stack/stack.view.tree","../../../../mol/stack/-css/stack.view.css.ts","../../../../mol/syntax2/syntax2.ts","../../../../mol/paragraph/paragraph.view.tree","../../../../mol/paragraph/paragraph.view.ts","../../../../mol/paragraph/-css/paragraph.view.css.ts","../../../../mol/dimmer/dimmer.view.tree","../../../../mol/regexp/regexp.ts","../../../../mol/dimmer/dimmer.view.ts","../../../../mol/dimmer/-css/dimmer.view.css.ts","../../../../mol/text/code/token/token.view.tree","../../../../mol/text/code/token/token.view.css.ts","../../../../mol/text/code/line/line.view.tree","../../../../mol/syntax2/md/md.ts","../../../../mol/text/code/line/line.view.ts","../../../../mol/text/code/line/line.view.css.ts","../../../../mol/list/list.view.tree","../../../../mol/support/css/css.ts","../../../../mol/list/list.view.ts","../../../../mol/list/-css/list.view.css.ts","../../../../mol/blob/blob.ts","../../../../mol/icon/clipboard/clipboard.view.tree","../../../../mol/icon/clipboard/outline/outline.view.tree","../../../../mol/button/copy/copy.view.tree","../../../../mol/html/encode/encode.ts","../../../../mol/button/copy/copy.view.ts","../../../../mol/text/code/code.view.tree","../../../../mol/text/code/code.view.ts","../../../../mol/text/code/code.view.css.ts","../../../../mol/hotkey/hotkey.view.tree","../../../../mol/hotkey/hotkey.view.ts","../../../../mol/string/string.view.tree","../../../../mol/string/string.view.ts","../../../../mol/string/-css/string.view.css.ts","../../../../mol/textarea/textarea.view.tree","../../../../mol/textarea/textarea.view.ts","../../../../mol/textarea/-css/textarea.view.css.ts","../../../../mol/page/page.view.tree","../../../../mol/page/page.view.css.ts","../../../../optimade/cifplayer/lib/three/view/view.view.tree","../../../../optimade/cifplayer/lib/three/view/view.view.css.ts","../../../../mol/icon/eye/eye.view.tree","../../../../mol/icon/eye/check/check.view.tree","../../../../mol/icon/tick/tick.view.tree","../../../../mol/check/box/box.view.tree","../../../../mol/check/box/-css/box.view.css.ts","../../../../mol/pop/pop.view.tree","../../../../mol/pop/pop.view.ts","../../../../mol/pop/-css/pop.view.css.ts","../../../../mol/pick/pick.view.tree","../../../../mol/pick/pick.view.ts","../../../../mol/pick/-css/pick.view.css.ts","../../../../mol/icon/minus/minus.view.tree","../../../../mol/icon/plus/plus.view.tree","../../../../mol/number/number.view.tree","../../../../mol/number/-css/number.css.ts","../../../../mol/number/number.view.ts","../../../../mol/icon/image/image.view.tree","../../../../mol/icon/image/filter/filter.view.tree","../../../../mol/icon/image/filter/center/focus/focus.view.tree","../../../../mol/icon/magnify/magnify.view.tree","../../../../mol/icon/magnify/plus/plus.view.tree","../../../../mol/icon/magnify/plus/outline/outline.view.tree","../../../../mol/icon/magnify/minus/minus.view.tree","../../../../mol/icon/magnify/minus/outline/outline.view.tree","../../../../mol/check/list/list.view.tree","../../../../mol/check/list/list.view.ts","../../../../mol/check/list/-css/list.view.css.ts","../../../../mol/switch/switch.view.tree","../../../../mol/state/session/session.ts","../../../../mol/switch/switch.view.ts","../../../../mol/card/card.view.tree","../../../../mol/card/card.view.ts","../../../../mol/card/-css/card.view.css.ts","../../../../optimade/cifplayer/player/player.view.tree","../../../../optimade/cifplayer/player/-css/player.view.css.ts","../../../../optimade/cifplayer/player/player.view.css.ts","../../../../mol/float/float.view.tree","../../../../mol/float/-css/float.view.css.ts","../../../../mol/icon/chevron/chevron.view.tree","../../../../mol/check/expand/expand.view.tree","../../../../mol/check/expand/expand.view.ts","../../../../mol/check/expand/-css/expand.view.css.ts","../../../../mol/grid/grid.view.tree","../../../../mol/grid/grid.view.ts","../../../../mol/grid/-css/grid.view.css.ts","../../../../mol/embed/native/native.view.tree","../../../../mol/promise/promise/promise.ts","../../../../mol/wait/timeout/timeout.ts","../../../../mol/embed/native/native.view.ts","../../../../mol/embed/native/-css/native.view.css.ts","../../../../mol/icon/youtube/youtube.view.tree","../../../../mol/frame/frame.view.tree","../../../../mol/frame/frame.view.ts","../../../../mol/frame/frame.view.css.ts","../../../../mol/embed/service/service.view.tree","../../../../mol/embed/service/service.view.ts","../../../../mol/embed/service/-css/service.view.css.ts","../../../../mol/embed/youtube/youtube.view.tree","../../../../mol/embed/youtube/youtube.view.ts","../../../../mol/embed/rutube/rutube.view.tree","../../../../mol/embed/rutube/rutube.view.ts","../../../../mol/embed/any/any.view.tree","../../../../mol/embed/any/any.view.ts","../../../../mol/expander/expander.view.tree","../../../../mol/expander/expander.view.ts","../../../../mol/expander/-css/expander.view.css.ts","../../../../mol/text/text/text.view.tree","../../../../mol/text/text/text.view.ts","../../../../mol/text/text/-css/text.view.css.ts","../../../../optimade/cifplayer/app/app.view.tree","../../../../mol/text/list/list.view.tree","../../../../mol/text/list/-css/list.view.css.ts","../../../../optimade/cifplayer/app/app.view.css.ts","../../../../mol/test/test.test.ts","../../../../mol/test/test.node.test.ts","../../../../mol/fail/log/log.test.ts","../../../../mol/func/name/name.test.ts","../../../../mol/dom/serialize/serialize.ts","../../../../mol/jsx/jsx.ts","../../../../mol/jsx/jsx.test.tsx","../../../../mol/range2/range2.ts","../../../../mol/range2/range2.test.ts","../../../../mol/compare/deep/deep.test.tsx","../../../../mol/assert/assert.ts","../../../../mol/assert/assert.test.ts","../../../../mol/log3/log3.test.ts","../../../../mol/delegate/delegate.test.ts","../../../../mol/span/span.test.ts","../../../../mol/tree2/tree2.test.ts","../../../../mol/tree2/from/string/string.test.ts","../../../../mol/tree2/from/json/json.test.ts","../../../../mol/object/object.test.ts","../../../../mol/error/mix/mix.test.ts","../../../../mol/wire/pub/sub/sub.test.ts","../../../../mol/after/mock/mock.test.ts","../../../../mol/after/tick/tick.test.ts","../../../../mol/wire/fiber/fiber.test.ts","../../../../mol/wire/async/async.test.ts","../../../../mol/wire/sync/sync.test.ts","../../../../mol/after/timeout/timeout.test.ts","../../../../mol/after/work/work.ts","../../../../mol/after/work/work.test.ts","../../../../mol/wait/rest/rest.ts","../../../../mol/wait/rest/rest.test.ts","../../../../mol/wait/timeout/timeout.test.ts","../../../../mol/run/run.node.test.ts","../../../../mol/wire/solo/solo.test.ts","../../../../mol/wire/plex/plex.test.ts","../../../../mol/wire/probe/probe.test.ts","../../../../mol/wrapper/wrapper.test.ts","../../../../mol/memo/memo.test.ts","../../../../mol/key/key.test.tsx","../../../../mol/after/frame/frame.test.ts","../../../../mol/wire/log/log.ts","../../../../mol/wire/atom/atom.test.ts","../../../../mol/const/const.test.ts","../../../../mol/view/view/view.test.ts","../../../../mol/state/arg/arg.node.test.ts","../../../../mol/compare/array/array.test.ts","../../../../mol/charset/decode/decode.test.ts","../../../../mol/charset/encode/encode.test.ts","../../../../mol/state/local/local.test.ts","../../../../mol/state/local/local.mock.test.ts","../../../../mol/style/sheet/sheet.test.ts","../../../../mol/button/button.test.ts","../../../../mol/maybe/maybe.test.ts","../../../../mol/locale/locale.test.ts","../../../../mol/regexp/regexp.test.ts","../../../../mol/dimmer/dimmer.test.ts","../../../../mol/syntax2/md/md.test.ts","../../../../mol/state/session/session.test.ts"],"names":[],"mappings":"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","sourcesContent":["Error.stackTraceLimit = 50;\n\ndeclare let _$_: { new(): {} } & typeof globalThis\ndeclare class $ extends _$_ {}\n\nnamespace $ {\n\texport type $ = typeof $$\n\texport declare class $$ extends $ {}\n\tnamespace $$ {\n\t\texport type $$ = $\n\t}\n}\n\nmodule.exports = $\n","namespace $ {\n\n\texport const $mol_ambient_ref : unique symbol = Symbol( '$mol_ambient_ref' )\n\n\t/** @deprecated use $ instead */\n\texport type $mol_ambient_context = $\n\n\texport function $mol_ambient( this : $ | void , overrides : Partial< $ > ) : $ {\n\t\treturn Object.setPrototypeOf( overrides , this || $ )\n\t}\n\n}\n","namespace $ {\n\n\tconst instances = new WeakSet< any >()\n\n\t/**\n\t * Proxy that delegates all to lazy returned target.\n\t * \n\t * \t$mol_delegate( Array.prototype , ()=> fetch_array() )\n\t */\n export function $mol_delegate< Value extends object >(\n\t\tproto : Value ,\n\t\ttarget : ()=> Value ,\n\t) {\n\n\t\tconst proxy = new Proxy( proto , {\n\n\t\t\tget: ( _ , field )=> {\n\t\t\t\tconst obj = target()\n\t\t\t\tlet val = Reflect.get( obj , field )\n\t\t\t\tif( typeof val === 'function' ) {\n\t\t\t\t\tval = val.bind( obj )\n\t\t\t\t} \n\t\t\t\treturn val\n\t\t\t},\n\t\t\thas: ( _ , field )=> Reflect.has( target(), field ),\n\t\t\tset: ( _ , field , value )=> Reflect.set( target() , field , value ),\n\t\t\t\n\t\t\tgetOwnPropertyDescriptor: ( _ , field )=> Reflect.getOwnPropertyDescriptor( target() , field ),\n\t\t\townKeys: ()=> Reflect.ownKeys( target() ),\n\t\t\t\n\t\t\tgetPrototypeOf: ()=> Reflect.getPrototypeOf( target() ),\n\t\t\tsetPrototypeOf: ( _ , donor )=> Reflect.setPrototypeOf( target() , donor ),\n\t\t\t\n\t\t\tisExtensible: ()=> Reflect.isExtensible( target() ),\n\t\t\tpreventExtensions: ()=> Reflect.preventExtensions( target() ),\n\t\t\t\n\t\t\tapply: ( _ , self , args )=> Reflect.apply( target() as Function , self , args ),\n\t\t\tconstruct: ( _ , args , retarget )=> Reflect.construct( target() as Function , args , retarget ),\n\t\t\t\n\t\t\tdefineProperty: ( _ , field , descr )=> Reflect.defineProperty( target() , field , descr ),\n\t\t\tdeleteProperty: ( _ , field )=> Reflect.deleteProperty( target() , field ),\n\n\t\t} )\n\n\t\tinstances.add( proxy )\n\n\t\treturn proxy\n\n\t}\n\n\tReflect.defineProperty(\n\t\t$mol_delegate ,\n\t\tSymbol.hasInstance ,\n\t\t{\n\t\t\tvalue : ( obj : object )=> instances.has( obj ),\n\t\t},\n\t)\n\n}\n","namespace $ {\n\n\texport const $mol_owning_map = new WeakMap< any , any >()\n\n\texport function $mol_owning_allow< Having >(\n\t\thaving : Having ,\n\t) : having is Having & {\n\t\tdestructor() : void\n\t} {\n\t\ttry {\n\t\t\tif( !having ) return false\n\t\t\tif( typeof having !== 'object' && typeof having !== 'function' ) return false\n\t\t\tif( having instanceof $mol_delegate ) return false\n\t\t\tif( typeof (having as any)['destructor'] !== 'function' ) return false\n\t\t\treturn true\n\t\t} catch {\n\t\t\treturn false\n\t\t}\n\t}\n\n\texport function $mol_owning_get< Having , Owner extends object >( having : Having , Owner? : { new() : Owner } ) : Owner | null {\n\t\n\t\tif( !$mol_owning_allow( having ) ) return null\n\n\t\twhile( true ) {\n\n\t\t\tconst owner = $mol_owning_map.get( having )\n\t\t\tif( !owner ) return owner\n\t\t\tif( !Owner ) return owner\n\t\t\t\n\t\t\tif( owner instanceof Owner ) return owner\n\n\t\t\thaving = owner\n\t\t}\n\n\t}\n\t\n\texport function $mol_owning_check< Owner , Having >(\n\t\towner : Owner ,\n\t\thaving : Having ,\n\t) : having is Having & { destructor() : void } {\n\t\tif( !$mol_owning_allow( having ) ) return false\n\t\tif( $mol_owning_map.get( having ) !== owner ) return false\n\t\treturn true\n\t}\n\t\n\texport function $mol_owning_catch< Owner , Having >(\n\t\towner : Owner ,\n\t\thaving : Having ,\n\t) {\n\t\tif( !$mol_owning_allow( having ) ) return false\n\t\tif( $mol_owning_map.get( having ) ) return false\n\n\t\t$mol_owning_map.set( having , owner )\n\t\treturn true\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_fail( error : any ) : never {\n\t\tthrow error\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_fail_hidden( error : any ) : never {\n\t\tthrow error /// Use 'Never Pause Here' breakpoint in DevTools or simply blackbox this script\n\t}\n\n}\n","namespace $ {\n\t\n\tconst named = new WeakSet< Function >()\n\t\n\texport function $mol_func_name( this : $ , func : Function ) : string {\n\t\t\n\t\tlet name = func.name\n\t\tif( name?.length > 1 ) return name\n\t\tif( named.has( func ) ) return name\n\n\t\tfor( let key in this ) {\n\t\t\ttry {\n\t\t\t\tif( (this as any)[ key ] !== func ) continue\n\t\t\t\tname = key\n\t\t\t\tObject.defineProperty( func , 'name' , { value : name } )\n\t\t\t\tbreak\n\t\t\t} catch {}\n\t\t}\n\n\t\tnamed.add( func )\n\t\treturn name\n\t\t\n\t}\n\n\texport function $mol_func_name_from< Target extends Function >( target : Target , source : Function ) {\n\t\tObject.defineProperty( target , 'name' , { value : source.name } )\n\t\treturn target\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_object2 {\n\t\t\n\t\tstatic $ = $ as any as $\n\t\t\n\t\t[Symbol.toStringTag]!: string\n\n\t\t[ $mol_ambient_ref ] = null as any as $\n\t\tget $() {\n\t\t\tif( this[ $mol_ambient_ref ] ) return this[ $mol_ambient_ref ]\n\t\t\tconst owner = $mol_owning_get( this ) as any\n\t\t\treturn this[ $mol_ambient_ref ] = owner?.$ || $mol_object2.$ as $\n\t\t}\n\t\tset $( next : $ ) {\n\t\t\tif( this[ $mol_ambient_ref ] ) $mol_fail_hidden( new Error( 'Context already defined' ) )\n\t\t\tthis[ $mol_ambient_ref ] = next\n\t\t}\n\n\t\tpublic static create< Instance >(\n\t\t\tthis : new( init? : ( instance : any )=> void )=> Instance ,\n\t\t\tinit? : ( instance : $mol_type_writable )=> void\n\t\t) : Instance {\n\t\t\tconst obj = new this\n\t\t\tif( init ) init( obj )\n\t\t\treturn obj\n\t\t}\n\t\t\n\t\tstatic [ Symbol.toPrimitive ]() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\tstatic toString() {\n\t\t\treturn ( this as any )[ Symbol.toStringTag ] || this.$.$mol_func_name( this )\n\t\t}\n\t\t\n\t\tstatic toJSON() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\tdestructor() { }\n\t\tstatic destructor() { }\n\t\t\n\t\t//[ Symbol.toPrimitive ]( hint: string ) {\n\t\t//\treturn hint === 'number' ? this.valueOf() : this.toString()\n\t\t//}\n\t\t\n\t\ttoString(): string {\n\t\t\treturn this[ Symbol.toStringTag ] || this.constructor.name + '<>'\n\t\t}\n\t\t\n\t\t// toJSON(): any {\n\t\t// \treturn this.toString()\n\t\t// }\n\n\t}\n}\n","namespace $ {\n\n\texport namespace $$ { let $ }\n\n\texport const $mol_object_field = Symbol( '$mol_object_field' )\n\t\n\texport class $mol_object extends $mol_object2 {\n\t\t\n\t\tpublic static make< This extends typeof $mol_object >(\n\t\t\tthis: This,\n\t\t\tconfig: Partial< InstanceType< This > >,\n\t\t) {\n\t\t\treturn super.create( obj => {\n\t\t\t\tfor( let key in config ) ( obj as any )[ key ] = config[ key ]!\n\t\t\t} ) as InstanceType< This >\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\tstatic size() {\n\t\t\treturn {\n\t\t\t\twidth: 1024,\n\t\t\t\theight: 768,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/** Special status statuses. */\n\texport enum $mol_wire_cursor {\n\t\t\n\t\t/** Update required. */\n\t\tstale = -1,\n\t\t\n\t\t/** Some of (transitive) pub update required. */\n\t\tdoubt = -2,\n\t\t\n\t\t/** Actual state but may be dropped. */\n\t\tfresh = -3,\n\t\t\n\t\t/** State will never be changed. */\n\t\tfinal = -4,\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/**\n\t * Collects subscribers in compact array. 28B\n\t */\n\texport class $mol_wire_pub extends Object {\n\t\t\n\t\tdata = [] as unknown[]\n\t\t\n\t\t// Derived objects should be Arrays.\n\t\tstatic get [ Symbol.species ]() {\n\t\t\treturn Array\n\t\t}\n\t\t\n\t\t/**\n\t\t * Index of first subscriber.\n\t\t */\n\t\tprotected sub_from = 0 // 4B\n\t\t\n\t\t/**\n\t\t * All current subscribers.\n\t\t */\n\t\tget sub_list() {\n\t\t\tconst res = [] as $mol_wire_sub[]\n\t\t\tfor( let i = this.sub_from; i < this.data.length; i += 2 ) {\n\t\t\t\tres.push( this.data[i] as $mol_wire_sub )\n\t\t\t}\n\t\t\treturn res as readonly $mol_wire_sub[]\n\t\t}\n\t\t\n\t\t/**\n\t\t * Has any subscribers or not.\n\t\t */\n\t\tget sub_empty() {\n\t\t\treturn this.sub_from === this.data.length\n\t\t}\n\t\t\n\t\t/**\n\t\t * Subscribe subscriber to this publisher events and return position of subscriber that required to unsubscribe.\n\t\t */\n\t\tsub_on( sub: $mol_wire_pub, pub_pos: number ) {\n\t\t\tconst pos = this.data.length\n\t\t\tthis.data.push( sub, pub_pos )\n\t\t\treturn pos\n\t\t}\n\t\t\n\t\t/**\n\t\t * Unsubscribe subscriber from this publisher events by subscriber position provided by `on(pub)`.\n\t\t */\n\t\tsub_off( sub_pos: number ) {\n\t\t\t\n\t\t\tif(!( sub_pos < this.data.length )) {\n\t\t\t\t$mol_fail( new Error( `Wrong pos ${ sub_pos }` ) )\n\t\t\t}\n\t\t\t\n\t\t\tconst end = this.data.length - 2\n\t\t\tif( sub_pos !== end ) {\n\t\t\t\tthis.peer_move( end, sub_pos )\n\t\t\t}\n\t\t\t\n\t\t\tthis.data.pop()\n\t\t\tthis.data.pop()\n\t\t\t\n\t\t\tif( this.data.length === this.sub_from ) this.reap()\n\t\t\t\n\t\t}\n\t\t\n\t\t/**\n\t\t * Called when last sub was unsubscribed.\n\t\t **/\n\t\treap() { }\n\t\t\n\t\t/**\n\t\t * Autowire this publisher with current subscriber.\n\t\t **/\n\t\tpromote() {\n\t\t\t$mol_wire_auto()?.track_next( this )\n\t\t}\n\t\t\n\t\t/**\n\t\t * Enforce actualization. Should not throw errors.\n\t\t */\n\t\tfresh() {}\n\t\t\n\t\t/**\n\t\t * Allow to put data to caches in the subtree.\n\t\t */\n\t\tcomplete() {}\n\t\t\n\t\tget incompleted() {\n\t\t\treturn false\n\t\t}\n\t\t\n\t\t/**\n\t\t * Notify subscribers about self changes.\n\t\t */\n\t\temit( quant = $mol_wire_cursor.stale ) {\n\t\t\tfor( let i = this.sub_from; i < this.data.length; i += 2 ) {\n\t\t\t\t;( this.data[i] as $mol_wire_sub ).absorb( quant )\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Moves peer from one position to another. Doesn't clear data at old position!\n\t\t */\n\t\tpeer_move( from_pos: number, to_pos: number ) {\n\t\t\t\n\t\t\tconst peer = this.data[ from_pos ] as $mol_wire_pub\n\t\t\tconst self_pos = this.data[ from_pos + 1 ] as number\n\t\t\t\n\t\t\tthis.data[ to_pos ] = peer\n\t\t\tthis.data[ to_pos + 1 ] = self_pos\n\t\t\t\n\t\t\tpeer.peer_repos( self_pos, to_pos )\n\t\t}\n\t\t\n\t\t/**\n\t\t * Updates self position in the peer.\n\t\t */\n\t\tpeer_repos( peer_pos: number, self_pos: number ) {\n\t\t\tthis.data[ peer_pos + 1 ] = self_pos\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport let $mol_wire_auto_sub: $mol_wire_sub | null = null\n\t\n\t/**\n\t * When fulfilled, all publishers are promoted to this subscriber on access to its.\n\t */\n\texport function $mol_wire_auto( next = $mol_wire_auto_sub ) {\n\t\treturn $mol_wire_auto_sub = next\n\t}\n\t\n\t/**\n\t * Affection queue. Used to prevent accidental stack overflow on emit.\n\t */\n\texport const $mol_wire_affected = [] as ( $mol_wire_sub | number )[]\n\t\n}\n","namespace $ {\n\n\t// https://docs.google.com/document/d/1FTascZXT9cxfetuPRT2eXPQKXui4nWFivUnS_335T3U/preview#\n\t($ as any)['devtoolsFormatters'] ||= []\n\n\texport function $mol_dev_format_register( config : {\n\t\theader : ( val : any , config : any )=> any\n\t\thasBody : ( val : any , config : any )=> false\n\t} | {\n\t\theader : ( val : any , config : any )=> any\n\t\thasBody : ( val : any , config : any )=> boolean\n\t\tbody : ( val : any , config : any )=> any\n\t} ) {\n\t\t($ as any)['devtoolsFormatters'].push( config )\n\t}\n\n\texport const $mol_dev_format_head = Symbol( '$mol_dev_format_head' )\n\texport const $mol_dev_format_body = Symbol( '$mol_dev_format_body' )\n\n\t$mol_dev_format_register({\n\n\t\theader : ( val : any , config = false ) => {\n\t\t\t\n\t\t\tif( config ) return null\n\n\t\t\tif( !val ) return null\n\t\t\t\n\t\t\tif( $mol_dev_format_head in val ) {\n\t\t\t\ttry {\n\t\t\t\t\treturn val[ $mol_dev_format_head ]()\n\t\t\t\t} catch( error ) {\n\t\t\t\t\treturn $mol_dev_format_accent( $mol_dev_format_native( val ), '💨', $mol_dev_format_native( error ), '' )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif( typeof val === 'function' ) {\n\t\t\t\treturn $mol_dev_format_native( val )\n\t\t\t}\n\t\t\t\n\t\t\tif( Symbol.toStringTag in val ) {\n\t\t\t\treturn $mol_dev_format_native( val )\n\t\t\t}\n\t\t\t\n\t\t\treturn null\n\t\t\t\n\t\t} ,\n\t\t\n\t\thasBody : val => val[ $mol_dev_format_body ] ,\n\n\t\tbody : val => val[ $mol_dev_format_body ]() ,\n\n\t})\n\n\texport function $mol_dev_format_native( obj : any ) {\n\t\t\n\t\tif( typeof obj === 'undefined' ) return $mol_dev_format_shade( 'undefined' )\n\t\t\n\t\t// if( ![ 'object', 'function', 'symbol' ].includes( typeof obj ) ) return obj\n\n\t\treturn [\n\t\t\t'object' ,\n\t\t\t{\n\t\t\t\tobject : obj ,\n\t\t\t\tconfig : true ,\n\t\t\t} ,\n\t\t]\n\n\t}\n\n\texport function $mol_dev_format_auto( obj : any ) {\n\t\t\n\t\tif( obj == null ) return $mol_dev_format_shade( String( obj ) )\n\n\t\treturn [\n\t\t\t'object' ,\n\t\t\t{\n\t\t\t\tobject : obj ,\n\t\t\t\tconfig : false ,\n\t\t\t} ,\n\t\t]\n\n\t}\n\n\texport function $mol_dev_format_element( element : string , style : object , ...content : any[] ) {\n\t\t\t\n\t\tconst styles = [] as string[]\n\t\t\n\t\tfor( let key in style ) styles.push( `${ key } : ${ (style as any)[key] }` )\n\t\t\n\t\treturn [\n\t\t\telement ,\n\t\t\t{\n\t\t\t\tstyle : styles.join( ' ; ' ) ,\n\t\t\t} ,\n\t\t\t... content ,\n\t\t]\n\n\t}\n\n\texport function $mol_dev_format_span( style : object , ...content : any[] ) {\n\t\treturn $mol_dev_format_element(\n\t\t\t'span' ,\n\t\t\t{\n\t\t\t\t// 'vertical-align' : '8%',\n\t\t\t\t... style ,\n\t\t\t} ,\n\t\t\t... content ,\n\t\t)\n\t}\n\n\texport let $mol_dev_format_div = $mol_dev_format_element.bind( null , 'div' )\n\texport let $mol_dev_format_ol = $mol_dev_format_element.bind( null , 'ol' )\n\texport let $mol_dev_format_li = $mol_dev_format_element.bind( null , 'li' )\n\texport let $mol_dev_format_table = $mol_dev_format_element.bind( null , 'table' )\n\texport let $mol_dev_format_tr = $mol_dev_format_element.bind( null , 'tr' )\n\texport let $mol_dev_format_td = $mol_dev_format_element.bind( null , 'td' )\n\n\texport let $mol_dev_format_accent = $mol_dev_format_span.bind( null , {\n\t\t'color' : 'magenta' ,\n\t} )\n\n\texport let $mol_dev_format_strong = $mol_dev_format_span.bind( null , {\n\t\t'font-weight' : 'bold' ,\n\t} )\n\n\texport let $mol_dev_format_string = $mol_dev_format_span.bind( null , {\n\t\t'color' : 'green',\n\t} )\n\n\texport let $mol_dev_format_shade = $mol_dev_format_span.bind( null , {\n\t\t'color' : 'gray',\n\t} )\n\n\texport let $mol_dev_format_indent = $mol_dev_format_div.bind( null , {\n\t\t'margin-left': '13px'\n\t} )\n\n}\n","namespace $ {\n\t\n\t/**\n\t * Publisher that can auto collect other publishers. 32B\n\t * \n\t * \tP1 P2 P3 P4 S1 S2 S3\n\t * \t^ ^\n\t * \tpubs_from subs_from\n\t */\n\texport class $mol_wire_pub_sub extends $mol_wire_pub implements $mol_wire_sub {\n\t\t\n\t\tprotected pub_from = 0 // 4B\n\t\tprotected cursor = $mol_wire_cursor.stale // 4B\n\t\t\n\t\tget temp() {\n\t\t\treturn false\n\t\t}\n\t\t\n\t\tget pub_list() {\n\t\t\tconst res = [] as $mol_wire_pub[]\n\t\t\tconst max = this.cursor >=0 ? this.cursor : this.sub_from\n\t\t\tfor( let i = this.pub_from; i < max; i += 2 ) {\n\t\t\t\tif( this.data[i] ) res.push( this.data[i] as $mol_wire_pub )\n\t\t\t}\n\t\t\treturn res\n\t\t}\n\t\t\n\t\ttrack_on() {\n\t\t\tthis.cursor = this.pub_from\n\t\t\tconst sub = $mol_wire_auto()\n\t\t\t$mol_wire_auto( this )\n\t\t\treturn sub\n\t\t}\n\t\t\n\t\tpromote() {\n\t\t\t\n\t\t\tif( this.cursor >= this.pub_from ) {\n\t\t\t\t$mol_fail( new Error( 'Circular subscription' ) )\n\t\t\t}\n\t\t\t\n\t\t\tsuper.promote()\n\t\t}\n\t\t\n\t\ttrack_next( pub?: $mol_wire_pub ): $mol_wire_pub | null {\n\t\t\t\n\t\t\tif( this.cursor < 0 ) $mol_fail( new Error( 'Promo to non begun sub' ) )\n\t\t\t\n\t\t\tif( this.cursor < this.sub_from ) {\n\t\t\t\n \t\t\t\tconst next = this.data[ this.cursor ] as $mol_wire_pub | undefined\n\t\t\t\tif( pub === undefined ) return next ?? null\n\t\t\t\t\n\t\t\t\tif( next === pub ) {\n\t\t\t\t\tthis.cursor += 2\n\t\t\t\t\treturn next\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( next ) {\n\t\t\t\t\t\n\t\t\t\t\tif( this.sub_from < this.data.length ) {\n\t\t\t\t\t\tthis.peer_move( this.sub_from, this.data.length )\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.peer_move( this.cursor, this.sub_from )\n\t\t\t\t\tthis.sub_from += 2\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tif( pub === undefined ) return null\n\t\t\t\t\n\t\t\t\tif( this.sub_from < this.data.length ) {\n\t\t\t\t\tthis.peer_move( this.sub_from, this.data.length )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.sub_from += 2\n\t\t\t\t\n\t\t\t}\t\t\t\n\t\t\t\n\t\t\tthis.data[ this.cursor ] = pub\n\t\t\tthis.data[ this.cursor + 1 ] = pub.sub_on( this, this.cursor )\n\t\t\t\n\t\t\tthis.cursor += 2\n\t\t\t\n\t\t\treturn pub\n\t\t}\n\t\t\n\t\ttrack_off( sub: $mol_wire_sub | null ) {\n\t\t\t\n\t\t\t$mol_wire_auto( sub )\n\t\t\t\n\t\t\tif( this.cursor < 0 ) {\n\t\t\t\t$mol_fail( new Error( 'End of non begun sub' ) )\n\t\t\t}\n\t\t\t\n\t\t\tfor(\n\t\t\t\tlet cursor = this.pub_from;\n\t\t\t\tcursor < this.cursor;\n\t\t\t\tcursor += 2\n\t\t\t) {\n\t\t\t\tconst pub = this.data[ cursor ] as $mol_wire_pub\n\t\t\t\tpub.fresh()\n\t\t\t}\n\t\t\t\n\t\t\tthis.cursor = $mol_wire_cursor.fresh\n\t\t\t\n\t\t}\n\t\t\n\t\tpub_off( sub_pos: number ) {\n\t\t\tthis.data[ sub_pos ] = undefined as any\n\t\t\tthis.data[ sub_pos + 1 ] = undefined as any \n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\t\n\t\t\tfor(\n\t\t\t\tlet cursor = this.data.length - 2;\n\t\t\t\tcursor >= this.sub_from;\n\t\t\t\tcursor -= 2\n\t\t\t) {\n\t\t\t\tconst sub = this.data[ cursor ] as $mol_wire_sub\n\t\t\t\tconst pos = this.data[ cursor + 1 ] as number\n\t\t\t\tsub.pub_off( pos )\n\t\t\t\tthis.data.pop()\n\t\t\t\tthis.data.pop()\n\t\t\t}\n\t\t\t\n\t\t\tthis.cursor = this.pub_from\n\t\t\tthis.track_cut()\n\t\t\tthis.cursor = $mol_wire_cursor.final\n\t\t\t\n\t\t}\n\t\t\n\t\ttrack_cut() {\n\t\t\t\n\t\t\tif( this.cursor < this.pub_from ) {\n\t\t\t\t$mol_fail( new Error( 'Cut of non begun sub' ) )\n\t\t\t}\n\t\t\t\n\t\t\tlet tail = 0\n\t\t\t\n\t\t\tfor(\n\t\t\t\tlet cursor = this.cursor;\n\t\t\t\tcursor < this.sub_from;\n\t\t\t\tcursor += 2\n\t\t\t) {\n\t\t\t\t\n\t\t\t\tconst pub = this.data[ cursor ] as $mol_wire_pub | undefined\n\t\t\t\tpub?.sub_off( this.data[ cursor + 1 ] as number )\n\t\t\t\t\n\t\t\t\tif( this.sub_from < this.data.length ) {\n\t\t\t\t\tthis.peer_move( this.data.length - 2, cursor )\n\t\t\t\t\tthis.data.pop()\n\t\t\t\t\tthis.data.pop()\n\t\t\t\t} else {\n\t\t\t\t\t++ tail\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tfor(; tail; -- tail ) {\n\t\t\t\tthis.data.pop()\n\t\t\t\tthis.data.pop()\n\t\t\t}\n\t\t\t\n\t\t\tthis.sub_from = this.cursor\n\t\t\t\n\t\t}\n\t\t\n\t\tcomplete() { }\n\t\t\n\t\tcomplete_pubs() {\n\t\t\t\n\t\t\tconst limit = this.cursor < 0 ? this.sub_from : this.cursor \n\t\t\t\n\t\t\tfor(\n\t\t\t\tlet cursor = this.pub_from;\n\t\t\t\tcursor < limit;\n\t\t\t\tcursor += 2\n\t\t\t) {\n\t\t\t\tconst pub = this.data[ cursor ] as $mol_wire_pub\n\t\t\t\tif( pub?.incompleted ) return \n\t\t\t}\n\t\t\t\n\t\t\tfor(\n\t\t\t\tlet cursor = this.pub_from;\n\t\t\t\tcursor < limit;\n\t\t\t\tcursor += 2\n\t\t\t) {\n\t\t\t\tconst pub = this.data[ cursor ] as $mol_wire_pub\n\t\t\t\tpub?.complete()\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tabsorb( quant = $mol_wire_cursor.stale ) {\n\t\t\t\n\t\t\tif( this.cursor === $mol_wire_cursor.final ) return\n\t\t\tif( this.cursor >= quant ) return\n\t\t\t\n\t\t\tthis.cursor = quant\n\t\t\tthis.emit( $mol_wire_cursor.doubt )\n\t\t\t\n\t\t}\n\t\t\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_native( this )\n\t\t}\n\t\t\n\t\t/**\n\t\t * Is subscribed to any publisher or not.\n\t\t */\n\t\tget pub_empty() {\n\t\t\treturn this.sub_from === this.pub_from\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\texport class $mol_after_tick extends $mol_object2 {\n\n\t\tstatic promise = null as Promise | null\n\t\tcancelled = false\n\n\t\tconstructor(\n\t\t\tpublic task : ()=> void ,\n\t\t) {\n\t\t\tsuper()\n\t\t\t\n\t\t\tif( !$mol_after_tick.promise ) $mol_after_tick.promise = Promise.resolve().then( ()=> {\n\t\t\t\t$mol_after_tick.promise = null\n\t\t\t} )\n\t\t\t\n\t\t\t$mol_after_tick.promise.then( ()=> {\n\t\t\t\tif( this.cancelled ) return\n\t\t\t\ttask()\n\t\t\t} )\n\t\t\t\n\t\t}\n\n\t\tdestructor() {\n\t\t\tthis.cancelled = true\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_promise_like( val: any ): val is Promise {\n\t\ttry {\n\t\t\treturn val && typeof val === 'object' && 'then' in val && typeof val.then === 'function'\n\t\t} catch {\n\t\t\treturn false\n\t\t}\n\t}\n\n}\n","namespace $ {\n\t\n\tconst wrappers = new WeakMap< Promise< unknown >, Promise< any > >()\n\t\n\t/**\n\t * Suspendable task with support both sync/async api.\n\t * \n\t * \tA1 A2 A3 A4 P1 P2 P3 P4 S1 S2 S3\n\t * \t^ ^ ^\n\t * \targs_from pubs_from subs_from\n\t **/\n\texport abstract class $mol_wire_fiber<\n\t\tHost,\n\t\tArgs extends readonly unknown[],\n\t\tResult,\n\t> extends $mol_wire_pub_sub {\n\t\n\t\tstatic warm = true\n\t\t\n\t\tstatic planning = new Set< $mol_wire_fiber< any, any, any > >()\n\t\tstatic reaping = new Set< $mol_wire_fiber< any, any, any > >()\n\t\t\n\t\tstatic plan_task: $mol_after_tick | null = null\n\t\tstatic plan() {\n\t\t\t\n\t\t\tif( this.plan_task ) return\n\t\t\t\n\t\t\tthis.plan_task = new $mol_after_tick( ()=> {\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tthis.sync()\n\t\t\t\t} finally {\n\t\t\t\t\t$mol_wire_fiber.plan_task = null\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t\n\t\t}\n\t\t\n\t\tstatic sync() {\n\t\t\t\n\t\t\t// Sync whole fiber graph\n\t\t\twhile( this.planning.size ) {\n\t\t\t\tfor( const fiber of this.planning ) {\n\t\t\t\t\tthis.planning.delete( fiber )\n\t\t\t\t\tif( fiber.cursor >= 0 ) continue\n\t\t\t\t\tif( fiber.cursor === $mol_wire_cursor.final ) continue\n\t\t\t\t\tfiber.fresh()\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Collect garbage\n\t\t\twhile( this.reaping.size ) {\n\t\t\t\t\n\t\t\t\tconst fibers = this.reaping\n\t\t\t\tthis.reaping = new Set\n\t\t\t\t\n\t\t\t\tfor( const fiber of fibers ) {\n\t\t\t\t\tif( !fiber.sub_empty ) continue\n\t\t\t\t\tfiber.destructor()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\t[Symbol.toStringTag]!: string\n\n\t\tpublic cache: Result | Error | Promise< Result | Error > = undefined as any\n\t\t\n\t\tget args() {\n\t\t\treturn this.data.slice( 0 , this.pub_from ) as any as Args\n\t\t}\n\t\t\n\t\tresult() {\n\t\t\tif( $mol_promise_like( this.cache ) ) return\n\t\t\tif( this.cache instanceof Error ) return\n\t\t\treturn this.cache\n\t\t}\n\t\t\n\t\tget incompleted() {\n\t\t\treturn $mol_promise_like( this.cache )\n\t\t}\n\t\t\n\t\tfield() {\n\t\t\treturn this.task.name + '<>'\n\t\t}\n\t\t\n\t\tconstructor(\n\t\t\tid: string,\n\t\t\treadonly task: ( this : Host , ... args : Args )=> Result,\n\t\t\treadonly host?: Host,\n\t\t\targs?: Args\n\t\t) {\n\t\t\t\n\t\t\tsuper()\n\t\t\tif( args ) this.data.push( ... args )\n\t\t\tthis.pub_from = this.sub_from = args?.length ?? 0\n\t\t\tthis[ Symbol.toStringTag ] = id\n\t\t\t\n\t\t}\n\t\t\n\t\tplan() {\n\t\t\t$mol_wire_fiber.planning.add( this )\n\t\t\t$mol_wire_fiber.plan()\n\t\t\treturn this\n\t\t}\n\t\t\n\t\treap() {\n\t\t\t$mol_wire_fiber.reaping.add( this )\n\t\t\t$mol_wire_fiber.plan()\n\t\t}\n\t\t\n\t\ttoString() {\n\t\t\treturn this[ Symbol.toStringTag ]\n\t\t}\n\t\t\n\t\ttoJSON() {\n\t\t\treturn this[ Symbol.toStringTag ]\n\t\t}\n\n\t\t[ $mol_dev_format_head ]() {\n\t\t\t\n\t\t\tconst cursor = {\n\t\t\t\t[ $mol_wire_cursor.stale ]: '🔴',\n\t\t\t\t[ $mol_wire_cursor.doubt ]: '🟡',\n\t\t\t\t[ $mol_wire_cursor.fresh ]: '🟢',\n\t\t\t\t[ $mol_wire_cursor.final ]: '🔵',\n\t\t\t}[ this.cursor ] ?? this.cursor.toString()\n\t\t\t\n\t\t\treturn $mol_dev_format_div( {},\n\t\t\t\t$mol_owning_check( this, this.cache )\n\t\t\t\t\t? $mol_dev_format_auto({\n\t\t\t\t\t\t[ $mol_dev_format_head ]: ()=> $mol_dev_format_shade( cursor ),\n\t\t\t\t\t\t[ $mol_dev_format_body ]: ()=> $mol_dev_format_native( this ),\n\t\t\t\t\t})\n\t\t\t\t\t: $mol_dev_format_shade( $mol_dev_format_native( this ), cursor ),\n\t\t\t\t$mol_dev_format_auto( this.cache ),\n\t\t\t)\n\t\t\t\n\t\t}\n\t\t\n\t\tget $() {\n\t\t\treturn ( this.host ?? this.task as any )['$']\n\t\t}\n\t\t\n\t\temit( quant = $mol_wire_cursor.stale ) {\n\t\t\tif( this.sub_empty ) this.plan()\n\t\t\telse super.emit( quant )\n\t\t}\n\t\t\n\t\tfresh() {\n\n\t\t\ttype Result = typeof this.cache\n\t\t\t\n\t\t\tif( this.cursor === $mol_wire_cursor.fresh ) return\n\t\t\tif( this.cursor === $mol_wire_cursor.final ) return\n\t\t\t\n\t\t\tcheck: if( this.cursor === $mol_wire_cursor.doubt ) {\n\t\t\t\t\n\t\t\t\tfor( let i = this.pub_from ; i < this.sub_from; i += 2 ) {\n\t\t\t\t\t;( this.data[i] as $mol_wire_pub )?.fresh()\n\t\t\t\t\tif( this.cursor !== $mol_wire_cursor.doubt ) break check\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.cursor = $mol_wire_cursor.fresh\n\t\t\t\treturn\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tconst bu = this.track_on()\n\t\t\tlet result: typeof this.cache\n\n\t\t\ttry {\n\n\t\t\t\tswitch( this.pub_from ) {\n\t\t\t\t\tcase 0: result = (this.task as any).call( this.host! ); break\n\t\t\t\t\tcase 1: result = (this.task as any).call( this.host!, this.data[0] ); break\n\t\t\t\t\tdefault: result = (this.task as any).call( this.host!, ... this.args ); break\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( $mol_promise_like( result ) ) {\n\n\t\t\t\t\tif( wrappers.has( result ) ) {\n\t\t\t\t\t\tresult = wrappers.get( result )!.then(a=>a)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst put = ( res: Result )=> {\n\t\t\t\t\t\t\tif( this.cache === result ) this.put( res )\n\t\t\t\t\t\t\treturn res\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twrappers.set( result, result = Object.assign(\n\t\t\t\t\t\t\tresult.then( put, put ),\n\t\t\t\t\t\t\t{ destructor: ( result as any ).destructor || (()=> {}) }\n\t\t\t\t\t\t) )\n\t\t\t\t\t\twrappers.set( result, result )\n\n\t\t\t\t\t\tconst error = new Error( `Promise in ${ this }` )\n\t\t\t\t\t\tObject.defineProperty( result, 'stack', { get: ()=> error.stack } )\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} catch( error: any ) {\n\t\t\t\t\n\t\t\t\tif( error instanceof Error || $mol_promise_like( error ) ) {\n\t\t\t\t\tresult = error\n\t\t\t\t} else {\n\t\t\t\t\tresult = new Error( String( error ), { cause: error } )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( $mol_promise_like( result ) ) {\n\t\t\t\t\t\n\t\t\t\t\tif( wrappers.has( result ) ) {\n\t\t\t\t\t\tresult = wrappers.get( result )!\n\t\t\t\t\t} else {\n\t\t\t\t\t\t\n\t\t\t\t\t\twrappers.set( result, result = Object.assign(\n\t\t\t\t\t\t\tresult.finally( ()=> {\n\t\t\t\t\t\t\t\tif( this.cache === result ) this.absorb()\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t\t{ destructor: ( result as any ).destructor || (()=> {}) }\n\t\t\t\t\t\t) )\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst error = new Error( `Promise in ${ this }` )\n\t\t\t\t\t\tObject.defineProperty( result, 'stack', { get: ()=> error.stack } )\n\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif( ! $mol_promise_like( result ) ) {\n\t\t\t\tthis.track_cut()\n\t\t\t}\n\t\t\t\n\t\t\tthis.track_off( bu )\n\t\t\tthis.put( result )\n\t\t\t\n\t\t\treturn this\n\t\t}\n\t\t\n\t\trefresh() {\n\t\t\tthis.cursor = $mol_wire_cursor.stale\n\t\t\tthis.fresh()\n\t\t}\n\t\t\n\t\tabstract put( next: Result | Error | Promise< Result | Error > ): Result | Error | Promise< Result | Error >\n\t\t\n\t\t/**\n\t\t * Synchronous execution. Throws Promise when waits async task (SuspenseAPI provider).\n\t\t * Should be called inside SuspenseAPI consumer (ie fiber).\n\t\t */\n\t\tsync() {\n\t\t\t\n\t\t\tif( !$mol_wire_fiber.warm ) {\n\t\t\t\treturn this.result() as Awaited< Result >\n\t\t\t}\n\t\t\t\n\t\t\tthis.promote()\n\t\t\tthis.fresh()\n\t\t\t\n\t\t\tif( this.cache instanceof Error ) {\n\t\t\t\treturn $mol_fail_hidden( this.cache )\n\t\t\t}\n\t\t\t\n\t\t\tif( $mol_promise_like( this.cache ) ) {\n\t\t\t\treturn $mol_fail_hidden( this.cache )\n\t\t\t}\n\t\t\t\n\t\t\treturn this.cache as Awaited< Result >\n\t\t}\n\n\t\t/**\n\t\t * Asynchronous execution.\n\t\t * It's SuspenseAPI consumer. So SuspenseAPI providers can be called inside.\n\t\t */\n\t\tasync async_raw() {\n\t\t\t\n\t\t\twhile( true ) {\n\t\t\t\t\n\t\t\t\tthis.fresh()\n\t\t\t\t\n\t\t\t\tif( this.cache instanceof Error ) {\n\t\t\t\t\t$mol_fail_hidden( this.cache )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( ! $mol_promise_like( this.cache ) ) return this.cache\n\t\t\t\t\t\n\t\t\t\tawait Promise.race([ this.cache, this.step() ])\n\t\t\t\tif( ! $mol_promise_like( this.cache ) ) return this.cache\n\t\t\t\t\t\n\t\t\t\tif( this.cursor === $mol_wire_cursor.final ) {\n\t\t\t\t\t// never ends on destructed fiber\n\t\t\t\t\tawait new Promise( ()=> {} )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tasync() {\n\t\t\tconst promise = this.async_raw() as Promise & { destructor(): void }\n\n\t\t\tif (! promise.destructor) promise.destructor = () => this.destructor()\n\n\t\t\treturn promise\n\t\t}\n\t\t\n\t\tstep() {\n\t\t\treturn new Promise< null >( done => {\n\t\t\t\tconst sub = new $mol_wire_pub_sub\n\t\t\t\tconst prev = sub.track_on()\n\t\t\t\tsub.track_next( this )\n\t\t\t\tsub.track_off( prev )\n\t\t\t\tsub.absorb = ()=> {\n\t\t\t\t\tdone( null )\n\t\t\t\t\tsetTimeout( ()=> sub.destructor() )\n\t\t\t\t}\n\t\t\t} )\n\t\t}\n\n\t\tdestructor() {\n\t\t\t\n\t\t\tsuper.destructor()\n\t\t\t\n\t\t\tif( $mol_owning_check( this, this.cache ) ) {\n\t\t\t\tthis.cache.destructor()\n\t\t\t}\n\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\t/** Generates unique identifier. */\n\texport function $mol_guid(\n\t\tlength = 8,\n\t\texists: ( id: string )=> boolean = ()=> false,\n\t) {\n\n\t\tfor(;;) {\n\n\t\t\tlet id = Math.random().toString( 36 ).substring( 2, length + 2 ).toUpperCase()\n\t\t\tif( exists( id ) ) continue\n\t\t\t\n\t\t\treturn id\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\t\n\texport const $mol_key_store = new WeakMap< object, string >()\n\t\n\tconst TypedArray = Object.getPrototypeOf( Uint8Array )\n\n\t/** Returns string key for any value. */\n\texport function $mol_key< Value >( value : Value ) : string {\n\t\t\n\t\tif( typeof value === 'bigint' ) return value.toString() + 'n'\n\t\tif( typeof value === 'symbol' ) return value.description!\n\t\tif( !value ) return JSON.stringify( value )\n\t\tif( typeof value !== 'object' && typeof value !== 'function' ) return JSON.stringify( value )\n\t\t\n\t\treturn JSON.stringify( value, ( field, value )=> {\n\t\t\t\n\t\t\tif( typeof value === 'bigint' ) return value.toString() + 'n'\n\t\t\tif( typeof value === 'symbol' ) return value.description\n\t\t\tif( !value ) return value\n\t\t\tif( typeof value !== 'object' && typeof value !== 'function' ) return value\n\t\t\tif( Array.isArray( value ) ) return value\n\t\t\t\n\t\t\tconst proto = Reflect.getPrototypeOf( value )\n\t\t\tif( !proto ) return value\n\t\t\tif( Reflect.getPrototypeOf( proto ) === null ) return value\n\t\t\t\n\t\t\tif( 'toJSON' in value ) return value\n\t\t\tif( value instanceof RegExp ) return value.toString()\n\t\t\t// if( value instanceof DataView ) return [ ... new Uint8Array( value.buffer ) ]\n\t\t\tif( value instanceof TypedArray ) return [ ... value as any ]\n\t\t\t\n\t\t\tlet key = $mol_key_store.get( value )\n\t\t\tif( key ) return key\n\t\t\t\n\t\t\tkey = $mol_guid()\n\t\t\t$mol_key_store.set( value, key )\n\t\t\t\n\t\t\treturn key\n\t\t} )\n\n\t}\n\t\n}\n","namespace $ {\n\n\texport class $mol_after_timeout extends $mol_object2 {\n\n\t\tid : any\n\n\t\tconstructor(\n\t\t\tpublic delay : number ,\n\t\t\tpublic task : ()=> void ,\n\t\t) {\n\t\t\tsuper()\n\t\t\tthis.id = setTimeout( task , delay )\n\t\t}\n\n\t\tdestructor() {\n\t\t\tclearTimeout( this.id )\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\n\texport class $mol_after_frame extends $mol_after_timeout {\n\n\t\tconstructor(\n\t\t\tpublic task : ()=> void ,\n\t\t) {\n\t\t\tsuper( 16 , task )\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\n\texport let $mol_compare_deep_cache = new WeakMap< any , WeakMap< any , boolean > >()\n\t\n\t/**\n\t * Deeply compares two values. Returns true if equal.\n\t * Define `Symbol.toPrimitive` to customize.\n\t */\n\texport function $mol_compare_deep< Value >( left: Value, right: Value ): boolean {\n\n\t\tif( Object.is( left , right ) ) return true\n\n\t\tif( left === null ) return false\n\t\tif( right === null ) return false\n\n\t\tif( typeof left !== 'object' ) return false\n\t\tif( typeof right !== 'object' ) return false\n\n\t\tconst left_proto = Reflect.getPrototypeOf( left as any )\n\t\tconst right_proto = Reflect.getPrototypeOf( right as any )\n\t\t\n\t\tif( left_proto !== right_proto ) return false\n\n\t\tif( left instanceof Boolean ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof Number ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof String ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof Date ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof RegExp ) return left.source === (right as any).source && left.flags === (right as any).flags\n\t\tif( left instanceof Error ) return left.message === (right as any).message && left.stack === (right as any).stack\n\n\t\tlet left_cache = $mol_compare_deep_cache.get( left )\n\t\tif( left_cache ) {\n\n\t\t\tconst right_cache = left_cache.get( right )\n\t\t\tif( typeof right_cache === 'boolean' ) return right_cache\n\n\t\t} else {\n\t\t\t\n\t\t\tleft_cache = new WeakMap< any , boolean >()\n\t\t\t$mol_compare_deep_cache.set( left , left_cache )\n\n\t\t}\n\n\t\tleft_cache.set(right, true);\n\n\t\tlet result!: boolean\n\n\t\ttry {\n\t\t\t\n\t\t\tif( !left_proto ) result = compare_pojo( left, right as any )\n\t\t\telse if( !Reflect.getPrototypeOf( left_proto ) ) result = compare_pojo( left, right as any )\n\t\t\telse if( Symbol.toPrimitive in left ) result = compare_primitive( left, right )\n\t\t\telse if( Array.isArray( left ) ) result = compare_array( left, right as any )\n\t\t\telse if( left instanceof Set ) result = compare_set( left, right as any )\n\t\t\telse if( left instanceof Map ) result = compare_map( left, right as any )\n\t\t\telse if( ArrayBuffer.isView( left ) ) result = compare_buffer( left, right as any )\n\t\t\telse if( Symbol.iterator in left ) result = compare_iterator( ( left as any )[ Symbol.iterator ](), ( right as any )[ Symbol.iterator ]() )\n\t\t\telse result = false\n\n\t\t} finally {\n\t\t\tleft_cache.set( right , result )\n\t\t}\n\t\t\n\t\treturn result\n\t}\n\n\tfunction compare_array< Value extends any[] >( left: Value, right: Value ): boolean {\n\t\t\n\t\tconst len = left.length\n\t\tif( len !== right.length ) return false\n\t\t\n\t\tfor( let i = 0; i < len; ++i ) {\n\t\t\tif( !$mol_compare_deep( left[i] , right[i] ) ) return false\n\t\t}\n\t\t\n\t\treturn true\n\t}\n\t\n\tfunction compare_buffer( left: ArrayBufferView, right: ArrayBufferView ): boolean {\n\t\t\n\t\tconst len = left.byteLength\n\t\tif( len !== right.byteLength ) return false\n\t\t\n\t\tif( left instanceof DataView ) return compare_buffer(\n\t\t\tnew Uint8Array( left.buffer, left.byteOffset, left.byteLength ),\n\t\t\tnew Uint8Array( right.buffer, left.byteOffset, left.byteLength ),\n\t\t)\n\t\t\n\t\tfor( let i = 0; i < len; ++i ) {\n\t\t\tif( (left as any)[i] !== (right as any)[i] ) return false\n\t\t}\n\t\t\n\t\treturn true\n\t}\n\t\n\tfunction compare_iterator< Value extends IterableIterator >(\n\t\tleft: Value,\n\t\tright: Value,\n\t): boolean {\n\t\t\n\t\twhile( true ) {\n\n\t\t\tconst left_next = left.next()\n\t\t\tconst right_next = right.next()\n\n\t\t\tif( left_next.done !== right_next.done ) return false\n\t\t\tif( left_next.done ) break\n\n\t\t\tif( !$mol_compare_deep( left_next.value , right_next.value ) ) return false\n\n\t\t}\n\n\t\treturn true\n\n\t}\n\t\n\tfunction compare_set< Value extends Set >( left: Value, right: Value ): boolean {\n\t\tif( left.size !== right.size ) return false\n\t\treturn compare_iterator( left.values(), right.values() )\n\t}\n\t\n\tfunction compare_map< Key, Value >( left: Map< Key, Value > , right: Map< Key, Value > ): boolean {\n\t\tif( left.size !== right.size ) return false\n\t\treturn compare_iterator( left.keys(), right.keys() )\n\t\t\t&& compare_iterator( left.values(), right.values() )\n\t}\n\t\n\tfunction compare_pojo( left: {}, right: {} ): boolean {\n\t\t\n\t\tconst left_keys = Object.getOwnPropertyNames( left )\n\t\tconst right_keys = Object.getOwnPropertyNames( right )\n\t\t\n\t\tif( !compare_array( left_keys, right_keys ) ) return false\n\n\t\tfor( let key of left_keys ) {\n\t\t\tif( !$mol_compare_deep( ( left as any )[ key ], ( right as any )[ key ] ) ) return false\n\t\t}\n\n\t\tconst left_syms = Object.getOwnPropertySymbols( left )\n\t\tconst right_syms = Object.getOwnPropertySymbols( right )\n\t\t\n\t\tif( !compare_array( left_syms, right_syms ) ) return false\n\n\t\tfor( let key of left_syms ) {\n\t\t\tif( !$mol_compare_deep( ( left as any )[ key ], ( right as any )[ key ] ) ) return false\n\t\t}\n\n\t\treturn true\n\t}\n\t\n\tfunction compare_primitive( left: {}, right: {} ): boolean {\n\t\treturn Object.is(\n\t\t\t(left as any)[ Symbol.toPrimitive ]( 'default' ),\n\t\t\t(right as any)[ Symbol.toPrimitive ]( 'default' ),\n\t\t)\n\t}\n\t\n}\n","namespace $ {\n\n\t/** Logger event data */\n\texport type $mol_log3_event< Fields > = {\n\t\t[ key in string ] : unknown\n\t} & {\n\t\t\n\t\t/** Time of event creation */\n\t\ttime? : string\n\n\t\t/** Place of event creation */\n\t\tplace : unknown\n\n\t\t/** Short description of event */\n\t\tmessage : string\n\n\t} & Fields\n\n\t/** Logger function */\n\texport type $mol_log3_logger< Fields , Res = void > = (\n\t\tthis : $ ,\n\t\tevent : $mol_log3_event< Fields > ,\n\t)=> Res\n\n\t/** Log begin of some task */\n\texport declare let $mol_log3_come : $mol_log3_logger<{}>\n\t\n\t/** Log end of some task */\n\texport declare let $mol_log3_done : $mol_log3_logger<{}>\n\t\n\t/** Log error */\n\texport declare let $mol_log3_fail : $mol_log3_logger<{}>\n\t\n\t/** Log warning message */\n\texport declare let $mol_log3_warn : $mol_log3_logger<{ hint : string }>\n\t\n\t/** Log some generic event */\n\texport declare let $mol_log3_rise : $mol_log3_logger<{}>\n\n\t/** Log begin of log group, returns func to close group */\n\texport declare let $mol_log3_area : $mol_log3_logger< {} , ()=> void >\n\n\t/** Log begin of collapsed group only when some logged inside, returns func to close group */\n\texport function $mol_log3_area_lazy(\n\t\tthis : $ ,\n\t\tevent : $mol_log3_event<{}> ,\n\t) {\n\n\t\tconst self = this\n\t\tconst stack = self.$mol_log3_stack\n\n\t\tconst deep = stack.length\n\t\tlet logged = false\n\n\t\tstack.push( ()=> {\n\t\t\tlogged = true\n\t\t\tself.$mol_log3_area.call( self , event )\n\t\t} )\n\n\t\treturn ()=> {\n\t\t\tif( logged ) self.console.groupEnd()\n\t\t\tif( stack.length > deep ) stack.length = deep\n\t\t}\n\n\t}\n\n\texport let $mol_log3_stack = [] as ( ()=> void )[]\n\n}\n","namespace $ {\n\n\t/** Position in any resource. */\n\texport class $mol_span extends $mol_object2 {\n\n\t\tconstructor(\n\t\t\treadonly uri: string ,\n\t\t\treadonly source: string ,\n\t\t\treadonly row: number ,\n\t\t\treadonly col: number ,\n\t\t\treadonly length: number ,\n\t\t) {\n\t\t\tsuper()\n\t\t\tthis[ Symbol.toStringTag ] = this.uri + ( '#' + this.row + ':' + this.col + '/' + this.length )\n\t\t}\n\n\t\t/** Span for begin of unknown resource */\n\t\tstatic unknown = $mol_span.begin('?')\n\n\t\t/** Makes new span for begin of resource. */\n\t\tstatic begin( uri: string, source = '' ) {\n\t\t\treturn new $mol_span( uri , source, 1 , 1 , 0 )\n\t\t}\n\n\t\t/** Makes new span for end of resource. */\n\t\tstatic end( uri: string , source: string ) {\n\t\t\treturn new $mol_span( uri , source, 1 , source.length + 1 , 0 )\n\t\t}\n\n\t\t/** Makes new span for entire resource. */\n\t\tstatic entire( uri: string , source: string ) {\n\t\t\treturn new $mol_span( uri , source, 1 , 1 , source.length )\n\t\t}\n\n\t\ttoString() {\n\t\t\treturn this[ Symbol.toStringTag ]\n\t\t}\n\n\t\ttoJSON() {\n\t\t\treturn {\n\t\t\t\turi: this.uri,\n\t\t\t\trow: this.row,\n\t\t\t\tcol: this.col,\n\t\t\t\tlength: this.length\n\t\t\t}\n\t\t}\n\n\t\t/** Makes new error for this span. */\n\t\terror( message : string , Class = Error ) {\n\t\t\treturn new Class( `${message} (${this})` )\n\t\t}\n\n\t\t/** Makes new span for same uri. */\n\t\tspan( row : number , col : number , length : number ) {\n\t\t\treturn new $mol_span( this.uri , this.source, row , col , length )\n\t\t}\n\n\t\t/** Makes new span after end of this. */\n\t\tafter( length = 0 ) {\n\t\t\treturn new $mol_span( this.uri , this.source, this.row , this.col + this.length , length )\n\t\t}\n\n\t\t/** Makes new span between begin and end. */\n\t\tslice( begin: number, end = -1 ) {\n\t\t\tlet len = this.length\n\t\t\t\n\t\t\tif( begin < 0 ) begin += len\n\t\t\tif( end < 0 ) end += len\n\n\t\t\tif (begin < 0 || begin > len) this.$.$mol_fail( this.error( `Begin value '${begin}' out of range`, RangeError ) )\n\t\t\tif (end < 0 || end > len) this.$.$mol_fail( this.error( `End value '${end}' out of range`, RangeError ) )\n\t\t\tif (end < begin) this.$.$mol_fail( this.error( `End value '${end}' can't be less than begin value`, RangeError ) )\n\n\t\t\treturn this.span( this.row , this.col + begin , end - begin )\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\t/** Serializes tree to string in tree format. */\n\texport function $mol_tree2_to_string(\n\t\tthis: $,\n\t\ttree: $mol_tree2,\n\t) : string {\n\n\t\tlet output = [] as string[]\n\t\t\n\t\tfunction dump(\n\t\t\ttree: $mol_tree2,\n\t\t\tprefix = '',\n\t\t) {\n\n\t\t\tif( tree.type.length ) {\n\t\t\t\t\n\t\t\t\tif( !prefix.length ) {\n\t\t\t\t\tprefix = \"\\t\";\n\t\t\t\t}\n\n\t\t\t\toutput.push( tree.type )\n\n\t\t\t\tif( tree.kids.length == 1 ) {\n\t\t\t\t\toutput.push( ' ' )\n\t\t\t\t\tdump( tree.kids[ 0 ], prefix )\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\toutput.push( \"\\n\" )\n\n\t\t\t} else if( tree.value.length || prefix.length ) {\n\n\t\t\t\toutput.push( \"\\\\\" + tree.value + \"\\n\" )\n\n\t\t\t}\n\n\t\t\tfor( const kid of tree.kids ) {\n\t\t\t\toutput.push( prefix )\n\t\t\t\tdump( kid, prefix + \"\\t\" )\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tdump( tree )\n\n\t\treturn output.join('')\n\t}\n\t\t\n}\n","namespace $ {\n\n\t/** Path by types in tree. */\n\texport type $mol_tree2_path =\n\t\tArray< string | number | null >\n\t\n\t/** Hask tool for processing node. */\n\texport type $mol_tree2_hack< Context > =\n\t\t(\n\t\t\tinput : $mol_tree2 ,\n\t\t\tbelt : $mol_tree2_belt< Context > ,\n\t\t\tcontext : Context ,\n\t\t)=> readonly $mol_tree2[]\n\n\t/** Collection of hask tools for processing tree. */\n\texport type $mol_tree2_belt< Context > =\n\t\tRecord< string , $mol_tree2_hack< Context > >\n\n\t/**\n\t * Abstract Syntax Tree with human readable serialization.\n\t * Avoid direct instantiation. Use static factories instead.\n\t * @see https://github.com/nin-jin/tree.d\n\t */\n\texport class $mol_tree2 extends Object {\n\t\t\n\t\tconstructor(\n\n\t\t\t/** Type of structural node, `value` should be empty */\n\t\t\treadonly type : string,\n\t\t\t\n\t\t\t/** Content of data node, `type` should be empty */\n\t\t\treadonly value : string,\n\n\t\t\t/** Child nodes */\n\t\t\treadonly kids : readonly $mol_tree2[],\n\t\t\t\n\t\t\t/** Position in most far source resource */\n\t\t\treadonly span : $mol_span,\n\n\t\t) {\n\t\t\tsuper()\n\t\t\t;(this as any)[ Symbol.toStringTag ] = type || '\\\\' + value\n\t\t}\n\n\t\t/** Makes collection node. */\n\t\tstatic list(\n\t\t\tkids : readonly $mol_tree2[] ,\n\t\t\tspan = $mol_span.unknown ,\n\t\t) {\n\t\t\treturn new $mol_tree2( '' , '' , kids , span )\n\t\t}\n\t\t\n\t\t/** Makes new derived collection node. */\n\t\tlist(\n\t\t\tkids : readonly $mol_tree2[] ,\n\t\t) {\n\t\t\treturn $mol_tree2.list( kids , this.span )\n\t\t}\n\n\t\t/** Makes data node for any string. */\n\t\tstatic data(\n\t\t\tvalue : string ,\n\t\t\tkids = [] as readonly $mol_tree2[] ,\n\t\t\tspan = $mol_span.unknown ,\n\t\t) {\n\n\t\t\tconst chunks = value.split( '\\n' )\n\n\t\t\tif( chunks.length > 1 ) {\n\t\t\t\n\t\t\t\tlet kid_span = span.span( span.row , span.col , 0 )\n\n\t\t\t\tconst data = chunks.map( chunk => {\n\t\t\t\t\tkid_span = kid_span.after( chunk.length )\n\t\t\t\t\treturn new $mol_tree2( '' , chunk , [] , kid_span )\n\t\t\t\t} )\n\n\t\t\t\tkids = [ ... data , ... kids ]\n\n\t\t\t\tvalue = ''\n\n\t\t\t}\n\n\t\t\treturn new $mol_tree2( '' , value , kids , span )\n\n\t\t}\n\t\t\n\t\t/** Makes new derived data node. */\n\t\tdata(\n\t\t\tvalue : string ,\n\t\t\tkids = [] as readonly $mol_tree2[] ,\n\t\t) {\n\t\t\treturn $mol_tree2.data( value , kids , this.span )\n\t\t}\n\t\t\n\t\t/** Makes struct node. */\n\t\tstatic struct(\n\t\t\ttype : string ,\n\t\t\tkids = [] as readonly $mol_tree2[] ,\n\t\t\tspan = $mol_span.unknown ,\n\t\t) {\n\n\t\t\tif( /[ \\n\\t\\\\]/.test( type ) ) {\n\t\t\t\t$$.$mol_fail( span.error( `Wrong type ${ JSON.stringify( type ) }` ) )\n\t\t\t}\n\n\t\t\treturn new $mol_tree2( type , '' , kids , span )\n\n\t\t}\n\t\t\n\t\t/** Makes new derived structural node. */\n\t\tstruct(\n\t\t\ttype : string ,\n\t\t\tkids = [] as readonly $mol_tree2[] ,\n\t\t) {\n\t\t\treturn $mol_tree2.struct( type , kids , this.span )\n\t\t}\n\n\t\t/** Makes new derived node with different kids id defined. */\n\t\tclone( kids : readonly $mol_tree2[], span = this.span ) {\n\t\t\treturn new $mol_tree2( this.type , this.value , kids , span )\n\t\t}\n\n\t\t/** Returns multiline text content. */\n\t\ttext() {\n\n\t\t\tvar values : string[] = []\n\t\t\t\n\t\t\tfor( var kid of this.kids ) {\n\t\t\t\tif( kid.type ) continue\n\t\t\t\tvalues.push( kid.value )\n\t\t\t}\n\t\t\t\n\t\t\treturn this.value + values.join( '\\n' )\n\n\t\t}\n\t\t\n\t\t/** Parses tree format. */\n\t\t/** @deprecated Use $mol_tree2_from_string */\n\t\tstatic fromString( str : string , uri = 'unknown' ) {\n\t\t\treturn $$.$mol_tree2_from_string( str, uri )\n\t\t}\n\n\t\t/** Serializes to tree format. */\n\t\ttoString() : string {\n\t\t\treturn $$.$mol_tree2_to_string( this )\n\t\t}\n\t\t\n\t\t/** Makes new tree with node overrided by path. */\n\t\tinsert( value : $mol_tree2 | null , ...path : $mol_tree2_path ) : $mol_tree2 {\n\n\t\t\tif( path.length === 0 ) return value!\n\t\t\t\n\t\t\tconst type = path[0]\n\t\t\tif( typeof type === 'string' ) {\n\n\t\t\t\tlet replaced = false\n\t\t\t\tconst sub = this.kids.map( ( item , index )=> {\n\t\t\t\t\tif( item.type !== type ) return item\n\t\t\t\t\treplaced = true\n\t\t\t\t\treturn item.insert( value , ... path.slice( 1 ) )\n\t\t\t\t} ).filter( Boolean )\n\t\t\t\t\n\t\t\t\tif( !replaced && value ) {\n\t\t\t\t\tsub.push( this.struct( type , [] ).insert( value , ... path.slice( 1 ) ) )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn this.clone( sub )\n\n\t\t\t} else if( typeof type === 'number' ) {\n\t\t\t\t\n\t\t\t\tconst sub = this.kids.slice()\n\t\t\t\tsub[ type ] = ( sub[ type ] || this.list([]) )\n\t\t\t\t\t.insert( value , ... path.slice( 1 ) )\n\t\t\t\t\n\t\t\t\treturn this.clone( sub.filter( Boolean ) )\n\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tconst kids = ( ( this.kids.length === 0 ) ? [ this.list([]) ] : this.kids )\n\t\t\t\t.map( item => item.insert( value , ... path.slice( 1 ) ) )\n\t\t\t\t.filter( Boolean )\n\n\t\t\t\treturn this.clone( kids )\n\n\t\t\t}\n\n\t\t}\n\n\t\t/** Query nodes by path. */\n\t\tselect( ...path : $mol_tree2_path ) {\n\n\t\t\tlet next = [ this as $mol_tree2 ]\n\n\t\t\tfor( const type of path ) {\n\n\t\t\t\tif( !next.length ) break\n\t\t\t\t\n\t\t\t\tconst prev = next\n\t\t\t\tnext = []\n\n\t\t\t\tfor( var item of prev ) {\n\n\t\t\t\t\tswitch( typeof( type ) ) {\n\n\t\t\t\t\t\tcase 'string' :\n\n\t\t\t\t\t\t\tfor( var child of item.kids ) {\n\t\t\t\t\t\t\t\tif( child.type == type ) {\n\t\t\t\t\t\t\t\t\tnext.push( child )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\n\t\t\t\t\t\tcase 'number' :\n\n\t\t\t\t\t\t\tif( type < item.kids.length ) next.push( item.kids[ type ] )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\t\tdefault : next.push( ... item.kids )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.list( next )\n\t\t\t\n\t\t}\n\t\t\n\t\t/** Filter kids by path or value. */\n\t\tfilter( path : string[] , value? : string ) {\n\n\t\t\tconst sub = this.kids.filter( item => {\n\t\t\t\t\t\n\t\t\t\tvar found = item.select( ...path )\n\t\t\t\t\n\t\t\t\tif( value === undefined ) {\n\t\t\t\t\treturn Boolean( found.kids.length )\n\t\t\t\t} else {\n\t\t\t\t\treturn found.kids.some( child => child.value == value )\n\t\t\t\t}\n\t\t\t\n\t\t\t} )\n\t\t\t\n\t\t\treturn this.clone( sub )\n\n\t\t}\n\n\t\thack_self< Context extends { span?: $mol_span; [ key: string ]: unknown } = {} >(\n\t\t\tbelt: $mol_tree2_belt< Context >,\n\t\t\tcontext = {} as Context,\n\t\t) {\n\t\t\tlet handle = belt[ this.type ] || belt[ '' ]\n\t\t\t\t\n\t\t\tif( !handle || handle === Object.prototype[ this.type as keyof Object ] ) {\n\t\t\t\thandle = ( input, belt, context )=> [\n\t\t\t\t\tinput.clone( input.hack( belt, context ), context.span )\n\t\t\t\t]\n\t\t\t}\n\t\t\t\n\t\t\ttry {\n\t\t\t\treturn handle( this , belt , context! )\n\t\t\t} catch( error: any ) {\n\t\t\t\terror.message += `\\n${ this.clone([]) }${ this.span }`\n\t\t\t\t$mol_fail_hidden( error )\n\t\t\t}\n\t\t}\n\n\t\t/** Transform tree through context with transformers */\n\t\thack< Context extends { span?: $mol_span; [ key: string ]: unknown } = {} >(\n\t\t\tbelt: $mol_tree2_belt< Context >,\n\t\t\tcontext = {} as Context,\n\t\t) {\n\t\t\treturn ( [] as readonly $mol_tree2[] ).concat(\n\t\t\t\t... this.kids.map( child => child.hack_self(belt, context) )\n\t\t\t)\n\n\t\t}\n\n\t\t/** Makes Error with node coordinates. */\n\t\terror( message : string , Class = Error ) {\n\t\t\treturn this.span.error( `${ message }\\n${ this.clone([]) }` , Class )\n\t\t}\n\n\t}\n\n\texport class $mol_tree2_empty extends $mol_tree2 {\n\t\tconstructor() {\n\t\t\tsuper( '' , '' , [] , $mol_span.unknown )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\n\t/** Syntax error with cordinates and source line snippet. */\n\texport class $mol_error_syntax extends SyntaxError {\n\t\tconstructor (\n\t\t\tpublic reason: string,\n\t\t\tpublic line: string,\n\t\t\tpublic span: $mol_span,\n\t\t) {\n\t\t\tsuper(`${ reason }\\n${ span }\\n${ line.substring( 0 , span.col - 1 ).replace( /\\S/g, ' ' ) }${ ''.padEnd( span.length, '!' ) }\\n${ line }`)\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\t/** Parses tree format from string. */\n\texport function $mol_tree2_from_string(\n\t\tthis: $,\n\t\tstr: string,\n\t\turi = '?',\n\t) : $mol_tree2 {\n\n\t\tconst span = $mol_span.entire( uri, str )\n\n\t\tvar root = $mol_tree2.list( [], span )\n\t\tvar stack = [ root ]\n\n\t\tvar pos = 0, row = 0, min_indent = 0\n\t\t\n\t\twhile( str.length > pos ) {\n\n\t\t\tvar indent = 0\n\t\t\tvar line_start = pos\n\n\t\t\trow++\n\n\t\t\t// read indent\n\t\t\twhile( str.length > pos && str[ pos ] == '\\t' ) {\n\t\t\t\tindent++\n\t\t\t\tpos++\n\t\t\t}\n\n\t\t\tif( ! root.kids.length ) {\n\t\t\t\tmin_indent = indent\n\t\t\t}\n\n\t\t\tindent -= min_indent\n\n\t\t\t// invalid tab size\n\t\t\tif( indent < 0 || indent >= stack.length ) {\n\n\t\t\t\tconst sp = span.span( row, 1, pos - line_start )\n\n\t\t\t\t// skip error line\n\t\t\t\twhile( str.length > pos && str[ pos ] != '\\n' ) {\n\t\t\t\t\tpos++\n\t\t\t\t}\n\n\t\t\t\tif( indent < 0 ) {\n\t\t\t\t\tif( str.length > pos ) {\n\t\t\t\t\t\tthis.$mol_fail( new this.$mol_error_syntax(\n\t\t\t\t\t\t\t`Too few tabs`,\n\t\t\t\t\t\t\tstr.substring( line_start, pos ),\n\t\t\t\t\t\t\tsp,\n\t\t\t\t\t\t) )\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.$mol_fail( new this.$mol_error_syntax(\n\t\t\t\t\t\t`Too many tabs`,\n\t\t\t\t\t\tstr.substring( line_start, pos ),\n\t\t\t\t\t\tsp,\n\t\t\t\t\t) )\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstack.length = indent + 1\n\t\t\tvar parent = stack[ indent ]\n\n\t\t\t// parse types\n\t\t\twhile( str.length > pos && str[ pos ] != '\\\\' && str[ pos ] != '\\n' ) {\n\n\t\t\t\t// type can not contain space and tab\n\t\t\t\tvar error_start = pos\n\t\t\t\twhile( str.length > pos && ( str[ pos ] == ' ' || str[ pos ] == '\\t' ) ) {\n\t\t\t\t\tpos++\n\t\t\t\t}\n\n\t\t\t\tif( pos > error_start ) {\n\t\t\t\t\tlet line_end = str.indexOf( '\\n' , pos )\n\t\t\t\t\tif( line_end === -1 ) line_end = str.length\n\t\t\t\t\tconst sp = span.span( row, error_start - line_start + 1, pos - error_start )\n\t\t\t\t\tthis.$mol_fail( new this.$mol_error_syntax(\n\t\t\t\t\t\t`Wrong nodes separator`,\n\t\t\t\t\t\tstr.substring( line_start, line_end ),\n\t\t\t\t\t\tsp,\n\t\t\t\t\t) )\n\t\t\t\t}\n\n\t\t\t\t// read type\n\t\t\t\tvar type_start = pos\n\t\t\t\twhile( \n\t\t\t\t\tstr.length > pos && \n\t\t\t\t\tstr[ pos ] != '\\\\' && \n\t\t\t\t\tstr[ pos ] != ' ' && \n\t\t\t\t\tstr[ pos ] != '\\t' && \n\t\t\t\t\tstr[ pos ] != '\\n'\n\t\t\t\t) {\n\t\t\t\t\tpos++\n\t\t\t\t}\n\t\t\t\tif( pos > type_start ) {\n\t\t\t\t\tlet next = new $mol_tree2(\n\t\t\t\t\t\tstr.slice( type_start , pos ),\n\t\t\t\t\t\t'',\n\t\t\t\t\t\t[],\n\t\t\t\t\t\tspan.span( row, type_start - line_start + 1, pos - type_start ),\n\t\t\t\t\t)\n\t\t\t\t\tconst parent_kids = parent.kids as $mol_tree2[]\n\t\t\t\t\tparent_kids.push( next )\n\t\t\t\t\tparent = next\n\t\t\t\t}\n\n\t\t\t\t// read one space if exists\n\t\t\t\tif( str.length > pos && str[ pos ] == ' ' ) {\n\t\t\t\t\tpos++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// read data\n\t\t\tif( str.length > pos && str[ pos ] == '\\\\' ) {\n\t\t\t\tvar data_start = pos\n\t\t\t\twhile( str.length > pos && str[ pos ] != '\\n' ) {\n\t\t\t\t\tpos++\n\t\t\t\t}\n\t\t\t\tlet next = new $mol_tree2(\n\t\t\t\t\t'',\n\t\t\t\t\tstr.slice( data_start + 1 , pos ),\n\t\t\t\t\t[],\n\t\t\t\t\tspan.span( row, data_start - line_start + 2, pos - data_start - 1 ),\n\t\t\t\t)\n\t\t\t\tconst parent_kids = parent.kids as $mol_tree2[]\n\t\t\t\tparent_kids.push( next )\n\t\t\t\tparent = next\n\t\t\t}\n\n\t\t\t// now must be end of text\n\t\t\tif( str.length === pos && stack.length > 0 ) {\n\t\t\t\tconst sp = span.span( row, pos - line_start + 1, 1 )\n\t\t\t\tthis.$mol_fail( new this.$mol_error_syntax(\n\t\t\t\t\t`Unexpected EOF, LF required`,\n\t\t\t\t\tstr.substring( line_start, str.length ),\n\t\t\t\t\tsp,\n\t\t\t\t) )\n\t\t\t}\n\n\t\t\tstack.push( parent )\n\t\t\tpos++\n\t\t}\n\n\t\treturn root\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_tree2_from_json( json: any, span = $mol_span.unknown ): $mol_tree2 {\n\n\t\tif( typeof json === 'boolean' || typeof json === 'number' || json === null ) {\n\t\t\treturn new $mol_tree2( String( json ) , '' , [] , span )\n\t\t}\n\t\t\n\t\tif( typeof json === 'string' ) {\n\t\t\treturn $mol_tree2.data( json , [], span )\n\t\t}\n\n\t\tif( typeof json.toJSON === 'function' ) {\n\t\t\treturn $mol_tree2_from_json( json.toJSON() )\n\t\t}\n\n\t\tif( Array.isArray( json ) ) {\n\t\t\tconst sub = json.map( json => $mol_tree2_from_json( json , span ) )\n\t\t\treturn new $mol_tree2( '/' , '', sub, span )\n\t\t}\n\t\t\n\t\tif( ArrayBuffer.isView( json ) ) {\n\t\t\tconst buf = new Uint8Array( json.buffer, json.byteOffset, json.byteLength )\n\t\t\treturn $mol_tree2.data( String.fromCharCode( ... buf ) , [], span )\n\t\t}\n\t\t\t\n\t\tif( json instanceof Date ) {\n\t\t\treturn new $mol_tree2( '', json.toISOString() , [] , span )\n\t\t}\n\n\t\tif( json.toString !== Object.prototype.toString ) {\n\t\t\treturn $mol_tree2.data( json.toString() , [], span )\n\t\t}\n\n\t\tif( json instanceof Error ) {\n\t\t\tconst { name , message , stack } = json\n\t\t\tjson = { ... json, name, message, stack }\n\t\t}\n\n\t\tconst sub = [] as $mol_tree2[]\n\t\t\n\t\tfor( var key in json ) {\n\n\t\t\tconst val = json[ key ]\n\n\t\t\tif( val === undefined ) continue\n\n\t\t\tconst subsub = $mol_tree2_from_json( val, span )\n\t\t\t\n\t\t\tif( /^[^\\n\\t\\\\ ]+$/.test( key ) ) {\n\t\t\t\tsub.push( new $mol_tree2( key, '', [ subsub ], span ) )\n\t\t\t} else {\n\t\t\t\tsub.push( $mol_tree2.data( key, [ subsub ], span ) )\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\treturn new $mol_tree2( '*' , '', sub , span )\n\t\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\t/** Module for working with terminal. Text coloring when output in terminal */\n\texport class $mol_term_color {\n\t\t\n\t\tstatic reset = this.ansi( 0, 0 )\n\t\tstatic bold = this.ansi( 1, 22 )\n\t\tstatic italic = this.ansi( 3, 23 )\n\t\tstatic underline = this.ansi( 4, 24 )\n\t\tstatic inverse = this.ansi( 7, 27 )\n\t\tstatic hidden = this.ansi( 8, 28 )\n\t\tstatic strike = this.ansi( 9, 29 )\n\t\t\n\t\tstatic gray = this.ansi( 90, 39 )\n\t\tstatic red = this.ansi( 91, 39 )\n\t\tstatic green = this.ansi( 92, 39 )\n\t\tstatic yellow = this.ansi( 93, 39 )\n\t\tstatic blue = this.ansi( 94, 39 )\n\t\tstatic magenta = this.ansi( 95, 39 )\n\t\tstatic cyan = this.ansi( 96, 39 )\n\t\t\n\t\tstatic Gray = ( str: string )=> this.inverse( this.gray( str ) )\n\t\tstatic Red = ( str: string )=> this.inverse( this.red( str ) )\n\t\tstatic Green = ( str: string )=> this.inverse( this.green( str ) )\n\t\tstatic Yellow = ( str: string )=> this.inverse( this.yellow( str ) )\n\t\tstatic Blue = ( str: string )=> this.inverse( this.blue( str ) )\n\t\tstatic Magenta = ( str: string )=> this.inverse( this.magenta( str ) )\n\t\tstatic Cyan = ( str: string )=> this.inverse( this.cyan( str ) )\n\t\t\n\t\tstatic ansi( open: number, close: number ) {\n\t\n\t\t\tif( typeof process === 'undefined' ) return String\n\t\t\tif( !process.stdout.isTTY ) return String\n\t\t\n\t\t\tconst prefix = `\\x1b[${open}m`\n\t\t\tconst postfix = `\\x1b[${close}m`\n\t\t\t\n\t\t\tconst suffix_regexp = new RegExp( postfix.replace( '[', '\\\\[' ), 'g' )\n\t\t\n\t\t\treturn function colorer( str: string ) {\n\t\t\n\t\t\t\tstr = String( str )\n\t\t\t\tif( str === '' ) return str\n\t\t\n\t\t\t\tconst suffix = str.replace( suffix_regexp, prefix )\n\t\t\t\treturn prefix + suffix + postfix\n\t\t\n\t\t\t}\n\t\t\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\texport function $mol_log3_node_make(\n\t\tlevel : keyof Console ,\n\t\toutput : 'stdout' | 'stderr',\n\t\ttype : string ,\n\t\tcolor: ( str: string )=> string ,\n\t) {\n\n\t\treturn function $mol_log3_logger(\n\t\t\tthis : $ ,\n\t\t\tevent : $mol_log3_event<{}> ,\n\t\t) {\n\n\t\t\tif( !event.time ) event = { time : new Date().toISOString() , ... event }\n\n\t\t\tlet tree = this.$mol_tree2_from_json( event )\n\t\t\ttree = tree.struct( type, tree.kids )\n\t\t\t\n\t\t\tlet str = color( tree.toString() )\n\t\t\t;( this.console[ level ] as any )( str )\n\t\n\t\t\tconst self = this\n\t\t\treturn ()=> self.console.groupEnd()\n\n\t\t}\n\n\t}\n\n\t$.$mol_log3_come = $mol_log3_node_make( 'info' , 'stdout' , 'come' , $mol_term_color.blue )\n\t$.$mol_log3_done = $mol_log3_node_make( 'info' , 'stdout' , 'done' , $mol_term_color.green )\n\t$.$mol_log3_fail = $mol_log3_node_make( 'error' , 'stderr' , 'fail' , $mol_term_color.red )\n\t$.$mol_log3_warn = $mol_log3_node_make( 'warn' , 'stderr' , 'warn' , $mol_term_color.yellow )\n\t$.$mol_log3_rise = $mol_log3_node_make( 'log' , 'stdout' , 'rise' , $mol_term_color.magenta )\n\t$.$mol_log3_area = $mol_log3_node_make( 'log' , 'stdout' , 'area' , $mol_term_color.cyan )\n\n}\n","namespace $ {\n\t\n\t/** One-shot fiber */\n\texport class $mol_wire_task<\n\t\tHost,\n\t\tArgs extends readonly unknown[],\n\t\tResult,\n\t> extends $mol_wire_fiber< Host, Args, Result > {\n\t\t\n\t\tstatic getter<\n\t\t\tHost,\n\t\t\tArgs extends readonly unknown[],\n\t\t\tResult,\n\t\t>(\n\t\t\ttask: ( this : Host , ... args : Args )=> Result,\n\t\t): ( host: Host, args: Args )=> $mol_wire_task< Host, Args, Result > {\n\t\t\t\n\t\t\treturn function $mol_wire_task_get( host: Host, args: Args ) {\n\t\t\t\t\n\t\t\t\tconst sub = $mol_wire_auto()\n\t\t\t\tconst existen = sub?.track_next() as $mol_wire_task< Host, Args, Result > | undefined\n\t\t\t\t\n\t\t\t\treuse: if( existen ) {\n\t\t\t\t\t\n\t\t\t\t\tif( !existen.temp ) break reuse\n\t\t\t\t\t\n\t\t\t\t\tif( existen.host !== host ) break reuse\n\t\t\t\t\tif( existen.task !== task ) break reuse\n\t\t\t\t\tif( !$mol_compare_deep( existen.args, args ) ) break reuse\n\t\t\t\t\t\n\t\t\t\t\treturn existen\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst key = ( (host as any)?.[ Symbol.toStringTag ] ?? host ) + ( '.' + task.name + '<#>' )\n\t\t\t\tconst next = new $mol_wire_task( key, task, host, args )\n\t\t\t\t\n\t\t\t\t// Disabled because non-idempotency is required for try-catch\n\t\t\t\tif( existen?.temp ) {\n\t\t\t\t\t$$.$mol_log3_warn({\n\t\t\t\t\t\tplace: '$mol_wire_task',\n\t\t\t\t\t\tmessage: `Non idempotency`,\n\t\t\t\t\t\tsub,\n\t\t\t\t\t\tpubs: [ ... sub?.pub_list ?? [] , existen ],\n\t\t\t\t\t\tnext,\n\t\t\t\t\t\thint: 'Ignore it',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn next\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tget temp() {\n\t\t\treturn true\n\t\t}\n\t\t\n\t\tcomplete() {\n\t\t\tif( $mol_promise_like( this.cache ) ) return\n\t\t\tthis.destructor()\n\t\t}\n\t\t\n\t\tput( next: Result | Error | Promise< Result | Error > ) {\n\t\t\t\n\t\t\tconst prev = this.cache\n\t\t\tthis.cache = next\n\t\t\t\n\t\t\tif( $mol_promise_like( next ) ) {\n\t\t\t\t\n\t\t\t\tthis.cursor = $mol_wire_cursor.fresh\n\t\t\t\tif( next !== prev ) this.emit()\n\t\t\t\t\n\t\t\t\tif( $mol_owning_catch( this, next ) ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t(next as any)[ Symbol.toStringTag ] = (this as any)[ Symbol.toStringTag ]\n\t\t\t\t\t} catch { // Promises throw in strict mode\n\t\t\t\t\t\tObject.defineProperty( next, Symbol.toStringTag, { value: (this as any)[ Symbol.toStringTag ] } )\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn next\n\t\t\t}\n\t\t\t\n\t\t\tthis.cursor = $mol_wire_cursor.final\n\t\t\t\n\t\t\tif( this.sub_empty ) this.destructor()\n\t\t\telse if( next !== prev ) this.emit()\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\t/**\n\t * Decorates method to fiber to ensure it is executed only once inside other fiber.\n\t */\n\texport function $mol_wire_method<\n\t\tHost extends object,\n\t\tArgs extends readonly any[],\n\t>(\n\t\thost : Host,\n\t\tfield : PropertyKey,\n\t\tdescr? : TypedPropertyDescriptor< ( ... args: Args )=> any >,\n\t) {\n\t\t\n\t\tif( !descr ) descr = Reflect.getOwnPropertyDescriptor( host , field ) as any\n\t\tconst orig = descr?.value! ?? (host as any)[ field ]\n\t\t\n\t\tconst sup = Reflect.getPrototypeOf( host )!\t\n\t\tif( typeof (sup as any)[ field ] === 'function' ) {\n\t\t\tObject.defineProperty( orig , 'name' , { value : (sup as any)[ field ].name } )\n\t\t}\n\t\t\n\t\tconst temp = $mol_wire_task.getter( orig )\n\t\tconst value = function( this: Host, ... args: Args ) {\n\t\t\tconst fiber = temp( this ?? null as any, args )\n\t\t\treturn fiber.sync()\n\t\t}\n\t\t\n\t\tObject.defineProperty( value , 'name' , { value : orig.name + ' ' } )\n\t\t\n\t\tObject.assign( value, { orig } )\n\t\tconst descr2 = { ... descr, value }\n\t\tReflect.defineProperty( host, field, descr2 )\n\t\t\n\t\treturn descr2\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\tconst catched = new WeakMap< any , boolean >()\n\n\texport function $mol_fail_catch( error: unknown ) {\n\t\t\n\t\tif( typeof error !== 'object' ) return false\n\t\tif( $mol_promise_like( error ) ) $mol_fail_hidden( error )\n\t\tif( catched.get( error ) ) return false\n\t\t\n\t\tcatched.set( error , true )\n\t\treturn true\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_fail_log( error: unknown ) {\n\t\t\n\t\tif( $mol_promise_like( error ) ) return false\n\t\tif( !$mol_fail_catch( error ) ) return false\n\t\t\n\t\tconsole.error( error )\n\t\t\n\t\treturn true\n\t\t\n\t}\n\n}\n","namespace $ {\n\n\t/** Long-living fiber. */\n\texport class $mol_wire_atom<\n\t\tHost,\n\t\tArgs extends readonly unknown[],\n\t\tResult,\n\t> extends $mol_wire_fiber< Host, Args, Result > {\n\n\t\tstatic solo<\n\t\t\tHost,\n\t\t\tArgs extends readonly unknown[],\n\t\t\tResult,\n\t\t>(\n\t\t\thost: Host,\n\t\t\ttask: ( this: Host, ... args: Args )=> Result,\n\t\t): $mol_wire_atom< Host, Args, Result > {\n\t\t\t\n\t\t\tconst field = task.name + '<>'\n\t\t\t\n\t\t\tconst existen = Object.getOwnPropertyDescriptor( host ?? task, field )?.value\n\t\t\tif( existen ) return existen\n\t\t\t\n\t\t\tconst prefix = (host as any)?.[ Symbol.toStringTag ] ?? ( host instanceof Function ? $$.$mol_func_name( host ) : host )\n\t\t\tconst key = prefix + ( '.' + field )\n\t\t\t\n\t\t\tconst fiber = new $mol_wire_atom( key, task, host, [] as any as Args )\n\t\t\t;( host as any ?? task )[ field ] = fiber\n\t\t\t\n\t\t\treturn fiber\n\t\t}\n\t\t\n\t\tstatic plex<\n\t\t\tHost,\n\t\t\tArgs extends readonly unknown[],\n\t\t\tResult,\n\t\t>(\n\t\t\thost: Host,\n\t\t\ttask: ( this: Host , ... args: Args )=> Result,\n\t\t\tkey: Args[0],\n\t\t): $mol_wire_atom< Host, Args, Result > {\n\t\t\t\n\t\t\tconst field = task.name + '<>'\n\t\t\tlet dict = Object.getOwnPropertyDescriptor( host ?? task, field )?.value\n\t\t\tconst prefix = (host as any)?.[ Symbol.toStringTag ] ?? ( host instanceof Function ? $$.$mol_func_name( host ) : host )\n\t\t\tconst key_str = $mol_key( key )\n\t\t\t\n\t\t\tif( dict ) {\n\t\t\t\tconst existen = dict.get( key_str )\n\t\t\t\tif( existen ) return existen\n\t\t\t} else {\n\t\t\t\tdict = ( host as any ?? task )[ field ] = new Map()\n\t\t\t}\n\t\t\t\n\t\t\tconst id = prefix + ( '.' + task.name ) + ( '<' + key_str.replace( /^\"|\"$/g, \"'\" ) + '>' )\n\t\t\tconst fiber = new $mol_wire_atom( id, task, host, [ key ] as any as Args )\n\t\t\tdict.set( key_str, fiber )\n\t\t\t\n\t\t\treturn fiber\n\t\t}\n\t\t\n\t\tstatic watching = new Set< $mol_wire_atom< any, any, any > >()\n\t\tstatic watcher = null as $mol_after_frame | null\n\t\t\n\t\tstatic watch() {\n\t\t\n\t\t\t$mol_wire_atom.watcher = new $mol_after_frame( $mol_wire_atom.watch )\n\t\t\t\n\t\t\tfor( const atom of $mol_wire_atom.watching ) {\n\t\t\t\t\n\t\t\t\tif( atom.cursor === $mol_wire_cursor.final ) {\n\t\t\t\t\t$mol_wire_atom.watching.delete( atom )\n\t\t\t\t} else {\n\t\t\t\t\tatom.cursor = $mol_wire_cursor.stale\n\t\t\t\t\tatom.fresh()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twatch() {\n\t\t\t\n\t\t\tif( !$mol_wire_atom.watcher ) {\n\t\t\t\t$mol_wire_atom.watcher = new $mol_after_frame( $mol_wire_atom.watch )\n\t\t\t}\n\t\t\t\n\t\t\t$mol_wire_atom.watching.add( this )\n\t\t\t\n\t\t}\n\t\t\n\t\t/**\n\t\t * Update fiber value through another temp fiber.\n\t\t */\n\t\t@ $mol_wire_method\n\t\tresync( args: Args ) {\n\t\t\treturn this.put( this.task.call( this.host!, ... args ) )\n\t\t}\n\t\t\n\t\t@ $mol_wire_method\n\t\tonce() {\n\t\t\treturn this.sync()\n\t\t}\n\t\t\n\t\tchannel() {\n\t\t\treturn Object.assign( ( next?: $mol_type_foot< Args > )=> {\n\t\t\t\t\t\n\t\t\t\tif( next !== undefined ) return this.resync( [ ... this.args, next ] as any ) as never\n\t\t\t\tif( !$mol_wire_fiber.warm ) return this.result() as never\n\t\t\t\t\n\t\t\t\tif( $mol_wire_auto()?.temp ) {\n\t\t\t\t\treturn this.once()\n\t\t\t\t} else {\n\t\t\t\t\treturn this.sync()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}, { atom: this as $mol_wire_atom< Host, Args, Result > } )\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\t\n\t\t\tsuper.destructor()\n\t\t\t\n\t\t\tif( this.pub_from === 0 ) {\n\t\t\t\t;( this.host as any ?? this.task )[ this.field() ] = null\n\t\t\t} else {\n\t\t\t\t;( this.host as any ?? this.task )[ this.field() ].delete( $mol_key( this.args[0] ) )\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tput( next: Result | Error | Promise< Result | Error > ) {\n\t\t\t\n\t\t\tconst prev = this.cache\n\t\t\t\n\t\t\tupdate: if( next !== prev ) {\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tif( $mol_compare_deep( prev, next ) ) break update\n\t\t\t\t} catch( error: any ) {\n\t\t\t\t\t$mol_fail_log( error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( $mol_owning_check( this, prev ) ) {\n\t\t\t\t\tprev.destructor()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( $mol_owning_catch( this, next ) ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t(next as any)[ Symbol.toStringTag ] = (this as any)[ Symbol.toStringTag ]\n\t\t\t\t\t} catch { // Promises throw in strict mode\n\t\t\t\t\t\tObject.defineProperty( next, Symbol.toStringTag, { value: (this as any)[ Symbol.toStringTag ] } )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( !this.sub_empty ) this.emit()\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tthis.cache = next\n\t\t\tthis.cursor = $mol_wire_cursor.fresh\n\t\t\t\n\t\t\tif( $mol_promise_like( next ) ) return next\n\t\t\t\n\t\t\tthis.complete_pubs()\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t}\n}\n","namespace $ {\n\t\n\t/** Decorates solo object channel to [mol_wire_atom](../atom/atom.ts). */\n\texport function $mol_wire_solo< Args extends any[] >(\n\t\thost: object,\n\t\tfield: string,\n\t\tdescr?: TypedPropertyDescriptor< ( ... args: Args )=> any >\n\t) {\n\n\t\tif( !descr ) descr = Reflect.getOwnPropertyDescriptor( host , field )\n\t\tconst orig = descr?.value! ?? (host as any)[ field ]\n\t\t\n\t\tconst sup = Reflect.getPrototypeOf( host )!\n\t\tif( typeof (sup as any)[ field ] === 'function' ) {\n\t\t\tObject.defineProperty( orig , 'name' , { value : (sup as any)[ field ].name } )\n\t\t}\n\t\t\n\t\tconst descr2 = {\n\t\t\t... descr,\n\t\t\tvalue: function( this: typeof host, ... args: Args ){\n\t\t\t\n\t\t\t\tlet atom = $mol_wire_atom.solo( this, orig )\n\t\t\t\t\n\t\t\t\tif(( args.length === 0 )||( args[0] === undefined )) {\n\t\t\t\t\t\n\t\t\t\t\tif( !$mol_wire_fiber.warm ) return atom.result()\n\t\t\t\t\t\n\t\t\t\t\tif( $mol_wire_auto()?.temp ) {\n\t\t\t\t\t\treturn atom.once()\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn atom.sync()\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.resync( args )\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tReflect.defineProperty( descr2.value , 'name' , { value : orig.name + ' ' } )\n\t\tReflect.defineProperty( descr2.value , 'length' , { value : orig.length } )\n\t\tObject.assign( descr2.value, { orig } )\n\t\t\n\t\tReflect.defineProperty( host, field, descr2 )\n\t\t\n\t\treturn descr2 as any as TypedPropertyDescriptor< ( ... args: First_optional< Args > )=> any >\n\t}\n\n\ttype First_optional< Args extends any[] > = Args extends []\n\t\t? []\n\t\t: [ Args[0] | undefined, ... $mol_type_tail< Args > ]\n\n}\n","namespace $ {\n\t\n\t/** Reactive memoizing multiplexed property decorator. */\n\texport function $mol_wire_plex< Args extends [ any, ... any[] ] >(\n\t\thost: object,\n\t\tfield: string,\n\t\tdescr?: TypedPropertyDescriptor< ( ... args: Args )=> any >\n\t) {\n\n\t\tif( !descr ) descr = Reflect.getOwnPropertyDescriptor( host , field )\n\t\tconst orig = descr?.value! ?? (host as any)[ field ]\n\t\t\n\t\tconst sup = Reflect.getPrototypeOf( host )!\n\t\tif( typeof (sup as any)[ field ] === 'function' ) {\n\t\t\tObject.defineProperty( orig , 'name' , { value : (sup as any)[ field ].name } )\n\t\t}\n\t\t\n\t\tconst descr2 = {\n\t\t\t... descr,\n\t\t\tvalue: function( this: typeof host, ... args: Args ) {\n\t\t\t\n\t\t\t\tlet atom = $mol_wire_atom.plex( this, orig, args[0] )\n\t\t\t\t\n\t\t\t\tif(( args.length === 1 )||( args[1] === undefined )) {\n\t\t\t\t\t\n\t\t\t\t\tif( !$mol_wire_fiber.warm ) return atom.result()\n\t\t\t\t\t\n\t\t\t\t\tif( $mol_wire_auto()?.temp ) {\n\t\t\t\t\t\treturn atom.once()\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn atom.sync()\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.resync( args )\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tReflect.defineProperty( descr2.value , 'name' , { value : orig.name + ' ' } )\n\t\tReflect.defineProperty( descr2.value , 'length' , { value : orig.length } )\n\t\tObject.assign( descr2.value, { orig } )\n\t\t\n\t\tReflect.defineProperty( host, field, descr2 )\n\t\t\n\t\treturn descr2\n\t}\n\t\n}\n","namespace $ {\n\n\t/**\n\t * Reactive memoizing solo property decorator from [mol_wire](../wire/README.md)\n\t * @example\n\t * '@' $mol_mem\n\t * name(next?: string) {\n\t * \treturn next ?? 'default'\n\t * }\n\t * @see https://mol.hyoo.ru/#!section=docs/=qxmh6t_sinbmb\n\t */\n\texport let $mol_mem = $mol_wire_solo\n\n\t/**\n\t * Reactive memoizing multiplexed property decorator [mol_wire](../wire/README.md)\n\t * @example\n\t * '@' $mol_mem_key\n\t * name(id: number, next?: string) {\n\t * return next ?? 'default'\n\t * }\n\t * @see https://mol.hyoo.ru/#!section=docs/=qxmh6t_sinbmb\n\t */\n\texport let $mol_mem_key = $mol_wire_plex\n}\n","namespace $ {\n\t\n\texport var $mol_dom_context : typeof globalThis\n\t\n}\n","interface $node {\n\t[key:string]: any\n}\n\nvar $node = new Proxy( { require } as any , {\n\t\n\tget( target , name : string , wrapper ) {\n\n\t\tif( target[ name ] ) return target[ name ]\n\n\t\tconst mod = target.require/****/( 'module' ) as typeof import/****/( 'module' )\n\t\t\n\t\tif( mod.builtinModules.indexOf( name ) >= 0 ) return target.require ( name )\n\t\tif( name[0] === '.' ) return target.require( name )\n\n\t\ttry {\n\t\t\ttarget.require.resolve( name )\n\t\t} catch {\n\t\t\n\t\t\tconst $$ = ( $ as any )\n\t\t\t$$.$mol_exec( '.' , 'npm' , 'install' , '--omit=dev', name )\n\t\t\t\n\t\t\ttry {\n\t\t\t\t$$.$mol_exec( '.' , 'npm' , 'install' , '--omit=dev', '@types/' + name )\n\t\t\t} catch (e) {\n\t\t\t\tif ($$.$mol_fail_catch(e)) {\n\t\t\t\t\t$$.$mol_fail_log(e)\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\t\n\t\ttry {\n\t\t\treturn target.require( name )\n\t\t} catch( error ) {\n\n\t\t\tif($.$mol_fail_catch(error) && ( error as any ).code === 'ERR_REQUIRE_ESM' ) {\n\t\t\t\tconst module = cache.get( name )\n\t\t\t\tif( module ) return module\n\t\t\t\tthrow import( name ).then( module => cache.set( name, module ) )\n\t\t\t}\n\t\t\t\n\t\t\t$.$mol_fail_log( error )\n\n\t\t\treturn null\n\t\t}\n\n\t},\n\n\tset( target , name : string , value ) {\n\t\ttarget[ name ] = value\n\t\treturn true\n\t},\n\n} ) as $node\n\nconst cache = new Map< string, any >()\n\nrequire = ( req =>\n\tObject.assign( function require( name : string ) {\n\t\treturn $node[ name ]\n\t} , req )\n)( require )\n\n","namespace $ {\n\n\texport class $mol_error_mix< Cause extends {} = {} > extends AggregateError {\n\t\t\n\t\tname = $$.$mol_func_name( this.constructor ).replace( /^\\$/, '' ) + '_Error'\n\n\t\tconstructor(\n\t\t\tmessage: string,\n\t\t\treadonly cause = {} as Cause,\n\t\t\t... errors: Error[]\n\t\t) {\n\t\t\t\n\t\t\tsuper( errors, message, { cause } )\n\t\t\t\n\t\t\tconst stack_get = Object.getOwnPropertyDescriptor( this, 'stack' )?.get ?? ( ()=> super.stack )\n\t\t\t\n\t\t\tObject.defineProperty( this, 'stack', {\n\t\t\t\tget: ()=> ( stack_get.call( this ) ?? this.message ) + '\\n' + [ JSON.stringify( this.cause, null, ' ' ) ?? 'no cause', ... this.errors.map( e => e.stack ) ].map(\n\t\t\t\t\te => e.trim()\n\t\t\t\t\t\t.replace( /at /gm, ' at ' )\n\t\t\t\t\t\t.replace( /^(?! +at )(.*)/gm, ' at | $1 (#)' )\n\t\t\t\t).join('\\n')\n\t\t\t} )\n\t\t\t\n\t\t}\n\n\t\tstatic [ Symbol.toPrimitive ]() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\tstatic toString() {\n\t\t\treturn $$.$mol_func_name( this )\n\t\t}\n\n\t\tstatic make(\n\t\t\t...params: ConstructorParameters\n\t\t) {\n\t\t\treturn new this(...params)\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\texport function $mol_env() {\n\t\treturn {} as Record< string, string | undefined >\n\t}\n}\n","namespace $ {\n\t$.$mol_env = function $mol_env() {\n\t\treturn this.process.env\n\t}\n}\n","namespace $ {\n\tconst factories = new WeakMap()\n\n\tfunction factory(\n\t\tval: new (...args: Args) => Result\n\t) {\n\t\tlet make = factories.get(val) as null | ((...args: Args) => Result)\n\n\t\tif ( make ) return make\n\n\t\tmake = $mol_func_name_from((...args: Args) => new val(...args), val)\n\t\tfactories.set(val, make)\n\n\t\treturn make\n\t}\n\n\t/**\n\t * Convert asynchronous (promise-based) API to synchronous by wrapping function and method calls in a fiber.\n\t * @see https://mol.hyoo.ru/#!section=docs/=1fcpsq_1wh0h2\n\t */\n\texport function $mol_wire_sync< Host extends object >( obj: Host ) {\n\t\treturn new Proxy( obj, {\n\t\t\t\n\t\t\tget( obj, field ) {\n\t\t\t\t\n\t\t\t\tlet val = (obj as any)[ field ]\n\t\t\t\tif( typeof val !== 'function' ) return val\n\t\t\t\tconst temp = $mol_wire_task.getter(val)\n\n\t\t\t\treturn function $mol_wire_sync( this: Host, ... args: unknown[] ) {\n\t\t\t\t\tconst fiber = temp( obj, args )\n\t\t\t\t\treturn fiber.sync()\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tconstruct(obj, args) {\n\t\t\t\tconst temp = $mol_wire_task.getter(factory(obj as (new ( ... args: unknown[] )=> unknown)))\n\t\t\t\treturn temp( obj, args ).sync() as object\n\t\t\t},\n\n\t\t\tapply( obj, self, args ) {\n\t\t\t\tconst temp = $mol_wire_task.getter(obj as ( ... args: any[] )=> any)\n\t\t\t\treturn temp(self, args).sync()\n\t\t\t},\n\t\t\t\n\t\t} ) as unknown as ObjectOrFunctionResultAwaited\n\t}\n\n\ttype FunctionResultAwaited = Some extends (...args: infer Args) => infer Res\n\t\t? (...args: Args) => Awaited\n\t\t: Some\n\n\ttype ConstructorResultAwaited = Some extends new (...args: infer Args) => infer Res\n\t\t? new (...args: Args) => Res\n\t\t: {}\n\n\ttype MethodsResultAwaited = {\n\t\t[K in keyof Host]: FunctionResultAwaited\n\t}\n\n\ttype ObjectOrFunctionResultAwaited = (\n\t\tSome extends (...args: any) => unknown ? FunctionResultAwaited : {}\n\t) & ( Some extends Object ? MethodsResultAwaited & ConstructorResultAwaited : Some )\n\n}\n","namespace $ {\n\n\texport type $mol_run_error_context = {\n\t\tpid?: number\n\t\tstdout: Buffer | string\n\t\tstderr: Buffer | string\n\t}\n\n\texport class $mol_run_error extends $mol_error_mix<{\n\t\ttimeout_kill?: boolean\n\t\tpid?: number\n\t\tsignal?: NodeJS.Signals | null\n\t\tstatus?: number | null\n\t\tcommand: string\n\t\tdir: string\n\t}> {}\n\n\texport const $mol_run_spawn = (\n\t\t...args: Parameters\n\t) => $node['child_process'].spawn(...args)\n\n\texport const $mol_run_spawn_sync = (\n\t\t...args: Parameters\n\t) => $node['child_process'].spawnSync(...args)\n\n\texport type $mol_run_options = {\n\t\tcommand : readonly string[] | string\n\t\tdir : string\n\t\ttimeout?: number\n\t\tenv?: Record\n\t}\n\n\texport class $mol_run extends $mol_object {\n\n\t\tstatic async_enabled() {\n\t\t\treturn Boolean(this.$.$mol_env()['MOL_RUN_ASYNC'])\n\t\t}\n\n\t\tstatic spawn(options: $mol_run_options) {\n\t\t\tconst sync = ! this.async_enabled() || ! Boolean($mol_wire_auto())\n\t\t\tconst env = options.env ?? this.$.$mol_env()\n\n\t\t\treturn $mol_wire_sync(this).spawn_async( { ...options, sync, env } )\n\t\t}\n\n\t\tstatic spawn_async(\n\t\t\t{ dir, sync, timeout, command, env }: $mol_run_options & { sync?: boolean }\n\t\t) {\n\t\t\tconst args_raw = typeof command === 'string' ? command.split( ' ' ) : command\n\t\t\tconst [ app, ...args ] = args_raw\n\t\t\tconst opts = { shell: true, cwd: dir, env }\n\n\t\t\tconst log_object = {\n\t\t\t\tplace: `${this}.spawn()`,\n\t\t\t\tmessage: 'Run',\n\t\t\t\tcommand: args_raw.join(' ') ,\n\t\t\t\tdir: $node.path.relative( '' , dir ) ,\n\t\t\t}\n\n\t\t\tif (sync) {\n\n\t\t\t\tthis.$.$mol_log3_come({\n\t\t\t\t\thint: 'Run inside fiber',\n\t\t\t\t\t...log_object\n\t\t\t\t})\n\n\t\t\t\tlet error: Error | undefined\n\t\t\t\tlet res\n\n\t\t\t\ttry {\n\t\t\t\t\tres = this.$.$mol_run_spawn_sync(app, args, opts)\n\t\t\t\t\terror = res.error\n\t\t\t\t} catch (err) {\n\t\t\t\t\terror = err as Error\n\t\t\t\t}\n\n\t\t\t\tif (! res || error || res.status) {\n\t\t\t\t\tthrow new $mol_run_error(\n\t\t\t\t\t\tthis.error_message(res),\n\t\t\t\t\t\t{ ...log_object, status: res?.status, signal: res?.signal },\n\t\t\t\t\t\t...(error ? [error] : [])\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\treturn res\n\t\t\t}\n\n\t\t\tlet sub\n\n\t\t\ttry {\n\t\t\t\tsub = this.$.$mol_run_spawn(app, args, {\n\t\t\t\t\t...opts,\n\t\t\t\t\tstdio: [ 'pipe', 'inherit', 'inherit' ],\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tthrow new $mol_run_error(\n\t\t\t\t\tthis.error_message(undefined),\n\t\t\t\t\tlog_object,\n\t\t\t\t\terror as Error\n\t\t\t\t)\n\t\t\t}\n\t\n\t\t\tconst pid = sub.pid ?? 0\n\n\t\t\tthis.$.$mol_log3_come({\n\t\t\t\t...log_object,\n\t\t\t\tpid,\n\t\t\t})\n\t\n\t\t\tlet timeout_kill = false\n\t\t\tlet timer: undefined | ReturnType\n\t\n\t\t\tconst std_data = [] as Buffer[]\n\t\t\tconst error_data = [] as Buffer[]\n\t\n\t\t\tconst add = (std_chunk?: Buffer, error_chunk?: Buffer) => {\n\t\t\t\tif (std_chunk) std_data.push(std_chunk)\n\t\t\t\tif (error_chunk) error_data.push(error_chunk)\n\t\t\t\tif (! timeout) return\n\t\n\t\t\t\tclearTimeout(timer)\n\t\n\t\t\t\ttimer = setTimeout(() => {\n\t\t\t\t\tconst signal = timeout_kill ? 'SIGKILL' : 'SIGTERM'\n\t\t\t\t\ttimeout_kill = true\n\t\t\t\t\tadd()\n\t\t\t\t\tsub.kill(signal)\n\t\t\t\t}, timeout)\n\t\t\t}\n\t\n\t\t\tadd()\n\t\n\t\t\tsub.stdout?.on('data', data => add(data) )\n\t\t\tsub.stderr?.on('data', data => add(undefined, data) )\n\t\n\t\t\tconst result_promise = new Promise<$mol_run_error_context>((done, fail) => {\n\t\t\t\tconst close = (error: Error | null, status: number | null = null, signal: NodeJS.Signals | null = null) => {\n\t\t\t\t\tif (! timer && timeout) return\n\t\n\t\t\t\t\tclearTimeout(timer)\n\t\t\t\t\ttimer = undefined\n\t\n\t\t\t\t\tconst res = {\n\t\t\t\t\t\tpid,\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tget stdout() { return Buffer.concat(std_data) },\n\t\t\t\t\t\tget stderr() { return Buffer.concat(error_data) }\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tif (error || status || timeout_kill) return fail( new $mol_run_error(\n\t\t\t\t\t\tthis.error_message(res) + (timeout_kill ? ', timeout' : ''),\n\t\t\t\t\t\t{ ...log_object, pid, status, signal, timeout_kill },\n\t\t\t\t\t\t...error ? [ error ] : []\n\t\t\t\t\t) )\n\n\t\t\t\t\tthis.$.$mol_log3_done({\n\t\t\t\t\t\t...log_object,\n\t\t\t\t\t\tpid,\n\t\t\t\t\t})\n\t\t\t\n\t\t\t\t\tdone(res)\n\t\t\t\t}\n\t\n\t\t\t\tsub.on('disconnect', () => close(new Error('Disconnected')) )\n\t\t\t\tsub.on('error', err => close(err) )\n\t\t\t\tsub.on('exit', (status, signal) => close(null, status, signal) )\n\t\t\t})\n\t\n\t\t\treturn Object.assign(result_promise, { destructor: () => {\n\t\t\t\tclearTimeout(timer)\n\t\t\t\tsub.kill('SIGKILL')\n\t\t\t} })\n\t\t}\n\n\t\tstatic error_message(res?: $mol_run_error_context) {\n\t\t\treturn res?.stderr.toString() || res?.stdout.toString() || 'Run error'\n\t\t}\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_exec(\n\t\tthis : $ ,\n\t\tdir : string ,\n\t\tcommand : string ,\n\t\t...args : readonly string[]\n\t) {\n\t\treturn this.$mol_run.spawn( { command: [ command, ...args ], dir } )\n\t}\n}\n","namespace $ {\n\t\n\t$.$mol_dom_context = new $node.jsdom.JSDOM( '' , { url : 'https://localhost/' } ).window as any\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_selection extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic focused( next? : Element[], notify?: 'notify' ) : Element[] {\n\t\t\t\n\t\t\tconst parents : Element[] = []\n\t\t\tlet element = next?.[0] ?? $mol_dom_context.document.activeElement\n\t\t\t\n\t\t\twhile( element ) {\n\t\t\t\tparents.push( element )\n\t\t\t\telement = element.parentNode as HTMLElement\n\t\t\t}\n\t\t\t\n\t\t\tif( !next || notify ) return parents\n\t\t\t\n\t\t\tnew $mol_after_tick( ()=> {\n\t\t\t\t\n\t\t\t\tconst element = this.focused()![0] as HTMLElement\n\t\t\t\t\n\t\t\t\tif( element ) element.focus()\n\t\t\t\telse $mol_dom_context.blur()\n\t\t\t\t\n\t\t\t} )\n\n\t\t\treturn parents\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\texport class $mol_wrapper extends $mol_object2 {\n\n\t\tstatic wrap : ( task : ( ... ags : any[] )=> any )=> ( ... ags : any[] )=> any\n\t\t\n\t\tstatic run< Result >( task : ()=> Result ) : Result {\n\t\t\treturn this.func( task )()\n\t\t}\n\t\n\t\tstatic func< Args extends any[] , Result , Host = void >(\n\t\t\tfunc : ( this : Host , ... args : Args )=> Result\n\t\t) : ( this : Host , ... args : Args )=> Result {\n\t\t\treturn this.wrap( func )\n\t\t}\n\n\t\tstatic get class() {\n\n\t\t\treturn < Class extends new ( ... args : any[] )=> any >(\n\t\t\t\tClass : Class\n\t\t\t) => {\n\n\t\t\t\ttype Args = ConstructorParameters< Class >\n\t\t\t\ttype Result = InstanceType< Class >\n\n\t\t\t\tconst construct = ( target : Class , args : Args )=> new Class( ... args )\n\n\t\t\t\tconst handler: ProxyHandler = {\n\t\t\t\t\tconstruct : this.func( construct )\n\t\t\t\t} \n\n\t\t\t\t;(handler as any)[ Symbol.toStringTag ] = Class.name + '#'\n\n\t\t\t\treturn new Proxy( Class , handler )\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t\tstatic get method() {\n\t\t\t\n\t\t\treturn (\n\t\t\t\tobj : object,\n\t\t\t\tname : PropertyKey,\n\t\t\t\tdescr : PropertyDescriptor,\n\t\t\t) => {\n\t\t\t\tdescr.value = this.func( descr.value! )\n\t\t\t\treturn descr\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tstatic get field() {\n\t\t\t\n\t\t\treturn <\n\t\t\t\tHost ,\n\t\t\t\tField extends keyof Host ,\n\t\t\t\tArgs extends any[] ,\n\t\t\t\tResult ,\n\t\t\t>(\n\t\t\t\tobj : Host ,\n\t\t\t\tname : Field ,\n\t\t\t\tdescr : TypedPropertyDescriptor< Result >\n\t\t\t) => {\n\t\t\t\tdescr.get = descr.set = this.func( descr.get! )\n\t\t\t\treturn descr\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_memo extends $mol_wrapper {\n\t\t\n\t\tstatic wrap< This extends object , Value >( task : ( this : This , next? : Value )=> Value ) {\n\n\t\t\tconst store = new WeakMap< This , Value >()\n\n\t\t\tconst fun = function( this : This , next? : Value ) {\n\n\t\t\t\tif( next === undefined && store.has( this ) ) return store.get( this )\n\t\t\t\t\n\t\t\t\tconst val = task.call( this , next ) ?? next\n\t\t\t\t\n\t\t\t\tstore.set( this , val! )\n\t\t\t\t\n\t\t\t\treturn val\n\n\t\t\t}\n\n\t\t\tReflect.defineProperty( fun , 'name' , { value : task.name + ' ' } )\n\n\t\t\treturn fun\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport var $mol_dom = $mol_dom_context\n\t\n}\n","namespace $ {\n\n\texport function $mol_dom_qname( name : string ) {\n\t\treturn name.replace( /\\W/g , '' ).replace( /^(?=\\d+)/ , '_' )\n\t}\n\n}\n","namespace $ {\n\t\n\t/** Run code without state changes */\n\texport function $mol_wire_probe< Value >(\n\t\ttask : ()=> Value, def?: Value\n\t) : Value | undefined {\n\t\t\n\t\tconst warm = $mol_wire_fiber.warm\n\t\t\n\t\ttry {\n\t\t\t$mol_wire_fiber.warm = false\n\t\t\tconst res = task()\n\t\t\tif( res === undefined ) return def\n\t\t\treturn res\n\t\t} finally {\n\t\t\t$mol_wire_fiber.warm = warm\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/**\n\t * Real-time refresh current atom.\n\t * Don't use if possible. May reduce performance.\n\t */\n\texport function $mol_wire_watch() {\n\t\tconst atom = $mol_wire_auto()\n\t\tif( atom instanceof $mol_wire_atom ) {\n\t\t\tatom.watch()\n\t\t} else {\n\t\t\t$mol_fail( new Error( 'Atom is required for watching' ) )\n\t\t}\n\t}\n\t\n}\n","namespace $ { \n\t/**\n\t * Returns closure that returns constant value.\n\t * @example\n\t * const rnd = $mol_const( Math.random() )\n\t */\n\texport function $mol_const< Value >( value : Value ) {\n\t\tconst getter = <{ () : Value , '()' : Value }> ( () => value )\n\t\tgetter['()'] = value\n\t\t;(getter as any)[ Symbol.toStringTag ] = value\n\t\t;(getter as any )[ $mol_dev_format_head ] = ()=> $mol_dev_format_span( {} , '()=> ', $mol_dev_format_auto( value ) )\n\t\treturn getter\n\t}\n}\n","namespace $ {\n\t\n\t/**\n\t * Disable reaping of current subscriber\n\t */\n\texport function $mol_wire_solid() {\n\t\tlet current = $mol_wire_auto() as $mol_wire_fiber< any, any, any >\n\t\tif( current!.temp ) current = current!.host\n\t\tif( current!.reap !== nothing ) {\n\t\t\tcurrent?.sub_on( sub, sub.data.length )\n\t\t}\n\t\tcurrent!.reap = nothing\n\t}\n\t\n\tconst nothing = ()=> {}\n\tconst sub = new $mol_wire_pub_sub\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_attributes (\n\t\tel : Element ,\n\t\tattrs : { [ key : string ] : string|number|boolean|null }\n\t) {\n\n\t\tfor( let name in attrs ) {\n\n\t\t\tlet val = attrs[ name ] as any\n\n\t\t\tif( val === undefined ) {\n\t\t\t\t\n\t\t\t\tcontinue\n\t\t\t\t\n\t\t\t} else if( val === null || val === false ) {\n\n\t\t\t\tif( !el.hasAttribute( name ) ) continue\n\t\t\t\t\n\t\t\t\tel.removeAttribute( name )\n\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tconst str = String( val )\n\t\t\t\tif( el.getAttribute( name ) === str ) continue\n\t\t\t\t\n\t\t\t\tel.setAttribute( name , str )\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_events (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any },\n\t\tpassive = false\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , events[ name ] , { passive } )\n\t\t}\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_styles (\n\t\tel : Element ,\n\t\tstyles : { [ key : string ] : string|number }\n\t) {\n\t\tfor( let name in styles ) {\n\t\t\tlet val = styles[ name ]\n\t\t\t\n\t\t\tconst style = ( el as HTMLElement ).style as any\n\t\t\tconst kebab = ( name : string )=> name.replace( /[A-Z]/g , letter => '-' + letter.toLowerCase() )\n\t\t\t\n\t\t\tif( typeof val === 'number' ) {\n\t\t\t\tstyle.setProperty(kebab(name), `${ val }px`);\n\t\t\t} else {\n\t\t\t\tstyle.setProperty(kebab(name), val);\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_dom_render_children (\n\t\tel : Element | DocumentFragment ,\n\t\tchildNodes : NodeList | Array< Node | string | null >\n\t) {\n\t\tconst node_set = new Set< Node | string | null >( childNodes )\n\t\t\n\t\tlet nextNode : Node | null = el.firstChild\n\t\tfor( let view of childNodes ) {\n\n\t\t\tif( view == null ) continue\n\n\t\t\tif( view instanceof $mol_dom_context.Node ) {\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\tel.appendChild( view )\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif( nextNode == view ) {\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( node_set.has( nextNode ) ) {\n\t\t\t\t\t\t\tel.insertBefore( view , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst nn = nextNode.nextSibling\n\t\t\t\t\t\t\tel.removeChild( nextNode )\n\t\t\t\t\t\t\tnextNode = nn\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\tconst str = String( view )\n\t\t\t\t\tif( nextNode.nodeValue !== str ) nextNode.nodeValue = str\n\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t} else {\n\t\t\t\t\tconst textNode = $mol_dom_context.document.createTextNode( String( view ) )\n\t\t\t\t\tel.insertBefore( textNode , nextNode )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twhile( nextNode ) {\n\t\t\tconst currNode = nextNode\n\t\t\tnextNode = currNode.nextSibling\n\t\t\tel.removeChild( currNode )\n\t\t}\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_fields (\n\t\tel : Element ,\n\t\tfields : { [ key : string ] : any }\n\t) {\n\t\tfor( let key in fields ) {\n\t\t\t\n\t\t\tconst val : any = fields[ key ]\n\t\t\t\n\t\t\tif( val === undefined ) continue\n\t\t\tif( val === (el as any)[ key ] ) continue\n\t\t\t\n\t\t\t(el as any)[ key ] = val\n\t\t}\n\t}\n\n}\n","namespace $ {\n\t\n\t/** Convert a pseudo-synchronous (Suspense API) API to an explicit asynchronous one (for integrating with external systems). */\n\texport function $mol_wire_async< Host extends object >( obj: Host ) {\n\t\t\n\t\tlet fiber: $mol_wire_fiber< any, any, any >\n\t\tconst temp = $mol_wire_task.getter( obj as ( ... args: any[] )=> any )\n\t\t\n\t\treturn new Proxy( obj, {\n\t\t\t\n\t\t\tget( obj, field ) {\n\t\t\t\t\n\t\t\t\tconst val = (obj as any)[ field ]\n\t\t\t\tif( typeof val !== 'function' ) return val\n\t\t\t\t\n\t\t\t\tlet fiber: $mol_wire_fiber< any, any, any >\n\t\t\t\tconst temp = $mol_wire_task.getter( val ) \n\t\t\t\t\n\t\t\t\treturn function $mol_wire_async( this: Host, ... args: any[] ) {\n\t\t\t\t\tfiber?.destructor()\n\t\t\t\t\tfiber = temp( obj, args )\n\t\t\t\t\treturn fiber.async()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t},\n\t\t\t\n\t\t\tapply( obj, self, args ) {\n\t\t\t\tfiber?.destructor()\n\t\t\t\tfiber = temp( self, args )\n\t\t\t\treturn fiber.async()\n\t\t\t},\n\t\t\t\n\t\t} ) as unknown as ObjectOrFunctionResultPromisify\n\t\t\n\t}\n\n\ttype FunctionResultPromisify = Some extends (...args: infer Args) => infer Res\n\t\t? Res extends PromiseLike ? Some : (...args: Args) => Promise\n\t\t: Some\n\n\ttype MethodsResultPromisify = {\n\t\t[K in keyof Host]: FunctionResultPromisify\n\t}\n\n\ttype ObjectOrFunctionResultPromisify = (\n\t\tSome extends (...args: any) => unknown ? FunctionResultPromisify : {}\n\t) & ( Some extends Object ? MethodsResultPromisify : Some )\n\n}\n","namespace $ {\n\n\texport function $mol_style_attach(\n\t\tid : string ,\n\t\ttext : string ,\n\t) {\n\n\t\tconst doc = $mol_dom_context.document\n\t\tif( !doc ) return null\n\t\t\n\t\tconst elid = `$mol_style_attach:${id}`\n\t\t\n\t\tlet el = doc.getElementById( elid ) as HTMLStyleElement\n\t\tif( !el ) {\n\t\t\tel = doc.createElement('style')\n\t\t\tel.id = elid\n\t\t\tdoc.head.appendChild( el )\n\t\t}\n\t\tif( el.innerHTML != text ) el.innerHTML = text\n\t\t\n\t\treturn el\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_decor< Value > {\n\t\t\n\t\tconstructor(\n\t\t\treadonly value : Value\n\t\t) {}\n\n\t\tprefix() { return '' }\n\t\tvalueOf() { return this.value }\n\t\tpostfix() { return '' }\n\n\t\ttoString(){\n\t\t\treturn `${ this.prefix() }${ this.valueOf() }${ this.postfix() }`\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\t\n\texport type $mol_style_unit_length =\n\t| '%'\n\t| 'px' | 'cm' | 'mm' | 'Q' | 'in' | 'pc' | 'pt'\n\t| 'cap' | 'ch' | 'em' | 'rem' | 'ex' | 'ic' | 'lh' | 'rlh'\n\t| 'vh' | 'vw' | 'vi' | 'vb' | 'vmin' | 'vmax'\n\t\n\texport type $mol_style_unit_angle = 'deg' | 'rad' | 'grad' | 'turn'\n\t\n\texport type $mol_style_unit_time = 's' | 'ms'\n\n\texport type $mol_style_unit_any = $mol_style_unit_length | $mol_style_unit_angle | $mol_style_unit_time\n\n\texport type $mol_style_unit_str< Quanity extends $mol_style_unit_any = $mol_style_unit_any> = `${number}${Quanity}`\n\n\t/**\n\t * CSS Units\n\t * @see https://mol.hyoo.ru/#!section=docs/=xwq9q5_f966fg\n\t */\n\texport class $mol_style_unit<\n\t\tLiteral extends $mol_style_unit_any\n\t> extends $mol_decor< number > {\n\n\t\tconstructor(\n\t\t\tvalue : number,\n\t\t\treadonly literal : Literal,\n\t\t) {\n\t\t\tsuper( value )\n\t\t}\n\n\t\tpostfix() {\n\t\t\treturn this.literal\n\t\t}\n\n\t\tstatic per( value : number ) { return `${value}%` as const }\n\t\tstatic px( value : number ) { return `${ value }px` as const }\n\t\tstatic mm( value : number ) { return `${value}mm` as const }\n\t\tstatic cm( value : number ) { return `${value}cm` as const }\n\t\tstatic Q( value : number ) { return `${value}Q` as const }\n\t\tstatic in( value : number ) { return `${value}in` as const }\n\t\tstatic pc( value : number ) { return `${value}pc` as const }\n\t\tstatic pt( value : number ) { return `${value}pt` as const }\n\t\tstatic cap( value : number ) { return `${value}cap` as const }\n\t\tstatic ch( value : number ) { return `${value}ch` as const }\n\t\tstatic em( value : number ) { return `${value}em` as const }\n\t\tstatic rem( value : number ) { return `${value}rem` as const }\n\t\tstatic ex( value : number ) { return `${value}ex` as const }\n\t\tstatic ic( value : number ) { return `${value}ic` as const }\n\t\tstatic lh( value : number ) { return `${value}lh` as const }\n\t\tstatic rlh( value : number ) { return `${value}rlh` as const }\n\t\tstatic vh( value : number ) { return `${value}vh` as const }\n\t\tstatic vw( value : number ) { return `${value}vw` as const }\n\t\tstatic vi( value : number ) { return `${value}vi` as const }\n\t\tstatic vb( value : number ) { return `${value}vb` as const }\n\t\tstatic vmin( value : number ) { return `${value}vmin` as const }\n\t\tstatic vmax( value : number ) { return `${value}vmax` as const }\n\t\t\n\t\tstatic deg( value : number ) { return `${value}deg` as const }\n\t\tstatic rad( value : number ) { return `${value}rad` as const }\n\t\tstatic grad( value : number ) { return `${value}grad` as const }\n\t\tstatic turn( value : number ) { return `${value}turn` as const }\n\n\t\tstatic s( value : number ) { return `${value}s` as const }\n\t\tstatic ms( value : number ) { return `${value}ms` as const }\n\t\n\t}\n\n}\n","namespace $ {\n\n\texport type $mol_style_func_name =\n\t| 'calc'\n\t| 'hsla'\n\t| 'rgba'\n\t| 'var'\n\t| 'clamp'\n\t| 'scale'\n\t| 'cubic-bezier'\n\t| 'linear'\n\t| 'steps'\n\t| $mol_style_func_image\n\t| $mol_style_func_filter\n\t\n\texport type $mol_style_func_image =\n\t| 'url'\n\t| 'linear-gradient'\n\t| 'radial-gradient'\n\t| 'conic-gradient'\n\t\n\texport type $mol_style_func_filter =\n\t| 'blur'\n\t| 'brightness'\n\t| 'contrast'\n\t| 'drop-shadow'\n\t| 'grayscale'\n\t| 'hue-rotate'\n\t| 'invert'\n\t| 'opacity'\n\t| 'sepia'\n\t| 'saturate'\n\n\tconst { per } = $mol_style_unit\n\t\n\t/**\n\t * CSS Functions\n\t * @see https://mol.hyoo.ru/#!section=docs/=xwq9q5_f966fg\n\t */\n\texport class $mol_style_func<\n\t\tName extends $mol_style_func_name ,\n\t\tValue = unknown,\n\t> extends $mol_decor< Value > {\n\n\t\tconstructor(\n\t\t\treadonly name : Name,\n\t\t\tvalue : Value,\n\t\t) {\n\t\t\tsuper( value )\n\t\t}\n\n\t\tprefix() { return this.name + '(' }\n\t\tpostfix() { return ')' }\n\n\t\tstatic linear_gradient< Value >( value : Value ) {\n\t\t\treturn new $mol_style_func( 'linear-gradient' , value )\n\t\t}\n\n\t\tstatic calc< Value >( value : Value ) {\n\t\t\treturn new $mol_style_func( 'calc' , value )\n\t\t}\n\n\t\tstatic vary< Name extends string, Value extends string >( name : Name, defaultValue? : Value ) {\n\t\t\treturn new $mol_style_func( 'var' , defaultValue ? [name, defaultValue] : name )\n\t\t}\n\n\t\tstatic url< Href extends string >( href : Href ) {\n\t\t\treturn new $mol_style_func( 'url' , JSON.stringify( href ) )\n\t\t}\n\n\t\tstatic hsla(\n\t\t\thue: number,\n\t\t\tsaturation: number,\n\t\t\tlightness: number,\n\t\t\talpha: number,\n\t\t) {\n\t\t\treturn new $mol_style_func(\n\t\t\t\t'hsla',\n\t\t\t\t[ hue , per( saturation ) , per( lightness ) , alpha ],\n\t\t\t)\n\t\t}\n\t\n\t\tstatic clamp(\n\t\t\tmin: $mol_style_unit_str< any >,\n\t\t\tmid: $mol_style_unit_str< any >,\n\t\t\tmax: $mol_style_unit_str< any >,\n\t\t) {\n\t\t\treturn new $mol_style_func(\n\t\t\t\t'clamp',\n\t\t\t\t[ min, mid, max ],\n\t\t\t)\n\t\t}\n\t\n\t\tstatic rgba(\n\t\t\tred: number,\n\t\t\tgreen: number,\n\t\t\tblue: number,\n\t\t\talpha: number,\n\t\t) {\n\t\t\treturn new $mol_style_func(\n\t\t\t\t'rgba',\n\t\t\t\t[ red , green , blue , alpha ],\n\t\t\t)\n\t\t}\n\t\n\t\tstatic scale(\n\t\t\tzoom: number,\n\t\t) {\n\t\t\treturn new $mol_style_func( 'scale', [ zoom ] )\n\t\t}\n\t\t\n\t\tstatic linear(\n\t\t\t...breakpoints : Array]>\n\t\t){\n\t\t\treturn new $mol_style_func(\n\t\t\t\t\"linear\",\n\t\t\t\tbreakpoints.map((e) =>\n\t\t\t\t\tArray.isArray(e)\n\t\t\t\t\t\t? String(e[0]) +\n\t\t\t\t\t\t \" \" +\n\t\t\t\t\t\t (typeof e[1] === \"number\" ? e[1] + \"%\" : e[1].toString())\n\t\t\t\t\t\t: String(e)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\t\n\t\tstatic cubic_bezier(\n\t\t\tx1: number,\n\t\t\ty1: number,\n\t\t\tx2: number,\n\t\t\ty2: number\n\t\t){\n\t\t\treturn new $mol_style_func( 'cubic-bezier', [ x1, y1, x2, y2 ]);\n\t\t}\n\t\t\n\t\tstatic steps(value: number, step_position: 'jump-start' | 'jump-end' | 'jump-none' | 'jump-both' | 'start' | 'end'){\n\t\t\treturn new $mol_style_func( 'steps', [ value, step_position ] )\n\t\t}\n\t\t\n\t\tstatic blur(value?: $mol_style_unit_str<$mol_style_unit_length>){\n\t\t\treturn new $mol_style_func( 'blur', value ?? \"\" );\n\t\t}\n\t\t\n\t\tstatic brightness(value?: number | $mol_style_unit_str<'%'>){\n\t\t\treturn new $mol_style_func( 'brightness', value ?? \"\" );\n\t\t}\n\t\t\n\t\tstatic contrast(value?: number | $mol_style_unit_str<'%'>){\n\t\t\treturn new $mol_style_func( 'contrast', value ?? \"\" );\n\t\t}\n\t\t\n\t\tstatic drop_shadow(\n\t\t\tcolor: $mol_style_properties_color,\n\t\t\tx_offset: $mol_style_unit_str<$mol_style_unit_length>,\n\t\t\ty_offset: $mol_style_unit_str<$mol_style_unit_length>,\n\t\t\tblur_radius?: $mol_style_unit_str<$mol_style_unit_length>\n\t\t) {\n\t\t\treturn new $mol_style_func(\n\t\t\t\t\"drop-shadow\",\n\t\t\t\tblur_radius\n\t\t\t\t\t? [color, x_offset, y_offset, blur_radius]\n\t\t\t\t\t: [color, x_offset, y_offset]\n\t\t\t);\n\t\t}\n\t\t\n\t\tstatic grayscale(value?: number | $mol_style_unit_str<'%'>){\n\t\t\treturn new $mol_style_func( 'grayscale', value ?? \"\" );\n\t\t}\n\t\t\n\t\tstatic hue_rotate(value?: 0 | $mol_style_unit_str<$mol_style_unit_angle>){\n\t\t\treturn new $mol_style_func( 'hue-rotate', value ?? \"\")\n\t\t}\n\t\t\n\t\tstatic invert(value?: number | $mol_style_unit_str<'%'>){\n\t\t\treturn new $mol_style_func( 'invert', value ?? \"\" );\n\t\t}\n\t\t\n\t\tstatic opacity(value?: number | $mol_style_unit_str<'%'>){\n\t\t\treturn new $mol_style_func( 'opacity', value ?? \"\" );\n\t\t}\n\t\t\n\t\tstatic sepia(value?: number | $mol_style_unit_str<'%'>){\n\t\t\treturn new $mol_style_func( 'sepia', value ?? \"\" );\n\t\t}\n\t\t\n\t\tstatic saturate(value?: number | $mol_style_unit_str<'%'>){\n\t\t\treturn new $mol_style_func( 'saturate', value ?? \"\" );\n\t\t}\n\t\n\t}\n\n}\n","namespace $ {\n\t\n\t/** Create record of CSS variables. */\n\texport function $mol_style_prop< Keys extends string[] >(\n\t\tprefix: string ,\n\t\tkeys: Keys\n\t) {\n\t\t\n\t\tconst record = keys.reduce( ( rec , key: Keys[number] )=> {\n\t\t\t\n\t\t\trec[ key ] = $mol_style_func.vary( `--${ prefix }_${ key }` )\n\t\t\treturn rec\n\t\t\t\n\t\t}, {} as Record< Keys[number], $mol_style_func< 'var' > > )\n\t\t\n\t\treturn record\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\t/**\n\t * Theme css variables\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_textarea_demo\n\t */\t\n\texport const $mol_theme = $mol_style_prop(\n\t\t'mol_theme',\n\t\t[\n\t\t\t'back',\n\t\t\t'hover',\n\t\t\t'card',\n\t\t\t'current',\n\t\t\t'special',\n\t\t\t'text',\n\t\t\t'control',\n\t\t\t'shade',\n\t\t\t'line',\n\t\t\t'focus',\n\t\t\t'field',\n\t\t\t'image',\n\t\t] as const\n\t)\n\n}\n","namespace $ { $mol_style_attach( \"mol/theme/theme.css\",\n \":root {\\n\\t--mol_theme_hue: 210deg;\\n\\t--mol_theme_hue_spread: 90deg;\\n}\\n\\n:where([mol_theme]) {\\n\\tcolor: var(--mol_theme_text);\\n\\tfill: var(--mol_theme_text);\\n\\tbackground-color: var(--mol_theme_back);\\n}\\n\\t\\n:root, [mol_theme=\\\"$mol_theme_dark\\\"], :where([mol_theme=\\\"$mol_theme_dark\\\"]) [mol_theme] {\\n\\n\\t--mol_theme_luma: -1;\\n\\t--mol_theme_image: invert(1) hue-rotate( 180deg );\\n\\n\\t--mol_theme_back: hsl( var(--mol_theme_hue), 20%, 10% );\\n\\t--mol_theme_card: hsl( var(--mol_theme_hue), 50%, 20%, .25 );\\n\\t--mol_theme_field: hsl( var(--mol_theme_hue), 50%, 8%, .25 );\\n\\t--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );\\n\\t\\n\\t--mol_theme_text: hsl( var(--mol_theme_hue), 0%, 80% );\\n\\t--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 60%, 1 );\\n\\t--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .25 );\\n\\t--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, 65% );\\n\\t\\n\\t--mol_theme_control: hsl( var(--mol_theme_hue), 60%, 65% );\\n\\t--mol_theme_current: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 60%, 65% );\\n\\t--mol_theme_special: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 60%, 65% );\\n\\n\\t/* --mol_theme_back: oklch( 20% .03 var(--mol_theme_hue) );\\n\\t--mol_theme_card: oklch( 35% .05 var(--mol_theme_hue) / .25 );\\n\\t--mol_theme_field: oklch( 0% 0 var(--mol_theme_hue) / .25 );\\n\\t--mol_theme_hover: oklch( 70% 0 var(--mol_theme_hue) / .1 );\\n\\t\\n\\t--mol_theme_text: oklch( 80% 0 var(--mol_theme_hue) );\\n\\t--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );\\n\\t--mol_theme_line: oklch( 50% 0 var(--mol_theme_hue) / .2 );\\n\\t--mol_theme_focus: oklch( 80% .2 calc( var(--mol_theme_hue) + 120deg ) );\\n\\t\\n\\t--mol_theme_control: oklch( 70% .1 var(--mol_theme_hue) );\\n\\t--mol_theme_current: oklch( 80% .2 calc( var(--mol_theme_hue) - 60deg ) );\\n\\t--mol_theme_special: oklch( 80% .3 calc( var(--mol_theme_hue) + 60deg ) ); */\\n\\n}\\n\\n[mol_theme=\\\"$mol_theme_light\\\"], :where([mol_theme=\\\"$mol_theme_light\\\"]) [mol_theme] {\\n\\t\\n\\t--mol_theme_luma: 1;\\n\\t--mol_theme_image: none;\\n\\t\\n\\t--mol_theme_back: hsl( var(--mol_theme_hue), 20%, 92% );\\n\\t--mol_theme_card: hsl( var(--mol_theme_hue), 50%, 100%, .5 );\\n\\t--mol_theme_field: hsl( var(--mol_theme_hue), 50%, 100%, .75 );\\n\\t--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );\\n\\t\\n\\t--mol_theme_text: hsl( var(--mol_theme_hue), 0%, 0% );\\n\\t--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 40%, 1 );\\n\\t--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .25 );\\n\\t--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, 40% );\\n\\t\\n\\t--mol_theme_control: hsl( var(--mol_theme_hue), 80%, 30% );\\n\\t--mol_theme_current: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 80%, 30% );\\n\\t--mol_theme_special: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 80%, 30% );\\n\\t\\n\\t/* --mol_theme_back: oklch( 93% .01 var(--mol_theme_hue) );\\n\\t--mol_theme_card: oklch( 100% .02 var(--mol_theme_hue) / .25 );\\n\\t--mol_theme_field: oklch( 100% 0 var(--mol_theme_hue) / .5 );\\n\\t--mol_theme_hover: oklch( 70% 0 var(--mol_theme_hue) / .1 );\\n\\t\\n\\t--mol_theme_text: oklch( 20% 0 var(--mol_theme_hue) );\\n\\t--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );\\n\\t--mol_theme_line: oklch( 70% 0 var(--mol_theme_hue) / .2 );\\n\\t--mol_theme_focus: oklch( 20% .8 calc( var(--mol_theme_hue) + 120deg ) );\\n\\t\\n\\t--mol_theme_control: oklch( 45% .25 var(--mol_theme_hue) );\\n\\t--mol_theme_current: oklch( 45% .5 calc( var(--mol_theme_hue) - 60deg ) );\\n\\t--mol_theme_special: oklch( 45% .5 calc( var(--mol_theme_hue) + 60deg ) ); */\\n\\n}\\n\\n:where( :root, [mol_theme=\\\"$mol_theme_dark\\\"] ) [mol_theme=\\\"$mol_theme_base\\\"] {\\n\\t--mol_theme_back: hsl( var(--mol_theme_hue), 50%, 30% );\\n\\t--mol_theme_card: hsl( var(--mol_theme_hue), 40%, 20%, .25 );\\n\\t/* --mol_theme_back: oklch( 25% .05 var(--mol_theme_hue) );\\n\\t--mol_theme_card: oklch( 35% .1 var(--mol_theme_hue) / .25 ); */\\n}\\n:where( [mol_theme=\\\"$mol_theme_light\\\"] ) [mol_theme=\\\"$mol_theme_base\\\"] {\\n\\t--mol_theme_back: hsl( var(--mol_theme_hue), 50%, 80% );\\n\\t--mol_theme_card: hsl( var(--mol_theme_hue), 80%, 95%, .25 );\\n\\t/* --mol_theme_back: oklch( 95% .02 var(--mol_theme_hue) );\\n\\t--mol_theme_card: oklch( 80% .05 var(--mol_theme_hue) / .25 ); */\\n}\\n\\n:where( :root, [mol_theme=\\\"$mol_theme_dark\\\"] ) [mol_theme=\\\"$mol_theme_accent\\\"] {\\n\\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + 180deg ), 90%, 30% );\\n\\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + 180deg ), 80%, 20%, .25 );\\n\\t/* --mol_theme_back: oklch( 40% .2 calc( var(--mol_theme_hue) + 120deg ) );\\n\\t--mol_theme_card: oklch( 50% .3 calc( var(--mol_theme_hue) + 120deg ) / .25 ); */\\n}\\n:where( [mol_theme=\\\"$mol_theme_light\\\"] ) [mol_theme=\\\"$mol_theme_accent\\\"] {\\n\\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + 180deg ), 90%, 75% );\\n\\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + 180deg ), 80%, 90%, .25 );\\n\\t/* --mol_theme_back: oklch( 90% .03 calc( var(--mol_theme_hue) + 120deg ) );\\n\\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) + 120deg ) / .25 ); */\\n}\\n\\n:where( :root, [mol_theme=\\\"$mol_theme_dark\\\"] ) [mol_theme=\\\"$mol_theme_current\\\"] {\\n\\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 50%, 30% );\\n\\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 40%, 20%, .25 );\\n\\t/* --mol_theme_back: oklch( 25% .05 calc( var(--mol_theme_hue) - 60deg ) );\\n\\t--mol_theme_card: oklch( 35% .1 calc( var(--mol_theme_hue) - 60deg ) / .25 ); */\\n}\\n:where( [mol_theme=\\\"$mol_theme_light\\\"] ) [mol_theme=\\\"$mol_theme_current\\\"] {\\n\\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 50%, 92% );\\n\\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) - var(--mol_theme_hue_spread) ), 80%, 100%, .5 );\\n\\t/* --mol_theme_back: oklch( 95% .02 calc( var(--mol_theme_hue) - 60deg ) );\\n\\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) - 60deg ) / .25 ); */\\n}\\n\\n:where( :root, [mol_theme=\\\"$mol_theme_dark\\\"] ) [mol_theme=\\\"$mol_theme_special\\\"] {\\n\\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 50%, 30% );\\n\\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 40%, 20%, .25 );\\n\\t/* --mol_theme_back: oklch( 25% .05 calc( var(--mol_theme_hue) + 60deg ) );\\n\\t--mol_theme_card: oklch( 35% .1 calc( var(--mol_theme_hue) + 60deg ) / .25 ); */\\n}\\n:where( [mol_theme=\\\"$mol_theme_light\\\"] ) [mol_theme=\\\"$mol_theme_special\\\"] {\\n\\t--mol_theme_back: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 50%, 92% );\\n\\t--mol_theme_card: hsl( calc( var(--mol_theme_hue) + var(--mol_theme_hue_spread) ), 80%, 100%, .5 );\\n\\t/* --mol_theme_back: oklch( 95% .02 calc( var(--mol_theme_hue) + 60deg ) );\\n\\t--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) + 60deg ) / .25 ); */\\n}\\n\"\n) }","namespace $ {\n\n\t/**\n\t * Gap in CSS\n\t * @see https://page.hyoo.ru/#!=msdb74_bm7nsq\n\t */\n\texport let $mol_gap = $mol_style_prop(\n\t\t'mol_gap',\n\t\t[\n\t\t\t'block',\n\t\t\t'text',\n\t\t\t'round',\n\t\t\t'space',\n\t\t\t'blur',\n\t\t] as const\n\t)\n\n}\n","namespace $ { $mol_style_attach( \"mol/gap/gap.css\",\n \":root {\\n\\t--mol_gap_block: .75rem;\\n\\t--mol_gap_text: .5rem .75rem;\\n\\t--mol_gap_round: .25rem;\\n\\t--mol_gap_space: .25rem;\\n\\t--mol_gap_blur: .5rem;\\n}\\n\"\n) }","namespace $ {\n\n\texport type $mol_view_content = $mol_view|Node|string|number|boolean|null\n\t\n\texport function $mol_view_visible_width() {\n\t\treturn $mol_window.size().width\n\t}\n\t\n\texport function $mol_view_visible_height() {\n\t\treturn $mol_window.size().height\n\t}\n\t\n\texport function $mol_view_state_key( suffix : string ) {\n\t\treturn suffix\n\t}\n\t\n\t/**\n\t * The base class for all visual components. It provides the infrastructure for reactive lazy rendering, handling exceptions.\n\t * @see https://mol.hyoo.ru/#!section=docs/=vv2nig_s5zr0f\n\t */\n\t/// Reactive statefull lazy ViewModel\n\texport class $mol_view extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic Root< This extends typeof $mol_view >( this : This , id: number ) {\n\t\t\treturn new this as InstanceType< This >\n\t\t}\n\n\t\t@ $mol_mem\n\t\tautorun() {\n\t\t\ttry {\n\t\t\t\tthis.dom_tree()\n\t\t\t\tdocument.title = this.title()\n\t\t\t} catch( error ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t}\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic autobind() {\n\t\t\t\n\t\t\tconst nodes = $mol_dom_context.document.querySelectorAll( '[mol_view_root]:not([mol_view_root=\"\"])' )\n\t\t\t\n\t\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\n\t\t\t\tconst name = nodes.item( i ).getAttribute( 'mol_view_root' )!\n\t\t\t\t\n\t\t\t\tconst View = ($ as any)[ name ] as typeof $mol_view\n\t\t\t\tif( !View ) {\n\t\t\t\t\tconsole.error( `Can not attach view. Class not found: ${ name }` )\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst view = View.Root( i )\n\t\t\t\tview.dom_node( nodes.item( i ) )\n\t\t\t\tview.autorun()\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\ttitle() {\n\t\t\treturn this.toString().match( /.*\\.(\\w+)/ )?.[1] ?? this.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tfocused( next?: boolean ) {\n\t\t\tlet node = this.dom_node()\n\t\t\tconst value = $mol_view_selection.focused( next === undefined ? undefined : ( next ? [ node ] : [] ) )\n\t\t\treturn value.indexOf( node ) !== -1\n\t\t}\n\t\t\n\t\tstate_key( suffix = '' ) {\n\t\t\treturn this.$.$mol_view_state_key( suffix )\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\t@ $mol_memo.method\n\t\tdom_name() {\n\t\t\treturn $mol_dom_qname( this.constructor.toString() ) || 'div'\n\t\t}\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tdom_name_space() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tsub() {\n\t\t\treturn [] as readonly $mol_view_content[]\n\t\t}\n\t\t\n\t\t/// Visible sub views with defined ambient context\n\t\t/// Render all by default\n\t\tsub_visible() {\n\t\t\treturn this.sub()\n\t\t}\n\t\t\n\t\t/// Minimal width that used for lazy rendering\n\t\t@ $mol_mem\n\t\tminimal_width() {\n\t\t\t\n\t\t\tlet min = 0\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tconst sub = this.sub()\n\t\t\t\tif( !sub ) return 0\n\t\t\t\t\n\t\t\t\tsub.forEach( view => {\n\t\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\t\tmin = Math.max( min , view.minimal_width() )\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t\n\t\t\t} catch( error: any ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\treturn 24\n\t\t\t}\n\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\tmaximal_width() {\n\t\t\treturn this.minimal_width()\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\t\t\t\n\t\t\tlet min = 0\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tfor( const view of this.sub() ?? [] ) {\n\n\t\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\t\tmin = Math.max( min , view.minimal_height() )\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t \n\t\t\t} catch( error: any ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\treturn 24\n\t\t\t}\n\n\t\t\treturn min\n\t\t}\n\n\t\tstatic watchers = new Set< $mol_view >()\n\n\t\t@ $mol_mem\n\t\tview_rect() {\n\t\t\tif( $mol_wire_probe( ()=> this.view_rect() ) === undefined ) {\n\t\t\t\t$mol_wire_watch()\n\t\t\t\treturn null // don't touch DOM to prevent instant reflow\n\t\t\t} else {\n\t\t\t\tconst { width, height, left, right, top, bottom } = this.dom_node().getBoundingClientRect()\n\t\t\t\treturn { width, height, left, right, top, bottom } // pick to optimize compare\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_memo.method\n\t\tdom_id() {\n\t\t\treturn this.toString().replace( //g, ')' ).replaceAll( /\"/g, \"'\" )\n\t\t}\n\t\n\t\tdom_node_external( next?: Element) {\n\t\t\tconst node = next ?? $mol_dom_context.document.createElementNS( this.dom_name_space() , this.dom_name() )\n\n\t\t\tconst id = this.dom_id()\n\t\t\tnode.setAttribute( 'id' , id )\n\t\t\tnode.toString = $mol_const( '<#' + id + '>' )\n\n\t\t\treturn node\n\t\t}\n\n\t\t@ $mol_mem\n\t\tdom_node( next? : Element ) {\n\t\t\t$mol_wire_solid()\n\t\t\tconst node = this.dom_node_external( next )\n\t\t\t$mol_dom_render_attributes( node , this.attr_static() )\n\t\t\t\n\t\t\tconst events = this.event_async()\n\t\t\t$mol_dom_render_events(node, events)\n\n\t\t\treturn node\n\t\t}\n\n\t\t@ $mol_mem\n\t\tdom_final() {\n\t\t\t\n\t\t\tthis.render()\n\t\t\t\n\t\t\tconst sub = this.sub_visible()\n\t\t\tif( !sub ) return\n\t\t\t\n\t\t\tfor( const el of sub ) {\n\t\t\t\tif( el && typeof el === 'object' && 'dom_final' in el ) {\n\t\t\t\t\tel['dom_final']()\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn this.dom_node()\n\t\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_tree( next? : Element ) : Element {\n\t\t\tconst node = this.dom_node( next )\n\t\t\t\n\t\t\trender: try {\n\n\t\t\t\t$mol_dom_render_attributes( node , { mol_view_error : null } )\n\n\t\t\t\ttry {\n\t\t\t\t\n\t\t\t\t\tthis.render()\n\t\t\t\t\t\n\t\t\t\t} finally {\n\t\t\t\t\t\n\t\t\t\t\tfor( let plugin of this.plugins() ) {\n\t\t\t\t\t\tif( plugin instanceof $mol_plugin ) {\n\t\t\t\t\t\t\tplugin.dom_tree()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} catch( error: any ) {\n\t\t\t\t\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\tconst mol_view_error = $mol_promise_like(error) ? 'Promise' : error.name || error.constructor.name\n\t\t\t\t$mol_dom_render_attributes( node , { mol_view_error } )\n\t\t\t\t\n\t\t\t\tif( $mol_promise_like( error ) ) break render\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tconst message = error.message || error\n\t\t\t\t\t;( node as HTMLElement ).innerText = message.replace( /^|$/mg, '\\xA0\\xA0' )\n\t\t\t\t} catch {}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\ttry {\n\t\t\t\tthis.auto()\n\t\t\t} catch( error ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t}\n\t\t\t\t\n\t\t\treturn node\n\t\t}\n\n\t\t@ $mol_mem\n\t\tdom_node_actual() {\n\t\t\tconst node = this.dom_node()\n\n\t\t\t$mol_dom_render_styles( node, this.style_size() )\n\n\t\t\tconst attr = this.attr()\n\t\t\tconst style = this.style()\n\n\t\t\t$mol_dom_render_attributes( node , attr )\n\t\t\t$mol_dom_render_styles( node , style )\n\n\t\t\treturn node\n\t\t}\n\t\t\n\t\tauto() {\n\t\t\treturn null as any\n\t\t}\n\n\t\t@ $mol_mem\n\t\trender() {\n\n\t\t\tconst node = this.dom_node_actual()\n\n\t\t\tconst sub = this.sub_visible()\n\t\t\tif( !sub ) return\n\t\t\t\n\t\t\tconst nodes = sub.map( child => {\n\t\t\t\tif( child == null ) return null\n\t\t\t\treturn ( child instanceof $mol_view )\n\t\t\t\t\t? child.dom_node()\n\t\t\t\t\t: child instanceof $mol_dom_context.Node\n\t\t\t\t\t? child\n\t\t\t\t\t: String( child )\n\t\t\t})\n\t\t\t\n\t\t\t$mol_dom_render_children( node , nodes )\n\n\t\t\tfor( const el of sub ) if( el && typeof el === 'object' && 'dom_tree' in el ) el['dom_tree']()\n\n\t\t\t$mol_dom_render_fields( node , this.field() )\n\t\t\t\n\t\t}\n\n\t\t@ $mol_memo.method\n\t\tstatic view_classes() {\n\t\t\tconst proto = this.prototype\n\t\t\t\n\t\t\tlet current = proto\n\t\t\tconst classes = [] as ( typeof $mol_view )[]\n\t\t\t\n\t\t\twhile( current ) {\n\t\t\t\tif( current.constructor.name !== classes.at(-1)?.name ) {\n\t\t\t\t\tclasses.push( current.constructor as typeof $mol_view )\n\t\t\t\t}\n\t\t\t\tif(!( current instanceof $mol_view )) break\n\t\t\t\tcurrent = Object.getPrototypeOf( current )\n\t\t\t}\n\t\t\t\n\t\t\treturn classes\n\t\t}\n\t\t\n\t\tstatic _view_names?: Map< string, string[] >\n\t\tstatic view_names( suffix: string ) {\n\t\t\t\n\t\t\tlet cache = Reflect.getOwnPropertyDescriptor( this, '_view_names' )?.value\n\t\t\tif( !cache ) cache = this._view_names = new Map\n\t\t\t\n\t\t\tconst cached = cache.get( suffix )\n\t\t\tif( cached ) return cached\n\t\t\t\n\t\t\tconst names = [] as string[]\n\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\n\t\t\tfor( const Class of this.view_classes() ) {\n\t\t\t\tif( suffix in Class.prototype ) names.push( this.$.$mol_func_name( Class ) + suffix2 )\n\t\t\t\telse break\n\t\t\t}\n\t\t\t\n\t\t\tcache.set( suffix, names )\n\t\t\treturn names\n\t\t}\n\t\t\n\t\t@ $mol_memo.method\n\t\tview_names_owned() {\n\t\t\tconst names = [] as string[]\n\t\t\tlet owner = $mol_owning_get( this ) as $mol_wire_fiber< any, any[], any >\n\n\t\t\tif(!( owner?.host instanceof $mol_view )) return names\n\n\t\t\tconst suffix = owner.task.name.trim()\n\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\n\t\t\tnames.push( ... ( owner.host.constructor as typeof $mol_view ).view_names( suffix ) )\n\t\t\t\n\t\t\tfor( let prefix of owner.host.view_names_owned() ) {\n\t\t\t\tnames.push( prefix + suffix2 )\n\t\t\t}\n\t\t\t\n\t\t\treturn names\n\t\t}\n\n\t\t@ $mol_memo.method\n\t\tview_names() {\n\t\t\tconst names = new Set< string >()\n\t\t\t\n\t\t\tfor( let name of this.view_names_owned() ) names.add( name )\n\n\t\t\tfor( let Class of ( this.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\tconst name = this.$.$mol_func_name( Class )\n\t\t\t\tif( name ) names.add( name )\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\ttheme( next = null as null | string ) {\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tattr_static() : { [ key : string ] : string|number|boolean|null } {\n\t\t\tlet attrs : any = {}\n\t\t\t\n\t\t\tfor( let name of this.view_names() ) attrs[ name.replace( /\\$/g , '' ).replace( /^(?=\\d)/ , '_' ).toLowerCase() ] = ''\n\t\t\t\n\t\t\treturn attrs\n\t\t}\n\t\t\n\t\tattr() {\n\t\t\treturn {\n\t\t\t\tmol_theme: this.theme() ?? undefined,\n\t\t\t} as {}\n\t\t}\n\t\t\n\t\tstyle_size() {\n\t\t\treturn {\n\t\t\t\tminHeight: this.minimal_height(),\n\t\t\t\tminWidth: this.minimal_width(),\n\t\t\t} as {\n\t\t\t\t[key: string]: string | number;\n\t\t\t}\n\t\t}\n\t\t\n\t\tstyle() : { [ key : string ] : string|number } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tfield() : { [ key : string ] : any } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tevent_async() {\n\t\t\treturn { ... $mol_wire_async(this.event()) }\n\t\t}\n\n\t\tplugins() {\n\t\t\treturn [] as readonly $mol_view[]\n\t\t}\n\t\t\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_span( {} ,\n\t\t\t\t$mol_dev_format_native( this ) ,\n\t\t\t\t// $mol_dev_format_shade( '/' ) ,\n\t\t\t\t// $mol_dev_format_auto( $mol_wire_cache( this ).sub().cache ) ,\n\t\t\t)\n\t\t}\n\n\t\t/** Deep search view by predicate. */\n\t\t*view_find(\n\t\t\tcheck: ( path : $mol_view, text?: string )=> boolean,\n\t\t\tpath = [] as $mol_view[],\n\t\t): Generator< $mol_view[] > {\n\n\t\t\tif( check( this ) ) return yield [ ... path, this ]\n\t\t\t\n\t\t\ttry {\n\t\t\t\tfor( const item of this.sub() ) {\n\t\t\t\t\tif( item instanceof $mol_view ) {\n\t\t\t\t\t\tyield* item.view_find( check, [ ... path, this ] )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch( error: unknown ) {\n\t\t\t\tif( $mol_promise_like( error ) ) $mol_fail_hidden( error )\n\t\t\t\t$mol_fail_log( error )\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\t/** Renders path of views to DOM. */\n\t\tforce_render(\n\t\t\tpath : Set< $mol_view >,\n\t\t) {\n\n\t\t\tconst kids = this.sub()\n\n\t\t\tconst index = kids.findIndex( item => {\n\t\t\t\tif( item instanceof $mol_view ) {\n\t\t\t\t\treturn path.has( item )\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tif( index >= 0 ) {\n\t\t\t\t( kids[ index ] as $mol_view ).force_render( path )\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\t/** Renders view to DOM and scroll to it. */\n\t\tensure_visible( view: $mol_view, align: ScrollLogicalPosition = \"start\" ) {\n\t\t\t\n\t\t\tconst path = this.view_find( v => v === view ).next().value\n\t\t\tthis.force_render( new Set( path ) )\n\t\t\t\n\t\t\ttry {\n\t\t\t\tthis.dom_final()\n\t\t\t} catch(err) {\n\t\t\t\t$mol_fail_log(err)\n\t\t\t}\n\n\t\t\tview.dom_node().scrollIntoView({ block: align })\n\n\t\t}\n\t\t\n\t\tbring() {\n\t\t\t\n\t\t\tconst win = this.$.$mol_dom_context\n\t\t\tif( win.parent !== win.self && !win.document.hasFocus() ) return\n\t\t\t\n\t\t\t// new this.$.$mol_after_frame( ()=> {\n\t\t\t// \tthis.dom_node().scrollIntoView({ block: 'start', inline: 'nearest' })\n\t\t\t// } )\n\t\t\t\n\t\t\tnew this.$.$mol_after_timeout( 0, ()=> {\n\t\t\t\tthis.focused( true )\n\t\t\t} )\n\t\t\t\n\t\t}\n\n\t\toverride destructor() {\n\t\t\tconst node = $mol_wire_probe(() => this.dom_node())\n\t\t\tif (! node) return\n\n\t\t\tconst events = $mol_wire_probe(() => this.event_async())\n\t\t\tif (! events) return\n\n\t\t\tfor( let event_name in events ) {\n\t\t\t\tnode.removeEventListener(\n\t\t\t\t\tevent_name ,\n\t\t\t\t\tevents[ event_name ]\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\texport type $mol_view_all = $mol_type_pick< $ , typeof $mol_view >\n\n}\n","namespace $ { $mol_style_attach( \"mol/view/view/view.css\",\n \"[mol_view] {\\n\\ttransition-property: height, width, min-height, min-width, max-width, max-height, transform;\\n\\ttransition-duration: .2s;\\n\\ttransition-timing-function: ease-out;\\n\\t-webkit-appearance: none;\\n\\tbox-sizing: border-box;\\n\\tdisplay: flex;\\n\\tflex-shrink: 0;\\n\\tcontain: style;\\n\\tscrollbar-color: var(--mol_theme_line) transparent;\\n\\tscrollbar-width: thin;\\n}\\t\\n\\n[mol_view]::selection {\\n\\tbackground: var(--mol_theme_line);\\n}\\t\\n\\n[mol_view]::-webkit-scrollbar {\\n\\twidth: .25rem;\\n\\theight: .25rem;\\n}\\n\\n[mol_view]::-webkit-scrollbar-corner {\\n\\tbackground-color: var(--mol_theme_line);\\n}\\n\\n[mol_view]::-webkit-scrollbar-track {\\n\\tbackground-color: transparent;\\n}\\n\\n[mol_view]::-webkit-scrollbar-thumb {\\n\\tbackground-color: var(--mol_theme_line);\\n\\tborder-radius: var(--mol_gap_round);\\n}\\n\\n[mol_view] > * {\\n\\tword-break: inherit;\\n}\\n\\n[mol_view_root] {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tbox-sizing: border-box;\\n\\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\\n\\tfont-size: 1rem;\\n\\tline-height: 1.5rem;\\n\\tbackground: var(--mol_theme_back);\\n\\tcolor: var(--mol_theme_text);\\n\\tcontain: unset; /** Fixes bg ignoring when applied to body on Chrome */\\n\\ttab-size: 4;\\n\\toverscroll-behavior: contain; /** Disable navigation gestures **/\\n}\\n\\n@media print {\\n\\t[mol_view_root] {\\n\\t\\theight: auto;\\n\\t}\\n}\\n\\n[mol_view][mol_view_error]:not([mol_view_error=\\\"Promise\\\"]) {\\n\\tbackground-image: repeating-linear-gradient(\\n\\t\\t-45deg,\\n\\t\\t#f92323,\\n\\t\\t#f92323 .5rem,\\n\\t\\t#ff3d3d .5rem,\\n\\t\\t#ff3d3d 1.5rem\\n\\t);\\n\\tcolor: black;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\\n@keyframes mol_view_wait {\\n\\tfrom {\\n\\t\\topacity: .25;\\n\\t}\\n\\t20% {\\n\\t\\topacity: .75;\\n\\t}\\n\\tto {\\n\\t\\topacity: .25;\\n\\t}\\n}\\n\\n:where([mol_view][mol_view_error=\\\"Promise\\\"]) {\\n\\tbackground: var(--mol_theme_hover);\\n}\\n\\n[mol_view][mol_view_error=\\\"Promise\\\"] {\\n\\tanimation: mol_view_wait 1s steps(20,end) infinite;\\n}\\n\"\n) }","namespace $ {\n\t/** Plugin is component without its own DOM element, but instead uses the owner DOM element */\n\texport class $mol_plugin extends $mol_view {\n\n\t\toverride dom_node_external( next? : Element ) {\n\t\t\treturn next ?? $mol_owning_get>( this )!.host!.dom_node()\n\t\t}\n\n\t\toverride render() {\n\t\t\tthis.dom_node_actual()\n\t\t}\n\n\t}\n\n}\n","$mol_ghost $mol_view\n\tSub $mol_view\n","namespace $.$$ {\n\n\t/**\n\t * Mixin view logic to DOM node of another component.\n\t */\n\texport class $mol_ghost extends $.$mol_ghost {\n\t\t\n\t\toverride dom_node_external( next?: Element ) {\n\t\t\treturn this.Sub().dom_node( next )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_node_actual() {\n\t\t\tthis.dom_node()\n\t\t\tconst node = this.Sub().dom_node_actual()\n\n\t\t\tconst attr = this.attr()\n\t\t\tconst style = this.style()\n\t\t\tconst fields = this.field()\n\n\t\t\t$mol_dom_render_attributes( node , attr )\n\t\t\t$mol_dom_render_styles( node , style )\n\t\t\t$mol_dom_render_fields( node , fields )\n\n\t\t\treturn node\n\t\t}\n\t\t\n\t\tdom_tree() {\n\t\t\t\n\t\t\tconst Sub = this.Sub()\n\t\t\tconst node = Sub.dom_tree()\n\t\t\t\n\t\t\ttry {\n\t\t\t\tthis.dom_node_actual()\n\t\t\t\tthis.auto()\n\t\t\t} catch( error: unknown ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t}\n\t\t\t\n\t\t\treturn node\n\t\t}\n\n\t\ttitle() {\n\t\t\treturn this.Sub().title()\n\t\t}\n\t\t\n\t\tminimal_width() {\n\t\t\treturn this.Sub().minimal_width()\n\t\t}\n\n\t\tminimal_height() {\n\t\t\treturn this.Sub().minimal_height()\n\t\t}\n\n\t}\n\n}\n","$mol_drop $mol_ghost\n\tenabled? true\n\tevent *\n\t\tdragenter?event <=> enter?event null\n\t\tdragover?event <=> move?event null\n\t\tdragleave?event <=> leave?event null\n\t\tdrop?event <=> drop?event null\n\tattr * mol_drop_status <= status? \\ready\n\tadopt?transfer *\n\treceive?transfer null\n\tallow /\n\t\t\\copy\n\t\t\\move\n\t\t\\link\n","namespace $.$$ {\n\texport class $mol_drop extends $.$mol_drop {\n\n\t\t@ $mol_mem\n\t\tstatus( next = 'ready' as 'ready' | 'drag' ) { return next }\n\n\t\tprotected _target = null as EventTarget | null\n\n\t\tenter( event : DragEvent ) {\n\n\t\t\tif( event.defaultPrevented ) return\n\t\t\tif( !this.enabled() ) return\n\t\t\t// if( !this.adopt( event.dataTransfer! ) ) return\n\n\t\t\tconst action = this.decide_action( event )\n\t\t\tevent.dataTransfer!.dropEffect = action\n\t\t\t\n\t\t\tif( action !== 'none' ) this.status( 'drag' )\n\t\t\tthis._target = event.target\n\t\t\t\n\t\t\tevent.preventDefault()\n\t\t\t\n\t\t}\n\n\t\tmove( event : DragEvent ) {\n\t\t\t\n\t\t\tif( event.defaultPrevented ) return\n\t\t\tif( !this.enabled() ) return\n\n\t\t\t// if( !this.adopt( event.dataTransfer! ) ) return\n\t\t\t\n\t\t\tevent.dataTransfer!.dropEffect = this.decide_action( event )\n\t\t\t\n\t\t\tevent.preventDefault()\n\n\t\t}\n\t\t\n\t\tdecide_action( event: DragEvent ) {\n\t\t\tconst allow = this.allow()\n\t\t\tif( allow.includes( 'move' ) && event.shiftKey ) return 'move'\n\t\t\telse if( allow.includes( 'copy' ) && event.ctrlKey ) return 'copy'\n\t\t\telse if( allow.includes( 'link' ) && event.altKey ) return 'link'\n\t\t\telse return allow[0]\n\t\t}\n\n\t\tleave( event : DragEvent ) {\n\t\t\tif( this._target === event.target ) {\n\t\t\t\tthis.status( 'ready' )\n\t\t\t}\n\t\t}\n\n\t\treceive( transfer : unknown ) {\n\t\t\treturn transfer as unknown\n\t\t}\n\n\t\tdrop( event : DragEvent ) {\n\n\t\t\tif( event.defaultPrevented ) return\n\n\t\t\tevent.preventDefault()\n\n\t\t\tsetTimeout( ()=> this.status( 'ready' ) )\n\t\t\t\n\t\t\tconst obj = this.adopt( event.dataTransfer! )\n\t\t\tif( !obj ) return\n\n\t\t\tthis.receive( obj )\n\n\t\t}\n\n\t}\n}\n","$mol_theme_auto $mol_plugin\n\tattr * mol_theme <= theme \\\n","namespace $ {\n\t/**\n\t * Decorates method to fiber to ensure it is executed only once inside other fiber from [mol_wire](../wire/README.md)\n\t * @see https://mol.hyoo.ru/#!section=docs/=1fcpsq_1wh0h2\n\t */\n\texport let $mol_action = $mol_wire_method\n}\n","namespace $ {\n\n\t/** State of arguments like `foo=bar xxx` */\n\texport class $mol_state_arg extends $mol_object {\n\t\t\n\t\tstatic prolog = ''\n\t\tstatic separator = ' '\n\t\t\n\t\t@ $mol_mem\n\t\tstatic href( next? : string ) {\n\t\t\treturn next || process.argv.slice( 2 ).join( ' ' )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic href_normal() {\n\t\t\treturn this.link({})\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic dict( next? : { [ key : string ] : string | null } ) {\n\t\t\tif( next !== void 0 ) this.href( this.make_link( next ) )\n\t\t\t\n\t\t\tvar href = this.href()\n\t\t\tvar chunks = href.split( ' ' )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift()! ] = vals.join('=')\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params as Readonly< typeof params >\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic value( key : string , next? : string | null ) {\n\t\t\tif( next === void 0 ) return this.dict()[ key ] ?? null\n\t\t\tthis.href( this.link( { [ key ] : next } ) )\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tstatic link( next : Record ) {\n\t\t\tconst params : Record = {}\n\t\t\t\n\t\t\tvar prev = this.dict()\n\t\t\tfor( var key in prev ) {\n\t\t\t\tparams[ key ] = prev[ key ]\n\t\t\t}\n\t\t\t\n\t\t\tfor( var key in next ) {\n\t\t\t\tparams[ key ] = next[ key ]\n\t\t\t}\n\t\t\t\n\t\t\treturn this.make_link( params )\n\t\t}\n\t\t\n\t\tstatic make_link( next : Record) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( const key in next ) {\n\t\t\t\tif( next[ key ] !== null ) {\n\t\t\t\t\tchunks.push([key, next[key]!].map(encodeURIComponent).join('='))\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn chunks.join( ' ' )\n\t\t}\n\t\t\n\t\t@ $mol_action\n\t\tstatic go( next : { [ key : string ] : string | null } ) {\n\t\t\tthis.href( this.link( next ) )\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn ( this.constructor as typeof $mol_state_arg ).value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new ( this.constructor as typeof $mol_state_arg )( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : Record ) {\n\t\t\tconst prefix = this.prefix\n\t\t\tconst dict : Record = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn ( this.constructor as typeof $mol_state_arg ).link( dict )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_media extends $mol_object2 {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic match( query: string, next?: boolean ) {\n\t\t\t\n\t\t\tif( next !== undefined ) return next\n\t\t\t\n\t\t\tconst res = this.$.$mol_dom_context.matchMedia?.( query ) ?? {}\n\t\t\tres.onchange = ()=> this.match( query, res.matches )\n\t\t\t\n\t\t\treturn res.matches\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\texport let $mol_mem_persist = $mol_wire_solid\n}\n","namespace $ {\n\texport let $mol_mem_cached = $mol_wire_probe\n}\n","namespace $ {\n\texport class $mol_storage extends $mol_object2 {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic native() {\n\t\t\treturn this.$.$mol_dom_context.navigator.storage ?? { // exists only in secure context\n\t\t\t\tpersisted: async ()=> false,\n\t\t\t\tpersist: async ()=> false,\n\t\t\t\testimate: async ()=> ({}),\n\t\t\t\tgetDirectory: async ()=> null! as FileSystemHandle,\n\t\t\t} as StorageManager\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic persisted( next?: boolean, cache?: 'cache' ): boolean {\n\t\t\t\n\t\t\t$mol_mem_persist()\n\t\t\t\n\t\t\tif( cache ) return Boolean( next )\n\t\t\t\n\t\t\tconst native = this.native()\n\t\t\tif( next && !$mol_mem_cached( ()=> this.persisted() ) ) {\n\t\t\t\tnative.persist().then( actual => {\n\t\t\t\t\t\n\t\t\t\t\tsetTimeout( ()=> this.persisted( actual, 'cache' ), 5000 )\n\t\t\t\t\t\n\t\t\t\t\tif( actual ) this.$.$mol_log3_done({ place: `$mol_storage`, message: `Persist: Yes` })\n\t\t\t\t\telse this.$.$mol_log3_fail({ place: `$mol_storage`, message: `Persist: No` })\n\t\t\t\t\t\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\treturn next ?? $mol_wire_sync( native ).persisted()\n\t\t}\n\t\t\n\t\tstatic estimate() {\n\t\t\treturn $mol_wire_sync( this.native() ?? {} ).estimate()\n\t\t}\n\t\t\n\t\tstatic dir() {\n\t\t\treturn $mol_wire_sync( this.native() ).getDirectory()\n\t\t}\n\t\t\n\t}\n}\n","namespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\tstatic 'native()' : Pick< Storage , 'getItem'|'setItem'|'removeItem' >\n\t\tstatic native() {\n\t\t\tif( this['native()'] ) return this['native()']\n\n\t\t\tcheck : try {\n\t\t\t\tconst native = $mol_dom_context.localStorage\n\t\t\t\tif( !native ) break check\n\t\t\t\t\n\t\t\t\tnative.setItem( '' , '' )\n\t\t\t\tnative.removeItem( '' )\n\t\t\t\treturn this['native()'] = native\n\t\t\t} catch( error: any ) {\n\t\t\t\tconsole.warn( error )\n\t\t\t}\n\n\t\t\treturn this['native()'] = {\n\t\t\t\tgetItem( key : string ) {\n\t\t\t\t\treturn (this as any)[ ':' + key ]\n\t\t\t\t} ,\n\t\t\t\tsetItem( key : string , value : string ) {\n\t\t\t\t\t(this as any)[ ':' + key ] = value\n\t\t\t\t} ,\n\t\t\t\tremoveItem( key : string ) {\n\t\t\t\t\t(this as any)[ ':' + key ] = void 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic changes( next?: StorageEvent ) { return next }\n\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >(\n\t\t\tkey : string ,\n\t\t\tnext? : Value | null ,\n\t\t) : Value | null {\n\t\t\t\n\t\t\tthis.changes()\n\t\t\t\n\t\t\tif( next === void 0 ) return JSON.parse( this.native().getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) {\n\t\t\t\tthis.native().removeItem( key )\n\t\t\t} else {\n\t\t\t\tthis.native().setItem( key , JSON.stringify( next ) )\n\t\t\t\tthis.$.$mol_storage.persisted( true )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\texport class $mol_lock extends $mol_object {\n\t\tprotected promise = null as null | Promise\n\n\t\tasync wait() {\n let next = () => {}\n\t\t\tlet destructed = false\n const task = $mol_wire_auto()\n\t\t\tif (! task) return next\n\n\t\t\tconst destructor = task.destructor.bind(task)\n task.destructor = ()=> {\n\t\t\t\tdestructor()\n\t\t\t\tdestructed = true\n next()\n }\n\n\t\t\tlet promise\n\n\t\t\tdo {\n\t\t\t\tpromise = this.promise\n\t\t\t\tawait promise\n\t\t\t\tif (destructed) return next\n\t\t\t} while (promise !== this.promise)\n\n\t\t\tthis.promise = new Promise(done => { next = done })\n\t\t\treturn next\n\t\t}\n\n\t\tgrab() { return $mol_wire_sync(this).wait() }\n\t}\n}\n","namespace $ {\n export function $mol_compare_array>(a: Value, b: Value): boolean {\n\t\tif (a === b) return true\n\t\tif (Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) return false\n\t\tif (a.length !== b.length) return false\n\n\t\tfor (let i = 0; i < a.length; i++)\n\t\t\tif (a[i] !== b[i]) return false\n\n\t\treturn true\n\t}\n}\n","namespace $ {\n\n\tconst decoders = {} as { [ key in $mol_charset_encoding ]?: TextDecoder }\n\n\texport function $mol_charset_decode(\n\t\tbuffer: BufferSource,\n\t\tencoding: $mol_charset_encoding = 'utf8',\n\t) {\n\t\t\n\t\tlet decoder = decoders[ encoding ]\n\t\tif( !decoder ) decoder = decoders[ encoding ] = new TextDecoder( encoding )\n\t\t\n\t\treturn decoder.decode( buffer )\n\t}\n\n}\n","namespace $ {\n\tconst TextEncoder = globalThis.TextEncoder ?? $node.util.TextEncoder\n\n\tconst encoder = new TextEncoder()\n\n\texport function $mol_charset_encode(value: string) {\n\t\treturn encoder.encode(value) as Uint8Array< ArrayBuffer >\n\t}\n\n}\n","namespace $ {\n\n\texport type $mol_file_transaction_mode = 'create' | 'exists_truncate' | 'exists_fail' | 'read_only'\n\t\t| 'write_only' | 'read_write' | 'append'\n\n\texport type $mol_file_transaction_buffer = ArrayBufferView\n\n\texport class $mol_file_transaction extends $mol_object {\n\t\tpath() { return '' }\n\n\t\tmodes() { return [] as readonly $mol_file_transaction_mode[] }\n\n\t\twrite(options: {\n\t\t\tbuffer: ArrayBufferView | string | readonly ArrayBufferView[],\n\t\t\toffset?: number | null,\n\t\t\tlength?: number | null,\n\t\t\tposition?: number | null,\n\t\t}) {\n\t\t\treturn 0\n\t\t}\n\n\t\tread() {\n\t\t\treturn new Uint8Array()\n\t\t}\n\n\t\ttruncate(size: number) {}\n\n\t\tclose() {}\n\n\t\toverride destructor() {\n\t\t\tthis.close()\n\t\t}\n\n\t}\n}\n","namespace $ {\n\tenum file_modes {\n\t\t/** create if it doesn't already exist */\n\t\tcreate = $node.fs.constants.O_CREAT,\n\t\t/** truncate to zero size if it already exists */\n\t\texists_truncate = $node.fs.constants.O_TRUNC,\n\t\t/** throw exception if it already exists */\n\t\texists_fail = $node.fs.constants.O_EXCL,\n\t\tread_only = $node.fs.constants.O_RDONLY,\n\t\twrite_only = $node.fs.constants.O_WRONLY,\n\t\tread_write = $node.fs.constants.O_RDWR,\n\t\t/** data will be appended to the end */\n\t\tappend = $node.fs.constants.O_APPEND,\n\t}\n\n\tfunction mode_mask(modes: readonly $mol_file_transaction_mode[]) {\n\t\treturn modes.reduce( ( res, mode )=> res | file_modes[ mode ], 0 )\n\t}\n\n\texport class $mol_file_transaction_node extends $mol_file_transaction {\n\t\t@ $mol_mem\n\t\tprotected descr() {\n\t\t\t$mol_wire_solid()\n\t\t\treturn $node.fs.openSync(this.path(), mode_mask(this.modes()) )\n\t\t}\n\n\t\toverride write({ buffer, offset = 0, length, position = null }: {\n\t\t\tbuffer: ArrayBufferView | string | readonly ArrayBufferView[],\n\t\t\toffset?: number | null,\n\t\t\tlength?: number | null,\n\t\t\tposition?: number | null,\n\t\t}) {\n\t\t\tif (Array.isArray(buffer)) {\n\t\t\t\treturn $node.fs.writevSync( this.descr(), buffer, position ?? undefined)\n\t\t\t}\n\n\t\t\tif (typeof buffer === 'string') {\n\t\t\t\treturn $node.fs.writeSync( this.descr(), buffer, position )\n\t\t\t}\n\n\t\t\tlength = length ?? (buffer as ArrayBufferView).byteLength\n\n\t\t\treturn $node.fs.writeSync( this.descr(), buffer as NodeJS.ArrayBufferView, offset, length, position )\n\t\t}\n\n\t\toverride truncate(size: number) {\n\t\t\t$node.fs.ftruncateSync(this.descr())\n\t\t}\n\n\t\toverride read() {\n\t\t\treturn $mol_file_node_buffer_normalize($node.fs.readFileSync(this.descr()) as Buffer< ArrayBuffer >)\n\t\t}\n\n\t\toverride close() {\n\t\t\t$node.fs.closeSync(this.descr())\n\t\t}\n\n\t}\n\n\t$.$mol_file_transaction = $mol_file_transaction_node\n}\n","namespace $ {\n\n\texport class $mol_file_base extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic absolute(this: This, path : string ) {\n\t\t\treturn this.make({\n\t\t\t\tpath : $mol_const( path )\n\t\t\t}) as InstanceType< This >\n\t\t}\n\n\t\tstatic relative(this: This, path : string ) : InstanceType {\n\t\t\tthrow new Error( 'Not implemented yet' )\n\t\t}\n\t\t\n\t\tstatic base = ''\n\t\t\n\t\tpath() {\n\t\t\treturn '.'\n\t\t}\n\t\t\n\t\tparent() {\n\t\t\treturn this.resolve( '..' )\n\t\t}\n\n\t\t@ $mol_action\n\t\texists_cut() { return this.exists() }\n\n\t\tprotected root() {\n\t\t\tconst path = this.path()\n\t\t\tconst base = (this.constructor as typeof $mol_file_base).base\n\n\t\t\t// Если путь выше или равен base или если parent такойже как и this - считаем это корнем\n\t\t\treturn base.startsWith(path) || this == this.parent()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tprotected stat(next? : $mol_file_stat | null, virt?: 'virt') {\n\n\t\t\tconst path = this.path()\n\t\t\tconst parent = this.parent()\n\n\t\t\t// Отслеживать проверку наличия родительской папки не стоит до корня диска\n\t\t\t// Лучше ограничить mam-ом\n\t\t\tif ( ! this.root() ) {\n\t\t\t\t/*\n\t\t\t\tЕсли parent папка удалилась, надо ресетнуть все объекты в ней на любой глубине.\n\t\t\t\tНапример, rm -rf с последующим git pull: parent папка может удалиться, потом создасться,\n\t\t\t\tа текущая папка успеет только удалиться до момента выполнения stat.\n\t\t\t\tПоэтому parent.exists() не запустит перевычисления, нужна именно parent.version()\n\n\t\t\t\tОднако, parent.version() меняется не только при удалении, будет ложное срабатывание\n\t\t\t\tС этим придется мириться, красивого решения пока нет.\n\t\t\t\t*/\n\n\t\t\t\tparent.version()\n\t\t\t}\n\t\t\tparent.watcher()\n\n\t\t\tif( virt ) return next ?? null\n\t\t\t\n\t\t\treturn next ?? this.info(path)\n\t\t}\n\n\t\tprotected static changed = new Set<$mol_file_base>\n\n\t\tprotected static frame = null as null | $mol_after_timeout\n\n\t\tprotected static changed_add(type: 'change' | 'rename', path: string) {\n\t\t\tif (/([\\/\\\\]\\.|___$)/.test( path )) return\n\n\t\t\tconst file = this.relative( path.at(-1) === '/' ? path.slice(0, -1) : path )\n\t\t\t// console.log(type, path)\n\n\t\t\t// add (change): добавился файл - у parent надо обновить список sub, если он был заюзан\n\t\t\t// change, unlink (rename): обновился или удалился файл - ресетим\n\t\t\t// addDir (change), добавилась папка, у parent обновляем список директорий в sub\n\t\t\t// дочерние ресетим\n\n\t\t\t// unlinkDir (rename), удалилась папка, ресетим ее\n\t\t\t// stat у всех дочерних обновится сам, т.к. связан с parent.version()\n\t\t\tthis.changed.add(file)\n\n\t\t\tif (! this.watching) return\n\n\t\t\t// throttle, пока события поступают не сбрасываем.\n\t\t\t// аналог awaitWriteFinish из chokidar\n\t\t\t// интервалы между change-сообщениями модифицируемого файла должны быть меньше watch_debounce\n\t\t\tthis.frame?.destructor()\n\t\t\tthis.frame = new this.$.$mol_after_timeout(this.watch_debounce(), () => {\n\t\t\t\tif (! this.watching) return\n\t\t\t\tthis.watching = false\n\t\t\t\t$mol_wire_async(this).flush()\n\t\t\t} )\n\t\t}\n\n\t\t/**\n\t\t * Должно быть больше, чем время между событиями от вотчера при записи внешним процессом.\n\t\t * Иначе запуск ресетов паралельно с изменением может привести к неконсистентности.\n\t\t */\n\t\tstatic watch_debounce() { return 500 }\n\n\t\t@ $mol_action\n\t\tstatic flush() {\n\t\t\t// Пока flush работает, вотчер сюда не заходит, но может добавлять новые изменения\n\t\t\t// на каждом перезапуске они применятся\n\t\t\t// Пока run выполняется, изменения накапливаются, в конце run вызывается flush\n\t\t\t// Пока применяются изменения, run должен ожидать конца flush\n\n\t\t\tfor (const file of this.changed) {\n\t\t\t\tconst parent = file.parent()\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( $mol_wire_probe(() => parent.sub()) ) parent.sub(null)\n\t\t\t\t\tfile.reset()\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif ($mol_fail_catch(error)) $mol_fail_log(error)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.changed.clear()\n\t\t\tthis.watching = true\n\n\t\t\t// this.watch_wd?.destructor()\n\t\t\t// this.watch_wd = null\n\t}\n\n\t\tprotected static watching = true\n\n\t\tprotected static lock = new $mol_lock\n\n\t\t@ $mol_action\n\t\tprotected static watch_off(path: string) {\n\t\t\tthis.watching = false\n\t\t\t// run должен ожидать конца flush\n\t\t\tthis.flush()\n\t\t\tthis.watching = false\n\n\t\t\t/*\n\t\t\twatch запаздывает и событие может прилететь через 3 сек после окончания сайд эффекта\n\t\t\tпоэтому добавляем папку, которую меняет side_effect\n\t\t\tКогда дойдет до выполнения flush, он ресетнет ее\n\t\t\t\n\t\t\tИначе будут лишние срабатывания\n\t\t\tНапример, удалили hyoo/board, watch ресетит и exists начинает отдавать false, срабатывает git clone\n\t\t\tСразу после него событие addDir еще не успело прийти,\n\t\t\tна следующем перезапуске вызывается git pull, т.к.\n\t\t\tс точки зрения реактивной системы hyoo/board еще не существует.\n\t\t\t*/\n\t\t\tthis.changed.add(this.absolute(path))\n\t\t}\n\t\n\t\t// protected static watch_wd = null as null | $mol_after_timeout\n\n\t\tstatic unwatched(side_effect: () => Result, affected_dir: string) {\n\t\t\t// ждем, пока выполнится предыдущий unwatched\n\t\t\tconst unlock = this.lock.grab()\n\t\t\tthis.watch_off(affected_dir)\n\n\t\t\ttry {\n\t\t\t\tconst result = side_effect()\n\t\t\t\tthis.flush()\n\t\t\t\tunlock()\n\t\t\t\treturn result\n\t\t\t} catch(e) {\n\t\t\t\tif (! $mol_promise_like(e)) {\n\t\t\t\t\tthis.flush()\n\t\t\t\t\tunlock()\n\t\t\t\t}\n\t\t\t\t$mol_fail_hidden(e)\n\t\t\t}\n\t\t}\n\n\t\treset() {\n\t\t\tthis.stat( null )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tmodified() { return this.stat()?.mtime ?? null }\n\n\t\t@ $mol_mem\n\t\tversion() {\n\t\t\tconst next = this.stat()?.mtime.getTime().toString( 36 ).toUpperCase() ?? ''\n\t\t\t// console.log('version', next, this.path())\n\t\t\treturn next\n\t\t}\n\n\t\tprotected info( path: string ) { return null as null | $mol_file_stat }\n\t\tprotected ensure() {}\n\t\tprotected drop() {}\n\t\tprotected copy(to: string) {}\n\t\tprotected read(): Uint8Array { return new Uint8Array }\n\t\tprotected write(buffer: Uint8Array) { }\n\t\tprotected kids() {\n\t\t\treturn [] as readonly this[]\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\treadable(opts: { start?: number, end?: number }) {\n\t\t\treturn new ReadableStream>\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\twritable(opts: { start?: number }) {\n\t\t\treturn new WritableStream>\n\t\t}\n\n\t\t// open( ... modes: readonly $mol_file_mode[] ) { return 0 }\n\n\t\t@ $mol_mem\n\t\tbuffer( next? : Uint8Array ): Uint8Array {\n\n\t\t\t// Если версия пустая - возвращаем пустой буфер\n\t\t\tlet readed: Uint8Array = new Uint8Array()\n\n\t\t\tif( next === undefined ) {\n\t\t\t\t// Если меняется версия файла, буфер надо перечитать\n\t\t\t\tif ( this.version() ) readed = this.read()\n\t\t\t}\n\n\t\t\tconst prev = $mol_mem_cached( ()=> this.buffer() )\n\t\t\tconst changed = prev === undefined || ! $mol_compare_array( prev, next ?? readed)\n\n\t\t\tif( prev !== undefined && changed ) {\n\t\t\t\t// Логируем, если повторно читаем/пишем и буфер поменялся\n\t\t\t\tthis.$.$mol_log3_rise({\n\t\t\t\t\tplace: `$mol_file_node.buffer()`,\n\t\t\t\t\tmessage: 'Changed' ,\n\t\t\t\t\tpath: this.relate() ,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (next === undefined) return changed ? readed : prev\n\n\t\t\t// Если буфер при записи не поменялся и файл не удаляли перед этим - не записываем новую версию.\n\t\t\t// Если записывать, это приведет к смене mtime и вотчер снова триггернется, даже если содержимое файла не поменялось.\n\n\t\t\t// В этом алгоритме есть изъян.\n\t\t\t// Если файл записали, потом отключили вотчер, кто-то из вне его поменял, потом включили вотчер, снова записали тот же буфер,\n\t\t\t// то буфер не запишется на диск, т.к. кэш не консистентен с диском.\n\t\t\t\n\t\t\tif (! changed && this.exists()) return prev\n\t\t\t\n\t\t\tthis.parent().exists( true )\n\t\t\tthis.stat( this.stat_make(next.length), 'virt' )\n\n\t\t\tthis.write(next)\n\n\t\t\treturn next\n\n\t\t}\n\n\t\t@ $mol_action\n\t\tstat_make(size: number) {\n\t\t\tconst now = new Date()\n\t\t\treturn {\n\t\t\t\ttype: 'file',\n\t\t\t\tsize,\n\t\t\t\tatime: now,\n\t\t\t\tmtime: now,\n\t\t\t\tctime: now,\n\t\t\t} as const\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tclone(to: string) {\n\t\t\tif (! this.exists() ) return null\n\n\t\t\tconst target = (this.constructor as typeof $mol_file_base).absolute(to) as this\n\n\t\t\ttry {\n\t\t\t\tthis.version()\n\t\t\t\ttarget.parent().exists(true)\n\t\t\t\tthis.copy(to)\n\t\t\t\ttarget.reset()\n\t\t\t\treturn target\n\t\t\t} catch (error) {\n\t\t\t\tif ( $mol_fail_catch(error)) {\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\t// static watch_root = ''\n\n\t\t// static watcher_warned = false\n\t\twatcher() {\n\t\t\t// const constructor = this.constructor as typeof $mol_file_base\n\t\t\t// if (! constructor.watcher_warned) {\n\t\t\t// \tconsole.warn(`${constructor}.watcher() not implemented`)\n\t\t\t// \tconstructor.watcher_warned = true\n\t\t\t// }\n\n\t\t\treturn {\n\t\t\t\tdestructor() {}\n\t\t\t}\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\texists( next? : boolean ) {\n\t\t\t\n\t\t\tconst exists = Boolean( this.stat() )\n\n\t\t\t// console.log('exists current', exists, 'next', next, this.path())\n\t\t\tif( next === undefined ) return exists\n\t\t\tif( next === exists ) return exists\n\n\t\t\tif( next ) {\n\t\t\t\tthis.parent().exists( true )\n\t\t\t\tthis.ensure()\n\t\t\t} else {\n\t\t\t\tthis.drop()\n\t\t\t}\n\n\t\t\tthis.reset()\n\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\ttype() {\n\t\t\treturn this.stat()?.type ?? ''\n\t\t}\n\t\t\n\t\tname() {\n\t\t\treturn this.path().replace( /^.*\\//, '' )\n\t\t}\n\t\t\n\t\text() {\n\t\t\tconst match = /((?:\\.\\w+)+)$/.exec( this.path() )\n\t\t\treturn match ? match[ 1 ].substring( 1 ) : ''\n\t\t}\n\n\t\ttext(next?: string, virt?: 'virt') {\n\t\t\t// Если записываем text, и вотчер ресетнул записанный файл,\n\t\t\t// то надо снова его обновить, вызвать логику, которая делала пуш в text.\n\t\t\t// Например файл удалили, потом снова создали, версия поменялась - перезаписываем\n\t\t\t// Если использовать version, то вновь созданный файл, через вотчер запустит свое пересоздание\n\t\t\tif (next !== undefined) this.exists()\n\t\t\treturn this.text_int(next, virt)\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttext_int(next?: string, virt?: 'virt') {\n\t\t\tif( virt ) {\n\t\t\t\tthis.stat( this.stat_make(0), 'virt' )\n\t\t\t\treturn next!\n\t\t\t}\n\n\t\t\tif( next === undefined ) {\n\t\t\t\treturn $mol_charset_decode( this.buffer( ) )\t\n\t\t\t} else {\n\t\t\t\tconst buffer = $mol_charset_encode( next )\n\t\t\t\tthis.buffer( buffer )\n\t\t\t\treturn next\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem\n\t\tsub(reset?: null) {\n\t\t\tif (! this.exists() ) return []\n\t\t\tif ( this.type() !== 'dir') return []\n\n\t\t\tthis.version()\n\n\t\t\t// Если дочерний file удалился, список надо обновить\n\t\t\treturn this.kids().filter(file => file.exists())\n\t\t}\n\n\t\tresolve(path: string): this {\n\t\t\tthrow new Error('implement')\n\t\t}\n\n\t\trelate( base = ( this.constructor as typeof $mol_file_base ).relative( '.' )): string {\n\t\t\tconst base_path = base.path()\n\t\t\tconst path = this.path()\n\t\t\treturn path.startsWith(base_path) ? path.slice(base_path.length) : path\n\t\t}\n\n\t\tfind(\n\t\t\tinclude? : RegExp ,\n\t\t\texclude? : RegExp\n\t\t) {\n\t\t\tconst found = [] as typeof this[]\n\t\t\tconst sub = this.sub()\n\n\t\t\tfor (const child of sub) {\n\t\t\t\tconst child_path = child.path()\n\n\t\t\t\tif( exclude && child_path.match( exclude ) ) continue\n\n\t\t\t\tif( !include || child_path.match( include ) ) found.push( child )\n\n\t\t\t\tif( child.type() === 'dir' ) {\n\t\t\t\t\tconst sub_child = child.find( include , exclude )\n\t\t\t\t\tfor (const child of sub_child) found.push(child)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn found\n\t\t}\n\n\t\t@ $mol_mem\n\t\tsize() {\n\t\t\tswitch( this.type() ) {\n\t\t\t\tcase 'file': return this.stat()?.size ?? 0\n\t\t\t\tdefault: return 0\n\t\t\t}\n\t\t}\n\t\t\n\t\ttoJSON() {\n\t\t\treturn this.path()\n\t\t}\n\t\t\n\t\t@ $mol_action\n\t\topen( ... modes: readonly $mol_file_transaction_mode[] ) {\n\t\t\treturn this.$.$mol_file_transaction.make({\n\t\t\t\tpath: () => this.path(),\n\t\t\t\tmodes: () => modes\n\t\t\t})\n\t\t}\n\t}\n\n}\n","namespace $ {\n\n\texport type $mol_file_type = 'file' | 'dir' | 'link'\n\n\texport interface $mol_file_stat {\n\t\ttype: $mol_file_type\n\t\tsize: number\n\t\tatime: Date\n\t\tmtime: Date\n\t\tctime: Date\n\t}\n\n\texport class $mol_file extends $mol_file_base {}\n\n}\n","namespace $ {\n\n\tfunction stat_convert(stat: ReturnType): null | $mol_file_stat {\n\t\t\n\t\tif( !stat ) return null\n\t\t\n\t\tlet type: $mol_file_type | undefined\n\t\tif (stat.isDirectory()) type = 'dir'\n\t\tif (stat.isFile()) type = 'file'\n\t\tif (stat.isSymbolicLink()) type = 'link'\n\n\t\tif (! type) return $mol_fail( new Error(`Unsupported file type`) )\n\n\t\treturn {\n\t\t\ttype, \n\t\t\tsize: Number(stat.size),\n\t\t\tatime: stat.atime,\n\t\t\tmtime: stat.mtime,\n\t\t\tctime: stat.ctime\n\t\t}\n\t}\n\n\texport function $mol_file_node_buffer_normalize(buf: Buffer< ArrayBuffer >): Uint8Array< ArrayBuffer > {\n\t\treturn new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n\t}\n\n\texport class $mol_file_node extends $mol_file {\n\n\t\tstatic relative(this: This, path : string ) {\n\t\t\treturn this.absolute( $node.path.resolve( this.base, path ).replace( /\\\\/g , '/' ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\toverride watcher(reset?: null) {\n\t\t\tconst path = this.path()\n\t\t\tconst root = this.root()\n\t\t\t// Если папки/файла нет, watch упадет с ошибкой\n\t\t\t// exists обратится к parent.version и parent.watcher\n\t\t\t// Поэтому у root-папки и выше не надо вызывать exists, иначе поднимется выше base до корня диска\n\t\t\t// exists вызывать надо, что б пересоздавать вотчер при появлении папки или файла\n\t\t\tif (! root && ! this.exists() ) return super.watcher()\n\n\t\t\tlet watcher\n\n\t\t\ttry {\n\t\t\t\t// Между exists и watch файл может удалиться, в любом случае надо обрабатывать ENOENT\n\t\t\t\twatcher = $node.fs.watch( path )\n\t\t\t} catch (error: any) {\n\t\t\t\tif ( ! (error instanceof Error) ) error = new Error('Unknown watch error', {cause: error})\n\t\t\t\terror.message += '\\n' + path\n\n\t\t\t\tif ( root || error.code !== 'ENOENT' ) {\n\t\t\t\t\tthis.$.$mol_fail_log(error)\n\t\t\t\t}\n\n\t\t\t\t// Если файла нет - вотчер не создается, создастся потом, когда exists поменяется на true.\n\t\t\t\t// Если создание упало с другой ошибкой - не ломаем работу mol_file, деградируем до не реактивной fs.\n\n\t\t\t\treturn super.watcher()\n\t\t\t}\n\n\t\t\twatcher.on('change', (type: 'change' | 'rename', name) => {\n\t\t\t\tif (! name) return\n\t\t\t\tconst path = $node.path.join( this.path(), name.toString() )\n\t\t\t\t;(this.constructor as typeof $mol_file_base).changed_add(type, path)\n\t\t\t})\n\n\t\t\twatcher.on('error', e => this.$.$mol_fail_log(e) )\n\n\t\t\tlet destructed = false\n\n\t\t\twatcher.on('close', () => {\n\t\t\t\t// Если в процессе работы вотчер сам закрылся, надо его переоткрыть\n\t\t\t\tif (! destructed) setTimeout(() => $mol_wire_async(this).watcher(null), 500)\n\t\t\t})\n\n\t\t\treturn {\n\t\t\t\tdestructor() {\n\t\t\t\t\tdestructed = true\n\t\t\t\t\twatcher.close()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_action\n\t\tprotected override info( path: string ) {\n\t\t\ttry {\n\t\t\t\treturn stat_convert($node.fs.statSync(path))\n\t\t\t} catch( error: any ) {\n\t\t\t\tif (this.$.$mol_fail_catch(error)) {\n\t\t\t\t\tif (error.code === 'ENOENT') return null\n\t\t\t\t\terror.message += '\\n' + path\n\t\t\t\t\tthis.$.$mol_fail_hidden(error)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\t@ $mol_action\n\t\tprotected override ensure() {\n\t\t\tconst path = this.path()\n\t\t\ttry {\n\t\t\t\t$node.fs.mkdirSync( path, { recursive: true } )\n\t\t\t\treturn null\n\t\t\t} catch( e: any ) {\n\t\t\t\tif (this.$.$mol_fail_catch(e)) {\n\t\t\t\t\tif (e.code === 'EEXIST') return null\n\t\t\t\t\te.message += '\\n' + path\n\t\t\t\t\tthis.$.$mol_fail_hidden(e)\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t@ $mol_action\n\t\tprotected override copy(to: string) {\n\t\t\t$node.fs.copyFileSync(this.path(), to)\n\t\t}\n\t\t\n\t\t@ $mol_action\n\t\tprotected override drop() {\n\t\t\t$node.fs.unlinkSync( this.path() )\n\t\t}\n\n\t\t@ $mol_action\n\t\tprotected override read() {\n\t\t\tconst path = this.path()\n\n\t\t\ttry {\n\t\t\t\treturn $mol_file_node_buffer_normalize($node.fs.readFileSync( path ) as Buffer< ArrayBuffer >)\n\t\t\t} catch( error: any ) {\n\t\t\t\tif (! $mol_promise_like(error)) {\n\t\t\t\t\terror.message += '\\n' + path\n\t\t\t\t}\n\n\t\t\t\t$mol_fail_hidden( error )\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_action\n\t\tprotected override write(buffer: Uint8Array) {\n\t\t\tconst path = this.path()\n\n\t\t\ttry {\n\n\t\t\t\t$node.fs.writeFileSync( path, buffer )\n\n\t\t\t} catch( error: any ) {\n\t\t\t\tif (this.$.$mol_fail_catch(error)) {\n\t\t\t\t\terror.message += '\\n' + path\n\t\t\t\t}\n\t\t\t\treturn this.$.$mol_fail_hidden( error )\n\t\t\t}\n\n\t\t}\n\n\t\tprotected override kids() {\n\t\t\tconst path = this.path()\n\n\t\t\ttry {\n\t\t\t\tconst kids = $node.fs.readdirSync( path )\n\t\t\t\t\t.filter( name => !/^\\.+$/.test( name ) )\n\t\t\t\t\t.map( name => this.resolve( name ) )\n\n\t\t\t\treturn kids\n\t\t\t} catch( e: any ) {\n\t\t\t\tif (this.$.$mol_fail_catch(e)) {\n\t\t\t\t\tif (e.code === 'ENOENT') return []\n\t\t\t\t\te.message += '\\n' + path\n\t\t\t\t}\n\t\t\t\t$mol_fail_hidden(e)\n\t\t\t}\n\t\t}\n\t\t\n\t\toverride resolve( path : string ) {\n\t\t\treturn ( this.constructor as typeof $mol_file )\n\t\t\t\t.relative( $node.path.join( this.path() , path ) ) as this\n\t\t}\n\t\t\n\t\toverride relate( base = ( this.constructor as typeof $mol_file ).relative( '.' )) {\n\t\t\treturn $node.path.relative( base.path() , this.path() ).replace( /\\\\/g , '/' )\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\toverride readable(opts: { start?: number, end?: number }) {\n\t\t\tconst { Readable } = $node['node:stream'] as typeof import('stream')\n\t\t\tconst stream = $node.fs.createReadStream(this.path(), {\n\t\t\t\tflags: 'r',\n\t\t\t\tautoClose: true,\n\t\t\t\tstart: opts?.start,\n\t\t\t\tend: opts?.end,\n\t\t\t\tencoding: 'binary',\n\t\t\t})\n\n\t\t\treturn Readable.toWeb(stream) as ReadableStream>\n\t\t}\n\n\t\t@ $mol_mem\n\t\toverride writable(opts?: { start?: number }) {\n\t\t\tconst { Writable } = $node['node:stream'] as typeof import('stream')\n\t\t\tconst stream = $node.fs.createWriteStream(this.path(), {\n\t\t\t\tflags: 'w+',\n\t\t\t\tautoClose: true,\n\t\t\t\tstart: opts?.start,\n\t\t\t\tencoding: 'binary',\n\t\t\t})\n\n\t\t\treturn Writable.toWeb(stream) as WritableStream>\n\t\t}\n\n\t}\n\n\n\t$.$mol_file = $mol_file_node\n}\n","namespace $ {\n\texport class $mol_state_local_node< Value > extends $mol_state_local< Value > {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic dir() {\n\t\t\tconst base = process.env.XDG_DATA_HOME || ( $node.os.homedir() + '/.local/share' )\n\t\t\treturn $mol_file.absolute( base ).resolve( './mol_state_local' )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >(\n\t\t\tkey : string ,\n\t\t\tnext? : Value | null ,\n\t\t) : Value | null {\n\t\t\t\n\t\t\tconst file = this.dir().resolve( encodeURIComponent( key ) + '.json' )\n\t\t\t\n\t\t\tif( next === null ) {\n\t\t\t\tfile.exists( false )\n\t\t\t\treturn null\n\t\t\t}\n\t\t\t\n\t\t\tconst arg = next === undefined ? undefined : JSON.stringify( next )\n\t\t\treturn JSON.parse( file.text( arg ) || 'null' )\n\t\t\t\n\t\t}\n\t\t\n\t}\n\t$.$mol_state_local = $mol_state_local_node\n}\n","namespace $ {\n\t\n\tfunction parse( theme: string | null ) {\n\t\tif( theme === 'true' ) return true\n\t\tif( theme === 'false' ) return false\n\t\treturn null\n\t}\n\t\n\t/**\n\t * Switcher between light/dark themes (usually for `mol_theme_auto` plugin).\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_lights_demo\n\t */\n\texport function $mol_lights( this : $ , next? : boolean ) {\n\t\t\n\t\tconst arg = parse( this.$mol_state_arg.value( 'mol_lights' ) )\n\t\t\n\t\tconst base = this.$mol_media.match( '(prefers-color-scheme: light)' )\n\t\t\n\t\tif( next === undefined ) {\n\t\t\treturn arg ?? this.$mol_state_local.value< boolean >( '$mol_lights' ) ?? base\n\t\t} else {\n\t\t\tif( arg === null ) {\n\t\t\t\tthis.$mol_state_local.value( '$mol_lights' , next === base ? null : next )\n\t\t\t} else {\n\t\t\t\tthis.$mol_state_arg.value( 'mol_lights' , String( next ) )\n\t\t\t}\n\t\t\treturn next\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $.$$ {\n\n\t/**\n\t * The [plugin](../../plugin/readme.md) which defines theme based on [mol_lights](../../lights/readme.md).\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_lights_demo\n\t */\n\texport class $mol_theme_auto extends $.$mol_theme_auto {\n\n\t\ttheme() {\n\t\t\treturn this.$.$mol_lights() ? '$mol_theme_light' : '$mol_theme_dark'\n\t\t}\n\n\t}\n}\n","$mol_scroll $mol_view\n\tscroll_top? 0\n\tscroll_left? 0\n\tfield *\n\t\t^\n\t\ttabIndex <= tabindex -1\n\tevent *\n\t\t^\n\t\tscroll?event <=> event_scroll?event null\n","namespace $ {\n\n\texport class $mol_dom_listener extends $mol_object {\n\n\t\tconstructor(\n\t\t\tpublic _node : any ,\n\t\t\tpublic _event : string ,\n\t\t\tpublic _handler : ( event : any )=> any ,\n\t\t\tpublic _config : boolean|{ passive : boolean } = { passive : true }\n\t\t) {\n\t\t\tsuper()\n\t\t\tthis._node.addEventListener( this._event , this._handler , this._config )\n\t\t}\n\n\t\tdestructor() {\n\t\t\tthis._node.removeEventListener( this._event , this._handler , this._config )\n\t\t\tsuper.destructor()\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_print extends $mol_object {\n\n\t\t@ $mol_mem\n\t\tstatic before() {\n\t\t\treturn new $mol_dom_listener( this.$.$mol_dom_context , 'beforeprint' , ()=> {\n\t\t\t\tthis.active( true )\n\t\t\t} )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic after() {\n\t\t\treturn new $mol_dom_listener( this.$.$mol_dom_context , 'afterprint' , ()=> {\n\t\t\t\tthis.active( false )\n\t\t\t} )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic active( next? : boolean ) {\n\t\t\tthis.before()\n\t\t\tthis.after()\n\t\t\treturn next || false\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_style_sheet<\n\t\tComponent extends $mol_view,\n\t\tConfig extends $mol_style_guard< Component , Config >,\n\t>(\n\t\tComponent : new()=> Component,\n\t\tconfig0 : Config ,\n\t) {\n\n\t\tlet rules = [] as string[]\n\n\t\tconst block = $mol_dom_qname( $mol_ambient({}).$mol_func_name( Component ) )\n\t\tconst kebab = ( name : string )=> name.replace( /[A-Z]/g , letter => '-' + letter.toLowerCase() )\n\n\t\tconst make_class = ( prefix : string , path : string[] , config : typeof config0 )=> {\n\n\t\t\tconst props = [] as string[]\n\n\t\t\tconst selector = ( prefix : string , path : string[] )=> {\n\t\t\t\tif( path.length === 0 ) return prefix || `[${ block }]`\n\t\t\t\tlet res = `[${ block }_${ path.join('_') }]`\n\t\t\t\tif( prefix ) res = prefix + ' :where(' + res + ')'\n\t\t\t\treturn res\n\t\t\t}\n\t\t\t\n\t\t\tfor( const key of Object.keys( config ).reverse() ) {\n\n\t\t\t\tif( /^(--)?[a-z]/.test(key) ) {\n\t\t\t\t\t\n\t\t\t\t\tconst addProp = ( keys : string[] , val : any )=> {\n\n\t\t\t\t\t\tif( Array.isArray( val ) ) {\n\n\t\t\t\t\t\t\tif( val[0] && [ Array , Object ].includes( val[0].constructor ) ) {\n\t\t\t\t\t\t\t\tval = val.map( v => {\n\t\t\t\t\t\t\t\t\treturn Object.entries( v ).map( ([ n , a ])=> {\n\t\t\t\t\t\t\t\t\t\tif( a === true ) return kebab( n )\n\t\t\t\t\t\t\t\t\t\tif( a === false ) return null\n\t\t\t\t\t\t\t\t\t\treturn String( a )\n\t\t\t\t\t\t\t\t\t} ).filter( Boolean ).join(' ')\n\t\t\t\t\t\t\t\t}).join( ',' )\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tval = val.join(' ')\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tprops.push(`\\t${ keys.join('-') }: ${ val };\\n`)\n\n\t\t\t\t\t\t} else if( val.constructor === Object ) {\n\n\t\t\t\t\t\t\tfor( let suffix in val ) {\n\t\t\t\t\t\t\t\taddProp( [ ... keys , kebab( suffix ) ] , val[ suffix ] )\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tprops.push(`\\t${ keys.join('-') }: ${ val };\\n`)\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\n\t\t\t\t\taddProp( [ kebab(key) ] , (config as any)[key] )\n\n\t\t\t\t} else if( /^[A-Z]/.test(key) ) {\n\n\t\t\t\t\tmake_class( prefix , [ ... path , key.toLowerCase() ] , (config as any)[key] )\n\n\t\t\t\t} else if( key[0] === '$' ) {\n\n\t\t\t\t\tmake_class( selector( prefix , path ) + ' :where([' + $mol_dom_qname( key ) + '])' , [] , (config as any)[key] )\n\n\t\t\t\t} else if( key === '>' ) {\n\n\t\t\t\t\tconst types = config[key] as any\n\n\t\t\t\t\tfor( let type in types ) {\n\t\t\t\t\t\tmake_class( selector( prefix , path ) + ' > :where([' + $mol_dom_qname( type ) + '])' , [] , types[type] )\n\t\t\t\t\t}\n\n\t\t\t\t} else if( key === '@' ) {\n\n\t\t\t\t\tconst attrs = config[key] as any\n\n\t\t\t\t\tfor( let name in attrs ) {\n\t\t\t\t\t\tfor( let val in attrs[name] ) {\n\t\t\t\t\t\t\tmake_class( selector( prefix , path ) + ':where([' + name + '=' + JSON.stringify( val ) + '])' , [] , attrs[name][val] )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t} else if( key === '@media' ) {\n\n\t\t\t\t\tconst media = (config as any)[key] as any\n\n\t\t\t\t\tfor( let query in media ) {\n\n\t\t\t\t\t\trules.push('}\\n')\n\t\t\t\t\t\t\n\t\t\t\t\t\tmake_class( prefix , path , media[query] )\n\t\t\t\t\t\t\n\t\t\t\t\t\trules.push( `${ key } ${ query } {\\n` )\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if( key[0] === '[' && key[key.length-1] === ']' ) {\n\n\t\t\t\t\tconst attr = key.slice( 1, -1 )\n\t\t\t\t\tconst vals = config[ key as any ] as any as Record< string, any >\n\t\t\t\t\t\n\t\t\t\t\tfor( let val in vals ) {\n\t\t\t\t\t\tmake_class( selector( prefix , path ) + ':where([' + attr + '=' + JSON.stringify( val ) + '])' , [] , vals[val] )\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t} else {\n\n\t\t\t\t\tmake_class( selector( prefix , path ) + key , [] , (config as any)[key] )\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t\n\t\t\tif( props.length ) {\n\t\t\t\trules.push( `${ selector( prefix , path ) } {\\n${ props.reverse().join('') }}\\n` )\n\t\t\t}\n\n\t\t}\n\n\t\tmake_class( '' , [] , config0 )\n\n\t\treturn rules.reverse().join('')\n\n\t}\n\n}\n","namespace $ {\n\n\t/**\n\t * CSS in TS.\n\t * Statically typed CSS style sheets. Following samples show which CSS code are generated from TS code.\n\t * @see https://mol.hyoo.ru/#!section=docs/=xwq9q5_f966fg\n\t */\n\texport function $mol_style_define<\n\t\tComponent extends $mol_view,\n\t\tConfig extends $mol_style_guard< Component , Config >,\n\t>(\n\t\tComponent : new()=> Component,\n\t\tconfig : Config ,\n\t) {\n\n\t\treturn $mol_style_attach(\n\t\t\tComponent.name,\n\t\t\t$mol_style_sheet( Component , config ),\n\t\t)\n\n\t}\n\n}\n","namespace $.$$ {\n\t\n\t/**\n\t * Scrolling pane.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_scroll_demo\n\t */\n\texport class $mol_scroll extends $.$mol_scroll {\n\n\t\t@ $mol_mem\n\t\tscroll_top( next? : number, cache?: 'cache' ): number {\n\t\t\t\n\t\t\tconst el = this.dom_node()\n\t\t\tif( next !== undefined && !cache ) el.scrollTop = next\n\t\t\t\n\t\t\treturn el.scrollTop\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tscroll_left( next? : number, cache?: 'cache' ): number {\n\t\t\t\n\t\t\tconst el = this.dom_node()\n\t\t\tif( next !== undefined && !cache ) el.scrollLeft = next\n\t\t\t\n\t\t\treturn el.scrollLeft\n\t\t}\n\t\t\n\t\tevent_scroll( next? : Event ) {\n\t\t\t\n\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\n\t\t\tthis.scroll_left( el.scrollLeft, 'cache' )\n\t\t\tthis.scroll_top( el.scrollTop, 'cache' )\n\t\t\t\n\t\t}\n\n\t\tminimal_height() {\n\t\t\treturn this.$.$mol_print.active() ? null! : 0\n\t\t}\n\t\t\n\t\tminimal_width() {\n\t\t\treturn this.$.$mol_print.active() ? null! : 0\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $.$$ {\n\n\tconst { per , rem , px } = $mol_style_unit\n\n\t$mol_style_define( $mol_scroll , {\n\n\t\tdisplay: 'grid',\n\t\toverflow: 'auto',\n\t\tflex: {\n\t\t\tdirection: 'column',\n\t\t\tgrow: 1,\n\t\t\tshrink: 1,\n\t\t\t// basis: 0,\n\t\t},\n\t\toutline: 'none',\n\t\talign: {\n\t\t\tself: 'stretch',\n\t\t\titems: 'flex-start',\n\t\t},\n\t\tboxSizing: 'border-box',\n\t\twillChange: 'scroll-position',\n\t\tscroll: {\n\t\t\tpadding: [ rem(.75), 0 ],\n\t\t},\n\t\tmaxHeight: per(100),\n\t\tmaxWidth: per(100),\n\t\twebkitOverflowScrolling: 'touch',\n\t\tcontain: 'content',\n\n\t\t'>': {\n\t\t\t$mol_view: {\n\t\t\t\t// transform: 'translateZ(0)', // enforce gpu scroll in all agents\n\t\t\t\tgridArea: '1/1',\n\t\t\t},\n\t\t},\n\n\t\t'::before': {\n\t\t\tdisplay: 'none',\n\t\t},\n\t\t'::after': {\n\t\t\tdisplay: 'none',\n\t\t},\n\t\t\n\t\t'::-webkit-scrollbar': {\n\t\t\twidth: rem(.25),\n\t\t\theight: rem(.25),\n\t\t},\n\t\t\n\t\t'@media' : {\n\t\t\t'print' : {\n\t\t\t\toverflow: 'hidden',\n\t\t\t\tcontain: 'none',\n\t\t\t\tmaxHeight: 'unset',\n\t\t\t},\n\t\t},\n\n\t})\n\n}\n","$mol_book2 $mol_scroll\n\tmenu_title \\\n\tsub <= pages /$mol_view\n\tminimal_width 0\n\tPlaceholder $mol_view\n\tGap* $mol_view title \\\n","namespace $ {\n\n\t/**\n\t * Z-index values for layers\n\t * https://page.hyoo.ru/#!=xthcpx_wqmiba\n\t */\n\texport let $mol_layer = $mol_style_prop(\n\t\t'mol_layer',\n\t\t[\n\t\t\t'hover',\n\t\t\t'focus',\n\t\t\t'speck',\n\t\t\t'float',\n\t\t\t'popup',\n\t\t] as const\n\t)\n\n}\n","namespace $ { $mol_style_attach( \"mol/layer/layer.css\",\n \":root {\\n\\t--mol_layer_hover: 1;\\n\\t--mol_layer_focus: 2;\\n\\t--mol_layer_speck: 3;\\n\\t--mol_layer_float: 4;\\n\\t--mol_layer_popup: 5;\\n}\\n\"\n) }","namespace $.$$ {\n\n\t/**\n\t * Root component for adaptivity to various screen sizes. Implements booklet UX.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_book2_demo\n\t */\n\texport class $mol_book2 extends $.$mol_book2 {\n\t\t\n\t\ttitle() {\n\t\t\treturn this.pages().map( page => {\n\t\t\t\ttry {\n\t\t\t\t\treturn page?.title()\n\t\t\t\t} catch( error ) {\n\t\t\t\t\t$mol_fail_log( error )\n\t\t\t\t}\n\t\t\t} ).reverse().filter( Boolean ).join( ' | ' )\n\t\t}\n\t\t\n\t\tmenu_title() {\n\t\t\treturn this.pages()[0]?.title() || this.title()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tsub() {\n\t\t\t\n\t\t\tconst placeholder = this.Placeholder()\n\t\t\tconst next = [ ... this.pages(), placeholder ]\n\t\t\t\n\t\t\tconst prev = $mol_mem_cached( ()=> this.sub() ) ?? []\n\t\t\t\n\t\t\tfor( let i = 1 ; i++ ; ) {\n\t\t\t\t\n\t\t\t\tconst p = prev[ prev.length - i ]\n\t\t\t\tconst n = next[ next.length - i ]\n\t\t\t\t\n\t\t\t\tif( !n ) break\n\n\t\t\t\tif( p === n ) continue\n\t\t\t\tif( n === placeholder ) continue\n\n\t\t\t\tnew this.$.$mol_after_tick( ()=> {\n\t\t\t\t\tconst b = this.dom_node() as HTMLElement\n\t\t\t\t\tconst p = n.dom_node() as HTMLElement\n\t\t\t\t\tb.scroll({\n\t\t\t\t\t\tleft: p.offsetLeft + p.offsetWidth - b.offsetWidth,\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t})\n\t\t\t\t\t// new this.$.$mol_after_timeout( 1000, ()=> n.bring() )\n\t\t\t\t} )\n\t\t\t\t\n\t\t\t\tbreak\n\n\t\t\t}\n\n\t\t\treturn next as readonly $mol_view[]\n\t\t}\n\t\t\n\t\tbring() {\n\t\t\t\n\t\t\tconst pages = this.pages()\n\t\t\t\n\t\t\tif( pages.length ) pages[ pages.length - 1 ].bring()\n\t\t\telse super.bring()\n\t\t\t\n\t\t}\n\n\t}\n\n}\n","namespace $ { $mol_style_attach( \"mol/book2/book2.view.css\",\n \"[mol_book2] {\\n\\tdisplay: flex;\\n\\tflex-flow: row nowrap;\\n\\talign-items: stretch;\\n\\tflex: 1 1 auto;\\n\\talign-self: stretch;\\n\\tmargin: 0;\\n\\t/* box-shadow: 0 0 0 1px var(--mol_theme_line); */\\n\\t/* transform: translateZ(0); */\\n\\ttransition: none;\\n\\tscroll-snap-type: x mandatory;\\n\\t/* padding: 0 1px;\\n\\tscroll-padding: 0 1px;\\n\\tgap: 1px; */\\n}\\n\\n[mol_book2] > * {\\n/* \\tflex: none; */\\n\\tscroll-snap-stop: always;\\n\\tscroll-snap-align: end;\\n\\tposition: relative;\\n\\tmin-height: 100%;\\n\\tmax-height: 100%;\\n\\tmax-width: 100%;\\n\\tflex-shrink: 0;\\n\\tbox-shadow: inset 0 0 0 1px var(--mol_theme_field);\\n}\\n\\n[mol_book2] > *:not(:first-of-type):before,\\n[mol_book2] > *:not(:last-of-type)::after {\\n\\tcontent: '';\\n\\tposition: absolute;\\n\\ttop: 1.5rem;\\n\\twidth: 3px;\\n\\theight: 1rem;\\n\\tbackground: linear-gradient(\\n\\t\\tto bottom,\\n\\t\\tvar(--mol_theme_focus) 0%,\\n\\t\\tvar(--mol_theme_focus) 14%,\\n\\t\\ttransparent 15%,\\n\\t\\ttransparent 42%,\\n\\t\\tvar(--mol_theme_focus) 43%,\\n\\t\\tvar(--mol_theme_focus) 57%,\\n\\t\\ttransparent 58%,\\n\\t\\ttransparent 85%,\\n\\t\\tvar(--mol_theme_focus) 86%,\\n\\t\\tvar(--mol_theme_focus) 100%\\n\\t);\\n\\topacity: .5;\\n\\tz-index: var(--mol_layer_speck);\\n}\\n[mol_book2] > *:not(:first-of-type):before {\\n\\tleft: -1px;\\n}\\n[mol_book2] > *:not(:last-of-type)::after {\\n\\tright: -1px;\\n}\\n\\n:where([mol_book2]) > * {\\n\\tbackground-color: var(--mol_theme_card);\\n\\t/* box-shadow: 0 0 0 1px var(--mol_theme_back); */\\n}\\n\\n[mol_book2] > [mol_book2] {\\n\\tdisplay: contents;\\n}\\n\\n[mol_book2] > *:first-child {\\n\\tscroll-snap-align: start;\\n}\\n\\n[mol_book2] > [mol_view] {\\n\\ttransform: none; /* prevent content clipping */\\n}\\n\\n[mol_book2_placeholder] {\\n\\tflex: 1 1 0;\\n\\tbackground: none;\\n}\\n\\n[mol_book2_gap] {\\n\\tbackground: none;\\n\\tflex-grow: 1;\\n\\tscroll-snap-align: none;\\n\\tmargin-right: -1px;\\n\\tbox-shadow: none;\\n}\\n\\n[mol_book2_gap]::before,\\n[mol_book2_gap]::after {\\n\\tdisplay: none;\\n}\\n\"\n) }","$mol_link $mol_view\n\turi \\\n\tdom_name \\a\n\turi_off \\\n\turi_native null\n\texternal false\n\tattr *\n\t\t^\n\t\thref <= uri_toggle \\\n\t\ttitle <= hint_safe <= hint \\\n\t\ttarget <= target \\_self\n\t\tdownload <= file_name \\\n\t\tmol_link_current <= current false\n\t\trel <= relation \\\n\tsub /$mol_view_content\n\t\t<= title\n\targ *\n\tevent *\n\t\t^\n\t\tclick?event <=> click?event <=> event_click?event null\n","namespace $.$$ {\n\t\n\t/**\n\t * Dynamic hyperlink. It can add, change or remove parameters. A link that leads to the current page has [mol_link_current] attribute set to true.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_link_demo\n\t */\n\texport class $mol_link extends $.$mol_link {\n\t\t\n\t\t@ $mol_mem\n\t\turi_toggle() {\n\t\t\treturn this.current() ? this.uri_off() : this.uri()\n\t\t}\n\n\t\t@ $mol_mem\n\t\turi() {\n\t\t\treturn new this.$.$mol_state_arg( this.state_key() ).link( this.arg() )\n\t\t}\n\n\t\t@ $mol_mem\n\t\turi_off() {\n\t\t\tconst arg2: Record = {}\n\t\t\tfor( let i in this.arg() ) arg2[i] = null\n\t\t\t\n\t\t\treturn new this.$.$mol_state_arg( this.state_key() ).link( arg2 )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\turi_native() {\n\t\t\tconst base = this.$.$mol_state_arg.href()\n\t\t\treturn new URL( this.uri() , base )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcurrent() {\n\n\t\t\tconst base = this.$.$mol_state_arg.href_normal()\n\t\t\tconst target = this.uri_native().toString()\n\n\t\t\tif( base === target ) return true\n\t\t\t\n\t\t\tconst args = this.arg() as Record\n\t\t\t\n\t\t\tconst keys = Object.keys( args ).filter( key => args[ key ] != null )\n\t\t\tif( keys.length === 0 ) return false\n\n\t\t\tfor( const key of keys ) {\n\t\t\t\tif( this.$.$mol_state_arg.value( key ) != args[ key ] ) return false\n\t\t\t}\n\n\t\t\treturn true\n\t\t}\n\n\t\tfile_name() {\n\t\t\treturn null as unknown as string\n\t\t}\n\n\t\tminimal_height() {\n\t\t\treturn Math.max( super.minimal_height(), 24 )\n\t\t}\n\t\t\n\t\texternal() {\n\t\t\treturn this.uri_native().origin !== $mol_dom_context.location.origin\n\t\t}\n\t\t\n\t\ttarget(): '_self' | '_blank' | '_top' | '_parent' | string {\n\t\t\treturn this.external() ? '_blank' : '_self'\n\t\t}\n\n\t\thint_safe() {\n\t\t\ttry {\n\t\t\t\treturn this.hint()\n\t\t\t} catch( error ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\treturn ''\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\tconst { rem } = $mol_style_unit\n\n\t$mol_style_define( $mol_link , {\n\t\t\n\t\ttextDecoration: 'none',\n\t\tcolor: $mol_theme.control,\n\t\tstroke: 'currentcolor',\n\t\tcursor: 'pointer',\n\t\tpadding: $mol_gap.text,\n\t\tboxSizing: 'border-box',\n\t\tposition: 'relative',\n\t\tminWidth: rem(2.5),\n\t\tgap: $mol_gap.space,\n\t\t\n\t\tborder: {\n\t\t\tradius: $mol_gap.round,\n\t\t},\n\n\t\t':hover': {\n\t\t\t\n\t\t\tbackground: {\n\t\t\t\tcolor: $mol_theme.hover,\n\t\t\t},\n\t\t\t\n\t\t},\n\n\t\t':focus-visible': {\n\t\t\t\n\t\t\toutline: 'none',\n\t\t\t\n\t\t\tbackground: {\n\t\t\t\tcolor: $mol_theme.hover,\n\t\t\t},\n\t\t\t\n\t\t},\n\n\t\t// ':has(:focus-visible)': {\n\t\t// \toutline: 'none',\n\t\t// \tbackground: {\n\t\t// \t\tcolor: $mol_theme.hover,\n\t\t// \t}\n\t\t// },\n\t\t\n\t\t':active': {\n\t\t\tcolor: $mol_theme.focus,\n\t\t},\n\n\t\t'@': {\n\t\t\tmol_link_current: {\n\t\t\t\t'true': {\n\t\t\t\t\tcolor: $mol_theme.current,\n\t\t\t\t\ttextShadow: '0 0',\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\n\t} )\n\n}\n","$mol_image $mol_view\n\tdom_name \\img\n\tfield *any\n\t\t^\n\t\tsrc <= uri \\\n\t\talt <= title\n\t\tloading <= loading \\eager\n\t\tdecoding <= decoding \\async\n\t\tcrossOrigin <= cors null\n\tattr *any\n\t\t^\n\t\twidth <= natural_width 0\n\t\theight <= natural_height 0\n\tevent *any\n\t\tload? <=> load? null\n\tminimal_width 16\n\tminimal_height 16\n","namespace $.$$ {\n\texport class $mol_image extends $.$mol_image {\n\t\t\n\t\t@ $mol_mem\n\t\tnatural_width( next?: null ) {\n\t\t\t\n\t\t\tconst dom = this.dom_node() as HTMLImageElement\n\t\t\tif( dom.naturalWidth ) return dom.naturalWidth\n\t\t\t\n\t\t\tconst found = this.uri().match( /\\bwidth=(\\d+)/ )\n\t\t\treturn found ? Number( found[1] ) : null!\n\t\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tnatural_height( next?: null ) {\n\t\t\t\n\t\t\tconst dom = this.dom_node() as HTMLImageElement\n\t\t\tif( dom.naturalHeight ) return dom.naturalHeight\n\t\t\t\n\t\t\tconst found = this.uri().match( /\\bheight=(\\d+)/ )\n\t\t\treturn found ? Number( found[1] ) : null!\n\t\t\t\n\t\t}\n\t\t\n\t\tload() {\n\t\t\tthis.natural_width( null )\n\t\t\tthis.natural_height( null )\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/image/image.view.css\",\n \"[mol_image] {\\n\\tborder-radius: var(--mol_gap_round);\\n\\toverflow: hidden;\\n\\tflex: 0 1 auto;\\n\\tmax-width: 100%;\\n\\tobject-fit: cover;\\n\\theight: fit-content;\\n}\\n\"\n) }","$mol_link_iconed $mol_link\n\tsub /\n\t\t<= Icon $mol_image\n\t\t\turi <= icon \\\n\t\t\ttitle \\\n\tcontent /\n\t\t<= title <= uri\n\thost \\\n","namespace $.$$ {\n\n\texport class $mol_link_iconed extends $.$mol_link_iconed {\n\n\t\t@ $mol_mem\n\t\ticon() {\n\t\t\treturn `https://favicon.yandex.net/favicon/${ this.host() }?color=0,0,0,0&size=32&stub=1`\n\t\t\t// return `https://api.faviconkit.com/${ this.host() }/16`\n\t\t}\n\n\t\t@ $mol_mem\n\t\thost() {\n\t\t\tconst base = this.$.$mol_state_arg.href()\n\t\t\tconst url = new URL( this.uri() , base )\n\t\t\treturn url.hostname\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\ttitle() {\n\t\t\tconst uri = this.uri()\n\t\t\tconst host = this.host()\n\t\t\tconst suffix = ( host ? uri.split( this.host() , 2 )[1] : uri )?.replace( /^[\\/\\?#!]+/, '' )\n\t\t\treturn decodeURIComponent( suffix || host ).replace( /^\\//, ' ' )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tsub() {\n\t\t\treturn [\n\t\t\t\t... this.host() ? [ this.Icon() ] : [],\n\t\t\t\t... this.content() ? [ ' ', ... this.content() ] : [],\n\t\t\t] as readonly any[]\n\t\t}\n\n\t}\n\n}\n","namespace $ { $mol_style_attach( \"mol/link/iconed/iconed.view.css\",\n \"[mol_link_iconed] {\\n\\talign-items: baseline;\\n\\tdisplay: inline-flex;\\n\\tpadding: var(--mol_gap_text);\\n}\\n\\n[mol_link_iconed_icon] {\\n\\tbox-shadow: none;\\n\\theight: 1.5em;\\n\\twidth: 1em;\\n\\tflex: 0 0 auto;\\n\\tdisplay: inline-block;\\n\\talign-self: normal;\\n\\tvertical-align: top;\\n\\tborder-radius: 0;\\n\\tobject-fit: scale-down;\\n\\topacity: .75;\\n}\\n\\n[mol_theme=\\\"$mol_theme_dark\\\"] [mol_link_iconed_icon] {\\n\\tfilter: var(--mol_theme_image);\\n}\\n\"\n) }","$mol_speck $mol_view\n\tattr *\n\t\t^\n\t\tmol_theme <= theme \\$mol_theme_accent\n\tstyle *\n\t\t^\n\t\tminHeight \\1em\n\tsub /\n\t\t<= value null\n","namespace $ { $mol_style_attach( \"mol/speck/speck.view.css\",\n \"[mol_speck] {\\n\\tfont-size: .625rem;\\n\\tborder-radius: 1rem;\\n\\tmargin: -0.5rem -0.25rem;\\n\\talign-self: flex-start;\\n\\tmin-height: 1em;\\n\\tmin-width: .5em;\\n\\tvertical-align: sub;\\n\\tpadding: .25em .5em;\\n\\tposition: absolute;\\n\\tz-index: var(--mol_layer_speck);\\n\\ttext-align: center;\\n\\tline-height: 1;\\n\\tdisplay: inline-block;\\n\\twhite-space: nowrap;\\n\\ttext-overflow: ellipsis;\\n\\tuser-select: none;\\n}\\n\"\n) }","$mol_button $mol_view\n\tenabled true\n\tclick?event null\n\tevent_click?event null\n\tevent *\n\t\t^\n\t\tclick?event <=> event_activate?event null\n\t\tdblclick?event <=> clicks?event null\n\t\tkeydown?event <=> event_key_press?event null \n\tattr *\n\t\t^\n\t\tdisabled <= disabled false\n\t\trole \\button\n\t\ttabindex <= tab_index 0\n\t\ttitle <= hint_safe <= hint \\\n\tsub /$mol_view_content\n\t\t<= title\n\tSpeck $mol_speck\n\t\tvalue <= error \\\n","namespace $ {\n\t/**\n\t* Key names code for hotkey\n\t* @see [mol_hotkey](../../hotkey/hotkey.view.ts)\n\t*/\n\texport enum $mol_keyboard_code {\n\t\tbackspace = 8,\n\t\ttab = 9,\n\t\tenter = 13,\n\t\tshift = 16,\n\t\tctrl = 17,\n\t\talt = 18,\n\t\tpause = 19,\n\t\tcapsLock = 20,\n\t\tescape = 27,\n\t\tspace = 32,\n\t\tpageUp = 33,\n\t\tpageDown = 34,\n\t\tend = 35,\n\t\thome = 36,\n\t\tleft = 37,\n\t\tup = 38,\n\t\tright = 39,\n\t\tdown = 40,\n\t\tinsert = 45,\n\t\tdelete = 46,\n\t\tkey0 = 48,\n\t\tkey1 = 49,\n\t\tkey2 = 50,\n\t\tkey3 = 51,\n\t\tkey4 = 52,\n\t\tkey5 = 53,\n\t\tkey6 = 54,\n\t\tkey7 = 55,\n\t\tkey8 = 56,\n\t\tkey9 = 57,\n\t\tA = 65,\n\t\tB = 66,\n\t\tC = 67,\n\t\tD = 68,\n\t\tE = 69,\n\t\tF = 70,\n\t\tG = 71,\n\t\tH = 72,\n\t\tI = 73,\n\t\tJ = 74,\n\t\tK = 75,\n\t\tL = 76,\n\t\tM = 77,\n\t\tN = 78,\n\t\tO = 79,\n\t\tP = 80,\n\t\tQ = 81,\n\t\tR = 82,\n\t\tS = 83,\n\t\tT = 84,\n\t\tU = 85,\n\t\tV = 86,\n\t\tW = 87,\n\t\tX = 88,\n\t\tY = 89,\n\t\tZ = 90,\n\t\tmetaLeft = 91,\n\t\tmetaRight = 92,\n\t\tselect = 93,\n\t\tnumpad0 = 96,\n\t\tnumpad1 = 97,\n\t\tnumpad2 = 98,\n\t\tnumpad3 = 99,\n\t\tnumpad4 = 100,\n\t\tnumpad5 = 101,\n\t\tnumpad6 = 102,\n\t\tnumpad7 = 103,\n\t\tnumpad8 = 104,\n\t\tnumpad9 = 105,\n\t\tmultiply = 106,\n\t\tadd = 107,\n\t\tsubtract = 109,\n\t\tdecimal = 110,\n\t\tdivide = 111,\n\t\tF1 = 112,\n\t\tF2 = 113,\n\t\tF3 = 114,\n\t\tF4 = 115,\n\t\tF5 = 116,\n\t\tF6 = 117,\n\t\tF7 = 118,\n\t\tF8 = 119,\n\t\tF9 = 120,\n\t\tF10 = 121,\n\t\tF11 = 122,\n\t\tF12 = 123,\n\t\tnumLock = 144,\n\t\tscrollLock = 145,\n\t\tsemicolon = 186,\n\t\tequals = 187,\n\t\tcomma = 188,\n\t\tdash = 189,\n\t\tperiod = 190,\n\t\tforwardSlash = 191,\n\t\tgraveAccent = 192,\n\t\tbracketOpen = 219,\n\t\tslashBack = 220,\n\t\tslashBackLeft = 226,\n\t\tbracketClose = 221,\n\t\tquoteSingle = 222\n\t}\n}\n","namespace $.$$ {\n\t\n\t/**\n\t * Simple button.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_button_demo\n\t */\n\texport class $mol_button extends $.$mol_button {\n\n\t\t@ $mol_mem\n\t\tstatus( next = [ null as any ] ) { return next }\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\tevent_activate( next : Event ) {\n\t\t\t\n\t\t\tif( !next ) return\n\t\t\tif( !this.enabled() ) return\n\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tthis.event_click( next )\n\t\t\t\tthis.click( next )\n\t\t\t\tthis.status([ null ])\n\t\t\t\t\n\t\t\t} catch( error: any ) {\n\t\t\t\t\n\t\t\t\tPromise.resolve().then( ()=> this.status([ error ]) )\n\t\t\t\t$mol_fail_hidden( error )\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\t\t\n\t\tevent_key_press ( event: KeyboardEvent ) { \n\t\t\tif( event.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\treturn this.event_activate( event )\n\t\t\t}\n\t\t} \n\t\t\n\t\ttab_index() {\n\t\t\treturn this.enabled() ? super.tab_index() : -1\n\t\t}\n\n\t\terror() {\n\n\t\t\tconst [ error ] = this.status()\n\t\t\tif( !error ) return ''\n\n\t\t\tif( error instanceof Promise ) {\n\t\t\t\treturn $mol_fail_hidden( error )\n\t\t\t}\n\t\t\t\n\t\t\treturn String( error.message ?? error )\n\n\t\t}\n\t\t\n\t\thint_safe() {\n\t\t\ttry {\n\t\t\t\treturn this.hint()\n\t\t\t} catch( error ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\treturn ''\n\t\t\t}\n\t\t}\n\n\t\tsub_visible() {\n\t\t\treturn [\n\t\t\t\t... this.error() ? [ this.Speck() ] : [] ,\n\t\t\t\t... this.sub() ,\n\t\t\t]\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/button/button.view.css\",\n \"[mol_button] {\\n\\tborder: none;\\n\\tfont: inherit;\\n\\tdisplay: inline-flex;\\n\\tflex-shrink: 0;\\n\\ttext-decoration: inherit;\\n\\tcursor: inherit;\\n\\tposition: relative;\\n\\tbox-sizing: border-box;\\n\\tword-break: normal;\\n\\tcursor: default;\\n\\tuser-select: none;\\n\\tborder-radius: var(--mol_gap_round);\\n\\tbackground: transparent;\\n\\tcolor: inherit;\\n}\\n\\n[mol_button]:where(:not(:disabled)):hover {\\n\\tz-index: var(--mol_layer_hover);\\n}\\n\\n[mol_button]:focus-visible {\\n\\toutline: none;\\n\\tz-index: var(--mol_layer_focus);\\n}\\n\"\n) }","$mol_button_typed $mol_button\n\tminimal_height 40\n\tminimal_width 40\n","namespace $ { $mol_style_attach( \"mol/button/typed/typed.view.css\",\n \"[mol_button_typed] {\\n\\talign-content: center;\\n\\talign-items: center;\\n\\tpadding: var(--mol_gap_text);\\n\\tborder-radius: var(--mol_gap_round);\\n\\tgap: var(--mol_gap_space);\\n\\tuser-select: none;\\n\\tcursor: pointer;\\n}\\n\\n[mol_button_typed][disabled] {\\n\\tpointer-events: none;\\n}\\n\\n[mol_button_typed]:hover ,\\n[mol_button_typed]:focus-visible {\\n\\tbox-shadow: inset 0 0 0 10rem var(--mol_theme_hover);\\n}\\n\\n[mol_button_typed]:active {\\n\\tcolor: var(--mol_theme_focus);\\n}\\n\\n\"\n) }","$mol_button_minor $mol_button_typed\n","namespace $ { $mol_style_attach( \"mol/button/minor/minor.view.css\",\n \"[mol_button_minor] {\\n\\tcolor: var(--mol_theme_control);\\n}\\n\\n[mol_button_minor][disabled] {\\n\\tcolor: var(--mol_theme_shade);\\n}\\n\"\n) }","$mol_check $mol_button_minor\n\tattr *\n\t\t^\n\t\tmol_check_checked <= checked? false\n\t\taria-checked <= aria_checked \\false\n\t\trole <= aria_role \\checkbox\n\tsub /$mol_view_content\n\t\t<= Icon null\n\t\t<= label /\n\t\t\t<= Title $mol_view\n\t\t\t\tsub /\n\t\t\t\t\t<= title \\\n","namespace $ {\n\t\n\texport function $mol_maybe< Value >( value : Value | null | undefined ) : Value[] {\n\t\treturn ( value == null ) ? [] : [ value ]\n\t}\n\t\n}\n","namespace $ { $mol_style_attach( \"mol/check/check.css\",\n \"[mol_check] {\\n\\tflex: 0 0 auto;\\n\\tjustify-content: flex-start;\\n\\talign-content: center;\\n\\t/* align-items: flex-start; */\\n\\tborder: none;\\n\\tfont-weight: inherit;\\n\\tbox-shadow: none;\\n\\ttext-align: left;\\n\\tdisplay: inline-flex;\\n\\tflex-wrap: nowrap;\\n}\\n\\n[mol_check_title] {\\n\\tflex-shrink: 1;\\n}\\n\"\n) }","namespace $.$$ {\n\n\t/**\n\t * Checkbox UI component. See Variants for more concrete implementations.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_check_box_demo\n\t */\n\texport class $mol_check extends $.$mol_check {\n\n\t\tclick( next? : Event ) {\n\t\t\tif( next?.defaultPrevented ) return\n\t\t\tthis.checked( !this.checked() )\n\t\t\tif( next ) next.preventDefault()\n\t\t}\n\n\t\tsub() {\n\t\t\treturn [\n\t\t\t\t... $mol_maybe( this.Icon() ) ,\n\t\t\t\t... this.label() ,\n\t\t\t] as readonly $mol_view_content[]\n\t\t}\n\n\t\tlabel() {\n\t\t\treturn this.title() ? super.label() : []\n\t\t}\n\t\t\n\t\taria_checked() {\n\t\t\treturn String( this.checked() )\n\t\t}\n\n\t}\n}\n","$mol_check_icon $mol_check\n","namespace $ { $mol_style_attach( \"mol/check/icon/icon.view.css\",\n \"[mol_check_icon]:where([mol_check_checked]) {\\n\\tcolor: var(--mol_theme_current);\\n}\\n\"\n) }","$mol_svg $mol_view\n\tdom_name \\svg\n\tdom_name_space \\http://www.w3.org/2000/svg\n\tfont_size 16\n\tfont_family \\\n\tstyle_size *\n","namespace $ {\n\t\n\t/** State of time moment */\n\texport class $mol_state_time extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic task( precision: number, reset?: null ): $mol_after_timeout | $mol_after_frame {\n\t\t\t\n\t\t\tif( precision ) {\n\t\t\t\treturn new $mol_after_timeout( precision, ()=> this.task( precision, null ) )\n\t\t\t} else {\n\t\t\t\treturn new $mol_after_frame( ()=> this.task( precision, null ) )\n\t\t\t}\n\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic now( precision: number ) {\n\t\t\tthis.task( precision )\n\t\t\treturn Date.now()\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $.$$ {\n\t/** Base SVG component to display SVG images or icons. */\n\texport class $mol_svg extends $.$mol_svg {\n\t\t@$mol_mem\n\t\tcomputed_style() {\n\t\t\tconst win = this.$.$mol_dom_context\n\t\t\tconst style = win.getComputedStyle(this.dom_node()) as Record\n\n\t\t\tif(!style['font-size']) $mol_state_time.now( 0 )\n\n\t\t\treturn style\n\t\t}\n\n\t\t@$mol_mem\n\t\tfont_size(): number {\n\t\t\treturn parseInt(this.computed_style()['font-size']) || 16\n\t\t}\n\n\t\t@$mol_mem\n\t\tfont_family() {\n\t\t\treturn this.computed_style()['font-family']\n\t\t}\n\n\t}\n}\n","$mol_svg_root $mol_svg\n\tdom_name \\svg\n\tattr *\n\t\t^\n\t\tviewBox <= view_box \\0 0 100 100\n\t\tpreserveAspectRatio <= aspect \\xMidYMid\n","namespace $ { $mol_style_attach( \"mol/svg/root/root.view.css\",\n \"[mol_svg_root] {\\n\\toverflow: hidden;\\n}\\n\"\n) }","$mol_svg_path $mol_svg\n\tdom_name \\path\n\tattr *\n\t\t^\n\t\td <= geometry \\\n\n","$mol_icon $mol_svg_root\n\tview_box \\0 0 24 24\n\tminimal_width 16\n\tminimal_height 16\n\tsub /\n\t\t<= Path $mol_svg_path\n\t\t\tgeometry <= path \\\n","namespace $ { $mol_style_attach( \"mol/icon/icon.view.css\",\n \"[mol_icon] {\\n\\tfill: currentColor;\\n\\tstroke: none;\\n\\twidth: 1em;\\n\\theight: 1.5em;\\n\\tflex: 0 0 auto;\\n\\tvertical-align: top;\\n\\tdisplay: inline-block;\\n\\tfilter: drop-shadow(0px 1px 1px var(--mol_theme_back));\\n\\ttransform-origin: center;\\n}\\n\\n[mol_icon_path] {\\n\\ttransform-origin: center;\\n}\\n\"\n) }","$mol_icon_brightness_4 $mol_icon path \\M12,18C11.11,18 10.26,17.8 9.5,17.45C11.56,16.5 13,14.42 13,12C13,9.58 11.56,7.5 9.5,6.55C10.26,6.2 11.11,6 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z\n","namespace $ {\n\t\n\texport interface $mol_locale_dict {\n\t\t[ key : string ] : string\n\t}\n\t\n\t/**\n\t * Localisation in $mol framework\n\t * @see https://mol.hyoo.ru/#!section=docs/=s5aqnb_odub8l\n\t */\n\texport class $mol_locale extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic lang_default() {\n\t\t\treturn 'en'\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic lang( next? : string ) {\n\t\t\treturn this.$.$mol_state_local.value( 'locale' , next ) || $mol_dom_context.navigator.language.replace( /-.*/ , '' ) || this.lang_default()\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic source( lang : string ) {\n\t\t\treturn JSON.parse( this.$.$mol_file.relative( `web.locale=${ lang }.json` ).text().toString() )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic texts( lang : string , next? : $mol_locale_dict ) : $mol_locale_dict {\n\t\t\tif( next ) return next\n\t\t\t\n\t\t\ttry {\n\t\t\t\treturn this.source( lang ).valueOf()\n\t\t\t} catch( error: any ) {\n\t\t\t\tif( $mol_fail_catch( error ) ) {\n\t\t\t\t\tconst def = this.lang_default()\n\t\t\t\t\tif( lang === def ) throw error\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic text( key : string ): string {\n\t\t\t\n\t\t\tconst lang = this.lang()\n\n\t\t\tconst target = this.texts( lang )[ key ]\n\t\t\tif( target ) return target\n\t\t\t\n\t\t\tthis.warn( key )\n\t\t\t\n\t\t\tconst en = this.texts( 'en' )[ key ]\n\t\t\tif( !en ) return key\n\t\t\t\n\t\t\t// try {\n\t\t\t// \treturn $mol_wire_sync( $hyoo_lingua_translate ).call( this.$, lang, en )\n\t\t\t// } catch( error ) {\n\t\t\t// \t$mol_fail_log( error )\n\t\t\t// }\n\t\t\t\n\t\t\treturn en\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic warn( key : string ) {\n\t\t\tconsole.warn( `Not translated to \"${ this.lang() }\": ${ key }` )\n\t\t\treturn null\n\t\t}\n\t\t\n\t}\n\t\n}\n","$mol_lights_toggle $mol_check_icon\n\tIcon <= Lights_icon $mol_icon_brightness_4\n\thint @ \\Toggle lights\n\tchecked? <=> lights? false\n","\n\t\t()\n\t\t\tthis\n\t\t\t[] \\$\n\t\t\t[] \\$mol_locale\n\t\t\t[] \\text\n\t\t\t(,) #key\n\t","namespace $.$$ {\n\t/**\n\t * Toggle for Switcher between light/dark themes (usually for `mol_theme_auto` plugin).\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_lights_demo\n\t */\n\texport class $mol_lights_toggle extends $.$mol_lights_toggle {\n\t\tlights( next? : boolean ) {\n\t\t\treturn this.$.$mol_lights( next )\n\t\t}\n\t}\n}\n","$mol_icon_upload $mol_icon path \\M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\n","$mol_button_open $mol_button_minor\n\tsub /\n\t\t<= Icon $mol_icon_upload\n\t\t<= Native $mol_button_open_native\n\t\t\tfiles?next <=> files?next /\n\t\t\taccept <= accept \\\n\t\t\tmultiple <= multiple true\n\n$mol_button_open_native $mol_view\n\tdom_name \\input\n\tfiles?next /\n\tattr *\n\t\ttype \\file\n\t\taccept <= accept \\\n\t\tmultiple <= multiple true\n\tevent *\n\t\tchange?next <=> picked?next null\n","namespace $.$$ {\n\n\t/**\n\t * File open button\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_button_demo\n\t */\n\texport class $mol_button_open_native extends $.$mol_button_open_native {\n\t\t\n\t\tdom_node() {\n\t\t\treturn super.dom_node() as HTMLInputElement\n\t\t}\n\t\t\n\t\tpicked() {\n\t\t\t\n\t\t\tconst files = this.dom_node().files\n\t\t\tif( !files || !files.length ) return\n\t\t\t\n\t\t\tthis.files([ ... files ])\n\t\t\t\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/button/open/open.view.css\",\n \"[mol_button_open_native] {\\n\\tposition: absolute;\\n\\tleft: 0;\\n\\ttop: -100%;\\n\\twidth: 100%;\\n\\theight: 200%;\\n\\tcursor: pointer;\\n\\topacity: 0;\\n}\\n\"\n) }","$mol_stack $mol_view\n","namespace $ { $mol_style_attach( \"mol/stack/stack.view.css\",\n \"[mol_stack] {\\n\\tdisplay: grid;\\n\\t/* width: max-content; */\\n\\t/* height: max-content; */\\n\\talign-items: flex-start;\\n\\tjustify-items: flex-start;\\n}\\n\\n[mol_stack] > * {\\n\\tgrid-area: 1/1;\\n}\\n\"\n) }","namespace $ {\n\n\t/** Creates lexer by dictionary of lexems. Lexem that started first wins. Then lexem that declared earlier wins. Use regexp capture to take parts of token. */\n\texport class $mol_syntax2< Lexems extends { [ name : string ] : RegExp } = {} > {\n\t\t\n\t\tconstructor(\n\t\t\tpublic lexems : Lexems\n\t\t) {\n\n\t\t\tfor( let name in lexems ) {\n\t\t\t\tthis.rules.push({\n\t\t\t\t\tname : name ,\n\t\t\t\t\tregExp : lexems[ name ] ,\n\t\t\t\t\tsize : RegExp( '^$|' + lexems[ name ].source ).exec( '' )!.length - 1 , \n\t\t\t\t})\n\t\t\t}\n\n\t\t\tconst parts = '(' + this.rules.map( rule => rule.regExp.source ).join( ')|(' ) + ')'\n\t\t\tthis.regexp = RegExp( `([\\\\s\\\\S]*?)(?:(${ parts })|$(?![^]))` , 'gmu' ) \n\t\t\t\n\t\t}\n\t\t\n\t\trules = [] as Array<{\n\t\t\tregExp : RegExp ,\n\t\t\tname : string ,\n\t\t\tsize : number\n\t\t}>\n\t\t\n\t\tregexp : RegExp\n\n\t\ttokenize(\n\t\t\ttext : string ,\n\t\t\thandle : ( name : string , found : string , chunks : string[] , offset : number )=> void ,\n\t\t) {\n\t\t\t\n\t\t\tlet end = 0\n\t\t\t\t\n\t\t\tlexing : while( end < text.length ) {\n\n\t\t\t\tconst start = end\n\n\t\t\t\tthis.regexp.lastIndex = start\n\t\t\t\tvar found = this.regexp.exec( text )!\n\t\t\t\t\n\t\t\t\tend = this.regexp.lastIndex\n\t\t\t\tif( start === end ) throw new Error( 'Empty token' )\n\t\t\t\t\n\t\t\t\tvar prefix = found[ 1 ]\n\t\t\t\tif( prefix ) handle( '' , prefix , [ prefix ] , start )\n\t\t\t\t\n\t\t\t\tvar suffix = found[ 2 ]\n\t\t\t\tif( !suffix ) continue\n\n\t\t\t\tlet offset = 4\n\t\t\t\tfor( let rule of this.rules ) {\n\n\t\t\t\t\tif( found[ offset - 1 ] ) {\n\t\t\t\t\t\thandle( rule.name , suffix , found.slice( offset, offset + rule.size ) , start + prefix.length )\n\t\t\t\t\t\tcontinue lexing\n\t\t\t\t\t}\n\n\t\t\t\t\toffset += rule.size + 1\n\t\t\t\t}\n\n\t\t\t\t$mol_fail( new Error( '$mol_syntax2 is broken' ) )\n\n\t\t\t}\n\n\t\t}\n\t\t\n\t\tparse(\n\t\t\ttext : string ,\n\t\t\thandlers : { [ key in keyof Lexems | '' ] : ( found : string , chunks : string[] , offset : number )=> void } ,\n\t\t) : void {\n\t\t\tthis.tokenize( text , ( name , ...args )=> handlers[ name ]( ... args ) )\n\t\t}\n\n\t}\n\t\n}\n","$mol_paragraph $mol_view\n\tline_height 24\n\tletter_width 7\n\twidth_limit +Infinity\n\trow_width 0\n\tsub / <= title\n","namespace $.$$ {\n\n\texport class $mol_paragraph extends $.$mol_paragraph {\n\n\t\t@ $mol_mem\n\t\tmaximal_width() {\n\n\t\t\tlet width = 0\n\t\t\tconst letter = this.letter_width()\n\t\t\t\n\t\t\tfor( const kid of this.sub() ) {\n\t\t\t\t\n\t\t\t\tif( !kid ) continue\n\t\t\t\t\n\t\t\t\tif( kid instanceof $mol_view ) {\n\t\t\t\t\twidth += kid.maximal_width()\n\t\t\t\t} else if( typeof kid !== 'object' ) {\n\t\t\t\t\twidth += String( kid ).length * letter\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t\n\t\t\treturn width\n\n\t\t}\n\n\t\twidth_limit() {\n\t\t\treturn this.$.$mol_window.size().width\n\t\t}\n\t\t\n\t\tminimal_width() {\n\t\t\treturn this.letter_width()\n\t\t}\n\n\t\t@ $mol_mem\n\t\trow_width() {\n\t\t\treturn Math.max( Math.min( this.width_limit() , this.maximal_width() ) , this.letter_width() )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\t\t\treturn Math.max( 1 , Math.ceil( this.maximal_width() / this.row_width() ) ) * this.line_height()\n\t\t}\n\n\t}\n\n}\n","namespace $ { $mol_style_attach( \"mol/paragraph/paragraph.view.css\",\n \":where([mol_paragraph]) {\\n\\tmargin: 0;\\n\\tmax-width: 100%;\\n}\\n\"\n) }","$mol_dimmer $mol_paragraph\n\thaystack \\\n\tneedle \\\n\tsub <= parts /$mol_view_content\n\tLow* $mol_paragraph\n\t\tsub /\n\t\t\t<= string* \\\n\tHigh* $mol_paragraph\n\t\tsub /\n\t\t\t<= string* \\\n","interface String {\n\t\n\tmatch< RE extends RegExp >( regexp: RE ): ReturnType<\n\t\tRE[ typeof Symbol.match ]\n\t>\n\t\n matchAll< RE extends RegExp >( regexp: RE ): ReturnType<\n\t\tRE[ typeof Symbol.matchAll ]\n\t>\n\t\n}\n\nnamespace $ {\n\t\n\ttype Groups_to_params = {\n\t\t[P in keyof T]?: T[P] | boolean | undefined;\n\t};\t\n\n\texport type $mol_regexp_source =\n\t| number\n\t| string\n\t| RegExp\n\t| { [ key in string ] : $mol_regexp_source }\n\t| readonly[ $mol_regexp_source , ... $mol_regexp_source[] ]\n\n\texport type $mol_regexp_groups< Source extends $mol_regexp_source >\n\t\n\t\t= Source extends number\n\t\t? {}\n\t\t\n\t\t: Source extends string\n\t\t? {}\n\t\t\n\t\t: Source extends $mol_regexp_source[]\n\t\t? $mol_type_merge< $mol_type_intersect< {\n\t\t\t[ key in Extract< keyof Source , number > ] : $mol_regexp_groups< Source[ key ] >\n\t\t}[ Extract< keyof Source , number > ] > >\n\t\t\n\t\t: Source extends RegExp\n\t\t? Record< string, string > extends NonNullable< NonNullable< ReturnType< Source['exec'] > >[ 'groups' ] >\n\t\t\t? {}\n\t\t\t: NonNullable< NonNullable< ReturnType< Source['exec'] > >[ 'groups' ] >\n\t\t\n\t\t: Source extends { readonly [ key in string ] : $mol_regexp_source }\n\t\t? $mol_type_merge< $mol_type_intersect< {\n\t\t\t[ key in keyof Source ] :\n\t\t\t\t$mol_type_merge<\n\t\t\t\t\t& $mol_type_override<\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treadonly [ k in Extract< keyof Source , string > ]: string\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treadonly [ k in key ]:\n\t\t\t\t\t\t\t\tSource[ key ] extends string\n\t\t\t\t\t\t\t\t\t? Source[ key ]\n\t\t\t\t\t\t\t\t\t: string\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t& $mol_regexp_groups< Source[ key ] >\n\t\t\t\t>\n\t\t}[ keyof Source ] > >\n\n\t\t: never\n\t\t\n\t/** Type safe reguar expression builder */\n\texport class $mol_regexp< Groups extends Record< string , string > > extends RegExp {\n\t\t\n\t\t/** Prefer to use $mol_regexp.from */\n\t\tconstructor( source : string , flags : string = 'gsu' , readonly groups : ( Extract< keyof Groups , string > )[] = [] ) {\n\t\t\tsuper( source , flags )\n\t\t}\n\t\t\n\t\t*[Symbol.matchAll] (str:string): RegExpStringIterator< RegExpMatchArray & $mol_type_override< RegExpMatchArray, { groups?: { [ key in keyof Groups ] : string } } > > {\n\t\t\tconst index = this.lastIndex\n\t\t\tthis.lastIndex = 0\n\t\t\ttry {\n\t\t\t\twhile ( this.lastIndex < str.length ) {\n\t\t\t\t\tconst found = this.exec(str)\n\t\t\t\t\tif( !found ) break\n\t\t\t\t\tyield found\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.lastIndex = index\n\t\t\t}\n\t\t}\n\t\t\n\t\t/** Parses input and returns found capture groups or null */\n\t\t[ Symbol.match ]( str : string ): null | RegExpMatchArray {\n\t\t\tconst res = [ ... this[Symbol.matchAll]( str ) ].filter( r => r.groups ).map( r => r[0] )\n\t\t\tif( !res.length ) return null\n\t\t\treturn res as RegExpMatchArray\n\t\t}\n\t\t\n\t\t/** Splits string by regexp edges */\n\t\t[ Symbol.split ]( str : string ): string[] {\n\t\t\t\n\t\t\tconst res = [] as string[]\n\t\t\tlet token_last = null\n\t\t\t\n\t\t\tfor( let token of this[Symbol.matchAll]( str ) ) {\n\t\t\t\tif( token.groups && ( token_last ? token_last.groups : true ) ) res.push( '' )\n\t\t\t\tres.push( token[0] )\n\t\t\t\ttoken_last = token\n\t\t\t}\n\t\t\t\n\t\t\tif( !res.length ) res.push( '' )\n\t\t\t\n\t\t\treturn res\n\t\t}\n\t\t\n\t\ttest( str : string ): boolean {\n\t\t\treturn Boolean( str.match( this) )\n\t\t}\n\t\t\n\t\texec( str : string ): RegExpExecArray & $mol_type_override< RegExpExecArray , { groups?: { [ key in keyof Groups ] : string } } > | null {\n\t\t\t\n\t\t\tconst from = this.lastIndex\n\t\t\tif( from >= str.length ) return null\n\t\t\t\n\t\t\tconst res = super.exec( str )\n\t\t\tif( res === null ) {\n\t\t\t\tthis.lastIndex = str.length\n\t\t\t\tif( !str ) return null\n\t\t\t\treturn Object.assign( [ str.slice( from ) ], {\n\t\t\t\t\tindex: from,\n\t\t\t\t\tinput: str,\n\t\t\t\t} ) as any\n\t\t\t}\n\n\t\t\tif( from === this.lastIndex ) {\n\t\t\t\t$mol_fail( new Error( 'Captured empty substring' ) )\n\t\t\t}\n\n\t\t\ttype Token = { [ key in keyof Groups ] : string } & { [ key : number ] : string }\n\t\t\tconst groups = {} as Token\n\t\t\t\n\t\t\tconst skipped = str.slice( from , this.lastIndex - res[0].length )\n\t\t\tif( skipped ) {\n\t\t\t\tthis.lastIndex = this.lastIndex - res[0].length\n\t\t\t\treturn Object.assign( [ skipped ], {\n\t\t\t\t\tindex: from,\n\t\t\t\t\tinput: res.input,\n\t\t\t\t} ) as any\n\t\t\t}\n\t\t\t\n\t\t\tfor( let i = 0 ; i < this.groups.length ; ++i ) {\n\t\t\t\tconst group = this.groups[ i ]\n\t\t\t\tgroups[ group ] = groups[ group ] || res[ i + 1 ] || '' as any\n\t\t\t}\n\n\t\t\treturn Object.assign( res, { groups } )\n\t\t}\n\t\t\n\t\tgenerate(\n\t\t\tparams: Groups_to_params< Groups >\n\t\t): string | null {\n\t\t\treturn null\n\t\t}\n\t\t\n\t\tget native() {\n\t\t\treturn new RegExp( this.source, this.flags )\n\t\t}\n\n\t\t/** Makes regexp that non-greedy repeats this pattern from min to max count */\n\t\tstatic repeat<\n\t\t\tSource extends $mol_regexp_source\n\t\t>(\n\t\t\tsource : Source ,\n\t\t\tmin = 0 ,\n\t\t\tmax = Number.POSITIVE_INFINITY ,\n\t\t) : $mol_regexp< $mol_regexp_groups< Source > > {\n\t\n\t\t\tconst regexp = $mol_regexp.from( source )\n\t\t\tconst upper = Number.isFinite( max ) ? max : ''\n\t\t\t\n\t\t\tconst str = `(?:${ regexp.source }){${ min },${ upper }}?`\n\t\t\tconst regexp2 = new $mol_regexp( str , regexp.flags , regexp.groups )\n\t\t\t\n\t\t\tregexp2.generate = params => {\n\t\t\t\tconst res = regexp.generate( params )\n\t\t\t\tif( res ) return res\n\t\t\t\tif( min > 0 ) return res\n\t\t\t\treturn ''\n\t\t\t}\n\t\n\t\t\treturn regexp2\n\t\n\t\t}\n\n\t\t/** Makes regexp that greedy repeats this pattern from min to max count */\n\t\tstatic repeat_greedy<\n\t\t\tSource extends $mol_regexp_source\n\t\t>(\n\t\t\tsource : Source ,\n\t\t\tmin = 0 ,\n\t\t\tmax = Number.POSITIVE_INFINITY ,\n\t\t) : $mol_regexp< $mol_regexp_groups< Source > > {\n\t\n\t\t\tconst regexp = $mol_regexp.from( source )\n\t\t\tconst upper = Number.isFinite( max ) ? max : ''\n\t\t\t\n\t\t\tconst str = `(?:${ regexp.source }){${ min },${ upper }}`\n\t\t\tconst regexp2 = new $mol_regexp( str , regexp.flags , regexp.groups )\n\t\t\t\n\t\t\tregexp2.generate = params => {\n\t\t\t\tconst res = regexp.generate( params )\n\t\t\t\tif( res ) return res\n\t\t\t\tif( min > 0 ) return res\n\t\t\t\treturn ''\n\t\t\t}\n\t\n\t\t\treturn regexp2\n\t\t}\n\n\t\t/** Makes regexp that match any of options */\n\t\tstatic vary<\n\t\t\tSources extends readonly $mol_regexp_source[]\n\t\t>(\n\t\t\tsources : Sources ,\n\t\t) {\n\t\t\t\n\t\t\tconst groups = [] as string[]\n\t\t\t\n\t\t\tconst chunks = sources.map( source => {\n\n\t\t\t\tconst regexp = $mol_regexp.from( source )\n\t\t\t\tgroups.push( ... regexp.groups )\n\t\t\t\t\n\t\t\t\treturn regexp.source\n\n\t\t\t} ) as any as readonly[ $mol_regexp_source , ... $mol_regexp_source[] ]\n\t\t\t\n\t\t\treturn new $mol_regexp< $mol_regexp_groups< Sources[number] > >(\n\t\t\t\t`(?:${ chunks.join('|') })` ,\n\t\t\t\t'' ,\n\t\t\t\tgroups as any[] ,\n\t\t\t)\n\t\t\t\n\t\t}\n\n\t\t/** Makes regexp that allow absent of this pattern */\n\t\tstatic optional<\n\t\t\tSource extends $mol_regexp_source\n\t\t>( source : Source ) {\n\t\t\treturn $mol_regexp.repeat_greedy( source , 0 , 1 )\n\t\t}\n\n\t\t/** Makes regexp that look ahead for pattern */\n\t\tstatic force_after( source : $mol_regexp_source ) {\n\n\t\t\tconst regexp = $mol_regexp.from( source )\n\t\t\t\n\t\t\treturn new $mol_regexp(\n\t\t\t\t`(?=${ regexp.source })` ,\n\t\t\t\tregexp.flags ,\n\t\t\t\tregexp.groups ,\n\t\t\t)\n\n\t\t}\n\n\t\t/** Makes regexp that look ahead for pattern */\n\t\tstatic forbid_after( source : $mol_regexp_source ) {\n\n\t\t\tconst regexp = $mol_regexp.from( source )\n\t\t\t\n\t\t\treturn new $mol_regexp(\n\t\t\t\t`(?!${ regexp.source })` ,\n\t\t\t\tregexp.flags ,\n\t\t\t\tregexp.groups ,\n\t\t\t)\n\n\t\t}\n\n\t\t/** Converts some js values to regexp */\n\t\tstatic from<\n\t\t\tSource extends $mol_regexp_source\n\t\t>(\n\t\t\tsource : Source ,\n\t\t\t{ ignoreCase , multiline } : Partial< Pick< RegExp , 'ignoreCase' | 'multiline' > > = {\n\t\t\t\tignoreCase : false ,\n\t\t\t\tmultiline : false ,\n\t\t\t} ,\n\t\t) : $mol_regexp< $mol_regexp_groups< Source > > {\n\n\t\t\tlet flags = 'gsu'\n\t\t\tif( multiline ) flags += 'm'\n\t\t\tif( ignoreCase ) flags += 'i'\n\n\t\t\tif( typeof source === 'number' ) {\n\n\t\t\t\tconst src = `\\\\u{${ source.toString(16) }}`\n\t\t\t\tconst regexp = new $mol_regexp< $mol_regexp_groups< Source > >( src , flags )\n\t\t\t\tregexp.generate = ()=> src\n\t\t\t\treturn regexp\n\n\t\t\t} if( typeof source === 'string' ) {\n\n\t\t\t\tconst src = source.replace( /[.*+?^${}()|[\\]\\\\]/g , '\\\\$&' ) \n\t\t\t\tconst regexp = new $mol_regexp< $mol_regexp_groups< Source > >( src , flags )\n\t\t\t\tregexp.generate = ()=> source\n\t\t\t\treturn regexp\n\n\t\t\t} else if( source instanceof $mol_regexp ) {\n\t\t\t\t\n\t\t\t\tconst regexp = new $mol_regexp( source.source, flags, source.groups )\n\t\t\t\tregexp.generate = params => source.generate( params )\n\t\t\t\treturn regexp\n\t\t\t\t\n\t\t\t} if( source instanceof RegExp ) {\n\n\n\t\t\t\tconst test = new RegExp( '|' + source.source )\n\t\t\t\tconst groups = Array.from(\n\t\t\t\t\t{ length : test.exec('')!.length - 1 } ,\n\t\t\t\t\t( _ , i )=> String( i + 1 ) ,\n\t\t\t\t)\n\n\t\t\t\tconst regexp = new $mol_regexp< $mol_regexp_groups< Source > >(\n\t\t\t\t\tsource.source ,\n\t\t\t\t\tsource.flags ,\n\t\t\t\t\tgroups as any ,\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tregexp.generate = ()=> ''\n\n\t\t\t\treturn regexp\n\n\t\t\t} if( Array.isArray( source ) ) {\n\n\t\t\t\tconst patterns = source.map( src => Array.isArray( src )\n\t\t\t\t\t? $mol_regexp.optional( src as any )\n\t\t\t\t\t: $mol_regexp.from( src )\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tconst chunks = patterns.map( pattern => pattern.source )\n\t\t\t\t\n\t\t\t\tconst groups = [] as ( Extract< keyof $mol_regexp_groups< Source > , string > )[]\n\n\t\t\t\tlet index = 0\n\t\t\n\t\t\t\tfor( const pattern of patterns ) {\n\t\t\t\t\t\n\t\t\t\t\tfor( let group of pattern.groups ) {\n\t\t\t\t\t\tif( Number( group ) >= 0 ) {\n\t\t\t\t\t\t\tgroups.push( String( index ++ ) as any )\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tgroups.push( group )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst regexp = new $mol_regexp( chunks.join( '' ) , flags , groups )\n\t\t\t\t\n\t\t\t\tregexp.generate = params => {\n\t\t\t\t\tlet res = ''\n\t\t\t\t\tfor( const pattern of patterns ) {\n\t\t\t\t\t\tlet sub = pattern.generate( params )\n\t\t\t\t\t\tif( sub === null ) return ''\n\t\t\t\t\t\tres += sub\n\t\t\t\t\t}\n\t\t\t\t\treturn res\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn regexp\n\t\t\n\t\t\t} else {\n\n\t\t\t\tconst groups = [] as string[]\n\n\t\t\t\tconst chunks = Object.keys( source ).map( name => {\n\n\t\t\t\t\tgroups.push( name )\n\n\t\t\t\t\tconst regexp = $mol_regexp.from( (source as any)[ name ] )\n\t\t\t\t\tgroups.push( ... regexp.groups )\n\t\t\t\t\t\n\t\t\t\t\treturn `(${regexp.source})`\n\n\t\t\t\t} ) as any as readonly[ $mol_regexp_source , ... $mol_regexp_source[] ]\n\n\t\t\t\tconst regexp = new $mol_regexp< $mol_regexp_groups< Source > >(\n\t\t\t\t\t`(?:${ chunks.join('|') })` ,\n\t\t\t\t\tflags ,\n\t\t\t\t\tgroups as any[] ,\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tconst validator = new RegExp( '^' + regexp.source + '$', flags )\n\t\t\t\tregexp.generate = (params: any) => {\n\t\t\t\t\t\n\t\t\t\t\tfor( let option in source ) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( option in params ) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( typeof params[ option ] === 'boolean' ) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif( !params[ option as any ] ) continue\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tconst str = String( params[ option ] )\n\t\t\t\t\t\t\t\tif( str.match( validator ) ) return str\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t$mol_fail( new Error( `Wrong param: ${option}=${str}` ) )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif( typeof (source as any)[ option ] !== 'object' ) continue\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst res = $mol_regexp.from( (source as any)[ option ] ).generate( params )\n\t\t\t\t\t\tif( res ) return res\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn regexp\n\n\t\t\t}\n\t\n\t\t}\n\n\t\t/** Makes regexp which includes only unicode category */\n\t\tstatic unicode_only( ... category: $mol_unicode_category ) {\n\t\t\treturn new $mol_regexp(\n\t\t\t\t`\\\\p{${ category.join( '=' ) }}`\n\t\t\t)\n\t\t}\n\n\t\t/** Makes regexp which excludes unicode category */\n\t\tstatic unicode_except( ... category: $mol_unicode_category ) {\n\t\t\treturn new $mol_regexp(\n\t\t\t\t`\\\\P{${ category.join( '=' ) }}`\n\t\t\t)\n\t\t}\n\n\t\tstatic char_range(\n\t\t\tfrom: number,\n\t\t\tto: number,\n\t\t): $mol_regexp<{}> {\n\t\t\treturn new $mol_regexp(\n\t\t\t\t`${ $mol_regexp.from( from ).source }-${ $mol_regexp.from( to ).source }`\n\t\t\t)\n\t\t}\n\n\t\tstatic char_only(\n\t\t\t... allowed: readonly [ $mol_regexp_source, ... $mol_regexp_source[] ]\n\t\t): $mol_regexp<{}> {\n\t\t\tconst regexp = allowed.map( f => $mol_regexp.from( f ).source ).join('')\n\t\t\treturn new $mol_regexp( `[${ regexp }]` )\n\t\t}\n\n\t\tstatic char_except(\n\t\t\t... forbidden: readonly [ $mol_regexp_source, ... $mol_regexp_source[] ]\n\t\t): $mol_regexp<{}> {\n\t\t\tconst regexp = forbidden.map( f => $mol_regexp.from( f ).source ).join('')\n\t\t\treturn new $mol_regexp( `[^${ regexp }]` )\n\t\t}\n\t\t\n\t\tstatic decimal_only = $mol_regexp.from( /\\d/gsu )\n\t\tstatic decimal_except = $mol_regexp.from( /\\D/gsu )\n\t\t\n\t\tstatic latin_only = $mol_regexp.from( /\\w/gsu )\n\t\tstatic latin_except = $mol_regexp.from( /\\W/gsu )\n\t\t\n\t\tstatic space_only = $mol_regexp.from( /\\s/gsu )\n\t\tstatic space_except = $mol_regexp.from( /\\S/gsu )\n\t\t\n\t\tstatic word_break_only = $mol_regexp.from( /\\b/gsu )\n\t\tstatic word_break_except = $mol_regexp.from( /\\B/gsu )\n\t\t\n\t\tstatic tab = $mol_regexp.from( /\\t/gsu )\n\t\tstatic slash_back = $mol_regexp.from( /\\\\/gsu )\n\t\tstatic nul = $mol_regexp.from( /\\0/gsu )\n\t\t\n\t\tstatic char_any = $mol_regexp.from( /./gsu )\n\t\tstatic begin = $mol_regexp.from( /^/gsu )\n\t\tstatic end = $mol_regexp.from( /$/gsu )\n\t\tstatic or = $mol_regexp.from( /|/gsu )\n\t\t\n\t\tstatic line_end = $mol_regexp.from({\n\t\t\twin_end: [ [ '\\r' ], '\\n' ],\n\t\t\tmac_end: '\\r',\n\t\t})\n\t\t\n\t}\n\t\n}\n","namespace $.$$ {\n\n\t/**\n\t * Output text with dimmed mismatched substrings.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_dimmer_demo\n\t */\n\texport class $mol_dimmer extends $.$mol_dimmer {\n\t\t\n\t\tparts() {\n\t\t\tconst needle = this.needle()\n\t\t\tif( needle.length < 2 ) return [ this.haystack() ]\n\t\t\t\n\t\t\tlet chunks : any[] = []\n\t\t\tlet strings = this.strings()\n\t\t\t\n\t\t\tfor( let index = 0 ; index < strings.length ; index++ ) {\n\t\t\t\tif( strings[ index ] === '' ) continue\n\t\t\t\t\n\t\t\t\tchunks.push( ( index % 2 ) ? this.High( index ) : this.Low( index ) )\n\t\t\t}\n\t\t\t\n\t\t\treturn chunks\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstrings() {\n\t\t\t\n\t\t\tconst options = this.needle().split( /\\s+/g ).filter( Boolean )\n\t\t\tif( !options.length ) return [ this.haystack() ]\n\t\t\t\n\t\t\tconst variants = { ... options } as Record< number, string >\n\t\t\tconst regexp = $mol_regexp.from( { needle: variants } , { ignoreCase: true } )\n\t\t\t\n\t\t\treturn this.haystack().split( regexp )\n\t\t}\n\t\t\n\t\tstring( index: number ) {\n\t\t\treturn this.strings()[ index ]\n\t\t}\n\t\t\n\t\t*view_find(\n\t\t\tcheck: ( path : $mol_view, text?: string )=> boolean,\n\t\t\tpath = [] as $mol_view[],\n\t\t): Generator< $mol_view[] > {\n\n\t\t\tif( check( this, this.haystack() ) ) {\n\t\t\t\tyield [ ... path, this ]\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/dimmer/dimmer.view.css\",\n \"[mol_dimmer] {\\n\\tdisplay: block;\\n\\tmax-width: 100%;\\n}\\n\\n[mol_dimmer_low] {\\n\\tdisplay: inline;\\n\\topacity: 0.8;\\n}\\n\\n[mol_dimmer_high] {\\n\\tdisplay: inline;\\n\\tcolor: var(--mol_theme_focus);\\n\\ttext-shadow: 0 0;\\n}\\n\"\n) }","$mol_text_code_token $mol_dimmer\n\tattr *\n\t\t^\n\t\tmol_text_code_token_type <= type \\\n\n$mol_text_code_token_link $mol_text_code_token\n\tdom_name \\a\n\ttype \\code-link\n\tattr *\n\t\t^\n\t\thref <= uri \\\n\t\ttarget \\_blank\n","namespace $.$$ {\n\n\tconst { hsla } = $mol_style_func\n\t\n\t$mol_style_define( $mol_text_code_token, {\n\n\t\tdisplay: 'inline',\n\t\ttextDecoration: 'none',\n\n\t\t'@': {\n\t\t\tmol_text_code_token_type: {\n\n\t\t\t\t'code-keyword': {\n\t\t\t\t\tcolor: hsla( 0, 70, 60, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-field': {\n\t\t\t\t\tcolor: hsla( 300, 70, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-tag': {\n\t\t\t\t\tcolor: hsla( 330, 70, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-global': {\n\t\t\t\t\tcolor: hsla( 30, 80, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-decorator': {\n\t\t\t\t\tcolor: hsla( 180, 40, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-punctuation': {\n\t\t\t\t\tcolor: hsla( 0, 0, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-string': {\n\t\t\t\t\tcolor: hsla( 90, 40, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-number': {\n\t\t\t\t\tcolor: hsla( 55, 65, 45, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-call': {\n\t\t\t\t\tcolor: hsla( 270, 60, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-link': {\n\t\t\t\t\tcolor: hsla( 210, 60, 50, 1 ),\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-comment-inline': {\n\t\t\t\t\topacity: .5,\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-comment-block': {\n\t\t\t\t\topacity: .5,\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t'code-docs': {\n\t\t\t\t\topacity: .75,\n\t\t\t\t},\n\t\t\t\t\n\t\t\t},\n\t\t}\n\n\t} )\n\n}\n","$mol_text_code_line $mol_paragraph\n\ttext \\\n\tminimal_height 24\n\tnumb_showed true\n\tsyntax null\n\turi_resolve* \\\n\tNumb $mol_view\n\t\tsub /\n\t\t\t<= numb 0\n\tToken* $mol_text_code_token\n\t\ttype <= token_type* \\\n\t\thaystack <= token_text* \\\n\t\tneedle <= highlight \\\n\tToken_link* $mol_text_code_token_link\n\t\thaystack <= token_text* \\\n\t\tneedle <= highlight \\\n\t\turi <= token_uri* \\\n\tfind_pos* null\n","namespace $ {\n\t\n\texport var $mol_syntax2_md_flow = new $mol_syntax2({\n\t\t'quote' : /^((?:(?:[>\"] )(?:[^]*?)$(\\r?\\n?))+)([\\n\\r]*)/ ,\n\t\t'spoiler' : /^((?:(?:[\\?] )(?:[^]*?)$(\\r?\\n?))+)([\\n\\r]*)/ ,\n\t\t'header' : /^([#=]+)(\\s+)(.*?)$([\\n\\r]*)/ ,\n\t\t'list' : /^((?:(?: ?([*+-])|(?:\\d+[\\.\\)])+) +(?:[^]*?)$(?:\\r?\\n?)(?: (?:[^]*?)$(?:\\r?\\n?))*)+)((?:\\r?\\n)*)/ ,\n\t\t'code' : /^(```\\s*)([\\w.-]*)[\\r\\n]+([^]*?)^(```)$([\\n\\r]*)/ ,\n\t\t'code-indent' : /^((?:(?: |\\t)(?:[^]*?)$\\r?\\n?)+)([\\n\\r]*)/ ,\n\t\t'table' : /((?:^\\|.+?$\\r?\\n?)+)([\\n\\r]*)/ ,\n\t\t'grid' : /((?:^ *! .*?$\\r?\\n?)+)([\\n\\r]*)/ ,\n\t\t'cut' : /^--+$((?:\\r?\\n)*)/ ,\n\t\t'block' : /^(.*?)$((?:\\r?\\n)*)/ ,\n\t})\n\t\n\texport var $mol_syntax2_md_line = new $mol_syntax2({\n\t\t'strong' : /\\*\\*(.+?)\\*\\*/ ,\n\t\t'emphasis' : /\\*(?!\\s)(.+?)\\*|\\/\\/(?!\\s)(.+?)\\/\\// ,\n\t\t'code' : /```(.+?)```|;;(.+?);;|`(.+?)`/ ,\n\t\t'insert' : /\\+\\+(.+?)\\+\\+/ ,\n\t\t'delete' : /~~(.+?)~~|--(.+?)--/ ,\n\t\t// 'remark' : /(\\()(.+?)(\\))/ ,\n\t\t// 'quote' : /(\")(.+?)(\")/ ,\n\t\t'embed' : /\"\"(?:(.*?)\\\\)?(.*?)\"\"/ ,\n\t\t'link' : /\\\\\\\\(?:(.*?)\\\\)?(.*?)\\\\\\\\/ ,\n\t\t'image-link' : /!\\[([^\\[\\]]*?)\\]\\((.*?)\\)/ ,\n\t\t'text-link' : /\\[(.*?(?:\\[[^\\[\\]]*?\\][^\\[\\]]*?)*)\\]\\((.*?)\\)/ ,\n\t\t'text-link-http' : /\\b(https?:\\/\\/[^\\s,.;:!?\")]+(?:[,.;:!?\")][^\\s,.;:!?\")]+)+)/ ,\n\t})\n\t\n\texport const $mol_syntax2_md_code = new $mol_syntax2({\n\t\t'code-indent' : /\\t+/ ,\n\t\t'code-docs' : /\\/\\/\\/.*?$/ ,\n\t\t'code-comment-block' : /(?:\\/\\*[^]*?\\*\\/|\\/\\+[^]*?\\+\\/|)/ ,\n\t\t'code-link' : /(?:\\w+:\\/\\/|#)\\S+?(?=\\s|\\\\\\\\|\"\"|$)/ ,\n\t\t'code-comment-inline' : /\\/\\/.*?(?:$|\\/\\/)|- \\\\(?!\\\\).*|#!? .*/ ,\n\t\t'code-string' : /(?:\".*?\"|'.*?'|`.*?`| ?\\\\\\\\.+?\\\\\\\\|\\/.+?\\/[dygimsu]*(?!\\p{Letter})|[ \\t]*\\\\[^\\n]*)/u ,\n\t\t'code-number' : /[+-]?(?:\\d*\\.)?\\d+\\w*/ ,\n\t\t'code-call' : /\\.?\\w+ *(?=\\()/ ,\n\t\t'code-sexpr' : /\\((\\w+ )/ ,\n\t\t'code-field' : /(?:(?:\\.|::|->)\\w+|[\\w-]+\\??\\s*:(?!\\/\\/|:))/ ,\n\t\t'code-keyword' : /\\b(throw|readonly|unknown|keyof|typeof|never|from|class|struct|interface|type|function|extends|implements|module|namespace|import|export|include|require|var|val|let|const|for|do|while|until|in|out|of|new|if|then|else|switch|case|this|return|async|await|yield|try|catch|break|continue|get|set|public|private|protected|string|boolean|number|null|undefined|true|false|void|int|float|ref)\\b/ ,\n\t\t'code-global' : /[$]+\\w*|\\b[A-Z][a-z0-9]+[A-Z]\\w*/ ,\n\t\t'code-word' : /\\w+/ ,\n\t\t'code-decorator' : /@.+/ ,\n\t\t'code-tag' : /<\\/?[\\w-]+\\/?>?|&\\w+;/ ,\n\t\t'code-punctuation' : /[\\-\\[\\]\\{\\}\\(\\)<=>~!\\?@#%&\\*_\\+\\\\\\/\\|;:\\.,\\^]+?/ ,\n\t})\n\t\n}\n","namespace $.$$ {\n\n\texport class $mol_text_code_line extends $.$mol_text_code_line {\n\t\t\n\t\tmaximal_width() {\n\t\t\treturn this.text().length * this.letter_width()\n\t\t}\n\t\t\n\t\tsyntax() {\n\t\t\treturn this.$.$mol_syntax2_md_code\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\ttokens( path: number[] ) {\n\n\t\t\tconst tokens = [] as { name : string , found : string , chunks: string[] }[]\n\t\t\t\n\t\t\tconst text = ( path.length > 0 )\n\t\t\t\t// @FIXME: this logic compatible only with `string`\n\t\t\t\t? this.tokens( path.slice( 0, path.length - 1 ) )[ path[ path.length - 1 ] ].found.slice( 1, -1 )\n\t\t\t\t: this.text()\n\t\t\t\n\t\t\tthis.syntax().tokenize(\n\t\t\t\ttext,\n\t\t\t\t( name , found , chunks )=> {\n\t\t\t\t\tif( name === 'code-sexpr' ) {\n\t\t\t\t\t\ttokens.push({ name: 'code-punctuation', found: '(', chunks: [] })\n\t\t\t\t\t\ttokens.push({ name: 'code-call', found: chunks[0], chunks: [] })\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttokens.push({ name , found , chunks })\t\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t)\n\t\t\t\n\t\t\treturn tokens as Readonly< typeof tokens >\n\t\t}\n\n\t\tsub() {\n\t\t\treturn [\n\t\t\t\t... this.numb_showed() ? [ this.Numb() ] : [],\n\t\t\t\t... this.row_content([])\n\t\t\t]\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\trow_content( path: number[] ) {\n\t\t\treturn this.tokens( path ).map( (t,i)=> this.Token([ ... path, i ]) )\n\t\t}\n\n\t\tToken( path: number[] ) {\n\t\t\treturn this.token_type( path ) === 'code-link' ? this.Token_link( path ) : super.Token( path )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttoken_type( path: number[] ) {\n\t\t\treturn this.tokens( [ ... path.slice( 0, path.length - 1 ) ] )[ path[ path.length - 1 ] ].name\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttoken_content( path: number[] ) {\n\n\t\t\tconst tokens = this.tokens( [ ... path.slice( 0, path.length - 1 ) ] ) \n\t\t\tconst token = tokens[ path[ path.length - 1 ] ]\n\n\t\t\tswitch( token.name ) {\n\t\t\t\t\n\t\t\t\tcase 'code-string': return [\n\t\t\t\t\ttoken.found[0],\n\t\t\t\t\t... this.row_content( path ),\n\t\t\t\t\ttoken.found[ token.found.length - 1 ],\n\t\t\t\t] \n\t\t\t\t\n\t\t\t\tdefault: return [ token.found ]\n\t\t\t}\n\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttoken_text( path: number[] ) {\n\n\t\t\tconst tokens = this.tokens( [ ... path.slice( 0, path.length - 1 ) ] ) \n\t\t\tconst token = tokens[ path[ path.length - 1 ] ]\n\n\t\t\treturn token.found\n\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttoken_uri( path: number[] ) {\n\t\t\tconst uri = this.token_text( path )\n\t\t\treturn this.uri_resolve( uri )\n\t\t}\n\t\t\n\t\t*view_find(\n\t\t\tcheck: ( path : $mol_view, text?: string )=> boolean,\n\t\t\tpath = [] as $mol_view[],\n\t\t): Generator< $mol_view[] > {\n\n\t\t\tif( check( this, this.text() ) ) {\n\t\t\t\tyield [ ... path, this ]\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tfind_pos( offset: number ) {\n\t\t\treturn this.find_token_pos([ offset ])\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tfind_token_pos( [ offset, ... path ]: number[] ) {\n\t\t\t\n\t\t\tfor( const [ index, token ] of this.tokens( path ).entries() ) {\n\t\t\t\tif( token.found.length >= offset ) {\n\t\t\t\t\tconst token = this.Token([ ... path, index ])\n\t\t\t\t\treturn { token, offset }\n\t\t\t\t} else {\n\t\t\t\t\toffset -= token.found.length\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn null\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $.$$ {\n\t\n\tconst { rem } = $mol_style_unit\n\n\t$mol_style_define( $mol_text_code_line, {\n\n\t\tdisplay: 'block',\n\t\tposition: 'relative',\n\t\t\n\t\tfont: {\n\t\t\tfamily: 'monospace',\n\t\t},\n\t\t\n\t\tNumb: {\n\t\t\ttextAlign: 'right',\n\t\t\tcolor: $mol_theme.shade,\n\t\t\twidth: rem(3),\n\t\t\tmargin: {\n\t\t\t\tleft: rem(-4),\n\t\t\t},\n\t\t\tdisplay: 'inline-block',\n\t\t\twhiteSpace: 'nowrap',\n\t\t\tuserSelect: 'none',\n\t\t\tposition: 'absolute',\n\t\t},\n\n\t} )\n\t\n}\n","$mol_list $mol_view\n\trender_visible_only true\n\trender_over 0\n\tsub <= rows /$mol_view\n\tEmpty $mol_view\n\tGap_before $mol_view style * paddingTop <= gap_before 0\n\tGap_after $mol_view style * paddingTop <= gap_after 0\n\tview_window /\n\t\t0\n\t\t0\n","namespace $ {\n\n\tlet cache = null as null | boolean\n\texport function $mol_support_css_overflow_anchor( this: $ ) {\n\t\treturn cache ?? (\n\t\t\tcache = this.$mol_dom_context.CSS?.supports( 'overflow-anchor:auto' ) ?? false\n\t\t)\n\t}\n\n}\n","namespace $.$$ {\n\n\t/**\n\t * The list of rows with lazy/virtual rendering support based on `minimal_height` of rows.\n\t * `mol_list` should contain only components that inherits `mol_view`. You should not place raw strings or numbers in list.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_list_demo\n\t */\n\texport class $mol_list extends $.$mol_list {\n\t\t\n\t\t@ $mol_mem\n\t\tsub() {\n\t\t\tconst rows = this.rows()\n\t\t\treturn ( rows.length === 0 ) ? [ this.Empty() ] : rows\n\t\t}\n\n\t\trender_visible_only() {\n\t\t\treturn this.$.$mol_support_css_overflow_anchor()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tview_window( next?: [ number , number ] ) : [ number , number ] {\n\t\t\t\n\t\t\tconst kids = this.sub()\n\t\t\t\n\t\t\tif( kids.length < 3 ) return [ 0 , kids.length ]\n\t\t\tif( this.$.$mol_print.active() ) return [ 0 , kids.length ]\n\t\t\t\n\t\t\tconst rect = this.view_rect()\n\t\t\tif( next ) return next\n\t\t\t\n\t\t\tlet [ min , max ] = $mol_mem_cached( ()=> this.view_window() ) ?? [ 0 , 0 ]\n\n\t\t\tlet max2 = max = Math.min( max , kids.length )\n\t\t\tlet min2 = min = Math.max( 0 , Math.min( min , max - 1 ) )\n\t\t\t\n\t\t\tconst anchoring = this.render_visible_only()\n\t\t\tconst window_height = this.$.$mol_window.size().height + 40\n\t\t\tconst over = Math.ceil( window_height * this.render_over() )\n\t\t\tconst limit_top = -over\n\t\t\tconst limit_bottom = window_height + over\n\n\t\t\tconst gap_before = $mol_mem_cached( ()=> this.gap_before() ) ?? 0\n\t\t\tconst gap_after = $mol_mem_cached( ()=> this.gap_after() ) ?? 0\n\n\t\t\tlet top = Math.ceil( rect?.top ?? 0 ) + gap_before\n\t\t\tlet bottom = Math.ceil( rect?.bottom ?? 0 ) - gap_after\n\n\t\t\t// change nothing when already covers all limits\n\t\t\tif( top <= limit_top && bottom >= limit_bottom ) {\n\t\t\t\treturn [ min2 , max2 ]\n\t\t\t}\n\n\t\t\t// jumps when fully over limits\n\t\t\tif( anchoring && (( bottom < limit_top )||( top > limit_bottom )) ) {\n\t\t\t\t\n\t\t\t\tmin = 0\n\t\t\t\ttop = Math.ceil( rect?.top ?? 0 )\n\t\t\t\t\n\t\t\t\twhile( min < ( kids.length - 1 ) ) {\n\t\t\t\t\t\n\t\t\t\t\tconst height = kids[ min ].minimal_height()\n\t\t\t\t\tif( top + height >= limit_top ) break\n\t\t\t\t\t\n\t\t\t\t\ttop += height\n\t\t\t\t\t++ min\n\n\t\t\t\t}\n\n\t\t\t\tmin2 = min\n\t\t\t\tmax2 = max = min\n\t\t\t\tbottom = top\n\n\t\t\t}\n\n\t\t\tlet top2 = top\n\t\t\tlet bottom2 = bottom\n\t\t\t\n\t\t\t// force recalc min when overlapse top limit\n\t\t\tif( anchoring && ( top < limit_top ) && ( bottom < limit_bottom ) && ( max < kids.length ) ) {\n\t\t\t\tmin2 = max\n\t\t\t\ttop2 = bottom\n\t\t\t}\n\n\t\t\t// force recalc max when overlapse bottom limit\n\t\t\tif( ( bottom > limit_bottom ) && ( top > limit_top ) && ( min > 0 ) ) {\n\t\t\t\tmax2 = min\n\t\t\t\tbottom2 = top\n\t\t\t}\n\n\t\t\t// extend min to cover top limit\n\t\t\twhile( anchoring && (( top2 > limit_top )&&( min2 > 0 )) ) {\n\t\t\t\t-- min2\n\t\t\t\ttop2 -= kids[ min2 ].minimal_height()\n\t\t\t}\n\t\t\t\n\t\t\t// extend max to cover bottom limit\n\t\t\twhile( bottom2 < limit_bottom && max2 < kids.length ) {\n\t\t\t\tbottom2 += kids[ max2 ].minimal_height()\n\t\t\t\t++ max2\n\t\t\t}\n\t\t\t\n\t\t\treturn [ min2 , max2 ]\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgap_before() {\n\t\t\tconst skipped = this.sub().slice( 0 , this.view_window()[0] )\n\t\t\treturn Math.max( 0 , skipped.reduce( ( sum , view )=> sum + view.minimal_height() , 0 ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgap_after() {\n\t\t\tconst skipped = this.sub().slice( this.view_window()[1] )\n\t\t\treturn Math.max( 0 , skipped.reduce( ( sum , view )=> sum + view.minimal_height() , 0 ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tsub_visible() {\n\t\t\treturn [\n\t\t\t\t... this.gap_before() ? [ this.Gap_before() ] : [],\n\t\t\t\t... this.sub().slice( ... this.view_window() ),\n\t\t\t\t... this.gap_after() ? [ this.Gap_after() ] : [],\n\t\t\t]\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\n\t\t\treturn this.sub().reduce( ( sum , view )=> {\n\n\t\t\t\ttry {\n\t\t\t\t\treturn sum + view.minimal_height() \n\t\t\t\t} catch( error: any ) {\n\t\t\t\t\t$mol_fail_log( error )\n\t\t\t\t\treturn sum\n\t\t\t\t}\n\n\t\t\t} , 0 )\n\n\t\t}\n\n\t\tforce_render(\n\t\t\tpath : Set< $mol_view >,\n\t\t) {\n\n\t\t\tconst kids = this.rows()\n\n\t\t\tconst index = kids.findIndex( item => path.has( item ) )\n\n\t\t\tif( index >= 0 ) {\n\t\t\t\tconst win = this.view_window()\n\t\t\t\tif( index < win[0] || index >= win[1] ) {\n\t\t\t\t\tthis.view_window([ this.render_visible_only() ? index : 0, index + 1 ])\n\t\t\t\t}\n\t\t\t\t( kids[ index ] as $mol_view ).force_render( path )\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/list/list.view.css\",\n \"[mol_list] {\\n\\twill-change: contents;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tflex-shrink: 0;\\n\\tmax-width: 100%;\\n\\t/* display: flex;\\n\\talign-items: stretch;\\n\\talign-content: stretch; */\\n\\ttransition: none;\\n\\tmin-height: 1.5rem;\\n}\\n\\n[mol_list_gap_before] ,\\n[mol_list_gap_after] {\\n\\tdisplay: block !important;\\n\\tflex: none;\\n\\ttransition: none;\\n\\toverflow-anchor: none;\\n}\\n\"\n) }","namespace $ {\n\n\texport type $mol_blob = Blob\n\n\texport let $mol_blob = ( $node.buffer?.Blob ?? $mol_dom_context.Blob ) as any as {\n\t\tprototype: Blob;\n\t\tnew(blobParts?: readonly BlobPart[], options?: BlobPropertyBag): Blob;\n\t}\n\n}\n","$mol_icon_clipboard $mol_icon path \\M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3\n","$mol_icon_clipboard_outline $mol_icon path \\M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7Z\n","$mol_button_copy $mol_button_minor\n\tblobs /$mol_blob\n\t\t<= text_blob? $mol_blob /\n\t\t\t/BlobPart <= text <= title\n\t\t\t* type \\text/plain\n\t\t<= html_blob? $mol_blob /\n\t\t\t/BlobPart <= html \\\n\t\t\t* type \\text/html\n\tdata *\n\tsub /\n\t\t<= Icon $mol_icon_clipboard_outline\n\t\t<= title \\\n\n","namespace $ {\n\t\n\tconst mapping = {\n\t\t'<' : '<' ,\n\t\t'>' : '>' ,\n\t\t'\"' : '"' ,\n\t\t'&' : '&' ,\n\t}\n\t\n\texport function $mol_html_encode( text : string ) {\n\t\treturn text.replace( /[&<\">]/gi , str => mapping[ str as keyof typeof mapping ] )\n\t}\n\t\n}\n","namespace $.$$ {\n\t\n\t/**\n\t * Button copy text() value to clipboard\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_button_demo\n\t */\n\texport class $mol_button_copy extends $.$mol_button_copy {\n\t\t\n\t\tdata() {\n\t\t\treturn Object.fromEntries(\n\t\t\t\tthis.blobs().map( blob => [ blob.type, blob ] )\n\t\t\t)\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\thtml() {\n\t\t\treturn $mol_html_encode( this.text() )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tattachments() {\n\t\t\treturn [ new ClipboardItem( this.data() ) ]\n\t\t}\n\t\t\n\t\tclick( event?: Event ) {\n\t\t\tconst cb = $mol_wire_sync( this.$.$mol_dom_context.navigator.clipboard )\n\t\t\t\n\t\t\tcb.writeText?.( this.text() )\n\t\t\tcb.write?.( this.attachments() )\n\n\t\t\tif( cb.writeText === undefined && cb.write === undefined ) {\n\t\t\t\tthrow new Error( \"doesn't support copy to clipoard\" )\n\t\t\t}\n\t\t}\n\n\t}\n\t\n}\n","$mol_text_code $mol_stack\n\tattr *\n\t\t^\n\t\tmol_text_code_sidebar_showed <= sidebar_showed false\n\ttext \\\n\ttext_lines /string\n\tfind_pos* null\n\turi_base \\\n\tsub /\n\t\t<= Rows $mol_list\n\t\t\trender_visible_only <= render_visible_only false\n\t\t\trows <= rows /\n\t\t\t\t<= Row*0 $mol_text_code_line\n\t\t\t\t\tnumb_showed <= sidebar_showed\n\t\t\t\t\tnumb <= row_numb* 0\n\t\t\t\t\ttext <= row_text* \\\n\t\t\t\t\tsyntax <= syntax null\n\t\t\t\t\turi_resolve* <= uri_resolve* \\\n\t\t\t\t\thighlight <= highlight \\\n\t\t<= Copy $mol_button_copy\n\t\t\thint @ \\Copy whole code\n\t\t\ttext <= text_export \\\n","namespace $.$$ {\n\n\t/**\n\t * Code visualizer.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_text_code_demo\n\t */\n\texport class $mol_text_code extends $.$mol_text_code {\n\t\t\n\t\trender_visible_only() {\n\t\t\treturn this.$.$mol_support_css_overflow_anchor()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\ttext_lines() {\n\t\t\treturn ( this.text() ?? '' ).split( '\\n' ) as readonly string[]\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trows() {\n\t\t\treturn this.text_lines().map( ( _ , index )=> this.Row( index + 1 ) )\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\trow_text( index: number ) {\n\t\t\treturn this.text_lines()[ index - 1 ]\n\t\t}\n\t\t\n\t\trow_numb( index: number ) {\n\t\t\treturn index\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tfind_pos( offset: number ) {\n\t\t\t\n\t\t\tfor( const [ index, line ] of this.text_lines().entries() ) {\n\t\t\t\tif( line.length >= offset ) {\n\t\t\t\t\treturn this.Row( index + 1 ).find_pos( offset )\n\t\t\t\t} else {\n\t\t\t\t\toffset -= line.length + 1\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn null\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tsub() {\n\t\t\treturn [\n\t\t\t\tthis.Rows(),\n\t\t\t\t... this.sidebar_showed() ? [ this.Copy() ] : []\n\t\t\t]\n\t\t}\n\t\t\n\t\tsyntax() {\n\t\t\treturn this.$.$mol_syntax2_md_code\n\t\t}\n\n\t\turi_base() {\n\t\t\treturn $mol_dom_context.document.location.href\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\turi_resolve( uri: string ) {\n\t\t\t\n\t\t\tif( /^(\\w+script+:)+/.test( uri ) ) return null as any as string\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tconst url = new URL( uri , this.uri_base() )\n\t\t\t\treturn url.toString()\n\t\t\t\t\n\t\t\t} catch( error ) {\n\t\t\t\t\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\treturn null as any as string\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\ttext_export() {\n\t\t\treturn this.text() + '\\n'\n\t\t}\n\t\t\n\t}\n}\n","namespace $.$$ {\n\t\n\tconst { rem, px } = $mol_style_unit\n\n\t$mol_style_define( $mol_text_code, {\n\n\t\twhiteSpace: 'pre-wrap',\n\t\tfont: {\n\t\t\tfamily: 'monospace',\n\t\t},\n\t\t\n\t\tRows: {\n\t\t\tpadding: $mol_gap.text,\n\t\t},\n\t\t\n\t\tRow: {\n\t\t\tfont: {\n\t\t\t\tfamily: 'inherit',\n\t\t\t},\n\t\t},\n\n\t\tCopy: {\n\t\t\talignSelf: 'flex-start',\n\t\t\tjustifySelf: 'flex-start',\n\t\t},\n\t\t\n\t\t'@': {\n\t\t\t'mol_text_code_sidebar_showed': {\n\t\t\t\ttrue: {\n\t\t\t\t\t$mol_text_code_line: {\n\t\t\t\t\t\tmargin: {\n\t\t\t\t\t\t\tleft: rem(1.75),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t} )\n\t\n}\n","$mol_hotkey $mol_plugin\n\tevent *\n\t\t^\n\t\tkeydown?event <=> keydown?event null\n\tkey *\n\tmod_ctrl false\n\tmod_alt false\n\tmod_shift false\n","namespace $.$$ {\n\t/**\n\t * Plugin which adds handlers for keyboard keys.\n\t * @see [mol_keyboard_code](../keyboard/code/code.ts)\n\t */\n\texport class $mol_hotkey extends $.$mol_hotkey {\n\n\t\tkey() {\n\t\t\treturn super.key() as {\n\t\t\t\t[ key in keyof typeof $mol_keyboard_code ]? : ( event : KeyboardEvent )=> void\n\t\t\t}\n\t\t}\n\t\t\n\t\tkeydown( event? : KeyboardEvent ) {\n\n\t\t\tif( !event ) return\n\t\t\tif( event.defaultPrevented ) return\n\n\t\t\tlet name = $mol_keyboard_code[ event.keyCode ] as keyof typeof $mol_keyboard_code\n\t\t\t\n\t\t\tif( this.mod_ctrl() !== ( event.ctrlKey || event.metaKey ) ) return\n\t\t\tif( this.mod_alt() !== event.altKey ) return\n\t\t\tif( this.mod_shift() !== event.shiftKey ) return\n\t\t\t\n\t\t\tconst handle = this.key()[ name ]\n\t\t\tif( handle ) handle( event )\n\n\t\t}\n\t\t\n\t}\n}\n","$mol_string $mol_view\n\tdom_name \\input\n\tenabled true\n\tminimal_height 40\n\tautocomplete false\n\tselection? /number\n\t\t0\n\t\t0\n\tauto /\n\t\t<= selection_watcher null\n\t\t<= error_report null\n\tfield *\n\t\t^\n\t\tdisabled <= disabled false\n\t\tvalue <= value_changed? <=> value? \\\n\t\tplaceholder <= hint_visible <= hint \\\n\t\tspellcheck <= spellcheck true\n\t\tautocomplete <= autocomplete_native \\\n\t\tselectionEnd <= selection_end 0\n\t\tselectionStart <= selection_start 0\n\t\tinputMode <= keyboard \\text\n\t\tenterkeyhint <= enter \\go\n\tattr *\n\t\t^\n\t\tmaxlength <= length_max +Infinity\n\t\ttype <= type? \\text\n\tevent *\n\t\t^\n\t\tinput?event <=> event_change?event null\n\tplugins /\n\t\t<= Submit $mol_hotkey\n\t\t\tmod_ctrl <= submit_with_ctrl false\n\t\t\tkey * enter?event <=> submit?event null\n","namespace $.$$ {\n\t/**\n\t * An input field for entering single line text.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_string_demo\n\t */\n\texport class $mol_string extends $.$mol_string {\n\t\t\n\t\t@ $mol_action\n\t\tevent_change( next? : Event ) {\n\t\t\tif( !next ) return\n\t\t\tconst el = next.target as HTMLInputElement\n\t\t\tconst from = el.selectionStart\n\t\t\tconst to = el.selectionEnd\n\t\t\ttry {\n\t\t\t\tel.value = this.value_changed( el.value )\n\t\t\t} catch( error ) {\n\t\t\t\tconst el = this.dom_node() as HTMLInputElement\n\t\t\t\tif( error instanceof Error ) {\n\t\t\t\t\tel.setCustomValidity( error.message )\n\t\t\t\t\tel.reportValidity()\n\t\t\t\t}\n\t\t\t\t$mol_fail_hidden( error )\n\t\t\t}\n\t\t\tif( to === null ) return \n\t\t\tel.selectionEnd = to\n\t\t\tel.selectionStart = from\n\t\t\tthis.selection_change( next )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\terror_report() {\n\t\t\ttry {\n\t\t\t\tif( this.focused() ) this.value()\n\t\t\t} catch( error ) {\n\t\t\t\tconst el = this.dom_node() as HTMLInputElement\n\t\t\t\tif( error instanceof Error ) {\n\t\t\t\t\tel.setCustomValidity( error.message )\n\t\t\t\t\tel.reportValidity()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\thint_visible() {\n\t\t\treturn ( this.enabled() ? this.hint() : '' ) || ' '\n\t\t}\n\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\n\t\tautocomplete_native() {\n\t\t\treturn this.autocomplete() ? 'on' : 'off'\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tselection_watcher() {\n\t\t\treturn new $mol_dom_listener(\n\t\t\t\tthis.$.$mol_dom_context.document,\n\t\t\t\t'selectionchange',\n\t\t\t\t$mol_wire_async( event => this.selection_change( event ) ),\n\t\t\t)\n\t\t}\n\t\t\n\t\tselection_change( event: Event ) {\n\t\t\t\n\t\t\tconst el = this.dom_node() as HTMLInputElement\n\t\t\tif( el !== this.$.$mol_dom_context.document.activeElement ) return\n\t\t\t\n\t\t\tconst [ from, to ] = this.selection([\n\t\t\t\tel.selectionStart!,\n\t\t\t\tel.selectionEnd!,\n\t\t\t])\n\t\t\t\n\t\t\tel.selectionEnd = to\n\t\t\tel.selectionStart = from\n\n\t\t\tif( to !== from && el.selectionEnd === el.selectionStart ) {\n\t\t\t\tel.selectionEnd = to\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tselection_start() {\n\t\t\tconst el = this.dom_node() as HTMLInputElement\n\t\t\tif( el.selectionStart === null ) return undefined as any as number\n\t\t\treturn this.selection()[0]\n\t\t}\n\n\t\tselection_end() {\n\t\t\tconst el = this.dom_node() as HTMLInputElement\n\t\t\tif( el.selectionEnd === null ) return undefined as any as number\n\t\t\treturn this.selection()[1]\n\t\t}\n\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/string/string.view.css\",\n \"[mol_string] {\\n\\tbox-sizing: border-box;\\n\\toutline-offset: 0;\\n\\tborder: none;\\n\\tborder-radius: var(--mol_gap_round);\\n\\twhite-space: pre-line;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n\\tpadding: var(--mol_gap_text);\\n\\ttext-align: left;\\n\\tposition: relative;\\n\\tfont: inherit;\\n\\tflex: 1 1 auto;\\n\\tbackground: transparent;\\n\\tmin-width: 0;\\n\\tcolor: inherit;\\n\\tbackground: var(--mol_theme_field);\\n}\\n\\n[mol_string]:disabled:not(:placeholder-shown) {\\n\\tbackground-color: transparent;\\n\\tcolor: var(--mol_theme_text);\\n}\\n\\n[mol_string]:where(:not(:disabled)) {\\n\\tbox-shadow: inset 0 0 0 1px var(--mol_theme_line);\\n}\\n\\n[mol_string]:where(:not(:disabled)):hover {\\n\\tbox-shadow: inset 0 0 0 2px var(--mol_theme_line);\\n\\tz-index: var(--mol_layer_hover);\\n}\\n\\n[mol_string]:focus {\\n\\toutline: none;\\n\\tz-index: var(--mol_layer_focus);\\n\\tcolor: var(--mol_theme_text);\\n\\tbox-shadow: inset 0 0 0 1px var(--mol_theme_focus);\\n}\\n\\n[mol_string]::placeholder {\\n\\tcolor: var(--mol_theme_shade);\\n}\\n\\n[mol_string]::-ms-clear {\\n\\tdisplay: none;\\n}\\n\"\n) }","$mol_textarea $mol_stack\n\tattr *\n\t\t^\n\t\tmol_textarea_clickable <= clickable? false\n\t\tmol_textarea_sidebar_showed <= sidebar_showed false\n\tevent *\n\t\tkeydown?event <=> press?event null\n\t\tpointermove?event <=> hover?event null\n\tsub /\n\t\t<= Edit $mol_textarea_edit\n\t\t\tvalue? <=> value? \\\n\t\t\thint <= hint \\ \n\t\t\tenabled <= enabled true\n\t\t\tspellcheck <= spellcheck true\n\t\t\tlength_max <= length_max +Infinity\n\t\t\tselection? <=> selection? /number\n\t\t\tbring => bring\n\t\t\tsubmit? <=> submit? null\n\t\t\tsubmit_with_ctrl <= submit_with_ctrl true\n\t\t<= View $mol_text_code\n\t\t\ttext <= value\n\t\t\trender_visible_only false\n\t\t\trow_numb* <= row_numb* 0\n\t\t\tsidebar_showed <= sidebar_showed\n\t\t\thighlight <= highlight \\\n\t\t\tsyntax <= syntax $mol_syntax2\n\tsymbols_alt *string\n\t\tcomma \\<\n\t\tperiod \\>\n\t\tdash \\−\n\t\tequals \\≈\n\t\tgraveAccent \\́\n\t\tforwardSlash \\÷\n\t\tE \\€\n\t\tV \\✔\n\t\tX \\×\n\t\tC \\©\n\t\tP \\§\n\t\tH \\₽\n\t\tkey0 \\°\n\t\tkey8 \\•\n\t\tkey2 \\@\n\t\tkey3 \\#\n\t\tkey4 \\$\n\t\tkey6 \\^\n\t\tkey7 \\&\n\t\tbracketOpen \\[\n\t\tbracketClose \\]\n\t\tslashBack \\|\n\tsymbols_alt_ctrl *string\n\t\tspace \\ \n\tsymbols_alt_shift *string\n\t\tV \\✅\n\t\tX \\❌\n\t\tO \\⭕\n\t\tkey1 \\❗\n\t\tkey4 \\💲\n\t\tkey7 \\❓\n\t\tcomma \\«\n\t\tperiod \\»\n\t\tsemicolon \\“\n\t\tquoteSingle \\”\n\t\tdash \\—\n\t\tequals \\≠\n\t\tgraveAccent \\̱\n\t\tbracketOpen \\{\n\t\tbracketClose \\}\n\n$mol_textarea_edit $mol_string\n\tdom_name \\textarea\n\tenter \\enter\n\tfield *\n\t\t^\n\t\tscrollTop 0\n","namespace $.$$ {\n\n\t/**\n\t * An input field for entering multiline text.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_textarea_demo\n\t */\n\texport class $mol_textarea extends $.$mol_textarea {\n\n\t\tindent_inc() {\n\n\t\t\tlet text = this.value()\n\t\t\tlet [ from, to ] = this.selection()\n\t\t\t\n\t\t\tconst rows = text.split( '\\n' )\n\t\t\tlet start = 0\n\t\t\t\n\t\t\tfor( let i = 0; i < rows.length; ++i ) {\n\t\t\t\tlet end = start + rows[i].length\n\t\t\t\t\n\t\t\t\tif( end >= from && start <= to ) {\n\t\t\t\t\tif( to === from || start !== to ) {\n\t\t\t\t\t\trows[i] = '\\t' + rows[i]\n\t\t\t\t\t\tto += 1\n\t\t\t\t\t\tend += 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstart = end + 1\n\t\t\t}\n\n\t\t\tthis.value( rows.join('\\n') )\n\t\t\tthis.selection([ from + 1, to ])\n\t\t\t\n\t\t}\n\n\t\tindent_dec() {\n\n\t\t\tlet text = this.value()\n\t\t\tlet [ from, to ] = this.selection()\n\t\t\t\n\t\t\tconst rows = text.split( '\\n' )\n\t\t\tlet start = 0\n\t\t\t\n\t\t\tfor( let i = 0; i < rows.length; ++i ) {\n\t\t\t\tconst end = start + rows[i].length\n\t\t\t\t\n\t\t\t\tif( end >= from && start <= to && rows[i].startsWith( '\\t' ) ) {\n\t\t\t\t\trows[i] = rows[i].slice( 1 )\n\t\t\t\t\tto -= 1\n\t\t\t\t\tif( start < from ) from -= 1\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstart = end + 1\n\t\t\t}\n\n\t\t\tthis.value( rows.join('\\n') )\n\t\t\tthis.selection([ from, to ])\n\t\t\t\n\t\t}\n\t\t\n\t\tsymbol_insert( event: KeyboardEvent ) {\n\t\t\t\n\t\t\tconst symbol = event.shiftKey\n\t\t\t\t? this.symbols_alt_shift()[ $mol_keyboard_code[ event.keyCode ] ]\n\t\t\t\t: event.ctrlKey\n\t\t\t\t\t? this.symbols_alt_ctrl()[ $mol_keyboard_code[ event.keyCode ] ]\n\t\t\t\t\t: this.symbols_alt()[ $mol_keyboard_code[ event.keyCode ] ]\n\t\t\t\t\n\t\t\tif( !symbol ) return\n\t\t\t\n\t\t\tevent.preventDefault()\n\t\t\tdocument.execCommand( 'insertText', false, symbol )\n\t\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tclickable( next?: boolean ) {\n\t\t\tif( !this.enabled() ) return true\n\t\t\treturn next ?? false\n\t\t}\n\t\t\n\t\thover( event : PointerEvent ) {\n\t\t\tthis.clickable( event.ctrlKey )\n\t\t}\n\t\t\n\t\tpress( event : KeyboardEvent ) {\n\t\t\t\n\t\t\tif( event.altKey ) {\n\t\t\t\t\n\t\t\t\tthis.symbol_insert( event )\n\t\t\t\t\n\t\t\t} else {\n\n\t\t\t\tswitch( event.keyCode ) {\n\t\t\t\t\tcase !event.shiftKey && $mol_keyboard_code.tab : this.indent_inc() ; break\n\t\t\t\t\tcase event.shiftKey && $mol_keyboard_code.tab : this.indent_dec() ; break\n\t\t\t\t\tdefault : return\n\t\t\t\t}\n\t\t\t\n\t\t\t\tevent.preventDefault()\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\t\t\n\t\trow_numb( index: number ) {\n\t\t\treturn index\n\t\t}\n\t\t\n\t\tsyntax() {\n\t\t\treturn this.$.$mol_syntax2_md_code\n\t\t}\n\t}\n\n}\n","namespace $ { $mol_style_attach( \"mol/textarea/textarea.view.css\",\n \"[mol_textarea] {\\n\\tflex: 1 0 auto;\\n\\tflex-direction: column;\\n\\tvertical-align: top;\\n\\tmin-height: max-content;\\n\\twhite-space: pre-wrap;\\n\\tword-break: break-word;\\n\\tborder-radius: var(--mol_gap_round);\\n\\tfont-family: monospace;\\n\\tposition: relative;\\n\\ttab-size: 4;\\n}\\n\\n[mol_textarea_view] {\\n\\tpointer-events: none;\\n\\twhite-space: inherit;\\n\\tfont-family: inherit;\\n\\ttab-size: inherit;\\n\\tuser-select: none;\\n}\\n\\n[mol_textarea_view_copy] {\\n\\tpointer-events: all;\\n}\\n\\n[mol_textarea_clickable] > [mol_textarea_view] {\\n\\tpointer-events: all;\\n\\tuser-select: auto;\\n}\\n\\n[mol_textarea_clickable] > [mol_textarea_edit] {\\n\\tuser-select: none;\\n}\\n\\n[mol_textarea_edit] {\\n\\tfont-family: inherit;\\n\\tpadding: var(--mol_gap_text);\\n\\tcolor: transparent !important;\\n\\tcaret-color: var(--mol_theme_text);\\n\\tresize: none;\\n\\ttext-align: inherit;\\n\\twhite-space: inherit;\\n\\tborder-radius: inherit;\\n\\toverflow-anchor: none;\\n\\tposition: absolute;\\n\\theight: 100%;\\n\\twidth: 100%;\\n\\ttab-size: inherit;\\n}\\n\\n[mol_textarea_sidebar_showed] [mol_textarea_edit] {\\n\\tleft: 1.75rem;\\n\\twidth: calc( 100% - 1.75rem );\\n}\\n\\n[mol_textarea_edit]:hover + [mol_textarea_view] {\\n\\tz-index: var(--mol_layer_hover);\\n}\\n\\n[mol_textarea_edit]:focus + [mol_textarea_view] {\\n\\tz-index: var(--mol_layer_focus);\\n}\\n\"\n) }","$mol_page $mol_view\n\tdom_name \\article\n\tattr *\n\t\t^\n\t\ttabIndex <= tabindex -1\n\tsub /\n\t\t<= Head $mol_view\n\t\t\tminimal_height 64\n\t\t\tdom_name \\header\n\t\t\tsub <= head /\n\t\t\t\t<= Title $mol_view\n\t\t\t\t\tdom_name \\h1\n\t\t\t\t\tsub <= title_content /\n\t\t\t\t\t\t<= Logo null\n\t\t\t\t\t\t<= title\n\t\t\t\t<= Tools $mol_view\n\t\t\t\t\tsub <= tools /$mol_view_content\n\t\t<= Body $mol_scroll\n\t\t\tscroll_top? => body_scroll_top?\n\t\t\tsub <= body_content /\n\t\t\t\t<= Body_content $mol_view\n\t\t\t\t\tsub <= body /$mol_view\n\t\t<= Foot $mol_view\n\t\t\tdom_name \\footer\n\t\t\tsub <= foot /$mol_view\n","namespace $.$$ {\n\n\tconst { per , rem } = $mol_style_unit\n\tconst { hsla, blur } = $mol_style_func\n\n\t$mol_style_define( $mol_page , {\n\n\t\tdisplay: 'flex' ,\n\t\tflex: {\n\t\t\tbasis: 'auto' ,\n\t\t\tdirection: 'column' ,\n\t\t},\n\t\tposition: 'relative' ,\n\t\talignSelf: 'stretch' ,\n\t\tmaxWidth: per(100) ,\n\t\tmaxHeight: per(100) ,\n\t\tboxSizing: 'border-box' ,\n\t\tcolor: $mol_theme.text ,\n\t\t// backdropFilter: blur( `3px` ), enforces layering\n\t\t// zIndex: 0 ,\n\t\t\n\t\t':focus': {\n\t\t\toutline: 'none',\n\t\t} ,\n\n\t\tHead: {\n\t\t\tdisplay: 'flex' ,\n\t\t\tflexWrap: 'wrap' ,\n\t\t\tjustifyContent: 'flex-end' ,\n\t\t\tflex: 'none',\n\t\t\tposition: 'relative' ,\n\t\t\tmargin: 0 ,\n\t\t\tminHeight: rem(4),\n\t\t\tpadding: $mol_gap.block ,\n\t\t\tbackground: {\n\t\t\t\tcolor: $mol_theme.card ,\n\t\t\t},\n\t\t\tborder: {\n\t\t\t\tradius: $mol_gap.round,\n\t\t\t},\n\t\t\tbox: {\n\t\t\t\tshadow: [[ 0, `0.5rem`, `0.5rem`, `-0.5rem`, hsla( 0, 0, 0, .25 ) ]],\n\t\t\t},\n\t\t\tzIndex: 2,\n\n\t\t\t'@media': {\n\t\t\t\t'print': {\n\t\t\t\t\tbox: {\n\t\t\t\t\t\tshadow: [[ 0, `1px`, 0, 0, hsla( 0, 0, 0, .25 ) ]],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t},\n\n\t\tTitle: {\n\n\t\t\tminHeight: rem(2),\n\t\t\tmargin: 0,\n\t\t\tpadding: $mol_gap.text,\n\t\t\tgap: $mol_gap.text,\n\t\t\twordBreak: 'normal',\n\t\t\ttextShadow: '0 0',\n\n\t\t\tfont: {\n\t\t\t\tsize: 'inherit',\n\t\t\t\tweight: 'normal',\n\t\t\t},\n\t\n\t\t\tflex: {\n\t\t\t\tgrow: 1,\n\t\t\t\tshrink: 1,\n\t\t\t\tbasis: 'auto',\n\t\t\t},\n\n\t\t},\n\n\t\tTools: {\n\t\t\t\n\t\t\tflex: {\n\t\t\t\tbasis: 'auto',\n\t\t\t\tgrow: 0,\n\t\t\t\tshrink: 1,\n\t\t\t},\n\t\t\tdisplay: 'flex',\n\t\t\tjustifyContent: 'flex-end',\n\t\t\talignItems: 'flex-start',\n\t\t\tflexWrap: 'wrap',\n\n\t\t\t'@media': {\n\t\t\t\t'print': {\n\t\t\t\t\tdisplay: 'none',\n\t\t\t\t},\n\t\t\t},\n\n\t\t},\n\n\t\tBody: {\n\t\t\tflex: {\n\t\t\t\tgrow: 1000,\n\t\t\t\tshrink: 1,\n\t\t\t\tbasis: per(100),\n\t\t\t},\n\t\t},\n\t\t\n\t\tBody_content: {\n\t\t\tpadding: $mol_gap.block ,\n\t\t\tflex: {\n\t\t\t\tdirection: 'column',\n\t\t\t\tshrink: 1,\n\t\t\t\tgrow: 1,\n\t\t\t},\n\t\t\tjustify: {\n\t\t\t\tself: 'stretch',\n\t\t\t},\n\t\t},\n\t\t\n\t\tFoot: {\n\t\t\tdisplay: 'flex',\n\t\t\tjustifyContent: 'space-between',\n\t\t\tflex: 'none',\n\t\t\tmargin: 0,\n\t\t\tbackground: {\n\t\t\t\tcolor: $mol_theme.card ,\n\t\t\t},\n\t\t\tborder: {\n\t\t\t\tradius: $mol_gap.round,\n\t\t\t},\n\t\t\tbox: {\n\t\t\t\tshadow: [[ 0, `-0.5rem`, `0.5rem`, `-0.5rem`, hsla( 0, 0, 0, .25 ) ]],\n\t\t\t},\n\t\t\tzIndex: 1,\n\t\t\tpadding: $mol_gap.block ,\n\t\t\t':empty': {\n\t\t\t\tdisplay: 'none',\n\t\t\t},\n\t\t},\t\n\n\t} )\n\t\n}\n","$optimade_cifplayer_lib_three_view $mol_view\n\tsub /\n\t\t<= canvas null\n\tscene null\n\tcamera null\n\tcontrols null\n\tcontrols_target null\n\ton_render null\n\tnew_object*? null\n\tobject*? null\n\tauto /\n\t\t<= controls_target_changed null\n\t\t<= resize null\n\t\t<= start_render_loop null\n","namespace $.$$ {\n\n\t$mol_style_define( $optimade_cifplayer_lib_three_view, {\n\n\t\tflex: {\n\t\t\tgrow: 1,\n\t\t\tbasis: '20rem',\n\t\t},\n\n\t} )\n\n}\n","$mol_icon_eye $mol_icon path \\M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\n","$mol_icon_eye_check $mol_icon path \\M23.5,17L18.5,22L15,18.5L16.5,17L18.5,19L22,15.5L23.5,17M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,17C12.5,17 12.97,16.93 13.42,16.79C13.15,17.5 13,18.22 13,19V19.45L12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5C17,4.5 21.27,7.61 23,12C22.75,12.64 22.44,13.26 22.08,13.85C21.18,13.31 20.12,13 19,13C18.22,13 17.5,13.15 16.79,13.42C16.93,12.97 17,12.5 17,12A5,5 0 0,0 12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17Z\n","$mol_icon_tick $mol_icon path \\M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\n","$mol_check_box $mol_check\n\tIcon $mol_icon_tick\n","namespace $ { $mol_style_attach( \"mol/check/box/box.view.css\",\n \"[mol_check_box_icon] {\\n\\tborder-radius: var(--mol_gap_round);\\n\\tbox-shadow: inset 0 0 0 1px var(--mol_theme_line);\\n\\tcolor: var(--mol_theme_shade);\\n\\theight: 1rem;\\n\\talign-self: center;\\n}\\n\\n[mol_check]:not([mol_check_checked]) > [mol_check_box_icon] {\\n\\tfill: transparent;\\n}\\n\\n[mol_check]:not([disabled]) > [mol_check_box_icon] {\\n\\tbackground: var(--mol_theme_field);\\n\\tcolor: var(--mol_theme_text);\\n}\\n\"\n) }","$mol_pop $mol_view\n\tshowed? false\n\talign_vert \\\n\talign_hor \\\n\tprefer \\vert\n\tsub /\n\t\t<= Anchor null\n\tsub_visible /\n\t\t<= Anchor\n\t\t<= Bubble $mol_pop_bubble\n\t\t\talign <= align \\bottom_center\n\t\t\tcontent <= bubble_content /$mol_view_content\n\t\t\theight_max <= height_max 9999\n\n$mol_pop_bubble $mol_view\n\tsub <= content /$mol_view_content\n\tstyle *\n\t\t^\n\t\tmaxHeight <= height_max 9999\n\tattr *\n\t\t^\n\t\tmol_pop_align <= align \\\n\t\ttabindex 0\n","namespace $.$$ {\n\n\t/**\n\t * `Bubble` that can be shown anchored to `Anchor` element.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_pop_demo\n\t */\n\texport class $mol_pop extends $.$mol_pop {\n\t\t\n\t\t@ $mol_mem\n\t\tshowed( next = false ) {\n\t\t\tthis.focused()\n\t\t\treturn next\n\t\t}\n\n\t\t@ $mol_mem\n\t\tsub_visible() {\n\t\t\treturn [\n\t\t\t\tthis.Anchor() ,\n\t\t\t\t... this.showed() ? [ this.Bubble() ] : [] ,\n\t\t\t]\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\theight_max() {\n\t\t\t\n\t\t\tconst viewport = this.$.$mol_window.size()\n\t\t\tconst rect_bubble = this.view_rect()!\n\t\t\tconst align = this.align_vert()\n\t\t\t\n\t\t\tif( align === 'bottom' ) return ( viewport.height - rect_bubble.bottom ) * .66\n\t\t\tif( align === 'top' ) return rect_bubble.top * .66\n\t\t\t\n\t\t\treturn 0\n\t\t}\n\n\t\t@ $mol_mem\n\t\talign() {\n\t\t\tswitch( this.prefer() ) {\n\t\t\t\tcase 'hor': return `${ this.align_hor() }_${ this.align_vert() }`\n\t\t\t\tcase 'vert': return `${ this.align_vert() }_${ this.align_hor() }`\n\t\t\t\tdefault: return this.prefer()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem\n\t\talign_vert() {\n\t\t\tconst viewport = this.view_port()\n\t\t\t\n\t\t\tconst rect_pop = this.view_rect()\n\t\t\tif( !rect_pop ) return 'suspense'\n\t\t\t\n\t\t\treturn rect_pop.top > ( viewport.top + viewport.height / 2 ) ? 'top' : 'bottom'\n\t\t}\n\n\t\t@ $mol_mem\n\t\talign_hor() {\n\t\t\tconst viewport = this.view_port()\n\t\t\t\n\t\t\tconst rect_pop = this.view_rect()\n\t\t\tif( !rect_pop ) return 'suspense'\n\t\t\t\n\t\t\treturn rect_pop.left > ( viewport.left + viewport.width / 2 ) ? 'left' : 'right'\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tView_port() {\n\t\t\tconst view = new $mol_view\n\t\t\tview.dom_node = ()=> {\n\t\t\t\tlet node = this.dom_node() as HTMLElement\n\t\t\t\twhile( node = node.offsetParent! as HTMLElement ) {\n\t\t\t\t\tif( this.$.$mol_dom_context.getComputedStyle( node ).overflow !== 'visible' ) return node\n\t\t\t\t}\n\t\t\t\treturn this.$.$mol_dom_context.document.documentElement\n\t\t\t}\n\t\t\treturn view\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tview_port() {\n\t\t\treturn this.View_port().view_rect() ?? { ... this.$.$mol_window.size(), left: 0, top: 0 }\n\t\t}\n\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/pop/pop.view.css\",\n \"[mol_pop] {\\n\\tposition: relative;\\n\\tdisplay: inline-flex;\\n}\\n\\n[mol_pop_bubble] {\\n\\tbox-shadow: 0 0 1rem hsla(0,0%,0%,.5);\\n\\tborder-radius: var(--mol_gap_round);\\n\\tposition: absolute;\\n\\tz-index: var(--mol_layer_popup);\\n\\tbackground: var(--mol_theme_back);\\n\\tmax-width: none;\\n\\tmax-height: none;\\n\\t/* overflow: hidden;\\n\\toverflow-y: scroll;\\n\\toverflow-y: overlay; */\\n\\tword-break: normal;\\n\\twidth: max-content;\\n\\theight: max-content;\\n\\tflex-direction: column;\\n\\tmax-width: 80vw;\\n\\tmax-height: 80vw;\\n\\tcontain: paint;\\n\\ttransition-property: opacity;\\n}\\n\\n:where( [mol_pop_bubble] > * ) {\\n\\tbackground: var(--mol_theme_card);\\n}\\n\\n[mol_pop_bubble][mol_scroll] {\\n\\tbackground: var(--mol_theme_back);\\n}\\n\\n[mol_pop_bubble]:focus {\\n\\toutline: none;\\n}\\n\\n[mol_pop_align=\\\"suspense_suspense\\\"] {\\n\\topacity: 0;\\n}\\n\\n[mol_pop_align=\\\"left_top\\\"] {\\n\\ttransform: translate(-100%);\\n\\tleft: 0;\\n\\tbottom: 0;\\n}\\n\\n[mol_pop_align=\\\"left_center\\\"] {\\n\\ttransform: translate(-100%, -50%);\\n\\tleft: 0;\\n\\ttop: 50%;\\n}\\n\\n[mol_pop_align=\\\"left_bottom\\\"] {\\n\\ttransform: translate(-100%);\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\\n[mol_pop_align=\\\"right_top\\\"] {\\n\\ttransform: translate(100%);\\n\\tright: 0;\\n\\tbottom: 0;\\n}\\n\\n[mol_pop_align=\\\"right_center\\\"] {\\n\\ttransform: translate(100%, -50%);\\n\\tright: 0;\\n\\ttop: 50%;\\n}\\n\\n[mol_pop_align=\\\"right_bottom\\\"] {\\n\\ttransform: translate(100%);\\n\\tright: 0;\\n\\ttop: 0;\\n}\\n\\n[mol_pop_align=\\\"center\\\"] {\\n\\tleft: 50%;\\n\\ttop: 50%;\\n\\ttransform: translate(-50%, -50%);\\n}\\n\\n[mol_pop_align=\\\"top_left\\\"] {\\n\\tright: 0;\\n\\tbottom: 100%;\\n}\\n\\n[mol_pop_align=\\\"top_center\\\"] {\\n\\ttransform: translate(-50%);\\n\\tleft: 50%;\\n\\tbottom: 100%;\\n}\\n\\n[mol_pop_align=\\\"top_right\\\"] {\\n\\tleft: 0;\\n\\tbottom: 100%;\\n}\\n\\n[mol_pop_align=\\\"bottom_left\\\"] {\\n\\tright: 0;\\n\\ttop: 100%;\\n}\\n\\n[mol_pop_align=\\\"bottom_center\\\"] {\\n\\ttransform: translate(-50%);\\n\\tleft: 50%;\\n\\ttop: 100%;\\n}\\n\\n[mol_pop_align=\\\"bottom_right\\\"] {\\n\\tleft: 0;\\n\\ttop: 100%;\\n}\\n\"\n) }","$mol_pick $mol_pop\n\tevent *\n\t\t^\n\t\tkeydown?event <=> keydown?event null\n\tAnchor <= Trigger $mol_check\n\t\tminimal_width 40\n\t\tminimal_height 40\n\t\tenabled <= trigger_enabled true\n\t\tchecked? <=> showed?\n\t\tclicks? <=> clicks? null\n\t\tsub <= trigger_content /$mol_view_content\n\t\t\t<= title\n\t\thint <= hint \\\n","namespace $.$$ {\n\n\t/**\n\t * Pop-up display and hide by mouse click, also hide by unfocus.\n\t * Based on [mol_pop](https://mol.hyoo.ru/#!section=demos/demo=mol_pop_demo) component.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_pick_demo\n\t */\n\texport class $mol_pick extends $.$mol_pick {\n\t\t\n\t\tkeydown( event : KeyboardEvent ) {\n\t\t\t\n\t\t\tif( !this.trigger_enabled() ) return\n\n\t\t\tif( event.defaultPrevented ) return \n\t\t\t\n\t\t\tif( event.keyCode === $mol_keyboard_code.escape ) {\n\t\t\t\tif( !this.showed() ) return\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.showed( false )\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/pick/pick.view.css\",\n \"[mol_pick_trigger] {\\n\\talign-items: center;\\n\\tflex-grow: 1;\\n}\\n\"\n) }","$mol_icon_minus $mol_icon path \\M19,13H5V11H19V13Z\n","$mol_icon_plus $mol_icon path \\M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\n","$mol_number $mol_view\n\tprecision_view <= precision 1\n\tprecision_change <= precision 1\n\tvalue_min -Infinity\n\tvalue_max +Infinity\n\tvalue? +NaN\n\tenabled true\n\tsub /\n\t\t<= String $mol_string\n\t\t\t- \\ we don't want native number controls in mobile devices\n\t\t\t- \\ https://stackoverflow.com/questions/3790935/can-i-hide-the-html5-number-input-s-spin-box\n\t\t\ttype <= type \\tel\n\t\t\tvalue? <=> value_string? \\\n\t\t\thint <= hint \\ \n\t\t\tenabled <= string_enabled <= enabled\n\t\t\tsubmit? <=> submit? null\n\t\t<= Dec $mol_button_minor\n\t\t\tevent_click? <=> event_dec? null\n\t\t\tenabled <= dec_enabled <= enabled\n\t\t\tsub / <= dec_icon $mol_icon_minus\n\t\t<= Inc $mol_button_minor\n\t\t\tevent_click? <=> event_inc? null\n\t\t\tenabled <= inc_enabled <= enabled\n\t\t\tsub / <= inc_icon $mol_icon_plus\n","namespace $ { $mol_style_attach( \"mol/number/number.css\",\n \"[mol_number] {\\n\\tdisplay: flex;\\n\\tflex: 0 1 auto;\\n\\tposition: relative;\\n\\talign-items: stretch;\\n\\tmax-width: 100%;\\n}\\n\\n[mol_number_string] {\\n\\tappearance: textfield;\\n\\tflex: 1 1 7rem;\\n\\twidth: 7rem;\\n}\\n\\n[mol_number_string]::-webkit-inner-spin-button {\\n\\tdisplay: none;\\n}\\n\"\n) }","namespace $.$$ {\n\n\t/**\n\t * Component for entering, incrementing and decrementing numeric values.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_number_demo\n\t */\n\texport class $mol_number extends $.$mol_number {\n\t\t\n\t\tvalue_limited( val? : number ) : number {\n\t\t\tif (Number.isNaN( val )) return this.value( val )\n\t\t\tif ( val === undefined ) return this.value()\n\n\t\t\tconst min = this.value_min()\n\t\t\tconst max = this.value_max()\n\n\t\t\tif( val < min ) return this.value( min )\n\t\t\tif( val > max ) return this.value( max )\n\t\t\t\n\t\t\treturn this.value( val )\n\t\t}\n\n\t \toverride event_dec( next? : Event ) {\n\t\t\tthis.value_limited( ( this.value_limited() || 0 ) - this.precision_change() )\n\t\t}\n\n\t\toverride event_inc( next? : Event ) {\n\t\t\tthis.value_limited( ( this.value_limited() || 0 ) + this.precision_change() )\n\t\t}\n\n\t\tround(val: number) {\n\t\t\tif (Number.isNaN(val)) return ''\n\t\t\tif( val === 0 ) return '0'\n\t\t\tif( !val ) return ''\n\n\t\t\tconst precision_view = this.precision_view()\n\n\t\t\tif (! precision_view) return val.toFixed()\n\n\t\t\tif( precision_view >= 1 ) {\n\t\t\t\treturn ( val / precision_view ).toFixed()\n\t\t\t} else {\n\t\t\t\tconst fixed_number = Math.log10( 1 / precision_view )\n\t\t\t\treturn val.toFixed( Math.ceil( fixed_number ) )\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem\n\t\toverride value_string( next? : string ): string {\n\t\t\t// Вытягиваем value\n\t\t\t// Если кто-то поменяет из вне value, value_string надо обновить\n\t\t\tconst current = this.round( this.value_limited() )\n\t\t\tif (next === undefined) return current\n\n\t\t\tconst precision = this.precision_view()\n\n\t\t\t// Точку в конце поставить нельзя, если precision_view целое число > 0\n\t\t\tif ( precision - Math.floor(precision) === 0 ) next = next.replace(/[.,]/g, '')\n\n\t\t\t// Запятые меняем на точки, удаляем не-цифры и не-точки и лишние ноли в начале целой части.\n\t\t\t// Минус получится ввести только в начале.\n\t\t\tnext = (this.value_min() < 0 && next.startsWith('-') ? '-' : '')\n\t\t\t\t+ next.replace(/,/g, '.').replace(/[^\\d\\.]/g, '').replace(/^0{2,}/, '0')\n\n\t\t\tlet dot_pos = next.indexOf('.')\n\n\t\t\tif (dot_pos !== -1) {\n\t\t\t\tconst prev = $mol_wire_probe(() => this.value_string()) ?? ''\n\t\t\t\tconst dot_pos_prev = prev.indexOf('.')\n\t\t\t\t// Определяем где относительно предыдущей точки юзер поставил новую\n\t\t\t\tif (dot_pos_prev === dot_pos) dot_pos = next.lastIndexOf('.')\n\t\t\t\t\n\t\t\t\t// Из частей до и после новой точки старую точку удаляем\n\t\t\t\tconst frac = next.slice(dot_pos + 1).replace(/\\./g, '')\n\n\t\t\t\t// Если точка идет первой, перед ней пишем 0, что бы форматирование выглядело нормально в mask\n\t\t\t\tnext = (next.slice(0, dot_pos) || '0').replace(/\\./g, '') + '.' + frac\n\t\t\t}\n\n\t\t\t// Оставляем старое значение в value есть сочетание, приводящие к NaN, например -.\n\t\t\tif ( Number.isNaN(Number(next)) ) return next\n\n\t\t\tif ( next.endsWith('.') ) return next\n\t\t\tif ( next.endsWith('-') ) return next\n\n\t\t\t// Если пустая строка - сетим NaN\n\t\t\t// Применяем округления.\n\t\t\tthis.value_limited(Number(next || Number.NaN))\n\n\t\t\t// Возвращаем все-равно не нормализованное значение\n\t\t\t// Иначе нельзя ввести будет 10, если min/max 5..10\n\t\t\treturn next\n\t\t}\n\n\t\t@ $mol_mem\n\t\toverride dec_enabled() : boolean {\n\t\t\treturn this.enabled() && (\n\t\t\t\t!( ( this.value() || 0 ) <= this.value_min() )\n\t\t\t)\n\t\t}\n\n\t\t@ $mol_mem\n\t\toverride inc_enabled() : boolean {\n\t\t\treturn this.enabled() && ( \n\t\t\t\t!( ( this.value() || 0 ) >= this.value_max() )\n\t\t\t)\n\t\t}\n\n\t}\n}\n","$mol_icon_image $mol_icon path \\M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z\n","$mol_icon_image_filter $mol_icon path \\M21,17H7V3H21M21,1H7C5.9,1 5,1.9 5,3V17C5,18.1 5.9,19 7,19H21C22.1,19 23,18.1 23,17V3C23,1.9 22.1,1 21,1M3,5H1V21C1,22.1 1.9,23 3,23H19V21H3M15.96,10.29L13.21,13.83L11.25,11.47L8.5,15H19.5L15.96,10.29Z\n","$mol_icon_image_filter_center_focus $mol_icon path \\M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z\n","$mol_icon_magnify $mol_icon path \\M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\n","$mol_icon_magnify_plus $mol_icon path \\M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M8,5V8H5V10H8V13H10V10H13V8H10V5H8Z\n","$mol_icon_magnify_plus_outline $mol_icon path \\M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14M12,10H10V12H9V10H7V9H9V7H10V9H12V10Z\n","$mol_icon_magnify_minus $mol_icon path \\M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M5,8V10H13V8H5Z\n","$mol_icon_magnify_minus_outline $mol_icon path \\M15.5,14H14.71L14.43,13.73C15.41,12.59 16,11.11 16,9.5A6.5,6.5 0 0,0 9.5,3A6.5,6.5 0 0,0 3,9.5A6.5,6.5 0 0,0 9.5,16C11.11,16 12.59,15.41 13.73,14.43L14,14.71V15.5L19,20.5L20.5,19L15.5,14M9.5,14C7,14 5,12 5,9.5C5,7 7,5 9.5,5C12,5 14,7 14,9.5C14,12 12,14 9.5,14M7,9H12V10H7V9Z\n","$mol_check_list $mol_view\n\tdictionary *\n\tOption* $mol_check\n\t\tchecked? <=> option_checked*? false\n\t\tlabel <= option_label* /\n\t\t\t<= option_title* \\\n\t\tenabled <= option_enabled* <= enabled true\n\t\thint <= option_hint* \\\n\t\tminimal_height 24\n\toptions *\n\tkeys /string\n\tsub <= items /$mol_check\n","namespace $.$$ {\n\t\n\t/**\n\t * List of checkboxes\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_check_list_demo\n\t */\n\texport class $mol_check_list extends $.$mol_check_list {\n\n\t\toptions() : { [ key : string ] : string } {\n\t\t\treturn {}\n\t\t}\n\n\t\toverride dictionary(next?: Record) {\n\t\t\treturn next ?? {}\n\t\t}\n\n\t\toverride option_checked(id: string, next?: boolean | null) {\n\t\t\tconst prev = this.dictionary()\n\t\t\tif (next === undefined) return prev[id] ?? null\n\n\t\t\tconst next_rec = { ... prev, [id]: next } as Record\n\t\t\tif (next === null) delete next_rec[id]\n\n\t\t\treturn this.dictionary(next_rec)[id] ?? null\n\t\t}\n\n\t\t@ $mol_mem\n\t\tkeys(): readonly string[] {\n\t\t\treturn Object.keys( this.options() )\n\t\t}\n\n\t\t@ $mol_mem\n\t\titems() {\n\t\t\treturn this.keys().map( key => this.Option( key ) )\n\t\t}\n\t\t\n\t\toption_title( key : string ) {\n\t\t\treturn this.options()[key] || key\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ { $mol_style_attach( \"mol/check/list/list.view.css\",\n \"[mol_check_list] {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tflex: 1 1 auto;\\n\\tborder-radius: var(--mol_gap_round);\\n\\tgap: 1px;\\n}\\n\\n[mol_check_list_option] {\\n\\tflex: 0 1 auto;\\n}\\n\\n[mol_check_list_option]:where([mol_check_checked=\\\"true\\\"]) {\\n\\ttext-shadow: 0 0;\\n\\tcolor: var(--mol_theme_current);\\n}\\n\\n[mol_check_list_option]:where([mol_check_checked=\\\"true\\\"][disabled]) {\\n\\tcolor: var(--mol_theme_text);\\n}\\n\"\n) }","$mol_switch $mol_check_list\n\tvalue? \\\n","namespace $ {\n\t\n\texport class $mol_state_session< Value > extends $mol_object {\n\t\t\n\t\tstatic 'native()' : Pick< Storage , 'getItem'|'setItem'|'removeItem' >\n\t\tstatic native() {\n\t\t\tif( this['native()'] ) return this['native()']\n\n\t\t\tcheck : try {\n\t\t\t\tconst native = $mol_dom_context.sessionStorage\n\t\t\t\tif( !native ) break check\n\n\t\t\t\tnative.setItem( '' , '' )\n\t\t\t\tnative.removeItem( '' )\n\t\t\t\treturn this['native()'] = native\n\t\t\t} catch( error: any ) {\n\t\t\t\tconsole.warn( error )\n\t\t\t}\n\n\t\t\treturn this['native()'] = {\n\t\t\t\tgetItem( key : string ) {\n\t\t\t\t\treturn (this as any)[ ':' + key ]\n\t\t\t\t} ,\n\t\t\t\tsetItem( key : string , value : string ) {\n\t\t\t\t\t(this as any)[ ':' + key ] = value\n\t\t\t\t} ,\n\t\t\t\tremoveItem( key : string ) {\n\t\t\t\t\t(this as any)[ ':' + key ] = void 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >( key : string , next? : Value ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( this.native().getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) this.native().removeItem( key )\n\t\t\telse this.native().setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_session.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $.$$ {\n\t\n\t/**\n\t * Buttons which switching the state\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_switch_demo\n\t */\n\texport class $mol_switch extends $.$mol_switch {\n\n\t\tvalue( next? : string ) {\n\t\t\treturn $mol_state_session.value( `${ this }.value()` , next ) ?? ''\n\t\t}\n\t\t\n\t\toption_checked( key : string , next? : boolean ) {\n\t\t\tif( next === undefined ) return this.value() == key\n\t\t\tthis.value( next ? key : '' )\n\t\t\treturn next\n\t\t}\n\n\t}\n\n}\n","$mol_card $mol_list\n\tattr *\n\t\t^\n\t\tmol_card_status_type <= status \\\n\trows /$mol_view\n\t\t<= Content $mol_view\n\t\t\tsub <= content /$mol_view_content\n\t\t\t\t<= title\n\t\t<= Status $mol_view\n\t\t\tminimal_height 30\n\t\t\tsub /\n\t\t\t\t<= status_text <= status \\\n","namespace $.$$ {\n\n\t/**\n\t * Represents a common card. It can has several statuses at bottom line.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_card_demo/readme\n\t */\n\texport class $mol_card extends $.$mol_card {\n\n\t\trows(): readonly $mol_view[] {\n\t\t\treturn [\n\t\t\t\tthis.Content() ,\n\t\t\t\t... this.status_text() ? [ this.Status() ] : [],\n\t\t\t]\n\t\t}\n\n\t}\n\n}\n","namespace $ { $mol_style_attach( \"mol/card/card.view.css\",\n \"[mol_card] {\\n\\tbackground: var(--mol_theme_card);\\n\\tcolor: var(--mol_theme_text);\\n\\tborder-radius: var(--mol_gap_round);\\n\\tdisplay: flex;\\n\\tflex: 0 1 auto;\\n\\tflex-direction: column;\\n\\tposition: relative;\\n\\tbox-shadow: 0 0 0.5rem 0rem hsla(0,0%,0%,.125);\\n\\t/* overflow: hidden; */\\n}\\n\\n[mol_card_content] {\\n\\tflex: 1 1 auto;\\n\\tborder-radius: var(--mol_gap_round);\\n\\tmargin: 0;\\n\\tpadding: var(--mol_gap_block);\\n}\\n\\n[mol_card_status] {\\n\\tbackground: var(--mol_theme_line);\\n\\ttext-transform: capitalize;\\n\\tpadding: var(--mol_gap_text);\\n\\tmargin: 0;\\n}\\n\\n[mol_card_status] {\\n\\tbackground: var(--mol_theme_line);\\n}\\n\"\n) }","$optimade_cifplayer_player $mol_view\n\tdata? null\n\texternals? null\n\tfullscreen? true\n\tskip_panel? false\n\tatom_radius_scale 0.6\n\tzoom_scale_step 0.3\n\t-\n\tvibrate? null\n\tunvibrate null\n\tphonon? null\n\t-\n\ttranslate_cells /\n\t\t<= translate_a? 1\n\t\t<= translate_b? 1\n\t\t<= translate_c? 1\n\ttranslate_cells_limit 50\n\t-\n\tplugins /\n\t\t<= Theme $mol_theme_auto\n\t-\n\tauto /\n\t\t<= external_theme_auto null\n\t\t<= dir_light null\n\t\t<= ambient_light null\n\t\t^ atom_boxes /\n\t\t^ overlay_boxes /\n\t\t<= cell_box null\n\t\t<= axes_box null\n\t\t<= overlay_changed null\n\t\t<= vibration_active? false\n\t\t<= vibration_restart null\n\tatom_box* null\n\toverlay_box* null\n\t-\n\tminimal_heigth 300\n\tsub /\n\t\t<= Three $optimade_cifplayer_lib_three_view\n\t\t\tscene => scene\n\t\t\tcontrols => controls\n\t\t\tcontrols_target <= controls_target null\n\t\t\tcamera => camera\n\t\t\ton_render <= on_render null\n\t\t<= Left_panel $mol_view\n\t\t\tsub <= left_panel /\n\t\t\t\t<= Info $mol_view\n\t\t\t\t\tsub <= info_sub /\n\t\t\t\t\t\t<= Descr_a $mol_paragraph\n\t\t\t\t\t\t\ttitle <= descr_a \\a=\n\t\t\t\t\t\t<= Descr_b $mol_paragraph\n\t\t\t\t\t\t\ttitle <= descr_b \\b=\n\t\t\t\t\t\t<= Descr_c $mol_paragraph\n\t\t\t\t\t\t\ttitle <= descr_c \\c=\n\t\t\t\t\t\t<= Descr_alpha $mol_paragraph\n\t\t\t\t\t\t\ttitle <= descr_alpha \\α=\n\t\t\t\t\t\t<= Descr_beta $mol_paragraph\n\t\t\t\t\t\t\ttitle <= descr_beta \\β=\n\t\t\t\t\t\t<= Descr_gamma $mol_paragraph\n\t\t\t\t\t\t\ttitle <= descr_gamma \\γ=\n\t\t\t\t^ symlabel_visible / <= Symlabel $mol_pick\n\t\t\t\t\ttrigger_content /\n\t\t\t\t\t\t<= Sym_icon $mol_icon_eye_check\n\t\t\t\t\t\t<= symlabel \\SG\n\t\t\t\t\tbubble_content /\n\t\t\t\t\t\t<= Toogle_all $mol_button_minor\n\t\t\t\t\t\t\ttitle <= Toogle_all_title \\Enable all\n\t\t\t\t\t\t\tclick? <=> toogle_all_symmetry? null\n\t\t\t\t\t\t<= Sym_list $mol_scroll\n\t\t\t\t\t\t\tsub /\n\t\t\t\t\t\t\t\t<= Sym_checks $mol_list\n\t\t\t\t\t\t\t\t\tsub <= sym_checks /\n\t\t\t\t\t\t\t\t\t\t<= Sym_check*0 $mol_check_box\n\t\t\t\t\t\t\t\t\t\t\ttitle <= sym_name* \\\n\t\t\t\t\t\t\t\t\t\t\tchecked? <=> symmetry_visible*? false\n\t\t\t\t<= Translate_cells $mol_pick\n\t\t\t\t\ttrigger_content /\n\t\t\t\t\t\t<= translate_cell_label \\1×1×1\n\t\t\t\t\tbubble_content /\n\t\t\t\t\t\t<= Translate_label_a $mol_paragraph\n\t\t\t\t\t\t\ttitle \\a\n\t\t\t\t\t\t<= Translate_a $mol_number\n\t\t\t\t\t\t\tvalue? <=> translate_a?\n\t\t\t\t\t\t\thint \\1\n\t\t\t\t\t\t\tvalue_min 1\n\t\t\t\t\t\t\tvalue_max <= translate_limit_a 1\n\t\t\t\t\t\t<= Translate_label_b $mol_paragraph\n\t\t\t\t\t\t\ttitle \\b\n\t\t\t\t\t\t<= Translate_b $mol_number\n\t\t\t\t\t\t\tvalue? <=> translate_b?\n\t\t\t\t\t\t\thint \\1\n\t\t\t\t\t\t\tvalue_min 1\n\t\t\t\t\t\t\tvalue_max <= translate_limit_b 1\n\t\t\t\t\t\t<= Translate_label_c $mol_paragraph\n\t\t\t\t\t\t\ttitle \\c\n\t\t\t\t\t\t<= Translate_c $mol_number\n\t\t\t\t\t\t\tvalue? <=> translate_c?\n\t\t\t\t\t\t\thint \\1\n\t\t\t\t\t\t\tvalue_min 1\n\t\t\t\t\t\t\tvalue_max <= translate_limit_c 1\n\t\t\t\t<= Center $mol_check_icon\n\t\t\t\t\tchecked? <=> centered? true\n\t\t\t\t\tIcon <= Center_icon $mol_icon_image_filter_center_focus\n\t\t<= Tools $mol_view\n\t\t\tsub /\n\t\t\t\t<= Zoom_section $mol_list\n\t\t\t\t\tsub /\n\t\t\t\t\t\t<= Zoom_up $mol_button_minor\n\t\t\t\t\t\t\tclick? <=> zoom_up? null\n\t\t\t\t\t\t\tsub / <= Zoom_up_icon $mol_icon_magnify_plus_outline\n\t\t\t\t\t\t<= Zoom_down $mol_button_minor\n\t\t\t\t\t\t\tclick? <=> zoom_down? null\n\t\t\t\t\t\t\tsub / <= Zoom_down_icon $mol_icon_magnify_minus_outline\n\t\t<= Overlays $mol_view\n\t\t\tsub <= overlays_sub /\n\t\t\t\t<= Switch_overlay $mol_switch\n\t\t\t\t\tvalue? <=> overlay? \\S\n\t\t\t\t\toptions <= available_overlays *string\n\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\\display none\n\t\t\t\t\t\tS \\elements\n\t\t^ message_visible / <= Message $mol_view\n\t\t\tsub /\n\t\t\t\t<= Message_card $mol_card\n\t\t\t\t\ttheme \\$mol_theme_special\n\t\t\t\t\ttitle <= message \\\n\tcolors_light *\n\t\ta \\#990000\n\t\tb \\#009900\n\t\tc \\#0099FF\n\tcolors_dark *\n\t\ta \\#EE4B2B\n\t\tb \\#009900\n\t\tc \\#0099FF\n\tcell_lines_color \\#DDDDDD\n\taxcolor /\n\t\t<= color_a \\\n\t\t<= color_b \\\n\t\t<= color_c \\\n\tstyle *\n\t\t^\n\t\t--color_a <= color_a\n\t\t--color_b <= color_b\n\t\t--color_c <= color_c\n\tattr *\n\t\t^\n\t\tfullscreen <= fullscreen?\n","namespace $ { $mol_style_attach( \"optimade/cifplayer/player/player.view.css\",\n \"*{font-family:Exo2,Arial;}\\n\\n[mol_theme=\\\"$mol_theme_light\\\"] {\\n\\t--mol_theme_back: white;\\n}\\n\\n@font-face {\\nfont-family:Exo2;src:local('Exo 2 Regular'),local('Exo2-Regular'),url('data:font/woff;charset=utf-8;base64,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') format('woff');\\n}\\n\"\n) }","namespace $.$$ {\n\n\t$mol_style_define( $optimade_cifplayer_player, {\n\n\t\tbackground: {\n\t\t\tcolor: $mol_theme.back,\n\t\t},\n\n\t\tposition: 'relative',\n\t\theight: '100%',\n\n\t\t'@': {\n\t\t\tfullscreen: {\n\t\t\t\t'true': {\n\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\tzIndex: 9999,\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: 0,\n\t\t\t\t\tbottom: 0,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tDescr_a: {\n\t\t\tcolor: $mol_style_func.vary('--color_a')\n\t\t},\n\n\t\tDescr_b: {\n\t\t\tcolor: $mol_style_func.vary('--color_b')\n\t\t},\n\n\t\tDescr_c: {\n\t\t\tcolor: $mol_style_func.vary('--color_c')\n\t\t},\n\n\t\tTranslate_label_a: {\n\t\t\tcolor: $mol_style_func.vary('--color_a'),\n\t\t\tpadding: $mol_gap.text,\n\t\t},\n\n\t\tTranslate_label_b: {\n\t\t\tcolor: $mol_style_func.vary('--color_b'),\n\t\t\tpadding: $mol_gap.text,\n\t\t},\n\n\t\tTranslate_label_c: {\n\t\t\tcolor: $mol_style_func.vary('--color_c'),\n\t\t\tpadding: $mol_gap.text,\n\t\t},\n\n\t\tTranslate_cells: {\n\t\t\tpointerEvents: 'auto',\n\t\t\tBubble: {\n\t\t\t\tdisplay: 'grid',\n\t\t\t\tgridTemplateColumns: 'auto auto',\n\t\t\t},\n\t\t},\n\n\t\tLeft_panel: {\n\t\t\tuserSelect: 'none',\n\t\t\tpointerEvents: 'none',\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: 1,\n\t\t\tfontSize: '13px',\n\t\t\tflex: {\n\t\t\t\tdirection: 'column',\n\t\t\t},\n\t\t\talign: {\n\t\t\t\titems: 'flex-start',\n\t\t\t},\n\t\t},\n\n\t\tInfo: {\n\t\t\tpadding: $mol_gap.block,\n\t\t\tgap: $mol_gap.space,\n\t\t\tflex: {\n\t\t\t\tdirection: 'column',\n\t\t\t},\n\t\t},\n\n\t\tSymlabel: {\n\t\t\tpointerEvents: 'auto',\n\t\t},\n\n\t\tCenter: {\n\t\t\tpointerEvents: 'auto',\n\t\t},\n\n\t\tToogle_all: {\n\t\t\tboxShadow: `0 0.5rem 0.5rem -0.5rem hsla(0,0%,0%,.5)`,\n\t\t},\n\n\t\tOverlays: {\n\t\t\tposition: 'absolute',\n\t\t\tbottom: 0,\n\t\t\twidth: '100%',\n\t\t\talign: {\n\t\t\t\titems: 'center',\n\t\t\t},\n\t\t\tzIndex: 1,\n\t\t},\n\n\t\tSwitch_overlay: {\n\t\t\tjustify: {\n\t\t\t\tcontent: 'center'\n\t\t\t},\n\t\t},\n\n\t\tTools: {\n\t\t\tposition: 'absolute',\n\t\t\tright: 0,\n\t\t\tzIndex: 1,\n\t\t\tflex: {\n\t\t\t\tdirection: 'column',\n\t\t\t},\n\t\t\talign: {\n\t\t\t\titems: 'flex-end',\n\t\t\t},\n\t\t},\n\n\t\tZoom_section: {\n\t\t\tpadding: {\n\t\t\t\ttop: '2rem',\n\t\t\t\tbottom: '1rem',\n\t\t\t},\n\t\t},\n\n\t\tZoom_up_icon: {\n\t\t\twidth: '2rem',\n\t\t\theight: '2rem',\n\t\t},\n\n\t\tZoom_down_icon: {\n\t\t\twidth: '2rem',\n\t\t\theight: '2rem',\n\t\t},\n\n\t\tMessage: {\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: 1,\n\t\t\ttop: '6rem',\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t},\n\n\t\tMessage_card: {\n\t\t\tbackground: {\n\t\t\t\tcolor: $mol_theme.back,\n\t\t\t},\n\t\t\tmargin: 'auto',\n\t\t},\n\n\t\tThree: {\n\t\t\tcursor: 'move',\n\t\t},\n\n\t} )\n\n}\n","$mol_float $mol_view\n\tstyle *\n\t\t^\n\t\tminHeight \\auto\n","namespace $ { $mol_style_attach( \"mol/float/float.view.css\",\n \"[mol_float] {\\n\\tposition: sticky;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tz-index: var(--mol_layer_float);\\n\\topacity: 1;\\n\\ttransition: opacity .25s ease-in;\\n\\tdisplay: block;\\n\\tbackground: linear-gradient( var(--mol_theme_card), var(--mol_theme_card) ), var(--mol_theme_back);\\n\\tbox-shadow: 0 0 .5rem hsla(0,0%,0%,.25);\\n}\\n\\n\"\n) }","$mol_icon_chevron $mol_icon path \\M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\n","$mol_check_expand $mol_check\n\tIcon $mol_icon_chevron\n\tlevel 0\n\tstyle *\n\t\t^\n\t\tpaddingLeft <= level_style \\0px\n\tchecked? <=> expanded? false\n\tenabled <= expandable false\n","namespace $.$$ {\n\t\n\t/**\n\t * Expander for trees, lists, etc\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_check_expand_demo\n\t */\n\texport class $mol_check_expand extends $.$mol_check_expand {\n\t\t\n\t\tlevel_style() {\n\t\t\treturn `${ this.level() * 1 - 1 }rem`\n\t\t}\n\t\t\n\t\texpandable() {\n\t\t\treturn this.expanded() !== null\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { $mol_style_attach( \"mol/check/expand/expand.view.css\",\n \"[mol_check_expand] {\\n\\tmin-width: 20px;\\n}\\n\\n:where([mol_check_expand][disabled]) [mol_check_expand_icon] {\\n\\tvisibility: hidden;\\n}\\n\\n[mol_check_expand_icon] {\\n\\tbox-shadow: none;\\n\\tmargin-left: -0.375rem;\\n}\\n[mol_check_expand_icon] {\\n\\ttransform: rotateZ(0deg);\\n}\\n\\n:where([mol_check_checked]) [mol_check_expand_icon] {\\n\\ttransform: rotateZ(90deg);\\n}\\n\\n[mol_check_expand_icon] {\\n\\tvertical-align: text-top;\\n}\\n\\n[mol_check_expand_label] {\\n\\tmargin-left: 0;\\n}\\n\"\n) }","$mol_grid $mol_view\n\trow_height 32\n\trow_ids /string[]\n\trow_id* null\n\tcol_ids /\n\trecords *\n\trecord* null\n\thierarchy null\n\thierarchy_col \\\n\tminimal_width 0\n\t-\n\tsub /\n\t\t<= Head\n\t\t<= Table $mol_grid_table\n\t\t\tsub <= rows /$mol_view\n\tHead $mol_grid_row\n\t\tcells <= head_cells /$mol_view\n\tRow* $mol_grid_row\n\t\tminimal_height <= row_height\n\t\tminimal_width <= minimal_width\n\t\tcells <= cells* /$mol_view\n\t-\n\tCell* $mol_view\n\tcell* null\n\tCell_text* $mol_grid_cell\n\t\tsub <= cell_content_text* <= cell_content* /$mol_view_content\n\tCell_number* $mol_grid_number\n\t\tsub <= cell_content_number* <= cell_content* /$mol_view_content\n\tCol_head* $mol_float\n\t\tdom_name \\th\n\t\tsub <= col_head_content* /$mol_view_content\n\tCell_branch* $mol_check_expand\n\t\tlevel <= cell_level* 0\n\t\tlabel <= cell_content* /$mol_view_content\n\t\texpanded? <=> cell_expanded*? false\n\tCell_content* /\n\t\t<= Cell_dimmer* $mol_dimmer\n\t\t\tneedle <= needle \\\n\t\t\thaystack <= cell_value* \\\n\n$mol_grid_table $mol_list\n\t- dom_name \\table\n\n$mol_grid_row $mol_view\n\t- dom_name \\tr\n\tsub <= cells /$mol_view\n\n$mol_grid_cell $mol_view\n\t- dom_name \\td\n\tminimal_height 40\n\n$mol_grid_number $mol_grid_cell\n","namespace $.$$ {\n\t\n\texport interface $mol_grid_node {\n\t\tid : string\n\t\tparent : $mol_grid_node\n\t\tsub : $mol_grid_node[]\n\t}\n\t\n\texport class $mol_grid extends $.$mol_grid {\n\t\t\n\t\t@ $mol_mem\n\t\thead_cells() {\n\t\t\treturn this.col_ids().map( colId => this.Col_head( colId ) ) as readonly $mol_view[]\n\t\t}\n\t\t\n\t\tcol_head_content( colId : string ) {\n\t\t\treturn [ colId ] as readonly string[]\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trows() {\n\t\t\treturn this.row_ids().map( id => this.Row( id ) ) as readonly $mol_view[]\n\t\t}\n\t\t\n\t\tcells( row_id : string[] ) {\n\t\t\treturn this.col_ids().map( col_id => this.Cell({ row : row_id , col : col_id }) ) as readonly $mol_view[]\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tcol_type( col_id : string ) {\n\t\t\tif( col_id === this.hierarchy_col() ) return 'branch'\n\t\t\t\n\t\t\tconst rowFirst = this.row_id( 0 )\n\t\t\tconst val = this.record( rowFirst[ rowFirst.length -1 ] )[ col_id ]\n\t\t\tif( typeof val === 'number' ) return 'number'\n\t\t\t\n\t\t\treturn 'text'\n\t\t}\n\t\t\n\t\tCell( id : { row : string[] , col : string } ) : $mol_view {\n\t\t\tswitch( this.col_type( id.col ).valueOf() ) {\n\t\t\t\tcase 'branch' : return this.Cell_branch( id )\n\t\t\t\tcase 'number' : return this.Cell_number( id )\n\t\t\t}\n\t\t\t\n\t\t\treturn this.Cell_text( id )\n\t\t}\n\t\t\n\t\tcell_content( id : { row : string[] , col : string } ) {\n\t\t\treturn [ this.record( id.row[ id.row.length - 1 ] )[ id.col ] ]\n\t\t}\n\t\t\n\t\tcell_content_text( id : { row : string[] , col : string } ) {\n\t\t\treturn this.cell_content( id ).map( val => typeof val === 'object' ? JSON.stringify( val ) : val )\n\t\t}\n\t\t\n\t\trecords() : any {\n\t\t\treturn []\n\t\t}\n\t\t\n\t\trecord( id : string ) {\n\t\t\treturn this.records()[ id ]\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trecord_ids() {\n\t\t\treturn Object.keys( this.records() )\n\t\t}\n\t\t\n\t\trow_id( index : number ) {\n\t\t\treturn ( this.row_ids().slice( index , index + 1 ).valueOf() as string[] )[0]\n\t\t}\n\n\t\tcol_ids() {\n\t\t\tconst rowFirst = this.row_id(0)\n\t\t\tif( rowFirst === void 0 ) return []\n\t\t\t\n\t\t\tconst record = this.record( rowFirst[ rowFirst.length - 1 ] )\n\t\t\tif( !record ) return []\n\t\t\t\n\t\t\treturn Object.keys( record ) as readonly string[]\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\thierarchy() {\n\t\t\tconst hierarchy : { [ id : string ] : $mol_grid_node } = {}\n\t\t\tconst root = hierarchy[ '' ] = {\n\t\t\t\tid : '' ,\n\t\t\t\tparent : null as any as $mol_grid_node ,\n\t\t\t\tsub : [] as $mol_grid_node[] ,\n\t\t\t}\n\t\t\tthis.record_ids().map( id => {\n\t\t\t\troot.sub.push( hierarchy[ id ] = {\n\t\t\t\t\tid ,\n\t\t\t\t\tparent : root ,\n\t\t\t\t\tsub : [] ,\n\t\t\t\t} )\n\t\t\t} )\n\t\t\treturn hierarchy\n\t\t}\n\t\t\n\t\trow_sub_ids( row : string[] ) : string[][] {\n\t\t\treturn this.hierarchy()[ row[ row.length - 1 ] ].sub.map( child => row.concat( child.id ) )\n\t\t}\n\t\t\n\t\trow_root_id() : string[] {\n\t\t\treturn [ '' ]\n\t\t}\n\t\t\n\t\tcell_level( id : { row : string[] } ) {\n\t\t\treturn id.row.length - 1\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trow_ids() {\n\t\t\tconst next : string[][] = []\n\t\t\t\n\t\t\tconst add = ( row : string[] )=> {\n\t\t\t\tnext.push( row )\n\t\t\t\tif( this.row_expanded( row ) ) {\n\t\t\t\t\tthis.row_sub_ids( row ).forEach( child => add( child ) )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis.row_sub_ids( this.row_root_id() ).forEach( child => add( child ) )\n\t\t\t\n\t\t\treturn next as readonly string[][]\n\t\t}\n\t\t\n\t\trow_expanded( row_id : string[] , next? : boolean ) {\n\t\t\tif( !this.row_sub_ids( row_id ).length ) return null\n\t\t\t\n\t\t\tconst key = `row_expanded(${ JSON.stringify( row_id ) })`\n\t\t\tconst next2 = $mol_state_session.value( key , next )\n\t\t\t\n\t\t\treturn ( next2 == null ) ? this.row_expanded_default( row_id ) : next2\n\t\t}\n\t\t\n\t\trow_expanded_default( row_id : string[] ) {\n\t\t\treturn true\n\t\t}\n\t\t\n\t\tcell_expanded( id : { row : string[] } , next? : boolean ) {\n\t\t\treturn this.row_expanded( id.row , next )!\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { $mol_style_attach( \"mol/grid/grid.view.css\",\n \"[mol_grid] {\\n\\tdisplay: block;\\n\\tflex: 0 1 auto;\\n\\tposition: relative;\\n\\toverflow-x: auto;\\n}\\n\\n[mol_grid_gap] {\\n\\tposition: absolute;\\n\\tpadding: .1px;\\n\\ttop: 0;\\n\\ttransform: translateZ(0);\\n}\\n\\n[mol_grid_table] {\\n\\tborder-spacing: 0;\\n\\tdisplay: table-row-group;\\n\\tposition: relative;\\n}\\n\\n[mol_grid_table] > * {\\n\\tdisplay: table-row;\\n\\ttransition: none;\\n}\\n\\n[mol_grid_head] > *,\\n[mol_grid_table] > * > * {\\n\\tdisplay: table-cell;\\n\\tpadding: var(--mol_gap_text);\\n\\twhite-space: nowrap;\\n\\tvertical-align: middle;\\n\\tbox-shadow: inset 2px 2px 0 -1px var(--mol_theme_line);\\n}\\n\\n[mol_grid_row]:where(:first-child) > * {\\n\\tbox-shadow: inset 2px 0 0 -1px var(--mol_theme_line);\\n}\\n\\n[mol_grid_table] > * > *:where(:first-child) {\\n\\tbox-shadow: inset 0px 2px 0 -1px var(--mol_theme_line);\\n}\\n\\n[mol_grid_head] > * {\\n\\tbox-shadow: inset 2px -2px 0 -1px var(--mol_theme_line);\\n}\\n\\n[mol_grid_head] > *:where(:first-child) {\\n\\tbox-shadow: inset 0px -2px 0 -1px var(--mol_theme_line);\\n}\\n\\n[mol_grid_table] > [mol_grid_row]:where(:first-child) > *:where(:first-child) {\\n\\tbox-shadow: none;\\n}\\t\\n\\n[mol_grid_head] {\\n\\tdisplay: table-row;\\n\\ttransform: none !important;\\n}\\n\\n/* [mol_grid_cell_number] {\\n\\ttext-align: right;\\n} */\\n\\n[mol_grid_col_head] {\\n\\tfont-weight: inherit;\\n\\ttext-align: inherit;\\n\\tdisplay: table-cell;\\n\\tcolor: var(--mol_theme_shade);\\n}\\n\\n[mol_grid_cell_dimmer] {\\n\\tdisplay: inline-block;\\n\\tvertical-align: inherit;\\n}\\n\"\n) }","$mol_embed_native $mol_scroll\n\turi? \\\n\tdom_name \\object\n\twindow null\n\tattr *\n\t\t^\n\t\tdata <= uri\n\t\ttype <= mime \\\n\tsub /\n\t\t<= Fallback $mol_link\n\t\t\turi <= uri\n\t\t\tsub /\n\t\t\t\t<= title \\\n\tmessage *\n\t\thashchange? <=> uri_change? null\n","namespace $ {\n\n\texport function $mol_promise< Result = void >() {\n\t\t\n\t\tlet done!: ( res: Result | PromiseLike< Result > )=> void\n\t\tlet fail!: ( error?: any ) => void\n\t\t\n\t\tconst promise = new Promise< Result >( ( d, f ) => {\n\t\t\tdone = d\n\t\t\tfail = f\n\t\t} )\n\t\t\n\t\treturn Object.assign( promise, {\n\t\t\tdone,\n\t\t\tfail,\n\t\t} )\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_wait_timeout_async( this: $, timeout: number ): Promise< void > {\n\t\tconst promise = $mol_promise()\n\t\tconst task = new this.$mol_after_timeout( timeout , ()=> promise.done() )\n\t\treturn Object.assign( promise, {\n\t\t\tdestructor: ()=> task.destructor()\n\t\t} )\n\t}\n\t\n\texport function $mol_wait_timeout( this: $, timeout: number ) {\n\t\treturn this.$mol_wire_sync( this ).$mol_wait_timeout_async( timeout )\n\t}\n\t\n}\n","namespace $.$$ {\n\texport class $mol_embed_native extends $.$mol_embed_native {\n\n\t\t@ $mol_mem\n\t\twindow() {\n\t\t\t$mol_wire_solid()\n\t\t\treturn $mol_wire_sync( this as $mol_embed_native ).load( this.dom_node_actual() as HTMLIFrameElement )\n\t\t}\n\t\t\n\t\tload( frame: HTMLIFrameElement ) {\n\t\t\treturn new Promise< Window >( ( done, fail )=> {\n\t\t\t\t\n\t\t\t\tframe.onload = () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif( frame.contentWindow!.location.href === 'about:blank' ) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch { }\n\t\t\t\t\tdone( frame.contentWindow! )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tframe.onerror = ( event : Event | string ) => {\n\t\t\t\t\tfail( typeof event === 'string' ? new Error( event ) : ( event as ErrorEvent ).error || event )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\turi_resource() {\n\t\t\treturn this.uri().replace( /#.*/, '' )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tmessage_listener() {\n\t\t\treturn new $mol_dom_listener(\n\t\t\t\t$mol_dom_context,\n\t\t\t\t'message',\n\t\t\t\t$mol_wire_async( this ).message_receive\n\t\t\t)\n\t\t}\n\t\t\n\t\tmessage_receive( event?: MessageEvent<[ string, string ]> ) {\n\t\t\t\n\t\t\tif( !event ) return\n\t\t\tif( event.source !== this.window() ) return\n\t\t\tif( !Array.isArray( event.data ) ) return\n\t\t\t\n\t\t\t(this.message() as any)[ event.data[0] ]?.( event )\n\t\t}\n\n\t\turi_change( event: MessageEvent<[ string, string ]> ) {\n\t\t\tthis.$.$mol_wait_timeout( 1000 )\n\t\t\tthis.uri( event.data[1] )\n\t\t}\n\n\t\tauto() {\n\t\t\treturn [\n\t\t\t\tthis.message_listener(),\n\t\t\t\tthis.window(),\n\t\t\t]\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/embed/native/native.view.css\",\n \"[mol_embed_native] {\\n\\tmax-width: 100%;\\n\\tmax-height: 100vh;\\n\\tobject-fit: cover;\\n\\tdisplay: flex;\\n\\tflex: 1 1 auto;\\n\\tobject-position: top left;\\n\\tborder-radius: var(--mol_gap_round);\\n\\taspect-ratio: 4/3;\\n}\\n\"\n) }","$mol_icon_youtube $mol_icon path \\M10,15L15.19,12L10,9V15M21.56,7.17C21.69,7.64 21.78,8.27 21.84,9.07C21.91,9.87 21.94,10.56 21.94,11.16L22,12C22,14.19 21.84,15.8 21.56,16.83C21.31,17.73 20.73,18.31 19.83,18.56C19.36,18.69 18.5,18.78 17.18,18.84C15.88,18.91 14.69,18.94 13.59,18.94L12,19C7.81,19 5.2,18.84 4.17,18.56C3.27,18.31 2.69,17.73 2.44,16.83C2.31,16.36 2.22,15.73 2.16,14.93C2.09,14.13 2.06,13.44 2.06,12.84L2,12C2,9.81 2.16,8.2 2.44,7.17C2.69,6.27 3.27,5.69 4.17,5.44C4.64,5.31 5.5,5.22 6.82,5.16C8.12,5.09 9.31,5.06 10.41,5.06L12,5C16.19,5 18.8,5.16 19.83,5.44C20.73,5.69 21.31,6.27 21.56,7.17Z\n","$mol_frame $mol_embed_native\n\tdom_name \\iframe\n\tattr *\n\t\t^\n\t\tdata null\n\t\ttype null\n\t\tallow <= allow \\\n\t\tsrc <= uri? \\about:config\n\t\tsrcdoc <= html null\n\tfullscreen true\n\taccelerometer true\n\tautoplay true\n\tencription true\n\tgyroscope true\n\tpip true\n\tclipboard_read true\n\tclipboard_write true\n","namespace $.$$ {\n\n\t/**\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_frame_demo\n\t */\n\texport class $mol_frame extends $.$mol_frame {\n\t\t\n\t\twindow() {\n\t\t\t// if( this.html() ) return ( this.dom_node() as HTMLIFrameElement ).contentWindow!\n\t\t\treturn super.window()\n\t\t}\n\n\t\tallow() {\n\t\t\treturn [\n\t\t\t\t... this.fullscreen() ? [ 'fullscreen' ] : [] ,\n\t\t\t\t... this.accelerometer() ? [ 'accelerometer' ] : [] ,\n\t\t\t\t... this.autoplay() ? [ 'autoplay' ] : [] ,\n\t\t\t\t... this.encription() ? [ 'encrypted-media' ] : [] ,\n\t\t\t\t... this.gyroscope() ? [ 'gyroscope' ] : [] ,\n\t\t\t\t... this.pip() ? [ 'picture-in-picture' ] : [] ,\n\t\t\t\t... this.clipboard_read() ? [ `clipboard-read ${ this.uri() }` ] : [],\n\t\t\t\t... this.clipboard_write() ? [ `clipboard-write ${ this.uri() }` ] : [],\n\t\t\t].join('; ')\n\t\t}\n\t\t\n\t}\n}\n","namespace $ {\n\t$mol_style_define( $mol_frame , {\n\t\tborder: {\n\t\t\tstyle: 'none',\n\t\t},\n\t\tmaxHeight: $mol_style_unit.vh(100),\n\t} )\n}\n","$mol_embed_service $mol_check\n\turi \\\n\tvideo_preview \\\n\tvideo_id \\\n\tchecked? <=> active? false\n\tsub /\n\t\t<= Image $mol_image\n\t\t\ttitle <= title \\\n\t\t\turi <= video_preview \\\n\t\t<= Hint $mol_icon_youtube\n\t\t<= Frame $mol_frame\n\t\t\ttitle <= title \\\n\t\t\turi <= video_embed \\\n\n","namespace $.$$ {\n\texport class $mol_embed_service extends $.$mol_embed_service {\n\t\t\n\t\t@ $mol_mem\n\t\tsub() {\n\t\t\treturn this.active()\n\t\t\t\t? [ this.Frame() ]\n\t\t\t\t: [ this.Image(), this.Hint() ]\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/embed/service/service.view.css\",\n \"[mol_embed_service] {\\n\\tpadding: 0;\\n\\tmax-width: 100%;\\n}\\n\\n[mol_embed_service_image] {\\n\\tflex: auto 1 1;\\n\\twidth: 100vw;\\n}\\n\\n[mol_embed_service_frame] {\\n\\twidth: 100vw;\\n}\\n\\n[mol_embed_service_hint] {\\n\\tposition: absolute;\\n left: 50%;\\n top: 50%;\\n width: 50%;\\n height: 50%;\\n opacity: 0.3;\\n transform: translate(-50%, -50%);\\n}\\n\\n[mol_embed_service]:hover [mol_embed_service_hint] {\\n\\topacity: .6;\\n}\\n\"\n) }","$mol_embed_youtube $mol_embed_service\n","namespace $.$$ {\n\texport class $mol_embed_youtube extends $.$mol_embed_youtube {\n\t\t\n\t\t@ $mol_mem\n\t\tvideo_embed() {\n\t\t\treturn `https://www.youtube.com/embed/${ encodeURIComponent( this.video_id() ) }?autoplay=1&loop=1`\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tvideo_id() {\n\t\t\treturn this.uri().match( /^https\\:\\/\\/www\\.youtube\\.com\\/(?:embed\\/|shorts\\/|watch\\?v=)([^\\/&?#]+)/ )?.[1]\n\t\t\t\t?? this.uri().match( /^https\\:\\/\\/youtu\\.be\\/([^\\/&?#]+)/ )?.[1]\n\t\t\t\t?? 'about:blank'\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tvideo_preview() {\n\t\t\treturn `https://i.ytimg.com/vi/${ this.video_id() }/sddefault.jpg`\n\t\t}\n\t\t\n\t}\n}\n","$mol_embed_rutube $mol_embed_service\n","namespace $.$$ {\n\texport class $mol_embed_rutube extends $.$mol_embed_rutube {\n\t\t\n\t\t@ $mol_mem\n\t\tvideo_embed() {\n\t\t\treturn `https://rutube.ru/play/embed/${ encodeURIComponent( this.video_id() ) }`\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tvideo_id() {\n\t\t\treturn this.uri().match( /^https:\\/\\/rutube.ru\\/video\\/([^\\/&?#]+)/ )?.[1] ?? 'about:blank'\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tvideo_preview() {\n\t\t\treturn `https://rutube.ru/api/video/${ this.video_id() }/thumbnail/?redirect=1`\n\t\t}\n\t\t\n\t}\n}\n","$mol_embed_any $mol_view\n\tImage $mol_image\n\t\ttitle <= title \\\n\t\turi <= uri \\\n\tObject $mol_embed_native\n\t\ttitle <= title \\\n\t\turi <= uri \\\n\tYoutube $mol_embed_youtube\n\t\ttitle <= title \\\n\t\turi <= uri \\\n\tRutube $mol_embed_rutube\n\t\ttitle <= title \\\n\t\turi <= uri \\\n","namespace $.$$ {\n\t\n\texport class $mol_embed_any extends $.$mol_embed_any {\n\t\t\n\t\t@ $mol_mem\n\t\ttype() {\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tconst uri = this.uri()\n\t\t\t\t\n\t\t\t\tif( /\\b(png|gif|jpg|jpeg|jfif|webp|svg)\\b/.test( uri ) ) return 'image'\n\t\t\t\tif( /^https:\\/\\/www\\.youtube\\.com\\//.test( uri ) ) return 'youtube'\n\t\t\t\tif( /^https:\\/\\/youtu\\.be\\//.test( uri ) ) return 'youtube'\n\t\t\t\tif( /^https:\\/\\/rutube\\.ru\\//.test( uri ) ) return 'rutube'\n\t\t\t\t\n\t\t\t} catch( error ) {\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\treturn 'image'\n\t\t\t}\n\t\t\t\n\t\t\treturn 'object'\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tsub() {\n\t\t\tswitch( this.type() ) {\n\t\t\t\tcase 'image': return [ this.Image() ]\n\t\t\t\tcase 'youtube': return [ this.Youtube() ]\n\t\t\t\tcase 'rutube': return [ this.Rutube() ]\n\t\t\t\tdefault: return [ this.Object() ]\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n}\n","$mol_expander $mol_list\n\trows /\n\t\t<= Label $mol_view\n\t\t\tsub /\n\t\t\t\t<= Trigger $mol_check_expand\n\t\t\t\t\tchecked? <=> expanded? false\n\t\t\t\t\texpandable <= expandable true\n\t\t\t\t\tlabel <= label /\n\t\t\t\t\t\t<= title\n\t\t\t\t<= Tools null\n\t\t<= Content $mol_list\n\t\t\trows <= content /\n","namespace $.$$ {\n\t/**\n\t * Component which expands any content on title click.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_expander_demo\n\t */\n\texport class $mol_expander extends $.$mol_expander {\n\t\t\n\t\t@ $mol_mem\n\t\trows() {\n\t\t\treturn [\n\t\t\t\tthis.Label(),\n\t\t\t\t... this.expanded() ? [ this.Content() ] : []\n\t\t\t]\n\t\t}\n\t\t\n\t\texpandable() {\n\t\t\treturn this.content().length > 0\n\t\t}\n\t\t\n\t}\n}\n\n","namespace $ { $mol_style_attach( \"mol/expander/expander.view.css\",\n \"[mol_expander] {\\n\\tflex-direction: column;\\n}\\n\\n[mol_expander_label] {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tborder-radius: var(--mol_gap_round);\\n}\\n\\n[mol_expander_trigger] {\\n\\tflex: auto;\\n\\tposition: relative;\\n}\\n\"\n) }","$mol_text $mol_list\n\turi_base \\\n\ttext \\\n\tparam \\\n\tflow_tokens /\n\tblock_text* \\\n\tauto /\n\t\t<= auto_scroll null\n\t- \\Blocks\n\tParagraph* $mol_paragraph\n\t\tsub <= block_content* /\n\tQuote* $mol_text\n\t\turi_resolve* <= uri_resolve* \\\n\t\ttext <= quote_text* \\\n\t\thighlight <= highlight \\\n\t\tauto_scroll null\n\tList* $mol_text_list\n\t\turi_resolve* <= uri_resolve* \\\n\t\ttype <= list_type* \\-\n\t\ttext <= list_text* \\\n\t\thighlight <= highlight \\\n\titem_index* 0\n\tHeader* $mol_text_header\n\t\tminimal_height 40\n\t\tlevel <= header_level* 1\n\t\tcontent <= block_content* /\n\t\targ <= header_arg* *\n\tPre* $mol_text_code\n\t\ttext <= pre_text* \\\n\t\thighlight <= highlight \\\n\t\turi_resolve* <= uri_resolve* \\\n\t\tsidebar_showed <= pre_sidebar_showed <= code_sidebar_showed true\n\tCut* $mol_view dom_name \\hr\n\t- \\Table\n\tTable* $mol_grid\n\t\thead_cells <= table_head_cells* /\n\t\trows <= table_rows* /\n\tTable_row* $mol_grid_row\n\t\tcells <= table_cells* /\n\tTable_cell* $mol_text\n\t\tauto_scroll null\n\t\thighlight <= highlight \\\n\t\turi_resolve* <= uri_resolve* \\\n\t\ttext <= table_cell_text* \\\n\t- \\Grid\n\tGrid* $mol_grid\n\t\trows <= grid_rows* /\n\tGrid_row* $mol_grid_row\n\t\tcells <= grid_cells* /\n\tGrid_cell* $mol_text\n\t\tauto_scroll null\n\t\thighlight <= highlight \\\n\t\turi_resolve* <= uri_resolve* \\\n\t\ttext <= grid_cell_text* \\\n\t- \\Lines\n\tString* $mol_dimmer\n\t\tdom_name \\span\n\t\tneedle <= highlight \\\n\t\thaystack <= line_text* \\\n\tSpan* $mol_text_span\n\t\tdom_name \\span\n\t\ttype <= line_type* \\\n\t\tsub <= line_content* /\n\tCode_line* $mol_text_code_line\n\t\tnumb_showed false\n\t\thighlight <= highlight \\\n\t\ttext <= line_text* \\\n\t\turi_resolve* <= uri_resolve* \\\n\t\tsyntax <= code_syntax null\n\tLink* $mol_link_iconed\n\t\turi <= link_uri* \\\n\t\tcontent <= line_content* /\n\tLink_http* $mol_link_iconed\n\t\turi <= link_uri* \\\n\t\tcontent / <= link_host* \\\n\tEmbed* $mol_embed_any\n\t\turi <= link_uri* \\\n\t\ttitle <= line_text* \\\n\t- \\Spoilers\n\tSpoiler* $mol_expander\n\t\tlabel /\n\t\t\t<= Spoiler_label* $mol_text\n\t\t\t\ttext <= spoiler_label* \\\n\t\tcontent /\n\t\t\t<= Spoiler_content* $mol_text\n\t\t\t\ttext <= spoiler_content* \\\n\n$mol_text_header $mol_paragraph\n\tlevel 1\n\tsub /\n\t\t<= Link $mol_link\n\t\t\targ <= arg *\n\t\t\thint @ \\Permalink to this section\n\t\t\tsub <= content /\n\n$mol_text_span $mol_paragraph\n\tdom_name \\span\n\tattr *\n\t\t^\n\t\tmol_text_type <= type \\\n","namespace $.$$ {\n\t/**\n\t * Markdown visualizer.\n\t * @see https://mol.hyoo.ru/#!section=demos/demo=mol_text_demo\n\t */\n\texport class $mol_text extends $.$mol_text {\n\t\t\n\t\t@ $mol_mem\n\t\tflow_tokens() {\n\t\t\tconst tokens = [] as { name : string , found : string , chunks: string[] }[]\n\t\t\tthis.$.$mol_syntax2_md_flow.tokenize(\n\t\t\t\tthis.text(),\n\t\t\t\t( name , found , chunks )=> tokens.push({ name , found , chunks }),\n\t\t\t)\n\t\t\treturn tokens as Readonly< typeof tokens >\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tblock_type( index: number ) {\n\t\t\treturn this.flow_tokens()[ index ].name\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trows() {\n\t\t\treturn this.flow_tokens().map( ( { name }, index )=> {\n\t\t\t\t\n\t\t\t\tswitch( name ) {\n\t\t\t\t\tcase 'quote': return this.Quote( index )\n\t\t\t\t\tcase 'spoiler': return this.Spoiler( index )\n\t\t\t\t\tcase 'header': return this.Header( index )\n\t\t\t\t\tcase 'list': return this.List( index )\n\t\t\t\t\tcase 'code': return this.Pre( index )\n\t\t\t\t\tcase 'code-indent': return this.Pre( index )\n\t\t\t\t\tcase 'table': return this.Table( index )\n\t\t\t\t\tcase 'grid': return this.Grid( index )\n\t\t\t\t\tcase 'cut': return this.Cut( index )\n\t\t\t\t\tdefault: return this.Paragraph( index )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tparam() {\n\t\t\treturn this.toString().replace( /^.*?[\\)>]\\./, '' ).replace( /[(<>)]/g, '' )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\theader_level( index: number ) {\n\t\t\treturn this.flow_tokens()[ index ].chunks[0].length\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\theader_arg( index: number ) {\n\t\t\treturn {\n\t\t\t\t[ this.param() ]: this.block_text( index )\n\t\t\t}\n\t\t}\n\t\t\n\t\tlist_type( index: number ) {\n\t\t\treturn this.flow_tokens()[ index ].chunks[1] ?? ''\n\t\t}\n\t\t\n\t\titem_index( index: number ) {\n\t\t\treturn this.flow_tokens().slice( 0, index ).filter( token => token.name === 'block' ).length + 1\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tpre_text( index : number ) {\n\t\t\tconst token = this.flow_tokens()[ index ]\n\t\t\treturn ( token.chunks[2] ?? token.chunks[0].replace( /^(\\t| (?:\\+\\+|--|\\*\\*| ) )/gm , '' ) ).replace( /[\\n\\r]*$/ , '' )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tquote_text( index : number ) {\n\t\t\treturn this.flow_tokens()[ index ].chunks[0].replace( /^[>\"] /mg , '' )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tlist_text( index : number ) {\n\t\t\treturn this.flow_tokens()[ index ].chunks[0].replace( /^([-*+]|(?:\\d+[\\.\\)])+) ?/mg , '' ).replace( /^ ?/mg, '' )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tcell_content( indexBlock : number ) {\n\t\t\treturn this.flow_tokens()[ indexBlock ].chunks[ 0 ]\n\t\t\t.split( /\\r?\\n/g )\n\t\t\t.filter( row => row && !/\\|--/.test( row ) )\n\t\t\t.map( ( row , rowId ) => {\n\t\t\t\treturn row.split( /\\|/g )\n\t\t\t\t.filter( cell => cell )\n\t\t\t\t.map( ( cell , cellId )=> cell.trim() )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttable_rows( blockId : number ) {\n\t\t\treturn this.cell_content( blockId )\n\t\t\t.slice( 1 )\n\t\t\t.map( ( row , rowId )=> this.Table_row({ block : blockId , row : rowId + 1 }) )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttable_head_cells( blockId : number ) {\n\t\t\treturn this.cell_content( blockId )[ 0 ]\n\t\t\t.map( ( cell , cellId )=> this.Table_cell({ block : blockId , row : 0 , cell : cellId }) )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttable_cells( id : { block : number , row : number } ) {\n\t\t\treturn this.cell_content( id.block )[ id.row ]\n\t\t\t.map( ( cell , cellId )=> this.Table_cell({ block : id.block , row : id.row , cell : cellId }) )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttable_cell_text( id : { block : number , row : number , cell : number } ) {\n\t\t\treturn this.cell_content( id.block )[ id.row ][ id.cell ]\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tgrid_content( indexBlock: number ) {\n\t\t\treturn [ ... this.flow_tokens()[ indexBlock ].chunks[ 0 ].match( /(?:^! .*?$\\r?\\n?)+(?:^ +! .*?$\\r?\\n?)*/gm )! ]\n\t\t\t.map( ( row , rowId ) => {\n\t\t\t\tconst cells = [] as string[]\n\t\t\t\tfor( const line of row.trim().split( /\\r?\\n/ ) ) {\n\t\t\t\t\tconst [ _, indent, content ] = /^( *)! (.*)/.exec( line )!\n\t\t\t\t\tconst col = Math.ceil( indent.length / 2 )\n\t\t\t\t\tcells[ col ] = ( cells[ col ] ? cells[ col ] + '\\n' : '' ) + content\n\t\t\t\t}\n\t\t\t\treturn cells\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tgrid_rows( blockId: number ) {\n\t\t\treturn this.grid_content( blockId )\n\t\t\t.map( ( row, rowId )=> this.Grid_row({ block: blockId , row: rowId }) )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tgrid_cells( id: { block: number, row: number } ) {\n\t\t\treturn this.grid_content( id.block )[ id.row ]\n\t\t\t.map( ( cell , cellId )=> this.Grid_cell({ block: id.block, row: id.row, cell: cellId }) )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tgrid_cell_text( id: { block: number, row: number, cell: number } ) {\n\t\t\treturn this.grid_content( id.block )[ id.row ][ id.cell ]\n\t\t}\n\t\t\n\t\turi_base() {\n\t\t\treturn $mol_dom_context.document.location.href\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\turi_base_abs() {\n\t\t\treturn new URL( this.uri_base() , $mol_dom_context.document.location.href )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\turi_resolve( uri: string ) {\n\t\t\t\n\t\t\tif( /^(\\w+script+:)+/.test( uri ) ) return null as any as string\n\t\t\t\n\t\t\tif( /^#\\!/.test( uri ) ) {\n\t\t\t\t\n\t\t\t\tconst params: Record< string, string > = {}\n\t\t\t\n\t\t\t\tfor( const chunk of uri.slice(2).split( this.$.$mol_state_arg.separator ) ) {\n\t\t\t\t\tif( !chunk ) continue\n\t\t\t\t\tconst vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift()! ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn this.$.$mol_state_arg.link( params )\n\t\n\t\t\t}\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tconst url = new URL( uri , this.uri_base_abs() )\n\t\t\t\treturn url.toString()\n\t\t\t\t\n\t\t\t} catch( error ) {\n\t\t\t\t\n\t\t\t\t$mol_fail_log( error )\n\t\t\t\treturn null as any as string\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tcode_syntax() {\n\t\t\treturn this.$.$mol_syntax2_md_code\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tblock_text( index: number ) {\n\t\t\t\n\t\t\tconst token = this.flow_tokens()[ index ]\n\t\t\t\n\t\t\tswitch( token.name ) {\n\t\t\t\tcase 'header' : return token.chunks[2]\n\t\t\t\tdefault: return token.chunks[0]\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tblock_content( index: number ) {\n\t\t\treturn this.line_content([ index ])\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tline_tokens( path: readonly number[] ) {\n\t\t\t\n\t\t\tconst tokens = [] as { name : string , found : string , chunks: string[] }[]\n\t\t\t\n\t\t\tthis.$.$mol_syntax2_md_line.tokenize(\n\t\t\t\tthis.line_text( path ),\n\t\t\t\t( name , found , chunks )=> tokens.push({ name , found , chunks }),\n\t\t\t)\n\t\t\t\n\t\t\treturn tokens as Readonly< typeof tokens >\n\t\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tline_token( path: readonly number[] ) {\n\t\t\tconst tokens = this.line_tokens( path.slice( 0, path.length - 1 ) )\n\t\t\treturn tokens[ path[ path.length - 1 ] ]\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tline_type( path: readonly number[] ) {\n\t\t\treturn this.line_token( path ).name\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tline_text( path: readonly number[] ) {\n\t\t\t\n\t\t\tif( path.length === 1 ) return this.block_text( path[0] )\n\t\t\t\n\t\t\tconst { name, found, chunks } = this.line_token( path )\n\t\t\t\n\t\t\tswitch( name ) {\n\t\t\t\tcase 'link': return chunks[0] || chunks[1].replace( /^.*?\\/\\/|\\/.*$/g, '' )\n\t\t\t\tcase 'text-link': return chunks[0] || chunks[1].replace( /^.*?\\/\\/|\\/.*$/g, '' )\n\t\t\t\tdefault: return ( chunks[0] || chunks[1] || chunks[2] ) ?? found\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tline_content( path: readonly number[] ) {\n\t\t\treturn this.line_tokens( path ).map( ( { name, chunks }, index )=> {\n\t\t\t\t\n\t\t\t\tconst path2 = [ ... path, index ]\n\t\t\t\t\n\t\t\t\tswitch( name ) {\n\t\t\t\t\tcase 'embed': return this.Embed( path2 )\n\t\t\t\t\tcase 'link' : return this.Link( path2 )\n\t\t\t\t\tcase 'text-link-http': return this.Link_http( path2 )\n\t\t\t\t\tcase 'text-link' : return this.Link( path2 )\n\t\t\t\t\tcase 'image-link': return this.Embed( path2 )\n\t\t\t\t\tcase 'code': return this.Code_line( path2 )\n\t\t\t\t\tcase '': return this.String( path2 )\n\t\t\t\t\tdefault: return this.Span( path2 )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tlink_uri( path: readonly number[] ) {\n\t\t\t\n\t\t\tconst token = this.line_token( path )\n\t\t\tconst uri = this.uri_resolve( token.chunks[1] ?? token.found )\n\t\t\t\n\t\t\tif( !uri ) throw new Error( 'Bad link' )\n\t\t\treturn uri\n\t\t\t\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tlink_host( path: readonly number[] ) {\n\t\t\treturn this.link_uri( path ).replace( /^.*?\\/\\/|\\/.*$/g, '' )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tauto_scroll() {\n\t\t\tfor( const [ index, token ] of this.flow_tokens().entries() ) {\n\t\t\t\t\n\t\t\t\tif( token.name !== 'header' ) continue\n\t\t\t\t\n\t\t\t\tconst header = this.Header( index )\n\t\t\t\tif( !header.Link().current() ) continue\n\t\t\t\t\n\t\t\t\tnew $mol_after_tick(\n\t\t\t\t\t()=> this.ensure_visible( header )\n\t\t\t\t)\n\t\t\t\t\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tspoiler_rows( index: number ): string[] {\n\t\t\treturn this.flow_tokens()[ index ].chunks[0].replace( /^[\\?] /mg , '' ).split('\\n');\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tspoiler_label( index: number ): string {\n\t\t\treturn this.spoiler_rows(index)[0];\n\t\t}\n\t\n\t\t@ $mol_mem_key\n\t\tspoiler_content( index: number): string {\n\t\t\treturn this.spoiler_rows(index).slice(1).join('\\n');\n\t\t}\n\t}\n\t\n\texport class $mol_text_header extends $.$mol_text_header {\n\t\t\n\t\tdom_name() {\n\t\t\treturn 'h' + this.level()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ { $mol_style_attach( \"mol/text/text/text.view.css\",\n \"[mol_text] {\\n\\tline-height: 1.5em;\\n\\tbox-sizing: border-box;\\n\\tborder-radius: var(--mol_gap_round);\\n\\twhite-space: pre-line;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tflex: 0 0 auto;\\n\\ttab-size: 4;\\n}\\n\\n[mol_text_paragraph] {\\n\\tpadding: var(--mol_gap_text);\\n\\toverflow: auto;\\n\\toverflow-x: overlay;\\n\\tmax-width: 100%;\\n\\tdisplay: block;\\n\\tmax-width: 60rem;\\n\\tbreak-inside: avoid;\\n}\\n\\n[mol_text_spoiler_label_paragraph] {\\n\\tpadding: 0;\\n}\\n\\n[mol_text_span] {\\n\\tdisplay: inline;\\n}\\n\\n[mol_text_string] {\\n\\tdisplay: inline;\\n\\tflex: 0 1 auto;\\n\\twhite-space: normal;\\n}\\n\\n[mol_text_quote] {\\n\\tmargin: var(--mol_gap_block);\\n\\tpadding: var(--mol_gap_block);\\n\\tbackground: var(--mol_theme_card);\\n\\tbox-shadow: 0 0 0 1px var(--mol_theme_back);\\n\\tbreak-inside: avoid;\\n}\\n\\n[mol_text_header] {\\n\\tdisplay: block;\\n\\ttext-shadow: 0 0;\\n\\tfont-weight: normal;\\n\\tbreak-after: avoid;\\n}\\n\\n* + [mol_text_header] {\\n\\tmargin-top: 0.75rem;\\n}\\n\\nh1[mol_text_header] {\\n\\tfont-size: 1.5rem;\\n}\\n\\nh2[mol_text_header] {\\n\\tfont-size: 1.5rem;\\n\\tfont-style: italic;\\n}\\n\\nh3[mol_text_header] {\\n\\tfont-size: 1.25rem;\\n}\\n\\nh4[mol_text_header] {\\n\\tfont-size: 1.25em;\\n\\tfont-style: italic;\\n}\\n\\nh5[mol_text_header] {\\n\\tfont-size: 1rem;\\n}\\n\\nh6[mol_text_header] {\\n\\tfont-size: 1rem;\\n\\tfont-style: italic;\\n}\\n\\n[mol_text_header_link] {\\n\\tcolor: inherit;\\n}\\n\\n[mol_text_table] {\\n\\tbreak-inside: avoid;\\n}\\n\\n[mol_text_table_cell] {\\n\\twidth: auto;\\n\\tdisplay: table-cell;\\n\\tvertical-align: baseline;\\n\\tpadding: 0;\\n\\tborder-radius: 0;\\n}\\n\\n[mol_text_grid] {\\n\\tbreak-inside: avoid;\\n}\\n\\n[mol_text_grid_cell] {\\n\\twidth: auto;\\n\\tdisplay: table-cell;\\n\\tvertical-align: top;\\n\\tpadding: 0;\\n\\tborder-radius: 0;\\n}\\n\\n[mol_text_cut] {\\n\\tborder: none;\\n\\twidth: 100%;\\n\\tbox-shadow: 0 0 0 1px var(--mol_theme_line);\\n}\\n\\n[mol_text_link_http],\\n[mol_text_link] {\\n\\tpadding: 0;\\n\\tdisplay: inline;\\n\\twhite-space: nowrap;\\n}\\n\\n[mol_text_link_icon] + [mol_text_embed] {\\n\\tmargin-left: -1.5rem;\\n}\\n\\n[mol_text_embed_youtube] {\\n\\tdisplay: inline;\\n}\\n\\n[mol_text_embed_youtube_image],\\n[mol_text_embed_youtube_frame],\\n[mol_text_embed_object] {\\n\\tobject-fit: contain;\\n\\tobject-position: center;\\n\\tdisplay: inline;\\n\\twidth: 100vw;\\n\\tmax-height: calc( 100vh - 6rem );\\n\\tvertical-align: top;\\n}\\n[mol_text_embed_object_fallback] {\\n\\tpadding: 0;\\n}\\n[mol_text_embed_image] {\\n\\tobject-fit: contain;\\n\\tobject-position: center;\\n\\tdisplay: inline;\\n\\t/* max-height: calc( 100vh - 6rem ); */\\n\\tvertical-align: top;\\n}\\n\\n[mol_text_pre] {\\n\\twhite-space: pre;\\n\\toverflow-x: auto;\\n\\toverflow-x: overlay;\\n\\ttab-size: 2;\\n\\tbreak-inside: avoid;\\n}\\n\\n[mol_text_code_line] {\\n\\tdisplay: inline-block;\\n}\\n\\n[mol_text_type=\\\"strong\\\"] {\\n\\ttext-shadow: 0 0;\\n\\tfilter: contrast(1.5);\\n}\\n\\n[mol_text_type=\\\"emphasis\\\"] {\\n\\tfont-style: italic;\\n}\\n\\n[mol_text_type=\\\"insert\\\"] {\\n\\tcolor: var(--mol_theme_special);\\n}\\n\\n[mol_text_type=\\\"delete\\\"] {\\n\\tcolor: var(--mol_theme_shade);\\n}\\n\\n[mol_text_type=\\\"remark\\\"] {\\n\\tcolor: var(--mol_theme_shade);\\n}\\n\\n[mol_text_type=\\\"quote\\\"] {\\n\\tfont-style: italic;\\n}\\n\"\n) }","$optimade_cifplayer_app $mol_drop\n\treceive? <=> drop_file? null\n\tSub <= Book $mol_book2\n\t\tplugins /\n\t\t\t<= Theme $mol_theme_auto\n\t\tpages <= pages\n\t\tPlaceholder null\n\tpages /\n\t\t<= Menu $mol_page\n\t\t\ttitle \\Crystal structure web-viewer\n\t\t\ttools /\n\t\t\t\t<= Source $mol_link_iconed\n\t\t\t\t\turi \\https://github.com/tilde-lab/cifplayer\n\t\t\t\t\ttitle \\\n\t\t\t\t<= Lights $mol_lights_toggle\n\t\t\tbody / <= Body $mol_view sub /\n\t\t\t\t<= Upload $mol_button_open\n\t\t\t\t\tIcon => Upload_icon\n\t\t\t\t\tNative => Upload_native\n\t\t\t\t\tfiles? <=> files_read? null\n\t\t\t\t\tsub /\n\t\t\t\t\t\t<= Upload_icon\n\t\t\t\t\t\t<= Upload_native\n\t\t\t\t\t\t\\Choose file\n\t\t\t\t<= Data_text $mol_textarea\n\t\t\t\t\tvalue? <=> data_str?\n\t\t\t\t\thint \\or paste here...\n\t\t<= Player $optimade_cifplayer_player\n\t\t\tdata <= data_str? \\\n\t\t\tvibrate? => vibrate?\n\t\t\tunvibrate => unvibrate\n\tStart $mol_view\n\t\tsub /\n\t\t\t<= Start_message $mol_text\n\t\t\t\ttext \\Choose or paste a CIF, POSCAR, or Optimade file. No remote server is used.\n\t\t\t<= Paste_example $mol_button_minor\n\t\t\t\ttitle \\Show example\n\t\t\t\tclick? <=> paste_example? null\n","$mol_text_list $mol_text\n\tauto_scroll null\n\tattr *\n\t\t^\n\t\tmol_text_list_type <= type \\\n\tParagraph* $mol_text_list_item\n\t\tindex <= item_index*\n\t\tsub <= block_content*\n\n$mol_text_list_item $mol_paragraph\n\tattr *\n\t\t^\n\t\tmol_text_list_item_index <= index 0\n","namespace $ { $mol_style_attach( \"mol/text/list/list.view.css\",\n \"[mol_text_list] {\\r\\n\\tpadding-left: 1.75rem;\\r\\n}\\r\\n\\r\\n[mol_text_list_item] {\\r\\n\\tcontain: none;\\r\\n\\tdisplay: list-item;\\r\\n}\\r\\n\\r\\n[mol_text_list_item]::before {\\r\\n\\tcontent: attr( mol_text_list_item_index ) \\\".\\\";\\r\\n\\twidth: 1.25rem;\\r\\n\\tdisplay: inline-block;\\r\\n\\tposition: absolute;\\r\\n\\tmargin-left: -1.75rem;\\r\\n\\ttext-align: end;\\r\\n}\\r\\n\\r\\n[mol_text_list_type=\\\"-\\\"] > [mol_text_list_item]::before,\\r\\n[mol_text_list_type=\\\"*\\\"] > [mol_text_list_item]::before {\\r\\n\\tcontent: \\\"•\\\";\\r\\n}\\r\\n\"\n) }","namespace $.$$ {\n\n\t$mol_style_define( $optimade_cifplayer_app, {\n\n\t\tcontain: 'none', // otherwise in fullscreen 'fixed' positions plot relative to parent is not in the viewport\n\n\t\t'[mol_drop_status]': {\n\t\t\tdrag: {\n\t\t\t\tMenu: {\n\t\t\t\t\tbackground: {\n\t\t\t\t\t\tcolor: $mol_theme.hover,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tStart: {\n\t\t\tbackground: {\n\t\t\t\tcolor: $mol_theme.back,\n\t\t\t},\n\t\t\tpadding: {\n\t\t\t\ttop: '6rem',\n\t\t\t},\n\t\t\tflex: {\n\t\t\t\tgrow: 1,\n\t\t\t\tdirection: 'column',\n\t\t\t},\n\t\t\talign: {\n\t\t\t\titems: 'center',\n\t\t\t},\n\t\t},\n\n\t\tMenu: {\n\t\t\tBody_content: {\n\t\t\t\tgap: $mol_gap.block,\n\t\t\t\tmaxWidth: '25rem',\n\t\t\t\tflex: {\n\t\t\t\t\tdirection: 'row',\n\t\t\t\t},\n\t\t\t},\n\t\t\tHead: {\n\t\t\t\tjustify: {\n\t\t\t\t\tcontent: 'flex-start'\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tBody: {\n\t\t\tflex: { \n\t\t\t\tdirection: 'column',\n\t\t\t\tgrow: 1,\n\t\t\t},\n\t\t},\n\n\t\tPlayer: {\n\t\t\tflex: {\n\t\t\t\tgrow: 1,\n\t\t\t\tbasis: '30rem',\n\t\t\t},\n\t\t},\n\n\t} )\n\n}\n","namespace $ {\n\n\texport function $mol_test( set : { [ name : string ] : string | ( ( context : $ )=> void ) } ) {\n\t\t\n\t\tfor( let name in set ) {\n\n\t\t\tconst code = set[ name ]\n\t\t\tconst test = ( typeof code === 'string' ) ? new Function( '' , code ) as ()=> void : code\n\t\t\t\n\t\t\t$mol_test_all.push( test )\n\t\t}\n\n\t\t$mol_test_schedule()\n\t}\n\n\texport let $mol_test_mocks = [] as Array< ( context : $ )=> void >\n\n\texport const $mol_test_all = [] as Array< ( context : $ )=> any >\n\n\texport async function $mol_test_run() {\n\n\t\tfor( var test of $mol_test_all ) {\n\n\t\t\tlet context = Object.create( $$ )\n\t\t\tfor( let mock of $mol_test_mocks ) await mock( context )\n\t\t\t\n\t\t\tconst res = test( context )\n\t\t\tif( $mol_promise_like( res ) ) {\n\t\t\t\tawait new Promise( ( done, fail )=> {\n\t\t\t\t\tres.then( done, fail )\n\t\t\t\t\tsetTimeout( ()=> fail( new Error( 'Test timeout: ' + test.name ) ), 1000 )\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\t$$.$mol_log3_done({\n\t\t\tplace: '$mol_test',\n\t\t\tmessage: 'All tests passed',\n\t\t\tcount: $mol_test_all.length,\n\t\t})\n\t\t\n\t}\n\t\n\tlet scheduled = false\n\texport function $mol_test_schedule() {\n\n\t\tif( scheduled ) return\n\t\tscheduled = true\n\n\t\tsetTimeout( async ()=> {\n\t\t\t\n\t\t\tscheduled = false\n \t\t\t\n\t\t\tawait $mol_test_run()\n\t\t\t$$.$mol_test_complete()\n\t\t\t\n\t\t} , 1000 )\n\t\t\n\t}\n\n\t$mol_test_mocks.push( context => {\n\t\tlet seed = 0\n\n\t\tcontext.Math = Object.create( Math )\n\t\tcontext.Math.random = ()=> Math.sin( seed++ )\n\n\t\tconst forbidden = [ 'XMLHttpRequest' , 'fetch' ] as const\n\n\t\tfor( let api of forbidden ) {\n\t\t\tcontext[ api ] = new Proxy( function(){} as any , {\n\t\t\t\tget() {\n\t\t\t\t\t$mol_fail_hidden( new Error( `${ api } is forbidden in tests` ) )\n\t\t\t\t} ,\n\t\t\t\tapply() {\n\t\t\t\t\t$mol_fail_hidden( new Error( `${ api } is forbidden in tests` ) )\n\t\t\t\t} ,\n\t\t\t} )\n\t\t}\n\t\t\n\t} )\n\n\t$mol_test({\n\n\t\t'mocked Math.random'( $ ) {\n\t\t\tconsole.assert( $.Math.random() === 0 )\n\t\t\tconsole.assert( $.Math.random() === Math.sin(1) )\n\t\t} ,\n\n\t\t'forbidden XMLHttpRequest'( $ ) {\n\t\t\ttry {\n\t\t\t\tconsole.assert( void new $.XMLHttpRequest )\n\t\t\t} catch( error: any ) {\n\t\t\t\tconsole.assert( error.message === 'XMLHttpRequest is forbidden in tests' )\n\t\t\t}\n\t\t} ,\n\n\t\t'forbidden fetch'( $ ) {\n\t\t\ttry {\n\t\t\t\tconsole.assert( void $.fetch('') )\n\t\t\t} catch( error: any ) {\n\t\t\t\tconsole.assert( error.message === 'fetch is forbidden in tests' )\n\t\t\t}\n\t\t} ,\n\n\t})\n\n}\n","namespace $ {\n\t\n\texport function $mol_test_complete() {\n\t\tprocess.exit(0)\n\t}\n\t\n}\n","namespace $ {\n\t$mol_test_mocks.push( $=> $.$mol_fail_log = ()=> false )\n}\n\n","namespace $ {\n\n\t$mol_test({\n\t\t\n\t\t'FQN of anon function'($) {\n\t\t\tconst $$ = Object.assign( $ , { $mol_func_name_test : ( ()=> ()=> {} )() } )\n\t\t\t$mol_assert_equal( $$.$mol_func_name_test.name , '' )\n\t\t\t$mol_assert_equal( $$.$mol_func_name( $$.$mol_func_name_test ) , '$mol_func_name_test' )\n\t\t\t$mol_assert_equal( $$.$mol_func_name_test.name , '$mol_func_name_test' )\n\t\t},\n\n\t})\n\n}\n","namespace $ {\n\n\texport function $mol_dom_serialize(\n\t\tnode: Node\n\t) {\n\t\tconst serializer = new $mol_dom_context.XMLSerializer\n\t\treturn serializer.serializeToString( node )\n\t}\n\n}\n","namespace $ {\n\n\texport let $mol_jsx_prefix = ''\n\texport let $mol_jsx_crumbs = ''\n\n\texport let $mol_jsx_booked = null as null | Set< string >\n\t\n\texport let $mol_jsx_document : $mol_jsx.JSX.ElementClass['ownerDocument'] = {\n\t\tgetElementById : ()=> null ,\n\t\tcreateElementNS : ( space: string, name : string )=> $mol_dom_context.document.createElementNS( space, name ) as any,\n\t\tcreateDocumentFragment : ()=> $mol_dom_context.document.createDocumentFragment(),\n\t}\n\t\n\texport const $mol_jsx_frag = ''\n\n\t/**\n\t * JSX adapter that makes DOM tree.\n\t * Generates global unique ids for every DOM-element by components tree with ids.\n\t * Ensures all local ids are unique.\n\t * Can reuse an existing nodes by GUIDs when used inside [`mol_jsx_attach`](https://github.com/hyoo-ru/mam_mol/tree/master/jsx/attach).\n\t */\n\texport function $mol_jsx<\n\t\tProps extends $mol_jsx.JSX.IntrinsicAttributes,\n\t\tChildren extends Array< Node | string >\n\t>(\n\t\tElem : string\n\t\t\t| ( ( props : Props , ... children : Children ) => Element ) ,\n\t\tprops : Props ,\n\t\t... childNodes : Children\n\t) : Element | DocumentFragment {\n\n\t\tconst id = props && props.id || ''\n\t\tconst guid = id ? $mol_jsx_prefix ? $mol_jsx_prefix + '/'+ id : id : $mol_jsx_prefix\n\t\tconst crumbs_self = id ? $mol_jsx_crumbs.replace( /(\\S+)/g, `$1_${ id.replace( /\\/.*/i, '' ) }` ) : $mol_jsx_crumbs\n\t\t\n\t\tif( Elem && $mol_jsx_booked ) {\n\t\t\tif( $mol_jsx_booked.has( id ) ) {\n\t\t\t\t$mol_fail( new Error( `JSX already has tag with id ${ JSON.stringify( guid ) }` ) )\n\t\t\t} else {\n\t\t\t\t$mol_jsx_booked.add( id )\n\t\t\t}\n\t\t}\n\n\t\tlet node: Element | DocumentFragment | null = guid ? $mol_jsx_document.getElementById( guid ) : null\n\n\t\tif( $mol_jsx_prefix ) {\n\t\t\t\n\t\t\tconst prefix_ext = $mol_jsx_prefix\n\t\t\tconst booked_ext = $mol_jsx_booked\n\t\t\tconst crumbs_ext = $mol_jsx_crumbs\n\t\t\t\n\t\t\tfor( const field in props ) {\n\t\t\t\t\n\t\t\t\tconst func = props[ field ]\n\t\t\t\tif( typeof func !== 'function' ) continue\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tconst wrapper = function( this: any, ... args: any[] ) {\n\t\t\t\t\t\n\t\t\t\t\tconst prefix = $mol_jsx_prefix\n\t\t\t\t\tconst booked = $mol_jsx_booked\n\t\t\t\t\tconst crumbs = $mol_jsx_crumbs\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\n\t\t\t\t\t\t$mol_jsx_prefix = prefix_ext\n\t\t\t\t\t\t$mol_jsx_booked = booked_ext\n\t\t\t\t\t\t$mol_jsx_crumbs = crumbs_ext\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn func.call( this, ... args )\n\t\t\t\t\t\t\n\t\t\t\t\t} finally {\n\t\t\t\t\t\t\n\t\t\t\t\t\t$mol_jsx_prefix = prefix\n\t\t\t\t\t\t$mol_jsx_booked = booked\n\t\t\t\t\t\t$mol_jsx_crumbs = crumbs\n\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$mol_func_name_from( wrapper, func )\n\t\t\t\tprops[ field ] = wrapper as any\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tif( typeof Elem !== 'string' ) {\n\n\t\t\tif( 'prototype' in Elem ) {\n\n\t\t\t\tconst view = node && (node as any)[ String(Elem) ] || new ( Elem as any )\n\t\t\t\t\n\t\t\t\tObject.assign( view , props )\n\t\t\t\tview[ Symbol.toStringTag ] = guid\n\t\t\t\t\n\t\t\t\tview.childNodes = childNodes\n\t\t\t\t\n\t\t\t\tif( !view.ownerDocument ) view.ownerDocument = $mol_jsx_document\n\t\t\t\tview.className = ( crumbs_self ? crumbs_self + ' ' : '' ) + ( Elem['name'] || Elem )\n\t\t\t\t\n\t\t\t\tnode = view.valueOf()\n\t\t\t\t\n\t\t\t\t;(node as any)![ String(Elem) ] = view\n\t\t\t\t\n\t\t\t\treturn node!\n\n\t\t\t} else {\n\n\t\t\t\tconst prefix = $mol_jsx_prefix\n\t\t\t\tconst booked = $mol_jsx_booked\n\t\t\t\tconst crumbs = $mol_jsx_crumbs\n\t\t\t\t\n\t\t\t\ttry {\n\t\n\t\t\t\t\t$mol_jsx_prefix = guid\n\t\t\t\t\t$mol_jsx_booked = new Set\n\t\t\t\t\t$mol_jsx_crumbs = ( crumbs_self ? crumbs_self + ' ' : '' ) + ( Elem['name'] || Elem )\n\t\n\t\t\t\t\treturn ( Elem as any )( props , ... childNodes )\n\t\t\t\t\t\n\t\t\t\t} finally {\n\n\t\t\t\t\t$mol_jsx_prefix = prefix\n\t\t\t\t\t$mol_jsx_booked = booked\n\t\t\t\t\t$mol_jsx_crumbs = crumbs\n\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t\tif( !node ) {\n\t\t\tnode = Elem\n\t\t\t\t? $mol_jsx_document.createElementNS( props?.xmlns ?? 'http://www.w3.org/1999/xhtml', Elem )\n\t\t\t\t: $mol_jsx_document.createDocumentFragment()\n\t\t}\n\n\t\t$mol_dom_render_children( node , ( [] as ( Node | string )[] ).concat( ... childNodes ) )\n\t\tif( !Elem ) return node\n\n\t\tif( guid ) ( node as Element ).id = guid\n\t\tfor( const key in props ) {\n\t\t\tif( key === 'id' ) continue\n\t\t\t\n\t\t\tif( typeof props[ key ] === 'string' ) {\n\t\t\t\t\n\t\t\t\tif( typeof (node as any)[ key ] === 'string' ) (node as any)[ key ] = props[ key ]\n\t\t\t\t;( node as Element ).setAttribute( key , (props as any)[ key ] )\n\t\t\t\t\n\t\t\t} else if(\n\t\t\t\tprops[ key ] &&\n\t\t\t\ttypeof props[ key ] === 'object' &&\n\t\t\t\tReflect.getPrototypeOf( props[ key ] as any ) === Reflect.getPrototypeOf({})\n\t\t\t) {\n\n\t\t\t\tif( typeof (node as any)[ key ] === 'object' ) {\n\t\t\t\t\tObject.assign( ( node as any )[ key ] , props[ key ] )\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t(node as any)[ key ] = props[ key ]\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t\tif( $mol_jsx_crumbs ) ( node as Element ).className = ( (props as any)?.['class'] ? (props as any)['class'] + ' ' : '' ) + crumbs_self\n\n\t\treturn node\n\n\t}\n\n\texport declare namespace $mol_jsx.JSX {\n\n\t\texport interface Element extends HTMLElement {\n\t\t\tclass?: string\n\t\t}\n\t\t\n\t\texport interface ElementClass {\n\t\t\tattributes : {}\n\t\t\townerDocument : Pick< Document , 'getElementById' | 'createElementNS' | 'createDocumentFragment' >\n\t\t\tchildNodes : Array< Node | string >\n\t\t\tvalueOf() : Element\n\t\t}\n\t\t\n\t\ttype OrString< Dict > = {\n\t\t\t[ key in keyof Dict ]: Dict[ key ] | string\n\t\t}\n\t\t\n\t\t/** Props for html elements */\n\t\texport type IntrinsicElements = {\n\t\t\t[ key in keyof ElementTagNameMap ]? : $.$mol_type_partial_deep< OrString<\n\t\t\t\t& Element\n\t\t\t\t& IntrinsicAttributes\n\t\t\t\t& ElementTagNameMap[ key ]\n\t\t\t> >\n\t\t}\n\t\t\n\t\t/** Additional undeclared props */\n\t\texport interface IntrinsicAttributes {\n\t\t\tid? : string\n\t\t\txmlns? : string\n\t\t}\n\t\t\n\t\texport interface ElementAttributesProperty {\n\t\t\tattributes : {\n\t\t\t}\n\t\t}\n\t\t\n\t\t// export type IntrinsicClassAttributes< Class > = $.$mol_type_partial_deep< Omit< Class , 'valueOf' > >\n\t\t\n\t\tinterface ElementChildrenAttribute {\n\t\t}\n\t\n\t}\n\n}\n","/** @jsx $mol_jsx */\n/** @jsxFrag $mol_jsx_frag */\nnamespace $ {\n\t\n\t$mol_test({\n\t\t\n\t\t'Make empty div'() {\n\t\t\t$mol_assert_equal( (
).outerHTML , '
' )\n\t\t} ,\n\t\t\n\t\t'Define native field'() {\n\t\t\t\n\t\t\tconst dom = as HTMLInputElement\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '' )\n\t\t\t$mol_assert_equal( dom.value, '123' )\n\n\t\t} ,\n\t\t\n\t\t'Define classes'() {\n\t\t\t\n\t\t\tconst dom =
\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '
' )\n\n\t\t} ,\n\t\t\n\t\t'Define styles'() {\n\t\t\t\n\t\t\tconst dom =
\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '
' )\n\n\t\t} ,\n\t\t\n\t\t'Define dataset'() {\n\t\t\t\n\t\t\tconst dom =
\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '
' )\n\n\t\t} ,\n\t\t\n\t\t'Define attributes'() {\n\t\t\t\n\t\t\tconst dom =