@operato/menu 10.29.54 → 10.29.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/dist/src/ox-menu-portrait.d.ts +9 -1
- package/dist/src/ox-menu-portrait.js +17 -6
- package/dist/src/ox-menu-portrait.js.map +1 -1
- package/dist/test/ox-menu-portrait.test.js +21 -0
- package/dist/test/ox-menu-portrait.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/test/ox-menu-portrait.test.ts +27 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
### [10.29.56](https://github.com/hatiolab/operato/compare/v10.29.55...v10.29.56) (2026-10-26)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @operato/menu
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### [10.29.55](https://github.com/hatiolab/operato/compare/v10.29.54...v10.29.55) (2026-10-25)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### :bug: Bug Fix
|
|
18
|
+
|
|
19
|
+
* **menu:** a system row that names its page is a link, so it opens from the drawer too ([6e9e34a](https://github.com/hatiolab/operato/commit/6e9e34a76d2e2f787fe779076deb1dc42fe835de))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
6
23
|
### [10.29.54](https://github.com/hatiolab/operato/compare/v10.29.53...v10.29.54) (2026-10-25)
|
|
7
24
|
|
|
8
25
|
|
|
@@ -124,7 +124,15 @@ export declare class OxMenuPortrait extends OxMenuPortrait_base {
|
|
|
124
124
|
* 옆의 하위 메뉴들과 같은 모양이 되어 「눌러도 화면이 안 바뀌는 메뉴」로 읽힌다.
|
|
125
125
|
*/
|
|
126
126
|
private renderSystem;
|
|
127
|
-
/**
|
|
127
|
+
/**
|
|
128
|
+
* 시스템 줄을 누른다.
|
|
129
|
+
*
|
|
130
|
+
* 여는 화면(`page`)을 적은 줄은 **다른 메뉴처럼 링크다** — 라우터가 받아 옮긴다. 한때 모든 줄이
|
|
131
|
+
* `href="#"` 에 함수를 직접 불렀는데, 좁은 화면에서 메뉴가 서랍(오버레이)으로 열리면 주소 쓰기가
|
|
132
|
+
* 「오버레이 밖에서 온 쓰기」로 거절되어 아무 일도 없었다. 링크는 누른 자리를 출처로 가져간다.
|
|
133
|
+
*
|
|
134
|
+
* 화면을 여는 것이 아닌 줄(`action` 만 있는 줄)은 그대로 부르되, 출처를 이 메뉴로 밝힌다.
|
|
135
|
+
*/
|
|
128
136
|
private runMorenda;
|
|
129
137
|
/**
|
|
130
138
|
* 시스템 줄을 누른다 — **다른 최상위와 똑같은 두 갈래다.**
|
|
@@ -8,6 +8,7 @@ import { ifDefined } from 'lit/directives/if-defined.js';
|
|
|
8
8
|
import { i18next, localize } from '@operato/i18n';
|
|
9
9
|
import { navigate, store } from '@operato/shell';
|
|
10
10
|
import { ScrollbarStyles } from '@operato/styles';
|
|
11
|
+
import { addressController } from '@operato/utils/address.js';
|
|
11
12
|
import { MenuPortraitStyles } from './menu-portrait-styles.js';
|
|
12
13
|
import { childrenOpenAs, menuMode, showsLabels, topNavigates } from './menu-mode.js';
|
|
13
14
|
import { currentMorenda } from './menu-active.js';
|
|
@@ -326,7 +327,7 @@ let OxMenuPortrait = OxMenuPortrait_1 = class OxMenuPortrait extends localize(i1
|
|
|
326
327
|
-->
|
|
327
328
|
<ul>
|
|
328
329
|
${this.morendas.map(morenda => html `<li ?current=${morenda === current}>
|
|
329
|
-
<a href
|
|
330
|
+
<a href=${morenda.page || '#'} @click=${(e) => this.runMorenda(e, morenda)}>
|
|
330
331
|
${morenda.icon}<span>${morenda.name}</span>
|
|
331
332
|
</a>
|
|
332
333
|
</li>`)}
|
|
@@ -335,12 +336,22 @@ let OxMenuPortrait = OxMenuPortrait_1 = class OxMenuPortrait extends localize(i1
|
|
|
335
336
|
</ul>
|
|
336
337
|
`;
|
|
337
338
|
}
|
|
338
|
-
/**
|
|
339
|
+
/**
|
|
340
|
+
* 시스템 줄을 누른다.
|
|
341
|
+
*
|
|
342
|
+
* 여는 화면(`page`)을 적은 줄은 **다른 메뉴처럼 링크다** — 라우터가 받아 옮긴다. 한때 모든 줄이
|
|
343
|
+
* `href="#"` 에 함수를 직접 불렀는데, 좁은 화면에서 메뉴가 서랍(오버레이)으로 열리면 주소 쓰기가
|
|
344
|
+
* 「오버레이 밖에서 온 쓰기」로 거절되어 아무 일도 없었다. 링크는 누른 자리를 출처로 가져간다.
|
|
345
|
+
*
|
|
346
|
+
* 화면을 여는 것이 아닌 줄(`action` 만 있는 줄)은 그대로 부르되, 출처를 이 메뉴로 밝힌다.
|
|
347
|
+
*/
|
|
339
348
|
runMorenda(e, morenda) {
|
|
340
|
-
var _a;
|
|
341
|
-
e.preventDefault();
|
|
342
349
|
this.popped = undefined;
|
|
343
|
-
(
|
|
350
|
+
if (morenda.page) {
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
e.preventDefault();
|
|
354
|
+
addressController().from(this, () => { var _a; return (_a = morenda.action) === null || _a === void 0 ? void 0 : _a.call(morenda); });
|
|
344
355
|
}
|
|
345
356
|
/**
|
|
346
357
|
* 시스템 줄을 누른다 — **다른 최상위와 똑같은 두 갈래다.**
|
|
@@ -418,7 +429,7 @@ let OxMenuPortrait = OxMenuPortrait_1 = class OxMenuPortrait extends localize(i1
|
|
|
418
429
|
return html `
|
|
419
430
|
<ul>
|
|
420
431
|
${this.morendas.map(morenda => html `<li ?current=${morenda === current}>
|
|
421
|
-
<a href
|
|
432
|
+
<a href=${morenda.page || '#'} @click=${(e) => this.runMorenda(e, morenda)}>${morenda.icon}<span>${morenda.name}</span></a>
|
|
422
433
|
</li>`)}
|
|
423
434
|
</ul>
|
|
424
435
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ox-menu-portrait.js","sourceRoot":"","sources":["../../src/ox-menu-portrait.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { html, LitElement, nothing, TemplateResult } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { asyncReplace } from 'lit/directives/async-replace.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { navigate, store } from '@operato/shell'\nimport { ScrollbarStyles } from '@operato/styles'\n\nimport { Menu } from './types.js'\n\nimport { MenuPortraitStyles } from './menu-portrait-styles.js'\nimport { childrenOpenAs, menuMode, showsLabels, topNavigates } from './menu-mode.js'\nimport { currentMorenda } from './menu-active.js'\n\n/** A stream of counts, as opposed to one value or a ready-made directive. */\nfunction isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return typeof (value as any)?.[Symbol.asyncIterator] === 'function'\n}\n\n/**\n * Nothing is waiting.\n *\n * Only a real zero counts. An empty string is a count that has not arrived, and the pill is hidden\n * for that case by `[badge]:empty` — treating it as zero here would draw a grey pill on load.\n */\nfunction isZero(value: unknown): boolean {\n return value === 0 || value === '0'\n}\n\n/**\n * 시스템 항목을 담는 가짜 최상위.\n *\n * 팝업이 「어느 최상위에서 열렸나」를 하나의 값(`popped`)으로 들고 있어서, 시스템도 최상위인\n * 것처럼 다룬다. 그래야 노브와 자리 계산이 한 벌로 남는다.\n */\nconst SYSTEM = { name: 'ox-menu-system' } as Menu\n\n@customElement('ox-menu-portrait')\nexport class OxMenuPortrait extends localize(i18next)(LitElement) {\n static styles = [ScrollbarStyles, MenuPortraitStyles]\n\n @property({ type: Array }) menus?: Menu[]\n @property({ type: Object }) activeTopLevel?: Menu\n @property({ type: Object }) activeMenu?: Menu\n @property({ type: String }) path!: string\n\n /**\n * 레일 모드 — 접을 수 있고, 접히면 하위가 팝업으로 뜬다.\n *\n * **옵트인이다.** 켜지 않은 앱은 지금과 한 글자도 다르지 않다. 모양이 함께 바뀌는 것은 취향이\n * 아니라 요건이다 — 기존 모양은 줄마다 폭 전체를 쓰는 밑줄이 있고 왼쪽 여백이 16px 이라 56px\n * 에서 무너진다(§`menu-rail-styles.ts`).\n */\n @property({ type: Boolean, reflect: true }) rail = false\n\n /**\n * 접힘 — 아이콘만.\n *\n * **주인은 이 컴포넌트가 아니다.** 폭을 정하는 요소는 `ox-menu-part` 이고(그쪽에 `min-width`\n * 가 있다), 셸의 리사이즈 손잡이도 그 요소에 인라인 폭을 쓴다. 그래서 상태와 저장은 그쪽이\n * 갖고 여기는 받아서 그린다.\n */\n @property({ type: Boolean, reflect: true }) collapsed = false\n\n /**\n * 서랍인가 — 화면 위에 겹쳐 떴다가 닫히는 메뉴.\n *\n * 그때 최상위는 **펼치기만** 한다. 누르는 순간 서랍이 닫히면 그 묶음의 나머지 하위를 볼\n * 기회가 없다(§`ox-menu-part` 의 `drawer`).\n */\n @property({ type: Boolean, reflect: true }) drawer = false\n\n /**\n * 지금 어떤 모양으로 서 있나 — 세 플래그에서 하나로 모은다.\n *\n * 이 값과 그에 딸린 두 답(`하위를 어디에` · `최상위가 이동하나`)은 `menu-mode.ts` 에 있고\n * 시험으로 못박혀 있다. 여기서 그때그때 판단하지 않는다 — 그렇게 하다가 네 번 깨졌다.\n */\n private get mode() {\n return menuMode({ rail: this.rail, collapsed: this.collapsed, drawer: this.drawer })\n }\n\n /** 접힌 상태에서 팝업으로 열린 최상위 메뉴. 시스템 팝업이면 SYSTEM 이다. */\n @state() private popped?: Menu\n\n /**\n * 시스템 항목 — 프로필 · 로그아웃 · 설정처럼 **앱이 아니라 프레임워크가 붙이는 것**들.\n *\n * 하드코딩하지 않는다. 각 패키지가 부팅할 때 `ADD_MORENDA` 로 등록하고(권한이 없으면 등록\n * 자체를 안 한다), 우리는 그 목록을 그대로 그린다. 그래서 목록이 비면 이 자리도 없다.\n */\n /*\n * private 을 두지 않는다 — 시험이 이 목록을 넣어 보고 「항목이 없으면 자리도 없다」를 확인한다.\n * 앱에서는 store 가 채운다(아래 connectedCallback).\n */\n @state() morendas: any[] = []\n\n private _unsubscribeStore?: () => void\n\n /** 팝업 자리 — 누른 항목의 오른쪽. 세로는 그린 뒤 재서 맞춘다(§`fitPopup`). */\n private _popLeft = 0\n private _popTop = 0\n /** 누른 항목의 윗선. 화면에 들어가면 이 자리를 쓴다. */\n private _popPrefer = 0\n\n /** 팝업이 화면 안에 들어가게 세로 자리를 맞춘다. 팝업 밖 여백. */\n private static readonly POP_MARGIN = 8\n\n /**\n * 팝업 밖을 누르면 닫는다.\n *\n * ── 팝업 안의 클릭을 막지 않는다 ────────────────────────────────────────\n * 한때 팝업 컨테이너에 stopPropagation 을 걸어 두었다. 팝업 안을 눌러도 이 처리기가 받아\n * 곧바로 닫히던 것을 막으려던 것인데, 그것이 **셸의 라우터까지 막았다.**\n *\n * 라우터는 document.body 에서 클릭을 받아 composedPath 로 A 를 찾고 preventDefault 한 뒤\n * 화면만 바꾼다(@operato/shell 의 installRouter). 클릭이 거기까지 못 가면 브라우저의 기본\n * 이동이 그대로 일어나 **페이지 전체가 다시 읽혔다.**\n *\n * 그래서 막지 않고, 여기서 「팝업 안이면 닫지 않는다」로 가른다. 줄을 누를 때 닫는 일은 그\n * 줄의 처리기가 한다.\n */\n private _onDocClick = (e: MouseEvent) => {\n if (!this.popped) {\n return\n }\n\n const pop = this.renderRoot?.querySelector?.('.railpop')\n\n if (pop && e.composedPath().includes(pop)) {\n return\n }\n\n this.popped = undefined\n }\n\n connectedCallback() {\n super.connectedCallback()\n document.addEventListener('click', this._onDocClick)\n\n /*\n * morenda 는 각 패키지의 부팅에서 **비동기로** 등록된다. 한 번 읽고 끝내면 늦게 붙는 것이\n * 빠진다. 길이가 바뀔 때만 다시 그린다 — 이 목록은 늘어나기만 한다.\n */\n const read = () => ((store.getState() as any)?.more?.morendas || []) as any[]\n\n this.morendas = read()\n this._unsubscribeStore = store.subscribe(() => {\n const next = read()\n if (next.length !== this.morendas.length) {\n this.morendas = next\n }\n })\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n document.removeEventListener('click', this._onDocClick)\n this._unsubscribeStore?.()\n }\n\n /**\n * 마우스를 올렸을 때 뜨는 글.\n *\n * ── 접혔을 때는 이름이 먼저다 ───────────────────────────────────────────\n * 접히면 아이콘만 남으므로 **이름을 모른다.** 그때는 이름을 윗줄에 얹고 설명을 아랫줄에 둔다.\n * 펼쳐져 있으면 이름은 이미 옆에 있으니 설명만 낸다.\n *\n * 줄바꿈으로 잇는다 — 대시로 이으면 설명 안의 대시와 겹쳐 「A — B — C」가 된다.\n *\n * 설명도 없고 이름도 안 보이는 경우가 아니면 아무것도 내지 않는다. 이름을 그대로 되풀이하는\n * 툴팁은 소음이다.\n */\n private hoverText(label?: unknown, description?: string) {\n const name = typeof label === 'string' ? label : undefined\n\n if (showsLabels(this.mode)) {\n return description || undefined\n }\n\n return description && name ? `${name}\\n${description}` : description || name\n }\n\n /**\n * @param depth 0 이면 최상위다. **하위도 `active` 를 달기 때문에** 깊이를 값으로 넘긴다 —\n * CSS 로 「최상위인 li」를 가리려면 `:not(li li)` 같은 것이 필요하고, 그건 읽는 사람이\n * 한 번 더 생각해야 하는 선택자다.\n */\n /**\n * The count pill next to a menu label.\n *\n * Zero is drawn, and drawn quietly.\n *\n * The pill is the \"there is something here for you\" signal, and 작성 중 0 wore the same filled\n * accent as 할 일 9 — same colour rgb(12,122,76), same 28x17 box. Four of them in a column read\n * as four things waiting. Hiding zero is not the answer either: an empty slot cannot be told\n * apart from a count that has not arrived yet. So zero keeps its place and loses the signal.\n *\n * ── Why this method exists ────────────────────────────────────────────\n * Callers used to hand over a Lit directive — `badge: () => asyncReplace(counts(name))` — which\n * left this component with something it could only drop into a slot. It could not see the value,\n * so it could not decide how to draw it. The component that draws the pill has to own how the\n * pill looks, so it now takes the stream and wraps it here.\n *\n * A caller that still passes a ready-made directive keeps working, minus the quiet zero.\n */\n private renderBadge(badge: unknown) {\n if (badge === false || badge === null || badge === undefined) {\n return nothing\n }\n\n if (isAsyncIterable(badge)) {\n return asyncReplace(badge, value => html`<div badge ?zero=${isZero(value)}>${value}</div>`)\n }\n\n return html`<div badge ?zero=${isZero(badge)}>${badge}</div>`\n }\n\n renderMenus(menus: Menu[], activeTopLevel?: Menu, activeMenu?: Menu, depth = 0): TemplateResult | typeof nothing {\n if (menus.length == 0) {\n return nothing\n }\n\n return html`\n <ul>\n ${menus.map(menu => {\n var { type, name, active, path, label = name, icon, menus = [], description } = menu\n active = active && typeof active === 'function' ? active.call(menu, { path: this.path }) : false\n /*\n * 건수는 값이거나 값을 내는 함수다. 함수의 반환은 화면에 그릴 수 있는 무엇이든 온다 —\n * 숫자이거나, 갱신될 때마다 바뀌는 Lit 디렉티브다. 그래서 따로 담는다.\n */\n const badge: unknown = typeof menu.badge === 'function' ? menu.badge.call(menu) : (menu.badge ?? false)\n\n return type == 'group'\n ? html`<li group-label>${label}</li>`\n : html`\n <!--\n popped — **지금 팝업을 연 항목**이다. active(지금 페이지)와 다른 뜻이라\n 다른 표시를 준다. 접힌 레일에서 강조된 아이콘은 「지금 페이지」만 뜻하므로,\n 이 표시가 없으면 어느 항목의 팝업인지 알 수 없다.\n -->\n <!--\n active 와 current 는 뜻이 다르다.\n\n 최상위의 active 하위가 펼쳐져 있다 (여닫힘)\n 하위의 active 이것이 지금 페이지다\n current 이것이 지금 페이지다 — 어느 층이든\n\n active 하나로 두면 「펼쳐져 있다」와 「지금 페이지다」에 같은 강조가 걸려,\n 최상위와 그 안의 한 줄이 나란히 강조된다.\n -->\n <!--\n branch — this item has children. The aggregate badge is a duplicate only while\n those children are on screen with their own counts; on a leaf nothing else\n carries the number, so hiding it there just loses it.\n -->\n <li\n ?active=${activeTopLevel ? menu === activeTopLevel : active}\n ?current=${!!activeMenu && menu === activeMenu}\n ?popped=${this.popped === menu}\n ?top=${depth === 0}\n ?branch=${menus.length > 0}\n .menu=${menu}\n menu\n >\n <a href=${path || '#'} title=${ifDefined(this.hoverText(label, description))}>\n <md-icon filled>${icon || 'fiber_manual_record'}</md-icon>\n <span>${label}</span>${this.renderBadge(badge)}\n ${menus.length > 0 ? html` <md-icon filled submenu-button></md-icon> ` : html``}\n </a>\n ${menus && this.renderMenus(menus || [], activeMenu, activeMenu, depth + 1)}\n </li>\n `\n })}\n </ul>\n `\n }\n\n render() {\n const { menus, activeTopLevel, activeMenu } = this\n\n /*\n * 레일이 아니어도 시스템 자리는 그린다.\n *\n * 한때 이것을 레일 가지 안에만 두었다. 그래서 **메뉴 감추기를 켜면 「관리」 한 줄이\n * 사라졌다** — 그 설정이 레일을 끄기 때문이다.\n *\n * 레일을 감추기와 배타로 둔 것은 **접기** 때문이다. 이미 숨은 것을 접을 수는 없다. 그 판단은\n * 접기에만 맞고, 시스템 자리는 접기와 아무 상관이 없다. 관계없는 것을 한 플래그에 묶었다.\n */\n if (!this.rail) {\n return html`${this.renderMenus(menus || [], activeTopLevel, activeMenu)} ${this.renderSystem()}\n ${this.renderPopped()}`\n }\n\n return html`\n <!--\n 접기 단추 — 맨 위에 둔다. 접힌 뒤 다시 펼치는 길이 같은 자리에 있어야 한다.\n -->\n <button\n class=\"railtoggle\"\n title=${i18next.t(this.collapsed ? 'text.expand-menu' : 'text.collapse-menu')}\n @click=${(e: MouseEvent) => this.toggleCollapsed(e)}\n >\n <md-icon>${this.collapsed ? 'menu' : 'menu_open'}</md-icon>\n <span>${i18next.t('text.collapse-menu')}</span>\n </button>\n ${this.renderMenus(menus || [], activeTopLevel, activeMenu)} ${this.renderSystem()} ${this.renderPopped()}\n `\n }\n\n /**\n * 시스템 항목 — **바닥에 붙는다.**\n *\n * 프로필 · 로그아웃 · 설정은 하루에 한 번 여는 것이고, 일하는 화면들과 같은 깊이에 있으면\n * 자주 여는 것을 밀어낸다. 그래서 메뉴 끝에 두고 사이를 빈 자리로 벌린다.\n *\n * 목록이 비면 이 자리도 없다 — 각 패키지가 권한이 없으면 등록 자체를 안 하므로, 비어 있는\n * 것은 「볼 것이 없다」는 뜻이다. 빈 묶음 이름만 남겨 두면 눌러도 아무 일이 없다.\n *\n * 펼친 상태에서도 팝업으로 연다. 이 항목들은 **주소가 아니라 함수**라, 그 자리에서 펼치면\n * 옆의 하위 메뉴들과 같은 모양이 되어 「눌러도 화면이 안 바뀌는 메뉴」로 읽힌다.\n */\n private renderSystem(): TemplateResult | typeof nothing {\n if (!this.morendas.length) {\n return nothing\n }\n\n /*\n * **보통 메뉴 줄과 같은 모양으로 그린다.**\n *\n * 전에는 button.railitem 으로 따로 그렸고, 그 스타일이 레일에만 있어서 다른 모양에서는\n * 꾸밈이 없었다. ul > li > a 로 두면 레일과 기존 모양이 각자 가진 규칙이 그대로 붙는다 —\n * 여백 · 색 · hover · 접힘 · 화살표 · 팝업 표시까지.\n *\n * `li` 에 `menu` 를 달아도 `.menu` 속성은 주지 않는다. `renderMenus` 의 클릭 처리기가\n * `menuElement?.menu` 로 가르므로, 그것이 없으면 이 줄을 건드리지 않고 아래 `@click` 이 받는다.\n */\n /* 팝업으로 열리는 모양에서는 팝업 상태로, 그 밖에서는 다른 최상위와 같은 상태로. */\n const current = currentMorenda(this.morendas, this.path)\n /*\n * 「관리」 아래 화면을 열어 두었으면 묶음도 펼친다 — 다른 최상위가 주소로 펼쳐지는 것과 같다.\n * 그 화면은 메뉴에 없어서 주소가 펼칠 최상위를 못 정하니(`activeTopLevel` 이 비어 있다) 여기서 정한다.\n */\n const open =\n childrenOpenAs(this.mode) === 'popup'\n ? this.popped === SYSTEM\n : this.activeTopLevel === SYSTEM || (!this.activeTopLevel && !!current)\n\n return html`\n <div class=\"railspacer\"></div>\n <div group-label>${i18next.t('text.system')}</div>\n <ul>\n <li menu ?active=${open} ?popped=${childrenOpenAs(this.mode) === 'popup' && open} ?top=${true}>\n <a href=\"#\" title=${i18next.t('text.manage')} @click=${(e: MouseEvent) => this.openSystem(e)}>\n <md-icon filled>admin_panel_settings</md-icon>\n <span>${i18next.t('text.manage')}</span>\n <md-icon filled submenu-button></md-icon>\n </a>\n <!--\n 하위를 **그 자리에** 둔다 — 다른 최상위와 같은 규칙이다.\n\n 펼친 상태에서 팝업으로 열면 이 줄만 다르게 굴고, 특히 메뉴를 감추는 모드(모바일에서\n 쓴다)에서는 화면 어딘가에 고정된 팝업이 뜰 자리가 없다.\n\n 접힌 레일에서는 이 목록이 감춰지고(56px 안에 들어가지 않는다) 팝업이 대신 뜬다 —\n 그것도 다른 최상위와 같다.\n -->\n <ul>\n ${this.morendas.map(\n morenda => html`<li ?current=${morenda === current}>\n <a href=\"#\" @click=${(e: Event) => this.runMorenda(e, morenda)}>\n ${morenda.icon}<span>${morenda.name}</span>\n </a>\n </li>`\n )}\n </ul>\n </li>\n </ul>\n `\n }\n\n /** 시스템 항목은 주소가 아니라 함수다. 이동을 막고 부른다. */\n private runMorenda(e: Event, morenda: any) {\n e.preventDefault()\n this.popped = undefined\n morenda.action?.()\n }\n\n /**\n * 시스템 줄을 누른다 — **다른 최상위와 똑같은 두 갈래다.**\n *\n * 한때 시스템만 자기 상태(`popped`)를 따로 썼다. 다른 최상위는 `activeTopLevel` 하나를 나눠\n * 쓰는데 시스템만 그 밖에 있었으니, **다른 묶음이 열려 있어도 시스템이 함께 열렸다.** 한 번에\n * 하나만 열리는 규칙에서 이 줄만 빠져 있었다.\n *\n * 이제 같은 상태를 쓴다. 접힌 레일에서만 팝업이고, 그때는 다른 최상위도 팝업이다.\n */\n private openSystem(e: MouseEvent) {\n e.preventDefault()\n /* 이 클릭이 document 로 올라가면 팝업이 바로 닫힌다. */\n e.stopPropagation()\n\n if (childrenOpenAs(this.mode) === 'popup') {\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n\n this._popLeft = this.getBoundingClientRect().right + 8\n this._popPrefer = rect.top\n this._popTop = rect.top\n this.popped = this.popped === SYSTEM ? undefined : SYSTEM\n return\n }\n\n /* 그 자리에서 열린다 — 하나만 열리는 규칙을 함께 쓴다. */\n this.popped = undefined\n this.dispatchEvent(\n new CustomEvent('active-toplevel', {\n bubbles: true,\n detail: this.activeTopLevel === SYSTEM ? undefined : SYSTEM\n })\n )\n }\n\n /**\n * 접힌 상태에서 하위 메뉴를 팝업으로 낸다.\n *\n * 그 자리에서 열지 않는 이유는 56px 안에 들여쓴 목록이 들어가지 않기 때문이다. 접힌 레일에서\n * 하위를 열 길이 없으면 **접는 순간 화면의 절반에 갈 수 없게 된다** — 접기가 기능이 아니라\n * 함정이 된다.\n */\n private renderPopped(): TemplateResult | typeof nothing {\n const menu = this.popped\n\n if (!menu || childrenOpenAs(this.mode) !== 'popup') {\n return nothing\n }\n\n const system = menu === SYSTEM\n\n return html`\n <!--\n 노브 — 팝업이 어느 항목에서 열렸는지 가리킨다.\n\n **팝업 안에 두면 안 보인다.** 팝업은 목록이 길 때 스크롤해야 해서 overflow-y: auto 인데,\n 그러면 브라우저가 overflow-x 도 auto 로 계산한다. 노브는 팝업의 왼쪽 선 밖으로 나가야\n 하므로 그 스크롤 박스에 잘린다. 그래서 형제로 두고 화면 좌표로 세운다.\n -->\n <div class=\"railknob\" hidden></div>\n <div class=\"railpop\" style=\"left:${this._popLeft}px; top:${this._popTop}px\">\n <div class=\"phead\">${system ? i18next.t('text.manage') : menu.label || menu.name}</div>\n <!--\n 하위를 **레일 안쪽과 똑같이 그린다.**\n\n 한때 팝업 줄을 따로 만들었다(PopRow). 그래서 옮겨 적을 것을 세 번 빠뜨렸다 — 건수 ·\n 지금 페이지 · 그리고 처음에 이름과 아이콘. 빠뜨려도 오류가 나지 않아 화면을 보고서야\n 알았다.\n\n 같은 함수로 그리면 옮겨 적을 것이 없다. 앞으로 하위에 무엇을 더해도 팝업이 따라온다.\n -->\n ${system ? this.renderSystemRows() : this.renderMenus(menu.menus || [], this.activeMenu, this.activeMenu, 1)}\n </div>\n `\n }\n\n /**\n * 시스템 항목 줄들 — **이것만 따로 그린다.**\n *\n * morenda 는 주소가 아니라 함수를 갖는다(`action`). 아이콘과 이름도 Lit 템플릿이라 `Menu` 모양이\n * 아니다. 억지로 `Menu` 로 바꿔 넘기면 그 변환이 또 옮겨 적는 자리가 된다.\n */\n private renderSystemRows(): TemplateResult {\n const current = currentMorenda(this.morendas, this.path)\n\n return html`\n <ul>\n ${this.morendas.map(\n morenda => html`<li ?current=${morenda === current}>\n <a href=\"#\" @click=${(e: Event) => this.runMorenda(e, morenda)}>${morenda.icon}<span>${morenda.name}</span></a>\n </li>`\n )}\n </ul>\n `\n }\n\n /**\n * 팝업이 화면 안에 들어가게 세로 자리를 맞춘다.\n *\n * ── 왜 그린 뒤에 하나 ───────────────────────────────────────────────────\n * 높이를 알아야 맞출 수 있고, 높이는 그려 봐야 안다. 항목마다 하위 수가 다르다 — 「기준정보」는\n * 열여섯 줄이고 「배우기」는 한 줄이다.\n *\n * ── 규칙 ────────────────────────────────────────────────────────────────\n * 누른 항목의 윗선에서 시작하는 것이 바람이다. 그대로 두면 아래쪽 항목에서 팝업이 화면 밖으로\n * 나간다. 그래서 **아래로 넘치는 만큼 위로 올린다.** 그래도 안 들어가면 위 여백에 붙이고\n * 그때만 스크롤한다.\n *\n * 자리를 반응 상태로 두지 않고 style 에 바로 쓴다 — 값이 바뀔 때마다 다시 그리면 그 렌더에서\n * 또 재게 되고, 재는 값이 그리기에 달려 있으므로 서로 물린다.\n */\n private fitPopup() {\n const pop = this.renderRoot?.querySelector?.('.railpop') as HTMLElement | null\n\n if (!pop) {\n return\n }\n\n const margin = OxMenuPortrait.POP_MARGIN\n const height = pop.offsetHeight\n const room = window.innerHeight - margin * 2\n\n /* 화면보다 크면 위에 붙이고 스크롤한다. 그 아래 다시 재지 않는다. */\n const top = height >= room ? margin : Math.max(margin, Math.min(this._popPrefer, window.innerHeight - margin - height))\n\n if (Math.round(top) !== Math.round(this._popTop)) {\n this._popTop = top\n }\n\n pop.style.top = `${top}px`\n this.fitKnob(pop, top)\n }\n\n /**\n * 노브를 그 항목의 가운데 높이에 둔다.\n *\n * ── 범위를 벗어나면 감추지 않고 끝에 붙인다 ──────────────────────────────\n * 팝업이 위로 밀리는 것은 **아래에 자리가 없어서**이고, 그만큼만 밀린다. 그래서 그 항목은\n * 거의 항상 팝업의 세로 범위 안으로 들어온다. 벗어나는 것은 라운드 모서리에 걸치는 몇 px\n * 뿐이다. 그때 감추면 **자리가 좁을 때만 표시가 사라진다** — 가장 필요한 순간이다.\n *\n * 그래서 모서리 안쪽으로 붙인다. 정확히 그 줄을 가리키지 못해도 「위쪽」·「아래쪽」은\n * 가리키고, 어느 항목인지는 그 항목의 popped 표시가 말한다.\n */\n private fitKnob(pop: HTMLElement, popTop: number) {\n const knob = this.renderRoot?.querySelector?.('.railknob') as HTMLElement | null\n /* 최상위 항목이거나 시스템 단추다 — 둘 다 popped 를 단다. */\n const item = this.renderRoot?.querySelector?.('[popped]') as HTMLElement | null\n\n if (!knob) {\n return\n }\n\n if (!item) {\n knob.hidden = true\n return\n }\n\n const rect = item.getBoundingClientRect()\n const centre = rect.top + rect.height / 2 - popTop\n /* 라운드 모서리에 걸치면 반쪽만 보인다. 그 안쪽까지만 간다. */\n const inset = 14\n const within = Math.max(inset, Math.min(centre, pop.offsetHeight - inset))\n /* 정사각의 반. 가운데가 그 줄의 가운데에 오게 한다. */\n const half = knob.offsetHeight / 2 || 5\n\n knob.hidden = false\n /* 팝업의 왼쪽 선에 반쯤 물리게 — 선이 그 자리에서 끊긴 것처럼 보인다. */\n knob.style.left = `${this._popLeft - half}px`\n knob.style.top = `${popTop + within - half}px`\n }\n\n protected updated() {\n this.fitPopup()\n\n /*\n * 닫힌 하위의 `settled` 를 지운다. 다 펼쳐진 하위는 상한이 풀려(max-height: none) 닫을 때\n * 움직임이 없으므로 transitionstart 가 오지 않고, 표시가 남으면 **다시 열 때 움직임 없이 한 번에**\n * 선다(§`menu-portrait-styles.ts` 의 「다 펼쳐지면 상한을 푼다」).\n */\n this.renderRoot?.querySelectorAll?.('li:not([active]) > ul[settled]').forEach(ul => ul.removeAttribute('settled'))\n }\n\n /** 접기/펼치기는 `ox-menu-part` 가 한다 — 폭과 저장이 그쪽 것이다. 여기서는 뜻만 올린다. */\n private toggleCollapsed(e: MouseEvent) {\n e.stopPropagation()\n this.popped = undefined\n this.dispatchEvent(new CustomEvent('collapse-toggle', { bubbles: true, composed: true }))\n }\n\n firstUpdated() {\n this.renderRoot.addEventListener('click', (e: Event) => {\n const menuElement = (e.target as Element)!.closest('[menu]')\n\n /*\n * 팝업 안을 눌렀으면 팝업을 닫는다 — 이동은 라우터가 한다(막지 않는다).\n *\n * 한때 팝업 컨테이너에 stopPropagation 을 걸어 두었다. 그러면 라우터까지 막혀 **페이지\n * 전체가 다시 읽혔다.** 막지 않고 닫기만 한다.\n */\n if ((e.target as Element)!.closest('.railpop')) {\n this.popped = undefined\n }\n\n /*\n * `active-toplevel` 은 **최상위에서만** 나간다.\n *\n * `closest('[menu]')` 는 가장 가까운 줄을 집으므로 하위를 누르면 하위가 잡힌다. 그것을\n * 그대로 올리면 「열린 묶음」이 하위로 바뀌어, 그 묶음이 닫힌 것처럼 된다. 지금까지는 하위\n * 클릭이 곧 이동이라 주소가 바뀌며 저절로 나았지만, 나을 이유가 없는 자리다.\n */\n //@ts-ignore\n if (menuElement?.menu && menuElement.hasAttribute('top')) {\n //@ts-ignore\n let menu = menuElement.menu\n\n /*\n * 접힌 레일에서 하위가 있는 항목은 **팝업으로 연다.**\n *\n * 이 자리에서 갈라야 한다 — 아래로 흘려 보내면 `active-toplevel` 이 나가고, 그러면\n * 56px 안에서 아무것도 안 보이는 채로 「열렸다」가 된다. 팝업이 접힌 레일에서 하위로\n * 가는 유일한 길이다.\n */\n /*\n * 하위가 있는 최상위를 눌렀다. 무엇을 할지는 **모양이 정한다**(§`menu-mode.ts`).\n *\n * 팝업으로 열리는 모양 팝업을 띄운다 (접힌 레일)\n * 이동하지 않는 모양 그 자리에서 펼치기만 한다 (서랍)\n * 나머지 이동하면서 펼친다 — 아래로 흘려 보낸다\n */\n if (menu.menus?.length && !topNavigates(this.mode) && childrenOpenAs(this.mode) === 'inline') {\n e.stopPropagation()\n e.preventDefault()\n\n this.dispatchEvent(\n new CustomEvent('active-toplevel', {\n bubbles: true,\n detail: this.activeTopLevel === menu ? undefined : menu\n })\n )\n\n return\n }\n\n if (menu.menus?.length && childrenOpenAs(this.mode) === 'popup') {\n e.stopPropagation()\n e.preventDefault()\n\n const rect = (menuElement as HTMLElement).getBoundingClientRect()\n\n /*\n * **레일의 오른쪽을 기준으로 띄운다** — 누른 항목의 오른쪽이 아니다.\n *\n * 항목은 레일 안쪽 여백만큼 들어가 있어서, 항목 기준으로 재면 팝업이 레일 끝에 정확히\n * 붙는다(56px 레일에서 left 가 56 이 됐다). 붙으면 레일을 덮은 것처럼 보인다.\n *\n * 틈은 8px 이다. 16px 은 떨어져 떠 있는 것처럼 보였고, 0 은 레일에 얹힌 것처럼\n * 보였다. 8px 이 「레일에서 열린 다른 면」으로 읽히는 자리다.\n */\n this._popLeft = this.getBoundingClientRect().right + 8\n /*\n * 누른 항목의 윗선에서 시작하는 것은 **바람**일 뿐이다. 실제 자리는 그린 뒤 높이를\n * 재서 정한다(`fitPopup`) — 여기서 고정하면 항목이 아래쪽일 때 팝업이 화면 밖으로\n * 나가거나 열여섯 줄짜리 목록에 스크롤이 생긴다.\n */\n this._popPrefer = rect.top\n this._popTop = rect.top\n this.popped = this.popped === menu ? undefined : menu\n\n return\n }\n\n /*\n * ── 화살표가 토글이고, 글자가 이동이다 ────────────────────────────\n * 최상위 항목은 두 일을 한다 — 자기 화면으로 가고, 하위를 펼친다. 글자를 누르면 링크가\n * 주소를 바꾸므로 **접기가 살아남을 수 없다** — 주소가 바뀌면 그 주소의 메뉴가 다시\n * 열린다(§`ox-menu-part` 의 `_closedByUser`).\n *\n * 그래서 접는 자리를 화살표로 옮긴다. 화살표는 이미 「펼침」을 그리고 있어서 사람이 그것을\n * 누르려 한다. 누르면 이동하지 않고 접기만 한다.\n */\n const onCaret = !!(e.target as Element)?.closest?.('[submenu-button]')\n\n /*\n * 펼쳐져 있는 묶음은 **글자를 눌러도 접기만 한다.** 이동을 두면 주소가 바뀌고 그 주소의 메뉴가\n * 다시 펼쳐져, 접으려고 누른 사람에게는 「다시 열렸다」로 보인다. 접혀 있을 때만 글자가 이동하며\n * 펼친다.\n */\n const collapsesOnly = !!menu.menus?.length && this.activeTopLevel === menu\n\n if (!menu.path || onCaret || collapsesOnly) {\n /* protect to act move to href. */\n e.stopPropagation()\n e.preventDefault()\n }\n\n this.dispatchEvent(\n new CustomEvent('active-toplevel', {\n bubbles: true,\n detail: this.activeTopLevel === menu ? undefined : menu\n })\n )\n }\n\n /* to respond even if current acting menu is selected */\n let href = (e.target as HTMLAnchorElement)!.href\n href && location.href === href && navigate(href + '#force', true)\n })\n\n /* to hide scrollbar during transition */\n this.renderRoot.addEventListener('transitionstart', e => {\n ;(e.target as Element).removeAttribute('settled')\n })\n this.renderRoot.addEventListener('transitionend', e => {\n ;(e.target as Element).setAttribute('settled', '')\n })\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ox-menu-portrait.js","sourceRoot":"","sources":["../../src/ox-menu-portrait.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { html, LitElement, nothing, TemplateResult } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { asyncReplace } from 'lit/directives/async-replace.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { navigate, store } from '@operato/shell'\nimport { ScrollbarStyles } from '@operato/styles'\nimport { addressController } from '@operato/utils/address.js'\n\nimport { Menu } from './types.js'\n\nimport { MenuPortraitStyles } from './menu-portrait-styles.js'\nimport { childrenOpenAs, menuMode, showsLabels, topNavigates } from './menu-mode.js'\nimport { currentMorenda } from './menu-active.js'\n\n/** A stream of counts, as opposed to one value or a ready-made directive. */\nfunction isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return typeof (value as any)?.[Symbol.asyncIterator] === 'function'\n}\n\n/**\n * Nothing is waiting.\n *\n * Only a real zero counts. An empty string is a count that has not arrived, and the pill is hidden\n * for that case by `[badge]:empty` — treating it as zero here would draw a grey pill on load.\n */\nfunction isZero(value: unknown): boolean {\n return value === 0 || value === '0'\n}\n\n/**\n * 시스템 항목을 담는 가짜 최상위.\n *\n * 팝업이 「어느 최상위에서 열렸나」를 하나의 값(`popped`)으로 들고 있어서, 시스템도 최상위인\n * 것처럼 다룬다. 그래야 노브와 자리 계산이 한 벌로 남는다.\n */\nconst SYSTEM = { name: 'ox-menu-system' } as Menu\n\n@customElement('ox-menu-portrait')\nexport class OxMenuPortrait extends localize(i18next)(LitElement) {\n static styles = [ScrollbarStyles, MenuPortraitStyles]\n\n @property({ type: Array }) menus?: Menu[]\n @property({ type: Object }) activeTopLevel?: Menu\n @property({ type: Object }) activeMenu?: Menu\n @property({ type: String }) path!: string\n\n /**\n * 레일 모드 — 접을 수 있고, 접히면 하위가 팝업으로 뜬다.\n *\n * **옵트인이다.** 켜지 않은 앱은 지금과 한 글자도 다르지 않다. 모양이 함께 바뀌는 것은 취향이\n * 아니라 요건이다 — 기존 모양은 줄마다 폭 전체를 쓰는 밑줄이 있고 왼쪽 여백이 16px 이라 56px\n * 에서 무너진다(§`menu-rail-styles.ts`).\n */\n @property({ type: Boolean, reflect: true }) rail = false\n\n /**\n * 접힘 — 아이콘만.\n *\n * **주인은 이 컴포넌트가 아니다.** 폭을 정하는 요소는 `ox-menu-part` 이고(그쪽에 `min-width`\n * 가 있다), 셸의 리사이즈 손잡이도 그 요소에 인라인 폭을 쓴다. 그래서 상태와 저장은 그쪽이\n * 갖고 여기는 받아서 그린다.\n */\n @property({ type: Boolean, reflect: true }) collapsed = false\n\n /**\n * 서랍인가 — 화면 위에 겹쳐 떴다가 닫히는 메뉴.\n *\n * 그때 최상위는 **펼치기만** 한다. 누르는 순간 서랍이 닫히면 그 묶음의 나머지 하위를 볼\n * 기회가 없다(§`ox-menu-part` 의 `drawer`).\n */\n @property({ type: Boolean, reflect: true }) drawer = false\n\n /**\n * 지금 어떤 모양으로 서 있나 — 세 플래그에서 하나로 모은다.\n *\n * 이 값과 그에 딸린 두 답(`하위를 어디에` · `최상위가 이동하나`)은 `menu-mode.ts` 에 있고\n * 시험으로 못박혀 있다. 여기서 그때그때 판단하지 않는다 — 그렇게 하다가 네 번 깨졌다.\n */\n private get mode() {\n return menuMode({ rail: this.rail, collapsed: this.collapsed, drawer: this.drawer })\n }\n\n /** 접힌 상태에서 팝업으로 열린 최상위 메뉴. 시스템 팝업이면 SYSTEM 이다. */\n @state() private popped?: Menu\n\n /**\n * 시스템 항목 — 프로필 · 로그아웃 · 설정처럼 **앱이 아니라 프레임워크가 붙이는 것**들.\n *\n * 하드코딩하지 않는다. 각 패키지가 부팅할 때 `ADD_MORENDA` 로 등록하고(권한이 없으면 등록\n * 자체를 안 한다), 우리는 그 목록을 그대로 그린다. 그래서 목록이 비면 이 자리도 없다.\n */\n /*\n * private 을 두지 않는다 — 시험이 이 목록을 넣어 보고 「항목이 없으면 자리도 없다」를 확인한다.\n * 앱에서는 store 가 채운다(아래 connectedCallback).\n */\n @state() morendas: any[] = []\n\n private _unsubscribeStore?: () => void\n\n /** 팝업 자리 — 누른 항목의 오른쪽. 세로는 그린 뒤 재서 맞춘다(§`fitPopup`). */\n private _popLeft = 0\n private _popTop = 0\n /** 누른 항목의 윗선. 화면에 들어가면 이 자리를 쓴다. */\n private _popPrefer = 0\n\n /** 팝업이 화면 안에 들어가게 세로 자리를 맞춘다. 팝업 밖 여백. */\n private static readonly POP_MARGIN = 8\n\n /**\n * 팝업 밖을 누르면 닫는다.\n *\n * ── 팝업 안의 클릭을 막지 않는다 ────────────────────────────────────────\n * 한때 팝업 컨테이너에 stopPropagation 을 걸어 두었다. 팝업 안을 눌러도 이 처리기가 받아\n * 곧바로 닫히던 것을 막으려던 것인데, 그것이 **셸의 라우터까지 막았다.**\n *\n * 라우터는 document.body 에서 클릭을 받아 composedPath 로 A 를 찾고 preventDefault 한 뒤\n * 화면만 바꾼다(@operato/shell 의 installRouter). 클릭이 거기까지 못 가면 브라우저의 기본\n * 이동이 그대로 일어나 **페이지 전체가 다시 읽혔다.**\n *\n * 그래서 막지 않고, 여기서 「팝업 안이면 닫지 않는다」로 가른다. 줄을 누를 때 닫는 일은 그\n * 줄의 처리기가 한다.\n */\n private _onDocClick = (e: MouseEvent) => {\n if (!this.popped) {\n return\n }\n\n const pop = this.renderRoot?.querySelector?.('.railpop')\n\n if (pop && e.composedPath().includes(pop)) {\n return\n }\n\n this.popped = undefined\n }\n\n connectedCallback() {\n super.connectedCallback()\n document.addEventListener('click', this._onDocClick)\n\n /*\n * morenda 는 각 패키지의 부팅에서 **비동기로** 등록된다. 한 번 읽고 끝내면 늦게 붙는 것이\n * 빠진다. 길이가 바뀔 때만 다시 그린다 — 이 목록은 늘어나기만 한다.\n */\n const read = () => ((store.getState() as any)?.more?.morendas || []) as any[]\n\n this.morendas = read()\n this._unsubscribeStore = store.subscribe(() => {\n const next = read()\n if (next.length !== this.morendas.length) {\n this.morendas = next\n }\n })\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n document.removeEventListener('click', this._onDocClick)\n this._unsubscribeStore?.()\n }\n\n /**\n * 마우스를 올렸을 때 뜨는 글.\n *\n * ── 접혔을 때는 이름이 먼저다 ───────────────────────────────────────────\n * 접히면 아이콘만 남으므로 **이름을 모른다.** 그때는 이름을 윗줄에 얹고 설명을 아랫줄에 둔다.\n * 펼쳐져 있으면 이름은 이미 옆에 있으니 설명만 낸다.\n *\n * 줄바꿈으로 잇는다 — 대시로 이으면 설명 안의 대시와 겹쳐 「A — B — C」가 된다.\n *\n * 설명도 없고 이름도 안 보이는 경우가 아니면 아무것도 내지 않는다. 이름을 그대로 되풀이하는\n * 툴팁은 소음이다.\n */\n private hoverText(label?: unknown, description?: string) {\n const name = typeof label === 'string' ? label : undefined\n\n if (showsLabels(this.mode)) {\n return description || undefined\n }\n\n return description && name ? `${name}\\n${description}` : description || name\n }\n\n /**\n * @param depth 0 이면 최상위다. **하위도 `active` 를 달기 때문에** 깊이를 값으로 넘긴다 —\n * CSS 로 「최상위인 li」를 가리려면 `:not(li li)` 같은 것이 필요하고, 그건 읽는 사람이\n * 한 번 더 생각해야 하는 선택자다.\n */\n /**\n * The count pill next to a menu label.\n *\n * Zero is drawn, and drawn quietly.\n *\n * The pill is the \"there is something here for you\" signal, and 작성 중 0 wore the same filled\n * accent as 할 일 9 — same colour rgb(12,122,76), same 28x17 box. Four of them in a column read\n * as four things waiting. Hiding zero is not the answer either: an empty slot cannot be told\n * apart from a count that has not arrived yet. So zero keeps its place and loses the signal.\n *\n * ── Why this method exists ────────────────────────────────────────────\n * Callers used to hand over a Lit directive — `badge: () => asyncReplace(counts(name))` — which\n * left this component with something it could only drop into a slot. It could not see the value,\n * so it could not decide how to draw it. The component that draws the pill has to own how the\n * pill looks, so it now takes the stream and wraps it here.\n *\n * A caller that still passes a ready-made directive keeps working, minus the quiet zero.\n */\n private renderBadge(badge: unknown) {\n if (badge === false || badge === null || badge === undefined) {\n return nothing\n }\n\n if (isAsyncIterable(badge)) {\n return asyncReplace(badge, value => html`<div badge ?zero=${isZero(value)}>${value}</div>`)\n }\n\n return html`<div badge ?zero=${isZero(badge)}>${badge}</div>`\n }\n\n renderMenus(menus: Menu[], activeTopLevel?: Menu, activeMenu?: Menu, depth = 0): TemplateResult | typeof nothing {\n if (menus.length == 0) {\n return nothing\n }\n\n return html`\n <ul>\n ${menus.map(menu => {\n var { type, name, active, path, label = name, icon, menus = [], description } = menu\n active = active && typeof active === 'function' ? active.call(menu, { path: this.path }) : false\n /*\n * 건수는 값이거나 값을 내는 함수다. 함수의 반환은 화면에 그릴 수 있는 무엇이든 온다 —\n * 숫자이거나, 갱신될 때마다 바뀌는 Lit 디렉티브다. 그래서 따로 담는다.\n */\n const badge: unknown = typeof menu.badge === 'function' ? menu.badge.call(menu) : (menu.badge ?? false)\n\n return type == 'group'\n ? html`<li group-label>${label}</li>`\n : html`\n <!--\n popped — **지금 팝업을 연 항목**이다. active(지금 페이지)와 다른 뜻이라\n 다른 표시를 준다. 접힌 레일에서 강조된 아이콘은 「지금 페이지」만 뜻하므로,\n 이 표시가 없으면 어느 항목의 팝업인지 알 수 없다.\n -->\n <!--\n active 와 current 는 뜻이 다르다.\n\n 최상위의 active 하위가 펼쳐져 있다 (여닫힘)\n 하위의 active 이것이 지금 페이지다\n current 이것이 지금 페이지다 — 어느 층이든\n\n active 하나로 두면 「펼쳐져 있다」와 「지금 페이지다」에 같은 강조가 걸려,\n 최상위와 그 안의 한 줄이 나란히 강조된다.\n -->\n <!--\n branch — this item has children. The aggregate badge is a duplicate only while\n those children are on screen with their own counts; on a leaf nothing else\n carries the number, so hiding it there just loses it.\n -->\n <li\n ?active=${activeTopLevel ? menu === activeTopLevel : active}\n ?current=${!!activeMenu && menu === activeMenu}\n ?popped=${this.popped === menu}\n ?top=${depth === 0}\n ?branch=${menus.length > 0}\n .menu=${menu}\n menu\n >\n <a href=${path || '#'} title=${ifDefined(this.hoverText(label, description))}>\n <md-icon filled>${icon || 'fiber_manual_record'}</md-icon>\n <span>${label}</span>${this.renderBadge(badge)}\n ${menus.length > 0 ? html` <md-icon filled submenu-button></md-icon> ` : html``}\n </a>\n ${menus && this.renderMenus(menus || [], activeMenu, activeMenu, depth + 1)}\n </li>\n `\n })}\n </ul>\n `\n }\n\n render() {\n const { menus, activeTopLevel, activeMenu } = this\n\n /*\n * 레일이 아니어도 시스템 자리는 그린다.\n *\n * 한때 이것을 레일 가지 안에만 두었다. 그래서 **메뉴 감추기를 켜면 「관리」 한 줄이\n * 사라졌다** — 그 설정이 레일을 끄기 때문이다.\n *\n * 레일을 감추기와 배타로 둔 것은 **접기** 때문이다. 이미 숨은 것을 접을 수는 없다. 그 판단은\n * 접기에만 맞고, 시스템 자리는 접기와 아무 상관이 없다. 관계없는 것을 한 플래그에 묶었다.\n */\n if (!this.rail) {\n return html`${this.renderMenus(menus || [], activeTopLevel, activeMenu)} ${this.renderSystem()}\n ${this.renderPopped()}`\n }\n\n return html`\n <!--\n 접기 단추 — 맨 위에 둔다. 접힌 뒤 다시 펼치는 길이 같은 자리에 있어야 한다.\n -->\n <button\n class=\"railtoggle\"\n title=${i18next.t(this.collapsed ? 'text.expand-menu' : 'text.collapse-menu')}\n @click=${(e: MouseEvent) => this.toggleCollapsed(e)}\n >\n <md-icon>${this.collapsed ? 'menu' : 'menu_open'}</md-icon>\n <span>${i18next.t('text.collapse-menu')}</span>\n </button>\n ${this.renderMenus(menus || [], activeTopLevel, activeMenu)} ${this.renderSystem()} ${this.renderPopped()}\n `\n }\n\n /**\n * 시스템 항목 — **바닥에 붙는다.**\n *\n * 프로필 · 로그아웃 · 설정은 하루에 한 번 여는 것이고, 일하는 화면들과 같은 깊이에 있으면\n * 자주 여는 것을 밀어낸다. 그래서 메뉴 끝에 두고 사이를 빈 자리로 벌린다.\n *\n * 목록이 비면 이 자리도 없다 — 각 패키지가 권한이 없으면 등록 자체를 안 하므로, 비어 있는\n * 것은 「볼 것이 없다」는 뜻이다. 빈 묶음 이름만 남겨 두면 눌러도 아무 일이 없다.\n *\n * 펼친 상태에서도 팝업으로 연다. 이 항목들은 **주소가 아니라 함수**라, 그 자리에서 펼치면\n * 옆의 하위 메뉴들과 같은 모양이 되어 「눌러도 화면이 안 바뀌는 메뉴」로 읽힌다.\n */\n private renderSystem(): TemplateResult | typeof nothing {\n if (!this.morendas.length) {\n return nothing\n }\n\n /*\n * **보통 메뉴 줄과 같은 모양으로 그린다.**\n *\n * 전에는 button.railitem 으로 따로 그렸고, 그 스타일이 레일에만 있어서 다른 모양에서는\n * 꾸밈이 없었다. ul > li > a 로 두면 레일과 기존 모양이 각자 가진 규칙이 그대로 붙는다 —\n * 여백 · 색 · hover · 접힘 · 화살표 · 팝업 표시까지.\n *\n * `li` 에 `menu` 를 달아도 `.menu` 속성은 주지 않는다. `renderMenus` 의 클릭 처리기가\n * `menuElement?.menu` 로 가르므로, 그것이 없으면 이 줄을 건드리지 않고 아래 `@click` 이 받는다.\n */\n /* 팝업으로 열리는 모양에서는 팝업 상태로, 그 밖에서는 다른 최상위와 같은 상태로. */\n const current = currentMorenda(this.morendas, this.path)\n /*\n * 「관리」 아래 화면을 열어 두었으면 묶음도 펼친다 — 다른 최상위가 주소로 펼쳐지는 것과 같다.\n * 그 화면은 메뉴에 없어서 주소가 펼칠 최상위를 못 정하니(`activeTopLevel` 이 비어 있다) 여기서 정한다.\n */\n const open =\n childrenOpenAs(this.mode) === 'popup'\n ? this.popped === SYSTEM\n : this.activeTopLevel === SYSTEM || (!this.activeTopLevel && !!current)\n\n return html`\n <div class=\"railspacer\"></div>\n <div group-label>${i18next.t('text.system')}</div>\n <ul>\n <li menu ?active=${open} ?popped=${childrenOpenAs(this.mode) === 'popup' && open} ?top=${true}>\n <a href=\"#\" title=${i18next.t('text.manage')} @click=${(e: MouseEvent) => this.openSystem(e)}>\n <md-icon filled>admin_panel_settings</md-icon>\n <span>${i18next.t('text.manage')}</span>\n <md-icon filled submenu-button></md-icon>\n </a>\n <!--\n 하위를 **그 자리에** 둔다 — 다른 최상위와 같은 규칙이다.\n\n 펼친 상태에서 팝업으로 열면 이 줄만 다르게 굴고, 특히 메뉴를 감추는 모드(모바일에서\n 쓴다)에서는 화면 어딘가에 고정된 팝업이 뜰 자리가 없다.\n\n 접힌 레일에서는 이 목록이 감춰지고(56px 안에 들어가지 않는다) 팝업이 대신 뜬다 —\n 그것도 다른 최상위와 같다.\n -->\n <ul>\n ${this.morendas.map(\n morenda => html`<li ?current=${morenda === current}>\n <a href=${morenda.page || '#'} @click=${(e: Event) => this.runMorenda(e, morenda)}>\n ${morenda.icon}<span>${morenda.name}</span>\n </a>\n </li>`\n )}\n </ul>\n </li>\n </ul>\n `\n }\n\n /**\n * 시스템 줄을 누른다.\n *\n * 여는 화면(`page`)을 적은 줄은 **다른 메뉴처럼 링크다** — 라우터가 받아 옮긴다. 한때 모든 줄이\n * `href=\"#\"` 에 함수를 직접 불렀는데, 좁은 화면에서 메뉴가 서랍(오버레이)으로 열리면 주소 쓰기가\n * 「오버레이 밖에서 온 쓰기」로 거절되어 아무 일도 없었다. 링크는 누른 자리를 출처로 가져간다.\n *\n * 화면을 여는 것이 아닌 줄(`action` 만 있는 줄)은 그대로 부르되, 출처를 이 메뉴로 밝힌다.\n */\n private runMorenda(e: Event, morenda: any) {\n this.popped = undefined\n\n if (morenda.page) {\n return\n }\n\n e.preventDefault()\n addressController().from(this, () => morenda.action?.())\n }\n\n /**\n * 시스템 줄을 누른다 — **다른 최상위와 똑같은 두 갈래다.**\n *\n * 한때 시스템만 자기 상태(`popped`)를 따로 썼다. 다른 최상위는 `activeTopLevel` 하나를 나눠\n * 쓰는데 시스템만 그 밖에 있었으니, **다른 묶음이 열려 있어도 시스템이 함께 열렸다.** 한 번에\n * 하나만 열리는 규칙에서 이 줄만 빠져 있었다.\n *\n * 이제 같은 상태를 쓴다. 접힌 레일에서만 팝업이고, 그때는 다른 최상위도 팝업이다.\n */\n private openSystem(e: MouseEvent) {\n e.preventDefault()\n /* 이 클릭이 document 로 올라가면 팝업이 바로 닫힌다. */\n e.stopPropagation()\n\n if (childrenOpenAs(this.mode) === 'popup') {\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n\n this._popLeft = this.getBoundingClientRect().right + 8\n this._popPrefer = rect.top\n this._popTop = rect.top\n this.popped = this.popped === SYSTEM ? undefined : SYSTEM\n return\n }\n\n /* 그 자리에서 열린다 — 하나만 열리는 규칙을 함께 쓴다. */\n this.popped = undefined\n this.dispatchEvent(\n new CustomEvent('active-toplevel', {\n bubbles: true,\n detail: this.activeTopLevel === SYSTEM ? undefined : SYSTEM\n })\n )\n }\n\n /**\n * 접힌 상태에서 하위 메뉴를 팝업으로 낸다.\n *\n * 그 자리에서 열지 않는 이유는 56px 안에 들여쓴 목록이 들어가지 않기 때문이다. 접힌 레일에서\n * 하위를 열 길이 없으면 **접는 순간 화면의 절반에 갈 수 없게 된다** — 접기가 기능이 아니라\n * 함정이 된다.\n */\n private renderPopped(): TemplateResult | typeof nothing {\n const menu = this.popped\n\n if (!menu || childrenOpenAs(this.mode) !== 'popup') {\n return nothing\n }\n\n const system = menu === SYSTEM\n\n return html`\n <!--\n 노브 — 팝업이 어느 항목에서 열렸는지 가리킨다.\n\n **팝업 안에 두면 안 보인다.** 팝업은 목록이 길 때 스크롤해야 해서 overflow-y: auto 인데,\n 그러면 브라우저가 overflow-x 도 auto 로 계산한다. 노브는 팝업의 왼쪽 선 밖으로 나가야\n 하므로 그 스크롤 박스에 잘린다. 그래서 형제로 두고 화면 좌표로 세운다.\n -->\n <div class=\"railknob\" hidden></div>\n <div class=\"railpop\" style=\"left:${this._popLeft}px; top:${this._popTop}px\">\n <div class=\"phead\">${system ? i18next.t('text.manage') : menu.label || menu.name}</div>\n <!--\n 하위를 **레일 안쪽과 똑같이 그린다.**\n\n 한때 팝업 줄을 따로 만들었다(PopRow). 그래서 옮겨 적을 것을 세 번 빠뜨렸다 — 건수 ·\n 지금 페이지 · 그리고 처음에 이름과 아이콘. 빠뜨려도 오류가 나지 않아 화면을 보고서야\n 알았다.\n\n 같은 함수로 그리면 옮겨 적을 것이 없다. 앞으로 하위에 무엇을 더해도 팝업이 따라온다.\n -->\n ${system ? this.renderSystemRows() : this.renderMenus(menu.menus || [], this.activeMenu, this.activeMenu, 1)}\n </div>\n `\n }\n\n /**\n * 시스템 항목 줄들 — **이것만 따로 그린다.**\n *\n * morenda 는 주소가 아니라 함수를 갖는다(`action`). 아이콘과 이름도 Lit 템플릿이라 `Menu` 모양이\n * 아니다. 억지로 `Menu` 로 바꿔 넘기면 그 변환이 또 옮겨 적는 자리가 된다.\n */\n private renderSystemRows(): TemplateResult {\n const current = currentMorenda(this.morendas, this.path)\n\n return html`\n <ul>\n ${this.morendas.map(\n morenda => html`<li ?current=${morenda === current}>\n <a href=${morenda.page || '#'} @click=${(e: Event) => this.runMorenda(e, morenda)}>${morenda.icon}<span>${morenda.name}</span></a>\n </li>`\n )}\n </ul>\n `\n }\n\n /**\n * 팝업이 화면 안에 들어가게 세로 자리를 맞춘다.\n *\n * ── 왜 그린 뒤에 하나 ───────────────────────────────────────────────────\n * 높이를 알아야 맞출 수 있고, 높이는 그려 봐야 안다. 항목마다 하위 수가 다르다 — 「기준정보」는\n * 열여섯 줄이고 「배우기」는 한 줄이다.\n *\n * ── 규칙 ────────────────────────────────────────────────────────────────\n * 누른 항목의 윗선에서 시작하는 것이 바람이다. 그대로 두면 아래쪽 항목에서 팝업이 화면 밖으로\n * 나간다. 그래서 **아래로 넘치는 만큼 위로 올린다.** 그래도 안 들어가면 위 여백에 붙이고\n * 그때만 스크롤한다.\n *\n * 자리를 반응 상태로 두지 않고 style 에 바로 쓴다 — 값이 바뀔 때마다 다시 그리면 그 렌더에서\n * 또 재게 되고, 재는 값이 그리기에 달려 있으므로 서로 물린다.\n */\n private fitPopup() {\n const pop = this.renderRoot?.querySelector?.('.railpop') as HTMLElement | null\n\n if (!pop) {\n return\n }\n\n const margin = OxMenuPortrait.POP_MARGIN\n const height = pop.offsetHeight\n const room = window.innerHeight - margin * 2\n\n /* 화면보다 크면 위에 붙이고 스크롤한다. 그 아래 다시 재지 않는다. */\n const top = height >= room ? margin : Math.max(margin, Math.min(this._popPrefer, window.innerHeight - margin - height))\n\n if (Math.round(top) !== Math.round(this._popTop)) {\n this._popTop = top\n }\n\n pop.style.top = `${top}px`\n this.fitKnob(pop, top)\n }\n\n /**\n * 노브를 그 항목의 가운데 높이에 둔다.\n *\n * ── 범위를 벗어나면 감추지 않고 끝에 붙인다 ──────────────────────────────\n * 팝업이 위로 밀리는 것은 **아래에 자리가 없어서**이고, 그만큼만 밀린다. 그래서 그 항목은\n * 거의 항상 팝업의 세로 범위 안으로 들어온다. 벗어나는 것은 라운드 모서리에 걸치는 몇 px\n * 뿐이다. 그때 감추면 **자리가 좁을 때만 표시가 사라진다** — 가장 필요한 순간이다.\n *\n * 그래서 모서리 안쪽으로 붙인다. 정확히 그 줄을 가리키지 못해도 「위쪽」·「아래쪽」은\n * 가리키고, 어느 항목인지는 그 항목의 popped 표시가 말한다.\n */\n private fitKnob(pop: HTMLElement, popTop: number) {\n const knob = this.renderRoot?.querySelector?.('.railknob') as HTMLElement | null\n /* 최상위 항목이거나 시스템 단추다 — 둘 다 popped 를 단다. */\n const item = this.renderRoot?.querySelector?.('[popped]') as HTMLElement | null\n\n if (!knob) {\n return\n }\n\n if (!item) {\n knob.hidden = true\n return\n }\n\n const rect = item.getBoundingClientRect()\n const centre = rect.top + rect.height / 2 - popTop\n /* 라운드 모서리에 걸치면 반쪽만 보인다. 그 안쪽까지만 간다. */\n const inset = 14\n const within = Math.max(inset, Math.min(centre, pop.offsetHeight - inset))\n /* 정사각의 반. 가운데가 그 줄의 가운데에 오게 한다. */\n const half = knob.offsetHeight / 2 || 5\n\n knob.hidden = false\n /* 팝업의 왼쪽 선에 반쯤 물리게 — 선이 그 자리에서 끊긴 것처럼 보인다. */\n knob.style.left = `${this._popLeft - half}px`\n knob.style.top = `${popTop + within - half}px`\n }\n\n protected updated() {\n this.fitPopup()\n\n /*\n * 닫힌 하위의 `settled` 를 지운다. 다 펼쳐진 하위는 상한이 풀려(max-height: none) 닫을 때\n * 움직임이 없으므로 transitionstart 가 오지 않고, 표시가 남으면 **다시 열 때 움직임 없이 한 번에**\n * 선다(§`menu-portrait-styles.ts` 의 「다 펼쳐지면 상한을 푼다」).\n */\n this.renderRoot?.querySelectorAll?.('li:not([active]) > ul[settled]').forEach(ul => ul.removeAttribute('settled'))\n }\n\n /** 접기/펼치기는 `ox-menu-part` 가 한다 — 폭과 저장이 그쪽 것이다. 여기서는 뜻만 올린다. */\n private toggleCollapsed(e: MouseEvent) {\n e.stopPropagation()\n this.popped = undefined\n this.dispatchEvent(new CustomEvent('collapse-toggle', { bubbles: true, composed: true }))\n }\n\n firstUpdated() {\n this.renderRoot.addEventListener('click', (e: Event) => {\n const menuElement = (e.target as Element)!.closest('[menu]')\n\n /*\n * 팝업 안을 눌렀으면 팝업을 닫는다 — 이동은 라우터가 한다(막지 않는다).\n *\n * 한때 팝업 컨테이너에 stopPropagation 을 걸어 두었다. 그러면 라우터까지 막혀 **페이지\n * 전체가 다시 읽혔다.** 막지 않고 닫기만 한다.\n */\n if ((e.target as Element)!.closest('.railpop')) {\n this.popped = undefined\n }\n\n /*\n * `active-toplevel` 은 **최상위에서만** 나간다.\n *\n * `closest('[menu]')` 는 가장 가까운 줄을 집으므로 하위를 누르면 하위가 잡힌다. 그것을\n * 그대로 올리면 「열린 묶음」이 하위로 바뀌어, 그 묶음이 닫힌 것처럼 된다. 지금까지는 하위\n * 클릭이 곧 이동이라 주소가 바뀌며 저절로 나았지만, 나을 이유가 없는 자리다.\n */\n //@ts-ignore\n if (menuElement?.menu && menuElement.hasAttribute('top')) {\n //@ts-ignore\n let menu = menuElement.menu\n\n /*\n * 접힌 레일에서 하위가 있는 항목은 **팝업으로 연다.**\n *\n * 이 자리에서 갈라야 한다 — 아래로 흘려 보내면 `active-toplevel` 이 나가고, 그러면\n * 56px 안에서 아무것도 안 보이는 채로 「열렸다」가 된다. 팝업이 접힌 레일에서 하위로\n * 가는 유일한 길이다.\n */\n /*\n * 하위가 있는 최상위를 눌렀다. 무엇을 할지는 **모양이 정한다**(§`menu-mode.ts`).\n *\n * 팝업으로 열리는 모양 팝업을 띄운다 (접힌 레일)\n * 이동하지 않는 모양 그 자리에서 펼치기만 한다 (서랍)\n * 나머지 이동하면서 펼친다 — 아래로 흘려 보낸다\n */\n if (menu.menus?.length && !topNavigates(this.mode) && childrenOpenAs(this.mode) === 'inline') {\n e.stopPropagation()\n e.preventDefault()\n\n this.dispatchEvent(\n new CustomEvent('active-toplevel', {\n bubbles: true,\n detail: this.activeTopLevel === menu ? undefined : menu\n })\n )\n\n return\n }\n\n if (menu.menus?.length && childrenOpenAs(this.mode) === 'popup') {\n e.stopPropagation()\n e.preventDefault()\n\n const rect = (menuElement as HTMLElement).getBoundingClientRect()\n\n /*\n * **레일의 오른쪽을 기준으로 띄운다** — 누른 항목의 오른쪽이 아니다.\n *\n * 항목은 레일 안쪽 여백만큼 들어가 있어서, 항목 기준으로 재면 팝업이 레일 끝에 정확히\n * 붙는다(56px 레일에서 left 가 56 이 됐다). 붙으면 레일을 덮은 것처럼 보인다.\n *\n * 틈은 8px 이다. 16px 은 떨어져 떠 있는 것처럼 보였고, 0 은 레일에 얹힌 것처럼\n * 보였다. 8px 이 「레일에서 열린 다른 면」으로 읽히는 자리다.\n */\n this._popLeft = this.getBoundingClientRect().right + 8\n /*\n * 누른 항목의 윗선에서 시작하는 것은 **바람**일 뿐이다. 실제 자리는 그린 뒤 높이를\n * 재서 정한다(`fitPopup`) — 여기서 고정하면 항목이 아래쪽일 때 팝업이 화면 밖으로\n * 나가거나 열여섯 줄짜리 목록에 스크롤이 생긴다.\n */\n this._popPrefer = rect.top\n this._popTop = rect.top\n this.popped = this.popped === menu ? undefined : menu\n\n return\n }\n\n /*\n * ── 화살표가 토글이고, 글자가 이동이다 ────────────────────────────\n * 최상위 항목은 두 일을 한다 — 자기 화면으로 가고, 하위를 펼친다. 글자를 누르면 링크가\n * 주소를 바꾸므로 **접기가 살아남을 수 없다** — 주소가 바뀌면 그 주소의 메뉴가 다시\n * 열린다(§`ox-menu-part` 의 `_closedByUser`).\n *\n * 그래서 접는 자리를 화살표로 옮긴다. 화살표는 이미 「펼침」을 그리고 있어서 사람이 그것을\n * 누르려 한다. 누르면 이동하지 않고 접기만 한다.\n */\n const onCaret = !!(e.target as Element)?.closest?.('[submenu-button]')\n\n /*\n * 펼쳐져 있는 묶음은 **글자를 눌러도 접기만 한다.** 이동을 두면 주소가 바뀌고 그 주소의 메뉴가\n * 다시 펼쳐져, 접으려고 누른 사람에게는 「다시 열렸다」로 보인다. 접혀 있을 때만 글자가 이동하며\n * 펼친다.\n */\n const collapsesOnly = !!menu.menus?.length && this.activeTopLevel === menu\n\n if (!menu.path || onCaret || collapsesOnly) {\n /* protect to act move to href. */\n e.stopPropagation()\n e.preventDefault()\n }\n\n this.dispatchEvent(\n new CustomEvent('active-toplevel', {\n bubbles: true,\n detail: this.activeTopLevel === menu ? undefined : menu\n })\n )\n }\n\n /* to respond even if current acting menu is selected */\n let href = (e.target as HTMLAnchorElement)!.href\n href && location.href === href && navigate(href + '#force', true)\n })\n\n /* to hide scrollbar during transition */\n this.renderRoot.addEventListener('transitionstart', e => {\n ;(e.target as Element).removeAttribute('settled')\n })\n this.renderRoot.addEventListener('transitionend', e => {\n ;(e.target as Element).setAttribute('settled', '')\n })\n }\n}\n"]}
|
|
@@ -373,6 +373,27 @@ describe('ox-menu-portrait', () => {
|
|
|
373
373
|
expect(시스템.hasAttribute('active')).to.equal(false);
|
|
374
374
|
expect(시스템.querySelector('ul > li').hasAttribute('current')).to.equal(true);
|
|
375
375
|
});
|
|
376
|
+
it('여는 화면을 적은 줄은 링크다 — 라우터가 옮기므로 이동을 막지 않는다', async () => {
|
|
377
|
+
const el = await 세운다({ activeTopLevel: undefined });
|
|
378
|
+
let 불렀나 = false;
|
|
379
|
+
el.morendas = [{ icon: html `<i></i>`, name: '역할', page: 'roles', action: () => (불렀나 = true) }];
|
|
380
|
+
await el.updateComplete;
|
|
381
|
+
const 시스템 = Array.from(el.renderRoot.querySelectorAll('li[menu]')).find(li => !li.menu);
|
|
382
|
+
const a = 시스템.querySelector(':scope > ul > li > a');
|
|
383
|
+
expect(a.getAttribute('href')).to.equal('roles');
|
|
384
|
+
expect(눌러본다(el, a), '막으면 서랍 안에서 아무 데도 못 간다').to.be.false;
|
|
385
|
+
expect(불렀나, '링크가 옮긴다 — 함수를 또 부르면 두 번 간다').to.be.false;
|
|
386
|
+
});
|
|
387
|
+
it('화면을 여는 것이 아닌 줄은 이동을 막고 함수를 부른다', async () => {
|
|
388
|
+
const el = await 세운다({ activeTopLevel: undefined });
|
|
389
|
+
let 불렀나 = false;
|
|
390
|
+
el.morendas = [{ icon: html `<i></i>`, name: '내보내기', action: () => (불렀나 = true) }];
|
|
391
|
+
await el.updateComplete;
|
|
392
|
+
const 시스템 = Array.from(el.renderRoot.querySelectorAll('li[menu]')).find(li => !li.menu);
|
|
393
|
+
const a = 시스템.querySelector(':scope > ul > li > a');
|
|
394
|
+
expect(눌러본다(el, a)).to.be.true;
|
|
395
|
+
expect(불렀나).to.be.true;
|
|
396
|
+
});
|
|
376
397
|
it('빈 자리가 그 앞에 있다 — 바닥에 붙는다', async () => {
|
|
377
398
|
const el = await 세운다({});
|
|
378
399
|
el.morendas = [{ icon: html `<i></i>`, name: '설정', action: () => { } }];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ox-menu-portrait.test.js","sourceRoot":"","sources":["../../test/ox-menu-portrait.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit'\nimport { fixture, expect } from '@open-wc/testing'\n\nimport '../src/ox-menu-portrait.js'\nimport { OxMenuPortrait } from '../src/ox-menu-portrait.js'\nimport { Menu } from '../src/types.js'\n\n/**\n * 왼쪽 메뉴가 **모양 표대로 그려지고 움직이나.**\n *\n * `menu-mode.test.ts` 는 표 자체를 못박는다. 이 시험은 그 표가 **실제로 배선되어 있나**를 본다 —\n * 순수 함수가 맞아도 컴포넌트가 그것을 안 물어보면 화면은 그대로 깨진다. 실제로 그랬다:\n * `drawer` 를 만들고 넘기지 않아 거동이 하나도 바뀌지 않았다.\n */\n\nconst 메뉴: Menu[] = [\n {\n name: 'my-work',\n label: '내 일',\n path: 'todo-list',\n icon: 'inbox',\n badge: () => 7,\n menus: [\n { name: 'todo', label: '할 일', path: 'todo-list', badge: () => 3 },\n { name: 'done', label: '완료', path: 'done-list' }\n ]\n },\n {\n name: 'work',\n label: '작업',\n path: 'job-order-list',\n menus: [{ name: 'job-order', label: '작업지시', path: 'job-order-list' }]\n },\n /* 하위가 없는 최상위 — 「묶음이냐 끝이냐」를 가리는 시험에 쓴다. */\n { name: 'maturity', label: '성숙도', path: 'maturity-page', icon: 'insights', badge: () => 5 }\n]\n\nasync function 세운다(props: Partial<OxMenuPortrait> = {}) {\n const el = (await fixture(html`<ox-menu-portrait></ox-menu-portrait>`)) as OxMenuPortrait\n\n el.menus = 메뉴\n el.activeTopLevel = 메뉴[0]\n el.activeMenu = 메뉴[0].menus![0]\n Object.assign(el, props)\n await el.updateComplete\n\n return el\n}\n\n\n/**\n * 누르고, **컴포넌트가 이동을 막았나**를 돌려준다.\n *\n * ── 왜 이렇게 하나 ──────────────────────────────────────────────────────────\n * 그냥 dispatch 하면 브라우저가 `<a href>` 의 기본 동작을 실행해 **시험 페이지가 실제로\n * 이동한다.** 그래서 러너가 멈췄다(404 job-order-list).\n *\n * document 에서 받아 막으려 했더니 안 됐다 — 어떤 가지는 `stopPropagation` 을 하므로 거기까지\n * 오지 않는다. 그러면 「막았다」를 「안 막았다」로 읽는다.\n *\n * 그래서 누르기 직전에 **href 를 뗀다.** 컴포넌트는 그 속성을 보지 않고 메뉴 객체의 `path` 로\n * 판단하므로 판정이 바뀌지 않고, 브라우저는 갈 곳이 없어 움직이지 않는다.\n */\nfunction 눌러본다(el: OxMenuPortrait, target: HTMLElement) {\n const anchor = target.closest('a')\n const href = anchor?.getAttribute('href')\n anchor?.removeAttribute('href')\n\n const ev = new MouseEvent('click', { bubbles: true, composed: true, cancelable: true })\n target.dispatchEvent(ev)\n\n if (href !== null && href !== undefined) {\n anchor?.setAttribute('href', href)\n }\n\n return ev.defaultPrevented\n}\n\nconst 최상위들 = (el: OxMenuPortrait) =>\n Array.from(el.renderRoot.querySelectorAll('li[top]')) as HTMLElement[]\n\nconst 최상위 = (el: OxMenuPortrait, name: string) =>\n 최상위들(el).find(li => (li as any).menu?.name === name)!\n\ndescribe('ox-menu-portrait', () => {\n describe('최상위와 하위의 표시는 뜻이 다르다', () => {\n it('열린 묶음은 active, 지금 페이지는 current', async () => {\n const el = await 세운다()\n const top = 최상위(el, 'my-work')\n\n expect(top.hasAttribute('active'), '하위가 펼쳐져 있다').to.be.true\n expect(top.hasAttribute('current'), '최상위가 지금 페이지는 아니다').to.be.false\n\n const kid = top.querySelector(':scope > ul > li')!\n expect(kid.hasAttribute('current'), '지금 페이지는 이 하위다').to.be.true\n })\n\n it('최상위에만 top 이 붙는다 — 하위도 active 를 달기 때문이다', async () => {\n const el = await 세운다()\n const kid = 최상위(el, 'my-work').querySelector(':scope > ul > li')!\n\n expect(kid.hasAttribute('top')).to.be.false\n })\n })\n\n describe('하위를 어디에 여나', () => {\n /* 상태를 손으로 넣지 않고 **누른다** — 실제 경로가 그것이다. */\n const 최상위를누른다 = async (el: OxMenuPortrait, name: string) => {\n 눌러본다(el, 최상위(el, name).querySelector('a')!)\n await el.updateComplete\n await el.updateComplete\n }\n\n it('기존 메뉴 · 펼친 레일 · 서랍은 그 자리다 — 팝업이 없다', async () => {\n for (const props of [{}, { rail: true }, { drawer: true }]) {\n const el = await 세운다(props)\n await 최상위를누른다(el, 'work')\n\n expect(el.renderRoot.querySelector('.railpop'), JSON.stringify(props)).to.be.null\n }\n })\n\n it('접힌 레일에서만 팝업이 뜬다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n await 최상위를누른다(el, 'work')\n\n expect(el.renderRoot.querySelector('.railpop')).to.exist\n })\n\n it('서랍은 레일·접힘을 함께 켜도 팝업이 아니다', async () => {\n const el = await 세운다({ rail: true, collapsed: true, drawer: true })\n await 최상위를누른다(el, 'work')\n\n expect(el.renderRoot.querySelector('.railpop')).to.be.null\n })\n })\n\n describe('최상위를 누르면', () => {\n const 누른다 = (el: OxMenuPortrait, name: string) => 눌러본다(el, 최상위(el, name).querySelector('a')!)\n\n it('늘 보이는 메뉴에서는 이동을 막지 않는다', async () => {\n const el = await 세운다({ rail: true })\n expect(누른다(el, 'work'), '막으면 대표 화면으로 갈 수 없다').to.be.false\n })\n\n it('펼쳐져 있는 묶음의 글자를 누르면 이동 없이 접기만 한다', async () => {\n const el = await 세운다({ rail: true })\n let 올라온것: any = 'not-fired'\n el.addEventListener('active-toplevel', (e: Event) => (올라온것 = (e as CustomEvent).detail))\n\n expect(누른다(el, 'my-work'), '이동하면 그 주소의 묶음이 다시 펼쳐진다').to.be.true\n expect(올라온것, '값이 없는 것이 곧 「닫는다」다').to.be.null\n })\n\n it('하위가 없는 최상위는 지금 화면이어도 이동한다 — 접을 것이 없다', async () => {\n const el = await 세운다({ rail: true })\n el.activeTopLevel = 메뉴[2]\n await el.updateComplete\n\n expect(누른다(el, 'maturity')).to.be.false\n })\n\n it('서랍에서는 이동을 막고 펼치기만 한다', async () => {\n const el = await 세운다({ drawer: true })\n let 올라온것: any = 'not-fired'\n el.addEventListener('active-toplevel', (e: Event) => (올라온것 = (e as CustomEvent).detail))\n\n expect(누른다(el, 'work'), '이동하면 서랍이 닫혀 나머지 하위를 볼 기회가 없다').to.be.true\n expect(올라온것?.name).to.equal('work')\n })\n\n it('접힌 레일에서는 팝업을 띄운다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n const 막았나 = 누른다(el, 'work')\n await el.updateComplete\n\n expect(막았나).to.be.true\n expect(el.renderRoot.querySelector('.railpop .phead')!.textContent!.trim()).to.equal('작업')\n })\n\n it('같은 것을 다시 누르면 팝업이 닫힌다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n 누른다(el, 'work')\n await el.updateComplete\n 누른다(el, 'work')\n await el.updateComplete\n\n expect(el.renderRoot.querySelector('.railpop')).to.be.null\n })\n })\n\n describe('화살표는 여닫기만 한다', () => {\n it('이동을 막고 뜻을 올린다', async () => {\n const el = await 세운다({ rail: true })\n let 올라온것: any = 'not-fired'\n el.addEventListener('active-toplevel', (e: Event) => (올라온것 = (e as CustomEvent).detail))\n\n const caret = 최상위(el, 'work').querySelector('[submenu-button]') as HTMLElement\n\n expect(눌러본다(el, caret), '화살표는 주소를 바꾸지 않는다').to.be.true\n expect(올라온것?.name).to.equal('work')\n })\n\n it('열려 있는 것의 화살표를 누르면 닫겠다는 뜻이 올라간다', async () => {\n const el = await 세운다({ rail: true })\n let 올라온것: any = 'not-fired'\n el.addEventListener('active-toplevel', (e: Event) => (올라온것 = (e as CustomEvent).detail))\n\n 눌러본다(el, 최상위(el, 'my-work').querySelector('[submenu-button]') as HTMLElement)\n\n /*\n * **`detail: undefined` 는 `null` 로 도착한다.** `CustomEvent` 의 detail 기본값이 null 이다.\n * 그래서 받는 쪽은 `=== undefined` 로 가리면 한 번도 못 맞힌다 — 값이 있나 없나로 가른다.\n * 그 함정 때문에 접기가 한 번도 살아 있지 못했다.\n */\n expect(올라온것, '값이 없는 것이 곧 「닫는다」다').to.be.null\n })\n })\n\n describe('하위를 누르면 최상위 상태를 건드리지 않는다', () => {\n it('active-toplevel 은 최상위에서만 나간다', async () => {\n const el = await 세운다({ rail: true })\n let 나갔나 = false\n el.addEventListener('active-toplevel', () => (나갔나 = true))\n\n /*\n * `:scope` 가 필요하다. `querySelector('li a')` 는 **범위 요소 자신이 li 로 쓰이는 것도\n * 허용**하므로 최상위의 링크가 잡힌다 — 그래서 이 시험이 처음에 거짓으로 빨개졌다.\n */\n 눌러본다(el, 최상위(el, 'my-work').querySelector(':scope > ul > li > a') as HTMLElement)\n\n expect(나갔나, '하위를 올리면 「열린 묶음」이 하위로 바뀐다').to.be.false\n })\n })\n\n describe('팝업은 하위를 다시 만들지 않는다', () => {\n it('레일 안쪽과 같은 모양으로 그린다 — 이름 · 건수 · 지금 페이지가 함께 온다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n 눌러본다(el, 최상위(el, 'my-work').querySelector('a')!)\n await el.updateComplete\n await el.updateComplete\n\n const pop = el.renderRoot.querySelector('.railpop')!\n const rows = Array.from(pop.querySelectorAll('li'))\n\n expect(rows.length, '하위 둘').to.equal(2)\n expect(rows[0].querySelector('span')!.textContent).to.equal('할 일')\n expect(rows[0].querySelector('[badge]')!.textContent, '건수가 빠지면 열어 보지 않고는 알 수 없다').to.equal('3')\n expect(rows[0].hasAttribute('current'), '열어 놓고도 어디인지 알아야 한다').to.be.true\n expect(rows[1].querySelector('[badge]'), '건수가 없는 하위에는 알약을 두지 않는다').to.be.null\n })\n\n /**\n * **접힘 규칙이 팝업까지 흘러가지 않나.**\n *\n * 팝업은 같은 shadow root 안의 형제라서, 접힘 규칙을 `li` 로만 좁히면 팝업 줄도 함께\n * 걸린다(팝업 줄도 `li` 다). 그러면 이름이 지워지고 가운데 정렬·여백 0 이 같이 걸려\n * **아이콘만 남는다** — 접힌 레일에서 팝업은 이름을 읽으러 여는 자리인데.\n *\n * 위의 시험은 `textContent` 를 보므로 이것을 못 잡았다. 여기서는 **보이나**를 잰다.\n */\n it('접힘 규칙이 팝업까지 흘러가지 않는다 — 이름이 보인다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n 눌러본다(el, 최상위(el, 'my-work').querySelector('a')!)\n await el.updateComplete\n await el.updateComplete\n\n const 이름 = el.renderRoot.querySelector('.railpop li a > span') as HTMLElement\n\n expect(getComputedStyle(이름).display, '레일의 이름 감추기가 팝업까지 걸렸다').to.not.equal('none')\n expect(이름.offsetWidth, '자리가 0 이면 글자가 있어도 안 읽힌다').to.be.greaterThan(0)\n })\n\n it('팝업의 건수는 이름 오른쪽 알약이다 — 아이콘 위에 겹치지 않는다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n 눌러본다(el, 최상위(el, 'my-work').querySelector('a')!)\n await el.updateComplete\n await el.updateComplete\n\n const badge = el.renderRoot.querySelector('.railpop li [badge]') as HTMLElement\n\n expect(getComputedStyle(badge).position, '접힌 레일의 겹치기 규칙이 팝업까지 걸렸다').to.equal('static')\n })\n\n it('머리에 그 묶음의 이름이 온다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n 눌러본다(el, 최상위(el, 'my-work').querySelector('a')!)\n await el.updateComplete\n await el.updateComplete\n\n expect(el.renderRoot.querySelector('.railpop .phead')!.textContent!.trim()).to.equal('내 일')\n })\n })\n\n /**\n * 줄만 보고 **묶음인지 끝인지** 알 수 있나.\n *\n * 두 스타일 파일을 합칠 때 화살표의 `::before` 를 잃었다. `<md-icon submenu-button>` 은\n * 그대로 있었고 크기·자리 규칙도 다 있어서 **빈 아이콘이 자리만 차지했다** — 오류도 없고\n * 요소도 있으니 시험도 화면 로그도 아무 말을 하지 않았다.\n */\n describe('묶음인지 끝인지', () => {\n const 화살표 = (el: OxMenuPortrait, name: string) =>\n 최상위(el, name).querySelector(':scope > a > [submenu-button]') as HTMLElement | null\n\n it('하위가 있는 줄에는 화살표가 있고 글자가 그려진다', async () => {\n const el = await 세운다({ rail: true })\n const caret = 화살표(el, 'work')!\n\n expect(caret, '요소가 없으면 하위가 있다는 신호가 없다').to.exist\n expect(getComputedStyle(caret).display, '자리만 차지하고 안 보이면 없는 것과 같다').to.not.equal('none')\n expect(\n getComputedStyle(caret, '::before').content,\n '아이콘 이름을 안 주면 빈 아이콘이 자리만 차지한다'\n ).to.contain('chevron_right')\n })\n\n it('하위가 없는 줄에는 화살표가 없다', async () => {\n const el = await 세운다({ rail: true })\n\n expect(화살표(el, 'maturity'), '끝인데 화살표가 있으면 눌러 볼 것이 있다고 말하는 셈이다').to.be.null\n })\n\n it('펼쳐지면 화살표가 돈다 — 여닫힘까지 이 하나가 말한다', async () => {\n const el = await 세운다({ rail: true })\n\n const 열림 = getComputedStyle(화살표(el, 'my-work')!).transform\n const 닫힘 = getComputedStyle(화살표(el, 'work')!).transform\n\n expect(최상위(el, 'my-work').hasAttribute('active')).to.be.true\n expect(열림).to.not.equal(닫힘)\n })\n })\n\n /**\n * 마우스를 올렸을 때 뜨는 글.\n *\n * 접히면 아이콘만 남아 **이름을 모른다.** 그때만 이름을 윗줄에 얹는다. 펼쳐져 있으면 이름은\n * 이미 옆에 있으니 되풀이하지 않는다 — 이름을 그대로 다시 말하는 툴팁은 소음이다.\n */\n describe('마우스를 올렸을 때 뜨는 글', () => {\n const 설명있는메뉴: Menu[] = [\n { name: 'map', label: '현장', path: 'map-page', description: '지금 공장에서 일어나는 일' },\n { name: 'plain', label: '조직', path: 'org-page' }\n ]\n\n const 올린글 = async (props: Partial<OxMenuPortrait>, name: string) => {\n const el = await 세운다({ ...props, menus: 설명있는메뉴, activeTopLevel: undefined, activeMenu: undefined })\n const li = 최상위들(el).find(x => (x as any).menu?.name === name)!\n return li.querySelector('a')!.getAttribute('title')\n }\n\n it('펼쳐져 있으면 설명만 낸다', async () => {\n expect(await 올린글({ rail: true }, 'map')).to.equal('지금 공장에서 일어나는 일')\n })\n\n it('펼쳐져 있고 설명이 없으면 아무것도 안 낸다 — 이름을 되풀이하지 않는다', async () => {\n expect(await 올린글({ rail: true }, 'plain')).to.be.null\n })\n\n it('접히면 이름을 윗줄에 얹는다 — 아이콘만 보이므로 이름이 먼저다', async () => {\n expect(await 올린글({ rail: true, collapsed: true }, 'map')).to.equal('현장\\n지금 공장에서 일어나는 일')\n })\n\n it('접혔고 설명이 없으면 이름만 낸다', async () => {\n expect(await 올린글({ rail: true, collapsed: true }, 'plain')).to.equal('조직')\n })\n })\n\n describe('합계 배지는 낱개가 안 보일 때만 나온다', () => {\n /*\n * 두 스타일 파일을 합칠 때 이 규칙을 잃었고 시험이 못 잡았다. 그래서 여기 넣는다.\n */\n const 합계배지 = (el: OxMenuPortrait) =>\n getComputedStyle(최상위(el, 'my-work').querySelector(':scope > a > [badge]')!).display\n\n it('하위가 펼쳐져 있으면 감춘다 — 낱개가 다 보인다', async () => {\n const el = await 세운다()\n\n expect(최상위(el, 'my-work').hasAttribute('active')).to.be.true\n expect(합계배지(el)).to.equal('none')\n })\n\n it('하위가 닫혀 있으면 보인다 — 낱개가 안 보인다', async () => {\n const el = await 세운다({ activeTopLevel: undefined })\n\n expect(합계배지(el)).to.not.equal('none')\n })\n\n it('a leaf keeps its badge while it is the current page — nothing below repeats the number', async () => {\n /*\n * The hide rule reads \"the children below already show these counts\". A top-level item with\n * no children has no below, so the same rule simply deleted the number the moment a person\n * selected that page. Reported from the screen: 할 일 lost its 6.\n */\n const el = await 세운다({ activeTopLevel: 메뉴[2], activeMenu: 메뉴[2] })\n const leaf = 최상위(el, 'maturity')\n\n expect(leaf.hasAttribute('active'), 'the leaf has to be the active one for this to mean anything').to.be.true\n expect(leaf.hasAttribute('branch'), 'a leaf must not be marked as a branch').to.be.false\n expect(getComputedStyle(leaf.querySelector(':scope > a > [badge]')!).display).to.not.equal('none')\n })\n\n it('접혔으면 보인다 — 그때는 합계가 유일한 신호다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n\n expect(합계배지(el)).to.not.equal('none')\n })\n })\n\n describe('세로 단으로 선다', () => {\n /*\n * `display: flex` · `flex-direction: column` 이 없으면 gap 이 안 먹고 **바닥에 붙이는 빈\n * 자리가 자라지 않아** 시스템 줄이 목록 바로 뒤에 붙는다. 파일을 합칠 때 그것을 잃었다.\n */\n it('호스트가 세로 단이다', async () => {\n const el = await 세운다()\n const cs = getComputedStyle(el)\n\n expect(cs.display).to.equal('flex')\n expect(cs.flexDirection).to.equal('column')\n })\n\n it('빈 자리가 자란다 — 시스템이 바닥에 붙는 전제다', async () => {\n const el = await 세운다()\n el.morendas = [{ icon: html`<i></i>`, name: '설정', action: () => {} }]\n await el.updateComplete\n\n const spacer = el.renderRoot.querySelector('.railspacer')!\n expect(getComputedStyle(spacer).flexGrow).to.equal('1')\n })\n })\n\n describe('시스템 자리', () => {\n it('항목이 없으면 자리도 없다 — 눌러도 아무 일이 없는 줄을 두지 않는다', async () => {\n const el = await 세운다({ rail: true })\n el.morendas = []\n await el.updateComplete\n\n expect(Array.from(el.renderRoot.querySelectorAll('[group-label]')).length).to.equal(0)\n })\n\n it('어느 모양에서든 나온다 — 레일에만 두었다가 감추기 모드에서 사라졌다', async () => {\n for (const props of [{}, { rail: true }, { rail: true, collapsed: true }, { drawer: true }]) {\n const el = await 세운다(props)\n el.morendas = [{ icon: html`<i></i>`, name: '설정', action: () => {} }]\n await el.updateComplete\n\n const 시스템 = Array.from(el.renderRoot.querySelectorAll('li[menu]')).find(li => !(li as any).menu)\n expect(시스템, JSON.stringify(props)).to.exist\n }\n })\n\n it('지금 화면을 여는 줄에 표시가 붙고, 「관리」가 펼쳐진다', async () => {\n const el = await 세운다({ activeTopLevel: undefined, activeMenu: undefined, path: 'roles' } as Partial<OxMenuPortrait>)\n el.morendas = [\n { icon: html`<i></i>`, name: '사용자', page: 'users', action: () => {} },\n { icon: html`<i></i>`, name: '역할', page: 'roles', action: () => {} }\n ]\n await el.updateComplete\n\n const 시스템 = Array.from(el.renderRoot.querySelectorAll('li[menu]')).find(li => !(li as any).menu) as HTMLElement\n const 줄 = Array.from(시스템.querySelectorAll(':scope > ul > li')) as HTMLElement[]\n\n expect(줄.map(li => li.hasAttribute('current'))).to.deep.equal([false, true])\n expect(시스템.hasAttribute('active')).to.equal(true)\n })\n\n it('다른 묶음을 손으로 열었으면 「관리」는 펼치지 않는다 — 표시는 남는다', async () => {\n const el = await 세운다({ path: 'roles' } as Partial<OxMenuPortrait>)\n el.morendas = [{ icon: html`<i></i>`, name: '역할', page: 'roles', action: () => {} }]\n await el.updateComplete\n\n const 시스템 = Array.from(el.renderRoot.querySelectorAll('li[menu]')).find(li => !(li as any).menu) as HTMLElement\n\n expect(시스템.hasAttribute('active')).to.equal(false)\n expect(시스템.querySelector('ul > li')!.hasAttribute('current')).to.equal(true)\n })\n\n it('빈 자리가 그 앞에 있다 — 바닥에 붙는다', async () => {\n const el = await 세운다({})\n el.morendas = [{ icon: html`<i></i>`, name: '설정', action: () => {} }]\n await el.updateComplete\n\n expect(el.renderRoot.querySelector('.railspacer')).to.exist\n })\n })\n})\n"]}
|
|
1
|
+
{"version":3,"file":"ox-menu-portrait.test.js","sourceRoot":"","sources":["../../test/ox-menu-portrait.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit'\nimport { fixture, expect } from '@open-wc/testing'\n\nimport '../src/ox-menu-portrait.js'\nimport { OxMenuPortrait } from '../src/ox-menu-portrait.js'\nimport { Menu } from '../src/types.js'\n\n/**\n * 왼쪽 메뉴가 **모양 표대로 그려지고 움직이나.**\n *\n * `menu-mode.test.ts` 는 표 자체를 못박는다. 이 시험은 그 표가 **실제로 배선되어 있나**를 본다 —\n * 순수 함수가 맞아도 컴포넌트가 그것을 안 물어보면 화면은 그대로 깨진다. 실제로 그랬다:\n * `drawer` 를 만들고 넘기지 않아 거동이 하나도 바뀌지 않았다.\n */\n\nconst 메뉴: Menu[] = [\n {\n name: 'my-work',\n label: '내 일',\n path: 'todo-list',\n icon: 'inbox',\n badge: () => 7,\n menus: [\n { name: 'todo', label: '할 일', path: 'todo-list', badge: () => 3 },\n { name: 'done', label: '완료', path: 'done-list' }\n ]\n },\n {\n name: 'work',\n label: '작업',\n path: 'job-order-list',\n menus: [{ name: 'job-order', label: '작업지시', path: 'job-order-list' }]\n },\n /* 하위가 없는 최상위 — 「묶음이냐 끝이냐」를 가리는 시험에 쓴다. */\n { name: 'maturity', label: '성숙도', path: 'maturity-page', icon: 'insights', badge: () => 5 }\n]\n\nasync function 세운다(props: Partial<OxMenuPortrait> = {}) {\n const el = (await fixture(html`<ox-menu-portrait></ox-menu-portrait>`)) as OxMenuPortrait\n\n el.menus = 메뉴\n el.activeTopLevel = 메뉴[0]\n el.activeMenu = 메뉴[0].menus![0]\n Object.assign(el, props)\n await el.updateComplete\n\n return el\n}\n\n\n/**\n * 누르고, **컴포넌트가 이동을 막았나**를 돌려준다.\n *\n * ── 왜 이렇게 하나 ──────────────────────────────────────────────────────────\n * 그냥 dispatch 하면 브라우저가 `<a href>` 의 기본 동작을 실행해 **시험 페이지가 실제로\n * 이동한다.** 그래서 러너가 멈췄다(404 job-order-list).\n *\n * document 에서 받아 막으려 했더니 안 됐다 — 어떤 가지는 `stopPropagation` 을 하므로 거기까지\n * 오지 않는다. 그러면 「막았다」를 「안 막았다」로 읽는다.\n *\n * 그래서 누르기 직전에 **href 를 뗀다.** 컴포넌트는 그 속성을 보지 않고 메뉴 객체의 `path` 로\n * 판단하므로 판정이 바뀌지 않고, 브라우저는 갈 곳이 없어 움직이지 않는다.\n */\nfunction 눌러본다(el: OxMenuPortrait, target: HTMLElement) {\n const anchor = target.closest('a')\n const href = anchor?.getAttribute('href')\n anchor?.removeAttribute('href')\n\n const ev = new MouseEvent('click', { bubbles: true, composed: true, cancelable: true })\n target.dispatchEvent(ev)\n\n if (href !== null && href !== undefined) {\n anchor?.setAttribute('href', href)\n }\n\n return ev.defaultPrevented\n}\n\nconst 최상위들 = (el: OxMenuPortrait) =>\n Array.from(el.renderRoot.querySelectorAll('li[top]')) as HTMLElement[]\n\nconst 최상위 = (el: OxMenuPortrait, name: string) =>\n 최상위들(el).find(li => (li as any).menu?.name === name)!\n\ndescribe('ox-menu-portrait', () => {\n describe('최상위와 하위의 표시는 뜻이 다르다', () => {\n it('열린 묶음은 active, 지금 페이지는 current', async () => {\n const el = await 세운다()\n const top = 최상위(el, 'my-work')\n\n expect(top.hasAttribute('active'), '하위가 펼쳐져 있다').to.be.true\n expect(top.hasAttribute('current'), '최상위가 지금 페이지는 아니다').to.be.false\n\n const kid = top.querySelector(':scope > ul > li')!\n expect(kid.hasAttribute('current'), '지금 페이지는 이 하위다').to.be.true\n })\n\n it('최상위에만 top 이 붙는다 — 하위도 active 를 달기 때문이다', async () => {\n const el = await 세운다()\n const kid = 최상위(el, 'my-work').querySelector(':scope > ul > li')!\n\n expect(kid.hasAttribute('top')).to.be.false\n })\n })\n\n describe('하위를 어디에 여나', () => {\n /* 상태를 손으로 넣지 않고 **누른다** — 실제 경로가 그것이다. */\n const 최상위를누른다 = async (el: OxMenuPortrait, name: string) => {\n 눌러본다(el, 최상위(el, name).querySelector('a')!)\n await el.updateComplete\n await el.updateComplete\n }\n\n it('기존 메뉴 · 펼친 레일 · 서랍은 그 자리다 — 팝업이 없다', async () => {\n for (const props of [{}, { rail: true }, { drawer: true }]) {\n const el = await 세운다(props)\n await 최상위를누른다(el, 'work')\n\n expect(el.renderRoot.querySelector('.railpop'), JSON.stringify(props)).to.be.null\n }\n })\n\n it('접힌 레일에서만 팝업이 뜬다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n await 최상위를누른다(el, 'work')\n\n expect(el.renderRoot.querySelector('.railpop')).to.exist\n })\n\n it('서랍은 레일·접힘을 함께 켜도 팝업이 아니다', async () => {\n const el = await 세운다({ rail: true, collapsed: true, drawer: true })\n await 최상위를누른다(el, 'work')\n\n expect(el.renderRoot.querySelector('.railpop')).to.be.null\n })\n })\n\n describe('최상위를 누르면', () => {\n const 누른다 = (el: OxMenuPortrait, name: string) => 눌러본다(el, 최상위(el, name).querySelector('a')!)\n\n it('늘 보이는 메뉴에서는 이동을 막지 않는다', async () => {\n const el = await 세운다({ rail: true })\n expect(누른다(el, 'work'), '막으면 대표 화면으로 갈 수 없다').to.be.false\n })\n\n it('펼쳐져 있는 묶음의 글자를 누르면 이동 없이 접기만 한다', async () => {\n const el = await 세운다({ rail: true })\n let 올라온것: any = 'not-fired'\n el.addEventListener('active-toplevel', (e: Event) => (올라온것 = (e as CustomEvent).detail))\n\n expect(누른다(el, 'my-work'), '이동하면 그 주소의 묶음이 다시 펼쳐진다').to.be.true\n expect(올라온것, '값이 없는 것이 곧 「닫는다」다').to.be.null\n })\n\n it('하위가 없는 최상위는 지금 화면이어도 이동한다 — 접을 것이 없다', async () => {\n const el = await 세운다({ rail: true })\n el.activeTopLevel = 메뉴[2]\n await el.updateComplete\n\n expect(누른다(el, 'maturity')).to.be.false\n })\n\n it('서랍에서는 이동을 막고 펼치기만 한다', async () => {\n const el = await 세운다({ drawer: true })\n let 올라온것: any = 'not-fired'\n el.addEventListener('active-toplevel', (e: Event) => (올라온것 = (e as CustomEvent).detail))\n\n expect(누른다(el, 'work'), '이동하면 서랍이 닫혀 나머지 하위를 볼 기회가 없다').to.be.true\n expect(올라온것?.name).to.equal('work')\n })\n\n it('접힌 레일에서는 팝업을 띄운다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n const 막았나 = 누른다(el, 'work')\n await el.updateComplete\n\n expect(막았나).to.be.true\n expect(el.renderRoot.querySelector('.railpop .phead')!.textContent!.trim()).to.equal('작업')\n })\n\n it('같은 것을 다시 누르면 팝업이 닫힌다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n 누른다(el, 'work')\n await el.updateComplete\n 누른다(el, 'work')\n await el.updateComplete\n\n expect(el.renderRoot.querySelector('.railpop')).to.be.null\n })\n })\n\n describe('화살표는 여닫기만 한다', () => {\n it('이동을 막고 뜻을 올린다', async () => {\n const el = await 세운다({ rail: true })\n let 올라온것: any = 'not-fired'\n el.addEventListener('active-toplevel', (e: Event) => (올라온것 = (e as CustomEvent).detail))\n\n const caret = 최상위(el, 'work').querySelector('[submenu-button]') as HTMLElement\n\n expect(눌러본다(el, caret), '화살표는 주소를 바꾸지 않는다').to.be.true\n expect(올라온것?.name).to.equal('work')\n })\n\n it('열려 있는 것의 화살표를 누르면 닫겠다는 뜻이 올라간다', async () => {\n const el = await 세운다({ rail: true })\n let 올라온것: any = 'not-fired'\n el.addEventListener('active-toplevel', (e: Event) => (올라온것 = (e as CustomEvent).detail))\n\n 눌러본다(el, 최상위(el, 'my-work').querySelector('[submenu-button]') as HTMLElement)\n\n /*\n * **`detail: undefined` 는 `null` 로 도착한다.** `CustomEvent` 의 detail 기본값이 null 이다.\n * 그래서 받는 쪽은 `=== undefined` 로 가리면 한 번도 못 맞힌다 — 값이 있나 없나로 가른다.\n * 그 함정 때문에 접기가 한 번도 살아 있지 못했다.\n */\n expect(올라온것, '값이 없는 것이 곧 「닫는다」다').to.be.null\n })\n })\n\n describe('하위를 누르면 최상위 상태를 건드리지 않는다', () => {\n it('active-toplevel 은 최상위에서만 나간다', async () => {\n const el = await 세운다({ rail: true })\n let 나갔나 = false\n el.addEventListener('active-toplevel', () => (나갔나 = true))\n\n /*\n * `:scope` 가 필요하다. `querySelector('li a')` 는 **범위 요소 자신이 li 로 쓰이는 것도\n * 허용**하므로 최상위의 링크가 잡힌다 — 그래서 이 시험이 처음에 거짓으로 빨개졌다.\n */\n 눌러본다(el, 최상위(el, 'my-work').querySelector(':scope > ul > li > a') as HTMLElement)\n\n expect(나갔나, '하위를 올리면 「열린 묶음」이 하위로 바뀐다').to.be.false\n })\n })\n\n describe('팝업은 하위를 다시 만들지 않는다', () => {\n it('레일 안쪽과 같은 모양으로 그린다 — 이름 · 건수 · 지금 페이지가 함께 온다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n 눌러본다(el, 최상위(el, 'my-work').querySelector('a')!)\n await el.updateComplete\n await el.updateComplete\n\n const pop = el.renderRoot.querySelector('.railpop')!\n const rows = Array.from(pop.querySelectorAll('li'))\n\n expect(rows.length, '하위 둘').to.equal(2)\n expect(rows[0].querySelector('span')!.textContent).to.equal('할 일')\n expect(rows[0].querySelector('[badge]')!.textContent, '건수가 빠지면 열어 보지 않고는 알 수 없다').to.equal('3')\n expect(rows[0].hasAttribute('current'), '열어 놓고도 어디인지 알아야 한다').to.be.true\n expect(rows[1].querySelector('[badge]'), '건수가 없는 하위에는 알약을 두지 않는다').to.be.null\n })\n\n /**\n * **접힘 규칙이 팝업까지 흘러가지 않나.**\n *\n * 팝업은 같은 shadow root 안의 형제라서, 접힘 규칙을 `li` 로만 좁히면 팝업 줄도 함께\n * 걸린다(팝업 줄도 `li` 다). 그러면 이름이 지워지고 가운데 정렬·여백 0 이 같이 걸려\n * **아이콘만 남는다** — 접힌 레일에서 팝업은 이름을 읽으러 여는 자리인데.\n *\n * 위의 시험은 `textContent` 를 보므로 이것을 못 잡았다. 여기서는 **보이나**를 잰다.\n */\n it('접힘 규칙이 팝업까지 흘러가지 않는다 — 이름이 보인다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n 눌러본다(el, 최상위(el, 'my-work').querySelector('a')!)\n await el.updateComplete\n await el.updateComplete\n\n const 이름 = el.renderRoot.querySelector('.railpop li a > span') as HTMLElement\n\n expect(getComputedStyle(이름).display, '레일의 이름 감추기가 팝업까지 걸렸다').to.not.equal('none')\n expect(이름.offsetWidth, '자리가 0 이면 글자가 있어도 안 읽힌다').to.be.greaterThan(0)\n })\n\n it('팝업의 건수는 이름 오른쪽 알약이다 — 아이콘 위에 겹치지 않는다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n 눌러본다(el, 최상위(el, 'my-work').querySelector('a')!)\n await el.updateComplete\n await el.updateComplete\n\n const badge = el.renderRoot.querySelector('.railpop li [badge]') as HTMLElement\n\n expect(getComputedStyle(badge).position, '접힌 레일의 겹치기 규칙이 팝업까지 걸렸다').to.equal('static')\n })\n\n it('머리에 그 묶음의 이름이 온다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n 눌러본다(el, 최상위(el, 'my-work').querySelector('a')!)\n await el.updateComplete\n await el.updateComplete\n\n expect(el.renderRoot.querySelector('.railpop .phead')!.textContent!.trim()).to.equal('내 일')\n })\n })\n\n /**\n * 줄만 보고 **묶음인지 끝인지** 알 수 있나.\n *\n * 두 스타일 파일을 합칠 때 화살표의 `::before` 를 잃었다. `<md-icon submenu-button>` 은\n * 그대로 있었고 크기·자리 규칙도 다 있어서 **빈 아이콘이 자리만 차지했다** — 오류도 없고\n * 요소도 있으니 시험도 화면 로그도 아무 말을 하지 않았다.\n */\n describe('묶음인지 끝인지', () => {\n const 화살표 = (el: OxMenuPortrait, name: string) =>\n 최상위(el, name).querySelector(':scope > a > [submenu-button]') as HTMLElement | null\n\n it('하위가 있는 줄에는 화살표가 있고 글자가 그려진다', async () => {\n const el = await 세운다({ rail: true })\n const caret = 화살표(el, 'work')!\n\n expect(caret, '요소가 없으면 하위가 있다는 신호가 없다').to.exist\n expect(getComputedStyle(caret).display, '자리만 차지하고 안 보이면 없는 것과 같다').to.not.equal('none')\n expect(\n getComputedStyle(caret, '::before').content,\n '아이콘 이름을 안 주면 빈 아이콘이 자리만 차지한다'\n ).to.contain('chevron_right')\n })\n\n it('하위가 없는 줄에는 화살표가 없다', async () => {\n const el = await 세운다({ rail: true })\n\n expect(화살표(el, 'maturity'), '끝인데 화살표가 있으면 눌러 볼 것이 있다고 말하는 셈이다').to.be.null\n })\n\n it('펼쳐지면 화살표가 돈다 — 여닫힘까지 이 하나가 말한다', async () => {\n const el = await 세운다({ rail: true })\n\n const 열림 = getComputedStyle(화살표(el, 'my-work')!).transform\n const 닫힘 = getComputedStyle(화살표(el, 'work')!).transform\n\n expect(최상위(el, 'my-work').hasAttribute('active')).to.be.true\n expect(열림).to.not.equal(닫힘)\n })\n })\n\n /**\n * 마우스를 올렸을 때 뜨는 글.\n *\n * 접히면 아이콘만 남아 **이름을 모른다.** 그때만 이름을 윗줄에 얹는다. 펼쳐져 있으면 이름은\n * 이미 옆에 있으니 되풀이하지 않는다 — 이름을 그대로 다시 말하는 툴팁은 소음이다.\n */\n describe('마우스를 올렸을 때 뜨는 글', () => {\n const 설명있는메뉴: Menu[] = [\n { name: 'map', label: '현장', path: 'map-page', description: '지금 공장에서 일어나는 일' },\n { name: 'plain', label: '조직', path: 'org-page' }\n ]\n\n const 올린글 = async (props: Partial<OxMenuPortrait>, name: string) => {\n const el = await 세운다({ ...props, menus: 설명있는메뉴, activeTopLevel: undefined, activeMenu: undefined })\n const li = 최상위들(el).find(x => (x as any).menu?.name === name)!\n return li.querySelector('a')!.getAttribute('title')\n }\n\n it('펼쳐져 있으면 설명만 낸다', async () => {\n expect(await 올린글({ rail: true }, 'map')).to.equal('지금 공장에서 일어나는 일')\n })\n\n it('펼쳐져 있고 설명이 없으면 아무것도 안 낸다 — 이름을 되풀이하지 않는다', async () => {\n expect(await 올린글({ rail: true }, 'plain')).to.be.null\n })\n\n it('접히면 이름을 윗줄에 얹는다 — 아이콘만 보이므로 이름이 먼저다', async () => {\n expect(await 올린글({ rail: true, collapsed: true }, 'map')).to.equal('현장\\n지금 공장에서 일어나는 일')\n })\n\n it('접혔고 설명이 없으면 이름만 낸다', async () => {\n expect(await 올린글({ rail: true, collapsed: true }, 'plain')).to.equal('조직')\n })\n })\n\n describe('합계 배지는 낱개가 안 보일 때만 나온다', () => {\n /*\n * 두 스타일 파일을 합칠 때 이 규칙을 잃었고 시험이 못 잡았다. 그래서 여기 넣는다.\n */\n const 합계배지 = (el: OxMenuPortrait) =>\n getComputedStyle(최상위(el, 'my-work').querySelector(':scope > a > [badge]')!).display\n\n it('하위가 펼쳐져 있으면 감춘다 — 낱개가 다 보인다', async () => {\n const el = await 세운다()\n\n expect(최상위(el, 'my-work').hasAttribute('active')).to.be.true\n expect(합계배지(el)).to.equal('none')\n })\n\n it('하위가 닫혀 있으면 보인다 — 낱개가 안 보인다', async () => {\n const el = await 세운다({ activeTopLevel: undefined })\n\n expect(합계배지(el)).to.not.equal('none')\n })\n\n it('a leaf keeps its badge while it is the current page — nothing below repeats the number', async () => {\n /*\n * The hide rule reads \"the children below already show these counts\". A top-level item with\n * no children has no below, so the same rule simply deleted the number the moment a person\n * selected that page. Reported from the screen: 할 일 lost its 6.\n */\n const el = await 세운다({ activeTopLevel: 메뉴[2], activeMenu: 메뉴[2] })\n const leaf = 최상위(el, 'maturity')\n\n expect(leaf.hasAttribute('active'), 'the leaf has to be the active one for this to mean anything').to.be.true\n expect(leaf.hasAttribute('branch'), 'a leaf must not be marked as a branch').to.be.false\n expect(getComputedStyle(leaf.querySelector(':scope > a > [badge]')!).display).to.not.equal('none')\n })\n\n it('접혔으면 보인다 — 그때는 합계가 유일한 신호다', async () => {\n const el = await 세운다({ rail: true, collapsed: true })\n\n expect(합계배지(el)).to.not.equal('none')\n })\n })\n\n describe('세로 단으로 선다', () => {\n /*\n * `display: flex` · `flex-direction: column` 이 없으면 gap 이 안 먹고 **바닥에 붙이는 빈\n * 자리가 자라지 않아** 시스템 줄이 목록 바로 뒤에 붙는다. 파일을 합칠 때 그것을 잃었다.\n */\n it('호스트가 세로 단이다', async () => {\n const el = await 세운다()\n const cs = getComputedStyle(el)\n\n expect(cs.display).to.equal('flex')\n expect(cs.flexDirection).to.equal('column')\n })\n\n it('빈 자리가 자란다 — 시스템이 바닥에 붙는 전제다', async () => {\n const el = await 세운다()\n el.morendas = [{ icon: html`<i></i>`, name: '설정', action: () => {} }]\n await el.updateComplete\n\n const spacer = el.renderRoot.querySelector('.railspacer')!\n expect(getComputedStyle(spacer).flexGrow).to.equal('1')\n })\n })\n\n describe('시스템 자리', () => {\n it('항목이 없으면 자리도 없다 — 눌러도 아무 일이 없는 줄을 두지 않는다', async () => {\n const el = await 세운다({ rail: true })\n el.morendas = []\n await el.updateComplete\n\n expect(Array.from(el.renderRoot.querySelectorAll('[group-label]')).length).to.equal(0)\n })\n\n it('어느 모양에서든 나온다 — 레일에만 두었다가 감추기 모드에서 사라졌다', async () => {\n for (const props of [{}, { rail: true }, { rail: true, collapsed: true }, { drawer: true }]) {\n const el = await 세운다(props)\n el.morendas = [{ icon: html`<i></i>`, name: '설정', action: () => {} }]\n await el.updateComplete\n\n const 시스템 = Array.from(el.renderRoot.querySelectorAll('li[menu]')).find(li => !(li as any).menu)\n expect(시스템, JSON.stringify(props)).to.exist\n }\n })\n\n it('지금 화면을 여는 줄에 표시가 붙고, 「관리」가 펼쳐진다', async () => {\n const el = await 세운다({ activeTopLevel: undefined, activeMenu: undefined, path: 'roles' } as Partial<OxMenuPortrait>)\n el.morendas = [\n { icon: html`<i></i>`, name: '사용자', page: 'users', action: () => {} },\n { icon: html`<i></i>`, name: '역할', page: 'roles', action: () => {} }\n ]\n await el.updateComplete\n\n const 시스템 = Array.from(el.renderRoot.querySelectorAll('li[menu]')).find(li => !(li as any).menu) as HTMLElement\n const 줄 = Array.from(시스템.querySelectorAll(':scope > ul > li')) as HTMLElement[]\n\n expect(줄.map(li => li.hasAttribute('current'))).to.deep.equal([false, true])\n expect(시스템.hasAttribute('active')).to.equal(true)\n })\n\n it('다른 묶음을 손으로 열었으면 「관리」는 펼치지 않는다 — 표시는 남는다', async () => {\n const el = await 세운다({ path: 'roles' } as Partial<OxMenuPortrait>)\n el.morendas = [{ icon: html`<i></i>`, name: '역할', page: 'roles', action: () => {} }]\n await el.updateComplete\n\n const 시스템 = Array.from(el.renderRoot.querySelectorAll('li[menu]')).find(li => !(li as any).menu) as HTMLElement\n\n expect(시스템.hasAttribute('active')).to.equal(false)\n expect(시스템.querySelector('ul > li')!.hasAttribute('current')).to.equal(true)\n })\n\n it('여는 화면을 적은 줄은 링크다 — 라우터가 옮기므로 이동을 막지 않는다', async () => {\n const el = await 세운다({ activeTopLevel: undefined } as Partial<OxMenuPortrait>)\n let 불렀나 = false\n el.morendas = [{ icon: html`<i></i>`, name: '역할', page: 'roles', action: () => (불렀나 = true) }]\n await el.updateComplete\n\n const 시스템 = Array.from(el.renderRoot.querySelectorAll('li[menu]')).find(li => !(li as any).menu) as HTMLElement\n const a = 시스템.querySelector(':scope > ul > li > a') as HTMLAnchorElement\n\n expect(a.getAttribute('href')).to.equal('roles')\n expect(눌러본다(el, a), '막으면 서랍 안에서 아무 데도 못 간다').to.be.false\n expect(불렀나, '링크가 옮긴다 — 함수를 또 부르면 두 번 간다').to.be.false\n })\n\n it('화면을 여는 것이 아닌 줄은 이동을 막고 함수를 부른다', async () => {\n const el = await 세운다({ activeTopLevel: undefined } as Partial<OxMenuPortrait>)\n let 불렀나 = false\n el.morendas = [{ icon: html`<i></i>`, name: '내보내기', action: () => (불렀나 = true) }]\n await el.updateComplete\n\n const 시스템 = Array.from(el.renderRoot.querySelectorAll('li[menu]')).find(li => !(li as any).menu) as HTMLElement\n const a = 시스템.querySelector(':scope > ul > li > a') as HTMLAnchorElement\n\n expect(눌러본다(el, a)).to.be.true\n expect(불렀나).to.be.true\n })\n\n it('빈 자리가 그 앞에 있다 — 바닥에 붙는다', async () => {\n const el = await 세운다({})\n el.morendas = [{ icon: html`<i></i>`, name: '설정', action: () => {} }]\n await el.updateComplete\n\n expect(el.renderRoot.querySelector('.railspacer')).to.exist\n })\n })\n})\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/tslib/modules/index.d.ts","../src/types.ts","../src/menu-mode.ts","../src/menu-active.ts","../src/menu-privilege.ts","../src/index.ts","../../../node_modules/@lit/reactive-element/development/css-tag.d.ts","../../../node_modules/@lit/reactive-element/development/reactive-controller.d.ts","../../../node_modules/@lit/reactive-element/development/reactive-element.d.ts","../../../node_modules/lit-html/development/directive.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/lit-html/development/lit-html.d.ts","../../../node_modules/lit-element/development/lit-element.d.ts","../../../node_modules/lit-html/development/is-server.d.ts","../../../node_modules/lit/development/index.d.ts","../src/menu-landscape-styles.ts","../src/menu-portrait-styles.ts","../../../node_modules/@material/web/icon/internal/icon.d.ts","../../../node_modules/@material/web/icon/icon.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/base.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/custom-element.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/property.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/state.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/event-options.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-all.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-async.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-assigned-nodes.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-assigned-elements.d.ts","../../../node_modules/lit/development/decorators.d.ts","../../shell/dist/src/types/domain.d.ts","../../shell/dist/src/types/user.d.ts","../../shell/dist/src/types/role.d.ts","../../shell/dist/src/types/privilege.d.ts","../../shell/dist/src/types/types.d.ts","../../shell/dist/src/types/index.d.ts","../../../node_modules/redux/index.d.ts","../../shell/dist/src/lazy-reducer-enhancer.d.ts","../../shell/dist/src/store.d.ts","../../shell/dist/src/actions/app.d.ts","../../shell/dist/src/actions/route.d.ts","../../shell/dist/src/actions/busy.d.ts","../../shell/dist/src/actions/const.d.ts","../../shell/dist/src/actions/index.d.ts","../../../node_modules/@material/web/elevation/internal/elevation.d.ts","../../../node_modules/@material/web/elevation/elevation.d.ts","../../../node_modules/@material/web/internal/controller/attachable-controller.d.ts","../../../node_modules/@material/web/focus/internal/focus-ring.d.ts","../../../node_modules/@material/web/focus/md-focus-ring.d.ts","../../../node_modules/@material/web/ripple/internal/ripple.d.ts","../../../node_modules/@material/web/ripple/ripple.d.ts","../../../node_modules/@material/web/labs/behaviors/mixin.d.ts","../../../node_modules/@material/web/labs/behaviors/element-internals.d.ts","../../../node_modules/@material/web/labs/behaviors/form-associated.d.ts","../../../node_modules/@material/web/labs/behaviors/form-submitter.d.ts","../../../node_modules/@material/web/button/internal/button.d.ts","../../../node_modules/@material/web/button/internal/filled-button.d.ts","../../../node_modules/@material/web/button/filled-button.d.ts","../../../node_modules/@material/web/button/internal/text-button.d.ts","../../../node_modules/@material/web/button/text-button.d.ts","../../popup/dist/src/ox-popup-actions.d.ts","../../popup/dist/src/ox-prompt.d.ts","../../shell/dist/src/app/pages/page-view.d.ts","../../shell/dist/src/object-store.d.ts","../../shell/dist/src/custom-alert.d.ts","../../shell/dist/src/connect-mixin.d.ts","../../shell/dist/src/controllers/app-controller.d.ts","../../shell/dist/src/controllers/context-controller.d.ts","../../shell/dist/src/controllers/font-controller.d.ts","../../shell/dist/src/controllers/layout-controller.d.ts","../../shell/dist/src/controllers/menu-controller.d.ts","../../shell/dist/src/controllers/route-controller.d.ts","../../shell/dist/src/controllers/snackbar-controller.d.ts","../../shell/dist/src/controllers/index.d.ts","../../shell/dist/src/require-custom-element.d.ts","../../shell/dist/src/drafts/draft-store.d.ts","../../shell/dist/src/drafts/unsaved-draft-controller.d.ts","../../shell/dist/src/index.d.ts","../../styles/dist/src/headroom-styles.d.ts","../../styles/dist/src/scrollbar-styles.d.ts","../../styles/dist/src/spinner-styles.d.ts","../../styles/dist/src/common-button-styles.d.ts","../../styles/dist/src/form-field-styles.d.ts","../../styles/dist/src/common-grist-styles.d.ts","../../styles/dist/src/button-container-styles.d.ts","../../styles/dist/src/button-styles.d.ts","../../styles/dist/src/common-header-styles.d.ts","../../styles/dist/src/common-popup-styles.d.ts","../../styles/dist/src/popup-body-styles.d.ts","../../styles/dist/src/box-padding-editor-styles.d.ts","../../styles/dist/src/gradient-direction-styles.d.ts","../../styles/dist/src/property-grid-styles.d.ts","../../styles/dist/src/table-event-styles.d.ts","../../styles/dist/src/inspector-styles.d.ts","../../styles/dist/src/line-styles.d.ts","../../styles/dist/src/action-heights.d.ts","../../styles/dist/src/form-element-heights.d.ts","../../styles/dist/src/page-frame-styles.d.ts","../../styles/dist/src/fab-styles.d.ts","../../styles/dist/src/card-catalog-styles.d.ts","../../styles/dist/src/index.d.ts","../src/ox-menu-landscape.ts","../../../node_modules/lit-html/development/async-directive.d.ts","../../../node_modules/lit-html/development/directives/async-replace.d.ts","../../../node_modules/lit/development/directives/async-replace.d.ts","../../../node_modules/lit-html/development/directives/if-defined.d.ts","../../../node_modules/lit/development/directives/if-defined.d.ts","../../../node_modules/i18next/typescript/helpers.d.ts","../../../node_modules/i18next/typescript/options.d.ts","../../../node_modules/i18next/typescript/t.d.ts","../../../node_modules/i18next/index.d.ts","../../../node_modules/i18next/index.d.mts","../../i18n/dist/src/config.d.ts","../../i18n/dist/src/localize.d.ts","../../i18n/dist/src/ox-i18n.d.ts","../../i18n/dist/src/ox-i18n-selector.d.ts","../../i18n/dist/src/index.d.ts","../src/ox-menu-portrait.ts","../src/ox-menu-part.ts","../../layout/dist/src/initializer.d.ts","../../popup/dist/src/ox-popup.d.ts","../../popup/dist/src/ox-popup-list.d.ts","../../popup/dist/src/ox-popup-menu.d.ts","../../popup/dist/src/ox-popup-menuitem.d.ts","../../popup/dist/src/ox-floating-overlay.d.ts","../../popup/dist/src/open-popup.d.ts","../../popup/dist/src/index.d.ts","../../layout/dist/src/layouts/ox-snack-bar.d.ts","../../layout/dist/src/components/ox-resize-splitter.d.ts","../../layout/dist/src/layouts/ox-header-bar.d.ts","../../layout/dist/src/layouts/ox-nav-bar.d.ts","../../layout/dist/src/layouts/ox-aside-bar.d.ts","../../layout/dist/src/layouts/ox-footer-bar.d.ts","../../layout/dist/src/layouts/ox-page-header-bar.d.ts","../../layout/dist/src/layouts/ox-page-footer-bar.d.ts","../../layout/dist/src/actions/layout.d.ts","../../layout/dist/src/actions/snackbar.d.ts","../../layout/dist/src/components/ox-split-pane.d.ts","../../layout/dist/src/components/ox-entity360-dock.d.ts","../../layout/dist/src/components/ox-three-pane.d.ts","../../layout/dist/src/components/ox-canvas-bar.d.ts","../../layout/dist/src/components/ox-url-tabs.d.ts","../../layout/dist/src/actions/entity360.d.ts","../../layout/dist/src/actions/entity360-registry.d.ts","../../layout/dist/src/actions/entity360-door.d.ts","../../layout/dist/src/actions/entity360-name.d.ts","../../layout/dist/src/actions/id-lens.d.ts","../../layout/dist/src/components/ox-entity360-section.d.ts","../../layout/dist/src/index.d.ts","../src/ox-top-menu-bar.ts","../stories/ox-menu-container.ts","../stories/test-menus.ts","../stories/ox-menu-portrait.stories.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/get-diffable-html.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff-plugin.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/index.d.ts","../../../node_modules/chai-a11y-axe/chai-a11y-axe-plugin.d.ts","../../../node_modules/chai-a11y-axe/src/accessible.d.ts","../../../node_modules/chai-a11y-axe/index.d.ts","../../../node_modules/@types/chai-dom/index.d.ts","../../../node_modules/@types/sinon/node_modules/@sinonjs/fake-timers/types/fake-timers-src.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/sinon/index.d.mts","../../../node_modules/@types/sinon-chai/index.d.ts","../../../node_modules/@open-wc/testing/register-chai-plugins.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/elementupdated.d.ts","../../../node_modules/lit-html/development/static.d.ts","../../../node_modules/lit/development/static-html.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/renderable.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/dedupe-mixin/index.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/scoped-elements/dist-types/types.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/scoped-elements/dist-types/html-element.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture-no-side-effect.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixturewrapper.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/helpers.d.ts","../../../node_modules/lit/development/html.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/scopedelementswrapper.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/litfixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/stringfixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/index.d.ts","../../../node_modules/@open-wc/testing/index.d.ts","../test/menu-active.test.ts","../test/menu-badge-contrast.test.ts","../test/menu-mode.test.ts","../test/menu-privilege.test.ts","../test/menu-rail-page.test.ts","../test/ox-menu-portrait.test.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/dispatcher1-wrapper.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/socks5-proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/ffi.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/path/posix.d.ts","../../../node_modules/@types/node/path/win32.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/quic.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/iter.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/test/reporters.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/util/types.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vfs.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/zlib/iter.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/mocha/index.d.ts"],"fileIdsList":[[241,306,314,319,322,324,325,326,339],[69,241,306,314,319,322,324,325,326,339],[58,69,241,306,314,319,322,324,325,326,339],[58,69,77,241,306,314,319,322,324,325,326,339],[71,241,306,314,319,322,324,325,326,339],[56,57,241,306,314,319,322,324,325,326,339],[64,106,241,306,314,319,322,324,325,326,339],[61,64,98,100,101,102,103,104,241,306,314,319,322,324,325,326,339],[61,95,105,241,306,314,319,322,324,325,326,339],[105,241,306,314,319,322,324,325,326,339],[64,108,241,306,314,319,322,324,325,326,339],[64,94,241,306,314,319,322,324,325,326,339],[61,64,241,306,314,319,322,324,325,326,339],[64,96,241,306,314,319,322,324,325,326,339],[64,97,241,306,314,319,322,324,325,326,339],[64,67,241,306,314,319,322,324,325,326,339],[64,241,306,314,319,322,324,325,326,339],[64,101,241,306,314,319,322,324,325,326,339],[64,101,102,241,306,314,319,322,324,325,326,339],[61,64,96,241,306,314,319,322,324,325,326,339],[64,99,241,306,314,319,322,324,325,326,339],[203,204,241,306,314,319,322,324,325,326,339],[205,241,306,314,319,322,324,325,326,339],[204,206,241,306,314,319,322,324,325,326,339],[221,222,241,306,314,319,322,324,325,326,339],[221,241,306,314,319,322,324,325,326,339],[217,219,225,226,227,230,231,241,306,314,319,322,324,325,326,339],[220,223,241,306,314,319,322,324,325,326,339],[224,241,306,314,319,322,324,325,326,339],[220,224,229,241,306,314,319,322,324,325,326,339],[220,223,228,241,306,314,319,322,324,325,326,339],[203,216,232,241,306,314,319,322,324,325,326,339],[207,210,211,215,241,306,314,319,322,324,325,326,339],[203,241,306,314,319,322,324,325,326,339],[241,303,304,306,314,319,322,324,325,326,339],[241,305,306,314,319,322,324,325,326,339],[306,314,319,322,324,325,326,339],[241,306,314,319,322,324,325,326,339,348],[241,306,307,312,314,317,319,322,324,325,326,328,339,344,357],[241,306,307,308,314,317,319,322,324,325,326,339],[241,306,309,314,319,322,324,325,326,339,358],[241,306,310,311,314,319,322,324,325,326,330,339],[241,306,311,314,319,322,324,325,326,339,344,354],[241,306,312,314,317,319,322,324,325,326,328,339],[241,305,306,313,314,319,322,324,325,326,339],[241,306,314,315,319,322,324,325,326,339],[241,306,314,316,317,319,322,324,325,326,339],[241,305,306,314,317,319,322,324,325,326,339],[241,306,314,317,319,320,322,324,325,326,339,344,357],[241,306,314,317,319,320,322,324,325,326,339,346,348],[241,293,306,314,317,319,321,322,324,325,326,328,339,344,357],[241,306,314,317,319,321,322,324,325,326,328,339,344,354,357],[241,306,314,319,321,322,323,324,325,326,339,344,354,357],[240,241,242,243,244,245,246,247,248,249,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366],[241,306,314,317,319,322,324,325,326,339],[241,306,314,319,322,324,326,339],[241,306,314,319,322,324,325,326,327,339,357],[241,306,314,317,319,322,324,325,326,328,339,344],[241,306,314,319,322,324,325,326,330,339],[241,306,314,319,322,324,325,326,331,339],[241,306,314,317,319,322,324,325,326,334,339],[241,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365],[241,306,314,319,322,324,325,326,336,339],[241,306,314,319,322,324,325,326,337,339],[241,306,311,314,319,320,322,324,325,326,328,339,346,354],[241,306,314,317,319,322,324,325,326,339,340],[241,306,314,319,322,324,325,326,339,341,358,362],[241,306,314,317,319,322,324,325,326,339,344,346,347,348],[241,306,314,319,322,324,325,326,339,345,348],[241,306,314,317,319,322,324,325,326,339,344,346],[241,306,314,317,319,322,324,325,326,339,344,347,348],[241,306,314,319,322,324,325,326,339,348,358],[241,306,314,319,322,324,325,326,339,349],[241,303,306,314,319,322,324,325,326,339,344,351,357],[241,306,314,319,322,324,325,326,339,344,350],[241,306,314,317,319,322,324,325,326,339,352,353],[241,306,314,319,322,324,325,326,339,352,353],[241,306,311,314,319,322,324,325,326,328,339,344,354],[241,306,314,319,322,324,325,326,339,355],[241,306,314,319,322,324,325,326,328,339,356],[241,306,314,319,321,322,324,325,326,337,339,357],[241,306,314,319,322,324,325,326,339,358,359],[241,306,311,314,319,322,324,325,326,339,359],[241,306,314,319,322,324,325,326,339,344,360],[241,306,314,319,320,322,324,325,326,339],[241,306,314,319,322,324,325,326,327,339,362],[241,306,314,319,322,324,325,326,339,363],[241,306,309,314,319,322,324,325,326,339],[241,306,311,314,319,322,324,325,326,339],[241,306,314,319,322,324,325,326,339,358],[241,293,306,314,319,322,324,325,326,339],[241,306,314,319,322,324,325,326,339,357],[241,306,314,319,322,324,325,326,339,364],[241,306,314,319,322,324,325,326,334,339],[241,306,314,319,322,324,325,326,339,353],[241,293,306,314,317,319,320,322,324,325,326,328,334,339,344,348,357,360,362,364],[241,306,314,319,322,324,325,326,339,344,365],[241,306,314,319,322,324,325,326,339,346,366],[203,213,214,241,306,314,319,322,324,325,326,339],[213,241,306,314,319,322,324,325,326,339],[212,241,306,314,319,322,324,325,326,339],[209,241,306,314,319,322,324,325,326,339],[208,241,306,314,319,322,324,325,326,339],[157,158,159,160,241,306,314,319,322,324,325,326,339],[157,158,159,241,306,314,319,322,324,325,326,339],[157,241,306,314,319,322,324,325,326,339],[157,158,241,306,314,319,322,324,325,326,339],[58,61,241,306,314,319,322,324,325,326,339],[59,61,241,306,314,319,322,324,325,326,339],[61,241,306,314,319,322,324,325,326,339],[59,61,152,241,306,314,319,322,324,325,326,339],[59,60,241,306,314,319,322,324,325,326,339],[70,71,72,73,74,75,76,77,78,241,306,314,319,322,324,325,326,339],[153,241,306,314,319,322,324,325,326,339],[155,241,306,314,319,322,324,325,326,339],[58,61,62,63,241,306,314,319,322,324,325,326,339],[218,241,306,314,319,322,324,325,326,339],[49,241,306,314,319,322,324,325,326,339],[241,256,259,262,263,306,314,319,322,324,325,326,339,357],[241,259,306,314,319,322,324,325,326,339,344,357],[241,259,263,306,314,319,322,324,325,326,339,357],[241,306,314,319,322,324,325,326,339,344],[241,253,306,314,319,322,324,325,326,339],[241,257,306,314,319,322,324,325,326,339],[241,255,256,259,306,314,319,322,324,325,326,339,357],[241,306,314,319,322,324,325,326,328,339,354],[241,306,314,319,322,324,325,326,339,367],[241,253,306,314,319,322,324,325,326,339,367],[241,255,259,306,314,319,322,324,325,326,328,339,357],[241,250,251,252,254,258,306,314,317,319,322,324,325,326,339,344,357],[241,259,306,314,319,322,324,325,326,339],[241,259,268,277,306,314,319,322,324,325,326,339],[241,251,257,306,314,319,322,324,325,326,339],[241,259,287,288,306,314,319,322,324,325,326,339],[241,251,254,259,306,314,319,322,324,325,326,339,348,357,367],[241,255,259,306,314,319,322,324,325,326,339,357],[241,250,306,314,319,322,324,325,326,339],[241,253,254,255,257,258,259,260,261,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,306,314,319,322,324,325,326,339],[241,259,280,283,306,314,319,322,324,325,326,339],[241,259,268,270,271,306,314,319,322,324,325,326,339],[241,257,259,270,272,306,314,319,322,324,325,326,339],[241,258,306,314,319,322,324,325,326,339],[241,251,253,259,306,314,319,322,324,325,326,339],[241,259,263,270,272,306,314,319,322,324,325,326,339],[241,263,306,314,319,322,324,325,326,339],[241,257,259,262,306,314,319,322,324,325,326,339,357],[241,251,255,259,268,306,314,319,322,324,325,326,339],[241,259,280,306,314,319,322,324,325,326,339],[241,272,306,314,319,322,324,325,326,339],[241,251,255,259,263,306,314,319,322,324,325,326,339],[241,253,259,287,306,314,319,322,324,325,326,339,348,364,367],[161,241,306,314,319,322,324,325,326,339],[162,163,164,165,241,306,314,319,322,324,325,326,339],[64,161,241,306,314,319,322,324,325,326,339],[188,241,306,314,319,322,324,325,326,339],[64,176,241,306,314,319,322,324,325,326,339],[86,241,306,314,319,322,324,325,326,339],[61,64,68,189,241,306,314,319,322,324,325,326,339],[64,68,241,306,314,319,322,324,325,326,339],[61,64,194,241,306,314,319,322,324,325,326,339],[169,176,177,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,241,306,314,319,322,324,325,326,339],[127,241,306,314,319,322,324,325,326,339],[174,178,241,306,314,319,322,324,325,326,339],[68,109,241,306,314,319,322,324,325,326,339],[50,51,52,53,54,241,306,314,319,322,324,325,326,339],[50,51,241,306,314,319,322,324,325,326,339],[50,64,241,306,314,319,322,324,325,326,339],[50,241,306,314,319,322,324,325,326,339],[50,51,64,65,68,79,127,150,241,306,314,319,322,324,325,326,339],[50,51,52,53,64,68,79,127,150,151,167,241,306,314,319,322,324,325,326,339],[50,51,52,53,64,66,68,79,127,150,154,156,166,241,306,314,319,322,324,325,326,339],[50,51,64,68,79,127,198,241,306,314,319,322,324,325,326,339],[50,51,64,68,79,150,167,241,306,314,319,322,324,325,326,339],[50,64,167,200,201,241,306,314,319,322,324,325,326,339],[50,51,53,233,241,306,314,319,322,324,325,326,339],[50,51,64,167,233,241,306,314,319,322,324,325,326,339],[50,52,233,241,306,314,319,322,324,325,326,339],[50,51,54,233,241,306,314,319,322,324,325,326,339],[50,52,64,127,168,233,241,306,314,319,322,324,325,326,339],[110,111,170,171,172,173,175,241,306,314,319,322,324,325,326,339],[64,174,241,306,314,319,322,324,325,326,339],[61,64,68,241,306,314,319,322,324,325,326,339],[61,64,68,170,241,306,314,319,322,324,325,326,339],[61,64,170,241,306,314,319,322,324,325,326,339],[61,64,172,241,306,314,319,322,324,325,326,339],[61,64,68,107,109,110,241,306,314,319,322,324,325,326,339],[89,90,91,92,241,306,314,319,322,324,325,326,339],[64,111,241,306,314,319,322,324,325,326,339],[116,117,118,119,120,121,122,241,306,314,319,322,324,325,326,339],[64,125,241,306,314,319,322,324,325,326,339],[85,88,93,112,113,114,115,123,124,125,126,241,306,314,319,322,324,325,326,339],[86,87,241,306,314,319,322,324,325,326,339],[80,81,82,83,84,241,306,314,319,322,324,325,326,339],[81,82,241,306,314,319,322,324,325,326,339],[80,81,83,241,306,314,319,322,324,325,326,339],[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,241,306,314,319,322,324,325,326,339]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"b8f34dd1757f68e03262b1ca3ddfa668a855b872f8bdd5224d6f993a7b37dc2c","impliedFormat":99},{"version":"30db73264f423790415f2f88f22c374cb0ede9c0610fe3386ae20cc17574bcf5","signature":"a4f32f4e2c7c8b874051148ee801dede9c40258b2f79e463fd28235af0ad3bd7"},{"version":"222d8d903bd361e9f810461daa3cf06f66ab39df90e125089dfb3e890322162c","signature":"5a2b608b2b13ddcf2663adb04f249d5e232405b7a43a6fb256be031542d4efd9"},{"version":"b50dbf2add390af56855fa275d35d112aa39a617ce4310d6f6f5ebde1b26c287","signature":"bc8160e988082beb8566f5959b6b9d619dc32d18e6a0b459c2048250f62d948b"},{"version":"207a185ae4d9a3cc6c2481e19216e02aa3b465e37bdcf2a54c2ad81963574d2b","signature":"8c343f73650fe89ac17ccf2077c92a4efb35742b1b42d211754f1ce5b29e890c"},{"version":"93d215899a1bd18750be7a232c22c14539d440c03f660b86a1db21c3186dc56c","signature":"8cccc9e3831c43812a4afa5e2725761ca82575c74febb41ffe5e0560f38e18f6"},{"version":"74012d464fbc5354ca3a7d5e71bee43b17da01a853c8ff10971bbe3680c76f40","impliedFormat":99},{"version":"5e30131b6a5587fe666926ad1d9807e733c0a597ed12d682669fcaa331aea576","impliedFormat":99},{"version":"a0f82d2f9450bd147a8c137798d9501bd49b7c9e118f75b07b76709ff39b6b55","affectsGlobalScope":true,"impliedFormat":99},{"version":"00cb63103f9670f8094c238a4a7e252c8b4c06ba371fea5c44add7e41b7247e4","impliedFormat":99},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"e09db3291e6b440f7debed2227d8357e80c95987a0d0d67ac17521d8f7b11bdb","impliedFormat":99},{"version":"9a318e3a8900672b85cd3c8c3a5acf51b88049557a3ae897ccdcf2b85a8f61f9","impliedFormat":99},{"version":"1bcd560deed90a43c51b08aa18f7f55229f2e30974ab5ed1b7bb5721be379013","impliedFormat":99},{"version":"dc08fe04e50bc24d1baded4f33e942222bbdd5d77d6341a93cfe6e4e4586a3be","impliedFormat":99},{"version":"a1c5ae2fd49803fc6db34e95007b9c75a21aba738acc4a519c839a129e509eca","signature":"3bcaadf31685c068f5c12037763d5f7d16e86c25412946aad78e418193066ba6"},{"version":"864c2fe6da94b03dae6a4868d4bf62a02c5113bc02e13f51f4dae9d1540f34a4","signature":"b264a25bcb204cc781031cc94856e649951aaf0b3764b167c7de4f81852415ac"},{"version":"b93e2680295ac83b52846bcd76dd6d06507d3da1738ebe564a1e99543993b3b4","impliedFormat":99},{"version":"4ae1ed87c59518f4e0918a21409ec3020e97037a386b57953c6b9fed9cad6949","affectsGlobalScope":true,"impliedFormat":99},{"version":"cdeae34aca6700620ebf3f27cf7d439c3af97595dd6e2729fa4780483add5680","impliedFormat":99},{"version":"3ff87ea3471b51beaf4aa8fd8f4422862b11d343fdbb55bf383e0f8cc195a445","impliedFormat":99},{"version":"99bdf729529cdbf12e2bf76ea751b662011133dcf9e35abcb3def47bb02f7b0a","impliedFormat":99},{"version":"732fb71ecb695d6f36ddcbb72ebfe4ff6b6491d45101a00fa2b75a26b80d640f","impliedFormat":99},{"version":"039cb05125d7621f8143616c495b8e6b54249c4e64d2754b80ff93867f7f4b01","impliedFormat":99},{"version":"1b81f1fa82ad30af01ab1cae91ccaddc10c48f5916bbd6d282155e44a65d858d","impliedFormat":99},{"version":"a0fc7a02a75802678a67000607f20266cf1a49dc0e787967efe514e31b9ed0c3","impliedFormat":99},{"version":"5ebf098a1d81d400b8af82807cf19893700335cf91a7b9dbd83a5d737af34b11","impliedFormat":99},{"version":"101cf83ac3f9c5e1a7355a02e4fbe988877ef83c4ebec0ff0f02b2af022254a3","impliedFormat":99},{"version":"d017e2fcd44b46ca80cd2b592a6314e75f5caab5bda230f0f4a45e964049a43a","impliedFormat":99},{"version":"a8992b852521a66f63e0cedc6e1f054b28f972232b6fa5ca59771db6a1c8bbea","impliedFormat":99},"4d4cf93a6b4c81851ad759e4569b6feb7a701e80b13a6f9d8d9c6012bbb86bd6","2e6035af8f3e43bf95e4983329c8277d66f9b271106af27b99a85d1c1b9daf4a","df32d43311e85715e2a573239a4bbc5b78ebaf29af2af5fa8c85370197997515","3a792bbf677343364a1d9b7197c6e4e512764f17364efd656b1a3598f2a9e820","3d7c0b593a29d717b2b2ba3f03f819c3c48bf9e250d79c4a31860af80f177e8c","e576aa80090f8b6020355ca8d7f4184067c84389f4b92125be29e03b1f6c5194",{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true,"impliedFormat":1},"487213b1bcbdaa470cf59a4cea3f8a939b9222e74b455fe0fd2f0dc2346cc3c0",{"version":"8a9e962b8c98aa48377773c40ac7a3e530fb3354cec48fdb59d8e2df3a624a0c","affectsGlobalScope":true},"641089f0b8094ef74b9d4b3364d5dec1592d5e3b8a51c1ba491bc8872049e79a","ee7d2517ae77f36f10c280ad7acc2dd1bee3a411ec83ce26127def0c3db90081","b42033bf1067564808e4d360d79281667c2b3b0792c2d615ab641eb85974d4ba","7af29b0589483f7bb8a99405ddb849f34bc053146184561ed4179e02f5fe4d0f","ad3ee9f7d14ad8b7ae8094d0f1a2276656f7a970827d4030d1dead7c2d765f75",{"version":"6184309fe39e2fe444f4ba94e7cd1abef48fcb48e258457c3b77c65828184241","impliedFormat":99},{"version":"98c511f60c3079d731a35353a47bfa89dd79eeacad48a45d07170d22ef4bfd02","affectsGlobalScope":true,"impliedFormat":99},{"version":"905800cc110167503d0cf58bb0dd6fa4aaac1e9cedc9bd9c48e5d1f8b5b8d4c8","impliedFormat":99},{"version":"d17be577b99e59611df19ca2cf0356df554f55bb06617c21321fc4ec06b820d0","impliedFormat":99},{"version":"5f30145fbc8ca508ae4e0d90a4fe9eaff490783f380a92f6aa262accdf7887b7","affectsGlobalScope":true,"impliedFormat":99},{"version":"cefe49d29d43726072e88671a2c40cdeeb8d49ca8fa6c2d4b06013dc7b9d6206","impliedFormat":99},{"version":"f882b77c5939860d599b4b7bc39f741ebcd56123e18b284500f4b8923acd2e72","affectsGlobalScope":true,"impliedFormat":99},{"version":"0230bc76ed3a464531a43d2434d315b9cc2096aaca28bdaa65b8f9dce9f3bc81","impliedFormat":99},{"version":"559d2d1cd7f37dc2ac59e7adce198ad16a5eb0c7273d67b8e4ff72821b7c853f","impliedFormat":99},{"version":"6161d12fc14a8e0cf492f9d49372a1189b1fe005662cb7fe6630352a6b0bb04e","impliedFormat":99},{"version":"7d3c06d4ad79d86c6f7518b77d335b324bc218a7cd8b3e15579c4b584b7307f9","impliedFormat":99},{"version":"65f5bc7ff74eeabe9925da575924601248471033c27bf0384643ea03cad2b57d","impliedFormat":99},{"version":"d08d474654640266d6ac03f51ee04d72438b78ea377b9dc4678c480ce0477e1a","impliedFormat":99},{"version":"929f21090183949e93fd99327d292bff76f781895d5252eb43319b2c3e014528","affectsGlobalScope":true,"impliedFormat":99},{"version":"0f28503979e769f6ee6e55350f621dc00e300f15688d52b02edc62d837d29b1d","impliedFormat":99},{"version":"fe869c79d427e84d916011d082def68a793c3c13e157079fec399f250418bd50","affectsGlobalScope":true,"impliedFormat":99},"a2afc55ddd24edebefe497c415aee63498b099cef639b85a1bb3163e58649928","0ee02e214247d645a3d76c05ffa05d6c6abba39a0b04a971ad97bc7850e206bc","cb300584ea8c201014c73c5240c2d6a811459cc762331ff1ae34e0a6dce9e4d9","fc48282c397084016a939e1b3f91dcaf4199b6cba339d91d8b2dc2acade79762","3e62a55b950132d6eeacc607b7a1bff990d5484347b2be5a1f54db51af30ff25","8b86f33b7e06e2f0a3bf4703cf9d8b0baab016e36b83f2a33dac184f061e17ea","88c205bacab539d8e844b80a1ec76fc649fbc731f12dfd7cca160976b5ddfd5a","565d32dce0b8761e7cfafe40c56a8a0fab0bb9e7bb35a31d9712643b3c8dbbc4","4bde12afd6fdd6e52d7316e00adfbccd70becc3ebd9c4f647d07caef53a474ae","a7e588bdba05f1fb78f83e50ee62c93565134d3b996babf2697c2b43fcf17ce0","218a0f93d7091c68718ec4260f41f3a61b5ecb7e786a8c04e296292ff41db8f0","cf45487aeb18b31f1001b99d06793986ac3e6840b0602f9cf3756a2724348bf4","81f0a95843ae6e5a006addc4b5c217b075057ff82c9bc319655de21a13ba9f10","1a68f44e90ac5c261a3157004a7ec18759982b91fd725537d6db919d83601dd1","daccba798a74fc239523622caf24656e28b78dac33ea8a031682280fd51b0d0f","f6a07f563f8ac41831de197155d550379c6d197109ba54d8ffdec21dfa287a6f","170d8b0727dcf6f76de6e8a9943d7b2505793210e7c7de8d4ba7379610962803","5cee37504a444c12c6633430239f9dd1b26649c19f1e71adaaf4ea5712cc8c62","cf93fb9208a01c80f0fad245c4360356e5de6c2384b7641acf0b9cc2f5c42448","336398b0efaf964124e636a9b29c4edd5870aee79ac64bf87be58a9d66b7c048","571bc65ec37ba124e762bb822e14a2b8502dc684e356be8feaccbd6b9cadd023","7cd455fc4c4818f19263d73b29c59f3fb5fd54b45a6ab83ca3eb3661281db56b","d428a9fbb7cc014b69651793373edf9be9b0bba7c3e7f720d2a294dd1a50d7c5","1c6b9b5501774a2ece6574be8e26092800e3f1f836f8c179b4f9fdd271a620f8","bcd2426fd141157e04e3a8eff914b575403587f398cf0878f07c2f283e0d1afd","c04405c54b9095528ba8d4006ff443a5aad3ea65611344c4522aab1608d0705f","bac8ff394e831e4dd3f0961d6abb414b0e2b4ba16fdeb502d087ebf0340ed5f6","d9f8946a29f08d831605e6a9005785842dfbe5b09e5d38b6bf5073a11453890a","f9dee09d52541244f2a093e8faa29bec9527aad98111279fea51a10a95b9bfd4","b337608772b9df38e69b89837ecf758100e6c1c7acd4d0f10595f738faf1d034","c89d663edb7c20cfab677286571dc8f4f09878119d7ecd010895133995f12532","9d04b912e18e966fca08158f28e5c41bfb2fa864187d926e04d737aa83a96e17","2ad4fcfa075cde73e5ae78491531cef44cec9fb9a880be8335afd98c444528cf","881cb6bb1e6384a9943b8c6f1cd3a0f215a683b032130f700e0d87bc9a990727","e2d895b9561b0b9a350c970475ff268e4e0fc44436e107a916889a0a93d3389b","302a06cbb95a5c6041745f5f8f64a0a7b2fe7926f2ee71f96644f473d6804a44","bfa39163a2b652b382fa019284a857b7a8a25eb3c4469124088530cead0ba347","a2f3de4d473e2dab6128eb8f69cfad59e9894ad25be6ec7213900e9236971582","6a53004a10b7472c10c900aac074c24cd127b3ddbb9105dc8b3fca25990aa977","73868c81078b6ee9a3702c45413d93f367f652c91b32221f40f6b5f60333f979","1ac2b7818cb72193c46f6b78732a65953a017e339624ed6555d165ca490bbe7a",{"version":"edce72f988c83157a88933338f4cdcf3bc72118ab04d9ac07cd35abee7c92678","signature":"143f8d604ef3ed044bfdeda068f2b4f33d0cd8df6d9d42b26a2ecce9426cb0bc"},{"version":"c42f9b18f5f559b133cf9b409f678afb30df9c6498865aae9a1abad0f1e727a8","impliedFormat":99},{"version":"feaf207fddc69de2a8826438be06f5f954964cddc8e95bf980c9fe02cb22616a","impliedFormat":99},{"version":"e3d6176dc713a2b6b17054021a6aa839824bf43f358e3ae12192b54c6de1a6b4","impliedFormat":99},{"version":"74fe889b1d2bba4b2893d518ba94e2b20dabe6d19d0c2f9554d9a5d3755710f4","impliedFormat":99},{"version":"2ae64cd7b6e760496069ee3b496c64700c956a0620740e1ef52b163824859db7","impliedFormat":99},{"version":"e30accdbef6f904f20354b6f598d7f2f7ff29094fc5410c33f63b29b4832172a","impliedFormat":1},{"version":"3786a961459023ec78bb575e5ea74f504d3ffc61ae82a305c959a4d94d7d70eb","impliedFormat":1},{"version":"de83915a380bdd6d7ddf075e3f60fe347db64ad4d06822835724ac601cb61daf","impliedFormat":1},{"version":"4d39c150715cb238da715e5c3fbeac2e2b2d0ef3f23c632996dd59ae35ba1f45","impliedFormat":1},{"version":"e9f80c5934982b97886eadab6684c073344a588d1758b12fba2d0184e6f450a2","impliedFormat":99},"0f81a53d54fd2b4ae2bf60067d616de99884bda21cb5784d942089d52319fb97","86d356e64ab8d56852623677eb1bed0c106703aed9b7788ad8a5a56e647822cb","29dca1b5f0cac95b675f86c7846f9d587ed47cc46609dd00d152bcb37683b069","231d829c892caeb88dd469e0847bf9d14e29c82b8b158b381ec866c868adf9af","886bcc73e8cf74ebec1bd14a5cc5b8dfa28276210df634e6f81c844b1eef767b",{"version":"53ea5ce409c7bd837f5305c472f73016aaca714cecb9c7d3365104151f0033c8","signature":"02fe50a11bf8c03d31c39acadf143dbdf9560c0969c32322959c19ca2cd81e7d"},{"version":"b8299a7726bd66835898aa6411b1f54d31c16975dd8e9501edd8d0db2699daba","signature":"5bff732ad41c7ca0cb51e43e7994facfccefc389ba88f3596a2fff835a5f0f4b"},"60997095f458b8c2c94af5759c796d9d17678e740a41a04c3e518c14c47f2ee7",{"version":"64b7a09108e21b28cf2fae71cbf993014bdf4f18d9dafd98b553c7b6c19789c9","affectsGlobalScope":true},"7781e7ff3d72e3aae0ecae4189872ac0d4081622ed74b3f5feea2119754c867d","986165ecc3a59d4b6a272a92f7ca4fd7a0762c63a674abd2c1efa0bea64da604","3e7b241ec38126d95f9e37c49a631c00cff006a888276e2d02920c6443c8b593","bad37852b83df7a04802c2827fa02f8af046e4d944e0d08e02294d27b2748129","1fc3a35588d5f43c8ea68937e60d360d48390f5d454b1e6830659dfce9a7a937","c9d3623b528f615e0466361855fbba048e88d381bb5257f23c37062b2fdb6039","3c523c4338a858825c62005f03ff49eeaf8290bdda52a8b8554be555bab7a077","5582fb24ca35ef8a72d61a095d62ae2ada8143c33bc56febf626e333d3a5b013","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","f125a774d4d2f7cb2882107afe30d33cbbf96d9dec4aa624bd94a74c223d4d37","6e815042f98ee8b44cd7f372039ebc2f5ebc13d5be353b29ea7f18f1519b0edf","86d239790a025b4f1213571ed5d578b9080415e1218b253b499ed73ac436ae63","c324680d0f90c92b14000a230d54c75332588ea75a5eca7f63b6ff4d77ea8188",{"version":"ad9efb41182f5e07976abd80e4b00ac80692f3ab8d55fe3b85d3c282c229b98e","affectsGlobalScope":true},{"version":"5425a627e508bc6d1ccfb1ea6f8d250f93c6fa7fe034e6f1b03a48e8ce0a3167","affectsGlobalScope":true},{"version":"49e0572afa6c45adb4f152607e105739f15d196e582b276d5c7b2a828b98a068","affectsGlobalScope":true},"2c252ad88d5a3aacd77cfe7f074616769c0efef8ab699ad76c63c030cfdfc200","44856288c9509a2f962d08ce6e89431efc92c772cded206f9b6f6533c5598a1b","4a85bb2b13ae7e1c70e4974e37f84ccfefc22bb9a9f450e57681ab072f3cbf93","caf3e0c255508bebccd84112eb0a277561802b9edd833367bd492f745b74a7dc","e32adea204d24c8884d127c0c71867c3edcee378efb72527e44d3a8c112be874",{"version":"c360546ca0d716d461f18e5fdc72a4b9a6482f2d5dbb1c384213bbc4a6cb35b1","affectsGlobalScope":true},"3db7cad52fe7e0f5093842f4e11c26c40ac370810694c77cc385629bfc4e3a06",{"version":"de53165df4274f512d63c56ad34b21c451f86e3cfd2d1e2dd866c5250e0924e8","signature":"79deb069b1537b1757965b5b16e5b8e6921017ce3f7088d1d813eee727b4b49e"},{"version":"7676ea7aed13b1887f9d232ea2d5d6f7dbf9cf04adedc9f78985893eb9b4a189","signature":"1004e6124d3c4663544dbb9431bdfb786459e4ca93d02cfe0ffcd8a0994af69d"},{"version":"4eb26a88276bdfea327e95d4ba3918a6cb8053cf19f4bdb3153020ab650ae7af","signature":"acfcfdf417c988d67e5d48f5fcff7b6dd52c88720ecd635137a2929170836244"},{"version":"f69671beaabadb5eb4b29d05eafde2114c1a3950069916a799ea8e2e97696e6b","signature":"52b248e376193dd4349afee293aaa4c7b4899dddae63cfa5a8a05cb980c24e04"},{"version":"eef204f061321360559bd19235ea32a9d55b3ec22a362cc78d14ef50d4db4490","affectsGlobalScope":true,"impliedFormat":1},{"version":"72bee526b949b9932edba50997ff3b9cdede7b314d790d5f0d94f3d2944930ea","impliedFormat":99},{"version":"2d412861573a672bd90fdcb1e48740593324565f3b3aaf6808c0e3e2f0d54ae8","affectsGlobalScope":true,"impliedFormat":99},{"version":"cd711db43a952f15464b571ac11b7a440332cd52342bc92c4bf908c70688f57f","affectsGlobalScope":true,"impliedFormat":99},{"version":"9d8709c916778cb34830708ed47b78e9a46d1fb2eb73a682b14eee990bed4aa6","impliedFormat":99},{"version":"507e2131e89b515ce40c05c0c2fef6cc575ba8947703f92e8cdf36078747a9ff","affectsGlobalScope":true,"impliedFormat":99},{"version":"999a90d30a3183dcee987d0a5a7c586aba5bacbf6ce087ba8635124082ccfeea","impliedFormat":99},{"version":"8a5878edd52f4a720560b4c6e6247e9ddc3df6118ad9cf2f9927903b03d5f440","impliedFormat":99},{"version":"e7be17cfcbe98809c052f384c230ecea9e1cee045edac9db0659e997a988ff9e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d5736e3954f447a04297e9de41013be6a144b8fa36d0408d0caf8c330a23f9c1","impliedFormat":1},{"version":"4738bc5d39ac01532d861967a4fe52769e3892fb8022d4524802ac1c7aed4934","impliedFormat":1},{"version":"49d97be0e4276d01ad13ea2823c6cfba23179682073f0cc95abfda632880d444","impliedFormat":99},{"version":"525b52b38b44420fb1758c0917e7b67cf379f7f9477d2ba7343f3d5f50a44258","affectsGlobalScope":true,"impliedFormat":1},{"version":"65b91a3725399231d3469529b5e27b85bf2aa98013e607f308e5fe260b47eeff","impliedFormat":99},{"version":"04e3793f33c71ceae20a4719698c068b72c98cf925b3c5f8a33096c00ed44258","impliedFormat":99},{"version":"fa8ef3fb228e258f9508386e2056c95c959d1c1168301181313a5c978754ba70","impliedFormat":99},{"version":"15c9478a8a3d630ac5e738aca25fca15d0842aaeb97fb1a9c1e80eddc5a0e14c","impliedFormat":99},{"version":"cc46ce345c0e19e456388446733250527eead4ca557b5e5fdf0c2e30adc3c89f","impliedFormat":99},{"version":"88cda4269c54f0803834fd62b2fac61af8bff7a085693f7ca9df85c1f19dee8a","impliedFormat":99},{"version":"5a2888a80ba9fae27aaa312464ab4b744ce4cfce573c105844ad8e94a39e2d7d","affectsGlobalScope":true,"impliedFormat":99},{"version":"260d1e9ec9c633c7ae90d8c17762e77924eef5d71357b27bfd351da698db4f6d","impliedFormat":99},{"version":"6168f8e0a5b354f8177bf0dee7c1a69c2afb6a155d5534221f3a1a2d86b84367","impliedFormat":99},{"version":"d7840fd94e6dfb5b0d9df5a20fe1e79c8dd72b1efdb74d2ef04c31e3588c6b5b","impliedFormat":99},{"version":"fa6d684e15fe6e99c7208a51b45c04f8e0147f1c8587871aac48fff55b7b1f24","impliedFormat":99},{"version":"d61a4b627c3e2e054616df905a25226f547dc0e821c2a2b6d5f13318b3fd7e78","impliedFormat":99},{"version":"1308479c593c3d337bd9c438ac1d7164006a9286638cec0b26e3331a978f91d4","impliedFormat":99},{"version":"cfad37dbd7cf27cc16758755847ad7c07ac52a01c466486e50f8f84d0f0ea9ce","impliedFormat":99},{"version":"0c4d3009672fd12d4d9a6505e769de9369c180dcfa8188d9fd850ec156245d87","impliedFormat":99},{"version":"793fca6322a14fa8fa6bc6a4fc694fd7bcc88922c4f9abcd48bf6908f8bf939b","impliedFormat":99},{"version":"be3e93b109deb44b925583674cc0706c0b3c2e7316bcf79631285a45c18ed0c8","impliedFormat":99},{"version":"50f63746fc2a779d1f9c5657fd78e292045dc98b540e026799e039ea629f2943","impliedFormat":99},{"version":"d51cc917d5d894061c2005e335ef73dc3aa9bc839daa429b3eb6fa18959797f9","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1e90cd76e64b93c2b16b31a3f8a8e305cab40d36bca0bce953499fb4ff2d5bda","signature":"8c60144e64b097f4d8d99e882cbce15c62b40377ba544267315c8284e150c921"},{"version":"8c6ea4dfb3dc8853b017c3d32b5daa85c7a8f8d369948fbd549ec92cc5bc9ece","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1e07c908517c06ef99001d074c4068deb989e7410ade42fc54b213e041ee82d2","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"931bf503f79c4a75334382659794c5f58230dfbc1dc114eec6a095d8286ed37d","signature":"a8d8e886ff338626b1c5921a55bd198cd1203d9fa76c0aa38f995b198a037b78"},{"version":"36501d15f8454ed6342245e28a821d3a27a8b9a160a98fbe882d15cd3595004c","signature":"8c60144e64b097f4d8d99e882cbce15c62b40377ba544267315c8284e150c921"},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9b68a1c3f8f45b4c199fa5b3ac09497230cb8f2f0cdcfebe5817b30b836a64a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f53a7652392cf26ebbe4e29fd0672aa87c93bd6d0241289c13fab87b9ac35c8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"b00a630557d1622ad312633bdbfbdb9c6b7220d948dca9f899db30679f160074","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"88809d6c1b9c78d04a133646a6feb926def05a8774c308c7c93bc32ee163d271","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"21d7fab00c101ddf754b392e11534e6b20c6bda269b2ccbcdf3453cbe21d8a39","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"d3c85d4dde1a4918009e37426ee4a940cbbd4100e2e74d03e2de0d50a77bb488","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"60e3ba4b2d24548107060e5d13bffafbbbaa53d001c07bbe40386deda569b5e8","impliedFormat":1},{"version":"a712be2c8cbe0154bd17d1d7bff503d7c04331e0745eb9eea3d303e0e5d9401e","impliedFormat":1},{"version":"25bd6ae1b97ea991433337310fc406cc7c9f271b67b7c79dd24eee384759f3d4","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"38004e6801340cb890afb8cb5a9fc8972297e7f88ab94026e4b0b3c61fb32f8a","impliedFormat":1},{"version":"4ca7fb8f6018ea836b1ad24f67d5e7c2cf7410af7462e0ccc90b012944f5d7ae","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"149f9a9e7f04e67afa0e2a49fc0ff421035c01d6b793cfcae7d2e9f6819431e2","impliedFormat":1},{"version":"e8a9dfa4c75ef6d25df8b40eaa9c31e0a69452aaf2ced4a3f4215dbdbaa876f4","impliedFormat":1},{"version":"a70af845a2eb9dd6e2723e319e14ea7fb28b129ec1361c21509b49305448c323","impliedFormat":1},{"version":"b53dc572d4f187904207ae1166652de47aab8eeb00c254d009cb226863076b56","impliedFormat":1},{"version":"57354d2f022ed64ede57b2e052306dd076a138b551abc7d30ef5e6718ce2f76a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"f501234c5aeeeb5d7659412335227466aaacf30b952372d60afeb21c02c96348","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"358f74dc35927dc88ea86dd201a2b98e701c281615e6b30a4c153eb0bb90ef71","impliedFormat":1},{"version":"8b91ff5bb912be3ea213cbcf0075aace1f5d4ff249a0d227ed673868cb7bfabc","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"706abfbafe0ed5f685357375e89bbf48879549ea1772185d77d15f587c5c9400","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"013ff793053d33a15be4614efdd6c50247bbf0b26d6bc58ba338622a7441b543","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"e99963ae1e3a48ca7a7958c02f3e88bb963eb7978c28b68ae6b8c9f03309d83c","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"279d0cc1a72879918854265c3405369aa2d4d23509b8694ea102995b298cc5e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"594ae90cacd813fa392ff80d2e0a8eff4e41f4a136329a940e321399dd8895b4","impliedFormat":1},{"version":"d1f333ade8ff35a409b4984e1f11956fe11c61855b0c7e9b59f0313e48b40c4a","impliedFormat":1},{"version":"0224aa4b3464895d69c413a640a19ac2166778a74eb5eb3b36b021c72d42b274","impliedFormat":1},{"version":"575aa163c4c32e5b82e0e99b1f9f80806e1d78bfa259706e05139251c022277b","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fb21326854faaa31ef02c9d51629fb6acedacb9396e74bf22ff8409441ea9ae","impliedFormat":1},{"version":"2fbf504c4791f9d32cd766cfe6b605bcda63289b925401953a7900db9af85348","impliedFormat":1},{"version":"ed0fb633cae35948d9e144004299a4bdf1ab912667c787b7fbffcd6d8c7b92a2","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"9019e48ace02a7f39315d84261f4a3dd23b7a3b1f6584e694001ac93971791b7","impliedFormat":1},{"version":"2f78692a85ada51c8f0988184d34d28436c1040e8ccf0758ba70d4b32b9776ad","impliedFormat":1},{"version":"97581dc7099ef3d844c83706d53a7ecf895c0e867fbf6b9dc035bb3080f677bd","impliedFormat":1},{"version":"e494b286c8e27c52f8c7f945aa80ff223f2a3cd4f7a2619fa8991f1459e26f07","impliedFormat":1},{"version":"f54f5f9e10bbceba7515dfad0ffc89dffdb8d749d0604594c57a725cf6d79c20","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"8c7e618c2a91ea7f6b5cca272a295864e92c16413be8fc56a943e8c7d5320011","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f487e411f9657df0e76572e500c1209b8fe95ee3b4cc6e6e7913c15f56207d","impliedFormat":1},{"version":"9d37b8a9678efbcdf38238b59ce8e6f7db70aba1a516f3a4a671a301dbacfb3d","impliedFormat":1},{"version":"a47a792b8cff71443be8dfb199f2b77e102a7bf9d4f90c18059f05d9af2d7413","impliedFormat":1},{"version":"ad50512520720d10294c629cb4e2df23891c3fcbeaca00fbfb9e6bbea65f3dd6","impliedFormat":1},{"version":"189769511b45c93b23ba76069f7701d3b631cfbedc1eb94c7753486c78736f78","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"ba389fd3d7fba6670e97bc82eb12469dcb371d22f24e63859c1df5a083c823ed","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"97234c5303866576f913d0ccae7d58d6322d9e803c7bf1228a3fda46ab8087b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"961dec547748827cb6b45f6fdc66273f7bacd9c73103c6779f070f2fd07f23f9","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"73eeb740dacc45adc607a4f59f90fa9dbe2717d93d82f115f45f34e18f8d644a","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"d251cda16f3f6a3e07f07c9e6e823ef6c583c63f653eb8777dafa749a78298e3","impliedFormat":1},{"version":"361939136b496a38b3e6b7be750bbb6998ef289bb8dd304c673138542ca16137","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"89e2568ebc2ec1e4149384b105e80e8bbf41eb4d711547f1121f4f628028de96","impliedFormat":1},{"version":"441b9bb09013654aa3d050e68b06464d8959b473e85868249d9d18f692acd35b","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"55246f15e33ff1e2e9e679b25fa9790a48db55dc63d567fe25fac8b6a0efe911","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"925734f303b7f0cc111d42aeb21781d38a79e6d5ac05b2b1400cd1861a75d27b","impliedFormat":1},{"version":"5b26c4dd672d88336bb929787c9bfb55119e80ba89ec6dc923da1c063892843e","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"7286e4e5f80c0b1ab16addbdbbc9dd47fbae1c42034189261177b84d745cde3b","impliedFormat":1},{"version":"f12624a4a8d042b68914eac1b0a16571fc1c523173fcdf2517c65d191bd5a86c","impliedFormat":1},{"version":"cd2a656ba1d250c2002190b683e3826bf4362b6919450bc0f9bbf5612ebad837","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"3e221ff0522e6ff95aa74a5211126aaf4d7e85ed8c8ff19290d591ad4bef988f","impliedFormat":1},{"version":"7da83f6429c6298ebf2be43d296b56ecfc94c9c28f5471b2f23b87545b914cea","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"751048d4aa67e20e5ecd2692340ea0d19bae42a20cc651d6f56d095e411ce3ac","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"aed8f3e5c7e53462565eedf34a9bcb700393cb2c1ab0c768602b929c3ed3145d","impliedFormat":1},{"version":"8e2577e7262051fd3c5bd6ca2b2056d358ff8853565720f92455860824c25188","impliedFormat":1},{"version":"fb12cb2de38cc8b89e38ece1014b4ae1047cd89b8dd248c64adc1c53c358ca02","impliedFormat":1},{"version":"bb9dbb4b2ad81e3e71ec5ba4314973718555b9d04ba2a17dfbf875efecb8e2c0","impliedFormat":1},{"version":"9021dc5be8f3a87af5cede29221188a6497e2092b6889e0be212ef6b6b7153e9","impliedFormat":1},{"version":"4a8c8fd951d9fd9e0775f0aae8ed1f8b528204e24a2600bea3a1228ea83de52c","impliedFormat":1},{"version":"5b9cc0c724a8ebc7a873ab8e73c20b2416cef04b9e9d7f95ef1fa0fdcd4e0ec8","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"80a4b7023a2cc9f14d3f2e4635d6615ab3eff4b5b3630f62a8e73992fdd8cdb9","impliedFormat":1},{"version":"7414ec88dbb6d1b4d07a6ffbb3592e56359343ddfd5b0b825721d736b04ab2b6","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"c46f111af647c4134ae869653130610d62da321f90ebf19e186a3ea4bed79350","impliedFormat":1},{"version":"29f72ec1289ae3aeda78bf14b38086d3d803262ac13904b400422941a26a3636","affectsGlobalScope":true,"impliedFormat":1}],"root":[[51,55],65,66,151,167,168,[199,202],[234,239]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./","rootDir":"..","skipLibCheck":true,"sourceMap":true,"strict":true,"target":5,"useDefineForClassFields":false},"referencedMap":[[56,1],[69,1],[70,2],[73,3],[71,3],[75,3],[78,4],[77,3],[76,3],[74,3],[72,5],[57,1],[58,6],[107,7],[105,8],[106,9],[108,10],[109,11],[95,12],[94,13],[97,14],[98,15],[68,16],[67,13],[96,17],[102,18],[103,19],[104,19],[101,1],[99,20],[100,21],[205,22],[206,23],[204,1],[207,24],[221,1],[223,25],[222,26],[232,27],[217,1],[224,28],[225,29],[226,1],[227,26],[230,30],[220,17],[229,31],[231,29],[233,32],[216,33],[211,34],[203,1],[368,1],[303,35],[304,35],[305,36],[241,37],[306,38],[307,39],[308,40],[309,41],[310,42],[311,43],[312,44],[313,45],[314,46],[315,46],[316,47],[317,48],[318,1],[319,49],[320,50],[242,1],[240,1],[321,51],[322,52],[323,53],[367,54],[324,55],[325,56],[326,55],[327,57],[328,58],[330,59],[331,60],[332,60],[333,60],[334,61],[335,62],[336,63],[337,64],[338,65],[339,66],[340,66],[341,67],[342,1],[343,1],[344,68],[345,69],[346,70],[347,71],[348,72],[349,73],[350,74],[351,75],[352,76],[353,77],[354,78],[355,79],[356,80],[357,81],[358,82],[359,83],[360,84],[361,85],[362,86],[363,87],[243,55],[244,1],[245,88],[246,89],[247,1],[248,90],[249,1],[294,91],[295,92],[296,93],[297,93],[298,94],[299,1],[300,38],[301,95],[302,92],[364,96],[365,97],[366,98],[215,99],[214,100],[213,101],[212,1],[60,1],[329,1],[208,34],[210,102],[209,103],[161,104],[160,105],[157,1],[158,106],[159,107],[62,108],[152,109],[59,110],[153,111],[155,110],[63,1],[61,112],[218,110],[79,113],[154,114],[156,115],[228,110],[64,116],[219,117],[86,1],[50,118],[49,1],[47,1],[48,1],[8,1],[10,1],[9,1],[2,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[3,1],[19,1],[20,1],[4,1],[21,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[36,1],[33,1],[34,1],[35,1],[37,1],[7,1],[38,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[1,1],[45,1],[46,1],[268,119],[282,120],[265,121],[283,122],[292,123],[256,124],[257,125],[255,126],[291,127],[286,128],[290,129],[259,130],[269,131],[279,132],[258,133],[289,134],[253,135],[254,128],[260,131],[261,1],[267,136],[264,131],[251,137],[293,138],[284,139],[272,140],[271,131],[273,141],[276,142],[270,143],[274,144],[287,127],[262,145],[263,146],[277,147],[252,122],[281,148],[280,131],[266,146],[275,149],[278,150],[285,1],[250,1],[288,151],[162,152],[166,153],[163,154],[165,13],[164,13],[194,1],[195,17],[193,17],[192,155],[196,1],[185,156],[186,157],[190,158],[188,159],[197,160],[178,13],[187,13],[189,13],[191,13],[198,161],[169,162],[181,163],[182,163],[179,163],[180,163],[184,163],[183,163],[177,164],[55,165],[53,166],[65,167],[52,168],[66,167],[54,166],[151,169],[168,170],[167,171],[199,172],[51,168],[200,173],[202,174],[201,166],[234,175],[235,176],[236,177],[237,178],[238,179],[239,176],[176,180],[175,181],[174,182],[110,13],[171,183],[172,184],[173,185],[170,13],[111,186],[89,1],[91,1],[92,1],[93,187],[90,1],[112,188],[115,157],[116,17],[117,17],[118,17],[123,189],[119,17],[120,17],[121,17],[122,17],[114,1],[125,1],[126,190],[127,191],[87,157],[113,1],[124,1],[88,192],[80,1],[85,193],[83,194],[82,195],[84,1],[81,1],[145,17],[139,17],[134,17],[135,17],[149,17],[131,1],[133,17],[136,17],[137,17],[148,17],[146,17],[132,17],[140,17],[128,17],[150,196],[143,17],[144,17],[147,17],[138,17],[141,17],[129,17],[130,17],[142,17]],"version":"5.9.3"}
|
|
1
|
+
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/tslib/modules/index.d.ts","../src/types.ts","../src/menu-mode.ts","../src/menu-active.ts","../src/menu-privilege.ts","../src/index.ts","../../../node_modules/@lit/reactive-element/development/css-tag.d.ts","../../../node_modules/@lit/reactive-element/development/reactive-controller.d.ts","../../../node_modules/@lit/reactive-element/development/reactive-element.d.ts","../../../node_modules/lit-html/development/directive.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/lit-html/development/lit-html.d.ts","../../../node_modules/lit-element/development/lit-element.d.ts","../../../node_modules/lit-html/development/is-server.d.ts","../../../node_modules/lit/development/index.d.ts","../src/menu-landscape-styles.ts","../src/menu-portrait-styles.ts","../../../node_modules/@material/web/icon/internal/icon.d.ts","../../../node_modules/@material/web/icon/icon.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/base.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/custom-element.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/property.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/state.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/event-options.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-all.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-async.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-assigned-nodes.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-assigned-elements.d.ts","../../../node_modules/lit/development/decorators.d.ts","../../shell/dist/src/types/domain.d.ts","../../shell/dist/src/types/user.d.ts","../../shell/dist/src/types/role.d.ts","../../shell/dist/src/types/privilege.d.ts","../../shell/dist/src/types/types.d.ts","../../shell/dist/src/types/index.d.ts","../../../node_modules/redux/index.d.ts","../../shell/dist/src/lazy-reducer-enhancer.d.ts","../../shell/dist/src/store.d.ts","../../shell/dist/src/actions/app.d.ts","../../shell/dist/src/actions/route.d.ts","../../shell/dist/src/actions/busy.d.ts","../../shell/dist/src/actions/const.d.ts","../../shell/dist/src/actions/index.d.ts","../../../node_modules/@material/web/elevation/internal/elevation.d.ts","../../../node_modules/@material/web/elevation/elevation.d.ts","../../../node_modules/@material/web/internal/controller/attachable-controller.d.ts","../../../node_modules/@material/web/focus/internal/focus-ring.d.ts","../../../node_modules/@material/web/focus/md-focus-ring.d.ts","../../../node_modules/@material/web/ripple/internal/ripple.d.ts","../../../node_modules/@material/web/ripple/ripple.d.ts","../../../node_modules/@material/web/labs/behaviors/mixin.d.ts","../../../node_modules/@material/web/labs/behaviors/element-internals.d.ts","../../../node_modules/@material/web/labs/behaviors/form-associated.d.ts","../../../node_modules/@material/web/labs/behaviors/form-submitter.d.ts","../../../node_modules/@material/web/button/internal/button.d.ts","../../../node_modules/@material/web/button/internal/filled-button.d.ts","../../../node_modules/@material/web/button/filled-button.d.ts","../../../node_modules/@material/web/button/internal/text-button.d.ts","../../../node_modules/@material/web/button/text-button.d.ts","../../popup/dist/src/ox-popup-actions.d.ts","../../popup/dist/src/ox-prompt.d.ts","../../shell/dist/src/app/pages/page-view.d.ts","../../shell/dist/src/object-store.d.ts","../../shell/dist/src/custom-alert.d.ts","../../shell/dist/src/connect-mixin.d.ts","../../shell/dist/src/controllers/app-controller.d.ts","../../shell/dist/src/controllers/context-controller.d.ts","../../shell/dist/src/controllers/font-controller.d.ts","../../shell/dist/src/controllers/layout-controller.d.ts","../../shell/dist/src/controllers/menu-controller.d.ts","../../shell/dist/src/controllers/route-controller.d.ts","../../shell/dist/src/controllers/snackbar-controller.d.ts","../../shell/dist/src/controllers/index.d.ts","../../shell/dist/src/require-custom-element.d.ts","../../shell/dist/src/drafts/draft-store.d.ts","../../shell/dist/src/drafts/unsaved-draft-controller.d.ts","../../shell/dist/src/index.d.ts","../../styles/dist/src/headroom-styles.d.ts","../../styles/dist/src/scrollbar-styles.d.ts","../../styles/dist/src/spinner-styles.d.ts","../../styles/dist/src/common-button-styles.d.ts","../../styles/dist/src/form-field-styles.d.ts","../../styles/dist/src/common-grist-styles.d.ts","../../styles/dist/src/button-container-styles.d.ts","../../styles/dist/src/button-styles.d.ts","../../styles/dist/src/common-header-styles.d.ts","../../styles/dist/src/common-popup-styles.d.ts","../../styles/dist/src/popup-body-styles.d.ts","../../styles/dist/src/box-padding-editor-styles.d.ts","../../styles/dist/src/gradient-direction-styles.d.ts","../../styles/dist/src/property-grid-styles.d.ts","../../styles/dist/src/table-event-styles.d.ts","../../styles/dist/src/inspector-styles.d.ts","../../styles/dist/src/line-styles.d.ts","../../styles/dist/src/action-heights.d.ts","../../styles/dist/src/form-element-heights.d.ts","../../styles/dist/src/page-frame-styles.d.ts","../../styles/dist/src/fab-styles.d.ts","../../styles/dist/src/card-catalog-styles.d.ts","../../styles/dist/src/index.d.ts","../src/ox-menu-landscape.ts","../../../node_modules/lit-html/development/async-directive.d.ts","../../../node_modules/lit-html/development/directives/async-replace.d.ts","../../../node_modules/lit/development/directives/async-replace.d.ts","../../../node_modules/lit-html/development/directives/if-defined.d.ts","../../../node_modules/lit/development/directives/if-defined.d.ts","../../../node_modules/i18next/typescript/helpers.d.ts","../../../node_modules/i18next/typescript/options.d.ts","../../../node_modules/i18next/typescript/t.d.ts","../../../node_modules/i18next/index.d.ts","../../../node_modules/i18next/index.d.mts","../../i18n/dist/src/config.d.ts","../../i18n/dist/src/localize.d.ts","../../i18n/dist/src/ox-i18n.d.ts","../../i18n/dist/src/ox-i18n-selector.d.ts","../../i18n/dist/src/index.d.ts","../../utils/dist/src/address.d.ts","../src/ox-menu-portrait.ts","../src/ox-menu-part.ts","../../layout/dist/src/initializer.d.ts","../../popup/dist/src/ox-popup.d.ts","../../popup/dist/src/ox-popup-list.d.ts","../../popup/dist/src/ox-popup-menu.d.ts","../../popup/dist/src/ox-popup-menuitem.d.ts","../../popup/dist/src/ox-floating-overlay.d.ts","../../popup/dist/src/open-popup.d.ts","../../popup/dist/src/index.d.ts","../../layout/dist/src/layouts/ox-snack-bar.d.ts","../../layout/dist/src/components/ox-resize-splitter.d.ts","../../layout/dist/src/layouts/ox-header-bar.d.ts","../../layout/dist/src/layouts/ox-nav-bar.d.ts","../../layout/dist/src/layouts/ox-aside-bar.d.ts","../../layout/dist/src/layouts/ox-footer-bar.d.ts","../../layout/dist/src/layouts/ox-page-header-bar.d.ts","../../layout/dist/src/layouts/ox-page-footer-bar.d.ts","../../layout/dist/src/actions/layout.d.ts","../../layout/dist/src/actions/snackbar.d.ts","../../layout/dist/src/components/ox-split-pane.d.ts","../../layout/dist/src/components/ox-entity360-dock.d.ts","../../layout/dist/src/components/ox-three-pane.d.ts","../../layout/dist/src/components/ox-canvas-bar.d.ts","../../layout/dist/src/components/ox-url-tabs.d.ts","../../layout/dist/src/actions/entity360.d.ts","../../layout/dist/src/actions/entity360-registry.d.ts","../../layout/dist/src/actions/entity360-door.d.ts","../../layout/dist/src/actions/entity360-name.d.ts","../../layout/dist/src/actions/id-lens.d.ts","../../layout/dist/src/components/ox-entity360-section.d.ts","../../layout/dist/src/index.d.ts","../src/ox-top-menu-bar.ts","../stories/ox-menu-container.ts","../stories/test-menus.ts","../stories/ox-menu-portrait.stories.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/get-diffable-html.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff-plugin.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/index.d.ts","../../../node_modules/chai-a11y-axe/chai-a11y-axe-plugin.d.ts","../../../node_modules/chai-a11y-axe/src/accessible.d.ts","../../../node_modules/chai-a11y-axe/index.d.ts","../../../node_modules/@types/chai-dom/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/sinon-chai/index.d.ts","../../../node_modules/@open-wc/testing/register-chai-plugins.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/elementupdated.d.ts","../../../node_modules/lit-html/development/static.d.ts","../../../node_modules/lit/development/static-html.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/renderable.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/dedupe-mixin/index.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/scoped-elements/dist-types/types.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/scoped-elements/dist-types/html-element.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture-no-side-effect.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixturewrapper.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/helpers.d.ts","../../../node_modules/lit/development/html.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/scopedelementswrapper.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/litfixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/stringfixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/index.d.ts","../../../node_modules/@open-wc/testing/index.d.ts","../test/menu-active.test.ts","../test/menu-badge-contrast.test.ts","../test/menu-mode.test.ts","../test/menu-privilege.test.ts","../test/menu-rail-page.test.ts","../test/ox-menu-portrait.test.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/dispatcher1-wrapper.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/socks5-proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/ffi.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/path/posix.d.ts","../../../node_modules/@types/node/path/win32.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/quic.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/iter.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/test/reporters.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/util/types.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vfs.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/zlib/iter.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/mocha/index.d.ts"],"fileIdsList":[[241,306,314,319,322,324,325,326,339],[69,241,306,314,319,322,324,325,326,339],[58,69,241,306,314,319,322,324,325,326,339],[58,69,77,241,306,314,319,322,324,325,326,339],[71,241,306,314,319,322,324,325,326,339],[56,57,241,306,314,319,322,324,325,326,339],[64,106,241,306,314,319,322,324,325,326,339],[61,64,98,100,101,102,103,104,241,306,314,319,322,324,325,326,339],[61,95,105,241,306,314,319,322,324,325,326,339],[105,241,306,314,319,322,324,325,326,339],[64,108,241,306,314,319,322,324,325,326,339],[64,94,241,306,314,319,322,324,325,326,339],[61,64,241,306,314,319,322,324,325,326,339],[64,96,241,306,314,319,322,324,325,326,339],[64,97,241,306,314,319,322,324,325,326,339],[64,67,241,306,314,319,322,324,325,326,339],[64,241,306,314,319,322,324,325,326,339],[64,101,241,306,314,319,322,324,325,326,339],[64,101,102,241,306,314,319,322,324,325,326,339],[61,64,96,241,306,314,319,322,324,325,326,339],[64,99,241,306,314,319,322,324,325,326,339],[204,205,241,306,314,319,322,324,325,326,339],[206,241,306,314,319,322,324,325,326,339],[205,207,241,306,314,319,322,324,325,326,339],[221,222,241,306,314,319,322,324,325,326,339],[221,241,306,314,319,322,324,325,326,339],[217,219,225,226,227,230,231,241,306,314,319,322,324,325,326,339],[220,223,241,306,314,319,322,324,325,326,339],[224,241,306,314,319,322,324,325,326,339],[220,224,229,241,306,314,319,322,324,325,326,339],[220,223,228,241,306,314,319,322,324,325,326,339],[204,216,232,241,306,314,319,322,324,325,326,339],[208,211,212,215,241,306,314,319,322,324,325,326,339],[204,241,306,314,319,322,324,325,326,339],[241,303,304,306,314,319,322,324,325,326,339],[241,305,306,314,319,322,324,325,326,339],[306,314,319,322,324,325,326,339],[241,306,314,319,322,324,325,326,339,348],[241,306,307,312,314,317,319,322,324,325,326,328,339,344,357],[241,306,307,308,314,317,319,322,324,325,326,339],[241,306,309,314,319,322,324,325,326,339,358],[241,306,310,311,314,319,322,324,325,326,330,339],[241,306,311,314,319,322,324,325,326,339,344,354],[241,306,312,314,317,319,322,324,325,326,328,339],[241,305,306,313,314,319,322,324,325,326,339],[241,306,314,315,319,322,324,325,326,339],[241,306,314,316,317,319,322,324,325,326,339],[241,305,306,314,317,319,322,324,325,326,339],[241,306,314,317,319,320,322,324,325,326,339,344,357],[241,306,314,317,319,320,322,324,325,326,339,346,348],[241,293,306,314,317,319,321,322,324,325,326,328,339,344,357],[241,306,314,317,319,321,322,324,325,326,328,339,344,354,357],[241,306,314,319,321,322,323,324,325,326,339,344,354,357],[240,241,242,243,244,245,246,247,248,249,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366],[241,306,314,317,319,322,324,325,326,339],[241,306,314,319,322,324,326,339],[241,306,314,319,322,324,325,326,327,339,357],[241,306,314,317,319,322,324,325,326,328,339,344],[241,306,314,319,322,324,325,326,330,339],[241,306,314,319,322,324,325,326,331,339],[241,306,314,317,319,322,324,325,326,334,339],[241,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365],[241,306,314,319,322,324,325,326,336,339],[241,306,314,319,322,324,325,326,337,339],[241,306,311,314,319,320,322,324,325,326,328,339,346,354],[241,306,314,317,319,322,324,325,326,339,340],[241,306,314,319,322,324,325,326,339,341,358,362],[241,306,314,317,319,322,324,325,326,339,344,346,347,348],[241,306,314,319,322,324,325,326,339,345,348],[241,306,314,317,319,322,324,325,326,339,344,346],[241,306,314,317,319,322,324,325,326,339,344,347,348],[241,306,314,319,322,324,325,326,339,348,358],[241,306,314,319,322,324,325,326,339,349],[241,303,306,314,319,322,324,325,326,339,344,351,357],[241,306,314,319,322,324,325,326,339,344,350],[241,306,314,317,319,322,324,325,326,339,352,353],[241,306,314,319,322,324,325,326,339,352,353],[241,306,311,314,319,322,324,325,326,328,339,344,354],[241,306,314,319,322,324,325,326,339,355],[241,306,314,319,322,324,325,326,328,339,356],[241,306,314,319,321,322,324,325,326,337,339,357],[241,306,314,319,322,324,325,326,339,358,359],[241,306,311,314,319,322,324,325,326,339,359],[241,306,314,319,322,324,325,326,339,344,360],[241,306,314,319,320,322,324,325,326,339],[241,306,314,319,322,324,325,326,327,339,362],[241,306,314,319,322,324,325,326,339,363],[241,306,309,314,319,322,324,325,326,339],[241,306,311,314,319,322,324,325,326,339],[241,306,314,319,322,324,325,326,339,358],[241,293,306,314,319,322,324,325,326,339],[241,306,314,319,322,324,325,326,339,357],[241,306,314,319,322,324,325,326,339,364],[241,306,314,319,322,324,325,326,334,339],[241,306,314,319,322,324,325,326,339,353],[241,293,306,314,317,319,320,322,324,325,326,328,334,339,344,348,357,360,362,364],[241,306,314,319,322,324,325,326,339,344,365],[241,306,314,319,322,324,325,326,339,346,366],[204,214,241,306,314,319,322,324,325,326,339],[213,241,306,314,319,322,324,325,326,339],[210,241,306,314,319,322,324,325,326,339],[209,241,306,314,319,322,324,325,326,339],[157,158,159,160,241,306,314,319,322,324,325,326,339],[157,158,159,241,306,314,319,322,324,325,326,339],[157,241,306,314,319,322,324,325,326,339],[157,158,241,306,314,319,322,324,325,326,339],[58,61,241,306,314,319,322,324,325,326,339],[59,61,241,306,314,319,322,324,325,326,339],[61,241,306,314,319,322,324,325,326,339],[59,61,152,241,306,314,319,322,324,325,326,339],[59,60,241,306,314,319,322,324,325,326,339],[70,71,72,73,74,75,76,77,78,241,306,314,319,322,324,325,326,339],[153,241,306,314,319,322,324,325,326,339],[155,241,306,314,319,322,324,325,326,339],[58,61,62,63,241,306,314,319,322,324,325,326,339],[218,241,306,314,319,322,324,325,326,339],[49,241,306,314,319,322,324,325,326,339],[241,256,259,262,263,306,314,319,322,324,325,326,339,357],[241,259,306,314,319,322,324,325,326,339,344,357],[241,259,263,306,314,319,322,324,325,326,339,357],[241,306,314,319,322,324,325,326,339,344],[241,253,306,314,319,322,324,325,326,339],[241,257,306,314,319,322,324,325,326,339],[241,255,256,259,306,314,319,322,324,325,326,339,357],[241,306,314,319,322,324,325,326,328,339,354],[241,306,314,319,322,324,325,326,339,367],[241,253,306,314,319,322,324,325,326,339,367],[241,255,259,306,314,319,322,324,325,326,328,339,357],[241,250,251,252,254,258,306,314,317,319,322,324,325,326,339,344,357],[241,259,306,314,319,322,324,325,326,339],[241,259,268,277,306,314,319,322,324,325,326,339],[241,251,257,306,314,319,322,324,325,326,339],[241,259,287,288,306,314,319,322,324,325,326,339],[241,251,254,259,306,314,319,322,324,325,326,339,348,357,367],[241,255,259,306,314,319,322,324,325,326,339,357],[241,250,306,314,319,322,324,325,326,339],[241,253,254,255,257,258,259,260,261,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,306,314,319,322,324,325,326,339],[241,259,280,283,306,314,319,322,324,325,326,339],[241,259,268,270,271,306,314,319,322,324,325,326,339],[241,257,259,270,272,306,314,319,322,324,325,326,339],[241,258,306,314,319,322,324,325,326,339],[241,251,253,259,306,314,319,322,324,325,326,339],[241,259,263,270,272,306,314,319,322,324,325,326,339],[241,263,306,314,319,322,324,325,326,339],[241,257,259,262,306,314,319,322,324,325,326,339,357],[241,251,255,259,268,306,314,319,322,324,325,326,339],[241,259,280,306,314,319,322,324,325,326,339],[241,272,306,314,319,322,324,325,326,339],[241,251,255,259,263,306,314,319,322,324,325,326,339],[241,253,259,287,306,314,319,322,324,325,326,339,348,364,367],[161,241,306,314,319,322,324,325,326,339],[162,163,164,165,241,306,314,319,322,324,325,326,339],[64,161,241,306,314,319,322,324,325,326,339],[189,241,306,314,319,322,324,325,326,339],[64,177,241,306,314,319,322,324,325,326,339],[86,241,306,314,319,322,324,325,326,339],[61,64,68,190,241,306,314,319,322,324,325,326,339],[64,68,241,306,314,319,322,324,325,326,339],[61,64,195,241,306,314,319,322,324,325,326,339],[170,177,178,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,241,306,314,319,322,324,325,326,339],[127,241,306,314,319,322,324,325,326,339],[175,179,241,306,314,319,322,324,325,326,339],[68,109,241,306,314,319,322,324,325,326,339],[50,51,52,53,54,241,306,314,319,322,324,325,326,339],[50,51,241,306,314,319,322,324,325,326,339],[50,64,241,306,314,319,322,324,325,326,339],[50,241,306,314,319,322,324,325,326,339],[50,51,64,65,68,79,127,150,241,306,314,319,322,324,325,326,339],[50,51,52,53,64,68,79,127,150,151,168,241,306,314,319,322,324,325,326,339],[50,51,52,53,64,66,68,79,127,150,154,156,166,167,241,306,314,319,322,324,325,326,339],[50,51,64,68,79,127,199,241,306,314,319,322,324,325,326,339],[50,51,64,68,79,150,168,241,306,314,319,322,324,325,326,339],[50,64,168,201,202,241,306,314,319,322,324,325,326,339],[50,51,53,233,241,306,314,319,322,324,325,326,339],[50,51,64,168,233,241,306,314,319,322,324,325,326,339],[50,52,233,241,306,314,319,322,324,325,326,339],[50,51,54,233,241,306,314,319,322,324,325,326,339],[50,52,64,127,169,233,241,306,314,319,322,324,325,326,339],[110,111,171,172,173,174,176,241,306,314,319,322,324,325,326,339],[64,175,241,306,314,319,322,324,325,326,339],[61,64,68,241,306,314,319,322,324,325,326,339],[61,64,68,171,241,306,314,319,322,324,325,326,339],[61,64,171,241,306,314,319,322,324,325,326,339],[61,64,173,241,306,314,319,322,324,325,326,339],[61,64,68,107,109,110,241,306,314,319,322,324,325,326,339],[89,90,91,92,241,306,314,319,322,324,325,326,339],[64,111,241,306,314,319,322,324,325,326,339],[116,117,118,119,120,121,122,241,306,314,319,322,324,325,326,339],[64,125,241,306,314,319,322,324,325,326,339],[85,88,93,112,113,114,115,123,124,125,126,241,306,314,319,322,324,325,326,339],[86,87,241,306,314,319,322,324,325,326,339],[80,81,82,83,84,241,306,314,319,322,324,325,326,339],[81,82,241,306,314,319,322,324,325,326,339],[80,81,83,241,306,314,319,322,324,325,326,339],[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,241,306,314,319,322,324,325,326,339]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"b8f34dd1757f68e03262b1ca3ddfa668a855b872f8bdd5224d6f993a7b37dc2c","impliedFormat":99},{"version":"30db73264f423790415f2f88f22c374cb0ede9c0610fe3386ae20cc17574bcf5","signature":"a4f32f4e2c7c8b874051148ee801dede9c40258b2f79e463fd28235af0ad3bd7"},{"version":"222d8d903bd361e9f810461daa3cf06f66ab39df90e125089dfb3e890322162c","signature":"5a2b608b2b13ddcf2663adb04f249d5e232405b7a43a6fb256be031542d4efd9"},{"version":"b50dbf2add390af56855fa275d35d112aa39a617ce4310d6f6f5ebde1b26c287","signature":"bc8160e988082beb8566f5959b6b9d619dc32d18e6a0b459c2048250f62d948b"},{"version":"207a185ae4d9a3cc6c2481e19216e02aa3b465e37bdcf2a54c2ad81963574d2b","signature":"8c343f73650fe89ac17ccf2077c92a4efb35742b1b42d211754f1ce5b29e890c"},{"version":"93d215899a1bd18750be7a232c22c14539d440c03f660b86a1db21c3186dc56c","signature":"8cccc9e3831c43812a4afa5e2725761ca82575c74febb41ffe5e0560f38e18f6"},{"version":"74012d464fbc5354ca3a7d5e71bee43b17da01a853c8ff10971bbe3680c76f40","impliedFormat":99},{"version":"5e30131b6a5587fe666926ad1d9807e733c0a597ed12d682669fcaa331aea576","impliedFormat":99},{"version":"a0f82d2f9450bd147a8c137798d9501bd49b7c9e118f75b07b76709ff39b6b55","affectsGlobalScope":true,"impliedFormat":99},{"version":"00cb63103f9670f8094c238a4a7e252c8b4c06ba371fea5c44add7e41b7247e4","impliedFormat":99},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"e09db3291e6b440f7debed2227d8357e80c95987a0d0d67ac17521d8f7b11bdb","impliedFormat":99},{"version":"9a318e3a8900672b85cd3c8c3a5acf51b88049557a3ae897ccdcf2b85a8f61f9","impliedFormat":99},{"version":"1bcd560deed90a43c51b08aa18f7f55229f2e30974ab5ed1b7bb5721be379013","impliedFormat":99},{"version":"dc08fe04e50bc24d1baded4f33e942222bbdd5d77d6341a93cfe6e4e4586a3be","impliedFormat":99},{"version":"a1c5ae2fd49803fc6db34e95007b9c75a21aba738acc4a519c839a129e509eca","signature":"3bcaadf31685c068f5c12037763d5f7d16e86c25412946aad78e418193066ba6"},{"version":"864c2fe6da94b03dae6a4868d4bf62a02c5113bc02e13f51f4dae9d1540f34a4","signature":"b264a25bcb204cc781031cc94856e649951aaf0b3764b167c7de4f81852415ac"},{"version":"b93e2680295ac83b52846bcd76dd6d06507d3da1738ebe564a1e99543993b3b4","impliedFormat":99},{"version":"4ae1ed87c59518f4e0918a21409ec3020e97037a386b57953c6b9fed9cad6949","affectsGlobalScope":true,"impliedFormat":99},{"version":"cdeae34aca6700620ebf3f27cf7d439c3af97595dd6e2729fa4780483add5680","impliedFormat":99},{"version":"3ff87ea3471b51beaf4aa8fd8f4422862b11d343fdbb55bf383e0f8cc195a445","impliedFormat":99},{"version":"99bdf729529cdbf12e2bf76ea751b662011133dcf9e35abcb3def47bb02f7b0a","impliedFormat":99},{"version":"732fb71ecb695d6f36ddcbb72ebfe4ff6b6491d45101a00fa2b75a26b80d640f","impliedFormat":99},{"version":"039cb05125d7621f8143616c495b8e6b54249c4e64d2754b80ff93867f7f4b01","impliedFormat":99},{"version":"1b81f1fa82ad30af01ab1cae91ccaddc10c48f5916bbd6d282155e44a65d858d","impliedFormat":99},{"version":"a0fc7a02a75802678a67000607f20266cf1a49dc0e787967efe514e31b9ed0c3","impliedFormat":99},{"version":"5ebf098a1d81d400b8af82807cf19893700335cf91a7b9dbd83a5d737af34b11","impliedFormat":99},{"version":"101cf83ac3f9c5e1a7355a02e4fbe988877ef83c4ebec0ff0f02b2af022254a3","impliedFormat":99},{"version":"d017e2fcd44b46ca80cd2b592a6314e75f5caab5bda230f0f4a45e964049a43a","impliedFormat":99},{"version":"a8992b852521a66f63e0cedc6e1f054b28f972232b6fa5ca59771db6a1c8bbea","impliedFormat":99},"4d4cf93a6b4c81851ad759e4569b6feb7a701e80b13a6f9d8d9c6012bbb86bd6","2e6035af8f3e43bf95e4983329c8277d66f9b271106af27b99a85d1c1b9daf4a","df32d43311e85715e2a573239a4bbc5b78ebaf29af2af5fa8c85370197997515","3a792bbf677343364a1d9b7197c6e4e512764f17364efd656b1a3598f2a9e820","3d7c0b593a29d717b2b2ba3f03f819c3c48bf9e250d79c4a31860af80f177e8c","e576aa80090f8b6020355ca8d7f4184067c84389f4b92125be29e03b1f6c5194",{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true,"impliedFormat":1},"487213b1bcbdaa470cf59a4cea3f8a939b9222e74b455fe0fd2f0dc2346cc3c0",{"version":"8a9e962b8c98aa48377773c40ac7a3e530fb3354cec48fdb59d8e2df3a624a0c","affectsGlobalScope":true},"641089f0b8094ef74b9d4b3364d5dec1592d5e3b8a51c1ba491bc8872049e79a","ee7d2517ae77f36f10c280ad7acc2dd1bee3a411ec83ce26127def0c3db90081","b42033bf1067564808e4d360d79281667c2b3b0792c2d615ab641eb85974d4ba","7af29b0589483f7bb8a99405ddb849f34bc053146184561ed4179e02f5fe4d0f","ad3ee9f7d14ad8b7ae8094d0f1a2276656f7a970827d4030d1dead7c2d765f75",{"version":"6184309fe39e2fe444f4ba94e7cd1abef48fcb48e258457c3b77c65828184241","impliedFormat":99},{"version":"98c511f60c3079d731a35353a47bfa89dd79eeacad48a45d07170d22ef4bfd02","affectsGlobalScope":true,"impliedFormat":99},{"version":"905800cc110167503d0cf58bb0dd6fa4aaac1e9cedc9bd9c48e5d1f8b5b8d4c8","impliedFormat":99},{"version":"d17be577b99e59611df19ca2cf0356df554f55bb06617c21321fc4ec06b820d0","impliedFormat":99},{"version":"5f30145fbc8ca508ae4e0d90a4fe9eaff490783f380a92f6aa262accdf7887b7","affectsGlobalScope":true,"impliedFormat":99},{"version":"cefe49d29d43726072e88671a2c40cdeeb8d49ca8fa6c2d4b06013dc7b9d6206","impliedFormat":99},{"version":"f882b77c5939860d599b4b7bc39f741ebcd56123e18b284500f4b8923acd2e72","affectsGlobalScope":true,"impliedFormat":99},{"version":"0230bc76ed3a464531a43d2434d315b9cc2096aaca28bdaa65b8f9dce9f3bc81","impliedFormat":99},{"version":"559d2d1cd7f37dc2ac59e7adce198ad16a5eb0c7273d67b8e4ff72821b7c853f","impliedFormat":99},{"version":"6161d12fc14a8e0cf492f9d49372a1189b1fe005662cb7fe6630352a6b0bb04e","impliedFormat":99},{"version":"7d3c06d4ad79d86c6f7518b77d335b324bc218a7cd8b3e15579c4b584b7307f9","impliedFormat":99},{"version":"65f5bc7ff74eeabe9925da575924601248471033c27bf0384643ea03cad2b57d","impliedFormat":99},{"version":"d08d474654640266d6ac03f51ee04d72438b78ea377b9dc4678c480ce0477e1a","impliedFormat":99},{"version":"929f21090183949e93fd99327d292bff76f781895d5252eb43319b2c3e014528","affectsGlobalScope":true,"impliedFormat":99},{"version":"0f28503979e769f6ee6e55350f621dc00e300f15688d52b02edc62d837d29b1d","impliedFormat":99},{"version":"fe869c79d427e84d916011d082def68a793c3c13e157079fec399f250418bd50","affectsGlobalScope":true,"impliedFormat":99},"a2afc55ddd24edebefe497c415aee63498b099cef639b85a1bb3163e58649928","0ee02e214247d645a3d76c05ffa05d6c6abba39a0b04a971ad97bc7850e206bc","cb300584ea8c201014c73c5240c2d6a811459cc762331ff1ae34e0a6dce9e4d9","fc48282c397084016a939e1b3f91dcaf4199b6cba339d91d8b2dc2acade79762","3e62a55b950132d6eeacc607b7a1bff990d5484347b2be5a1f54db51af30ff25","8b86f33b7e06e2f0a3bf4703cf9d8b0baab016e36b83f2a33dac184f061e17ea","88c205bacab539d8e844b80a1ec76fc649fbc731f12dfd7cca160976b5ddfd5a","565d32dce0b8761e7cfafe40c56a8a0fab0bb9e7bb35a31d9712643b3c8dbbc4","4bde12afd6fdd6e52d7316e00adfbccd70becc3ebd9c4f647d07caef53a474ae","a7e588bdba05f1fb78f83e50ee62c93565134d3b996babf2697c2b43fcf17ce0","218a0f93d7091c68718ec4260f41f3a61b5ecb7e786a8c04e296292ff41db8f0","cf45487aeb18b31f1001b99d06793986ac3e6840b0602f9cf3756a2724348bf4","81f0a95843ae6e5a006addc4b5c217b075057ff82c9bc319655de21a13ba9f10","1a68f44e90ac5c261a3157004a7ec18759982b91fd725537d6db919d83601dd1","daccba798a74fc239523622caf24656e28b78dac33ea8a031682280fd51b0d0f","f6a07f563f8ac41831de197155d550379c6d197109ba54d8ffdec21dfa287a6f","170d8b0727dcf6f76de6e8a9943d7b2505793210e7c7de8d4ba7379610962803","5cee37504a444c12c6633430239f9dd1b26649c19f1e71adaaf4ea5712cc8c62","cf93fb9208a01c80f0fad245c4360356e5de6c2384b7641acf0b9cc2f5c42448","336398b0efaf964124e636a9b29c4edd5870aee79ac64bf87be58a9d66b7c048","571bc65ec37ba124e762bb822e14a2b8502dc684e356be8feaccbd6b9cadd023","7cd455fc4c4818f19263d73b29c59f3fb5fd54b45a6ab83ca3eb3661281db56b","d428a9fbb7cc014b69651793373edf9be9b0bba7c3e7f720d2a294dd1a50d7c5","1c6b9b5501774a2ece6574be8e26092800e3f1f836f8c179b4f9fdd271a620f8","bcd2426fd141157e04e3a8eff914b575403587f398cf0878f07c2f283e0d1afd","c04405c54b9095528ba8d4006ff443a5aad3ea65611344c4522aab1608d0705f","bac8ff394e831e4dd3f0961d6abb414b0e2b4ba16fdeb502d087ebf0340ed5f6","d9f8946a29f08d831605e6a9005785842dfbe5b09e5d38b6bf5073a11453890a","f9dee09d52541244f2a093e8faa29bec9527aad98111279fea51a10a95b9bfd4","b337608772b9df38e69b89837ecf758100e6c1c7acd4d0f10595f738faf1d034","c89d663edb7c20cfab677286571dc8f4f09878119d7ecd010895133995f12532","9d04b912e18e966fca08158f28e5c41bfb2fa864187d926e04d737aa83a96e17","2ad4fcfa075cde73e5ae78491531cef44cec9fb9a880be8335afd98c444528cf","881cb6bb1e6384a9943b8c6f1cd3a0f215a683b032130f700e0d87bc9a990727","e2d895b9561b0b9a350c970475ff268e4e0fc44436e107a916889a0a93d3389b","302a06cbb95a5c6041745f5f8f64a0a7b2fe7926f2ee71f96644f473d6804a44","bfa39163a2b652b382fa019284a857b7a8a25eb3c4469124088530cead0ba347","a2f3de4d473e2dab6128eb8f69cfad59e9894ad25be6ec7213900e9236971582","6a53004a10b7472c10c900aac074c24cd127b3ddbb9105dc8b3fca25990aa977","73868c81078b6ee9a3702c45413d93f367f652c91b32221f40f6b5f60333f979","1ac2b7818cb72193c46f6b78732a65953a017e339624ed6555d165ca490bbe7a",{"version":"edce72f988c83157a88933338f4cdcf3bc72118ab04d9ac07cd35abee7c92678","signature":"143f8d604ef3ed044bfdeda068f2b4f33d0cd8df6d9d42b26a2ecce9426cb0bc"},{"version":"c42f9b18f5f559b133cf9b409f678afb30df9c6498865aae9a1abad0f1e727a8","impliedFormat":99},{"version":"feaf207fddc69de2a8826438be06f5f954964cddc8e95bf980c9fe02cb22616a","impliedFormat":99},{"version":"e3d6176dc713a2b6b17054021a6aa839824bf43f358e3ae12192b54c6de1a6b4","impliedFormat":99},{"version":"74fe889b1d2bba4b2893d518ba94e2b20dabe6d19d0c2f9554d9a5d3755710f4","impliedFormat":99},{"version":"2ae64cd7b6e760496069ee3b496c64700c956a0620740e1ef52b163824859db7","impliedFormat":99},{"version":"e30accdbef6f904f20354b6f598d7f2f7ff29094fc5410c33f63b29b4832172a","impliedFormat":1},{"version":"3786a961459023ec78bb575e5ea74f504d3ffc61ae82a305c959a4d94d7d70eb","impliedFormat":1},{"version":"de83915a380bdd6d7ddf075e3f60fe347db64ad4d06822835724ac601cb61daf","impliedFormat":1},{"version":"4d39c150715cb238da715e5c3fbeac2e2b2d0ef3f23c632996dd59ae35ba1f45","impliedFormat":1},{"version":"e9f80c5934982b97886eadab6684c073344a588d1758b12fba2d0184e6f450a2","impliedFormat":99},"0f81a53d54fd2b4ae2bf60067d616de99884bda21cb5784d942089d52319fb97","86d356e64ab8d56852623677eb1bed0c106703aed9b7788ad8a5a56e647822cb","29dca1b5f0cac95b675f86c7846f9d587ed47cc46609dd00d152bcb37683b069","231d829c892caeb88dd469e0847bf9d14e29c82b8b158b381ec866c868adf9af","886bcc73e8cf74ebec1bd14a5cc5b8dfa28276210df634e6f81c844b1eef767b","2367f21d79c673f4cb1e5d23198c39996d2fa9ce58384fae145f93d767567034",{"version":"a74d44efa15cfaa7683f92f293f9e039991e0dbd8daf0c6e0aced3d22240594e","signature":"87beb2b2f89de425bb135c948de8c7fdee0bacab785129e61d3b676eeb7cee4b"},{"version":"b8299a7726bd66835898aa6411b1f54d31c16975dd8e9501edd8d0db2699daba","signature":"5bff732ad41c7ca0cb51e43e7994facfccefc389ba88f3596a2fff835a5f0f4b"},"60997095f458b8c2c94af5759c796d9d17678e740a41a04c3e518c14c47f2ee7",{"version":"64b7a09108e21b28cf2fae71cbf993014bdf4f18d9dafd98b553c7b6c19789c9","affectsGlobalScope":true},"7781e7ff3d72e3aae0ecae4189872ac0d4081622ed74b3f5feea2119754c867d","986165ecc3a59d4b6a272a92f7ca4fd7a0762c63a674abd2c1efa0bea64da604","3e7b241ec38126d95f9e37c49a631c00cff006a888276e2d02920c6443c8b593","bad37852b83df7a04802c2827fa02f8af046e4d944e0d08e02294d27b2748129","1fc3a35588d5f43c8ea68937e60d360d48390f5d454b1e6830659dfce9a7a937","c9d3623b528f615e0466361855fbba048e88d381bb5257f23c37062b2fdb6039","3c523c4338a858825c62005f03ff49eeaf8290bdda52a8b8554be555bab7a077","5582fb24ca35ef8a72d61a095d62ae2ada8143c33bc56febf626e333d3a5b013","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","f125a774d4d2f7cb2882107afe30d33cbbf96d9dec4aa624bd94a74c223d4d37","6e815042f98ee8b44cd7f372039ebc2f5ebc13d5be353b29ea7f18f1519b0edf","86d239790a025b4f1213571ed5d578b9080415e1218b253b499ed73ac436ae63","c324680d0f90c92b14000a230d54c75332588ea75a5eca7f63b6ff4d77ea8188",{"version":"ad9efb41182f5e07976abd80e4b00ac80692f3ab8d55fe3b85d3c282c229b98e","affectsGlobalScope":true},{"version":"5425a627e508bc6d1ccfb1ea6f8d250f93c6fa7fe034e6f1b03a48e8ce0a3167","affectsGlobalScope":true},{"version":"49e0572afa6c45adb4f152607e105739f15d196e582b276d5c7b2a828b98a068","affectsGlobalScope":true},"2c252ad88d5a3aacd77cfe7f074616769c0efef8ab699ad76c63c030cfdfc200","44856288c9509a2f962d08ce6e89431efc92c772cded206f9b6f6533c5598a1b","4a85bb2b13ae7e1c70e4974e37f84ccfefc22bb9a9f450e57681ab072f3cbf93","caf3e0c255508bebccd84112eb0a277561802b9edd833367bd492f745b74a7dc","e32adea204d24c8884d127c0c71867c3edcee378efb72527e44d3a8c112be874",{"version":"c360546ca0d716d461f18e5fdc72a4b9a6482f2d5dbb1c384213bbc4a6cb35b1","affectsGlobalScope":true},"3db7cad52fe7e0f5093842f4e11c26c40ac370810694c77cc385629bfc4e3a06",{"version":"de53165df4274f512d63c56ad34b21c451f86e3cfd2d1e2dd866c5250e0924e8","signature":"79deb069b1537b1757965b5b16e5b8e6921017ce3f7088d1d813eee727b4b49e"},{"version":"7676ea7aed13b1887f9d232ea2d5d6f7dbf9cf04adedc9f78985893eb9b4a189","signature":"1004e6124d3c4663544dbb9431bdfb786459e4ca93d02cfe0ffcd8a0994af69d"},{"version":"4eb26a88276bdfea327e95d4ba3918a6cb8053cf19f4bdb3153020ab650ae7af","signature":"acfcfdf417c988d67e5d48f5fcff7b6dd52c88720ecd635137a2929170836244"},{"version":"f69671beaabadb5eb4b29d05eafde2114c1a3950069916a799ea8e2e97696e6b","signature":"52b248e376193dd4349afee293aaa4c7b4899dddae63cfa5a8a05cb980c24e04"},{"version":"eef204f061321360559bd19235ea32a9d55b3ec22a362cc78d14ef50d4db4490","affectsGlobalScope":true,"impliedFormat":1},{"version":"72bee526b949b9932edba50997ff3b9cdede7b314d790d5f0d94f3d2944930ea","impliedFormat":99},{"version":"2d412861573a672bd90fdcb1e48740593324565f3b3aaf6808c0e3e2f0d54ae8","affectsGlobalScope":true,"impliedFormat":99},{"version":"cd711db43a952f15464b571ac11b7a440332cd52342bc92c4bf908c70688f57f","affectsGlobalScope":true,"impliedFormat":99},{"version":"9d8709c916778cb34830708ed47b78e9a46d1fb2eb73a682b14eee990bed4aa6","impliedFormat":99},{"version":"507e2131e89b515ce40c05c0c2fef6cc575ba8947703f92e8cdf36078747a9ff","affectsGlobalScope":true,"impliedFormat":99},{"version":"999a90d30a3183dcee987d0a5a7c586aba5bacbf6ce087ba8635124082ccfeea","impliedFormat":99},{"version":"8a5878edd52f4a720560b4c6e6247e9ddc3df6118ad9cf2f9927903b03d5f440","impliedFormat":99},{"version":"e7be17cfcbe98809c052f384c230ecea9e1cee045edac9db0659e997a988ff9e","affectsGlobalScope":true,"impliedFormat":1},{"version":"baf3507287629018d38c88e2636dd041550c70620bb774127011eb6dc3b361c0","impliedFormat":1},{"version":"4738bc5d39ac01532d861967a4fe52769e3892fb8022d4524802ac1c7aed4934","impliedFormat":1},{"version":"525b52b38b44420fb1758c0917e7b67cf379f7f9477d2ba7343f3d5f50a44258","affectsGlobalScope":true,"impliedFormat":1},{"version":"65b91a3725399231d3469529b5e27b85bf2aa98013e607f308e5fe260b47eeff","impliedFormat":99},{"version":"04e3793f33c71ceae20a4719698c068b72c98cf925b3c5f8a33096c00ed44258","impliedFormat":99},{"version":"fa8ef3fb228e258f9508386e2056c95c959d1c1168301181313a5c978754ba70","impliedFormat":99},{"version":"15c9478a8a3d630ac5e738aca25fca15d0842aaeb97fb1a9c1e80eddc5a0e14c","impliedFormat":99},{"version":"cc46ce345c0e19e456388446733250527eead4ca557b5e5fdf0c2e30adc3c89f","impliedFormat":99},{"version":"88cda4269c54f0803834fd62b2fac61af8bff7a085693f7ca9df85c1f19dee8a","impliedFormat":99},{"version":"5a2888a80ba9fae27aaa312464ab4b744ce4cfce573c105844ad8e94a39e2d7d","affectsGlobalScope":true,"impliedFormat":99},{"version":"260d1e9ec9c633c7ae90d8c17762e77924eef5d71357b27bfd351da698db4f6d","impliedFormat":99},{"version":"6168f8e0a5b354f8177bf0dee7c1a69c2afb6a155d5534221f3a1a2d86b84367","impliedFormat":99},{"version":"d7840fd94e6dfb5b0d9df5a20fe1e79c8dd72b1efdb74d2ef04c31e3588c6b5b","impliedFormat":99},{"version":"fa6d684e15fe6e99c7208a51b45c04f8e0147f1c8587871aac48fff55b7b1f24","impliedFormat":99},{"version":"d61a4b627c3e2e054616df905a25226f547dc0e821c2a2b6d5f13318b3fd7e78","impliedFormat":99},{"version":"1308479c593c3d337bd9c438ac1d7164006a9286638cec0b26e3331a978f91d4","impliedFormat":99},{"version":"cfad37dbd7cf27cc16758755847ad7c07ac52a01c466486e50f8f84d0f0ea9ce","impliedFormat":99},{"version":"0c4d3009672fd12d4d9a6505e769de9369c180dcfa8188d9fd850ec156245d87","impliedFormat":99},{"version":"793fca6322a14fa8fa6bc6a4fc694fd7bcc88922c4f9abcd48bf6908f8bf939b","impliedFormat":99},{"version":"be3e93b109deb44b925583674cc0706c0b3c2e7316bcf79631285a45c18ed0c8","impliedFormat":99},{"version":"50f63746fc2a779d1f9c5657fd78e292045dc98b540e026799e039ea629f2943","impliedFormat":99},{"version":"d51cc917d5d894061c2005e335ef73dc3aa9bc839daa429b3eb6fa18959797f9","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1e90cd76e64b93c2b16b31a3f8a8e305cab40d36bca0bce953499fb4ff2d5bda","signature":"8c60144e64b097f4d8d99e882cbce15c62b40377ba544267315c8284e150c921"},{"version":"8c6ea4dfb3dc8853b017c3d32b5daa85c7a8f8d369948fbd549ec92cc5bc9ece","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1e07c908517c06ef99001d074c4068deb989e7410ade42fc54b213e041ee82d2","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"931bf503f79c4a75334382659794c5f58230dfbc1dc114eec6a095d8286ed37d","signature":"a8d8e886ff338626b1c5921a55bd198cd1203d9fa76c0aa38f995b198a037b78"},{"version":"fa2b46f21b2652563cdc0e9e6511c26d1f652f440496aa3f74026d79971c8dcf","signature":"8c60144e64b097f4d8d99e882cbce15c62b40377ba544267315c8284e150c921"},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9b68a1c3f8f45b4c199fa5b3ac09497230cb8f2f0cdcfebe5817b30b836a64a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f53a7652392cf26ebbe4e29fd0672aa87c93bd6d0241289c13fab87b9ac35c8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"b00a630557d1622ad312633bdbfbdb9c6b7220d948dca9f899db30679f160074","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"88809d6c1b9c78d04a133646a6feb926def05a8774c308c7c93bc32ee163d271","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"21d7fab00c101ddf754b392e11534e6b20c6bda269b2ccbcdf3453cbe21d8a39","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"d3c85d4dde1a4918009e37426ee4a940cbbd4100e2e74d03e2de0d50a77bb488","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"60e3ba4b2d24548107060e5d13bffafbbbaa53d001c07bbe40386deda569b5e8","impliedFormat":1},{"version":"a712be2c8cbe0154bd17d1d7bff503d7c04331e0745eb9eea3d303e0e5d9401e","impliedFormat":1},{"version":"25bd6ae1b97ea991433337310fc406cc7c9f271b67b7c79dd24eee384759f3d4","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"38004e6801340cb890afb8cb5a9fc8972297e7f88ab94026e4b0b3c61fb32f8a","impliedFormat":1},{"version":"4ca7fb8f6018ea836b1ad24f67d5e7c2cf7410af7462e0ccc90b012944f5d7ae","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"149f9a9e7f04e67afa0e2a49fc0ff421035c01d6b793cfcae7d2e9f6819431e2","impliedFormat":1},{"version":"e8a9dfa4c75ef6d25df8b40eaa9c31e0a69452aaf2ced4a3f4215dbdbaa876f4","impliedFormat":1},{"version":"a70af845a2eb9dd6e2723e319e14ea7fb28b129ec1361c21509b49305448c323","impliedFormat":1},{"version":"b53dc572d4f187904207ae1166652de47aab8eeb00c254d009cb226863076b56","impliedFormat":1},{"version":"57354d2f022ed64ede57b2e052306dd076a138b551abc7d30ef5e6718ce2f76a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"f501234c5aeeeb5d7659412335227466aaacf30b952372d60afeb21c02c96348","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"358f74dc35927dc88ea86dd201a2b98e701c281615e6b30a4c153eb0bb90ef71","impliedFormat":1},{"version":"8b91ff5bb912be3ea213cbcf0075aace1f5d4ff249a0d227ed673868cb7bfabc","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"706abfbafe0ed5f685357375e89bbf48879549ea1772185d77d15f587c5c9400","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"013ff793053d33a15be4614efdd6c50247bbf0b26d6bc58ba338622a7441b543","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"e99963ae1e3a48ca7a7958c02f3e88bb963eb7978c28b68ae6b8c9f03309d83c","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"279d0cc1a72879918854265c3405369aa2d4d23509b8694ea102995b298cc5e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"594ae90cacd813fa392ff80d2e0a8eff4e41f4a136329a940e321399dd8895b4","impliedFormat":1},{"version":"d1f333ade8ff35a409b4984e1f11956fe11c61855b0c7e9b59f0313e48b40c4a","impliedFormat":1},{"version":"0224aa4b3464895d69c413a640a19ac2166778a74eb5eb3b36b021c72d42b274","impliedFormat":1},{"version":"575aa163c4c32e5b82e0e99b1f9f80806e1d78bfa259706e05139251c022277b","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fb21326854faaa31ef02c9d51629fb6acedacb9396e74bf22ff8409441ea9ae","impliedFormat":1},{"version":"2fbf504c4791f9d32cd766cfe6b605bcda63289b925401953a7900db9af85348","impliedFormat":1},{"version":"ed0fb633cae35948d9e144004299a4bdf1ab912667c787b7fbffcd6d8c7b92a2","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"7db737262597ae2e35daa8cc1748f482cf4b0914e00a3d5a32cf6c4fc869a375","impliedFormat":1},{"version":"9c90f502816bd0179556bb875e86c944af3f6b995cde63199edbe4e0b1219aba","impliedFormat":1},{"version":"97581dc7099ef3d844c83706d53a7ecf895c0e867fbf6b9dc035bb3080f677bd","impliedFormat":1},{"version":"e494b286c8e27c52f8c7f945aa80ff223f2a3cd4f7a2619fa8991f1459e26f07","impliedFormat":1},{"version":"f54f5f9e10bbceba7515dfad0ffc89dffdb8d749d0604594c57a725cf6d79c20","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"8c7e618c2a91ea7f6b5cca272a295864e92c16413be8fc56a943e8c7d5320011","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f487e411f9657df0e76572e500c1209b8fe95ee3b4cc6e6e7913c15f56207d","impliedFormat":1},{"version":"9d37b8a9678efbcdf38238b59ce8e6f7db70aba1a516f3a4a671a301dbacfb3d","impliedFormat":1},{"version":"a47a792b8cff71443be8dfb199f2b77e102a7bf9d4f90c18059f05d9af2d7413","impliedFormat":1},{"version":"ad50512520720d10294c629cb4e2df23891c3fcbeaca00fbfb9e6bbea65f3dd6","impliedFormat":1},{"version":"189769511b45c93b23ba76069f7701d3b631cfbedc1eb94c7753486c78736f78","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"ba389fd3d7fba6670e97bc82eb12469dcb371d22f24e63859c1df5a083c823ed","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"97234c5303866576f913d0ccae7d58d6322d9e803c7bf1228a3fda46ab8087b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"961dec547748827cb6b45f6fdc66273f7bacd9c73103c6779f070f2fd07f23f9","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"73eeb740dacc45adc607a4f59f90fa9dbe2717d93d82f115f45f34e18f8d644a","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"d251cda16f3f6a3e07f07c9e6e823ef6c583c63f653eb8777dafa749a78298e3","impliedFormat":1},{"version":"361939136b496a38b3e6b7be750bbb6998ef289bb8dd304c673138542ca16137","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"89e2568ebc2ec1e4149384b105e80e8bbf41eb4d711547f1121f4f628028de96","impliedFormat":1},{"version":"441b9bb09013654aa3d050e68b06464d8959b473e85868249d9d18f692acd35b","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"55246f15e33ff1e2e9e679b25fa9790a48db55dc63d567fe25fac8b6a0efe911","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"925734f303b7f0cc111d42aeb21781d38a79e6d5ac05b2b1400cd1861a75d27b","impliedFormat":1},{"version":"5b26c4dd672d88336bb929787c9bfb55119e80ba89ec6dc923da1c063892843e","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"7286e4e5f80c0b1ab16addbdbbc9dd47fbae1c42034189261177b84d745cde3b","impliedFormat":1},{"version":"f12624a4a8d042b68914eac1b0a16571fc1c523173fcdf2517c65d191bd5a86c","impliedFormat":1},{"version":"cd2a656ba1d250c2002190b683e3826bf4362b6919450bc0f9bbf5612ebad837","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"3e221ff0522e6ff95aa74a5211126aaf4d7e85ed8c8ff19290d591ad4bef988f","impliedFormat":1},{"version":"7da83f6429c6298ebf2be43d296b56ecfc94c9c28f5471b2f23b87545b914cea","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"751048d4aa67e20e5ecd2692340ea0d19bae42a20cc651d6f56d095e411ce3ac","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"aed8f3e5c7e53462565eedf34a9bcb700393cb2c1ab0c768602b929c3ed3145d","impliedFormat":1},{"version":"8e2577e7262051fd3c5bd6ca2b2056d358ff8853565720f92455860824c25188","impliedFormat":1},{"version":"7ec8d7d483f7394f9da611b10d3a0e402f76ff5c991261e6ce43a15f81ca4258","impliedFormat":1},{"version":"bb9dbb4b2ad81e3e71ec5ba4314973718555b9d04ba2a17dfbf875efecb8e2c0","impliedFormat":1},{"version":"9021dc5be8f3a87af5cede29221188a6497e2092b6889e0be212ef6b6b7153e9","impliedFormat":1},{"version":"4a8c8fd951d9fd9e0775f0aae8ed1f8b528204e24a2600bea3a1228ea83de52c","impliedFormat":1},{"version":"5b9cc0c724a8ebc7a873ab8e73c20b2416cef04b9e9d7f95ef1fa0fdcd4e0ec8","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"80a4b7023a2cc9f14d3f2e4635d6615ab3eff4b5b3630f62a8e73992fdd8cdb9","impliedFormat":1},{"version":"ec62d16f95636123624a69191a35b5df44b4b0a6428977e856c5739c0a787471","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"c46f111af647c4134ae869653130610d62da321f90ebf19e186a3ea4bed79350","impliedFormat":1},{"version":"29f72ec1289ae3aeda78bf14b38086d3d803262ac13904b400422941a26a3636","affectsGlobalScope":true,"impliedFormat":1}],"root":[[51,55],65,66,151,168,169,[200,203],[234,239]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./","rootDir":"..","skipLibCheck":true,"sourceMap":true,"strict":true,"target":5,"useDefineForClassFields":false},"referencedMap":[[56,1],[69,1],[70,2],[73,3],[71,3],[75,3],[78,4],[77,3],[76,3],[74,3],[72,5],[57,1],[58,6],[107,7],[105,8],[106,9],[108,10],[109,11],[95,12],[94,13],[97,14],[98,15],[68,16],[67,13],[96,17],[102,18],[103,19],[104,19],[101,1],[99,20],[100,21],[206,22],[207,23],[205,1],[208,24],[221,1],[223,25],[222,26],[232,27],[217,1],[224,28],[225,29],[226,1],[227,26],[230,30],[220,17],[229,31],[231,29],[233,32],[216,33],[212,34],[204,1],[368,1],[303,35],[304,35],[305,36],[241,37],[306,38],[307,39],[308,40],[309,41],[310,42],[311,43],[312,44],[313,45],[314,46],[315,46],[316,47],[317,48],[318,1],[319,49],[320,50],[242,1],[240,1],[321,51],[322,52],[323,53],[367,54],[324,55],[325,56],[326,55],[327,57],[328,58],[330,59],[331,60],[332,60],[333,60],[334,61],[335,62],[336,63],[337,64],[338,65],[339,66],[340,66],[341,67],[342,1],[343,1],[344,68],[345,69],[346,70],[347,71],[348,72],[349,73],[350,74],[351,75],[352,76],[353,77],[354,78],[355,79],[356,80],[357,81],[358,82],[359,83],[360,84],[361,85],[362,86],[363,87],[243,55],[244,1],[245,88],[246,89],[247,1],[248,90],[249,1],[294,91],[295,92],[296,93],[297,93],[298,94],[299,1],[300,38],[301,95],[302,92],[364,96],[365,97],[366,98],[215,99],[214,100],[213,1],[60,1],[329,1],[209,34],[211,101],[210,102],[161,103],[160,104],[157,1],[158,105],[159,106],[62,107],[152,108],[59,109],[153,110],[155,109],[63,1],[61,111],[218,109],[79,112],[154,113],[156,114],[228,109],[64,115],[219,116],[86,1],[50,117],[49,1],[47,1],[48,1],[8,1],[10,1],[9,1],[2,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[3,1],[19,1],[20,1],[4,1],[21,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[36,1],[33,1],[34,1],[35,1],[37,1],[7,1],[38,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[1,1],[45,1],[46,1],[268,118],[282,119],[265,120],[283,121],[292,122],[256,123],[257,124],[255,125],[291,126],[286,127],[290,128],[259,129],[269,130],[279,131],[258,132],[289,133],[253,134],[254,127],[260,130],[261,1],[267,135],[264,130],[251,136],[293,137],[284,138],[272,139],[271,130],[273,140],[276,141],[270,142],[274,143],[287,126],[262,144],[263,145],[277,146],[252,121],[281,147],[280,130],[266,145],[275,148],[278,149],[285,1],[250,1],[288,150],[162,151],[166,152],[163,153],[165,13],[164,13],[195,1],[196,17],[194,17],[193,154],[197,1],[186,155],[187,156],[191,157],[189,158],[198,159],[179,13],[188,13],[190,13],[192,13],[199,160],[170,161],[182,162],[183,162],[180,162],[181,162],[185,162],[184,162],[178,163],[55,164],[53,165],[65,166],[52,167],[66,166],[54,165],[151,168],[169,169],[168,170],[200,171],[51,167],[201,172],[203,173],[202,165],[234,174],[235,175],[236,176],[237,177],[238,178],[239,175],[177,179],[176,180],[175,181],[110,13],[172,182],[173,183],[174,184],[171,13],[111,185],[89,1],[91,1],[92,1],[93,186],[90,1],[112,187],[115,156],[116,17],[117,17],[118,17],[123,188],[119,17],[120,17],[121,17],[122,17],[114,1],[125,1],[126,189],[127,190],[87,156],[113,1],[124,1],[88,191],[80,1],[85,192],[83,193],[82,194],[84,1],[81,1],[145,17],[139,17],[134,17],[135,17],[149,17],[131,1],[133,17],[136,17],[137,17],[148,17],[146,17],[132,17],[140,17],[128,17],[150,195],[143,17],[144,17],[147,17],[138,17],[141,17],[129,17],[130,17],[142,17],[167,1]],"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@operato/menu",
|
|
3
3
|
"description": "Webcomponent menu following open-wc recommendations",
|
|
4
4
|
"author": "heartyoh",
|
|
5
|
-
"version": "10.29.
|
|
5
|
+
"version": "10.29.56",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/src/index.js",
|
|
8
8
|
"module": "dist/src/index.js",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@material/web": "^2.0.0",
|
|
58
|
-
"@operato/data-grist": "^10.29.
|
|
58
|
+
"@operato/data-grist": "^10.29.56",
|
|
59
59
|
"@operato/graphql": "^10.29.49",
|
|
60
60
|
"@operato/i18n": "^10.29.27",
|
|
61
61
|
"@operato/input": "^10.29.52",
|
|
@@ -98,5 +98,5 @@
|
|
|
98
98
|
"prettier --write"
|
|
99
99
|
]
|
|
100
100
|
},
|
|
101
|
-
"gitHead": "
|
|
101
|
+
"gitHead": "d14bb995740e1f0499213645a05fab0eee0ab865"
|
|
102
102
|
}
|
|
@@ -477,6 +477,33 @@ describe('ox-menu-portrait', () => {
|
|
|
477
477
|
expect(시스템.querySelector('ul > li')!.hasAttribute('current')).to.equal(true)
|
|
478
478
|
})
|
|
479
479
|
|
|
480
|
+
it('여는 화면을 적은 줄은 링크다 — 라우터가 옮기므로 이동을 막지 않는다', async () => {
|
|
481
|
+
const el = await 세운다({ activeTopLevel: undefined } as Partial<OxMenuPortrait>)
|
|
482
|
+
let 불렀나 = false
|
|
483
|
+
el.morendas = [{ icon: html`<i></i>`, name: '역할', page: 'roles', action: () => (불렀나 = true) }]
|
|
484
|
+
await el.updateComplete
|
|
485
|
+
|
|
486
|
+
const 시스템 = Array.from(el.renderRoot.querySelectorAll('li[menu]')).find(li => !(li as any).menu) as HTMLElement
|
|
487
|
+
const a = 시스템.querySelector(':scope > ul > li > a') as HTMLAnchorElement
|
|
488
|
+
|
|
489
|
+
expect(a.getAttribute('href')).to.equal('roles')
|
|
490
|
+
expect(눌러본다(el, a), '막으면 서랍 안에서 아무 데도 못 간다').to.be.false
|
|
491
|
+
expect(불렀나, '링크가 옮긴다 — 함수를 또 부르면 두 번 간다').to.be.false
|
|
492
|
+
})
|
|
493
|
+
|
|
494
|
+
it('화면을 여는 것이 아닌 줄은 이동을 막고 함수를 부른다', async () => {
|
|
495
|
+
const el = await 세운다({ activeTopLevel: undefined } as Partial<OxMenuPortrait>)
|
|
496
|
+
let 불렀나 = false
|
|
497
|
+
el.morendas = [{ icon: html`<i></i>`, name: '내보내기', action: () => (불렀나 = true) }]
|
|
498
|
+
await el.updateComplete
|
|
499
|
+
|
|
500
|
+
const 시스템 = Array.from(el.renderRoot.querySelectorAll('li[menu]')).find(li => !(li as any).menu) as HTMLElement
|
|
501
|
+
const a = 시스템.querySelector(':scope > ul > li > a') as HTMLAnchorElement
|
|
502
|
+
|
|
503
|
+
expect(눌러본다(el, a)).to.be.true
|
|
504
|
+
expect(불렀나).to.be.true
|
|
505
|
+
})
|
|
506
|
+
|
|
480
507
|
it('빈 자리가 그 앞에 있다 — 바닥에 붙는다', async () => {
|
|
481
508
|
const el = await 세운다({})
|
|
482
509
|
el.morendas = [{ icon: html`<i></i>`, name: '설정', action: () => {} }]
|